aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMahesh Sanikommu <[email protected]>2026-01-13 00:54:56 -0800
committerGitHub <[email protected]>2026-01-13 00:54:56 -0800
commit645f89310caf6b67b113b3c7ad7904b7856fbf18 (patch)
treed94c09fcdae7ce20dd0f34638f5495b5c2c4c97c
parentpipecat-sdk (#669) (diff)
downloadsupermemory-645f89310caf6b67b113b3c7ad7904b7856fbf18.tar.xz
supermemory-645f89310caf6b67b113b3c7ad7904b7856fbf18.zip
PR: nova alpha release (#670)
Co-authored-by: Dhravya Shah <[email protected]>
-rw-r--r--apps/browser-extension/entrypoints/background.ts47
-rw-r--r--apps/browser-extension/entrypoints/content/index.ts23
-rw-r--r--apps/browser-extension/entrypoints/content/selection-search.ts647
-rw-r--r--apps/browser-extension/entrypoints/popup/App.tsx295
-rw-r--r--apps/browser-extension/utils/api.ts5
-rw-r--r--apps/browser-extension/utils/constants.ts9
-rw-r--r--apps/memory-graph-playground/next-env.d.ts6
-rw-r--r--apps/web/app/(auth)/login/new/page.tsx479
-rw-r--r--apps/web/app/(auth)/login/page.tsx11
-rw-r--r--apps/web/app/(navigation)/page.tsx15
-rw-r--r--apps/web/app/api/exa/fetch-content/route.ts61
-rw-r--r--apps/web/app/layout.tsx6
-rw-r--r--apps/web/app/new/layout.tsx22
-rw-r--r--apps/web/app/new/onboarding/page.tsx267
-rw-r--r--apps/web/app/new/onboarding/setup/chat-sidebar.tsx424
-rw-r--r--apps/web/app/new/onboarding/setup/header.tsx47
-rw-r--r--apps/web/app/new/onboarding/setup/integrations-step.tsx181
-rw-r--r--apps/web/app/new/onboarding/setup/relatable-question.tsx159
-rw-r--r--apps/web/app/new/onboarding/welcome/continue-step.tsx45
-rw-r--r--apps/web/app/new/onboarding/welcome/features-step.tsx98
-rw-r--r--apps/web/app/new/onboarding/welcome/greeting-step.tsx23
-rw-r--r--apps/web/app/new/onboarding/welcome/input-step.tsx96
-rw-r--r--apps/web/app/new/onboarding/welcome/memories-step.tsx299
-rw-r--r--apps/web/app/new/onboarding/welcome/welcome-step.tsx16
-rw-r--r--apps/web/app/new/page.tsx57
-rw-r--r--apps/web/app/new/settings/page.tsx243
-rw-r--r--apps/web/components/chat-loader.tsx228
-rw-r--r--apps/web/components/connect-ai-modal.tsx10
-rw-r--r--apps/web/components/header.tsx1
-rw-r--r--apps/web/components/initial-header.tsx34
-rw-r--r--apps/web/components/memories-utils/memory-detail.tsx2
-rw-r--r--apps/web/components/memory-list-view.tsx2
-rw-r--r--apps/web/components/new/add-document/connections.tsx408
-rw-r--r--apps/web/components/new/add-document/file.tsx164
-rw-r--r--apps/web/components/new/add-document/index.tsx464
-rw-r--r--apps/web/components/new/add-document/link.tsx130
-rw-r--r--apps/web/components/new/add-document/note.tsx51
-rw-r--r--apps/web/components/new/add-document/useDocumentMutations.ts313
-rw-r--r--apps/web/components/new/animated-gradient-background.tsx68
-rw-r--r--apps/web/components/new/chat/index.tsx551
-rw-r--r--apps/web/components/new/chat/input/actions.tsx50
-rw-r--r--apps/web/components/new/chat/input/chain-of-thought.tsx215
-rw-r--r--apps/web/components/new/chat/input/index.tsx133
-rw-r--r--apps/web/components/new/chat/message/agent-message.tsx108
-rw-r--r--apps/web/components/new/chat/message/follow-up-questions.tsx56
-rw-r--r--apps/web/components/new/chat/message/message-actions.tsx80
-rw-r--r--apps/web/components/new/chat/message/related-memories.tsx135
-rw-r--r--apps/web/components/new/chat/message/user-message.tsx41
-rw-r--r--apps/web/components/new/chat/model-selector.tsx101
-rw-r--r--apps/web/components/new/document-cards/file-preview.tsx188
-rw-r--r--apps/web/components/new/document-cards/google-docs-preview.tsx62
-rw-r--r--apps/web/components/new/document-cards/mcp-preview.tsx36
-rw-r--r--apps/web/components/new/document-cards/note-preview.tsx109
-rw-r--r--apps/web/components/new/document-cards/tweet-preview.tsx51
-rw-r--r--apps/web/components/new/document-cards/website-preview.tsx52
-rw-r--r--apps/web/components/new/document-cards/youtube-preview.tsx52
-rw-r--r--apps/web/components/new/document-modal/content/notion-doc.tsx9
-rw-r--r--apps/web/components/new/document-modal/content/pdf.tsx83
-rw-r--r--apps/web/components/new/document-modal/content/tweet.tsx37
-rw-r--r--apps/web/components/new/document-modal/content/yt-video.tsx89
-rw-r--r--apps/web/components/new/document-modal/document-icon.tsx263
-rw-r--r--apps/web/components/new/document-modal/graph-list-memories.tsx322
-rw-r--r--apps/web/components/new/document-modal/index.tsx143
-rw-r--r--apps/web/components/new/document-modal/summary.tsx84
-rw-r--r--apps/web/components/new/document-modal/title.tsx55
-rw-r--r--apps/web/components/new/header.tsx225
-rw-r--r--apps/web/components/new/mcp-modal/index.tsx70
-rw-r--r--apps/web/components/new/mcp-modal/mcp-detail-view.tsx629
-rw-r--r--apps/web/components/new/memories-grid.tsx423
-rw-r--r--apps/web/components/new/settings/account.tsx694
-rw-r--r--apps/web/components/new/settings/connections-mcp.tsx568
-rw-r--r--apps/web/components/new/settings/integrations.tsx761
-rw-r--r--apps/web/components/new/settings/support.tsx217
-rw-r--r--apps/web/components/new/utils.ts78
-rw-r--r--apps/web/components/nova/bg-grad.tsx150
-rw-r--r--apps/web/components/nova/nova-orb.tsx42
-rw-r--r--apps/web/components/project-selector.tsx10
-rw-r--r--apps/web/components/query-client.tsx24
-rw-r--r--apps/web/components/superloader.tsx98
-rw-r--r--apps/web/components/views/chat/chat-messages.tsx2
-rw-r--r--apps/web/components/views/integrations.tsx10
-rw-r--r--apps/web/components/views/mcp/installation-dialog-content.tsx10
-rw-r--r--apps/web/components/x-bookmarks-detail-view.tsx113
-rw-r--r--apps/web/globals.css80
-rw-r--r--apps/web/lib/document-icon.tsx119
-rw-r--r--apps/web/lib/models.tsx8
-rw-r--r--apps/web/middleware.ts16
-rw-r--r--apps/web/package.json6
-rw-r--r--apps/web/public/bg-rectangle.pngbin0 -> 6008962 bytes
-rw-r--r--apps/web/public/dot-pattern.svg2126
-rw-r--r--apps/web/public/onboarding/bg-gradient-0.pngbin0 -> 3874273 bytes
-rw-r--r--apps/web/public/onboarding/bg-gradient-1.pngbin0 -> 3881693 bytes
-rw-r--r--apps/web/public/onboarding/chrome-ext-1.pngbin0 -> 581919 bytes
-rw-r--r--apps/web/public/onboarding/chrome-ext-2.pngbin0 -> 376422 bytes
-rw-r--r--apps/web/public/onboarding/chrome-ext-3.pngbin0 -> 733974 bytes
-rw-r--r--apps/web/public/onboarding/chrome.pngbin0 -> 7284 bytes
-rw-r--r--apps/web/public/onboarding/connectors.pngbin0 -> 13524 bytes
-rw-r--r--apps/web/public/onboarding/human-brain.pngbin0 -> 6793 bytes
-rw-r--r--apps/web/public/onboarding/mcp.pngbin0 -> 39215 bytes
-rw-r--r--apps/web/public/onboarding/plant.pngbin0 -> 2921 bytes
-rw-r--r--apps/web/public/onboarding/search.pngbin0 -> 3637 bytes
-rw-r--r--apps/web/public/onboarding/x.pngbin0 -> 8972 bytes
-rw-r--r--apps/web/utils/fonts.ts55
-rw-r--r--apps/web/utils/url-helpers.ts59
-rw-r--r--bun.lock6350
-rw-r--r--packages/ai-sdk/package.json2
-rw-r--r--packages/lib/api.ts4
-rw-r--r--packages/lib/package.json2
-rw-r--r--packages/lib/posthog.tsx2
-rw-r--r--packages/lib/types.ts12
-rw-r--r--packages/tools/package.json2
-rw-r--r--packages/ui/assets/Logo.tsx266
-rw-r--r--packages/ui/assets/icons.tsx162
-rw-r--r--packages/ui/button/external-auth.tsx8
-rw-r--r--packages/ui/components/button.tsx12
-rw-r--r--packages/ui/components/text-separator.tsx4
-rw-r--r--packages/ui/globals.css5
-rw-r--r--packages/ui/input/labeled-input.tsx16
-rw-r--r--packages/ui/pages/login.tsx2
-rw-r--r--packages/validation/api.ts1
-rw-r--r--packages/validation/schemas.ts1
121 files changed, 21683 insertions, 322 deletions
diff --git a/apps/browser-extension/entrypoints/background.ts b/apps/browser-extension/entrypoints/background.ts
index 131207c2..0ee09e3f 100644
--- a/apps/browser-extension/entrypoints/background.ts
+++ b/apps/browser-extension/entrypoints/background.ts
@@ -32,6 +32,12 @@ export default defineBackground(() => {
contexts: ["selection", "page", "link"],
})
+ browser.contextMenus.create({
+ id: CONTEXT_MENU_IDS.SEARCH_SUPERMEMORY,
+ title: "search supermemory",
+ contexts: ["selection"],
+ })
+
if (details.reason === "install") {
await trackEvent("extension_installed", {
reason: details.reason,
@@ -67,6 +73,22 @@ export default defineBackground(() => {
}
}
}
+
+ if (info.menuItemId === CONTEXT_MENU_IDS.SEARCH_SUPERMEMORY) {
+ if (tab?.id && info.selectionText) {
+ try {
+ await browser.tabs.sendMessage(tab.id, {
+ action: MESSAGE_TYPES.OPEN_SEARCH_PANEL,
+ data: info.selectionText,
+ })
+ } catch (error) {
+ console.error(
+ "Failed to send search message to content script:",
+ error,
+ )
+ }
+ }
+ }
})
// Send message to current active tab.
@@ -296,6 +318,31 @@ export default defineBackground(() => {
})()
return true
}
+
+ if (message.action === MESSAGE_TYPES.SEARCH_SELECTION) {
+ ;(async () => {
+ try {
+ const query = message.data as string
+ const responseData = await searchMemories(query)
+ await trackEvent(POSTHOG_EVENT_KEY.SELECTION_SEARCH_TRIGGERED, {
+ query_length: query.length,
+ })
+ sendResponse({ success: true, data: responseData })
+ } catch (error) {
+ const errorMessage =
+ error instanceof Error ? error.message : "Unknown error"
+ const isAuthError =
+ errorMessage.includes("Authentication") ||
+ errorMessage.includes("token")
+ sendResponse({
+ success: false,
+ error: errorMessage,
+ isAuthError,
+ })
+ }
+ })()
+ return true
+ }
},
)
})
diff --git a/apps/browser-extension/entrypoints/content/index.ts b/apps/browser-extension/entrypoints/content/index.ts
index a79f50fb..d67b37b0 100644
--- a/apps/browser-extension/entrypoints/content/index.ts
+++ b/apps/browser-extension/entrypoints/content/index.ts
@@ -2,9 +2,21 @@ import { DOMAINS, MESSAGE_TYPES } from "../../utils/constants"
import { DOMUtils } from "../../utils/ui-components"
import { initializeChatGPT } from "./chatgpt"
import { initializeClaude } from "./claude"
-import { saveMemory, setupGlobalKeyboardShortcut, setupStorageListener } from "./shared"
+import {
+ handleOpenSearchPanel,
+ initializeSelectionSearch,
+} from "./selection-search"
+import {
+ saveMemory,
+ setupGlobalKeyboardShortcut,
+ setupStorageListener,
+} from "./shared"
import { initializeT3 } from "./t3"
-import { handleTwitterNavigation, initializeTwitter, updateTwitterImportUI } from "./twitter"
+import {
+ handleTwitterNavigation,
+ initializeTwitter,
+ updateTwitterImportUI,
+} from "./twitter"
export default defineContentScript({
matches: ["<all_urls>"],
@@ -15,6 +27,8 @@ export default defineContentScript({
DOMUtils.showToast(message.state)
} else if (message.action === MESSAGE_TYPES.SAVE_MEMORY) {
await saveMemory()
+ } else if (message.action === MESSAGE_TYPES.OPEN_SEARCH_PANEL) {
+ handleOpenSearchPanel(message.data as string)
} else if (message.type === MESSAGE_TYPES.IMPORT_UPDATE) {
updateTwitterImportUI(message)
} else if (message.type === MESSAGE_TYPES.IMPORT_DONE) {
@@ -57,6 +71,9 @@ export default defineContentScript({
initializeT3()
initializeTwitter()
+ // Initialize universal selection search
+ initializeSelectionSearch()
+
// Start observing for dynamic changes
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", observeForDynamicChanges)
@@ -64,4 +81,4 @@ export default defineContentScript({
observeForDynamicChanges()
}
},
-}) \ No newline at end of file
+})
diff --git a/apps/browser-extension/entrypoints/content/selection-search.ts b/apps/browser-extension/entrypoints/content/selection-search.ts
new file mode 100644
index 00000000..6473b84c
--- /dev/null
+++ b/apps/browser-extension/entrypoints/content/selection-search.ts
@@ -0,0 +1,647 @@
+import { ELEMENT_IDS, MESSAGE_TYPES, UI_CONFIG } from "../../utils/constants"
+
+// State
+let currentQuery = ""
+let fabElement: HTMLElement | null = null
+let panelElement: HTMLElement | null = null
+let selectedResults: Set<number> = new Set()
+
+/**
+ * Get the selection rectangle for positioning the FAB
+ */
+function getSelectionRect(): DOMRect | null {
+ const selection = window.getSelection()
+ if (!selection || selection.rangeCount === 0) return null
+
+ const range = selection.getRangeAt(0)
+ return range.getBoundingClientRect()
+}
+
+/**
+ * Check if the selection is inside our extension UI
+ */
+function isSelectionInsideExtensionUI(): boolean {
+ const selection = window.getSelection()
+ if (!selection || selection.rangeCount === 0) return false
+
+ const anchorNode = selection.anchorNode
+ if (!anchorNode) return false
+
+ const element =
+ anchorNode.nodeType === Node.ELEMENT_NODE
+ ? (anchorNode as Element)
+ : anchorNode.parentElement
+
+ if (!element) return false
+
+ // Check if selection is inside FAB or panel
+ return (
+ !!element.closest(`#${ELEMENT_IDS.SELECTION_SEARCH_FAB}`) ||
+ !!element.closest(`#${ELEMENT_IDS.SELECTION_SEARCH_PANEL}`)
+ )
+}
+
+/**
+ * Create the floating action button (FAB)
+ */
+function createFAB(): HTMLElement {
+ const fab = document.createElement("div")
+ fab.id = ELEMENT_IDS.SELECTION_SEARCH_FAB
+
+ const iconUrl = browser.runtime.getURL("/icon-16.png")
+
+ fab.innerHTML = `
+ <img src="${iconUrl}" width="16" height="16" alt="Search" style="border-radius: 2px;" />
+ <span>Search</span>
+ `
+
+ fab.style.cssText = `
+ position: fixed;
+ z-index: 2147483646;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ padding: 8px 12px;
+ background: #05070A;
+ color: #ffffff;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ border-radius: 8px;
+ font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+ font-size: 13px;
+ font-weight: 500;
+ cursor: pointer;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
+ transition: all 0.15s ease;
+ user-select: none;
+ `
+
+ fab.addEventListener("mouseenter", () => {
+ fab.style.background = "#0F151F"
+ fab.style.borderColor = "rgba(255, 255, 255, 0.2)"
+ })
+
+ fab.addEventListener("mouseleave", () => {
+ fab.style.background = "#05070A"
+ fab.style.borderColor = "rgba(255, 255, 255, 0.1)"
+ })
+
+ fab.addEventListener("click", (e) => {
+ e.preventDefault()
+ e.stopPropagation()
+ triggerSearch()
+ })
+
+ return fab
+}
+
+/**
+ * Show the FAB near the selection
+ */
+function showFAB(rect: DOMRect, text: string) {
+ hideFAB()
+
+ currentQuery = text
+ fabElement = createFAB()
+
+ // Position FAB above the selection, centered
+ const fabWidth = 90 // approximate width
+ let left = rect.left + rect.width / 2 - fabWidth / 2
+ let top = rect.top - 40
+
+ // Ensure FAB stays within viewport
+ if (left < 10) left = 10
+ if (left + fabWidth > window.innerWidth - 10) {
+ left = window.innerWidth - fabWidth - 10
+ }
+ if (top < 10) {
+ // Show below selection if not enough space above
+ top = rect.bottom + 10
+ }
+
+ fabElement.style.left = `${left}px`
+ fabElement.style.top = `${top}px`
+
+ document.body.appendChild(fabElement)
+}
+
+/**
+ * Hide the FAB
+ */
+export function hideFAB() {
+ if (fabElement) {
+ fabElement.remove()
+ fabElement = null
+ }
+}
+
+/**
+ * Trigger search with the current query
+ */
+async function triggerSearch() {
+ if (!currentQuery) return
+
+ hideFAB()
+ showPanel(currentQuery, "loading")
+
+ try {
+ const response = await browser.runtime.sendMessage({
+ action: MESSAGE_TYPES.SEARCH_SELECTION,
+ data: currentQuery,
+ })
+
+ if (response.success) {
+ showPanel(currentQuery, "results", response.data)
+ } else if (response.isAuthError) {
+ showPanel(currentQuery, "auth_error")
+ } else {
+ showPanel(currentQuery, "error", null, response.error)
+ }
+ } catch (error) {
+ console.error("Search failed:", error)
+ showPanel(
+ currentQuery,
+ "error",
+ null,
+ error instanceof Error ? error.message : "Search failed",
+ )
+ }
+}
+
+/**
+ * Create and show the search results panel
+ */
+function showPanel(
+ query: string,
+ state: "loading" | "results" | "error" | "auth_error",
+ data?: unknown,
+ errorMessage?: string,
+) {
+ hidePanel()
+ selectedResults.clear()
+
+ panelElement = document.createElement("div")
+ panelElement.id = ELEMENT_IDS.SELECTION_SEARCH_PANEL
+
+ panelElement.style.cssText = `
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 2147483647;
+ width: 420px;
+ max-width: 90vw;
+ max-height: 70vh;
+ background: #05070A;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ border-radius: 12px;
+ font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ `
+
+ // Header
+ const header = document.createElement("div")
+ header.style.cssText = `
+ padding: 16px;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-shrink: 0;
+ `
+
+ const iconUrl = browser.runtime.getURL("/icon-16.png")
+ header.innerHTML = `
+ <div style="display: flex; align-items: center; gap: 8px;">
+ <img src="${iconUrl}" width="20" height="20" alt="supermemory" style="border-radius: 4px;" />
+ <span style="font-size: 14px; font-weight: 600; color: #ffffff;">Search Results</span>
+ </div>
+ <button id="sm-panel-close" style="
+ background: transparent;
+ border: none;
+ color: #737373;
+ cursor: pointer;
+ padding: 4px;
+ font-size: 18px;
+ line-height: 1;
+ transition: color 0.15s;
+ ">×</button>
+ `
+
+ panelElement.appendChild(header)
+
+ // Query display
+ const queryDisplay = document.createElement("div")
+ queryDisplay.style.cssText = `
+ padding: 12px 16px;
+ background: rgba(91, 126, 245, 0.04);
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
+ flex-shrink: 0;
+ `
+ queryDisplay.innerHTML = `
+ <div style="font-size: 12px; color: #737373; margin-bottom: 4px;">Searching for:</div>
+ <div style="font-size: 13px; color: #ffffff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">${escapeHtml(query)}</div>
+ `
+ panelElement.appendChild(queryDisplay)
+
+ // Content area
+ const content = document.createElement("div")
+ content.id = "sm-panel-content"
+ content.style.cssText = `
+ flex: 1;
+ overflow-y: auto;
+ padding: 16px;
+ min-height: 150px;
+ `
+
+ if (state === "loading") {
+ content.innerHTML = `
+ <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 150px; gap: 12px;">
+ <div style="width: 24px; height: 24px; border: 2px solid rgba(255,255,255,0.1); border-top-color: #5BD3FB; border-radius: 50%; animation: sm-spin 0.8s linear infinite;"></div>
+ <span style="font-size: 14px; color: #737373;">Searching memories...</span>
+ </div>
+ `
+ } else if (state === "auth_error") {
+ content.innerHTML = `
+ <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 150px; gap: 16px; text-align: center;">
+ <div style="font-size: 14px; color: #ef4444;">Sign in required</div>
+ <p style="font-size: 13px; color: #737373; margin: 0;">Please sign in to supermemory to search your memories.</p>
+ <button id="sm-sign-in-btn" style="
+ padding: 10px 20px;
+ background: linear-gradient(182.37deg, #0ff0d2 -91.53%, #5bd3fb -67.8%, #1e0ff0 95.17%);
+ color: #ffffff;
+ border: none;
+ border-radius: 8px;
+ font-size: 14px;
+ font-weight: 500;
+ cursor: pointer;
+ ">Sign in</button>
+ </div>
+ `
+ } else if (state === "error") {
+ content.innerHTML = `
+ <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 150px; gap: 12px; text-align: center;">
+ <div style="color: #ef4444; font-size: 14px;">Search failed</div>
+ <p style="font-size: 13px; color: #737373; margin: 0;">${escapeHtml(errorMessage || "An error occurred")}</p>
+ </div>
+ `
+ } else if (state === "results") {
+ const response = data as {
+ searchResults?: { results?: Array<{ memory?: string; id?: string }> }
+ }
+ const results = response?.searchResults?.results || []
+
+ if (results.length === 0) {
+ content.innerHTML = `
+ <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 150px; gap: 12px; text-align: center;">
+ <div style="font-size: 14px; color: #737373;">No memories found</div>
+ <p style="font-size: 13px; color: #525966; margin: 0;">Try a different search query.</p>
+ </div>
+ `
+ } else {
+ content.innerHTML = results
+ .map(
+ (result, index) => `
+ <div class="sm-result-item" data-index="${index}" style="
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ padding: 12px;
+ background: rgba(91, 126, 245, 0.04);
+ border-radius: 8px;
+ margin-bottom: 8px;
+ cursor: pointer;
+ transition: background 0.15s;
+ border: 1px solid transparent;
+ ">
+ <input type="checkbox" data-index="${index}" style="
+ margin-top: 2px;
+ width: 16px;
+ height: 16px;
+ cursor: pointer;
+ accent-color: #5BD3FB;
+ " />
+ <div style="flex: 1; min-width: 0;">
+ <p style="font-size: 13px; color: #e5e5e5; margin: 0; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${escapeHtml(result.memory || "")}</p>
+ </div>
+ </div>
+ `,
+ )
+ .join("")
+ }
+ }
+
+ panelElement.appendChild(content)
+
+ // Footer with copy button (only for results)
+ if (state === "results") {
+ const response = data as {
+ searchResults?: { results?: Array<{ memory?: string }> }
+ }
+ const results = response?.searchResults?.results || []
+
+ if (results.length > 0) {
+ const footer = document.createElement("div")
+ footer.style.cssText = `
+ padding: 12px 16px;
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-shrink: 0;
+ `
+ footer.innerHTML = `
+ <span id="sm-selected-count" style="font-size: 13px; color: #737373;">0 selected</span>
+ <button id="sm-copy-btn" style="
+ padding: 10px 16px;
+ background: linear-gradient(182.37deg, #0ff0d2 -91.53%, #5bd3fb -67.8%, #1e0ff0 95.17%);
+ color: #ffffff;
+ border: none;
+ border-radius: 8px;
+ font-size: 13px;
+ font-weight: 500;
+ cursor: pointer;
+ opacity: 0.5;
+ transition: opacity 0.15s;
+ " disabled>Copy selected</button>
+ `
+ panelElement.appendChild(footer)
+ }
+ }
+
+ // Add animations style
+ if (!document.getElementById("sm-panel-styles")) {
+ const style = document.createElement("style")
+ style.id = "sm-panel-styles"
+ style.textContent = `
+ @keyframes sm-spin {
+ from { transform: rotate(0deg); }
+ to { transform: rotate(360deg); }
+ }
+ .sm-result-item:hover {
+ background: rgba(91, 126, 245, 0.08) !important;
+ }
+ .sm-result-item.selected {
+ border-color: rgba(91, 190, 251, 0.3) !important;
+ background: rgba(91, 126, 245, 0.08) !important;
+ }
+ `
+ document.head.appendChild(style)
+ }
+
+ document.body.appendChild(panelElement)
+
+ // Event listeners
+ setupPanelEventListeners(data)
+}
+
+/**
+ * Setup event listeners for the panel
+ */
+function setupPanelEventListeners(data: unknown) {
+ if (!panelElement) return
+
+ // Close button
+ const closeBtn = panelElement.querySelector("#sm-panel-close")
+ closeBtn?.addEventListener("click", hidePanel)
+
+ // Sign in button
+ const signInBtn = panelElement.querySelector("#sm-sign-in-btn")
+ signInBtn?.addEventListener("click", () => {
+ window.open(
+ import.meta.env.PROD
+ ? "https://app.supermemory.ai/login"
+ : "http://localhost:3000/login",
+ "_blank",
+ )
+ })
+
+ // Result item checkboxes
+ const checkboxes = panelElement.querySelectorAll(
+ '.sm-result-item input[type="checkbox"]',
+ )
+ checkboxes.forEach((checkbox) => {
+ checkbox.addEventListener("change", (e) => {
+ const target = e.target as HTMLInputElement
+ const index = Number.parseInt(target.dataset.index || "0", 10)
+ const item = target.closest(".sm-result-item") as HTMLElement
+
+ if (target.checked) {
+ selectedResults.add(index)
+ item?.classList.add("selected")
+ } else {
+ selectedResults.delete(index)
+ item?.classList.remove("selected")
+ }
+
+ updateSelectionUI()
+ })
+ })
+
+ // Result item click (toggle checkbox)
+ const items = panelElement.querySelectorAll(".sm-result-item")
+ items.forEach((item) => {
+ item.addEventListener("click", (e) => {
+ const target = e.target as HTMLElement
+ if (target.tagName === "INPUT") return
+
+ const checkbox = item.querySelector(
+ 'input[type="checkbox"]',
+ ) as HTMLInputElement
+ if (checkbox) {
+ checkbox.checked = !checkbox.checked
+ checkbox.dispatchEvent(new Event("change"))
+ }
+ })
+ })
+
+ // Copy button
+ const copyBtn = panelElement.querySelector("#sm-copy-btn")
+ copyBtn?.addEventListener("click", () => {
+ copySelectedResults(data)
+ })
+
+ // Close on escape
+ const handleKeyDown = (e: KeyboardEvent) => {
+ if (e.key === "Escape") {
+ hidePanel()
+ }
+ }
+ document.addEventListener("keydown", handleKeyDown)
+
+ // Close on outside click
+ const handleOutsideClick = (e: MouseEvent) => {
+ if (panelElement && !panelElement.contains(e.target as Node)) {
+ hidePanel()
+ }
+ }
+ setTimeout(() => {
+ document.addEventListener("click", handleOutsideClick)
+ }, 100)
+
+ // Cleanup listeners when panel is removed
+ const observer = new MutationObserver(() => {
+ if (!document.contains(panelElement)) {
+ document.removeEventListener("keydown", handleKeyDown)
+ document.removeEventListener("click", handleOutsideClick)
+ observer.disconnect()
+ }
+ })
+ observer.observe(document.body, { childList: true })
+}
+
+/**
+ * Update the selection count UI
+ */
+function updateSelectionUI() {
+ const countEl = document.getElementById("sm-selected-count")
+ const copyBtn = document.getElementById("sm-copy-btn") as HTMLButtonElement
+
+ if (countEl) {
+ countEl.textContent = `${selectedResults.size} selected`
+ }
+
+ if (copyBtn) {
+ copyBtn.disabled = selectedResults.size === 0
+ copyBtn.style.opacity = selectedResults.size === 0 ? "0.5" : "1"
+ }
+}
+
+/**
+ * Copy selected results to clipboard
+ */
+async function copySelectedResults(data: unknown) {
+ const response = data as {
+ searchResults?: { results?: Array<{ memory?: string }> }
+ }
+ const results = response?.searchResults?.results || []
+
+ const selectedMemories = Array.from(selectedResults)
+ .sort((a, b) => a - b)
+ .map((index) => results[index]?.memory)
+ .filter(Boolean)
+
+ if (selectedMemories.length === 0) return
+
+ // Format the copied content
+ const formattedContent = selectedMemories
+ .map((memory, i) => `${i + 1}. ${memory}`)
+ .join("\n\n")
+
+ try {
+ await navigator.clipboard.writeText(formattedContent)
+
+ // Show copied feedback
+ const copyBtn = document.getElementById("sm-copy-btn")
+ if (copyBtn) {
+ const originalText = copyBtn.textContent
+ copyBtn.textContent = "Copied!"
+ setTimeout(() => {
+ if (copyBtn) copyBtn.textContent = originalText
+ }, 1500)
+ }
+
+ // Track event
+ browser.runtime.sendMessage({
+ action: MESSAGE_TYPES.CAPTURE_PROMPT,
+ data: {
+ prompt: `Copied ${selectedMemories.length} memories`,
+ platform: "selection_search",
+ source: "copy_selected",
+ },
+ })
+ } catch (error) {
+ console.error("Failed to copy to clipboard:", error)
+ }
+}
+
+/**
+ * Hide the panel
+ */
+export function hidePanel() {
+ if (panelElement) {
+ panelElement.remove()
+ panelElement = null
+ }
+ selectedResults.clear()
+}
+
+/**
+ * Escape HTML to prevent XSS
+ */
+function escapeHtml(text: string): string {
+ const div = document.createElement("div")
+ div.textContent = text
+ return div.innerHTML
+}
+
+/**
+ * Handle selection change
+ */
+function handleSelectionChange() {
+ const selection = window.getSelection()
+ const text = selection?.toString().trim() || ""
+
+ // Hide FAB if selection is empty or inside extension UI
+ if (
+ !text ||
+ text.length < UI_CONFIG.SELECTION_MIN_LENGTH ||
+ text.length > UI_CONFIG.SELECTION_MAX_LENGTH ||
+ isSelectionInsideExtensionUI()
+ ) {
+ hideFAB()
+ return
+ }
+
+ const rect = getSelectionRect()
+ if (rect && rect.width > 0 && rect.height > 0) {
+ showFAB(rect, text)
+ }
+}
+
+/**
+ * Handle message from background to open search panel
+ */
+export function handleOpenSearchPanel(query: string) {
+ currentQuery = query
+ hideFAB()
+ triggerSearch()
+}
+
+/**
+ * Initialize selection search functionality
+ */
+export function initializeSelectionSearch() {
+ // Listen for mouseup to detect selection
+ document.addEventListener("mouseup", () => {
+ // Small delay to ensure selection is complete
+ setTimeout(handleSelectionChange, 10)
+ })
+
+ // Listen for keyup for keyboard selection
+ document.addEventListener("keyup", (e) => {
+ if (e.shiftKey) {
+ setTimeout(handleSelectionChange, 10)
+ }
+ })
+
+ // Hide FAB when clicking elsewhere
+ document.addEventListener("mousedown", (e) => {
+ const target = e.target as HTMLElement
+ if (
+ fabElement &&
+ !fabElement.contains(target) &&
+ !panelElement?.contains(target)
+ ) {
+ // Don't hide immediately to allow FAB click
+ setTimeout(() => {
+ const selection = window.getSelection()
+ if (!selection || selection.toString().trim().length === 0) {
+ hideFAB()
+ }
+ }, 100)
+ }
+ })
+}
diff --git a/apps/browser-extension/entrypoints/popup/App.tsx b/apps/browser-extension/entrypoints/popup/App.tsx
index 78864783..c8472da4 100644
--- a/apps/browser-extension/entrypoints/popup/App.tsx
+++ b/apps/browser-extension/entrypoints/popup/App.tsx
@@ -41,7 +41,7 @@ const Tooltip = ({
type="button"
onMouseEnter={() => setIsVisible(true)}
onMouseLeave={() => setIsVisible(false)}
- className="cursor-help bg-transparent border-none p-0 text-gray-400 hover:text-gray-600 transition-colors"
+ className="cursor-help bg-transparent border-none p-0 text-[#737373] transition-colors"
>
<svg
width="14"
@@ -60,7 +60,7 @@ const Tooltip = ({
</svg>
</button>
{isVisible && (
- <div className="absolute z-50 px-2 py-1 text-xs text-white bg-gray-800 rounded shadow-lg bottom-full right-0 mb-1 max-w-xs break-words">
+ <div className="absolute z-50 px-2 py-1 text-xs text-white bg-gray-800 rounded shadow-lg bottom-full right-0 mb-1 max-w-xs wrap-break-word">
{content}
<div className="absolute top-full right-4 w-0 h-0 border-l-4 border-r-4 border-t-4 border-transparent border-t-gray-800" />
</div>
@@ -266,7 +266,7 @@ function App() {
<div className="flex items-center justify-between gap-3 p-2.5 border-b border-gray-200 relative">
<img
alt="supermemory"
- className="w-8 h-8 flex-shrink-0"
+ className="w-8 h-8 shrink-0"
src="./dark-transparent.svg"
style={{ width: "80%", height: "45px" }}
/>
@@ -302,49 +302,52 @@ function App() {
}
return (
- <div className="w-80 p-0 font-[Space_Grotesk,-apple-system,BlinkMacSystemFont,Segoe_UI,Roboto,sans-serif] bg-white rounded-lg relative overflow-hidden">
- <div className="flex items-center justify-between gap-3 p-2.5 border-b border-gray-200 relative">
- <img
- alt="supermemory"
- className="w-8 h-8 flex-shrink-0"
- src="./dark-transparent.svg"
- style={{ width: "80%", height: "45px" }}
- />
+ <div
+ className="w-80 p-0 font-[Space_Grotesk,-apple-system,BlinkMacSystemFont,Segoe_UI,Roboto,sans-serif] bg-white rounded-lg relative overflow-hidden"
+ style={{
+ background: "linear-gradient(180deg, #0A0E14 0%, #05070A 100%)",
+ boxShadow:
+ "1.5px 1.5px 20px 0 rgba(0, 0, 0, 0.65), 1px 1.5px 2px 0 rgba(128, 189, 255, 0.07) inset, -0.5px -1.5px 4px 0 rgba(0, 35, 73, 0.40) inset",
+ }}
+ >
+ <div className="flex items-center justify-between gap-3 p-2.5 relative">
+ <div className="text-white text-lg font-semibold ml-2">supermemory</div>
{userSignedIn && (
<button
- className="bg-none border-none text-base cursor-pointer text-gray-500 p-1 rounded transition-colors duration-200 hover:text-black hover:bg-gray-100"
+ className="bg-none border-none text-base cursor-pointer text-gray-500 p-1 rounded transition-colors duration-200"
onClick={handleSignOut}
title="Logout"
type="button"
>
<svg
+ width="19"
+ height="18"
+ viewBox="0 0 19 18"
fill="none"
- height="16"
- stroke="currentColor"
- strokeLinecap="round"
- strokeLinejoin="round"
- strokeWidth="2"
- viewBox="0 0 24 24"
- width="16"
+ xmlns="http://www.w3.org/2000/svg"
>
<title>Logout</title>
- <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
- <polyline points="16,17 21,12 16,7" />
- <line x1="21" x2="9" y1="12" y2="12" />
+ <path
+ d="M17 9H7.5M15 12L18 9L15 6M10 4V3C10 2.46957 9.78929 1.96086 9.41421 1.58579C9.03914 1.21071 8.53043 1 8 1H3C2.46957 1 1.96086 1.21071 1.58579 1.58579C1.21071 1.96086 1 2.46957 1 3V15C1 15.5304 1.21071 16.0391 1.58579 16.4142C1.96086 16.7893 2.46957 17 3 17H8C8.53043 17 9.03914 16.7893 9.41421 16.4142C9.78929 16.0391 10 15.5304 10 15V14"
+ stroke="#FAFAFA"
+ stroke-width="2"
+ stroke-linecap="round"
+ stroke-linejoin="round"
+ />
</svg>
</button>
)}
</div>
- <div className="p-4 min-h-[250px]">
+ <div className="p-4 min-h-[250px] pt-1">
{userSignedIn ? (
<div className="text-left">
{/* Tab Navigation */}
- <div className="flex bg-gray-100 rounded-lg p-1 mb-4">
+ <div className="flex bg-[#000000] rounded-xl p-1 mb-4 border border-[#FFFFFF12]">
<button
- className={`flex-1 py-2 px-3 bg-transparent border-none rounded-md text-sm font-medium cursor-pointer transition-all duration-200 outline-none appearance-none ${
+ className={`flex-1 py-2 px-3 bg-transparent border-none rounded-lg text-sm cursor-pointer transition-all duration-200 outline-none appearance-none ${
activeTab === "save"
- ? "bg-white text-black shadow-sm"
- : "text-gray-500 hover:text-gray-700"
+ ? "bg-linear-to-b from-[#0E141C] to-[#0F151F] text-white shadow-sm"
+ : "text-gray-500 hover:text-white"
}`}
onClick={() => setActiveTab("save")}
type="button"
@@ -352,10 +355,10 @@ function App() {
Save
</button>
<button
- className={`flex-1 py-2 px-3 bg-transparent border-none rounded-md text-sm font-medium cursor-pointer transition-all duration-200 outline-none appearance-none ${
+ className={`flex-1 py-2 px-3 bg-transparent border-none rounded-lg text-sm cursor-pointer transition-all duration-200 outline-none appearance-none ${
activeTab === "imports"
- ? "bg-white text-black shadow-sm"
- : "text-gray-500 hover:text-gray-700"
+ ? "bg-linear-to-b from-[#0E141C] to-[#0F151F] text-white shadow-sm"
+ : "text-gray-500 hover:text-white"
}`}
onClick={() => setActiveTab("imports")}
type="button"
@@ -363,10 +366,10 @@ function App() {
Imports
</button>
<button
- className={`flex-1 py-2 px-3 bg-transparent border-none rounded-md text-sm font-medium cursor-pointer transition-all duration-200 outline-none appearance-none ${
+ className={`flex-1 py-2 px-3 bg-transparent border-none rounded-lg text-sm cursor-pointer transition-all duration-200 outline-none appearance-none ${
activeTab === "settings"
- ? "bg-white text-black shadow-sm"
- : "text-gray-500 hover:text-gray-700"
+ ? "bg-linear-to-b from-[#0E141C] to-[#0F151F] text-white shadow-sm"
+ : "text-gray-500 hover:text-white"
}`}
onClick={() => setActiveTab("settings")}
type="button"
@@ -380,11 +383,26 @@ function App() {
<div className="flex flex-col gap-4 min-h-[200px]">
{/* Current Page Info */}
<div className="mb-0">
- <div className="bg-gray-50 p-3 rounded-md border border-gray-200">
- <h3 className="m-0 mb-1 text-sm font-semibold text-black overflow-hidden text-ellipsis whitespace-nowrap">
+ <div
+ className="bg-[#5B7EF50A] p-4 rounded-xl"
+ style={{
+ boxShadow:
+ "2px 2px 2px 0 rgba(0, 0, 0, 0.50) inset, -1px -1px 1px 0 rgba(82, 89, 102, 0.08) inset",
+ }}
+ >
+ <h3
+ className="m-0 mb-1 text-sm font-semibold text-white overflow-hidden text-ellipsis whitespace-nowrap"
+ style={{
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }}
+ >
{currentTitle || "Current Page"}
</h3>
- <p className="m-0 text-xs text-gray-500 overflow-hidden text-ellipsis whitespace-nowrap">
+ <p className="m-0 text-xs text-[#737373] overflow-hidden text-ellipsis whitespace-nowrap">
{currentUrl}
</p>
</div>
@@ -393,36 +411,38 @@ function App() {
{/* Project Selection */}
<div className="mb-0">
<button
- className="w-full bg-transparent border-none p-0 cursor-pointer text-left"
+ className="w-full bg-[#5B7EF50A] border-none p-4 cursor-pointer text-left rounded-xl flex justify-between items-center transition-colors duration-200 hover:bg-[#5B7EF520]"
onClick={handleShowProjectSelector}
type="button"
+ style={{
+ boxShadow:
+ "2px 2px 2px 0 rgba(0, 0, 0, 0.50) inset, -1px -1px 1px 0 rgba(82, 89, 102, 0.08) inset",
+ }}
>
- <div className="flex justify-between items-center p-3 bg-gray-50 rounded-lg border border-gray-200 transition-colors duration-200 hover:bg-gray-200 hover:border-gray-300">
- <span className="text-sm font-medium text-gray-600">
- Save to project:
+ <span className="text-sm font-medium text-[#737373]">
+ Save to project:
+ </span>
+ <div className="flex items-center gap-2">
+ <span className="text-sm font-medium text-white overflow-hidden text-ellipsis whitespace-nowrap max-w-[120px]">
+ {defaultProject
+ ? defaultProject.name
+ : "Default Project"}
</span>
- <div className="flex items-center gap-2">
- <span className="text-sm font-medium text-black overflow-hidden text-ellipsis whitespace-nowrap max-w-[120px]">
- {defaultProject
- ? defaultProject.name
- : "Default Project"}
- </span>
- <svg
- aria-label="Select project"
- className="text-gray-500 flex-shrink-0 transition-transform duration-200 hover:text-gray-700 hover:translate-x-0.5"
- fill="none"
- height="16"
- stroke="currentColor"
- strokeLinecap="round"
- strokeLinejoin="round"
- strokeWidth="2"
- viewBox="0 0 24 24"
- width="16"
- >
- <title>Select project</title>
- <path d="M9 18l6-6-6-6" />
- </svg>
- </div>
+ <svg
+ aria-label="Select project"
+ className="text-white shrink-0 transition-transform duration-200 hover:text-gray-700 transform rotate-90"
+ fill="none"
+ height="16"
+ stroke="currentColor"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ strokeWidth="2"
+ viewBox="0 0 24 24"
+ width="16"
+ >
+ <title>Select project</title>
+ <path d="M9 18l6-6-6-6" />
+ </svg>
</div>
</button>
</div>
@@ -430,12 +450,43 @@ function App() {
{/* Save Button at Bottom */}
<div className="mt-auto pt-4">
<button
- className="w-full py-3 px-6 bg-gray-700 text-white border-none rounded-3xl text-base font-medium cursor-pointer transition-colors duration-200 hover:bg-gray-800 disabled:bg-gray-400 disabled:cursor-not-allowed"
+ className="w-full py-3 px-6 text-white border-none rounded-xl text-base font-medium cursor-pointer transition-colors duration-200 hover:bg-gray-800 disabled:bg-gray-400 disabled:cursor-not-allowed flex items-center justify-center gap-3"
disabled={saving}
onClick={handleSaveCurrentPage}
+ style={{
+ background:
+ "linear-gradient(182.37deg, #0ff0d2 -91.53%, #5bd3fb -67.8%, #1e0ff0 95.17%)",
+ boxShadow:
+ "1px 1px 2px 0px #1A88FF inset, 0 2px 10px 0 rgba(5, 1, 0, 0.20)",
+ }}
type="button"
>
- {saving ? "Saving..." : "Save Current Page"}
+ <svg
+ width="20"
+ height="16"
+ viewBox="0 0 20 16"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Add to Supermemory</title>
+ <g clip-path="url(#clip0_2_8851)">
+ <path
+ d="M19.4295 6.3108H12.1691V0H9.82324V6.84734C9.82324 7.57459 10.1103 8.27304 10.6206 8.78766L16.549 14.7664L18.2077 13.0936L13.8291 8.6779H19.4309V6.31219L19.4295 6.3108Z"
+ fill="#FAFAFA"
+ />
+ <path
+ d="M1.08945 2.90808L5.46808 7.32387H-0.133789V9.68958H7.12669V16.0003H9.4725V9.15304C9.4725 8.42574 9.18541 7.72728 8.67512 7.21272L2.74809 1.23535L1.08945 2.90808Z"
+ fill="#FAFAFA"
+ />
+ </g>
+ <defs>
+ <clipPath id="clip0_2_8851">
+ <rect width="19.7333" height="16" fill="white" />
+ </clipPath>
+ </defs>
+ </svg>
+
+ {saving ? "Saving..." : "Add to supermemory"}
</button>
</div>
</div>
@@ -445,7 +496,11 @@ function App() {
<div className="flex flex-col gap-4">
<div className="flex flex-col gap-2">
<button
- className="w-full py-3 px-3 bg-white text-black border border-gray-200 rounded-md text-sm font-medium cursor-pointer flex items-center justify-start transition-colors duration-200 hover:bg-gray-50"
+ className="w-full p-4 bg-[#5B7EF50A] text-white border-none rounded-xl text-sm cursor-pointer flex items-center justify-start transition-colors duration-200 hover:bg-[#5B7EF520]"
+ style={{
+ boxShadow:
+ "2px 2px 2px 0 rgba(0, 0, 0, 0.50) inset, -1px -1px 1px 0 rgba(82, 89, 102, 0.08) inset",
+ }}
onClick={() => {
chrome.tabs.create({
url: "https://chatgpt.com/#settings/Personalization",
@@ -453,20 +508,22 @@ function App() {
}}
type="button"
>
- <svg
- aria-label="ChatGPT Logo"
- className="w-4.5 h-4.5 flex-shrink-0 mr-2"
- fill="currentColor"
- role="img"
- viewBox="0 0 24 24"
- xmlns="http://www.w3.org/2000/svg"
- >
- <title>OpenAI</title>
- <path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z" />
- </svg>
<div className="text-left">
- <p>Import ChatGPT Memories</p>
- <p className="m-0 text-[10px] text-gray-500 leading-tight">
+ <p className="flex items-center gap-2 font-medium">
+ <svg
+ aria-label="ChatGPT Logo"
+ className="w-3 h-3.5 shrink-0"
+ fill="currentColor"
+ role="img"
+ viewBox="0 0 24 24"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>OpenAI</title>
+ <path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z" />
+ </svg>
+ Import ChatGPT Memories
+ </p>
+ <p className="m-0 text-[14px] text-[#737373] leading-tight">
open 'manage', save your memories to supermemory
</p>
</div>
@@ -475,7 +532,11 @@ function App() {
<div className="flex flex-col gap-2">
<button
- className="w-full py-3 px-3 bg-white text-black border border-gray-200 rounded-md text-sm font-medium cursor-pointer flex items-center justify-center transition-colors duration-200 outline-none appearance-none hover:bg-gray-50 focus:outline-none"
+ className="w-full p-4 bg-[#5B7EF50A] text-white border-none rounded-xl text-sm cursor-pointer flex items-center justify-center transition-colors duration-200 outline-none appearance-none hover:bg-[#5B7EF520] focus:outline-none"
+ style={{
+ boxShadow:
+ "2px 2px 2px 0 rgba(0, 0, 0, 0.50) inset, -1px -1px 1px 0 rgba(82, 89, 102, 0.08) inset",
+ }}
onClick={async () => {
const [activeTab] = await chrome.tabs.query({
active: true,
@@ -494,19 +555,21 @@ function App() {
}}
type="button"
>
- <svg
- aria-label="X Twitter Logo"
- className="w-4.5 h-4.5 flex-shrink-0 mr-2"
- fill="currentColor"
- viewBox="0 0 24 24"
- xmlns="http://www.w3.org/2000/svg"
- >
- <title>X Twitter Logo</title>
- <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
- </svg>
<div className="text-left">
- <p>Import X/Twitter Bookmarks</p>
- <p className="m-0 text-[10px] text-gray-500 leading-tight">
+ <p className="flex items-center gap-2 font-medium">
+ <svg
+ aria-label="X Twitter Logo"
+ className="w-3 h-3.5 shrink-0"
+ fill="currentColor"
+ viewBox="0 0 24 24"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>X Twitter Logo</title>
+ <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
+ </svg>
+ Import X/Twitter Bookmarks
+ </p>
+ <p className="m-0 text-[14px] text-[#737373] leading-tight">
Click on supermemory on top right to import bookmarks
</p>
</div>
@@ -515,28 +578,28 @@ function App() {
</div>
</div>
) : (
- <div className="flex flex-col gap-4 min-h-[200px]">
+ <div className="flex flex-col gap-4 min-h-[200px] pl-1">
{/* Account Section */}
<div>
- <h3 className="text-base font-semibold text-black mb-3">
- Account
- </h3>
- <div className="p-3 bg-gray-50 rounded-lg border border-gray-200">
+ <div className="flex flex-col gap-2">
{loadingUserData ? (
- <div className="text-sm text-gray-500">
+ <div className="text-sm text-[#737373]">
Loading account data...
</div>
) : userData?.email ? (
- <div className="flex justify-between items-center">
- <span className="text-xs font-medium text-black">
- Email
- </span>
- <span className="text-sm text-gray-600">
+ <>
+ <span className="font-medium text-base">Email</span>
+ <span
+ className="text-sm text-[#525966] p-3 rounded-xl bg-[#5B7EF50A]"
+ style={{
+ border: "1px solid rgba(255, 255, 255, 0.07)",
+ }}
+ >
{userData.email}
</span>
- </div>
+ </>
) : (
- <div className="text-sm text-gray-500">
+ <div className="text-sm text-[#737373]">
No email found
</div>
)}
@@ -545,13 +608,13 @@ function App() {
{/* Chat Integration Section */}
<div className="mb-4">
- <h3 className="text-base font-semibold text-black mb-3">
+ <h3 className="text-base font-semibold mb-3">
Chat Integration
</h3>
- <div className="flex items-center justify-between p-3 bg-gray-50 rounded-lg border border-gray-200 mb-3">
- <div className="flex items-center">
+ <div className="flex items-center justify-between p-3 rounded-xl bg-[#5B7EF50A] mb-3">
+ <div className="flex items-center text-[#737373]">
<Tooltip content="Automatically search your memories while typing in chat apps">
- <span className="text-sm font-medium text-black cursor-help">
+ <span className="text-sm font-medium cursor-help">
Auto Search Memories
</span>
</Tooltip>
@@ -565,13 +628,13 @@ function App() {
}
type="checkbox"
/>
- <div className="w-11 h-6 bg-gray-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-gray-700" />
+ <div className="w-11 h-6 bg-[#21212180] peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-[#262A30] after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-[#06080B] peer-checked:after:bg-[#15418A]" />
</label>
</div>
- <div className="flex items-center justify-between p-3 bg-gray-50 rounded-lg border border-gray-200">
- <div className="flex items-center">
+ <div className="flex items-center justify-between p-3 rounded-xl bg-[#5B7EF50A]">
+ <div className="flex items-center text-[#737373]">
<Tooltip content="Automatically save your prompts as memories in chat apps">
- <span className="text-sm font-medium text-black cursor-help">
+ <span className="text-sm font-medium cursor-help">
Auto Capture Prompts
</span>
</Tooltip>
@@ -585,7 +648,7 @@ function App() {
}
type="checkbox"
/>
- <div className="w-11 h-6 bg-gray-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-gray-700" />
+ <div className="w-11 h-6 bg-[#21212180] peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-[#262A30] after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-[#06080B] peer-checked:after:bg-[#15418A]" />
</label>
</div>
</div>
@@ -593,8 +656,8 @@ function App() {
)}
{showProjectSelector && (
- <div className="absolute inset-0 bg-white rounded-lg z-[1000] shadow-xl flex flex-col">
- <div className="flex justify-between items-center p-4 border-b border-gray-200 text-base font-semibold text-black flex-shrink-0">
+ <div className="absolute inset-0 bg-white rounded-lg z-1000 shadow-xl flex flex-col">
+ <div className="flex justify-between items-center p-4 border-b border-gray-200 text-base font-semibold text-black shrink-0">
<span>Select the Project</span>
<button
className="bg-transparent border-none text-xl cursor-pointer text-gray-500 p-0 w-6 h-6 flex items-center justify-center hover:text-black"
@@ -620,7 +683,7 @@ function App() {
type="button"
>
<div className="flex flex-col flex-1 gap-0.5">
- <span className="text-sm font-medium text-black break-words leading-tight">
+ <span className="text-sm font-medium text-black wrap-break-word leading-tight">
{project.name}
</span>
<span className="text-xs text-gray-500">
diff --git a/apps/browser-extension/utils/api.ts b/apps/browser-extension/utils/api.ts
index 39bfecd2..b002aff7 100644
--- a/apps/browser-extension/utils/api.ts
+++ b/apps/browser-extension/utils/api.ts
@@ -146,7 +146,10 @@ export async function searchMemories(query: string): Promise<unknown> {
try {
const response = await makeAuthenticatedRequest<unknown>("/v4/search", {
method: "POST",
- body: JSON.stringify({ q: query, include: { relatedMemories: true } }),
+ body: JSON.stringify({
+ q: query,
+ include: { relatedMemories: true },
+ }),
})
return response
} catch (error) {
diff --git a/apps/browser-extension/utils/constants.ts b/apps/browser-extension/utils/constants.ts
index 9d3d431e..14552865 100644
--- a/apps/browser-extension/utils/constants.ts
+++ b/apps/browser-extension/utils/constants.ts
@@ -22,6 +22,8 @@ export const ELEMENT_IDS = {
CLAUDE_INPUT_BAR_ELEMENT: "sm-claude-input-bar-element",
T3_INPUT_BAR_ELEMENT: "sm-t3-input-bar-element",
PROJECT_SELECTION_MODAL: "sm-project-selection-modal",
+ SELECTION_SEARCH_FAB: "sm-selection-search-fab",
+ SELECTION_SEARCH_PANEL: "sm-selection-search-panel",
} as const
/**
@@ -36,6 +38,8 @@ export const UI_CONFIG = {
OBSERVER_THROTTLE_DELAY: 300, // milliseconds between observer callback executions
ROUTE_CHECK_INTERVAL: 2000, // milliseconds between route change checks
API_REQUEST_TIMEOUT: 10000, // milliseconds for API request timeout
+ SELECTION_MIN_LENGTH: 3, // minimum characters to show FAB
+ SELECTION_MAX_LENGTH: 500, // maximum characters to show FAB
} as const
/**
@@ -69,10 +73,13 @@ export const MESSAGE_TYPES = {
GET_RELATED_MEMORIES: "sm-get-related-memories",
CAPTURE_PROMPT: "sm-capture-prompt",
FETCH_PROJECTS: "sm-fetch-projects",
+ SEARCH_SELECTION: "sm-search-selection",
+ OPEN_SEARCH_PANEL: "sm-open-search-panel",
} as const
export const CONTEXT_MENU_IDS = {
SAVE_TO_SUPERMEMORY: "sm-save-to-supermemory",
+ SEARCH_SUPERMEMORY: "sm-search-supermemory",
} as const
export const POSTHOG_EVENT_KEY = {
@@ -86,4 +93,6 @@ export const POSTHOG_EVENT_KEY = {
CLAUDE_CHAT_MEMORIES_AUTO_SEARCHED: "claude_chat_memories_auto_searched",
CHATGPT_CHAT_MEMORIES_SEARCHED: "chatgpt_chat_memories_searched",
CHATGPT_CHAT_MEMORIES_AUTO_SEARCHED: "chatgpt_chat_memories_auto_searched",
+ SELECTION_SEARCH_TRIGGERED: "selection_search_triggered",
+ SELECTION_SEARCH_COPIED: "selection_search_copied",
} as const
diff --git a/apps/memory-graph-playground/next-env.d.ts b/apps/memory-graph-playground/next-env.d.ts
new file mode 100644
index 00000000..c4b7818f
--- /dev/null
+++ b/apps/memory-graph-playground/next-env.d.ts
@@ -0,0 +1,6 @@
+/// <reference types="next" />
+/// <reference types="next/image-types/global" />
+import "./.next/dev/types/routes.d.ts";
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/web/app/(auth)/login/new/page.tsx b/apps/web/app/(auth)/login/new/page.tsx
new file mode 100644
index 00000000..3589d6a1
--- /dev/null
+++ b/apps/web/app/(auth)/login/new/page.tsx
@@ -0,0 +1,479 @@
+"use client"
+
+import { signIn } from "@lib/auth"
+import { usePostHog } from "@lib/posthog"
+import { TextSeparator } from "@repo/ui/components/text-separator"
+import { ExternalAuthButton } from "@ui/button/external-auth"
+import { Button } from "@ui/components/button"
+import { Badge } from "@ui/components/badge"
+import { LabeledInput } from "@ui/input/labeled-input"
+import { HeadingH3Medium } from "@ui/text/heading/heading-h3-medium"
+import { Label1Regular } from "@ui/text/label/label-1-regular"
+import { Title1Bold } from "@ui/text/title/title-1-bold"
+import { InitialHeader } from "@/components/initial-header"
+import { useRouter, useSearchParams } from "next/navigation"
+import { useState, useEffect } from "react"
+import { motion } from "framer-motion"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { Logo } from "@ui/assets/Logo"
+
+function AnimatedGradientBackground() {
+ return (
+ <div className="fixed inset-0 z-0 overflow-hidden">
+ <motion.div
+ className="absolute top-[20%] left-0 right-0 bottom-0 bg-[url('/onboarding/bg-gradient-0.png')] bg-size-[150%_auto] bg-top bg-no-repeat"
+ initial={{ y: "100%" }}
+ animate={{
+ y: 0,
+ opacity: [1, 0, 1],
+ }}
+ transition={{
+ y: { duration: 0.75, ease: "easeOut" },
+ opacity: { duration: 8, repeat: Number.POSITIVE_INFINITY, ease: "easeInOut" },
+ }}
+ />
+ <motion.div
+ className="absolute top-[20%] left-0 right-0 bottom-0 bg-[url('/onboarding/bg-gradient-1.png')] bg-size-[150%_auto] bg-top bg-no-repeat"
+ initial={{ y: "100%" }}
+ animate={{
+ y: 0,
+ opacity: [0, 1, 0],
+ }}
+ transition={{
+ y: { duration: 0.75, ease: "easeOut" },
+ opacity: { duration: 8, repeat: Number.POSITIVE_INFINITY, ease: "easeInOut" },
+ }}
+ />
+ <motion.div
+ className="absolute top-0 left-0 right-0 bottom-0 bg-[url('/bg-rectangle.png')] bg-cover bg-center bg-no-repeat"
+ transition={{ duration: 0.75, ease: "easeOut", bounce: 0 }}
+ style={{
+ mixBlendMode: "soft-light",
+ opacity: 0.4,
+ }}
+ />
+ </div>
+ )
+}
+
+function LoginCard({ children }: { children: React.ReactNode }) {
+ return (
+ <motion.div
+ className="flex py-8 px-11 flex-col items-start gap-2 rounded-[22px] bg-linear-to-b from-[#06101F] to-[#030912] shadow-[1.5px_1.5px_20px_0_rgba(0,0,0,0.65),1px_1.5px_2px_0_rgba(128,189,255,0.07)_inset,-0.5px_-1.5px_4px_0_rgba(0,35,73,0.40)_inset]"
+ initial={{ opacity: 0, y: 20 }}
+ animate={{ opacity: 1, y: 0 }}
+ transition={{ duration: 0.75, ease: "easeOut" }}
+ >
+ {children}
+ </motion.div>
+ )
+}
+
+export default function LoginPage() {
+ const [email, setEmail] = useState("")
+ const [submittedEmail, setSubmittedEmail] = useState<string | null>(null)
+ const [isLoading, setIsLoading] = useState(false)
+ const [isLoadingEmail, setIsLoadingEmail] = useState(false)
+ const [error, setError] = useState<string | null>(null)
+ const [lastUsedMethod, setLastUsedMethod] = useState<string | null>(null)
+ const router = useRouter()
+
+ const posthog = usePostHog()
+
+ const params = useSearchParams()
+
+ // Get redirect URL from query params
+ const redirectUrl = params.get("redirect")
+
+ // Create callback URL that includes redirect parameter if provided
+ const getCallbackURL = () => {
+ const origin = window.location.origin
+ let finalUrl: URL
+
+ if (redirectUrl) {
+ try {
+ finalUrl = new URL(redirectUrl, origin)
+ } catch {
+ finalUrl = new URL(origin)
+ }
+ } else {
+ finalUrl = new URL(origin)
+ }
+
+ finalUrl.searchParams.set("extension-auth-success", "true")
+ return finalUrl.toString()
+ }
+
+ // Load last used method from localStorage on mount
+ useEffect(() => {
+ const savedMethod = localStorage.getItem("supermemory-last-login-method")
+ setLastUsedMethod(savedMethod)
+ }, [])
+
+ // Record the pending login method (will be committed after successful auth)
+ function setPendingLoginMethod(method: string) {
+ try {
+ localStorage.setItem("supermemory-pending-login-method", method)
+ localStorage.setItem(
+ "supermemory-pending-login-timestamp",
+ String(Date.now()),
+ )
+ } catch {}
+ }
+
+ function isNetworkError(error: unknown): boolean {
+ if (!(error instanceof Error)) return false
+ const message = error.message.toLowerCase()
+ return (
+ message.includes("load failed") ||
+ message.includes("networkerror") ||
+ message.includes("failed to fetch") ||
+ message.includes("network request failed")
+ )
+ }
+
+ function getErrorMessage(error: unknown): string {
+ if (isNetworkError(error)) {
+ return "Network error. Please check your connection and try again."
+ }
+ if (error instanceof Error) {
+ return error.message
+ }
+ return "An unexpected error occurred. Please try again."
+ }
+
+ // If we land back on this page with an error, clear any pending marker
+ useEffect(() => {
+ if (params.get("error")) {
+ try {
+ localStorage.removeItem("supermemory-pending-login-method")
+ localStorage.removeItem("supermemory-pending-login-timestamp")
+ } catch {}
+ }
+ }, [params])
+
+ const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
+ e.preventDefault()
+ setIsLoading(true)
+ setIsLoadingEmail(true)
+ setError(null)
+
+ // Track login attempt
+ posthog.capture("login_attempt", {
+ method: "magic_link",
+ email_domain: email.split("@")[1] || "unknown",
+ })
+
+ try {
+ await signIn.magicLink({
+ callbackURL: getCallbackURL(),
+ email,
+ })
+ setSubmittedEmail(email)
+ setPendingLoginMethod("magic_link")
+ // Track successful magic link send
+ posthog.capture("login_magic_link_sent", {
+ email_domain: email.split("@")[1] || "unknown",
+ })
+ } catch (error) {
+ console.error(error)
+
+ // Track login failure
+ posthog.capture("login_failed", {
+ method: "magic_link",
+ error: error instanceof Error ? error.message : "Unknown error",
+ email_domain: email.split("@")[1] || "unknown",
+ is_network_error: isNetworkError(error),
+ })
+
+ setError(getErrorMessage(error))
+ setIsLoading(false)
+ setIsLoadingEmail(false)
+ return
+ }
+
+ setIsLoading(false)
+ setIsLoadingEmail(false)
+ }
+
+ const handleSubmitToken = async (event: React.FormEvent<HTMLFormElement>) => {
+ event.preventDefault()
+ setIsLoading(true)
+
+ const formData = new FormData(event.currentTarget)
+ const token = formData.get("token") as string
+ const callbackURL = getCallbackURL()
+ router.push(
+ `${process.env.NEXT_PUBLIC_BACKEND_URL}/api/auth/magic-link/verify?token=${token}&callbackURL=${encodeURIComponent(callbackURL)}`,
+ )
+ }
+
+ return (
+ <main className="relative h-screen overflow-hidden">
+ <AnimatedGradientBackground />
+ <div className="relative z-10">
+ <InitialHeader />
+ <section className="flex flex-col items-center justify-center p-4 space-y-12 sm:p-6 md:p-8 lg:px-20 lg:py-12.5 min-h-[calc(100vh-80px)]">
+ <div className="text-center">
+ <div className="text-5xl font-medium">
+ Never forget anything, anywhere
+ </div>
+ <div className="text-5xl font-medium">with supermemory</div>
+ </div>
+ {submittedEmail ? (
+ <LoginCard>
+ <div className="w-[360px] flex flex-col gap-4 lg:gap-6 min-h-2/3">
+ <div className="flex flex-col gap-2 text-center lg:text-left">
+ <Title1Bold className="text-foreground">
+ Almost there!
+ </Title1Bold>
+ <HeadingH3Medium className="text-muted-foreground">
+ Click the magic link we've sent to{" "}
+ <span className="text-foreground">{submittedEmail}</span>.
+ </HeadingH3Medium>
+ </div>
+
+ <TextSeparator text="OR" className={cn(dmSansClassName())} />
+
+ <form
+ className="flex flex-col gap-4 lg:gap-6"
+ onSubmit={handleSubmitToken}
+ >
+ <LabeledInput
+ inputPlaceholder="your temporary login code"
+ inputProps={{
+ name: "token",
+ required: true,
+ disabled: isLoading,
+ "aria-invalid": error ? "true" : "false",
+ }}
+ inputType="text"
+ label="Enter code"
+ />
+
+ <Button disabled={isLoading} id="verify-token" type="submit">
+ Verify Token
+ </Button>
+ </form>
+ </div>
+ </LoginCard>
+ ) : (
+ <LoginCard>
+ <div className="w-[360px] flex flex-col" style={{ gap: "12px" }}>
+ {params.get("error") && (
+ <div className="text-red-500">
+ Error: {params.get("error")}. Please try again!
+ </div>
+ )}
+
+ <div className="flex flex-col gap-3">
+ {process.env.NEXT_PUBLIC_HOST_ID === "supermemory" ||
+ !process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENABLED ? (
+ <div className="relative grow">
+ <ExternalAuthButton
+ authIcon={
+ <svg
+ className="w-4 h-4 sm:w-5 sm:h-5"
+ fill="none"
+ height="25"
+ viewBox="0 0 24 25"
+ width="24"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Google</title>
+ <path
+ d="M21.8055 10.2563H21V10.2148H12V14.2148H17.6515C16.827 16.5433 14.6115 18.2148 12 18.2148C8.6865 18.2148 6 15.5283 6 12.2148C6 8.90134 8.6865 6.21484 12 6.21484C13.5295 6.21484 14.921 6.79184 15.9805 7.73434L18.809 4.90584C17.023 3.24134 14.634 2.21484 12 2.21484C6.4775 2.21484 2 6.69234 2 12.2148C2 17.7373 6.4775 22.2148 12 22.2148C17.5225 22.2148 22 17.7373 22 12.2148C22 11.5443 21.931 10.8898 21.8055 10.2563Z"
+ fill="#FFC107"
+ />
+ <path
+ d="M3.15234 7.56034L6.43784 9.96984C7.32684 7.76884 9.47984 6.21484 11.9993 6.21484C13.5288 6.21484 14.9203 6.79184 15.9798 7.73434L18.8083 4.90584C17.0223 3.24134 14.6333 2.21484 11.9993 2.21484C8.15834 2.21484 4.82734 4.38334 3.15234 7.56034Z"
+ fill="#FF3D00"
+ />
+ <path
+ d="M12.0002 22.2152C14.5832 22.2152 16.9302 21.2267 18.7047 19.6192L15.6097 17.0002C14.5721 17.7897 13.3039 18.2166 12.0002 18.2152C9.39916 18.2152 7.19066 16.5567 6.35866 14.2422L3.09766 16.7547C4.75266 19.9932 8.11366 22.2152 12.0002 22.2152Z"
+ fill="#4CAF50"
+ />
+ <path
+ d="M21.8055 10.2563H21V10.2148H12V14.2148H17.6515C17.2571 15.3231 16.5467 16.2914 15.608 17.0003L15.6095 16.9993L18.7045 19.6183C18.4855 19.8173 22 17.2148 22 12.2148C22 11.5443 21.931 10.8898 21.8055 10.2563Z"
+ fill="#1976D2"
+ />
+ </svg>
+ }
+ authProvider="Google"
+ className="w-full"
+ disabled={isLoading}
+ onClick={() => {
+ if (isLoading) return
+ setIsLoading(true)
+ posthog.capture("login_attempt", {
+ method: "social",
+ provider: "google",
+ })
+ setPendingLoginMethod("google")
+ signIn
+ .social({
+ callbackURL: getCallbackURL(),
+ provider: "google",
+ })
+ .finally(() => {
+ setIsLoading(false)
+ })
+ }}
+ />
+ {lastUsedMethod === "google" && (
+ <div className="absolute -top-2 -right-2">
+ <Badge variant="default" className="text-xs">
+ Last used
+ </Badge>
+ </div>
+ )}
+ </div>
+ ) : null}
+ {process.env.NEXT_PUBLIC_HOST_ID === "supermemory" ||
+ !process.env.NEXT_PUBLIC_GITHUB_AUTH_ENABLED ? (
+ <div className="relative grow">
+ <ExternalAuthButton
+ authIcon={
+ <svg
+ className="w-4 h-4 sm:w-5 sm:h-5 text-foreground"
+ fill="none"
+ height="25"
+ viewBox="0 0 26 25"
+ width="26"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Github</title>
+ <g clipPath="url(#clip0_2579_3356)">
+ <path
+ clipRule="evenodd"
+ d="M12.9635 0.214844C6.20975 0.214844 0.75 5.71484 0.75 12.5191C0.75 17.9581 4.24825 22.5621 9.10125 24.1916C9.708 24.3141 9.93025 23.9268 9.93025 23.6011C9.93025 23.3158 9.91025 22.3381 9.91025 21.3193C6.51275 22.0528 5.80525 19.8526 5.80525 19.8526C5.25925 18.4266 4.45025 18.0601 4.45025 18.0601C3.33825 17.3063 4.53125 17.3063 4.53125 17.3063C5.76475 17.3878 6.412 18.5693 6.412 18.5693C7.50375 20.4433 9.263 19.9138 9.97075 19.5878C10.0718 18.7933 10.3955 18.2433 10.7393 17.9378C8.0295 17.6526 5.1785 16.5933 5.1785 11.8671C5.1785 10.5226 5.6635 9.42259 6.432 8.56709C6.31075 8.26159 5.886 6.99834 6.5535 5.30759C6.5535 5.30759 7.58475 4.98159 9.91 6.57059C10.9055 6.30126 11.9322 6.16425 12.9635 6.16309C13.9948 6.16309 15.046 6.30584 16.0168 6.57059C18.3423 4.98159 19.3735 5.30759 19.3735 5.30759C20.041 6.99834 19.616 8.26159 19.4948 8.56709C20.2835 9.42259 20.7485 10.5226 20.7485 11.8671C20.7485 16.5933 17.8975 17.6321 15.1675 17.9378C15.6125 18.3248 15.9965 19.0581 15.9965 20.2193C15.9965 21.8693 15.9765 23.1936 15.9765 23.6008C15.9765 23.9268 16.199 24.3141 16.8055 24.1918C21.6585 22.5618 25.1568 17.9581 25.1568 12.5191C25.1768 5.71484 19.697 0.214844 12.9635 0.214844Z"
+ fill="currentColor"
+ fillRule="evenodd"
+ />
+ </g>
+ <defs>
+ <clipPath id="clip0_2579_3356">
+ <rect
+ fill="currentColor"
+ height="24"
+ transform="translate(0.75 0.214844)"
+ width="24.5"
+ />
+ </clipPath>
+ </defs>
+ </svg>
+ }
+ authProvider="Github"
+ className="w-full"
+ disabled={isLoading}
+ onClick={() => {
+ if (isLoading) return
+ setIsLoading(true)
+ posthog.capture("login_attempt", {
+ method: "social",
+ provider: "github",
+ })
+ setPendingLoginMethod("github")
+ signIn
+ .social({
+ callbackURL: getCallbackURL(),
+ provider: "github",
+ })
+ .finally(() => {
+ setIsLoading(false)
+ })
+ }}
+ />
+ {lastUsedMethod === "github" && (
+ <div className="absolute -top-2 -right-2">
+ <Badge variant="default" className="text-xs">
+ Last used
+ </Badge>
+ </div>
+ )}
+ </div>
+ ) : null}
+ </div>
+
+ <TextSeparator text="OR" className={cn(dmSansClassName())} />
+
+ <div className="flex flex-col gap-6">
+ <form onSubmit={handleSubmit} className="flex flex-col gap-6">
+ <LabeledInput
+ error={error}
+ inputPlaceholder="[email protected]"
+ inputProps={{
+ "aria-invalid": error ? "true" : "false",
+ disabled: isLoading,
+ id: "email",
+ onChange: (e) => {
+ setEmail(e.target.value)
+ error && setError(null)
+ },
+ required: true,
+ value: email,
+ }}
+ inputType="email"
+ />
+
+ <div className="relative">
+ <Button
+ className="flex justify-center items-center w-full h-[44px] relative gap-3 p-2 rounded-xl"
+ style={{
+ background:
+ "linear-gradient(182.37deg, #0ff0d2 -91.53%, #5bd3fb -67.8%, #1e0ff0 95.17%)",
+ boxShadow:
+ "1px 1px 2px 0px #1A88FF inset, 0 2px 10px 0 rgba(5, 1, 0, 0.20)",
+ }}
+ disabled={isLoading}
+ type="submit"
+ >
+ <Logo className="size-4" />
+ {isLoadingEmail
+ ? "Sending login link..."
+ : "Log in with Supermemory"}
+ </Button>
+ {lastUsedMethod === "magic_link" && (
+ <div className="absolute -top-2 -right-2">
+ <Badge variant="default" className="text-xs">
+ Last used
+ </Badge>
+ </div>
+ )}
+ </div>
+ </form>
+
+ <Label1Regular
+ className={cn(
+ "text-center text-xs! text-[#737373B2]",
+ dmSansClassName(),
+ )}
+ >
+ By continuing, you agree to our{" "}
+ <span className="inline-block">
+ <a
+ className="underline"
+ href="https://supermemory.ai/terms-of-service"
+ >
+ Terms
+ </a>{" "}
+ and{" "}
+ <a
+ className="underline"
+ href="https://supermemory.ai/privacy-policy"
+ >
+ Privacy Policy
+ </a>
+ .
+ </span>
+ </Label1Regular>
+ </div>
+ </div>
+ </LoginCard>
+ )}
+ </section>
+ </div>
+ </main>
+ )
+}
diff --git a/apps/web/app/(auth)/login/page.tsx b/apps/web/app/(auth)/login/page.tsx
index df052a3d..70b53606 100644
--- a/apps/web/app/(auth)/login/page.tsx
+++ b/apps/web/app/(auth)/login/page.tsx
@@ -1,12 +1,5 @@
-import { LoginPage } from "@repo/ui/pages/login";
+import { LoginPage } from "@repo/ui/pages/login"
export default function Page() {
- return (
- <LoginPage
- texts={[
- "Your memory, everywhere, with you.",
- "Private, secure, and reliable.",
- ]}
- />
- );
+ return <LoginPage />
}
diff --git a/apps/web/app/(navigation)/page.tsx b/apps/web/app/(navigation)/page.tsx
index 212f33c0..73da4f3c 100644
--- a/apps/web/app/(navigation)/page.tsx
+++ b/apps/web/app/(navigation)/page.tsx
@@ -10,12 +10,14 @@ import { ChromeExtensionButton } from "@/components/chrome-extension-button"
import { ChatInput } from "@/components/chat-input"
import { BackgroundPlus } from "@ui/components/grid-plus"
import { Memories } from "@/components/memories"
+import { useFeatureFlagEnabled } from "posthog-js/react"
export default function Page() {
const { user, session } = useAuth()
const { shouldShowOnboarding, isLoading: onboardingLoading } =
useOnboardingStorage()
const router = useRouter()
+ const flagEnabled = useFeatureFlagEnabled("nova-alpha-access")
useEffect(() => {
const url = new URL(window.location.href)
@@ -33,7 +35,10 @@ export default function Page() {
if (sessionToken && userData?.email) {
const encodedToken = encodeURIComponent(sessionToken)
- window.postMessage({ token: encodedToken, userData }, window.location.origin)
+ window.postMessage(
+ { token: encodedToken, userData },
+ window.location.origin,
+ )
url.searchParams.delete("extension-auth-success")
window.history.replaceState({}, "", url.toString())
}
@@ -42,9 +47,13 @@ export default function Page() {
useEffect(() => {
if (user && !onboardingLoading && shouldShowOnboarding()) {
- router.push("/onboarding")
+ if (flagEnabled) {
+ router.push("/new/onboarding?step=input&flow=welcome")
+ } else {
+ router.push("/onboarding")
+ }
}
- }, [user, shouldShowOnboarding, onboardingLoading, router])
+ }, [user, shouldShowOnboarding, onboardingLoading, router, flagEnabled])
if (!user || onboardingLoading) {
return (
diff --git a/apps/web/app/api/exa/fetch-content/route.ts b/apps/web/app/api/exa/fetch-content/route.ts
new file mode 100644
index 00000000..6cdb40d5
--- /dev/null
+++ b/apps/web/app/api/exa/fetch-content/route.ts
@@ -0,0 +1,61 @@
+export interface ExaContentResult {
+ url: string
+ text: string
+ title: string
+ author?: string
+}
+
+interface ExaApiResponse {
+ results: ExaContentResult[]
+}
+
+export async function POST(request: Request) {
+ try {
+ const { urls } = await request.json()
+
+ if (!Array.isArray(urls) || urls.length === 0) {
+ return Response.json(
+ { error: "Invalid input: urls must be a non-empty array" },
+ { status: 400 },
+ )
+ }
+
+ if (!urls.every((url) => typeof url === "string" && url.trim())) {
+ return Response.json(
+ { error: "Invalid input: all urls must be non-empty strings" },
+ { status: 400 },
+ )
+ }
+
+ const response = await fetch("https://api.exa.ai/contents", {
+ method: "POST",
+ headers: {
+ "x-api-key": process.env.EXA_API_KEY ?? "",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ urls,
+ text: true,
+ livecrawl: "fallback",
+ }),
+ })
+
+ if (!response.ok) {
+ console.error(
+ "Exa API request failed:",
+ response.status,
+ response.statusText,
+ )
+ return Response.json(
+ { error: "Failed to fetch content from Exa API" },
+ { status: 500 },
+ )
+ }
+
+ const data: ExaApiResponse = await response.json()
+ return Response.json({ results: data.results })
+ } catch (error) {
+ console.error("Exa API request error:", error)
+ return Response.json({ error: "Internal server error" }, { status: 500 })
+ }
+}
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
index 707e4185..030b5b90 100644
--- a/apps/web/app/layout.tsx
+++ b/apps/web/app/layout.tsx
@@ -5,7 +5,7 @@ import "@ui/globals.css"
import { AuthProvider } from "@lib/auth-context"
import { ErrorTrackingProvider } from "@lib/error-tracking"
import { PostHogProvider } from "@lib/posthog"
-import { QueryProvider } from "@lib/query-client"
+import { QueryProvider } from "../components/query-client"
import { AutumnProvider } from "autumn-js/react"
import { Suspense } from "react"
import { Toaster } from "sonner"
@@ -39,8 +39,8 @@ export default function RootLayout({
>
<ThemeProvider
attribute="class"
- defaultTheme="system"
- enableSystem
+ defaultTheme="dark"
+ enableSystem={false}
disableTransitionOnChange
>
<AutumnProvider
diff --git a/apps/web/app/new/layout.tsx b/apps/web/app/new/layout.tsx
new file mode 100644
index 00000000..e761fea2
--- /dev/null
+++ b/apps/web/app/new/layout.tsx
@@ -0,0 +1,22 @@
+"use client"
+
+import { useEffect } from "react"
+import { useFeatureFlagEnabled } from "posthog-js/react"
+import { useRouter } from "next/navigation"
+
+export default function NewLayout({ children }: { children: React.ReactNode }) {
+ const router = useRouter()
+ const flagEnabled = useFeatureFlagEnabled("nova-alpha-access")
+
+ useEffect(() => {
+ if (!flagEnabled) {
+ router.push("/")
+ }
+ }, [flagEnabled, router])
+
+ if (!flagEnabled) {
+ return null
+ }
+
+ return <>{children}</>
+}
diff --git a/apps/web/app/new/onboarding/page.tsx b/apps/web/app/new/onboarding/page.tsx
new file mode 100644
index 00000000..57b5b4fb
--- /dev/null
+++ b/apps/web/app/new/onboarding/page.tsx
@@ -0,0 +1,267 @@
+"use client"
+
+import { useSearchParams } from "next/navigation"
+import { motion, AnimatePresence } from "motion/react"
+import { useState, useEffect } from "react"
+import { useAuth } from "@lib/auth-context"
+import { cn } from "@lib/utils"
+
+import { InputStep } from "./welcome/input-step"
+import { GreetingStep } from "./welcome/greeting-step"
+import { WelcomeStep } from "./welcome/welcome-step"
+import { ContinueStep } from "./welcome/continue-step"
+import { FeaturesStep } from "./welcome/features-step"
+import { MemoriesStep } from "./welcome/memories-step"
+import { RelatableQuestion } from "./setup/relatable-question"
+import { IntegrationsStep } from "./setup/integrations-step"
+
+import { InitialHeader } from "@/components/initial-header"
+import { SetupHeader } from "./setup/header"
+import { ChatSidebar } from "./setup/chat-sidebar"
+import { Logo } from "@ui/assets/Logo"
+import NovaOrb from "@/components/nova/nova-orb"
+import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background"
+
+function UserSupermemory({ name }: { name: string }) {
+ return (
+ <motion.div
+ className="absolute inset-0 top-[-34px] flex items-center justify-center z-10"
+ initial={{ opacity: 0, y: 0 }}
+ animate={{ opacity: 1, y: 0 }}
+ exit={{ opacity: 0, y: 0 }}
+ transition={{ duration: 1, ease: "easeOut" }}
+ >
+ <Logo className="h-14 text-white" />
+ <div className="flex flex-col items-start justify-center ml-4">
+ <p className="text-white text-[25px] font-medium leading-none">
+ {name.split(" ")[0]}'s
+ </p>
+ <p className="text-white font-bold text-4xl leading-none -mt-2">
+ supermemory
+ </p>
+ </div>
+ </motion.div>
+ )
+}
+
+export default function OnboardingPage() {
+ const searchParams = useSearchParams()
+ const { user } = useAuth()
+
+ const flow = searchParams.get("flow") as "welcome" | "setup" | null
+ const step = searchParams.get("step") as string | null
+
+ const [name, setName] = useState(user?.name ?? "")
+ const [isSubmitting, setIsSubmitting] = useState(false)
+ const [memoryFormData, setMemoryFormData] = useState<{
+ twitter: string
+ linkedin: string
+ description: string
+ otherLinks: string[]
+ } | null>(null)
+ const [showWelcomeContent, setShowWelcomeContent] = useState(false)
+
+ const currentFlow = flow || "welcome"
+ const currentStep = step || "input"
+
+ useEffect(() => {
+ if (user?.name) {
+ setName(user.name)
+ localStorage.setItem("username", user.name)
+ }
+ }, [user?.name])
+
+ useEffect(() => {
+ if (currentFlow === "welcome" && currentStep === "input") {
+ setShowWelcomeContent(false)
+ const timer = setTimeout(() => {
+ setShowWelcomeContent(true)
+ }, 1250)
+ return () => clearTimeout(timer)
+ }
+ }, [currentFlow, currentStep])
+
+ useEffect(() => {
+ if (currentFlow !== "welcome") return
+
+ const timers: NodeJS.Timeout[] = []
+
+ switch (currentStep) {
+ case "greeting":
+ timers.push(
+ setTimeout(() => {
+ // Auto-advance to welcome step
+ window.history.replaceState(
+ null,
+ "",
+ "/new/onboarding?flow=welcome&step=welcome",
+ )
+ }, 2000),
+ )
+ break
+ case "welcome":
+ timers.push(
+ setTimeout(() => {
+ // Auto-advance to username step
+ window.history.replaceState(
+ null,
+ "",
+ "/new/onboarding?flow=welcome&step=username",
+ )
+ }, 2000),
+ )
+ break
+ }
+
+ return () => {
+ timers.forEach(clearTimeout)
+ }
+ }, [currentStep, currentFlow])
+
+ const handleSubmit = () => {
+ localStorage.setItem("username", name)
+ if (name.trim()) {
+ setIsSubmitting(true)
+ window.history.replaceState(
+ null,
+ "",
+ "/new/onboarding?flow=welcome&step=greeting",
+ )
+ setIsSubmitting(false)
+ }
+ }
+
+ const renderWelcomeStep = () => {
+ switch (currentStep) {
+ case "input":
+ return (
+ <InputStep
+ key="input"
+ name={name}
+ setName={setName}
+ handleSubmit={handleSubmit}
+ isSubmitting={isSubmitting}
+ />
+ )
+ case "greeting":
+ return <GreetingStep key="greeting" name={name} />
+ case "welcome":
+ return <WelcomeStep key="welcome" />
+ case "username":
+ return <ContinueStep key="username" />
+ case "features":
+ return <FeaturesStep key="features" />
+ case "memories":
+ return <MemoriesStep key="memories" onSubmit={setMemoryFormData} />
+ default:
+ return null
+ }
+ }
+
+ const renderSetupStep = () => {
+ switch (currentStep) {
+ case "relatable":
+ return <RelatableQuestion key="relatable" />
+ case "integrations":
+ return <IntegrationsStep key="integrations" />
+ default:
+ return null
+ }
+ }
+
+ const isWelcomeFlow = currentFlow === "welcome"
+ const isSetupFlow = currentFlow === "setup"
+
+ const minimizeNovaOrb =
+ isWelcomeFlow && ["features", "memories"].includes(currentStep)
+ const novaSize = currentStep === "memories" ? 150 : 300
+
+ const showUserSupermemory = isWelcomeFlow && currentStep === "username"
+
+ return (
+ <div className="h-screen overflow-hidden bg-black">
+ {isWelcomeFlow && (
+ <InitialHeader
+ showUserSupermemory={
+ currentStep === "features" || currentStep === "memories"
+ }
+ name={name}
+ />
+ )}
+ {isSetupFlow && <SetupHeader />}
+
+ {isSetupFlow && <AnimatedGradientBackground animateFromBottom={false} />}
+
+ {isWelcomeFlow && currentStep === "input" && (
+ <AnimatedGradientBackground animateFromBottom={true} />
+ )}
+
+ {isWelcomeFlow && showWelcomeContent && (
+ <div className="fixed inset-0 flex flex-col items-center justify-center overflow-y-auto">
+ <motion.div
+ className="absolute inset-0 bg-[url('/bg-rectangle.png')] bg-cover bg-center bg-no-repeat pointer-events-none"
+ transition={{ duration: 0.75, ease: "easeOut", bounce: 0 }}
+ style={{
+ mixBlendMode: "soft-light",
+ opacity: 0.6,
+ }}
+ />
+ <motion.div
+ className={cn(
+ "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-10 flex flex-col items-center justify-center",
+ )}
+ animate={{
+ gap: minimizeNovaOrb ? 0 : 16,
+ }}
+ transition={{
+ duration: 0.6,
+ ease: "easeOut",
+ }}
+ >
+ <motion.div
+ animate={{
+ scale:
+ currentStep === "features"
+ ? 0.7
+ : currentStep === "memories"
+ ? 0.4
+ : 1,
+ padding: minimizeNovaOrb ? 0 : 48,
+ paddingTop: 0,
+ }}
+ transition={{
+ duration: 0.8,
+ ease: "easeOut",
+ delay: 0.2,
+ }}
+ className="relative"
+ >
+ <NovaOrb size={novaSize} />
+ {showUserSupermemory && <UserSupermemory name={name} />}
+ </motion.div>
+
+ <AnimatePresence mode="wait">{renderWelcomeStep()}</AnimatePresence>
+ </motion.div>
+ </div>
+ )}
+
+ {isSetupFlow && (
+ <main className="relative min-h-screen">
+ <div className="relative z-10">
+ <div className="flex flex-row h-[calc(100vh-90px)] relative">
+ <div className="flex-1 flex flex-col items-center justify-start p-8">
+ <AnimatePresence mode="wait">
+ {renderSetupStep()}
+ </AnimatePresence>
+ </div>
+
+ <AnimatePresence mode="popLayout">
+ <ChatSidebar formData={memoryFormData} />
+ </AnimatePresence>
+ </div>
+ </div>
+ </main>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/setup/chat-sidebar.tsx b/apps/web/app/new/onboarding/setup/chat-sidebar.tsx
new file mode 100644
index 00000000..d35ce73d
--- /dev/null
+++ b/apps/web/app/new/onboarding/setup/chat-sidebar.tsx
@@ -0,0 +1,424 @@
+"use client"
+
+import { useState, useEffect, useCallback, useRef } from "react"
+import { motion, AnimatePresence } from "motion/react"
+import NovaOrb from "@/components/nova/nova-orb"
+import { Button } from "@ui/components/button"
+import { PanelRightCloseIcon, SendIcon } from "lucide-react"
+import { collectValidUrls } from "@/utils/url-helpers"
+import { $fetch } from "@lib/api"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+interface ChatSidebarProps {
+ formData: {
+ twitter: string
+ linkedin: string
+ description: string
+ otherLinks: string[]
+ } | null
+}
+
+export function ChatSidebar({ formData }: ChatSidebarProps) {
+ const [message, setMessage] = useState("")
+ const [isChatOpen, setIsChatOpen] = useState(true)
+ const [messages, setMessages] = useState<
+ {
+ message: string
+ type?: "formData" | "exa" | "memory" | "waiting"
+ memories?: {
+ url: string
+ title: string
+ description: string
+ fullContent: string
+ }[]
+ url?: string
+ title?: string
+ description?: string
+ }[]
+ >([])
+ const [isLoading, setIsLoading] = useState(false)
+ const displayedMemoriesRef = useRef<Set<string>>(new Set())
+
+ const handleSend = () => {
+ console.log("Message:", message)
+ setMessage("")
+ }
+
+ const handleKeyDown = (e: React.KeyboardEvent) => {
+ if (e.key === "Enter" && !e.shiftKey) {
+ e.preventDefault()
+ handleSend()
+ }
+ }
+
+ const toggleChat = () => {
+ setIsChatOpen(!isChatOpen)
+ }
+
+ const pollForMemories = useCallback(
+ async (documentIds: string[]) => {
+ const maxAttempts = 30 // 30 attempts * 3 seconds = 90 seconds max
+ const pollInterval = 3000 // 3 seconds
+
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
+ try {
+ const response = await $fetch("@get/documents/:id", {
+ params: { id: documentIds[0] ?? "" },
+ disableValidation: true,
+ })
+
+ console.log("response", response)
+
+ if (response.data) {
+ const document = response.data
+
+ if (document.memories && document.memories.length > 0) {
+ const newMemories: {
+ url: string
+ title: string
+ description: string
+ fullContent: string
+ }[] = []
+
+ document.memories.forEach(
+ (memory: { memory: string; title?: string }) => {
+ if (!displayedMemoriesRef.current.has(memory.memory)) {
+ displayedMemoriesRef.current.add(memory.memory)
+ newMemories.push({
+ url: document.url || "",
+ title: memory.title || document.title || "Memory",
+ description: memory.memory || "",
+ fullContent: memory.memory || "",
+ })
+ }
+ },
+ )
+
+ if (newMemories.length > 0 && messages.length < 10) {
+ setMessages((prev) => [
+ ...prev,
+ {
+ message: newMemories
+ .map((memory) => memory.description)
+ .join("\n"),
+ type: "memory" as const,
+ memories: newMemories,
+ },
+ ])
+ }
+ }
+
+ if (document.memories && document.memories.length > 0) {
+ break
+ }
+ }
+
+ await new Promise((resolve) => setTimeout(resolve, pollInterval))
+ } catch (error) {
+ console.warn("Error polling for memories:", error)
+ await new Promise((resolve) => setTimeout(resolve, pollInterval))
+ }
+ }
+ },
+ [messages.length],
+ )
+
+ useEffect(() => {
+ if (!formData) return
+
+ const urls = collectValidUrls(formData.linkedin, formData.otherLinks)
+
+ console.log("urls", urls)
+
+ const processContent = async () => {
+ setIsLoading(true)
+
+ try {
+ const documentIds: string[] = []
+
+ // Step 1: Fetch content from Exa if URLs exist
+ if (urls.length > 0) {
+ const response = await fetch("/api/exa/fetch-content", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ urls }),
+ })
+ const { results } = await response.json()
+ console.log("results", results)
+
+ // Create documents from Exa results
+ for (const result of results) {
+ try {
+ const docResponse = await $fetch("@post/documents", {
+ body: {
+ content: result.text || result.description || "",
+ containerTags: ["sm_project_default"],
+ metadata: {
+ sm_source: "consumer",
+ exa_url: result.url,
+ exa_title: result.title,
+ },
+ },
+ })
+
+ if (docResponse.data?.id) {
+ documentIds.push(docResponse.data.id)
+ }
+ } catch (error) {
+ console.warn("Error creating document:", error)
+ }
+ }
+ }
+
+ // Step 2: Create document from description if it exists
+ if (formData.description?.trim()) {
+ try {
+ const descDocResponse = await $fetch("@post/documents", {
+ body: {
+ content: formData.description,
+ containerTags: ["sm_project_default"],
+ metadata: {
+ sm_source: "consumer",
+ description_source: "user_input",
+ },
+ },
+ })
+
+ if (descDocResponse.data?.id) {
+ documentIds.push(descDocResponse.data.id)
+ }
+ } catch (error) {
+ console.warn("Error creating description document:", error)
+ }
+ }
+
+ // Step 3: Poll for memories or show form data
+ if (documentIds.length > 0) {
+ await pollForMemories(documentIds)
+ } else {
+ // No documents created, show form data or waiting
+ const formDataMessages = []
+
+ if (formData.twitter) {
+ formDataMessages.push({
+ message: `Twitter: ${formData.twitter}`,
+ url: formData.twitter,
+ title: "Twitter Profile",
+ description: `Twitter: ${formData.twitter}`,
+ type: "formData" as const,
+ })
+ }
+
+ if (formData.linkedin) {
+ formDataMessages.push({
+ message: `LinkedIn: ${formData.linkedin}`,
+ url: formData.linkedin,
+ title: "LinkedIn Profile",
+ description: `LinkedIn: ${formData.linkedin}`,
+ type: "formData" as const,
+ })
+ }
+
+ if (formData.otherLinks.length > 0) {
+ formData.otherLinks.forEach((link) => {
+ formDataMessages.push({
+ message: `Link: ${link}`,
+ url: link,
+ title: "Other Link",
+ description: `Link: ${link}`,
+ type: "formData" as const,
+ })
+ })
+ }
+
+ const waitingMessage = {
+ message: "Waiting for your input",
+ url: "",
+ title: "",
+ description: "Waiting for your input",
+ type: "waiting" as const,
+ }
+
+ setMessages([...formDataMessages, waitingMessage])
+ }
+ } catch (error) {
+ console.warn("Error processing content:", error)
+
+ const waitingMessage = {
+ message: "Waiting for your input",
+ url: "",
+ title: "",
+ description: "Waiting for your input",
+ type: "waiting" as const,
+ }
+
+ setMessages([waitingMessage])
+ }
+ setIsLoading(false)
+ }
+
+ processContent()
+ }, [formData, pollForMemories])
+
+ return (
+ <AnimatePresence mode="wait">
+ {!isChatOpen ? (
+ <motion.div
+ key="closed"
+ className={cn(
+ "absolute top-0 right-0 flex items-start justify-start m-4",
+ dmSansClassName(),
+ )}
+ layoutId="chat-toggle-button"
+ >
+ <motion.button
+ onClick={toggleChat}
+ className="flex items-center gap-2 rounded-full px-3 py-1.5 text-xs font-medium border border-[#17181A] text-white cursor-pointer"
+ style={{
+ background: "linear-gradient(180deg, #0A0E14 0%, #05070A 100%)",
+ }}
+ >
+ <NovaOrb size={24} className="blur-none! z-10" />
+ Chat with Nova
+ </motion.button>
+ </motion.div>
+ ) : (
+ <motion.div
+ key="open"
+ className={cn(
+ "w-[450px] h-[calc(100vh-110px)] bg-[#0A0E14] backdrop-blur-md flex flex-col rounded-2xl m-4",
+ dmSansClassName(),
+ )}
+ initial={{ x: "100px", opacity: 0 }}
+ animate={{ x: 0, opacity: 1 }}
+ exit={{ x: "100px", opacity: 0 }}
+ transition={{ duration: 0.3, ease: "easeOut", bounce: 0 }}
+ >
+ <motion.button
+ onClick={toggleChat}
+ className="absolute top-4 right-4 flex items-center gap-2 rounded-full p-2 text-xs text-white cursor-pointer"
+ style={{
+ background: "linear-gradient(180deg, #0A0E14 0%, #05070A 100%)",
+ }}
+ layoutId="chat-toggle-button"
+ >
+ <PanelRightCloseIcon className="size-4" />
+ Close chat
+ </motion.button>
+ <div className="flex-1 flex flex-col px-4 space-y-3 pb-4 justify-end">
+ {messages.map((msg, i) => (
+ <div
+ key={`message-${i}-${msg.message}`}
+ className="flex items-start gap-2"
+ >
+ {msg.type === "waiting" ? (
+ <div className="flex items-center gap-2 text-white/50">
+ <NovaOrb size={30} className="blur-none!" />
+ <span className="text-sm">{msg.message}</span>
+ </div>
+ ) : (
+ <>
+ <div
+ className={cn(
+ "flex flex-col items-center justify-center w-[30px] h-full",
+ i !== 0 && "",
+ )}
+ >
+ {i === 0 && (
+ <div className="w-3 h-3 bg-[#293952]/40 rounded-full mb-1" />
+ )}
+ <div className="w-px flex-1 bg-[#293952]/40" />
+ </div>
+ {msg.type === "memory" && (
+ <div className="space-y-2 w-full max-h-60 overflow-y-auto scrollbar-thin">
+ {msg.memories?.map((memory) => (
+ <div
+ key={memory.url + memory.title}
+ className="bg-[#293952]/40 rounded-lg p-2 px-3 space-y-2"
+ >
+ {memory.title && (
+ <h3
+ className="text-sm font-medium"
+ style={{
+ background:
+ "linear-gradient(90deg, #369BFD 0%, #36FDFD 30%, #36FDB5 100%)",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ backgroundClip: "text",
+ }}
+ >
+ {memory.title}
+ </h3>
+ )}
+ {memory.url && (
+ <a
+ href={memory.url}
+ target="_blank"
+ rel="noopener noreferrer"
+ className="text-xs text-blue-400 hover:underline break-all"
+ >
+ {memory.url}
+ </a>
+ )}
+ {memory.description && (
+ <p className="text-xs text-white/50 mt-1">
+ {memory.description}
+ </p>
+ )}
+ </div>
+ ))}
+ </div>
+ )}
+ </>
+ )}
+ </div>
+ ))}
+ {messages.length === 0 && !isLoading && !formData && (
+ <div className="flex items-center gap-2 text-white/50">
+ <NovaOrb size={28} className="blur-none!" />
+ <span className="text-sm">Waiting for your input</span>
+ </div>
+ )}
+ {isLoading && (
+ <div className="flex items-center gap-2 text-foreground/50">
+ <NovaOrb size={28} className="blur-none!" />
+ <span className="text-sm">Fetching your memories...</span>
+ </div>
+ )}
+ </div>
+
+ <div className="p-4">
+ <form
+ className="flex flex-col gap-3 bg-[#0D121A] rounded-xl p-2 relative"
+ onSubmit={(e) => {
+ e.preventDefault()
+ if (message.trim()) {
+ handleSend()
+ }
+ }}
+ >
+ <input
+ value={message}
+ onChange={(e) => setMessage(e.target.value)}
+ onKeyDown={handleKeyDown}
+ placeholder="Chat with your Supermemory"
+ className="w-full text-white placeholder:text-white/20 rounded-sm outline-none resize-none text-base leading-relaxed bg-transparent px-2 h-10"
+ />
+ <div className="flex justify-end absolute bottom-3 right-2">
+ <Button
+ type="submit"
+ disabled={!message.trim()}
+ className="text-white/20 hover:text-white disabled:opacity-50 disabled:cursor-not-allowed rounded-xl transition-all"
+ size="icon"
+ >
+ <SendIcon className="size-4" />
+ </Button>
+ </div>
+ </form>
+ </div>
+ </motion.div>
+ )}
+ </AnimatePresence>
+ )
+}
diff --git a/apps/web/app/new/onboarding/setup/header.tsx b/apps/web/app/new/onboarding/setup/header.tsx
new file mode 100644
index 00000000..4981c6aa
--- /dev/null
+++ b/apps/web/app/new/onboarding/setup/header.tsx
@@ -0,0 +1,47 @@
+import { motion } from "motion/react"
+import { Logo } from "@ui/assets/Logo"
+import { useAuth } from "@lib/auth-context"
+import { useEffect, useState } from "react"
+import { Avatar, AvatarFallback, AvatarImage } from "@ui/components/avatar"
+
+export function SetupHeader() {
+ const { user } = useAuth()
+ const [name, setName] = useState<string>("")
+
+ useEffect(() => {
+ const storedName =
+ localStorage.getItem("username") || localStorage.getItem("userName") || ""
+ setName(storedName)
+ }, [])
+
+ const userName = name ? `${name.split(" ")[0]}'s` : "My"
+
+ return (
+ <motion.div
+ className="flex p-6 justify-between items-center"
+ initial={{ opacity: 0, y: -10 }}
+ animate={{ opacity: 1, y: 0 }}
+ transition={{ duration: 0.6, ease: "easeOut" }}
+ >
+ <div className="flex items-center z-10!">
+ <Logo className="h-7" />
+ {name && (
+ <div className="flex flex-col items-start justify-center ml-2">
+ <p className="text-[#8B8B8B] text-[11px] leading-tight">
+ {userName}
+ </p>
+ <p className="text-white font-bold text-xl leading-none -mt-1">
+ supermemory
+ </p>
+ </div>
+ )}
+ </div>
+ {user && (
+ <Avatar className="border border-border h-8 w-8 md:h-10 md:w-10 z-10!">
+ <AvatarImage src={user?.image ?? ""} />
+ <AvatarFallback>{user?.name?.charAt(0)}</AvatarFallback>
+ </Avatar>
+ )}
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/setup/integrations-step.tsx b/apps/web/app/new/onboarding/setup/integrations-step.tsx
new file mode 100644
index 00000000..ff1ce96f
--- /dev/null
+++ b/apps/web/app/new/onboarding/setup/integrations-step.tsx
@@ -0,0 +1,181 @@
+"use client"
+
+import { useState } from "react"
+import { Button } from "@ui/components/button"
+import { MCPDetailView } from "@/components/new/mcp-modal/mcp-detail-view"
+import { XBookmarksDetailView } from "@/components/x-bookmarks-detail-view"
+import { useRouter } from "next/navigation"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import { useOnboardingStorage } from "@hooks/use-onboarding-storage"
+
+const integrationCards = [
+ {
+ title: "Capture",
+ description: "Add the Chrome extension for one-click saves",
+ icon: (
+ <div className="rounded-full flex items-center justify-center">
+ <img
+ src="/onboarding/chrome.png"
+ alt="Chrome"
+ className="w-20 h-auto"
+ />
+ </div>
+ ),
+ },
+ {
+ title: "Connect to AI",
+ description: "Set up once and use your memory in Cursor, Claude, etc",
+ icon: (
+ <div className="rounded flex items-center justify-center">
+ <img src="/onboarding/mcp.png" alt="MCP" className="size-28 h-auto" />
+ </div>
+ ),
+ },
+ {
+ title: "Connect",
+ description: "Link Notion, Google Drive, or OneDrive to import your docs",
+ icon: (
+ <div className="rounded flex items-center justify-center">
+ <img
+ src="/onboarding/connectors.png"
+ alt="Connectors"
+ className="w-20 h-auto"
+ />
+ </div>
+ ),
+ },
+ {
+ title: "Import",
+ description:
+ "Bring in X/Twitter bookmarks, and turn them into useful memories",
+ icon: (
+ <div className="rounded flex items-center justify-center">
+ <img src="/onboarding/x.png" alt="X" className="size-14" />
+ </div>
+ ),
+ },
+]
+
+export function IntegrationsStep() {
+ const router = useRouter()
+ const [selectedCard, setSelectedCard] = useState<string | null>(null)
+ const { markOnboardingCompleted } = useOnboardingStorage()
+
+ const handleContinue = () => {
+ markOnboardingCompleted()
+ router.push("/new")
+ }
+
+ if (selectedCard === "Connect to AI") {
+ return <MCPDetailView onBack={() => setSelectedCard(null)} />
+ }
+ if (selectedCard === "Import") {
+ return <XBookmarksDetailView onBack={() => setSelectedCard(null)} />
+ }
+ return (
+ <div className="flex flex-col items-center justify-center h-full p-8">
+ <div className="text-center mb-6 flex flex-col items-center justify-center space-y-2">
+ <h1 className="text-white text-[32px] font-medium">
+ Build your personal memory
+ </h1>
+ <p
+ className={cn(
+ "text-white text-sm opacity-60 max-w-xs",
+ dmSansClassName(),
+ )}
+ >
+ Your supermemory comes alive when you <br /> capture and connect
+ what's important
+ </p>
+ </div>
+
+ <div className="grid grid-cols-2 gap-3 max-w-lg w-full mb-12">
+ {integrationCards.map((card) => {
+ const isClickable =
+ card.title === "Connect to AI" ||
+ card.title === "Capture" ||
+ card.title === "Import"
+
+ if (isClickable) {
+ return (
+ <button
+ key={card.title}
+ type="button"
+ className={cn(
+ "bg-[#080B0F] relative rounded-lg p-3 hover:border-[#3374FF] hover:border-[0.1px] transition-colors duration-300 border-[0.1px] border-[#0D121A] cursor-pointer text-left w-full hover:bg-[url('/onboarding/bg-gradient-1.png')] hover:bg-[length:175%_auto] hover:bg-[center_top_2rem] hover:bg-no-repeat",
+ "hover:border-b-0 border-b-0",
+ )}
+ onClick={() => {
+ if (card.title === "Capture") {
+ window.open(
+ "https://chromewebstore.google.com/detail/supermemory/afpgkkipfdpeaflnpoaffkcankadgjfc",
+ "_blank",
+ )
+ } else {
+ setSelectedCard(card.title)
+ }
+ }}
+ >
+ <div className="flex-1 mt-10">
+ <h3 className="text-white text-sm font-medium">
+ {card.title}
+ </h3>
+ <p
+ className={cn(
+ "text-[#8B8B8B] text-xs leading-relaxed",
+ dmSansClassName(),
+ )}
+ >
+ {card.description}
+ </p>
+ </div>
+ <div className="absolute top-0 right-0">{card.icon}</div>
+ </button>
+ )
+ }
+
+ return (
+ <div
+ key={card.title}
+ className={cn(
+ "bg-[#080B0F] relative rounded-lg p-3 hover:border-[#3374FF] hover:border-[0.1px] transition-colors duration-300 border-[0.1px] border-[#0D121A] hover:bg-[url('/onboarding/bg-gradient-1.png')] hover:bg-[length:175%_auto] hover:bg-[center_top_2rem] hover:bg-no-repeat",
+ "hover:border-b-0 border-b-0",
+ )}
+ >
+ <div className="flex-1 mt-10">
+ <h3 className="text-white text-sm font-medium">{card.title}</h3>
+ <p
+ className={cn(
+ "text-[#8B8B8B] text-xs leading-relaxed",
+ dmSansClassName(),
+ )}
+ >
+ {card.description}
+ </p>
+ </div>
+ <div className="absolute top-0 right-0">{card.icon}</div>
+ </div>
+ )
+ })}
+ </div>
+
+ <div className="flex justify-between w-full max-w-4xl">
+ <Button
+ variant="link"
+ className="text-white hover:text-gray-300 hover:no-underline cursor-pointer"
+ onClick={() => router.push("/new/onboarding?flow=setup&step=relatable")}
+ >
+ ← Back
+ </Button>
+ <Button
+ variant="link"
+ className="text-white hover:text-gray-300 hover:no-underline cursor-pointer"
+ onClick={handleContinue}
+ >
+ Continue →
+ </Button>
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/setup/relatable-question.tsx b/apps/web/app/new/onboarding/setup/relatable-question.tsx
new file mode 100644
index 00000000..c853985d
--- /dev/null
+++ b/apps/web/app/new/onboarding/setup/relatable-question.tsx
@@ -0,0 +1,159 @@
+"use client"
+
+import { useState } from "react"
+import { motion, AnimatePresence } from "motion/react"
+import { Button } from "@ui/components/button"
+import { useRouter } from "next/navigation"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+const relatableOptions = [
+ {
+ emoji: "😔",
+ text: "I always forget what I save in my twitter bookmarks",
+ },
+ {
+ emoji: "😭",
+ text: "Going through e-books manually is so tedious",
+ },
+ {
+ emoji: "🥲",
+ text: "I always have to feed every AI app with my data",
+ },
+ {
+ emoji: "😵‍💫",
+ text: "Referring meeting notes makes my AI chat hallucinate",
+ },
+ {
+ emoji: "🫤",
+ text: "I save nothing on my browser, it's just useless",
+ },
+]
+
+export function RelatableQuestion() {
+ const router = useRouter()
+ const [selectedOptions, setSelectedOptions] = useState<number[]>([])
+
+ const handleContinueOrSkip = () => {
+ router.push("/new/onboarding?flow=setup&step=integrations")
+ }
+
+ return (
+ <motion.div
+ className="flex flex-col items-center justify-center h-full"
+ initial={{ opacity: 0, y: 20 }}
+ animate={{ opacity: 1, y: 0 }}
+ exit={{ opacity: 0, y: -20 }}
+ transition={{ duration: 0.6 }}
+ >
+ <motion.h1
+ className="text-white text-[32px] font-medium mb-6 text-center"
+ initial={{ opacity: 0, y: 20 }}
+ animate={{ opacity: 1, y: 0 }}
+ transition={{ duration: 0.6, delay: 0.2 }}
+ >
+ Which of these sound most relatable?
+ </motion.h1>
+
+ <div
+ className={cn(
+ "flex flex-wrap justify-center gap-4 max-w-3xl",
+ dmSansClassName(),
+ )}
+ >
+ {relatableOptions.map((option, index) => (
+ <div
+ key={option.text}
+ className={cn(
+ "rounded-lg max-w-[140px] min-h-[159px] transition-all duration-300",
+ selectedOptions.includes(index)
+ ? "p-px bg-linear-to-b from-[#3374FF] to-[#1A63FF00]"
+ : "p-0 border border-[#0D121A] hover:border-[#4C608B66]",
+ )}
+ >
+ <button
+ className={`
+ group relative w-full h-full rounded-lg p-2 cursor-pointer transition-all duration-300 overflow-hidden
+ bg-[#080B0F] hover:bg-no-repeat
+ `}
+ onClick={() => {
+ setSelectedOptions((prev) =>
+ prev.includes(index)
+ ? prev.filter((i) => i !== index)
+ : [...prev, index],
+ )
+ }}
+ onKeyDown={(e) => {
+ if (e.key === "Enter" || e.key === " ") {
+ e.preventDefault()
+ setSelectedOptions((prev) =>
+ prev.includes(index)
+ ? prev.filter((i) => i !== index)
+ : [...prev, index],
+ )
+ }
+ }}
+ type="button"
+ >
+ <AnimatePresence>
+ {selectedOptions.includes(index) && (
+ <motion.div
+ className="absolute inset-0 bg-[url('/onboarding/bg-gradient-1.png')] bg-size-[550%_auto] bg-top bg-no-repeat"
+ initial={{ opacity: 0 }}
+ animate={{ opacity: 1 }}
+ exit={{ opacity: 0 }}
+ />
+ )}
+ </AnimatePresence>
+ <div className="relative flex flex-col items-start justify-between h-full">
+ <span
+ className={`text-2xl ${
+ selectedOptions.includes(index)
+ ? "opacity-100"
+ : "opacity-70 group-hover:opacity-100"
+ }`}
+ >
+ {option.emoji}
+ </span>
+ <p
+ className={`text-white text-sm leading-[135%] align-bottom text-left transition-opacity duration-300 ${
+ selectedOptions.includes(index)
+ ? "opacity-100"
+ : "opacity-50 group-hover:opacity-100"
+ }`}
+ >
+ {option.text}
+ </p>
+ </div>
+ </button>
+ </div>
+ ))}
+ </div>
+ <div className="flex gap-4 my-8">
+ <div key={selectedOptions.length === 0 ? "skip" : "continue"}>
+ <Button
+ className={cn(
+ "font-medium text-white hover:no-underline cursor-pointer",
+ selectedOptions.length !== 0 ? "rounded-xl" : "",
+ )}
+ variant={selectedOptions.length !== 0 ? "onboarding" : "link"}
+ size="lg"
+ onClick={handleContinueOrSkip}
+ style={
+ selectedOptions.length !== 0
+ ? {
+ background:
+ "linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ }
+ : undefined
+ }
+ >
+ {selectedOptions.length === 0
+ ? "Skip for now →"
+ : "Remember this →"}
+ </Button>
+ </div>
+ </div>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/continue-step.tsx b/apps/web/app/new/onboarding/welcome/continue-step.tsx
new file mode 100644
index 00000000..eefab753
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/continue-step.tsx
@@ -0,0 +1,45 @@
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { Button } from "@ui/components/button"
+import { motion } from "motion/react"
+import { useRouter } from "next/navigation"
+
+export function ContinueStep() {
+ const router = useRouter()
+
+ const handleContinue = () => {
+ router.push("/new/onboarding?flow=welcome&step=features")
+ }
+
+ return (
+ <motion.div
+ className="text-center"
+ initial={{ opacity: 0, y: 0, scale: 0.9 }}
+ animate={{ opacity: 1, y: 0, scale: 1 }}
+ exit={{ opacity: 0, y: 0, scale: 0.9 }}
+ transition={{ duration: 1, ease: "easeOut" }}
+ layout
+ >
+ <p
+ className={cn(
+ "text-[#8A8A8A] text-sm mb-6 max-w-sm",
+ dmSansClassName(),
+ )}
+ >
+ I'm built with Supermemory's super fast memory API,
+ <br /> so you never have to worry about forgetting <br /> what matters
+ across your AI apps.
+ </p>
+ <Button
+ variant="onboarding"
+ onClick={handleContinue}
+ style={{
+ background: "linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ width: "147px",
+ }}
+ >
+ Continue →
+ </Button>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/features-step.tsx b/apps/web/app/new/onboarding/welcome/features-step.tsx
new file mode 100644
index 00000000..6d15e2f8
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/features-step.tsx
@@ -0,0 +1,98 @@
+import { motion } from "motion/react"
+import { Button } from "@ui/components/button"
+import { useRouter } from "next/navigation"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+export function FeaturesStep() {
+ const router = useRouter()
+
+ const handleContinue = () => {
+ router.push("/new/onboarding?flow=welcome&step=memories")
+ }
+ return (
+ <motion.div
+ initial={{ opacity: 0, y: 40 }}
+ animate={{ opacity: 1, y: 0 }}
+ transition={{ duration: 0.6, ease: "easeOut", delay: 0.3 }}
+ className="text-center max-w-88 space-y-6"
+ layout
+ >
+ <h2 className="text-white text-[32px] font-medium leading-[110%]">
+ What I can do for you
+ </h2>
+
+ <div className={cn("space-y-4 mb-[24px] mx-4", dmSansClassName())}>
+ <div className="flex items-start space-x-2">
+ <div className="w-14 h-14 rounded-lg flex items-center justify-center shrink-0">
+ <img
+ src="/onboarding/human-brain.png"
+ alt="Brain icon"
+ className="w-14 h-14"
+ />
+ </div>
+ <div className="text-left">
+ <p className="text-white font-light">Remember every context</p>
+ <p className="text-[#8A8A8A] text-[14px]">
+ I keep track of what you've saved and shared with your
+ supermemory.
+ </p>
+ </div>
+ </div>
+
+ <div className="flex items-start space-x-2">
+ <div className="w-14 h-14 rounded-lg flex items-center justify-center shrink-0">
+ <img
+ src="/onboarding/search.png"
+ alt="Search icon"
+ className="w-14 h-14"
+ />
+ </div>
+ <div className="text-left">
+ <p className="text-white font-light">Find when you need it</p>
+ <p className="text-[#8A8A8A] text-[14px]">
+ I surface the right memories inside <br /> your supermemory,
+ superfast.
+ </p>
+ </div>
+ </div>
+
+ <div className="flex items-start space-x-2">
+ <div className="w-14 h-14 rounded-lg flex items-center justify-center shrink-0">
+ <img
+ src="/onboarding/plant.png"
+ alt="Growth icon"
+ className="w-14 h-14"
+ />
+ </div>
+ <div className="text-left">
+ <p className="text-white font-light">Grow with your supermemory</p>
+ <p className="text-[#8A8A8A] text-[14px]">
+ I learn and personalize over time, so every interaction feels
+ natural.
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <motion.div
+ animate={{
+ opacity: 1,
+ y: 0,
+ }}
+ transition={{ duration: 1, ease: "easeOut", delay: 1 }}
+ initial={{ opacity: 0, y: 10 }}
+ >
+ <Button
+ variant="onboarding"
+ style={{
+ background: "linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ }}
+ onClick={handleContinue}
+ >
+ Add memories →
+ </Button>
+ </motion.div>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/greeting-step.tsx b/apps/web/app/new/onboarding/welcome/greeting-step.tsx
new file mode 100644
index 00000000..744e3719
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/greeting-step.tsx
@@ -0,0 +1,23 @@
+import { motion } from "motion/react"
+
+interface GreetingStepProps {
+ name: string
+}
+
+export function GreetingStep({ name }: GreetingStepProps) {
+ const userName = name ? `${name.split(" ")[0]}` : ""
+ return (
+ <motion.div
+ className="text-center"
+ initial={{ opacity: 0, y: 0 }}
+ animate={{ opacity: 1, y: 0 }}
+ exit={{ opacity: 0, y: 0 }}
+ transition={{ duration: 1, ease: "easeOut" }}
+ layout
+ >
+ <h2 className="text-white text-[32px] font-medium mb-2">
+ Hi {userName}, I'm Nova
+ </h2>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/input-step.tsx b/apps/web/app/new/onboarding/welcome/input-step.tsx
new file mode 100644
index 00000000..077d4944
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/input-step.tsx
@@ -0,0 +1,96 @@
+import { motion } from "motion/react"
+import { LabeledInput } from "@ui/input/labeled-input"
+import { Button } from "@ui/components/button"
+
+interface InputStepProps {
+ name: string
+ setName: (name: string) => void
+ handleSubmit: () => void
+ isSubmitting: boolean
+}
+
+export function InputStep({
+ name,
+ setName,
+ handleSubmit,
+ isSubmitting,
+}: InputStepProps) {
+ return (
+ <motion.div
+ className="text-center min-w-[250px] flex flex-col"
+ style={{ gap: "24px" }}
+ initial={{
+ opacity: 0,
+ y: 10,
+ }}
+ animate={{
+ opacity: 1,
+ y: 0,
+ }}
+ exit={{
+ opacity: 0,
+ y: -10,
+ transition: {
+ duration: 0.5,
+ ease: "easeOut",
+ bounce: 0,
+ },
+ }}
+ transition={{
+ duration: 0.8,
+ ease: "easeOut",
+ delay: 1,
+ }}
+ layout
+ >
+ <h2 className="text-white text-[32px] font-medium leading-[110%]">
+ What should I call you?
+ </h2>
+ <div className="flex items-center w-full relative">
+ <LabeledInput
+ inputType="text"
+ inputPlaceholder="your name"
+ className="w-full flex-1"
+ inputProps={{
+ defaultValue: name,
+ onKeyDown: (e) => {
+ if (e.key === "Enter") {
+ handleSubmit()
+ }
+ },
+ className: "!text-white placeholder:!text-[#525966] !h-[40px] pl-4",
+ }}
+ onChange={(e) => setName((e.target as HTMLInputElement).value)}
+ style={{
+ background:
+ "linear-gradient(0deg, rgba(91, 126, 245, 0.04) 0%, rgba(91, 126, 245, 0.04) 100%)",
+ }}
+ />
+ <Button
+ className={`rounded-[8px] w-8 h-8 p-2 absolute right-1 border-[0.5px] border-[#161F2C] hover:cursor-pointer hover:scale-[0.95] active:scale-[0.95] transition-transform ${
+ isSubmitting ? "scale-[0.90]" : ""
+ }`}
+ size="icon"
+ onClick={handleSubmit}
+ style={{
+ background: "linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ }}
+ >
+ <svg
+ width="12"
+ height="9"
+ viewBox="0 0 12 9"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Next</title>
+ <path
+ d="M8.05099 9.60156L6.93234 8.49987L9.00014 6.44902L9.62726 6.04224L9.54251 5.788L8.79675 5.90665H0.0170898V4.31343H8.79675L9.54251 4.43207L9.62726 4.17783L9.00014 3.77105L6.93234 1.72021L8.05099 0.601562L11.9832 4.53377V5.68631L8.05099 9.60156Z"
+ fill="#FAFAFA"
+ />
+ </svg>
+ </Button>
+ </div>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/memories-step.tsx b/apps/web/app/new/onboarding/welcome/memories-step.tsx
new file mode 100644
index 00000000..4230f510
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/memories-step.tsx
@@ -0,0 +1,299 @@
+import { motion } from "motion/react"
+import { Button } from "@ui/components/button"
+import { useState } from "react"
+import { useRouter } from "next/navigation"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+interface MemoriesStepProps {
+ onSubmit: (data: {
+ twitter: string
+ linkedin: string
+ description: string
+ otherLinks: string[]
+ }) => void
+}
+
+type ValidationError = {
+ twitter: string | null
+ linkedin: string | null
+}
+
+export function MemoriesStep({ onSubmit }: MemoriesStepProps) {
+ const router = useRouter()
+ const [otherLinks, setOtherLinks] = useState([""])
+ const [twitterHandle, setTwitterHandle] = useState("")
+ const [linkedinProfile, setLinkedinProfile] = useState("")
+ const [description, setDescription] = useState("")
+ const [isSubmitting] = useState(false)
+ const [errors, setErrors] = useState<ValidationError>({
+ twitter: null,
+ linkedin: null,
+ })
+
+ const addOtherLink = () => {
+ if (otherLinks.length < 3) {
+ setOtherLinks([...otherLinks, ""])
+ }
+ }
+
+ const updateOtherLink = (index: number, value: string) => {
+ const updated = [...otherLinks]
+ updated[index] = value
+ setOtherLinks(updated)
+ }
+
+ const validateTwitterLink = (value: string): string | null => {
+ if (!value.trim()) return null
+
+ const normalized = value.trim().toLowerCase()
+ const isXDomain =
+ normalized.includes("x.com") || normalized.includes("twitter.com")
+
+ if (!isXDomain) {
+ return "share your X profile link"
+ }
+
+ // Check if it's a profile link (not a status/tweet link)
+ const profilePattern =
+ /^(https?:\/\/)?(www\.)?(x\.com|twitter\.com)\/[^\/]+$/
+ const statusPattern = /\/status\//i
+
+ if (statusPattern.test(normalized) || !profilePattern.test(normalized)) {
+ return "share your X profile link"
+ }
+
+ // Note: 404 validation would require a backend API endpoint
+ // Format validation is handled above
+ return null
+ }
+
+ const validateLinkedInLink = (value: string): string | null => {
+ if (!value.trim()) return null
+
+ const normalized = value.trim().toLowerCase()
+ const isLinkedInDomain = normalized.includes("linkedin.com")
+
+ if (!isLinkedInDomain) {
+ return "share your Linkedin profile link"
+ }
+
+ // Check if it's a profile link (should have /in/ or /pub/)
+ const profilePattern =
+ /^(https?:\/\/)?(www\.)?linkedin\.com\/(in|pub)\/[^\/]+/
+
+ if (!profilePattern.test(normalized)) {
+ return "share your Linkedin profile link"
+ }
+
+ // Note: 404 validation would require a backend API endpoint
+ // Format validation is handled above
+ return null
+ }
+
+ const handleTwitterChange = (value: string) => {
+ setTwitterHandle(value)
+ const error = validateTwitterLink(value)
+ setErrors((prev) => ({ ...prev, twitter: error }))
+ }
+
+ const handleLinkedInChange = (value: string) => {
+ setLinkedinProfile(value)
+ const error = validateLinkedInLink(value)
+ setErrors((prev) => ({ ...prev, linkedin: error }))
+ }
+
+ return (
+ <motion.div
+ initial={{ opacity: 0, y: 40 }}
+ animate={{ opacity: 1, y: 0 }}
+ transition={{ duration: 0.6, ease: "easeOut", delay: 0.3 }}
+ className="text-center w-full "
+ >
+ <h2 className="text-white text-[32px] font-medium mb-4 mt-[-36px]">
+ Let's add your memories
+ </h2>
+
+ <div className="space-y-4 max-w-[329px] mx-auto overflow-visible gap-4">
+ <div className="text-left gap-[6px] flex flex-col" id="x-twitter-field">
+ <label
+ htmlFor="twitter-handle"
+ className="text-white text-sm font-medium block pl-2"
+ >
+ X/Twitter
+ </label>
+ <div className="relative flex items-center">
+ <input
+ id="twitter-handle"
+ type="text"
+ placeholder="x.com/yourhandle"
+ value={twitterHandle}
+ onChange={(e) => handleTwitterChange(e.target.value)}
+ onBlur={() => {
+ if (twitterHandle.trim()) {
+ const error = validateTwitterLink(twitterHandle)
+ setErrors((prev) => ({ ...prev, twitter: error }))
+ }
+ }}
+ className={`w-full px-4 py-2 bg-[#070E1B] border rounded-xl text-white placeholder-onboarding focus:outline-none transition-colors h-[40px] ${
+ errors.twitter
+ ? "border-[#52596633] bg-[#290F0A]"
+ : "border-onboarding/20"
+ }`}
+ />
+ {errors.twitter && (
+ <div className="absolute left-full ml-3">
+ <div
+ className={cn(
+ "relative shrink-0 px-3 py-2 bg-[#290F0A] text-[#C73B1B] rounded-xl",
+ dmSansClassName(),
+ )}
+ >
+ <div className="absolute left-0.5 top-1/2 -translate-x-full -translate-y-1/2 w-0 h-0 border-t-[6px] border-b-[6px] border-r-8 border-t-transparent border-b-transparent border-[#290F0A]" />
+ <p className="text-xs whitespace-nowrap">{errors.twitter}</p>
+ </div>
+ </div>
+ )}
+ </div>
+ </div>
+
+ <div className="text-left gap-[6px] flex flex-col" id="linkedin-field">
+ <label
+ htmlFor="linkedin-profile"
+ className="text-white text-sm font-medium block pl-2"
+ >
+ LinkedIn
+ </label>
+ <div className="relative flex items-center">
+ <input
+ id="linkedin-profile"
+ type="text"
+ placeholder="linkedin.com/in/yourname"
+ value={linkedinProfile}
+ onChange={(e) => handleLinkedInChange(e.target.value)}
+ onBlur={() => {
+ if (linkedinProfile.trim()) {
+ const error = validateLinkedInLink(linkedinProfile)
+ setErrors((prev) => ({ ...prev, linkedin: error }))
+ }
+ }}
+ className={`w-full px-4 py-2 bg-[#070E1B] border rounded-xl text-white placeholder-onboarding focus:outline-none transition-colors h-[40px] ${
+ errors.linkedin
+ ? "border-[#52596633] bg-[#290F0A]"
+ : "border-onboarding/20"
+ }`}
+ />
+ {errors.linkedin && (
+ <div className="absolute left-full ml-3">
+ <div
+ className={cn(
+ "relative shrink-0 px-3 py-2 bg-[#290F0A] text-[#C73B1B] rounded-xl",
+ dmSansClassName(),
+ )}
+ >
+ <div className="absolute left-0.5 top-1/2 -translate-x-full -translate-y-1/2 w-0 h-0 border-t-[6px] border-b-[6px] border-r-8 border-t-transparent border-b-transparent border-[#290F0A]" />
+ <p className="text-xs whitespace-nowrap">{errors.linkedin}</p>
+ </div>
+ </div>
+ )}
+ </div>
+ </div>
+
+ <div
+ className="text-left gap-[6px] flex flex-col"
+ id="other-links-field"
+ >
+ <div className="flex items-center justify-between">
+ <label
+ htmlFor="other-links"
+ className="text-white text-sm font-medium pl-2"
+ >
+ Other links
+ </label>
+ <span className="text-onboarding text-[10px]">Upto 3</span>
+ </div>
+ <div className="flex flex-col gap-1.5">
+ {otherLinks.map((link, index) => (
+ <div
+ key={`other-link-${index}`}
+ className="flex items-center relative"
+ >
+ <input
+ id={`other-links-${index}`}
+ type="text"
+ placeholder="Add your website, GitHub, Notion..."
+ value={link}
+ onChange={(e) => updateOtherLink(index, e.target.value)}
+ className="flex-1 px-4 py-2 bg-[#070E1B] border border-onboarding/20 rounded-xl text-white placeholder-onboarding focus:outline-none focus:border-[#4A4A4A] transition-colors h-[40px]"
+ />
+ {index === otherLinks.length - 1 && otherLinks.length < 3 && (
+ <button
+ type="button"
+ onClick={(e) => {
+ e.preventDefault()
+ e.stopPropagation()
+ addOtherLink()
+ }}
+ className="size-8 m-1 absolute right-0 top-0 bg-black border border-[#161F2C] rounded-lg flex items-center justify-center text-white hover:bg-[#161F2C] transition-colors text-xl"
+ >
+ +
+ </button>
+ )}
+ </div>
+ ))}
+ </div>
+ </div>
+
+ <div
+ className="text-left gap-[6px] flex flex-col"
+ id="description-field"
+ >
+ <label
+ htmlFor="description"
+ className="text-white text-sm font-medium block pl-2"
+ >
+ What do you do? What do you like?
+ </label>
+ <textarea
+ id="description"
+ placeholder="Tell me the basics in your words. A few lines about your work, interests, etc."
+ value={description}
+ onChange={(e) => setDescription(e.target.value)}
+ rows={2}
+ className="w-full px-4 py-2 bg-[#070E1B] border border-onboarding/20 rounded-xl text-white placeholder-onboarding focus:outline-none focus:border-[#4A4A4A] transition-colors min-h-16"
+ />
+ </div>
+ </div>
+
+ <motion.div
+ animate={{
+ opacity: 1,
+ y: 0,
+ }}
+ transition={{ duration: 1, ease: "easeOut", delay: 1 }}
+ initial={{ opacity: 0, y: 10 }}
+ className="mt-[24px] pb-30"
+ >
+ <Button
+ variant="onboarding"
+ disabled={isSubmitting}
+ style={{
+ background: "linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ }}
+ onClick={() => {
+ const formData = {
+ twitter: twitterHandle,
+ linkedin: linkedinProfile,
+ description: description,
+ otherLinks: otherLinks.filter((l) => l.trim()),
+ }
+ onSubmit(formData)
+ router.push("/new/onboarding?flow=setup&step=relatable")
+ }}
+ >
+ {isSubmitting ? "Fetching..." : "Remember this →"}
+ </Button>
+ </motion.div>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/onboarding/welcome/welcome-step.tsx b/apps/web/app/new/onboarding/welcome/welcome-step.tsx
new file mode 100644
index 00000000..5c0d998f
--- /dev/null
+++ b/apps/web/app/new/onboarding/welcome/welcome-step.tsx
@@ -0,0 +1,16 @@
+import { motion } from "motion/react"
+
+export function WelcomeStep() {
+ return (
+ <motion.div
+ className="text-center"
+ initial={{ opacity: 0, y: 0 }}
+ animate={{ opacity: 1, y: 0 }}
+ exit={{ opacity: 0, y: 0 }}
+ transition={{ duration: 1, ease: "easeOut" }}
+ layout
+ >
+ <h2 className="text-white text-[32px] font-medium mb-2">Welcome to...</h2>
+ </motion.div>
+ )
+}
diff --git a/apps/web/app/new/page.tsx b/apps/web/app/new/page.tsx
new file mode 100644
index 00000000..6e4f2cd2
--- /dev/null
+++ b/apps/web/app/new/page.tsx
@@ -0,0 +1,57 @@
+"use client"
+
+import { useState } from "react"
+import { Header } from "@/components/new/header"
+import { ChatSidebar } from "@/components/new/chat"
+import { MemoriesGrid } from "@/components/new/memories-grid"
+import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background"
+import { AddDocumentModal } from "@/components/new/add-document"
+import { MCPModal } from "@/components/new/mcp-modal"
+import { HotkeysProvider } from "react-hotkeys-hook"
+import { useHotkeys } from "react-hotkeys-hook"
+import { AnimatePresence } from "framer-motion"
+
+export default function NewPage() {
+ const [isAddDocumentOpen, setIsAddDocumentOpen] = useState(false)
+ const [isMCPModalOpen, setIsMCPModalOpen] = useState(false)
+ useHotkeys("c", () => setIsAddDocumentOpen(true))
+ const [isChatOpen, setIsChatOpen] = useState(true)
+
+ return (
+ <HotkeysProvider>
+ <div className="h-screen overflow-hidden bg-black">
+ <AnimatedGradientBackground
+ topPosition="15%"
+ animateFromBottom={false}
+ />
+ <Header
+ onAddMemory={() => setIsAddDocumentOpen(true)}
+ onOpenMCP={() => setIsMCPModalOpen(true)}
+ />
+ <main className="relative">
+ <div key={`main-container-${isChatOpen}`} className="relative z-10">
+ <div className="flex flex-row h-[calc(100vh-90px)] relative">
+ <div className="flex-1 flex flex-col justify-start p-6 pr-0">
+ <MemoriesGrid isChatOpen={isChatOpen} />
+ </div>
+ <AnimatePresence mode="popLayout">
+ <ChatSidebar
+ isChatOpen={isChatOpen}
+ setIsChatOpen={setIsChatOpen}
+ />
+ </AnimatePresence>
+ </div>
+ </div>
+ </main>
+ <AddDocumentModal
+ isOpen={isAddDocumentOpen}
+ onClose={() => setIsAddDocumentOpen(false)}
+ />
+ <MCPModal
+ isOpen={isMCPModalOpen}
+ onClose={() => setIsMCPModalOpen(false)}
+ />
+ </div>
+ </HotkeysProvider>
+ )
+}
diff --git a/apps/web/app/new/settings/page.tsx b/apps/web/app/new/settings/page.tsx
new file mode 100644
index 00000000..fbb0bc08
--- /dev/null
+++ b/apps/web/app/new/settings/page.tsx
@@ -0,0 +1,243 @@
+"use client"
+import { Logo } from "@ui/assets/Logo"
+import { Avatar, AvatarFallback, AvatarImage } from "@ui/components/avatar"
+import { useAuth } from "@lib/auth-context"
+import { motion } from "motion/react"
+import NovaOrb from "@/components/nova/nova-orb"
+import { useState, useEffect, useRef } from "react"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import Account from "@/components/new/settings/account"
+import Integrations from "@/components/new/settings/integrations"
+import ConnectionsMCP from "@/components/new/settings/connections-mcp"
+import Support from "@/components/new/settings/support"
+import { useRouter } from "next/navigation"
+
+const TABS = ["account", "integrations", "connections", "support"] as const
+type SettingsTab = (typeof TABS)[number]
+
+type NavItem = {
+ id: SettingsTab
+ label: string
+ description: string
+ icon: React.ReactNode
+}
+
+const NAV_ITEMS: NavItem[] = [
+ {
+ id: "account",
+ label: "Account & Billing",
+ description: "Manage your profile, plan, usage and payments",
+ icon: (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="20"
+ height="20"
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ strokeWidth="2"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ aria-hidden="true"
+ >
+ <path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" />
+ <circle cx="12" cy="7" r="4" />
+ </svg>
+ ),
+ },
+ {
+ id: "integrations",
+ label: "Integrations",
+ description: "Save, sync and search memories across tools",
+ icon: (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="20"
+ height="20"
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ strokeWidth="2"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ aria-hidden="true"
+ >
+ <circle cx="12" cy="12" r="3" />
+ <path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83" />
+ </svg>
+ ),
+ },
+ {
+ id: "connections",
+ label: "Connections & MCP",
+ description: "Sync with Google Drive, Notion, OneDrive and MCP client",
+ icon: (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="20"
+ height="20"
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ strokeWidth="2"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ aria-hidden="true"
+ >
+ <path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z" />
+ </svg>
+ ),
+ },
+ {
+ id: "support",
+ label: "Support & Help",
+ description: "Find answers or share feedback. We're here to help.",
+ icon: (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="20"
+ height="20"
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ strokeWidth="2"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ aria-hidden="true"
+ >
+ <circle cx="12" cy="12" r="10" />
+ <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" />
+ <path d="M12 17h.01" />
+ </svg>
+ ),
+ },
+]
+
+function parseHashToTab(hash: string): SettingsTab {
+ const cleaned = hash.replace("#", "").toLowerCase()
+ return TABS.includes(cleaned as SettingsTab)
+ ? (cleaned as SettingsTab)
+ : "account"
+}
+
+export function UserSupermemory({ name }: { name: string }) {
+ return (
+ <motion.div
+ className="absolute inset-0 top-[-40px] flex items-center justify-center z-10"
+ initial={{ opacity: 0, y: 0 }}
+ animate={{ opacity: 1, y: 0 }}
+ exit={{ opacity: 0, y: 0 }}
+ transition={{ duration: 1, ease: "easeOut" }}
+ >
+ <Logo className="h-7 text-white" />
+ <div className="flex flex-col items-start justify-center ml-4 space-y-1">
+ <p className="text-white text-[15px] font-medium leading-none">
+ {name.split(" ")[0]}'s
+ </p>
+ <p className="text-white font-bold text-xl leading-none -mt-2">
+ supermemory
+ </p>
+ </div>
+ </motion.div>
+ )
+}
+
+export default function SettingsPage() {
+ const { user } = useAuth()
+ const [activeTab, setActiveTab] = useState<SettingsTab>("account")
+ const hasInitialized = useRef(false)
+ const router = useRouter()
+
+ useEffect(() => {
+ if (hasInitialized.current) return
+ hasInitialized.current = true
+
+ const hash = window.location.hash
+ const tab = parseHashToTab(hash)
+ setActiveTab(tab)
+
+ // If no hash or invalid hash, push #account
+ if (!hash || !TABS.includes(hash.replace("#", "") as SettingsTab)) {
+ window.history.pushState(null, "", "#account")
+ }
+ }, [])
+
+ useEffect(() => {
+ const handleHashChange = () => {
+ const tab = parseHashToTab(window.location.hash)
+ setActiveTab(tab)
+ }
+
+ window.addEventListener("hashchange", handleHashChange)
+ return () => window.removeEventListener("hashchange", handleHashChange)
+ }, [])
+ return (
+ <div className="h-screen flex flex-col overflow-hidden">
+ <header className="flex justify-between items-center px-6 py-3 shrink-0">
+ <button type="button" onClick={() => router.push("/new")} className="cursor-pointer">
+ <Logo className="h-7" />
+ </button>
+ <div className="flex items-center gap-2">
+ {user && (
+ <Avatar className="border border-border h-8 w-8 md:h-10 md:w-10">
+ <AvatarImage src={user?.image ?? ""} />
+ <AvatarFallback>{user?.name?.charAt(0)}</AvatarFallback>
+ </Avatar>
+ )}
+ </div>
+ </header>
+ <main className="max-w-2xl mx-auto space-x-12 flex justify-center pt-4 flex-1 min-h-0">
+ <div className="min-w-xs">
+ <motion.div
+ animate={{
+ scale: 1,
+ padding: 48,
+ paddingTop: 0,
+ }}
+ transition={{
+ duration: 0.8,
+ ease: "easeOut",
+ delay: 0.2,
+ }}
+ className="relative flex items-center justify-center"
+ >
+ <NovaOrb size={175} className="blur-[3px]!" />
+ <UserSupermemory name={user?.name ?? ""} />
+ </motion.div>
+ <nav className={cn("flex flex-col gap-2", dmSansClassName())}>
+ {NAV_ITEMS.map((item) => (
+ <button
+ key={item.id}
+ type="button"
+ onClick={() => {
+ window.location.hash = item.id
+ setActiveTab(item.id)
+ }}
+ className={`text-left p-4 rounded-xl transition-colors flex items-start gap-3 ${
+ activeTab === item.id
+ ? "bg-[#14161A] text-white shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]"
+ : "text-white/60 hover:text-white hover:bg-[#14161A] hover:shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]"
+ }`}
+ >
+ <span className="mt-0.5 shrink-0">{item.icon}</span>
+ <div className="flex flex-col gap-0.5">
+ <span className="font-medium">{item.label}</span>
+ <span className="text-sm text-white/50">
+ {item.description}
+ </span>
+ </div>
+ </button>
+ ))}
+ </nav>
+ </div>
+ <div className="flex flex-col gap-4 overflow-y-auto min-w-2xl [scrollbar-gutter:stable] pr-[17px]">
+ {activeTab === "account" && <Account />}
+ {activeTab === "integrations" && <Integrations />}
+ {activeTab === "connections" && <ConnectionsMCP />}
+ {activeTab === "support" && <Support />}
+ </div>
+ </main>
+ </div>
+ )
+}
diff --git a/apps/web/components/chat-loader.tsx b/apps/web/components/chat-loader.tsx
new file mode 100644
index 00000000..46746320
--- /dev/null
+++ b/apps/web/components/chat-loader.tsx
@@ -0,0 +1,228 @@
+"use client"
+
+import {
+ motion,
+ useMotionValue,
+ useTransform,
+ animate,
+ useReducedMotion,
+} from "motion/react"
+
+import { useEffect, useMemo } from "react"
+
+import * as flubber from "flubber"
+
+type ChatLoaderProps = {
+ size?: number
+ colorClassName?: string
+ label?: string
+ className?: string
+}
+
+const LEFT_PATHS = [
+ "M12.6984 9.02793V3.52344H10.6523V9.49591C10.6523 10.1302 10.9028 10.7395 11.3479 11.1883L16.5188 16.4032L17.9655 14.9441L14.1463 11.0926H19.0324V9.02914L12.6984 9.02793Z", // 0
+ "M12.6984 9.02793V3.52344H10.6523V9.49591C10.6523 10.1302 10.9028 10.7395 11.3479 11.1883L16.5188 16.4032L17.9655 14.9441L14.1463 11.0926H14.149L12.699 9.02914L12.6984 9.02793Z", // 1
+ "M12.6985 9.02793V3.52344H10.6524V9.49591C10.6524 10.1302 10.6516 10.7381 10.6532 11.0926L10.6524 16.4075H12.6985L12.6991 11.0926V9.02914L12.6985 9.02793Z", // 2
+ "M14.5653 7.14453V7.1485H10.6528V8.0394C10.6528 9.25237 10.6512 10.4147 10.6542 11.0925L10.6528 11.0887H14.5653L14.5664 11.0925V7.14684L14.5653 7.14453Z", // 3
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 4
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 5
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 6
+ "M19.0304 6.51562V6.51963H15.0776V7.41971C15.0776 8.64517 15.076 9.81944 15.0791 10.5043L15.0776 10.5004H19.0304L19.0315 10.5043V6.51796L19.0304 6.51562Z", // 7
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 8
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 9
+ "M19.0304 6.51562V6.51963H15.0776V7.41971C15.0776 8.64517 15.076 9.81944 15.0791 10.5043L15.0776 10.5004H19.0304L19.0315 10.5043V6.51796L19.0304 6.51562Z", // 10
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 11
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 12
+ "M19.0304 6.51562V6.51963H15.0776V7.41971C15.0776 8.64517 15.076 9.81944 15.0791 10.5043L15.0776 10.5004H19.0304L19.0315 10.5043V6.51796L19.0304 6.51562Z", // 13
+ "M19.0304 8.51562V8.51963H15.0776V9.41971C15.0776 10.6452 15.076 11.8194 15.0791 12.5043L15.0776 12.5004H19.0304L19.0315 12.5043V8.51796L19.0304 8.51562Z", // 14
+ "M14.5653 7.14453V7.1485H10.6528V8.0394C10.6528 9.25237 10.6512 10.4147 10.6542 11.0925L10.6528 11.0887H14.5653L14.5664 11.0925V7.14684L14.5653 7.14453Z", // 15
+ "M12.6985 9.02793V3.52344H10.6524V9.49591C10.6524 10.1302 10.6516 10.7381 10.6532 11.0926L10.6524 16.4075H12.6985L12.6991 11.0926V9.02914L12.6985 9.02793Z", // 16
+ "M12.6984 9.02793V3.52344H10.6523V9.49591C10.6523 10.1302 10.9028 10.7395 11.3479 11.1883L16.5188 16.4032L17.9655 14.9441L14.1463 11.0926H14.149L12.699 9.02914L12.6984 9.02793Z", // 17
+ "M12.6984 9.02793V3.52344H10.6523V9.49591C10.6523 10.1302 10.9028 10.7395 11.3479 11.1883L16.5188 16.4032L17.9655 14.9441L14.1463 11.0926H19.0324V9.02914L12.6984 9.02793Z", // 18
+]
+
+const MIDDLE_PATHS = [
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 0
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 1
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 2
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 3
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 4
+ "M1.96875 6.50391L1.96904 10.4909L1.9702 10.4833H5.92302V9.58685C5.92302 8.3613 5.92302 7.73358 5.92302 6.50459L1.96875 6.50391Z", // 5
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 6
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 7
+ "M1.96875 6.50391L1.96904 10.4909L1.9702 10.4833H5.92302V9.58685C5.92302 8.3613 5.92302 7.73358 5.92302 6.50459L1.96875 6.50391Z", // 8
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 9
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 10
+ "M1.96875 6.50391L1.96904 10.4909L1.9702 10.4833H5.92302V9.58685C5.92302 8.3613 5.92302 7.73358 5.92302 6.50459L1.96875 6.50391Z", // 11
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 12
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 13
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 14
+ "M1.96875 8.50391L1.96904 12.4909L1.9702 12.4833H5.92302V11.5868C5.92302 10.3613 5.92302 9.73358 5.92302 8.50459L1.96875 8.50391Z", // 15
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 16
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 17
+ "M6.60156 9.46875L6.60171 11.5326L6.60231 11.5286H8.64841V11.0646C8.64841 10.4302 8.64841 10.1053 8.64841 9.46911L6.60156 9.46875Z", // 18
+]
+
+const RIGHT_PATHS = [
+ "M3.03472 6.05861L6.8539 9.91021H1.96777V11.9737H8.3006V17.4781H10.3467V11.5057C10.3467 10.8713 10.0963 10.2621 9.65119 9.81327L4.48145 4.59961L3.03472 6.05861Z", // 0
+ "M3.03516 6.05861L6.85434 9.91021H6.85044L8.30044 11.9737L8.30104 17.4781H10.3471V11.5057C10.3471 10.8713 10.0967 10.2621 9.65162 9.81327L4.48188 4.59961L3.03516 6.05861Z", // 1
+ "M8.30024 4.58789L8.2998 9.91036L8.30039 11.9738L8.30099 17.4783H10.3471V11.5058C10.3471 10.8714 10.3471 10.5465 10.3471 9.91036V4.58789H8.30024Z", // 2
+ "M6.42383 9.9082L6.42412 13.8633L6.42527 13.8557H10.3464V12.9664C10.3464 11.7507 10.3464 11.128 10.3464 9.90888L6.42383 9.9082Z", // 3
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 4
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 5
+ "M8.52051 6.50391L8.5208 10.4909L8.52196 10.4833H12.4748V9.58685C12.4748 8.3613 12.4748 7.73358 12.4748 6.50459L8.52051 6.50391Z", // 6
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 7
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 8
+ "M8.52051 6.50391L8.5208 10.4909L8.52196 10.4833H12.4748V9.58685C12.4748 8.3613 12.4748 7.73358 12.4748 6.50459L8.52051 6.50391Z", // 9
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 10
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 11
+ "M8.52051 6.50391L8.5208 10.4909L8.52196 10.4833H12.4748V9.58685C12.4748 8.3613 12.4748 7.73358 12.4748 6.50459L8.52051 6.50391Z", // 12
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 13
+ "M8.52051 8.50391L8.5208 12.4909L8.52196 12.4833H12.4748V11.5868C12.4748 10.3613 12.4748 9.73358 12.4748 8.50459L8.52051 8.50391Z", // 14
+ "M6.42383 9.9082L6.42412 13.8633L6.42527 13.8557H10.3464V12.9664C10.3464 11.7507 10.3464 11.128 10.3464 9.90888L6.42383 9.9082Z", // 15
+ "M8.30024 4.58789L8.2998 9.91036L8.30039 11.9738L8.30099 17.4783H10.3471V11.5058C10.3471 10.8714 10.3471 10.5465 10.3471 9.91036V4.58789H8.30024Z", // 16
+ "M3.03516 6.05861L6.85434 9.91021H6.85044L8.30044 11.9737L8.30104 17.4781H10.3471V11.5057C10.3471 10.8713 10.0967 10.2621 9.65162 9.81327L4.48188 4.59961L3.03516 6.05861Z", // 17
+ "M3.03472 6.05861L6.8539 9.91021H1.96777V11.9737H8.3006V17.4781H10.3467V11.5057C10.3467 10.8713 10.0963 10.2621 9.65119 9.81327L4.48145 4.59961L3.03472 6.05861Z", // 18
+]
+
+export function ChatLoader({
+ size = 80,
+ colorClassName = "text-white",
+ label = "",
+ className = "",
+}: ChatLoaderProps) {
+ const prefersReducedMotion = useReducedMotion()
+
+ const t = useMotionValue(0)
+
+ const loopDuration = 3.6 // full cycle
+
+ const makeMultiInterp = (paths: string[]) => {
+ if (!paths || paths.length === 0) {
+ return (_t: number) => ""
+ }
+
+ if (paths.length === 1) {
+ const only = paths[0]
+ return (_t: number) => only
+ }
+
+ const options: { maxSegmentLength?: number } = { maxSegmentLength: 0.5 }
+
+ const interpolateFn = (flubber as any).interpolate as (
+ from: string,
+ to: string,
+ options?: { maxSegmentLength?: number },
+ ) => (t: number) => string
+
+ const segmentInterpolators: Array<(t: number) => string> = []
+
+ for (let i = 0; i < paths.length - 1; i++) {
+ segmentInterpolators.push(
+ interpolateFn(paths[i]!, paths[i + 1]!, options),
+ )
+ }
+
+ const segmentCount = segmentInterpolators.length
+
+ return (t: number) => {
+ if (t <= 0) return paths[0] || ""
+ if (t >= 1) return paths[paths.length - 1] || ""
+
+ const scaled = t * segmentCount
+ const segIndex = Math.min(Math.floor(scaled), segmentCount - 1)
+ const localT = scaled - segIndex
+
+ return segmentInterpolators[segIndex]!(localT)
+ }
+ }
+
+ const leftInterp = useMemo(
+ () => (LEFT_PATHS.length ? makeMultiInterp(LEFT_PATHS) : null),
+ [],
+ )
+
+ const middleInterp = useMemo(
+ () => (MIDDLE_PATHS.length ? makeMultiInterp(MIDDLE_PATHS) : null),
+ [],
+ )
+
+ const rightInterp = useMemo(
+ () => (RIGHT_PATHS.length ? makeMultiInterp(RIGHT_PATHS) : null),
+ [],
+ )
+
+ // Turn scalar t into d strings
+ const leftD = useTransform(t, (v) =>
+ leftInterp ? leftInterp(v) : LEFT_PATHS[0] || "",
+ )
+
+ const middleD = useTransform(t, (v) =>
+ middleInterp ? middleInterp(v) : MIDDLE_PATHS[0] || "",
+ )
+
+ const rightD = useTransform(t, (v) =>
+ rightInterp ? rightInterp(v) : RIGHT_PATHS[0] || "",
+ )
+
+ const middleOpacity = useTransform(t, (v) => {
+ if (v < 0.2) return 0
+ if (v < 0.3) return (v - 0.2) / 0.1 // fade in
+ if (v < 0.8) return 1
+ if (v < 0.9) return 1 - (v - 0.8) / 0.1 // fade out
+ return 0
+ })
+
+ useEffect(() => {
+ if (prefersReducedMotion) {
+ t.set(0)
+ return
+ }
+
+ const controls = animate(t, [0, 1], {
+ duration: loopDuration,
+ ease: "linear",
+ repeat: Number.POSITIVE_INFINITY,
+ repeatType: "loop",
+ repeatDelay: 0.4, // ⬅️ wait 2 seconds at the end before restarting
+ })
+
+ return () => controls.stop()
+ }, [t, prefersReducedMotion, loopDuration])
+
+ return (
+ <div
+ role="status"
+ aria-label={label}
+ className={`inline-flex flex-col items-center gap-2 ${className}`}
+ style={{ width: size }}
+ >
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 36 20"
+ width={size}
+ height={(size * 20) / 36}
+ className={colorClassName}
+ >
+ {leftInterp && <motion.path d={leftD as any} fill="currentColor" />}
+ {rightInterp && <motion.path d={rightD as any} fill="currentColor" />}
+ {middleInterp && (
+ <motion.path
+ d={middleD as any}
+ fill="currentColor"
+ style={{ opacity: middleOpacity as any }}
+ />
+ )}
+ </svg>
+
+ {label && (
+ <span
+ className="text-xs font-medium text-slate-400"
+ style={{ fontSize: size * 0.18 }}
+ >
+ {label}
+ </span>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/connect-ai-modal.tsx b/apps/web/components/connect-ai-modal.tsx
index be261cf9..942af105 100644
--- a/apps/web/components/connect-ai-modal.tsx
+++ b/apps/web/components/connect-ai-modal.tsx
@@ -31,6 +31,7 @@ import { toast } from "sonner"
import { z } from "zod/v4"
import { analytics } from "@/lib/analytics"
import { cn } from "@lib/utils"
+import type { Project } from "@repo/lib/types"
import { motion, AnimatePresence } from "framer-motion"
const clients = {
@@ -56,15 +57,6 @@ const mcpMigrationSchema = z.object({
),
})
-interface Project {
- id: string
- name: string
- containerTag: string
- createdAt: string
- updatedAt: string
- isExperimental?: boolean
-}
-
interface ConnectAIModalProps {
children: React.ReactNode
open?: boolean
diff --git a/apps/web/components/header.tsx b/apps/web/components/header.tsx
index d50e4517..161b4edd 100644
--- a/apps/web/components/header.tsx
+++ b/apps/web/components/header.tsx
@@ -82,7 +82,6 @@ export function Header({ onAddMemory }: { onAddMemory?: () => void }) {
}, [conversations])
useEffect(() => {
- console.log("searchParams", searchParams.get("mcp"))
const mcpParam = searchParams.get("mcp")
if (mcpParam === "manual") {
setMcpInitialClient("mcp-url")
diff --git a/apps/web/components/initial-header.tsx b/apps/web/components/initial-header.tsx
new file mode 100644
index 00000000..3861b95d
--- /dev/null
+++ b/apps/web/components/initial-header.tsx
@@ -0,0 +1,34 @@
+import { Logo } from "@ui/assets/Logo"
+import { Button } from "@ui/components/button"
+
+export function InitialHeader({
+ showUserSupermemory,
+ name,
+}: {
+ showUserSupermemory?: boolean
+ name?: string
+}) {
+ const userName = name ? `${name.split(" ")[0]}'s` : "My"
+ return (
+ <div className="flex p-6 justify-between items-center">
+ <div className="flex items-center z-10!">
+ <Logo className="h-7" />
+ {showUserSupermemory && (
+ <div className="flex flex-col items-start justify-center ml-2">
+ <p className="text-[#8B8B8B] text-[11px] leading-tight">{userName}</p>
+ <p className="text-white font-bold text-xl leading-none -mt-1">
+ supermemory
+ </p>
+ </div>
+ )}
+ </div>
+ <Button
+ variant="newDefault"
+ className="rounded-2xl text-base gap-1 h-11! z-10!"
+ size={"lg"}
+ >
+ Memory API <span className="text-xs mt-[4px]">↗</span>
+ </Button>
+ </div>
+ )
+}
diff --git a/apps/web/components/memories-utils/memory-detail.tsx b/apps/web/components/memories-utils/memory-detail.tsx
index dbbc51cb..e8f16af5 100644
--- a/apps/web/components/memories-utils/memory-detail.tsx
+++ b/apps/web/components/memories-utils/memory-detail.tsx
@@ -1,4 +1,4 @@
-import { getDocumentIcon } from "@/lib/document-icon"
+import { getDocumentIcon } from "@/components/new/document-modal/document-icon"
import {
Drawer,
DrawerContent,
diff --git a/apps/web/components/memory-list-view.tsx b/apps/web/components/memory-list-view.tsx
index e6dd09b1..6f24d1be 100644
--- a/apps/web/components/memory-list-view.tsx
+++ b/apps/web/components/memory-list-view.tsx
@@ -27,7 +27,7 @@ import { useDeleteDocument } from "@lib/queries"
import { useProject } from "@/stores"
import { MemoryDetail } from "./memories-utils/memory-detail"
-import { getDocumentIcon } from "@/lib/document-icon"
+import { getDocumentIcon } from "@/components/new/document-modal/document-icon"
import { formatDate, getSourceUrl } from "./memories-utils"
type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
diff --git a/apps/web/components/new/add-document/connections.tsx b/apps/web/components/new/add-document/connections.tsx
new file mode 100644
index 00000000..2ba6513f
--- /dev/null
+++ b/apps/web/components/new/add-document/connections.tsx
@@ -0,0 +1,408 @@
+"use client"
+
+import { $fetch } from "@lib/api"
+import { fetchConnectionsFeature } from "@repo/lib/queries"
+import type { ConnectionResponseSchema } from "@repo/validation/api"
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
+import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons"
+import { useCustomer } from "autumn-js/react"
+import { Check, Loader, Trash2, Zap } from "lucide-react"
+import { useEffect, useState } from "react"
+import { toast } from "sonner"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { Button } from "@ui/components/button"
+
+type Connection = z.infer<typeof ConnectionResponseSchema>
+
+type ConnectorProvider = "google-drive" | "notion" | "onedrive"
+
+const CONNECTORS: Record<
+ ConnectorProvider,
+ {
+ title: string
+ description: string
+ icon: React.ComponentType<{ className?: string }>
+ }
+> = {
+ "google-drive": {
+ title: "Google Drive",
+ description: "Connect your Google docs, sheets and slides",
+ icon: GoogleDrive,
+ },
+ notion: {
+ title: "Notion",
+ description: "Import your Notion pages and databases",
+ icon: Notion,
+ },
+ onedrive: {
+ title: "OneDrive",
+ description: "Access your Microsoft Office documents",
+ icon: OneDrive,
+ },
+} as const
+
+interface ConnectContentProps {
+ selectedProject: string
+}
+
+export function ConnectContent({ selectedProject }: ConnectContentProps) {
+ const queryClient = useQueryClient()
+ const autumn = useCustomer()
+ const [isProUser, setIsProUser] = useState(false)
+ const [connectingProvider, setConnectingProvider] =
+ useState<ConnectorProvider | null>(null)
+
+ // Check Pro status
+ useEffect(() => {
+ if (!autumn.isLoading) {
+ setIsProUser(
+ autumn.customer?.products.some(
+ (product) => product.id === "consumer_pro",
+ ) ?? false,
+ )
+ }
+ }, [autumn.isLoading, autumn.customer])
+
+ // Check connections feature limits
+ const { data: connectionsCheck } = fetchConnectionsFeature(
+ autumn,
+ !autumn.isLoading,
+ )
+ const connectionsUsed = connectionsCheck?.balance ?? 0
+ const connectionsLimit = connectionsCheck?.included_usage ?? 0
+ const canAddConnection = connectionsUsed < connectionsLimit
+
+ // Fetch connections
+ const { data: connections = [], error: connectionsError } = useQuery({
+ queryKey: ["connections"],
+ queryFn: async () => {
+ const response = await $fetch("@post/connections/list", {
+ body: {
+ containerTags: [],
+ },
+ })
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to load connections")
+ }
+
+ return response.data as Connection[]
+ },
+ staleTime: 30 * 1000,
+ refetchInterval: 60 * 1000,
+ refetchIntervalInBackground: true,
+ })
+
+ // Handle connection errors
+ useEffect(() => {
+ if (connectionsError) {
+ toast.error("Failed to load connections", {
+ description:
+ connectionsError instanceof Error
+ ? connectionsError.message
+ : "Unknown error",
+ })
+ }
+ }, [connectionsError])
+
+ // Connect mutation
+ const addConnectionMutation = useMutation({
+ mutationFn: async (provider: ConnectorProvider) => {
+ if (!canAddConnection && !isProUser) {
+ throw new Error(
+ "Free plan doesn't include connections. Upgrade to Pro for unlimited connections.",
+ )
+ }
+
+ const response = await $fetch("@post/connections/:provider", {
+ params: { provider },
+ body: {
+ redirectUrl: window.location.href,
+ containerTags: [selectedProject],
+ },
+ })
+
+ // biome-ignore lint/style/noNonNullAssertion: its fine
+ if ("data" in response && !("error" in response.data!)) {
+ return response.data
+ }
+
+ throw new Error(response.error?.message || "Failed to connect")
+ },
+ onSuccess: (data) => {
+ if (data?.authLink) {
+ window.location.href = data.authLink
+ }
+ },
+ onError: (error) => {
+ setConnectingProvider(null)
+ toast.error("Failed to connect", {
+ description: error instanceof Error ? error.message : "Unknown error",
+ })
+ },
+ })
+
+ // Disconnect mutation
+ const deleteConnectionMutation = useMutation({
+ mutationFn: async (connectionId: string) => {
+ await $fetch(`@delete/connections/${connectionId}`)
+ },
+ onSuccess: () => {
+ toast.success(
+ "Connection removal has started. supermemory will permanently delete all documents related to the connection in the next few minutes.",
+ )
+ queryClient.invalidateQueries({ queryKey: ["connections"] })
+ },
+ onError: (error) => {
+ toast.error("Failed to remove connection", {
+ description: error instanceof Error ? error.message : "Unknown error",
+ })
+ },
+ })
+
+ const handleConnect = (provider: ConnectorProvider) => {
+ setConnectingProvider(provider)
+ addConnectionMutation.mutate(provider)
+ }
+
+ const handleDisconnect = (connectionId: string) => {
+ deleteConnectionMutation.mutate(connectionId)
+ }
+
+ const hasConnections = connections.length > 0
+
+ // Helper function to format connection subtext safely
+ const getConnectionSubtext = (connection: Connection): string => {
+ if (connection.email) {
+ return connection.email
+ }
+
+ return "Connected"
+ }
+
+ return (
+ <div className="h-full flex flex-col pt-4 space-y-4">
+ <div className="flex items-center justify-between px-2">
+ <p className="text-[16px] font-semibold">Supermemory Connections</p>
+ <span className="bg-[#4BA0FA] text-black text-[12px] font-bold px-1 py-[3px] rounded-[3px]">
+ PRO
+ </span>
+ </div>
+
+ {/* Connector section - conditional layout based on hasConnections */}
+ {hasConnections ? (
+ <div className="grid grid-cols-3 gap-3">
+ {Object.entries(CONNECTORS).map(([provider, config]) => {
+ const Icon = config.icon
+ const isConnecting =
+ connectingProvider === provider ||
+ (addConnectionMutation.isPending &&
+ addConnectionMutation.variables === provider)
+
+ return (
+ <button
+ key={provider}
+ type="button"
+ onClick={() => handleConnect(provider as ConnectorProvider)}
+ disabled={
+ !isProUser || isConnecting || addConnectionMutation.isPending
+ }
+ className="bg-[#14161A] border border-[rgba(82,89,102,0.2)] rounded-[12px] px-4 py-3 flex items-center justify-center gap-2 hover:bg-[#1B1F24] transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
+ >
+ <Icon className="w-6 h-6 text-[#737373]" />
+ <p className="text-[14px] font-medium text-center">
+ {config.title}
+ </p>
+ {isConnecting && (
+ <Loader className="h-4 w-4 animate-spin text-[#4BA0FA]" />
+ )}
+ </button>
+ )
+ })}
+ </div>
+ ) : (
+ <div className="space-y-3">
+ {Object.entries(CONNECTORS).map(([provider, config]) => {
+ const Icon = config.icon
+ const connection = connections.find(
+ (conn) => conn.provider === provider,
+ )
+ const isConnected = !!connection
+ const isConnecting =
+ connectingProvider === provider ||
+ (addConnectionMutation.isPending &&
+ addConnectionMutation.variables === provider)
+
+ return (
+ <div
+ key={provider}
+ className="bg-[#14161A] rounded-[12px] px-4 py-3 flex items-center justify-between gap-3"
+ >
+ <div className="flex items-center gap-3 flex-1">
+ <Icon className="w-6 h-6 text-[#737373]" />
+ <div className="space-y-[6px] flex-1">
+ <div className="flex items-center gap-2">
+ <p className="text-[16px] font-medium">{config.title}</p>
+ {isConnected && (
+ <span className="text-[12px] text-[#4BA0FA] font-medium">
+ {connection.metadata?.syncInProgress
+ ? "Syncing..."
+ : "Connected"}
+ </span>
+ )}
+ </div>
+ <p className="text-[16px] text-[#737373]">
+ {config.description}
+ </p>
+ </div>
+ </div>
+ <div className="flex items-center gap-2">
+ {isConnected ? (
+ <Button
+ variant="ghost"
+ size="sm"
+ onClick={() => handleDisconnect(connection.id)}
+ disabled={deleteConnectionMutation.isPending}
+ className="text-[#737373] hover:text-white hover:bg-[#1B1F24] h-8 w-8 p-0"
+ >
+ <Trash2 className="h-4 w-4" />
+ </Button>
+ ) : (
+ <Button
+ onClick={() =>
+ handleConnect(provider as ConnectorProvider)
+ }
+ disabled={
+ !isProUser ||
+ isConnecting ||
+ addConnectionMutation.isPending
+ }
+ className="bg-[#4BA0FA] text-black hover:bg-[#4BA0FA]/90 text-[14px] font-medium px-3 py-1.5 h-8"
+ >
+ {isConnecting ? (
+ <Loader className="h-4 w-4 animate-spin" />
+ ) : (
+ "Connect"
+ )}
+ </Button>
+ )}
+ </div>
+ </div>
+ )
+ })}
+ </div>
+ )}
+
+ {/* Connected list panel - only when hasConnections */}
+ {hasConnections && (
+ <div className="bg-[#14161A] border border-[rgba(82,89,102,0.2)] rounded-[12px] shadow-inside-out px-4 py-4 space-y-4">
+ <div className="flex items-center justify-between">
+ <p className="text-[16px] font-semibold">
+ Connected to Supermemory
+ </p>
+ {connectionsLimit > 0 && (
+ <p className="text-[12px] text-[#737373]">
+ {connections.length}/{connectionsLimit} connections used
+ </p>
+ )}
+ </div>
+ <div className="space-y-3">
+ {connections.map((connection) => {
+ const config =
+ CONNECTORS[connection.provider as ConnectorProvider]
+ if (!config) return null
+
+ const Icon = config.icon
+ const subtext = getConnectionSubtext(connection)
+
+ return (
+ <div
+ key={connection.id}
+ className="flex items-center justify-between gap-3"
+ >
+ <div className="flex items-center gap-3 flex-1">
+ <Icon className="w-6 h-6 text-[#737373]" />
+ <div className="flex-1 min-w-0">
+ <p className="text-[16px] font-medium truncate">
+ {config.title}
+ </p>
+ <p className="text-[14px] text-[#737373] truncate">
+ {subtext}
+ </p>
+ </div>
+ </div>
+ <Button
+ variant="ghost"
+ size="sm"
+ onClick={() => handleDisconnect(connection.id)}
+ disabled={deleteConnectionMutation.isPending}
+ className="text-[#737373] hover:text-white hover:bg-[#1B1F24] h-8 w-8 p-0 shrink-0"
+ >
+ <Trash2 className="h-4 w-4" />
+ </Button>
+ </div>
+ )
+ })}
+ </div>
+ </div>
+ )}
+
+ {/* Empty state panel - only when !hasConnections */}
+ {!hasConnections && (
+ <div
+ id="no-active-connections"
+ className="bg-[#14161A] shadow-inside-out rounded-[12px] px-4 py-6 h-full mb-4 flex flex-col justify-center items-center"
+ >
+ <Zap className="w-6 h-6 text-[#737373] mb-3" />
+ {!isProUser ? (
+ <>
+ <p className="text-[14px] text-[#737373] mb-4 text-center">
+ <a
+ href="/pricing"
+ className="underline text-[#737373] hover:text-white"
+ >
+ Upgrade to Pro
+ </a>{" "}
+ to get
+ <br />
+ Supermemory Connections
+ </p>
+ <div className="space-y-2 text-[14px]">
+ <div className="flex items-center gap-2">
+ <Check className="w-4 h-4 text-[#4BA0FA]" />
+ <span>Unlimited memories</span>
+ </div>
+ <div className="flex items-center gap-2">
+ <Check className="w-4 h-4 text-[#4BA0FA]" />
+ <span>10 connections</span>
+ </div>
+ <div className="flex items-center gap-2">
+ <Check className="w-4 h-4 text-[#4BA0FA]" />
+ <span>Advanced search</span>
+ </div>
+ <div className="flex items-center gap-2">
+ <Check className="w-4 h-4 text-[#4BA0FA]" />
+ <span>Priority support</span>
+ </div>
+ </div>
+ </>
+ ) : (
+ <div
+ className={cn(
+ "text-[#737373] text-center max-w-[174px] font-medium",
+ dmSansClassName(),
+ )}
+ >
+ <p>No connections yet</p>
+ <p className="text-[12px]">
+ Choose a service above to import your knowledge
+ </p>
+ </div>
+ )}
+ </div>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/add-document/file.tsx b/apps/web/components/new/add-document/file.tsx
new file mode 100644
index 00000000..8e7dc4c4
--- /dev/null
+++ b/apps/web/components/new/add-document/file.tsx
@@ -0,0 +1,164 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import { FileIcon } from "lucide-react"
+import { useHotkeys } from "react-hotkeys-hook"
+
+export interface FileData {
+ file: File | null
+ title: string
+ description: string
+}
+
+interface FileContentProps {
+ onSubmit?: (data: { file: File; title: string; description: string }) => void
+ onDataChange?: (data: FileData) => void
+ isSubmitting?: boolean
+ isOpen?: boolean
+}
+
+export function FileContent({ onSubmit, onDataChange, isSubmitting, isOpen }: FileContentProps) {
+ const [isDragging, setIsDragging] = useState(false)
+ const [selectedFile, setSelectedFile] = useState<File | null>(null)
+ const [title, setTitle] = useState("")
+ const [description, setDescription] = useState("")
+
+ const canSubmit = selectedFile !== null && !isSubmitting
+
+ const handleSubmit = () => {
+ if (canSubmit && onSubmit && selectedFile) {
+ onSubmit({ file: selectedFile, title, description })
+ }
+ }
+
+ const updateData = (newFile: File | null, newTitle: string, newDescription: string) => {
+ onDataChange?.({ file: newFile, title: newTitle, description: newDescription })
+ }
+
+ const handleFileChange = (file: File | null) => {
+ setSelectedFile(file)
+ updateData(file, title, description)
+ }
+
+ const handleTitleChange = (newTitle: string) => {
+ setTitle(newTitle)
+ updateData(selectedFile, newTitle, description)
+ }
+
+ const handleDescriptionChange = (newDescription: string) => {
+ setDescription(newDescription)
+ updateData(selectedFile, title, newDescription)
+ }
+
+ useHotkeys("mod+enter", handleSubmit, {
+ enabled: isOpen && canSubmit,
+ enableOnFormTags: ["INPUT", "TEXTAREA"],
+ })
+
+ // Reset content when modal closes
+ useEffect(() => {
+ if (!isOpen) {
+ setSelectedFile(null)
+ setTitle("")
+ setDescription("")
+ onDataChange?.({ file: null, title: "", description: "" })
+ }
+ }, [isOpen, onDataChange])
+
+ const handleDragOver = (e: React.DragEvent) => {
+ e.preventDefault()
+ setIsDragging(true)
+ }
+
+ const handleDragLeave = (e: React.DragEvent) => {
+ e.preventDefault()
+ setIsDragging(false)
+ }
+
+ const handleDrop = (e: React.DragEvent) => {
+ e.preventDefault()
+ setIsDragging(false)
+ const file = e.dataTransfer.files[0]
+ if (file) {
+ handleFileChange(file)
+ }
+ }
+
+ const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {
+ const file = e.target.files?.[0]
+ if (file) {
+ handleFileChange(file)
+ }
+ }
+
+ return (
+ <div className={cn("h-full flex flex-col gap-6 pt-4", dmSansClassName())}>
+ <div className="flex flex-col gap-2">
+ <p className="text-[16px] font-medium pl-2">
+ Upload a file (image, pdf, document, sheet)
+ </p>
+ <label
+ onDragOver={handleDragOver}
+ onDragLeave={handleDragLeave}
+ onDrop={handleDrop}
+ className={cn(
+ "relative flex flex-col items-center justify-center gap-3 p-8 rounded-[14px] bg-[#14161A] shadow-inside-out border-2 border-dashed cursor-pointer transition-all",
+ isDragging
+ ? "border-[#4BA0FA] bg-[#4BA0FA]/10"
+ : "border-[#737373]/30 hover:border-[#737373]/50",
+ isSubmitting && "opacity-50 pointer-events-none",
+ )}
+ >
+ <input
+ type="file"
+ onChange={handleFileSelect}
+ disabled={isSubmitting}
+ className="absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed"
+ accept="image/*,.pdf,.doc,.docx,.xls,.xlsx,.csv,.txt"
+ />
+ <div className="flex items-center justify-center w-12 h-12 rounded-full bg-[#0F1217]">
+ <FileIcon className="size-6 text-[#737373]" />
+ </div>
+ {selectedFile ? (
+ <div className="text-center">
+ <p className="text-white font-medium">{selectedFile.name}</p>
+ <p className="text-[#737373] text-sm">
+ {(selectedFile.size / 1024 / 1024).toFixed(2)} MB
+ </p>
+ </div>
+ ) : (
+ <div className="text-center">
+ <p className="text-white">
+ <span className="text-[#4BA0FA]">Click to upload</span> or drag
+ and drop
+ </p>
+ </div>
+ )}
+ </label>
+ </div>
+ <div className="flex flex-col gap-2">
+ <p className="text-[14px] font-semibold pl-2">Title (optional)</p>
+ <input
+ type="text"
+ value={title}
+ onChange={(e) => handleTitleChange(e.target.value)}
+ placeholder="Give this file a title"
+ disabled={isSubmitting}
+ className="w-full p-4 rounded-[14px] bg-[#14161A] shadow-inside-out disabled:opacity-50"
+ />
+ </div>
+ <div className="flex flex-col gap-2">
+ <p className="text-[14px] font-semibold pl-2">Description (optional)</p>
+ <textarea
+ value={description}
+ onChange={(e) => handleDescriptionChange(e.target.value)}
+ placeholder="Add notes or context about this file"
+ disabled={isSubmitting}
+ className="w-full p-4 rounded-[14px] bg-[#14161A] shadow-inside-out disabled:opacity-50"
+ />
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/add-document/index.tsx b/apps/web/components/new/add-document/index.tsx
new file mode 100644
index 00000000..fe4e8966
--- /dev/null
+++ b/apps/web/components/new/add-document/index.tsx
@@ -0,0 +1,464 @@
+"use client"
+
+import { useState, useEffect, useMemo, useCallback } from "react"
+import { Dialog, DialogContent, DialogTitle } from "@repo/ui/components/dialog"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import {
+ FileTextIcon,
+ GlobeIcon,
+ ZapIcon,
+ ChevronsUpDownIcon,
+ FolderIcon,
+ Loader2,
+} from "lucide-react"
+import { Button } from "@ui/components/button"
+import { ConnectContent } from "./connections"
+import { NoteContent } from "./note"
+import { LinkContent, type LinkData } from "./link"
+import { FileContent, type FileData } from "./file"
+import { useProject } from "@/stores"
+import { $fetch } from "@lib/api"
+import { DEFAULT_PROJECT_ID } from "@repo/lib/constants"
+import type { Project } from "@repo/lib/types"
+import { useQuery } from "@tanstack/react-query"
+import { motion } from "motion/react"
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@repo/ui/components/dropdown-menu"
+import { toast } from "sonner"
+import { useDocumentMutations } from "./useDocumentMutations"
+
+type TabType = "note" | "link" | "file" | "connect"
+
+interface AddDocumentModalProps {
+ isOpen: boolean
+ onClose: () => void
+ defaultTab?: TabType
+}
+
+export function AddDocumentModal({
+ isOpen,
+ onClose,
+ defaultTab,
+}: AddDocumentModalProps) {
+ return (
+ <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>
+ <DialogContent
+ className={cn(
+ "w-[80%]! max-w-[1000px]! h-[80%]! max-h-[800px]! border-none bg-[#1B1F24] flex flex-col p-4 gap-3 rounded-[22px]",
+ dmSansClassName(),
+ )}
+ style={{
+ boxShadow:
+ "0 2.842px 14.211px 0 rgba(0, 0, 0, 0.25), 0.711px 0.711px 0.711px 0 rgba(255, 255, 255, 0.10) inset",
+ }}
+ showCloseButton={false}
+ >
+ <DialogTitle className="sr-only">Add Document</DialogTitle>
+ <div className="flex-1 overflow-hidden">
+ <AddDocument
+ defaultTab={defaultTab}
+ onClose={onClose}
+ isOpen={isOpen}
+ />
+ </div>
+ </DialogContent>
+ </Dialog>
+ )
+}
+
+const tabs = [
+ {
+ id: "note" as const,
+ icon: FileTextIcon,
+ title: "Write a note",
+ description: "Save your thoughts, notes and summaries, as memories",
+ },
+ {
+ id: "link" as const,
+ icon: GlobeIcon,
+ title: "Save a link",
+ description: "Add any webpage into your searchable knowledge base",
+ },
+ {
+ id: "file" as const,
+ icon: FileTextIcon,
+ title: "Upload a file",
+ description: "Turn any image, PDF or document into contextual memories",
+ },
+ {
+ id: "connect" as const,
+ icon: ZapIcon,
+ title: "Connect knowledge bases",
+ description: "Sync with Google Drive, Notion and OneDrive and import data",
+ isPro: true,
+ },
+]
+
+export function AddDocument({
+ defaultTab,
+ onClose,
+ isOpen,
+}: {
+ defaultTab?: TabType
+ onClose: () => void
+ isOpen?: boolean
+}) {
+ const [activeTab, setActiveTab] = useState<TabType>(defaultTab ?? "note")
+ const { selectedProject: globalSelectedProject } = useProject()
+ const [localSelectedProject, setLocalSelectedProject] = useState<string>(
+ globalSelectedProject,
+ )
+ const [isProjectSelectorOpen, setIsProjectSelectorOpen] = useState(false)
+
+ // Form data state for button click handling
+ const [noteContent, setNoteContent] = useState("")
+ const [linkData, setLinkData] = useState<LinkData>({
+ url: "",
+ title: "",
+ description: "",
+ })
+ const [fileData, setFileData] = useState<FileData>({
+ file: null,
+ title: "",
+ description: "",
+ })
+
+ const { noteMutation, linkMutation, fileMutation } = useDocumentMutations({
+ onClose,
+ })
+
+ useEffect(() => {
+ setLocalSelectedProject(globalSelectedProject)
+ }, [globalSelectedProject])
+
+ const { data: projects = [], isLoading: isLoadingProjects } = useQuery({
+ queryKey: ["projects"],
+ queryFn: async () => {
+ const response = await $fetch("@get/projects")
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to load projects")
+ }
+
+ return response.data?.projects || []
+ },
+ staleTime: 30 * 1000,
+ })
+
+ const projectName = useMemo(() => {
+ if (localSelectedProject === DEFAULT_PROJECT_ID) return "Default Project"
+ const found = projects.find(
+ (p: Project) => p.containerTag === localSelectedProject,
+ )
+ return found?.name ?? localSelectedProject
+ }, [projects, localSelectedProject])
+
+ const handleProjectSelect = (containerTag: string) => {
+ setLocalSelectedProject(containerTag)
+ setIsProjectSelectorOpen(false)
+ }
+
+ useEffect(() => {
+ if (defaultTab) {
+ setActiveTab(defaultTab)
+ }
+ }, [defaultTab])
+
+ // Submit handlers
+ const handleNoteSubmit = useCallback(
+ (content: string) => {
+ if (!content.trim()) {
+ toast.error("Please enter some content")
+ return
+ }
+ noteMutation.mutate({ content, project: localSelectedProject })
+ },
+ [noteMutation, localSelectedProject],
+ )
+
+ const handleLinkSubmit = useCallback(
+ (data: LinkData) => {
+ if (!data.url.trim()) {
+ toast.error("Please enter a URL")
+ return
+ }
+ linkMutation.mutate({ url: data.url, project: localSelectedProject })
+ },
+ [linkMutation, localSelectedProject],
+ )
+
+ const handleFileSubmit = useCallback(
+ (data: { file: File; title: string; description: string }) => {
+ if (!data.file) {
+ toast.error("Please select a file")
+ return
+ }
+ fileMutation.mutate({
+ file: data.file,
+ title: data.title || undefined,
+ description: data.description || undefined,
+ project: localSelectedProject,
+ })
+ },
+ [fileMutation, localSelectedProject],
+ )
+
+ // Data change handlers
+ const handleNoteContentChange = useCallback((content: string) => {
+ setNoteContent(content)
+ }, [])
+
+ const handleLinkDataChange = useCallback((data: LinkData) => {
+ setLinkData(data)
+ }, [])
+
+ const handleFileDataChange = useCallback((data: FileData) => {
+ setFileData(data)
+ }, [])
+
+ // Button click handler
+ const handleButtonClick = () => {
+ if (activeTab === "note") {
+ handleNoteSubmit(noteContent)
+ } else if (activeTab === "link") {
+ handleLinkSubmit(linkData)
+ } else if (activeTab === "file") {
+ if (fileData.file) {
+ handleFileSubmit(
+ fileData as { file: File; title: string; description: string },
+ )
+ } else {
+ toast.error("Please select a file")
+ }
+ }
+ }
+
+ const isSubmitting =
+ noteMutation.isPending || linkMutation.isPending || fileMutation.isPending
+
+ return (
+ <div className="h-full flex flex-row text-white space-x-6">
+ <div className="w-1/3 flex flex-col justify-between">
+ <div className="flex flex-col gap-1">
+ {tabs.map((tab) => (
+ <TabButton
+ key={tab.id}
+ active={activeTab === tab.id}
+ onClick={() => setActiveTab(tab.id)}
+ icon={tab.icon}
+ title={tab.title}
+ description={tab.description}
+ isPro={tab.isPro}
+ />
+ ))}
+ </div>
+
+ <div
+ data-testid="memories-counter"
+ className="bg-[#1B1F24] rounded-2xl p-4 mr-4"
+ style={{
+ boxShadow:
+ "0 2.842px 14.211px 0 rgba(0, 0, 0, 0.25), 0.711px 0.711px 0.711px 0 rgba(255, 255, 255, 0.10) inset",
+ }}
+ >
+ <div className="flex justify-between items-center mb-2">
+ <span
+ className={cn(
+ "text-white text-[16px] font-medium",
+ dmSansClassName(),
+ )}
+ >
+ Memories
+ </span>
+ <span className={cn("text-[#737373] text-sm", dmSansClassName())}>
+ 120/200
+ </span>
+ </div>
+ <div className="h-1.5 bg-[#0D121A] rounded-full overflow-hidden">
+ <div
+ className="h-full bg-[#2261CA] rounded-full"
+ style={{ width: "60%" }}
+ />
+ </div>
+ </div>
+ </div>
+
+ <div className="w-2/3 overflow-auto flex flex-col justify-between">
+ {activeTab === "note" && (
+ <NoteContent
+ onSubmit={handleNoteSubmit}
+ onContentChange={handleNoteContentChange}
+ isSubmitting={noteMutation.isPending}
+ isOpen={isOpen}
+ />
+ )}
+ {activeTab === "link" && (
+ <LinkContent
+ onSubmit={handleLinkSubmit}
+ onDataChange={handleLinkDataChange}
+ isSubmitting={linkMutation.isPending}
+ isOpen={isOpen}
+ />
+ )}
+ {activeTab === "file" && (
+ <FileContent
+ onSubmit={handleFileSubmit}
+ onDataChange={handleFileDataChange}
+ isSubmitting={fileMutation.isPending}
+ isOpen={isOpen}
+ />
+ )}
+ {activeTab === "connect" && (
+ <ConnectContent selectedProject={localSelectedProject} />
+ )}
+ <div className="flex justify-between">
+ <DropdownMenu
+ open={isProjectSelectorOpen}
+ onOpenChange={setIsProjectSelectorOpen}
+ >
+ <DropdownMenuTrigger asChild>
+ <Button
+ variant="insideOut"
+ className="gap-2"
+ disabled={isSubmitting}
+ >
+ <FolderIcon className="size-4" />
+ <span className="max-w-[120px] truncate">
+ {isLoadingProjects ? "..." : projectName}
+ </span>
+ <motion.div
+ animate={{ rotate: isProjectSelectorOpen ? 180 : 0 }}
+ transition={{ duration: 0.2 }}
+ >
+ <ChevronsUpDownIcon className="size-4" color="#737373" />
+ </motion.div>
+ </Button>
+ </DropdownMenuTrigger>
+ <DropdownMenuContent
+ align="start"
+ className="w-56 bg-[#1B1F24] border border-[#2A2E35] rounded-[12px] p-1.5 max-h-64 overflow-y-auto"
+ >
+ <DropdownMenuItem
+ onClick={() => handleProjectSelect(DEFAULT_PROJECT_ID)}
+ className={cn(
+ "flex items-center gap-2 px-3 py-2 rounded-[8px] cursor-pointer",
+ localSelectedProject === DEFAULT_PROJECT_ID
+ ? "bg-[#4BA0FA]/20 text-white"
+ : "text-[#737373] hover:bg-[#14161A] hover:text-white",
+ )}
+ >
+ <FolderIcon className="h-4 w-4" />
+ <span className="text-sm font-medium">Default Project</span>
+ </DropdownMenuItem>
+ {projects
+ .filter((p: Project) => p.containerTag !== DEFAULT_PROJECT_ID)
+ .map((project: Project) => (
+ <DropdownMenuItem
+ key={project.id}
+ onClick={() => handleProjectSelect(project.containerTag)}
+ className={cn(
+ "flex items-center gap-2 px-3 py-2 rounded-[8px] cursor-pointer",
+ localSelectedProject === project.containerTag
+ ? "bg-[#4BA0FA]/20 text-white"
+ : "text-[#737373] hover:bg-[#14161A] hover:text-white",
+ )}
+ >
+ <FolderIcon className="h-4 w-4" />
+ <span className="text-sm font-medium truncate">
+ {project.name}
+ </span>
+ </DropdownMenuItem>
+ ))}
+ </DropdownMenuContent>
+ </DropdownMenu>
+ <div className="flex items-center gap-2">
+ <Button
+ variant="ghost"
+ onClick={onClose}
+ disabled={isSubmitting}
+ className="text-[#737373] cursor-pointer rounded-full"
+ >
+ Cancel
+ </Button>
+ {activeTab !== "connect" && (
+ <Button
+ variant="insideOut"
+ onClick={handleButtonClick}
+ disabled={isSubmitting}
+ >
+ {isSubmitting ? (
+ <>
+ <Loader2 className="size-4 animate-spin mr-2" />
+ Adding...
+ </>
+ ) : (
+ <>
+ + Add {activeTab}{" "}
+ <span
+ className={cn(
+ "bg-[#21212180] border border-[#73737333] text-[#737373] rounded-sm px-1 py-0.5 text-[10px] flex items-center justify-center",
+ dmSansClassName(),
+ )}
+ >
+ ⌘+Enter
+ </span>
+ </>
+ )}
+ </Button>
+ )}
+ </div>
+ </div>
+ </div>
+ </div>
+ )
+}
+
+function TabButton({
+ active,
+ onClick,
+ icon: Icon,
+ title,
+ description,
+ isPro,
+}: {
+ active: boolean
+ onClick: () => void
+ icon: React.ComponentType<{ className?: string }>
+ title: string
+ description: string
+ isPro?: boolean
+}) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ className={cn(
+ "flex items-start gap-3 p-4 rounded-[16px] text-left transition-colors w-full focus:outline-none focus:ring-0",
+ active
+ ? "bg-[#14161A] shadow-inside-out"
+ : "hover:bg-[#14161A]/50 hover:shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]",
+ dmSansClassName(),
+ )}
+ >
+ <Icon className={cn("size-5 mt-0.5 shrink-0 text-white")} />
+ <div className="flex flex-col gap-0.5 text-[16px]">
+ <div className="flex items-center justify-between gap-2">
+ <span className={cn("font-medium text-white", dmSansClassName())}>
+ {title}
+ </span>
+ {isPro && (
+ <span className="bg-[#4BA0FA] text-black text-[10px] font-semibold px-1.5 py-0.5 rounded">
+ PRO
+ </span>
+ )}
+ </div>
+ <span className="text-[#737373]">{description}</span>
+ </div>
+ </button>
+ )
+}
diff --git a/apps/web/components/new/add-document/link.tsx b/apps/web/components/new/add-document/link.tsx
new file mode 100644
index 00000000..0c50d194
--- /dev/null
+++ b/apps/web/components/new/add-document/link.tsx
@@ -0,0 +1,130 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { cn } from "@lib/utils"
+import { Button } from "@ui/components/button"
+import { dmSansClassName } from "@/utils/fonts"
+import { useHotkeys } from "react-hotkeys-hook"
+
+export interface LinkData {
+ url: string
+ title: string
+ description: string
+}
+
+interface LinkContentProps {
+ onSubmit?: (data: LinkData) => void
+ onDataChange?: (data: LinkData) => void
+ isSubmitting?: boolean
+ isOpen?: boolean
+}
+
+export function LinkContent({ onSubmit, onDataChange, isSubmitting, isOpen }: LinkContentProps) {
+ const [url, setUrl] = useState("")
+ const [title, setTitle] = useState("")
+ const [description, setDescription] = useState("")
+
+ const canSubmit = url.trim().length > 0 && !isSubmitting
+
+ const handleSubmit = () => {
+ if (canSubmit && onSubmit) {
+ onSubmit({ url, title, description })
+ }
+ }
+
+ const updateData = (newUrl: string, newTitle: string, newDescription: string) => {
+ onDataChange?.({ url: newUrl, title: newTitle, description: newDescription })
+ }
+
+ const handleUrlChange = (newUrl: string) => {
+ setUrl(newUrl)
+ updateData(newUrl, title, description)
+ }
+
+ const handleTitleChange = (newTitle: string) => {
+ setTitle(newTitle)
+ updateData(url, newTitle, description)
+ }
+
+ const handleDescriptionChange = (newDescription: string) => {
+ setDescription(newDescription)
+ updateData(url, title, newDescription)
+ }
+
+ useHotkeys("mod+enter", handleSubmit, {
+ enabled: isOpen && canSubmit,
+ enableOnFormTags: ["INPUT", "TEXTAREA"],
+ })
+
+ // Reset content when modal closes
+ useEffect(() => {
+ if (!isOpen) {
+ setUrl("")
+ setTitle("")
+ setDescription("")
+ onDataChange?.({ url: "", title: "", description: "" })
+ }
+ }, [isOpen, onDataChange])
+
+ return (
+ <div className={cn("flex flex-col space-y-4 pt-4", dmSansClassName())}>
+ <div>
+ <p
+ className={cn("text-[16px] font-medium pl-2 pb-2", dmSansClassName())}
+ >
+ Paste a link to turn it into a memory
+ </p>
+ <div className="flex relative">
+ <input
+ type="text"
+ value={url}
+ onChange={(e) => handleUrlChange(e.target.value)}
+ placeholder="https://maheshthedev.me"
+ disabled={isSubmitting}
+ className={cn(
+ "w-full p-4 rounded-xl bg-[#14161A] shadow-inside-out disabled:opacity-50",
+ )}
+ />
+ <Button variant="linkPreview" className="absolute right-2 top-2" disabled={isSubmitting}>
+ Preview Link
+ </Button>
+ </div>
+ </div>
+ <div className="bg-[#14161A] rounded-[14px] py-6 px-4 space-y-4 shadow-inside-out">
+ <div>
+ <p className="pl-2 pb-2 font-semibold text-[16px] text-[#737373]">
+ Link title
+ </p>
+ <input
+ type="text"
+ value={title}
+ onChange={(e) => handleTitleChange(e.target.value)}
+ placeholder="Mahesh Sanikommu - Portfolio"
+ disabled={isSubmitting}
+ className="w-full px-4 py-3 bg-[#0F1217] rounded-xl disabled:opacity-50"
+ />
+ </div>
+ <div>
+ <p className="pl-2 pb-2 font-semibold text-[16px] text-[#737373]">
+ Link description
+ </p>
+ <textarea
+ value={description}
+ onChange={(e) => handleDescriptionChange(e.target.value)}
+ placeholder="Portfolio website of Mahesh Sanikommu"
+ disabled={isSubmitting}
+ className="w-full px-4 py-3 bg-[#0F1217] rounded-xl disabled:opacity-50"
+ />
+ </div>
+ <div>
+ <p className="pl-2 pb-2 font-semibold text-[16px] text-[#737373]">
+ Link Preview
+ </p>
+ <div className="w-full px-4 py-3 bg-[#0F1217] rounded-xl">
+ <p>{description || "Portfolio website of Mahesh Sanikommu"}</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/add-document/note.tsx b/apps/web/components/new/add-document/note.tsx
new file mode 100644
index 00000000..c7c2a2ac
--- /dev/null
+++ b/apps/web/components/new/add-document/note.tsx
@@ -0,0 +1,51 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { useHotkeys } from "react-hotkeys-hook"
+
+interface NoteContentProps {
+ onSubmit?: (content: string) => void
+ onContentChange?: (content: string) => void
+ isSubmitting?: boolean
+ isOpen?: boolean
+}
+
+export function NoteContent({ onSubmit, onContentChange, isSubmitting, isOpen }: NoteContentProps) {
+ const [content, setContent] = useState("")
+
+ const canSubmit = content.trim().length > 0 && !isSubmitting
+
+ const handleSubmit = () => {
+ if (canSubmit && onSubmit) {
+ onSubmit(content)
+ }
+ }
+
+ const handleContentChange = (newContent: string) => {
+ setContent(newContent)
+ onContentChange?.(newContent)
+ }
+
+ useHotkeys("mod+enter", handleSubmit, {
+ enabled: isOpen && canSubmit,
+ enableOnFormTags: ["TEXTAREA"],
+ })
+
+ // Reset content when modal closes
+ useEffect(() => {
+ if (!isOpen) {
+ setContent("")
+ onContentChange?.("")
+ }
+ }, [isOpen, onContentChange])
+
+ return (
+ <textarea
+ value={content}
+ onChange={(e) => handleContentChange(e.target.value)}
+ placeholder="Write your note here..."
+ disabled={isSubmitting}
+ className="w-full h-full p-4 mb-4! rounded-[14px] bg-[#14161A] shadow-inside-out resize-none disabled:opacity-50"
+ />
+ )
+}
diff --git a/apps/web/components/new/add-document/useDocumentMutations.ts b/apps/web/components/new/add-document/useDocumentMutations.ts
new file mode 100644
index 00000000..fc57bbea
--- /dev/null
+++ b/apps/web/components/new/add-document/useDocumentMutations.ts
@@ -0,0 +1,313 @@
+"use client"
+
+import { useMutation, useQueryClient } from "@tanstack/react-query"
+import { toast } from "sonner"
+import { $fetch } from "@lib/api"
+
+interface DocumentsQueryData {
+ documents: unknown[]
+ totalCount: number
+}
+
+interface UseDocumentMutationsOptions {
+ onClose: () => void
+}
+
+export function useDocumentMutations({ onClose }: UseDocumentMutationsOptions) {
+ const queryClient = useQueryClient()
+
+ const noteMutation = useMutation({
+ mutationFn: async ({
+ content,
+ project,
+ }: {
+ content: string
+ project: string
+ }) => {
+ const response = await $fetch("@post/documents", {
+ body: {
+ content: content,
+ containerTags: [project],
+ metadata: {
+ sm_source: "consumer",
+ },
+ },
+ })
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to add note")
+ }
+
+ return response.data
+ },
+ onMutate: async ({ content, project }) => {
+ await queryClient.cancelQueries({
+ queryKey: ["documents-with-memories", project],
+ })
+
+ const previousMemories = queryClient.getQueryData([
+ "documents-with-memories",
+ project,
+ ])
+
+ const optimisticMemory = {
+ id: `temp-${Date.now()}`,
+ content: content,
+ url: null,
+ title: content.substring(0, 100),
+ description: "Processing content...",
+ containerTags: [project],
+ createdAt: new Date().toISOString(),
+ updatedAt: new Date().toISOString(),
+ status: "queued",
+ type: "note",
+ metadata: {
+ processingStage: "queued",
+ processingMessage: "Added to processing queue",
+ },
+ memoryEntries: [],
+ isOptimistic: true,
+ }
+
+ queryClient.setQueryData(
+ ["documents-with-memories", project],
+ (old: DocumentsQueryData | undefined) => {
+ if (!old) return { documents: [optimisticMemory], totalCount: 1 }
+ return {
+ ...old,
+ documents: [optimisticMemory, ...old.documents],
+ totalCount: old.totalCount + 1,
+ }
+ },
+ )
+
+ return { previousMemories }
+ },
+ onError: (_error, variables, context) => {
+ if (context?.previousMemories) {
+ queryClient.setQueryData(
+ ["documents-with-memories", variables.project],
+ context.previousMemories,
+ )
+ }
+ toast.error("Failed to add note", {
+ description: _error instanceof Error ? _error.message : "Unknown error",
+ })
+ },
+ onSuccess: (_data, variables) => {
+ toast.success("Note added successfully!", {
+ description: "Your note is being processed",
+ })
+ queryClient.invalidateQueries({
+ queryKey: ["documents-with-memories", variables.project],
+ })
+ onClose()
+ },
+ })
+
+ const linkMutation = useMutation({
+ mutationFn: async ({ url, project }: { url: string; project: string }) => {
+ const response = await $fetch("@post/documents", {
+ body: {
+ content: url,
+ containerTags: [project],
+ metadata: {
+ sm_source: "consumer",
+ },
+ },
+ })
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to add link")
+ }
+
+ return response.data
+ },
+ onMutate: async ({ url, project }) => {
+ await queryClient.cancelQueries({
+ queryKey: ["documents-with-memories", project],
+ })
+
+ const previousMemories = queryClient.getQueryData([
+ "documents-with-memories",
+ project,
+ ])
+
+ const optimisticMemory = {
+ id: `temp-${Date.now()}`,
+ content: "",
+ url: url,
+ title: "Processing...",
+ description: "Extracting content...",
+ containerTags: [project],
+ createdAt: new Date().toISOString(),
+ updatedAt: new Date().toISOString(),
+ status: "queued",
+ type: "link",
+ metadata: {
+ processingStage: "queued",
+ processingMessage: "Added to processing queue",
+ },
+ memoryEntries: [],
+ isOptimistic: true,
+ }
+
+ queryClient.setQueryData(
+ ["documents-with-memories", project],
+ (old: DocumentsQueryData | undefined) => {
+ if (!old) return { documents: [optimisticMemory], totalCount: 1 }
+ return {
+ ...old,
+ documents: [optimisticMemory, ...old.documents],
+ totalCount: old.totalCount + 1,
+ }
+ },
+ )
+
+ return { previousMemories }
+ },
+ onError: (_error, variables, context) => {
+ if (context?.previousMemories) {
+ queryClient.setQueryData(
+ ["documents-with-memories", variables.project],
+ context.previousMemories,
+ )
+ }
+ toast.error("Failed to add link", {
+ description: _error instanceof Error ? _error.message : "Unknown error",
+ })
+ },
+ onSuccess: (_data, variables) => {
+ toast.success("Link added successfully!", {
+ description: "Your link is being processed",
+ })
+ queryClient.invalidateQueries({
+ queryKey: ["documents-with-memories", variables.project],
+ })
+ onClose()
+ },
+ })
+
+ const fileMutation = useMutation({
+ mutationFn: async ({
+ file,
+ title,
+ description,
+ project,
+ }: {
+ file: File
+ title?: string
+ description?: string
+ project: string
+ }) => {
+ const formData = new FormData()
+ formData.append("file", file)
+ formData.append("containerTags", JSON.stringify([project]))
+ formData.append(
+ "metadata",
+ JSON.stringify({
+ sm_source: "consumer",
+ }),
+ )
+
+ const response = await fetch(
+ `${process.env.NEXT_PUBLIC_BACKEND_URL}/v3/documents/file`,
+ {
+ method: "POST",
+ body: formData,
+ credentials: "include",
+ },
+ )
+
+ if (!response.ok) {
+ const error = await response.json()
+ throw new Error(error.error || "Failed to upload file")
+ }
+
+ const data = await response.json()
+
+ if (title || description) {
+ await $fetch(`@patch/documents/${data.id}`, {
+ body: {
+ metadata: {
+ ...(title && { title }),
+ ...(description && { description }),
+ sm_source: "consumer",
+ },
+ },
+ })
+ }
+
+ return data
+ },
+ onMutate: async ({ file, title, description, project }) => {
+ await queryClient.cancelQueries({
+ queryKey: ["documents-with-memories", project],
+ })
+
+ const previousMemories = queryClient.getQueryData([
+ "documents-with-memories",
+ project,
+ ])
+
+ const optimisticMemory = {
+ id: `temp-file-${Date.now()}`,
+ content: "",
+ url: null,
+ title: title || file.name,
+ description: description || `Uploading ${file.name}...`,
+ containerTags: [project],
+ createdAt: new Date().toISOString(),
+ updatedAt: new Date().toISOString(),
+ status: "processing",
+ type: "file",
+ metadata: {
+ fileName: file.name,
+ fileSize: file.size,
+ mimeType: file.type,
+ },
+ memoryEntries: [],
+ }
+
+ queryClient.setQueryData(
+ ["documents-with-memories", project],
+ (old: DocumentsQueryData | undefined) => {
+ if (!old) return { documents: [optimisticMemory], totalCount: 1 }
+ return {
+ ...old,
+ documents: [optimisticMemory, ...old.documents],
+ totalCount: old.totalCount + 1,
+ }
+ },
+ )
+
+ return { previousMemories }
+ },
+ onError: (_error, variables, context) => {
+ if (context?.previousMemories) {
+ queryClient.setQueryData(
+ ["documents-with-memories", variables.project],
+ context.previousMemories,
+ )
+ }
+ toast.error("Failed to upload file", {
+ description: _error instanceof Error ? _error.message : "Unknown error",
+ })
+ },
+ onSuccess: (_data, variables) => {
+ toast.success("File uploaded successfully!", {
+ description: "Your file is being processed",
+ })
+ queryClient.invalidateQueries({
+ queryKey: ["documents-with-memories", variables.project],
+ })
+ onClose()
+ },
+ })
+
+ return {
+ noteMutation,
+ linkMutation,
+ fileMutation,
+ }
+}
diff --git a/apps/web/components/new/animated-gradient-background.tsx b/apps/web/components/new/animated-gradient-background.tsx
new file mode 100644
index 00000000..8b37c8c4
--- /dev/null
+++ b/apps/web/components/new/animated-gradient-background.tsx
@@ -0,0 +1,68 @@
+import { motion } from "motion/react"
+
+export function AnimatedGradientBackground({
+ topPosition = "40%",
+ animateFromBottom = true,
+}: {
+ topPosition?: string
+ animateFromBottom?: boolean
+}) {
+ return (
+ <div className="fixed inset-0 z-0 overflow-hidden">
+ <motion.div
+ className="absolute top-0 left-0 right-0 bottom-0 bg-[url('/onboarding/bg-gradient-0.png')] bg-size-[150%_auto] bg-top bg-no-repeat"
+ style={{ top: animateFromBottom ? undefined : topPosition }}
+ initial={{ y: "100%" }}
+ animate={{
+ y: 0,
+ opacity: animateFromBottom ? 0 : [1, 0, 1],
+ top: animateFromBottom ? "0%" : topPosition,
+ }}
+ transition={{
+ y: { duration: 0.75, ease: "easeOut" },
+ opacity: animateFromBottom
+ ? { duration: 2, ease: "easeOut" }
+ : {
+ duration: 8,
+ repeat: Number.POSITIVE_INFINITY,
+ ease: "easeInOut",
+ },
+ top: animateFromBottom
+ ? { duration: 0.75, ease: "easeOut" }
+ : undefined,
+ }}
+ />
+ <motion.div
+ className="absolute top-0 left-0 right-0 bottom-0 bg-[url('/onboarding/bg-gradient-1.png')] bg-size-[150%_auto] bg-top bg-no-repeat"
+ style={{ top: animateFromBottom ? undefined : topPosition }}
+ initial={{ y: "100%" }}
+ animate={{
+ y: 0,
+ opacity: animateFromBottom ? 0 : [0, 1, 0],
+ top: animateFromBottom ? "0%" : topPosition,
+ }}
+ transition={{
+ y: { duration: 0.75, ease: "easeOut" },
+ opacity: animateFromBottom
+ ? { duration: 2, ease: "easeOut" }
+ : {
+ duration: 8,
+ repeat: Number.POSITIVE_INFINITY,
+ ease: "easeInOut",
+ },
+ top: animateFromBottom
+ ? { duration: 0.75, ease: "easeOut" }
+ : undefined,
+ }}
+ />
+ <motion.div
+ className="absolute top-0 left-0 right-0 bottom-0 bg-[url('/bg-rectangle.png')] bg-cover bg-center bg-no-repeat"
+ transition={{ duration: 0.75, ease: "easeOut", bounce: 0 }}
+ style={{
+ mixBlendMode: "soft-light",
+ opacity: 0.4,
+ }}
+ />
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/index.tsx b/apps/web/components/new/chat/index.tsx
new file mode 100644
index 00000000..3460c456
--- /dev/null
+++ b/apps/web/components/new/chat/index.tsx
@@ -0,0 +1,551 @@
+"use client"
+
+import { useState, useEffect, useCallback, useRef } from "react"
+import { motion, AnimatePresence } from "motion/react"
+import { useChat } from "@ai-sdk/react"
+import { DefaultChatTransport } from "ai"
+import NovaOrb from "@/components/nova/nova-orb"
+import { Button } from "@ui/components/button"
+import {
+ ChevronDownIcon,
+ HistoryIcon,
+ PanelRightCloseIcon,
+ SearchIcon,
+ SquarePenIcon,
+} from "lucide-react"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import ChatInput from "./input"
+import ChatModelSelector from "./model-selector"
+import { GradientLogo, LogoBgGradient } from "@ui/assets/Logo"
+import { useProject, usePersistentChat } from "@/stores"
+import type { ModelId } from "@/lib/models"
+import { SuperLoader } from "../../superloader"
+import { UserMessage } from "./message/user-message"
+import { AgentMessage } from "./message/agent-message"
+import { ChainOfThought } from "./input/chain-of-thought"
+
+function ChatEmptyStatePlaceholder({
+ onSuggestionClick,
+}: {
+ onSuggestionClick: (suggestion: string) => void
+}) {
+ const suggestions = [
+ "Show me all content related to Supermemory.",
+ "Summarize the key ideas from My Gita.",
+ "Which memories connect design and AI?",
+ "What are the main themes across my memories?",
+ ]
+
+ return (
+ <div
+ id="chat-empty-state"
+ className="flex flex-col items-center justify-center h-full"
+ >
+ <div className="relative w-32 h-32">
+ <GradientLogo className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-16 h-16" />
+ <LogoBgGradient className="w-full h-full" />
+ </div>
+ <div className="gap-3 flex flex-col items-center justify-center">
+ <p>Ask me anything about your memories...</p>
+ <div
+ className={cn(
+ dmSansClassName(),
+ "flex flex-col gap-2 justify-center items-center",
+ )}
+ >
+ {suggestions.map((suggestion) => (
+ <Button
+ key={suggestion}
+ variant="default"
+ className="rounded-full text-base gap-1 h-10! border-[#2261CA33] bg-[#041127] border w-fit py-[4px] pl-[8px] pr-[12px] hover:bg-[#0A1A3A] hover:[&_span]:text-white hover:[&_svg]:text-white transition-colors cursor-pointer"
+ onClick={() => onSuggestionClick(suggestion)}
+ >
+ <SearchIcon className="size-4 text-[#267BF1]" />
+ <span className="text-[#267BF1] text-[12px]">{suggestion}</span>
+ </Button>
+ ))}
+ </div>
+ </div>
+ </div>
+ )
+}
+
+export function ChatSidebar({
+ isChatOpen,
+ setIsChatOpen,
+}: {
+ isChatOpen: boolean
+ setIsChatOpen: (open: boolean) => void
+}) {
+ const [input, setInput] = useState("")
+ const [selectedModel, setSelectedModel] = useState<ModelId>("gemini-2.5-pro")
+ const [copiedMessageId, setCopiedMessageId] = useState<string | null>(null)
+ const [hoveredMessageId, setHoveredMessageId] = useState<string | null>(null)
+ const [messageFeedback, setMessageFeedback] = useState<
+ Record<string, "like" | "dislike" | null>
+ >({})
+ const [expandedMemories, setExpandedMemories] = useState<string | null>(null)
+ const [followUpQuestions, setFollowUpQuestions] = useState<
+ Record<string, string[]>
+ >({})
+ const [loadingFollowUps, setLoadingFollowUps] = useState<
+ Record<string, boolean>
+ >({})
+ const [isInputExpanded, setIsInputExpanded] = useState(false)
+ const [isScrolledToBottom, setIsScrolledToBottom] = useState(true)
+ const pendingFollowUpGenerations = useRef<Set<string>>(new Set())
+ const messagesContainerRef = useRef<HTMLDivElement>(null)
+ const { selectedProject } = useProject()
+ const { setCurrentChatId } = usePersistentChat()
+
+ const { messages, sendMessage, status, setMessages, stop } = useChat({
+ transport: new DefaultChatTransport({
+ api: `${process.env.NEXT_PUBLIC_BACKEND_URL}/chat/v2`,
+ credentials: "include",
+ body: {
+ metadata: {
+ projectId: selectedProject,
+ model: selectedModel,
+ },
+ },
+ }),
+ maxSteps: 10,
+ onFinish: async (result) => {
+ if (result.message.role !== "assistant") return
+
+ // Mark this message as needing follow-up generation
+ // We'll generate it after the message is fully in the messages array
+ if (result.message.id) {
+ pendingFollowUpGenerations.current.add(result.message.id)
+ }
+ },
+ })
+
+ // Generate follow-up questions after assistant messages are complete
+ useEffect(() => {
+ const generateFollowUps = async () => {
+ // Find assistant messages that need follow-up generation
+ const messagesToProcess = messages.filter(
+ (msg) =>
+ msg.role === "assistant" &&
+ pendingFollowUpGenerations.current.has(msg.id) &&
+ !followUpQuestions[msg.id] &&
+ !loadingFollowUps[msg.id],
+ )
+
+ for (const message of messagesToProcess) {
+ // Get complete text from the message
+ const assistantText = message.parts
+ .filter((p) => p.type === "text")
+ .map((p) => p.text)
+ .join(" ")
+ .trim()
+
+ // Only generate if we have substantial text (at least 50 chars)
+ // This ensures the message is complete, not just the first chunk
+ // Also check if status is idle to ensure streaming is complete
+ if (
+ assistantText.length < 50 ||
+ status === "streaming" ||
+ status === "submitted"
+ ) {
+ continue
+ }
+
+ // Mark as processing
+ pendingFollowUpGenerations.current.delete(message.id)
+ setLoadingFollowUps((prev) => ({
+ ...prev,
+ [message.id]: true,
+ }))
+
+ try {
+ // Get recent messages for context
+ const recentMessages = messages.slice(-5).map((msg) => ({
+ role: msg.role,
+ content: msg.parts
+ .filter((p) => p.type === "text")
+ .map((p) => p.text)
+ .join(" "),
+ }))
+
+ const response = await fetch(
+ `${process.env.NEXT_PUBLIC_BACKEND_URL}/chat/follow-ups`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ credentials: "include",
+ body: JSON.stringify({
+ messages: recentMessages,
+ assistantResponse: assistantText,
+ }),
+ },
+ )
+
+ if (response.ok) {
+ const data = await response.json()
+ if (data.questions && Array.isArray(data.questions)) {
+ setFollowUpQuestions((prev) => ({
+ ...prev,
+ [message.id]: data.questions,
+ }))
+ }
+ }
+ } catch (error) {
+ console.error("Failed to generate follow-up questions:", error)
+ } finally {
+ setLoadingFollowUps((prev) => ({
+ ...prev,
+ [message.id]: false,
+ }))
+ }
+ }
+ }
+
+ // Only generate if not currently streaming or submitted
+ // Small delay to ensure message is fully processed
+ if (status !== "streaming" && status !== "submitted") {
+ const timeoutId = setTimeout(() => {
+ generateFollowUps()
+ }, 300)
+
+ return () => clearTimeout(timeoutId)
+ }
+ }, [messages, followUpQuestions, loadingFollowUps, status])
+
+ const checkIfScrolledToBottom = useCallback(() => {
+ if (!messagesContainerRef.current) return
+ const container = messagesContainerRef.current
+ const { scrollTop, scrollHeight, clientHeight } = container
+ const distanceFromBottom = scrollHeight - scrollTop - clientHeight
+ const isAtBottom = distanceFromBottom <= 20
+ setIsScrolledToBottom(isAtBottom)
+ }, [])
+
+ const scrollToBottom = useCallback(() => {
+ if (messagesContainerRef.current) {
+ messagesContainerRef.current.scrollTop =
+ messagesContainerRef.current.scrollHeight
+ setIsScrolledToBottom(true)
+ }
+ }, [])
+
+ const handleSend = () => {
+ if (!input.trim() || status === "submitted" || status === "streaming")
+ return
+ sendMessage({ text: input })
+ setInput("")
+ scrollToBottom()
+ }
+
+ const handleKeyDown = (e: React.KeyboardEvent) => {
+ if (e.key === "Enter" && !e.shiftKey) {
+ e.preventDefault()
+ handleSend()
+ }
+ }
+
+ const toggleChat = () => {
+ setIsChatOpen(!isChatOpen)
+ }
+
+ const handleCopyMessage = useCallback((messageId: string, text: string) => {
+ navigator.clipboard.writeText(text)
+ setCopiedMessageId(messageId)
+ setTimeout(() => setCopiedMessageId(null), 2000)
+ }, [])
+
+ const handleLikeMessage = useCallback((messageId: string) => {
+ setMessageFeedback((prev) => ({
+ ...prev,
+ [messageId]: prev[messageId] === "like" ? null : "like",
+ }))
+ }, [])
+
+ const handleDislikeMessage = useCallback((messageId: string) => {
+ setMessageFeedback((prev) => ({
+ ...prev,
+ [messageId]: prev[messageId] === "dislike" ? null : "dislike",
+ }))
+ }, [])
+
+ const handleToggleMemories = useCallback((messageId: string) => {
+ setExpandedMemories((prev) => (prev === messageId ? null : messageId))
+ }, [])
+
+ const handleNewChat = useCallback(() => {
+ const newId = crypto.randomUUID()
+ setCurrentChatId(newId)
+ setMessages([])
+ setInput("")
+ }, [setCurrentChatId, setMessages])
+
+ useEffect(() => {
+ const handleKeyDown = (e: KeyboardEvent) => {
+ if (
+ e.key.toLowerCase() === "t" &&
+ !e.metaKey &&
+ !e.ctrlKey &&
+ !e.altKey &&
+ isChatOpen &&
+ document.activeElement?.tagName !== "INPUT" &&
+ document.activeElement?.tagName !== "TEXTAREA"
+ ) {
+ e.preventDefault()
+ handleNewChat()
+ }
+ }
+
+ window.addEventListener("keydown", handleKeyDown)
+ return () => window.removeEventListener("keydown", handleKeyDown)
+ }, [isChatOpen, handleNewChat])
+
+ // Scroll to bottom when a new user message is added
+ useEffect(() => {
+ const lastMessage = messages[messages.length - 1]
+ if (lastMessage?.role === "user" && messagesContainerRef.current) {
+ messagesContainerRef.current.scrollTop =
+ messagesContainerRef.current.scrollHeight
+ setIsScrolledToBottom(true)
+ }
+ // Always check scroll position when messages change
+ checkIfScrolledToBottom()
+ }, [messages, checkIfScrolledToBottom])
+
+ // Add scroll event listener to track scroll position
+ useEffect(() => {
+ const container = messagesContainerRef.current
+ if (!container) return
+
+ const handleScroll = () => {
+ requestAnimationFrame(() => {
+ checkIfScrolledToBottom()
+ })
+ }
+
+ container.addEventListener("scroll", handleScroll, { passive: true })
+ // Initial check with a small delay to ensure DOM is ready
+ setTimeout(() => {
+ checkIfScrolledToBottom()
+ }, 100)
+
+ // Also observe resize to detect content height changes
+ const resizeObserver = new ResizeObserver(() => {
+ requestAnimationFrame(() => {
+ checkIfScrolledToBottom()
+ })
+ })
+ resizeObserver.observe(container)
+
+ return () => {
+ container.removeEventListener("scroll", handleScroll)
+ resizeObserver.disconnect()
+ }
+ }, [checkIfScrolledToBottom])
+
+ return (
+ <AnimatePresence mode="wait">
+ {!isChatOpen ? (
+ <motion.div
+ key="closed"
+ className={cn(
+ "absolute top-0 right-0 flex items-start justify-start m-4",
+ dmSansClassName(),
+ )}
+ layoutId="chat-toggle-button"
+ >
+ <motion.button
+ onClick={toggleChat}
+ className="flex items-center gap-2 rounded-full px-3 py-1.5 text-xs font-medium border border-[#17181A] text-white cursor-pointer"
+ style={{
+ background: "linear-gradient(180deg, #0A0E14 0%, #05070A 100%)",
+ }}
+ >
+ <NovaOrb size={24} className="blur-[0.6px]! z-10" />
+ Chat with Nova
+ </motion.button>
+ </motion.div>
+ ) : (
+ <motion.div
+ key="open"
+ className={cn(
+ "w-[450px] h-[calc(100vh-95px)] bg-[#05070A] backdrop-blur-md flex flex-col rounded-2xl m-4 mt-2 border border-[#17181AB2] relative pt-4",
+ dmSansClassName(),
+ )}
+ initial={{ x: "100px", opacity: 0 }}
+ animate={{ x: 0, opacity: 1 }}
+ exit={{ x: "100px", opacity: 0 }}
+ transition={{ duration: 0.3, ease: "easeOut", bounce: 0 }}
+ >
+ <div
+ className="absolute top-0 left-0 right-0 flex items-center justify-between pt-4 px-4 rounded-t-2xl"
+ style={{
+ background:
+ "linear-gradient(180deg, #0A0E14 40.49%, rgba(10, 14, 20, 0.00) 100%)",
+ }}
+ >
+ <ChatModelSelector
+ selectedModel={selectedModel}
+ onModelChange={setSelectedModel}
+ />
+ <div className="flex items-center gap-2">
+ <Button
+ variant="headers"
+ className="rounded-full text-base gap-2 h-10! border-[#73737333] bg-[#0D121A]"
+ style={{
+ boxShadow: "1.5px 1.5px 4.5px 0 rgba(0, 0, 0, 0.70) inset",
+ }}
+ >
+ <HistoryIcon className="size-4 text-[#737373]" />
+ </Button>
+ <Button
+ variant="headers"
+ className="rounded-full text-base gap-3 h-10! border-[#73737333] bg-[#0D121A] cursor-pointer"
+ style={{
+ boxShadow: "1.5px 1.5px 4.5px 0 rgba(0, 0, 0, 0.70) inset",
+ }}
+ onClick={handleNewChat}
+ title="New chat (T)"
+ >
+ <SquarePenIcon className="size-4 text-[#737373]" />
+ <span
+ className={cn(
+ "bg-[#21212180] border border-[#73737333] text-[#737373] rounded-sm size-4 text-[10px] flex items-center justify-center",
+ dmSansClassName(),
+ )}
+ >
+ T
+ </span>
+ </Button>
+ <motion.button
+ onClick={toggleChat}
+ className="flex items-center gap-2 rounded-full p-2 text-xs text-white cursor-pointer"
+ layoutId="chat-toggle-button"
+ >
+ <PanelRightCloseIcon className="size-4" />
+ </motion.button>
+ </div>
+ </div>
+ <div
+ ref={messagesContainerRef}
+ className={cn(
+ "flex-1 overflow-y-auto px-4 scrollbar-thin",
+ dmSansClassName(),
+ )}
+ >
+ {isInputExpanded && (
+ <div
+ className="absolute inset-0 z-10! rounded-2xl pointer-events-none"
+ style={{ backgroundColor: "#000000E5" }}
+ />
+ )}
+ {messages.length === 0 && (
+ <ChatEmptyStatePlaceholder
+ onSuggestionClick={(suggestion) => {
+ sendMessage({ text: suggestion })
+ }}
+ />
+ )}
+ <div
+ className={cn(
+ messages.length > 0
+ ? "flex flex-col space-y-3 min-h-full justify-end pt-14"
+ : "",
+ )}
+ >
+ {messages.map((message, index) => (
+ // biome-ignore lint/a11y/noStaticElementInteractions: Hover detection for message actions
+ <div
+ key={message.id}
+ className={cn(
+ "flex gap-2 w-full",
+ message.role === "user" ? "justify-end" : "justify-start",
+ )}
+ onMouseEnter={() =>
+ message.role === "assistant" &&
+ setHoveredMessageId(message.id)
+ }
+ onMouseLeave={() =>
+ message.role === "assistant" && setHoveredMessageId(null)
+ }
+ >
+ {message.role === "user" ? (
+ <UserMessage
+ message={message}
+ copiedMessageId={copiedMessageId}
+ onCopy={handleCopyMessage}
+ />
+ ) : (
+ <AgentMessage
+ message={message}
+ index={index}
+ messagesLength={messages.length}
+ hoveredMessageId={hoveredMessageId}
+ copiedMessageId={copiedMessageId}
+ messageFeedback={messageFeedback}
+ expandedMemories={expandedMemories}
+ followUpQuestions={followUpQuestions[message.id] || []}
+ isLoadingFollowUps={loadingFollowUps[message.id] || false}
+ onCopy={handleCopyMessage}
+ onLike={handleLikeMessage}
+ onDislike={handleDislikeMessage}
+ onToggleMemories={handleToggleMemories}
+ onQuestionClick={(question) => {
+ setInput(question)
+ }}
+ />
+ )}
+ </div>
+ ))}
+ {(status === "submitted" || status === "streaming") &&
+ messages[messages.length - 1]?.role === "user" && (
+ <div className="flex gap-2">
+ <SuperLoader label="Thinking..." />
+ </div>
+ )}
+ </div>
+ </div>
+
+ {!isScrolledToBottom && messages.length > 0 && (
+ <div className="absolute bottom-24 left-0 right-0 flex justify-center z-50 pointer-events-none">
+ <button
+ type="button"
+ className="cursor-pointer pointer-events-auto"
+ onClick={scrollToBottom}
+ >
+ <div className="rounded-full p-2 bg-[#0D121A] shadow-[1.5px_1.5px_4.5px_0_rgba(0,0,0,0.70)_inset] hover:bg-[#0F1620] transition-colors">
+ <ChevronDownIcon className="size-4 text-white" />
+ </div>
+ </button>
+ </div>
+ )}
+
+ <ChatInput
+ value={input}
+ onChange={(e) => setInput(e.target.value)}
+ onSend={handleSend}
+ onStop={stop}
+ onKeyDown={handleKeyDown}
+ isResponding={status === "submitted" || status === "streaming"}
+ activeStatus={
+ status === "submitted"
+ ? "Thinking..."
+ : status === "streaming"
+ ? "Structuring response..."
+ : "Waiting for input..."
+ }
+ onExpandedChange={setIsInputExpanded}
+ chainOfThoughtComponent={
+ messages.length > 0 ? (
+ <ChainOfThought messages={messages} />
+ ) : null
+ }
+ />
+ </motion.div>
+ )}
+ </AnimatePresence>
+ )
+}
diff --git a/apps/web/components/new/chat/input/actions.tsx b/apps/web/components/new/chat/input/actions.tsx
new file mode 100644
index 00000000..a8b2351d
--- /dev/null
+++ b/apps/web/components/new/chat/input/actions.tsx
@@ -0,0 +1,50 @@
+import { cn } from "@lib/utils"
+import { SquareIcon } from "lucide-react"
+
+export function SendButton({
+ onClick,
+ disabled,
+}: {
+ onClick: () => void
+ disabled: boolean
+}) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ disabled={disabled}
+ className={cn(
+ "bg-[#000000] border-[#161F2C] border p-2 rounded-lg shrink-0 transition-opacity",
+ disabled
+ ? "opacity-50 cursor-not-allowed"
+ : "cursor-pointer hover:bg-[#161F2C]",
+ )}
+ >
+ <svg
+ width="16"
+ height="16"
+ viewBox="0 0 12 16"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Send Icon</title>
+ <path
+ d="M12 6L10.55 7.4L7 3.85L7 16L5 16L5 3.85L1.45 7.4L-4.37114e-07 6L6 -2.62268e-07L12 6Z"
+ fill="#FAFAFA"
+ />
+ </svg>
+ </button>
+ )
+}
+
+export function StopButton({ onClick }: { onClick: () => void }) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ className="bg-[#000000] border-[#161F2C] border p-2 rounded-lg shrink-0 cursor-pointer hover:bg-[#161F2C] transition-opacity"
+ >
+ <SquareIcon className="size-4 text-white fill-white" />
+ </button>
+ )
+}
diff --git a/apps/web/components/new/chat/input/chain-of-thought.tsx b/apps/web/components/new/chat/input/chain-of-thought.tsx
new file mode 100644
index 00000000..0371a97e
--- /dev/null
+++ b/apps/web/components/new/chat/input/chain-of-thought.tsx
@@ -0,0 +1,215 @@
+import { useAuth } from "@lib/auth-context"
+import { Avatar, AvatarFallback, AvatarImage } from "@ui/components/avatar"
+import type { UIMessage } from "@ai-sdk/react"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+interface MemoryResult {
+ documentId?: string
+ title?: string
+ content?: string
+ url?: string
+ score?: number
+}
+
+interface ReasoningStep {
+ type: string
+ state?: string
+ message: string
+}
+
+export function ChainOfThought({ messages }: { messages: UIMessage[] }) {
+ const { user } = useAuth()
+
+ // Group messages into user-assistant pairs
+ const messagePairs: Array<{
+ userMessage: UIMessage
+ agentMessage?: UIMessage
+ }> = []
+
+ for (let i = 0; i < messages.length; i++) {
+ const message = messages[i]!
+ if (message.role === "user") {
+ // Find the next assistant message after this user message
+ const agentMessage = messages
+ .slice(i + 1)
+ .find((msg) => msg.role === "assistant")
+ messagePairs.push({
+ userMessage: message,
+ agentMessage,
+ })
+ }
+ }
+
+ return (
+ <div className="m-3 mb-0 space-y-3 relative z-10">
+ <div className="absolute left-[11px] top-0 bottom-0 w-px bg-[#151F31] self-stretch mb-0 -z-10" />
+
+ {messagePairs.map((pair, pairIdx) => {
+ const userMessageText =
+ pair.userMessage.parts.find((part) => part.type === "text")?.text ??
+ ""
+
+ const reasoningSteps: ReasoningStep[] = []
+ if (pair.agentMessage) {
+ pair.agentMessage.parts.forEach((part) => {
+ if (part.type === "tool-searchMemories") {
+ if (
+ part.state === "input-available" ||
+ part.state === "input-streaming"
+ ) {
+ reasoningSteps.push({
+ type: part.type,
+ state: part.state,
+ message: "Searching memories...",
+ })
+ } else if (part.state === "output-available") {
+ reasoningSteps.push({
+ type: part.type,
+ state: part.state,
+ message: "Found relevant memories",
+ })
+ } else if (part.state === "output-error") {
+ reasoningSteps.push({
+ type: part.type,
+ state: part.state,
+ message: "Error searching memories",
+ })
+ }
+ }
+ })
+ }
+
+ const memoryResults: MemoryResult[] = []
+ if (pair.agentMessage) {
+ pair.agentMessage.parts.forEach((part) => {
+ if (
+ part.type === "tool-searchMemories" &&
+ part.state === "output-available"
+ ) {
+ const output = part.output as
+ | { results?: MemoryResult[] }
+ | undefined
+ const results = Array.isArray(output?.results)
+ ? output.results
+ : []
+ memoryResults.push(...results)
+ }
+ })
+ }
+
+ return (
+ <div key={pair.userMessage.id || pairIdx} className="space-y-3">
+ <div className="flex items-start gap-3 text-[#525D6E] py-1">
+ {user && (
+ <Avatar className="size-[21px]">
+ <AvatarImage src={user?.image ?? ""} />
+ <AvatarFallback className="text-[10px]">
+ {user?.name?.charAt(0)}
+ </AvatarFallback>
+ </Avatar>
+ )}
+ <p>{userMessageText}</p>
+ </div>
+
+ {(reasoningSteps.length > 0 || memoryResults.length > 0) && (
+ <div className="flex gap-3">
+ <div className="flex flex-col items-center mx-2 py-1 h-fit">
+ <div className="size-[7px] rounded-full bg-[#151F31] shrink-0" />
+ </div>
+
+ <div className="flex-1 space-y-1">
+ {reasoningSteps.length > 0 && (
+ <div className="space-y-1.5">
+ {reasoningSteps.map((step, idx) => (
+ <div
+ key={`${step.type}-${step.state}-${idx}`}
+ className="text-[#525D6E]"
+ >
+ {step.message}
+ </div>
+ ))}
+ </div>
+ )}
+
+ {memoryResults.length > 0 && (
+ <div className="grid grid-cols-2 gap-2 max-h-64 overflow-y-auto">
+ {memoryResults.map((result, idx) => {
+ const isClickable =
+ result.url &&
+ (result.url.startsWith("http://") ||
+ result.url.startsWith("https://"))
+
+ const content = (
+ <div className="">
+ <div className="bg-[#060D17] p-2 px-[10px] rounded-xl m-[2px]">
+ {result.title && (
+ <div className="text-xs text-[#525D6E] line-clamp-2">
+ {result.title}
+ </div>
+ )}
+ {result.content && (
+ <div className="text-xs text-[#525D6E]/80 line-clamp-2 mt-1">
+ {result.content}
+ </div>
+ )}
+ {result.url && (
+ <div className="text-xs text-[#525D6E] mt-1 truncate">
+ {result.url}
+ </div>
+ )}
+ </div>
+ {result.score && (
+ <div className="flex justify-center p-1">
+ <div
+ className={cn(
+ "text-[10px] inline-block bg-clip-text text-transparent font-medium",
+ dmSansClassName(),
+ )}
+ style={{
+ backgroundImage:
+ "var(--grad-1, linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%))",
+ }}
+ >
+ Relevancy score:{" "}
+ {(result.score * 100).toFixed(1)}%
+ </div>
+ </div>
+ )}
+ </div>
+ )
+
+ if (isClickable) {
+ return (
+ <a
+ className="block p-2 bg-[#0C1829]/50 rounded-md border border-[#525D6E]/20 hover:bg-[#0C1829]/70 transition-colors cursor-pointer"
+ href={result.url}
+ key={result.documentId || idx}
+ rel="noopener noreferrer"
+ target="_blank"
+ >
+ {content}
+ </a>
+ )
+ }
+
+ return (
+ <div
+ className={cn("bg-[#0C1829] rounded-xl")}
+ key={result.documentId || idx}
+ >
+ {content}
+ </div>
+ )
+ })}
+ </div>
+ )}
+ </div>
+ </div>
+ )}
+ </div>
+ )
+ })}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/input/index.tsx b/apps/web/components/new/chat/input/index.tsx
new file mode 100644
index 00000000..4294add5
--- /dev/null
+++ b/apps/web/components/new/chat/input/index.tsx
@@ -0,0 +1,133 @@
+"use client"
+
+import { ChevronUpIcon } from "lucide-react"
+import NovaOrb from "@/components/nova/nova-orb"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import { useRef, useState } from "react"
+import { motion } from "motion/react"
+import { SendButton, StopButton } from "./actions"
+
+interface ChatInputProps {
+ value: string
+ onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void
+ onSend: () => void
+ onStop: () => void
+ onKeyDown?: (e: React.KeyboardEvent) => void
+ isResponding?: boolean
+ activeStatus?: string
+ chainOfThoughtComponent?: React.ReactNode
+ onExpandedChange?: (expanded: boolean) => void
+}
+
+export default function ChatInput({
+ value,
+ onChange,
+ onSend,
+ onStop,
+ onKeyDown,
+ isResponding = false,
+ activeStatus,
+ chainOfThoughtComponent,
+ onExpandedChange,
+}: ChatInputProps) {
+ const [isMultiline, setIsMultiline] = useState(false)
+ const [isExpanded, setIsExpanded] = useState(false)
+ const textareaRef = useRef<HTMLTextAreaElement>(null)
+
+ const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
+ onChange(e)
+
+ const textarea = e.target
+ textarea.style.height = "auto"
+
+ // Set height based on scrollHeight, with a max of ~96px (4-5 lines)
+ const newHeight = Math.min(textarea.scrollHeight, 96)
+ textarea.style.height = `${newHeight}px`
+
+ setIsMultiline(textarea.scrollHeight > 52)
+ }
+
+ return (
+ <motion.div
+ className={cn("relative z-20!")}
+ animate={{
+ padding: isExpanded ? "16px" : "0",
+ margin: isExpanded ? "0" : "16px",
+ borderRadius: isExpanded ? "0 0 12px 12px" : "12px",
+ backgroundColor: isExpanded ? "#000B1B" : "#01173C",
+ }}
+ transition={{
+ duration: 0.3,
+ ease: "easeOut",
+ }}
+ >
+ <div
+ className={cn(
+ "absolute bottom-full left-0 right-0 overflow-hidden transition-all duration-300 ease-out bg-[#000B1B]",
+ isExpanded
+ ? "max-h-[60vh] opacity-100 overflow-y-auto pt-1.5 pb-2 rounded-t-xl px-4"
+ : "max-h-0 opacity-0",
+ )}
+ style={{
+ zIndex: isExpanded ? 50 : 0,
+ }}
+ >
+ {chainOfThoughtComponent}
+ </div>
+ <button
+ type="button"
+ className={cn(
+ "w-full p-3 pr-4 flex items-center justify-between cursor-pointer bg-transparent border-0 text-left",
+ !chainOfThoughtComponent && "disabled:cursor-not-allowed",
+ )}
+ onClick={() => {
+ const newExpanded = !isExpanded
+ setIsExpanded(newExpanded)
+ onExpandedChange?.(newExpanded)
+ }}
+ disabled={!chainOfThoughtComponent}
+ >
+ <div className="flex items-center gap-3">
+ <NovaOrb size={24} className="blur-[1px]! z-10" />
+ <p className={cn("text-[#525D6E]", dmSansClassName())}>
+ {activeStatus || "Waiting for input..."}
+ </p>
+ </div>
+ {chainOfThoughtComponent && (
+ <ChevronUpIcon
+ className={cn(
+ "size-4 text-[#525D6E] transition-transform duration-300",
+ isExpanded && "rotate-180",
+ )}
+ />
+ )}
+ </button>
+ <div
+ className={cn(
+ "flex items-end gap-2 bg-[#070E1B] rounded-xl p-2 border-[#52596633] border focus-within:outline-[#525D6EB2] focus-within:outline-1 transition-all duration-200",
+ isMultiline && "flex-col",
+ )}
+ >
+ <textarea
+ ref={textareaRef}
+ value={value}
+ onChange={handleChange}
+ onKeyDown={onKeyDown}
+ placeholder="Ask your supermemory..."
+ className="bg-transparent w-full p-2 placeholder:text-[#525D6E] focus:outline-none resize-none overflow-y-auto transition-all duration-200"
+ style={{ minHeight: "36px" }}
+ rows={1}
+ disabled={isResponding}
+ />
+ <div className="transition-all duration-200">
+ {isResponding ? (
+ <StopButton onClick={onStop} />
+ ) : (
+ <SendButton onClick={onSend} disabled={!value.trim()} />
+ )}
+ </div>
+ </div>
+ </motion.div>
+ )
+}
diff --git a/apps/web/components/new/chat/message/agent-message.tsx b/apps/web/components/new/chat/message/agent-message.tsx
new file mode 100644
index 00000000..bf9f0eb0
--- /dev/null
+++ b/apps/web/components/new/chat/message/agent-message.tsx
@@ -0,0 +1,108 @@
+"use client"
+
+import type { UIMessage } from "@ai-sdk/react"
+import { Streamdown } from "streamdown"
+import { RelatedMemories } from "./related-memories"
+import { MessageActions } from "./message-actions"
+import { FollowUpQuestions } from "./follow-up-questions"
+
+interface AgentMessageProps {
+ message: UIMessage
+ index: number
+ messagesLength: number
+ hoveredMessageId: string | null
+ copiedMessageId: string | null
+ messageFeedback: Record<string, "like" | "dislike" | null>
+ expandedMemories: string | null
+ followUpQuestions?: string[]
+ isLoadingFollowUps?: boolean
+ onCopy: (messageId: string, text: string) => void
+ onLike: (messageId: string) => void
+ onDislike: (messageId: string) => void
+ onToggleMemories: (messageId: string) => void
+ onQuestionClick?: (question: string) => void
+}
+
+export function AgentMessage({
+ message,
+ index,
+ messagesLength,
+ hoveredMessageId,
+ copiedMessageId,
+ messageFeedback,
+ expandedMemories,
+ followUpQuestions = [],
+ isLoadingFollowUps = false,
+ onCopy,
+ onLike,
+ onDislike,
+ onToggleMemories,
+ onQuestionClick,
+}: AgentMessageProps) {
+ const isLastAgentMessage =
+ index === messagesLength - 1 && message.role === "assistant"
+ const isHovered = hoveredMessageId === message.id
+ const messageText = message.parts
+ .filter((part) => part.type === "text")
+ .map((part) => part.text)
+ .join(" ")
+
+ return (
+ <div className="flex flex-col gap-1 w-full">
+ <div className="flex gap-2">
+ <div className="flex flex-col gap-2 w-full">
+ <RelatedMemories
+ message={message}
+ expandedMemories={expandedMemories}
+ onToggle={onToggleMemories}
+ />
+
+ {message.parts.map((part, partIndex) => {
+ if (part.type === "text") {
+ return (
+ <div
+ key={`${message.id}-${partIndex}`}
+ className="text-sm text-white/90 chat-markdown-content"
+ >
+ <Streamdown>{part.text}</Streamdown>
+ </div>
+ )
+ }
+ if (part.type === "tool-searchMemories") {
+ if (
+ part.state === "input-available" ||
+ part.state === "input-streaming"
+ ) {
+ return (
+ <div
+ key={`${message.id}-${partIndex}`}
+ className="text-xs text-white/50 italic"
+ >
+ Searching memories...
+ </div>
+ )
+ }
+ }
+ return null
+ })}
+ <FollowUpQuestions
+ questions={followUpQuestions}
+ isLoading={isLoadingFollowUps}
+ onQuestionClick={onQuestionClick || (() => {})}
+ />
+ </div>
+ </div>
+ <MessageActions
+ messageId={message.id}
+ messageText={messageText}
+ isLastMessage={isLastAgentMessage}
+ isHovered={isHovered}
+ copiedMessageId={copiedMessageId}
+ messageFeedback={messageFeedback}
+ onCopy={onCopy}
+ onLike={onLike}
+ onDislike={onDislike}
+ />
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/message/follow-up-questions.tsx b/apps/web/components/new/chat/message/follow-up-questions.tsx
new file mode 100644
index 00000000..b4085536
--- /dev/null
+++ b/apps/web/components/new/chat/message/follow-up-questions.tsx
@@ -0,0 +1,56 @@
+"use client"
+
+import { ArrowRightIcon } from "lucide-react"
+import { cn } from "@lib/utils"
+
+interface FollowUpQuestionsProps {
+ questions: string[]
+ onQuestionClick: (question: string) => void
+ isLoading?: boolean
+}
+
+export function FollowUpQuestions({
+ questions,
+ onQuestionClick,
+ isLoading = false,
+}: FollowUpQuestionsProps) {
+ if (isLoading) {
+ return (
+ <div className="mt-3 flex flex-col gap-2">
+ <div
+ key="skeleton-0"
+ className="h-4 w-28 animate-pulse rounded-full bg-white/10"
+ />
+ <div
+ key="skeleton-1"
+ className="h-4 w-36 animate-pulse rounded-full bg-white/10"
+ />
+ </div>
+ )
+ }
+
+ if (questions.length === 0) {
+ return null
+ }
+
+ return (
+ <div className="flex flex-wrap mt-2 gap-3">
+ <div className="text-xs">Follow up questions:</div>
+ <div className="flex flex-wrap">
+ {questions.map((question) => (
+ <button
+ key={question}
+ type="button"
+ onClick={() => onQuestionClick(question)}
+ className={cn(
+ "group flex items-center gap-1.5 rounded-full py-1 text-sm text-[#267BF1] transition-all hover:underline cursor-pointer text-start",
+ )}
+ >
+ <ArrowRightIcon className="size-3.5" />
+ <span>{question}</span>
+ </button>
+ ))}
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/message/message-actions.tsx b/apps/web/components/new/chat/message/message-actions.tsx
new file mode 100644
index 00000000..bbb1f384
--- /dev/null
+++ b/apps/web/components/new/chat/message/message-actions.tsx
@@ -0,0 +1,80 @@
+import { Copy, Check, ThumbsUp, ThumbsDown } from "lucide-react"
+import { cn } from "@lib/utils"
+
+interface MessageActionsProps {
+ messageId: string
+ messageText: string
+ isLastMessage: boolean
+ isHovered: boolean
+ copiedMessageId: string | null
+ messageFeedback: Record<string, "like" | "dislike" | null>
+ onCopy: (messageId: string, text: string) => void
+ onLike: (messageId: string) => void
+ onDislike: (messageId: string) => void
+}
+
+export function MessageActions({
+ messageId,
+ messageText,
+ isLastMessage,
+ isHovered,
+ copiedMessageId,
+ messageFeedback,
+ onCopy,
+ onLike,
+ onDislike,
+}: MessageActionsProps) {
+ const shouldShowActions = isHovered || isLastMessage
+
+ return (
+ <div
+ className={cn(
+ "flex items-center gap-1 transition-opacity duration-200",
+ shouldShowActions ? "opacity-100" : "opacity-0",
+ )}
+ >
+ <button
+ type="button"
+ onClick={() => onCopy(messageId, messageText)}
+ className="p-1.5 hover:bg-white/10 rounded transition-colors"
+ title="Copy message"
+ >
+ {copiedMessageId === messageId ? (
+ <Check className="size-3.5 text-green-400" />
+ ) : (
+ <Copy className="size-3.5 text-white/50 hover:text-white/80" />
+ )}
+ </button>
+ <button
+ type="button"
+ onClick={() => onLike(messageId)}
+ className="p-1.5 hover:bg-white/10 rounded transition-colors"
+ title="Like message"
+ >
+ <ThumbsUp
+ className={cn(
+ "size-3.5 transition-colors",
+ messageFeedback[messageId] === "like"
+ ? "text-green-400 fill-green-400"
+ : "text-white/50 hover:text-white/80",
+ )}
+ />
+ </button>
+ <button
+ type="button"
+ onClick={() => onDislike(messageId)}
+ className="p-1.5 hover:bg-white/10 rounded transition-colors"
+ title="Dislike message"
+ >
+ <ThumbsDown
+ className={cn(
+ "size-3.5 transition-colors",
+ messageFeedback[messageId] === "dislike"
+ ? "text-red-400 fill-red-400"
+ : "text-white/50 hover:text-white/80",
+ )}
+ />
+ </button>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/message/related-memories.tsx b/apps/web/components/new/chat/message/related-memories.tsx
new file mode 100644
index 00000000..f3b406db
--- /dev/null
+++ b/apps/web/components/new/chat/message/related-memories.tsx
@@ -0,0 +1,135 @@
+import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"
+import type { UIMessage } from "@ai-sdk/react"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+
+interface MemoryResult {
+ documentId?: string
+ title?: string
+ content?: string
+ url?: string
+ score?: number
+}
+
+interface RelatedMemoriesProps {
+ message: UIMessage
+ expandedMemories: string | null
+ onToggle: (messageId: string) => void
+}
+
+export function RelatedMemories({
+ message,
+ expandedMemories,
+ onToggle,
+}: RelatedMemoriesProps) {
+ const memoryResults: MemoryResult[] = []
+
+ message.parts.forEach((part) => {
+ if (
+ part.type === "tool-searchMemories" &&
+ part.state === "output-available"
+ ) {
+ const output = part.output as { results?: MemoryResult[] } | undefined
+ const results = Array.isArray(output?.results) ? output.results : []
+ memoryResults.push(...results)
+ }
+ })
+
+ if (memoryResults.length === 0) {
+ return null
+ }
+
+ const isExpanded = expandedMemories === message.id
+
+ return (
+ <div className="mb-2">
+ <button
+ type="button"
+ className={cn(
+ "flex items-center gap-2 text-white/50 hover:text-white/70 transition-colors text-sm",
+ dmSansClassName(),
+ )}
+ onClick={() => onToggle(message.id)}
+ >
+ Related memories
+ {isExpanded ? (
+ <ChevronUpIcon className="size-3.5" />
+ ) : (
+ <ChevronDownIcon className="size-3.5" />
+ )}
+ </button>
+
+ {isExpanded && (
+ <div className="mt-2 grid grid-cols-2 gap-2 max-h-64 overflow-y-auto items-start">
+ {memoryResults.map((result, idx) => {
+ const isClickable =
+ result.url &&
+ (result.url.startsWith("http://") ||
+ result.url.startsWith("https://"))
+
+ const content = (
+ <div className="">
+ <div className="bg-[#060D17] p-2 rounded-t-[11px] rounded-b-[6px] m-[2px]">
+ {result.title && (
+ <div className="text-xs text-[#525D6E] line-clamp-2">
+ {result.title}
+ </div>
+ )}
+ {result.content && (
+ <div className="text-xs text-[#525D6E] line-clamp-2">
+ {result.content}
+ </div>
+ )}
+ {result.url && (
+ <div className="text-xs text-[#525D6E] mt-1 truncate">
+ {result.url}
+ </div>
+ )}
+ </div>
+ {result.score && (
+ <div className="flex justify-center p-[4px]">
+ <div
+ className={cn(
+ "text-[10px] inline-block bg-clip-text text-transparent font-medium",
+ dmSansClassName(),
+ )}
+ style={{
+ backgroundImage:
+ "var(--grad-1, linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%))",
+ }}
+ >
+ Relevancy score: {(result.score * 100).toFixed(1)}%
+ </div>
+ </div>
+ )}
+ </div>
+ )
+
+ if (isClickable) {
+ return (
+ <a
+ className="block p-2 bg-white/5 rounded-md border border-white/10 hover:bg-white/10 transition-colors cursor-pointer"
+ href={result.url}
+ key={result.documentId || idx}
+ rel="noopener noreferrer"
+ target="_blank"
+ >
+ {content}
+ </a>
+ )
+ }
+
+ return (
+ <div
+ className={cn("bg-[#0C1829] rounded-xl", dmSansClassName())}
+ key={result.documentId || idx}
+ >
+ {content}
+ </div>
+ )
+ })}
+ </div>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/message/user-message.tsx b/apps/web/components/new/chat/message/user-message.tsx
new file mode 100644
index 00000000..8e5d8c5b
--- /dev/null
+++ b/apps/web/components/new/chat/message/user-message.tsx
@@ -0,0 +1,41 @@
+"use client"
+
+import { Copy, Check } from "lucide-react"
+import type { UIMessage } from "@ai-sdk/react"
+
+interface UserMessageProps {
+ message: UIMessage
+ copiedMessageId: string | null
+ onCopy: (messageId: string, text: string) => void
+}
+
+export function UserMessage({
+ message,
+ copiedMessageId,
+ onCopy,
+}: UserMessageProps) {
+ const text = message.parts
+ .filter((part) => part.type === "text")
+ .map((part) => part.text)
+ .join(" ")
+
+ return (
+ <div className="flex flex-col items-end w-full">
+ <div className="bg-[#1B1F24] rounded-[12px] p-3 px-[14px] max-w-[80%]">
+ <p className="text-sm text-white">{text}</p>
+ </div>
+ <button
+ type="button"
+ onClick={() => onCopy(message.id, text)}
+ className="p-1.5 hover:bg-[#293952]/40 rounded transition-colors mt-1"
+ title="Copy message"
+ >
+ {copiedMessageId === message.id ? (
+ <Check className="size-3.5 text-green-400" />
+ ) : (
+ <Copy className="size-3.5 text-white/50" />
+ )}
+ </button>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/chat/model-selector.tsx b/apps/web/components/new/chat/model-selector.tsx
new file mode 100644
index 00000000..9cecafc2
--- /dev/null
+++ b/apps/web/components/new/chat/model-selector.tsx
@@ -0,0 +1,101 @@
+"use client"
+
+import { useState } from "react"
+import { cn } from "@lib/utils"
+import { Button } from "@ui/components/button"
+import { dmSansClassName } from "@/utils/fonts"
+import { ChevronDownIcon } from "lucide-react"
+import { models, type ModelId, modelNames } from "@/lib/models"
+
+interface ChatModelSelectorProps {
+ selectedModel?: ModelId
+ onModelChange?: (model: ModelId) => void
+}
+
+export default function ChatModelSelector({
+ selectedModel: selectedModelProp,
+ onModelChange,
+}: ChatModelSelectorProps = {}) {
+ const [internalModel, setInternalModel] = useState<ModelId>("gemini-2.5-pro")
+ const [isOpen, setIsOpen] = useState(false)
+
+ const selectedModel = selectedModelProp ?? internalModel
+ const currentModelData = modelNames[selectedModel]
+
+ const handleModelSelect = (modelId: ModelId) => {
+ if (onModelChange) {
+ onModelChange(modelId)
+ } else {
+ setInternalModel(modelId)
+ }
+ setIsOpen(false)
+ }
+
+ return (
+ <div className="relative flex items-center gap-2">
+ <Button
+ variant="headers"
+ className={cn(
+ "rounded-full text-base gap-1 h-10! border-[#73737333] bg-[#0D121A]",
+ dmSansClassName(),
+ )}
+ style={{
+ boxShadow: "1.5px 1.5px 4.5px 0 rgba(0, 0, 0, 0.70) inset",
+ }}
+ onClick={() => setIsOpen(!isOpen)}
+ >
+ <p className="text-sm">
+ {currentModelData.name}{" "}
+ <span className="text-[#737373]">{currentModelData.version}</span>
+ </p>
+ <ChevronDownIcon className="size-4 text-[#737373]" />
+ </Button>
+
+ {isOpen && (
+ <>
+ <button
+ type="button"
+ className="fixed inset-0 z-40"
+ onClick={() => setIsOpen(false)}
+ onKeyDown={(e) => e.key === "Escape" && setIsOpen(false)}
+ aria-label="Close model selector"
+ />
+
+ <div className="absolute top-full left-0 mt-2 w-64 bg-[#0D121A] backdrop-blur-xl border border-[#73737333] rounded-lg shadow-xl z-50 overflow-hidden">
+ <div className="p-2 space-y-1">
+ {models.map((model) => {
+ const modelData = modelNames[model.id]
+ return (
+ <button
+ key={model.id}
+ type="button"
+ className={cn(
+ "flex flex-col items-start p-2 px-3 rounded-md transition-colors cursor-pointer w-full text-left",
+ selectedModel === model.id
+ ? "bg-[#293952]/60"
+ : "hover:bg-[#293952]/40",
+ )}
+ onClick={() => handleModelSelect(model.id)}
+ onKeyDown={(e) =>
+ e.key === "Enter" && handleModelSelect(model.id)
+ }
+ >
+ <div className="text-sm font-medium text-white">
+ {modelData.name}{" "}
+ <span className="text-[#737373]">
+ {modelData.version}
+ </span>
+ </div>
+ <div className="text-xs text-[#737373] truncate w-full">
+ {model.description}
+ </div>
+ </button>
+ )
+ })}
+ </div>
+ </div>
+ </>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/file-preview.tsx b/apps/web/components/new/document-cards/file-preview.tsx
new file mode 100644
index 00000000..6f72c0e3
--- /dev/null
+++ b/apps/web/components/new/document-cards/file-preview.tsx
@@ -0,0 +1,188 @@
+"use client"
+
+import { useState } from "react"
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { PDF } from "@ui/assets/icons"
+import { FileText, Image, Video } from "lucide-react"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+function PDFIcon() {
+ return (
+ <svg
+ width="8"
+ height="10"
+ viewBox="0 0 8 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>PDF Icon</title>
+ <g filter="url(#filter0_i_719_6586)">
+ <path
+ d="M1 10C0.725 10 0.489583 9.90208 0.29375 9.70625C0.0979167 9.51042 0 9.275 0 9V1C0 0.725 0.0979167 0.489583 0.29375 0.29375C0.489583 0.0979167 0.725 0 1 0H5L8 3V9C8 9.275 7.90208 9.51042 7.70625 9.70625C7.51042 9.90208 7.275 10 7 10H1ZM4.5 3.5V1H1V9H7V3.5H4.5Z"
+ fill="#FF7673"
+ />
+ </g>
+ <defs>
+ <filter
+ id="filter0_i_719_6586"
+ x="0"
+ y="0"
+ width="8.25216"
+ height="10.2522"
+ filterUnits="userSpaceOnUse"
+ color-interpolation-filters="sRGB"
+ >
+ <feFlood flood-opacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feColorMatrix
+ in="SourceAlpha"
+ type="matrix"
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
+ result="hardAlpha"
+ />
+ <feOffset dx="0.252163" dy="0.252163" />
+ <feGaussianBlur stdDeviation="0.504325" />
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
+ <feColorMatrix
+ type="matrix"
+ values="0 0 0 0 0.0431373 0 0 0 0 0.0588235 0 0 0 0 0.0823529 0 0 0 0.4 0"
+ />
+ <feBlend
+ mode="normal"
+ in2="shape"
+ result="effect1_innerShadow_719_6586"
+ />
+ </filter>
+ </defs>
+ </svg>
+ )
+}
+
+function getFileTypeInfo(document: DocumentWithMemories): {
+ icon: React.ReactNode
+ extension: string
+ color?: string
+} {
+ const type = document.type?.toLowerCase()
+ const mimeType = document.metadata?.mimeType as string | undefined
+
+ if (mimeType) {
+ if (mimeType === "application/pdf") {
+ return {
+ icon: <PDFIcon />,
+ extension: ".pdf",
+ color: "#FF7673",
+ }
+ }
+ if (mimeType.startsWith("image/")) {
+ const ext = mimeType.split("/")[1] || "jpg"
+ return {
+ icon: <Image className="w-4 h-4" style={{ color: "#FAFAFA" }} />,
+ extension: `.${ext}`,
+ }
+ }
+ if (mimeType.startsWith("video/")) {
+ const ext = mimeType.split("/")[1] || "mp4"
+ return {
+ icon: <Video className="w-4 h-4" style={{ color: "#FAFAFA" }} />,
+ extension: `.${ext}`,
+ }
+ }
+ }
+
+ switch (type) {
+ case "pdf":
+ return {
+ icon: <PDF className="w-4 h-4 text-[#FF7673]" />,
+ extension: ".pdf",
+ color: "#FF7673",
+ }
+ case "image":
+ return {
+ icon: <Image className="w-4 h-4" style={{ color: "#FAFAFA" }} />,
+ extension: ".jpg",
+ }
+ case "video":
+ return {
+ icon: <Video className="w-4 h-4" style={{ color: "#FAFAFA" }} />,
+ extension: ".mp4",
+ }
+ default:
+ return {
+ icon: <FileText className="w-4 h-4" style={{ color: "#FAFAFA" }} />,
+ extension: ".file",
+ }
+ }
+}
+
+export function FilePreview({ document }: { document: DocumentWithMemories }) {
+ const [imageError, setImageError] = useState(false)
+ const { icon, extension, color } = getFileTypeInfo(document)
+
+ const type = document.type?.toLowerCase()
+ const mimeType = document.metadata?.mimeType as string | undefined
+ const isImage =
+ (mimeType?.startsWith("image/") || type === "image") &&
+ document.url &&
+ !imageError
+
+ return (
+ <div className="bg-[#0B1017] rounded-[18px] gap-3 relative overflow-hidden">
+ {color && (
+ <div
+ className="absolute left-0 top-3 bottom-3 w-[2px]"
+ style={{
+ background: `linear-gradient(to bottom, transparent, ${color} 10%, ${color} 90%, transparent)`,
+ }}
+ />
+ )}
+ {isImage && document.url ? (
+ <div className="relative w-full overflow-hidden flex items-center justify-center">
+ <div
+ className="absolute inset-0 bg-cover bg-center"
+ style={{
+ backgroundImage: `url(${document.url})`,
+ filter: "blur(10px)",
+ transform: "scale(1.1)",
+ }}
+ />
+ <div className="absolute inset-0 bg-black/20" />
+ <img
+ src={document.url}
+ alt={document.title || "Image preview"}
+ className="relative max-w-full max-h-full w-auto h-auto object-contain z-10"
+ onError={() => setImageError(true)}
+ loading="lazy"
+ />
+ </div>
+ ) : (
+ <div className="p-3">
+ <div className="flex items-center gap-1 mb-2">
+ {icon}
+ <p
+ className={cn(dmSansClassName(), "text-[10px] font-semibold")}
+ style={{ color: color }}
+ >
+ {extension}
+ </p>
+ </div>
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-4">
+ {document.content}
+ </p>
+ )}
+ </div>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/google-docs-preview.tsx b/apps/web/components/new/document-cards/google-docs-preview.tsx
new file mode 100644
index 00000000..ee3e6c72
--- /dev/null
+++ b/apps/web/components/new/document-cards/google-docs-preview.tsx
@@ -0,0 +1,62 @@
+"use client"
+
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+export function GoogleDocsPreview({
+ document,
+}: {
+ document: DocumentWithMemories
+}) {
+ return (
+ <div className="bg-[#0B1017] p-3 rounded-[18px] gap-3">
+ <div className="flex items-center gap-2 mb-2">
+ <svg
+ className="w-4 h-4"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 87.3 78"
+ aria-label="Google Docs"
+ >
+ <title>Google Docs</title>
+ <path
+ fill="#0066da"
+ d="m6.6 66.85 3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3L27.5 53H0c0 1.55.4 3.1 1.2 4.5z"
+ />
+ <path
+ fill="#00ac47"
+ d="M43.65 25 29.9 1.2c-1.35.8-2.5 1.9-3.3 3.3l-25.4 44A9.06 9.06 0 0 0 0 53h27.5z"
+ />
+ <path
+ fill="#ea4335"
+ d="M73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75L86.1 57.5c.8-1.4 1.2-2.95 1.2-4.5H59.798l5.852 11.5z"
+ />
+ <path
+ fill="#00832d"
+ d="M43.65 25 57.4 1.2C56.05.4 54.5 0 52.9 0H34.4c-1.6 0-3.15.45-4.5 1.2z"
+ />
+ <path
+ fill="#2684fc"
+ d="M59.8 53H27.5L13.75 76.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z"
+ />
+ <path
+ fill="#ffba00"
+ d="m73.4 26.5-12.7-22c-.8-1.4-1.95-2.5-3.3-3.3L43.65 25 59.8 53h27.45c0-1.55-.4-3.1-1.2-4.5z"
+ />
+ </svg>
+ <p className={cn(dmSansClassName(), "text-[12px] font-semibold")}>
+ Google Docs
+ </p>
+ </div>
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-4">
+ {document.content}
+ </p>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/mcp-preview.tsx b/apps/web/components/new/document-cards/mcp-preview.tsx
new file mode 100644
index 00000000..55c98169
--- /dev/null
+++ b/apps/web/components/new/document-cards/mcp-preview.tsx
@@ -0,0 +1,36 @@
+"use client"
+
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { ClaudeDesktopIcon, MCPIcon } from "@ui/assets/icons"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+export function McpPreview({ document }: { document: DocumentWithMemories }) {
+ return (
+ <div className="bg-[#0B1017] p-3 rounded-[18px] space-y-2">
+ <div className="flex items-center justify-between gap-1">
+ <p className={cn(dmSansClassName(), "text-[12px] font-semibold flex items-center gap-1")}>
+ <ClaudeDesktopIcon className="size-3" />
+ Claude Desktop
+ </p>
+ <MCPIcon className="size-6" />
+ </div>
+ <div className="space-y-[6px]">
+ {document.title && (
+ <p className={cn(dmSansClassName(), "text-[12px] font-semibold")}>
+ {document.title}
+ </p>
+ )}
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-4">
+ {document.content}
+ </p>
+ )}
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/note-preview.tsx b/apps/web/components/new/document-cards/note-preview.tsx
new file mode 100644
index 00000000..288b6fa5
--- /dev/null
+++ b/apps/web/components/new/document-cards/note-preview.tsx
@@ -0,0 +1,109 @@
+"use client"
+
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+function NoteIcon() {
+ return (
+ <svg
+ width="14"
+ height="14"
+ viewBox="0 0 14 14"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Note Icon</title>
+ <mask
+ id="mask0_344_4970"
+ style={{ maskType: "alpha" }}
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="14"
+ height="14"
+ >
+ <rect width="14" height="14" fill="#D9D9D9" />
+ </mask>
+ <g mask="url(#mask0_344_4970)">
+ <g filter="url(#filter0_i_344_4970)">
+ <path
+ d="M3.50002 8.75008H7.58335L8.75002 7.58341H3.50002V8.75008ZM3.50002 6.41675H7.00002V5.25008H3.50002V6.41675ZM2.33335 4.08341V9.91675H6.41669L5.25002 11.0834H1.16669V2.91675H12.8334V4.66675H11.6667V4.08341H2.33335ZM13.3584 7.17508C13.407 7.22369 13.4313 7.27716 13.4313 7.3355C13.4313 7.39383 13.407 7.4473 13.3584 7.49591L12.8334 8.02091L11.8125 7.00008L12.3375 6.47508C12.3861 6.42647 12.4396 6.40216 12.4979 6.40216C12.5563 6.40216 12.6097 6.42647 12.6584 6.47508L13.3584 7.17508ZM7.58335 12.2501V11.2292L11.4625 7.35008L12.4834 8.37091L8.60419 12.2501H7.58335Z"
+ fill="#FAFAFA"
+ />
+ </g>
+ </g>
+ <defs>
+ <filter
+ id="filter0_i_344_4970"
+ x="1.16669"
+ y="2.91675"
+ width="12.6176"
+ height="9.68628"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feColorMatrix
+ in="SourceAlpha"
+ type="matrix"
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
+ result="hardAlpha"
+ />
+ <feOffset dx="0.353028" dy="0.353028" />
+ <feGaussianBlur stdDeviation="0.706055" />
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
+ <feColorMatrix
+ type="matrix"
+ values="0 0 0 0 0.0431373 0 0 0 0 0.0588235 0 0 0 0 0.0823529 0 0 0 0.4 0"
+ />
+ <feBlend
+ mode="normal"
+ in2="shape"
+ result="effect1_innerShadow_344_4970"
+ />
+ </filter>
+ </defs>
+ </svg>
+ )
+}
+
+export function NotePreview({ document }: { document: DocumentWithMemories }) {
+ return (
+ <div className="bg-[#0B1017] p-3 rounded-[18px] space-y-2">
+ <div className="flex items-center gap-1">
+ <NoteIcon />
+ <p className={cn(dmSansClassName(), "text-[12px] font-semibold")}>
+ Note
+ </p>
+ </div>
+ <div>
+ {document.title && (
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[12px] font-semibold line-clamp-2 leading-[125%]",
+ )}
+ >
+ {document.title}
+ </p>
+ )}
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-4">
+ {document.content}
+ </p>
+ )}
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/tweet-preview.tsx b/apps/web/components/new/document-cards/tweet-preview.tsx
new file mode 100644
index 00000000..7ba9b392
--- /dev/null
+++ b/apps/web/components/new/document-cards/tweet-preview.tsx
@@ -0,0 +1,51 @@
+"use client"
+
+import { Suspense } from "react"
+import type { Tweet } from "react-tweet/api"
+import {
+ TweetContainer,
+ TweetHeader,
+ TweetBody,
+ TweetMedia,
+ enrichTweet,
+ TweetSkeleton,
+} from "react-tweet"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+
+export function TweetPreview({
+ data,
+ noBgColor,
+}: {
+ data: Tweet
+ noBgColor?: boolean
+}) {
+ const parsedTweet = typeof data === "string" ? JSON.parse(data) : data
+ const tweet = enrichTweet(parsedTweet)
+
+ return (
+ <div
+ className={cn(
+ "p-3 sm-tweet-theme w-full min-w-0",
+ noBgColor
+ ? "bg-transparent rounded-none"
+ : "bg-[#0B1017]! rounded-[18px]",
+ )}
+ >
+ <Suspense fallback={<TweetSkeleton />}>
+ <TweetContainer
+ className={cn(
+ "pb-0! my-0! bg-transparent! border-none! w-full! min-w-0!",
+ dmSansClassName(),
+ )}
+ >
+ <TweetHeader tweet={tweet} components={{}} />
+ <TweetBody tweet={tweet} />
+ {tweet.mediaDetails?.length ? (
+ <TweetMedia tweet={tweet} components={{}} />
+ ) : null}
+ </TweetContainer>
+ </Suspense>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/website-preview.tsx b/apps/web/components/new/document-cards/website-preview.tsx
new file mode 100644
index 00000000..d61b1ed6
--- /dev/null
+++ b/apps/web/components/new/document-cards/website-preview.tsx
@@ -0,0 +1,52 @@
+"use client"
+
+import { useState } from "react"
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+export function WebsitePreview({
+ document,
+}: {
+ document: DocumentWithMemories
+}) {
+ const [imageError, setImageError] = useState(false)
+ const ogImage = (document as DocumentWithMemories & { ogImage?: string })
+ .ogImage
+
+ return (
+ <div className="bg-[#0B1017] rounded-[18px] overflow-hidden">
+ {ogImage && !imageError ? (
+ <div className="relative w-full aspect-video bg-gray-100 overflow-hidden">
+ <img
+ src={ogImage}
+ alt={document.title || "Website preview"}
+ className="w-full h-full object-cover"
+ onError={() => setImageError(true)}
+ loading="lazy"
+ />
+ </div>
+ ) : (
+ <div className="p-3 gap-2">
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[12px] font-semibold text-[#E5E5E5] line-clamp-2 mb-1",
+ )}
+ >
+ {document.title || "Untitled Document"}
+ </p>
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-3">
+ {document.content}
+ </p>
+ )}
+ </div>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-cards/youtube-preview.tsx b/apps/web/components/new/document-cards/youtube-preview.tsx
new file mode 100644
index 00000000..101376f8
--- /dev/null
+++ b/apps/web/components/new/document-cards/youtube-preview.tsx
@@ -0,0 +1,52 @@
+"use client"
+
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { dmSansClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { extractYouTubeVideoId } from "../utils"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+export function YoutubePreview({
+ document,
+}: {
+ document: DocumentWithMemories
+}) {
+ const videoId = extractYouTubeVideoId(document.url)
+
+ if (!videoId) {
+ return (
+ <div className="bg-[#0B1017] p-3 rounded-[18px] space-y-2">
+ {document.title && (
+ <p className={cn(dmSansClassName(), "text-[12px] font-semibold")}>
+ {document.title}
+ </p>
+ )}
+ {document.content && (
+ <p className="text-[10px] text-[#737373] line-clamp-4">
+ {document.content}
+ </p>
+ )}
+ </div>
+ )
+ }
+
+ const embedUrl = `https://www.youtube.com/embed/${videoId}`
+
+ return (
+ <div className="bg-[#0B1017] rounded-[18px] overflow-hidden">
+ <div className="relative w-full aspect-video bg-black">
+ <iframe
+ src={embedUrl}
+ title={document.title || "YouTube video"}
+ className="w-full h-full"
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+ allowFullScreen
+ loading="lazy"
+ />
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/content/notion-doc.tsx b/apps/web/components/new/document-modal/content/notion-doc.tsx
new file mode 100644
index 00000000..45a7dab8
--- /dev/null
+++ b/apps/web/components/new/document-modal/content/notion-doc.tsx
@@ -0,0 +1,9 @@
+import { Streamdown } from "streamdown"
+
+export function NotionDoc({ content }: { content: string }) {
+ return (
+ <div className="p-4 overflow-y-auto flex-1 scrollbar-thin">
+ <Streamdown>{content}</Streamdown>
+ </div>
+ )
+} \ No newline at end of file
diff --git a/apps/web/components/new/document-modal/content/pdf.tsx b/apps/web/components/new/document-modal/content/pdf.tsx
new file mode 100644
index 00000000..a5870682
--- /dev/null
+++ b/apps/web/components/new/document-modal/content/pdf.tsx
@@ -0,0 +1,83 @@
+"use client"
+
+import { Document, Page, pdfjs } from "react-pdf"
+import { useState } from "react"
+import "react-pdf/dist/Page/AnnotationLayer.css"
+import "react-pdf/dist/Page/TextLayer.css"
+
+// Configure PDF.js worker to use local package
+pdfjs.GlobalWorkerOptions.workerSrc = new URL(
+ "pdfjs-dist/build/pdf.worker.min.mjs",
+ import.meta.url,
+).toString()
+
+interface PdfViewerProps {
+ url: string | null | undefined
+}
+
+export function PdfViewer({ url }: PdfViewerProps) {
+ const [numPages, setNumPages] = useState<number | null>(null)
+ const [loading, setLoading] = useState(true)
+ const [error, setError] = useState<string | null>(null)
+
+ if (!url) {
+ return (
+ <div className="flex items-center justify-center h-full text-gray-400">
+ No PDF URL provided
+ </div>
+ )
+ }
+
+ function onDocumentLoadSuccess({ numPages }: { numPages: number }) {
+ setNumPages(numPages)
+ setLoading(false)
+ setError(null)
+ }
+
+ function onDocumentLoadError(error: Error) {
+ setError(error.message || "Failed to load PDF")
+ setLoading(false)
+ }
+
+ return (
+ <div className="flex flex-col h-full w-full overflow-hidden scrollbar-thin">
+ {loading && (
+ <div className="flex items-center justify-center h-full text-gray-400">
+ Loading PDF...
+ </div>
+ )}
+ {error && (
+ <div className="flex items-center justify-center h-full text-red-400">
+ Error: {error}
+ </div>
+ )}
+ <div className="flex-1 overflow-auto w-full">
+ <Document
+ file={
+ url || "https://corsproxy.io/?" +
+ encodeURIComponent("http://www.pdf995.com/samples/pdf.pdf")
+ }
+ onLoadSuccess={onDocumentLoadSuccess}
+ onLoadError={onDocumentLoadError}
+ loading={null}
+ className="w-full"
+ >
+ {numPages && (
+ <div className="flex flex-col items-center gap-4 py-4 w-full">
+ {Array.from(new Array(numPages), (_, index) => (
+ <Page
+ key={`page_${index + 1}`}
+ pageNumber={index + 1}
+ renderTextLayer
+ renderAnnotationLayer
+ className="shadow-lg"
+ width={630}
+ />
+ ))}
+ </div>
+ )}
+ </Document>
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/content/tweet.tsx b/apps/web/components/new/document-modal/content/tweet.tsx
new file mode 100644
index 00000000..528cf72f
--- /dev/null
+++ b/apps/web/components/new/document-modal/content/tweet.tsx
@@ -0,0 +1,37 @@
+"use client"
+
+import type { Tweet } from "react-tweet/api"
+import { TweetPreview } from "@/components/new/document-cards/tweet-preview"
+import { ExternalLinkIcon } from "lucide-react"
+
+interface TweetContentProps {
+ url?: string | null
+ tweetMetadata?: unknown
+}
+
+export function TweetContent({ url, tweetMetadata }: TweetContentProps) {
+ if (tweetMetadata) {
+ return (
+ <div className="flex-1 flex items-center justify-center w-full p-4 overflow-auto">
+ <TweetPreview data={tweetMetadata as Tweet} noBgColor />
+ </div>
+ )
+ }
+
+ return (
+ <div className="flex-1 flex flex-col items-center justify-center gap-3 text-gray-400">
+ <p>Tweet preview unavailable</p>
+ {url && (
+ <a
+ href={url}
+ target="_blank"
+ rel="noopener noreferrer"
+ className="flex items-center gap-1.5 text-sm text-blue-400 hover:underline"
+ >
+ View on X
+ <ExternalLinkIcon className="w-3.5 h-3.5" />
+ </a>
+ )}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/content/yt-video.tsx b/apps/web/components/new/document-modal/content/yt-video.tsx
new file mode 100644
index 00000000..65c15ad2
--- /dev/null
+++ b/apps/web/components/new/document-modal/content/yt-video.tsx
@@ -0,0 +1,89 @@
+"use client"
+
+import { useState, useEffect } from "react"
+
+interface YoutubeVideoProps {
+ url: string | null | undefined
+}
+
+// Extract YouTube video ID from various URL formats
+function extractVideoId(url: string): string | null {
+ if (!url) return null
+
+ const patterns = [
+ /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([^&\n?#]+)/,
+ /youtube\.com\/watch\?.*v=([^&\n?#]+)/,
+ ]
+
+ for (const pattern of patterns) {
+ const match = url.match(pattern)
+ if (match?.[1]) {
+ return match[1]
+ }
+ }
+
+ return null
+}
+
+export function YoutubeVideo({ url }: YoutubeVideoProps) {
+ const [videoId, setVideoId] = useState<string | null>(null)
+ const [loading, setLoading] = useState(true)
+ const [error, setError] = useState<string | null>(null)
+
+ useEffect(() => {
+ if (!url) {
+ setError("No YouTube URL provided")
+ setLoading(false)
+ return
+ }
+
+ const id = extractVideoId(url)
+ if (!id) {
+ setError("Invalid YouTube URL format")
+ setLoading(false)
+ return
+ }
+
+ setVideoId(id)
+ setLoading(false)
+ setError(null)
+ }, [url])
+
+ if (!url) {
+ return (
+ <div className="flex items-center justify-center h-full text-gray-400">
+ No YouTube URL provided
+ </div>
+ )
+ }
+
+ if (loading) {
+ return (
+ <div className="flex items-center justify-center h-full text-gray-400">
+ Loading video...
+ </div>
+ )
+ }
+
+ if (error || !videoId) {
+ return (
+ <div className="flex items-center justify-center h-full text-red-400">
+ Error: {error || "Failed to extract video ID"}
+ </div>
+ )
+ }
+
+ return (
+ <div className="flex-1 flex items-center justify-center w-full p-4">
+ <div className="w-full max-w-4xl aspect-video">
+ <iframe
+ src={`https://www.youtube.com/embed/${videoId}`}
+ title="YouTube video player"
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
+ allowFullScreen
+ className="w-full h-full rounded-lg shadow-lg"
+ />
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/document-icon.tsx b/apps/web/components/new/document-modal/document-icon.tsx
new file mode 100644
index 00000000..f86228eb
--- /dev/null
+++ b/apps/web/components/new/document-modal/document-icon.tsx
@@ -0,0 +1,263 @@
+import { MCPIcon } from "@/components/menu"
+import { colors } from "@repo/ui/memory-graph/constants"
+import {
+ GoogleDocs,
+ MicrosoftWord,
+ NotionDoc,
+ GoogleDrive,
+ GoogleSheets,
+ GoogleSlides,
+ OneDrive,
+ MicrosoftOneNote,
+ MicrosoftPowerpoint,
+ MicrosoftExcel,
+} from "@ui/assets/icons"
+import { Globe } from "lucide-react"
+import { useState } from "react"
+
+const getFaviconUrl = (url: string): string => {
+ try {
+ const domain = new URL(url).hostname
+ return `https://www.google.com/s2/favicons?domain=${domain}&sz=32`
+ } catch {
+ return ""
+ }
+}
+
+const FaviconIcon = ({
+ url,
+ className,
+ iconProps,
+}: {
+ url: string
+ className: string
+ iconProps: { className: string; style: { color: string } }
+}) => {
+ const [hasError, setHasError] = useState(false)
+ const faviconUrl = getFaviconUrl(url)
+
+ if (hasError || !faviconUrl) {
+ return <Globe {...iconProps} />
+ }
+
+ return (
+ <img
+ src={faviconUrl}
+ alt="Website favicon"
+ className={className}
+ style={{
+ width: "2em",
+ height: "2em",
+ objectFit: "contain",
+ }}
+ onError={() => setHasError(true)}
+ />
+ )
+}
+
+const PDFIcon = ({ className }: { className: string }) => {
+ return (
+ <svg
+ width="8"
+ height="10"
+ viewBox="0 0 8 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>PDF Icon</title>
+ <g filter="url(#filter0_i_719_6586)">
+ <path
+ d="M1 10C0.725 10 0.489583 9.90208 0.29375 9.70625C0.0979167 9.51042 0 9.275 0 9V1C0 0.725 0.0979167 0.489583 0.29375 0.29375C0.489583 0.0979167 0.725 0 1 0H5L8 3V9C8 9.275 7.90208 9.51042 7.70625 9.70625C7.51042 9.90208 7.275 10 7 10H1ZM4.5 3.5V1H1V9H7V3.5H4.5Z"
+ fill="#FF7673"
+ />
+ </g>
+ <defs>
+ <filter
+ id="filter0_i_719_6586"
+ x="0"
+ y="0"
+ width="8.25216"
+ height="10.2522"
+ filterUnits="userSpaceOnUse"
+ color-interpolation-filters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feColorMatrix
+ in="SourceAlpha"
+ type="matrix"
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
+ result="hardAlpha"
+ />
+ <feOffset dx="0.252163" dy="0.252163" />
+ <feGaussianBlur stdDeviation="0.504325" />
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
+ <feColorMatrix
+ type="matrix"
+ values="0 0 0 0 0.0431373 0 0 0 0 0.0588235 0 0 0 0 0.0823529 0 0 0 0.4 0"
+ />
+ <feBlend
+ mode="normal"
+ in2="shape"
+ result="effect1_innerShadow_719_6586"
+ />
+ </filter>
+ </defs>
+ </svg>
+ )
+}
+
+const YouTubeIcon = ({ className }: { className: string }) => {
+ return (
+ <svg
+ width="20"
+ height="14"
+ viewBox="0 0 20 14"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>YouTube Icon</title>
+ <path
+ d="M8 10L13.19 7L8 4V10ZM19.56 2.17C19.69 2.64 19.78 3.27 19.84 4.07C19.91 4.87 19.94 5.56 19.94 6.16L20 7C20 9.19 19.84 10.8 19.56 11.83C19.31 12.73 18.73 13.31 17.83 13.56C17.36 13.69 16.5 13.78 15.18 13.84C13.88 13.91 12.69 13.94 11.59 13.94L10 14C5.81 14 3.2 13.84 2.17 13.56C1.27 13.31 0.69 12.73 0.44 11.83C0.31 11.36 0.22 10.73 0.16 9.93C0.0900001 9.13 0.0599999 8.44 0.0599999 7.84L0 7C0 4.81 0.16 3.2 0.44 2.17C0.69 1.27 1.27 0.69 2.17 0.44C2.64 0.31 3.5 0.22 4.82 0.16C6.12 0.0899998 7.31 0.0599999 8.41 0.0599999L10 0C14.19 0 16.8 0.16 17.83 0.44C18.73 0.69 19.31 1.27 19.56 2.17Z"
+ fill="#FF0034"
+ />
+ <path d="M8 10L13.19 7L8 4V10Z" fill="white" />
+ </svg>
+ )
+}
+
+const TextDocumentIcon = ({ className }: { className: string }) => {
+ return (
+ <svg
+ width="18"
+ height="14"
+ viewBox="0 0 18 14"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>Text Document Icon</title>
+ <g filter="url(#filter0_i_724_34196)">
+ <path
+ d="M3.33333 8.33333H9.16667L10.8333 6.66667H3.33333V8.33333ZM3.33333 5H8.33333V3.33333H3.33333V5ZM1.66667 1.66667V10H7.5L5.83333 11.6667H0V0H16.6667V2.5H15V1.66667H1.66667ZM17.4167 6.08333C17.4861 6.15278 17.5208 6.22917 17.5208 6.3125C17.5208 6.39583 17.4861 6.47222 17.4167 6.54167L16.6667 7.29167L15.2083 5.83333L15.9583 5.08333C16.0278 5.01389 16.1042 4.97917 16.1875 4.97917C16.2708 4.97917 16.3472 5.01389 16.4167 5.08333L17.4167 6.08333ZM9.16667 13.3333V11.875L14.7083 6.33333L16.1667 7.79167L10.625 13.3333H9.16667Z"
+ fill="#FAFAFA"
+ />
+ </g>
+ <defs>
+ <filter
+ id="filter0_i_724_34196"
+ x="0"
+ y="0"
+ width="18.0253"
+ height="13.8376"
+ filterUnits="userSpaceOnUse"
+ color-interpolation-filters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feColorMatrix
+ in="SourceAlpha"
+ type="matrix"
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
+ result="hardAlpha"
+ />
+ <feOffset dx="0.504325" dy="0.504325" />
+ <feGaussianBlur stdDeviation="1.00865" />
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" />
+ <feColorMatrix
+ type="matrix"
+ values="0 0 0 0 0.0431373 0 0 0 0 0.0588235 0 0 0 0 0.0823529 0 0 0 0.4 0"
+ />
+ <feBlend
+ mode="normal"
+ in2="shape"
+ result="effect1_innerShadow_724_34196"
+ />
+ </filter>
+ </defs>
+ </svg>
+ )
+}
+
+export const getDocumentIcon = (
+ type: string,
+ className: string,
+ source?: string,
+ url?: string,
+) => {
+ const iconProps = {
+ className,
+ style: { color: colors.text.muted },
+ }
+
+ if (source === "mcp") {
+ return <MCPIcon {...iconProps} />
+ }
+
+ if (url?.includes("youtube.com") || url?.includes("youtu.be")) {
+ return <YouTubeIcon className={className} />
+ }
+
+ if (
+ type === "webpage" ||
+ type === "url" ||
+ (url && (type === "unknown" || !type))
+ ) {
+ if (url) {
+ return (
+ <FaviconIcon url={url} className={className} iconProps={iconProps} />
+ )
+ }
+
+ return <Globe {...iconProps} />
+ }
+
+ switch (type) {
+ case "tweet":
+ return <span className={className}>𝕏</span>
+ case "google_doc":
+ return <GoogleDocs {...iconProps} />
+ case "google_sheet":
+ return <GoogleSheets {...iconProps} />
+ case "google_slide":
+ return <GoogleSlides {...iconProps} />
+ case "google_drive":
+ return <GoogleDrive {...iconProps} />
+ case "notion":
+ case "notion_doc":
+ return <NotionDoc {...iconProps} />
+ case "word":
+ case "microsoft_word":
+ return <MicrosoftWord {...iconProps} />
+ case "excel":
+ case "microsoft_excel":
+ return <MicrosoftExcel {...iconProps} />
+ case "powerpoint":
+ case "microsoft_powerpoint":
+ return <MicrosoftPowerpoint {...iconProps} />
+ case "onenote":
+ case "microsoft_onenote":
+ return <MicrosoftOneNote {...iconProps} />
+ case "onedrive":
+ return <OneDrive {...iconProps} />
+ case "pdf":
+ return <PDFIcon className={className} />
+ case "youtube":
+ case "video":
+ return <YouTubeIcon className={className} />
+ default:
+ return <TextDocumentIcon className={className} />
+ }
+}
diff --git a/apps/web/components/new/document-modal/graph-list-memories.tsx b/apps/web/components/new/document-modal/graph-list-memories.tsx
new file mode 100644
index 00000000..5f927459
--- /dev/null
+++ b/apps/web/components/new/document-modal/graph-list-memories.tsx
@@ -0,0 +1,322 @@
+import { cn } from "@lib/utils"
+import { Tabs, TabsList, TabsTrigger } from "@ui/components/tabs"
+
+export interface MemoryEntry {
+ id: string
+ memory: string
+ title?: string
+ url?: string
+ version: number
+ isForgotten: boolean
+ forgetAfter: string | null
+ isLatest: boolean
+ isStatic: boolean
+}
+
+function VersionStatus({
+ status,
+}: {
+ status: "latest" | "static" | "expiring" | "forgotten"
+}) {
+ return (
+ <>
+ {
+ {
+ latest: (
+ <div className="text-[#05A376] text-[10px] font-medium flex items-center gap-1">
+ <svg
+ width="10"
+ height="10"
+ viewBox="0 0 10 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Latest</title>
+ <g opacity="0.6">
+ <path
+ fillRule="evenodd"
+ clipRule="evenodd"
+ d="M5.00069 0L9.33082 2.5V7.5L5.00069 10L0.670563 7.5V2.5L5.00069 0ZM7.5008 2.5H5.0008H2.50069L2.5008 7.5H7.5008V5V2.5Z"
+ fill="#00FFA9"
+ />
+ <path
+ fillRule="evenodd"
+ clipRule="evenodd"
+ d="M5.0008 2.5H2.50069L2.5008 7.5H7.5008V5C6.12009 5 5.0008 3.88071 5.0008 2.5Z"
+ fill="#005236"
+ />
+ <path
+ d="M7.5008 2.5H5.0008C5.0008 3.88071 6.12009 5 7.5008 5V2.5Z"
+ fill="#00FFA9"
+ />
+ <path
+ d="M9.08072 2.64453V7.35449L5.00064 9.71094L0.920563 7.35449V2.64453L5.00064 0.288086L9.08072 2.64453ZM2.25064 2.25V7.75H7.75064V2.25H2.25064ZM4.76334 2.75C4.88226 4.0691 5.93157 5.11728 7.25064 5.23633V7.25H2.75064V2.75H4.76334ZM7.25064 2.75V4.73438C6.20794 4.61894 5.3806 3.79274 5.26529 2.75H7.25064Z"
+ stroke="#00FFA9"
+ strokeWidth="0.5"
+ />
+ </g>
+ </svg>
+ Latest
+ </div>
+ ),
+ static: (
+ <div className="text-[#369BFD] text-[10px] font-medium flex items-center gap-1">
+ <svg
+ width="10"
+ height="10"
+ viewBox="0 0 10 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Static</title>
+ <circle cx="5.00061" cy="5.00073" r="1.25" fill="#369BFD" />
+ <circle
+ cx="5.00061"
+ cy="5.00073"
+ r="0.833333"
+ stroke="#369BFD"
+ strokeOpacity="0.5"
+ strokeWidth="0.833333"
+ />
+ <circle
+ cx="5.00057"
+ cy="5.00081"
+ r="2.91667"
+ stroke="#369BFD"
+ strokeOpacity="0.5"
+ strokeWidth="0.833333"
+ />
+ <circle
+ cx="5"
+ cy="5"
+ r="4.58333"
+ stroke="#369BFD"
+ strokeOpacity="0.2"
+ strokeWidth="0.833333"
+ />
+ </svg>
+ Static
+ </div>
+ ),
+ expiring: (
+ <div className="text-[#9D6510] text-[10px] font-medium">
+ <svg
+ width="10"
+ height="10"
+ viewBox="0 0 10 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Expiring</title>
+ <g opacity="0.6">
+ <path
+ fillRule="evenodd"
+ clipRule="evenodd"
+ d="M2.50066 2.5H7.50077V7.5H2.50077L2.50066 2.5Z"
+ fill="#4D2E00"
+ />
+ <path
+ fillRule="evenodd"
+ clipRule="evenodd"
+ d="M5.00066 0L9.33078 2.5V7.5L5.00066 10L0.670532 7.5V2.5L5.00066 0ZM7.50077 2.5H2.50066L2.50077 7.5H7.50077V2.5Z"
+ fill="#FE9900"
+ />
+ <path
+ d="M9.08069 2.64453V7.35449L5.00061 9.71094L0.920532 7.35449V2.64453L5.00061 0.288086L9.08069 2.64453ZM2.25061 2.25V7.75H7.75061V2.25H2.25061ZM7.25061 2.75V7.25H2.75061V2.75H7.25061Z"
+ stroke="#FE9900"
+ strokeWidth="0.5"
+ />
+ </g>
+ </svg>
+ Expiring
+ </div>
+ ),
+ forgotten: (
+ <div className="text-[#9C4044] text-[10px] font-medium">
+ <svg
+ width="10"
+ height="10"
+ viewBox="0 0 10 10"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Forgotten</title>
+ <path
+ opacity="0.6"
+ d="M9.08008 2.64453V7.35449L5 9.71094L0.919922 7.35449V2.64453L5 0.288086L9.08008 2.64453Z"
+ fill="#60272C"
+ stroke="#FF6467"
+ strokeWidth="0.5"
+ />
+ <path
+ d="M2.08333 2.08341L7.91677 7.91685M7.91667 2.08341L2.08333 7.91675"
+ stroke="#9C4044"
+ strokeWidth="0.5"
+ />
+ </svg>
+ Forgotten
+ </div>
+ ),
+ }[status]
+ }
+ </>
+ )
+}
+
+export function GraphListMemories({
+ memoryEntries,
+}: {
+ memoryEntries: MemoryEntry[]
+}) {
+ return (
+ <div
+ id="document-memories"
+ className="relative flex-1 px-3 pt-3 rounded-[14px] flex flex-col overflow-hidden shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]"
+ style={{
+ backgroundImage: "url('/dot-pattern.svg')",
+ backgroundRepeat: "repeat",
+ backgroundSize: "369px 371px",
+ }}
+ >
+ <Tabs defaultValue="list">
+ <TabsList className="rounded-full border border-[#161F2C] h-11! z-10!">
+ <TabsTrigger
+ value="graph"
+ className={cn(
+ "group rounded-full data-[state=active]:bg-[#00173C]! dark:data-[state=active]:border-[#2261CA33]! px-4 py-4",
+ )}
+ >
+ <svg
+ width="14"
+ height="14"
+ viewBox="0 0 14 14"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Graph</title>
+ <mask
+ id="mask0_891_45456"
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="14"
+ height="14"
+ >
+ <rect width="14" height="14" fill="#D9D9D9" />
+ </mask>
+ <g mask="url(#mask0_891_45456)">
+ <path
+ d="M7.00057 12.8334C6.51446 12.8334 6.10126 12.6632 5.76099 12.3229C5.42071 11.9827 5.25057 11.5695 5.25057 11.0834C5.25057 11.0347 5.253 10.9813 5.25786 10.9229C5.26272 10.8646 5.27001 10.8111 5.27974 10.7625L4.06932 10.0771C3.91376 10.2132 3.73876 10.3177 3.54432 10.3906C3.34988 10.4636 3.14085 10.5 2.91724 10.5C2.43113 10.5 2.01793 10.3299 1.67765 9.9896C1.33738 9.64933 1.16724 9.23613 1.16724 8.75002C1.16724 8.26391 1.33738 7.85071 1.67765 7.51044C2.01793 7.17016 2.43113 7.00002 2.91724 7.00002C3.15057 7.00002 3.36932 7.04377 3.57349 7.13127C3.77765 7.21877 3.96238 7.3403 4.12765 7.49585L5.86307 6.62085C5.8339 6.39724 5.84606 6.17849 5.89953 5.9646C5.953 5.75071 6.04779 5.55141 6.1839 5.36669L5.68807 4.60835C5.62001 4.6278 5.54953 4.64238 5.47661 4.6521C5.40369 4.66183 5.32835 4.66669 5.25057 4.66669C4.76446 4.66669 4.35126 4.49655 4.01099 4.15627C3.67071 3.81599 3.50057 3.4028 3.50057 2.91669C3.50057 2.43058 3.67071 2.01738 4.01099 1.6771C4.35126 1.33683 4.76446 1.16669 5.25057 1.16669C5.73668 1.16669 6.14988 1.33683 6.49015 1.6771C6.83043 2.01738 7.00057 2.43058 7.00057 2.91669C7.00057 3.11113 6.96897 3.29828 6.90578 3.47815C6.84258 3.65801 6.75751 3.82085 6.65057 3.96669L7.16099 4.72502C7.23876 4.70558 7.31168 4.69099 7.37974 4.68127C7.44779 4.67155 7.52071 4.66669 7.59849 4.66669C7.76376 4.66669 7.91932 4.68613 8.06515 4.72502C8.21099 4.76391 8.35196 4.82224 8.48807 4.90002L9.45057 4.11252C9.41168 4.0153 9.38251 3.91565 9.36307 3.81356C9.34363 3.71148 9.3339 3.60696 9.3339 3.50002C9.3339 3.01391 9.50404 2.60071 9.84432 2.26044C10.1846 1.92016 10.5978 1.75002 11.0839 1.75002C11.57 1.75002 11.9832 1.92016 12.3235 2.26044C12.6638 2.60071 12.8339 3.01391 12.8339 3.50002C12.8339 3.98613 12.6638 4.39933 12.3235 4.7396C11.9832 5.07988 11.57 5.25002 11.0839 5.25002C10.9186 5.25002 10.7631 5.22815 10.6172 5.1844C10.4714 5.14065 10.3304 5.07988 10.1943 5.0021L9.23182 5.80419C9.27071 5.90141 9.29988 6.00106 9.31932 6.10315C9.33876 6.20523 9.34849 6.30974 9.34849 6.41669C9.34849 6.9028 9.17835 7.31599 8.83807 7.65627C8.49779 7.99655 8.0846 8.16669 7.59849 8.16669C7.36515 8.16669 7.14397 8.12294 6.93494 8.03544C6.72592 7.94794 6.53876 7.82641 6.37349 7.67085L4.65265 8.53127C4.6721 8.61877 4.67939 8.70627 4.67453 8.79377C4.66967 8.88127 4.65751 8.96877 4.63807 9.05627L5.86307 9.75627C6.01863 9.62016 6.19119 9.51565 6.38078 9.44273C6.57036 9.36981 6.77696 9.33335 7.00057 9.33335C7.48668 9.33335 7.89988 9.50349 8.24015 9.84377C8.58043 10.184 8.75057 10.5972 8.75057 11.0834C8.75057 11.5695 8.58043 11.9827 8.24015 12.3229C7.89988 12.6632 7.48668 12.8334 7.00057 12.8334ZM2.91724 9.33335C3.08251 9.33335 3.22106 9.27745 3.33286 9.16565C3.44467 9.05384 3.50057 8.9153 3.50057 8.75002C3.50057 8.58474 3.44467 8.4462 3.33286 8.3344C3.22106 8.22259 3.08251 8.16669 2.91724 8.16669C2.75196 8.16669 2.61342 8.22259 2.50161 8.3344C2.38981 8.4462 2.3339 8.58474 2.3339 8.75002C2.3339 8.9153 2.38981 9.05384 2.50161 9.16565C2.61342 9.27745 2.75196 9.33335 2.91724 9.33335ZM5.25057 3.50002C5.41585 3.50002 5.55439 3.44412 5.66619 3.33231C5.778 3.22051 5.8339 3.08196 5.8339 2.91669C5.8339 2.75141 5.778 2.61287 5.66619 2.50106C5.55439 2.38926 5.41585 2.33335 5.25057 2.33335C5.08529 2.33335 4.94675 2.38926 4.83494 2.50106C4.72314 2.61287 4.66724 2.75141 4.66724 2.91669C4.66724 3.08196 4.72314 3.22051 4.83494 3.33231C4.94675 3.44412 5.08529 3.50002 5.25057 3.50002ZM7.00057 11.6667C7.16585 11.6667 7.30439 11.6108 7.41619 11.499C7.528 11.3872 7.5839 11.2486 7.5839 11.0834C7.5839 10.9181 7.528 10.7795 7.41619 10.6677C7.30439 10.5559 7.16585 10.5 7.00057 10.5C6.83529 10.5 6.69675 10.5559 6.58494 10.6677C6.47314 10.7795 6.41724 10.9181 6.41724 11.0834C6.41724 11.2486 6.47314 11.3872 6.58494 11.499C6.69675 11.6108 6.83529 11.6667 7.00057 11.6667ZM7.5839 7.00002C7.74918 7.00002 7.88772 6.94412 7.99953 6.83231C8.11133 6.72051 8.16724 6.58196 8.16724 6.41669C8.16724 6.25141 8.11133 6.11287 7.99953 6.00106C7.88772 5.88926 7.74918 5.83335 7.5839 5.83335C7.41862 5.83335 7.28008 5.88926 7.16828 6.00106C7.05647 6.11287 7.00057 6.25141 7.00057 6.41669C7.00057 6.58196 7.05647 6.72051 7.16828 6.83231C7.28008 6.94412 7.41862 7.00002 7.5839 7.00002ZM11.0839 4.08335C11.2492 4.08335 11.3877 4.02745 11.4995 3.91565C11.6113 3.80384 11.6672 3.6653 11.6672 3.50002C11.6672 3.33474 11.6113 3.1962 11.4995 3.0844C11.3877 2.97259 11.2492 2.91669 11.0839 2.91669C10.9186 2.91669 10.7801 2.97259 10.6683 3.0844C10.5565 3.1962 10.5006 3.33474 10.5006 3.50002C10.5006 3.6653 10.5565 3.80384 10.6683 3.91565C10.7801 4.02745 10.9186 4.08335 11.0839 4.08335Z"
+ className="fill-[#737373] group-hover:fill-white group-data-[state=active]:fill-white"
+ />
+ </g>
+ </svg>
+ <p className="group-hover:text-white group-data-[state=active]:text-white">
+ Graph
+ </p>
+ </TabsTrigger>
+ <TabsTrigger
+ value="list"
+ className={cn(
+ "group rounded-full dark:data-[state=active]:bg-[#00173C]! dark:data-[state=active]:border-[#2261CA33]! px-6 py-[7px] align-middle items-center",
+ )}
+ >
+ <svg
+ width="10"
+ height="12"
+ viewBox="0 0 10 12"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className="w-3.5! h-3.5!"
+ >
+ <title>List</title>
+ <path
+ d="M0.00153996 1.78136H0.0032201C0.00332596 1.86499 0.0363955 1.94522 0.095258 2.00463C0.15412 2.06404 0.23403 2.09786 0.31766 2.09874L8.76792 2.09902C8.85189 2.09861 8.93229 2.06485 8.99154 2.00536C9.0508 1.94586 9.08411 1.86533 9.08418 1.78136H9.08558V0.3171C9.08539 0.23296 9.05185 0.152327 8.9923 0.0928833C8.93275 0.0334395 8.85206 3.68622e-05 8.76792 0H0.31766C0.233423 3.71008e-05 0.152646 0.0335166 0.0930814 0.0930814C0.0335167 0.152646 3.71008e-05 0.233423 0 0.31766C0 0.32312 0.00139988 0.3283 0.00167988 0.33376L0.00153996 1.78136ZM8.76778 4.49314H0.31766C0.233423 4.49318 0.152646 4.52666 0.0930814 4.58622C0.0335167 4.64579 3.71008e-05 4.72656 0 4.8108C0 4.81626 0.00139988 4.82144 0.00167988 4.8269V6.2745H0.00336002C0.00346588 6.35813 0.0365354 6.43836 0.0953979 6.49777C0.15426 6.55718 0.234171 6.591 0.3178 6.59188L8.76806 6.59216C8.85203 6.59175 8.93243 6.55799 8.99168 6.4985C9.05094 6.439 9.08425 6.35847 9.08432 6.2745H9.08572V4.81024C9.08553 4.72605 9.05195 4.64538 8.99234 4.58592C8.93273 4.52647 8.85197 4.4931 8.76778 4.49314ZM8.76778 8.98614H0.31766C0.233423 8.98618 0.152646 9.01966 0.0930814 9.07922C0.0335167 9.13879 3.71008e-05 9.21956 0 9.3038C0 9.30926 0.00139988 9.31444 0.00167988 9.3199V10.7675H0.00336002C0.00346588 10.8511 0.0365354 10.9314 0.0953979 10.9908C0.15426 11.0502 0.234171 11.084 0.3178 11.0849L8.76806 11.0852C8.85205 11.0848 8.93247 11.051 8.99173 10.9914C9.051 10.9319 9.08428 10.8514 9.08432 10.7674H9.08572V9.3031C9.0855 9.21894 9.0519 9.1383 8.99229 9.07887C8.93269 9.01945 8.85194 8.9861 8.76778 8.98614Z"
+ className="fill-[#737373] group-hover:fill-white group-data-[state=active]:fill-white"
+ />
+ </svg>
+ <p className="group-hover:text-white group-data-[state=active]:text-white">
+ List
+ </p>
+ </TabsTrigger>
+ </TabsList>
+ </Tabs>
+ <div className="grid grid-cols-2 gap-2 pt-3 overflow-y-auto pr-1 scrollbar-thin">
+ {memoryEntries.map((memory, idx) => {
+ const isClickable =
+ memory.url &&
+ (memory.url.startsWith("http://") ||
+ memory.url.startsWith("https://"))
+
+ const status = memory.isForgotten
+ ? "forgotten"
+ : memory.forgetAfter
+ ? "expiring"
+ : memory.isStatic
+ ? "static"
+ : "latest"
+
+ const content = (
+ <div className="">
+ <div className="bg-[#060D17] p-2 px-[10px] rounded-[10px] m-[2px]">
+ {memory.title && (
+ <div className="text-xs text-[#525D6E] line-clamp-2">
+ {memory.title}
+ </div>
+ )}
+ {memory.memory && (
+ <div className="text-xs text-[#525D6E]/80 line-clamp-2">
+ {memory.memory}
+ </div>
+ )}
+ {memory.url && (
+ <div className="text-xs text-[#525D6E] truncate">
+ {memory.url}
+ </div>
+ )}
+ </div>
+ <div className="px-[10px] py-1 flex items-center justify-between">
+ <div
+ className="text-[10px] inline-block bg-clip-text text-transparent font-medium"
+ style={{
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }}
+ >
+ v{memory.version}
+ </div>
+ <VersionStatus status={status} />
+ </div>
+ </div>
+ )
+
+ if (isClickable) {
+ return (
+ <a
+ className="block p-2 bg-[#0C1829]/50 rounded-md border border-[#525D6E]/20 hover:bg-[#0C1829]/70 transition-colors cursor-pointer"
+ href={memory.url}
+ key={memory.id || idx}
+ rel="noopener noreferrer"
+ target="_blank"
+ >
+ {content}
+ </a>
+ )
+ }
+
+ return (
+ <div
+ className={cn("bg-[#0C1829] rounded-xl")}
+ key={memory.id || idx}
+ >
+ {content}
+ </div>
+ )
+ })}
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/index.tsx b/apps/web/components/new/document-modal/index.tsx
new file mode 100644
index 00000000..74d4e178
--- /dev/null
+++ b/apps/web/components/new/document-modal/index.tsx
@@ -0,0 +1,143 @@
+"use client"
+
+import { Dialog, DialogContent, DialogTitle } from "@repo/ui/components/dialog"
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import { ArrowUpRightIcon, XIcon } from "lucide-react"
+import type { z } from "zod"
+import * as DialogPrimitive from "@radix-ui/react-dialog"
+import { cn } from "@lib/utils"
+import dynamic from "next/dynamic"
+import { Title } from "./title"
+import { Summary as DocumentSummary } from "./summary"
+import { dmSansClassName } from "@/utils/fonts"
+import { GraphListMemories, type MemoryEntry } from "./graph-list-memories"
+import { YoutubeVideo } from "./content/yt-video"
+import { TweetContent } from "./content/tweet"
+import { isTwitterUrl } from "@/utils/url-helpers"
+import { NotionDoc } from "./content/notion-doc"
+
+// Dynamically importing to prevent DOMMatrix error
+const PdfViewer = dynamic(
+ () => import("./content/pdf").then((mod) => ({ default: mod.PdfViewer })),
+ {
+ ssr: false,
+ loading: () => (
+ <div className="flex items-center justify-center h-full text-gray-400">
+ Loading PDF viewer...
+ </div>
+ ),
+ },
+) as typeof import("./content/pdf").PdfViewer
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+interface DocumentModalProps {
+ document: DocumentWithMemories | null
+ isOpen: boolean
+ onClose: () => void
+}
+
+export function DocumentModal({
+ document: _document,
+ isOpen,
+ onClose,
+}: DocumentModalProps) {
+ console.log(_document)
+ return (
+ <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>
+ <DialogContent
+ className={cn(
+ "w-[80%]! max-w-[1158px]! h-[86%]! max-h-[684px]! p-0 border-none bg-[#1B1F24] flex flex-col px-4 pt-3 pb-4 gap-3 rounded-[22px]",
+ dmSansClassName(),
+ )}
+ style={{
+ boxShadow:
+ "0 2.842px 14.211px 0 rgba(0, 0, 0, 0.25), 0.711px 0.711px 0.711px 0 rgba(255, 255, 255, 0.10) inset",
+ }}
+ showCloseButton={false}
+ >
+ <DialogTitle className="sr-only">
+ {_document?.title} - Document
+ </DialogTitle>
+ <div className="flex justify-between h-fit">
+ <Title
+ title={_document?.title}
+ documentType={_document?.type ?? "text"}
+ url={_document?.url}
+ />
+ <div className="flex items-center gap-2">
+ {_document?.url && (
+ <a
+ href={_document.url}
+ target="_blank"
+ rel="noopener noreferrer"
+ className="line-clamp-1 px-3 py-2 flex items-center gap-1 bg-[#0D121A] rounded-full shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]"
+ >
+ Visit source
+ <ArrowUpRightIcon className="w-4 h-4 text-[#737373]" />
+ </a>
+ )}
+ <DialogPrimitive.Close
+ className="bg-[#0D121A] w-7 h-7 flex items-center justify-center focus:ring-ring rounded-full transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]"
+ data-slot="dialog-close"
+ >
+ <XIcon stroke="#737373" />
+ <span className="sr-only">Close</span>
+ </DialogPrimitive.Close>
+ </div>
+ </div>
+ <div className="flex-1 grid grid-cols-[2fr_1fr] gap-3 overflow-hidden min-h-0">
+ <div
+ id="document-preview"
+ className={cn(
+ "bg-[#14161A] rounded-[14px] overflow-hidden flex flex-col shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]",
+ )}
+ >
+ {(_document?.type === "tweet" ||
+ (_document?.url && isTwitterUrl(_document.url))) && (
+ <TweetContent
+ url={_document?.url}
+ tweetMetadata={
+ _document?.metadata?.sm_internal_twitter_metadata
+ }
+ />
+ )}
+ {_document?.type === "text" && (
+ <div className="p-4 overflow-y-auto flex-1">
+ {_document.content}
+ </div>
+ )}
+ {_document?.type === "pdf" && <PdfViewer url={_document.url} />}
+ {_document?.type === "notion_doc" && (
+ <NotionDoc content={_document.content ?? ""} />
+ )}
+ {_document?.url?.includes("youtube.com") && (
+ <YoutubeVideo url={_document.url} />
+ )}
+ </div>
+ <div
+ id="document-memories-summary"
+ className={cn(
+ "gap-3 flex flex-col overflow-hidden",
+ dmSansClassName(),
+ )}
+ >
+ {_document?.summary && (
+ <DocumentSummary
+ memoryEntries={_document.memoryEntries}
+ summary={_document.summary}
+ createdAt={_document.createdAt}
+ />
+ )}
+ {_document?.memoryEntries && _document.memoryEntries.length > 0 && (
+ <GraphListMemories
+ memoryEntries={_document.memoryEntries as MemoryEntry[]}
+ />
+ )}
+ </div>
+ </div>
+ </DialogContent>
+ </Dialog>
+ )
+}
diff --git a/apps/web/components/new/document-modal/summary.tsx b/apps/web/components/new/document-modal/summary.tsx
new file mode 100644
index 00000000..6e80e425
--- /dev/null
+++ b/apps/web/components/new/document-modal/summary.tsx
@@ -0,0 +1,84 @@
+import { cn } from "@lib/utils"
+import { SyncLogoIcon } from "@ui/assets/icons"
+
+function CalendarIcon() {
+ return (
+ <svg
+ width="14"
+ height="14"
+ viewBox="0 0 14 14"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Calendar Icon</title>
+ <path
+ d="M1.33333 13.3333C0.966667 13.3333 0.652778 13.2028 0.391667 12.9417C0.130556 12.6806 0 12.3667 0 12V2.66667C0 2.3 0.130556 1.98611 0.391667 1.725C0.652778 1.46389 0.966667 1.33333 1.33333 1.33333H2V0H3.33333V1.33333H8.66667V0H10V1.33333H10.6667C11.0333 1.33333 11.3472 1.46389 11.6083 1.725C11.8694 1.98611 12 2.3 12 2.66667V6H10.6667V5.33333H1.33333V12H6V13.3333H1.33333ZM1.33333 4H10.6667V2.66667H1.33333V4ZM7.33333 13.3333V11.2833L11.0167 7.61667C11.1167 7.51667 11.2278 7.44444 11.35 7.4C11.4722 7.35556 11.5944 7.33333 11.7167 7.33333C11.85 7.33333 11.9778 7.35833 12.1 7.40833C12.2222 7.45833 12.3333 7.53333 12.4333 7.63333L13.05 8.25C13.1389 8.35 13.2083 8.46111 13.2583 8.58333C13.3083 8.70555 13.3333 8.82778 13.3333 8.95C13.3333 9.07222 13.3111 9.19722 13.2667 9.325C13.2222 9.45278 13.15 9.56667 13.05 9.66667L9.38333 13.3333H7.33333ZM8.33333 12.3333H8.96667L10.9833 10.3L10.6833 9.98333L10.3667 9.68333L8.33333 11.7V12.3333ZM10.6833 9.98333L10.3667 9.68333L10.9833 10.3L10.6833 9.98333Z"
+ fill="#737373"
+ />
+ </svg>
+ )
+}
+
+export function Summary({
+ memoryEntries,
+ summary,
+ createdAt,
+}: {
+ memoryEntries: any[]
+ summary: string
+ createdAt: Date
+}) {
+ return (
+ <div
+ id="document-summary"
+ className="bg-[#14161A] p-3 rounded-[14px] space-y-4 shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]"
+ >
+ <div className="flex items-center justify-between">
+ <p className="text-[16px] font-semibold text-[#FAFAFA] line-clamp-1 leading-[125%]">
+ Summary
+ </p>
+ <div className="text-[#737373] text-[10px] leading-[150%]">
+ powered by supermemory
+ </div>
+ </div>
+ <div className="text-[14px] text-[#FAFAFA] leading-[1.4] max-h-[117.6px] overflow-y-auto scrollbar-thin">
+ {summary}
+ </div>
+ <div
+ className={cn(
+ "flex items-center",
+ memoryEntries.length > 0 ? "justify-between" : "justify-end",
+ )}
+ >
+ {memoryEntries.length > 0 && (
+ <p
+ className={cn(
+ "text-[#369BFD] line-clamp-1 flex items-center gap-1.5",
+ )}
+ style={{
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }}
+ >
+ <SyncLogoIcon className="w-[17.1px] h-[13.87px]" />
+ {memoryEntries.length}{" "}
+ {memoryEntries.length === 1 ? "memory" : "memories"}
+ </p>
+ )}
+ <p
+ className={cn("text-[#737373] line-clamp-1 flex items-center gap-1")}
+ >
+ <CalendarIcon />
+ {new Date(createdAt).toLocaleDateString("en-US", {
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ })}
+ </p>
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/document-modal/title.tsx b/apps/web/components/new/document-modal/title.tsx
new file mode 100644
index 00000000..b8bdc8bb
--- /dev/null
+++ b/apps/web/components/new/document-modal/title.tsx
@@ -0,0 +1,55 @@
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import type { DocumentTypeEnum } from "@repo/validation/schemas"
+import type { z } from "zod"
+import { getDocumentIcon } from "@/components/new/document-modal/document-icon"
+
+type DocumentType = z.infer<typeof DocumentTypeEnum>
+
+function getFileExtension(documentType: DocumentType): string | null {
+ switch (documentType) {
+ case "pdf":
+ return ".pdf"
+ default:
+ return null
+ }
+}
+
+export function Title({
+ title,
+ documentType,
+ url,
+}: {
+ title: string | null | undefined
+ documentType: DocumentType
+ url?: string | null
+}) {
+ const extension = getFileExtension(documentType)
+
+ return (
+ <div
+ className={cn(
+ dmSansClassName(),
+ "text-[16px] font-semibold text-[#FAFAFA] line-clamp-1 leading-[125%] flex items-center gap-3",
+ )}
+ >
+ <div className="pl-1 flex items-center gap-1 w-5 h-5">
+ {getDocumentIcon(
+ documentType as DocumentType,
+ "w-5 h-5",
+ undefined,
+ url ?? undefined,
+ )}
+ {extension && (
+ <p
+ className={cn(dmSansClassName(), "text-[12px] font-semibold")}
+ style={{ color: "#FF7673" }}
+ >
+ {extension}
+ </p>
+ )}
+ </div>
+ {title || "Untitled Document"}
+ </div>
+ )
+}
diff --git a/apps/web/components/new/header.tsx b/apps/web/components/new/header.tsx
new file mode 100644
index 00000000..4ef344a3
--- /dev/null
+++ b/apps/web/components/new/header.tsx
@@ -0,0 +1,225 @@
+"use client"
+
+import { Logo } from "@ui/assets/Logo"
+import { Avatar, AvatarFallback, AvatarImage } from "@ui/components/avatar"
+import { useAuth } from "@lib/auth-context"
+import { useEffect, useState } from "react"
+import {
+ ChevronsLeftRight,
+ LayoutGridIcon,
+ Plus,
+ SearchIcon,
+ FolderIcon,
+ LogOut,
+ Settings,
+} from "lucide-react"
+import { Button } from "@ui/components/button"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import { Tabs, TabsList, TabsTrigger } from "@ui/components/tabs"
+import { useProjectName } from "@/hooks/use-project-name"
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@ui/components/dropdown-menu"
+import { useQuery } from "@tanstack/react-query"
+import { $fetch } from "@repo/lib/api"
+import { authClient } from "@lib/auth"
+import { DEFAULT_PROJECT_ID } from "@repo/lib/constants"
+import { useProjectMutations } from "@/hooks/use-project-mutations"
+import { useProject } from "@/stores"
+import { useRouter } from "next/navigation"
+import type { Project } from "@repo/lib/types"
+
+interface HeaderProps {
+ onAddMemory?: () => void
+ onOpenMCP?: () => void
+}
+
+export function Header({ onAddMemory, onOpenMCP }: HeaderProps) {
+ const { user } = useAuth()
+ const [name, setName] = useState<string>("")
+ const projectName = useProjectName()
+ const { selectedProject } = useProject()
+ const { switchProject } = useProjectMutations()
+ const router = useRouter()
+ const { data: projects = [] } = useQuery({
+ queryKey: ["projects"],
+ queryFn: async () => {
+ const response = await $fetch("@get/projects")
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to load projects")
+ }
+
+ return response.data?.projects || []
+ },
+ staleTime: 30 * 1000,
+ })
+
+ useEffect(() => {
+ const storedName =
+ localStorage.getItem("username") || localStorage.getItem("userName") || ""
+ setName(storedName)
+ }, [])
+
+ const userName = name ? `${name.split(" ")[0]}'s` : "My"
+ return (
+ <div className="flex p-4 justify-between items-center">
+ <div className="flex items-center justify-center gap-4 z-10!">
+ <div className="flex items-center">
+ <Logo className="h-7" />
+ {name && (
+ <div className="flex flex-col items-start justify-center ml-2">
+ <p className="text-[#8B8B8B] text-[11px] leading-tight">
+ {userName}
+ </p>
+ <p className="text-white font-bold text-xl leading-none -mt-1">
+ supermemory
+ </p>
+ </div>
+ )}
+ </div>
+ <div className="self-stretch w-px bg-[#FFFFFF33]" />
+ <div className="flex items-center gap-2">
+ <p>📁 {projectName}</p>
+ <DropdownMenu>
+ <DropdownMenuTrigger asChild>
+ <button
+ type="button"
+ className="cursor-pointer hover:opacity-70 transition-opacity"
+ aria-label="Change project"
+ >
+ <ChevronsLeftRight className="size-4 rotate-90" />
+ </button>
+ </DropdownMenuTrigger>
+ <DropdownMenuContent align="start" className="w-56">
+ <DropdownMenuItem
+ onClick={() => switchProject(DEFAULT_PROJECT_ID)}
+ className={cn(
+ "cursor-pointer",
+ selectedProject === DEFAULT_PROJECT_ID && "bg-accent",
+ )}
+ >
+ <FolderIcon className="h-3.5 w-3.5 mr-2" />
+ <span className="text-sm">Default Project</span>
+ </DropdownMenuItem>
+ {projects
+ .filter((p: Project) => p.containerTag !== DEFAULT_PROJECT_ID)
+ .map((project: Project) => (
+ <DropdownMenuItem
+ key={project.id}
+ onClick={() => switchProject(project.containerTag)}
+ className={cn(
+ "cursor-pointer",
+ selectedProject === project.containerTag && "bg-accent",
+ )}
+ >
+ <FolderIcon className="h-3.5 w-3.5 mr-2 opacity-70" />
+ <span className="text-sm truncate">{project.name}</span>
+ </DropdownMenuItem>
+ ))}
+ </DropdownMenuContent>
+ </DropdownMenu>
+ </div>
+ </div>
+ <Tabs defaultValue="grid">
+ <TabsList className="rounded-full border border-[#161F2C] h-11! z-10!">
+ <TabsTrigger
+ value="grid"
+ className={cn(
+ "rounded-full data-[state=active]:bg-[#00173C]! dark:data-[state=active]:border-[#2261CA33]! px-4 py-4",
+ dmSansClassName(),
+ )}
+ >
+ <LayoutGridIcon className="size-4" />
+ Grid
+ </TabsTrigger>
+ <TabsTrigger
+ value="graph"
+ className={cn(
+ "rounded-full dark:data-[state=active]:bg-[#00173C]! dark:data-[state=active]:border-[#2261CA33]! px-4 py-4",
+ dmSansClassName(),
+ )}
+ >
+ <LayoutGridIcon className="size-4" />
+ Graph
+ </TabsTrigger>
+ </TabsList>
+ </Tabs>
+ <div className="flex items-center gap-2 z-10!">
+ <Button
+ variant="headers"
+ className="rounded-full text-base gap-2 h-10!"
+ onClick={onAddMemory}
+ >
+ <div className="flex items-center gap-2">
+ <Plus className="size-4" />
+ Add memory
+ </div>
+ <span
+ className={cn(
+ "bg-[#21212180] border border-[#73737333] text-[#737373] rounded-sm size-4 text-[10px] flex items-center justify-center",
+ dmSansClassName(),
+ )}
+ >
+ C
+ </span>
+ </Button>
+ <Button
+ variant="headers"
+ className="rounded-full text-base gap-2 h-10!"
+ onClick={onOpenMCP}
+ >
+ <div className="flex items-center gap-2">MCP</div>
+ </Button>
+ <Button
+ variant="headers"
+ className="rounded-full text-base gap-2 h-10!"
+ >
+ <SearchIcon className="size-4" />
+ <span className="bg-[#21212180] border border-[#73737333] text-[#737373] rounded-sm text-[10px] flex items-center justify-center gap-0.5 px-1">
+ <svg
+ className="size-[7.5px]"
+ viewBox="0 0 9 9"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Search Icon</title>
+ <path
+ d="M6.66663 0.416626C6.33511 0.416626 6.01716 0.548322 5.78274 0.782743C5.54832 1.01716 5.41663 1.33511 5.41663 1.66663V6.66663C5.41663 6.99815 5.54832 7.31609 5.78274 7.55051C6.01716 7.78493 6.33511 7.91663 6.66663 7.91663C6.99815 7.91663 7.31609 7.78493 7.55051 7.55051C7.78493 7.31609 7.91663 6.99815 7.91663 6.66663C7.91663 6.33511 7.78493 6.01716 7.55051 5.78274C7.31609 5.54832 6.99815 5.41663 6.66663 5.41663H1.66663C1.33511 5.41663 1.01716 5.54832 0.782743 5.78274C0.548322 6.01716 0.416626 6.33511 0.416626 6.66663C0.416626 6.99815 0.548322 7.31609 0.782743 7.55051C1.01716 7.78493 1.33511 7.91663 1.66663 7.91663C1.99815 7.91663 2.31609 7.78493 2.55051 7.55051C2.78493 7.31609 2.91663 6.99815 2.91663 6.66663V1.66663C2.91663 1.33511 2.78493 1.01716 2.55051 0.782743C2.31609 0.548322 1.99815 0.416626 1.66663 0.416626C1.33511 0.416626 1.01716 0.548322 0.782743 0.782743C0.548322 1.01716 0.416626 1.33511 0.416626 1.66663C0.416626 1.99815 0.548322 2.31609 0.782743 2.55051C1.01716 2.78493 1.33511 2.91663 1.66663 2.91663H6.66663C6.99815 2.91663 7.31609 2.78493 7.55051 2.55051C7.78493 2.31609 7.91663 1.99815 7.91663 1.66663C7.91663 1.33511 7.78493 1.01716 7.55051 0.782743C7.31609 0.548322 6.99815 0.416626 6.66663 0.416626Z"
+ stroke="#737373"
+ strokeWidth="0.833333"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ />
+ </svg>
+ <span className={cn(dmSansClassName())}>K</span>
+ </span>
+ </Button>
+ {user && (
+ <DropdownMenu>
+ <DropdownMenuTrigger asChild>
+ <Avatar className="border border-border h-8 w-8 md:h-10 md:w-10 cursor-pointer">
+ <AvatarImage src={user?.image ?? ""} />
+ <AvatarFallback>{user?.name?.charAt(0)}</AvatarFallback>
+ </Avatar>
+ </DropdownMenuTrigger>
+ <DropdownMenuContent align="end">
+ <DropdownMenuItem onClick={() => router.push("/new/settings")}>
+ <Settings className="h-4 w-4" />
+ Settings
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => authClient.signOut()}>
+ <LogOut className="h-4 w-4" />
+ Logout
+ </DropdownMenuItem>
+ </DropdownMenuContent>
+ </DropdownMenu>
+ )}
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/mcp-modal/index.tsx b/apps/web/components/new/mcp-modal/index.tsx
new file mode 100644
index 00000000..d555ae62
--- /dev/null
+++ b/apps/web/components/new/mcp-modal/index.tsx
@@ -0,0 +1,70 @@
+import { dmSans125ClassName, dmSansClassName } from "@/utils/fonts"
+import { Dialog, DialogContent, DialogFooter } from "@repo/ui/components/dialog"
+import { cn } from "@lib/utils"
+import * as DialogPrimitive from "@radix-ui/react-dialog"
+import { ChevronsUpDownIcon, XIcon } from "lucide-react"
+import { Button } from "@ui/components/button"
+import { MCPSteps } from "./mcp-detail-view"
+
+export function MCPModal({
+ isOpen,
+ onClose,
+}: {
+ isOpen: boolean
+ onClose: () => void
+}) {
+ return (
+ <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>
+ <DialogContent
+ className={cn(
+ "w-[80%]! max-w-[900px]! h-[80%]! max-h-[375px]! border-none bg-[#1B1F24] flex flex-col p-4 gap-3 rounded-[22px]",
+ dmSansClassName(),
+ )}
+ style={{
+ boxShadow:
+ "0 2.842px 14.211px 0 rgba(0, 0, 0, 0.25), 0.711px 0.711px 0.711px 0 rgba(255, 255, 255, 0.10) inset",
+ }}
+ showCloseButton={false}
+ >
+ <div className="flex justify-between h-fit">
+ <div className="pl-1 space-y-1">
+ <p className={cn("font-semibold", dmSans125ClassName())}>
+ Connect your AI to Supermemory
+ </p>
+ <p className={cn("text-[#737373] font-medium")}>
+ Let your AI create and use your memories via MCP. Learn more
+ </p>
+ </div>
+ <div className="flex items-center gap-2">
+ <DialogPrimitive.Close
+ className="bg-[#0D121A] w-7 h-7 flex items-center justify-center focus:ring-ring rounded-full transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 shadow-[inset_0_2px_4px_rgba(0,0,0,0.3),inset_0_1px_2px_rgba(0,0,0,0.1)]"
+ data-slot="dialog-close"
+ >
+ <XIcon stroke="#737373" />
+ <span className="sr-only">Close</span>
+ </DialogPrimitive.Close>
+ </div>
+ </div>
+ <div className="w-full px-4 py-4 rounded-[14px] bg-[#14161A] shadow-inside-out overflow-y-auto">
+ <MCPSteps variant="embedded" />
+ </div>
+ <DialogFooter className="justify-between!">
+ <div className="flex items-center gap-2">
+ <Button variant="insideOut">
+ My Space <ChevronsUpDownIcon className="size-4" color="#737373" />
+ </Button>
+ <Button
+ variant="ghost"
+ className="text-[#737373] cursor-pointer rounded-full"
+ >
+ Migrate from MCP v1
+ </Button>
+ </div>
+ <Button variant="insideOut" className="px-6 py-[10px]">
+ Done
+ </Button>
+ </DialogFooter>
+ </DialogContent>
+ </Dialog>
+ )
+}
diff --git a/apps/web/components/new/mcp-modal/mcp-detail-view.tsx b/apps/web/components/new/mcp-modal/mcp-detail-view.tsx
new file mode 100644
index 00000000..f1254bcb
--- /dev/null
+++ b/apps/web/components/new/mcp-modal/mcp-detail-view.tsx
@@ -0,0 +1,629 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { Button } from "@ui/components/button"
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@ui/components/select"
+import { CircleCheckIcon, CopyIcon, Check } from "lucide-react"
+import Image from "next/image"
+import { toast } from "sonner"
+import { analytics } from "@/lib/analytics"
+import { cn } from "@lib/utils"
+import { dmMonoClassName, dmSansClassName } from "@/utils/fonts"
+import { SyncLogoIcon } from "@ui/assets/icons"
+
+const clients = {
+ cursor: "Cursor",
+ claude: "Claude Desktop",
+ vscode: "VSCode",
+ cline: "Cline",
+ "gemini-cli": "Gemini CLI",
+ "claude-code": "Claude Code",
+ "mcp-url": "MCP URL",
+ "roo-cline": "Roo Cline",
+ witsy: "Witsy",
+ enconvo: "Enconvo",
+} as const
+
+interface MCPStepsProps {
+ variant?: "full" | "embedded"
+}
+
+export function MCPSteps({ variant = "full" }: MCPStepsProps) {
+ const [selectedClient, setSelectedClient] = useState<
+ keyof typeof clients | null
+ >(null)
+ const [selectedProject] = useState<string>("sm_project_default")
+ const [mcpUrlTab, setMcpUrlTab] = useState<"oneClick" | "manual">("oneClick")
+ const [isCopied, setIsCopied] = useState(false)
+ const [activeStep, setActiveStep] = useState<1 | 2 | 3>(1)
+
+ useEffect(() => {
+ analytics.mcpViewOpened()
+ }, [])
+
+ function generateInstallCommand() {
+ if (!selectedClient) return ""
+
+ let command = `npx -y install-mcp@latest https://api.supermemory.ai/mcp --client ${selectedClient} --oauth=yes`
+
+ const projectIdForCommand = selectedProject.replace(/^sm_project_/, "")
+ command += ` --project ${projectIdForCommand}`
+
+ return command
+ }
+
+ const copyToClipboard = () => {
+ const command = generateInstallCommand()
+ navigator.clipboard.writeText(command)
+ analytics.mcpInstallCmdCopied()
+ setIsCopied(true)
+ setActiveStep(3)
+ setTimeout(() => setIsCopied(false), 2000)
+ }
+
+ const isEmbedded = variant === "embedded"
+
+ return (
+ <div
+ className={cn(
+ "w-full relative",
+ isEmbedded ? "h-full overflow-y-auto" : "max-w-2xl",
+ )}
+ >
+ <div
+ className="absolute left-4 top-0 w-px bg-[#1E293B] z-10"
+ style={{ height: activeStep === 3 ? isEmbedded ? "100%" : "calc(100% - 4rem)" : "100%" }}
+ />
+ <div className="flex items-start space-x-4 z-20">
+ <button
+ type="button"
+ className={cn(
+ "rounded-full w-8 h-8 flex items-center justify-center text-sm font-medium shrink-0 z-20 text-white",
+ selectedClient && "cursor-pointer hover:bg-[#1a2530]",
+ !selectedClient && "cursor-default",
+ activeStep === 1
+ ? "border border-[#15233C] bg-[#08142D]"
+ : "bg-[#161F2B] ",
+ )}
+ onClick={() => {
+ if (selectedClient) {
+ setSelectedClient(null)
+ setActiveStep(1)
+ }
+ }}
+ onKeyDown={(e) => {
+ if (selectedClient && (e.key === "Enter" || e.key === " ")) {
+ e.preventDefault()
+ setSelectedClient(null)
+ setActiveStep(1)
+ }
+ }}
+ disabled={!selectedClient}
+ >
+ <span
+ className="text-lg"
+ style={
+ activeStep === 1
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ 1
+ </span>
+ </button>
+ <div className="flex-1 mb-4">
+ <div className="flex gap-4 mb-4">
+ <button
+ type="button"
+ className={cn(
+ "text-white text-lg font-medium text-center",
+ selectedClient && "cursor-pointer hover:opacity-80",
+ !selectedClient && "cursor-default",
+ )}
+ onClick={() => {
+ if (selectedClient) {
+ setSelectedClient(null)
+ setActiveStep(1)
+ }
+ }}
+ onKeyDown={(e) => {
+ if (selectedClient && (e.key === "Enter" || e.key === " ")) {
+ e.preventDefault()
+ setSelectedClient(null)
+ setActiveStep(1)
+ }
+ }}
+ disabled={!selectedClient}
+ style={
+ activeStep === 1
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ Select your AI client
+ </button>
+ {selectedClient && (
+ <Select
+ onValueChange={(value) => {
+ setSelectedClient(value as keyof typeof clients)
+ setActiveStep(2)
+ }}
+ value={selectedClient || undefined}
+ >
+ <SelectTrigger
+ className="max-w-md rounded-full border-[#242A33] text-white hover:border-gray-600 bg-transparent!"
+ style={{
+ background:
+ "linear-gradient(0deg, #0A0E14 0%, #080B0F 100%)",
+ }}
+ >
+ {selectedClient ? (
+ <div className="flex items-center gap-2">
+ <Image
+ alt={clients[selectedClient]}
+ height={20}
+ width={20}
+ unoptimized
+ src={
+ selectedClient === "mcp-url"
+ ? "/mcp-icon.svg"
+ : `/mcp-supported-tools/${selectedClient === "claude-code" ? "claude" : selectedClient}.png`
+ }
+ />
+ <span>{clients[selectedClient]}</span>
+ </div>
+ ) : (
+ <SelectValue placeholder="Select a client" />
+ )}
+ </SelectTrigger>
+ <SelectContent className="bg-black border-none">
+ {Object.entries(clients)
+ .slice(0, 7)
+ .map(([key, clientName]) => (
+ <SelectItem
+ key={key}
+ value={key}
+ className="text-white hover:bg-[#080B0F]"
+ >
+ <div className="flex items-center gap-2">
+ <Image
+ alt={clientName}
+ height={20}
+ width={20}
+ unoptimized
+ src={
+ key === "mcp-url"
+ ? "/mcp-icon.svg"
+ : `/mcp-supported-tools/${key === "claude-code" ? "claude" : key}.png`
+ }
+ />
+ <span>{clientName}</span>
+ </div>
+ </SelectItem>
+ ))}
+ </SelectContent>
+ </Select>
+ )}
+ </div>
+ <div
+ className={cn(
+ "flex flex-wrap gap-2 mb-4",
+ selectedClient ? "hidden" : "",
+ )}
+ >
+ {Object.entries(clients)
+ .slice(0, 7)
+ .map(([key, clientName]) => (
+ <button
+ key={key}
+ type="button"
+ onClick={() => {
+ setSelectedClient(key as keyof typeof clients)
+ setActiveStep(2)
+ }}
+ className={`mcp-client-button-group py-[6px] pl-2 pr-3 rounded-full border transition-colors cursor-pointer duration-200 ${
+ selectedClient === key
+ ? "border-blue-500 bg-blue-500/10"
+ : "border-[#242A33] bg-[#080B0F] hover:border-[#3273FC4D] hover:bg-[#08142D]"
+ }`}
+ >
+ <div className="flex items-center space-x-1">
+ <div className="w-5 h-5 flex items-center justify-center">
+ <Image
+ alt={clientName}
+ unoptimized
+ className="rounded object-contain"
+ height={20}
+ onError={(e) => {
+ const target = e.target as HTMLImageElement
+ target.style.display = "none"
+ const parent = target.parentElement
+ if (
+ parent &&
+ !parent.querySelector(".fallback-text")
+ ) {
+ const fallback = document.createElement("span")
+ fallback.className =
+ "fallback-text text-xs font-bold text-white"
+ fallback.textContent = clientName
+ .substring(0, 2)
+ .toUpperCase()
+ parent.appendChild(fallback)
+ }
+ }}
+ src={
+ key === "mcp-url"
+ ? "/mcp-icon.svg"
+ : `/mcp-supported-tools/${key === "claude-code" ? "claude" : key}.png`
+ }
+ width={20}
+ />
+ </div>
+ <span className="mcp-client-gradient-text text-sm font-medium text-white">
+ {clientName}
+ </span>
+ </div>
+ </button>
+ ))}
+ </div>
+ {!selectedClient && (
+ <p className={cn("text-[#8B8B8B] text-[14px]", dmSansClassName())}>
+ *You can connect to all of these, setup is different for each one
+ </p>
+ )}
+ </div>
+ </div>
+
+ <div className="flex items-start space-x-4">
+ <div
+ className={cn(
+ "rounded-full w-8 h-8 flex items-center justify-center text-sm font-medium shrink-0 z-20 text-white",
+ activeStep === 2
+ ? "border border-[#15233C] bg-[#08142D]"
+ : "bg-[#161F2B]",
+ )}
+ >
+ <span
+ className="text-lg"
+ style={
+ activeStep === 2
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ 2
+ </span>
+ </div>
+ <div className="flex-1 mb-4">
+ <h3
+ className="text-white text-lg font-medium mb-4"
+ style={
+ activeStep === 2
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ Copy the installation command
+ </h3>
+ {selectedClient && (
+ <div className="space-y-3">
+ {selectedClient === "mcp-url" ? (
+ <div className="space-y-4">
+ <div className="flex justify-end">
+ <div className="flex bg-[#0D121A] rounded-full p-1 border border-gray-600">
+ <button
+ className={`px-3 py-1.5 text-xs font-medium rounded-full transition-all ${
+ mcpUrlTab === "oneClick"
+ ? "bg-[#080B0F] text-white border border-gray-600"
+ : "text-gray-400 hover:text-white"
+ }`}
+ onClick={() => setMcpUrlTab("oneClick")}
+ type="button"
+ >
+ Quick Setup
+ </button>
+ <button
+ className={`px-3 py-1.5 text-xs font-medium rounded-full transition-all ${
+ mcpUrlTab === "manual"
+ ? "bg-[#080B0F] text-white border border-gray-600"
+ : "text-gray-400 hover:text-white"
+ }`}
+ onClick={() => setMcpUrlTab("manual")}
+ type="button"
+ >
+ Manual Config
+ </button>
+ </div>
+ </div>
+
+ {mcpUrlTab === "oneClick" ? (
+ <div className="space-y-2">
+ <p className="text-sm text-gray-400">
+ Use this URL to quickly configure supermemory in your AI
+ assistant
+ </p>
+ <div className="relative">
+ <input
+ className="font-mono text-xs w-full pr-10 p-2 bg-black border border-gray-600 rounded text-green-400"
+ readOnly
+ value="https://api.supermemory.ai/mcp"
+ />
+ <button
+ type="button"
+ className="absolute top-1 right-1 cursor-pointer p-1"
+ onClick={() => {
+ navigator.clipboard.writeText(
+ "https://api.supermemory.ai/mcp",
+ )
+ analytics.mcpInstallCmdCopied()
+ toast.success("Copied to clipboard!")
+ setActiveStep(3)
+ }}
+ >
+ <CopyIcon className="size-4 text-gray-400 hover:text-white" />
+ </button>
+ </div>
+ </div>
+ ) : (
+ <div className="space-y-3">
+ <p className="text-sm text-gray-400">
+ Add this configuration to your MCP settings file with
+ authentication
+ </p>
+ <div className="relative">
+ <pre className="bg-black border border-gray-600 rounded-lg p-4 pr-12 text-xs overflow-x-auto max-w-full">
+ <code className="font-mono block whitespace-pre-wrap break-all text-green-400">
+ {`{
+ "supermemory-mcp": {
+ "command": "npx",
+ "args": ["-y", "mcp-remote", "https://api.supermemory.ai/mcp"],
+ "env": {},
+ "headers": {
+ "Authorization": "Bearer your-api-key-here"
+ }
+ }
+}`}
+ </code>
+ </pre>
+ <button
+ type="button"
+ className="absolute top-2 right-2 cursor-pointer h-8 w-8 p-0 bg-[#0D121A] hover:bg-[#1a1a1a] rounded"
+ onClick={() => {
+ const config = `{
+ "supermemory-mcp": {
+ "command": "npx",
+ "args": ["-y", "mcp-remote", "https://api.supermemory.ai/mcp"],
+ "env": {},
+ "headers": {
+ "Authorization": "Bearer your-api-key-here"
+ }
+ }
+}`
+ navigator.clipboard.writeText(config)
+ analytics.mcpInstallCmdCopied()
+ toast.success("Copied to clipboard!")
+ setIsCopied(true)
+ setActiveStep(3)
+ setTimeout(() => setIsCopied(false), 2000)
+ }}
+ >
+ {isCopied ? (
+ <span className="text-green-600">✓</span>
+ ) : (
+ <CopyIcon className="size-3.5" />
+ )}
+ </button>
+ </div>
+ <p className="text-xs text-gray-400">
+ The API key is included as a Bearer token in the
+ Authorization header
+ </p>
+ </div>
+ )}
+ </div>
+ ) : (
+ <div className="space-y-3">
+ <div className="relative">
+ <input
+ className={cn(
+ "text-xs w-full pr-24 py-4 bg-[#0D121A] rounded-xl text-white pl-3",
+ dmMonoClassName(),
+ )}
+ style={{
+ border: "1px solid rgba(61, 67, 77, 0.10)",
+ textOverflow: "ellipsis",
+ overflow: "hidden",
+ whiteSpace: "nowrap",
+ }}
+ readOnly
+ value={generateInstallCommand()}
+ />
+ <button
+ type="button"
+ className={cn(
+ "absolute top-[5px] right-1 cursor-pointer p-1 flex items-center rounded-[10px] px-3 py-2 gap-2",
+ dmSansClassName(),
+ )}
+ style={{
+ background:
+ "linear-gradient(180deg, #267BF1 40.23%, #15468B 100%), linear-gradient(180deg, #0D121A -26.14%, #000 100%)",
+ border: "1px solid #000",
+ }}
+ onClick={copyToClipboard}
+ >
+ {isCopied ? (
+ <>
+ <Check className="size-4 text-white" />
+ <span className="text-white">Copied</span>
+ </>
+ ) : (
+ <>
+ <CopyIcon className="size-[20px] text-white stroke-[2px]" />
+ <span className="text-white">Copy</span>
+ </>
+ )}
+ </button>
+ </div>
+ </div>
+ )}
+ </div>
+ )}
+ </div>
+ </div>
+
+ <div className="flex items-start space-x-4">
+ <div
+ className={cn(
+ "rounded-full w-8 h-8 flex items-center justify-center text-sm font-medium shrink-0 z-20 text-white",
+ activeStep === 3
+ ? "border border-[#15233C] bg-[#08142D]"
+ : "bg-[#161F2B] ",
+ )}
+ >
+ <span
+ className="text-lg"
+ style={
+ activeStep === 3
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ 3
+ </span>
+ </div>
+ <div className="flex-1 space-y-4">
+ <h3
+ className="text-white text-lg font-medium"
+ style={
+ activeStep === 3
+ ? {
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }
+ : undefined
+ }
+ >
+ Run command in your terminal
+ </h3>
+ {activeStep === 3 && (
+ <p
+ className={cn(
+ "font-mono text-xs w-full pr-10 p-4 px-2 bg-[#0D121A] rounded-xl text-white pl-3 flex items-center gap-2",
+ dmMonoClassName(),
+ )}
+ style={{
+ border: "1px solid rgba(61, 67, 77, 0.10)",
+ }}
+ >
+ <SyncLogoIcon className="size-4" />
+ Waiting for installation
+ </p>
+ )}
+ </div>
+ </div>
+ </div>
+ )
+}
+
+interface MCPDetailViewProps {
+ onBack: () => void
+}
+
+export function MCPDetailView({ onBack }: MCPDetailViewProps) {
+ return (
+ <div className="flex flex-col h-full p-8">
+ <div className="mb-6">
+ <Button
+ variant="link"
+ className="text-white hover:text-gray-300 p-0 hover:no-underline cursor-pointer"
+ onClick={onBack}
+ >
+ ← Back
+ </Button>
+ </div>
+
+ <div className="flex-1 flex flex-col items-start justify-start">
+ <h1 className="text-white text-xl font-medium mb-4 text-start">
+ Connect your AI to supermemory MCP
+ </h1>
+
+ <div className="mb-12 space-x-4 flex max-w-2xl">
+ <div
+ className={cn(
+ "flex items-start space-x-3 w-[200px]",
+ dmSansClassName(),
+ )}
+ >
+ <CircleCheckIcon className="size-4 text-green-500 shrink-0 mt-0.5" />
+ <p className="text-[#8B8B8B] text-sm">
+ MCP connects your AI apps to create and use memories directly
+ </p>
+ </div>
+ <div
+ className={cn(
+ "flex items-start space-x-3 w-[200px]",
+ dmSansClassName(),
+ )}
+ >
+ <CircleCheckIcon className="size-4 text-green-500 shrink-0 mt-0.5" />
+ <p className="text-[#8B8B8B] text-sm">
+ Auto-fetch the right context from anything you've saved
+ </p>
+ </div>
+ <div
+ className={cn(
+ "flex items-start space-x-3 w-[200px]",
+ dmSansClassName(),
+ )}
+ >
+ <CircleCheckIcon className="size-4 text-green-500 shrink-0 mt-0.5" />
+ <p className="text-[#8B8B8B] text-sm">
+ One-time setup, <br /> seamless integration across your workflow
+ </p>
+ </div>
+ </div>
+
+ <MCPSteps variant="full" />
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/memories-grid.tsx b/apps/web/components/new/memories-grid.tsx
new file mode 100644
index 00000000..e5972d51
--- /dev/null
+++ b/apps/web/components/new/memories-grid.tsx
@@ -0,0 +1,423 @@
+"use client"
+
+import { useAuth } from "@lib/auth-context"
+import { $fetch } from "@repo/lib/api"
+import type { DocumentsWithMemoriesResponseSchema } from "@repo/validation/api"
+import { useInfiniteQuery } from "@tanstack/react-query"
+import { useCallback, memo, useMemo, useState, useRef } from "react"
+import type { z } from "zod"
+import {
+ Masonry,
+ useInfiniteLoader,
+} from "masonic"
+import { dmSansClassName } from "@/utils/fonts"
+import { SuperLoader } from "@/components/superloader"
+import { cn } from "@lib/utils"
+import { Button } from "@ui/components/button"
+import { useProject } from "@/stores"
+import { useIsMobile } from "@hooks/use-mobile"
+import type { Tweet } from "react-tweet/api"
+import { TweetPreview } from "./document-cards/tweet-preview"
+import { WebsitePreview } from "./document-cards/website-preview"
+import { GoogleDocsPreview } from "./document-cards/google-docs-preview"
+import { FilePreview } from "./document-cards/file-preview"
+import { NotePreview } from "./document-cards/note-preview"
+import { YoutubePreview } from "./document-cards/youtube-preview"
+import { getAbsoluteUrl, isYouTubeUrl, useYouTubeChannelName } from "./utils"
+import { SyncLogoIcon } from "@ui/assets/icons"
+import { McpPreview } from "./document-cards/mcp-preview"
+import { DocumentModal } from "./document-modal"
+
+type DocumentsResponse = z.infer<typeof DocumentsWithMemoriesResponseSchema>
+type DocumentWithMemories = DocumentsResponse["documents"][0]
+
+const IS_DEV = process.env.NODE_ENV === "development"
+const PAGE_SIZE = IS_DEV ? 100 : 100
+const MAX_TOTAL = 1000
+
+export function MemoriesGrid({ isChatOpen }: { isChatOpen: boolean }) {
+ const { user } = useAuth()
+ const { selectedProject } = useProject()
+ const isMobile = useIsMobile()
+ const [selectedDocument, setSelectedDocument] =
+ useState<DocumentWithMemories | null>(null)
+ const [isModalOpen, setIsModalOpen] = useState(false)
+
+ const {
+ data,
+ error,
+ isPending,
+ isFetchingNextPage,
+ hasNextPage,
+ fetchNextPage,
+ } = useInfiniteQuery<DocumentsResponse, Error>({
+ queryKey: ["documents-with-memories", selectedProject],
+ initialPageParam: 1,
+ queryFn: async ({ pageParam }) => {
+ const response = await $fetch("@post/documents/documents", {
+ body: {
+ page: pageParam as number,
+ limit: (pageParam as number) === 1 ? (IS_DEV ? 500 : 500) : PAGE_SIZE,
+ sort: "createdAt",
+ order: "desc",
+ containerTags: selectedProject ? [selectedProject] : undefined,
+ },
+ disableValidation: true,
+ })
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to fetch documents")
+ }
+
+ return response.data
+ },
+ getNextPageParam: (lastPage, allPages) => {
+ const loaded = allPages.reduce(
+ (acc, p) => acc + (p.documents?.length ?? 0),
+ 0,
+ )
+ if (loaded >= MAX_TOTAL) return undefined
+
+ const { currentPage, totalPages } = lastPage.pagination
+ if (currentPage < totalPages) {
+ return currentPage + 1
+ }
+ return undefined
+ },
+ staleTime: 5 * 60 * 1000,
+ enabled: !!user,
+ })
+
+ const documents = useMemo(() => {
+ return (
+ data?.pages.flatMap((p: DocumentsResponse) => p.documents ?? []) ?? []
+ )
+ }, [data])
+
+ const loadMoreDocuments = useCallback(async (): Promise<void> => {
+ if (hasNextPage && !isFetchingNextPage) {
+ await fetchNextPage()
+ return
+ }
+ return
+ }, [hasNextPage, isFetchingNextPage, fetchNextPage])
+
+ const maybeLoadMore = useInfiniteLoader(
+ async (_startIndex, _stopIndex, _currentItems) => {
+ if (hasNextPage && !isFetchingNextPage) {
+ await loadMoreDocuments()
+ }
+ },
+ {
+ isItemLoaded: (index, items) => !!items[index],
+ minimumBatchSize: 10,
+ threshold: 5,
+ },
+ )
+
+ const handleCardClick = useCallback((document: DocumentWithMemories) => {
+ setSelectedDocument(document)
+ setIsModalOpen(true)
+ }, [])
+
+ const renderDocumentCard = useCallback(
+ ({
+ index,
+ data,
+ width,
+ }: {
+ index: number
+ data: DocumentWithMemories
+ width: number
+ }) => (
+ <DocumentCard
+ index={index}
+ data={data}
+ width={width}
+ onClick={handleCardClick}
+ />
+ ),
+ [handleCardClick],
+ )
+
+ if (!user) {
+ return (
+ <div className="flex items-center justify-center h-full">
+ <div className="text-center text-muted-foreground">
+ <p>Please log in to view your memories</p>
+ </div>
+ </div>
+ )
+ }
+
+ return (
+ <div
+ className="h-full"
+ >
+ <Button
+ className={cn(
+ dmSansClassName(),
+ "rounded-full border border-[#161F2C] bg-[#0D121A] px-4 py-2 data-[state=active]:bg-[#00173C] data-[state=active]:border-[#2261CA33] mb-4",
+ )}
+ data-state="active"
+ >
+ All
+ </Button>
+ {error ? (
+ <div className="h-full flex items-center justify-center p-4">
+ <div className="text-center text-muted-foreground">
+ Error loading documents: {error.message}
+ </div>
+ </div>
+ ) : isPending ? (
+ <div className="h-full flex items-center justify-center p-4">
+ <SuperLoader />
+ </div>
+ ) : documents.length === 0 && !isPending ? (
+ <div className="h-full flex items-center justify-center p-4">
+ <div className="text-center text-muted-foreground">
+ No memories found
+ </div>
+ </div>
+ ) : (
+ <div className="h-full overflow-auto scrollbar-thin">
+ <Masonry
+ key={`masonry-${documents.length}-${documents.map((d) => d.id).join(",")}-${isChatOpen}`}
+ items={documents}
+ render={renderDocumentCard}
+ columnGutter={0}
+ rowGutter={0}
+ columnWidth={216}
+ maxColumnCount={isMobile ? 1 : undefined}
+ itemHeightEstimate={200}
+ overscanBy={3}
+ onRender={maybeLoadMore}
+ />
+
+ {isFetchingNextPage && (
+ <div className="py-8 flex items-center justify-center">
+ <SuperLoader />
+ </div>
+ )}
+ </div>
+ )}
+ <DocumentModal
+ document={selectedDocument}
+ isOpen={isModalOpen}
+ onClose={() => setIsModalOpen(false)}
+ />
+ </div>
+ )
+}
+
+function DocumentUrlDisplay({ url }: { url: string }) {
+ const isYouTube = isYouTubeUrl(url)
+ const { data: channelName, isLoading } = useYouTubeChannelName(
+ isYouTube ? url : null,
+ )
+
+ if (isYouTube) {
+ return (
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[10px] text-[#737373] line-clamp-1",
+ )}
+ >
+ {isLoading ? "YouTube" : channelName || "YouTube"}
+ </p>
+ )
+ }
+
+ return (
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[10px] text-[#737373] line-clamp-1",
+ )}
+ >
+ {getAbsoluteUrl(url)}
+ </p>
+ )
+}
+
+const DocumentCard = memo(
+ ({
+ index: _index,
+ data: document,
+ width,
+ onClick,
+ }: {
+ index: number
+ data: DocumentWithMemories
+ width: number
+ onClick: (document: DocumentWithMemories) => void
+ }) => {
+ const [rotation, setRotation] = useState({ rotateX: 0, rotateY: 0 })
+ const cardRef = useRef<HTMLButtonElement>(null)
+
+ const handleMouseMove = (e: React.MouseEvent<HTMLButtonElement>) => {
+ if (!cardRef.current) return
+
+ const rect = cardRef.current.getBoundingClientRect()
+ const centerX = rect.left + rect.width / 2
+ const centerY = rect.top + rect.height / 2
+
+ const mouseX = e.clientX - centerX
+ const mouseY = e.clientY - centerY
+
+ // Calculate rotation angles (max 15 degrees)
+ const rotateY = (mouseX / (rect.width / 2)) * 15
+ const rotateX = -(mouseY / (rect.height / 2)) * 15
+
+ setRotation({ rotateX, rotateY })
+ }
+
+ const handleMouseLeave = () => {
+ setRotation({ rotateX: 0, rotateY: 0 })
+ }
+
+ return (
+ <div className="p-2" style={{ width }}>
+ <button
+ ref={cardRef}
+ type="button"
+ className={cn(
+ "rounded-[22px] bg-[#1B1F24] px-1 space-y-2 pt-1 cursor-pointer w-full",
+ "border-none text-left transition-transform duration-200 ease-out",
+ document.type === "image" ||
+ document.metadata?.mimeType?.toString().startsWith("image/")
+ ? "pb-1"
+ : "",
+ )}
+ onClick={() => onClick(document)}
+ onMouseMove={handleMouseMove}
+ onMouseLeave={handleMouseLeave}
+ style={{
+ boxShadow:
+ "0 2.842px 14.211px 0 rgba(0, 0, 0, 0.25), 0.711px 0.711px 0.711px 0 rgba(255, 255, 255, 0.10) inset",
+ transform: `perspective(1000px) rotateX(${rotation.rotateX}deg) rotateY(${rotation.rotateY}deg)`,
+ transformStyle: "preserve-3d",
+ }}
+ >
+ <ContentPreview document={document} />
+ {!(
+ document.type === "image" ||
+ document.metadata?.mimeType?.toString().startsWith("image/")
+ ) && (
+ <div className="pb-[10px] space-y-1">
+ {document.url &&
+ !document.url.includes("x.com") &&
+ !document.url.includes("twitter.com") &&
+ !document.url.includes("files.supermemory.ai") && (
+ <div className="px-3">
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[12px] text-[#E5E5E5] line-clamp-1 font-semibold",
+ )}
+ >
+ {document.title}
+ </p>
+
+ <DocumentUrlDisplay url={document.url} />
+ </div>
+ )}
+ <div
+ className={cn(
+ "flex items-center px-3",
+ document.memoryEntries.length > 0
+ ? "justify-between"
+ : "justify-end",
+ )}
+ >
+ {document.memoryEntries.length > 0 && (
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[10px] text-[#369BFD] line-clamp-1 font-semibold flex items-center gap-1",
+ )}
+ style={{
+ background:
+ "linear-gradient(94deg, #369BFD 4.8%, #36FDFD 77.04%, #36FDB5 143.99%)",
+ backgroundClip: "text",
+ WebkitBackgroundClip: "text",
+ WebkitTextFillColor: "transparent",
+ }}
+ >
+ <SyncLogoIcon className="w-[12.33px] h-[10px]" />
+ {document.memoryEntries.length}{" "}
+ {document.memoryEntries.length === 1
+ ? "memory"
+ : "memories"}
+ </p>
+ )}
+ <p
+ className={cn(
+ dmSansClassName(),
+ "text-[10px] text-[#737373] line-clamp-1",
+ )}
+ >
+ {new Date(document.createdAt).toLocaleDateString("en-US", {
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ })}
+ </p>
+ </div>
+ </div>
+ )}
+ </button>
+ </div>
+ )
+ },
+)
+
+DocumentCard.displayName = "DocumentCard"
+
+function ContentPreview({ document }: { document: DocumentWithMemories }) {
+ if (
+ document.url?.includes("https://docs.googleapis.com/v1/documents") ||
+ document.url?.includes("docs.google.com/document") ||
+ document.type === "google_doc"
+ ) {
+ return <GoogleDocsPreview document={document} />
+ }
+
+ if (
+ document.url?.includes("x.com/") &&
+ document.metadata?.sm_internal_twitter_metadata
+ ) {
+ return (
+ <TweetPreview
+ data={
+ document.metadata?.sm_internal_twitter_metadata as unknown as Tweet
+ }
+ />
+ )
+ }
+
+ if (document.source === "mcp") {
+ return <McpPreview document={document} />
+ }
+
+ if (isYouTubeUrl(document.url)) {
+ return <YoutubePreview document={document} />
+ }
+
+ if (
+ document.type === "pdf" ||
+ document.type === "image" ||
+ document.type === "video" ||
+ document.metadata?.mimeType
+ ) {
+ return <FilePreview document={document} />
+ }
+
+ if (document.url?.includes("https://")) {
+ return <WebsitePreview document={document} />
+ }
+
+ // Default to Note
+ return <NotePreview document={document} />
+}
diff --git a/apps/web/components/new/settings/account.tsx b/apps/web/components/new/settings/account.tsx
new file mode 100644
index 00000000..7ac0598d
--- /dev/null
+++ b/apps/web/components/new/settings/account.tsx
@@ -0,0 +1,694 @@
+"use client"
+
+import { dmSans125ClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { useAuth } from "@lib/auth-context"
+import { fetchMemoriesFeature, fetchSubscriptionStatus } from "@lib/queries"
+import { Avatar, AvatarFallback, AvatarImage } from "@ui/components/avatar"
+import {
+ Dialog,
+ DialogContent,
+ DialogTrigger,
+ DialogClose,
+} from "@ui/components/dialog"
+import { useCustomer } from "autumn-js/react"
+import { Check, X, Trash2, LoaderIcon, Settings } from "lucide-react"
+import { useState } from "react"
+
+function SectionTitle({ children }: { children: React.ReactNode }) {
+ return (
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA] px-2",
+ )}
+ >
+ {children}
+ </p>
+ )
+}
+
+function SettingsCard({ children }: { children: React.ReactNode }) {
+ return (
+ <div
+ className={cn(
+ "relative bg-[#14161A] rounded-[14px] p-6 w-full overflow-hidden",
+ "shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]",
+ )}
+ >
+ {children}
+ </div>
+ )
+}
+
+function PlanFeatureRow({
+ icon,
+ text,
+ variant = "muted",
+}: {
+ icon: "check" | "x"
+ text: string
+ variant?: "muted" | "highlight"
+}) {
+ return (
+ <div className="flex items-center gap-2">
+ {icon === "check" ? (
+ <Check
+ className={cn(
+ "size-4 shrink-0",
+ variant === "highlight" ? "text-[#4BA0FA]" : "text-[#737373]",
+ )}
+ />
+ ) : (
+ <X className="size-4 shrink-0 text-[#737373]" />
+ )}
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "text-[14px] tracking-[-0.14px]",
+ variant === "highlight" ? "text-white" : "text-[#737373]",
+ )}
+ >
+ {text}
+ </span>
+ </div>
+ )
+}
+
+export default function Account() {
+ const { user, org } = useAuth()
+ const autumn = useCustomer()
+ const [isUpgrading, setIsUpgrading] = useState(false)
+ const [deleteConfirmText, setDeleteConfirmText] = useState("")
+ const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)
+
+ // Billing data
+ const {
+ data: status = {
+ consumer_pro: { allowed: false, status: null },
+ },
+ isLoading: isCheckingStatus,
+ } = fetchSubscriptionStatus(autumn, !autumn.isLoading)
+
+ const proStatus = status.consumer_pro
+ const hasProProduct = proStatus?.status !== null
+
+ const { data: memoriesCheck } = fetchMemoriesFeature(
+ autumn,
+ !autumn.isLoading && !isCheckingStatus,
+ )
+ const memoriesUsed = memoriesCheck?.usage ?? 0
+ const memoriesLimit = memoriesCheck?.included_usage ?? 200
+
+ // Calculate progress percentage
+ const usagePercent = Math.min((memoriesUsed / memoriesLimit) * 100, 100)
+
+ // Handlers
+ const handleUpgrade = async () => {
+ setIsUpgrading(true)
+ try {
+ await autumn.attach({
+ productId: "consumer_pro",
+ successUrl: "https://app.supermemory.ai/new/settings#account",
+ })
+ window.location.reload()
+ } catch (error) {
+ console.error(error)
+ setIsUpgrading(false)
+ }
+ }
+
+ const handleDeleteAccount = () => {
+ if (deleteConfirmText !== "DELETE") return
+ // TODO: Implement account deletion API call
+ console.log("Delete account requested")
+ setIsDeleteDialogOpen(false)
+ setDeleteConfirmText("")
+ }
+
+ const isDeleteEnabled = deleteConfirmText === "DELETE"
+
+ // Format member since date
+ const memberSince = user?.createdAt
+ ? new Date(user.createdAt).toLocaleDateString("en-US", {
+ month: "short",
+ year: "numeric",
+ })
+ : "—"
+
+ return (
+ <div className="flex flex-col gap-8 pt-4 w-full ">
+ <section id="profile-details" className="flex flex-col gap-4">
+ <SectionTitle>Profile Details</SectionTitle>
+ <SettingsCard>
+ <div className="flex flex-col gap-6">
+ {/* Avatar + Name/Email */}
+ <div className="flex items-center gap-4">
+ <div className="relative size-16 rounded-full bg-linear-to-b from-[#0D121A] to-black overflow-hidden shrink-0">
+ <Avatar className="size-full">
+ <AvatarImage
+ src={user?.image ?? ""}
+ alt={user?.name ?? "User"}
+ className="object-cover"
+ />
+ <AvatarFallback className="bg-transparent text-white text-xl">
+ {user?.name?.charAt(0) ?? "U"}
+ </AvatarFallback>
+ </Avatar>
+ </div>
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA]",
+ )}
+ >
+ {user?.name ?? "—"}
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ {user?.email ?? "—"}
+ </p>
+ </div>
+ </div>
+
+ {/* Organization + Member since */}
+ <div className="flex gap-4">
+ <div className="flex-1 flex flex-col gap-2">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Organization
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ {org?.name ?? "Personal"}
+ </p>
+ </div>
+ <div className="flex-1 flex flex-col gap-2">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Member since
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ {memberSince}
+ </p>
+ </div>
+ </div>
+ </div>
+ </SettingsCard>
+ </section>
+
+ <section id="billing-subscription" className="flex flex-col gap-4">
+ <SectionTitle>Billing &amp; Subscription</SectionTitle>
+ <SettingsCard>
+ <div className="flex flex-col gap-6">
+ {hasProProduct ? (
+ <>
+ <div className="flex flex-col gap-1.5">
+ <div className="flex items-center gap-4">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA]",
+ )}
+ >
+ Pro plan
+ </p>
+ <span className="bg-[#4BA0FA] text-[#00171A] text-[12px] font-bold tracking-[0.36px] px-1 py-[3px] rounded-[3px] h-[18px] flex items-center justify-center">
+ ACTIVE
+ </span>
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Expanded memory with connections and more
+ </p>
+ </div>
+
+ <div id="progress-bar" className="flex flex-col gap-3">
+ <div className="flex items-center justify-between">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Unlimited Memories
+ </p>
+ <div className="flex items-center">
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#4BA0FA]",
+ )}
+ >
+ {memoriesUsed}/
+ </span>
+ <span className="text-[#4BA0FA] text-[20px] leading-none ml-0.5">
+ ∞
+ </span>
+ </div>
+ </div>
+ <div
+ id="progress-bar-fill"
+ className="h-3 w-full rounded-[40px] bg-[#2E353D] blur-[1px] p-px overflow-hidden"
+ >
+ <div
+ className="h-full w-full rounded-[40px]"
+ style={{
+ background:
+ "linear-gradient(to right, #4BA0FA 80.517%, #002757 100%)",
+ }}
+ />
+ </div>
+ </div>
+
+ <button
+ type="button"
+ onClick={() => {
+ autumn.openBillingPortal?.()
+ }}
+ className={cn(
+ "relative w-full h-11 rounded-full flex items-center justify-center gap-2",
+ "bg-[#0D121A] border border-[rgba(115,115,115,0.2)]",
+ "text-[#FAFAFA] font-medium text-[14px] tracking-[-0.14px]",
+ "cursor-pointer transition-opacity hover:opacity-90",
+ dmSans125ClassName(),
+ )}
+ >
+ <Settings className="size-4" />
+ Manage billing
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.7)]" />
+ </button>
+
+ <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
+ {/* Free plan card */}
+ <div className="flex flex-col gap-4 p-4 rounded-[10px] border border-white/10 overflow-hidden">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Free plan
+ </p>
+ <div className="flex flex-col gap-2">
+ <PlanFeatureRow icon="x" text="Limited 200 memories" />
+ <PlanFeatureRow icon="x" text="No connections" />
+ <PlanFeatureRow icon="check" text="Basic search" />
+ <PlanFeatureRow icon="check" text="Basic support" />
+ </div>
+ </div>
+
+ {/* Pro plan card - highlighted */}
+ <div
+ className={cn(
+ "flex flex-col gap-4 p-4 rounded-[10px]",
+ "bg-[#1B1F24]",
+ "shadow-[0px_2.842px_14.211px_rgba(0,0,0,0.25)]",
+ "relative overflow-hidden",
+ )}
+ >
+ {/* Header with ACTIVE badge */}
+ <div className="flex items-center justify-between">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Pro plan
+ </p>
+ <span className="bg-[#4BA0FA] text-[#00171A] text-[12px] font-bold tracking-[0.36px] px-1 py-[3px] rounded-[3px] h-[18px] flex items-center justify-center">
+ ACTIVE
+ </span>
+ </div>
+ <div className="flex flex-col gap-2">
+ <PlanFeatureRow
+ icon="check"
+ text="Unlimited memories"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="10 connections"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="Advanced search"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="Priority support"
+ variant="highlight"
+ />
+ </div>
+ {/* Inset highlight */}
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_0.711px_0.711px_0.711px_rgba(255,255,255,0.1)]" />
+ </div>
+ </div>
+ </>
+ ) : (
+ <>
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA]",
+ )}
+ >
+ Free Plan
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ You are on basic plan
+ </p>
+ </div>
+
+ <div className="flex flex-col gap-3">
+ <div className="flex items-center justify-between">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Memories
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ {memoriesUsed}/{memoriesLimit}
+ </p>
+ </div>
+ {/* Progress bar */}
+ <div className="h-3 w-full rounded-[40px] bg-[#2E353D] p-px">
+ <div
+ className="h-full rounded-[40px] bg-[#0054AD] transition-all"
+ style={{ width: `${usagePercent}%` }}
+ />
+ </div>
+ </div>
+
+ <button
+ type="button"
+ onClick={handleUpgrade}
+ disabled={isUpgrading || isCheckingStatus || autumn.isLoading}
+ className={cn(
+ "relative w-full h-11 rounded-[10px] flex items-center justify-center",
+ "text-[#FAFAFA] font-medium text-[14px] tracking-[-0.14px]",
+ "shadow-[0px_2px_10px_rgba(5,1,0,0.2)]",
+ "disabled:opacity-60 disabled:cursor-not-allowed",
+ "cursor-pointer transition-opacity hover:opacity-90",
+ dmSans125ClassName(),
+ )}
+ style={{
+ background:
+ "linear-gradient(182.37deg, #0ff0d2 -91.53%, #5bd3fb -67.8%, #1e0ff0 95.17%)",
+ boxShadow:
+ "1px 1px 2px 0px #1A88FF inset, 0 2px 10px 0 rgba(5, 1, 0, 0.20)",
+ }}
+ >
+ {isUpgrading || isCheckingStatus || autumn.isLoading ? (
+ <>
+ <LoaderIcon className="size-4 animate-spin mr-2" />
+ Upgrading...
+ </>
+ ) : (
+ "Upgrade to Pro - $9/month"
+ )}
+ {/* Inset blue stroke */}
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_1px_1px_2px_1px_#1A88FF]" />
+ </button>
+
+ <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
+ {/* Free plan card */}
+ <div className="flex flex-col gap-4 p-4 rounded-[10px] border border-white/10">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Free plan
+ </p>
+ <div className="flex flex-col gap-2">
+ <PlanFeatureRow icon="x" text="Limited 200 memories" />
+ <PlanFeatureRow icon="x" text="No connections" />
+ <PlanFeatureRow icon="check" text="Basic search" />
+ <PlanFeatureRow icon="check" text="Basic support" />
+ </div>
+ </div>
+
+ {/* Pro plan card */}
+ <div
+ className={cn(
+ "flex flex-col gap-4 p-4 rounded-[10px]",
+ "bg-[#1B1F24] border border-white/10",
+ "shadow-[0px_2.842px_14.211px_rgba(0,0,0,0.25)]",
+ "relative overflow-hidden",
+ )}
+ >
+ {/* Header with badge */}
+ <div className="flex items-center justify-between">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Pro plan
+ </p>
+ <span className="bg-[#4BA0FA] text-[#00171A] text-[12px] font-bold tracking-[0.36px] px-1 py-0.5 rounded-[3px]">
+ RECOMMENDED
+ </span>
+ </div>
+ <div className="flex flex-col gap-2">
+ <PlanFeatureRow
+ icon="check"
+ text="Unlimited memories"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="10 connections"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="Advanced search"
+ variant="highlight"
+ />
+ <PlanFeatureRow
+ icon="check"
+ text="Priority support"
+ variant="highlight"
+ />
+ </div>
+ {/* Inset highlight */}
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_0.711px_0.711px_0.711px_rgba(255,255,255,0.1)]" />
+ </div>
+ </div>
+ </>
+ )}
+ </div>
+ </SettingsCard>
+ </section>
+
+ <section id="delete-account" className="flex flex-col gap-4">
+ <SectionTitle>Delete Account</SectionTitle>
+ <SettingsCard>
+ <div className="flex items-center justify-between gap-4">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA] max-w-[350px]",
+ )}
+ >
+ Permanently delete all your data and cancel any active
+ subscriptions
+ </p>
+ <Dialog
+ open={isDeleteDialogOpen}
+ onOpenChange={(open) => {
+ setIsDeleteDialogOpen(open)
+ if (!open) setDeleteConfirmText("")
+ }}
+ >
+ <DialogTrigger asChild>
+ <button
+ type="button"
+ className={cn(
+ "relative flex items-center gap-1.5 px-4 py-2 rounded-full",
+ "bg-[#290F0A] text-[#C73B1B]",
+ "font-normal text-[14px] tracking-[-0.14px]",
+ "cursor-pointer transition-opacity hover:opacity-90",
+ "shrink-0",
+ dmSans125ClassName(),
+ )}
+ >
+ <Trash2 className="size-[18px]" />
+ <span>Delete</span>
+ {/* Inset shadow */}
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.4)]" />
+ </button>
+ </DialogTrigger>
+ <DialogContent
+ showCloseButton={false}
+ className={cn(
+ "bg-[#1B1F24] rounded-[22px] p-4",
+ "shadow-[0px_2.842px_14.211px_rgba(0,0,0,0.25)]",
+ "min-w-xl",
+ )}
+ >
+ <div className="flex flex-col gap-4">
+ {/* Header */}
+ <div className="flex flex-col gap-6">
+ <div className="flex items-start gap-4">
+ <div className="flex-1 flex flex-col gap-1 pl-1">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Delete account?
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373] leading-[1.35]",
+ )}
+ >
+ This will permanently delete your memories,
+ conversations, settings and cancel any active
+ subscriptions.
+ </p>
+ </div>
+ <DialogClose asChild>
+ <button
+ type="button"
+ className={cn(
+ "relative size-7 rounded-full bg-[#0D121A] border border-[#73737333]",
+ "flex items-center justify-center shrink-0",
+ "cursor-pointer transition-opacity hover:opacity-80",
+ )}
+ >
+ <X className="size-4 text-[#737373]" />
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_1.313px_1.313px_3.938px_rgba(0,0,0,0.7)]" />
+ </button>
+ </DialogClose>
+ </div>
+
+ {/* Confirmation input */}
+ <div className="flex flex-col gap-4">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA] pl-2",
+ )}
+ >
+ Type <span className="text-[#C73B1B]">DELETE</span> to
+ confirm:
+ </p>
+ <div
+ className={cn(
+ "relative bg-[#14161A] border border-[#52596614] rounded-[12px]",
+ "shadow-[0px_1px_2px_rgba(0,43,87,0.1)]",
+ )}
+ >
+ <input
+ type="text"
+ value={deleteConfirmText}
+ onChange={(e) => setDeleteConfirmText(e.target.value)}
+ placeholder="DELETE"
+ className={cn(
+ "w-full px-4 py-3 bg-transparent",
+ "text-[#FAFAFA] placeholder:text-[#737373]",
+ "text-[14px] tracking-[-0.14px]",
+ "outline-none",
+ dmSans125ClassName(),
+ )}
+ />
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_0px_0px_0px_1px_rgba(43,49,67,0.08),inset_0px_1px_1px_rgba(0,0,0,0.08),inset_0px_2px_4px_rgba(0,0,0,0.02)]" />
+ </div>
+ </div>
+ </div>
+
+ {/* Footer */}
+ <div className="flex items-center justify-end gap-5">
+ <DialogClose asChild>
+ <button
+ type="button"
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] tracking-[-0.14px] text-[#737373]",
+ "cursor-pointer transition-opacity hover:opacity-80",
+ )}
+ >
+ Cancel
+ </button>
+ </DialogClose>
+ <button
+ type="button"
+ onClick={handleDeleteAccount}
+ disabled={!isDeleteEnabled}
+ className={cn(
+ "relative flex items-center gap-1.5 pl-4 pr-[18px] py-2 rounded-full",
+ "bg-[#290F0A] text-[#C73B1B]",
+ "font-normal text-[14px] tracking-[-0.14px]",
+ "cursor-pointer transition-opacity",
+ "disabled:opacity-40 disabled:cursor-not-allowed",
+ isDeleteEnabled && "hover:opacity-90",
+ dmSans125ClassName(),
+ )}
+ >
+ <Trash2 className="size-[18px]" />
+ <span>Delete</span>
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.4)]" />
+ </button>
+ </div>
+ </div>
+ {/* Modal inset highlight */}
+ <div className="absolute inset-0 pointer-events-none rounded-[inherit] shadow-[inset_0.711px_0.711px_0.711px_rgba(255,255,255,0.1)]" />
+ </DialogContent>
+ </Dialog>
+ </div>
+ </SettingsCard>
+ </section>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/settings/connections-mcp.tsx b/apps/web/components/new/settings/connections-mcp.tsx
new file mode 100644
index 00000000..760dcf22
--- /dev/null
+++ b/apps/web/components/new/settings/connections-mcp.tsx
@@ -0,0 +1,568 @@
+"use client"
+
+import { dmSans125ClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { $fetch } from "@lib/api"
+import { fetchSubscriptionStatus } from "@lib/queries"
+import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons"
+import { useCustomer } from "autumn-js/react"
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
+import { Check, Plus, Trash2, Zap } from "lucide-react"
+import { useEffect, useState } from "react"
+import { toast } from "sonner"
+import type { ConnectionResponseSchema } from "@repo/validation/api"
+import type { z } from "zod"
+import { analytics } from "@/lib/analytics"
+import { ConnectAIModal } from "@/components/connect-ai-modal"
+import { AddDocumentModal } from "@/components/new/add-document"
+import { DEFAULT_PROJECT_ID } from "@repo/lib/constants"
+import type { Project } from "@repo/lib/types"
+
+type Connection = z.infer<typeof ConnectionResponseSchema>
+
+const CONNECTORS = {
+ "google-drive": {
+ title: "Google Drive",
+ description: "Connect your Google Docs, Sheets, and Slides",
+ icon: GoogleDrive,
+ documentLabel: "documents",
+ },
+ notion: {
+ title: "Notion",
+ description: "Import your Notion pages and databases",
+ icon: Notion,
+ documentLabel: "pages",
+ },
+ onedrive: {
+ title: "OneDrive",
+ description: "Access your Microsoft Office documents",
+ icon: OneDrive,
+ documentLabel: "documents",
+ },
+} as const
+
+type ConnectorProvider = keyof typeof CONNECTORS
+
+function SectionTitle({
+ children,
+ badge,
+}: {
+ children: React.ReactNode
+ badge?: React.ReactNode
+}) {
+ return (
+ <div className="flex items-center justify-between px-2">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA]",
+ )}
+ >
+ {children}
+ </p>
+ {badge}
+ </div>
+ )
+}
+
+function ProBadge() {
+ return (
+ <span className="bg-[#4BA0FA] text-[#00171A] text-[12px] font-bold tracking-[0.36px] px-1 py-0.5 rounded-[3px]">
+ PRO
+ </span>
+ )
+}
+
+function ConnectionsCard({
+ children,
+ className,
+}: {
+ children: React.ReactNode
+ className?: string
+}) {
+ return (
+ <div
+ className={cn(
+ "relative bg-[#14161A] rounded-[14px] p-6 w-full overflow-hidden",
+ "shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]",
+ className,
+ )}
+ >
+ {children}
+ </div>
+ )
+}
+
+function PillButton({
+ children,
+ onClick,
+ disabled,
+ className,
+}: {
+ children: React.ReactNode
+ onClick?: () => void
+ disabled?: boolean
+ className?: string
+}) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ disabled={disabled}
+ className={cn(
+ "relative flex items-center justify-center gap-2",
+ "bg-[#0D121A]",
+ "rounded-full h-11 px-4 w-full",
+ "cursor-pointer transition-opacity hover:opacity-80",
+ "shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.7)]",
+ "disabled:opacity-50 disabled:cursor-not-allowed",
+ dmSans125ClassName(),
+ className,
+ )}
+ >
+ {children}
+ </button>
+ )
+}
+
+function ConnectionStatusBadge({ connected }: { connected: boolean }) {
+ return (
+ <div className="flex items-center gap-2">
+ <div
+ className={cn(
+ "size-[7px] rounded-full",
+ connected ? "bg-[#00AC3F]" : "bg-[#737373]",
+ )}
+ />
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px]",
+ connected ? "text-[#00AC3F]" : "text-[#737373]",
+ )}
+ >
+ {connected ? "Connected" : "Disconnected"}
+ </span>
+ </div>
+ )
+}
+
+function ConnectionRow({
+ connection,
+ onDelete,
+ isDeleting,
+ disabled,
+ projects,
+}: {
+ connection: Connection
+ onDelete: () => void
+ isDeleting: boolean
+ disabled?: boolean
+ projects: Project[]
+}) {
+ const config = CONNECTORS[connection.provider as ConnectorProvider]
+ if (!config) return null
+
+ const Icon = config.icon
+ // Check if connection is active: if expiresAt exists and is in the future, or if no expiresAt
+ const isConnected =
+ !connection.expiresAt || new Date(connection.expiresAt) > new Date()
+
+ // Format relative time
+ const formatRelativeTime = (date: string | null | undefined) => {
+ if (!date) return "Never"
+ const d = new Date(date)
+ const now = new Date()
+ const diffMs = now.getTime() - d.getTime()
+ const diffHours = Math.floor(diffMs / (1000 * 60 * 60))
+ const diffDays = Math.floor(diffHours / 24)
+
+ if (diffHours < 1) return "Just now"
+ if (diffHours < 24) return `${diffHours}h ago`
+ if (diffDays === 1) return "Yesterday"
+ if (diffDays < 7) return `${diffDays} days ago`
+ return d.toLocaleDateString()
+ }
+
+ const getProjectDisplayName = (containerTag: string): string => {
+ if (containerTag === DEFAULT_PROJECT_ID) return "Default Project"
+ const found = projects.find((p) => p.containerTag === containerTag)
+ if (found) return found.name
+ return containerTag.replace(/^sm_project_/, "") // if cached project is not found, remove the prefix
+ }
+
+ const documentCount = (connection.metadata?.documentCount as number) ?? 0
+ const containerTags = (
+ connection as Connection & { containerTags?: string[] }
+ ).containerTags
+ const projectName =
+ containerTags && containerTags.length > 0 && containerTags[0]
+ ? getProjectDisplayName(containerTags[0])
+ : null
+
+ return (
+ <div
+ className={cn(
+ "bg-[#14161A] border border-[rgba(82,89,102,0.2)] rounded-[12px] px-4 py-3",
+ "shadow-[0px_1px_2px_0px_rgba(0,43,87,0.1)]",
+ )}
+ >
+ <div className="flex flex-col gap-4">
+ {/* Main row */}
+ <div className="flex items-center gap-4">
+ <Icon className="size-6 shrink-0" />
+ <div className="flex-1 flex flex-col gap-1.5">
+ <div className="flex items-center gap-4">
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ {config.title}
+ </span>
+ <ConnectionStatusBadge connected={isConnected} />
+ </div>
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ {connection.email || "Unknown"}
+ </span>
+ </div>
+ <button
+ type="button"
+ onClick={onDelete}
+ disabled={isDeleting || disabled}
+ className="text-[#737373] hover:text-red-400 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
+ aria-label="Delete connection"
+ >
+ <Trash2 className="size-[22px]" />
+ </button>
+ </div>
+
+ {/* Meta row */}
+ <div className="flex items-center gap-2 flex-wrap">
+ {projectName && (
+ <>
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] tracking-[-0.14px] text-[#737373]",
+ )}
+ >
+ Project: {projectName}
+ </span>
+ <div className="size-[3px] rounded-full bg-[#737373]" />
+ </>
+ )}
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] tracking-[-0.14px] text-[#737373]",
+ )}
+ >
+ Added: {formatRelativeTime(connection.createdAt)}
+ </span>
+ <div className="size-[3px] rounded-full bg-[#737373]" />
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] tracking-[-0.14px] text-[#737373]",
+ )}
+ >
+ {documentCount} {config.documentLabel} connected
+ </span>
+ </div>
+ </div>
+ </div>
+ )
+}
+
+function UpgradeOverlay({ onUpgrade }: { onUpgrade: () => void }) {
+ return (
+ <div className="absolute inset-0 flex items-center justify-center z-10">
+ <div className="flex flex-col items-center gap-4">
+ <div className="flex flex-col items-center gap-2">
+ <Zap className="size-6 text-[#737373]" />
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] tracking-[-0.14px] text-[#737373] text-center max-w-[184px]",
+ )}
+ >
+ <button
+ type="button"
+ onClick={onUpgrade}
+ className="underline hover:text-white transition-colors cursor-pointer"
+ >
+ Upgrade to Pro
+ </button>{" "}
+ to get Supermemory Connections
+ </p>
+ </div>
+ <div className="flex flex-col gap-2">
+ <FeatureItem text="Unlimited memories" />
+ <FeatureItem text="10 connections" />
+ <FeatureItem text="Advanced search" />
+ <FeatureItem text="Priority support" />
+ </div>
+ </div>
+ </div>
+ )
+}
+
+function FeatureItem({ text }: { text: string }) {
+ return (
+ <div className="flex items-center gap-2">
+ <Check className="size-4 shrink-0 text-[#4BA0FA]" />
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "text-[14px] tracking-[-0.14px] text-white",
+ )}
+ >
+ {text}
+ </span>
+ </div>
+ )
+}
+
+export default function ConnectionsMCP() {
+ const queryClient = useQueryClient()
+ const autumn = useCustomer()
+ const [isAddDocumentOpen, setIsAddDocumentOpen] = useState(false)
+ const [mcpModalOpen, setMcpModalOpen] = useState(false)
+
+ const projects = (queryClient.getQueryData<Project[]>(["projects"]) ||
+ []) as Project[]
+
+ // Billing data
+ const {
+ data: status = {
+ consumer_pro: { allowed: false, status: null },
+ },
+ isLoading: isCheckingStatus,
+ } = fetchSubscriptionStatus(autumn, !autumn.isLoading)
+
+ const hasProProduct = status.consumer_pro?.status !== null
+
+ // Get connections data directly from autumn customer
+ const connectionsFeature = autumn.customer?.features?.connections
+ const connectionsUsed = connectionsFeature?.usage ?? 0
+ const connectionsLimit = connectionsFeature?.included_usage ?? 10
+
+ const canAddConnection = connectionsUsed < connectionsLimit
+
+ // Fetch connections
+ const {
+ data: connections = [],
+ isLoading: isLoadingConnections,
+ error: connectionsError,
+ } = useQuery({
+ queryKey: ["connections"],
+ queryFn: async () => {
+ const response = await $fetch("@post/connections/list", {
+ body: {
+ containerTags: [],
+ },
+ })
+
+ if (response.error) {
+ throw new Error(response.error?.message || "Failed to load connections")
+ }
+
+ return response.data as Connection[]
+ },
+ staleTime: 30 * 1000,
+ refetchInterval: 60 * 1000,
+ enabled: hasProProduct,
+ })
+
+ useEffect(() => {
+ if (connectionsError) {
+ toast.error("Failed to load connections", {
+ description:
+ connectionsError instanceof Error
+ ? connectionsError.message
+ : "Unknown error",
+ })
+ }
+ }, [connectionsError])
+
+ // Delete connection mutation
+ const deleteConnectionMutation = useMutation({
+ mutationFn: async (connectionId: string) => {
+ await $fetch(`@delete/connections/${connectionId}`)
+ },
+ onSuccess: () => {
+ analytics.connectionDeleted()
+ toast.success(
+ "Connection removal has started. Supermemory will permanently delete the documents in the next few minutes.",
+ )
+ queryClient.invalidateQueries({ queryKey: ["connections"] })
+ },
+ onError: (error) => {
+ toast.error("Failed to remove connection", {
+ description: error instanceof Error ? error.message : "Unknown error",
+ })
+ },
+ })
+
+ // Upgrade handler
+ const handleUpgrade = async () => {
+ try {
+ await autumn.attach({
+ productId: "consumer_pro",
+ successUrl: "https://app.supermemory.ai/new/settings#connections",
+ })
+ window.location.reload()
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ const isLoading = autumn.isLoading || isCheckingStatus
+
+ return (
+ <div className="flex flex-col gap-8 pt-4 w-full">
+ {/* Supermemory Connections Section */}
+ <div className="flex flex-col gap-4">
+ <SectionTitle badge={<ProBadge />}>
+ Supermemory Connections
+ </SectionTitle>
+
+ <ConnectionsCard className="relative">
+ {/* Blur overlay for free users */}
+ {!hasProProduct && !isLoading && (
+ <>
+ <div className="absolute inset-0 bg-[#14161A]/80 backdrop-blur-sm z-5" />
+ <UpgradeOverlay onUpgrade={handleUpgrade} />
+ </>
+ )}
+
+ <div
+ className={cn(
+ "flex flex-col gap-4",
+ !hasProProduct && !isLoading && "opacity-30 pointer-events-none",
+ )}
+ >
+ <div className="flex items-center justify-between">
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Connected to Supermemory
+ </span>
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ {connections.length}/{connectionsLimit} connections used
+ </span>
+ </div>
+
+ <div className="flex flex-col gap-4">
+ {isLoadingConnections ? (
+ <div className="flex items-center justify-center py-8">
+ <div className="size-6 border-2 border-[#737373] border-t-transparent rounded-full animate-spin" />
+ </div>
+ ) : connections.length > 0 ? (
+ connections.map((connection) => (
+ <ConnectionRow
+ key={connection.id}
+ connection={connection}
+ onDelete={() =>
+ deleteConnectionMutation.mutate(connection.id)
+ }
+ isDeleting={deleteConnectionMutation.isPending}
+ disabled={!hasProProduct}
+ projects={projects}
+ />
+ ))
+ ) : (
+ <div className="flex flex-col items-center justify-center py-8 text-center">
+ <Zap className="size-6 text-[#737373] mb-2" />
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[14px] text-[#737373]",
+ )}
+ >
+ No connections yet
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[12px] text-[#737373]",
+ )}
+ >
+ Connect a service below to import your knowledge
+ </p>
+ </div>
+ )}
+ </div>
+
+ <PillButton
+ onClick={() => setIsAddDocumentOpen(true)}
+ disabled={!hasProProduct || !canAddConnection}
+ >
+ <Plus className="size-[10px] text-[#FAFAFA]" />
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Connect knowledge bases
+ </span>
+ </PillButton>
+ </div>
+ </ConnectionsCard>
+ </div>
+
+ {/* Supermemory MCP Section */}
+ <div className="flex flex-col gap-4">
+ <SectionTitle>Supermemory MCP</SectionTitle>
+
+ <ConnectionsCard>
+ <div className="flex flex-col gap-4">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Connect your AI to create and use your memories via MCP.{" "}
+ <a
+ href="https://docs.supermemory.ai/supermemory-mcp/introduction"
+ target="_blank"
+ rel="noopener noreferrer"
+ className="underline hover:text-[#4BA0FA] transition-colors"
+ >
+ Learn more
+ </a>
+ </p>
+
+ <ConnectAIModal open={mcpModalOpen} onOpenChange={setMcpModalOpen}>
+ <PillButton onClick={() => setMcpModalOpen(true)}>
+ <Plus className="size-[10px] text-[#FAFAFA]" />
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Connect your AI to Supermemory
+ </span>
+ </PillButton>
+ </ConnectAIModal>
+ </div>
+ </ConnectionsCard>
+ </div>
+
+ {/* Add Document Modal */}
+ <AddDocumentModal
+ isOpen={isAddDocumentOpen}
+ onClose={() => setIsAddDocumentOpen(false)}
+ defaultTab="connect"
+ />
+ </div>
+ )
+}
diff --git a/apps/web/components/new/settings/integrations.tsx b/apps/web/components/new/settings/integrations.tsx
new file mode 100644
index 00000000..0ce96bf7
--- /dev/null
+++ b/apps/web/components/new/settings/integrations.tsx
@@ -0,0 +1,761 @@
+"use client"
+
+import { dmSans125ClassName } from "@/utils/fonts"
+import { analytics } from "@/lib/analytics"
+import { cn } from "@lib/utils"
+import { authClient } from "@lib/auth"
+import { useAuth } from "@lib/auth-context"
+import { generateId } from "@lib/generate-id"
+import {
+ ADD_MEMORY_SHORTCUT_URL,
+ RAYCAST_EXTENSION_URL,
+ SEARCH_MEMORY_SHORTCUT_URL,
+} from "@repo/lib/constants"
+import {
+ Dialog,
+ DialogContent,
+ DialogHeader,
+ DialogTitle,
+ DialogPortal,
+} from "@ui/components/dialog"
+import { useMutation } from "@tanstack/react-query"
+import { Check, Copy, Download, Key, Loader, Plus, Search } from "lucide-react"
+import Image from "next/image"
+import { useSearchParams } from "next/navigation"
+import { useEffect, useId, useState } from "react"
+import { toast } from "sonner"
+
+function SectionTitle({ children }: { children: React.ReactNode }) {
+ return (
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA] px-2",
+ )}
+ >
+ {children}
+ </p>
+ )
+}
+
+function IntegrationCard({
+ children,
+ id,
+}: {
+ children: React.ReactNode
+ id?: string
+}) {
+ return (
+ <div
+ id={id}
+ className={cn(
+ "relative bg-[#14161A] rounded-[14px] p-6 w-full overflow-hidden",
+ "shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]",
+ )}
+ >
+ {children}
+ </div>
+ )
+}
+
+function PillButton({
+ children,
+ onClick,
+ className,
+ disabled,
+}: {
+ children: React.ReactNode
+ onClick?: () => void
+ className?: string
+ disabled?: boolean
+}) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ disabled={disabled}
+ className={cn(
+ "relative flex items-center justify-center gap-2",
+ "bg-[#0D121A]",
+ "rounded-full h-11 px-4 flex-1",
+ "cursor-pointer transition-opacity hover:opacity-80",
+ "shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.7)]",
+ "disabled:opacity-50 disabled:cursor-not-allowed",
+ dmSans125ClassName(),
+ className,
+ )}
+ >
+ {children}
+ </button>
+ )
+}
+
+function FeatureItem({ text }: { text: string }) {
+ return (
+ <div className="flex items-center gap-2">
+ <Check className="size-4 shrink-0 text-[#4BA0FA]" />
+ <span
+ className={cn(
+ dmSans125ClassName(),
+ "text-[14px] tracking-[-0.14px] text-white",
+ )}
+ >
+ {text}
+ </span>
+ </div>
+ )
+}
+
+function ChromeIcon({ className }: { className?: string }) {
+ return (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ preserveAspectRatio="xMidYMid"
+ viewBox="0 0 190.5 190.5"
+ className={className}
+ >
+ <title>Google Chrome Icon</title>
+ <path
+ fill="#fff"
+ d="M95.252 142.873c26.304 0 47.627-21.324 47.627-47.628s-21.323-47.628-47.627-47.628-47.627 21.324-47.627 47.628 21.323 47.628 47.627 47.628z"
+ />
+ <path
+ fill="#229342"
+ d="m54.005 119.07-41.24-71.43a95.227 95.227 0 0 0-.003 95.25 95.234 95.234 0 0 0 82.496 47.61l41.24-71.43v-.011a47.613 47.613 0 0 1-17.428 17.443 47.62 47.62 0 0 1-47.632.007 47.62 47.62 0 0 1-17.433-17.437z"
+ />
+ <path
+ fill="#fbc116"
+ d="m136.495 119.067-41.239 71.43a95.229 95.229 0 0 0 82.489-47.622A95.24 95.24 0 0 0 190.5 95.248a95.237 95.237 0 0 0-12.772-47.623H95.249l-.01.007a47.62 47.62 0 0 1 23.819 6.372 47.618 47.618 0 0 1 17.439 17.431 47.62 47.62 0 0 1-.001 47.633z"
+ />
+ <path
+ fill="#1a73e8"
+ d="M95.252 132.961c20.824 0 37.705-16.881 37.705-37.706S116.076 57.55 95.252 57.55 57.547 74.431 57.547 95.255s16.881 37.706 37.705 37.706z"
+ />
+ <path
+ fill="#e33b2e"
+ d="M95.252 47.628h82.479A95.237 95.237 0 0 0 142.87 12.76 95.23 95.23 0 0 0 95.245 0a95.222 95.222 0 0 0-47.623 12.767 95.23 95.23 0 0 0-34.856 34.872l41.24 71.43.011.006a47.62 47.62 0 0 1-.015-47.633 47.61 47.61 0 0 1 41.252-23.815z"
+ />
+ </svg>
+ )
+}
+
+function AppleShortcutsIcon() {
+ return (
+ <div className="relative size-10 shrink-0 rounded-lg overflow-hidden">
+ <Image
+ src="/images/ios-shortcuts.png"
+ alt="Apple Shortcuts"
+ width={40}
+ height={40}
+ className="object-cover"
+ />
+ </div>
+ )
+}
+
+function RaycastIcon({ className }: { className?: string }) {
+ return (
+ <svg
+ width="24"
+ height="24"
+ viewBox="0 0 28 28"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>Raycast Icon</title>
+ <path
+ fillRule="evenodd"
+ clipRule="evenodd"
+ d="M7 18.079V21L0 14L1.46 12.54L7 18.081V18.079ZM9.921 21H7L14 28L15.46 26.54L9.921 21ZM26.535 15.462L27.996 14L13.996 0L12.538 1.466L18.077 7.004H14.73L10.864 3.146L9.404 4.606L11.809 7.01H10.129V17.876H20.994V16.196L23.399 18.6L24.859 17.14L20.994 13.274V9.927L26.535 15.462ZM7.73 6.276L6.265 7.738L7.833 9.304L9.294 7.844L7.73 6.276ZM20.162 18.708L18.702 20.17L20.268 21.738L21.73 20.276L20.162 18.708ZM4.596 9.41L3.134 10.872L7 14.738V11.815L4.596 9.41ZM16.192 21.006H13.268L17.134 24.872L18.596 23.41L16.192 21.006Z"
+ fill="#FF6363"
+ />
+ </svg>
+ )
+}
+
+export default function Integrations() {
+ const { org } = useAuth()
+ const searchParams = useSearchParams()
+
+ // iOS Shortcuts state
+ const [showApiKeyModal, setShowApiKeyModal] = useState(false)
+ const [apiKey, setApiKey] = useState<string>("")
+ const [copied, setCopied] = useState(false)
+ const [selectedShortcutType, setSelectedShortcutType] = useState<
+ "add" | "search" | null
+ >(null)
+ const apiKeyId = useId()
+
+ // Raycast state
+ const [showRaycastApiKeyModal, setShowRaycastApiKeyModal] = useState(false)
+ const [raycastApiKey, setRaycastApiKey] = useState<string>("")
+ const [raycastCopied, setRaycastCopied] = useState(false)
+ const [hasTriggeredRaycast, setHasTriggeredRaycast] = useState(false)
+ const raycastApiKeyId = useId()
+
+ const handleCopyApiKey = async (key: string, isRaycast = false) => {
+ try {
+ await navigator.clipboard.writeText(key)
+ if (isRaycast) {
+ setRaycastCopied(true)
+ setTimeout(() => setRaycastCopied(false), 2000)
+ } else {
+ setCopied(true)
+ setTimeout(() => setCopied(false), 2000)
+ }
+ toast.success("API key copied to clipboard!")
+ } catch {
+ toast.error("Failed to copy API key")
+ }
+ }
+
+ const createApiKeyMutation = useMutation({
+ mutationFn: async () => {
+ const res = await authClient.apiKey.create({
+ metadata: {
+ organizationId: org?.id,
+ type: "ios-shortcut",
+ },
+ name: `ios-${generateId().slice(0, 8)}`,
+ prefix: `sm_${org?.id}_`,
+ })
+ return res.key
+ },
+ onSuccess: (key) => {
+ setApiKey(key)
+ setShowApiKeyModal(true)
+ setCopied(false)
+ handleCopyApiKey(key)
+ },
+ onError: (error) => {
+ toast.error("Failed to create API key", {
+ description: error instanceof Error ? error.message : "Unknown error",
+ })
+ },
+ })
+
+ const createRaycastApiKeyMutation = useMutation({
+ mutationFn: async () => {
+ if (!org?.id) {
+ throw new Error("Organization ID is required")
+ }
+
+ const res = await authClient.apiKey.create({
+ metadata: {
+ organizationId: org.id,
+ type: "raycast-extension",
+ },
+ name: `raycast-${generateId().slice(0, 8)}`,
+ prefix: `sm_${org.id}_`,
+ })
+ return res.key
+ },
+ onSuccess: (key) => {
+ setRaycastApiKey(key)
+ setShowRaycastApiKeyModal(true)
+ setRaycastCopied(false)
+ handleCopyApiKey(key, true)
+ },
+ onError: (error) => {
+ toast.error("Failed to create Raycast API key", {
+ description: error instanceof Error ? error.message : "Unknown error",
+ })
+ },
+ })
+
+ useEffect(() => {
+ const qParam = searchParams.get("q")
+ if (
+ qParam === "raycast" &&
+ !hasTriggeredRaycast &&
+ !createRaycastApiKeyMutation.isPending &&
+ org?.id
+ ) {
+ setHasTriggeredRaycast(true)
+ createRaycastApiKeyMutation.mutate()
+ }
+ }, [searchParams, hasTriggeredRaycast, createRaycastApiKeyMutation, org])
+
+ const handleChromeInstall = () => {
+ window.open(
+ "https://chromewebstore.google.com/detail/supermemory/afpgkkipfdpeaflnpoaffkcankadgjfc",
+ "_blank",
+ "noopener,noreferrer",
+ )
+ analytics.extensionInstallClicked()
+ }
+
+ const handleShortcutClick = (shortcutType: "add" | "search") => {
+ setSelectedShortcutType(shortcutType)
+ createApiKeyMutation.mutate()
+ }
+
+ const handleOpenShortcut = () => {
+ if (!selectedShortcutType) {
+ toast.error("No shortcut type selected")
+ return
+ }
+
+ if (selectedShortcutType === "add") {
+ window.open(ADD_MEMORY_SHORTCUT_URL, "_blank")
+ } else if (selectedShortcutType === "search") {
+ window.open(SEARCH_MEMORY_SHORTCUT_URL, "_blank")
+ }
+ }
+
+ const handleRaycastClick = () => {
+ createRaycastApiKeyMutation.mutate()
+ }
+
+ const handleRaycastInstall = () => {
+ window.open(RAYCAST_EXTENSION_URL, "_blank")
+ analytics.extensionInstallClicked()
+ }
+
+ const handleDialogClose = (open: boolean) => {
+ setShowApiKeyModal(open)
+ if (!open) {
+ setSelectedShortcutType(null)
+ setApiKey("")
+ setCopied(false)
+ }
+ }
+
+ const handleRaycastDialogClose = (open: boolean) => {
+ setShowRaycastApiKeyModal(open)
+ if (!open) {
+ setRaycastApiKey("")
+ setRaycastCopied(false)
+ }
+ }
+
+ return (
+ <div className="flex flex-col gap-4 pt-4 w-full">
+ <SectionTitle>Integrations</SectionTitle>
+
+ <IntegrationCard id="chrome-extension-card">
+ <div className="flex flex-col gap-6">
+ <div id="chrome-extension-header" className="flex items-center gap-4">
+ <ChromeIcon className="shrink-0 w-10 h-10" />
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Chrome extension
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Save any webpage directly from your browser
+ </p>
+ </div>
+ </div>
+
+ <div id="chrome-extension-cta" className="flex gap-4">
+ <PillButton onClick={handleChromeInstall}>
+ <Download className="size-4 text-[#FAFAFA]" />
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Add to Chrome
+ </span>
+ </PillButton>
+ </div>
+
+ <div
+ id="chrome-extension-features"
+ className="grid grid-cols-1 sm:grid-cols-2 gap-2"
+ >
+ <FeatureItem text="Import all Twitter bookmarks" />
+ <FeatureItem text="Sync ChatGPT memories" />
+ <FeatureItem text="Save any webpage" />
+ <FeatureItem text="One time setup" />
+ </div>
+ </div>
+ </IntegrationCard>
+
+ <IntegrationCard id="apple-shortcuts-card">
+ <div className="flex flex-col gap-6">
+ <div id="apple-shortcuts-header" className="flex items-center gap-4">
+ <AppleShortcutsIcon />
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Apple shortcuts
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Add memories directly from iPhone, iPad or Mac
+ </p>
+ </div>
+ </div>
+
+ <div id="apple-shortcuts-cta" className="flex gap-4">
+ <PillButton
+ onClick={() => handleShortcutClick("add")}
+ disabled={createApiKeyMutation.isPending}
+ >
+ {createApiKeyMutation.isPending &&
+ selectedShortcutType === "add" ? (
+ <Loader className="size-4 text-[#FAFAFA] animate-spin" />
+ ) : (
+ <Plus className="size-4 text-[#FAFAFA]" />
+ )}
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ {createApiKeyMutation.isPending &&
+ selectedShortcutType === "add"
+ ? "Creating..."
+ : "Add memory shortcut"}
+ </span>
+ </PillButton>
+ <PillButton
+ onClick={() => handleShortcutClick("search")}
+ disabled={createApiKeyMutation.isPending}
+ >
+ {createApiKeyMutation.isPending &&
+ selectedShortcutType === "search" ? (
+ <Loader className="size-4 text-[#FAFAFA] animate-spin" />
+ ) : (
+ <Search className="size-4 text-[#FAFAFA]" />
+ )}
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ {createApiKeyMutation.isPending &&
+ selectedShortcutType === "search"
+ ? "Creating..."
+ : "Search memory shortcut"}
+ </span>
+ </PillButton>
+ </div>
+ </div>
+ </IntegrationCard>
+
+ <IntegrationCard id="raycast-extension-card">
+ <div className="flex flex-col gap-6">
+ <div
+ id="raycast-extension-header"
+ className="flex items-center gap-4"
+ >
+ <RaycastIcon className="shrink-0 w-10 h-10" />
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Raycast extension
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Add and search memories from Mac and Windows
+ </p>
+ </div>
+ </div>
+
+ <div id="raycast-extension-cta" className="flex gap-4">
+ <PillButton
+ onClick={handleRaycastClick}
+ disabled={createRaycastApiKeyMutation.isPending}
+ >
+ {createRaycastApiKeyMutation.isPending ? (
+ <Loader className="size-4 text-[#FAFAFA] animate-spin" />
+ ) : (
+ <Key className="size-4 text-[#FAFAFA]" />
+ )}
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ {createRaycastApiKeyMutation.isPending
+ ? "Generating..."
+ : "Get API key"}
+ </span>
+ </PillButton>
+ <PillButton onClick={handleRaycastInstall}>
+ <Download className="size-4 text-[#FAFAFA]" />
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Install extension
+ </span>
+ </PillButton>
+ </div>
+ </div>
+ </IntegrationCard>
+
+ <Dialog open={showApiKeyModal} onOpenChange={handleDialogClose}>
+ <DialogPortal>
+ <DialogContent
+ id="ios-shortcuts-modal"
+ className="bg-[#14161A] border border-white/10 text-[#FAFAFA] md:max-w-md z-100"
+ >
+ <DialogHeader>
+ <DialogTitle
+ className={cn(
+ dmSans125ClassName(),
+ "text-[#FAFAFA] text-lg font-semibold",
+ )}
+ >
+ Setup Apple Shortcut
+ </DialogTitle>
+ </DialogHeader>
+
+ <div className="space-y-4">
+ <div id="ios-shortcuts-api-key-section" className="space-y-2">
+ <label
+ htmlFor={apiKeyId}
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm font-medium text-[#737373]",
+ )}
+ >
+ Your API Key
+ </label>
+ <div className="flex items-center gap-2">
+ <input
+ id={apiKeyId}
+ type="text"
+ value={apiKey}
+ readOnly
+ className={cn(
+ "flex-1 bg-[#0D121A] border border-white/10 rounded-lg px-3 py-2 text-sm text-[#FAFAFA] font-mono",
+ dmSans125ClassName(),
+ )}
+ />
+ <button
+ type="button"
+ onClick={() => handleCopyApiKey(apiKey)}
+ className="p-2 rounded-lg bg-[#0D121A] border border-white/10 text-[#737373] hover:text-[#FAFAFA] transition-colors"
+ >
+ {copied ? (
+ <Check className="h-4 w-4 text-[#4BA0FA]" />
+ ) : (
+ <Copy className="h-4 w-4" />
+ )}
+ </button>
+ </div>
+ </div>
+
+ <div id="ios-shortcuts-steps" className="space-y-3">
+ <h4
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm font-medium text-[#737373]",
+ )}
+ >
+ Follow these steps:
+ </h4>
+ <div className="space-y-2">
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#4BA0FA]/20 text-[#4BA0FA] rounded-full flex items-center justify-center text-xs font-medium">
+ 1
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Click "Add to Shortcuts" below to open the shortcut
+ </p>
+ </div>
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#4BA0FA]/20 text-[#4BA0FA] rounded-full flex items-center justify-center text-xs font-medium">
+ 2
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Paste your API key when prompted
+ </p>
+ </div>
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#4BA0FA]/20 text-[#4BA0FA] rounded-full flex items-center justify-center text-xs font-medium">
+ 3
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Start using your shortcut!
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <div className="flex gap-2 pt-2">
+ <button
+ type="button"
+ onClick={handleOpenShortcut}
+ disabled={!selectedShortcutType}
+ className={cn(
+ "flex-1 flex items-center justify-center gap-2",
+ "bg-[#4BA0FA] hover:bg-[#4BA0FA]/90 text-white",
+ "rounded-lg h-11 px-4 font-medium text-sm",
+ "disabled:opacity-50 disabled:cursor-not-allowed",
+ "transition-colors",
+ dmSans125ClassName(),
+ )}
+ >
+ <Image
+ src="/images/ios-shortcuts.png"
+ alt="iOS Shortcuts"
+ width={16}
+ height={16}
+ />
+ Add to Shortcuts
+ </button>
+ </div>
+ </div>
+ </DialogContent>
+ </DialogPortal>
+ </Dialog>
+
+ <Dialog
+ open={showRaycastApiKeyModal}
+ onOpenChange={handleRaycastDialogClose}
+ >
+ <DialogPortal>
+ <DialogContent
+ id="raycast-api-key-modal"
+ className="bg-[#14161A] border border-white/10 text-[#FAFAFA] md:max-w-md z-100"
+ >
+ <DialogHeader>
+ <DialogTitle
+ className={cn(
+ dmSans125ClassName(),
+ "text-[#FAFAFA] text-lg font-semibold",
+ )}
+ >
+ Setup Raycast Extension
+ </DialogTitle>
+ </DialogHeader>
+
+ <div className="space-y-4">
+ <div id="raycast-api-key-section" className="space-y-2">
+ <label
+ htmlFor={raycastApiKeyId}
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm font-medium text-[#737373]",
+ )}
+ >
+ Your Raycast API Key
+ </label>
+ <div className="flex items-center gap-2">
+ <input
+ id={raycastApiKeyId}
+ type="text"
+ value={raycastApiKey}
+ readOnly
+ className={cn(
+ "flex-1 bg-[#0D121A] border border-white/10 rounded-lg px-3 py-2 text-sm text-[#FAFAFA] font-mono",
+ dmSans125ClassName(),
+ )}
+ />
+ <button
+ type="button"
+ onClick={() => handleCopyApiKey(raycastApiKey, true)}
+ className="p-2 rounded-lg bg-[#0D121A] border border-white/10 text-[#737373] hover:text-[#FAFAFA] transition-colors"
+ >
+ {raycastCopied ? (
+ <Check className="h-4 w-4 text-[#4BA0FA]" />
+ ) : (
+ <Copy className="h-4 w-4" />
+ )}
+ </button>
+ </div>
+ </div>
+
+ <div id="raycast-steps" className="space-y-3">
+ <h4
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm font-medium text-[#737373]",
+ )}
+ >
+ Follow these steps:
+ </h4>
+ <div className="space-y-2">
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#FF6363]/20 text-[#FF6363] rounded-full flex items-center justify-center text-xs font-medium">
+ 1
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Install the Raycast extension from the Raycast Store
+ </p>
+ </div>
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#FF6363]/20 text-[#FF6363] rounded-full flex items-center justify-center text-xs font-medium">
+ 2
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Open Raycast preferences and paste your API key
+ </p>
+ </div>
+ <div className="flex items-start gap-3">
+ <div className="shrink-0 w-6 h-6 bg-[#FF6363]/20 text-[#FF6363] rounded-full flex items-center justify-center text-xs font-medium">
+ 3
+ </div>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "text-sm text-[#737373]",
+ )}
+ >
+ Use "Add Memory" or "Search Memories" commands!
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <div className="flex gap-2 pt-2">
+ <button
+ type="button"
+ onClick={handleRaycastInstall}
+ className={cn(
+ "flex-1 flex items-center justify-center gap-2",
+ "bg-[#FF6363] hover:bg-[#FF6363]/90 text-white",
+ "rounded-lg h-11 px-4 font-medium text-sm",
+ "transition-colors",
+ dmSans125ClassName(),
+ )}
+ >
+ <RaycastIcon className="size-4" />
+ Install Extension
+ </button>
+ </div>
+ </div>
+ </DialogContent>
+ </DialogPortal>
+ </Dialog>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/settings/support.tsx b/apps/web/components/new/settings/support.tsx
new file mode 100644
index 00000000..691f5c38
--- /dev/null
+++ b/apps/web/components/new/settings/support.tsx
@@ -0,0 +1,217 @@
+"use client"
+
+import { dmSans125ClassName } from "@/utils/fonts"
+import { cn } from "@lib/utils"
+import { ArrowUpRight } from "lucide-react"
+
+const FAQS = [
+ {
+ question: "How do I upgrade to Pro?",
+ answer:
+ 'Go to the Billing tab in settings and click "Upgrade to Pro". You\'ll be redirected to our secure payment processor.',
+ },
+ {
+ question: "What's included in the Pro plan?",
+ answer:
+ 'Go to the Billing tab in settings and click "Upgrade to Pro". You\'ll be redirected to our secure payment processor.',
+ },
+ {
+ question: "How do connections work?",
+ answer:
+ "Connections let you sync documents from Google Drive, Notion, and OneDrive automatically. supermemory will index and make them searchable.",
+ },
+ {
+ question: "Can I cancel my subscription anytime?",
+ answer:
+ "Yes. You can cancel anytime from the Billing tab. Your Pro features will remain active until the end of your billing period.",
+ },
+]
+
+function SectionTitle({ children }: { children: React.ReactNode }) {
+ return (
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-semibold text-[20px] tracking-[-0.2px] text-[#FAFAFA] px-2",
+ )}
+ >
+ {children}
+ </p>
+ )
+}
+
+function SupportCard({ children }: { children: React.ReactNode }) {
+ return (
+ <div
+ className={cn(
+ "relative bg-[#14161A] rounded-[14px] p-6 w-full overflow-hidden",
+ "shadow-[inset_2.42px_2.42px_4.263px_rgba(11,15,21,0.7)]",
+ )}
+ >
+ {children}
+ </div>
+ )
+}
+
+function PillButton({
+ children,
+ onClick,
+ className,
+}: {
+ children: React.ReactNode
+ onClick?: () => void
+ className?: string
+}) {
+ return (
+ <button
+ type="button"
+ onClick={onClick}
+ className={cn(
+ "relative flex items-center justify-center gap-2",
+ "bg-[#0D121A]",
+ "rounded-full h-11 px-4 flex-1",
+ "cursor-pointer transition-opacity hover:opacity-80",
+ "shadow-[inset_1.5px_1.5px_4.5px_rgba(0,0,0,0.7)]",
+ dmSans125ClassName(),
+ className,
+ )}
+ >
+ {children}
+ </button>
+ )
+}
+
+export default function Support() {
+ const handleMessageOnX = () => {
+ window.open("https://x.com/supermemory", "_blank", "noopener,noreferrer")
+ }
+
+ const handleSendEmail = () => {
+ window.location.href = "mailto:[email protected]"
+ }
+
+ const handleJoinDiscord = () => {
+ window.open(
+ "https://supermemory.link/discord",
+ "_blank",
+ "noopener,noreferrer",
+ )
+ }
+
+ const handleShareFeedback = () => {
+ window.open("https://x.com/supermemory", "_blank", "noopener,noreferrer")
+ }
+
+ return (
+ <div className="flex flex-col gap-8 pt-4 w-full">
+ {/* Support & Help Section */}
+ <section className="flex flex-col gap-4">
+ <SectionTitle>Support &amp; Help</SectionTitle>
+ <SupportCard>
+ <div className="flex flex-col gap-4">
+ <div className="flex flex-col gap-1.5">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-normal text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Get help
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ Need assistance? We're here to help! Choose the best way to
+ reach us.
+ </p>
+ </div>
+ <div className="flex flex-col sm:flex-row gap-4">
+ <PillButton onClick={handleMessageOnX}>
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Message us on X
+ </span>
+ <ArrowUpRight className="size-4 text-[#FAFAFA]" />
+ </PillButton>
+ <PillButton onClick={handleJoinDiscord}>
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Join our Discord
+ </span>
+ <ArrowUpRight className="size-4 text-[#FAFAFA]" />
+ </PillButton>
+ <PillButton onClick={handleSendEmail}>
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Send us an email
+ </span>
+ <ArrowUpRight className="size-4 text-[#FAFAFA]" />
+ </PillButton>
+ </div>
+ </div>
+ </SupportCard>
+ </section>
+
+ {/* FAQ Section */}
+ <section className="flex flex-col gap-4">
+ <SectionTitle>Frequently Asked Questions</SectionTitle>
+ <SupportCard>
+ <div className="flex flex-col gap-6">
+ {FAQS.map((faq, index) => (
+ <div key={faq.question}>
+ <div className="flex flex-col gap-1">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ {faq.question}
+ </p>
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-medium text-[16px] tracking-[-0.16px] text-[#737373]",
+ )}
+ >
+ {faq.answer}
+ </p>
+ </div>
+ {index < FAQS.length - 1 && (
+ <div className="bg-[#1F2125] h-px w-full mt-6" />
+ )}
+ </div>
+ ))}
+ </div>
+ </SupportCard>
+ </section>
+
+ {/* Feedback Section */}
+ <section className="flex flex-col gap-4">
+ <SectionTitle>Feedback &amp; Feature Requests</SectionTitle>
+ <SupportCard>
+ <div className="flex flex-col gap-4">
+ <p
+ className={cn(
+ dmSans125ClassName(),
+ "font-normal text-[16px] tracking-[-0.16px] text-[#FAFAFA]",
+ )}
+ >
+ Have ideas for new features or improvements? We'd love to hear
+ from you!
+ </p>
+ <PillButton
+ onClick={handleShareFeedback}
+ className="w-full flex-none"
+ >
+ <span className="text-[14px] tracking-[-0.14px] text-[#FAFAFA] font-medium">
+ Share your feedback on X/Twitter
+ </span>
+ <ArrowUpRight className="size-4 text-[#FAFAFA]" />
+ </PillButton>
+ </div>
+ </SupportCard>
+ </section>
+ </div>
+ )
+}
diff --git a/apps/web/components/new/utils.ts b/apps/web/components/new/utils.ts
new file mode 100644
index 00000000..b830a2a3
--- /dev/null
+++ b/apps/web/components/new/utils.ts
@@ -0,0 +1,78 @@
+"use client"
+
+import { useQuery } from "@tanstack/react-query"
+
+export function isYouTubeUrl(url: string | undefined | null): boolean {
+ if (!url) return false
+ return (
+ url.includes("youtube.com") ||
+ url.includes("youtu.be") ||
+ url.includes("m.youtube.com")
+ )
+}
+
+export function extractYouTubeVideoId(
+ url: string | undefined | null,
+): string | null {
+ if (!url) return null
+
+ // Handle youtu.be format
+ const youtuBeMatch = url.match(/(?:youtu\.be\/)([a-zA-Z0-9_-]{11})/)
+ if (youtuBeMatch?.[1]) return youtuBeMatch[1]
+
+ // Handle youtube.com/watch?v= format
+ const watchMatch = url.match(/(?:youtube\.com\/watch\?v=)([a-zA-Z0-9_-]{11})/)
+ if (watchMatch?.[1]) return watchMatch[1]
+
+ // Handle youtube.com/embed/ format
+ const embedMatch = url.match(/(?:youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/)
+ if (embedMatch?.[1]) return embedMatch[1]
+
+ // Handle m.youtube.com format
+ const mobileMatch = url.match(
+ /(?:m\.youtube\.com\/watch\?v=)([a-zA-Z0-9_-]{11})/,
+ )
+ if (mobileMatch?.[1]) return mobileMatch[1]
+
+ return null
+}
+
+export function useYouTubeChannelName(url: string | undefined | null) {
+ const videoId = extractYouTubeVideoId(url)
+ const videoUrl = videoId
+ ? `https://www.youtube.com/watch?v=${videoId}`
+ : url || ""
+
+ return useQuery({
+ queryKey: ["youtube-channel", videoUrl],
+ queryFn: async () => {
+ if (!videoUrl) return null
+
+ try {
+ const response = await fetch(
+ `https://www.youtube.com/oembed?url=${encodeURIComponent(videoUrl)}&format=json`,
+ )
+ if (!response.ok) return null
+ const data = (await response.json()) as { author_name?: string }
+ return data.author_name || null
+ } catch {
+ return null
+ }
+ },
+ enabled: !!videoUrl && isYouTubeUrl(url),
+ staleTime: 1000 * 60 * 60 * 24,
+ retry: 1,
+ })
+}
+
+
+export function getAbsoluteUrl(url: string): string {
+ try {
+ const urlObj = new URL(url)
+ return urlObj.host.replace(/^www\./, "")
+ } catch {
+ const match = url.match(/^https?:\/\/([^\/]+)/)
+ const host = match?.[1] ?? url.replace(/^https?:\/\//, "")
+ return host.replace(/^www\./, "")
+ }
+}
diff --git a/apps/web/components/nova/bg-grad.tsx b/apps/web/components/nova/bg-grad.tsx
new file mode 100644
index 00000000..66aa437c
--- /dev/null
+++ b/apps/web/components/nova/bg-grad.tsx
@@ -0,0 +1,150 @@
+"use client"
+
+interface BgGradProps {
+ size?: number
+ className?: string
+}
+
+function BgGrad({ size = 400, className = "" }: BgGradProps) {
+ return (
+ <div
+ className={`relative ${className}`}
+ data-name="bg-grad"
+ style={{ width: `${size}px`, height: `${size}px` }}
+ >
+ {/* Large blue orb - right */}
+ <div
+ className="absolute bg-[#1410ff] filter rounded-full z-0"
+ style={{
+ height: `${(341.891 * size) / 400}px`,
+ left: `${(161.86 * size) / 400}px`,
+ top: `${(13.1 * size) / 400}px`,
+ width: `${(204.976 * size) / 400}px`,
+ filter: `blur(${(22.836 * size) / 400}px)`,
+ }}
+ data-name="4"
+ />
+
+ {/* Large blue orb - left */}
+ <div
+ className="absolute bg-[#1410ff] filter rounded-full z-0"
+ style={{
+ height: `${(341.891 * size) / 400}px`,
+ left: `${(17.16 * size) / 400}px`,
+ top: `${(-0.01 * size) / 400}px`,
+ width: `${(204.976 * size) / 400}px`,
+ filter: `blur(${(22.836 * size) / 400}px)`,
+ }}
+ data-name="4"
+ />
+
+ {/* Rotated blue orb - top left */}
+ <div
+ className="absolute flex items-center justify-center z-10"
+ style={{
+ height: `${(163.918 * size) / 400}px`,
+ left: `${(12.75 * size) / 400}px`,
+ top: `${(70.19 * size) / 400}px`,
+ width: `${(345.985 * size) / 400}px`,
+ }}
+ >
+ <div className="flex-none rotate-[11.06deg]">
+ <div
+ className="bg-[#0090ff] filter rounded-full"
+ style={{
+ height: `${(163.918 * size) / 400}px`,
+ width: `${(345.985 * size) / 400}px`,
+ filter: `blur(${(17.127 * size) / 400}px)`,
+ }}
+ data-name="3"
+ />
+ </div>
+ </div>
+
+ {/* Rotated blue orb - top right */}
+ <div
+ className="absolute flex items-center justify-center z-20"
+ style={{
+ height: `${(103.099 * size) / 400}px`,
+ left: `${(195 * size) / 400}px`,
+ top: `${(84.54 * size) / 400}px`,
+ width: `${(159.018 * size) / 400}px`,
+ }}
+ >
+ <div className="flex-none rotate-[32.89deg]">
+ <div
+ className="bg-[#0099ff] filter rounded-full"
+ style={{
+ height: `${(103.099 * size) / 400}px`,
+ width: `${(159.018 * size) / 400}px`,
+ filter: `blur(${(14.273 * size) / 400}px)`,
+ }}
+ data-name="2"
+ />
+ </div>
+ </div>
+
+ {/* Rotated blue orb - bottom left */}
+ <div
+ className="absolute flex items-center justify-center z-20"
+ style={{
+ height: `${(103.099 * size) / 400}px`,
+ left: "0px",
+ top: `${(81.05 * size) / 400}px`,
+ width: `${(159.018 * size) / 400}px`,
+ }}
+ >
+ <div className="flex-none rotate-[147.11deg]">
+ <div
+ className="bg-[#0099ff] filter rounded-full"
+ style={{
+ height: `${(103.099 * size) / 400}px`,
+ width: `${(159.018 * size) / 400}px`,
+ filter: `blur(${(14.273 * size) / 400}px)`,
+ }}
+ data-name="2"
+ />
+ </div>
+ </div>
+
+ {/* Central rotated orb */}
+ <div
+ className="absolute flex items-center justify-center z-30"
+ style={{
+ height: `${(220.17 * size) / 400}px`,
+ left: `${(85.76 * size) / 400}px`,
+ top: `${(110.88 * size) / 400}px`,
+ width: `${(216.8 * size) / 400}px`,
+ }}
+ >
+ <div className="flex-none rotate-[180deg]">
+ <div
+ className="filter rounded-full"
+ style={{
+ height: `${(220.17 * size) / 400}px`,
+ width: `${(216.8 * size) / 400}px`,
+ filter: `blur(${(8.564 * size) / 400}px)`,
+ background: "linear-gradient(186deg, #FFF 4.91%, #124DFF 61.9%)",
+ }}
+ data-name="1"
+ />
+ </div>
+ </div>
+
+ {/* Bottom blue orb */}
+ <div
+ className="absolute bg-[#47a8fd] filter rounded-full z-40"
+ style={{
+ height: `${(74.371 * size) / 400}px`,
+ left: `${(103.05 * size) / 400}px`,
+ top: `${(228.82 * size) / 400}px`,
+ width: `${(153.608 * size) / 400}px`,
+ filter: `blur(${(17.127 * size) / 400}px)`,
+ }}
+ data-name="0"
+ />
+ </div>
+ )
+}
+
+export default BgGrad
diff --git a/apps/web/components/nova/nova-orb.tsx b/apps/web/components/nova/nova-orb.tsx
new file mode 100644
index 00000000..1a11bb22
--- /dev/null
+++ b/apps/web/components/nova/nova-orb.tsx
@@ -0,0 +1,42 @@
+"use client"
+
+import BgGrad from "./bg-grad"
+import { motion } from "motion/react"
+
+interface NovaOrbProps {
+ size?: number
+ className?: string
+}
+
+function NovaOrb({ size = 200, className = "" }: NovaOrbProps) {
+ return (
+ <div
+ className={`flex items-center justify-center ${className} blur-[6px]`}
+ style={{ width: `${size}px`, height: `${size}px` }}
+ >
+ <div
+ className="rounded-full relative overflow-hidden"
+ style={{
+ width: size,
+ height: size,
+ boxShadow: `${(1 * size) / 30}px ${(2 * size) / 30}px ${(4 * size) / 30}px 0 #0A0E14 inset, 0 ${(18.462 * size) / 30}px ${(5.192 * size) / 30}px 0 rgba(41, 95, 255, 0.00), 0 ${(12.115 * size) / 30}px ${(4.615 * size) / 30}px 0 rgba(41, 95, 255, 0.01), 0 ${(6.923 * size) / 30}px ${(4.038 * size) / 30}px 0 rgba(41, 95, 255, 0.05), 0 ${(2.885 * size) / 30}px ${(2.885 * size) / 30}px 0 rgba(41, 95, 255, 0.09), 0 ${(0.577 * size) / 30}px ${(1.731 * size) / 30}px 0 rgba(41, 95, 255, 0.10)`,
+ }}
+ >
+ <div className="rotate-[30.76deg] z-[-1] absolute top-[-30%] left-[-60%]">
+ <motion.div
+ animate={{ rotate: 360 }}
+ transition={{
+ duration: 12,
+ ease: "linear",
+ repeat: Number.POSITIVE_INFINITY,
+ }}
+ >
+ <BgGrad size={size * 1.8} />
+ </motion.div>
+ </div>
+ </div>
+ </div>
+ )
+}
+
+export default NovaOrb
diff --git a/apps/web/components/project-selector.tsx b/apps/web/components/project-selector.tsx
index 33f7c0ea..9e613cc7 100644
--- a/apps/web/components/project-selector.tsx
+++ b/apps/web/components/project-selector.tsx
@@ -39,17 +39,9 @@ import { useState } from "react"
import { useProjectMutations } from "@/hooks/use-project-mutations"
import { useProjectName } from "@/hooks/use-project-name"
import { useProject } from "@/stores"
+import type { Project } from "@repo/lib/types"
import { CreateProjectDialog } from "./create-project-dialog"
-interface Project {
- id: string
- name: string
- containerTag: string
- createdAt: string
- updatedAt: string
- isExperimental?: boolean
-}
-
export function ProjectSelector() {
const [isOpen, setIsOpen] = useState(false)
const [showCreateDialog, setShowCreateDialog] = useState(false)
diff --git a/apps/web/components/query-client.tsx b/apps/web/components/query-client.tsx
new file mode 100644
index 00000000..1826e08c
--- /dev/null
+++ b/apps/web/components/query-client.tsx
@@ -0,0 +1,24 @@
+"use client"
+
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
+import { ReactQueryDevtools } from "@tanstack/react-query-devtools"
+import { useState } from "react"
+
+export const QueryProvider = ({ children }: { children: React.ReactNode }) => {
+ const [queryClient] = useState(
+ () =>
+ new QueryClient({
+ defaultOptions: {
+ queries: {
+ refetchIntervalInBackground: false,
+ refetchOnWindowFocus: false,
+ staleTime: 60 * 1000,
+ },
+ },
+ }),
+ )
+
+ return (
+ <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
+ )
+}
diff --git a/apps/web/components/superloader.tsx b/apps/web/components/superloader.tsx
new file mode 100644
index 00000000..1e51df68
--- /dev/null
+++ b/apps/web/components/superloader.tsx
@@ -0,0 +1,98 @@
+"use client"
+
+import { motion, useReducedMotion, type Variants } from "motion/react"
+
+type NovaPathLoaderProps = {
+ size?: number // px
+ colorClassName?: string
+ label?: string
+ className?: string
+}
+
+// full SVG path data from nova-2d-anim.svg
+const PATH_RIGHT =
+ "M3.03472 6.05861L6.8539 9.91021H1.96777V11.9737H8.3006V17.4781H10.3467V11.5057C10.3467 10.8713 10.0963 10.2621 9.65119 9.81327L4.48145 4.59961L3.03472 6.05861Z"
+
+const PATH_LEFT =
+ "M12.6994 9.02793V3.52344H10.6533V9.49591C10.6533 10.1302 10.9037 10.7395 11.3488 11.1883L16.5197 16.4032L17.9665 14.9441L14.1473 11.0926H19.0334V9.02914L12.6994 9.02793Z"
+
+// animation for stroke draw
+const strokeVariants: Variants = {
+ hidden: { pathLength: 0, opacity: 0.2 },
+ visible: (i: number) => ({
+ pathLength: [0, 1],
+ opacity: [0.2, 1],
+ transition: {
+ duration: 0.9,
+ repeat: Number.POSITIVE_INFINITY,
+ repeatType: "reverse",
+ ease: "easeInOut",
+ delay: i * 0.18,
+ },
+ }),
+ static: { pathLength: 1, opacity: 0.7 },
+}
+
+export function SuperLoader({
+ size = 42,
+ colorClassName = "text-sky-400",
+ label = "Loading...",
+ className = "",
+}: NovaPathLoaderProps) {
+ const prefersReducedMotion = useReducedMotion()
+
+ const animateVariant = prefersReducedMotion ? "static" : "visible"
+
+ return (
+ <div
+ role="status"
+ aria-label={label}
+ className={`inline-flex flex-col items-center gap-2 ${className}`}
+ style={{ width: size + 10 }}
+ >
+ <motion.svg
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 21 21"
+ width={size}
+ height={size}
+ className={`shrink-0 ${colorClassName}`}
+ >
+ <title>Loading...</title>
+ {/* Right path */}
+ <motion.path
+ d={PATH_RIGHT}
+ fill="none"
+ stroke="currentColor"
+ strokeWidth={1.4}
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ initial="hidden"
+ animate={animateVariant}
+ variants={strokeVariants}
+ custom={0}
+ />
+
+ {/* Left path */}
+ <motion.path
+ d={PATH_LEFT}
+ fill="none"
+ stroke="currentColor"
+ strokeWidth={1.4}
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ initial="hidden"
+ animate={animateVariant}
+ variants={strokeVariants}
+ custom={1}
+ />
+ </motion.svg>
+
+ <span
+ className="text-xs font-medium text-slate-500"
+ style={{ fontSize: size * 0.25 }}
+ >
+ {label}
+ </span>
+ </div>
+ )
+}
diff --git a/apps/web/components/views/chat/chat-messages.tsx b/apps/web/components/views/chat/chat-messages.tsx
index 94743985..55940a60 100644
--- a/apps/web/components/views/chat/chat-messages.tsx
+++ b/apps/web/components/views/chat/chat-messages.tsx
@@ -710,7 +710,7 @@ export function ChatMessages() {
className="text-muted-foreground"
/>
<span className="text-xs text-muted-foreground">
- {modelNames[selectedModel]}
+ {/*{modelNames[selectedModel]}*/}
</span>
</div>
{status === "streaming" || status === "submitted" ? (
diff --git a/apps/web/components/views/integrations.tsx b/apps/web/components/views/integrations.tsx
index 4e698f7f..ecfa51c5 100644
--- a/apps/web/components/views/integrations.tsx
+++ b/apps/web/components/views/integrations.tsx
@@ -48,18 +48,10 @@ import { toast } from "sonner"
import type { z } from "zod"
import { analytics } from "@/lib/analytics"
import { useProject } from "@/stores"
+import type { Project } from "@repo/lib/types"
type Connection = z.infer<typeof ConnectionResponseSchema>
-interface Project {
- id: string
- name: string
- containerTag: string
- createdAt: string
- updatedAt: string
- isExperimental?: boolean
-}
-
const CONNECTORS = {
"google-drive": {
title: "Google Drive",
diff --git a/apps/web/components/views/mcp/installation-dialog-content.tsx b/apps/web/components/views/mcp/installation-dialog-content.tsx
index 2eb043c4..66e48675 100644
--- a/apps/web/components/views/mcp/installation-dialog-content.tsx
+++ b/apps/web/components/views/mcp/installation-dialog-content.tsx
@@ -19,6 +19,7 @@ import { useState } from "react"
import { toast } from "sonner"
import { analytics } from "@/lib/analytics"
import { $fetch } from "@repo/lib/api"
+import type { Project } from "@repo/lib/types"
import { useQuery } from "@tanstack/react-query"
const clients = {
@@ -33,15 +34,6 @@ const clients = {
"claude-code": "Claude Code",
} as const
-interface Project {
- id: string
- name: string
- containerTag: string
- createdAt: string
- updatedAt: string
- isExperimental?: boolean
-}
-
export function InstallationDialogContent() {
const [client, setClient] = useState<keyof typeof clients>("cursor")
const [selectedProject, setSelectedProject] = useState<string | null>("none")
diff --git a/apps/web/components/x-bookmarks-detail-view.tsx b/apps/web/components/x-bookmarks-detail-view.tsx
new file mode 100644
index 00000000..72befe96
--- /dev/null
+++ b/apps/web/components/x-bookmarks-detail-view.tsx
@@ -0,0 +1,113 @@
+"use client"
+
+import { Button } from "@ui/components/button"
+import { cn } from "@lib/utils"
+import { dmSansClassName } from "@/utils/fonts"
+import Image from "next/image"
+
+interface XBookmarksDetailViewProps {
+ onBack: () => void
+}
+
+const steps = [
+ {
+ number: 1,
+ title: "Install the Chrome Extension and login with your supermemory",
+ image: "/onboarding/chrome-ext-1.png",
+ },
+ {
+ number: 2,
+ title: "Visit the bookmarks tab on X and one-click import your bookmarks",
+ image: "/onboarding/chrome-ext-2.png",
+ },
+ {
+ number: 3,
+ title: "Talk to your bookmarks via Nova & see it in your memory graph",
+ image: "/onboarding/chrome-ext-3.png",
+ },
+]
+
+export function XBookmarksDetailView({
+ onBack,
+}: XBookmarksDetailViewProps) {
+ const handleInstall = () => {
+ window.open(
+ "https://chromewebstore.google.com/detail/supermemory/afpgkkipfdpeaflnangednailhoegogi",
+ "_blank",
+ )
+ }
+
+ return (
+ <div className="flex flex-col h-full p-8">
+ <div className="mb-6">
+ <Button
+ variant="link"
+ className="text-white hover:text-gray-300 p-0 hover:no-underline cursor-pointer"
+ onClick={onBack}
+ >
+ ← Back
+ </Button>
+ </div>
+
+ <div className="flex flex-col items-start justify-start flex-1">
+ <div>
+ <h1 className="text-white text-[20px] font-medium mb-3 text-start">
+ Import your X bookmarks via the Chrome Extension
+ </h1>
+
+ <p
+ className={cn(
+ "text-[#8B8B8B] text-sm mb-6 text-start max-w-2xl",
+ dmSansClassName(),
+ )}
+ >
+ Bring your X bookmarks into Supermemory in just a few clicks.
+ They'll be automatically embedded so you can easily find what you
+ need, right when you need it.
+ </p>
+
+ <div className="grid grid-cols-3 gap-4 mb-6 max-w-5xl w-full">
+ {steps.map((step) => (
+ <div
+ key={step.number}
+ className="flex flex-col items-center text-center bg-[#080B0F] p-3 rounded-[10px]"
+ >
+ <div className="rounded-2xl p-6 mb-3 w-full aspect-4/4 flex items-center justify-center relative overflow-hidden">
+ <Image
+ src={step.image}
+ alt={`Step ${step.number}`}
+ fill
+ className="object-cover"
+ unoptimized
+ />
+ </div>
+ <div className="flex flex-col items-start justify-start">
+ <div className="mb-2">
+ <span className="text-white text-sm font-medium">
+ Step {step.number}
+ </span>
+ </div>
+ <p
+ className={cn(
+ "text-[#8B8B8B] text-sm text-start",
+ dmSansClassName(),
+ )}
+ >
+ {step.title}
+ </p>
+ </div>
+ </div>
+ ))}
+ </div>
+ </div>
+
+ <Button
+ className="rounded-xl px-4 py-2 text-white h-10 cursor-pointer mx-auto bg-black"
+ onClick={handleInstall}
+ >
+ Install Chrome Extension →
+ </Button>
+ </div>
+ </div>
+ )
+}
diff --git a/apps/web/globals.css b/apps/web/globals.css
index f95da3a2..50f28e98 100644
--- a/apps/web/globals.css
+++ b/apps/web/globals.css
@@ -1,10 +1,90 @@
+@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap");
@import "tailwindcss";
@plugin "@tailwindcss/typography";
+@theme {
+ --color-onboarding: #525966;
+}
+
+:root {
+ --color-placeholder-onboarding: #525966;
+}
+
+.scrollbar-thin {
+ scrollbar-width: thin;
+ scrollbar-color: #293952 transparent;
+}
+
+.scrollbar-thin::-webkit-scrollbar {
+ width: 6px;
+}
+
+.scrollbar-thin::-webkit-scrollbar-track {
+ background: transparent;
+}
+
.sm-tweet-theme .react-tweet-theme {
--tweet-container-margin: 0px;
+ font-size: inherit !important;
+}
+
+.sm-tweet-theme .react-tweet-theme * {
+ min-width: 0 !important;
}
.sm-tweet-theme .tweet-header-module__A9EVQG__authorFollow {
display: none;
}
+
+.tweet-container-module__CmFQMq__article {
+ padding: 0 !important;
+ font-family: "DM Sans", sans-serif !important;
+ font-size: 10px !important;
+ --tweet-header-font-size: 10px !important;
+ --tweet-header-line-height: 1.25rem !important;
+}
+
+.tweet-body-module__ZNRZja__root > * {
+ font-size: 10px !important;
+ line-height: 0.25rem !important;
+}
+
+[class*="dmSans"],
+.font-dm-sans {
+ letter-spacing: -0.01em;
+ line-height: 135%;
+}
+
+.mcp-client-button-group:hover .mcp-client-gradient-text {
+ background: linear-gradient(
+ 94deg,
+ #369bfd 4.8%,
+ #36fdfd 77.04%,
+ #36fdb5 143.99%
+ );
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+/* css to fix for ordered list numbers being cut off in chat agent messages */
+.chat-markdown-content ol {
+ padding-left: 1.5rem;
+ margin-left: 0;
+}
+
+.chat-markdown-content ul {
+ padding-left: 1.5rem;
+ margin-left: 0;
+}
+
+.chat-markdown-content li {
+ margin-left: 0;
+ padding-left: 0.25rem;
+}
+
+.shadow-inside-out {
+ box-shadow:
+ inset 0 2px 4px rgba(0, 0, 0, 0.3),
+ inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
diff --git a/apps/web/lib/document-icon.tsx b/apps/web/lib/document-icon.tsx
deleted file mode 100644
index edeaf76b..00000000
--- a/apps/web/lib/document-icon.tsx
+++ /dev/null
@@ -1,119 +0,0 @@
-import { MCPIcon } from "@/components/menu"
-import { colors } from "@repo/ui/memory-graph/constants"
-import {
- GoogleDocs,
- MicrosoftWord,
- NotionDoc,
- GoogleDrive,
- GoogleSheets,
- GoogleSlides,
- PDF,
- OneDrive,
- MicrosoftOneNote,
- MicrosoftPowerpoint,
- MicrosoftExcel,
-} from "@ui/assets/icons"
-import { FileText, Globe } from "lucide-react"
-import { useState } from "react"
-
-const getFaviconUrl = (url: string): string => {
- try {
- const domain = new URL(url).hostname
- return `https://www.google.com/s2/favicons?domain=${domain}&sz=32`
- } catch {
- return ""
- }
-}
-
-const FaviconIcon = ({
- url,
- className,
- iconProps,
-}: {
- url: string
- className: string
- iconProps: { className: string; style: { color: string } }
-}) => {
- const [hasError, setHasError] = useState(false)
- const faviconUrl = getFaviconUrl(url)
-
- if (hasError || !faviconUrl) {
- return <Globe {...iconProps} />
- }
-
- return (
- <img
- src={faviconUrl}
- alt="Website favicon"
- className={className}
- style={{
- width: "2em",
- height: "2em",
- objectFit: "contain",
- }}
- onError={() => setHasError(true)}
- />
- )
-}
-
-export const getDocumentIcon = (
- type: string,
- className: string,
- source?: string,
- url?: string,
-) => {
- const iconProps = {
- className,
- style: { color: colors.text.muted },
- }
-
- if (source === "mcp") {
- return <MCPIcon {...iconProps} />
- }
-
- if (
- type === "webpage" ||
- type === "url" ||
- (url && (type === "unknown" || !type))
- ) {
- if (url) {
- return (
- <FaviconIcon url={url} className={className} iconProps={iconProps} />
- )
- }
-
- return <Globe {...iconProps} />
- }
-
- switch (type) {
- case "google_doc":
- return <GoogleDocs {...iconProps} />
- case "google_sheet":
- return <GoogleSheets {...iconProps} />
- case "google_slide":
- return <GoogleSlides {...iconProps} />
- case "google_drive":
- return <GoogleDrive {...iconProps} />
- case "notion":
- case "notion_doc":
- return <NotionDoc {...iconProps} />
- case "word":
- case "microsoft_word":
- return <MicrosoftWord {...iconProps} />
- case "excel":
- case "microsoft_excel":
- return <MicrosoftExcel {...iconProps} />
- case "powerpoint":
- case "microsoft_powerpoint":
- return <MicrosoftPowerpoint {...iconProps} />
- case "onenote":
- case "microsoft_onenote":
- return <MicrosoftOneNote {...iconProps} />
- case "onedrive":
- return <OneDrive {...iconProps} />
- case "pdf":
- return <PDF {...iconProps} />
- default:
- return <FileText {...iconProps} />
- }
-}
diff --git a/apps/web/lib/models.tsx b/apps/web/lib/models.tsx
index 06082d5c..74038088 100644
--- a/apps/web/lib/models.tsx
+++ b/apps/web/lib/models.tsx
@@ -18,10 +18,10 @@ export const models = [
export type ModelId = (typeof models)[number]["id"]
-export const modelNames: Record<ModelId, string> = {
- "gpt-5": "GPT 5",
- "claude-sonnet-4.5": "Claude Sonnet 4.5",
- "gemini-2.5-pro": "Gemini 2.5 Pro",
+export const modelNames: Record<ModelId, { name: string; version: string }> = {
+ "gpt-5": { name: "GPT", version: "5" },
+ "claude-sonnet-4.5": { name: "Claude", version: "4.5" },
+ "gemini-2.5-pro": { name: "Gemini", version: "2.5 Pro" },
}
interface ModelIconProps {
diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts
index 7bab1d21..a184b9b3 100644
--- a/apps/web/middleware.ts
+++ b/apps/web/middleware.ts
@@ -12,12 +12,24 @@ export default async function proxy(request: Request) {
console.debug("[PROXY] Session cookie exists:", !!sessionCookie)
// Always allow access to login and waitlist pages
- const publicPaths = ["/login"]
+ const publicPaths = ["/login", "/login/new"]
if (publicPaths.includes(url.pathname)) {
console.debug("[PROXY] Public path, allowing access")
return NextResponse.next()
}
+ if (url.pathname.startsWith("/api/")) {
+ if (!sessionCookie) {
+ console.debug("[MIDDLEWARE] API route without session, returning 401")
+ return new Response(JSON.stringify({ error: "Unauthorized" }), {
+ status: 401,
+ headers: { "Content-Type": "application/json" },
+ })
+ }
+ console.debug("[MIDDLEWARE] API route with session, allowing access")
+ return NextResponse.next()
+ }
+
// If no session cookie and not on a public path, redirect to login
if (!sessionCookie) {
console.debug(
@@ -54,6 +66,6 @@ export default async function proxy(request: Request) {
export const config = {
matcher: [
- "/((?!_next/static|_next/image|images|icon.png|monitoring|opengraph-image.png|ingest|api|login|api/emails).*)",
+ "/((?!_next/static|_next/image|images|icon.png|monitoring|opengraph-image.png|bg-rectangle.png|onboarding|ingest|login|api/emails).*)",
],
}
diff --git a/apps/web/package.json b/apps/web/package.json
index 3590aba4..85e27d4f 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -44,7 +44,7 @@
"@sentry/nextjs": "^10.22.0",
"@tailwindcss/typography": "^0.5.16",
"@tanstack/react-form": "^1.12.4",
- "@tanstack/react-query": "^5.81.2",
+ "@tanstack/react-query": "^5.90.14",
"@tanstack/react-query-devtools": "^5.84.2",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.12",
@@ -58,6 +58,7 @@
"dotenv": "^16.6.0",
"embla-carousel-autoplay": "^8.6.0",
"embla-carousel-react": "^8.6.0",
+ "flubber": "^0.4.2",
"framer-motion": "^12.23.12",
"idb-keyval": "^6.2.2",
"is-hotkey": "^0.2.0",
@@ -67,12 +68,15 @@
"next": "16.0.9",
"next-themes": "^0.4.6",
"nuqs": "^2.5.2",
+ "pdfjs-dist": "5.4.296",
"posthog-js": "^1.257.0",
"random-word-slugs": "^0.1.7",
"react": "19.2.2",
"react-dom": "19.2.2",
"react-dropzone": "^14.3.8",
+ "react-hotkeys-hook": "^5.2.1",
"react-markdown": "^10.1.0",
+ "react-pdf": "^10.2.0",
"react-tweet": "^3.2.2",
"recharts": "2",
"slate": "^0.118.0",
diff --git a/apps/web/public/bg-rectangle.png b/apps/web/public/bg-rectangle.png
new file mode 100644
index 00000000..b1faa25d
--- /dev/null
+++ b/apps/web/public/bg-rectangle.png
Binary files differ
diff --git a/apps/web/public/dot-pattern.svg b/apps/web/public/dot-pattern.svg
new file mode 100644
index 00000000..04ae3d46
--- /dev/null
+++ b/apps/web/public/dot-pattern.svg
@@ -0,0 +1,2126 @@
+<svg width="369" height="371" viewBox="0 0 369 371" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_724_94484)">
+<rect width="369" height="419" transform="translate(0 -1)" fill="#0F1418"/>
+<circle cx="7" cy="7" r="1" fill="#171D24"/>
+<circle cx="7" cy="15" r="1" fill="#171D24"/>
+<circle cx="15" cy="7" r="1" fill="#171D24"/>
+<circle cx="15" cy="15" r="1" fill="#171D24"/>
+<circle cx="23" cy="7" r="1" fill="#171D24"/>
+<circle cx="23" cy="15" r="1" fill="#171D24"/>
+<circle cx="31" cy="7" r="1" fill="#171D24"/>
+<circle cx="31" cy="15" r="1" fill="#171D24"/>
+<circle cx="39" cy="7" r="1" fill="#171D24"/>
+<circle cx="39" cy="15" r="1" fill="#171D24"/>
+<circle cx="47" cy="7" r="1" fill="#171D24"/>
+<circle cx="47" cy="15" r="1" fill="#171D24"/>
+<circle cx="55" cy="7" r="1" fill="#171D24"/>
+<circle cx="55" cy="15" r="1" fill="#171D24"/>
+<circle cx="63" cy="7" r="1" fill="#171D24"/>
+<circle cx="63" cy="15" r="1" fill="#171D24"/>
+<circle cx="71" cy="7" r="1" fill="#171D24"/>
+<circle cx="71" cy="15" r="1" fill="#171D24"/>
+<circle cx="79" cy="7" r="1" fill="#171D24"/>
+<circle cx="79" cy="15" r="1" fill="#171D24"/>
+<circle cx="87" cy="7" r="1" fill="#171D24"/>
+<circle cx="87" cy="15" r="1" fill="#171D24"/>
+<circle cx="95" cy="7" r="1" fill="#171D24"/>
+<circle cx="95" cy="15" r="1" fill="#171D24"/>
+<circle cx="103" cy="7" r="1" fill="#171D24"/>
+<circle cx="103" cy="15" r="1" fill="#171D24"/>
+<circle cx="111" cy="7" r="1" fill="#171D24"/>
+<circle cx="111" cy="15" r="1" fill="#171D24"/>
+<circle cx="119" cy="7" r="1" fill="#171D24"/>
+<circle cx="119" cy="15" r="1" fill="#171D24"/>
+<circle cx="127" cy="7" r="1" fill="#171D24"/>
+<circle cx="127" cy="15" r="1" fill="#171D24"/>
+<circle cx="135" cy="7" r="1" fill="#171D24"/>
+<circle cx="135" cy="15" r="1" fill="#171D24"/>
+<circle cx="143" cy="7" r="1" fill="#171D24"/>
+<circle cx="143" cy="15" r="1" fill="#171D24"/>
+<circle cx="151" cy="7" r="1" fill="#171D24"/>
+<circle cx="151" cy="15" r="1" fill="#171D24"/>
+<circle cx="159" cy="7" r="1" fill="#171D24"/>
+<circle cx="159" cy="15" r="1" fill="#171D24"/>
+<circle cx="167" cy="7" r="1" fill="#171D24"/>
+<circle cx="167" cy="15" r="1" fill="#171D24"/>
+<circle cx="175" cy="7" r="1" fill="#171D24"/>
+<circle cx="175" cy="15" r="1" fill="#171D24"/>
+<circle cx="183" cy="7" r="1" fill="#171D24"/>
+<circle cx="183" cy="15" r="1" fill="#171D24"/>
+<circle cx="191" cy="7" r="1" fill="#171D24"/>
+<circle cx="191" cy="15" r="1" fill="#171D24"/>
+<circle cx="199" cy="7" r="1" fill="#171D24"/>
+<circle cx="199" cy="15" r="1" fill="#171D24"/>
+<circle cx="207" cy="7" r="1" fill="#171D24"/>
+<circle cx="207" cy="15" r="1" fill="#171D24"/>
+<circle cx="215" cy="7" r="1" fill="#171D24"/>
+<circle cx="215" cy="15" r="1" fill="#171D24"/>
+<circle cx="223" cy="7" r="1" fill="#171D24"/>
+<circle cx="223" cy="15" r="1" fill="#171D24"/>
+<circle cx="231" cy="7" r="1" fill="#171D24"/>
+<circle cx="231" cy="15" r="1" fill="#171D24"/>
+<circle cx="239" cy="7" r="1" fill="#171D24"/>
+<circle cx="239" cy="15" r="1" fill="#171D24"/>
+<circle cx="247" cy="7" r="1" fill="#171D24"/>
+<circle cx="247" cy="15" r="1" fill="#171D24"/>
+<circle cx="255" cy="7" r="1" fill="#171D24"/>
+<circle cx="255" cy="15" r="1" fill="#171D24"/>
+<circle cx="263" cy="7" r="1" fill="#171D24"/>
+<circle cx="263" cy="15" r="1" fill="#171D24"/>
+<circle cx="271" cy="7" r="1" fill="#171D24"/>
+<circle cx="271" cy="15" r="1" fill="#171D24"/>
+<circle cx="279" cy="7" r="1" fill="#171D24"/>
+<circle cx="279" cy="15" r="1" fill="#171D24"/>
+<circle cx="287" cy="7" r="1" fill="#171D24"/>
+<circle cx="287" cy="15" r="1" fill="#171D24"/>
+<circle cx="295" cy="7" r="1" fill="#171D24"/>
+<circle cx="295" cy="15" r="1" fill="#171D24"/>
+<circle cx="303" cy="7" r="1" fill="#171D24"/>
+<circle cx="303" cy="15" r="1" fill="#171D24"/>
+<circle cx="311" cy="7" r="1" fill="#171D24"/>
+<circle cx="311" cy="15" r="1" fill="#171D24"/>
+<circle cx="319" cy="7" r="1" fill="#171D24"/>
+<circle cx="319" cy="15" r="1" fill="#171D24"/>
+<circle cx="327" cy="7" r="1" fill="#171D24"/>
+<circle cx="327" cy="15" r="1" fill="#171D24"/>
+<circle cx="335" cy="7" r="1" fill="#171D24"/>
+<circle cx="335" cy="15" r="1" fill="#171D24"/>
+<circle cx="343" cy="7" r="1" fill="#171D24"/>
+<circle cx="343" cy="15" r="1" fill="#171D24"/>
+<circle cx="351" cy="7" r="1" fill="#171D24"/>
+<circle cx="351" cy="15" r="1" fill="#171D24"/>
+<circle cx="359" cy="7" r="1" fill="#171D24"/>
+<circle cx="359" cy="15" r="1" fill="#171D24"/>
+<circle cx="367" cy="7" r="1" fill="#171D24"/>
+<circle cx="367" cy="15" r="1" fill="#171D24"/>
+<circle cx="7" cy="23" r="1" fill="#171D24"/>
+<circle cx="7" cy="31" r="1" fill="#171D24"/>
+<circle cx="15" cy="23" r="1" fill="#171D24"/>
+<circle cx="15" cy="31" r="1" fill="#171D24"/>
+<circle cx="23" cy="23" r="1" fill="#171D24"/>
+<circle cx="23" cy="31" r="1" fill="#171D24"/>
+<circle cx="31" cy="23" r="1" fill="#171D24"/>
+<circle cx="31" cy="31" r="1" fill="#171D24"/>
+<circle cx="39" cy="23" r="1" fill="#171D24"/>
+<circle cx="39" cy="31" r="1" fill="#171D24"/>
+<circle cx="47" cy="23" r="1" fill="#171D24"/>
+<circle cx="47" cy="31" r="1" fill="#171D24"/>
+<circle cx="55" cy="23" r="1" fill="#171D24"/>
+<circle cx="55" cy="31" r="1" fill="#171D24"/>
+<circle cx="63" cy="23" r="1" fill="#171D24"/>
+<circle cx="63" cy="31" r="1" fill="#171D24"/>
+<circle cx="71" cy="23" r="1" fill="#171D24"/>
+<circle cx="71" cy="31" r="1" fill="#171D24"/>
+<circle cx="79" cy="23" r="1" fill="#171D24"/>
+<circle cx="79" cy="31" r="1" fill="#171D24"/>
+<circle cx="87" cy="23" r="1" fill="#171D24"/>
+<circle cx="87" cy="31" r="1" fill="#171D24"/>
+<circle cx="95" cy="23" r="1" fill="#171D24"/>
+<circle cx="95" cy="31" r="1" fill="#171D24"/>
+<circle cx="103" cy="23" r="1" fill="#171D24"/>
+<circle cx="103" cy="31" r="1" fill="#171D24"/>
+<circle cx="111" cy="23" r="1" fill="#171D24"/>
+<circle cx="111" cy="31" r="1" fill="#171D24"/>
+<circle cx="119" cy="23" r="1" fill="#171D24"/>
+<circle cx="119" cy="31" r="1" fill="#171D24"/>
+<circle cx="127" cy="23" r="1" fill="#171D24"/>
+<circle cx="127" cy="31" r="1" fill="#171D24"/>
+<circle cx="135" cy="23" r="1" fill="#171D24"/>
+<circle cx="135" cy="31" r="1" fill="#171D24"/>
+<circle cx="143" cy="23" r="1" fill="#171D24"/>
+<circle cx="143" cy="31" r="1" fill="#171D24"/>
+<circle cx="151" cy="23" r="1" fill="#171D24"/>
+<circle cx="151" cy="31" r="1" fill="#171D24"/>
+<circle cx="159" cy="23" r="1" fill="#171D24"/>
+<circle cx="159" cy="31" r="1" fill="#171D24"/>
+<circle cx="167" cy="23" r="1" fill="#171D24"/>
+<circle cx="167" cy="31" r="1" fill="#171D24"/>
+<circle cx="175" cy="23" r="1" fill="#171D24"/>
+<circle cx="175" cy="31" r="1" fill="#171D24"/>
+<circle cx="183" cy="23" r="1" fill="#171D24"/>
+<circle cx="183" cy="31" r="1" fill="#171D24"/>
+<circle cx="191" cy="23" r="1" fill="#171D24"/>
+<circle cx="191" cy="31" r="1" fill="#171D24"/>
+<circle cx="199" cy="23" r="1" fill="#171D24"/>
+<circle cx="199" cy="31" r="1" fill="#171D24"/>
+<circle cx="207" cy="23" r="1" fill="#171D24"/>
+<circle cx="207" cy="31" r="1" fill="#171D24"/>
+<circle cx="215" cy="23" r="1" fill="#171D24"/>
+<circle cx="215" cy="31" r="1" fill="#171D24"/>
+<circle cx="223" cy="23" r="1" fill="#171D24"/>
+<circle cx="223" cy="31" r="1" fill="#171D24"/>
+<circle cx="231" cy="23" r="1" fill="#171D24"/>
+<circle cx="231" cy="31" r="1" fill="#171D24"/>
+<circle cx="239" cy="23" r="1" fill="#171D24"/>
+<circle cx="239" cy="31" r="1" fill="#171D24"/>
+<circle cx="247" cy="23" r="1" fill="#171D24"/>
+<circle cx="247" cy="31" r="1" fill="#171D24"/>
+<circle cx="255" cy="23" r="1" fill="#171D24"/>
+<circle cx="255" cy="31" r="1" fill="#171D24"/>
+<circle cx="263" cy="23" r="1" fill="#171D24"/>
+<circle cx="263" cy="31" r="1" fill="#171D24"/>
+<circle cx="271" cy="23" r="1" fill="#171D24"/>
+<circle cx="271" cy="31" r="1" fill="#171D24"/>
+<circle cx="279" cy="23" r="1" fill="#171D24"/>
+<circle cx="279" cy="31" r="1" fill="#171D24"/>
+<circle cx="287" cy="23" r="1" fill="#171D24"/>
+<circle cx="287" cy="31" r="1" fill="#171D24"/>
+<circle cx="295" cy="23" r="1" fill="#171D24"/>
+<circle cx="295" cy="31" r="1" fill="#171D24"/>
+<circle cx="303" cy="23" r="1" fill="#171D24"/>
+<circle cx="303" cy="31" r="1" fill="#171D24"/>
+<circle cx="311" cy="23" r="1" fill="#171D24"/>
+<circle cx="311" cy="31" r="1" fill="#171D24"/>
+<circle cx="319" cy="23" r="1" fill="#171D24"/>
+<circle cx="319" cy="31" r="1" fill="#171D24"/>
+<circle cx="327" cy="23" r="1" fill="#171D24"/>
+<circle cx="327" cy="31" r="1" fill="#171D24"/>
+<circle cx="335" cy="23" r="1" fill="#171D24"/>
+<circle cx="335" cy="31" r="1" fill="#171D24"/>
+<circle cx="343" cy="23" r="1" fill="#171D24"/>
+<circle cx="343" cy="31" r="1" fill="#171D24"/>
+<circle cx="351" cy="23" r="1" fill="#171D24"/>
+<circle cx="351" cy="31" r="1" fill="#171D24"/>
+<circle cx="359" cy="23" r="1" fill="#171D24"/>
+<circle cx="359" cy="31" r="1" fill="#171D24"/>
+<circle cx="367" cy="23" r="1" fill="#171D24"/>
+<circle cx="367" cy="31" r="1" fill="#171D24"/>
+<circle cx="7" cy="39" r="1" fill="#171D24"/>
+<circle cx="7" cy="47" r="1" fill="#171D24"/>
+<circle cx="15" cy="39" r="1" fill="#171D24"/>
+<circle cx="15" cy="47" r="1" fill="#171D24"/>
+<circle cx="23" cy="39" r="1" fill="#171D24"/>
+<circle cx="23" cy="47" r="1" fill="#171D24"/>
+<circle cx="31" cy="39" r="1" fill="#171D24"/>
+<circle cx="31" cy="47" r="1" fill="#171D24"/>
+<circle cx="39" cy="39" r="1" fill="#171D24"/>
+<circle cx="39" cy="47" r="1" fill="#171D24"/>
+<circle cx="47" cy="39" r="1" fill="#171D24"/>
+<circle cx="47" cy="47" r="1" fill="#171D24"/>
+<circle cx="55" cy="39" r="1" fill="#171D24"/>
+<circle cx="55" cy="47" r="1" fill="#171D24"/>
+<circle cx="63" cy="39" r="1" fill="#171D24"/>
+<circle cx="63" cy="47" r="1" fill="#171D24"/>
+<circle cx="71" cy="39" r="1" fill="#171D24"/>
+<circle cx="71" cy="47" r="1" fill="#171D24"/>
+<circle cx="79" cy="39" r="1" fill="#171D24"/>
+<circle cx="79" cy="47" r="1" fill="#171D24"/>
+<circle cx="87" cy="39" r="1" fill="#171D24"/>
+<circle cx="87" cy="47" r="1" fill="#171D24"/>
+<circle cx="95" cy="39" r="1" fill="#171D24"/>
+<circle cx="95" cy="47" r="1" fill="#171D24"/>
+<circle cx="103" cy="39" r="1" fill="#171D24"/>
+<circle cx="103" cy="47" r="1" fill="#171D24"/>
+<circle cx="111" cy="39" r="1" fill="#171D24"/>
+<circle cx="111" cy="47" r="1" fill="#171D24"/>
+<circle cx="119" cy="39" r="1" fill="#171D24"/>
+<circle cx="119" cy="47" r="1" fill="#171D24"/>
+<circle cx="127" cy="39" r="1" fill="#171D24"/>
+<circle cx="127" cy="47" r="1" fill="#171D24"/>
+<circle cx="135" cy="39" r="1" fill="#171D24"/>
+<circle cx="135" cy="47" r="1" fill="#171D24"/>
+<circle cx="143" cy="39" r="1" fill="#171D24"/>
+<circle cx="143" cy="47" r="1" fill="#171D24"/>
+<circle cx="151" cy="39" r="1" fill="#171D24"/>
+<circle cx="151" cy="47" r="1" fill="#171D24"/>
+<circle cx="159" cy="39" r="1" fill="#171D24"/>
+<circle cx="159" cy="47" r="1" fill="#171D24"/>
+<circle cx="167" cy="39" r="1" fill="#171D24"/>
+<circle cx="167" cy="47" r="1" fill="#171D24"/>
+<circle cx="175" cy="39" r="1" fill="#171D24"/>
+<circle cx="175" cy="47" r="1" fill="#171D24"/>
+<circle cx="183" cy="39" r="1" fill="#171D24"/>
+<circle cx="183" cy="47" r="1" fill="#171D24"/>
+<circle cx="191" cy="39" r="1" fill="#171D24"/>
+<circle cx="191" cy="47" r="1" fill="#171D24"/>
+<circle cx="199" cy="39" r="1" fill="#171D24"/>
+<circle cx="199" cy="47" r="1" fill="#171D24"/>
+<circle cx="207" cy="39" r="1" fill="#171D24"/>
+<circle cx="207" cy="47" r="1" fill="#171D24"/>
+<circle cx="215" cy="39" r="1" fill="#171D24"/>
+<circle cx="215" cy="47" r="1" fill="#171D24"/>
+<circle cx="223" cy="39" r="1" fill="#171D24"/>
+<circle cx="223" cy="47" r="1" fill="#171D24"/>
+<circle cx="231" cy="39" r="1" fill="#171D24"/>
+<circle cx="231" cy="47" r="1" fill="#171D24"/>
+<circle cx="239" cy="39" r="1" fill="#171D24"/>
+<circle cx="239" cy="47" r="1" fill="#171D24"/>
+<circle cx="247" cy="39" r="1" fill="#171D24"/>
+<circle cx="247" cy="47" r="1" fill="#171D24"/>
+<circle cx="255" cy="39" r="1" fill="#171D24"/>
+<circle cx="255" cy="47" r="1" fill="#171D24"/>
+<circle cx="263" cy="39" r="1" fill="#171D24"/>
+<circle cx="263" cy="47" r="1" fill="#171D24"/>
+<circle cx="271" cy="39" r="1" fill="#171D24"/>
+<circle cx="271" cy="47" r="1" fill="#171D24"/>
+<circle cx="279" cy="39" r="1" fill="#171D24"/>
+<circle cx="279" cy="47" r="1" fill="#171D24"/>
+<circle cx="287" cy="39" r="1" fill="#171D24"/>
+<circle cx="287" cy="47" r="1" fill="#171D24"/>
+<circle cx="295" cy="39" r="1" fill="#171D24"/>
+<circle cx="295" cy="47" r="1" fill="#171D24"/>
+<circle cx="303" cy="39" r="1" fill="#171D24"/>
+<circle cx="303" cy="47" r="1" fill="#171D24"/>
+<circle cx="311" cy="39" r="1" fill="#171D24"/>
+<circle cx="311" cy="47" r="1" fill="#171D24"/>
+<circle cx="319" cy="39" r="1" fill="#171D24"/>
+<circle cx="319" cy="47" r="1" fill="#171D24"/>
+<circle cx="327" cy="39" r="1" fill="#171D24"/>
+<circle cx="327" cy="47" r="1" fill="#171D24"/>
+<circle cx="335" cy="39" r="1" fill="#171D24"/>
+<circle cx="335" cy="47" r="1" fill="#171D24"/>
+<circle cx="343" cy="39" r="1" fill="#171D24"/>
+<circle cx="343" cy="47" r="1" fill="#171D24"/>
+<circle cx="351" cy="39" r="1" fill="#171D24"/>
+<circle cx="351" cy="47" r="1" fill="#171D24"/>
+<circle cx="359" cy="39" r="1" fill="#171D24"/>
+<circle cx="359" cy="47" r="1" fill="#171D24"/>
+<circle cx="367" cy="39" r="1" fill="#171D24"/>
+<circle cx="367" cy="47" r="1" fill="#171D24"/>
+<circle cx="7" cy="55" r="1" fill="#171D24"/>
+<circle cx="7" cy="63" r="1" fill="#171D24"/>
+<circle cx="15" cy="55" r="1" fill="#171D24"/>
+<circle cx="15" cy="63" r="1" fill="#171D24"/>
+<circle cx="23" cy="55" r="1" fill="#171D24"/>
+<circle cx="23" cy="63" r="1" fill="#171D24"/>
+<circle cx="31" cy="55" r="1" fill="#171D24"/>
+<circle cx="31" cy="63" r="1" fill="#171D24"/>
+<circle cx="39" cy="55" r="1" fill="#171D24"/>
+<circle cx="39" cy="63" r="1" fill="#171D24"/>
+<circle cx="47" cy="55" r="1" fill="#171D24"/>
+<circle cx="47" cy="63" r="1" fill="#171D24"/>
+<circle cx="55" cy="55" r="1" fill="#171D24"/>
+<circle cx="55" cy="63" r="1" fill="#171D24"/>
+<circle cx="63" cy="55" r="1" fill="#171D24"/>
+<circle cx="63" cy="63" r="1" fill="#171D24"/>
+<circle cx="71" cy="55" r="1" fill="#171D24"/>
+<circle cx="71" cy="63" r="1" fill="#171D24"/>
+<circle cx="79" cy="55" r="1" fill="#171D24"/>
+<circle cx="79" cy="63" r="1" fill="#171D24"/>
+<circle cx="87" cy="55" r="1" fill="#171D24"/>
+<circle cx="87" cy="63" r="1" fill="#171D24"/>
+<circle cx="95" cy="55" r="1" fill="#171D24"/>
+<circle cx="95" cy="63" r="1" fill="#171D24"/>
+<circle cx="103" cy="55" r="1" fill="#171D24"/>
+<circle cx="103" cy="63" r="1" fill="#171D24"/>
+<circle cx="111" cy="55" r="1" fill="#171D24"/>
+<circle cx="111" cy="63" r="1" fill="#171D24"/>
+<circle cx="119" cy="55" r="1" fill="#171D24"/>
+<circle cx="119" cy="63" r="1" fill="#171D24"/>
+<circle cx="127" cy="55" r="1" fill="#171D24"/>
+<circle cx="127" cy="63" r="1" fill="#171D24"/>
+<circle cx="135" cy="55" r="1" fill="#171D24"/>
+<circle cx="135" cy="63" r="1" fill="#171D24"/>
+<circle cx="143" cy="55" r="1" fill="#171D24"/>
+<circle cx="143" cy="63" r="1" fill="#171D24"/>
+<circle cx="151" cy="55" r="1" fill="#171D24"/>
+<circle cx="151" cy="63" r="1" fill="#171D24"/>
+<circle cx="159" cy="55" r="1" fill="#171D24"/>
+<circle cx="159" cy="63" r="1" fill="#171D24"/>
+<circle cx="167" cy="55" r="1" fill="#171D24"/>
+<circle cx="167" cy="63" r="1" fill="#171D24"/>
+<circle cx="175" cy="55" r="1" fill="#171D24"/>
+<circle cx="175" cy="63" r="1" fill="#171D24"/>
+<circle cx="183" cy="55" r="1" fill="#171D24"/>
+<circle cx="183" cy="63" r="1" fill="#171D24"/>
+<circle cx="191" cy="55" r="1" fill="#171D24"/>
+<circle cx="191" cy="63" r="1" fill="#171D24"/>
+<circle cx="199" cy="55" r="1" fill="#171D24"/>
+<circle cx="199" cy="63" r="1" fill="#171D24"/>
+<circle cx="207" cy="55" r="1" fill="#171D24"/>
+<circle cx="207" cy="63" r="1" fill="#171D24"/>
+<circle cx="215" cy="55" r="1" fill="#171D24"/>
+<circle cx="215" cy="63" r="1" fill="#171D24"/>
+<circle cx="223" cy="55" r="1" fill="#171D24"/>
+<circle cx="223" cy="63" r="1" fill="#171D24"/>
+<circle cx="231" cy="55" r="1" fill="#171D24"/>
+<circle cx="231" cy="63" r="1" fill="#171D24"/>
+<circle cx="239" cy="55" r="1" fill="#171D24"/>
+<circle cx="239" cy="63" r="1" fill="#171D24"/>
+<circle cx="247" cy="55" r="1" fill="#171D24"/>
+<circle cx="247" cy="63" r="1" fill="#171D24"/>
+<circle cx="255" cy="55" r="1" fill="#171D24"/>
+<circle cx="255" cy="63" r="1" fill="#171D24"/>
+<circle cx="263" cy="55" r="1" fill="#171D24"/>
+<circle cx="263" cy="63" r="1" fill="#171D24"/>
+<circle cx="271" cy="55" r="1" fill="#171D24"/>
+<circle cx="271" cy="63" r="1" fill="#171D24"/>
+<circle cx="279" cy="55" r="1" fill="#171D24"/>
+<circle cx="279" cy="63" r="1" fill="#171D24"/>
+<circle cx="287" cy="55" r="1" fill="#171D24"/>
+<circle cx="287" cy="63" r="1" fill="#171D24"/>
+<circle cx="295" cy="55" r="1" fill="#171D24"/>
+<circle cx="295" cy="63" r="1" fill="#171D24"/>
+<circle cx="303" cy="55" r="1" fill="#171D24"/>
+<circle cx="303" cy="63" r="1" fill="#171D24"/>
+<circle cx="311" cy="55" r="1" fill="#171D24"/>
+<circle cx="311" cy="63" r="1" fill="#171D24"/>
+<circle cx="319" cy="55" r="1" fill="#171D24"/>
+<circle cx="319" cy="63" r="1" fill="#171D24"/>
+<circle cx="327" cy="55" r="1" fill="#171D24"/>
+<circle cx="327" cy="63" r="1" fill="#171D24"/>
+<circle cx="335" cy="55" r="1" fill="#171D24"/>
+<circle cx="335" cy="63" r="1" fill="#171D24"/>
+<circle cx="343" cy="55" r="1" fill="#171D24"/>
+<circle cx="343" cy="63" r="1" fill="#171D24"/>
+<circle cx="351" cy="55" r="1" fill="#171D24"/>
+<circle cx="351" cy="63" r="1" fill="#171D24"/>
+<circle cx="359" cy="55" r="1" fill="#171D24"/>
+<circle cx="359" cy="63" r="1" fill="#171D24"/>
+<circle cx="367" cy="55" r="1" fill="#171D24"/>
+<circle cx="367" cy="63" r="1" fill="#171D24"/>
+<circle cx="7" cy="71" r="1" fill="#171D24"/>
+<circle cx="7" cy="79" r="1" fill="#171D24"/>
+<circle cx="15" cy="71" r="1" fill="#171D24"/>
+<circle cx="15" cy="79" r="1" fill="#171D24"/>
+<circle cx="23" cy="71" r="1" fill="#171D24"/>
+<circle cx="23" cy="79" r="1" fill="#171D24"/>
+<circle cx="31" cy="71" r="1" fill="#171D24"/>
+<circle cx="31" cy="79" r="1" fill="#171D24"/>
+<circle cx="39" cy="71" r="1" fill="#171D24"/>
+<circle cx="39" cy="79" r="1" fill="#171D24"/>
+<circle cx="47" cy="71" r="1" fill="#171D24"/>
+<circle cx="47" cy="79" r="1" fill="#171D24"/>
+<circle cx="55" cy="71" r="1" fill="#171D24"/>
+<circle cx="55" cy="79" r="1" fill="#171D24"/>
+<circle cx="63" cy="71" r="1" fill="#171D24"/>
+<circle cx="63" cy="79" r="1" fill="#171D24"/>
+<circle cx="71" cy="71" r="1" fill="#171D24"/>
+<circle cx="71" cy="79" r="1" fill="#171D24"/>
+<circle cx="79" cy="71" r="1" fill="#171D24"/>
+<circle cx="79" cy="79" r="1" fill="#171D24"/>
+<circle cx="87" cy="71" r="1" fill="#171D24"/>
+<circle cx="87" cy="79" r="1" fill="#171D24"/>
+<circle cx="95" cy="71" r="1" fill="#171D24"/>
+<circle cx="95" cy="79" r="1" fill="#171D24"/>
+<circle cx="103" cy="71" r="1" fill="#171D24"/>
+<circle cx="103" cy="79" r="1" fill="#171D24"/>
+<circle cx="111" cy="71" r="1" fill="#171D24"/>
+<circle cx="111" cy="79" r="1" fill="#171D24"/>
+<circle cx="119" cy="71" r="1" fill="#171D24"/>
+<circle cx="119" cy="79" r="1" fill="#171D24"/>
+<circle cx="127" cy="71" r="1" fill="#171D24"/>
+<circle cx="127" cy="79" r="1" fill="#171D24"/>
+<circle cx="135" cy="71" r="1" fill="#171D24"/>
+<circle cx="135" cy="79" r="1" fill="#171D24"/>
+<circle cx="143" cy="71" r="1" fill="#171D24"/>
+<circle cx="143" cy="79" r="1" fill="#171D24"/>
+<circle cx="151" cy="71" r="1" fill="#171D24"/>
+<circle cx="151" cy="79" r="1" fill="#171D24"/>
+<circle cx="159" cy="71" r="1" fill="#171D24"/>
+<circle cx="159" cy="79" r="1" fill="#171D24"/>
+<circle cx="167" cy="71" r="1" fill="#171D24"/>
+<circle cx="167" cy="79" r="1" fill="#171D24"/>
+<circle cx="175" cy="71" r="1" fill="#171D24"/>
+<circle cx="175" cy="79" r="1" fill="#171D24"/>
+<circle cx="183" cy="71" r="1" fill="#171D24"/>
+<circle cx="183" cy="79" r="1" fill="#171D24"/>
+<circle cx="191" cy="71" r="1" fill="#171D24"/>
+<circle cx="191" cy="79" r="1" fill="#171D24"/>
+<circle cx="199" cy="71" r="1" fill="#171D24"/>
+<circle cx="199" cy="79" r="1" fill="#171D24"/>
+<circle cx="207" cy="71" r="1" fill="#171D24"/>
+<circle cx="207" cy="79" r="1" fill="#171D24"/>
+<circle cx="215" cy="71" r="1" fill="#171D24"/>
+<circle cx="215" cy="79" r="1" fill="#171D24"/>
+<circle cx="223" cy="71" r="1" fill="#171D24"/>
+<circle cx="223" cy="79" r="1" fill="#171D24"/>
+<circle cx="231" cy="71" r="1" fill="#171D24"/>
+<circle cx="231" cy="79" r="1" fill="#171D24"/>
+<circle cx="239" cy="71" r="1" fill="#171D24"/>
+<circle cx="239" cy="79" r="1" fill="#171D24"/>
+<circle cx="247" cy="71" r="1" fill="#171D24"/>
+<circle cx="247" cy="79" r="1" fill="#171D24"/>
+<circle cx="255" cy="71" r="1" fill="#171D24"/>
+<circle cx="255" cy="79" r="1" fill="#171D24"/>
+<circle cx="263" cy="71" r="1" fill="#171D24"/>
+<circle cx="263" cy="79" r="1" fill="#171D24"/>
+<circle cx="271" cy="71" r="1" fill="#171D24"/>
+<circle cx="271" cy="79" r="1" fill="#171D24"/>
+<circle cx="279" cy="71" r="1" fill="#171D24"/>
+<circle cx="279" cy="79" r="1" fill="#171D24"/>
+<circle cx="287" cy="71" r="1" fill="#171D24"/>
+<circle cx="287" cy="79" r="1" fill="#171D24"/>
+<circle cx="295" cy="71" r="1" fill="#171D24"/>
+<circle cx="295" cy="79" r="1" fill="#171D24"/>
+<circle cx="303" cy="71" r="1" fill="#171D24"/>
+<circle cx="303" cy="79" r="1" fill="#171D24"/>
+<circle cx="311" cy="71" r="1" fill="#171D24"/>
+<circle cx="311" cy="79" r="1" fill="#171D24"/>
+<circle cx="319" cy="71" r="1" fill="#171D24"/>
+<circle cx="319" cy="79" r="1" fill="#171D24"/>
+<circle cx="327" cy="71" r="1" fill="#171D24"/>
+<circle cx="327" cy="79" r="1" fill="#171D24"/>
+<circle cx="335" cy="71" r="1" fill="#171D24"/>
+<circle cx="335" cy="79" r="1" fill="#171D24"/>
+<circle cx="343" cy="71" r="1" fill="#171D24"/>
+<circle cx="343" cy="79" r="1" fill="#171D24"/>
+<circle cx="351" cy="71" r="1" fill="#171D24"/>
+<circle cx="351" cy="79" r="1" fill="#171D24"/>
+<circle cx="359" cy="71" r="1" fill="#171D24"/>
+<circle cx="359" cy="79" r="1" fill="#171D24"/>
+<circle cx="367" cy="71" r="1" fill="#171D24"/>
+<circle cx="367" cy="79" r="1" fill="#171D24"/>
+<circle cx="7" cy="87" r="1" fill="#171D24"/>
+<circle cx="7" cy="95" r="1" fill="#171D24"/>
+<circle cx="15" cy="87" r="1" fill="#171D24"/>
+<circle cx="15" cy="95" r="1" fill="#171D24"/>
+<circle cx="23" cy="87" r="1" fill="#171D24"/>
+<circle cx="23" cy="95" r="1" fill="#171D24"/>
+<circle cx="31" cy="87" r="1" fill="#171D24"/>
+<circle cx="31" cy="95" r="1" fill="#171D24"/>
+<circle cx="39" cy="87" r="1" fill="#171D24"/>
+<circle cx="39" cy="95" r="1" fill="#171D24"/>
+<circle cx="47" cy="87" r="1" fill="#171D24"/>
+<circle cx="47" cy="95" r="1" fill="#171D24"/>
+<circle cx="55" cy="87" r="1" fill="#171D24"/>
+<circle cx="55" cy="95" r="1" fill="#171D24"/>
+<circle cx="63" cy="87" r="1" fill="#171D24"/>
+<circle cx="63" cy="95" r="1" fill="#171D24"/>
+<circle cx="71" cy="87" r="1" fill="#171D24"/>
+<circle cx="71" cy="95" r="1" fill="#171D24"/>
+<circle cx="79" cy="87" r="1" fill="#171D24"/>
+<circle cx="79" cy="95" r="1" fill="#171D24"/>
+<circle cx="87" cy="87" r="1" fill="#171D24"/>
+<circle cx="87" cy="95" r="1" fill="#171D24"/>
+<circle cx="95" cy="87" r="1" fill="#171D24"/>
+<circle cx="95" cy="95" r="1" fill="#171D24"/>
+<circle cx="103" cy="87" r="1" fill="#171D24"/>
+<circle cx="103" cy="95" r="1" fill="#171D24"/>
+<circle cx="111" cy="87" r="1" fill="#171D24"/>
+<circle cx="111" cy="95" r="1" fill="#171D24"/>
+<circle cx="119" cy="87" r="1" fill="#171D24"/>
+<circle cx="119" cy="95" r="1" fill="#171D24"/>
+<circle cx="127" cy="87" r="1" fill="#171D24"/>
+<circle cx="127" cy="95" r="1" fill="#171D24"/>
+<circle cx="135" cy="87" r="1" fill="#171D24"/>
+<circle cx="135" cy="95" r="1" fill="#171D24"/>
+<circle cx="143" cy="87" r="1" fill="#171D24"/>
+<circle cx="143" cy="95" r="1" fill="#171D24"/>
+<circle cx="151" cy="87" r="1" fill="#171D24"/>
+<circle cx="151" cy="95" r="1" fill="#171D24"/>
+<circle cx="159" cy="87" r="1" fill="#171D24"/>
+<circle cx="159" cy="95" r="1" fill="#171D24"/>
+<circle cx="167" cy="87" r="1" fill="#171D24"/>
+<circle cx="167" cy="95" r="1" fill="#171D24"/>
+<circle cx="175" cy="87" r="1" fill="#171D24"/>
+<circle cx="175" cy="95" r="1" fill="#171D24"/>
+<circle cx="183" cy="87" r="1" fill="#171D24"/>
+<circle cx="183" cy="95" r="1" fill="#171D24"/>
+<circle cx="191" cy="87" r="1" fill="#171D24"/>
+<circle cx="191" cy="95" r="1" fill="#171D24"/>
+<circle cx="199" cy="87" r="1" fill="#171D24"/>
+<circle cx="199" cy="95" r="1" fill="#171D24"/>
+<circle cx="207" cy="87" r="1" fill="#171D24"/>
+<circle cx="207" cy="95" r="1" fill="#171D24"/>
+<circle cx="215" cy="87" r="1" fill="#171D24"/>
+<circle cx="215" cy="95" r="1" fill="#171D24"/>
+<circle cx="223" cy="87" r="1" fill="#171D24"/>
+<circle cx="223" cy="95" r="1" fill="#171D24"/>
+<circle cx="231" cy="87" r="1" fill="#171D24"/>
+<circle cx="231" cy="95" r="1" fill="#171D24"/>
+<circle cx="239" cy="87" r="1" fill="#171D24"/>
+<circle cx="239" cy="95" r="1" fill="#171D24"/>
+<circle cx="247" cy="87" r="1" fill="#171D24"/>
+<circle cx="247" cy="95" r="1" fill="#171D24"/>
+<circle cx="255" cy="87" r="1" fill="#171D24"/>
+<circle cx="255" cy="95" r="1" fill="#171D24"/>
+<circle cx="263" cy="87" r="1" fill="#171D24"/>
+<circle cx="263" cy="95" r="1" fill="#171D24"/>
+<circle cx="271" cy="87" r="1" fill="#171D24"/>
+<circle cx="271" cy="95" r="1" fill="#171D24"/>
+<circle cx="279" cy="87" r="1" fill="#171D24"/>
+<circle cx="279" cy="95" r="1" fill="#171D24"/>
+<circle cx="287" cy="87" r="1" fill="#171D24"/>
+<circle cx="287" cy="95" r="1" fill="#171D24"/>
+<circle cx="295" cy="87" r="1" fill="#171D24"/>
+<circle cx="295" cy="95" r="1" fill="#171D24"/>
+<circle cx="303" cy="87" r="1" fill="#171D24"/>
+<circle cx="303" cy="95" r="1" fill="#171D24"/>
+<circle cx="311" cy="87" r="1" fill="#171D24"/>
+<circle cx="311" cy="95" r="1" fill="#171D24"/>
+<circle cx="319" cy="87" r="1" fill="#171D24"/>
+<circle cx="319" cy="95" r="1" fill="#171D24"/>
+<circle cx="327" cy="87" r="1" fill="#171D24"/>
+<circle cx="327" cy="95" r="1" fill="#171D24"/>
+<circle cx="335" cy="87" r="1" fill="#171D24"/>
+<circle cx="335" cy="95" r="1" fill="#171D24"/>
+<circle cx="343" cy="87" r="1" fill="#171D24"/>
+<circle cx="343" cy="95" r="1" fill="#171D24"/>
+<circle cx="351" cy="87" r="1" fill="#171D24"/>
+<circle cx="351" cy="95" r="1" fill="#171D24"/>
+<circle cx="359" cy="87" r="1" fill="#171D24"/>
+<circle cx="359" cy="95" r="1" fill="#171D24"/>
+<circle cx="367" cy="87" r="1" fill="#171D24"/>
+<circle cx="367" cy="95" r="1" fill="#171D24"/>
+<circle cx="7" cy="103" r="1" fill="#171D24"/>
+<circle cx="7" cy="111" r="1" fill="#171D24"/>
+<circle cx="15" cy="103" r="1" fill="#171D24"/>
+<circle cx="15" cy="111" r="1" fill="#171D24"/>
+<circle cx="23" cy="103" r="1" fill="#171D24"/>
+<circle cx="23" cy="111" r="1" fill="#171D24"/>
+<circle cx="31" cy="103" r="1" fill="#171D24"/>
+<circle cx="31" cy="111" r="1" fill="#171D24"/>
+<circle cx="39" cy="103" r="1" fill="#171D24"/>
+<circle cx="39" cy="111" r="1" fill="#171D24"/>
+<circle cx="47" cy="103" r="1" fill="#171D24"/>
+<circle cx="47" cy="111" r="1" fill="#171D24"/>
+<circle cx="55" cy="103" r="1" fill="#171D24"/>
+<circle cx="55" cy="111" r="1" fill="#171D24"/>
+<circle cx="63" cy="103" r="1" fill="#171D24"/>
+<circle cx="63" cy="111" r="1" fill="#171D24"/>
+<circle cx="71" cy="103" r="1" fill="#171D24"/>
+<circle cx="71" cy="111" r="1" fill="#171D24"/>
+<circle cx="79" cy="103" r="1" fill="#171D24"/>
+<circle cx="79" cy="111" r="1" fill="#171D24"/>
+<circle cx="87" cy="103" r="1" fill="#171D24"/>
+<circle cx="87" cy="111" r="1" fill="#171D24"/>
+<circle cx="95" cy="103" r="1" fill="#171D24"/>
+<circle cx="95" cy="111" r="1" fill="#171D24"/>
+<circle cx="103" cy="103" r="1" fill="#171D24"/>
+<circle cx="103" cy="111" r="1" fill="#171D24"/>
+<circle cx="111" cy="103" r="1" fill="#171D24"/>
+<circle cx="111" cy="111" r="1" fill="#171D24"/>
+<circle cx="119" cy="103" r="1" fill="#171D24"/>
+<circle cx="119" cy="111" r="1" fill="#171D24"/>
+<circle cx="127" cy="103" r="1" fill="#171D24"/>
+<circle cx="127" cy="111" r="1" fill="#171D24"/>
+<circle cx="135" cy="103" r="1" fill="#171D24"/>
+<circle cx="135" cy="111" r="1" fill="#171D24"/>
+<circle cx="143" cy="103" r="1" fill="#171D24"/>
+<circle cx="143" cy="111" r="1" fill="#171D24"/>
+<circle cx="151" cy="103" r="1" fill="#171D24"/>
+<circle cx="151" cy="111" r="1" fill="#171D24"/>
+<circle cx="159" cy="103" r="1" fill="#171D24"/>
+<circle cx="159" cy="111" r="1" fill="#171D24"/>
+<circle cx="167" cy="103" r="1" fill="#171D24"/>
+<circle cx="167" cy="111" r="1" fill="#171D24"/>
+<circle cx="175" cy="103" r="1" fill="#171D24"/>
+<circle cx="175" cy="111" r="1" fill="#171D24"/>
+<circle cx="183" cy="103" r="1" fill="#171D24"/>
+<circle cx="183" cy="111" r="1" fill="#171D24"/>
+<circle cx="191" cy="103" r="1" fill="#171D24"/>
+<circle cx="191" cy="111" r="1" fill="#171D24"/>
+<circle cx="199" cy="103" r="1" fill="#171D24"/>
+<circle cx="199" cy="111" r="1" fill="#171D24"/>
+<circle cx="207" cy="103" r="1" fill="#171D24"/>
+<circle cx="207" cy="111" r="1" fill="#171D24"/>
+<circle cx="215" cy="103" r="1" fill="#171D24"/>
+<circle cx="215" cy="111" r="1" fill="#171D24"/>
+<circle cx="223" cy="103" r="1" fill="#171D24"/>
+<circle cx="223" cy="111" r="1" fill="#171D24"/>
+<circle cx="231" cy="103" r="1" fill="#171D24"/>
+<circle cx="231" cy="111" r="1" fill="#171D24"/>
+<circle cx="239" cy="103" r="1" fill="#171D24"/>
+<circle cx="239" cy="111" r="1" fill="#171D24"/>
+<circle cx="247" cy="103" r="1" fill="#171D24"/>
+<circle cx="247" cy="111" r="1" fill="#171D24"/>
+<circle cx="255" cy="103" r="1" fill="#171D24"/>
+<circle cx="255" cy="111" r="1" fill="#171D24"/>
+<circle cx="263" cy="103" r="1" fill="#171D24"/>
+<circle cx="263" cy="111" r="1" fill="#171D24"/>
+<circle cx="271" cy="103" r="1" fill="#171D24"/>
+<circle cx="271" cy="111" r="1" fill="#171D24"/>
+<circle cx="279" cy="103" r="1" fill="#171D24"/>
+<circle cx="279" cy="111" r="1" fill="#171D24"/>
+<circle cx="287" cy="103" r="1" fill="#171D24"/>
+<circle cx="287" cy="111" r="1" fill="#171D24"/>
+<circle cx="295" cy="103" r="1" fill="#171D24"/>
+<circle cx="295" cy="111" r="1" fill="#171D24"/>
+<circle cx="303" cy="103" r="1" fill="#171D24"/>
+<circle cx="303" cy="111" r="1" fill="#171D24"/>
+<circle cx="311" cy="103" r="1" fill="#171D24"/>
+<circle cx="311" cy="111" r="1" fill="#171D24"/>
+<circle cx="319" cy="103" r="1" fill="#171D24"/>
+<circle cx="319" cy="111" r="1" fill="#171D24"/>
+<circle cx="327" cy="103" r="1" fill="#171D24"/>
+<circle cx="327" cy="111" r="1" fill="#171D24"/>
+<circle cx="335" cy="103" r="1" fill="#171D24"/>
+<circle cx="335" cy="111" r="1" fill="#171D24"/>
+<circle cx="343" cy="103" r="1" fill="#171D24"/>
+<circle cx="343" cy="111" r="1" fill="#171D24"/>
+<circle cx="351" cy="103" r="1" fill="#171D24"/>
+<circle cx="351" cy="111" r="1" fill="#171D24"/>
+<circle cx="359" cy="103" r="1" fill="#171D24"/>
+<circle cx="359" cy="111" r="1" fill="#171D24"/>
+<circle cx="367" cy="103" r="1" fill="#171D24"/>
+<circle cx="367" cy="111" r="1" fill="#171D24"/>
+<circle cx="7" cy="119" r="1" fill="#171D24"/>
+<circle cx="7" cy="127" r="1" fill="#171D24"/>
+<circle cx="15" cy="119" r="1" fill="#171D24"/>
+<circle cx="15" cy="127" r="1" fill="#171D24"/>
+<circle cx="23" cy="119" r="1" fill="#171D24"/>
+<circle cx="23" cy="127" r="1" fill="#171D24"/>
+<circle cx="31" cy="119" r="1" fill="#171D24"/>
+<circle cx="31" cy="127" r="1" fill="#171D24"/>
+<circle cx="39" cy="119" r="1" fill="#171D24"/>
+<circle cx="39" cy="127" r="1" fill="#171D24"/>
+<circle cx="47" cy="119" r="1" fill="#171D24"/>
+<circle cx="47" cy="127" r="1" fill="#171D24"/>
+<circle cx="55" cy="119" r="1" fill="#171D24"/>
+<circle cx="55" cy="127" r="1" fill="#171D24"/>
+<circle cx="63" cy="119" r="1" fill="#171D24"/>
+<circle cx="63" cy="127" r="1" fill="#171D24"/>
+<circle cx="71" cy="119" r="1" fill="#171D24"/>
+<circle cx="71" cy="127" r="1" fill="#171D24"/>
+<circle cx="79" cy="119" r="1" fill="#171D24"/>
+<circle cx="79" cy="127" r="1" fill="#171D24"/>
+<circle cx="87" cy="119" r="1" fill="#171D24"/>
+<circle cx="87" cy="127" r="1" fill="#171D24"/>
+<circle cx="95" cy="119" r="1" fill="#171D24"/>
+<circle cx="95" cy="127" r="1" fill="#171D24"/>
+<circle cx="103" cy="119" r="1" fill="#171D24"/>
+<circle cx="103" cy="127" r="1" fill="#171D24"/>
+<circle cx="111" cy="119" r="1" fill="#171D24"/>
+<circle cx="111" cy="127" r="1" fill="#171D24"/>
+<circle cx="119" cy="119" r="1" fill="#171D24"/>
+<circle cx="119" cy="127" r="1" fill="#171D24"/>
+<circle cx="127" cy="119" r="1" fill="#171D24"/>
+<circle cx="127" cy="127" r="1" fill="#171D24"/>
+<circle cx="135" cy="119" r="1" fill="#171D24"/>
+<circle cx="135" cy="127" r="1" fill="#171D24"/>
+<circle cx="143" cy="119" r="1" fill="#171D24"/>
+<circle cx="143" cy="127" r="1" fill="#171D24"/>
+<circle cx="151" cy="119" r="1" fill="#171D24"/>
+<circle cx="151" cy="127" r="1" fill="#171D24"/>
+<circle cx="159" cy="119" r="1" fill="#171D24"/>
+<circle cx="159" cy="127" r="1" fill="#171D24"/>
+<circle cx="167" cy="119" r="1" fill="#171D24"/>
+<circle cx="167" cy="127" r="1" fill="#171D24"/>
+<circle cx="175" cy="119" r="1" fill="#171D24"/>
+<circle cx="175" cy="127" r="1" fill="#171D24"/>
+<circle cx="183" cy="119" r="1" fill="#171D24"/>
+<circle cx="183" cy="127" r="1" fill="#171D24"/>
+<circle cx="191" cy="119" r="1" fill="#171D24"/>
+<circle cx="191" cy="127" r="1" fill="#171D24"/>
+<circle cx="199" cy="119" r="1" fill="#171D24"/>
+<circle cx="199" cy="127" r="1" fill="#171D24"/>
+<circle cx="207" cy="119" r="1" fill="#171D24"/>
+<circle cx="207" cy="127" r="1" fill="#171D24"/>
+<circle cx="215" cy="119" r="1" fill="#171D24"/>
+<circle cx="215" cy="127" r="1" fill="#171D24"/>
+<circle cx="223" cy="119" r="1" fill="#171D24"/>
+<circle cx="223" cy="127" r="1" fill="#171D24"/>
+<circle cx="231" cy="119" r="1" fill="#171D24"/>
+<circle cx="231" cy="127" r="1" fill="#171D24"/>
+<circle cx="239" cy="119" r="1" fill="#171D24"/>
+<circle cx="239" cy="127" r="1" fill="#171D24"/>
+<circle cx="247" cy="119" r="1" fill="#171D24"/>
+<circle cx="247" cy="127" r="1" fill="#171D24"/>
+<circle cx="255" cy="119" r="1" fill="#171D24"/>
+<circle cx="255" cy="127" r="1" fill="#171D24"/>
+<circle cx="263" cy="119" r="1" fill="#171D24"/>
+<circle cx="263" cy="127" r="1" fill="#171D24"/>
+<circle cx="271" cy="119" r="1" fill="#171D24"/>
+<circle cx="271" cy="127" r="1" fill="#171D24"/>
+<circle cx="279" cy="119" r="1" fill="#171D24"/>
+<circle cx="279" cy="127" r="1" fill="#171D24"/>
+<circle cx="287" cy="119" r="1" fill="#171D24"/>
+<circle cx="287" cy="127" r="1" fill="#171D24"/>
+<circle cx="295" cy="119" r="1" fill="#171D24"/>
+<circle cx="295" cy="127" r="1" fill="#171D24"/>
+<circle cx="303" cy="119" r="1" fill="#171D24"/>
+<circle cx="303" cy="127" r="1" fill="#171D24"/>
+<circle cx="311" cy="119" r="1" fill="#171D24"/>
+<circle cx="311" cy="127" r="1" fill="#171D24"/>
+<circle cx="319" cy="119" r="1" fill="#171D24"/>
+<circle cx="319" cy="127" r="1" fill="#171D24"/>
+<circle cx="327" cy="119" r="1" fill="#171D24"/>
+<circle cx="327" cy="127" r="1" fill="#171D24"/>
+<circle cx="335" cy="119" r="1" fill="#171D24"/>
+<circle cx="335" cy="127" r="1" fill="#171D24"/>
+<circle cx="343" cy="119" r="1" fill="#171D24"/>
+<circle cx="343" cy="127" r="1" fill="#171D24"/>
+<circle cx="351" cy="119" r="1" fill="#171D24"/>
+<circle cx="351" cy="127" r="1" fill="#171D24"/>
+<circle cx="359" cy="119" r="1" fill="#171D24"/>
+<circle cx="359" cy="127" r="1" fill="#171D24"/>
+<circle cx="367" cy="119" r="1" fill="#171D24"/>
+<circle cx="367" cy="127" r="1" fill="#171D24"/>
+<circle cx="7" cy="135" r="1" fill="#171D24"/>
+<circle cx="7" cy="143" r="1" fill="#171D24"/>
+<circle cx="15" cy="135" r="1" fill="#171D24"/>
+<circle cx="15" cy="143" r="1" fill="#171D24"/>
+<circle cx="23" cy="135" r="1" fill="#171D24"/>
+<circle cx="23" cy="143" r="1" fill="#171D24"/>
+<circle cx="31" cy="135" r="1" fill="#171D24"/>
+<circle cx="31" cy="143" r="1" fill="#171D24"/>
+<circle cx="39" cy="135" r="1" fill="#171D24"/>
+<circle cx="39" cy="143" r="1" fill="#171D24"/>
+<circle cx="47" cy="135" r="1" fill="#171D24"/>
+<circle cx="47" cy="143" r="1" fill="#171D24"/>
+<circle cx="55" cy="135" r="1" fill="#171D24"/>
+<circle cx="55" cy="143" r="1" fill="#171D24"/>
+<circle cx="63" cy="135" r="1" fill="#171D24"/>
+<circle cx="63" cy="143" r="1" fill="#171D24"/>
+<circle cx="71" cy="135" r="1" fill="#171D24"/>
+<circle cx="71" cy="143" r="1" fill="#171D24"/>
+<circle cx="79" cy="135" r="1" fill="#171D24"/>
+<circle cx="79" cy="143" r="1" fill="#171D24"/>
+<circle cx="87" cy="135" r="1" fill="#171D24"/>
+<circle cx="87" cy="143" r="1" fill="#171D24"/>
+<circle cx="95" cy="135" r="1" fill="#171D24"/>
+<circle cx="95" cy="143" r="1" fill="#171D24"/>
+<circle cx="103" cy="135" r="1" fill="#171D24"/>
+<circle cx="103" cy="143" r="1" fill="#171D24"/>
+<circle cx="111" cy="135" r="1" fill="#171D24"/>
+<circle cx="111" cy="143" r="1" fill="#171D24"/>
+<circle cx="119" cy="135" r="1" fill="#171D24"/>
+<circle cx="119" cy="143" r="1" fill="#171D24"/>
+<circle cx="127" cy="135" r="1" fill="#171D24"/>
+<circle cx="127" cy="143" r="1" fill="#171D24"/>
+<circle cx="135" cy="135" r="1" fill="#171D24"/>
+<circle cx="135" cy="143" r="1" fill="#171D24"/>
+<circle cx="143" cy="135" r="1" fill="#171D24"/>
+<circle cx="143" cy="143" r="1" fill="#171D24"/>
+<circle cx="151" cy="135" r="1" fill="#171D24"/>
+<circle cx="151" cy="143" r="1" fill="#171D24"/>
+<circle cx="159" cy="135" r="1" fill="#171D24"/>
+<circle cx="159" cy="143" r="1" fill="#171D24"/>
+<circle cx="167" cy="135" r="1" fill="#171D24"/>
+<circle cx="167" cy="143" r="1" fill="#171D24"/>
+<circle cx="175" cy="135" r="1" fill="#171D24"/>
+<circle cx="175" cy="143" r="1" fill="#171D24"/>
+<circle cx="183" cy="135" r="1" fill="#171D24"/>
+<circle cx="183" cy="143" r="1" fill="#171D24"/>
+<circle cx="191" cy="135" r="1" fill="#171D24"/>
+<circle cx="191" cy="143" r="1" fill="#171D24"/>
+<circle cx="199" cy="135" r="1" fill="#171D24"/>
+<circle cx="199" cy="143" r="1" fill="#171D24"/>
+<circle cx="207" cy="135" r="1" fill="#171D24"/>
+<circle cx="207" cy="143" r="1" fill="#171D24"/>
+<circle cx="215" cy="135" r="1" fill="#171D24"/>
+<circle cx="215" cy="143" r="1" fill="#171D24"/>
+<circle cx="223" cy="135" r="1" fill="#171D24"/>
+<circle cx="223" cy="143" r="1" fill="#171D24"/>
+<circle cx="231" cy="135" r="1" fill="#171D24"/>
+<circle cx="231" cy="143" r="1" fill="#171D24"/>
+<circle cx="239" cy="135" r="1" fill="#171D24"/>
+<circle cx="239" cy="143" r="1" fill="#171D24"/>
+<circle cx="247" cy="135" r="1" fill="#171D24"/>
+<circle cx="247" cy="143" r="1" fill="#171D24"/>
+<circle cx="255" cy="135" r="1" fill="#171D24"/>
+<circle cx="255" cy="143" r="1" fill="#171D24"/>
+<circle cx="263" cy="135" r="1" fill="#171D24"/>
+<circle cx="263" cy="143" r="1" fill="#171D24"/>
+<circle cx="271" cy="135" r="1" fill="#171D24"/>
+<circle cx="271" cy="143" r="1" fill="#171D24"/>
+<circle cx="279" cy="135" r="1" fill="#171D24"/>
+<circle cx="279" cy="143" r="1" fill="#171D24"/>
+<circle cx="287" cy="135" r="1" fill="#171D24"/>
+<circle cx="287" cy="143" r="1" fill="#171D24"/>
+<circle cx="295" cy="135" r="1" fill="#171D24"/>
+<circle cx="295" cy="143" r="1" fill="#171D24"/>
+<circle cx="303" cy="135" r="1" fill="#171D24"/>
+<circle cx="303" cy="143" r="1" fill="#171D24"/>
+<circle cx="311" cy="135" r="1" fill="#171D24"/>
+<circle cx="311" cy="143" r="1" fill="#171D24"/>
+<circle cx="319" cy="135" r="1" fill="#171D24"/>
+<circle cx="319" cy="143" r="1" fill="#171D24"/>
+<circle cx="327" cy="135" r="1" fill="#171D24"/>
+<circle cx="327" cy="143" r="1" fill="#171D24"/>
+<circle cx="335" cy="135" r="1" fill="#171D24"/>
+<circle cx="335" cy="143" r="1" fill="#171D24"/>
+<circle cx="343" cy="135" r="1" fill="#171D24"/>
+<circle cx="343" cy="143" r="1" fill="#171D24"/>
+<circle cx="351" cy="135" r="1" fill="#171D24"/>
+<circle cx="351" cy="143" r="1" fill="#171D24"/>
+<circle cx="359" cy="135" r="1" fill="#171D24"/>
+<circle cx="359" cy="143" r="1" fill="#171D24"/>
+<circle cx="367" cy="135" r="1" fill="#171D24"/>
+<circle cx="367" cy="143" r="1" fill="#171D24"/>
+<circle cx="7" cy="151" r="1" fill="#171D24"/>
+<circle cx="7" cy="159" r="1" fill="#171D24"/>
+<circle cx="15" cy="151" r="1" fill="#171D24"/>
+<circle cx="15" cy="159" r="1" fill="#171D24"/>
+<circle cx="23" cy="151" r="1" fill="#171D24"/>
+<circle cx="23" cy="159" r="1" fill="#171D24"/>
+<circle cx="31" cy="151" r="1" fill="#171D24"/>
+<circle cx="31" cy="159" r="1" fill="#171D24"/>
+<circle cx="39" cy="151" r="1" fill="#171D24"/>
+<circle cx="39" cy="159" r="1" fill="#171D24"/>
+<circle cx="47" cy="151" r="1" fill="#171D24"/>
+<circle cx="47" cy="159" r="1" fill="#171D24"/>
+<circle cx="55" cy="151" r="1" fill="#171D24"/>
+<circle cx="55" cy="159" r="1" fill="#171D24"/>
+<circle cx="63" cy="151" r="1" fill="#171D24"/>
+<circle cx="63" cy="159" r="1" fill="#171D24"/>
+<circle cx="71" cy="151" r="1" fill="#171D24"/>
+<circle cx="71" cy="159" r="1" fill="#171D24"/>
+<circle cx="79" cy="151" r="1" fill="#171D24"/>
+<circle cx="79" cy="159" r="1" fill="#171D24"/>
+<circle cx="87" cy="151" r="1" fill="#171D24"/>
+<circle cx="87" cy="159" r="1" fill="#171D24"/>
+<circle cx="95" cy="151" r="1" fill="#171D24"/>
+<circle cx="95" cy="159" r="1" fill="#171D24"/>
+<circle cx="103" cy="151" r="1" fill="#171D24"/>
+<circle cx="103" cy="159" r="1" fill="#171D24"/>
+<circle cx="111" cy="151" r="1" fill="#171D24"/>
+<circle cx="111" cy="159" r="1" fill="#171D24"/>
+<circle cx="119" cy="151" r="1" fill="#171D24"/>
+<circle cx="119" cy="159" r="1" fill="#171D24"/>
+<circle cx="127" cy="151" r="1" fill="#171D24"/>
+<circle cx="127" cy="159" r="1" fill="#171D24"/>
+<circle cx="135" cy="151" r="1" fill="#171D24"/>
+<circle cx="135" cy="159" r="1" fill="#171D24"/>
+<circle cx="143" cy="151" r="1" fill="#171D24"/>
+<circle cx="143" cy="159" r="1" fill="#171D24"/>
+<circle cx="151" cy="151" r="1" fill="#171D24"/>
+<circle cx="151" cy="159" r="1" fill="#171D24"/>
+<circle cx="159" cy="151" r="1" fill="#171D24"/>
+<circle cx="159" cy="159" r="1" fill="#171D24"/>
+<circle cx="167" cy="151" r="1" fill="#171D24"/>
+<circle cx="167" cy="159" r="1" fill="#171D24"/>
+<circle cx="175" cy="151" r="1" fill="#171D24"/>
+<circle cx="175" cy="159" r="1" fill="#171D24"/>
+<circle cx="183" cy="151" r="1" fill="#171D24"/>
+<circle cx="183" cy="159" r="1" fill="#171D24"/>
+<circle cx="191" cy="151" r="1" fill="#171D24"/>
+<circle cx="191" cy="159" r="1" fill="#171D24"/>
+<circle cx="199" cy="151" r="1" fill="#171D24"/>
+<circle cx="199" cy="159" r="1" fill="#171D24"/>
+<circle cx="207" cy="151" r="1" fill="#171D24"/>
+<circle cx="207" cy="159" r="1" fill="#171D24"/>
+<circle cx="215" cy="151" r="1" fill="#171D24"/>
+<circle cx="215" cy="159" r="1" fill="#171D24"/>
+<circle cx="223" cy="151" r="1" fill="#171D24"/>
+<circle cx="223" cy="159" r="1" fill="#171D24"/>
+<circle cx="231" cy="151" r="1" fill="#171D24"/>
+<circle cx="231" cy="159" r="1" fill="#171D24"/>
+<circle cx="239" cy="151" r="1" fill="#171D24"/>
+<circle cx="239" cy="159" r="1" fill="#171D24"/>
+<circle cx="247" cy="151" r="1" fill="#171D24"/>
+<circle cx="247" cy="159" r="1" fill="#171D24"/>
+<circle cx="255" cy="151" r="1" fill="#171D24"/>
+<circle cx="255" cy="159" r="1" fill="#171D24"/>
+<circle cx="263" cy="151" r="1" fill="#171D24"/>
+<circle cx="263" cy="159" r="1" fill="#171D24"/>
+<circle cx="271" cy="151" r="1" fill="#171D24"/>
+<circle cx="271" cy="159" r="1" fill="#171D24"/>
+<circle cx="279" cy="151" r="1" fill="#171D24"/>
+<circle cx="279" cy="159" r="1" fill="#171D24"/>
+<circle cx="287" cy="151" r="1" fill="#171D24"/>
+<circle cx="287" cy="159" r="1" fill="#171D24"/>
+<circle cx="295" cy="151" r="1" fill="#171D24"/>
+<circle cx="295" cy="159" r="1" fill="#171D24"/>
+<circle cx="303" cy="151" r="1" fill="#171D24"/>
+<circle cx="303" cy="159" r="1" fill="#171D24"/>
+<circle cx="311" cy="151" r="1" fill="#171D24"/>
+<circle cx="311" cy="159" r="1" fill="#171D24"/>
+<circle cx="319" cy="151" r="1" fill="#171D24"/>
+<circle cx="319" cy="159" r="1" fill="#171D24"/>
+<circle cx="327" cy="151" r="1" fill="#171D24"/>
+<circle cx="327" cy="159" r="1" fill="#171D24"/>
+<circle cx="335" cy="151" r="1" fill="#171D24"/>
+<circle cx="335" cy="159" r="1" fill="#171D24"/>
+<circle cx="343" cy="151" r="1" fill="#171D24"/>
+<circle cx="343" cy="159" r="1" fill="#171D24"/>
+<circle cx="351" cy="151" r="1" fill="#171D24"/>
+<circle cx="351" cy="159" r="1" fill="#171D24"/>
+<circle cx="359" cy="151" r="1" fill="#171D24"/>
+<circle cx="359" cy="159" r="1" fill="#171D24"/>
+<circle cx="367" cy="151" r="1" fill="#171D24"/>
+<circle cx="367" cy="159" r="1" fill="#171D24"/>
+<circle cx="7" cy="167" r="1" fill="#171D24"/>
+<circle cx="7" cy="175" r="1" fill="#171D24"/>
+<circle cx="15" cy="167" r="1" fill="#171D24"/>
+<circle cx="15" cy="175" r="1" fill="#171D24"/>
+<circle cx="23" cy="167" r="1" fill="#171D24"/>
+<circle cx="23" cy="175" r="1" fill="#171D24"/>
+<circle cx="31" cy="167" r="1" fill="#171D24"/>
+<circle cx="31" cy="175" r="1" fill="#171D24"/>
+<circle cx="39" cy="167" r="1" fill="#171D24"/>
+<circle cx="39" cy="175" r="1" fill="#171D24"/>
+<circle cx="47" cy="167" r="1" fill="#171D24"/>
+<circle cx="47" cy="175" r="1" fill="#171D24"/>
+<circle cx="55" cy="167" r="1" fill="#171D24"/>
+<circle cx="55" cy="175" r="1" fill="#171D24"/>
+<circle cx="63" cy="167" r="1" fill="#171D24"/>
+<circle cx="63" cy="175" r="1" fill="#171D24"/>
+<circle cx="71" cy="167" r="1" fill="#171D24"/>
+<circle cx="71" cy="175" r="1" fill="#171D24"/>
+<circle cx="79" cy="167" r="1" fill="#171D24"/>
+<circle cx="79" cy="175" r="1" fill="#171D24"/>
+<circle cx="87" cy="167" r="1" fill="#171D24"/>
+<circle cx="87" cy="175" r="1" fill="#171D24"/>
+<circle cx="95" cy="167" r="1" fill="#171D24"/>
+<circle cx="95" cy="175" r="1" fill="#171D24"/>
+<circle cx="103" cy="167" r="1" fill="#171D24"/>
+<circle cx="103" cy="175" r="1" fill="#171D24"/>
+<circle cx="111" cy="167" r="1" fill="#171D24"/>
+<circle cx="111" cy="175" r="1" fill="#171D24"/>
+<circle cx="119" cy="167" r="1" fill="#171D24"/>
+<circle cx="119" cy="175" r="1" fill="#171D24"/>
+<circle cx="127" cy="167" r="1" fill="#171D24"/>
+<circle cx="127" cy="175" r="1" fill="#171D24"/>
+<circle cx="135" cy="167" r="1" fill="#171D24"/>
+<circle cx="135" cy="175" r="1" fill="#171D24"/>
+<circle cx="143" cy="167" r="1" fill="#171D24"/>
+<circle cx="143" cy="175" r="1" fill="#171D24"/>
+<circle cx="151" cy="167" r="1" fill="#171D24"/>
+<circle cx="151" cy="175" r="1" fill="#171D24"/>
+<circle cx="159" cy="167" r="1" fill="#171D24"/>
+<circle cx="159" cy="175" r="1" fill="#171D24"/>
+<circle cx="167" cy="167" r="1" fill="#171D24"/>
+<circle cx="167" cy="175" r="1" fill="#171D24"/>
+<circle cx="175" cy="167" r="1" fill="#171D24"/>
+<circle cx="175" cy="175" r="1" fill="#171D24"/>
+<circle cx="183" cy="167" r="1" fill="#171D24"/>
+<circle cx="183" cy="175" r="1" fill="#171D24"/>
+<circle cx="191" cy="167" r="1" fill="#171D24"/>
+<circle cx="191" cy="175" r="1" fill="#171D24"/>
+<circle cx="199" cy="167" r="1" fill="#171D24"/>
+<circle cx="199" cy="175" r="1" fill="#171D24"/>
+<circle cx="207" cy="167" r="1" fill="#171D24"/>
+<circle cx="207" cy="175" r="1" fill="#171D24"/>
+<circle cx="215" cy="167" r="1" fill="#171D24"/>
+<circle cx="215" cy="175" r="1" fill="#171D24"/>
+<circle cx="223" cy="167" r="1" fill="#171D24"/>
+<circle cx="223" cy="175" r="1" fill="#171D24"/>
+<circle cx="231" cy="167" r="1" fill="#171D24"/>
+<circle cx="231" cy="175" r="1" fill="#171D24"/>
+<circle cx="239" cy="167" r="1" fill="#171D24"/>
+<circle cx="239" cy="175" r="1" fill="#171D24"/>
+<circle cx="247" cy="167" r="1" fill="#171D24"/>
+<circle cx="247" cy="175" r="1" fill="#171D24"/>
+<circle cx="255" cy="167" r="1" fill="#171D24"/>
+<circle cx="255" cy="175" r="1" fill="#171D24"/>
+<circle cx="263" cy="167" r="1" fill="#171D24"/>
+<circle cx="263" cy="175" r="1" fill="#171D24"/>
+<circle cx="271" cy="167" r="1" fill="#171D24"/>
+<circle cx="271" cy="175" r="1" fill="#171D24"/>
+<circle cx="279" cy="167" r="1" fill="#171D24"/>
+<circle cx="279" cy="175" r="1" fill="#171D24"/>
+<circle cx="287" cy="167" r="1" fill="#171D24"/>
+<circle cx="287" cy="175" r="1" fill="#171D24"/>
+<circle cx="295" cy="167" r="1" fill="#171D24"/>
+<circle cx="295" cy="175" r="1" fill="#171D24"/>
+<circle cx="303" cy="167" r="1" fill="#171D24"/>
+<circle cx="303" cy="175" r="1" fill="#171D24"/>
+<circle cx="311" cy="167" r="1" fill="#171D24"/>
+<circle cx="311" cy="175" r="1" fill="#171D24"/>
+<circle cx="319" cy="167" r="1" fill="#171D24"/>
+<circle cx="319" cy="175" r="1" fill="#171D24"/>
+<circle cx="327" cy="167" r="1" fill="#171D24"/>
+<circle cx="327" cy="175" r="1" fill="#171D24"/>
+<circle cx="335" cy="167" r="1" fill="#171D24"/>
+<circle cx="335" cy="175" r="1" fill="#171D24"/>
+<circle cx="343" cy="167" r="1" fill="#171D24"/>
+<circle cx="343" cy="175" r="1" fill="#171D24"/>
+<circle cx="351" cy="167" r="1" fill="#171D24"/>
+<circle cx="351" cy="175" r="1" fill="#171D24"/>
+<circle cx="359" cy="167" r="1" fill="#171D24"/>
+<circle cx="359" cy="175" r="1" fill="#171D24"/>
+<circle cx="367" cy="167" r="1" fill="#171D24"/>
+<circle cx="367" cy="175" r="1" fill="#171D24"/>
+<circle cx="7" cy="183" r="1" fill="#171D24"/>
+<circle cx="7" cy="191" r="1" fill="#171D24"/>
+<circle cx="15" cy="183" r="1" fill="#171D24"/>
+<circle cx="15" cy="191" r="1" fill="#171D24"/>
+<circle cx="23" cy="183" r="1" fill="#171D24"/>
+<circle cx="23" cy="191" r="1" fill="#171D24"/>
+<circle cx="31" cy="183" r="1" fill="#171D24"/>
+<circle cx="31" cy="191" r="1" fill="#171D24"/>
+<circle cx="39" cy="183" r="1" fill="#171D24"/>
+<circle cx="39" cy="191" r="1" fill="#171D24"/>
+<circle cx="47" cy="183" r="1" fill="#171D24"/>
+<circle cx="47" cy="191" r="1" fill="#171D24"/>
+<circle cx="55" cy="183" r="1" fill="#171D24"/>
+<circle cx="55" cy="191" r="1" fill="#171D24"/>
+<circle cx="63" cy="183" r="1" fill="#171D24"/>
+<circle cx="63" cy="191" r="1" fill="#171D24"/>
+<circle cx="71" cy="183" r="1" fill="#171D24"/>
+<circle cx="71" cy="191" r="1" fill="#171D24"/>
+<circle cx="79" cy="183" r="1" fill="#171D24"/>
+<circle cx="79" cy="191" r="1" fill="#171D24"/>
+<circle cx="87" cy="183" r="1" fill="#171D24"/>
+<circle cx="87" cy="191" r="1" fill="#171D24"/>
+<circle cx="95" cy="183" r="1" fill="#171D24"/>
+<circle cx="95" cy="191" r="1" fill="#171D24"/>
+<circle cx="103" cy="183" r="1" fill="#171D24"/>
+<circle cx="103" cy="191" r="1" fill="#171D24"/>
+<circle cx="111" cy="183" r="1" fill="#171D24"/>
+<circle cx="111" cy="191" r="1" fill="#171D24"/>
+<circle cx="119" cy="183" r="1" fill="#171D24"/>
+<circle cx="119" cy="191" r="1" fill="#171D24"/>
+<circle cx="127" cy="183" r="1" fill="#171D24"/>
+<circle cx="127" cy="191" r="1" fill="#171D24"/>
+<circle cx="135" cy="183" r="1" fill="#171D24"/>
+<circle cx="135" cy="191" r="1" fill="#171D24"/>
+<circle cx="143" cy="183" r="1" fill="#171D24"/>
+<circle cx="143" cy="191" r="1" fill="#171D24"/>
+<circle cx="151" cy="183" r="1" fill="#171D24"/>
+<circle cx="151" cy="191" r="1" fill="#171D24"/>
+<circle cx="159" cy="183" r="1" fill="#171D24"/>
+<circle cx="159" cy="191" r="1" fill="#171D24"/>
+<circle cx="167" cy="183" r="1" fill="#171D24"/>
+<circle cx="167" cy="191" r="1" fill="#171D24"/>
+<circle cx="175" cy="183" r="1" fill="#171D24"/>
+<circle cx="175" cy="191" r="1" fill="#171D24"/>
+<circle cx="183" cy="183" r="1" fill="#171D24"/>
+<circle cx="183" cy="191" r="1" fill="#171D24"/>
+<circle cx="191" cy="183" r="1" fill="#171D24"/>
+<circle cx="191" cy="191" r="1" fill="#171D24"/>
+<circle cx="199" cy="183" r="1" fill="#171D24"/>
+<circle cx="199" cy="191" r="1" fill="#171D24"/>
+<circle cx="207" cy="183" r="1" fill="#171D24"/>
+<circle cx="207" cy="191" r="1" fill="#171D24"/>
+<circle cx="215" cy="183" r="1" fill="#171D24"/>
+<circle cx="215" cy="191" r="1" fill="#171D24"/>
+<circle cx="223" cy="183" r="1" fill="#171D24"/>
+<circle cx="223" cy="191" r="1" fill="#171D24"/>
+<circle cx="231" cy="183" r="1" fill="#171D24"/>
+<circle cx="231" cy="191" r="1" fill="#171D24"/>
+<circle cx="239" cy="183" r="1" fill="#171D24"/>
+<circle cx="239" cy="191" r="1" fill="#171D24"/>
+<circle cx="247" cy="183" r="1" fill="#171D24"/>
+<circle cx="247" cy="191" r="1" fill="#171D24"/>
+<circle cx="255" cy="183" r="1" fill="#171D24"/>
+<circle cx="255" cy="191" r="1" fill="#171D24"/>
+<circle cx="263" cy="183" r="1" fill="#171D24"/>
+<circle cx="263" cy="191" r="1" fill="#171D24"/>
+<circle cx="271" cy="183" r="1" fill="#171D24"/>
+<circle cx="271" cy="191" r="1" fill="#171D24"/>
+<circle cx="279" cy="183" r="1" fill="#171D24"/>
+<circle cx="279" cy="191" r="1" fill="#171D24"/>
+<circle cx="287" cy="183" r="1" fill="#171D24"/>
+<circle cx="287" cy="191" r="1" fill="#171D24"/>
+<circle cx="295" cy="183" r="1" fill="#171D24"/>
+<circle cx="295" cy="191" r="1" fill="#171D24"/>
+<circle cx="303" cy="183" r="1" fill="#171D24"/>
+<circle cx="303" cy="191" r="1" fill="#171D24"/>
+<circle cx="311" cy="183" r="1" fill="#171D24"/>
+<circle cx="311" cy="191" r="1" fill="#171D24"/>
+<circle cx="319" cy="183" r="1" fill="#171D24"/>
+<circle cx="319" cy="191" r="1" fill="#171D24"/>
+<circle cx="327" cy="183" r="1" fill="#171D24"/>
+<circle cx="327" cy="191" r="1" fill="#171D24"/>
+<circle cx="335" cy="183" r="1" fill="#171D24"/>
+<circle cx="335" cy="191" r="1" fill="#171D24"/>
+<circle cx="343" cy="183" r="1" fill="#171D24"/>
+<circle cx="343" cy="191" r="1" fill="#171D24"/>
+<circle cx="351" cy="183" r="1" fill="#171D24"/>
+<circle cx="351" cy="191" r="1" fill="#171D24"/>
+<circle cx="359" cy="183" r="1" fill="#171D24"/>
+<circle cx="359" cy="191" r="1" fill="#171D24"/>
+<circle cx="367" cy="183" r="1" fill="#171D24"/>
+<circle cx="367" cy="191" r="1" fill="#171D24"/>
+<circle cx="7" cy="199" r="1" fill="#171D24"/>
+<circle cx="7" cy="207" r="1" fill="#171D24"/>
+<circle cx="15" cy="199" r="1" fill="#171D24"/>
+<circle cx="15" cy="207" r="1" fill="#171D24"/>
+<circle cx="23" cy="199" r="1" fill="#171D24"/>
+<circle cx="23" cy="207" r="1" fill="#171D24"/>
+<circle cx="31" cy="199" r="1" fill="#171D24"/>
+<circle cx="31" cy="207" r="1" fill="#171D24"/>
+<circle cx="39" cy="199" r="1" fill="#171D24"/>
+<circle cx="39" cy="207" r="1" fill="#171D24"/>
+<circle cx="47" cy="199" r="1" fill="#171D24"/>
+<circle cx="47" cy="207" r="1" fill="#171D24"/>
+<circle cx="55" cy="199" r="1" fill="#171D24"/>
+<circle cx="55" cy="207" r="1" fill="#171D24"/>
+<circle cx="63" cy="199" r="1" fill="#171D24"/>
+<circle cx="63" cy="207" r="1" fill="#171D24"/>
+<circle cx="71" cy="199" r="1" fill="#171D24"/>
+<circle cx="71" cy="207" r="1" fill="#171D24"/>
+<circle cx="79" cy="199" r="1" fill="#171D24"/>
+<circle cx="79" cy="207" r="1" fill="#171D24"/>
+<circle cx="87" cy="199" r="1" fill="#171D24"/>
+<circle cx="87" cy="207" r="1" fill="#171D24"/>
+<circle cx="95" cy="199" r="1" fill="#171D24"/>
+<circle cx="95" cy="207" r="1" fill="#171D24"/>
+<circle cx="103" cy="199" r="1" fill="#171D24"/>
+<circle cx="103" cy="207" r="1" fill="#171D24"/>
+<circle cx="111" cy="199" r="1" fill="#171D24"/>
+<circle cx="111" cy="207" r="1" fill="#171D24"/>
+<circle cx="119" cy="199" r="1" fill="#171D24"/>
+<circle cx="119" cy="207" r="1" fill="#171D24"/>
+<circle cx="127" cy="199" r="1" fill="#171D24"/>
+<circle cx="127" cy="207" r="1" fill="#171D24"/>
+<circle cx="135" cy="199" r="1" fill="#171D24"/>
+<circle cx="135" cy="207" r="1" fill="#171D24"/>
+<circle cx="143" cy="199" r="1" fill="#171D24"/>
+<circle cx="143" cy="207" r="1" fill="#171D24"/>
+<circle cx="151" cy="199" r="1" fill="#171D24"/>
+<circle cx="151" cy="207" r="1" fill="#171D24"/>
+<circle cx="159" cy="199" r="1" fill="#171D24"/>
+<circle cx="159" cy="207" r="1" fill="#171D24"/>
+<circle cx="167" cy="199" r="1" fill="#171D24"/>
+<circle cx="167" cy="207" r="1" fill="#171D24"/>
+<circle cx="175" cy="199" r="1" fill="#171D24"/>
+<circle cx="175" cy="207" r="1" fill="#171D24"/>
+<circle cx="183" cy="199" r="1" fill="#171D24"/>
+<circle cx="183" cy="207" r="1" fill="#171D24"/>
+<circle cx="191" cy="199" r="1" fill="#171D24"/>
+<circle cx="191" cy="207" r="1" fill="#171D24"/>
+<circle cx="199" cy="199" r="1" fill="#171D24"/>
+<circle cx="199" cy="207" r="1" fill="#171D24"/>
+<circle cx="207" cy="199" r="1" fill="#171D24"/>
+<circle cx="207" cy="207" r="1" fill="#171D24"/>
+<circle cx="215" cy="199" r="1" fill="#171D24"/>
+<circle cx="215" cy="207" r="1" fill="#171D24"/>
+<circle cx="223" cy="199" r="1" fill="#171D24"/>
+<circle cx="223" cy="207" r="1" fill="#171D24"/>
+<circle cx="231" cy="199" r="1" fill="#171D24"/>
+<circle cx="231" cy="207" r="1" fill="#171D24"/>
+<circle cx="239" cy="199" r="1" fill="#171D24"/>
+<circle cx="239" cy="207" r="1" fill="#171D24"/>
+<circle cx="247" cy="199" r="1" fill="#171D24"/>
+<circle cx="247" cy="207" r="1" fill="#171D24"/>
+<circle cx="255" cy="199" r="1" fill="#171D24"/>
+<circle cx="255" cy="207" r="1" fill="#171D24"/>
+<circle cx="263" cy="199" r="1" fill="#171D24"/>
+<circle cx="263" cy="207" r="1" fill="#171D24"/>
+<circle cx="271" cy="199" r="1" fill="#171D24"/>
+<circle cx="271" cy="207" r="1" fill="#171D24"/>
+<circle cx="279" cy="199" r="1" fill="#171D24"/>
+<circle cx="279" cy="207" r="1" fill="#171D24"/>
+<circle cx="287" cy="199" r="1" fill="#171D24"/>
+<circle cx="287" cy="207" r="1" fill="#171D24"/>
+<circle cx="295" cy="199" r="1" fill="#171D24"/>
+<circle cx="295" cy="207" r="1" fill="#171D24"/>
+<circle cx="303" cy="199" r="1" fill="#171D24"/>
+<circle cx="303" cy="207" r="1" fill="#171D24"/>
+<circle cx="311" cy="199" r="1" fill="#171D24"/>
+<circle cx="311" cy="207" r="1" fill="#171D24"/>
+<circle cx="319" cy="199" r="1" fill="#171D24"/>
+<circle cx="319" cy="207" r="1" fill="#171D24"/>
+<circle cx="327" cy="199" r="1" fill="#171D24"/>
+<circle cx="327" cy="207" r="1" fill="#171D24"/>
+<circle cx="335" cy="199" r="1" fill="#171D24"/>
+<circle cx="335" cy="207" r="1" fill="#171D24"/>
+<circle cx="343" cy="199" r="1" fill="#171D24"/>
+<circle cx="343" cy="207" r="1" fill="#171D24"/>
+<circle cx="351" cy="199" r="1" fill="#171D24"/>
+<circle cx="351" cy="207" r="1" fill="#171D24"/>
+<circle cx="359" cy="199" r="1" fill="#171D24"/>
+<circle cx="359" cy="207" r="1" fill="#171D24"/>
+<circle cx="367" cy="199" r="1" fill="#171D24"/>
+<circle cx="367" cy="207" r="1" fill="#171D24"/>
+<circle cx="7" cy="215" r="1" fill="#171D24"/>
+<circle cx="7" cy="223" r="1" fill="#171D24"/>
+<circle cx="15" cy="215" r="1" fill="#171D24"/>
+<circle cx="15" cy="223" r="1" fill="#171D24"/>
+<circle cx="23" cy="215" r="1" fill="#171D24"/>
+<circle cx="23" cy="223" r="1" fill="#171D24"/>
+<circle cx="31" cy="215" r="1" fill="#171D24"/>
+<circle cx="31" cy="223" r="1" fill="#171D24"/>
+<circle cx="39" cy="215" r="1" fill="#171D24"/>
+<circle cx="39" cy="223" r="1" fill="#171D24"/>
+<circle cx="47" cy="215" r="1" fill="#171D24"/>
+<circle cx="47" cy="223" r="1" fill="#171D24"/>
+<circle cx="55" cy="215" r="1" fill="#171D24"/>
+<circle cx="55" cy="223" r="1" fill="#171D24"/>
+<circle cx="63" cy="215" r="1" fill="#171D24"/>
+<circle cx="63" cy="223" r="1" fill="#171D24"/>
+<circle cx="71" cy="215" r="1" fill="#171D24"/>
+<circle cx="71" cy="223" r="1" fill="#171D24"/>
+<circle cx="79" cy="215" r="1" fill="#171D24"/>
+<circle cx="79" cy="223" r="1" fill="#171D24"/>
+<circle cx="87" cy="215" r="1" fill="#171D24"/>
+<circle cx="87" cy="223" r="1" fill="#171D24"/>
+<circle cx="95" cy="215" r="1" fill="#171D24"/>
+<circle cx="95" cy="223" r="1" fill="#171D24"/>
+<circle cx="103" cy="215" r="1" fill="#171D24"/>
+<circle cx="103" cy="223" r="1" fill="#171D24"/>
+<circle cx="111" cy="215" r="1" fill="#171D24"/>
+<circle cx="111" cy="223" r="1" fill="#171D24"/>
+<circle cx="119" cy="215" r="1" fill="#171D24"/>
+<circle cx="119" cy="223" r="1" fill="#171D24"/>
+<circle cx="127" cy="215" r="1" fill="#171D24"/>
+<circle cx="127" cy="223" r="1" fill="#171D24"/>
+<circle cx="135" cy="215" r="1" fill="#171D24"/>
+<circle cx="135" cy="223" r="1" fill="#171D24"/>
+<circle cx="143" cy="215" r="1" fill="#171D24"/>
+<circle cx="143" cy="223" r="1" fill="#171D24"/>
+<circle cx="151" cy="215" r="1" fill="#171D24"/>
+<circle cx="151" cy="223" r="1" fill="#171D24"/>
+<circle cx="159" cy="215" r="1" fill="#171D24"/>
+<circle cx="159" cy="223" r="1" fill="#171D24"/>
+<circle cx="167" cy="215" r="1" fill="#171D24"/>
+<circle cx="167" cy="223" r="1" fill="#171D24"/>
+<circle cx="175" cy="215" r="1" fill="#171D24"/>
+<circle cx="175" cy="223" r="1" fill="#171D24"/>
+<circle cx="183" cy="215" r="1" fill="#171D24"/>
+<circle cx="183" cy="223" r="1" fill="#171D24"/>
+<circle cx="191" cy="215" r="1" fill="#171D24"/>
+<circle cx="191" cy="223" r="1" fill="#171D24"/>
+<circle cx="199" cy="215" r="1" fill="#171D24"/>
+<circle cx="199" cy="223" r="1" fill="#171D24"/>
+<circle cx="207" cy="215" r="1" fill="#171D24"/>
+<circle cx="207" cy="223" r="1" fill="#171D24"/>
+<circle cx="215" cy="215" r="1" fill="#171D24"/>
+<circle cx="215" cy="223" r="1" fill="#171D24"/>
+<circle cx="223" cy="215" r="1" fill="#171D24"/>
+<circle cx="223" cy="223" r="1" fill="#171D24"/>
+<circle cx="231" cy="215" r="1" fill="#171D24"/>
+<circle cx="231" cy="223" r="1" fill="#171D24"/>
+<circle cx="239" cy="215" r="1" fill="#171D24"/>
+<circle cx="239" cy="223" r="1" fill="#171D24"/>
+<circle cx="247" cy="215" r="1" fill="#171D24"/>
+<circle cx="247" cy="223" r="1" fill="#171D24"/>
+<circle cx="255" cy="215" r="1" fill="#171D24"/>
+<circle cx="255" cy="223" r="1" fill="#171D24"/>
+<circle cx="263" cy="215" r="1" fill="#171D24"/>
+<circle cx="263" cy="223" r="1" fill="#171D24"/>
+<circle cx="271" cy="215" r="1" fill="#171D24"/>
+<circle cx="271" cy="223" r="1" fill="#171D24"/>
+<circle cx="279" cy="215" r="1" fill="#171D24"/>
+<circle cx="279" cy="223" r="1" fill="#171D24"/>
+<circle cx="287" cy="215" r="1" fill="#171D24"/>
+<circle cx="287" cy="223" r="1" fill="#171D24"/>
+<circle cx="295" cy="215" r="1" fill="#171D24"/>
+<circle cx="295" cy="223" r="1" fill="#171D24"/>
+<circle cx="303" cy="215" r="1" fill="#171D24"/>
+<circle cx="303" cy="223" r="1" fill="#171D24"/>
+<circle cx="311" cy="215" r="1" fill="#171D24"/>
+<circle cx="311" cy="223" r="1" fill="#171D24"/>
+<circle cx="319" cy="215" r="1" fill="#171D24"/>
+<circle cx="319" cy="223" r="1" fill="#171D24"/>
+<circle cx="327" cy="215" r="1" fill="#171D24"/>
+<circle cx="327" cy="223" r="1" fill="#171D24"/>
+<circle cx="335" cy="215" r="1" fill="#171D24"/>
+<circle cx="335" cy="223" r="1" fill="#171D24"/>
+<circle cx="343" cy="215" r="1" fill="#171D24"/>
+<circle cx="343" cy="223" r="1" fill="#171D24"/>
+<circle cx="351" cy="215" r="1" fill="#171D24"/>
+<circle cx="351" cy="223" r="1" fill="#171D24"/>
+<circle cx="359" cy="215" r="1" fill="#171D24"/>
+<circle cx="359" cy="223" r="1" fill="#171D24"/>
+<circle cx="367" cy="215" r="1" fill="#171D24"/>
+<circle cx="367" cy="223" r="1" fill="#171D24"/>
+<circle cx="7" cy="231" r="1" fill="#171D24"/>
+<circle cx="7" cy="239" r="1" fill="#171D24"/>
+<circle cx="15" cy="231" r="1" fill="#171D24"/>
+<circle cx="15" cy="239" r="1" fill="#171D24"/>
+<circle cx="23" cy="231" r="1" fill="#171D24"/>
+<circle cx="23" cy="239" r="1" fill="#171D24"/>
+<circle cx="31" cy="231" r="1" fill="#171D24"/>
+<circle cx="31" cy="239" r="1" fill="#171D24"/>
+<circle cx="39" cy="231" r="1" fill="#171D24"/>
+<circle cx="39" cy="239" r="1" fill="#171D24"/>
+<circle cx="47" cy="231" r="1" fill="#171D24"/>
+<circle cx="47" cy="239" r="1" fill="#171D24"/>
+<circle cx="55" cy="231" r="1" fill="#171D24"/>
+<circle cx="55" cy="239" r="1" fill="#171D24"/>
+<circle cx="63" cy="231" r="1" fill="#171D24"/>
+<circle cx="63" cy="239" r="1" fill="#171D24"/>
+<circle cx="71" cy="231" r="1" fill="#171D24"/>
+<circle cx="71" cy="239" r="1" fill="#171D24"/>
+<circle cx="79" cy="231" r="1" fill="#171D24"/>
+<circle cx="79" cy="239" r="1" fill="#171D24"/>
+<circle cx="87" cy="231" r="1" fill="#171D24"/>
+<circle cx="87" cy="239" r="1" fill="#171D24"/>
+<circle cx="95" cy="231" r="1" fill="#171D24"/>
+<circle cx="95" cy="239" r="1" fill="#171D24"/>
+<circle cx="103" cy="231" r="1" fill="#171D24"/>
+<circle cx="103" cy="239" r="1" fill="#171D24"/>
+<circle cx="111" cy="231" r="1" fill="#171D24"/>
+<circle cx="111" cy="239" r="1" fill="#171D24"/>
+<circle cx="119" cy="231" r="1" fill="#171D24"/>
+<circle cx="119" cy="239" r="1" fill="#171D24"/>
+<circle cx="127" cy="231" r="1" fill="#171D24"/>
+<circle cx="127" cy="239" r="1" fill="#171D24"/>
+<circle cx="135" cy="231" r="1" fill="#171D24"/>
+<circle cx="135" cy="239" r="1" fill="#171D24"/>
+<circle cx="143" cy="231" r="1" fill="#171D24"/>
+<circle cx="143" cy="239" r="1" fill="#171D24"/>
+<circle cx="151" cy="231" r="1" fill="#171D24"/>
+<circle cx="151" cy="239" r="1" fill="#171D24"/>
+<circle cx="159" cy="231" r="1" fill="#171D24"/>
+<circle cx="159" cy="239" r="1" fill="#171D24"/>
+<circle cx="167" cy="231" r="1" fill="#171D24"/>
+<circle cx="167" cy="239" r="1" fill="#171D24"/>
+<circle cx="175" cy="231" r="1" fill="#171D24"/>
+<circle cx="175" cy="239" r="1" fill="#171D24"/>
+<circle cx="183" cy="231" r="1" fill="#171D24"/>
+<circle cx="183" cy="239" r="1" fill="#171D24"/>
+<circle cx="191" cy="231" r="1" fill="#171D24"/>
+<circle cx="191" cy="239" r="1" fill="#171D24"/>
+<circle cx="199" cy="231" r="1" fill="#171D24"/>
+<circle cx="199" cy="239" r="1" fill="#171D24"/>
+<circle cx="207" cy="231" r="1" fill="#171D24"/>
+<circle cx="207" cy="239" r="1" fill="#171D24"/>
+<circle cx="215" cy="231" r="1" fill="#171D24"/>
+<circle cx="215" cy="239" r="1" fill="#171D24"/>
+<circle cx="223" cy="231" r="1" fill="#171D24"/>
+<circle cx="223" cy="239" r="1" fill="#171D24"/>
+<circle cx="231" cy="231" r="1" fill="#171D24"/>
+<circle cx="231" cy="239" r="1" fill="#171D24"/>
+<circle cx="239" cy="231" r="1" fill="#171D24"/>
+<circle cx="239" cy="239" r="1" fill="#171D24"/>
+<circle cx="247" cy="231" r="1" fill="#171D24"/>
+<circle cx="247" cy="239" r="1" fill="#171D24"/>
+<circle cx="255" cy="231" r="1" fill="#171D24"/>
+<circle cx="255" cy="239" r="1" fill="#171D24"/>
+<circle cx="263" cy="231" r="1" fill="#171D24"/>
+<circle cx="263" cy="239" r="1" fill="#171D24"/>
+<circle cx="271" cy="231" r="1" fill="#171D24"/>
+<circle cx="271" cy="239" r="1" fill="#171D24"/>
+<circle cx="279" cy="231" r="1" fill="#171D24"/>
+<circle cx="279" cy="239" r="1" fill="#171D24"/>
+<circle cx="287" cy="231" r="1" fill="#171D24"/>
+<circle cx="287" cy="239" r="1" fill="#171D24"/>
+<circle cx="295" cy="231" r="1" fill="#171D24"/>
+<circle cx="295" cy="239" r="1" fill="#171D24"/>
+<circle cx="303" cy="231" r="1" fill="#171D24"/>
+<circle cx="303" cy="239" r="1" fill="#171D24"/>
+<circle cx="311" cy="231" r="1" fill="#171D24"/>
+<circle cx="311" cy="239" r="1" fill="#171D24"/>
+<circle cx="319" cy="231" r="1" fill="#171D24"/>
+<circle cx="319" cy="239" r="1" fill="#171D24"/>
+<circle cx="327" cy="231" r="1" fill="#171D24"/>
+<circle cx="327" cy="239" r="1" fill="#171D24"/>
+<circle cx="335" cy="231" r="1" fill="#171D24"/>
+<circle cx="335" cy="239" r="1" fill="#171D24"/>
+<circle cx="343" cy="231" r="1" fill="#171D24"/>
+<circle cx="343" cy="239" r="1" fill="#171D24"/>
+<circle cx="351" cy="231" r="1" fill="#171D24"/>
+<circle cx="351" cy="239" r="1" fill="#171D24"/>
+<circle cx="359" cy="231" r="1" fill="#171D24"/>
+<circle cx="359" cy="239" r="1" fill="#171D24"/>
+<circle cx="367" cy="231" r="1" fill="#171D24"/>
+<circle cx="367" cy="239" r="1" fill="#171D24"/>
+<circle cx="7" cy="247" r="1" fill="#171D24"/>
+<circle cx="7" cy="255" r="1" fill="#171D24"/>
+<circle cx="15" cy="247" r="1" fill="#171D24"/>
+<circle cx="15" cy="255" r="1" fill="#171D24"/>
+<circle cx="23" cy="247" r="1" fill="#171D24"/>
+<circle cx="23" cy="255" r="1" fill="#171D24"/>
+<circle cx="31" cy="247" r="1" fill="#171D24"/>
+<circle cx="31" cy="255" r="1" fill="#171D24"/>
+<circle cx="39" cy="247" r="1" fill="#171D24"/>
+<circle cx="39" cy="255" r="1" fill="#171D24"/>
+<circle cx="47" cy="247" r="1" fill="#171D24"/>
+<circle cx="47" cy="255" r="1" fill="#171D24"/>
+<circle cx="55" cy="247" r="1" fill="#171D24"/>
+<circle cx="55" cy="255" r="1" fill="#171D24"/>
+<circle cx="63" cy="247" r="1" fill="#171D24"/>
+<circle cx="63" cy="255" r="1" fill="#171D24"/>
+<circle cx="71" cy="247" r="1" fill="#171D24"/>
+<circle cx="71" cy="255" r="1" fill="#171D24"/>
+<circle cx="79" cy="247" r="1" fill="#171D24"/>
+<circle cx="79" cy="255" r="1" fill="#171D24"/>
+<circle cx="87" cy="247" r="1" fill="#171D24"/>
+<circle cx="87" cy="255" r="1" fill="#171D24"/>
+<circle cx="95" cy="247" r="1" fill="#171D24"/>
+<circle cx="95" cy="255" r="1" fill="#171D24"/>
+<circle cx="103" cy="247" r="1" fill="#171D24"/>
+<circle cx="103" cy="255" r="1" fill="#171D24"/>
+<circle cx="111" cy="247" r="1" fill="#171D24"/>
+<circle cx="111" cy="255" r="1" fill="#171D24"/>
+<circle cx="119" cy="247" r="1" fill="#171D24"/>
+<circle cx="119" cy="255" r="1" fill="#171D24"/>
+<circle cx="127" cy="247" r="1" fill="#171D24"/>
+<circle cx="127" cy="255" r="1" fill="#171D24"/>
+<circle cx="135" cy="247" r="1" fill="#171D24"/>
+<circle cx="135" cy="255" r="1" fill="#171D24"/>
+<circle cx="143" cy="247" r="1" fill="#171D24"/>
+<circle cx="143" cy="255" r="1" fill="#171D24"/>
+<circle cx="151" cy="247" r="1" fill="#171D24"/>
+<circle cx="151" cy="255" r="1" fill="#171D24"/>
+<circle cx="159" cy="247" r="1" fill="#171D24"/>
+<circle cx="159" cy="255" r="1" fill="#171D24"/>
+<circle cx="167" cy="247" r="1" fill="#171D24"/>
+<circle cx="167" cy="255" r="1" fill="#171D24"/>
+<circle cx="175" cy="247" r="1" fill="#171D24"/>
+<circle cx="175" cy="255" r="1" fill="#171D24"/>
+<circle cx="183" cy="247" r="1" fill="#171D24"/>
+<circle cx="183" cy="255" r="1" fill="#171D24"/>
+<circle cx="191" cy="247" r="1" fill="#171D24"/>
+<circle cx="191" cy="255" r="1" fill="#171D24"/>
+<circle cx="199" cy="247" r="1" fill="#171D24"/>
+<circle cx="199" cy="255" r="1" fill="#171D24"/>
+<circle cx="207" cy="247" r="1" fill="#171D24"/>
+<circle cx="207" cy="255" r="1" fill="#171D24"/>
+<circle cx="215" cy="247" r="1" fill="#171D24"/>
+<circle cx="215" cy="255" r="1" fill="#171D24"/>
+<circle cx="223" cy="247" r="1" fill="#171D24"/>
+<circle cx="223" cy="255" r="1" fill="#171D24"/>
+<circle cx="231" cy="247" r="1" fill="#171D24"/>
+<circle cx="231" cy="255" r="1" fill="#171D24"/>
+<circle cx="239" cy="247" r="1" fill="#171D24"/>
+<circle cx="239" cy="255" r="1" fill="#171D24"/>
+<circle cx="247" cy="247" r="1" fill="#171D24"/>
+<circle cx="247" cy="255" r="1" fill="#171D24"/>
+<circle cx="255" cy="247" r="1" fill="#171D24"/>
+<circle cx="255" cy="255" r="1" fill="#171D24"/>
+<circle cx="263" cy="247" r="1" fill="#171D24"/>
+<circle cx="263" cy="255" r="1" fill="#171D24"/>
+<circle cx="271" cy="247" r="1" fill="#171D24"/>
+<circle cx="271" cy="255" r="1" fill="#171D24"/>
+<circle cx="279" cy="247" r="1" fill="#171D24"/>
+<circle cx="279" cy="255" r="1" fill="#171D24"/>
+<circle cx="287" cy="247" r="1" fill="#171D24"/>
+<circle cx="287" cy="255" r="1" fill="#171D24"/>
+<circle cx="295" cy="247" r="1" fill="#171D24"/>
+<circle cx="295" cy="255" r="1" fill="#171D24"/>
+<circle cx="303" cy="247" r="1" fill="#171D24"/>
+<circle cx="303" cy="255" r="1" fill="#171D24"/>
+<circle cx="311" cy="247" r="1" fill="#171D24"/>
+<circle cx="311" cy="255" r="1" fill="#171D24"/>
+<circle cx="319" cy="247" r="1" fill="#171D24"/>
+<circle cx="319" cy="255" r="1" fill="#171D24"/>
+<circle cx="327" cy="247" r="1" fill="#171D24"/>
+<circle cx="327" cy="255" r="1" fill="#171D24"/>
+<circle cx="335" cy="247" r="1" fill="#171D24"/>
+<circle cx="335" cy="255" r="1" fill="#171D24"/>
+<circle cx="343" cy="247" r="1" fill="#171D24"/>
+<circle cx="343" cy="255" r="1" fill="#171D24"/>
+<circle cx="351" cy="247" r="1" fill="#171D24"/>
+<circle cx="351" cy="255" r="1" fill="#171D24"/>
+<circle cx="359" cy="247" r="1" fill="#171D24"/>
+<circle cx="359" cy="255" r="1" fill="#171D24"/>
+<circle cx="367" cy="247" r="1" fill="#171D24"/>
+<circle cx="367" cy="255" r="1" fill="#171D24"/>
+<circle cx="7" cy="263" r="1" fill="#171D24"/>
+<circle cx="7" cy="271" r="1" fill="#171D24"/>
+<circle cx="15" cy="263" r="1" fill="#171D24"/>
+<circle cx="15" cy="271" r="1" fill="#171D24"/>
+<circle cx="23" cy="263" r="1" fill="#171D24"/>
+<circle cx="23" cy="271" r="1" fill="#171D24"/>
+<circle cx="31" cy="263" r="1" fill="#171D24"/>
+<circle cx="31" cy="271" r="1" fill="#171D24"/>
+<circle cx="39" cy="263" r="1" fill="#171D24"/>
+<circle cx="39" cy="271" r="1" fill="#171D24"/>
+<circle cx="47" cy="263" r="1" fill="#171D24"/>
+<circle cx="47" cy="271" r="1" fill="#171D24"/>
+<circle cx="55" cy="263" r="1" fill="#171D24"/>
+<circle cx="55" cy="271" r="1" fill="#171D24"/>
+<circle cx="63" cy="263" r="1" fill="#171D24"/>
+<circle cx="63" cy="271" r="1" fill="#171D24"/>
+<circle cx="71" cy="263" r="1" fill="#171D24"/>
+<circle cx="71" cy="271" r="1" fill="#171D24"/>
+<circle cx="79" cy="263" r="1" fill="#171D24"/>
+<circle cx="79" cy="271" r="1" fill="#171D24"/>
+<circle cx="87" cy="263" r="1" fill="#171D24"/>
+<circle cx="87" cy="271" r="1" fill="#171D24"/>
+<circle cx="95" cy="263" r="1" fill="#171D24"/>
+<circle cx="95" cy="271" r="1" fill="#171D24"/>
+<circle cx="103" cy="263" r="1" fill="#171D24"/>
+<circle cx="103" cy="271" r="1" fill="#171D24"/>
+<circle cx="111" cy="263" r="1" fill="#171D24"/>
+<circle cx="111" cy="271" r="1" fill="#171D24"/>
+<circle cx="119" cy="263" r="1" fill="#171D24"/>
+<circle cx="119" cy="271" r="1" fill="#171D24"/>
+<circle cx="127" cy="263" r="1" fill="#171D24"/>
+<circle cx="127" cy="271" r="1" fill="#171D24"/>
+<circle cx="135" cy="263" r="1" fill="#171D24"/>
+<circle cx="135" cy="271" r="1" fill="#171D24"/>
+<circle cx="143" cy="263" r="1" fill="#171D24"/>
+<circle cx="143" cy="271" r="1" fill="#171D24"/>
+<circle cx="151" cy="263" r="1" fill="#171D24"/>
+<circle cx="151" cy="271" r="1" fill="#171D24"/>
+<circle cx="159" cy="263" r="1" fill="#171D24"/>
+<circle cx="159" cy="271" r="1" fill="#171D24"/>
+<circle cx="167" cy="263" r="1" fill="#171D24"/>
+<circle cx="167" cy="271" r="1" fill="#171D24"/>
+<circle cx="175" cy="263" r="1" fill="#171D24"/>
+<circle cx="175" cy="271" r="1" fill="#171D24"/>
+<circle cx="183" cy="263" r="1" fill="#171D24"/>
+<circle cx="183" cy="271" r="1" fill="#171D24"/>
+<circle cx="191" cy="263" r="1" fill="#171D24"/>
+<circle cx="191" cy="271" r="1" fill="#171D24"/>
+<circle cx="199" cy="263" r="1" fill="#171D24"/>
+<circle cx="199" cy="271" r="1" fill="#171D24"/>
+<circle cx="207" cy="263" r="1" fill="#171D24"/>
+<circle cx="207" cy="271" r="1" fill="#171D24"/>
+<circle cx="215" cy="263" r="1" fill="#171D24"/>
+<circle cx="215" cy="271" r="1" fill="#171D24"/>
+<circle cx="223" cy="263" r="1" fill="#171D24"/>
+<circle cx="223" cy="271" r="1" fill="#171D24"/>
+<circle cx="231" cy="263" r="1" fill="#171D24"/>
+<circle cx="231" cy="271" r="1" fill="#171D24"/>
+<circle cx="239" cy="263" r="1" fill="#171D24"/>
+<circle cx="239" cy="271" r="1" fill="#171D24"/>
+<circle cx="247" cy="263" r="1" fill="#171D24"/>
+<circle cx="247" cy="271" r="1" fill="#171D24"/>
+<circle cx="255" cy="263" r="1" fill="#171D24"/>
+<circle cx="255" cy="271" r="1" fill="#171D24"/>
+<circle cx="263" cy="263" r="1" fill="#171D24"/>
+<circle cx="263" cy="271" r="1" fill="#171D24"/>
+<circle cx="271" cy="263" r="1" fill="#171D24"/>
+<circle cx="271" cy="271" r="1" fill="#171D24"/>
+<circle cx="279" cy="263" r="1" fill="#171D24"/>
+<circle cx="279" cy="271" r="1" fill="#171D24"/>
+<circle cx="287" cy="263" r="1" fill="#171D24"/>
+<circle cx="287" cy="271" r="1" fill="#171D24"/>
+<circle cx="295" cy="263" r="1" fill="#171D24"/>
+<circle cx="295" cy="271" r="1" fill="#171D24"/>
+<circle cx="303" cy="263" r="1" fill="#171D24"/>
+<circle cx="303" cy="271" r="1" fill="#171D24"/>
+<circle cx="311" cy="263" r="1" fill="#171D24"/>
+<circle cx="311" cy="271" r="1" fill="#171D24"/>
+<circle cx="319" cy="263" r="1" fill="#171D24"/>
+<circle cx="319" cy="271" r="1" fill="#171D24"/>
+<circle cx="327" cy="263" r="1" fill="#171D24"/>
+<circle cx="327" cy="271" r="1" fill="#171D24"/>
+<circle cx="335" cy="263" r="1" fill="#171D24"/>
+<circle cx="335" cy="271" r="1" fill="#171D24"/>
+<circle cx="343" cy="263" r="1" fill="#171D24"/>
+<circle cx="343" cy="271" r="1" fill="#171D24"/>
+<circle cx="351" cy="263" r="1" fill="#171D24"/>
+<circle cx="351" cy="271" r="1" fill="#171D24"/>
+<circle cx="359" cy="263" r="1" fill="#171D24"/>
+<circle cx="359" cy="271" r="1" fill="#171D24"/>
+<circle cx="367" cy="263" r="1" fill="#171D24"/>
+<circle cx="367" cy="271" r="1" fill="#171D24"/>
+<circle cx="7" cy="279" r="1" fill="#171D24"/>
+<circle cx="7" cy="287" r="1" fill="#171D24"/>
+<circle cx="15" cy="279" r="1" fill="#171D24"/>
+<circle cx="15" cy="287" r="1" fill="#171D24"/>
+<circle cx="23" cy="279" r="1" fill="#171D24"/>
+<circle cx="23" cy="287" r="1" fill="#171D24"/>
+<circle cx="31" cy="279" r="1" fill="#171D24"/>
+<circle cx="31" cy="287" r="1" fill="#171D24"/>
+<circle cx="39" cy="279" r="1" fill="#171D24"/>
+<circle cx="39" cy="287" r="1" fill="#171D24"/>
+<circle cx="47" cy="279" r="1" fill="#171D24"/>
+<circle cx="47" cy="287" r="1" fill="#171D24"/>
+<circle cx="55" cy="279" r="1" fill="#171D24"/>
+<circle cx="55" cy="287" r="1" fill="#171D24"/>
+<circle cx="63" cy="279" r="1" fill="#171D24"/>
+<circle cx="63" cy="287" r="1" fill="#171D24"/>
+<circle cx="71" cy="279" r="1" fill="#171D24"/>
+<circle cx="71" cy="287" r="1" fill="#171D24"/>
+<circle cx="79" cy="279" r="1" fill="#171D24"/>
+<circle cx="79" cy="287" r="1" fill="#171D24"/>
+<circle cx="87" cy="279" r="1" fill="#171D24"/>
+<circle cx="87" cy="287" r="1" fill="#171D24"/>
+<circle cx="95" cy="279" r="1" fill="#171D24"/>
+<circle cx="95" cy="287" r="1" fill="#171D24"/>
+<circle cx="103" cy="279" r="1" fill="#171D24"/>
+<circle cx="103" cy="287" r="1" fill="#171D24"/>
+<circle cx="111" cy="279" r="1" fill="#171D24"/>
+<circle cx="111" cy="287" r="1" fill="#171D24"/>
+<circle cx="119" cy="279" r="1" fill="#171D24"/>
+<circle cx="119" cy="287" r="1" fill="#171D24"/>
+<circle cx="127" cy="279" r="1" fill="#171D24"/>
+<circle cx="127" cy="287" r="1" fill="#171D24"/>
+<circle cx="135" cy="279" r="1" fill="#171D24"/>
+<circle cx="135" cy="287" r="1" fill="#171D24"/>
+<circle cx="143" cy="279" r="1" fill="#171D24"/>
+<circle cx="143" cy="287" r="1" fill="#171D24"/>
+<circle cx="151" cy="279" r="1" fill="#171D24"/>
+<circle cx="151" cy="287" r="1" fill="#171D24"/>
+<circle cx="159" cy="279" r="1" fill="#171D24"/>
+<circle cx="159" cy="287" r="1" fill="#171D24"/>
+<circle cx="167" cy="279" r="1" fill="#171D24"/>
+<circle cx="167" cy="287" r="1" fill="#171D24"/>
+<circle cx="175" cy="279" r="1" fill="#171D24"/>
+<circle cx="175" cy="287" r="1" fill="#171D24"/>
+<circle cx="183" cy="279" r="1" fill="#171D24"/>
+<circle cx="183" cy="287" r="1" fill="#171D24"/>
+<circle cx="191" cy="279" r="1" fill="#171D24"/>
+<circle cx="191" cy="287" r="1" fill="#171D24"/>
+<circle cx="199" cy="279" r="1" fill="#171D24"/>
+<circle cx="199" cy="287" r="1" fill="#171D24"/>
+<circle cx="207" cy="279" r="1" fill="#171D24"/>
+<circle cx="207" cy="287" r="1" fill="#171D24"/>
+<circle cx="215" cy="279" r="1" fill="#171D24"/>
+<circle cx="215" cy="287" r="1" fill="#171D24"/>
+<circle cx="223" cy="279" r="1" fill="#171D24"/>
+<circle cx="223" cy="287" r="1" fill="#171D24"/>
+<circle cx="231" cy="279" r="1" fill="#171D24"/>
+<circle cx="231" cy="287" r="1" fill="#171D24"/>
+<circle cx="239" cy="279" r="1" fill="#171D24"/>
+<circle cx="239" cy="287" r="1" fill="#171D24"/>
+<circle cx="247" cy="279" r="1" fill="#171D24"/>
+<circle cx="247" cy="287" r="1" fill="#171D24"/>
+<circle cx="255" cy="279" r="1" fill="#171D24"/>
+<circle cx="255" cy="287" r="1" fill="#171D24"/>
+<circle cx="263" cy="279" r="1" fill="#171D24"/>
+<circle cx="263" cy="287" r="1" fill="#171D24"/>
+<circle cx="271" cy="279" r="1" fill="#171D24"/>
+<circle cx="271" cy="287" r="1" fill="#171D24"/>
+<circle cx="279" cy="279" r="1" fill="#171D24"/>
+<circle cx="279" cy="287" r="1" fill="#171D24"/>
+<circle cx="287" cy="279" r="1" fill="#171D24"/>
+<circle cx="287" cy="287" r="1" fill="#171D24"/>
+<circle cx="295" cy="279" r="1" fill="#171D24"/>
+<circle cx="295" cy="287" r="1" fill="#171D24"/>
+<circle cx="303" cy="279" r="1" fill="#171D24"/>
+<circle cx="303" cy="287" r="1" fill="#171D24"/>
+<circle cx="311" cy="279" r="1" fill="#171D24"/>
+<circle cx="311" cy="287" r="1" fill="#171D24"/>
+<circle cx="319" cy="279" r="1" fill="#171D24"/>
+<circle cx="319" cy="287" r="1" fill="#171D24"/>
+<circle cx="327" cy="279" r="1" fill="#171D24"/>
+<circle cx="327" cy="287" r="1" fill="#171D24"/>
+<circle cx="335" cy="279" r="1" fill="#171D24"/>
+<circle cx="335" cy="287" r="1" fill="#171D24"/>
+<circle cx="343" cy="279" r="1" fill="#171D24"/>
+<circle cx="343" cy="287" r="1" fill="#171D24"/>
+<circle cx="351" cy="279" r="1" fill="#171D24"/>
+<circle cx="351" cy="287" r="1" fill="#171D24"/>
+<circle cx="359" cy="279" r="1" fill="#171D24"/>
+<circle cx="359" cy="287" r="1" fill="#171D24"/>
+<circle cx="367" cy="279" r="1" fill="#171D24"/>
+<circle cx="367" cy="287" r="1" fill="#171D24"/>
+<circle cx="7" cy="295" r="1" fill="#171D24"/>
+<circle cx="7" cy="303" r="1" fill="#171D24"/>
+<circle cx="15" cy="295" r="1" fill="#171D24"/>
+<circle cx="15" cy="303" r="1" fill="#171D24"/>
+<circle cx="23" cy="295" r="1" fill="#171D24"/>
+<circle cx="23" cy="303" r="1" fill="#171D24"/>
+<circle cx="31" cy="295" r="1" fill="#171D24"/>
+<circle cx="31" cy="303" r="1" fill="#171D24"/>
+<circle cx="39" cy="295" r="1" fill="#171D24"/>
+<circle cx="39" cy="303" r="1" fill="#171D24"/>
+<circle cx="47" cy="295" r="1" fill="#171D24"/>
+<circle cx="47" cy="303" r="1" fill="#171D24"/>
+<circle cx="55" cy="295" r="1" fill="#171D24"/>
+<circle cx="55" cy="303" r="1" fill="#171D24"/>
+<circle cx="63" cy="295" r="1" fill="#171D24"/>
+<circle cx="63" cy="303" r="1" fill="#171D24"/>
+<circle cx="71" cy="295" r="1" fill="#171D24"/>
+<circle cx="71" cy="303" r="1" fill="#171D24"/>
+<circle cx="79" cy="295" r="1" fill="#171D24"/>
+<circle cx="79" cy="303" r="1" fill="#171D24"/>
+<circle cx="87" cy="295" r="1" fill="#171D24"/>
+<circle cx="87" cy="303" r="1" fill="#171D24"/>
+<circle cx="95" cy="295" r="1" fill="#171D24"/>
+<circle cx="95" cy="303" r="1" fill="#171D24"/>
+<circle cx="103" cy="295" r="1" fill="#171D24"/>
+<circle cx="103" cy="303" r="1" fill="#171D24"/>
+<circle cx="111" cy="295" r="1" fill="#171D24"/>
+<circle cx="111" cy="303" r="1" fill="#171D24"/>
+<circle cx="119" cy="295" r="1" fill="#171D24"/>
+<circle cx="119" cy="303" r="1" fill="#171D24"/>
+<circle cx="127" cy="295" r="1" fill="#171D24"/>
+<circle cx="127" cy="303" r="1" fill="#171D24"/>
+<circle cx="135" cy="295" r="1" fill="#171D24"/>
+<circle cx="135" cy="303" r="1" fill="#171D24"/>
+<circle cx="143" cy="295" r="1" fill="#171D24"/>
+<circle cx="143" cy="303" r="1" fill="#171D24"/>
+<circle cx="151" cy="295" r="1" fill="#171D24"/>
+<circle cx="151" cy="303" r="1" fill="#171D24"/>
+<circle cx="159" cy="295" r="1" fill="#171D24"/>
+<circle cx="159" cy="303" r="1" fill="#171D24"/>
+<circle cx="167" cy="295" r="1" fill="#171D24"/>
+<circle cx="167" cy="303" r="1" fill="#171D24"/>
+<circle cx="175" cy="295" r="1" fill="#171D24"/>
+<circle cx="175" cy="303" r="1" fill="#171D24"/>
+<circle cx="183" cy="295" r="1" fill="#171D24"/>
+<circle cx="183" cy="303" r="1" fill="#171D24"/>
+<circle cx="191" cy="295" r="1" fill="#171D24"/>
+<circle cx="191" cy="303" r="1" fill="#171D24"/>
+<circle cx="199" cy="295" r="1" fill="#171D24"/>
+<circle cx="199" cy="303" r="1" fill="#171D24"/>
+<circle cx="207" cy="295" r="1" fill="#171D24"/>
+<circle cx="207" cy="303" r="1" fill="#171D24"/>
+<circle cx="215" cy="295" r="1" fill="#171D24"/>
+<circle cx="215" cy="303" r="1" fill="#171D24"/>
+<circle cx="223" cy="295" r="1" fill="#171D24"/>
+<circle cx="223" cy="303" r="1" fill="#171D24"/>
+<circle cx="231" cy="295" r="1" fill="#171D24"/>
+<circle cx="231" cy="303" r="1" fill="#171D24"/>
+<circle cx="239" cy="295" r="1" fill="#171D24"/>
+<circle cx="239" cy="303" r="1" fill="#171D24"/>
+<circle cx="247" cy="295" r="1" fill="#171D24"/>
+<circle cx="247" cy="303" r="1" fill="#171D24"/>
+<circle cx="255" cy="295" r="1" fill="#171D24"/>
+<circle cx="255" cy="303" r="1" fill="#171D24"/>
+<circle cx="263" cy="295" r="1" fill="#171D24"/>
+<circle cx="263" cy="303" r="1" fill="#171D24"/>
+<circle cx="271" cy="295" r="1" fill="#171D24"/>
+<circle cx="271" cy="303" r="1" fill="#171D24"/>
+<circle cx="279" cy="295" r="1" fill="#171D24"/>
+<circle cx="279" cy="303" r="1" fill="#171D24"/>
+<circle cx="287" cy="295" r="1" fill="#171D24"/>
+<circle cx="287" cy="303" r="1" fill="#171D24"/>
+<circle cx="295" cy="295" r="1" fill="#171D24"/>
+<circle cx="295" cy="303" r="1" fill="#171D24"/>
+<circle cx="303" cy="295" r="1" fill="#171D24"/>
+<circle cx="303" cy="303" r="1" fill="#171D24"/>
+<circle cx="311" cy="295" r="1" fill="#171D24"/>
+<circle cx="311" cy="303" r="1" fill="#171D24"/>
+<circle cx="319" cy="295" r="1" fill="#171D24"/>
+<circle cx="319" cy="303" r="1" fill="#171D24"/>
+<circle cx="327" cy="295" r="1" fill="#171D24"/>
+<circle cx="327" cy="303" r="1" fill="#171D24"/>
+<circle cx="335" cy="295" r="1" fill="#171D24"/>
+<circle cx="335" cy="303" r="1" fill="#171D24"/>
+<circle cx="343" cy="295" r="1" fill="#171D24"/>
+<circle cx="343" cy="303" r="1" fill="#171D24"/>
+<circle cx="351" cy="295" r="1" fill="#171D24"/>
+<circle cx="351" cy="303" r="1" fill="#171D24"/>
+<circle cx="359" cy="295" r="1" fill="#171D24"/>
+<circle cx="359" cy="303" r="1" fill="#171D24"/>
+<circle cx="367" cy="295" r="1" fill="#171D24"/>
+<circle cx="367" cy="303" r="1" fill="#171D24"/>
+<circle cx="7" cy="311" r="1" fill="#171D24"/>
+<circle cx="7" cy="319" r="1" fill="#171D24"/>
+<circle cx="15" cy="311" r="1" fill="#171D24"/>
+<circle cx="15" cy="319" r="1" fill="#171D24"/>
+<circle cx="23" cy="311" r="1" fill="#171D24"/>
+<circle cx="23" cy="319" r="1" fill="#171D24"/>
+<circle cx="31" cy="311" r="1" fill="#171D24"/>
+<circle cx="31" cy="319" r="1" fill="#171D24"/>
+<circle cx="39" cy="311" r="1" fill="#171D24"/>
+<circle cx="39" cy="319" r="1" fill="#171D24"/>
+<circle cx="47" cy="311" r="1" fill="#171D24"/>
+<circle cx="47" cy="319" r="1" fill="#171D24"/>
+<circle cx="55" cy="311" r="1" fill="#171D24"/>
+<circle cx="55" cy="319" r="1" fill="#171D24"/>
+<circle cx="63" cy="311" r="1" fill="#171D24"/>
+<circle cx="63" cy="319" r="1" fill="#171D24"/>
+<circle cx="71" cy="311" r="1" fill="#171D24"/>
+<circle cx="71" cy="319" r="1" fill="#171D24"/>
+<circle cx="79" cy="311" r="1" fill="#171D24"/>
+<circle cx="79" cy="319" r="1" fill="#171D24"/>
+<circle cx="87" cy="311" r="1" fill="#171D24"/>
+<circle cx="87" cy="319" r="1" fill="#171D24"/>
+<circle cx="95" cy="311" r="1" fill="#171D24"/>
+<circle cx="95" cy="319" r="1" fill="#171D24"/>
+<circle cx="103" cy="311" r="1" fill="#171D24"/>
+<circle cx="103" cy="319" r="1" fill="#171D24"/>
+<circle cx="111" cy="311" r="1" fill="#171D24"/>
+<circle cx="111" cy="319" r="1" fill="#171D24"/>
+<circle cx="119" cy="311" r="1" fill="#171D24"/>
+<circle cx="119" cy="319" r="1" fill="#171D24"/>
+<circle cx="127" cy="311" r="1" fill="#171D24"/>
+<circle cx="127" cy="319" r="1" fill="#171D24"/>
+<circle cx="135" cy="311" r="1" fill="#171D24"/>
+<circle cx="135" cy="319" r="1" fill="#171D24"/>
+<circle cx="143" cy="311" r="1" fill="#171D24"/>
+<circle cx="143" cy="319" r="1" fill="#171D24"/>
+<circle cx="151" cy="311" r="1" fill="#171D24"/>
+<circle cx="151" cy="319" r="1" fill="#171D24"/>
+<circle cx="159" cy="311" r="1" fill="#171D24"/>
+<circle cx="159" cy="319" r="1" fill="#171D24"/>
+<circle cx="167" cy="311" r="1" fill="#171D24"/>
+<circle cx="167" cy="319" r="1" fill="#171D24"/>
+<circle cx="175" cy="311" r="1" fill="#171D24"/>
+<circle cx="175" cy="319" r="1" fill="#171D24"/>
+<circle cx="183" cy="311" r="1" fill="#171D24"/>
+<circle cx="183" cy="319" r="1" fill="#171D24"/>
+<circle cx="191" cy="311" r="1" fill="#171D24"/>
+<circle cx="191" cy="319" r="1" fill="#171D24"/>
+<circle cx="199" cy="311" r="1" fill="#171D24"/>
+<circle cx="199" cy="319" r="1" fill="#171D24"/>
+<circle cx="207" cy="311" r="1" fill="#171D24"/>
+<circle cx="207" cy="319" r="1" fill="#171D24"/>
+<circle cx="215" cy="311" r="1" fill="#171D24"/>
+<circle cx="215" cy="319" r="1" fill="#171D24"/>
+<circle cx="223" cy="311" r="1" fill="#171D24"/>
+<circle cx="223" cy="319" r="1" fill="#171D24"/>
+<circle cx="231" cy="311" r="1" fill="#171D24"/>
+<circle cx="231" cy="319" r="1" fill="#171D24"/>
+<circle cx="239" cy="311" r="1" fill="#171D24"/>
+<circle cx="239" cy="319" r="1" fill="#171D24"/>
+<circle cx="247" cy="311" r="1" fill="#171D24"/>
+<circle cx="247" cy="319" r="1" fill="#171D24"/>
+<circle cx="255" cy="311" r="1" fill="#171D24"/>
+<circle cx="255" cy="319" r="1" fill="#171D24"/>
+<circle cx="263" cy="311" r="1" fill="#171D24"/>
+<circle cx="263" cy="319" r="1" fill="#171D24"/>
+<circle cx="271" cy="311" r="1" fill="#171D24"/>
+<circle cx="271" cy="319" r="1" fill="#171D24"/>
+<circle cx="279" cy="311" r="1" fill="#171D24"/>
+<circle cx="279" cy="319" r="1" fill="#171D24"/>
+<circle cx="287" cy="311" r="1" fill="#171D24"/>
+<circle cx="287" cy="319" r="1" fill="#171D24"/>
+<circle cx="295" cy="311" r="1" fill="#171D24"/>
+<circle cx="295" cy="319" r="1" fill="#171D24"/>
+<circle cx="303" cy="311" r="1" fill="#171D24"/>
+<circle cx="303" cy="319" r="1" fill="#171D24"/>
+<circle cx="311" cy="311" r="1" fill="#171D24"/>
+<circle cx="311" cy="319" r="1" fill="#171D24"/>
+<circle cx="319" cy="311" r="1" fill="#171D24"/>
+<circle cx="319" cy="319" r="1" fill="#171D24"/>
+<circle cx="327" cy="311" r="1" fill="#171D24"/>
+<circle cx="327" cy="319" r="1" fill="#171D24"/>
+<circle cx="335" cy="311" r="1" fill="#171D24"/>
+<circle cx="335" cy="319" r="1" fill="#171D24"/>
+<circle cx="343" cy="311" r="1" fill="#171D24"/>
+<circle cx="343" cy="319" r="1" fill="#171D24"/>
+<circle cx="351" cy="311" r="1" fill="#171D24"/>
+<circle cx="351" cy="319" r="1" fill="#171D24"/>
+<circle cx="359" cy="311" r="1" fill="#171D24"/>
+<circle cx="359" cy="319" r="1" fill="#171D24"/>
+<circle cx="367" cy="311" r="1" fill="#171D24"/>
+<circle cx="367" cy="319" r="1" fill="#171D24"/>
+<circle cx="7" cy="327" r="1" fill="#171D24"/>
+<circle cx="7" cy="335" r="1" fill="#171D24"/>
+<circle cx="15" cy="327" r="1" fill="#171D24"/>
+<circle cx="15" cy="335" r="1" fill="#171D24"/>
+<circle cx="23" cy="327" r="1" fill="#171D24"/>
+<circle cx="23" cy="335" r="1" fill="#171D24"/>
+<circle cx="31" cy="327" r="1" fill="#171D24"/>
+<circle cx="31" cy="335" r="1" fill="#171D24"/>
+<circle cx="39" cy="327" r="1" fill="#171D24"/>
+<circle cx="39" cy="335" r="1" fill="#171D24"/>
+<circle cx="47" cy="327" r="1" fill="#171D24"/>
+<circle cx="47" cy="335" r="1" fill="#171D24"/>
+<circle cx="55" cy="327" r="1" fill="#171D24"/>
+<circle cx="55" cy="335" r="1" fill="#171D24"/>
+<circle cx="63" cy="327" r="1" fill="#171D24"/>
+<circle cx="63" cy="335" r="1" fill="#171D24"/>
+<circle cx="71" cy="327" r="1" fill="#171D24"/>
+<circle cx="71" cy="335" r="1" fill="#171D24"/>
+<circle cx="79" cy="327" r="1" fill="#171D24"/>
+<circle cx="79" cy="335" r="1" fill="#171D24"/>
+<circle cx="87" cy="327" r="1" fill="#171D24"/>
+<circle cx="87" cy="335" r="1" fill="#171D24"/>
+<circle cx="95" cy="327" r="1" fill="#171D24"/>
+<circle cx="95" cy="335" r="1" fill="#171D24"/>
+<circle cx="103" cy="327" r="1" fill="#171D24"/>
+<circle cx="103" cy="335" r="1" fill="#171D24"/>
+<circle cx="111" cy="327" r="1" fill="#171D24"/>
+<circle cx="111" cy="335" r="1" fill="#171D24"/>
+<circle cx="119" cy="327" r="1" fill="#171D24"/>
+<circle cx="119" cy="335" r="1" fill="#171D24"/>
+<circle cx="127" cy="327" r="1" fill="#171D24"/>
+<circle cx="127" cy="335" r="1" fill="#171D24"/>
+<circle cx="135" cy="327" r="1" fill="#171D24"/>
+<circle cx="135" cy="335" r="1" fill="#171D24"/>
+<circle cx="143" cy="327" r="1" fill="#171D24"/>
+<circle cx="143" cy="335" r="1" fill="#171D24"/>
+<circle cx="151" cy="327" r="1" fill="#171D24"/>
+<circle cx="151" cy="335" r="1" fill="#171D24"/>
+<circle cx="159" cy="327" r="1" fill="#171D24"/>
+<circle cx="159" cy="335" r="1" fill="#171D24"/>
+<circle cx="167" cy="327" r="1" fill="#171D24"/>
+<circle cx="167" cy="335" r="1" fill="#171D24"/>
+<circle cx="175" cy="327" r="1" fill="#171D24"/>
+<circle cx="175" cy="335" r="1" fill="#171D24"/>
+<circle cx="183" cy="327" r="1" fill="#171D24"/>
+<circle cx="183" cy="335" r="1" fill="#171D24"/>
+<circle cx="191" cy="327" r="1" fill="#171D24"/>
+<circle cx="191" cy="335" r="1" fill="#171D24"/>
+<circle cx="199" cy="327" r="1" fill="#171D24"/>
+<circle cx="199" cy="335" r="1" fill="#171D24"/>
+<circle cx="207" cy="327" r="1" fill="#171D24"/>
+<circle cx="207" cy="335" r="1" fill="#171D24"/>
+<circle cx="215" cy="327" r="1" fill="#171D24"/>
+<circle cx="215" cy="335" r="1" fill="#171D24"/>
+<circle cx="223" cy="327" r="1" fill="#171D24"/>
+<circle cx="223" cy="335" r="1" fill="#171D24"/>
+<circle cx="231" cy="327" r="1" fill="#171D24"/>
+<circle cx="231" cy="335" r="1" fill="#171D24"/>
+<circle cx="239" cy="327" r="1" fill="#171D24"/>
+<circle cx="239" cy="335" r="1" fill="#171D24"/>
+<circle cx="247" cy="327" r="1" fill="#171D24"/>
+<circle cx="247" cy="335" r="1" fill="#171D24"/>
+<circle cx="255" cy="327" r="1" fill="#171D24"/>
+<circle cx="255" cy="335" r="1" fill="#171D24"/>
+<circle cx="263" cy="327" r="1" fill="#171D24"/>
+<circle cx="263" cy="335" r="1" fill="#171D24"/>
+<circle cx="271" cy="327" r="1" fill="#171D24"/>
+<circle cx="271" cy="335" r="1" fill="#171D24"/>
+<circle cx="279" cy="327" r="1" fill="#171D24"/>
+<circle cx="279" cy="335" r="1" fill="#171D24"/>
+<circle cx="287" cy="327" r="1" fill="#171D24"/>
+<circle cx="287" cy="335" r="1" fill="#171D24"/>
+<circle cx="295" cy="327" r="1" fill="#171D24"/>
+<circle cx="295" cy="335" r="1" fill="#171D24"/>
+<circle cx="303" cy="327" r="1" fill="#171D24"/>
+<circle cx="303" cy="335" r="1" fill="#171D24"/>
+<circle cx="311" cy="327" r="1" fill="#171D24"/>
+<circle cx="311" cy="335" r="1" fill="#171D24"/>
+<circle cx="319" cy="327" r="1" fill="#171D24"/>
+<circle cx="319" cy="335" r="1" fill="#171D24"/>
+<circle cx="327" cy="327" r="1" fill="#171D24"/>
+<circle cx="327" cy="335" r="1" fill="#171D24"/>
+<circle cx="335" cy="327" r="1" fill="#171D24"/>
+<circle cx="335" cy="335" r="1" fill="#171D24"/>
+<circle cx="343" cy="327" r="1" fill="#171D24"/>
+<circle cx="343" cy="335" r="1" fill="#171D24"/>
+<circle cx="351" cy="327" r="1" fill="#171D24"/>
+<circle cx="351" cy="335" r="1" fill="#171D24"/>
+<circle cx="359" cy="327" r="1" fill="#171D24"/>
+<circle cx="359" cy="335" r="1" fill="#171D24"/>
+<circle cx="367" cy="327" r="1" fill="#171D24"/>
+<circle cx="367" cy="335" r="1" fill="#171D24"/>
+<circle cx="7" cy="343" r="1" fill="#171D24"/>
+<circle cx="7" cy="351" r="1" fill="#171D24"/>
+<circle cx="15" cy="343" r="1" fill="#171D24"/>
+<circle cx="15" cy="351" r="1" fill="#171D24"/>
+<circle cx="23" cy="343" r="1" fill="#171D24"/>
+<circle cx="23" cy="351" r="1" fill="#171D24"/>
+<circle cx="31" cy="343" r="1" fill="#171D24"/>
+<circle cx="31" cy="351" r="1" fill="#171D24"/>
+<circle cx="39" cy="343" r="1" fill="#171D24"/>
+<circle cx="39" cy="351" r="1" fill="#171D24"/>
+<circle cx="47" cy="343" r="1" fill="#171D24"/>
+<circle cx="47" cy="351" r="1" fill="#171D24"/>
+<circle cx="55" cy="343" r="1" fill="#171D24"/>
+<circle cx="55" cy="351" r="1" fill="#171D24"/>
+<circle cx="63" cy="343" r="1" fill="#171D24"/>
+<circle cx="63" cy="351" r="1" fill="#171D24"/>
+<circle cx="71" cy="343" r="1" fill="#171D24"/>
+<circle cx="71" cy="351" r="1" fill="#171D24"/>
+<circle cx="79" cy="343" r="1" fill="#171D24"/>
+<circle cx="79" cy="351" r="1" fill="#171D24"/>
+<circle cx="87" cy="343" r="1" fill="#171D24"/>
+<circle cx="87" cy="351" r="1" fill="#171D24"/>
+<circle cx="95" cy="343" r="1" fill="#171D24"/>
+<circle cx="95" cy="351" r="1" fill="#171D24"/>
+<circle cx="103" cy="343" r="1" fill="#171D24"/>
+<circle cx="103" cy="351" r="1" fill="#171D24"/>
+<circle cx="111" cy="343" r="1" fill="#171D24"/>
+<circle cx="111" cy="351" r="1" fill="#171D24"/>
+<circle cx="119" cy="343" r="1" fill="#171D24"/>
+<circle cx="119" cy="351" r="1" fill="#171D24"/>
+<circle cx="127" cy="343" r="1" fill="#171D24"/>
+<circle cx="127" cy="351" r="1" fill="#171D24"/>
+<circle cx="135" cy="343" r="1" fill="#171D24"/>
+<circle cx="135" cy="351" r="1" fill="#171D24"/>
+<circle cx="143" cy="343" r="1" fill="#171D24"/>
+<circle cx="143" cy="351" r="1" fill="#171D24"/>
+<circle cx="151" cy="343" r="1" fill="#171D24"/>
+<circle cx="151" cy="351" r="1" fill="#171D24"/>
+<circle cx="159" cy="343" r="1" fill="#171D24"/>
+<circle cx="159" cy="351" r="1" fill="#171D24"/>
+<circle cx="167" cy="343" r="1" fill="#171D24"/>
+<circle cx="167" cy="351" r="1" fill="#171D24"/>
+<circle cx="175" cy="343" r="1" fill="#171D24"/>
+<circle cx="175" cy="351" r="1" fill="#171D24"/>
+<circle cx="183" cy="343" r="1" fill="#171D24"/>
+<circle cx="183" cy="351" r="1" fill="#171D24"/>
+<circle cx="191" cy="343" r="1" fill="#171D24"/>
+<circle cx="191" cy="351" r="1" fill="#171D24"/>
+<circle cx="199" cy="343" r="1" fill="#171D24"/>
+<circle cx="199" cy="351" r="1" fill="#171D24"/>
+<circle cx="207" cy="343" r="1" fill="#171D24"/>
+<circle cx="207" cy="351" r="1" fill="#171D24"/>
+<circle cx="215" cy="343" r="1" fill="#171D24"/>
+<circle cx="215" cy="351" r="1" fill="#171D24"/>
+<circle cx="223" cy="343" r="1" fill="#171D24"/>
+<circle cx="223" cy="351" r="1" fill="#171D24"/>
+<circle cx="231" cy="343" r="1" fill="#171D24"/>
+<circle cx="231" cy="351" r="1" fill="#171D24"/>
+<circle cx="239" cy="343" r="1" fill="#171D24"/>
+<circle cx="239" cy="351" r="1" fill="#171D24"/>
+<circle cx="247" cy="343" r="1" fill="#171D24"/>
+<circle cx="247" cy="351" r="1" fill="#171D24"/>
+<circle cx="255" cy="343" r="1" fill="#171D24"/>
+<circle cx="255" cy="351" r="1" fill="#171D24"/>
+<circle cx="263" cy="343" r="1" fill="#171D24"/>
+<circle cx="263" cy="351" r="1" fill="#171D24"/>
+<circle cx="271" cy="343" r="1" fill="#171D24"/>
+<circle cx="271" cy="351" r="1" fill="#171D24"/>
+<circle cx="279" cy="343" r="1" fill="#171D24"/>
+<circle cx="279" cy="351" r="1" fill="#171D24"/>
+<circle cx="287" cy="343" r="1" fill="#171D24"/>
+<circle cx="287" cy="351" r="1" fill="#171D24"/>
+<circle cx="295" cy="343" r="1" fill="#171D24"/>
+<circle cx="295" cy="351" r="1" fill="#171D24"/>
+<circle cx="303" cy="343" r="1" fill="#171D24"/>
+<circle cx="303" cy="351" r="1" fill="#171D24"/>
+<circle cx="311" cy="343" r="1" fill="#171D24"/>
+<circle cx="311" cy="351" r="1" fill="#171D24"/>
+<circle cx="319" cy="343" r="1" fill="#171D24"/>
+<circle cx="319" cy="351" r="1" fill="#171D24"/>
+<circle cx="327" cy="343" r="1" fill="#171D24"/>
+<circle cx="327" cy="351" r="1" fill="#171D24"/>
+<circle cx="335" cy="343" r="1" fill="#171D24"/>
+<circle cx="335" cy="351" r="1" fill="#171D24"/>
+<circle cx="343" cy="343" r="1" fill="#171D24"/>
+<circle cx="343" cy="351" r="1" fill="#171D24"/>
+<circle cx="351" cy="343" r="1" fill="#171D24"/>
+<circle cx="351" cy="351" r="1" fill="#171D24"/>
+<circle cx="359" cy="343" r="1" fill="#171D24"/>
+<circle cx="359" cy="351" r="1" fill="#171D24"/>
+<circle cx="367" cy="343" r="1" fill="#171D24"/>
+<circle cx="367" cy="351" r="1" fill="#171D24"/>
+<circle cx="7" cy="359" r="1" fill="#171D24"/>
+<circle cx="7" cy="367" r="1" fill="#171D24"/>
+<circle cx="15" cy="359" r="1" fill="#171D24"/>
+<circle cx="15" cy="367" r="1" fill="#171D24"/>
+<circle cx="23" cy="359" r="1" fill="#171D24"/>
+<circle cx="23" cy="367" r="1" fill="#171D24"/>
+<circle cx="31" cy="359" r="1" fill="#171D24"/>
+<circle cx="31" cy="367" r="1" fill="#171D24"/>
+<circle cx="39" cy="359" r="1" fill="#171D24"/>
+<circle cx="39" cy="367" r="1" fill="#171D24"/>
+<circle cx="47" cy="359" r="1" fill="#171D24"/>
+<circle cx="47" cy="367" r="1" fill="#171D24"/>
+<circle cx="55" cy="359" r="1" fill="#171D24"/>
+<circle cx="55" cy="367" r="1" fill="#171D24"/>
+<circle cx="63" cy="359" r="1" fill="#171D24"/>
+<circle cx="63" cy="367" r="1" fill="#171D24"/>
+<circle cx="71" cy="359" r="1" fill="#171D24"/>
+<circle cx="71" cy="367" r="1" fill="#171D24"/>
+<circle cx="79" cy="359" r="1" fill="#171D24"/>
+<circle cx="79" cy="367" r="1" fill="#171D24"/>
+<circle cx="87" cy="359" r="1" fill="#171D24"/>
+<circle cx="87" cy="367" r="1" fill="#171D24"/>
+<circle cx="95" cy="359" r="1" fill="#171D24"/>
+<circle cx="95" cy="367" r="1" fill="#171D24"/>
+<circle cx="103" cy="359" r="1" fill="#171D24"/>
+<circle cx="103" cy="367" r="1" fill="#171D24"/>
+<circle cx="111" cy="359" r="1" fill="#171D24"/>
+<circle cx="111" cy="367" r="1" fill="#171D24"/>
+<circle cx="119" cy="359" r="1" fill="#171D24"/>
+<circle cx="119" cy="367" r="1" fill="#171D24"/>
+<circle cx="127" cy="359" r="1" fill="#171D24"/>
+<circle cx="127" cy="367" r="1" fill="#171D24"/>
+<circle cx="135" cy="359" r="1" fill="#171D24"/>
+<circle cx="135" cy="367" r="1" fill="#171D24"/>
+<circle cx="143" cy="359" r="1" fill="#171D24"/>
+<circle cx="143" cy="367" r="1" fill="#171D24"/>
+<circle cx="151" cy="359" r="1" fill="#171D24"/>
+<circle cx="151" cy="367" r="1" fill="#171D24"/>
+<circle cx="159" cy="359" r="1" fill="#171D24"/>
+<circle cx="159" cy="367" r="1" fill="#171D24"/>
+<circle cx="167" cy="359" r="1" fill="#171D24"/>
+<circle cx="167" cy="367" r="1" fill="#171D24"/>
+<circle cx="175" cy="359" r="1" fill="#171D24"/>
+<circle cx="175" cy="367" r="1" fill="#171D24"/>
+<circle cx="183" cy="359" r="1" fill="#171D24"/>
+<circle cx="183" cy="367" r="1" fill="#171D24"/>
+<circle cx="191" cy="359" r="1" fill="#171D24"/>
+<circle cx="191" cy="367" r="1" fill="#171D24"/>
+<circle cx="199" cy="359" r="1" fill="#171D24"/>
+<circle cx="199" cy="367" r="1" fill="#171D24"/>
+<circle cx="207" cy="359" r="1" fill="#171D24"/>
+<circle cx="207" cy="367" r="1" fill="#171D24"/>
+<circle cx="215" cy="359" r="1" fill="#171D24"/>
+<circle cx="215" cy="367" r="1" fill="#171D24"/>
+<circle cx="223" cy="359" r="1" fill="#171D24"/>
+<circle cx="223" cy="367" r="1" fill="#171D24"/>
+<circle cx="231" cy="359" r="1" fill="#171D24"/>
+<circle cx="231" cy="367" r="1" fill="#171D24"/>
+<circle cx="239" cy="359" r="1" fill="#171D24"/>
+<circle cx="239" cy="367" r="1" fill="#171D24"/>
+<circle cx="247" cy="359" r="1" fill="#171D24"/>
+<circle cx="247" cy="367" r="1" fill="#171D24"/>
+<circle cx="255" cy="359" r="1" fill="#171D24"/>
+<circle cx="255" cy="367" r="1" fill="#171D24"/>
+<circle cx="263" cy="359" r="1" fill="#171D24"/>
+<circle cx="263" cy="367" r="1" fill="#171D24"/>
+<circle cx="271" cy="359" r="1" fill="#171D24"/>
+<circle cx="271" cy="367" r="1" fill="#171D24"/>
+<circle cx="279" cy="359" r="1" fill="#171D24"/>
+<circle cx="279" cy="367" r="1" fill="#171D24"/>
+<circle cx="287" cy="359" r="1" fill="#171D24"/>
+<circle cx="287" cy="367" r="1" fill="#171D24"/>
+<circle cx="295" cy="359" r="1" fill="#171D24"/>
+<circle cx="295" cy="367" r="1" fill="#171D24"/>
+<circle cx="303" cy="359" r="1" fill="#171D24"/>
+<circle cx="303" cy="367" r="1" fill="#171D24"/>
+<circle cx="311" cy="359" r="1" fill="#171D24"/>
+<circle cx="311" cy="367" r="1" fill="#171D24"/>
+<circle cx="319" cy="359" r="1" fill="#171D24"/>
+<circle cx="319" cy="367" r="1" fill="#171D24"/>
+<circle cx="327" cy="359" r="1" fill="#171D24"/>
+<circle cx="327" cy="367" r="1" fill="#171D24"/>
+<circle cx="335" cy="359" r="1" fill="#171D24"/>
+<circle cx="335" cy="367" r="1" fill="#171D24"/>
+<circle cx="343" cy="359" r="1" fill="#171D24"/>
+<circle cx="343" cy="367" r="1" fill="#171D24"/>
+<circle cx="351" cy="359" r="1" fill="#171D24"/>
+<circle cx="351" cy="367" r="1" fill="#171D24"/>
+<circle cx="359" cy="359" r="1" fill="#171D24"/>
+<circle cx="359" cy="367" r="1" fill="#171D24"/>
+<circle cx="367" cy="359" r="1" fill="#171D24"/>
+<circle cx="367" cy="367" r="1" fill="#171D24"/>
+</g>
+<defs>
+<clipPath id="clip0_724_94484">
+<rect width="369" height="419" fill="white" transform="translate(0 -1)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/apps/web/public/onboarding/bg-gradient-0.png b/apps/web/public/onboarding/bg-gradient-0.png
new file mode 100644
index 00000000..f050f4f4
--- /dev/null
+++ b/apps/web/public/onboarding/bg-gradient-0.png
Binary files differ
diff --git a/apps/web/public/onboarding/bg-gradient-1.png b/apps/web/public/onboarding/bg-gradient-1.png
new file mode 100644
index 00000000..5bcbc997
--- /dev/null
+++ b/apps/web/public/onboarding/bg-gradient-1.png
Binary files differ
diff --git a/apps/web/public/onboarding/chrome-ext-1.png b/apps/web/public/onboarding/chrome-ext-1.png
new file mode 100644
index 00000000..bad3096d
--- /dev/null
+++ b/apps/web/public/onboarding/chrome-ext-1.png
Binary files differ
diff --git a/apps/web/public/onboarding/chrome-ext-2.png b/apps/web/public/onboarding/chrome-ext-2.png
new file mode 100644
index 00000000..608c37b4
--- /dev/null
+++ b/apps/web/public/onboarding/chrome-ext-2.png
Binary files differ
diff --git a/apps/web/public/onboarding/chrome-ext-3.png b/apps/web/public/onboarding/chrome-ext-3.png
new file mode 100644
index 00000000..fc1c941b
--- /dev/null
+++ b/apps/web/public/onboarding/chrome-ext-3.png
Binary files differ
diff --git a/apps/web/public/onboarding/chrome.png b/apps/web/public/onboarding/chrome.png
new file mode 100644
index 00000000..edcfad7f
--- /dev/null
+++ b/apps/web/public/onboarding/chrome.png
Binary files differ
diff --git a/apps/web/public/onboarding/connectors.png b/apps/web/public/onboarding/connectors.png
new file mode 100644
index 00000000..0ce66316
--- /dev/null
+++ b/apps/web/public/onboarding/connectors.png
Binary files differ
diff --git a/apps/web/public/onboarding/human-brain.png b/apps/web/public/onboarding/human-brain.png
new file mode 100644
index 00000000..9a52a42e
--- /dev/null
+++ b/apps/web/public/onboarding/human-brain.png
Binary files differ
diff --git a/apps/web/public/onboarding/mcp.png b/apps/web/public/onboarding/mcp.png
new file mode 100644
index 00000000..b346ecfe
--- /dev/null
+++ b/apps/web/public/onboarding/mcp.png
Binary files differ
diff --git a/apps/web/public/onboarding/plant.png b/apps/web/public/onboarding/plant.png
new file mode 100644
index 00000000..e9651dae
--- /dev/null
+++ b/apps/web/public/onboarding/plant.png
Binary files differ
diff --git a/apps/web/public/onboarding/search.png b/apps/web/public/onboarding/search.png
new file mode 100644
index 00000000..e60d6872
--- /dev/null
+++ b/apps/web/public/onboarding/search.png
Binary files differ
diff --git a/apps/web/public/onboarding/x.png b/apps/web/public/onboarding/x.png
new file mode 100644
index 00000000..a981fc25
--- /dev/null
+++ b/apps/web/public/onboarding/x.png
Binary files differ
diff --git a/apps/web/utils/fonts.ts b/apps/web/utils/fonts.ts
new file mode 100644
index 00000000..dd13c6b5
--- /dev/null
+++ b/apps/web/utils/fonts.ts
@@ -0,0 +1,55 @@
+import { DM_Mono, DM_Sans } from "next/font/google"
+import { cn } from "@lib/utils"
+
+// DM Sans font
+export const dmSansFont = DM_Sans({
+ subsets: ["latin"],
+ weight: ["400", "500", "700"],
+ variable: "--font-dm-sans",
+})
+
+// DM Mono font
+export const dmMonoFont = DM_Mono({
+ subsets: ["latin"],
+ weight: ["400"],
+ variable: "--font-dm-mono",
+})
+
+/**
+ * Utility function that combines dmSansFont.className with required typography styles
+ * (letter-spacing: -0.01em and line-height: 135%)
+ */
+export function dmSansClassName(additionalClasses?: string) {
+ return cn(
+ dmSansFont.className,
+ "tracking-[-0.01em]",
+ "leading-[135%]",
+ additionalClasses,
+ )
+}
+
+/**
+ * Utility function that combines dmSansFont.className with required typography styles
+ * (letter-spacing: -0.01em and line-height: 125%)
+ */
+export function dmSans125ClassName(additionalClasses?: string) {
+ return cn(
+ dmSansFont.className,
+ "tracking-[-0.01em]",
+ "leading-[125%]",
+ additionalClasses,
+ )
+}
+
+/**
+ * Utility function that combines dmMonoFont.className with required typography styles
+ * (letter-spacing: -0.01em and line-height: 135%)
+ */
+export function dmMonoClassName(additionalClasses?: string) {
+ return cn(
+ dmMonoFont.className,
+ "tracking-[-0.01em]",
+ "leading-[135%]",
+ additionalClasses,
+ )
+}
diff --git a/apps/web/utils/url-helpers.ts b/apps/web/utils/url-helpers.ts
new file mode 100644
index 00000000..3a9ef5de
--- /dev/null
+++ b/apps/web/utils/url-helpers.ts
@@ -0,0 +1,59 @@
+export const isValidUrl = (url: string): boolean => {
+ try {
+ new URL(url)
+ return true
+ } catch {
+ return false
+ }
+}
+
+export const normalizeUrl = (url: string): string => {
+ if (!url.trim()) return ""
+ if (url.startsWith("http://") || url.startsWith("https://")) {
+ return url
+ }
+ return `https://${url}`
+}
+
+export const isTwitterUrl = (url: string): boolean => {
+ const normalizedUrl = url.toLowerCase()
+ return (
+ normalizedUrl.includes("twitter.com") || normalizedUrl.includes("x.com")
+ )
+}
+
+export const isLinkedInProfileUrl = (url: string): boolean => {
+ const normalizedUrl = url.toLowerCase()
+ return (
+ normalizedUrl.includes("linkedin.com/in/") &&
+ !normalizedUrl.includes("linkedin.com/company/")
+ )
+}
+
+export const collectValidUrls = (
+ linkedinProfile: string,
+ otherLinks: string[],
+): string[] => {
+ const urls: string[] = []
+
+ if (linkedinProfile.trim()) {
+ const normalizedLinkedIn = normalizeUrl(linkedinProfile.trim())
+ if (
+ isValidUrl(normalizedLinkedIn) &&
+ isLinkedInProfileUrl(normalizedLinkedIn)
+ ) {
+ urls.push(normalizedLinkedIn)
+ }
+ }
+
+ otherLinks
+ .filter((link) => link.trim())
+ .forEach((link) => {
+ const normalizedLink = normalizeUrl(link.trim())
+ if (isValidUrl(normalizedLink) && !isTwitterUrl(normalizedLink)) {
+ urls.push(normalizedLink)
+ }
+ })
+
+ return urls
+}
diff --git a/bun.lock b/bun.lock
new file mode 100644
index 00000000..e60c4864
--- /dev/null
+++ b/bun.lock
@@ -0,0 +1,6350 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 0,
+ "workspaces": {
+ "": {
+ "name": "supermemory",
+ "dependencies": {
+ "@ai-sdk/anthropic": "^1.2.12",
+ "@ai-sdk/cerebras": "^0.2.16",
+ "@ai-sdk/google": "^1.2.22",
+ "@ai-sdk/openai": "^2.0.42",
+ "@anthropic-ai/sdk": "^0.55.1",
+ "@google/genai": "^1.10.0",
+ "@google/generative-ai": "^0.24.1",
+ "@hono/zod-validator": "^0.7.1",
+ "@scalar/hono-api-reference": "^0.9.11",
+ "@vanilla-extract/recipes": "^0.5.7",
+ "ai": "^5.0.59",
+ "alchemy": "^0.81.4",
+ "atmn": "^0.0.16",
+ "better-auth": "^1.3.3",
+ "boxen": "^8.0.1",
+ "cloudflare": "^4.5.0",
+ "compromise": "^14.14.4",
+ "dedent": "^1.6.0",
+ "destr": "^2.0.5",
+ "drizzle-orm": "^0.44.3",
+ "drizzle-zod": "~0.7.1",
+ "file-type": "^21.0.0",
+ "hono-openapi": "^0.4.8",
+ "nanoid": "^5.1.5",
+ "neverthrow": "^8.2.0",
+ "pg": "^8.16.3",
+ "pino": "^9.7.0",
+ "postgres": "^3.4.7",
+ "random-word-slugs": "^0.1.7",
+ "resend": "^4.7.0",
+ "zod": "^3.25.76",
+ "zod-openapi": "^4.2.4",
+ },
+ "devDependencies": {
+ "@biomejs/biome": "^2.2.0",
+ "@sentry/cli": "^2.52.0",
+ "@total-typescript/tsconfig": "^1.0.4",
+ "@types/pg": "^8.15.4",
+ "drizzle-kit": "^0.31.4",
+ "turbo": "^2.5.4",
+ "typescript": "5.8.3",
+ "wrangler": "^4.42.2",
+ },
+ },
+ "apps/browser-extension": {
+ "name": "supermemory-browser-extension",
+ "version": "0.0.1",
+ "dependencies": {
+ "@tailwindcss/vite": "^4.1.12",
+ "@tanstack/react-query": "^5.81.2",
+ "posthog-js": "^1.261.7",
+ "react": "19.2.2",
+ "react-dom": "19.2.2",
+ "tailwindcss": "^4.1.12",
+ "turndown": "^7.1.3",
+ },
+ "devDependencies": {
+ "@types/chrome": "^0.1.4",
+ "@types/react": "^19.1.2",
+ "@types/react-dom": "^19.1.3",
+ "@types/turndown": "^5.0.5",
+ "@wxt-dev/module-react": "^1.1.3",
+ "typescript": "^5.8.3",
+ "wxt": "^0.20.6",
+ },
+ },
+ "apps/docs": {
+ "name": "@repo/docs",
+ "dependencies": {
+ "supermemory": "3.10.0",
+ },
+ "devDependencies": {
+ "@types/bun": "latest",
+ "mintlify": "^4.2.112",
+ "typescript": "^5.9.2",
+ },
+ },
+ "apps/mcp": {
+ "name": "supermemory-mcp",
+ "version": "4.0.0",
+ "dependencies": {
+ "@cloudflare/workers-oauth-provider": "^0.2.2",
+ "@modelcontextprotocol/sdk": "^1.12.1",
+ "agents": "^0.2.32",
+ "hono": "^4.11.1",
+ "posthog-node": "^5.18.0",
+ "supermemory": "^4.0.0",
+ "zod": "^3.25.76",
+ },
+ "devDependencies": {
+ "@cloudflare/workers-types": "^4.20250620.0",
+ "typescript": "^5.8.3",
+ "wrangler": "^4.4.0",
+ },
+ },
+ "apps/memory-graph-playground": {
+ "name": "memory-graph-playground",
+ "version": "0.1.0",
+ "dependencies": {
+ "@supermemory/memory-graph": "workspace:*",
+ "next": "16.0.3",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4",
+ "@types/node": "^20",
+ "@types/react": "^19",
+ "@types/react-dom": "^19",
+ "babel-plugin-react-compiler": "1.0.0",
+ "tailwindcss": "^4",
+ "typescript": "^5",
+ },
+ },
+ "apps/web": {
+ "name": "@repo/web",
+ "version": "0.1.0",
+ "dependencies": {
+ "@ai-sdk/google": "^2.0.0-beta.13",
+ "@ai-sdk/react": "2.0.0-beta.24",
+ "@better-fetch/fetch": "^1.1.18",
+ "@dnd-kit/core": "^6.3.1",
+ "@dnd-kit/modifiers": "^9.0.0",
+ "@dnd-kit/sortable": "^10.0.0",
+ "@dnd-kit/utilities": "^3.2.2",
+ "@opennextjs/cloudflare": "^1.12.0",
+ "@radix-ui/react-accordion": "^1.2.11",
+ "@radix-ui/react-alert-dialog": "^1.1.14",
+ "@radix-ui/react-avatar": "^1.1.10",
+ "@radix-ui/react-checkbox": "^1.3.2",
+ "@radix-ui/react-dialog": "^1.1.14",
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
+ "@radix-ui/react-label": "^2.1.7",
+ "@radix-ui/react-progress": "^1.1.7",
+ "@radix-ui/react-select": "^2.2.5",
+ "@radix-ui/react-separator": "^1.1.7",
+ "@radix-ui/react-slot": "^1.2.3",
+ "@radix-ui/react-tabs": "^1.1.12",
+ "@radix-ui/react-toggle": "^1.1.9",
+ "@radix-ui/react-toggle-group": "^1.1.10",
+ "@radix-ui/react-tooltip": "^1.2.7",
+ "@react-router/fs-routes": "^7.6.2",
+ "@react-router/node": "^7.6.2",
+ "@react-router/serve": "^7.6.2",
+ "@sentry/nextjs": "^10.22.0",
+ "@tailwindcss/typography": "^0.5.16",
+ "@tanstack/react-form": "^1.12.4",
+ "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query-devtools": "^5.84.2",
+ "@tanstack/react-table": "^8.21.3",
+ "@tanstack/react-virtual": "^3.13.12",
+ "@types/dompurify": "^3.2.0",
+ "ai": "5.0.0-beta.24",
+ "autumn-js": "0.0.116",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "date-fns": "^4.1.0",
+ "dompurify": "^3.2.7",
+ "dotenv": "^16.6.0",
+ "embla-carousel-autoplay": "^8.6.0",
+ "embla-carousel-react": "^8.6.0",
+ "flubber": "^0.4.2",
+ "framer-motion": "^12.23.12",
+ "idb-keyval": "^6.2.2",
+ "is-hotkey": "^0.2.0",
+ "lucide-react": "^0.525.0",
+ "masonic": "^4.1.0",
+ "motion": "^12.19.2",
+ "next": "16.0.9",
+ "next-themes": "^0.4.6",
+ "nuqs": "^2.5.2",
+ "pdfjs-dist": "5.4.296",
+ "posthog-js": "^1.257.0",
+ "random-word-slugs": "^0.1.7",
+ "react": "19.2.2",
+ "react-dom": "19.2.2",
+ "react-dropzone": "^14.3.8",
+ "react-hotkeys-hook": "^5.2.1",
+ "react-markdown": "^10.1.0",
+ "react-pdf": "^10.2.0",
+ "react-tweet": "^3.2.2",
+ "recharts": "2",
+ "slate": "^0.118.0",
+ "slate-react": "^0.117.4",
+ "sonner": "^2.0.5",
+ "streamdown": "^1.1.6",
+ "tailwind-merge": "^3.3.1",
+ "tw-animate-css": "^1.3.4",
+ "vaul": "^1.1.2",
+ "zustand": "^5.0.7",
+ },
+ "devDependencies": {
+ "@biomejs/biome": "^2.2.2",
+ "@sentry/cli": "^2.52.0",
+ "@tailwindcss/postcss": "^4.1.11",
+ "@total-typescript/tsconfig": "^1.0.4",
+ "@types/is-hotkey": "^0.1.10",
+ "@types/node": "^24.0.4",
+ "@types/react": "19.2.2",
+ "@types/react-dom": "19.2.2",
+ "tailwindcss": "^4.1.11",
+ "typescript": "^5.8.3",
+ "wrangler": "^4.26.0",
+ },
+ },
+ "packages/ai-sdk": {
+ "name": "@supermemory/ai-sdk",
+ "version": "1.0.8",
+ "dependencies": {
+ "@ai-sdk/openai": "^2.0.22",
+ "@ai-sdk/provider": "^2.0.0",
+ "ai": "^5.0.113",
+ "supermemory": "^3.0.0-alpha.26",
+ "zod": "^4.1.8",
+ },
+ "devDependencies": {
+ "@total-typescript/tsconfig": "^1.0.4",
+ "@types/bun": "^1.2.21",
+ "tsdown": "^0.14.2",
+ "typescript": "^5.9.2",
+ "vitest": "^3.2.4",
+ },
+ },
+ "packages/hooks": {
+ "name": "@repo/hooks",
+ "version": "0.0.0",
+ },
+ "packages/lib": {
+ "name": "@repo/lib",
+ "version": "0.0.0",
+ "dependencies": {
+ "@ai-sdk/anthropic": "^1.2.12",
+ "@ai-sdk/google": "^1.2.22",
+ "@ai-sdk/groq": "^1.2.9",
+ "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query-devtools": "^5.84.2",
+ "ai-gateway-provider": "^0.0.11",
+ },
+ },
+ "packages/memory-graph": {
+ "name": "@supermemory/memory-graph",
+ "version": "0.1.8",
+ "dependencies": {
+ "@emotion/is-prop-valid": "^1.4.0",
+ "@radix-ui/react-collapsible": "^1.1.12",
+ "@radix-ui/react-slot": "^1.2.4",
+ "@vanilla-extract/css": "^1.17.4",
+ "@vanilla-extract/recipes": "^0.5.7",
+ "@vanilla-extract/sprinkles": "^1.6.5",
+ "d3-force": "^3.0.0",
+ "lucide-react": "^0.552.0",
+ "motion": "^12.23.24",
+ },
+ "devDependencies": {
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "@vanilla-extract/vite-plugin": "^5.1.1",
+ "@vitejs/plugin-react": "^5.1.0",
+ "typescript": "^5.9.3",
+ "vite": "^7.2.1",
+ },
+ "peerDependencies": {
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0",
+ },
+ },
+ "packages/tools": {
+ "name": "@supermemory/tools",
+ "version": "1.3.65",
+ "dependencies": {
+ "@ai-sdk/anthropic": "^2.0.25",
+ "@ai-sdk/openai": "^2.0.23",
+ "ai": "^5.0.29",
+ "openai": "^4.104.0",
+ "supermemory": "^3.0.0-alpha.26",
+ "zod": "^4.1.5",
+ },
+ "devDependencies": {
+ "@ai-sdk/provider": "^3.0.0",
+ "@anthropic-ai/sdk": "^0.65.0",
+ "@total-typescript/tsconfig": "^1.0.4",
+ "@types/bun": "^1.2.21",
+ "dotenv": "^16.6.1",
+ "tsdown": "^0.14.2",
+ "typescript": "^5.9.2",
+ "vitest": "^3.2.4",
+ },
+ "peerDependencies": {
+ "@ai-sdk/provider": "^2.0.0 || ^3.0.0",
+ },
+ },
+ "packages/ui": {
+ "name": "@repo/ui",
+ "version": "0.0.0",
+ "dependencies": {
+ "@pixi/react": "^8.0.3",
+ "@radix-ui/react-accordion": "^1.2.11",
+ "@radix-ui/react-alert-dialog": "^1.1.14",
+ "@radix-ui/react-avatar": "^1.1.10",
+ "@radix-ui/react-checkbox": "^1.3.2",
+ "@radix-ui/react-collapsible": "^1.1.11",
+ "@radix-ui/react-dialog": "^1.1.14",
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
+ "@radix-ui/react-hover-card": "^1.1.15",
+ "@radix-ui/react-label": "^2.1.7",
+ "@radix-ui/react-popover": "^1.1.14",
+ "@radix-ui/react-progress": "^1.1.7",
+ "@radix-ui/react-scroll-area": "^1.2.9",
+ "@radix-ui/react-select": "^2.2.5",
+ "@radix-ui/react-separator": "^1.1.7",
+ "@radix-ui/react-slot": "^1.2.3",
+ "@radix-ui/react-tabs": "^1.1.12",
+ "@radix-ui/react-toggle": "^1.1.9",
+ "@radix-ui/react-toggle-group": "^1.1.10",
+ "@radix-ui/react-tooltip": "^1.2.7",
+ "class-variance-authority": "^0.7.1",
+ "cmdk": "^1.1.1",
+ "embla-carousel-react": "^8.6.0",
+ "lucide-react": "^0.525.0",
+ "next-themes": "^0.4.6",
+ "pixi.js": "^8.12.0",
+ "recharts": "2.15.4",
+ "sonner": "^2.0.6",
+ "vaul": "^1.1.2",
+ },
+ },
+ "packages/validation": {
+ "name": "@repo/validation",
+ "version": "0.0.0",
+ },
+ },
+ "packages": {
+ "@1natsu/wait-element": ["@1natsu/[email protected]", "", { "dependencies": { "defu": "^6.1.4", "many-keys-map": "^2.0.1" } }, "sha512-qWxSJD+Q5b8bKOvESFifvfZ92DuMsY+03SBNjTO34ipJLP6mZ9yK4bQz/vlh48aEQXoJfaZBqUwKL5BdI5iiWw=="],
+
+ "@ai-sdk/anthropic": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ=="],
+
+ "@ai-sdk/cerebras": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/openai-compatible": "0.2.16", "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-FbT3gFYADXwyjQlpluWxl5fRnkJvGMHX5ahLZZ7qqpDQHH86ZO6X9j9Gk6vcMCwNPpI7+miiK79q1e5wzVHBSQ=="],
+
+ "@ai-sdk/gateway": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20", "@vercel/oidc": "3.0.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-mflk80YF8hj8vrF9e1IHhovGKC1ubX+sY88pesSk3pUiXfH5VPO8dgzNnxjwsqsCZrnkHcztxS5cSl4TzSiEuA=="],
+
+ "@ai-sdk/google": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-Ppxu3DIieF1G9pyQ5O1Z646GYR0gkC57YdBqXJ82qvCdhEhZHu0TWhmnOoeIWe2olSbuDeoOY+MfJrW8dzS3Hw=="],
+
+ "@ai-sdk/groq": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-7MoDaxm8yWtiRbD1LipYZG0kBl+Xe0sv/EeyxnHnGPZappXdlgtdOgTZVjjXkT3nWP30jjZi9A45zoVrBMb3Xg=="],
+
+ "@ai-sdk/openai": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-4+qWkBCbL9HPKbgrUO/F2uXZ8GqrYxHa8SWEYIzxEJ9zvWw3ISr3t1/27O1i8MGSym+PzEyHBT48EV4LAwWaEw=="],
+
+ "@ai-sdk/openai-compatible": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8" }, "peerDependencies": { "zod": "^3.0.0" } }, "sha512-LkvfcM8slJedRyJa/MiMiaOzcMjV1zNDwzTHEGz7aAsgsQV0maLfmJRi/nuSwf5jmp0EouC+JXXDUj2l94HgQw=="],
+
+ "@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng=="],
+
+ "@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA=="],
+
+ "@ai-sdk/react": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider-utils": "3.0.0-beta.5", "ai": "5.0.0-beta.24", "swr": "^2.2.5", "throttleit": "2.1.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.25.76 || ^4" }, "optionalPeers": ["zod"] }, "sha512-Hfgb+z7MteHMaSdQ3G8hhTDridmUk2fkuRa17OaFlsfySYaFQd/exC0EBJlT+05ljcJPInyurdrxbgZLtsoPpg=="],
+
+ "@ai-sdk/ui-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.23.8" } }, "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w=="],
+
+ "@aklinker1/rollup-plugin-visualizer": ["@aklinker1/[email protected]", "", { "dependencies": { "open": "^8.4.0", "picomatch": "^2.3.1", "source-map": "^0.7.4", "yargs": "^17.5.1" }, "peerDependencies": { "rollup": "2.x || 3.x || 4.x" }, "optionalPeers": ["rollup"], "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" } }, "sha512-X24LvEGw6UFmy0lpGJDmXsMyBD58XmX1bbwsaMLhNoM+UMQfQ3b2RtC+nz4b/NoRK5r6QJSKJHBNVeUdwqybaQ=="],
+
+ "@alcalzone/ansi-tokenize": ["@alcalzone/[email protected]", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-jsElTJ0sQ4wHRz+C45tfect76BwbTbgkgKByOzpCN9xG61N5V6u/glvg1CsNJhq2xJIFpKHSwG3D2wPPuEYOrQ=="],
+
+ "@alloc/quick-lru": ["@alloc/[email protected]", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="],
+
+ "@antfu/install-pkg": ["@antfu/[email protected]", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="],
+
+ "@anthropic-ai/sdk": ["@anthropic-ai/[email protected]", "", { "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-gjOMS4chmm8BxClKmCjNHmvf1FrO1Cn++CSX6K3YCZjz5JG4I9ZttQ/xEH4FBsz6HQyZvnUpiKlOAkmxaGmEaQ=="],
+
+ "@apidevtools/json-schema-ref-parser": ["@apidevtools/[email protected]", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ=="],
+
+ "@apm-js-collab/code-transformer": ["@apm-js-collab/[email protected]", "", {}, "sha512-YRjJjNq5KFSjDUoqu5pFUWrrsvGOxl6c3bu+uMFc9HNNptZ2rNU/TI2nLw4jnhQNtka972Ee2m3uqbvDQtPeCA=="],
+
+ "@apm-js-collab/tracing-hooks": ["@apm-js-collab/[email protected]", "", { "dependencies": { "@apm-js-collab/code-transformer": "^0.8.0", "debug": "^4.4.1", "module-details-from-path": "^1.0.4" } }, "sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw=="],
+
+ "@ark/schema": ["@ark/[email protected]", "", { "dependencies": { "@ark/util": "0.55.0" } }, "sha512-IlSIc0FmLKTDGr4I/FzNHauMn0MADA6bCjT1wauu4k6MyxhC1R9gz0olNpIRvK7lGGDwtc/VO0RUDNvVQW5WFg=="],
+
+ "@ark/util": ["@ark/[email protected]", "", {}, "sha512-aWFNK7aqSvqFtVsl1xmbTjGbg91uqtJV7Za76YGNEwIO4qLjMfyY8flmmbhooYMuqPCO2jyxu8hve943D+w3bA=="],
+
+ "@ast-grep/napi": ["@ast-grep/[email protected]", "", { "optionalDependencies": { "@ast-grep/napi-darwin-arm64": "0.40.0", "@ast-grep/napi-darwin-x64": "0.40.0", "@ast-grep/napi-linux-arm64-gnu": "0.40.0", "@ast-grep/napi-linux-arm64-musl": "0.40.0", "@ast-grep/napi-linux-x64-gnu": "0.40.0", "@ast-grep/napi-linux-x64-musl": "0.40.0", "@ast-grep/napi-win32-arm64-msvc": "0.40.0", "@ast-grep/napi-win32-ia32-msvc": "0.40.0", "@ast-grep/napi-win32-x64-msvc": "0.40.0" } }, "sha512-tq6nO/8KwUF/mHuk1ECaAOSOlz2OB/PmygnvprJzyAHGRVzdcffblaOOWe90M9sGz5MAasXoF+PTcayQj9TKKA=="],
+
+ "@ast-grep/napi-darwin-arm64": ["@ast-grep/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ZMjl5yLhKjxdwbqEEdMizgQdWH2NrWsM6Px+JuGErgCDe6Aedq9yurEPV7veybGdLVJQhOah6htlSflXxjHnYA=="],
+
+ "@ast-grep/napi-darwin-x64": ["@ast-grep/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-f9Ol5oQKNRMBkvDtzBK1WiNn2/3eejF2Pn9xwTj7PhXuSFseedOspPYllxQo0gbwUlw/DJqGFTce/jarhR/rBw=="],
+
+ "@ast-grep/napi-linux-arm64-gnu": ["@ast-grep/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-+tO+VW5GDhT9jGkKOK+3b8+ohKjC98WTzn7wSskd/myyhK3oYL1WTKqCm07WSYBZOJvb3z+WaX+wOUrc4bvtyQ=="],
+
+ "@ast-grep/napi-linux-arm64-musl": ["@ast-grep/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-MS9qalLRjUnF2PCzuTKTvCMVSORYHxxe3Qa0+SSaVULsXRBmuy5C/b1FeWwMFnwNnC0uie3VDet31Zujwi8q6A=="],
+
+ "@ast-grep/napi-linux-x64-gnu": ["@ast-grep/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-BeHZVMNXhM3WV3XE2yghO0fRxhMOt8BTN972p5piYEQUvKeSHmS8oeGcs6Ahgx5znBclqqqq37ZfioYANiTqJA=="],
+
+ "@ast-grep/napi-linux-x64-musl": ["@ast-grep/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-rG1YujF7O+lszX8fd5u6qkFTuv4FwHXjWvt1CCvCxXwQLSY96LaCW88oVKg7WoEYQh54y++Fk57F+Wh9Gv9nVQ=="],
+
+ "@ast-grep/napi-win32-arm64-msvc": ["@ast-grep/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-9SqmnQqd4zTEUk6yx0TuW2ycZZs2+e569O/R0QnhSiQNpgwiJCYOe/yPS0BC9HkiaozQm6jjAcasWpFtz/dp+w=="],
+
+ "@ast-grep/napi-win32-ia32-msvc": ["@ast-grep/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-0JkdBZi5l9vZhGEO38A1way0LmLRDU5Vos6MXrLIOVkymmzDTDlCdY394J1LMmmsfwWcyJg6J7Yv2dw41MCxDQ=="],
+
+ "@ast-grep/napi-win32-x64-msvc": ["@ast-grep/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-Hk2IwfPqMFGZt5SRxsoWmGLxBXxprow4LRp1eG6V8EEiJCNHxZ9ZiEaIc5bNvMDBjHVSnqZAXT22dROhrcSKQg=="],
+
+ "@asyncapi/parser": ["@asyncapi/[email protected]", "", { "dependencies": { "@asyncapi/specs": "^6.8.0", "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", "@stoplight/json": "3.21.0", "@stoplight/json-ref-readers": "^1.2.2", "@stoplight/json-ref-resolver": "^3.1.5", "@stoplight/spectral-core": "^1.18.3", "@stoplight/spectral-functions": "^1.7.2", "@stoplight/spectral-parsers": "^1.0.2", "@stoplight/spectral-ref-resolver": "^1.0.3", "@stoplight/types": "^13.12.0", "@types/json-schema": "^7.0.11", "@types/urijs": "^1.19.19", "ajv": "^8.17.1", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", "avsc": "^5.7.5", "js-yaml": "^4.1.0", "jsonpath-plus": "^10.0.0", "node-fetch": "2.6.7" } }, "sha512-Sxn74oHiZSU6+cVeZy62iPZMFMvKp4jupMFHelSICCMw1qELmUHPvuZSr+ZHDmNGgHcEpzJM5HN02kR7T4g+PQ=="],
+
+ "@asyncapi/specs": ["@asyncapi/[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.11" } }, "sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng=="],
+
+ "@aws-crypto/crc32": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="],
+
+ "@aws-crypto/crc32c": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag=="],
+
+ "@aws-crypto/ie11-detection": ["@aws-crypto/[email protected]", "", { "dependencies": { "tslib": "^1.11.1" } }, "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q=="],
+
+ "@aws-crypto/sha1-browser": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg=="],
+
+ "@aws-crypto/sha256-browser": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="],
+
+ "@aws-crypto/sha256-js": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="],
+
+ "@aws-crypto/supports-web-crypto": ["@aws-crypto/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="],
+
+ "@aws-crypto/util": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="],
+
+ "@aws-sdk/client-cloudfront": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/client-sts": "3.398.0", "@aws-sdk/credential-provider-node": "3.398.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@aws-sdk/xml-builder": "3.310.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-stream": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "@smithy/util-waiter": "^2.0.5", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" } }, "sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw=="],
+
+ "@aws-sdk/client-cognito-identity": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-xuRi6I5+KHvIvfYGXJoEz6EGu7cn9+HnL88iEul5yc6RDE8T251qvp9c2KK8CfajnmWN5YsoEA1QZ/J4n4YERw=="],
+
+ "@aws-sdk/client-dynamodb": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/dynamodb-codec": "3.965.0", "@aws-sdk/middleware-endpoint-discovery": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-QRVgLB6/CRum0wjjPwclHXO6KjagLqOjsdTvIw6J42+kYUoO62DT9o0NWPXXWyfxBSDpgBnW8K94iHtOM/+/jw=="],
+
+ "@aws-sdk/client-lambda": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/eventstream-serde-browser": "^4.2.7", "@smithy/eventstream-serde-config-resolver": "^4.3.7", "@smithy/eventstream-serde-node": "^4.2.7", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-TLwg348w1b4Im1wSKYy3sSjO8gDBVbnbxv+EUm9LYcBH1YT2iGNmkdOfRq9UQEF/A33a+uU3QmVAswNJAhSovg=="],
+
+ "@aws-sdk/client-s3": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/middleware-bucket-endpoint": "3.965.0", "@aws-sdk/middleware-expect-continue": "3.965.0", "@aws-sdk/middleware-flexible-checksums": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-location-constraint": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-sdk-s3": "3.965.0", "@aws-sdk/middleware-ssec": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/signature-v4-multi-region": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/eventstream-serde-browser": "^4.2.7", "@smithy/eventstream-serde-config-resolver": "^4.3.7", "@smithy/eventstream-serde-node": "^4.2.7", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-blob-browser": "^4.2.8", "@smithy/hash-node": "^4.2.7", "@smithy/hash-stream-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/md5-js": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-BTeaaU1iK0BfatTCrtYjNkIHCoZH256qOI18l9bK4z6mVOgpHkYN4RvOu+NnKgyX58n+HWfOuhtKUD4OE33Vdw=="],
+
+ "@aws-sdk/client-sqs": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-sdk-sqs": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/md5-js": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-l86c7lK9YM9MNC6Lj0uT/hwBBCcemYs2HblyHLJmD1asozg+jKib51/jq5dlk8O7C9wH+zn/So8uMA/50oy2qw=="],
+
+ "@aws-sdk/client-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-iv2tr+n4aZ+nPUFFvG00hISPuEd4DU+1/Q8rPAYKXsM+vEPJ2nAnP5duUOa2fbOLIUCRxX3dcQaQaghVHDHzQw=="],
+
+ "@aws-sdk/client-sts": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/credential-provider-node": "3.398.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-sdk-sts": "3.398.0", "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" } }, "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg=="],
+
+ "@aws-sdk/core": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@aws-sdk/xml-builder": "3.965.0", "@smithy/core": "^3.20.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/property-provider": "^4.2.7", "@smithy/protocol-http": "^5.3.7", "@smithy/signature-v4": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-aq9BhQxdHit8UUJ9C0im9TtuKeK0pT6NXmNJxMTCFeStI7GG7ImIsSislg3BZTIifVg1P6VLdzMyz9de85iutQ=="],
+
+ "@aws-sdk/crc64-nvme": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-9FbIyJ/Zz1AdEIrb0+Pn7wRi+F/0Y566ooepg0hDyHUzRV3ZXKjOlu3wJH3YwTz2UkdwQmldfUos2yDJps7RyA=="],
+
+ "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/client-cognito-identity": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-qVRX9WkZ5xmUsEBIQ/Rc0rO7i5m+MVv4NDg0eS+JP9dCL2QtHPze8wy1d0Y5kE9xGRBazUCORXm0pY+aU6mv1g=="],
+
+ "@aws-sdk/credential-provider-env": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-mdGnaIjMxTIjsb70dEj3VsWPWpoq1V5MWzBSfJq2H8zgMBXjn6d5/qHP8HMf53l9PrsgqzMpXGv3Av549A2x1g=="],
+
+ "@aws-sdk/credential-provider-http": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/node-http-handler": "^4.4.7", "@smithy/property-provider": "^4.2.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/util-stream": "^4.5.8", "tslib": "^2.6.2" } }, "sha512-YuGQel9EgA/z25oeLM+GYYQS750+8AESvr7ZEmVnRPL0sg+K3DmGqdv+9gFjFd0UkLjTlC/jtbP2cuY6UcPiHQ=="],
+
+ "@aws-sdk/credential-provider-ini": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-env": "3.965.0", "@aws-sdk/credential-provider-http": "3.965.0", "@aws-sdk/credential-provider-login": "3.965.0", "@aws-sdk/credential-provider-process": "3.965.0", "@aws-sdk/credential-provider-sso": "3.965.0", "@aws-sdk/credential-provider-web-identity": "3.965.0", "@aws-sdk/nested-clients": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/credential-provider-imds": "^4.2.7", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-xRo72Prer5s0xYVSCxCymVIRSqrVlevK5cmU0GWq9yJtaBNpnx02jwdJg80t/Ni7pgbkQyFWRMcq38c1tc6M/w=="],
+
+ "@aws-sdk/credential-provider-login": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/nested-clients": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/protocol-http": "^5.3.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-43/H8Qku8LHyugbhLo8kjD+eauhybCeVkmrnvWl8bXNHJP7xi1jCdtBQJKKJqiIHZws4MOEwkji8kFdAVRCe6g=="],
+
+ "@aws-sdk/credential-provider-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.965.0", "@aws-sdk/credential-provider-http": "3.965.0", "@aws-sdk/credential-provider-ini": "3.965.0", "@aws-sdk/credential-provider-process": "3.965.0", "@aws-sdk/credential-provider-sso": "3.965.0", "@aws-sdk/credential-provider-web-identity": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/credential-provider-imds": "^4.2.7", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-cRxmMHF+Zh2lkkkEVduKl+8OQdtg/DhYA69+/7SPSQURlgyjFQGlRQ58B7q8abuNlrGT3sV+UzeOylZpJbV61Q=="],
+
+ "@aws-sdk/credential-provider-process": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-gmkPmdiR0yxnTzLPDb7rwrDhGuCUjtgnj8qWP+m0gSz/W43rR4jRPVEf6DUX2iC+ImQhxo3NFhuB3V42Kzo3TQ=="],
+
+ "@aws-sdk/credential-provider-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/client-sso": "3.965.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/token-providers": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-N01AYvtCqG3Wo/s/LvYt19ity18/FqggiXT+elAs3X9Om/Wfx+hw9G+i7jaDmy+/xewmv8AdQ2SK5Q30dXw/Fw=="],
+
+ "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/nested-clients": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-T4gMZ2JzXnfxe1oTD+EDGLSxFfk1+WkLZdiHXEMZp8bFI1swP/3YyDFXI+Ib9Uq1JhnAmrCXtOnkicKEhDkdhQ=="],
+
+ "@aws-sdk/credential-providers": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/client-cognito-identity": "3.965.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/credential-provider-cognito-identity": "3.965.0", "@aws-sdk/credential-provider-env": "3.965.0", "@aws-sdk/credential-provider-http": "3.965.0", "@aws-sdk/credential-provider-ini": "3.965.0", "@aws-sdk/credential-provider-login": "3.965.0", "@aws-sdk/credential-provider-node": "3.965.0", "@aws-sdk/credential-provider-process": "3.965.0", "@aws-sdk/credential-provider-sso": "3.965.0", "@aws-sdk/credential-provider-web-identity": "3.965.0", "@aws-sdk/nested-clients": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/credential-provider-imds": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/property-provider": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-nfHV4Ij+S2Y7rTrxQFhIPfZLk+Gj1COwu831HfJ5nIGluSkECnofCufGr0I5v3SkCNOGXKbn2nc7YEGF61oOKg=="],
+
+ "@aws-sdk/dynamodb-codec": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@smithy/core": "^3.20.0", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-dynamodb": "^3.965.0" } }, "sha512-YFyhNyNYTsfelCS9e28VQgc7/J3fQYgxwy0Eq9o+vIfk4r8DK2T+J+3JgZy+SpNi6S7zCA1clVNVrw38T72UFw=="],
+
+ "@aws-sdk/endpoint-cache": ["@aws-sdk/[email protected]", "", { "dependencies": { "mnemonist": "0.38.3", "tslib": "^2.6.2" } }, "sha512-7bqt08b1aVgHHRbdUK9iIMI2CKpaeYs3cLNeZ/Js7GRAQIRQ0OsRILNxGdtWrkVbpp8ITM++iWJCGUw/X19EdA=="],
+
+ "@aws-sdk/middleware-bucket-endpoint": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@aws-sdk/util-arn-parser": "3.965.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-gbdv3Dl8l8xmg4oH60fXvfDyTxfx28w5/Hxdymx3vurM07tAyd4qld8zEXejnSpraTo45QcHRtk5auELIMfeag=="],
+
+ "@aws-sdk/middleware-endpoint-discovery": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/endpoint-cache": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-XVUV2FmJnDG0FCCeTw0wniP1EkDR+Dy3Pl91aTkRvUw9OYbTEPLGIZiABn1EKdQPOEc77Y1+FQQ6QbjSZKkJ/A=="],
+
+ "@aws-sdk/middleware-expect-continue": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-UBxVytsmhEmFwkBnt+aV0eAJ7uc+ouNokCqMBrQ7Oc5A77qhlcHfOgXIKz2SxqsiYTsDq+a0lWFM/XpyRWraqA=="],
+
+ "@aws-sdk/middleware-flexible-checksums": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/crc64-nvme": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/is-array-buffer": "^4.2.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-5rzEW08trcpHMe6jkQyYc4PL1KG/H7BbnySFSzhih+r/gktQEiE36sb1BNf7av9I0Vk2Ccmt7wocB5PIT7GDkQ=="],
+
+ "@aws-sdk/middleware-host-header": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA=="],
+
+ "@aws-sdk/middleware-location-constraint": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-07T1rwAarQs33mVg5U28AsSdLB5JUXu9yBTBmspFGajKVsEahIyntf53j9mAXF1N2KR0bNdP0J4A0kst4t43UQ=="],
+
+ "@aws-sdk/middleware-logger": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw=="],
+
+ "@aws-sdk/middleware-recursion-detection": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA=="],
+
+ "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-arn-parser": "3.965.0", "@smithy/core": "^3.20.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/protocol-http": "^5.3.7", "@smithy/signature-v4": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-dXEgnojaaVRl+OlOx35mg3rYEbfffIN4X6tLmIfDnaKz0hMaDMvsE9jJXb/vBvokbdO1sVB27/2FEM4ttLSLnw=="],
+
+ "@aws-sdk/middleware-sdk-sqs": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-2ZdEJIBh+TizwO2JUyNJEHTBvoa9sConoEXZbrAlqhAkFeIccdcYqZMbm5MEwwePIfyoI2gF7hgUXy2+xTZ1mQ=="],
+
+ "@aws-sdk/middleware-sdk-sts": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/middleware-signing": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ=="],
+
+ "@aws-sdk/middleware-signing": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^2.0.5", "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.2.2", "@smithy/util-middleware": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w=="],
+
+ "@aws-sdk/middleware-ssec": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-dke++CTw26y+a2D1DdVuZ4+2TkgItdx6TeuE0zOl4lsqXGvTBUG4eaIZalt7ZOAW5ys2pbDOk1bPuh4opoD3pQ=="],
+
+ "@aws-sdk/middleware-user-agent": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@smithy/core": "^3.20.0", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-RBEYVGgu/WeAt+H/qLrGc+t8LqAUkbyvh3wBfTiuAD+uBcWsKnvnB1iSBX75FearC0fmoxzXRUc0PMxMdqpjJQ=="],
+
+ "@aws-sdk/nested-clients": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.965.0", "@aws-sdk/middleware-host-header": "3.965.0", "@aws-sdk/middleware-logger": "3.965.0", "@aws-sdk/middleware-recursion-detection": "3.965.0", "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/region-config-resolver": "3.965.0", "@aws-sdk/types": "3.965.0", "@aws-sdk/util-endpoints": "3.965.0", "@aws-sdk/util-user-agent-browser": "3.965.0", "@aws-sdk/util-user-agent-node": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/core": "^3.20.0", "@smithy/fetch-http-handler": "^5.3.8", "@smithy/hash-node": "^4.2.7", "@smithy/invalid-dependency": "^4.2.7", "@smithy/middleware-content-length": "^4.2.7", "@smithy/middleware-endpoint": "^4.4.1", "@smithy/middleware-retry": "^4.4.17", "@smithy/middleware-serde": "^4.2.8", "@smithy/middleware-stack": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/node-http-handler": "^4.4.7", "@smithy/protocol-http": "^5.3.7", "@smithy/smithy-client": "^4.10.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.16", "@smithy/util-defaults-mode-node": "^4.2.19", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-muNVUjUEU+/KLFrLzQ8PMXyw4+a/MP6t4GIvwLtyx/kH0rpSy5s0YmqacMXheuIe6F/5QT8uksXGNAQenitkGQ=="],
+
+ "@aws-sdk/region-config-resolver": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/config-resolver": "^4.4.5", "@smithy/node-config-provider": "^4.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg=="],
+
+ "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/protocol-http": "^5.3.7", "@smithy/signature-v4": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-hgbAThbsUrWtNpFBQxzXevIfd5Qgr4TLbXY1AIbmpSX9fPVC114pdieRMpopJ0fYaJ7v5/blTiS6wzVdXleZ/w=="],
+
+ "@aws-sdk/token-providers": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/core": "3.965.0", "@aws-sdk/nested-clients": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-aR0qxg0b8flkXJVE+CM1gzo7uJ57md50z2eyCwofC0QIz5Y0P7/7vvb9/dmUQt6eT9XRN5iRcUqq2IVxVDvJOw=="],
+
+ "@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ=="],
+
+ "@aws-sdk/util-arn-parser": ["@aws-sdk/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-bNGKr5Tct28jGLkL8xIkGu7swpDgBpkTVbGaofhzr/X80iclbOv656RGxhMpDvmc4S9UuQnqLRXyceNFNF2V7Q=="],
+
+ "@aws-sdk/util-endpoints": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-endpoints": "^3.2.7", "tslib": "^2.6.2" } }, "sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ=="],
+
+ "@aws-sdk/util-locate-window": ["@aws-sdk/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-9LJFand4bIoOjOF4x3wx0UZYiFZRo4oUauxQSiEX2dVg+5qeBOJSjp2SeWykIE6+6frCZ5wvWm2fGLK8D32aJw=="],
+
+ "@aws-sdk/util-user-agent-browser": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.965.0", "@smithy/types": "^4.11.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ=="],
+
+ "@aws-sdk/util-user-agent-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.965.0", "@aws-sdk/types": "3.965.0", "@smithy/node-config-provider": "^4.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-kokIHUfNT3/P55E4fUJJrFHuuA9BbjFKUIxoLrd3UaRfdafT0ScRfg2eaZie6arf60EuhlUIZH0yALxttMEjxQ=="],
+
+ "@aws-sdk/util-utf8-browser": ["@aws-sdk/[email protected]", "", { "dependencies": { "tslib": "^2.3.1" } }, "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw=="],
+
+ "@aws-sdk/xml-builder": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g=="],
+
+ "@aws/lambda-invoke-store": ["@aws/[email protected]", "", {}, "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw=="],
+
+ "@babel/code-frame": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
+
+ "@babel/compat-data": ["@babel/[email protected]", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="],
+
+ "@babel/core": ["@babel/[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="],
+
+ "@babel/generator": ["@babel/[email protected]", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="],
+
+ "@babel/helper-annotate-as-pure": ["@babel/[email protected]", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="],
+
+ "@babel/helper-compilation-targets": ["@babel/[email protected]", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="],
+
+ "@babel/helper-create-class-features-plugin": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ=="],
+
+ "@babel/helper-globals": ["@babel/[email protected]", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="],
+
+ "@babel/helper-member-expression-to-functions": ["@babel/[email protected]", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="],
+
+ "@babel/helper-module-imports": ["@babel/[email protected]", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="],
+
+ "@babel/helper-module-transforms": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="],
+
+ "@babel/helper-optimise-call-expression": ["@babel/[email protected]", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="],
+
+ "@babel/helper-plugin-utils": ["@babel/[email protected]", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="],
+
+ "@babel/helper-replace-supers": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA=="],
+
+ "@babel/helper-skip-transparent-expression-wrappers": ["@babel/[email protected]", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="],
+
+ "@babel/helper-string-parser": ["@babel/[email protected]", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
+
+ "@babel/helper-validator-identifier": ["@babel/[email protected]", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="],
+
+ "@babel/helper-validator-option": ["@babel/[email protected]", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="],
+
+ "@babel/helpers": ["@babel/[email protected]", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="],
+
+ "@babel/parser": ["@babel/[email protected]", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="],
+
+ "@babel/plugin-syntax-jsx": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="],
+
+ "@babel/plugin-syntax-typescript": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="],
+
+ "@babel/plugin-transform-modules-commonjs": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw=="],
+
+ "@babel/plugin-transform-react-jsx-self": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="],
+
+ "@babel/plugin-transform-react-jsx-source": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="],
+
+ "@babel/plugin-transform-typescript": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA=="],
+
+ "@babel/preset-typescript": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g=="],
+
+ "@babel/runtime": ["@babel/[email protected]", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="],
+
+ "@babel/runtime-corejs3": ["@babel/[email protected]", "", { "dependencies": { "core-js-pure": "^3.43.0" } }, "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ=="],
+
+ "@babel/template": ["@babel/[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="],
+
+ "@babel/traverse": ["@babel/[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="],
+
+ "@babel/types": ["@babel/[email protected]", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="],
+
+ "@better-auth/core": ["@better-auth/[email protected]", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "zod": "^4.1.12" }, "peerDependencies": { "@better-auth/utils": "0.3.0", "@better-fetch/fetch": "1.1.21", "better-call": "1.1.7", "jose": "^6.1.0", "kysely": "^0.28.5", "nanostores": "^1.0.1" } }, "sha512-AThrfb6CpG80wqkanfrbN2/fGOYzhGladHFf3JhaWt/3/Vtf4h084T6PJLrDE7M/vCCGYvDI1DkvP3P1OB2HAg=="],
+
+ "@better-auth/telemetry": ["@better-auth/[email protected]", "", { "dependencies": { "@better-auth/utils": "0.3.0", "@better-fetch/fetch": "1.1.21" }, "peerDependencies": { "@better-auth/core": "1.4.10" } }, "sha512-Dq4XJX6EKsUu0h3jpRagX739p/VMOTcnJYWRrLtDYkqtZFg+sFiFsSWVcfapZoWpRSUGYX9iKwl6nDHn6Ju2oQ=="],
+
+ "@better-auth/utils": ["@better-auth/[email protected]", "", {}, "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw=="],
+
+ "@better-fetch/fetch": ["@better-fetch/[email protected]", "", {}, "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A=="],
+
+ "@biomejs/biome": ["@biomejs/[email protected]", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.11", "@biomejs/cli-darwin-x64": "2.3.11", "@biomejs/cli-linux-arm64": "2.3.11", "@biomejs/cli-linux-arm64-musl": "2.3.11", "@biomejs/cli-linux-x64": "2.3.11", "@biomejs/cli-linux-x64-musl": "2.3.11", "@biomejs/cli-win32-arm64": "2.3.11", "@biomejs/cli-win32-x64": "2.3.11" }, "bin": { "biome": "bin/biome" } }, "sha512-/zt+6qazBWguPG6+eWmiELqO+9jRsMZ/DBU3lfuU2ngtIQYzymocHhKiZRyrbra4aCOoyTg/BmY+6WH5mv9xmQ=="],
+
+ "@biomejs/cli-darwin-arm64": ["@biomejs/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-/uXXkBcPKVQY7rc9Ys2CrlirBJYbpESEDme7RKiBD6MmqR2w3j0+ZZXRIL2xiaNPsIMMNhP1YnA+jRRxoOAFrA=="],
+
+ "@biomejs/cli-darwin-x64": ["@biomejs/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-fh7nnvbweDPm2xEmFjfmq7zSUiox88plgdHF9OIW4i99WnXrAC3o2P3ag9judoUMv8FCSUnlwJCM1B64nO5Fbg=="],
+
+ "@biomejs/cli-linux-arm64": ["@biomejs/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-l4xkGa9E7Uc0/05qU2lMYfN1H+fzzkHgaJoy98wO+b/7Gl78srbCRRgwYSW+BTLixTBrM6Ede5NSBwt7rd/i6g=="],
+
+ "@biomejs/cli-linux-arm64-musl": ["@biomejs/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-XPSQ+XIPZMLaZ6zveQdwNjbX+QdROEd1zPgMwD47zvHV+tCGB88VH+aynyGxAHdzL+Tm/+DtKST5SECs4iwCLg=="],
+
+ "@biomejs/cli-linux-x64": ["@biomejs/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-/1s9V/H3cSe0r0Mv/Z8JryF5x9ywRxywomqZVLHAoa/uN0eY7F8gEngWKNS5vbbN/BsfpCG5yeBT5ENh50Frxg=="],
+
+ "@biomejs/cli-linux-x64-musl": ["@biomejs/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-vU7a8wLs5C9yJ4CB8a44r12aXYb8yYgBn+WeyzbMjaCMklzCv1oXr8x+VEyWodgJt9bDmhiaW/I0RHbn7rsNmw=="],
+
+ "@biomejs/cli-win32-arm64": ["@biomejs/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-PZQ6ElCOnkYapSsysiTy0+fYX+agXPlWugh6+eQ6uPKI3vKAqNp6TnMhoM3oY2NltSB89hz59o8xIfOdyhi9Iw=="],
+
+ "@biomejs/cli-win32-x64": ["@biomejs/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-43VrG813EW+b5+YbDbz31uUsheX+qFKCpXeY9kfdAx+ww3naKxeVkTD9zLIWxUPfJquANMHrmW3wbe/037G0Qg=="],
+
+ "@borewit/text-codec": ["@borewit/[email protected]", "", {}, "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw=="],
+
+ "@braintree/sanitize-url": ["@braintree/[email protected]", "", {}, "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw=="],
+
+ "@canvas/image-data": ["@canvas/[email protected]", "", {}, "sha512-QdObRRjRbcXGmM1tmJ+MrHcaz1MftF2+W7YI+MsphnsCrmtyfS0d5qJbk0MeSbUeyM/jCb0hmnkXPsy026L7dA=="],
+
+ "@cfworker/json-schema": ["@cfworker/[email protected]", "", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="],
+
+ "@chevrotain/cst-dts-gen": ["@chevrotain/[email protected]", "", { "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ=="],
+
+ "@chevrotain/gast": ["@chevrotain/[email protected]", "", { "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q=="],
+
+ "@chevrotain/regexp-to-ast": ["@chevrotain/[email protected]", "", {}, "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA=="],
+
+ "@chevrotain/types": ["@chevrotain/[email protected]", "", {}, "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ=="],
+
+ "@chevrotain/utils": ["@chevrotain/[email protected]", "", {}, "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="],
+
+ "@cloudflare/kv-asset-handler": ["@cloudflare/[email protected]", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg=="],
+
+ "@cloudflare/unenv-preset": ["@cloudflare/[email protected]", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": "^1.20251202.0" }, "optionalPeers": ["workerd"] }, "sha512-oIAu6EdQ4zJuPwwKr9odIEqd8AV96z1aqi3RBEA4iKaJ+Vd3fvuI6m5EDC7/QCv+oaPIhy1SkYBYxmD09N+oZg=="],
+
+ "@cloudflare/workerd-darwin-64": ["@cloudflare/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-Srwe/IukVppkMU2qTndkFaKCmZBI7CnZoq4Y0U0gD/8158VGzMREHTqCii4IcCeHifwrtDqTWu8EcA1VBKI4mg=="],
+
+ "@cloudflare/workerd-darwin-arm64": ["@cloudflare/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-aAYwU7zXW+UZFh/a4vHP5cs1ulTOcDRLzwU9547yKad06RlZ6ioRm7ovjdYvdqdmbI8mPd99v4LN9gMmecazQw=="],
+
+ "@cloudflare/workerd-linux-64": ["@cloudflare/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-Wh7xWtFOkk6WY3CXe3lSqZ1anMkFcwy+qOGIjtmvQ/3nCOaG34vKNwPIE9iwryPupqkSuDmEqkosI1UUnSTh1A=="],
+
+ "@cloudflare/workerd-linux-arm64": ["@cloudflare/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-NI0/5rdssdZZKYHxNG4umTmMzODByq86vSCEk8u4HQbGhRCQo7rV1eXn84ntSBdyWBzWdYGISCbeZMsgfIjSTg=="],
+
+ "@cloudflare/workerd-windows-64": ["@cloudflare/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-gmBMqs606Gd/IhBEBPSL/hJAqy2L8IyPUjKtoqd/Ccy7GQxbSc0rYlRkxbQ9YzmqnuhrTVYvXuLscyWrpmAJkw=="],
+
+ "@cloudflare/workers-oauth-provider": ["@cloudflare/[email protected]", "", {}, "sha512-hvg9NFLZwpb/+dNilv8cFrUPjWO1Kqi5UwZymOub92djS3YwdHQczgreVG+GU2C0YHOypNkr/P3Jo6pfkXXQFQ=="],
+
+ "@cloudflare/workers-types": ["@cloudflare/[email protected]", "", {}, "sha512-90vx2lVm+fhQyE8FKqNhT8JBI8GuY0biAwxTzvzeRIdWVo2ArCpUfYMYq4kzaGTfA6NwCmXmBFSgnqfG6OFxLw=="],
+
+ "@cspotcode/source-map-support": ["@cspotcode/[email protected]", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
+
+ "@devicefarmer/adbkit": ["@devicefarmer/[email protected]", "", { "dependencies": { "@devicefarmer/adbkit-logcat": "^2.1.2", "@devicefarmer/adbkit-monkey": "~1.2.1", "bluebird": "~3.7", "commander": "^9.1.0", "debug": "~4.3.1", "node-forge": "^1.3.1", "split": "~1.0.1" }, "bin": { "adbkit": "bin/adbkit" } }, "sha512-7rBLLzWQnBwutH2WZ0EWUkQdihqrnLYCUMaB44hSol9e0/cdIhuNFcqZO0xNheAU6qqHVA8sMiLofkYTgb+lmw=="],
+
+ "@devicefarmer/adbkit-logcat": ["@devicefarmer/[email protected]", "", {}, "sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw=="],
+
+ "@devicefarmer/adbkit-monkey": ["@devicefarmer/[email protected]", "", {}, "sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg=="],
+
+ "@dnd-kit/accessibility": ["@dnd-kit/[email protected]", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="],
+
+ "@dnd-kit/core": ["@dnd-kit/[email protected]", "", { "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ=="],
+
+ "@dnd-kit/modifiers": ["@dnd-kit/[email protected]", "", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw=="],
+
+ "@dnd-kit/sortable": ["@dnd-kit/[email protected]", "", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg=="],
+
+ "@dnd-kit/utilities": ["@dnd-kit/[email protected]", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="],
+
+ "@dotenvx/dotenvx": ["@dotenvx/[email protected]", "", { "dependencies": { "commander": "^11.1.0", "dotenv": "^16.4.5", "eciesjs": "^0.4.10", "execa": "^5.1.1", "fdir": "^6.2.0", "ignore": "^5.3.0", "object-treeify": "1.1.33", "picomatch": "^4.0.2", "which": "^4.0.0" }, "bin": { "dotenvx": "src/cli/dotenvx.js", "git-dotenvx": "src/cli/dotenvx.js" } }, "sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA=="],
+
+ "@drizzle-team/brocli": ["@drizzle-team/[email protected]", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="],
+
+ "@ecies/ciphers": ["@ecies/[email protected]", "", { "peerDependencies": { "@noble/ciphers": "^1.0.0" } }, "sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A=="],
+
+ "@emnapi/core": ["@emnapi/[email protected]", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="],
+
+ "@emnapi/runtime": ["@emnapi/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="],
+
+ "@emnapi/wasi-threads": ["@emnapi/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
+
+ "@emotion/hash": ["@emotion/[email protected]", "", {}, "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="],
+
+ "@emotion/is-prop-valid": ["@emotion/[email protected]", "", { "dependencies": { "@emotion/memoize": "^0.9.0" } }, "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw=="],
+
+ "@emotion/memoize": ["@emotion/[email protected]", "", {}, "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="],
+
+ "@esbuild-kit/core-utils": ["@esbuild-kit/[email protected]", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="],
+
+ "@esbuild-kit/esm-loader": ["@esbuild-kit/[email protected]", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="],
+
+ "@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q=="],
+
+ "@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ=="],
+
+ "@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A=="],
+
+ "@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ=="],
+
+ "@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g=="],
+
+ "@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A=="],
+
+ "@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ=="],
+
+ "@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ=="],
+
+ "@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ=="],
+
+ "@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ=="],
+
+ "@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ=="],
+
+ "@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA=="],
+
+ "@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg=="],
+
+ "@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag=="],
+
+ "@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA=="],
+
+ "@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g=="],
+
+ "@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA=="],
+
+ "@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ=="],
+
+ "@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw=="],
+
+ "@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A=="],
+
+ "@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw=="],
+
+ "@esbuild/openharmony-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA=="],
+
+ "@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q=="],
+
+ "@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ=="],
+
+ "@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg=="],
+
+ "@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ=="],
+
+ "@essentials/memoize-one": ["@essentials/[email protected]", "", {}, "sha512-HMkuIkKNe0EWSUpZhlaq9+5Yp47YhrMhxLMnXTRnEyE5N4xKLspAvMGjUFdi794VnEF1EcOZFS8rdROeujrgag=="],
+
+ "@essentials/one-key-map": ["@essentials/[email protected]", "", {}, "sha512-C2H7zHVcsoipDv4VKY5uUcv5ilsK+uEgEj+WeOdN5oz/Qj1/OZIzCdle90gDzj0xnGQrmZ9qDujwD7AkBb5k9A=="],
+
+ "@essentials/raf": ["@essentials/[email protected]", "", {}, "sha512-AWJvpprE2o7ATMb7HBYMVUVmPJBCt2wZp2rY7d+rAcNSMvzLbDepy9KFeqqrPZh+s9aIpbw1LgmuAW7kuRFgrQ=="],
+
+ "@essentials/request-timeout": ["@essentials/[email protected]", "", { "dependencies": { "@essentials/raf": "^1.2.0" } }, "sha512-lKZPhKScNFnR1MBnk4+sxshk46fpvdN+Uh1LlKWFO5g1ocuz4EcknNIL7tm/rsCAs/+xMWiBTwbDUvm+pDNlXw=="],
+
+ "@floating-ui/core": ["@floating-ui/[email protected]", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="],
+
+ "@floating-ui/dom": ["@floating-ui/[email protected]", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="],
+
+ "@floating-ui/react-dom": ["@floating-ui/[email protected]", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="],
+
+ "@floating-ui/utils": ["@floating-ui/[email protected]", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="],
+
+ "@google/genai": ["@google/[email protected]", "", { "dependencies": { "google-auth-library": "^10.3.0", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.24.0" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-ZC1d0PSM5eS73BpbVIgL3ZsmXeMKLVJurxzww1Z9axy3B2eUB3ioEytbQt4Qu0Od6qPluKrTDew9pSi9kEuPaw=="],
+
+ "@google/generative-ai": ["@google/[email protected]", "", {}, "sha512-MqO+MLfM6kjxcKoy0p1wRzG3b4ZZXtPI+z2IE26UogS2Cm/XHO+7gGRBh6gcJsOiIVoH93UwKvW4HdgiOZCy9Q=="],
+
+ "@hono/node-server": ["@hono/[email protected]", "", { "peerDependencies": { "hono": "^4" } }, "sha512-0/g2lIOPzX8f3vzW1ggQgvG5mjtFBDBHFAzI5SFAi2DzSqS9luJwqg9T6O/gKYLi+inS7eNxBeIFkkghIPvrMA=="],
+
+ "@hono/zod-validator": ["@hono/[email protected]", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Io1B6d011Gj1KknV4rXYz4le5+5EubcWEU/speUjuw9XMMIaP3n78yXLhjd2A3PXaXaUwEAluOiAyLqhBEJgsw=="],
+
+ "@iarna/toml": ["@iarna/[email protected]", "", {}, "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="],
+
+ "@iconify/types": ["@iconify/[email protected]", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="],
+
+ "@iconify/utils": ["@iconify/[email protected]", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "mlly": "^1.8.0" } }, "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw=="],
+
+ "@img/colour": ["@img/[email protected]", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="],
+
+ "@img/sharp-darwin-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
+
+ "@img/sharp-darwin-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
+
+ "@img/sharp-libvips-darwin-arm64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
+
+ "@img/sharp-libvips-darwin-x64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
+
+ "@img/sharp-libvips-linux-arm": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
+
+ "@img/sharp-libvips-linux-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
+
+ "@img/sharp-libvips-linux-ppc64": ["@img/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
+
+ "@img/sharp-libvips-linux-riscv64": ["@img/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
+
+ "@img/sharp-libvips-linux-s390x": ["@img/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
+
+ "@img/sharp-libvips-linux-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
+
+ "@img/sharp-libvips-linuxmusl-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
+
+ "@img/sharp-libvips-linuxmusl-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
+
+ "@img/sharp-linux-arm": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
+
+ "@img/sharp-linux-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
+
+ "@img/sharp-linux-ppc64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
+
+ "@img/sharp-linux-riscv64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
+
+ "@img/sharp-linux-s390x": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
+
+ "@img/sharp-linux-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
+
+ "@img/sharp-linuxmusl-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
+
+ "@img/sharp-linuxmusl-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
+
+ "@img/sharp-wasm32": ["@img/[email protected]", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
+
+ "@img/sharp-win32-arm64": ["@img/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
+
+ "@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
+
+ "@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
+
+ "@inquirer/ansi": ["@inquirer/[email protected]", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="],
+
+ "@inquirer/checkbox": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="],
+
+ "@inquirer/confirm": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ=="],
+
+ "@inquirer/core": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A=="],
+
+ "@inquirer/editor": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ=="],
+
+ "@inquirer/expand": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew=="],
+
+ "@inquirer/external-editor": ["@inquirer/[email protected]", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="],
+
+ "@inquirer/figures": ["@inquirer/[email protected]", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="],
+
+ "@inquirer/input": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g=="],
+
+ "@inquirer/number": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg=="],
+
+ "@inquirer/password": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA=="],
+
+ "@inquirer/prompts": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="],
+
+ "@inquirer/rawlist": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw=="],
+
+ "@inquirer/search": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA=="],
+
+ "@inquirer/select": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w=="],
+
+ "@inquirer/type": ["@inquirer/[email protected]", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA=="],
+
+ "@isaacs/balanced-match": ["@isaacs/[email protected]", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
+
+ "@isaacs/brace-expansion": ["@isaacs/[email protected]", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
+
+ "@isaacs/cliui": ["@isaacs/[email protected]", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
+
+ "@jridgewell/gen-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
+
+ "@jridgewell/remapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
+
+ "@jridgewell/resolve-uri": ["@jridgewell/[email protected]", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
+
+ "@jridgewell/source-map": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="],
+
+ "@jridgewell/sourcemap-codec": ["@jridgewell/[email protected]", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
+
+ "@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
+
+ "@jsdevtools/ono": ["@jsdevtools/[email protected]", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="],
+
+ "@jsep-plugin/assignment": ["@jsep-plugin/[email protected]", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ=="],
+
+ "@jsep-plugin/regex": ["@jsep-plugin/[email protected]", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg=="],
+
+ "@jsep-plugin/ternary": ["@jsep-plugin/[email protected]", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg=="],
+
+ "@juggle/resize-observer": ["@juggle/[email protected]", "", {}, "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="],
+
+ "@leichtgewicht/ip-codec": ["@leichtgewicht/[email protected]", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="],
+
+ "@mdx-js/mdx": ["@mdx-js/[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="],
+
+ "@mdx-js/react": ["@mdx-js/[email protected]", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="],
+
+ "@mermaid-js/parser": ["@mermaid-js/[email protected]", "", { "dependencies": { "langium": "3.3.1" } }, "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA=="],
+
+ "@mintlify/cli": ["@mintlify/[email protected]", "", { "dependencies": { "@inquirer/prompts": "7.9.0", "@mintlify/common": "1.0.658", "@mintlify/link-rot": "3.0.810", "@mintlify/models": "0.0.255", "@mintlify/prebuild": "1.0.790", "@mintlify/previewing": "4.0.845", "@mintlify/validation": "0.1.555", "adm-zip": "0.5.16", "chalk": "5.2.0", "color": "4.2.3", "detect-port": "1.5.1", "front-matter": "4.0.2", "fs-extra": "11.2.0", "ink": "6.3.0", "inquirer": "12.3.0", "js-yaml": "4.1.0", "mdast-util-mdx-jsx": "3.2.0", "react": "19.2.3", "semver": "7.7.2", "unist-util-visit": "5.0.0", "yargs": "17.7.1" }, "bin": { "mint": "bin/index.js", "mintlify": "bin/index.js" } }, "sha512-QUpjQjnrDMH+vf8xwWtn//yQBOXNBT+S6BcnyFJUvu4G0h7H8VBHQPRAoTQ97j1qX+rXAEjjr7k85xq8ZJ/tIQ=="],
+
+ "@mintlify/common": ["@mintlify/[email protected]", "", { "dependencies": { "@asyncapi/parser": "3.4.0", "@mintlify/mdx": "^3.0.4", "@mintlify/models": "0.0.255", "@mintlify/openapi-parser": "^0.0.8", "@mintlify/validation": "0.1.555", "@sindresorhus/slugify": "2.2.0", "@types/mdast": "4.0.4", "acorn": "8.11.2", "acorn-jsx": "5.3.2", "color-blend": "4.0.0", "estree-util-to-js": "2.0.0", "estree-walker": "3.0.3", "front-matter": "4.0.2", "hast-util-from-html": "2.0.3", "hast-util-to-html": "9.0.4", "hast-util-to-text": "4.0.2", "hex-rgb": "5.0.0", "ignore": "7.0.5", "js-yaml": "4.1.0", "lodash": "4.17.21", "mdast-util-from-markdown": "2.0.2", "mdast-util-gfm": "3.0.0", "mdast-util-mdx": "3.0.0", "mdast-util-mdx-jsx": "3.1.3", "micromark-extension-gfm": "3.0.0", "micromark-extension-mdx-jsx": "3.0.1", "micromark-extension-mdxjs": "3.0.0", "openapi-types": "12.1.3", "postcss": "8.5.6", "rehype-stringify": "10.0.1", "remark": "15.0.1", "remark-frontmatter": "5.0.0", "remark-gfm": "4.0.0", "remark-math": "6.0.0", "remark-mdx": "3.1.0", "remark-parse": "11.0.0", "remark-rehype": "11.1.1", "remark-stringify": "11.0.0", "tailwindcss": "3.4.4", "unified": "11.0.5", "unist-builder": "4.0.0", "unist-util-map": "4.0.0", "unist-util-remove": "4.0.0", "unist-util-remove-position": "5.0.0", "unist-util-visit": "5.0.0", "unist-util-visit-parents": "6.0.1", "vfile": "6.0.3" } }, "sha512-t6EC9ynrDJX3trWmqFdkbVxUeMmNOSZiW57KVc2Z7861Pr5pOJYaNHMAABnBZ8T3Im4SOc89oBJ+jPBp+YmJHQ=="],
+
+ "@mintlify/link-rot": ["@mintlify/[email protected]", "", { "dependencies": { "@mintlify/common": "1.0.658", "@mintlify/prebuild": "1.0.790", "@mintlify/previewing": "4.0.845", "@mintlify/validation": "0.1.555", "fs-extra": "11.1.0", "unist-util-visit": "4.1.2" } }, "sha512-eG3KfOCP1rbGMib/V7PJIBerajoL1TgOflbENVVvDucTKX2XBcGA4WdGg3hjuWROdKJtmMv4VW1IYpr83aF//w=="],
+
+ "@mintlify/mdx": ["@mintlify/[email protected]", "", { "dependencies": { "@shikijs/transformers": "^3.11.0", "@shikijs/twoslash": "^3.12.2", "arktype": "^2.1.26", "hast-util-to-string": "^3.0.1", "mdast-util-from-markdown": "^2.0.2", "mdast-util-gfm": "^3.1.0", "mdast-util-mdx-jsx": "^3.2.0", "mdast-util-to-hast": "^13.2.0", "next-mdx-remote-client": "^1.0.3", "rehype-katex": "^7.0.1", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", "remark-smartypants": "^3.0.2", "shiki": "^3.11.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "@radix-ui/react-popover": "^1.1.15", "react": "^18.3.1", "react-dom": "^18.3.1" } }, "sha512-tJhdpnM5ReJLNJ2fuDRIEr0zgVd6id7/oAIfs26V46QlygiLsc8qx4Rz3LWIX51rUXW/cfakjj0EATxIciIw+g=="],
+
+ "@mintlify/models": ["@mintlify/[email protected]", "", { "dependencies": { "axios": "1.10.0", "openapi-types": "12.1.3" } }, "sha512-LIUkfA7l7ypHAAuOW74ZJws/NwNRqlDRD/U466jarXvvSlGhJec/6J4/I+IEcBvWDnc9anLFKmnGO04jPKgAsg=="],
+
+ "@mintlify/openapi-parser": ["@mintlify/[email protected]", "", { "dependencies": { "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", "jsonpointer": "^5.0.1", "leven": "^4.0.0", "yaml": "^2.4.5" } }, "sha512-9MBRq9lS4l4HITYCrqCL7T61MOb20q9IdU7HWhqYMNMM1jGO1nHjXasFy61yZ8V6gMZyyKQARGVoZ0ZrYN48Og=="],
+
+ "@mintlify/prebuild": ["@mintlify/[email protected]", "", { "dependencies": { "@mintlify/common": "1.0.658", "@mintlify/openapi-parser": "^0.0.8", "@mintlify/scraping": "4.0.519", "@mintlify/validation": "0.1.555", "chalk": "5.3.0", "favicons": "7.2.0", "front-matter": "4.0.2", "fs-extra": "11.1.0", "js-yaml": "4.1.0", "openapi-types": "12.1.3", "sharp": "0.33.5", "sharp-ico": "0.1.5", "unist-util-visit": "4.1.2", "uuid": "11.1.0" } }, "sha512-c7CIT5GkeOowYnrPfu8HjkY0CS67Jka/rC0EudJsv8KRBtym8SPdZBtzeCx0uIYk5mPL8MVEMyTm7jkGZwBMmg=="],
+
+ "@mintlify/previewing": ["@mintlify/[email protected]", "", { "dependencies": { "@mintlify/common": "1.0.658", "@mintlify/prebuild": "1.0.790", "@mintlify/validation": "0.1.555", "better-opn": "3.0.2", "chalk": "5.2.0", "chokidar": "3.5.3", "express": "4.18.2", "front-matter": "4.0.2", "fs-extra": "11.1.0", "got": "13.0.0", "ink": "6.3.0", "ink-spinner": "5.0.0", "is-online": "10.0.0", "js-yaml": "4.1.0", "openapi-types": "12.1.3", "react": "19.2.3", "socket.io": "4.7.2", "tar": "6.1.15", "unist-util-visit": "4.1.2", "yargs": "17.7.1" } }, "sha512-RB9IIs7yWX/fTfZPrnjg9QBvPa9laYcF7HlWRJ6iywLF3JsKZbxOOIRyXqufXZvtHhf81Bl/fSIDpyqnWSya0Q=="],
+
+ "@mintlify/scraping": ["@mintlify/[email protected]", "", { "dependencies": { "@mintlify/common": "1.0.658", "@mintlify/openapi-parser": "^0.0.8", "fs-extra": "11.1.1", "hast-util-to-mdast": "10.1.0", "js-yaml": "4.1.0", "mdast-util-mdx-jsx": "3.1.3", "neotraverse": "0.6.18", "puppeteer": "22.14.0", "rehype-parse": "9.0.1", "remark-gfm": "4.0.0", "remark-mdx": "3.0.1", "remark-parse": "11.0.0", "remark-stringify": "11.0.0", "unified": "11.0.5", "unist-util-visit": "5.0.0", "yargs": "17.7.1", "zod": "3.21.4" }, "bin": { "mintlify-scrape": "bin/cli.js" } }, "sha512-+1af/Lu+JZcE+BBtdkM30I/SsRb3eah8iXB4h7jlUXcIJ15K/dYWWoPT9ZUlV2poDFMULyuQwdXrgIj7XAl57g=="],
+
+ "@mintlify/validation": ["@mintlify/[email protected]", "", { "dependencies": { "@mintlify/mdx": "^3.0.4", "@mintlify/models": "0.0.255", "arktype": "2.1.27", "js-yaml": "4.1.0", "lcm": "0.0.3", "lodash": "4.17.21", "object-hash": "3.0.0", "openapi-types": "12.1.3", "uuid": "11.1.0", "zod": "3.21.4", "zod-to-json-schema": "3.20.4" } }, "sha512-11QVUReL4N5u8wSCgZt4RN7PA0jYQoMEBZ5IrUp5pgb5ZJBOoGV/vPsQrxPPa1cxsUDAuToNhtGxRQtOav/w8w=="],
+
+ "@mixmark-io/domino": ["@mixmark-io/[email protected]", "", {}, "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="],
+
+ "@mjackson/node-fetch-server": ["@mjackson/[email protected]", "", {}, "sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng=="],
+
+ "@modelcontextprotocol/sdk": ["@modelcontextprotocol/[email protected]", "", { "dependencies": { "@hono/node-server": "^1.19.7", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "jose": "^6.1.1", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.0" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww=="],
+
+ "@napi-rs/canvas": ["@napi-rs/[email protected]", "", { "optionalDependencies": { "@napi-rs/canvas-android-arm64": "0.1.88", "@napi-rs/canvas-darwin-arm64": "0.1.88", "@napi-rs/canvas-darwin-x64": "0.1.88", "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.88", "@napi-rs/canvas-linux-arm64-gnu": "0.1.88", "@napi-rs/canvas-linux-arm64-musl": "0.1.88", "@napi-rs/canvas-linux-riscv64-gnu": "0.1.88", "@napi-rs/canvas-linux-x64-gnu": "0.1.88", "@napi-rs/canvas-linux-x64-musl": "0.1.88", "@napi-rs/canvas-win32-arm64-msvc": "0.1.88", "@napi-rs/canvas-win32-x64-msvc": "0.1.88" } }, "sha512-/p08f93LEbsL5mDZFQ3DBxcPv/I4QG9EDYRRq1WNlCOXVfAHBTHMSVMwxlqG/AtnSfUr9+vgfN7MKiyDo0+Weg=="],
+
+ "@napi-rs/canvas-android-arm64": ["@napi-rs/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-KEaClPnZuVxJ8smUWjV1wWFkByBO/D+vy4lN+Dm5DFH514oqwukxKGeck9xcKJhaWJGjfruGmYGiwRe//+/zQQ=="],
+
+ "@napi-rs/canvas-darwin-arm64": ["@napi-rs/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Xgywz0dDxOKSgx3eZnK85WgGMmGrQEW7ZLA/E7raZdlEE+xXCozobgqz2ZvYigpB6DJFYkqnwHjqCOTSDGlFdg=="],
+
+ "@napi-rs/canvas-darwin-x64": ["@napi-rs/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-Yz4wSCIQOUgNucgk+8NFtQxQxZV5NO8VKRl9ePKE6XoNyNVC8JDqtvhh3b3TPqKK8W5p2EQpAr1rjjm0mfBxdg=="],
+
+ "@napi-rs/canvas-linux-arm-gnueabihf": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-9gQM2SlTo76hYhxHi2XxWTAqpTOb+JtxMPEIr+H5nAhHhyEtNmTSDRtz93SP7mGd2G3Ojf2oF5tP9OdgtgXyKg=="],
+
+ "@napi-rs/canvas-linux-arm64-gnu": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-7qgaOBMXuVRk9Fzztzr3BchQKXDxGbY+nwsovD3I/Sx81e+sX0ReEDYHTItNb0Je4NHbAl7D0MKyd4SvUc04sg=="],
+
+ "@napi-rs/canvas-linux-arm64-musl": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-kYyNrUsHLkoGHBc77u4Unh067GrfiCUMbGHC2+OTxbeWfZkPt2o32UOQkhnSswKd9Fko/wSqqGkY956bIUzruA=="],
+
+ "@napi-rs/canvas-linux-riscv64-gnu": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-HVuH7QgzB0yavYdNZDRyAsn/ejoXB0hn8twwFnOqUbCCdkV+REna7RXjSR7+PdfW0qMQ2YYWsLvVBT5iL/mGpw=="],
+
+ "@napi-rs/canvas-linux-x64-gnu": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-hvcvKIcPEQrvvJtJnwD35B3qk6umFJ8dFIr8bSymfrSMem0EQsfn1ztys8ETIFndTwdNWJKWluvxztA41ivsEw=="],
+
+ "@napi-rs/canvas-linux-x64-musl": ["@napi-rs/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-eSMpGYY2xnZSQ6UxYJ6plDboxq4KeJ4zT5HaVkUnbObNN6DlbJe0Mclh3wifAmquXfrlgTZt6zhHsUgz++AK6g=="],
+
+ "@napi-rs/canvas-win32-arm64-msvc": ["@napi-rs/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-qcIFfEgHrchyYqRrxsCeTQgpJZ/GqHiqPcU/Fvw/ARVlQeDX1VyFH+X+0gCR2tca6UJrq96vnW+5o7buCq+erA=="],
+
+ "@napi-rs/canvas-win32-x64-msvc": ["@napi-rs/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-ROVqbfS4QyZxYkqmaIBBpbz/BQvAR+05FXM5PAtTYVc0uyY8Y4BHJSMdGAaMf6TdIVRsQsiq+FG/dH9XhvWCFQ=="],
+
+ "@napi-rs/wasm-runtime": ["@napi-rs/[email protected]", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="],
+
+ "@next/env": ["@next/[email protected]", "", {}, "sha512-6284pl8c8n9PQidN63qjPVEu1uXXKjnmbmaLebOzIfTrSXdGiAPsIMRi4pk/+v/ezqweE1/B8bFqiAAfC6lMXg=="],
+
+ "@next/swc-darwin-arm64": ["@next/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-j06fWg/gPqiWjK+sEpCDsh5gX+Bdy9gnPYjFqMBvBEOIcCFy1/ecF6pY6XAce7WyCJAbBPVb+6GvpmUZKNq0oQ=="],
+
+ "@next/swc-darwin-x64": ["@next/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-FRYYz5GSKUkfvDSjd5hgHME2LgYjfOLBmhRVltbs3oRNQQf9n5UTQMmIu/u5vpkjJFV4L2tqo8duGqDxdQOFwg=="],
+
+ "@next/swc-linux-arm64-gnu": ["@next/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-EI2klFVL8tOyEIX5J1gXXpm1YuChmDy4R+tHoNjkCHUmBJqXioYErX/O2go4pEhjxkAxHp2i8y5aJcRz2m5NqQ=="],
+
+ "@next/swc-linux-arm64-musl": ["@next/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-vq/5HeGvowhDPMrpp/KP4GjPVhIXnwNeDPF5D6XK6ta96UIt+C0HwJwuHYlwmn0SWyNANqx1Mp6qSVDXwbFKsw=="],
+
+ "@next/swc-linux-x64-gnu": ["@next/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-GlUdJwy2leA/HnyRYxJ1ZJLCJH+BxZfqV4E0iYLrJipDKxWejWpPtZUdccPmCfIEY9gNBO7bPfbG6IIgkt0qXg=="],
+
+ "@next/swc-linux-x64-musl": ["@next/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-UCtOVx4N8AHF434VPwg4L0KkFLAd7pgJShzlX/hhv9+FDrT7/xCuVdlBsCXH7l9yCA/wHl3OqhMbIkgUluriWA=="],
+
+ "@next/swc-win32-arm64-msvc": ["@next/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-tQjtDGtv63mV3n/cZ4TH8BgUvKTSFlrF06yT5DyRmgQuj5WEjBUDy0W3myIW5kTRYMPrLn42H3VfCNwBH6YYiA=="],
+
+ "@next/swc-win32-x64-msvc": ["@next/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-y9AGACHTBwnWFLq5B5Fiv3FEbXBusdPb60pgoerB04CV/pwjY1xQNdoTNxAv7eUhU2k1CKnkN4XWVuiK07uOqA=="],
+
+ "@noble/ciphers": ["@noble/[email protected]", "", {}, "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw=="],
+
+ "@noble/curves": ["@noble/[email protected]", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="],
+
+ "@noble/hashes": ["@noble/[email protected]", "", {}, "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw=="],
+
+ "@node-minify/core": ["@node-minify/[email protected]", "", { "dependencies": { "@node-minify/utils": "8.0.6", "glob": "9.3.5", "mkdirp": "1.0.4" } }, "sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g=="],
+
+ "@node-minify/terser": ["@node-minify/[email protected]", "", { "dependencies": { "@node-minify/utils": "8.0.6", "terser": "5.16.9" } }, "sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg=="],
+
+ "@node-minify/utils": ["@node-minify/[email protected]", "", { "dependencies": { "gzip-size": "6.0.0" } }, "sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ=="],
+
+ "@nodelib/fs.scandir": ["@nodelib/[email protected]", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
+
+ "@nodelib/fs.stat": ["@nodelib/[email protected]", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
+
+ "@nodelib/fs.walk": ["@nodelib/[email protected]", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
+
+ "@octokit/auth-token": ["@octokit/[email protected]", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="],
+
+ "@octokit/core": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA=="],
+
+ "@octokit/endpoint": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="],
+
+ "@octokit/graphql": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="],
+
+ "@octokit/openapi-types": ["@octokit/[email protected]", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="],
+
+ "@octokit/plugin-paginate-rest": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw=="],
+
+ "@octokit/plugin-request-log": ["@octokit/[email protected]", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw=="],
+
+ "@octokit/plugin-rest-endpoint-methods": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw=="],
+
+ "@octokit/request": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA=="],
+
+ "@octokit/request-error": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="],
+
+ "@octokit/rest": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-request-log": "^5.3.1", "@octokit/plugin-rest-endpoint-methods": "^13.3.0" } }, "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg=="],
+
+ "@octokit/types": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="],
+
+ "@openapi-contrib/openapi-schema-to-json-schema": ["@openapi-contrib/[email protected]", "", { "dependencies": { "fast-deep-equal": "^3.1.3" } }, "sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw=="],
+
+ "@opennextjs/aws": ["@opennextjs/[email protected]", "", { "dependencies": { "@ast-grep/napi": "^0.40.0", "@aws-sdk/client-cloudfront": "3.398.0", "@aws-sdk/client-dynamodb": "^3.398.0", "@aws-sdk/client-lambda": "^3.398.0", "@aws-sdk/client-s3": "^3.398.0", "@aws-sdk/client-sqs": "^3.398.0", "@node-minify/core": "^8.0.6", "@node-minify/terser": "^8.0.6", "@tsconfig/node18": "^1.0.3", "aws4fetch": "^1.0.20", "chalk": "^5.6.2", "cookie": "^1.0.2", "esbuild": "0.25.4", "express": "^5.1.0", "path-to-regexp": "^6.3.0", "urlpattern-polyfill": "^10.1.0", "yaml": "^2.8.1" }, "peerDependencies": { "next": "^14.2.35 || ~15.0.7 || ~15.1.11 || ~15.2.8 || ~15.3.8 || ~15.4.10 || ~15.5.9 || ^16.0.10" }, "bin": { "open-next": "dist/index.js" } }, "sha512-rj5br5fvWWqKsJo4YZvMowM4ObR2cz+dwCGuBA7amCiA+RpVmzcGfvfMucf01pUwhxxPgvdhXqdg7P2NVzQmkw=="],
+
+ "@opennextjs/cloudflare": ["@opennextjs/[email protected]", "", { "dependencies": { "@ast-grep/napi": "0.40.0", "@dotenvx/dotenvx": "1.31.0", "@opennextjs/aws": "3.9.7", "cloudflare": "^4.4.1", "enquirer": "^2.4.1", "glob": "^12.0.0", "ts-tqdm": "^0.8.6", "yargs": "^18.0.0" }, "peerDependencies": { "next": "^14.2.35 || ~15.0.7 || ~15.1.11 || ~15.2.8 || ~15.3.8 || ~15.4.10 || ~15.5.9 || ^16.0.10", "wrangler": "^4.53.0" }, "bin": { "opennextjs-cloudflare": "dist/cli/index.js" } }, "sha512-7M6VezThyL7gg86MMuZnBvbzRtC08HWLSJWlvRaiHMUGlEoE94JOwtoC0YcoEnP7F4UsrdRnp+VpvMIVoqsO4w=="],
+
+ "@opentelemetry/api": ["@opentelemetry/[email protected]", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
+
+ "@opentelemetry/api-logs": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg=="],
+
+ "@opentelemetry/context-async-hooks": ["@opentelemetry/[email protected]", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-hGcsT0qDP7Il1L+qT3JFpiGl1dCjF794Bb4yCRCYdr7XC0NwHtOF3ngF86Gk6TUnsakbyQsDQ0E/S4CU0F4d4g=="],
+
+ "@opentelemetry/core": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-PcmxJQzs31cfD0R2dE91YGFcLxOSN4Bxz7gez5UwSUjCai8BwH/GI5HchfVshHkWdTkUs0qcaPJgVHKXUp7I3A=="],
+
+ "@opentelemetry/instrumentation": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/api-logs": "0.208.0", "import-in-the-middle": "^2.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA=="],
+
+ "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA=="],
+
+ "@opentelemetry/instrumentation-connect": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg=="],
+
+ "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA=="],
+
+ "@opentelemetry/instrumentation-express": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg=="],
+
+ "@opentelemetry/instrumentation-fs": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g=="],
+
+ "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ=="],
+
+ "@opentelemetry/instrumentation-graphql": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q=="],
+
+ "@opentelemetry/instrumentation-hapi": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ=="],
+
+ "@opentelemetry/instrumentation-http": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/instrumentation": "0.208.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ=="],
+
+ "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/redis-common": "^0.38.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg=="],
+
+ "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg=="],
+
+ "@opentelemetry/instrumentation-knex": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g=="],
+
+ "@opentelemetry/instrumentation-koa": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.36.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" } }, "sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg=="],
+
+ "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw=="],
+
+ "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ=="],
+
+ "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w=="],
+
+ "@opentelemetry/instrumentation-mysql": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@types/mysql": "2.15.27" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A=="],
+
+ "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@opentelemetry/sql-common": "^0.41.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg=="],
+
+ "@opentelemetry/instrumentation-pg": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.2", "@types/pg": "8.15.6", "@types/pg-pool": "2.0.6" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw=="],
+
+ "@opentelemetry/instrumentation-redis": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/redis-common": "^0.38.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q=="],
+
+ "@opentelemetry/instrumentation-tedious": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA=="],
+
+ "@opentelemetry/instrumentation-undici": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.24.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ=="],
+
+ "@opentelemetry/redis-common": ["@opentelemetry/[email protected]", "", {}, "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA=="],
+
+ "@opentelemetry/resources": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "2.3.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-shlr2l5g+87J8wqYlsLyaUsgKVRO7RtX70Ckd5CtDOWtImZgaUDmf4Z2ozuSKQLM2wPDR0TE/3bPVBNJtRm/cQ=="],
+
+ "@opentelemetry/sdk-trace-base": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "2.3.0", "@opentelemetry/resources": "2.3.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-B0TQ2e9h0ETjpI+eGmCz8Ojb+lnYms0SE3jFwEKrN/PK4aSVHU28AAmnOoBmfub+I3jfgPwvDJgomBA5a7QehQ=="],
+
+ "@opentelemetry/semantic-conventions": ["@opentelemetry/[email protected]", "", {}, "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg=="],
+
+ "@opentelemetry/sql-common": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/core": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ=="],
+
+ "@oxc-project/types": ["@oxc-project/[email protected]", "", {}, "sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ=="],
+
+ "@pinojs/redact": ["@pinojs/[email protected]", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="],
+
+ "@pixi/colord": ["@pixi/[email protected]", "", {}, "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA=="],
+
+ "@pixi/react": ["@pixi/[email protected]", "", { "dependencies": { "its-fine": "^2.0.0", "react-reconciler": "0.31.0" }, "peerDependencies": { "pixi.js": "^8.2.6", "react": ">=19.0.0" } }, "sha512-Z1VRdnv9Gh+lTLzNKjpS7GaTNDjUxRVJNtIdtK2i0sCpigvjx5mvJ72EPLhBFgepB6j3ZCkL0YBb6BqgTGbhGA=="],
+
+ "@pkgjs/parseargs": ["@pkgjs/[email protected]", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
+
+ "@pnpm/config.env-replace": ["@pnpm/[email protected]", "", {}, "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w=="],
+
+ "@pnpm/network.ca-file": ["@pnpm/[email protected]", "", { "dependencies": { "graceful-fs": "4.2.10" } }, "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA=="],
+
+ "@pnpm/npm-conf": ["@pnpm/[email protected]", "", { "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" } }, "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw=="],
+
+ "@poppinss/colors": ["@poppinss/[email protected]", "", { "dependencies": { "kleur": "^4.1.5" } }, "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg=="],
+
+ "@poppinss/dumper": ["@poppinss/[email protected]", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@sindresorhus/is": "^7.0.2", "supports-color": "^10.0.0" } }, "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw=="],
+
+ "@poppinss/exception": ["@poppinss/[email protected]", "", {}, "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw=="],
+
+ "@posthog/core": ["@posthog/[email protected]", "", { "dependencies": { "cross-spawn": "^7.0.6" } }, "sha512-kRb1ch2dhQjsAapZmu6V66551IF2LnCbc1rnrQqnR7ArooVyJN9KOPXre16AJ3ObJz2eTfuP7x25BMyS2Y5Exw=="],
+
+ "@posthog/types": ["@posthog/[email protected]", "", {}, "sha512-rh8GSOnmnwd0fUIBYzQcXt4WYXMg9QPkY0tE46K0eneWYVyqNYXFXzcdf2U37g+ZYNiBq9ubLeCD7h0C0MDJgw=="],
+
+ "@prisma/instrumentation": ["@prisma/[email protected]", "", { "dependencies": { "@opentelemetry/instrumentation": ">=0.52.0 <1" }, "peerDependencies": { "@opentelemetry/api": "^1.8" } }, "sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg=="],
+
+ "@puppeteer/browsers": ["@puppeteer/[email protected]", "", { "dependencies": { "debug": "^4.3.5", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.4.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA=="],
+
+ "@quansync/fs": ["@quansync/[email protected]", "", { "dependencies": { "quansync": "^1.0.0" } }, "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ=="],
+
+ "@radix-ui/number": ["@radix-ui/[email protected]", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="],
+
+ "@radix-ui/primitive": ["@radix-ui/[email protected]", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="],
+
+ "@radix-ui/react-accordion": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="],
+
+ "@radix-ui/react-alert-dialog": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw=="],
+
+ "@radix-ui/react-arrow": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="],
+
+ "@radix-ui/react-avatar": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q=="],
+
+ "@radix-ui/react-checkbox": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw=="],
+
+ "@radix-ui/react-collapsible": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="],
+
+ "@radix-ui/react-collection": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="],
+
+ "@radix-ui/react-compose-refs": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="],
+
+ "@radix-ui/react-context": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="],
+
+ "@radix-ui/react-dialog": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="],
+
+ "@radix-ui/react-direction": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="],
+
+ "@radix-ui/react-dismissable-layer": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="],
+
+ "@radix-ui/react-dropdown-menu": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="],
+
+ "@radix-ui/react-focus-guards": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="],
+
+ "@radix-ui/react-focus-scope": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="],
+
+ "@radix-ui/react-hover-card": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg=="],
+
+ "@radix-ui/react-id": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="],
+
+ "@radix-ui/react-label": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="],
+
+ "@radix-ui/react-menu": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="],
+
+ "@radix-ui/react-popover": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="],
+
+ "@radix-ui/react-popper": ["@radix-ui/[email protected]", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="],
+
+ "@radix-ui/react-portal": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="],
+
+ "@radix-ui/react-presence": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="],
+
+ "@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="],
+
+ "@radix-ui/react-progress": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA=="],
+
+ "@radix-ui/react-roving-focus": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="],
+
+ "@radix-ui/react-scroll-area": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A=="],
+
+ "@radix-ui/react-select": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="],
+
+ "@radix-ui/react-separator": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g=="],
+
+ "@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="],
+
+ "@radix-ui/react-tabs": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="],
+
+ "@radix-ui/react-toggle": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ=="],
+
+ "@radix-ui/react-toggle-group": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-toggle": "1.1.10", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q=="],
+
+ "@radix-ui/react-tooltip": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="],
+
+ "@radix-ui/react-use-callback-ref": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="],
+
+ "@radix-ui/react-use-controllable-state": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="],
+
+ "@radix-ui/react-use-effect-event": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="],
+
+ "@radix-ui/react-use-escape-keydown": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="],
+
+ "@radix-ui/react-use-is-hydrated": ["@radix-ui/[email protected]", "", { "dependencies": { "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA=="],
+
+ "@radix-ui/react-use-layout-effect": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="],
+
+ "@radix-ui/react-use-previous": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="],
+
+ "@radix-ui/react-use-rect": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="],
+
+ "@radix-ui/react-use-size": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="],
+
+ "@radix-ui/react-visually-hidden": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="],
+
+ "@radix-ui/rect": ["@radix-ui/[email protected]", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="],
+
+ "@react-email/render": ["@react-email/[email protected]", "", { "dependencies": { "html-to-text": "^9.0.5", "prettier": "^3.5.3", "react-promise-suspense": "^0.3.4" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw=="],
+
+ "@react-hook/debounce": ["@react-hook/[email protected]", "", { "dependencies": { "@react-hook/latest": "^1.0.2" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-ir/kPrSfAzY12Gre0sOHkZ2rkEmM4fS5M5zFxCi4BnCeXh2nvx9Ujd+U4IGpKCuPA+EQD0pg1eK2NGLvfWejag=="],
+
+ "@react-hook/event": ["@react-hook/[email protected]", "", { "peerDependencies": { "react": ">=16.8" } }, "sha512-JUL5IluaOdn5w5Afpe/puPa1rj8X6udMlQ9dt4hvMuKmTrBS1Ya6sb4sVgvfe2eU4yDuOfAhik8xhbcCekbg9Q=="],
+
+ "@react-hook/latest": ["@react-hook/[email protected]", "", { "peerDependencies": { "react": ">=16.8" } }, "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg=="],
+
+ "@react-hook/passive-layout-effect": ["@react-hook/[email protected]", "", { "peerDependencies": { "react": ">=16.8" } }, "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg=="],
+
+ "@react-hook/throttle": ["@react-hook/[email protected]", "", { "dependencies": { "@react-hook/latest": "^1.0.2" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg=="],
+
+ "@react-hook/window-scroll": ["@react-hook/[email protected]", "", { "dependencies": { "@react-hook/event": "^1.2.1", "@react-hook/throttle": "^2.2.0" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-LdYnCL22pFI+LTs85Fi2OQHSKWkzIuHFgv8lA+wwuaPxLOEhWR5bzJ21iygUH9X4meeLVRZKEbfpYi3OWWD4GQ=="],
+
+ "@react-hook/window-size": ["@react-hook/[email protected]", "", { "dependencies": { "@react-hook/debounce": "^3.0.0", "@react-hook/event": "^1.2.1", "@react-hook/throttle": "^2.2.0" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-yWnVS5LKnOUIrEsI44oz3bIIUYqflamPL27n+k/PC//PsX/YeWBky09oPeAoc9As6jSH16Wgo8plI+ECZaHk3g=="],
+
+ "@react-router/dev": ["@react-router/[email protected]", "", { "dependencies": { "@babel/core": "^7.27.7", "@babel/generator": "^7.27.5", "@babel/parser": "^7.27.7", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/preset-typescript": "^7.27.1", "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@react-router/node": "7.12.0", "@remix-run/node-fetch-server": "^0.9.0", "arg": "^5.0.1", "babel-dead-code-elimination": "^1.0.6", "chokidar": "^4.0.0", "dedent": "^1.5.3", "es-module-lexer": "^1.3.1", "exit-hook": "2.2.1", "isbot": "^5.1.11", "jsesc": "3.0.2", "lodash": "^4.17.21", "p-map": "^7.0.3", "pathe": "^1.1.2", "picocolors": "^1.1.1", "pkg-types": "^2.3.0", "prettier": "^3.6.2", "react-refresh": "^0.14.0", "semver": "^7.3.7", "tinyglobby": "^0.2.14", "valibot": "^1.2.0", "vite-node": "^3.2.2" }, "peerDependencies": { "@react-router/serve": "^7.12.0", "@vitejs/plugin-rsc": "~0.5.7", "react-router": "^7.12.0", "react-server-dom-webpack": "^19.2.3", "typescript": "^5.1.0", "vite": "^5.1.0 || ^6.0.0 || ^7.0.0", "wrangler": "^3.28.2 || ^4.0.0" }, "optionalPeers": ["@react-router/serve", "@vitejs/plugin-rsc", "react-server-dom-webpack", "typescript", "wrangler"], "bin": { "react-router": "bin.js" } }, "sha512-5GpwXgq4pnOVeG7l6ADkCHA1rthJus1q/A3NRYJAIypclUQDYAzg1/fDNjvaKuTSrq+Nr3u6aj2v+oC+47MX6g=="],
+
+ "@react-router/express": ["@react-router/[email protected]", "", { "dependencies": { "@react-router/node": "7.12.0" }, "peerDependencies": { "express": "^4.17.1 || ^5", "react-router": "7.12.0", "typescript": "^5.1.0" }, "optionalPeers": ["typescript"] }, "sha512-uAK+zF93M6XauGeXLh/UBh+3HrwiA/9lUS+eChjQ0a5FzjLpsc6ciUqF5oHh3lwWzLU7u7tj4qoeucUn6SInTw=="],
+
+ "@react-router/fs-routes": ["@react-router/[email protected]", "", { "dependencies": { "minimatch": "^9.0.0" }, "peerDependencies": { "@react-router/dev": "^7.12.0", "typescript": "^5.1.0" }, "optionalPeers": ["typescript"] }, "sha512-otlOIrIsJsqY5ACfgMsIkHPq1rfuvdwxBGWZRSscU+HK+BcHAz8ZDq+wYDGonOLcU6wUn33+G+/1skznIV1L8A=="],
+
+ "@react-router/node": ["@react-router/[email protected]", "", { "dependencies": { "@mjackson/node-fetch-server": "^0.2.0" }, "peerDependencies": { "react-router": "7.12.0", "typescript": "^5.1.0" }, "optionalPeers": ["typescript"] }, "sha512-o/t10Cse4LK8kFefqJ8JjC6Ng6YuKD2I87S2AiJs17YAYtXU5W731ZqB73AWyCDd2G14R0dSuqXiASRNK/xLjg=="],
+
+ "@react-router/serve": ["@react-router/[email protected]", "", { "dependencies": { "@mjackson/node-fetch-server": "^0.2.0", "@react-router/express": "7.12.0", "@react-router/node": "7.12.0", "compression": "^1.8.1", "express": "^4.19.2", "get-port": "5.1.1", "morgan": "^1.10.1", "source-map-support": "^0.5.21" }, "peerDependencies": { "react-router": "7.12.0" }, "bin": { "react-router-serve": "bin.js" } }, "sha512-j1ltgU7s3wAwOosZ5oxgHSsmVyK706gY/yIs8qVmC239wQ3zr3eqaXk3TVVLMeRy+eDgPNmgc6oNJv2o328VgA=="],
+
+ "@remix-run/node-fetch-server": ["@remix-run/[email protected]", "", {}, "sha512-SoLMv7dbH+njWzXnOY6fI08dFMI5+/dQ+vY3n8RnnbdG7MdJEgiP28Xj/xWlnRnED/aB6SFw56Zop+LbmaaKqA=="],
+
+ "@repo/docs": ["@repo/docs@workspace:apps/docs"],
+
+ "@repo/hooks": ["@repo/hooks@workspace:packages/hooks"],
+
+ "@repo/lib": ["@repo/lib@workspace:packages/lib"],
+
+ "@repo/ui": ["@repo/ui@workspace:packages/ui"],
+
+ "@repo/validation": ["@repo/validation@workspace:packages/validation"],
+
+ "@repo/web": ["@repo/web@workspace:apps/web"],
+
+ "@rolldown/binding-android-arm64": ["@rolldown/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ=="],
+
+ "@rolldown/binding-darwin-arm64": ["@rolldown/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ=="],
+
+ "@rolldown/binding-darwin-x64": ["@rolldown/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA=="],
+
+ "@rolldown/binding-freebsd-x64": ["@rolldown/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew=="],
+
+ "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA=="],
+
+ "@rolldown/binding-linux-arm64-gnu": ["@rolldown/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw=="],
+
+ "@rolldown/binding-linux-arm64-musl": ["@rolldown/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ=="],
+
+ "@rolldown/binding-linux-x64-gnu": ["@rolldown/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img=="],
+
+ "@rolldown/binding-linux-x64-musl": ["@rolldown/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA=="],
+
+ "@rolldown/binding-openharmony-arm64": ["@rolldown/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ=="],
+
+ "@rolldown/binding-wasm32-wasi": ["@rolldown/[email protected]", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ=="],
+
+ "@rolldown/binding-win32-arm64-msvc": ["@rolldown/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw=="],
+
+ "@rolldown/binding-win32-x64-msvc": ["@rolldown/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ=="],
+
+ "@rolldown/pluginutils": ["@rolldown/[email protected]", "", {}, "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ=="],
+
+ "@rollup/plugin-commonjs": ["@rollup/[email protected]", "", { "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", "fdir": "^6.2.0", "is-reference": "1.2.1", "magic-string": "^0.30.3", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA=="],
+
+ "@rollup/pluginutils": ["@rollup/[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="],
+
+ "@rollup/rollup-android-arm-eabi": ["@rollup/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg=="],
+
+ "@rollup/rollup-android-arm64": ["@rollup/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg=="],
+
+ "@rollup/rollup-darwin-arm64": ["@rollup/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg=="],
+
+ "@rollup/rollup-darwin-x64": ["@rollup/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ=="],
+
+ "@rollup/rollup-freebsd-arm64": ["@rollup/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg=="],
+
+ "@rollup/rollup-freebsd-x64": ["@rollup/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw=="],
+
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ=="],
+
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg=="],
+
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ=="],
+
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA=="],
+
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g=="],
+
+ "@rollup/rollup-linux-loong64-musl": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw=="],
+
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw=="],
+
+ "@rollup/rollup-linux-ppc64-musl": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw=="],
+
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw=="],
+
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg=="],
+
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg=="],
+
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg=="],
+
+ "@rollup/rollup-linux-x64-musl": ["@rollup/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w=="],
+
+ "@rollup/rollup-openbsd-x64": ["@rollup/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg=="],
+
+ "@rollup/rollup-openharmony-arm64": ["@rollup/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw=="],
+
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g=="],
+
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA=="],
+
+ "@rollup/rollup-win32-x64-gnu": ["@rollup/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg=="],
+
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw=="],
+
+ "@scalar/core": ["@scalar/[email protected]", "", { "dependencies": { "@scalar/types": "0.5.6" } }, "sha512-eBp1phI8u/GZR+yy9SwRTr07n3+Va+xoZJVT6tczG799eynpXiQJuUQ4S2S1cb0cmOV0ZkwHRNG3ldMQHdJgWQ=="],
+
+ "@scalar/helpers": ["@scalar/[email protected]", "", {}, "sha512-A471YFBCj7ZOlGIkAYnU8oYgeyts82ZNX+4UicrlmKv3eAQ+kwboN3Dy0R6u1lcA/+I/zzeXi/fBObsT7P9qTA=="],
+
+ "@scalar/hono-api-reference": ["@scalar/[email protected]", "", { "dependencies": { "@scalar/core": "0.3.30" }, "peerDependencies": { "hono": "^4.10.3" } }, "sha512-5WC3W/3VKRXBxHP/bTwM9tRx5ZEBRSnEe4CFcLK8u7DQPvP6J6iSZCsqfZPeNvPSnrgITBQuEuBXIYsinigKYg=="],
+
+ "@scalar/types": ["@scalar/[email protected]", "", { "dependencies": { "@scalar/helpers": "0.2.6", "nanoid": "5.1.5", "type-fest": "5.0.0", "zod": "^4.1.11" } }, "sha512-yvTXYdSQPq8qmJ1zZPBRRB3RkkE2c0J3gIIMirX997yyVixrhtb0jmfM+9EZ2ZWXGx2JGLquGP10zY0nmnu75w=="],
+
+ "@sec-ant/readable-stream": ["@sec-ant/[email protected]", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="],
+
+ "@selderee/plugin-htmlparser2": ["@selderee/[email protected]", "", { "dependencies": { "domhandler": "^5.0.3", "selderee": "^0.11.0" } }, "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ=="],
+
+ "@sentry-internal/browser-utils": ["@sentry-internal/[email protected]", "", { "dependencies": { "@sentry/core": "10.32.1" } }, "sha512-sjLLep1es3rTkbtAdTtdpc/a6g7v7bK5YJiZJsUigoJ4NTiFeMI5uIDCxbH/tjJ1q23YE1LzVn7T96I+qBRjHA=="],
+
+ "@sentry-internal/feedback": ["@sentry-internal/[email protected]", "", { "dependencies": { "@sentry/core": "10.32.1" } }, "sha512-O24G8jxbfBY1RE/v2qFikPJISVMOrd/zk8FKyl+oUVYdOxU2Ucjk2cR3EQruBFlc7irnL6rT3GPfRZ/kBgLkmQ=="],
+
+ "@sentry-internal/replay": ["@sentry-internal/[email protected]", "", { "dependencies": { "@sentry-internal/browser-utils": "10.32.1", "@sentry/core": "10.32.1" } }, "sha512-KKmLUgIaLRM0VjrMA1ByQTawZyRDYSkG2evvEOVpEtR9F0sumidAQdi7UY71QEKE1RYe/Jcp/3WoaqsMh8tbnQ=="],
+
+ "@sentry-internal/replay-canvas": ["@sentry-internal/[email protected]", "", { "dependencies": { "@sentry-internal/replay": "10.32.1", "@sentry/core": "10.32.1" } }, "sha512-/XGTzWNWVc+B691fIVekV2KeoHFEDA5KftrLFAhEAW7uWOwk/xy3aQX4TYM0LcPm2PBKvoumlAD+Sd/aXk63oA=="],
+
+ "@sentry/babel-plugin-component-annotate": ["@sentry/[email protected]", "", {}, "sha512-aSIk0vgBqv7PhX6/Eov+vlI4puCE0bRXzUG5HdCsHBpAfeMkI8Hva6kSOusnzKqs8bf04hU7s3Sf0XxGTj/1AA=="],
+
+ "@sentry/browser": ["@sentry/[email protected]", "", { "dependencies": { "@sentry-internal/browser-utils": "10.32.1", "@sentry-internal/feedback": "10.32.1", "@sentry-internal/replay": "10.32.1", "@sentry-internal/replay-canvas": "10.32.1", "@sentry/core": "10.32.1" } }, "sha512-NPNCXTZ05ZGTFyJdKNqjykpFm+urem0ebosILQiw3C4BxNVNGH4vfYZexyl6prRhmg91oB6GjVNiVDuJiap1gg=="],
+
+ "@sentry/bundler-plugin-core": ["@sentry/[email protected]", "", { "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "4.6.1", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^10.5.0", "magic-string": "0.30.8", "unplugin": "1.0.1" } }, "sha512-WPeRbnMXm927m4Kr69NTArPfI+p5/34FHftdCRI3LFPMyhZDzz6J3wLy4hzaVUgmMf10eLzmq2HGEMvpQmdynA=="],
+
+ "@sentry/cli": ["@sentry/[email protected]", "", { "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", "progress": "^2.0.3", "proxy-from-env": "^1.1.0", "which": "^2.0.2" }, "optionalDependencies": { "@sentry/cli-darwin": "2.58.4", "@sentry/cli-linux-arm": "2.58.4", "@sentry/cli-linux-arm64": "2.58.4", "@sentry/cli-linux-i686": "2.58.4", "@sentry/cli-linux-x64": "2.58.4", "@sentry/cli-win32-arm64": "2.58.4", "@sentry/cli-win32-i686": "2.58.4", "@sentry/cli-win32-x64": "2.58.4" }, "bin": { "sentry-cli": "bin/sentry-cli" } }, "sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg=="],
+
+ "@sentry/cli-darwin": ["@sentry/[email protected]", "", { "os": "darwin" }, "sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ=="],
+
+ "@sentry/cli-linux-arm": ["@sentry/[email protected]", "", { "os": [ "linux", "android", "freebsd", ], "cpu": "arm" }, "sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA=="],
+
+ "@sentry/cli-linux-arm64": ["@sentry/[email protected]", "", { "os": [ "linux", "android", "freebsd", ], "cpu": "arm64" }, "sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig=="],
+
+ "@sentry/cli-linux-i686": ["@sentry/[email protected]", "", { "os": [ "linux", "android", "freebsd", ], "cpu": "ia32" }, "sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA=="],
+
+ "@sentry/cli-linux-x64": ["@sentry/[email protected]", "", { "os": [ "linux", "android", "freebsd", ], "cpu": "x64" }, "sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q=="],
+
+ "@sentry/cli-win32-arm64": ["@sentry/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w=="],
+
+ "@sentry/cli-win32-i686": ["@sentry/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug=="],
+
+ "@sentry/cli-win32-x64": ["@sentry/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w=="],
+
+ "@sentry/core": ["@sentry/[email protected]", "", {}, "sha512-PH2ldpSJlhqsMj2vCTyU0BI2Fx1oIDhm7Izo5xFALvjVCS0gmlqHt1udu6YlKn8BtpGH6bGzssvv5APrk+OdPQ=="],
+
+ "@sentry/nextjs": ["@sentry/[email protected]", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@rollup/plugin-commonjs": "28.0.1", "@sentry-internal/browser-utils": "10.32.1", "@sentry/bundler-plugin-core": "^4.6.1", "@sentry/core": "10.32.1", "@sentry/node": "10.32.1", "@sentry/opentelemetry": "10.32.1", "@sentry/react": "10.32.1", "@sentry/vercel-edge": "10.32.1", "@sentry/webpack-plugin": "^4.6.1", "resolve": "1.22.8", "rollup": "^4.35.0", "stacktrace-parser": "^0.1.10" }, "peerDependencies": { "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0 || ^16.0.0-0" } }, "sha512-MlgQiKg9P2clKeyH+ZLdmNiMNfTMs/2DBK9V/enLZvYJd1sy5hmrkAV/NiLxVP0uXAeMEVtrgFMIb64cH7ZcXQ=="],
+
+ "@sentry/node": ["@sentry/[email protected]", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.2.0", "@opentelemetry/core": "^2.2.0", "@opentelemetry/instrumentation": "^0.208.0", "@opentelemetry/instrumentation-amqplib": "0.55.0", "@opentelemetry/instrumentation-connect": "0.52.0", "@opentelemetry/instrumentation-dataloader": "0.26.0", "@opentelemetry/instrumentation-express": "0.57.0", "@opentelemetry/instrumentation-fs": "0.28.0", "@opentelemetry/instrumentation-generic-pool": "0.52.0", "@opentelemetry/instrumentation-graphql": "0.56.0", "@opentelemetry/instrumentation-hapi": "0.55.0", "@opentelemetry/instrumentation-http": "0.208.0", "@opentelemetry/instrumentation-ioredis": "0.56.0", "@opentelemetry/instrumentation-kafkajs": "0.18.0", "@opentelemetry/instrumentation-knex": "0.53.0", "@opentelemetry/instrumentation-koa": "0.57.0", "@opentelemetry/instrumentation-lru-memoizer": "0.53.0", "@opentelemetry/instrumentation-mongodb": "0.61.0", "@opentelemetry/instrumentation-mongoose": "0.55.0", "@opentelemetry/instrumentation-mysql": "0.54.0", "@opentelemetry/instrumentation-mysql2": "0.55.0", "@opentelemetry/instrumentation-pg": "0.61.0", "@opentelemetry/instrumentation-redis": "0.57.0", "@opentelemetry/instrumentation-tedious": "0.27.0", "@opentelemetry/instrumentation-undici": "0.19.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-trace-base": "^2.2.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.19.0", "@sentry/core": "10.32.1", "@sentry/node-core": "10.32.1", "@sentry/opentelemetry": "10.32.1", "import-in-the-middle": "^2", "minimatch": "^9.0.0" } }, "sha512-oxlybzt8QW0lx/QaEj1DcvZDRXkgouewFelu/10dyUwv5So3YvipfvWInda+yMLmn25OggbloDQ0gyScA2jU3g=="],
+
+ "@sentry/node-core": ["@sentry/[email protected]", "", { "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", "@sentry/core": "10.32.1", "@sentry/opentelemetry": "10.32.1", "import-in-the-middle": "^2" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/resources": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-w56rxdBanBKc832zuwnE+zNzUQ19fPxfHEtOhK8JGPu3aSwQYcIxwz9z52lOx3HN7k/8Fj5694qlT3x/PokhRw=="],
+
+ "@sentry/opentelemetry": ["@sentry/[email protected]", "", { "dependencies": { "@sentry/core": "10.32.1" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0 || ^2.2.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-YLssSz5Y+qPvufrh2cDaTXDoXU8aceOhB+YTjT8/DLF6SOj7Tzen52aAcjNaifawaxEsLCC8O+B+A2iA+BllvA=="],
+
+ "@sentry/react": ["@sentry/[email protected]", "", { "dependencies": { "@sentry/browser": "10.32.1", "@sentry/core": "10.32.1", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, "sha512-/tX0HeACbAmVP57x8txTrGk/U3fa9pDBaoAtlOrnPv5VS/aC5SGkehXWeTGSAa+ahlOWwp3IF8ILVXRiOoG/Vg=="],
+
+ "@sentry/vercel-edge": ["@sentry/[email protected]", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/resources": "^2.2.0", "@sentry/core": "10.32.1" } }, "sha512-3hrc7TVs4ZeYSCOZdgmv9D1Bke2osnImfupceW8THecNv3uEUjYbrC2UkS/TFMiVHc9qpYzUnKbsGezMp3Bcaw=="],
+
+ "@sentry/webpack-plugin": ["@sentry/[email protected]", "", { "dependencies": { "@sentry/bundler-plugin-core": "4.6.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, "peerDependencies": { "webpack": ">=4.40.0" } }, "sha512-CJgT/t2pQWsPsMx9VJ86goU/orCQhL2HhDj5ZYBol6fPPoEGeTqKOPCnv/xsbCAfGSp1uHpyRLTA/Gx96u7VVA=="],
+
+ "@shikijs/core": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA=="],
+
+ "@shikijs/engine-javascript": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ=="],
+
+ "@shikijs/engine-oniguruma": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ=="],
+
+ "@shikijs/langs": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA=="],
+
+ "@shikijs/themes": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw=="],
+
+ "@shikijs/transformers": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/types": "3.21.0" } }, "sha512-CZwvCWWIiRRiFk9/JKzdEooakAP8mQDtBOQ1TKiCaS2E1bYtyBCOkUzS8akO34/7ufICQ29oeSfkb3tT5KtrhA=="],
+
+ "@shikijs/twoslash": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/types": "3.21.0", "twoslash": "^0.3.6" }, "peerDependencies": { "typescript": ">=5.5.0" } }, "sha512-iH360udAYON2JwfIldoCiMZr9MljuQA5QRBivKLpEuEpmVCSwrR+0WTQ0eS1ptgGBdH9weFiIsA5wJDzsEzTYg=="],
+
+ "@shikijs/types": ["@shikijs/[email protected]", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA=="],
+
+ "@shikijs/vscode-textmate": ["@shikijs/[email protected]", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
+
+ "@sindresorhus/is": ["@sindresorhus/[email protected]", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="],
+
+ "@sindresorhus/merge-streams": ["@sindresorhus/[email protected]", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="],
+
+ "@sindresorhus/slugify": ["@sindresorhus/[email protected]", "", { "dependencies": { "@sindresorhus/transliterate": "^1.0.0", "escape-string-regexp": "^5.0.0" } }, "sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w=="],
+
+ "@sindresorhus/transliterate": ["@sindresorhus/[email protected]", "", { "dependencies": { "escape-string-regexp": "^5.0.0" } }, "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ=="],
+
+ "@smithy/abort-controller": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw=="],
+
+ "@smithy/chunked-blob-reader": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA=="],
+
+ "@smithy/chunked-blob-reader-native": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" } }, "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ=="],
+
+ "@smithy/config-resolver": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.7", "@smithy/types": "^4.11.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-endpoints": "^3.2.7", "@smithy/util-middleware": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg=="],
+
+ "@smithy/core": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/middleware-serde": "^4.2.8", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-stream": "^4.5.8", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-wOboSEdQ85dbKAJ0zL+wQ6b0HTSBRhtGa0PYKysQXkRg+vK0tdCRRVruiFM2QMprkOQwSYOnwF4og96PAaEGag=="],
+
+ "@smithy/credential-provider-imds": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.7", "@smithy/property-provider": "^4.2.7", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA=="],
+
+ "@smithy/eventstream-codec": ["@smithy/[email protected]", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ=="],
+
+ "@smithy/eventstream-serde-browser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-ujzPk8seYoDBmABDE5YqlhQZAXLOrtxtJLrbhHMKjBoG5b4dK4i6/mEU+6/7yXIAkqOO8sJ6YxZl+h0QQ1IJ7g=="],
+
+ "@smithy/eventstream-serde-config-resolver": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-x7BtAiIPSaNaWuzm24Q/mtSkv+BrISO/fmheiJ39PKRNH3RmH2Hph/bUKSOBOBC9unqfIYDhKTHwpyZycLGPVQ=="],
+
+ "@smithy/eventstream-serde-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-roySCtHC5+pQq5lK4be1fZ/WR6s/AxnPaLfCODIPArtN2du8s5Ot4mKVK3pPtijL/L654ws592JHJ1PbZFF6+A=="],
+
+ "@smithy/eventstream-serde-universal": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/eventstream-codec": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g=="],
+
+ "@smithy/fetch-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^5.3.7", "@smithy/querystring-builder": "^4.2.7", "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" } }, "sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg=="],
+
+ "@smithy/hash-blob-browser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", "@smithy/chunked-blob-reader-native": "^4.2.1", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw=="],
+
+ "@smithy/hash-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw=="],
+
+ "@smithy/hash-stream-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ=="],
+
+ "@smithy/invalid-dependency": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ=="],
+
+ "@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ=="],
+
+ "@smithy/md5-js": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw=="],
+
+ "@smithy/middleware-content-length": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg=="],
+
+ "@smithy/middleware-endpoint": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/core": "^3.20.1", "@smithy/middleware-serde": "^4.2.8", "@smithy/node-config-provider": "^4.3.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "@smithy/url-parser": "^4.2.7", "@smithy/util-middleware": "^4.2.7", "tslib": "^2.6.2" } }, "sha512-mqpAdux0BNmZu/SqkFhQEnod4fX23xxTvU2LUpmKp0JpSI+kPYCiHJMmzREr8yxbNxKL2/DU1UZm9i++ayU+2g=="],
+
+ "@smithy/middleware-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.7", "@smithy/protocol-http": "^5.3.7", "@smithy/service-error-classification": "^4.2.7", "@smithy/smithy-client": "^4.10.3", "@smithy/types": "^4.11.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-retry": "^4.2.7", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" } }, "sha512-E5hulijA59nBk/zvcwVMaS7FG7Y4l6hWA9vrW018r+8kiZef4/ETQaPI4oY+3zsy9f6KqDv3c4VKtO4DwwgpCg=="],
+
+ "@smithy/middleware-serde": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w=="],
+
+ "@smithy/middleware-stack": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw=="],
+
+ "@smithy/node-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^4.2.7", "@smithy/shared-ini-file-loader": "^4.4.2", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw=="],
+
+ "@smithy/node-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/abort-controller": "^4.2.7", "@smithy/protocol-http": "^5.3.7", "@smithy/querystring-builder": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ=="],
+
+ "@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA=="],
+
+ "@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA=="],
+
+ "@smithy/querystring-builder": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg=="],
+
+ "@smithy/querystring-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w=="],
+
+ "@smithy/service-error-classification": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0" } }, "sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA=="],
+
+ "@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg=="],
+
+ "@smithy/signature-v4": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-middleware": "^4.2.7", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg=="],
+
+ "@smithy/smithy-client": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/core": "^3.20.1", "@smithy/middleware-endpoint": "^4.4.2", "@smithy/middleware-stack": "^4.2.7", "@smithy/protocol-http": "^5.3.7", "@smithy/types": "^4.11.0", "@smithy/util-stream": "^4.5.8", "tslib": "^2.6.2" } }, "sha512-EfECiO/0fAfb590LBnUe7rI5ux7XfquQ8LBzTe7gxw0j9QW/q8UT/EHWHlxV/+jhQ3+Ssga9uUYXCQgImGMbNg=="],
+
+ "@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA=="],
+
+ "@smithy/url-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/querystring-parser": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg=="],
+
+ "@smithy/util-base64": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ=="],
+
+ "@smithy/util-body-length-browser": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg=="],
+
+ "@smithy/util-body-length-node": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA=="],
+
+ "@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew=="],
+
+ "@smithy/util-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q=="],
+
+ "@smithy/util-defaults-mode-browser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^4.2.7", "@smithy/smithy-client": "^4.10.3", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-dwN4GmivYF1QphnP3xJESXKtHvkkvKHSZI8GrSKMVoENVSKW2cFPRYC4ZgstYjUHdR3zwaDkIaTDIp26JuY7Cw=="],
+
+ "@smithy/util-defaults-mode-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/config-resolver": "^4.4.5", "@smithy/credential-provider-imds": "^4.2.7", "@smithy/node-config-provider": "^4.3.7", "@smithy/property-provider": "^4.2.7", "@smithy/smithy-client": "^4.10.3", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-VD/I4AEhF1lpB3B//pmOIMBNLMrtdMXwy9yCOfa2QkJGDr63vH3RqPbSAKzoGMov3iryCxTXCxSsyGmEB8PDpg=="],
+
+ "@smithy/util-endpoints": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg=="],
+
+ "@smithy/util-hex-encoding": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw=="],
+
+ "@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w=="],
+
+ "@smithy/util-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg=="],
+
+ "@smithy/util-stream": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.8", "@smithy/node-http-handler": "^4.4.7", "@smithy/types": "^4.11.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w=="],
+
+ "@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA=="],
+
+ "@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="],
+
+ "@smithy/util-waiter": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/abort-controller": "^4.2.7", "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw=="],
+
+ "@smithy/uuid": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw=="],
+
+ "@socket.io/component-emitter": ["@socket.io/[email protected]", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="],
+
+ "@speed-highlight/core": ["@speed-highlight/[email protected]", "", {}, "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA=="],
+
+ "@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="],
+
+ "@stoplight/better-ajv-errors": ["@stoplight/[email protected]", "", { "dependencies": { "jsonpointer": "^5.0.0", "leven": "^3.1.0" }, "peerDependencies": { "ajv": ">=8" } }, "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA=="],
+
+ "@stoplight/json": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/ordered-object-literal": "^1.0.3", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.6.0", "jsonc-parser": "~2.2.1", "lodash": "^4.17.21", "safe-stable-stringify": "^1.1" } }, "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g=="],
+
+ "@stoplight/json-ref-readers": ["@stoplight/[email protected]", "", { "dependencies": { "node-fetch": "^2.6.0", "tslib": "^1.14.1" } }, "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ=="],
+
+ "@stoplight/json-ref-resolver": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/json": "^3.21.0", "@stoplight/path": "^1.3.2", "@stoplight/types": "^12.3.0 || ^13.0.0", "@types/urijs": "^1.19.19", "dependency-graph": "~0.11.0", "fast-memoize": "^2.5.2", "immer": "^9.0.6", "lodash": "^4.17.21", "tslib": "^2.6.0", "urijs": "^1.19.11" } }, "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A=="],
+
+ "@stoplight/ordered-object-literal": ["@stoplight/[email protected]", "", {}, "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg=="],
+
+ "@stoplight/path": ["@stoplight/[email protected]", "", {}, "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ=="],
+
+ "@stoplight/spectral-core": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/better-ajv-errors": "1.0.3", "@stoplight/json": "~3.21.0", "@stoplight/path": "1.3.2", "@stoplight/spectral-parsers": "^1.0.0", "@stoplight/spectral-ref-resolver": "^1.0.4", "@stoplight/spectral-runtime": "^1.1.2", "@stoplight/types": "~13.6.0", "@types/es-aggregate-error": "^1.0.2", "@types/json-schema": "^7.0.11", "ajv": "^8.17.1", "ajv-errors": "~3.0.0", "ajv-formats": "~2.1.1", "es-aggregate-error": "^1.0.7", "jsonpath-plus": "^10.3.0", "lodash": "~4.17.21", "lodash.topath": "^4.5.2", "minimatch": "3.1.2", "nimma": "0.2.3", "pony-cause": "^1.1.1", "simple-eval": "1.0.1", "tslib": "^2.8.1" } }, "sha512-5hBP81nCC1zn1hJXL/uxPNRKNcB+/pEIHgCjPRpl/w/qy9yC9ver04tw1W0l/PMiv0UeB5dYgozXVQ4j5a6QQQ=="],
+
+ "@stoplight/spectral-formats": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/json": "^3.17.0", "@stoplight/spectral-core": "^1.19.2", "@types/json-schema": "^7.0.7", "tslib": "^2.8.1" } }, "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw=="],
+
+ "@stoplight/spectral-functions": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/better-ajv-errors": "1.0.3", "@stoplight/json": "^3.17.1", "@stoplight/spectral-core": "^1.19.4", "@stoplight/spectral-formats": "^1.8.1", "@stoplight/spectral-runtime": "^1.1.2", "ajv": "^8.17.1", "ajv-draft-04": "~1.0.0", "ajv-errors": "~3.0.0", "ajv-formats": "~2.1.1", "lodash": "~4.17.21", "tslib": "^2.8.1" } }, "sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg=="],
+
+ "@stoplight/spectral-parsers": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/json": "~3.21.0", "@stoplight/types": "^14.1.1", "@stoplight/yaml": "~4.3.0", "tslib": "^2.8.1" } }, "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ=="],
+
+ "@stoplight/spectral-ref-resolver": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/json-ref-readers": "1.2.2", "@stoplight/json-ref-resolver": "~3.1.6", "@stoplight/spectral-runtime": "^1.1.2", "dependency-graph": "0.11.0", "tslib": "^2.8.1" } }, "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA=="],
+
+ "@stoplight/spectral-runtime": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/json": "^3.20.1", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.6.0", "abort-controller": "^3.0.0", "lodash": "^4.17.21", "node-fetch": "^2.7.0", "tslib": "^2.8.1" } }, "sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ=="],
+
+ "@stoplight/types": ["@stoplight/[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA=="],
+
+ "@stoplight/yaml": ["@stoplight/[email protected]", "", { "dependencies": { "@stoplight/ordered-object-literal": "^1.0.5", "@stoplight/types": "^14.1.1", "@stoplight/yaml-ast-parser": "0.0.50", "tslib": "^2.2.0" } }, "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w=="],
+
+ "@stoplight/yaml-ast-parser": ["@stoplight/[email protected]", "", {}, "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ=="],
+
+ "@supermemory/ai-sdk": ["@supermemory/ai-sdk@workspace:packages/ai-sdk"],
+
+ "@supermemory/memory-graph": ["@supermemory/memory-graph@workspace:packages/memory-graph"],
+
+ "@supermemory/tools": ["@supermemory/tools@workspace:packages/tools"],
+
+ "@swc/helpers": ["@swc/[email protected]", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
+
+ "@szmarczak/http-timer": ["@szmarczak/[email protected]", "", { "dependencies": { "defer-to-connect": "^2.0.1" } }, "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw=="],
+
+ "@tailwindcss/node": ["@tailwindcss/[email protected]", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.18" } }, "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ=="],
+
+ "@tailwindcss/oxide": ["@tailwindcss/[email protected]", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.18", "@tailwindcss/oxide-darwin-arm64": "4.1.18", "@tailwindcss/oxide-darwin-x64": "4.1.18", "@tailwindcss/oxide-freebsd-x64": "4.1.18", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", "@tailwindcss/oxide-linux-x64-musl": "4.1.18", "@tailwindcss/oxide-wasm32-wasi": "4.1.18", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" } }, "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A=="],
+
+ "@tailwindcss/oxide-android-arm64": ["@tailwindcss/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q=="],
+
+ "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A=="],
+
+ "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw=="],
+
+ "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA=="],
+
+ "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA=="],
+
+ "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw=="],
+
+ "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg=="],
+
+ "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g=="],
+
+ "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ=="],
+
+ "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/[email protected]", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.0", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA=="],
+
+ "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA=="],
+
+ "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q=="],
+
+ "@tailwindcss/postcss": ["@tailwindcss/[email protected]", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", "tailwindcss": "4.1.18" } }, "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g=="],
+
+ "@tailwindcss/typography": ["@tailwindcss/[email protected]", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="],
+
+ "@tailwindcss/vite": ["@tailwindcss/[email protected]", "", { "dependencies": { "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "tailwindcss": "4.1.18" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA=="],
+
+ "@tanstack/devtools-event-client": ["@tanstack/[email protected]", "", {}, "sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw=="],
+
+ "@tanstack/form-core": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/devtools-event-client": "^0.4.0", "@tanstack/pacer-lite": "^0.1.1", "@tanstack/store": "^0.7.7" } }, "sha512-nvogpyE98fhb0NDw1Bf2YaCH+L7ZIUgEpqO9TkHucDn6zg3ni521boUpv0i8HKIrmmFwDYjWZoCnrgY4HYWTkw=="],
+
+ "@tanstack/pacer-lite": ["@tanstack/[email protected]", "", {}, "sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w=="],
+
+ "@tanstack/query-core": ["@tanstack/[email protected]", "", {}, "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww=="],
+
+ "@tanstack/query-devtools": ["@tanstack/[email protected]", "", {}, "sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ=="],
+
+ "@tanstack/react-form": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/form-core": "1.27.7", "@tanstack/react-store": "^0.8.0" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-xTg4qrUY0fuLaSnkATLZcK3BWlnwLp7IuAb6UTbZKngiDEvvDCNTvVvHgPlgef1O2qN4klZxInRyRY6oEkXZ2A=="],
+
+ "@tanstack/react-query": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/query-core": "5.90.16" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ=="],
+
+ "@tanstack/react-query-devtools": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/query-devtools": "5.92.0" }, "peerDependencies": { "@tanstack/react-query": "^5.90.14", "react": "^18 || ^19" } }, "sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg=="],
+
+ "@tanstack/react-store": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/store": "0.8.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow=="],
+
+ "@tanstack/react-table": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/table-core": "8.21.3" }, "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" } }, "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww=="],
+
+ "@tanstack/react-virtual": ["@tanstack/[email protected]", "", { "dependencies": { "@tanstack/virtual-core": "3.13.18" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-dZkhyfahpvlaV0rIKnvQiVoWPyURppl6w4m9IwMDpuIjcJ1sD9YGWrt0wISvgU7ewACXx2Ct46WPgI6qAD4v6A=="],
+
+ "@tanstack/store": ["@tanstack/[email protected]", "", {}, "sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ=="],
+
+ "@tanstack/table-core": ["@tanstack/[email protected]", "", {}, "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg=="],
+
+ "@tanstack/virtual-core": ["@tanstack/[email protected]", "", {}, "sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg=="],
+
+ "@tokenizer/inflate": ["@tokenizer/[email protected]", "", { "dependencies": { "debug": "^4.4.3", "token-types": "^6.1.1" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="],
+
+ "@tokenizer/token": ["@tokenizer/[email protected]", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
+
+ "@tootallnate/quickjs-emscripten": ["@tootallnate/[email protected]", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="],
+
+ "@total-typescript/tsconfig": ["@total-typescript/[email protected]", "", {}, "sha512-fO4ctMPGz1kOFOQ4RCPBRBfMy3gDn+pegUfrGyUFRMv/Rd0ZM3/SHH3hFCYG4u6bPLG8OlmOGcBLDexvyr3A5w=="],
+
+ "@tsconfig/node18": ["@tsconfig/[email protected]", "", {}, "sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ=="],
+
+ "@tybys/wasm-util": ["@tybys/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
+
+ "@types/acorn": ["@types/[email protected]", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="],
+
+ "@types/babel__core": ["@types/[email protected]", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="],
+
+ "@types/babel__generator": ["@types/[email protected]", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="],
+
+ "@types/babel__template": ["@types/[email protected]", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="],
+
+ "@types/babel__traverse": ["@types/[email protected]", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="],
+
+ "@types/bun": ["@types/[email protected]", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
+
+ "@types/chai": ["@types/[email protected]", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="],
+
+ "@types/chrome": ["@types/[email protected]", "", { "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" } }, "sha512-n5Cqlh7zyAqRLQWLXkeV5K/1BgDZdVcO/dJSTa8x+7w+sx7m73UrDmduAptg4KorMtyTW2TNnPu8RGeaDMKNGg=="],
+
+ "@types/connect": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="],
+
+ "@types/cookie": ["@types/[email protected]", "", {}, "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="],
+
+ "@types/cors": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="],
+
+ "@types/css-font-loading-module": ["@types/[email protected]", "", {}, "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA=="],
+
+ "@types/d3": ["@types/[email protected]", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="],
+
+ "@types/d3-array": ["@types/[email protected]", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="],
+
+ "@types/d3-axis": ["@types/[email protected]", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="],
+
+ "@types/d3-brush": ["@types/[email protected]", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="],
+
+ "@types/d3-chord": ["@types/[email protected]", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="],
+
+ "@types/d3-color": ["@types/[email protected]", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="],
+
+ "@types/d3-contour": ["@types/[email protected]", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="],
+
+ "@types/d3-delaunay": ["@types/[email protected]", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="],
+
+ "@types/d3-dispatch": ["@types/[email protected]", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="],
+
+ "@types/d3-drag": ["@types/[email protected]", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="],
+
+ "@types/d3-dsv": ["@types/[email protected]", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="],
+
+ "@types/d3-ease": ["@types/[email protected]", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="],
+
+ "@types/d3-fetch": ["@types/[email protected]", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="],
+
+ "@types/d3-force": ["@types/[email protected]", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="],
+
+ "@types/d3-format": ["@types/[email protected]", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="],
+
+ "@types/d3-geo": ["@types/[email protected]", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="],
+
+ "@types/d3-hierarchy": ["@types/[email protected]", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="],
+
+ "@types/d3-interpolate": ["@types/[email protected]", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="],
+
+ "@types/d3-path": ["@types/[email protected]", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="],
+
+ "@types/d3-polygon": ["@types/[email protected]", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="],
+
+ "@types/d3-quadtree": ["@types/[email protected]", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="],
+
+ "@types/d3-random": ["@types/[email protected]", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="],
+
+ "@types/d3-scale": ["@types/[email protected]", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="],
+
+ "@types/d3-scale-chromatic": ["@types/[email protected]", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="],
+
+ "@types/d3-selection": ["@types/[email protected]", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="],
+
+ "@types/d3-shape": ["@types/[email protected]", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg=="],
+
+ "@types/d3-time": ["@types/[email protected]", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="],
+
+ "@types/d3-time-format": ["@types/[email protected]", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="],
+
+ "@types/d3-timer": ["@types/[email protected]", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="],
+
+ "@types/d3-transition": ["@types/[email protected]", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="],
+
+ "@types/d3-zoom": ["@types/[email protected]", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="],
+
+ "@types/debug": ["@types/[email protected]", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="],
+
+ "@types/deep-eql": ["@types/[email protected]", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="],
+
+ "@types/diff-match-patch": ["@types/[email protected]", "", {}, "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg=="],
+
+ "@types/dompurify": ["@types/[email protected]", "", { "dependencies": { "dompurify": "*" } }, "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg=="],
+
+ "@types/earcut": ["@types/[email protected]", "", {}, "sha512-k/9fOUGO39yd2sCjrbAJvGDEQvRwRnQIZlBz43roGwUZo5SHAmyVvSFyaVVZkicRVCaDXPKlbxrUcBuJoSWunQ=="],
+
+ "@types/es-aggregate-error": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg=="],
+
+ "@types/eslint": ["@types/[email protected]", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="],
+
+ "@types/eslint-scope": ["@types/[email protected]", "", { "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="],
+
+ "@types/estree": ["@types/[email protected]", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
+
+ "@types/estree-jsx": ["@types/[email protected]", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="],
+
+ "@types/filesystem": ["@types/[email protected]", "", { "dependencies": { "@types/filewriter": "*" } }, "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA=="],
+
+ "@types/filewriter": ["@types/[email protected]", "", {}, "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g=="],
+
+ "@types/geojson": ["@types/[email protected]", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="],
+
+ "@types/har-format": ["@types/[email protected]", "", {}, "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A=="],
+
+ "@types/hast": ["@types/[email protected]", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
+
+ "@types/http-cache-semantics": ["@types/[email protected]", "", {}, "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="],
+
+ "@types/is-hotkey": ["@types/[email protected]", "", {}, "sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ=="],
+
+ "@types/json-schema": ["@types/[email protected]", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
+
+ "@types/katex": ["@types/[email protected]", "", {}, "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="],
+
+ "@types/lodash": ["@types/[email protected]", "", {}, "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="],
+
+ "@types/mdast": ["@types/[email protected]", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
+
+ "@types/mdx": ["@types/[email protected]", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="],
+
+ "@types/minimatch": ["@types/[email protected]", "", {}, "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="],
+
+ "@types/ms": ["@types/[email protected]", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
+
+ "@types/mysql": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA=="],
+
+ "@types/nlcst": ["@types/[email protected]", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="],
+
+ "@types/node": ["@types/[email protected]", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg=="],
+
+ "@types/node-fetch": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.4" } }, "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw=="],
+
+ "@types/pg": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ=="],
+
+ "@types/pg-pool": ["@types/[email protected]", "", { "dependencies": { "@types/pg": "*" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="],
+
+ "@types/react": ["@types/[email protected]", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA=="],
+
+ "@types/react-dom": ["@types/[email protected]", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw=="],
+
+ "@types/react-reconciler": ["@types/[email protected]", "", { "peerDependencies": { "@types/react": "*" } }, "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg=="],
+
+ "@types/tedious": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="],
+
+ "@types/trusted-types": ["@types/[email protected]", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="],
+
+ "@types/turndown": ["@types/[email protected]", "", {}, "sha512-ru00MoyeeouE5BX4gRL+6m/BsDfbRayOskWqUvh7CLGW+UXxHQItqALa38kKnOiZPqJrtzJUgAC2+F0rL1S4Pg=="],
+
+ "@types/unist": ["@types/[email protected]", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
+
+ "@types/urijs": ["@types/[email protected]", "", {}, "sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg=="],
+
+ "@types/yauzl": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
+
+ "@typescript/vfs": ["@typescript/[email protected]", "", { "dependencies": { "debug": "^4.1.1" }, "peerDependencies": { "typescript": "*" } }, "sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g=="],
+
+ "@ungap/structured-clone": ["@ungap/[email protected]", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
+
+ "@vanilla-extract/babel-plugin-debug-ids": ["@vanilla-extract/[email protected]", "", { "dependencies": { "@babel/core": "^7.23.9" } }, "sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw=="],
+
+ "@vanilla-extract/compiler": ["@vanilla-extract/[email protected]", "", { "dependencies": { "@vanilla-extract/css": "^1.18.0", "@vanilla-extract/integration": "^8.0.7", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", "vite-node": "^3.2.2" } }, "sha512-W9HXf9EAccpE1vEIATvSoBVj/bQnmHfYHfDJjUN8dcOHW6oMcnoGTqweDM9I66BHqlNH4d0IsaeZKSViOv7K4w=="],
+
+ "@vanilla-extract/css": ["@vanilla-extract/[email protected]", "", { "dependencies": { "@emotion/hash": "^0.9.0", "@vanilla-extract/private": "^1.0.9", "css-what": "^6.1.0", "cssesc": "^3.0.0", "csstype": "^3.2.3", "dedent": "^1.5.3", "deep-object-diff": "^1.1.9", "deepmerge": "^4.2.2", "lru-cache": "^10.4.3", "media-query-parser": "^2.0.2", "modern-ahocorasick": "^1.0.0", "picocolors": "^1.0.0" } }, "sha512-/p0dwOjr0o8gE5BRQ5O9P0u/2DjUd6Zfga2JGmE4KaY7ZITWMszTzk4x4CPlM5cKkRr2ZGzbE6XkuPNfp9shSQ=="],
+
+ "@vanilla-extract/integration": ["@vanilla-extract/[email protected]", "", { "dependencies": { "@babel/core": "^7.23.9", "@babel/plugin-syntax-typescript": "^7.23.3", "@vanilla-extract/babel-plugin-debug-ids": "^1.2.2", "@vanilla-extract/css": "^1.18.0", "dedent": "^1.5.3", "esbuild": "npm:esbuild@>=0.17.6 <0.28.0", "eval": "0.1.8", "find-up": "^5.0.0", "javascript-stringify": "^2.0.1", "mlly": "^1.4.2" } }, "sha512-ILob4F9cEHXpbWAVt3Y2iaQJpqYq/c/5TJC8Fz58C2XmX3QW2Y589krvViiyJhQfydCGK3EbwPQhVFjQaBeKfg=="],
+
+ "@vanilla-extract/private": ["@vanilla-extract/[email protected]", "", {}, "sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA=="],
+
+ "@vanilla-extract/recipes": ["@vanilla-extract/[email protected]", "", { "peerDependencies": { "@vanilla-extract/css": "^1.0.0" } }, "sha512-Fvr+htdyb6LVUu+PhH61UFPhwkjgDEk8L4Zq9oIdte42sntpKrgFy90MyTRtGwjVALmrJ0pwRUVr8UoByYeW8A=="],
+
+ "@vanilla-extract/sprinkles": ["@vanilla-extract/[email protected]", "", { "peerDependencies": { "@vanilla-extract/css": "^1.0.0" } }, "sha512-HOYidLONR/SeGk8NBAeI64I4gYdsMX9vJmniL13ZcLVwawyK0s2GUENEAcGA+GYLIoeyQB61UqmhqPodJry7zA=="],
+
+ "@vanilla-extract/vite-plugin": ["@vanilla-extract/[email protected]", "", { "dependencies": { "@vanilla-extract/compiler": "^0.3.4", "@vanilla-extract/integration": "^8.0.7" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-fTYNKUK3n4ApkUf2FEcO7mpqNKEHf9kDGg8DXlkqHtPxgwPhjuaajmDfQCSBsNgnA2SLI+CB5EO6kLQuKsw2Rw=="],
+
+ "@vercel/oidc": ["@vercel/[email protected]", "", {}, "sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw=="],
+
+ "@vitejs/plugin-react": ["@vitejs/[email protected]", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.53", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ=="],
+
+ "@vitest/expect": ["@vitest/[email protected]", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig=="],
+
+ "@vitest/mocker": ["@vitest/[email protected]", "", { "dependencies": { "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ=="],
+
+ "@vitest/pretty-format": ["@vitest/[email protected]", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="],
+
+ "@vitest/runner": ["@vitest/[email protected]", "", { "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ=="],
+
+ "@vitest/snapshot": ["@vitest/[email protected]", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ=="],
+
+ "@vitest/spy": ["@vitest/[email protected]", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="],
+
+ "@vitest/utils": ["@vitest/[email protected]", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="],
+
+ "@webassemblyjs/ast": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ=="],
+
+ "@webassemblyjs/floating-point-hex-parser": ["@webassemblyjs/[email protected]", "", {}, "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA=="],
+
+ "@webassemblyjs/helper-api-error": ["@webassemblyjs/[email protected]", "", {}, "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ=="],
+
+ "@webassemblyjs/helper-buffer": ["@webassemblyjs/[email protected]", "", {}, "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA=="],
+
+ "@webassemblyjs/helper-numbers": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA=="],
+
+ "@webassemblyjs/helper-wasm-bytecode": ["@webassemblyjs/[email protected]", "", {}, "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA=="],
+
+ "@webassemblyjs/helper-wasm-section": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/wasm-gen": "1.14.1" } }, "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw=="],
+
+ "@webassemblyjs/ieee754": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw=="],
+
+ "@webassemblyjs/leb128": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@xtuc/long": "4.2.2" } }, "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw=="],
+
+ "@webassemblyjs/utf8": ["@webassemblyjs/[email protected]", "", {}, "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ=="],
+
+ "@webassemblyjs/wasm-edit": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/helper-wasm-section": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-opt": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1", "@webassemblyjs/wast-printer": "1.14.1" } }, "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ=="],
+
+ "@webassemblyjs/wasm-gen": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg=="],
+
+ "@webassemblyjs/wasm-opt": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1" } }, "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw=="],
+
+ "@webassemblyjs/wasm-parser": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ=="],
+
+ "@webassemblyjs/wast-printer": ["@webassemblyjs/[email protected]", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw=="],
+
+ "@webext-core/fake-browser": ["@webext-core/[email protected]", "", { "dependencies": { "lodash.merge": "^4.6.2" } }, "sha512-nZcVWr3JpwpS5E6hKpbAwAMBM/AXZShnfW0F76udW8oLd6Kv0nbW6vFS07md4Na/0ntQonk3hFnlQYGYBAlTrA=="],
+
+ "@webext-core/isolated-element": ["@webext-core/[email protected]", "", { "dependencies": { "is-potential-custom-element-name": "^1.0.1" } }, "sha512-rbtnReIGdiVQb2UhK3MiECU6JqsiIo2K/luWvOdOw57Ot770Iw4KLCEPXUQMITIH5V5er2jfVK8hSWXaEOQGNQ=="],
+
+ "@webext-core/match-patterns": ["@webext-core/[email protected]", "", {}, "sha512-NY39ACqCxdKBmHgw361M9pfJma8e4AZo20w9AY+5ZjIj1W2dvXC8J31G5fjfOGbulW9w4WKpT8fPooi0mLkn9A=="],
+
+ "@webgpu/types": ["@webgpu/[email protected]", "", {}, "sha512-3ab1B59Ojb6RwjOspYLsTpCzbNB3ZaamIAxBMmvnNkiDoLTZUOBXZ9p5nAYVEkQlDdf6qAZWi1pqj9+ypiqznA=="],
+
+ "@wxt-dev/browser": ["@wxt-dev/[email protected]", "", { "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" } }, "sha512-jvfSppeLzlH4sOkIvMBJoA1pKoI+U5gTkjDwMKdkTWh0P/fj+KDyze3lzo3S6372viCm8tXUKNez+VKyVz2ZDw=="],
+
+ "@wxt-dev/module-react": ["@wxt-dev/[email protected]", "", { "dependencies": { "@vitejs/plugin-react": "^4.4.1 || ^5.0.0" }, "peerDependencies": { "wxt": ">=0.19.16" } }, "sha512-KgsUrsgH5rBT8MwiipnDEOHBXmLvTIdFICrI7KjngqSf9DpVRn92HsKmToxY0AYpkP19hHWta2oNYFTzmmm++g=="],
+
+ "@wxt-dev/storage": ["@wxt-dev/[email protected]", "", { "dependencies": { "@wxt-dev/browser": "^0.1.4", "async-mutex": "^0.5.0", "dequal": "^2.0.3" } }, "sha512-f6AknnpJvhNHW4s0WqwSGCuZAj0fjP3EVNPBO5kB30pY+3Zt/nqZGqJN6FgBLCSkYjPJ8VL1hNX5LMVmvxQoDw=="],
+
+ "@xmldom/xmldom": ["@xmldom/[email protected]", "", {}, "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw=="],
+
+ "@xtuc/ieee754": ["@xtuc/[email protected]", "", {}, "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="],
+
+ "@xtuc/long": ["@xtuc/[email protected]", "", {}, "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="],
+
+ "abort-controller": ["[email protected]", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
+
+ "accepts": ["[email protected]", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="],
+
+ "acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="],
+
+ "acorn-import-attributes": ["[email protected]", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="],
+
+ "acorn-import-phases": ["[email protected]", "", { "peerDependencies": { "acorn": "^8.14.0" } }, "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ=="],
+
+ "acorn-jsx": ["[email protected]", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
+
+ "acorn-walk": ["[email protected]", "", {}, "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A=="],
+
+ "address": ["[email protected]", "", {}, "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA=="],
+
+ "adm-zip": ["[email protected]", "", {}, "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ=="],
+
+ "agent-base": ["[email protected]", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="],
+
+ "agentkeepalive": ["[email protected]", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="],
+
+ "agents": ["[email protected]", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/sdk": "1.23.0", "cron-schedule": "^6.0.0", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "mimetext": "^3.0.27", "nanoid": "^5.1.6", "partyserver": "^0.1.0", "partysocket": "1.1.10", "yargs": "^18.0.0", "zod-to-ts": "^2.0.0" }, "peerDependencies": { "@ai-sdk/openai": ">=2.0.0", "@ai-sdk/react": ">=1.0.0", "ai": ">=5.0.0", "react": "^19.0.0", "viem": ">=2.0.0", "x402": "^0.7.1", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@ai-sdk/openai", "@ai-sdk/react", "ai", "viem", "x402"], "bin": { "agents": "dist/cli/index.js" } }, "sha512-e6Ift6X0sFceYgFBIZGK4jQ+vyFq9caSF80ilsAVHzfFHvqb21013UrgGzZac4X+fzAP103YBSgS7C57tjAj8w=="],
+
+ "aggregate-error": ["[email protected]", "", { "dependencies": { "clean-stack": "^4.0.0", "indent-string": "^5.0.0" } }, "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w=="],
+
+ "ai": ["[email protected]", "", { "dependencies": { "@ai-sdk/gateway": "2.0.24", "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-sKJHfhJkvAyq5NC3yJJ4R8Z3tn4pSHF760/jInKAtmLwPLWTHfGo293DSO4un8QUAgJOagHd09VSXOXv+STMNQ=="],
+
+ "ai-gateway-provider": ["[email protected]", "", { "dependencies": { "@ai-sdk/provider": "^1.1.3", "@ai-sdk/provider-utils": "^2.2.8", "ai": "^4.3.16" } }, "sha512-OrovxjYP+yowh4/OEsd/cYkvNx7s0mhBRXBO9RLyN8i803jlxyLlWZ1OAbiGL5FET3cnI8pYb8TrFMmZQT9yZQ=="],
+
+ "ajv": ["[email protected]", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],
+
+ "ajv-draft-04": ["[email protected]", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="],
+
+ "ajv-errors": ["[email protected]", "", { "peerDependencies": { "ajv": "^8.0.1" } }, "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ=="],
+
+ "ajv-formats": ["[email protected]", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="],
+
+ "ajv-keywords": ["[email protected]", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="],
+
+ "alchemy": ["[email protected]", "", { "dependencies": { "@aws-sdk/credential-providers": "^3.0.0", "@cloudflare/unenv-preset": "2.7.7", "@cloudflare/workers-types": "^4.20250805.0", "@iarna/toml": "^2.2.5", "@octokit/rest": "^21.1.1", "@smithy/node-config-provider": "^4.0.0", "@smithy/types": "^4.6.0", "aws4fetch": "^1.0.20", "env-paths": "^3.0.0", "esbuild": "^0.25.1", "execa": "^9.6.0", "fast-json-patch": "^3.1.1", "fast-xml-parser": "^5.2.5", "find-process": "^2.0.0", "glob": "^10.0.0", "jszip": "^3.0.0", "libsodium-wrappers": "^0.7.15", "miniflare": "^4.20250906.0", "neverthrow": "^8.2.0", "open": "^10.1.2", "openapi-types": "^12.1.3", "pathe": "^2.0.3", "picocolors": "^1.1.1", "proper-lockfile": "^4.1.2", "signal-exit": "^4.1.0", "unenv": "2.0.0-rc.21", "ws": "^8.18.3", "yaml": "^2.0.0" }, "peerDependencies": { "@astrojs/cloudflare": "^12.6.4", "@aws-sdk/client-dynamodb": "^3.0.0", "@aws-sdk/client-iam": "^3.0.0", "@aws-sdk/client-lambda": "^3.0.0", "@aws-sdk/client-s3": "^3.0.0", "@aws-sdk/client-sesv2": "^3.0.0", "@aws-sdk/client-sqs": "^3.0.0", "@aws-sdk/client-ssm": "^3.0.0", "@aws-sdk/client-sts": "^3.0.0", "@cloudflare/vite-plugin": "^1.13.14", "@coinbase/cdp-sdk": "^0.10.0", "@libsql/client": "^0.15.12", "@opennextjs/cloudflare": "^1.6.5", "astro": "^5.13.2", "drizzle-orm": "^0.44.2", "rwsdk": "^0.1.36", "stripe": "^18.5.0", "vite": ">=6.0.0", "wrangler": "^4.42.2" }, "optionalPeers": ["@astrojs/cloudflare", "@aws-sdk/client-dynamodb", "@aws-sdk/client-iam", "@aws-sdk/client-lambda", "@aws-sdk/client-s3", "@aws-sdk/client-sesv2", "@aws-sdk/client-sqs", "@aws-sdk/client-ssm", "@aws-sdk/client-sts", "@cloudflare/vite-plugin", "@coinbase/cdp-sdk", "@libsql/client", "@opennextjs/cloudflare", "astro", "drizzle-orm", "rwsdk", "stripe", "vite"], "bin": { "alchemy": "bin/alchemy.js" } }, "sha512-/b/Sh9oWvfTVF6RkNU99qHj2ny5fkOGW1+I/4LvpO20Fc5hm0Gmo4mEcmaA1GJtYudj5mqypMvUC7RGNtcY9UQ=="],
+
+ "ansi-align": ["[email protected]", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="],
+
+ "ansi-colors": ["[email protected]", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="],
+
+ "ansi-escapes": ["[email protected]", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw=="],
+
+ "ansi-regex": ["[email protected]", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
+
+ "ansi-styles": ["[email protected]", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
+
+ "ansis": ["[email protected]", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="],
+
+ "any-promise": ["[email protected]", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
+
+ "anymatch": ["[email protected]", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
+
+ "arg": ["[email protected]", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="],
+
+ "argparse": ["[email protected]", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
+
+ "aria-hidden": ["[email protected]", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="],
+
+ "arkregex": ["[email protected]", "", { "dependencies": { "@ark/util": "0.55.0" } }, "sha512-bU21QJOJEFJK+BPNgv+5bVXkvRxyAvgnon75D92newgHxkBJTgiFwQxusyViYyJkETsddPlHyspshDQcCzmkNg=="],
+
+ "arktype": ["[email protected]", "", { "dependencies": { "@ark/schema": "0.55.0", "@ark/util": "0.55.0", "arkregex": "0.0.3" } }, "sha512-enctOHxI4SULBv/TDtCVi5M8oLd4J5SVlPUblXDzSsOYQNMzmVbUosGBnJuZDKmFlN5Ie0/QVEuTE+Z5X1UhsQ=="],
+
+ "array-buffer-byte-length": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="],
+
+ "array-differ": ["[email protected]", "", {}, "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw=="],
+
+ "array-flatten": ["[email protected]", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="],
+
+ "array-iterate": ["[email protected]", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="],
+
+ "array-union": ["[email protected]", "", {}, "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw=="],
+
+ "arraybuffer.prototype.slice": ["[email protected]", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="],
+
+ "assertion-error": ["[email protected]", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="],
+
+ "ast-kit": ["[email protected]", "", { "dependencies": { "@babel/parser": "^7.28.5", "pathe": "^2.0.3" } }, "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw=="],
+
+ "ast-types": ["[email protected]", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="],
+
+ "astring": ["[email protected]", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
+
+ "async": ["[email protected]", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="],
+
+ "async-function": ["[email protected]", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="],
+
+ "async-mutex": ["[email protected]", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA=="],
+
+ "asynckit": ["[email protected]", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
+
+ "atmn": ["[email protected]", "", { "dependencies": { "@inquirer/prompts": "^7.6.0", "axios": "^1.10.0", "chalk": "^5.2.0", "commander": "^14.0.0", "dotenv": "^17.2.0", "inquirer": "^12.7.0", "jiti": "^2.4.2", "open": "^10.1.2", "yocto-spinner": "^1.0.0", "zod": "^3.24.1" }, "bin": { "atmn": "dist/cli.js" } }, "sha512-53IDSjsmGxcpSkUMHXjmz9sSdUg1lOxir01ExP91/ee1xbbOXvWSY4XXff1FOhTXKM+uoBOfo/zMlo3OoEJE8Q=="],
+
+ "atomic-sleep": ["[email protected]", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="],
+
+ "atomically": ["[email protected]", "", { "dependencies": { "stubborn-fs": "^2.0.0", "when-exit": "^2.1.4" } }, "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q=="],
+
+ "attr-accept": ["[email protected]", "", {}, "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ=="],
+
+ "auto-bind": ["[email protected]", "", {}, "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg=="],
+
+ "autumn-js": ["[email protected]", "", { "dependencies": { "rou3": "^0.6.1", "swr": "^2.3.3", "zod": "^3.24.1" }, "peerDependencies": { "better-auth": "^1.2.12", "better-call": "^1.0.12" }, "optionalPeers": ["better-auth", "better-call"] }, "sha512-h/kZKDTuUk7MOAnRSjyWuf++2BVH5HF/yIeTOFEL3YwLXtWHBjqlYSsHlQK7BH7R1TC1fPsXGKMRGRjgcJD/tA=="],
+
+ "available-typed-arrays": ["[email protected]", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
+
+ "avsc": ["[email protected]", "", {}, "sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg=="],
+
+ "aws4fetch": ["[email protected]", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="],
+
+ "axios": ["[email protected]", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA=="],
+
+ "b4a": ["[email protected]", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q=="],
+
+ "babel-dead-code-elimination": ["[email protected]", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-mwq3W3e/pKSI6TG8lXMiDWvEi1VXYlSBlJlB3l+I0bAb5u1RNUl88udos85eOPNK3m5EXK9uO7d2g08pesTySQ=="],
+
+ "babel-plugin-react-compiler": ["[email protected]", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="],
+
+ "bail": ["[email protected]", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
+
+ "balanced-match": ["[email protected]", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
+
+ "bare-events": ["[email protected]", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ=="],
+
+ "bare-fs": ["[email protected]", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw=="],
+
+ "bare-os": ["[email protected]", "", {}, "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A=="],
+
+ "bare-path": ["[email protected]", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="],
+
+ "bare-stream": ["[email protected]", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A=="],
+
+ "bare-url": ["[email protected]", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw=="],
+
+ "base64-js": ["[email protected]", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
+
+ "base64id": ["[email protected]", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="],
+
+ "baseline-browser-mapping": ["[email protected]", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg=="],
+
+ "basic-auth": ["[email protected]", "", { "dependencies": { "safe-buffer": "5.1.2" } }, "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg=="],
+
+ "basic-ftp": ["[email protected]", "", {}, "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw=="],
+
+ "before-after-hook": ["[email protected]", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="],
+
+ "better-auth": ["[email protected]", "", { "dependencies": { "@better-auth/core": "1.4.10", "@better-auth/telemetry": "1.4.10", "@better-auth/utils": "0.3.0", "@better-fetch/fetch": "1.1.21", "@noble/ciphers": "^2.0.0", "@noble/hashes": "^2.0.0", "better-call": "1.1.7", "defu": "^6.1.4", "jose": "^6.1.0", "kysely": "^0.28.5", "nanostores": "^1.0.1", "zod": "^4.1.12" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": ">=0.41.0", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-0kqwEBJLe8eyFzbUspRG/htOriCf9uMLlnpe34dlIJGdmDfPuQISd4shShvUrvIVhPxsY1dSTXdXPLpqISYOYg=="],
+
+ "better-call": ["[email protected]", "", { "dependencies": { "@better-auth/utils": "^0.3.0", "@better-fetch/fetch": "^1.1.4", "rou3": "^0.7.10", "set-cookie-parser": "^2.7.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-6gaJe1bBIEgVebQu/7q9saahVzvBsGaByEnE8aDVncZEDiJO7sdNB28ot9I6iXSbR25egGmmZ6aIURXyQHRraQ=="],
+
+ "better-opn": ["[email protected]", "", { "dependencies": { "open": "^8.0.4" } }, "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ=="],
+
+ "bignumber.js": ["[email protected]", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="],
+
+ "binary-extensions": ["[email protected]", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
+
+ "birpc": ["[email protected]", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="],
+
+ "blake3-wasm": ["[email protected]", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="],
+
+ "bluebird": ["[email protected]", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="],
+
+ "body-parser": ["[email protected]", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA=="],
+
+ "boolbase": ["[email protected]", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
+
+ "bowser": ["[email protected]", "", {}, "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw=="],
+
+ "boxen": ["[email protected]", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="],
+
+ "brace-expansion": ["[email protected]", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
+
+ "braces": ["[email protected]", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
+
+ "browserslist": ["[email protected]", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="],
+
+ "buffer": ["[email protected]", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
+
+ "buffer-crc32": ["[email protected]", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
+
+ "buffer-equal-constant-time": ["[email protected]", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
+
+ "buffer-from": ["[email protected]", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="],
+
+ "bun-types": ["[email protected]", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
+
+ "bundle-name": ["[email protected]", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
+
+ "bytes": ["[email protected]", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
+
+ "c12": ["[email protected]", "", { "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^17.2.3", "exsolve": "^1.0.8", "giget": "^2.0.0", "jiti": "^2.6.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "*" }, "optionalPeers": ["magicast"] }, "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q=="],
+
+ "cac": ["[email protected]", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="],
+
+ "cacheable-lookup": ["[email protected]", "", {}, "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w=="],
+
+ "cacheable-request": ["[email protected]", "", { "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", "keyv": "^4.5.3", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" } }, "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ=="],
+
+ "call-bind": ["[email protected]", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="],
+
+ "call-bind-apply-helpers": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
+
+ "call-bound": ["[email protected]", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
+
+ "callsites": ["[email protected]", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
+
+ "camelcase": ["[email protected]", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="],
+
+ "camelcase-css": ["[email protected]", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="],
+
+ "caniuse-lite": ["[email protected]", "", {}, "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ=="],
+
+ "ccount": ["[email protected]", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
+
+ "chai": ["[email protected]", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw=="],
+
+ "chalk": ["[email protected]", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+
+ "character-entities": ["[email protected]", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
+
+ "character-entities-html4": ["[email protected]", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="],
+
+ "character-entities-legacy": ["[email protected]", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
+
+ "character-reference-invalid": ["[email protected]", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="],
+
+ "chardet": ["[email protected]", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="],
+
+ "check-error": ["[email protected]", "", {}, "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA=="],
+
+ "chevrotain": ["[email protected]", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", "@chevrotain/regexp-to-ast": "11.0.3", "@chevrotain/types": "11.0.3", "@chevrotain/utils": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw=="],
+
+ "chevrotain-allstar": ["[email protected]", "", { "dependencies": { "lodash-es": "^4.17.21" }, "peerDependencies": { "chevrotain": "^11.0.0" } }, "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw=="],
+
+ "chokidar": ["[email protected]", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
+
+ "chownr": ["[email protected]", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
+
+ "chrome-launcher": ["[email protected]", "", { "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", "lighthouse-logger": "^2.0.1" }, "bin": { "print-chrome-path": "bin/print-chrome-path.cjs" } }, "sha512-JbuGuBNss258bvGil7FT4HKdC3SC2K7UAEUqiPy3ACS3Yxo3hAW6bvFpCu2HsIJLgTqxgEX6BkujvzZfLpUD0Q=="],
+
+ "chrome-trace-event": ["[email protected]", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="],
+
+ "chromium-bidi": ["[email protected]", "", { "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0", "zod": "3.23.8" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg=="],
+
+ "ci-info": ["[email protected]", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="],
+
+ "citty": ["[email protected]", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="],
+
+ "cjs-module-lexer": ["[email protected]", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="],
+
+ "class-variance-authority": ["[email protected]", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="],
+
+ "clean-stack": ["[email protected]", "", { "dependencies": { "escape-string-regexp": "5.0.0" } }, "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg=="],
+
+ "cli-boxes": ["[email protected]", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="],
+
+ "cli-cursor": ["[email protected]", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
+
+ "cli-spinners": ["[email protected]", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="],
+
+ "cli-truncate": ["[email protected]", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="],
+
+ "cli-width": ["[email protected]", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="],
+
+ "client-only": ["[email protected]", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
+
+ "cliui": ["[email protected]", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="],
+
+ "clone": ["[email protected]", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="],
+
+ "cloudflare": ["[email protected]", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ=="],
+
+ "clsx": ["[email protected]", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
+
+ "cmdk": ["[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="],
+
+ "code-excerpt": ["[email protected]", "", { "dependencies": { "convert-to-spaces": "^2.0.1" } }, "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA=="],
+
+ "collapse-white-space": ["[email protected]", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="],
+
+ "color": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="],
+
+ "color-blend": ["[email protected]", "", {}, "sha512-fYODTHhI/NG+B5GnzvuL3kiFrK/UnkUezWFTgEPBTY5V+kpyfAn95Vn9sJeeCX6omrCOdxnqCL3CvH+6sXtIbw=="],
+
+ "color-convert": ["[email protected]", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
+
+ "color-name": ["[email protected]", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
+
+ "color-string": ["[email protected]", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="],
+
+ "colorette": ["[email protected]", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="],
+
+ "combined-stream": ["[email protected]", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
+
+ "comma-separated-tokens": ["[email protected]", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
+
+ "commander": ["[email protected]", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="],
+
+ "commondir": ["[email protected]", "", {}, "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="],
+
+ "compressible": ["[email protected]", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="],
+
+ "compression": ["[email protected]", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="],
+
+ "compromise": ["[email protected]", "", { "dependencies": { "efrt": "2.7.0", "grad-school": "0.0.5", "suffix-thumb": "5.0.2" } }, "sha512-9qWxpOWo4crzvbdxAYDTwO6z0WljXwi6mL7CqCjAXKn7QtFijmSj7fCyAqGWldCVT2zNboMvg4kNL06drMg2Vw=="],
+
+ "compute-scroll-into-view": ["[email protected]", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="],
+
+ "concat-map": ["[email protected]", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
+
+ "concat-stream": ["[email protected]", "", { "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" } }, "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="],
+
+ "confbox": ["[email protected]", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
+
+ "config-chain": ["[email protected]", "", { "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ=="],
+
+ "configstore": ["[email protected]", "", { "dependencies": { "atomically": "^2.0.3", "dot-prop": "^9.0.0", "graceful-fs": "^4.2.11", "xdg-basedir": "^5.1.0" } }, "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg=="],
+
+ "consola": ["[email protected]", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="],
+
+ "content-disposition": ["[email protected]", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="],
+
+ "content-type": ["[email protected]", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
+
+ "convert-source-map": ["[email protected]", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="],
+
+ "convert-to-spaces": ["[email protected]", "", {}, "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ=="],
+
+ "cookie": ["[email protected]", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="],
+
+ "cookie-signature": ["[email protected]", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="],
+
+ "core-js": ["[email protected]", "", {}, "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg=="],
+
+ "core-js-pure": ["[email protected]", "", {}, "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw=="],
+
+ "core-util-is": ["[email protected]", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="],
+
+ "cors": ["[email protected]", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
+
+ "cose-base": ["[email protected]", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="],
+
+ "cosmiconfig": ["[email protected]", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="],
+
+ "cron-schedule": ["[email protected]", "", {}, "sha512-BoZaseYGXOo5j5HUwTaegIog3JJbuH4BbrY9A1ArLjXpy+RWb3mV28F/9Gv1dDA7E2L8kngWva4NWisnLTyfgQ=="],
+
+ "cross-spawn": ["[email protected]", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
+
+ "css-select": ["[email protected]", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
+
+ "css-what": ["[email protected]", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
+
+ "cssesc": ["[email protected]", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
+
+ "cssom": ["[email protected]", "", {}, "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="],
+
+ "csstype": ["[email protected]", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
+
+ "cytoscape": ["[email protected]", "", {}, "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="],
+
+ "cytoscape-cose-bilkent": ["[email protected]", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="],
+
+ "cytoscape-fcose": ["[email protected]", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="],
+
+ "d3": ["[email protected]", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="],
+
+ "d3-array": ["[email protected]", "", {}, "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="],
+
+ "d3-axis": ["[email protected]", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="],
+
+ "d3-brush": ["[email protected]", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="],
+
+ "d3-chord": ["[email protected]", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="],
+
+ "d3-color": ["[email protected]", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="],
+
+ "d3-contour": ["[email protected]", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="],
+
+ "d3-delaunay": ["[email protected]", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="],
+
+ "d3-dispatch": ["[email protected]", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="],
+
+ "d3-drag": ["[email protected]", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="],
+
+ "d3-dsv": ["[email protected]", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="],
+
+ "d3-ease": ["[email protected]", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="],
+
+ "d3-fetch": ["[email protected]", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="],
+
+ "d3-force": ["[email protected]", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="],
+
+ "d3-format": ["[email protected]", "", {}, "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="],
+
+ "d3-geo": ["[email protected]", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="],
+
+ "d3-hierarchy": ["[email protected]", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="],
+
+ "d3-interpolate": ["[email protected]", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="],
+
+ "d3-path": ["[email protected]", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="],
+
+ "d3-polygon": ["[email protected]", "", {}, "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ=="],
+
+ "d3-quadtree": ["[email protected]", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="],
+
+ "d3-random": ["[email protected]", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="],
+
+ "d3-sankey": ["[email protected]", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="],
+
+ "d3-scale": ["[email protected]", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="],
+
+ "d3-scale-chromatic": ["[email protected]", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="],
+
+ "d3-selection": ["[email protected]", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="],
+
+ "d3-shape": ["[email protected]", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="],
+
+ "d3-time": ["[email protected]", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="],
+
+ "d3-time-format": ["[email protected]", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="],
+
+ "d3-timer": ["[email protected]", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="],
+
+ "d3-transition": ["[email protected]", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="],
+
+ "d3-zoom": ["[email protected]", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="],
+
+ "dagre-d3-es": ["[email protected]", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q=="],
+
+ "data-uri-to-buffer": ["[email protected]", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="],
+
+ "data-view-buffer": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="],
+
+ "data-view-byte-length": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="],
+
+ "data-view-byte-offset": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="],
+
+ "date-fns": ["[email protected]", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="],
+
+ "dayjs": ["[email protected]", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="],
+
+ "debounce": ["[email protected]", "", {}, "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="],
+
+ "debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+ "decimal.js-light": ["[email protected]", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="],
+
+ "decode-bmp": ["[email protected]", "", { "dependencies": { "@canvas/image-data": "^1.0.0", "to-data-view": "^1.1.0" } }, "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA=="],
+
+ "decode-ico": ["[email protected]", "", { "dependencies": { "@canvas/image-data": "^1.0.0", "decode-bmp": "^0.2.0", "to-data-view": "^1.1.0" } }, "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA=="],
+
+ "decode-named-character-reference": ["[email protected]", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="],
+
+ "decompress-response": ["[email protected]", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
+
+ "dedent": ["[email protected]", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg=="],
+
+ "deep-eql": ["[email protected]", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="],
+
+ "deep-extend": ["[email protected]", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="],
+
+ "deep-object-diff": ["[email protected]", "", {}, "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA=="],
+
+ "deepmerge": ["[email protected]", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="],
+
+ "default-browser": ["[email protected]", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg=="],
+
+ "default-browser-id": ["[email protected]", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="],
+
+ "defer-to-connect": ["[email protected]", "", {}, "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="],
+
+ "define-data-property": ["[email protected]", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="],
+
+ "define-lazy-prop": ["[email protected]", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="],
+
+ "define-properties": ["[email protected]", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="],
+
+ "defu": ["[email protected]", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
+
+ "degenerator": ["[email protected]", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="],
+
+ "delaunator": ["[email protected]", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="],
+
+ "delayed-stream": ["[email protected]", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
+
+ "depd": ["[email protected]", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
+
+ "dependency-graph": ["[email protected]", "", {}, "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg=="],
+
+ "dequal": ["[email protected]", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
+
+ "destr": ["[email protected]", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="],
+
+ "destroy": ["[email protected]", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="],
+
+ "detect-libc": ["[email protected]", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
+
+ "detect-node-es": ["[email protected]", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="],
+
+ "detect-port": ["[email protected]", "", { "dependencies": { "address": "^1.0.1", "debug": "4" }, "bin": { "detect": "bin/detect-port.js", "detect-port": "bin/detect-port.js" } }, "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ=="],
+
+ "devlop": ["[email protected]", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
+
+ "devtools-protocol": ["[email protected]", "", {}, "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA=="],
+
+ "didyoumean": ["[email protected]", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="],
+
+ "diff": ["[email protected]", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="],
+
+ "diff-match-patch": ["[email protected]", "", {}, "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="],
+
+ "direction": ["[email protected]", "", { "bin": { "direction": "cli.js" } }, "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ=="],
+
+ "dlv": ["[email protected]", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="],
+
+ "dns-packet": ["[email protected]", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="],
+
+ "dns-socket": ["[email protected]", "", { "dependencies": { "dns-packet": "^5.2.4" } }, "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg=="],
+
+ "dom-helpers": ["[email protected]", "", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="],
+
+ "dom-serializer": ["[email protected]", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
+
+ "domelementtype": ["[email protected]", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
+
+ "domhandler": ["[email protected]", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
+
+ "dompurify": ["[email protected]", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q=="],
+
+ "domutils": ["[email protected]", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
+
+ "dot-prop": ["[email protected]", "", { "dependencies": { "type-fest": "^4.18.2" } }, "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ=="],
+
+ "dotenv": ["[email protected]", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="],
+
+ "dotenv-expand": ["[email protected]", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA=="],
+
+ "drizzle-kit": ["[email protected]", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg=="],
+
+ "drizzle-orm": ["[email protected]", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ=="],
+
+ "drizzle-zod": ["[email protected]", "", { "peerDependencies": { "drizzle-orm": ">=0.36.0", "zod": ">=3.0.0" } }, "sha512-nZzALOdz44/AL2U005UlmMqaQ1qe5JfanvLujiTHiiT8+vZJTBFhj3pY4Vk+L6UWyKFfNmLhk602Hn4kCTynKQ=="],
+
+ "dts-resolver": ["[email protected]", "", { "peerDependencies": { "oxc-resolver": ">=11.0.0" }, "optionalPeers": ["oxc-resolver"] }, "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw=="],
+
+ "dunder-proto": ["[email protected]", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
+
+ "duplexer": ["[email protected]", "", {}, "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="],
+
+ "earcut": ["[email protected]", "", {}, "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ=="],
+
+ "eastasianwidth": ["[email protected]", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],
+
+ "ecdsa-sig-formatter": ["[email protected]", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="],
+
+ "eciesjs": ["[email protected]", "", { "dependencies": { "@ecies/ciphers": "^0.2.4", "@noble/ciphers": "^1.3.0", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0" } }, "sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw=="],
+
+ "ee-first": ["[email protected]", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
+
+ "efrt": ["[email protected]", "", {}, "sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ=="],
+
+ "electron-to-chromium": ["[email protected]", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="],
+
+ "embla-carousel": ["[email protected]", "", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="],
+
+ "embla-carousel-autoplay": ["[email protected]", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA=="],
+
+ "embla-carousel-react": ["[email protected]", "", { "dependencies": { "embla-carousel": "8.6.0", "embla-carousel-reactive-utils": "8.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA=="],
+
+ "embla-carousel-reactive-utils": ["[email protected]", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A=="],
+
+ "emoji-regex": ["[email protected]", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="],
+
+ "empathic": ["[email protected]", "", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="],
+
+ "encodeurl": ["[email protected]", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
+
+ "end-of-stream": ["[email protected]", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
+
+ "engine.io": ["[email protected]", "", { "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" } }, "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA=="],
+
+ "engine.io-parser": ["[email protected]", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="],
+
+ "enhanced-resolve": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="],
+
+ "enquirer": ["[email protected]", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="],
+
+ "entities": ["[email protected]", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
+
+ "env-paths": ["[email protected]", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="],
+
+ "environment": ["[email protected]", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
+
+ "error-ex": ["[email protected]", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="],
+
+ "error-stack-parser-es": ["[email protected]", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="],
+
+ "es-abstract": ["[email protected]", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="],
+
+ "es-aggregate-error": ["[email protected]", "", { "dependencies": { "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "set-function-name": "^2.0.2" } }, "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA=="],
+
+ "es-define-property": ["[email protected]", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
+
+ "es-errors": ["[email protected]", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
+
+ "es-module-lexer": ["[email protected]", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
+
+ "es-object-atoms": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
+
+ "es-set-tostringtag": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
+
+ "es-to-primitive": ["[email protected]", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="],
+
+ "es-toolkit": ["[email protected]", "", {}, "sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA=="],
+
+ "es6-error": ["[email protected]", "", {}, "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="],
+
+ "esast-util-from-estree": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="],
+
+ "esast-util-from-js": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="],
+
+ "esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
+
+ "esbuild-register": ["[email protected]", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="],
+
+ "escalade": ["[email protected]", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
+
+ "escape-goat": ["[email protected]", "", {}, "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg=="],
+
+ "escape-html": ["[email protected]", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
+
+ "escape-string-regexp": ["[email protected]", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
+
+ "escodegen": ["[email protected]", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
+
+ "eslint-scope": ["[email protected]", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="],
+
+ "esprima": ["[email protected]", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
+
+ "esrecurse": ["[email protected]", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
+
+ "estraverse": ["[email protected]", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="],
+
+ "estree-util-attach-comments": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="],
+
+ "estree-util-build-jsx": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="],
+
+ "estree-util-is-identifier-name": ["[email protected]", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="],
+
+ "estree-util-scope": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="],
+
+ "estree-util-to-js": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="],
+
+ "estree-util-visit": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="],
+
+ "estree-walker": ["[email protected]", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
+
+ "esutils": ["[email protected]", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
+
+ "etag": ["[email protected]", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
+
+ "eval": ["[email protected]", "", { "dependencies": { "@types/node": "*", "require-like": ">= 0.1.1" } }, "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw=="],
+
+ "event-target-polyfill": ["[email protected]", "", {}, "sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ=="],
+
+ "event-target-shim": ["[email protected]", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
+
+ "eventemitter3": ["[email protected]", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
+
+ "events": ["[email protected]", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="],
+
+ "events-universal": ["[email protected]", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="],
+
+ "eventsource": ["[email protected]", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="],
+
+ "eventsource-parser": ["[email protected]", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="],
+
+ "execa": ["[email protected]", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.6", "figures": "^6.1.0", "get-stream": "^9.0.0", "human-signals": "^8.0.1", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", "yoctocolors": "^2.1.1" } }, "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA=="],
+
+ "exit-hook": ["[email protected]", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="],
+
+ "expect-type": ["[email protected]", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="],
+
+ "express": ["[email protected]", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g=="],
+
+ "express-rate-limit": ["[email protected]", "", { "peerDependencies": { "express": ">= 4.11" } }, "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw=="],
+
+ "exsolve": ["[email protected]", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="],
+
+ "extend": ["[email protected]", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
+
+ "extract-zip": ["[email protected]", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="],
+
+ "fast-content-type-parse": ["[email protected]", "", {}, "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="],
+
+ "fast-deep-equal": ["[email protected]", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
+
+ "fast-equals": ["[email protected]", "", {}, "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw=="],
+
+ "fast-fifo": ["[email protected]", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="],
+
+ "fast-glob": ["[email protected]", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
+
+ "fast-json-patch": ["[email protected]", "", {}, "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="],
+
+ "fast-memoize": ["[email protected]", "", {}, "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="],
+
+ "fast-redact": ["[email protected]", "", {}, "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A=="],
+
+ "fast-uri": ["[email protected]", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="],
+
+ "fast-xml-parser": ["[email protected]", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA=="],
+
+ "fastq": ["[email protected]", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="],
+
+ "fault": ["[email protected]", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="],
+
+ "favicons": ["[email protected]", "", { "dependencies": { "escape-html": "^1.0.3", "sharp": "^0.33.1", "xml2js": "^0.6.1" } }, "sha512-k/2rVBRIRzOeom3wI9jBPaSEvoTSQEW4iM0EveBmBBKFxO8mSyyRWtDlfC3VnEfu0avmjrMzy8/ZFPSe6F71Hw=="],
+
+ "fd-slicer": ["[email protected]", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
+
+ "fdir": ["[email protected]", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
+
+ "fetch-blob": ["[email protected]", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="],
+
+ "fflate": ["[email protected]", "", {}, "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="],
+
+ "figures": ["[email protected]", "", { "dependencies": { "is-unicode-supported": "^2.0.0" } }, "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg=="],
+
+ "file-selector": ["[email protected]", "", { "dependencies": { "tslib": "^2.7.0" } }, "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig=="],
+
+ "file-type": ["[email protected]", "", { "dependencies": { "@tokenizer/inflate": "^0.4.1", "strtok3": "^10.3.4", "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" } }, "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA=="],
+
+ "filesize": ["[email protected]", "", {}, "sha512-mYJ/qXKvREuO0uH8LTQJ6v7GsUvVOguqxg2VTwQUkyTPXXRRWPdjuUPVqdBrJQhvci48OHlNGRnux+Slr2Rnvw=="],
+
+ "fill-range": ["[email protected]", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
+
+ "finalhandler": ["[email protected]", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="],
+
+ "find-process": ["[email protected]", "", { "dependencies": { "chalk": "~4.1.2", "commander": "^12.1.0", "loglevel": "^1.9.2" }, "bin": { "find-process": "dist/bin/find-process.js" } }, "sha512-YUBQnteWGASJoEVVsOXy6XtKAY2O1FCsWnnvQ8y0YwgY1rZiKeVptnFvMu6RSELZAJOGklqseTnUGGs5D0bKmg=="],
+
+ "find-up": ["[email protected]", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
+
+ "firefox-profile": ["[email protected]", "", { "dependencies": { "adm-zip": "~0.5.x", "fs-extra": "^11.2.0", "ini": "^4.1.3", "minimist": "^1.2.8", "xml2js": "^0.6.2" }, "bin": { "firefox-profile": "lib/cli.js" } }, "sha512-aGApEu5bfCNbA4PGUZiRJAIU6jKmghV2UVdklXAofnNtiDjqYw0czLS46W7IfFqVKgKhFB8Ao2YoNGHY4BoIMQ=="],
+
+ "flubber": ["[email protected]", "", { "dependencies": { "d3-array": "^1.2.0", "d3-polygon": "^1.0.3", "earcut": "^2.1.1", "svg-path-properties": "^0.2.1", "svgpath": "^2.2.1", "topojson-client": "^3.0.0" } }, "sha512-79RkJe3rA4nvRCVc2uXjj7U/BAUq84TS3KHn6c0Hr9K64vhj83ZNLUziNx4pJoBumSPhOl5VjH+Z0uhi+eE8Uw=="],
+
+ "follow-redirects": ["[email protected]", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="],
+
+ "for-each": ["[email protected]", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
+
+ "foreground-child": ["[email protected]", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
+
+ "form-data": ["[email protected]", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
+
+ "form-data-encoder": ["[email protected]", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="],
+
+ "format": ["[email protected]", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="],
+
+ "formdata-node": ["[email protected]", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.3" } }, "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ=="],
+
+ "formdata-polyfill": ["[email protected]", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="],
+
+ "forwarded": ["[email protected]", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
+
+ "forwarded-parse": ["[email protected]", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="],
+
+ "framer-motion": ["[email protected]", "", { "dependencies": { "motion-dom": "^12.24.11", "motion-utils": "^12.24.10", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-mlWqd0rApIjeyhTCSNCqPYsUAEhkcUukZxH3ke6KbstBRPcxhEpuIjmiUQvB+1E9xkEm5SpNHBgHCapH/QHTWg=="],
+
+ "fresh": ["[email protected]", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="],
+
+ "front-matter": ["[email protected]", "", { "dependencies": { "js-yaml": "^3.13.1" } }, "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg=="],
+
+ "fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="],
+
+ "fs-minipass": ["[email protected]", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
+
+ "fs.realpath": ["[email protected]", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="],
+
+ "fsevents": ["[email protected]", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
+
+ "function-bind": ["[email protected]", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
+
+ "function.prototype.name": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="],
+
+ "functions-have-names": ["[email protected]", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="],
+
+ "fx-runner": ["[email protected]", "", { "dependencies": { "commander": "2.9.0", "shell-quote": "1.7.3", "spawn-sync": "1.0.15", "when": "3.7.7", "which": "1.2.4", "winreg": "0.0.12" }, "bin": { "fx-runner": "bin/fx-runner" } }, "sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg=="],
+
+ "gaxios": ["[email protected]", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "rimraf": "^5.0.1" } }, "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ=="],
+
+ "gcd": ["[email protected]", "", {}, "sha512-VNx3UEGr+ILJTiMs1+xc5SX1cMgJCrXezKPa003APUWNqQqaF6n25W8VcR7nHN6yRWbvvUTwCpZCFJeWC2kXlw=="],
+
+ "gcp-metadata": ["[email protected]", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="],
+
+ "generator-function": ["[email protected]", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="],
+
+ "gensync": ["[email protected]", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
+
+ "get-caller-file": ["[email protected]", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
+
+ "get-east-asian-width": ["[email protected]", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="],
+
+ "get-intrinsic": ["[email protected]", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
+
+ "get-nonce": ["[email protected]", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="],
+
+ "get-port": ["[email protected]", "", {}, "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ=="],
+
+ "get-port-please": ["[email protected]", "", {}, "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A=="],
+
+ "get-proto": ["[email protected]", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
+
+ "get-stream": ["[email protected]", "", { "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" } }, "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA=="],
+
+ "get-symbol-description": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="],
+
+ "get-tsconfig": ["[email protected]", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="],
+
+ "get-uri": ["[email protected]", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg=="],
+
+ "gifuct-js": ["[email protected]", "", { "dependencies": { "js-binary-schema-parser": "^2.0.3" } }, "sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg=="],
+
+ "giget": ["[email protected]", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="],
+
+ "glob": ["[email protected]", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="],
+
+ "glob-parent": ["[email protected]", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "glob-to-regexp": ["[email protected]", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="],
+
+ "global-directory": ["[email protected]", "", { "dependencies": { "ini": "4.1.1" } }, "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q=="],
+
+ "globalthis": ["[email protected]", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="],
+
+ "google-auth-library": ["[email protected]", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.0.0", "gcp-metadata": "^8.0.0", "google-logging-utils": "^1.0.0", "gtoken": "^8.0.0", "jws": "^4.0.0" } }, "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w=="],
+
+ "google-logging-utils": ["[email protected]", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="],
+
+ "gopd": ["[email protected]", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
+
+ "got": ["[email protected]", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA=="],
+
+ "graceful-fs": ["[email protected]", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
+
+ "graceful-readlink": ["[email protected]", "", {}, "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="],
+
+ "grad-school": ["[email protected]", "", {}, "sha512-rXunEHF9M9EkMydTBux7+IryYXEZinRk6g8OBOGDBzo/qWJjhTxy86i5q7lQYpCLHN8Sqv1XX3OIOc7ka2gtvQ=="],
+
+ "growly": ["[email protected]", "", {}, "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw=="],
+
+ "gtoken": ["[email protected]", "", { "dependencies": { "gaxios": "^7.0.0", "jws": "^4.0.0" } }, "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw=="],
+
+ "gzip-size": ["[email protected]", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q=="],
+
+ "hachure-fill": ["[email protected]", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="],
+
+ "has-bigints": ["[email protected]", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="],
+
+ "has-flag": ["[email protected]", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
+
+ "has-property-descriptors": ["[email protected]", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
+
+ "has-proto": ["[email protected]", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="],
+
+ "has-symbols": ["[email protected]", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
+
+ "has-tostringtag": ["[email protected]", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
+
+ "hasown": ["[email protected]", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
+
+ "hast": ["[email protected]", "", {}, "sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA=="],
+
+ "hast-util-embedded": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-is-element": "^3.0.0" } }, "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA=="],
+
+ "hast-util-from-dom": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hastscript": "^9.0.0", "web-namespaces": "^2.0.0" } }, "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q=="],
+
+ "hast-util-from-html": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="],
+
+ "hast-util-from-html-isomorphic": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-dom": "^5.0.0", "hast-util-from-html": "^2.0.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw=="],
+
+ "hast-util-from-parse5": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="],
+
+ "hast-util-has-property": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA=="],
+
+ "hast-util-is-body-ok-link": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ=="],
+
+ "hast-util-is-element": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="],
+
+ "hast-util-minify-whitespace": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", "hast-util-is-element": "^3.0.0", "hast-util-whitespace": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw=="],
+
+ "hast-util-parse-selector": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="],
+
+ "hast-util-phrasing": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", "hast-util-has-property": "^3.0.0", "hast-util-is-body-ok-link": "^3.0.0", "hast-util-is-element": "^3.0.0" } }, "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ=="],
+
+ "hast-util-raw": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="],
+
+ "hast-util-sanitize": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "unist-util-position": "^5.0.0" } }, "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg=="],
+
+ "hast-util-to-estree": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="],
+
+ "hast-util-to-html": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA=="],
+
+ "hast-util-to-jsx-runtime": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="],
+
+ "hast-util-to-mdast": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-phrasing": "^3.0.0", "hast-util-to-html": "^9.0.0", "hast-util-to-text": "^4.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "mdast-util-to-string": "^4.0.0", "rehype-minify-whitespace": "^6.0.0", "trim-trailing-lines": "^2.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-DsL/SvCK9V7+vfc6SLQ+vKIyBDXTk2KLSbfBYkH4zeF/uR1yBajHRhkzuaUSGOB1WJSTieJBdHwxlC+HLKvZZw=="],
+
+ "hast-util-to-parse5": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA=="],
+
+ "hast-util-to-string": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="],
+
+ "hast-util-to-text": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="],
+
+ "hast-util-whitespace": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="],
+
+ "hastscript": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="],
+
+ "hex-rgb": ["[email protected]", "", {}, "sha512-NQO+lgVUCtHxZ792FodgW0zflK+ozS9X9dwGp9XvvmPlH7pyxd588cn24TD3rmPm/N0AIRXF10Otah8yKqGw4w=="],
+
+ "hoist-non-react-statics": ["[email protected]", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="],
+
+ "hono": ["[email protected]", "", {}, "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w=="],
+
+ "hono-openapi": ["[email protected]", "", { "dependencies": { "json-schema-walker": "^2.0.0" }, "peerDependencies": { "@hono/arktype-validator": "^2.0.0", "@hono/effect-validator": "^1.2.0", "@hono/typebox-validator": "^0.2.0 || ^0.3.0", "@hono/valibot-validator": "^0.5.1", "@hono/zod-validator": "^0.4.1", "@sinclair/typebox": "^0.34.9", "@valibot/to-json-schema": "^1.0.0-beta.3", "arktype": "^2.0.0", "effect": "^3.11.3", "hono": "^4.6.13", "openapi-types": "^12.1.3", "valibot": "^1.0.0-beta.9", "zod": "^3.23.8", "zod-openapi": "^4.0.0" }, "optionalPeers": ["@hono/arktype-validator", "@hono/effect-validator", "@hono/typebox-validator", "@hono/valibot-validator", "@hono/zod-validator", "@sinclair/typebox", "@valibot/to-json-schema", "arktype", "effect", "hono", "valibot", "zod", "zod-openapi"] }, "sha512-LYr5xdtD49M7hEAduV1PftOMzuT8ZNvkyWfh1DThkLsIr4RkvDb12UxgIiFbwrJB6FLtFXLoOZL9x4IeDk2+VA=="],
+
+ "hookable": ["[email protected]", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="],
+
+ "html-escaper": ["[email protected]", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="],
+
+ "html-to-text": ["[email protected]", "", { "dependencies": { "@selderee/plugin-htmlparser2": "^0.11.0", "deepmerge": "^4.3.1", "dom-serializer": "^2.0.0", "htmlparser2": "^8.0.2", "selderee": "^0.11.0" } }, "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg=="],
+
+ "html-url-attributes": ["[email protected]", "", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="],
+
+ "html-void-elements": ["[email protected]", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="],
+
+ "htmlparser2": ["[email protected]", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.1", "entities": "^6.0.0" } }, "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g=="],
+
+ "http-cache-semantics": ["[email protected]", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="],
+
+ "http-errors": ["[email protected]", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="],
+
+ "http-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
+
+ "http2-wrapper": ["[email protected]", "", { "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" } }, "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ=="],
+
+ "https-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="],
+
+ "human-signals": ["[email protected]", "", {}, "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ=="],
+
+ "humanize-ms": ["[email protected]", "", { "dependencies": { "ms": "^2.0.0" } }, "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ=="],
+
+ "ico-endec": ["[email protected]", "", {}, "sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ=="],
+
+ "iconv-lite": ["[email protected]", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="],
+
+ "idb-keyval": ["[email protected]", "", {}, "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg=="],
+
+ "ieee754": ["[email protected]", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
+
+ "ignore": ["[email protected]", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
+
+ "immediate": ["[email protected]", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="],
+
+ "immer": ["[email protected]", "", {}, "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw=="],
+
+ "import-fresh": ["[email protected]", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
+
+ "import-in-the-middle": ["[email protected]", "", { "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-bruMpJ7xz+9jwGzrwEhWgvRrlKRYCRDBrfU+ur3FcasYXLJDxTruJ//8g2Noj+QFyRBeqbpj8Bhn4Fbw6HjvhA=="],
+
+ "import-meta-resolve": ["[email protected]", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="],
+
+ "indent-string": ["[email protected]", "", {}, "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="],
+
+ "inherits": ["[email protected]", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
+ "ini": ["[email protected]", "", {}, "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg=="],
+
+ "ink": ["[email protected]", "", { "dependencies": { "@alcalzone/ansi-tokenize": "^0.2.0", "ansi-escapes": "^7.0.0", "ansi-styles": "^6.2.1", "auto-bind": "^5.0.1", "chalk": "^5.6.0", "cli-boxes": "^3.0.0", "cli-cursor": "^4.0.0", "cli-truncate": "^4.0.0", "code-excerpt": "^4.0.0", "es-toolkit": "^1.39.10", "indent-string": "^5.0.0", "is-in-ci": "^2.0.0", "patch-console": "^2.0.0", "react-reconciler": "^0.32.0", "signal-exit": "^3.0.7", "slice-ansi": "^7.1.0", "stack-utils": "^2.0.6", "string-width": "^7.2.0", "type-fest": "^4.27.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0", "ws": "^8.18.0", "yoga-layout": "~3.2.1" }, "peerDependencies": { "@types/react": ">=19.0.0", "react": ">=19.0.0", "react-devtools-core": "^4.19.1" }, "optionalPeers": ["@types/react", "react-devtools-core"] }, "sha512-2CbJAa7XeziZYe6pDS5RVLirRY28iSGMQuEV8jRU5NQsONQNfcR/BZHHc9vkMg2lGYTHTM2pskxC1YmY28p6bQ=="],
+
+ "ink-spinner": ["[email protected]", "", { "dependencies": { "cli-spinners": "^2.7.0" }, "peerDependencies": { "ink": ">=4.0.0", "react": ">=18.0.0" } }, "sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA=="],
+
+ "inline-style-parser": ["[email protected]", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="],
+
+ "inquirer": ["[email protected]", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/prompts": "^7.10.1", "@inquirer/type": "^3.0.10", "mute-stream": "^2.0.0", "run-async": "^4.0.6", "rxjs": "^7.8.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw=="],
+
+ "internal-slot": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="],
+
+ "internmap": ["[email protected]", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="],
+
+ "ip-address": ["[email protected]", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="],
+
+ "ip-regex": ["[email protected]", "", {}, "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q=="],
+
+ "ipaddr.js": ["[email protected]", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
+
+ "is-absolute": ["[email protected]", "", { "dependencies": { "is-relative": "^0.1.0" } }, "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA=="],
+
+ "is-alphabetical": ["[email protected]", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="],
+
+ "is-alphanumerical": ["[email protected]", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="],
+
+ "is-array-buffer": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="],
+
+ "is-arrayish": ["[email protected]", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
+
+ "is-async-function": ["[email protected]", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="],
+
+ "is-bigint": ["[email protected]", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="],
+
+ "is-binary-path": ["[email protected]", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
+
+ "is-boolean-object": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="],
+
+ "is-callable": ["[email protected]", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
+
+ "is-core-module": ["[email protected]", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="],
+
+ "is-data-view": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="],
+
+ "is-date-object": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="],
+
+ "is-decimal": ["[email protected]", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="],
+
+ "is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
+
+ "is-extglob": ["[email protected]", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
+
+ "is-finalizationregistry": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="],
+
+ "is-fullwidth-code-point": ["[email protected]", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "is-generator-function": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="],
+
+ "is-glob": ["[email protected]", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
+
+ "is-hexadecimal": ["[email protected]", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="],
+
+ "is-hotkey": ["[email protected]", "", {}, "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="],
+
+ "is-in-ci": ["[email protected]", "", { "bin": { "is-in-ci": "cli.js" } }, "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w=="],
+
+ "is-inside-container": ["[email protected]", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
+
+ "is-installed-globally": ["[email protected]", "", { "dependencies": { "global-directory": "^4.0.1", "is-path-inside": "^4.0.0" } }, "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ=="],
+
+ "is-interactive": ["[email protected]", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="],
+
+ "is-ip": ["[email protected]", "", { "dependencies": { "ip-regex": "^4.0.0" } }, "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q=="],
+
+ "is-map": ["[email protected]", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="],
+
+ "is-negative-zero": ["[email protected]", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="],
+
+ "is-npm": ["[email protected]", "", {}, "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA=="],
+
+ "is-number": ["[email protected]", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
+
+ "is-number-object": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="],
+
+ "is-online": ["[email protected]", "", { "dependencies": { "got": "^12.1.0", "p-any": "^4.0.0", "p-timeout": "^5.1.0", "public-ip": "^5.0.0" } }, "sha512-WCPdKwNDjXJJmUubf2VHLMDBkUZEtuOvpXUfUnUFbEnM6In9ByiScL4f4jKACz/fsb2qDkesFerW3snf/AYz3A=="],
+
+ "is-path-inside": ["[email protected]", "", {}, "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA=="],
+
+ "is-plain-obj": ["[email protected]", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="],
+
+ "is-plain-object": ["[email protected]", "", {}, "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="],
+
+ "is-potential-custom-element-name": ["[email protected]", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="],
+
+ "is-primitive": ["[email protected]", "", {}, "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w=="],
+
+ "is-promise": ["[email protected]", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
+
+ "is-reference": ["[email protected]", "", { "dependencies": { "@types/estree": "*" } }, "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ=="],
+
+ "is-regex": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="],
+
+ "is-relative": ["[email protected]", "", {}, "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA=="],
+
+ "is-set": ["[email protected]", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="],
+
+ "is-shared-array-buffer": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="],
+
+ "is-stream": ["[email protected]", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="],
+
+ "is-string": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="],
+
+ "is-symbol": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="],
+
+ "is-typed-array": ["[email protected]", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="],
+
+ "is-unicode-supported": ["[email protected]", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="],
+
+ "is-weakmap": ["[email protected]", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="],
+
+ "is-weakref": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="],
+
+ "is-weakset": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="],
+
+ "is-wsl": ["[email protected]", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="],
+
+ "isarray": ["[email protected]", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="],
+
+ "isbot": ["[email protected]", "", {}, "sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ=="],
+
+ "isexe": ["[email protected]", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
+
+ "ismobilejs": ["[email protected]", "", {}, "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw=="],
+
+ "isobject": ["[email protected]", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="],
+
+ "its-fine": ["[email protected]", "", { "dependencies": { "@types/react-reconciler": "^0.28.9" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng=="],
+
+ "jackspeak": ["[email protected]", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "javascript-stringify": ["[email protected]", "", {}, "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg=="],
+
+ "jest-worker": ["[email protected]", "", { "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="],
+
+ "jiti": ["[email protected]", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
+
+ "jose": ["[email protected]", "", {}, "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ=="],
+
+ "js-base64": ["[email protected]", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="],
+
+ "js-binary-schema-parser": ["[email protected]", "", {}, "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg=="],
+
+ "js-tokens": ["[email protected]", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
+
+ "js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
+
+ "jsep": ["[email protected]", "", {}, "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw=="],
+
+ "jsesc": ["[email protected]", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="],
+
+ "json-bigint": ["[email protected]", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="],
+
+ "json-buffer": ["[email protected]", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
+
+ "json-parse-even-better-errors": ["[email protected]", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="],
+
+ "json-schema": ["[email protected]", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="],
+
+ "json-schema-to-ts": ["[email protected]", "", { "dependencies": { "@babel/runtime": "^7.18.3", "ts-algebra": "^2.0.0" } }, "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g=="],
+
+ "json-schema-to-typescript": ["[email protected]", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.5.5", "@types/json-schema": "^7.0.15", "@types/lodash": "^4.17.7", "is-glob": "^4.0.3", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "prettier": "^3.2.5", "tinyglobby": "^0.2.9" }, "bin": { "json2ts": "dist/src/cli.js" } }, "sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ=="],
+
+ "json-schema-traverse": ["[email protected]", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
+
+ "json-schema-typed": ["[email protected]", "", {}, "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA=="],
+
+ "json-schema-walker": ["[email protected]", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.1.0", "clone": "^2.1.2" } }, "sha512-nXN2cMky0Iw7Af28w061hmxaPDaML5/bQD9nwm1lOoIKEGjHcRGxqWe4MfrkYThYAPjSUhmsp4bJNoLAyVn9Xw=="],
+
+ "json5": ["[email protected]", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
+
+ "jsonc-parser": ["[email protected]", "", {}, "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="],
+
+ "jsondiffpatch": ["[email protected]", "", { "dependencies": { "@types/diff-match-patch": "^1.0.36", "chalk": "^5.3.0", "diff-match-patch": "^1.0.5" }, "bin": { "jsondiffpatch": "bin/jsondiffpatch.js" } }, "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ=="],
+
+ "jsonfile": ["[email protected]", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="],
+
+ "jsonpath-plus": ["[email protected]", "", { "dependencies": { "@jsep-plugin/assignment": "^1.3.0", "@jsep-plugin/regex": "^1.0.4", "jsep": "^1.4.0" }, "bin": { "jsonpath": "bin/jsonpath-cli.js", "jsonpath-plus": "bin/jsonpath-cli.js" } }, "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA=="],
+
+ "jsonpointer": ["[email protected]", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="],
+
+ "jszip": ["[email protected]", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="],
+
+ "jwa": ["[email protected]", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="],
+
+ "jws": ["[email protected]", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="],
+
+ "katex": ["[email protected]", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw=="],
+
+ "keyv": ["[email protected]", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
+
+ "khroma": ["[email protected]", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="],
+
+ "kleur": ["[email protected]", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
+
+ "ky": ["[email protected]", "", {}, "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug=="],
+
+ "kysely": ["[email protected]", "", {}, "sha512-3BeXMoiOhpOwu62CiVpO6lxfq4eS6KMYfQdMsN/2kUCRNuF2YiEr7u0HLHaQU+O4Xu8YXE3bHVkwaQ85i72EuA=="],
+
+ "langium": ["[email protected]", "", { "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", "vscode-uri": "~3.0.8" } }, "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w=="],
+
+ "latest-version": ["[email protected]", "", { "dependencies": { "package-json": "^10.0.0" } }, "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA=="],
+
+ "layout-base": ["[email protected]", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="],
+
+ "lcm": ["[email protected]", "", { "dependencies": { "gcd": "^0.0.1" } }, "sha512-TB+ZjoillV6B26Vspf9l2L/vKaRY/4ep3hahcyVkCGFgsTNRUQdc24bQeNFiZeoxH0vr5+7SfNRMQuPHv/1IrQ=="],
+
+ "leac": ["[email protected]", "", {}, "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg=="],
+
+ "leven": ["[email protected]", "", {}, "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew=="],
+
+ "libsodium": ["[email protected]", "", {}, "sha512-3HrzSPuzm6Yt9aTYCDxYEG8x8/6C0+ag655Y7rhhWZM9PT4NpdnbqlzXhGZlDnkgR6MeSTnOt/VIyHLs9aSf+Q=="],
+
+ "libsodium-wrappers": ["[email protected]", "", { "dependencies": { "libsodium": "^0.7.16" } }, "sha512-Gtr/WBx4dKjvRL1pvfwZqu7gO6AfrQ0u9vFL+kXihtHf6NfkROR8pjYWn98MFDI3jN19Ii1ZUfPR9afGiPyfHg=="],
+
+ "lie": ["[email protected]", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="],
+
+ "lighthouse-logger": ["[email protected]", "", { "dependencies": { "debug": "^4.4.1", "marky": "^1.2.2" } }, "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg=="],
+
+ "lightningcss": ["[email protected]", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="],
+
+ "lightningcss-android-arm64": ["[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="],
+
+ "lightningcss-darwin-arm64": ["[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="],
+
+ "lightningcss-darwin-x64": ["[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="],
+
+ "lightningcss-freebsd-x64": ["[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="],
+
+ "lightningcss-linux-arm-gnueabihf": ["[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="],
+
+ "lightningcss-linux-arm64-gnu": ["[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="],
+
+ "lightningcss-linux-arm64-musl": ["[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="],
+
+ "lightningcss-linux-x64-gnu": ["[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="],
+
+ "lightningcss-linux-x64-musl": ["[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="],
+
+ "lightningcss-win32-arm64-msvc": ["[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="],
+
+ "lightningcss-win32-x64-msvc": ["[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="],
+
+ "lilconfig": ["[email protected]", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="],
+
+ "lines-and-columns": ["[email protected]", "", {}, "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="],
+
+ "linkedom": ["[email protected]", "", { "dependencies": { "css-select": "^5.1.0", "cssom": "^0.5.0", "html-escaper": "^3.0.3", "htmlparser2": "^10.0.0", "uhyphen": "^0.2.0" }, "peerDependencies": { "canvas": ">= 2" }, "optionalPeers": ["canvas"] }, "sha512-jalJsOwIKuQJSeTvsgzPe9iJzyfVaEJiEXl+25EkKevsULHvMJzpNqwvj1jOESWdmgKDiXObyjOYwlUqG7wo1Q=="],
+
+ "listr2": ["[email protected]", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="],
+
+ "loader-runner": ["[email protected]", "", {}, "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="],
+
+ "local-pkg": ["[email protected]", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="],
+
+ "locate-path": ["[email protected]", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
+
+ "lodash": ["[email protected]", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
+
+ "lodash-es": ["[email protected]", "", {}, "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q=="],
+
+ "lodash.merge": ["[email protected]", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
+
+ "lodash.topath": ["[email protected]", "", {}, "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="],
+
+ "log-symbols": ["[email protected]", "", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="],
+
+ "log-update": ["[email protected]", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="],
+
+ "loglevel": ["[email protected]", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="],
+
+ "longest-streak": ["[email protected]", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
+
+ "loose-envify": ["[email protected]", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
+
+ "loupe": ["[email protected]", "", {}, "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ=="],
+
+ "lowercase-keys": ["[email protected]", "", {}, "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ=="],
+
+ "lru-cache": ["[email protected]", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
+ "lucide-react": ["[email protected]", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ=="],
+
+ "magic-string": ["[email protected]", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
+
+ "magicast": ["[email protected]", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
+
+ "make-cancellable-promise": ["[email protected]", "", {}, "sha512-3SEQqTpV9oqVsIWqAcmDuaNeo7yBO3tqPtqGRcKkEo0lrzD3wqbKG9mkxO65KoOgXqj+zH2phJ2LiAsdzlogSw=="],
+
+ "make-error": ["[email protected]", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="],
+
+ "make-event-props": ["[email protected]", "", {}, "sha512-G/hncXrl4Qt7mauJEXSg3AcdYzmpkIITTNl5I+rH9sog5Yw0kK6vseJjCaPfOXqOqQuPUP89Rkhfz5kPS8ijtw=="],
+
+ "many-keys-map": ["[email protected]", "", {}, "sha512-DHnZAD4phTbZ+qnJdjoNEVU1NecYoSdbOOoVmTDH46AuxDkEVh3MxTVpXq10GtcTC6mndN9dkv1rNfpjRcLnOw=="],
+
+ "markdown-extensions": ["[email protected]", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="],
+
+ "markdown-table": ["[email protected]", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
+
+ "marked": ["[email protected]", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="],
+
+ "marky": ["[email protected]", "", {}, "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ=="],
+
+ "masonic": ["[email protected]", "", { "dependencies": { "@essentials/memoize-one": "^1.1.0", "@essentials/one-key-map": "^1.2.0", "@essentials/request-timeout": "^1.3.0", "@react-hook/event": "^1.2.6", "@react-hook/latest": "^1.0.3", "@react-hook/passive-layout-effect": "^1.2.1", "@react-hook/throttle": "^2.2.0", "@react-hook/window-scroll": "^1.3.0", "@react-hook/window-size": "^3.1.1", "raf-schd": "^4.0.3", "trie-memoize": "^1.2.0" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-3RNbAG5qLve7qNtGp1UM/u7vI39jO73ZFHDBAg3xl8AVh7A6Ikx7I7mBeC0NY0h1r1jJn2Wqeol1QMa09MQbyQ=="],
+
+ "math-intrinsics": ["[email protected]", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+
+ "mdast-util-find-and-replace": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="],
+
+ "mdast-util-from-markdown": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="],
+
+ "mdast-util-frontmatter": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="],
+
+ "mdast-util-gfm": ["[email protected]", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="],
+
+ "mdast-util-gfm-autolink-literal": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="],
+
+ "mdast-util-gfm-footnote": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="],
+
+ "mdast-util-gfm-strikethrough": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="],
+
+ "mdast-util-gfm-table": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="],
+
+ "mdast-util-gfm-task-list-item": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="],
+
+ "mdast-util-math": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w=="],
+
+ "mdast-util-mdx": ["[email protected]", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="],
+
+ "mdast-util-mdx-expression": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="],
+
+ "mdast-util-mdx-jsx": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="],
+
+ "mdast-util-mdxjs-esm": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="],
+
+ "mdast-util-phrasing": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="],
+
+ "mdast-util-to-hast": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="],
+
+ "mdast-util-to-markdown": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="],
+
+ "mdast-util-to-string": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="],
+
+ "media-query-parser": ["[email protected]", "", { "dependencies": { "@babel/runtime": "^7.12.5" } }, "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w=="],
+
+ "media-typer": ["[email protected]", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="],
+
+ "memory-graph-playground": ["memory-graph-playground@workspace:apps/memory-graph-playground"],
+
+ "merge-descriptors": ["[email protected]", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="],
+
+ "merge-refs": ["[email protected]", "", { "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-3+B21mYK2IqUWnd2EivABLT7ueDhb0b8/dGK8LoFQPrU61YITeCMn14F7y7qZafWNZhUEKb24cJdiT5Wxs3prg=="],
+
+ "merge-stream": ["[email protected]", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
+
+ "merge2": ["[email protected]", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
+
+ "mermaid": ["[email protected]", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.3", "@types/d3": "^7.4.3", "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.13", "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0" } }, "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w=="],
+
+ "methods": ["[email protected]", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="],
+
+ "micromark": ["[email protected]", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="],
+
+ "micromark-core-commonmark": ["[email protected]", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="],
+
+ "micromark-extension-cjk-friendly": ["[email protected]", "", { "dependencies": { "devlop": "^1.1.0", "micromark-extension-cjk-friendly-util": "2.1.1", "micromark-util-chunked": "^2.0.1", "micromark-util-resolve-all": "^2.0.1", "micromark-util-symbol": "^2.0.1" }, "peerDependencies": { "micromark": "^4.0.0", "micromark-util-types": "^2.0.0" }, "optionalPeers": ["micromark-util-types"] }, "sha512-gRzVLUdjXBLX6zNPSnHGDoo+ZTp5zy+MZm0g3sv+3chPXY7l9gW+DnrcHcZh/jiPR6MjPKO4AEJNp4Aw6V9z5Q=="],
+
+ "micromark-extension-cjk-friendly-gfm-strikethrough": ["[email protected]", "", { "dependencies": { "devlop": "^1.1.0", "get-east-asian-width": "^1.3.0", "micromark-extension-cjk-friendly-util": "2.1.1", "micromark-util-character": "^2.1.1", "micromark-util-chunked": "^2.0.1", "micromark-util-resolve-all": "^2.0.1", "micromark-util-symbol": "^2.0.1" }, "peerDependencies": { "micromark": "^4.0.0", "micromark-util-types": "^2.0.0" }, "optionalPeers": ["micromark-util-types"] }, "sha512-gSPnxgHDDqXYOBvQRq6lerrq9mjDhdtKn+7XETuXjxWcL62yZEfUdA28Ml1I2vDIPfAOIKLa0h2XDSGkInGHFQ=="],
+
+ "micromark-extension-cjk-friendly-util": ["[email protected]", "", { "dependencies": { "get-east-asian-width": "^1.3.0", "micromark-util-character": "^2.1.1", "micromark-util-symbol": "^2.0.1" } }, "sha512-egs6+12JU2yutskHY55FyR48ZiEcFOJFyk9rsiyIhcJ6IvWB6ABBqVrBw8IobqJTDZ/wdSr9eoXDPb5S2nW1bg=="],
+
+ "micromark-extension-frontmatter": ["[email protected]", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="],
+
+ "micromark-extension-gfm": ["[email protected]", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="],
+
+ "micromark-extension-gfm-autolink-literal": ["[email protected]", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="],
+
+ "micromark-extension-gfm-footnote": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="],
+
+ "micromark-extension-gfm-strikethrough": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="],
+
+ "micromark-extension-gfm-table": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="],
+
+ "micromark-extension-gfm-tagfilter": ["[email protected]", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="],
+
+ "micromark-extension-gfm-task-list-item": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="],
+
+ "micromark-extension-math": ["[email protected]", "", { "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg=="],
+
+ "micromark-extension-mdx-expression": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="],
+
+ "micromark-extension-mdx-jsx": ["[email protected]", "", { "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg=="],
+
+ "micromark-extension-mdx-md": ["[email protected]", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="],
+
+ "micromark-extension-mdxjs": ["[email protected]", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="],
+
+ "micromark-extension-mdxjs-esm": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="],
+
+ "micromark-factory-destination": ["[email protected]", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="],
+
+ "micromark-factory-label": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="],
+
+ "micromark-factory-mdx-expression": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="],
+
+ "micromark-factory-space": ["[email protected]", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="],
+
+ "micromark-factory-title": ["[email protected]", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="],
+
+ "micromark-factory-whitespace": ["[email protected]", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="],
+
+ "micromark-util-character": ["[email protected]", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
+
+ "micromark-util-chunked": ["[email protected]", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="],
+
+ "micromark-util-classify-character": ["[email protected]", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="],
+
+ "micromark-util-combine-extensions": ["[email protected]", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="],
+
+ "micromark-util-decode-numeric-character-reference": ["[email protected]", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="],
+
+ "micromark-util-decode-string": ["[email protected]", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="],
+
+ "micromark-util-encode": ["[email protected]", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
+
+ "micromark-util-events-to-acorn": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="],
+
+ "micromark-util-html-tag-name": ["[email protected]", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="],
+
+ "micromark-util-normalize-identifier": ["[email protected]", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="],
+
+ "micromark-util-resolve-all": ["[email protected]", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="],
+
+ "micromark-util-sanitize-uri": ["[email protected]", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
+
+ "micromark-util-subtokenize": ["[email protected]", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="],
+
+ "micromark-util-symbol": ["[email protected]", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
+
+ "micromark-util-types": ["[email protected]", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
+
+ "micromatch": ["[email protected]", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
+
+ "mime": ["[email protected]", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
+
+ "mime-db": ["[email protected]", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
+
+ "mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="],
+
+ "mimetext": ["[email protected]", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@babel/runtime-corejs3": "^7.26.0", "js-base64": "^3.7.7", "mime-types": "^2.1.35" } }, "sha512-mUhWAsZD1N/K6dbN4+a5Yq78OPnYQw1ubOSMasBntsLQ2S7KVNlvDEA8dwpr4a7PszWMzeslKahAprtwYMgaBA=="],
+
+ "mimic-fn": ["[email protected]", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
+
+ "mimic-function": ["[email protected]", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="],
+
+ "mimic-response": ["[email protected]", "", {}, "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg=="],
+
+ "miniflare": ["[email protected]", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "7.14.0", "workerd": "1.20260107.1", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "^3.25.76" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-X93sXczqbBq9ixoM6jnesmdTqp+4baVC/aM/DuPpRS0LK0XtcqaO75qPzNEvDEzBAHxwMAWRIum/9hg32YB8iA=="],
+
+ "minimatch": ["[email protected]", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "minimist": ["[email protected]", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
+
+ "minipass": ["[email protected]", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
+
+ "minizlib": ["[email protected]", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
+
+ "mintlify": ["[email protected]", "", { "dependencies": { "@mintlify/cli": "4.0.870" }, "bin": { "mint": "index.js", "mintlify": "index.js" } }, "sha512-FbNJY+gz4V/siOcb6XHdvveXOyoQZTZ2qFW7OUpG530pDS512rR9DMigskbX7Mh+Ige403h0jKDhYGBUkmMKtw=="],
+
+ "mitt": ["[email protected]", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="],
+
+ "mkdirp": ["[email protected]", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
+
+ "mlly": ["[email protected]", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="],
+
+ "mnemonist": ["[email protected]", "", { "dependencies": { "obliterator": "^1.6.1" } }, "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw=="],
+
+ "modern-ahocorasick": ["[email protected]", "", {}, "sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ=="],
+
+ "module-details-from-path": ["[email protected]", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="],
+
+ "morgan": ["[email protected]", "", { "dependencies": { "basic-auth": "~2.0.1", "debug": "2.6.9", "depd": "~2.0.0", "on-finished": "~2.3.0", "on-headers": "~1.1.0" } }, "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A=="],
+
+ "motion": ["[email protected]", "", { "dependencies": { "framer-motion": "^12.25.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-jBFohEYklpZ+TL64zv03sHdqr1Tsc8/yDy7u68hVzi7hTJYtv53AduchqCiY3aWi4vY1hweS8DWtgCuckusYdQ=="],
+
+ "motion-dom": ["[email protected]", "", { "dependencies": { "motion-utils": "^12.24.10" } }, "sha512-DlWOmsXMJrV8lzZyd+LKjG2CXULUs++bkq8GZ2Sr0R0RRhs30K2wtY+LKiTjhmJU3W61HK+rB0GLz6XmPvTA1A=="],
+
+ "motion-utils": ["[email protected]", "", {}, "sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww=="],
+
+ "ms": ["[email protected]", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+ "multimatch": ["[email protected]", "", { "dependencies": { "@types/minimatch": "^3.0.5", "array-differ": "^4.0.0", "array-union": "^3.0.1", "minimatch": "^3.0.4" } }, "sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ=="],
+
+ "mute-stream": ["[email protected]", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="],
+
+ "mz": ["[email protected]", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
+
+ "nano-spawn": ["[email protected]", "", {}, "sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA=="],
+
+ "nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="],
+
+ "nanostores": ["[email protected]", "", {}, "sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA=="],
+
+ "negotiator": ["[email protected]", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="],
+
+ "neo-async": ["[email protected]", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
+
+ "neotraverse": ["[email protected]", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
+
+ "netmask": ["[email protected]", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="],
+
+ "neverthrow": ["[email protected]", "", { "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "^4.24.0" } }, "sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ=="],
+
+ "next": ["[email protected]", "", { "dependencies": { "@next/env": "16.0.9", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.0.9", "@next/swc-darwin-x64": "16.0.9", "@next/swc-linux-arm64-gnu": "16.0.9", "@next/swc-linux-arm64-musl": "16.0.9", "@next/swc-linux-x64-gnu": "16.0.9", "@next/swc-linux-x64-musl": "16.0.9", "@next/swc-win32-arm64-msvc": "16.0.9", "@next/swc-win32-x64-msvc": "16.0.9", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Xk5x/wEk6ADIAtQECLo1uyE5OagbQCiZ+gW4XEv24FjQ3O2PdSkvgsn22aaseSXC7xg84oONvQjFbSTX5YsMhQ=="],
+
+ "next-mdx-remote-client": ["[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@mdx-js/mdx": "^3.1.1", "@mdx-js/react": "^3.1.1", "remark-mdx-remove-esm": "^1.2.1", "serialize-error": "^12.0.0", "vfile": "^6.0.3", "vfile-matter": "^5.0.1" }, "peerDependencies": { "react": ">= 18.3.0 < 19.0.0", "react-dom": ">= 18.3.0 < 19.0.0" } }, "sha512-psCMdO50tfoT1kAH7OGXZvhyRfiHVK6IqwjmWFV5gtLo4dnqjAgcjcLNeJ92iI26UNlKShxYrBs1GQ6UXxk97A=="],
+
+ "next-themes": ["[email protected]", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="],
+
+ "nimma": ["[email protected]", "", { "dependencies": { "@jsep-plugin/regex": "^1.0.1", "@jsep-plugin/ternary": "^1.0.2", "astring": "^1.8.1", "jsep": "^1.2.0" }, "optionalDependencies": { "jsonpath-plus": "^6.0.1 || ^10.1.0", "lodash.topath": "^4.5.2" } }, "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA=="],
+
+ "nlcst-to-string": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="],
+
+ "node-domexception": ["[email protected]", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="],
+
+ "node-fetch": ["[email protected]", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
+
+ "node-fetch-native": ["[email protected]", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="],
+
+ "node-forge": ["[email protected]", "", {}, "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg=="],
+
+ "node-notifier": ["[email protected]", "", { "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.2.0", "semver": "^7.3.5", "shellwords": "^0.1.1", "uuid": "^8.3.2", "which": "^2.0.2" } }, "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ=="],
+
+ "node-releases": ["[email protected]", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="],
+
+ "normalize-path": ["[email protected]", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
+
+ "normalize-url": ["[email protected]", "", {}, "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ=="],
+
+ "npm-run-path": ["[email protected]", "", { "dependencies": { "path-key": "^4.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA=="],
+
+ "nth-check": ["[email protected]", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
+
+ "nuqs": ["[email protected]", "", { "dependencies": { "@standard-schema/spec": "1.0.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^5 || ^6 || ^7", "react-router-dom": "^5 || ^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router", "react-router-dom"] }, "sha512-aRxeX68b4ULmhio8AADL2be1FWDy0EPqaByPvIYWrA7Pm07UjlrICp/VPlSnXJNAG0+3MQwv3OporO2sOXMVGA=="],
+
+ "nypm": ["[email protected]", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g=="],
+
+ "object-assign": ["[email protected]", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
+
+ "object-hash": ["[email protected]", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="],
+
+ "object-inspect": ["[email protected]", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
+
+ "object-keys": ["[email protected]", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="],
+
+ "object-treeify": ["[email protected]", "", {}, "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A=="],
+
+ "object.assign": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="],
+
+ "obliterator": ["[email protected]", "", {}, "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig=="],
+
+ "ofetch": ["[email protected]", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="],
+
+ "ohash": ["[email protected]", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
+
+ "on-exit-leak-free": ["[email protected]", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="],
+
+ "on-finished": ["[email protected]", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
+
+ "on-headers": ["[email protected]", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="],
+
+ "once": ["[email protected]", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
+
+ "onetime": ["[email protected]", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
+
+ "oniguruma-parser": ["[email protected]", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
+
+ "oniguruma-to-es": ["[email protected]", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="],
+
+ "open": ["[email protected]", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="],
+
+ "openai": ["[email protected]", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" }, "peerDependencies": { "ws": "^8.18.0", "zod": "^3.23.8" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA=="],
+
+ "openapi-types": ["[email protected]", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="],
+
+ "ora": ["[email protected]", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="],
+
+ "os-shim": ["[email protected]", "", {}, "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A=="],
+
+ "own-keys": ["[email protected]", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="],
+
+ "p-any": ["[email protected]", "", { "dependencies": { "p-cancelable": "^3.0.0", "p-some": "^6.0.0" } }, "sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw=="],
+
+ "p-cancelable": ["[email protected]", "", {}, "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw=="],
+
+ "p-limit": ["[email protected]", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
+
+ "p-locate": ["[email protected]", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
+
+ "p-map": ["[email protected]", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="],
+
+ "p-some": ["[email protected]", "", { "dependencies": { "aggregate-error": "^4.0.0", "p-cancelable": "^3.0.0" } }, "sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg=="],
+
+ "p-timeout": ["[email protected]", "", {}, "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew=="],
+
+ "pac-proxy-agent": ["[email protected]", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="],
+
+ "pac-resolver": ["[email protected]", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="],
+
+ "package-json": ["[email protected]", "", { "dependencies": { "ky": "^1.2.0", "registry-auth-token": "^5.0.2", "registry-url": "^6.0.1", "semver": "^7.6.0" } }, "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg=="],
+
+ "package-json-from-dist": ["[email protected]", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
+
+ "package-manager-detector": ["[email protected]", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="],
+
+ "pako": ["[email protected]", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
+
+ "parent-module": ["[email protected]", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
+
+ "parse-entities": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
+
+ "parse-json": ["[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", "json-parse-even-better-errors": "^3.0.0", "lines-and-columns": "^2.0.3", "type-fest": "^3.8.0" } }, "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw=="],
+
+ "parse-latin": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="],
+
+ "parse-ms": ["[email protected]", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="],
+
+ "parse-svg-path": ["[email protected]", "", {}, "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ=="],
+
+ "parse5": ["[email protected]", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
+
+ "parseley": ["[email protected]", "", { "dependencies": { "leac": "^0.6.0", "peberminta": "^0.9.0" } }, "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw=="],
+
+ "parseurl": ["[email protected]", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
+
+ "partyserver": ["[email protected]", "", { "dependencies": { "nanoid": "^5.1.6" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20240729.0" } }, "sha512-rtJ9ztQOglaheNfFUn+5RSZAoyC8se4LGq1SLWAE+zkk7w5Exw9bH0Aqh0HVewnyU3zuzinnbPNp+55DzA90yg=="],
+
+ "partysocket": ["[email protected]", "", { "dependencies": { "event-target-polyfill": "^0.0.4" } }, "sha512-ACfn0P6lQuj8/AqB4L5ZDFcIEbpnIteNNObrlxqV1Ge80GTGhjuJ2sNKwNQlFzhGi4kI7fP/C1Eqh8TR78HjDQ=="],
+
+ "patch-console": ["[email protected]", "", {}, "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA=="],
+
+ "path-data-parser": ["[email protected]", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="],
+
+ "path-exists": ["[email protected]", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
+
+ "path-key": ["[email protected]", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
+
+ "path-parse": ["[email protected]", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
+
+ "path-scurry": ["[email protected]", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
+ "path-to-regexp": ["[email protected]", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="],
+
+ "pathe": ["[email protected]", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+
+ "pathval": ["[email protected]", "", {}, "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ=="],
+
+ "pdfjs-dist": ["[email protected]", "", { "optionalDependencies": { "@napi-rs/canvas": "^0.1.80" } }, "sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q=="],
+
+ "peberminta": ["[email protected]", "", {}, "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ=="],
+
+ "pend": ["[email protected]", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
+
+ "perfect-debounce": ["[email protected]", "", {}, "sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow=="],
+
+ "pg": ["[email protected]", "", { "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw=="],
+
+ "pg-cloudflare": ["[email protected]", "", {}, "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg=="],
+
+ "pg-connection-string": ["[email protected]", "", {}, "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w=="],
+
+ "pg-int8": ["[email protected]", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="],
+
+ "pg-pool": ["[email protected]", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg=="],
+
+ "pg-protocol": ["[email protected]", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="],
+
+ "pg-types": ["[email protected]", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="],
+
+ "pgpass": ["[email protected]", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="],
+
+ "picocolors": ["[email protected]", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+ "picomatch": ["[email protected]", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
+
+ "pify": ["[email protected]", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="],
+
+ "pino": ["[email protected]", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="],
+
+ "pino-abstract-transport": ["[email protected]", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="],
+
+ "pino-std-serializers": ["[email protected]", "", {}, "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA=="],
+
+ "pirates": ["[email protected]", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="],
+
+ "pixi.js": ["[email protected]", "", { "dependencies": { "@pixi/colord": "^2.9.6", "@types/css-font-loading-module": "^0.0.12", "@types/earcut": "^3.0.0", "@webgpu/types": "^0.1.40", "@xmldom/xmldom": "^0.8.10", "earcut": "^3.0.2", "eventemitter3": "^5.0.1", "gifuct-js": "^2.1.2", "ismobilejs": "^1.1.1", "parse-svg-path": "^0.1.2", "tiny-lru": "^11.4.5" } }, "sha512-J/Ghze/K9fjHRlfwC2EMZ7vnMIhGo4ByKCsKMcS0AB12iT79nf9zzWKUTzMJ8QAQFqQfDOl5ULwmHMUdeih2zQ=="],
+
+ "pkce-challenge": ["[email protected]", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="],
+
+ "pkg-types": ["[email protected]", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
+
+ "points-on-curve": ["[email protected]", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="],
+
+ "points-on-path": ["[email protected]", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="],
+
+ "pony-cause": ["[email protected]", "", {}, "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g=="],
+
+ "possible-typed-array-names": ["[email protected]", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
+
+ "postcss": ["[email protected]", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
+
+ "postcss-import": ["[email protected]", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="],
+
+ "postcss-js": ["[email protected]", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="],
+
+ "postcss-load-config": ["[email protected]", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="],
+
+ "postcss-nested": ["[email protected]", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="],
+
+ "postcss-selector-parser": ["[email protected]", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="],
+
+ "postcss-value-parser": ["[email protected]", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="],
+
+ "postgres": ["[email protected]", "", {}, "sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg=="],
+
+ "postgres-array": ["[email protected]", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="],
+
+ "postgres-bytea": ["[email protected]", "", {}, "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ=="],
+
+ "postgres-date": ["[email protected]", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="],
+
+ "postgres-interval": ["[email protected]", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="],
+
+ "posthog-js": ["[email protected]", "", { "dependencies": { "@posthog/core": "1.9.1", "@posthog/types": "1.316.1", "core-js": "^3.38.1", "fflate": "^0.4.8", "preact": "^10.19.3", "web-vitals": "^4.2.4" } }, "sha512-4B0PHnMZwjV9aoQRQ5OqrPa40aCVlqRx1aZMCZCbZ4Z7c91bpOJDpENGGyxFvjUoNN+f8MP8LHZBdn5DPQyWTg=="],
+
+ "posthog-node": ["[email protected]", "", { "dependencies": { "@posthog/core": "1.9.1" } }, "sha512-LkR5KfrvEQTnUtNKN97VxFB00KcYG1Iz8iKg8r0e/i7f1eQhg1WSZO+Jp1B4bvtHCmdpIE4HwYbvCCzFoCyjVg=="],
+
+ "preact": ["[email protected]", "", {}, "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA=="],
+
+ "prettier": ["[email protected]", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="],
+
+ "pretty-ms": ["[email protected]", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="],
+
+ "process-nextick-args": ["[email protected]", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="],
+
+ "process-warning": ["[email protected]", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="],
+
+ "progress": ["[email protected]", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="],
+
+ "promise-toolbox": ["[email protected]", "", { "dependencies": { "make-error": "^1.3.2" } }, "sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg=="],
+
+ "prompts": ["[email protected]", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="],
+
+ "prop-types": ["[email protected]", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="],
+
+ "proper-lockfile": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="],
+
+ "property-information": ["[email protected]", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
+
+ "proto-list": ["[email protected]", "", {}, "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA=="],
+
+ "proxy-addr": ["[email protected]", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
+
+ "proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="],
+
+ "proxy-from-env": ["[email protected]", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
+
+ "public-ip": ["[email protected]", "", { "dependencies": { "dns-socket": "^4.2.2", "got": "^12.0.0", "is-ip": "^3.1.0" } }, "sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw=="],
+
+ "publish-browser-extension": ["[email protected]", "", { "dependencies": { "cac": "^6.7.14", "consola": "^3.4.2", "dotenv": "^17.2.3", "form-data-encoder": "^4.1.0", "formdata-node": "^6.0.3", "listr2": "^8.3.3", "ofetch": "^1.4.1", "zod": "^3.25.76 || ^4.0.0" }, "bin": { "publish-extension": "bin/publish-extension.cjs" } }, "sha512-cBINZCkLo7YQaGoUvEHthZ0sDzgJQht28IS+SFMT2omSNhGsPiVNRkWir3qLiTrhGhW9Ci2KVHpA1QAMoBdL2g=="],
+
+ "pump": ["[email protected]", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="],
+
+ "pupa": ["[email protected]", "", { "dependencies": { "escape-goat": "^4.0.0" } }, "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA=="],
+
+ "puppeteer": ["[email protected]", "", { "dependencies": { "@puppeteer/browsers": "2.3.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1312386", "puppeteer-core": "22.14.0" }, "bin": { "puppeteer": "lib/esm/puppeteer/node/cli.js" } }, "sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw=="],
+
+ "puppeteer-core": ["[email protected]", "", { "dependencies": { "@puppeteer/browsers": "2.3.0", "chromium-bidi": "0.6.2", "debug": "^4.3.5", "devtools-protocol": "0.0.1312386", "ws": "^8.18.0" } }, "sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw=="],
+
+ "qs": ["[email protected]", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ=="],
+
+ "quansync": ["[email protected]", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="],
+
+ "queue-microtask": ["[email protected]", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
+
+ "quick-format-unescaped": ["[email protected]", "", {}, "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="],
+
+ "quick-lru": ["[email protected]", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="],
+
+ "raf-schd": ["[email protected]", "", {}, "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ=="],
+
+ "random-word-slugs": ["[email protected]", "", {}, "sha512-8cyzxOIDeLFvwSPTgCItMXHGT5ZPkjhuFKUTww06Xg1dNMXuGxIKlARvS7upk6JXIm41ZKXmtlKR1iCRWklKmg=="],
+
+ "randombytes": ["[email protected]", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="],
+
+ "range-parser": ["[email protected]", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
+
+ "raw-body": ["[email protected]", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="],
+
+ "rc": ["[email protected]", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
+
+ "rc9": ["[email protected]", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="],
+
+ "react": ["[email protected]", "", {}, "sha512-BdOGOY8OKRBcgoDkwqA8Q5XvOIhoNx/Sh6BnGJlet2Abt0X5BK0BDrqGyQgLhAVjD2nAg5f6o01u/OPUhG022Q=="],
+
+ "react-dom": ["[email protected]", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.2" } }, "sha512-fhyD2BLrew6qYf4NNtHff1rLXvzR25rq49p+FeqByOazc6TcSi2n8EYulo5C1PbH+1uBW++5S1SG7FcUU6mlDg=="],
+
+ "react-dropzone": ["[email protected]", "", { "dependencies": { "attr-accept": "^2.2.4", "file-selector": "^2.1.0", "prop-types": "^15.8.1" }, "peerDependencies": { "react": ">= 16.8 || 18.0.0" } }, "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug=="],
+
+ "react-hotkeys-hook": ["[email protected]", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-xbKh6zJxd/vJHT4Bw4+0pBD662Fk20V+VFhLqciCg+manTVO4qlqRqiwFOYelfHN9dBvWj9vxaPkSS26ZSIJGg=="],
+
+ "react-is": ["[email protected]", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="],
+
+ "react-markdown": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "@types/react": ">=18", "react": ">=18" } }, "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="],
+
+ "react-pdf": ["[email protected]", "", { "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", "make-cancellable-promise": "^2.0.0", "make-event-props": "^2.0.0", "merge-refs": "^2.0.0", "pdfjs-dist": "5.4.296", "tiny-invariant": "^1.0.0", "warning": "^4.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-2LQzC9IgNVAX8gM+6F+1t/70a9/5RWThYxc+CWAmT2LW/BRmnj+35x1os5j/nR2oldyf8L+hCAMBmVKU8wrYFA=="],
+
+ "react-promise-suspense": ["[email protected]", "", { "dependencies": { "fast-deep-equal": "^2.0.1" } }, "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ=="],
+
+ "react-reconciler": ["[email protected]", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ=="],
+
+ "react-refresh": ["[email protected]", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="],
+
+ "react-remove-scroll": ["[email protected]", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="],
+
+ "react-remove-scroll-bar": ["[email protected]", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="],
+
+ "react-router": ["[email protected]", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, "optionalPeers": ["react-dom"] }, "sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw=="],
+
+ "react-smooth": ["[email protected]", "", { "dependencies": { "fast-equals": "^5.0.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q=="],
+
+ "react-style-singleton": ["[email protected]", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="],
+
+ "react-transition-group": ["[email protected]", "", { "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" }, "peerDependencies": { "react": ">=16.6.0", "react-dom": ">=16.6.0" } }, "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g=="],
+
+ "react-tweet": ["[email protected]", "", { "dependencies": { "@swc/helpers": "^0.5.3", "clsx": "^2.0.0", "swr": "^2.2.4" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-gSIG2169ZK7UH6rBzuU+j1xnQbH3IlOTLEkuGrRiJJTMgETik+h+26yHyyVKrLkzwrOaYPk4K3OtEKycqKgNLw=="],
+
+ "read-cache": ["[email protected]", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="],
+
+ "readable-stream": ["[email protected]", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
+
+ "readdirp": ["[email protected]", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
+
+ "real-require": ["[email protected]", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="],
+
+ "recharts": ["[email protected]", "", { "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw=="],
+
+ "recharts-scale": ["[email protected]", "", { "dependencies": { "decimal.js-light": "^2.4.1" } }, "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w=="],
+
+ "recma-build-jsx": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="],
+
+ "recma-jsx": ["[email protected]", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="],
+
+ "recma-parse": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="],
+
+ "recma-stringify": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="],
+
+ "reflect.getprototypeof": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
+
+ "regex": ["[email protected]", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="],
+
+ "regex-recursion": ["[email protected]", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="],
+
+ "regex-utilities": ["[email protected]", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="],
+
+ "regexp.prototype.flags": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="],
+
+ "registry-auth-token": ["[email protected]", "", { "dependencies": { "@pnpm/npm-conf": "^2.1.0" } }, "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw=="],
+
+ "registry-url": ["[email protected]", "", { "dependencies": { "rc": "1.2.8" } }, "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q=="],
+
+ "rehype-harden": ["[email protected]", "", { "dependencies": { "unist-util-visit": "^5.0.0" } }, "sha512-j5DY0YSK2YavvNGV+qBHma15J9m0WZmRe8posT5AtKDS6TNWtMVTo6RiqF8SidfcASYz8f3k2J/1RWmq5zTXUw=="],
+
+ "rehype-katex": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/katex": "^0.16.0", "hast-util-from-html-isomorphic": "^2.0.0", "hast-util-to-text": "^4.0.0", "katex": "^0.16.0", "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.0" } }, "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA=="],
+
+ "rehype-minify-whitespace": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-minify-whitespace": "^1.0.0" } }, "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw=="],
+
+ "rehype-parse": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="],
+
+ "rehype-raw": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="],
+
+ "rehype-recma": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="],
+
+ "rehype-sanitize": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-sanitize": "^5.0.0" } }, "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg=="],
+
+ "rehype-stringify": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", "unified": "^11.0.0" } }, "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA=="],
+
+ "remark": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="],
+
+ "remark-cjk-friendly": ["[email protected]", "", { "dependencies": { "micromark-extension-cjk-friendly": "1.2.3" }, "peerDependencies": { "@types/mdast": "^4.0.0", "unified": "^11.0.0" }, "optionalPeers": ["@types/mdast"] }, "sha512-UvAgxwlNk+l9Oqgl/9MWK2eWRS7zgBW/nXX9AthV7nd/3lNejF138E7Xbmk9Zs4WjTJGs721r7fAEc7tNFoH7g=="],
+
+ "remark-cjk-friendly-gfm-strikethrough": ["[email protected]", "", { "dependencies": { "micromark-extension-cjk-friendly-gfm-strikethrough": "1.2.3" }, "peerDependencies": { "@types/mdast": "^4.0.0", "unified": "^11.0.0" }, "optionalPeers": ["@types/mdast"] }, "sha512-bXfMZtsaomK6ysNN/UGRIcasQAYkC10NtPmP0oOHOV8YOhA2TXmwRXCku4qOzjIFxAPfish5+XS0eIug2PzNZA=="],
+
+ "remark-frontmatter": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="],
+
+ "remark-gfm": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="],
+
+ "remark-math": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-math": "^3.0.0", "micromark-extension-math": "^3.0.0", "unified": "^11.0.0" } }, "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA=="],
+
+ "remark-mdx": ["[email protected]", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA=="],
+
+ "remark-mdx-remove-esm": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.4", "mdast-util-mdxjs-esm": "^2.0.1", "unist-util-remove": "^4.0.0" }, "peerDependencies": { "unified": "^11" } }, "sha512-YSaUwqiuJuD6S9XTAD6zmO4JJJZJgsRAdsl2drZO8/ssAVv0HXAg4vkSgHZAP46ORh8ERPFQrC7JWlbkwBwu1A=="],
+
+ "remark-parse": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="],
+
+ "remark-rehype": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="],
+
+ "remark-smartypants": ["[email protected]", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="],
+
+ "remark-stringify": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="],
+
+ "remend": ["[email protected]", "", {}, "sha512-152puVH0qMoRJQFnaMG+rVDdf01Jq/CaED+MBuXExurJgdbkLp0c3TIe4R12o28Klx8uyGsjvFNG05aFG69G9w=="],
+
+ "require-directory": ["[email protected]", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
+
+ "require-from-string": ["[email protected]", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
+
+ "require-in-the-middle": ["[email protected]", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3" } }, "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ=="],
+
+ "require-like": ["[email protected]", "", {}, "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A=="],
+
+ "resend": ["[email protected]", "", { "dependencies": { "@react-email/render": "1.1.2" } }, "sha512-R8eBOFQDO6dzRTDmaMEdpqrkmgSjPpVXt4nGfWsZdYOet0kqra0xgbvTES6HmCriZEXbmGk3e0DiGIaLFTFSHA=="],
+
+ "resolve": ["[email protected]", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="],
+
+ "resolve-alpn": ["[email protected]", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="],
+
+ "resolve-from": ["[email protected]", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
+
+ "resolve-pkg-maps": ["[email protected]", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="],
+
+ "responselike": ["[email protected]", "", { "dependencies": { "lowercase-keys": "^3.0.0" } }, "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg=="],
+
+ "restore-cursor": ["[email protected]", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="],
+
+ "retext": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="],
+
+ "retext-latin": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="],
+
+ "retext-smartypants": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="],
+
+ "retext-stringify": ["[email protected]", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="],
+
+ "retry": ["[email protected]", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="],
+
+ "reusify": ["[email protected]", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
+
+ "rfdc": ["[email protected]", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
+
+ "rimraf": ["[email protected]", "", { "dependencies": { "glob": "^10.3.7" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ=="],
+
+ "robust-predicates": ["[email protected]", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="],
+
+ "rolldown": ["[email protected]", "", { "dependencies": { "@oxc-project/types": "=0.107.0", "@rolldown/pluginutils": "1.0.0-beta.59" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.59", "@rolldown/binding-darwin-arm64": "1.0.0-beta.59", "@rolldown/binding-darwin-x64": "1.0.0-beta.59", "@rolldown/binding-freebsd-x64": "1.0.0-beta.59", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.59", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.59", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.59", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.59", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.59", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.59", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.59", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.59", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.59" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw=="],
+
+ "rolldown-plugin-dts": ["[email protected]", "", { "dependencies": { "@babel/generator": "^7.28.3", "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "ast-kit": "^2.1.2", "birpc": "^2.5.0", "debug": "^4.4.1", "dts-resolver": "^2.1.2", "get-tsconfig": "^4.10.1" }, "peerDependencies": { "@typescript/native-preview": ">=7.0.0-dev.20250601.1", "rolldown": "^1.0.0-beta.9", "typescript": "^5.0.0", "vue-tsc": "~3.0.3" }, "optionalPeers": ["@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-8cPVAVQUo9tYAoEpc3jFV9RxSil13hrRRg8cHC9gLXxRMNtWPc1LNMSDXzjyD+5Vny49sDZH77JlXp/vlc4I3g=="],
+
+ "rollup": ["[email protected]", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.55.1", "@rollup/rollup-android-arm64": "4.55.1", "@rollup/rollup-darwin-arm64": "4.55.1", "@rollup/rollup-darwin-x64": "4.55.1", "@rollup/rollup-freebsd-arm64": "4.55.1", "@rollup/rollup-freebsd-x64": "4.55.1", "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", "@rollup/rollup-linux-arm-musleabihf": "4.55.1", "@rollup/rollup-linux-arm64-gnu": "4.55.1", "@rollup/rollup-linux-arm64-musl": "4.55.1", "@rollup/rollup-linux-loong64-gnu": "4.55.1", "@rollup/rollup-linux-loong64-musl": "4.55.1", "@rollup/rollup-linux-ppc64-gnu": "4.55.1", "@rollup/rollup-linux-ppc64-musl": "4.55.1", "@rollup/rollup-linux-riscv64-gnu": "4.55.1", "@rollup/rollup-linux-riscv64-musl": "4.55.1", "@rollup/rollup-linux-s390x-gnu": "4.55.1", "@rollup/rollup-linux-x64-gnu": "4.55.1", "@rollup/rollup-linux-x64-musl": "4.55.1", "@rollup/rollup-openbsd-x64": "4.55.1", "@rollup/rollup-openharmony-arm64": "4.55.1", "@rollup/rollup-win32-arm64-msvc": "4.55.1", "@rollup/rollup-win32-ia32-msvc": "4.55.1", "@rollup/rollup-win32-x64-gnu": "4.55.1", "@rollup/rollup-win32-x64-msvc": "4.55.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A=="],
+
+ "rou3": ["[email protected]", "", {}, "sha512-1HSG1ENTj7Kkm5muMnXuzzfdDOf7CFnbSYFA+H3Fp/rB9lOCxCPgy1jlZxTKyFoC5jJay8Mmc+VbPLYRjzYLrA=="],
+
+ "roughjs": ["[email protected]", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="],
+
+ "router": ["[email protected]", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
+
+ "run-applescript": ["[email protected]", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="],
+
+ "run-async": ["[email protected]", "", {}, "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ=="],
+
+ "run-parallel": ["[email protected]", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
+
+ "rw": ["[email protected]", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="],
+
+ "rxjs": ["[email protected]", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="],
+
+ "safe-array-concat": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="],
+
+ "safe-buffer": ["[email protected]", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
+
+ "safe-push-apply": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="],
+
+ "safe-regex-test": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="],
+
+ "safe-stable-stringify": ["[email protected]", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="],
+
+ "safer-buffer": ["[email protected]", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
+
+ "sax": ["[email protected]", "", {}, "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw=="],
+
+ "scheduler": ["[email protected]", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
+
+ "schema-utils": ["[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA=="],
+
+ "scroll-into-view-if-needed": ["[email protected]", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="],
+
+ "scule": ["[email protected]", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="],
+
+ "secure-json-parse": ["[email protected]", "", {}, "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="],
+
+ "selderee": ["[email protected]", "", { "dependencies": { "parseley": "^0.12.0" } }, "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA=="],
+
+ "semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
+
+ "send": ["[email protected]", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="],
+
+ "serialize-error": ["[email protected]", "", { "dependencies": { "type-fest": "^4.31.0" } }, "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw=="],
+
+ "serialize-javascript": ["[email protected]", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="],
+
+ "serve-static": ["[email protected]", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="],
+
+ "set-cookie-parser": ["[email protected]", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="],
+
+ "set-function-length": ["[email protected]", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="],
+
+ "set-function-name": ["[email protected]", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="],
+
+ "set-proto": ["[email protected]", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="],
+
+ "set-value": ["[email protected]", "", { "dependencies": { "is-plain-object": "^2.0.4", "is-primitive": "^3.0.1" } }, "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw=="],
+
+ "setimmediate": ["[email protected]", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="],
+
+ "setprototypeof": ["[email protected]", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
+
+ "sharp": ["[email protected]", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
+
+ "sharp-ico": ["[email protected]", "", { "dependencies": { "decode-ico": "*", "ico-endec": "*", "sharp": "*" } }, "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q=="],
+
+ "shebang-command": ["[email protected]", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
+
+ "shebang-regex": ["[email protected]", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
+
+ "shell-quote": ["[email protected]", "", {}, "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="],
+
+ "shellwords": ["[email protected]", "", {}, "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="],
+
+ "shiki": ["[email protected]", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/engine-javascript": "3.21.0", "@shikijs/engine-oniguruma": "3.21.0", "@shikijs/langs": "3.21.0", "@shikijs/themes": "3.21.0", "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w=="],
+
+ "side-channel": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
+
+ "side-channel-list": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
+
+ "side-channel-map": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
+
+ "side-channel-weakmap": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
+
+ "siginfo": ["[email protected]", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="],
+
+ "signal-exit": ["[email protected]", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
+
+ "simple-eval": ["[email protected]", "", { "dependencies": { "jsep": "^1.3.6" } }, "sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ=="],
+
+ "simple-swizzle": ["[email protected]", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="],
+
+ "sisteransi": ["[email protected]", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
+
+ "slate": ["[email protected]", "", { "dependencies": { "immer": "^10.0.3", "tiny-warning": "^1.0.3" } }, "sha512-6H1DNgnSwAFhq/pIgf+tLvjNzH912M5XrKKhP9Frmbds2zFXdSJ6L/uFNyVKxQIkPzGWPD0m+wdDfmEuGFH5Tg=="],
+
+ "slate-dom": ["[email protected]", "", { "dependencies": { "@juggle/resize-observer": "^3.4.0", "direction": "^1.0.4", "is-hotkey": "^0.2.0", "is-plain-object": "^5.0.0", "lodash": "^4.17.21", "scroll-into-view-if-needed": "^3.1.0", "tiny-invariant": "1.3.1" }, "peerDependencies": { "slate": ">=0.99.0" } }, "sha512-foc8a2NkE+1SldDIYaoqjhVKupt8RSuvHI868rfYOcypD4we5TT7qunjRKJ852EIRh/Ql8sSTepXgXKOUJnt1w=="],
+
+ "slate-react": ["[email protected]", "", { "dependencies": { "@juggle/resize-observer": "^3.4.0", "direction": "^1.0.4", "is-hotkey": "^0.2.0", "lodash": "^4.17.21", "scroll-into-view-if-needed": "^3.1.0", "tiny-invariant": "1.3.1" }, "peerDependencies": { "react": ">=18.2.0", "react-dom": ">=18.2.0", "slate": ">=0.114.0", "slate-dom": ">=0.116.0" } }, "sha512-9ckilyUzQS1VHJnstIpgInhcWnTDgv2Cd7m1HOQVl3zasChoapPSMftzT/wl/48grZaZYZIi4xVuzGTcFRUWFg=="],
+
+ "slice-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="],
+
+ "smart-buffer": ["[email protected]", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="],
+
+ "socket.io": ["[email protected]", "", { "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw=="],
+
+ "socket.io-adapter": ["[email protected]", "", { "dependencies": { "debug": "~4.4.1", "ws": "~8.18.3" } }, "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ=="],
+
+ "socket.io-parser": ["[email protected]", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ=="],
+
+ "socks": ["[email protected]", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="],
+
+ "socks-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
+
+ "sonic-boom": ["[email protected]", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww=="],
+
+ "sonner": ["[email protected]", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w=="],
+
+ "source-map": ["[email protected]", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
+
+ "source-map-js": ["[email protected]", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
+
+ "source-map-support": ["[email protected]", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="],
+
+ "space-separated-tokens": ["[email protected]", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
+
+ "spawn-sync": ["[email protected]", "", { "dependencies": { "concat-stream": "^1.4.7", "os-shim": "^0.1.2" } }, "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw=="],
+
+ "split": ["[email protected]", "", { "dependencies": { "through": "2" } }, "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="],
+
+ "split2": ["[email protected]", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="],
+
+ "sprintf-js": ["[email protected]", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="],
+
+ "stack-utils": ["[email protected]", "", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="],
+
+ "stackback": ["[email protected]", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="],
+
+ "stacktrace-parser": ["[email protected]", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="],
+
+ "statuses": ["[email protected]", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="],
+
+ "std-env": ["[email protected]", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
+
+ "stdin-discarder": ["[email protected]", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
+
+ "stop-iteration-iterator": ["[email protected]", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="],
+
+ "stoppable": ["[email protected]", "", {}, "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw=="],
+
+ "streamdown": ["[email protected]", "", { "dependencies": { "clsx": "^2.1.1", "hast": "^1.0.0", "hast-util-to-jsx-runtime": "^2.3.6", "html-url-attributes": "^3.0.1", "katex": "^0.16.22", "lucide-react": "^0.542.0", "marked": "^16.2.1", "mermaid": "^11.11.0", "rehype-harden": "^1.1.6", "rehype-katex": "^7.0.1", "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", "remark-cjk-friendly": "^1.2.3", "remark-cjk-friendly-gfm-strikethrough": "^1.2.3", "remark-gfm": "^4.0.1", "remark-math": "^6.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remend": "1.0.1", "shiki": "^3.12.2", "tailwind-merge": "^3.3.1", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-Y38fwRx5kCKTluwM+Gf27jbbi9q6Qy+WC9YrC1YbCpMkktT3PsRBJHMWiqYeF8y/JzLpB1IzDoeaB6qkQEDnAA=="],
+
+ "streamx": ["[email protected]", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="],
+
+ "string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
+
+ "string-width-cjs": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "string.prototype.trim": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="],
+
+ "string.prototype.trimend": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="],
+
+ "string.prototype.trimstart": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="],
+
+ "string_decoder": ["[email protected]", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="],
+
+ "stringify-entities": ["[email protected]", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
+
+ "strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
+
+ "strip-ansi-cjs": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "strip-bom": ["[email protected]", "", {}, "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A=="],
+
+ "strip-final-newline": ["[email protected]", "", {}, "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw=="],
+
+ "strip-json-comments": ["[email protected]", "", {}, "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g=="],
+
+ "strip-literal": ["[email protected]", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="],
+
+ "strnum": ["[email protected]", "", {}, "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ=="],
+
+ "strtok3": ["[email protected]", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg=="],
+
+ "stubborn-fs": ["[email protected]", "", { "dependencies": { "stubborn-utils": "^1.0.1" } }, "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA=="],
+
+ "stubborn-utils": ["[email protected]", "", {}, "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg=="],
+
+ "style-to-js": ["[email protected]", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="],
+
+ "style-to-object": ["[email protected]", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="],
+
+ "styled-jsx": ["[email protected]", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
+
+ "stylis": ["[email protected]", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="],
+
+ "sucrase": ["[email protected]", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="],
+
+ "suffix-thumb": ["[email protected]", "", {}, "sha512-I5PWXAFKx3FYnI9a+dQMWNqTxoRt6vdBdb0O+BJ1sxXCWtSoQCusc13E58f+9p4MYx/qCnEMkD5jac6K2j3dgA=="],
+
+ "supermemory": ["[email protected]", "", {}, "sha512-xUTn6ElIIXwizj80ELDFgXjAcBpV9LtNz7kWl+PVQfVzFHM2lOguFHaDx6GoWuWW2GpnE3ikkKPCsKpvHFgqgg=="],
+
+ "supermemory-browser-extension": ["supermemory-browser-extension@workspace:apps/browser-extension"],
+
+ "supermemory-mcp": ["supermemory-mcp@workspace:apps/mcp"],
+
+ "supports-color": ["[email protected]", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
+
+ "supports-preserve-symlinks-flag": ["[email protected]", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
+
+ "svg-path-properties": ["[email protected]", "", {}, "sha512-GmrB+b6woz6CCdQe6w1GHs/1lt25l7SR5hmhF8jRdarpv/OgjLyuQygLu1makJapixeb1aQhP/Oa1iKi93o/aQ=="],
+
+ "svgpath": ["[email protected]", "", {}, "sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg=="],
+
+ "swr": ["[email protected]", "", { "dependencies": { "dequal": "^2.0.3", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w=="],
+
+ "tagged-tag": ["[email protected]", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="],
+
+ "tailwind-merge": ["[email protected]", "", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="],
+
+ "tailwindcss": ["[email protected]", "", {}, "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="],
+
+ "tapable": ["[email protected]", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="],
+
+ "tar": ["[email protected]", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A=="],
+
+ "tar-fs": ["[email protected]", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg=="],
+
+ "tar-stream": ["[email protected]", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="],
+
+ "terser": ["[email protected]", "", { "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg=="],
+
+ "terser-webpack-plugin": ["[email protected]", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q=="],
+
+ "text-decoder": ["[email protected]", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="],
+
+ "thenify": ["[email protected]", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
+
+ "thenify-all": ["[email protected]", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
+
+ "thread-stream": ["[email protected]", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="],
+
+ "throttleit": ["[email protected]", "", {}, "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw=="],
+
+ "through": ["[email protected]", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="],
+
+ "tiny-invariant": ["[email protected]", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="],
+
+ "tiny-lru": ["[email protected]", "", {}, "sha512-hkcz3FjNJfKXjV4mjQ1OrXSLAehg8Hw+cEZclOVT+5c/cWQWImQ9wolzTjth+dmmDe++p3bme3fTxz6Q4Etsqw=="],
+
+ "tiny-warning": ["[email protected]", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="],
+
+ "tinybench": ["[email protected]", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="],
+
+ "tinyexec": ["[email protected]", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="],
+
+ "tinyglobby": ["[email protected]", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
+
+ "tinypool": ["[email protected]", "", {}, "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg=="],
+
+ "tinyrainbow": ["[email protected]", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="],
+
+ "tinyspy": ["[email protected]", "", {}, "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q=="],
+
+ "tmp": ["[email protected]", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="],
+
+ "to-data-view": ["[email protected]", "", {}, "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ=="],
+
+ "to-regex-range": ["[email protected]", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
+
+ "toidentifier": ["[email protected]", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
+
+ "token-types": ["[email protected]", "", { "dependencies": { "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww=="],
+
+ "topojson-client": ["[email protected]", "", { "dependencies": { "commander": "2" }, "bin": { "topo2geo": "bin/topo2geo", "topomerge": "bin/topomerge", "topoquantize": "bin/topoquantize" } }, "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw=="],
+
+ "tr46": ["[email protected]", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
+
+ "tree-kill": ["[email protected]", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="],
+
+ "trie-memoize": ["[email protected]", "", {}, "sha512-hEDLVEP1FCgaRtt0oZDJdz2lK9uK7WlB7ASswt9U9cqruSNueVigtRGxI97hevKlViqhAcRgNgzuY/m8FCCMcg=="],
+
+ "trim-lines": ["[email protected]", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
+
+ "trim-trailing-lines": ["[email protected]", "", {}, "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg=="],
+
+ "trough": ["[email protected]", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
+
+ "ts-algebra": ["[email protected]", "", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="],
+
+ "ts-dedent": ["[email protected]", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="],
+
+ "ts-interface-checker": ["[email protected]", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="],
+
+ "ts-tqdm": ["[email protected]", "", {}, "sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ=="],
+
+ "tsdown": ["[email protected]", "", { "dependencies": { "ansis": "^4.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "debug": "^4.4.1", "diff": "^8.0.2", "empathic": "^2.0.0", "hookable": "^5.5.3", "rolldown": "latest", "rolldown-plugin-dts": "^0.15.8", "semver": "^7.7.2", "tinyexec": "^1.0.1", "tinyglobby": "^0.2.14", "tree-kill": "^1.2.2", "unconfig": "^7.3.3" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "publint": "^0.3.0", "typescript": "^5.0.0", "unplugin-lightningcss": "^0.4.0", "unplugin-unused": "^0.5.0" }, "optionalPeers": ["@arethetypeswrong/core", "publint", "typescript", "unplugin-lightningcss", "unplugin-unused"], "bin": { "tsdown": "dist/run.mjs" } }, "sha512-6ThtxVZoTlR5YJov5rYvH8N1+/S/rD/pGfehdCLGznGgbxz+73EASV1tsIIZkLw2n+SXcERqHhcB/OkyxdKv3A=="],
+
+ "tslib": ["[email protected]", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "turbo": ["[email protected]", "", { "optionalDependencies": { "turbo-darwin-64": "2.7.3", "turbo-darwin-arm64": "2.7.3", "turbo-linux-64": "2.7.3", "turbo-linux-arm64": "2.7.3", "turbo-windows-64": "2.7.3", "turbo-windows-arm64": "2.7.3" }, "bin": { "turbo": "bin/turbo" } }, "sha512-+HjKlP4OfYk+qzvWNETA3cUO5UuK6b5MSc2UJOKyvBceKucQoQGb2g7HlC2H1GHdkfKrk4YF1VPvROkhVZDDLQ=="],
+
+ "turbo-darwin-64": ["[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-aZHhvRiRHXbJw1EcEAq4aws1hsVVUZ9DPuSFaq9VVFAKCup7niIEwc22glxb7240yYEr1vLafdQ2U294Vcwz+w=="],
+
+ "turbo-darwin-arm64": ["[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CkVrHSq+Bnhl9sX2LQgqQYVfLTWC2gvI74C4758OmU0djfrssDKU9d4YQF0AYXXhIIRZipSXfxClQziIMD+EAg=="],
+
+ "turbo-linux-64": ["[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-GqDsCNnzzr89kMaLGpRALyigUklzgxIrSy2pHZVXyifgczvYPnLglex78Aj3T2gu+T3trPPH2iJ+pWucVOCC2Q=="],
+
+ "turbo-linux-arm64": ["[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-NdCDTfIcIo3dWjsiaAHlxu5gW61Ed/8maah1IAF/9E3EtX0aAHNiBMbuYLZaR4vRJ7BeVkYB6xKWRtdFLZ0y3g=="],
+
+ "turbo-windows-64": ["[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-7bVvO987daXGSJVYBoG8R4Q+csT1pKIgLJYZevXRQ0Hqw0Vv4mKme/TOjYXs9Qb1xMKh51Tb3bXKDbd8/4G08g=="],
+
+ "turbo-windows-arm64": ["[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-nTodweTbPmkvwMu/a55XvjMsPtuyUSC+sV7f/SR57K36rB2I0YG21qNETN+00LOTUW9B3omd8XkiXJkt4kx/cw=="],
+
+ "turndown": ["[email protected]", "", { "dependencies": { "@mixmark-io/domino": "^2.2.0" } }, "sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ=="],
+
+ "tw-animate-css": ["[email protected]", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="],
+
+ "twoslash": ["[email protected]", "", { "dependencies": { "@typescript/vfs": "^1.6.2", "twoslash-protocol": "0.3.6" }, "peerDependencies": { "typescript": "^5.5.0" } }, "sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA=="],
+
+ "twoslash-protocol": ["[email protected]", "", {}, "sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA=="],
+
+ "type-fest": ["[email protected]", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
+
+ "type-is": ["[email protected]", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="],
+
+ "typed-array-buffer": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="],
+
+ "typed-array-byte-length": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="],
+
+ "typed-array-byte-offset": ["[email protected]", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="],
+
+ "typed-array-length": ["[email protected]", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="],
+
+ "typedarray": ["[email protected]", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="],
+
+ "typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
+
+ "ufo": ["[email protected]", "", {}, "sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q=="],
+
+ "uhyphen": ["[email protected]", "", {}, "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA=="],
+
+ "uint8array-extras": ["[email protected]", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="],
+
+ "unbox-primitive": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="],
+
+ "unbzip2-stream": ["[email protected]", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="],
+
+ "unconfig": ["[email protected]", "", { "dependencies": { "@quansync/fs": "^1.0.0", "defu": "^6.1.4", "jiti": "^2.6.1", "quansync": "^1.0.0", "unconfig-core": "7.4.2" } }, "sha512-nrMlWRQ1xdTjSnSUqvYqJzbTBFugoqHobQj58B2bc8qxHKBBHMNNsWQFP3Cd3/JZK907voM2geYPWqD4VK3MPQ=="],
+
+ "unconfig-core": ["[email protected]", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg=="],
+
+ "undici": ["[email protected]", "", {}, "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ=="],
+
+ "undici-types": ["[email protected]", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
+
+ "unenv": ["[email protected]", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="],
+
+ "unicorn-magic": ["[email protected]", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="],
+
+ "unified": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="],
+
+ "unimport": ["[email protected]", "", { "dependencies": { "acorn": "^8.15.0", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "pathe": "^2.0.3", "picomatch": "^4.0.3", "pkg-types": "^2.3.0", "scule": "^1.3.0", "strip-literal": "^3.1.0", "tinyglobby": "^0.2.15", "unplugin": "^2.3.11", "unplugin-utils": "^0.3.1" } }, "sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A=="],
+
+ "unist-builder": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg=="],
+
+ "unist-util-find-after": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="],
+
+ "unist-util-is": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="],
+
+ "unist-util-map": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-HJs1tpkSmRJUzj6fskQrS5oYhBYlmtcvy4SepdDEEsL04FjBrgF0Mgggvxc1/qGBGgW7hRh9+UBK1aqTEnBpIA=="],
+
+ "unist-util-modify-children": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="],
+
+ "unist-util-position": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
+
+ "unist-util-position-from-estree": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="],
+
+ "unist-util-remove": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg=="],
+
+ "unist-util-remove-position": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="],
+
+ "unist-util-stringify-position": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
+
+ "unist-util-visit": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="],
+
+ "unist-util-visit-children": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="],
+
+ "unist-util-visit-parents": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
+
+ "universal-user-agent": ["[email protected]", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="],
+
+ "universalify": ["[email protected]", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="],
+
+ "unpipe": ["[email protected]", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
+
+ "unplugin": ["[email protected]", "", { "dependencies": { "acorn": "^8.8.1", "chokidar": "^3.5.3", "webpack-sources": "^3.2.3", "webpack-virtual-modules": "^0.5.0" } }, "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA=="],
+
+ "unplugin-utils": ["[email protected]", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog=="],
+
+ "update-browserslist-db": ["[email protected]", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="],
+
+ "update-notifier": ["[email protected]", "", { "dependencies": { "boxen": "^8.0.1", "chalk": "^5.3.0", "configstore": "^7.0.0", "is-in-ci": "^1.0.0", "is-installed-globally": "^1.0.0", "is-npm": "^6.0.0", "latest-version": "^9.0.0", "pupa": "^3.1.0", "semver": "^7.6.3", "xdg-basedir": "^5.1.0" } }, "sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA=="],
+
+ "urijs": ["[email protected]", "", {}, "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="],
+
+ "urlpattern-polyfill": ["[email protected]", "", {}, "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw=="],
+
+ "use-callback-ref": ["[email protected]", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="],
+
+ "use-sidecar": ["[email protected]", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="],
+
+ "use-sync-external-store": ["[email protected]", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="],
+
+ "util-deprecate": ["[email protected]", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
+
+ "utility-types": ["[email protected]", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="],
+
+ "utils-merge": ["[email protected]", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="],
+
+ "uuid": ["[email protected]", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="],
+
+ "valibot": ["[email protected]", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg=="],
+
+ "vary": ["[email protected]", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
+
+ "vaul": ["[email protected]", "", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA=="],
+
+ "vfile": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
+
+ "vfile-location": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="],
+
+ "vfile-matter": ["[email protected]", "", { "dependencies": { "vfile": "^6.0.0", "yaml": "^2.0.0" } }, "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw=="],
+
+ "vfile-message": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
+
+ "victory-vendor": ["[email protected]", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="],
+
+ "vite": ["[email protected]", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="],
+
+ "vite-node": ["[email protected]", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="],
+
+ "vitest": ["[email protected]", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="],
+
+ "vscode-jsonrpc": ["[email protected]", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="],
+
+ "vscode-languageserver": ["[email protected]", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="],
+
+ "vscode-languageserver-protocol": ["[email protected]", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="],
+
+ "vscode-languageserver-textdocument": ["[email protected]", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="],
+
+ "vscode-languageserver-types": ["[email protected]", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="],
+
+ "vscode-uri": ["[email protected]", "", {}, "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="],
+
+ "warning": ["[email protected]", "", { "dependencies": { "loose-envify": "^1.0.0" } }, "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w=="],
+
+ "watchpack": ["[email protected]", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA=="],
+
+ "web-ext-run": ["[email protected]", "", { "dependencies": { "@babel/runtime": "7.28.2", "@devicefarmer/adbkit": "3.3.8", "chrome-launcher": "1.2.0", "debounce": "1.2.1", "es6-error": "4.1.1", "firefox-profile": "4.7.0", "fx-runner": "1.4.0", "multimatch": "6.0.0", "node-notifier": "10.0.1", "parse-json": "7.1.1", "pino": "9.7.0", "promise-toolbox": "0.21.0", "set-value": "4.1.0", "source-map-support": "0.5.21", "strip-bom": "5.0.0", "strip-json-comments": "5.0.2", "tmp": "0.2.5", "update-notifier": "7.3.1", "watchpack": "2.4.4", "zip-dir": "2.0.0" } }, "sha512-rQicL7OwuqWdQWI33JkSXKcp7cuv1mJG8u3jRQwx/8aDsmhbTHs9ZRmNYOL+LX0wX8edIEQX8jj4bB60GoXtKA=="],
+
+ "web-namespaces": ["[email protected]", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="],
+
+ "web-streams-polyfill": ["[email protected]", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="],
+
+ "web-vitals": ["[email protected]", "", {}, "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw=="],
+
+ "webidl-conversions": ["[email protected]", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
+
+ "webpack": ["[email protected]", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.4", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA=="],
+
+ "webpack-sources": ["[email protected]", "", {}, "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg=="],
+
+ "webpack-virtual-modules": ["[email protected]", "", {}, "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="],
+
+ "whatwg-url": ["[email protected]", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
+
+ "when": ["[email protected]", "", {}, "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw=="],
+
+ "when-exit": ["[email protected]", "", {}, "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg=="],
+
+ "which": ["[email protected]", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
+
+ "which-boxed-primitive": ["[email protected]", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="],
+
+ "which-builtin-type": ["[email protected]", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="],
+
+ "which-collection": ["[email protected]", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="],
+
+ "which-typed-array": ["[email protected]", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="],
+
+ "why-is-node-running": ["[email protected]", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="],
+
+ "widest-line": ["[email protected]", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="],
+
+ "winreg": ["[email protected]", "", {}, "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ=="],
+
+ "workerd": ["[email protected]", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260107.1", "@cloudflare/workerd-darwin-arm64": "1.20260107.1", "@cloudflare/workerd-linux-64": "1.20260107.1", "@cloudflare/workerd-linux-arm64": "1.20260107.1", "@cloudflare/workerd-windows-64": "1.20260107.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-4ylAQJDdJZdMAUl2SbJgTa77YHpa88l6qmhiuCLNactP933+rifs7I0w1DslhUIFgydArUX5dNLAZnZhT7Bh7g=="],
+
+ "wrangler": ["[email protected]", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.1", "@cloudflare/unenv-preset": "2.8.0", "blake3-wasm": "2.1.5", "esbuild": "0.27.0", "miniflare": "4.20260107.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260107.1" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20260107.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-Jm6EYtlt8iUcznOCPSMYC54DYkwrMNESzbH0Vh3GFHv/7XVw5gBC13YJAB+nWMRGJ+6B2dMzy/NVQS4ONL51Pw=="],
+
+ "wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="],
+
+ "wrap-ansi-cjs": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "wrappy": ["[email protected]", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
+
+ "ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="],
+
+ "wsl-utils": ["[email protected]", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
+
+ "wxt": ["[email protected]", "", { "dependencies": { "@1natsu/wait-element": "^4.1.2", "@aklinker1/rollup-plugin-visualizer": "5.12.0", "@webext-core/fake-browser": "^1.3.2", "@webext-core/isolated-element": "^1.1.2", "@webext-core/match-patterns": "^1.0.3", "@wxt-dev/browser": "^0.1.32", "@wxt-dev/storage": "^1.0.0", "async-mutex": "^0.5.0", "c12": "^3.3.2", "cac": "^6.7.14", "chokidar": "^4.0.3", "ci-info": "^4.3.1", "consola": "^3.4.2", "defu": "^6.1.4", "dotenv": "^17.2.3", "dotenv-expand": "^12.0.3", "esbuild": "^0.27.1", "fast-glob": "^3.3.3", "filesize": "^11.0.13", "fs-extra": "^11.3.2", "get-port-please": "^3.2.0", "giget": "^1.2.3 || ^2.0.0", "hookable": "^5.5.3", "import-meta-resolve": "^4.2.0", "is-wsl": "^3.1.0", "json5": "^2.2.3", "jszip": "^3.10.1", "linkedom": "^0.18.12", "magicast": "^0.3.5", "minimatch": "^10.1.1", "nano-spawn": "^1.0.3", "normalize-path": "^3.0.0", "nypm": "^0.6.2", "ohash": "^2.0.11", "open": "^10.2.0", "ora": "^8.2.0", "perfect-debounce": "^2.0.0", "picocolors": "^1.1.1", "prompts": "^2.4.2", "publish-browser-extension": "^2.3.0 || ^3.0.2", "scule": "^1.3.0", "unimport": "^3.13.1 || ^4.0.0 || ^5.0.0", "vite": "^5.4.19 || ^6.3.4 || ^7.0.0", "vite-node": "^3.2.4 || ^5.0.0", "web-ext-run": "^0.2.4" }, "bin": { "wxt": "bin/wxt.mjs", "wxt-publish-extension": "bin/wxt-publish-extension.cjs" } }, "sha512-FwQEk+0a4/pYha6rTKGl5iicU6kRYDBDiElJf55CFEfoJKqvGzBTZpphafurQfqU1X0hvAm9w5GEWC0thXI6wQ=="],
+
+ "xdg-basedir": ["[email protected]", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="],
+
+ "xml2js": ["[email protected]", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA=="],
+
+ "xmlbuilder": ["[email protected]", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
+
+ "xtend": ["[email protected]", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="],
+
+ "y18n": ["[email protected]", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
+
+ "yallist": ["[email protected]", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
+
+ "yaml": ["[email protected]", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="],
+
+ "yargs": ["[email protected]", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="],
+
+ "yargs-parser": ["[email protected]", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="],
+
+ "yauzl": ["[email protected]", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
+
+ "yocto-queue": ["[email protected]", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
+
+ "yocto-spinner": ["[email protected]", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-VPX8P/+Z2Fnpx8PC/JELbxp3QRrBxjAekio6yulGtA5gKt9YyRc5ycCb+NHgZCbZ0kx9KxwZp7gC6UlrCcCdSQ=="],
+
+ "yoctocolors": ["[email protected]", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="],
+
+ "yoctocolors-cjs": ["[email protected]", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="],
+
+ "yoga-layout": ["[email protected]", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="],
+
+ "youch": ["[email protected]", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ=="],
+
+ "youch-core": ["[email protected]", "", { "dependencies": { "@poppinss/exception": "^1.2.2", "error-stack-parser-es": "^1.0.5" } }, "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA=="],
+
+ "zip-dir": ["[email protected]", "", { "dependencies": { "async": "^3.2.0", "jszip": "^3.2.2" } }, "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg=="],
+
+ "zod": ["[email protected]", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
+
+ "zod-openapi": ["[email protected]", "", { "peerDependencies": { "zod": "^3.21.4" } }, "sha512-tsrQpbpqFCXqVXUzi3TPwFhuMtLN3oNZobOtYnK6/5VkXsNdnIgyNr4r8no4wmYluaxzN3F7iS+8xCW8BmMQ8g=="],
+
+ "zod-to-json-schema": ["[email protected]", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="],
+
+ "zod-to-ts": ["[email protected]", "", { "peerDependencies": { "typescript": "^5.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-aHsUgIl+CQutKAxtRNeZslLCLXoeuSq+j5HU7q3kvi/c2KIAo6q4YjT7/lwFfACxLB923ELHYMkHmlxiqFy4lw=="],
+
+ "zustand": ["[email protected]", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg=="],
+
+ "zwitch": ["[email protected]", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
+
+ "@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/cerebras/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/gateway/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ=="],
+
+ "@ai-sdk/google/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/groq/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ=="],
+
+ "@ai-sdk/openai-compatible/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/provider-utils/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@ai-sdk/provider-utils/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "@ai-sdk/react/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.0-beta.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-4Dv/wiGZrvO6fI7P0yMLa4XZru0XW8LPibTObbkHBdweLUVGIze7aCfxxQeY44Uqcbl/h6/yBTkx2XmPtwf/Ow=="],
+
+ "@ai-sdk/react/ai": ["[email protected]", "", { "dependencies": { "@ai-sdk/gateway": "1.0.0-beta.10", "@ai-sdk/provider": "2.0.0-beta.1", "@ai-sdk/provider-utils": "3.0.0-beta.5", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4" }, "bin": { "ai": "dist/bin/ai.min.js" } }, "sha512-glQIA+PGEP+UEPB+thdqNZi9Ot4Yjiqsl071S1KPaRTGHmBIg/c8OYb2mXCRM+3cNCFGVnCTudZoYUVNwBpFxg=="],
+
+ "@ai-sdk/ui-utils/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "@aklinker1/rollup-plugin-visualizer/open": ["[email protected]", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "@aklinker1/rollup-plugin-visualizer/source-map": ["[email protected]", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs": ["[email protected]", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
+
+ "@alcalzone/ansi-tokenize/is-fullwidth-code-point": ["[email protected]", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="],
+
+ "@apidevtools/json-schema-ref-parser/js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
+
+ "@asyncapi/parser/ajv-formats": ["[email protected]", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
+
+ "@asyncapi/parser/js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
+
+ "@asyncapi/parser/node-fetch": ["[email protected]", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ=="],
+
+ "@aws-crypto/ie11-detection/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@aws-crypto/sha1-browser/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@aws-crypto/sha256-browser/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@aws-crypto/util/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", "@aws-crypto/supports-web-crypto": "^3.0.0", "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" } }, "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.398.0", "@aws-sdk/credential-provider-ini": "3.398.0", "@aws-sdk/credential-provider-process": "3.398.0", "@aws-sdk/credential-provider-sso": "3.398.0", "@aws-sdk/credential-provider-web-identity": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/middleware-host-header": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/middleware-logger": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/middleware-user-agent": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/util-endpoints": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "tslib": "^2.5.0" } }, "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/util-user-agent-browser": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/util-user-agent-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/xml-builder": ["@aws-sdk/[email protected]", "", { "dependencies": { "tslib": "^2.5.0" } }, "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/config-resolver": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", "@smithy/util-config-provider": "^2.3.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/fetch-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/hash-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/invalid-dependency": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-content-length": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-endpoint": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", "@smithy/service-error-classification": "^2.1.5", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-serde": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-stack": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/smithy-client": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "@smithy/util-stream": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/url-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-base64": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-body-length-browser": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-body-length-node": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-defaults-mode-browser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-defaults-mode-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-stream": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-hex-encoding": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-waiter": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA=="],
+
+ "@aws-sdk/client-cloudfront/fast-xml-parser": ["[email protected]", "", { "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", "@aws-crypto/supports-web-crypto": "^3.0.0", "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" } }, "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.398.0", "@aws-sdk/credential-provider-ini": "3.398.0", "@aws-sdk/credential-provider-process": "3.398.0", "@aws-sdk/credential-provider-sso": "3.398.0", "@aws-sdk/credential-provider-web-identity": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/middleware-host-header": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/middleware-logger": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/middleware-recursion-detection": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/middleware-user-agent": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@smithy/protocol-http": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/util-endpoints": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "tslib": "^2.5.0" } }, "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/util-user-agent-browser": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/types": "^2.2.2", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/util-user-agent-node": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ=="],
+
+ "@aws-sdk/client-sts/@smithy/config-resolver": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", "@smithy/util-config-provider": "^2.3.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA=="],
+
+ "@aws-sdk/client-sts/@smithy/fetch-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw=="],
+
+ "@aws-sdk/client-sts/@smithy/hash-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g=="],
+
+ "@aws-sdk/client-sts/@smithy/invalid-dependency": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-content-length": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-endpoint": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", "@smithy/service-error-classification": "^2.1.5", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-serde": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-stack": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA=="],
+
+ "@aws-sdk/client-sts/@smithy/node-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg=="],
+
+ "@aws-sdk/client-sts/@smithy/node-http-handler": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA=="],
+
+ "@aws-sdk/client-sts/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "@smithy/util-stream": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ=="],
+
+ "@aws-sdk/client-sts/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw=="],
+
+ "@aws-sdk/client-sts/@smithy/url-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ=="],
+
+ "@aws-sdk/client-sts/@smithy/util-base64": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw=="],
+
+ "@aws-sdk/client-sts/@smithy/util-body-length-browser": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w=="],
+
+ "@aws-sdk/client-sts/@smithy/util-body-length-node": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw=="],
+
+ "@aws-sdk/client-sts/@smithy/util-defaults-mode-browser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw=="],
+
+ "@aws-sdk/client-sts/@smithy/util-defaults-mode-node": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA=="],
+
+ "@aws-sdk/client-sts/@smithy/util-retry": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g=="],
+
+ "@aws-sdk/client-sts/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@aws-sdk/client-sts/fast-xml-parser": ["[email protected]", "", { "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g=="],
+
+ "@aws-sdk/middleware-sdk-sts/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ=="],
+
+ "@aws-sdk/middleware-sdk-sts/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw=="],
+
+ "@aws-sdk/middleware-signing/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ=="],
+
+ "@aws-sdk/middleware-signing/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/middleware-signing/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/util-hex-encoding": "^2.2.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-uri-escape": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q=="],
+
+ "@aws-sdk/middleware-signing/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw=="],
+
+ "@aws-sdk/middleware-signing/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/xml-builder/fast-xml-parser": ["[email protected]", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ=="],
+
+ "@babel/core/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+
+ "@babel/generator/@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@babel/generator/jsesc": ["[email protected]", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="],
+
+ "@babel/helper-compilation-targets/lru-cache": ["[email protected]", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
+
+ "@babel/helper-compilation-targets/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+
+ "@babel/helper-create-class-features-plugin/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+
+ "@better-auth/core/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@better-auth/core/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "@chevrotain/cst-dts-gen/lodash-es": ["[email protected]", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="],
+
+ "@chevrotain/gast/lodash-es": ["[email protected]", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="],
+
+ "@devicefarmer/adbkit/commander": ["[email protected]", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="],
+
+ "@devicefarmer/adbkit/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
+
+ "@dotenvx/dotenvx/commander": ["[email protected]", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
+
+ "@dotenvx/dotenvx/execa": ["[email protected]", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="],
+
+ "@dotenvx/dotenvx/which": ["[email protected]", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="],
+
+ "@ecies/ciphers/@noble/ciphers": ["@noble/[email protected]", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="],
+
+ "@esbuild-kit/core-utils/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="],
+
+ "@inquirer/core/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
+
+ "@isaacs/cliui/string-width": ["[email protected]", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
+
+ "@isaacs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
+
+ "@jridgewell/gen-mapping/@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@jridgewell/remapping/@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@jridgewell/source-map/@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@mdx-js/mdx/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "@mdx-js/mdx/estree-walker": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "@mdx-js/mdx/source-map": ["[email protected]", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
+
+ "@mintlify/cli/@inquirer/prompts": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/checkbox": "^4.3.0", "@inquirer/confirm": "^5.1.19", "@inquirer/editor": "^4.2.21", "@inquirer/expand": "^4.0.21", "@inquirer/input": "^4.2.5", "@inquirer/number": "^3.0.21", "@inquirer/password": "^4.0.21", "@inquirer/rawlist": "^4.1.9", "@inquirer/search": "^3.2.0", "@inquirer/select": "^4.4.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A=="],
+
+ "@mintlify/cli/chalk": ["[email protected]", "", {}, "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA=="],
+
+ "@mintlify/cli/fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw=="],
+
+ "@mintlify/cli/inquirer": ["[email protected]", "", { "dependencies": { "@inquirer/core": "^10.1.2", "@inquirer/prompts": "^7.2.1", "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2", "mute-stream": "^2.0.0", "run-async": "^3.0.0", "rxjs": "^7.8.1" }, "peerDependencies": { "@types/node": ">=18" } }, "sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ=="],
+
+ "@mintlify/cli/react": ["[email protected]", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
+
+ "@mintlify/cli/semver": ["[email protected]", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],
+
+ "@mintlify/cli/yargs": ["[email protected]", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw=="],
+
+ "@mintlify/common/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w=="],
+
+ "@mintlify/common/estree-walker": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "@mintlify/common/ignore": ["[email protected]", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
+
+ "@mintlify/common/mdast-util-gfm": ["[email protected]", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw=="],
+
+ "@mintlify/common/mdast-util-mdx-jsx": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ=="],
+
+ "@mintlify/common/remark-gfm": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA=="],
+
+ "@mintlify/common/remark-rehype": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ=="],
+
+ "@mintlify/common/tailwindcss": ["[email protected]", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.0", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", "postcss": "^8.4.23", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A=="],
+
+ "@mintlify/common/unist-util-visit-parents": ["[email protected]", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="],
+
+ "@mintlify/link-rot/fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="],
+
+ "@mintlify/link-rot/unist-util-visit": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.1.1" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="],
+
+ "@mintlify/mdx/react": ["[email protected]", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
+
+ "@mintlify/models/axios": ["[email protected]", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw=="],
+
+ "@mintlify/prebuild/chalk": ["[email protected]", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="],
+
+ "@mintlify/prebuild/fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="],
+
+ "@mintlify/prebuild/sharp": ["[email protected]", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
+
+ "@mintlify/prebuild/unist-util-visit": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.1.1" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="],
+
+ "@mintlify/prebuild/uuid": ["[email protected]", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
+
+ "@mintlify/previewing/chalk": ["[email protected]", "", {}, "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA=="],
+
+ "@mintlify/previewing/chokidar": ["[email protected]", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="],
+
+ "@mintlify/previewing/express": ["[email protected]", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", "serve-static": "1.15.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ=="],
+
+ "@mintlify/previewing/fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw=="],
+
+ "@mintlify/previewing/react": ["[email protected]", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
+
+ "@mintlify/previewing/unist-util-visit": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.1.1" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="],
+
+ "@mintlify/previewing/yargs": ["[email protected]", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw=="],
+
+ "@mintlify/scraping/fs-extra": ["[email protected]", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="],
+
+ "@mintlify/scraping/mdast-util-mdx-jsx": ["[email protected]", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ=="],
+
+ "@mintlify/scraping/remark-gfm": ["[email protected]", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA=="],
+
+ "@mintlify/scraping/remark-mdx": ["[email protected]", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA=="],
+
+ "@mintlify/scraping/yargs": ["[email protected]", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw=="],
+
+ "@mintlify/scraping/zod": ["[email protected]", "", {}, "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw=="],
+
+ "@mintlify/validation/uuid": ["[email protected]", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
+
+ "@mintlify/validation/zod": ["[email protected]", "", {}, "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw=="],
+
+ "@mintlify/validation/zod-to-json-schema": ["[email protected]", "", { "peerDependencies": { "zod": "^3.20.0" } }, "sha512-Un9+kInJ2Zt63n6Z7mLqBifzzPcOyX+b+Exuzf7L1+xqck9Q2EPByyTRduV3kmSPaXaRer1JCsucubpgL1fipg=="],
+
+ "@modelcontextprotocol/sdk/express": ["[email protected]", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="],
+
+ "@modelcontextprotocol/sdk/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "@noble/curves/@noble/hashes": ["@noble/[email protected]", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="],
+
+ "@node-minify/core/glob": ["[email protected]", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="],
+
+ "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="],
+
+ "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/[email protected]", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="],
+
+ "@opennextjs/aws/express": ["[email protected]", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="],
+
+ "@opennextjs/cloudflare/glob": ["[email protected]", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw=="],
+
+ "@opentelemetry/instrumentation-http/@opentelemetry/core": ["@opentelemetry/[email protected]", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw=="],
+
+ "@opentelemetry/instrumentation-pg/@types/pg": ["@types/[email protected]", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ=="],
+
+ "@pnpm/network.ca-file/graceful-fs": ["[email protected]", "", {}, "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="],
+
+ "@poppinss/colors/kleur": ["[email protected]", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
+
+ "@poppinss/dumper/supports-color": ["[email protected]", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
+
+ "@puppeteer/browsers/yargs": ["[email protected]", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
+
+ "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-avatar/@radix-ui/react-context": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="],
+
+ "@radix-ui/react-avatar/@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="],
+
+ "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="],
+
+ "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-progress/@radix-ui/react-context": ["@radix-ui/[email protected]", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="],
+
+ "@radix-ui/react-progress/@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="],
+
+ "@radix-ui/react-select/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@radix-ui/react-separator/@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="],
+
+ "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
+
+ "@react-router/dev/pathe": ["[email protected]", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
+
+ "@react-router/dev/react-refresh": ["[email protected]", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="],
+
+ "@repo/docs/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@repo/web/@ai-sdk/google": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-2XUnGi3f7TV4ujoAhA+Fg3idUoG/+Y2xjCRg70a1/m0DH1KSQqYaCboJ1C19y6ZHGdf5KNT20eJdswP6TvrY2g=="],
+
+ "@repo/web/ai": ["[email protected]", "", { "dependencies": { "@ai-sdk/gateway": "1.0.0-beta.10", "@ai-sdk/provider": "2.0.0-beta.1", "@ai-sdk/provider-utils": "3.0.0-beta.5", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4" }, "bin": { "ai": "dist/bin/ai.min.js" } }, "sha512-glQIA+PGEP+UEPB+thdqNZi9Ot4Yjiqsl071S1KPaRTGHmBIg/c8OYb2mXCRM+3cNCFGVnCTudZoYUVNwBpFxg=="],
+
+ "@repo/web/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@scalar/types/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="],
+
+ "@scalar/types/type-fest": ["[email protected]", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-GeJop7+u7BYlQ6yQCAY1nBQiRSHR+6OdCEtd8Bwp9a3NK3+fWAVjOaPKJDteB9f6cIJ0wt4IfnScjLG450EpXA=="],
+
+ "@scalar/types/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "@sentry/bundler-plugin-core/magic-string": ["[email protected]", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } }, "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ=="],
+
+ "@shikijs/core/hast-util-to-html": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
+
+ "@stoplight/better-ajv-errors/leven": ["[email protected]", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="],
+
+ "@stoplight/json/safe-stable-stringify": ["[email protected]", "", {}, "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="],
+
+ "@stoplight/json-ref-readers/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@stoplight/json-ref-resolver/immer": ["[email protected]", "", {}, "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="],
+
+ "@stoplight/spectral-core/@stoplight/types": ["@stoplight/[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ=="],
+
+ "@stoplight/spectral-core/ajv-formats": ["[email protected]", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
+
+ "@stoplight/spectral-core/minimatch": ["[email protected]", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
+
+ "@stoplight/spectral-functions/ajv-formats": ["[email protected]", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
+
+ "@stoplight/spectral-parsers/@stoplight/types": ["@stoplight/[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g=="],
+
+ "@stoplight/yaml/@stoplight/types": ["@stoplight/[email protected]", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g=="],
+
+ "@supermemory/ai-sdk/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@supermemory/ai-sdk/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "@supermemory/memory-graph/lucide-react": ["[email protected]", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-g9WCjmfwqbexSnZE+2cl21PCfXOcqnGeWeMTNAOGEfpPbm/ZF4YIq77Z8qWrxbu660EKuLB4nSLggoKnCb+isw=="],
+
+ "@supermemory/memory-graph/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@supermemory/tools/@ai-sdk/anthropic": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@ai-sdk/provider-utils": "3.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-DREpYqW2pylgaj69gZ+K8u92bo9DaMgFdictYnY+IwYeY3bawQ4zI7l/o1VkDsBDljAx8iYz5lPURwVZNu+Xpg=="],
+
+ "@supermemory/tools/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-HrEmNt/BH/hkQ7zpi2o6N3k1ZR1QTb7z85WYhYygiTxOQuaml4CMtHCWRbric5WPU+RNsYI7r1EpyVQMKO1pYw=="],
+
+ "@supermemory/tools/@anthropic-ai/sdk": ["@anthropic-ai/[email protected]", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-zIdPOcrCVEI8t3Di40nH4z9EoeyGZfXbYSvWdDLsB/KkaSYMnEgC7gmcgWu83g2NTn1ZTpbMvpdttWDGGIk6zw=="],
+
+ "@supermemory/tools/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@supermemory/tools/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/[email protected]", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/[email protected]", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/[email protected]", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
+
+ "@tailwindcss/oxide-wasm32-wasi/tslib": ["[email protected]", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@tanstack/react-store/@tanstack/store": ["@tanstack/[email protected]", "", {}, "sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ=="],
+
+ "@vanilla-extract/integration/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
+
+ "@vitest/mocker/estree-walker": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "accepts/mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "accepts/negotiator": ["[email protected]", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
+
+ "agents/@modelcontextprotocol/sdk": ["@modelcontextprotocol/[email protected]", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.0" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA=="],
+
+ "ai/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ=="],
+
+ "ai-gateway-provider/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg=="],
+
+ "ai-gateway-provider/ai": ["[email protected]", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.8", "@ai-sdk/react": "1.2.12", "@ai-sdk/ui-utils": "1.2.11", "@opentelemetry/api": "1.9.0", "jsondiffpatch": "0.6.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["react"] }, "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q=="],
+
+ "alchemy/@cloudflare/unenv-preset": ["@cloudflare/[email protected]", "", { "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250927.0" }, "optionalPeers": ["workerd"] }, "sha512-HtZuh166y0Olbj9bqqySckz0Rw9uHjggJeoGbDx5x+sgezBXlxO6tQSig2RZw5tgObF8mWI8zaPvQMkQZtAODw=="],
+
+ "alchemy/unenv": ["[email protected]", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="],
+
+ "ansi-align/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "anymatch/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "atmn/dotenv": ["[email protected]", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="],
+
+ "basic-auth/safe-buffer": ["[email protected]", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
+
+ "better-auth/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "better-call/rou3": ["[email protected]", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="],
+
+ "better-opn/open": ["[email protected]", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="],
+
+ "body-parser/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "body-parser/iconv-lite": ["[email protected]", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
+
+ "body-parser/raw-body": ["[email protected]", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="],
+
+ "c12/chokidar": ["[email protected]", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
+
+ "c12/dotenv": ["[email protected]", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="],
+
+ "cacheable-request/get-stream": ["[email protected]", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
+
+ "chevrotain/lodash-es": ["[email protected]", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="],
+
+ "chrome-launcher/escape-string-regexp": ["[email protected]", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
+
+ "chrome-launcher/is-wsl": ["[email protected]", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+
+ "chromium-bidi/urlpattern-polyfill": ["[email protected]", "", {}, "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg=="],
+
+ "chromium-bidi/zod": ["[email protected]", "", {}, "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g=="],
+
+ "cli-truncate/slice-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
+
+ "cloudflare/@types/node": ["@types/[email protected]", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],
+
+ "cmdk/@radix-ui/react-primitive": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="],
+
+ "compression/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "config-chain/ini": ["[email protected]", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="],
+
+ "cosmiconfig/env-paths": ["[email protected]", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
+
+ "cosmiconfig/js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
+
+ "cosmiconfig/parse-json": ["[email protected]", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="],
+
+ "cytoscape-fcose/cose-base": ["[email protected]", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="],
+
+ "d3/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "d3/d3-polygon": ["[email protected]", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="],
+
+ "d3-contour/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "d3-dsv/commander": ["[email protected]", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="],
+
+ "d3-dsv/iconv-lite": ["[email protected]", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
+
+ "d3-geo/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "d3-sankey/d3-shape": ["[email protected]", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="],
+
+ "d3-scale/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "d3-time/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "decompress-response/mimic-response": ["[email protected]", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
+
+ "dom-serializer/entities": ["[email protected]", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
+ "eciesjs/@noble/ciphers": ["@noble/[email protected]", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="],
+
+ "eciesjs/@noble/hashes": ["@noble/[email protected]", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="],
+
+ "engine.io/cookie": ["[email protected]", "", {}, "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="],
+
+ "engine.io/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
+
+ "engine.io/ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="],
+
+ "enquirer/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "esast-util-from-js/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "escodegen/estraverse": ["[email protected]", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
+
+ "esrecurse/estraverse": ["[email protected]", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
+
+ "estree-util-build-jsx/estree-walker": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "estree-util-to-js/source-map": ["[email protected]", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
+
+ "express/cookie": ["[email protected]", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
+
+ "express/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "express/path-to-regexp": ["[email protected]", "", {}, "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="],
+
+ "extract-zip/get-stream": ["[email protected]", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
+
+ "favicons/sharp": ["[email protected]", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
+
+ "fetch-blob/web-streams-polyfill": ["[email protected]", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
+
+ "finalhandler/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "find-process/chalk": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
+
+ "find-process/commander": ["[email protected]", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="],
+
+ "flubber/earcut": ["[email protected]", "", {}, "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="],
+
+ "form-data/mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "front-matter/js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="],
+
+ "fs-minipass/minipass": ["[email protected]", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "fx-runner/commander": ["[email protected]", "", { "dependencies": { "graceful-readlink": ">= 1.0.0" } }, "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A=="],
+
+ "fx-runner/which": ["[email protected]", "", { "dependencies": { "is-absolute": "^0.1.7", "isexe": "^1.1.1" }, "bin": { "which": "./bin/which" } }, "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA=="],
+
+ "gaxios/https-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
+
+ "gaxios/node-fetch": ["[email protected]", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="],
+
+ "get-uri/data-uri-to-buffer": ["[email protected]", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="],
+
+ "global-directory/ini": ["[email protected]", "", {}, "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="],
+
+ "got/@sindresorhus/is": ["@sindresorhus/[email protected]", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="],
+
+ "got/form-data-encoder": ["[email protected]", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="],
+
+ "got/get-stream": ["[email protected]", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
+
+ "hast-util-to-html/property-information": ["[email protected]", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="],
+
+ "hast-util-to-mdast/hast-util-to-html": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
+
+ "hoist-non-react-statics/react-is": ["[email protected]", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
+
+ "html-to-text/htmlparser2": ["[email protected]", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="],
+
+ "http-proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "import-in-the-middle/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "ink/cli-cursor": ["[email protected]", "", { "dependencies": { "restore-cursor": "^4.0.0" } }, "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg=="],
+
+ "ink/react-reconciler": ["[email protected]", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.0" } }, "sha512-2NPMOzgTlG0ZWdIf3qG+dcbLSoAc/uLfOwckc3ofy5sSK0pLJqnQLpUFxvGcN2rlXSjnVtGeeFLNimCQEj5gOQ=="],
+
+ "ink/signal-exit": ["[email protected]", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
+
+ "is-online/got": ["[email protected]", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ=="],
+
+ "jest-worker/supports-color": ["[email protected]", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="],
+
+ "json-schema-to-typescript/js-yaml": ["[email protected]", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
+
+ "katex/commander": ["[email protected]", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="],
+
+ "local-pkg/quansync": ["[email protected]", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="],
+
+ "log-symbols/is-unicode-supported": ["[email protected]", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="],
+
+ "memory-graph-playground/@types/node": ["@types/[email protected]", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="],
+
+ "memory-graph-playground/next": ["[email protected]", "", { "dependencies": { "@next/env": "16.0.3", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.0.3", "@next/swc-darwin-x64": "16.0.3", "@next/swc-linux-arm64-gnu": "16.0.3", "@next/swc-linux-arm64-musl": "16.0.3", "@next/swc-linux-x64-gnu": "16.0.3", "@next/swc-linux-x64-musl": "16.0.3", "@next/swc-win32-arm64-msvc": "16.0.3", "@next/swc-win32-x64-msvc": "16.0.3", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w=="],
+
+ "memory-graph-playground/react": ["[email protected]", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="],
+
+ "memory-graph-playground/react-dom": ["[email protected]", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ=="],
+
+ "memory-graph-playground/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "mermaid/uuid": ["[email protected]", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
+
+ "micromark-extension-mdxjs/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "micromatch/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "mimetext/mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "miniflare/sharp": ["[email protected]", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
+
+ "miniflare/ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="],
+
+ "minizlib/minipass": ["[email protected]", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
+
+ "mlly/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "mlly/pkg-types": ["[email protected]", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="],
+
+ "morgan/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "morgan/on-finished": ["[email protected]", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww=="],
+
+ "multimatch/minimatch": ["[email protected]", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
+
+ "next/postcss": ["[email protected]", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
+
+ "next-mdx-remote-client/react": ["[email protected]", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
+
+ "node-notifier/is-wsl": ["[email protected]", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+
+ "node-notifier/uuid": ["[email protected]", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="],
+
+ "npm-run-path/path-key": ["[email protected]", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
+
+ "openai/@types/node": ["@types/[email protected]", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],
+
+ "pac-proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "pac-proxy-agent/https-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
+
+ "parse-entities/@types/unist": ["@types/[email protected]", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+ "parse-json/json-parse-even-better-errors": ["[email protected]", "", {}, "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ=="],
+
+ "parse-json/type-fest": ["[email protected]", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="],
+
+ "postcss/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "postcss-load-config/lilconfig": ["[email protected]", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
+
+ "postcss-nested/postcss-selector-parser": ["[email protected]", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
+
+ "prop-types/react-is": ["[email protected]", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
+
+ "proper-lockfile/signal-exit": ["[email protected]", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
+
+ "proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "proxy-agent/https-proxy-agent": ["[email protected]", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
+
+ "proxy-agent/lru-cache": ["[email protected]", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
+
+ "public-ip/got": ["[email protected]", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ=="],
+
+ "publish-browser-extension/dotenv": ["[email protected]", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="],
+
+ "publish-browser-extension/form-data-encoder": ["[email protected]", "", {}, "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw=="],
+
+ "publish-browser-extension/formdata-node": ["[email protected]", "", {}, "sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg=="],
+
+ "publish-browser-extension/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "rc/ini": ["[email protected]", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="],
+
+ "rc/strip-json-comments": ["[email protected]", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="],
+
+ "react-promise-suspense/fast-deep-equal": ["[email protected]", "", {}, "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w=="],
+
+ "react-reconciler/scheduler": ["[email protected]", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="],
+
+ "readable-stream/safe-buffer": ["[email protected]", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
+
+ "recharts/eventemitter3": ["[email protected]", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="],
+
+ "rehype-stringify/hast-util-to-html": ["[email protected]", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
+
+ "restore-cursor/onetime": ["[email protected]", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
+
+ "rolldown/@rolldown/pluginutils": ["@rolldown/[email protected]", "", {}, "sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA=="],
+
+ "router/path-to-regexp": ["[email protected]", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="],
+
+ "safe-array-concat/isarray": ["[email protected]", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
+
+ "safe-push-apply/isarray": ["[email protected]", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
+
+ "schema-utils/ajv-formats": ["[email protected]", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
+
+ "send/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "send/mime": ["[email protected]", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
+
+ "set-value/is-plain-object": ["[email protected]", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="],
+
+ "simple-swizzle/is-arrayish": ["[email protected]", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="],
+
+ "slate-dom/tiny-invariant": ["[email protected]", "", {}, "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="],
+
+ "slate-react/tiny-invariant": ["[email protected]", "", {}, "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="],
+
+ "slice-ansi/is-fullwidth-code-point": ["[email protected]", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="],
+
+ "socket.io/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
+
+ "socket.io-adapter/ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="],
+
+ "socks-proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "stack-utils/escape-string-regexp": ["[email protected]", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="],
+
+ "stacktrace-parser/type-fest": ["[email protected]", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="],
+
+ "streamdown/lucide-react": ["[email protected]", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw=="],
+
+ "string-width-cjs/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "string-width-cjs/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "string_decoder/safe-buffer": ["[email protected]", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
+
+ "strip-ansi-cjs/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "strip-literal/js-tokens": ["[email protected]", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="],
+
+ "sucrase/commander": ["[email protected]", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
+
+ "sucrase/lines-and-columns": ["[email protected]", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
+
+ "supermemory-browser-extension/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "supermemory-mcp/supermemory": ["[email protected]", "", {}, "sha512-xMN05PQ8kTv8DuXa2qf8h/9LaRI7v1Kz3Tutt97JPq+PzhGabKLv5YVbSgqHiPX5yXcSUBVBNYPPbhAQMF6GYQ=="],
+
+ "supermemory-mcp/typescript": ["[email protected]", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "tar/minipass": ["[email protected]", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
+
+ "terser/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "terser/commander": ["[email protected]", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
+
+ "terser-webpack-plugin/@jridgewell/trace-mapping": ["@jridgewell/[email protected]", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "terser-webpack-plugin/terser": ["[email protected]", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw=="],
+
+ "topojson-client/commander": ["[email protected]", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
+
+ "type-is/mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "unimport/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "unimport/estree-walker": ["[email protected]", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "unimport/unplugin": ["[email protected]", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="],
+
+ "unplugin/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "unplugin/chokidar": ["[email protected]", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
+
+ "update-notifier/is-in-ci": ["[email protected]", "", { "bin": { "is-in-ci": "cli.js" } }, "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg=="],
+
+ "victory-vendor/d3-array": ["[email protected]", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="],
+
+ "vite/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
+
+ "vitest/tinyexec": ["[email protected]", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
+
+ "web-ext-run/@babel/runtime": ["@babel/[email protected]", "", {}, "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA=="],
+
+ "web-ext-run/pino": ["[email protected]", "", { "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg=="],
+
+ "webpack/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "webpack/es-module-lexer": ["[email protected]", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="],
+
+ "webpack/mime-types": ["[email protected]", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "which-builtin-type/isarray": ["[email protected]", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
+
+ "wrangler/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="],
+
+ "wrap-ansi-cjs/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "wrap-ansi-cjs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "wrap-ansi-cjs/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "wxt/dotenv": ["[email protected]", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="],
+
+ "wxt/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
+
+ "wxt/minimatch": ["[email protected]", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
+
+ "@ai-sdk/gateway/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@ai-sdk/openai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@ai-sdk/react/@ai-sdk/provider-utils/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Z8SPncMtS3RsoXITmT7NVwrAq6M44dmw0DoUOYJqNNtCu8iMWuxB8Nxsoqpa0uEEy9R1V1ZThJAXTYgjTUxl3w=="],
+
+ "@ai-sdk/react/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@ai-sdk/react/ai/@ai-sdk/gateway": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.0-beta.1", "@ai-sdk/provider-utils": "3.0.0-beta.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-v+LXXm8INLYAdxHnNMVAJ/B7k+Nejn5dCQMg/F8SRetB5dEQ4sbfimE+b6rawILJznnsy2fugUO1oFFXlUS5Yg=="],
+
+ "@ai-sdk/react/ai/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Z8SPncMtS3RsoXITmT7NVwrAq6M44dmw0DoUOYJqNNtCu8iMWuxB8Nxsoqpa0uEEy9R1V1ZThJAXTYgjTUxl3w=="],
+
+ "@aklinker1/rollup-plugin-visualizer/open/define-lazy-prop": ["[email protected]", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="],
+
+ "@aklinker1/rollup-plugin-visualizer/open/is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/open/is-wsl": ["[email protected]", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/yargs-parser": ["[email protected]", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/[email protected]", "", { "dependencies": { "tslib": "^1.11.1" } }, "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/@aws-crypto/util": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.398.0", "@aws-sdk/credential-provider-process": "3.398.0", "@aws-sdk/credential-provider-sso": "3.398.0", "@aws-sdk/credential-provider-web-identity": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/client-sso": "3.398.0", "@aws-sdk/token-providers": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/config-resolver/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/fetch-http-handler/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-content-length/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-endpoint/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-retry/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0" } }, "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/middleware-retry/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-http-handler/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0" } }, "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-waiter/@smithy/abort-controller": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw=="],
+
+ "@aws-sdk/client-cloudfront/fast-xml-parser/strnum": ["[email protected]", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/@aws-crypto/supports-web-crypto": ["@aws-crypto/[email protected]", "", { "dependencies": { "tslib": "^1.11.1" } }, "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/@aws-crypto/util": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/[email protected]", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js/tslib": ["[email protected]", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.398.0", "@aws-sdk/credential-provider-process": "3.398.0", "@aws-sdk/credential-provider-sso": "3.398.0", "@aws-sdk/credential-provider-web-identity": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/client-sso": "3.398.0", "@aws-sdk/token-providers": "3.398.0", "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-sdk/types": "3.398.0", "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.2.2", "tslib": "^2.5.0" } }, "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@smithy/credential-provider-imds": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-sts/@smithy/config-resolver/@smithy/util-config-provider": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ=="],
+
+ "@aws-sdk/client-sts/@smithy/config-resolver/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-sts/@smithy/fetch-http-handler/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-sts/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="],
+
+ "@aws-sdk/client-sts/@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-content-length/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-endpoint/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-retry/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-retry/@smithy/service-error-classification": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0" } }, "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ=="],
+
+ "@aws-sdk/client-sts/@smithy/middleware-retry/@smithy/util-middleware": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="],
+
+ "@aws-sdk/client-sts/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-sts/@smithy/node-config-provider/@smithy/shared-ini-file-loader": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="],
+
+ "@aws-sdk/client-sts/@smithy/node-http-handler/@smithy/abort-controller": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw=="],
+
+ "@aws-sdk/client-sts/@smithy/node-http-handler/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-sts/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client/@smithy/util-stream": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-hex-encoding": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA=="],
+
+ "@aws-sdk/client-sts/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA=="],
+
+ "@aws-sdk/client-sts/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-sts/@smithy/util-defaults-mode-browser/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-sts/@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w=="],
+
+ "@aws-sdk/client-sts/@smithy/util-defaults-mode-node/@smithy/property-provider": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="],
+
+ "@aws-sdk/client-sts/@smithy/util-retry/@smithy/service-error-classification": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/types": "^2.12.0" } }, "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ=="],
+
+ "@aws-sdk/client-sts/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-sts/fast-xml-parser/strnum": ["[email protected]", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4/@smithy/util-utf8": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
+
+ "@babel/helper-compilation-targets/lru-cache/yallist": ["[email protected]", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
+
+ "@dotenvx/dotenvx/execa/get-stream": ["[email protected]", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
+
+ "@dotenvx/dotenvx/execa/human-signals": ["[email protected]", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="],
+
+ "@dotenvx/dotenvx/execa/is-stream": ["[email protected]", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="],
+
+ "@dotenvx/dotenvx/execa/npm-run-path": ["[email protected]", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="],
+
+ "@dotenvx/dotenvx/execa/signal-exit": ["[email protected]", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
+
+ "@dotenvx/dotenvx/execa/strip-final-newline": ["[email protected]", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="],
+
+ "@dotenvx/dotenvx/which/isexe": ["[email protected]", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="],
+
+ "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="],
+
+ "@inquirer/core/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@inquirer/core/wrap-ansi/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@inquirer/core/wrap-ansi/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@isaacs/cliui/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
+
+ "@mintlify/cli/inquirer/@inquirer/prompts": ["@inquirer/[email protected]", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="],
+
+ "@mintlify/cli/inquirer/ansi-escapes": ["[email protected]", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="],
+
+ "@mintlify/cli/inquirer/run-async": ["[email protected]", "", {}, "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q=="],
+
+ "@mintlify/cli/yargs/cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "@mintlify/cli/yargs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@mintlify/cli/yargs/yargs-parser": ["[email protected]", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "@mintlify/common/remark-gfm/mdast-util-gfm": ["[email protected]", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="],
+
+ "@mintlify/common/tailwindcss/chokidar": ["[email protected]", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
+
+ "@mintlify/common/tailwindcss/glob-parent": ["[email protected]", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
+
+ "@mintlify/common/tailwindcss/jiti": ["[email protected]", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="],
+
+ "@mintlify/common/tailwindcss/postcss-selector-parser": ["[email protected]", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
+
+ "@mintlify/link-rot/unist-util-visit/@types/unist": ["@types/[email protected]", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+ "@mintlify/link-rot/unist-util-visit/unist-util-is": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="],
+
+ "@mintlify/link-rot/unist-util-visit/unist-util-visit-parents": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-darwin-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-darwin-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-darwin-arm64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-darwin-x64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-arm": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-s390x": ["@img/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linux-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linux-arm": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linux-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linux-s390x": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linux-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linuxmusl-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-linuxmusl-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-wasm32": ["@img/[email protected]", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
+
+ "@mintlify/prebuild/sharp/@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
+
+ "@mintlify/prebuild/unist-util-visit/@types/unist": ["@types/[email protected]", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+ "@mintlify/prebuild/unist-util-visit/unist-util-is": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="],
+
+ "@mintlify/prebuild/unist-util-visit/unist-util-visit-parents": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="],
+
+ "@mintlify/previewing/chokidar/readdirp": ["[email protected]", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
+
+ "@mintlify/previewing/express/body-parser": ["[email protected]", "", { "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" } }, "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw=="],
+
+ "@mintlify/previewing/express/cookie": ["[email protected]", "", {}, "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="],
+
+ "@mintlify/previewing/express/cookie-signature": ["[email protected]", "", {}, "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="],
+
+ "@mintlify/previewing/express/debug": ["[email protected]", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
+
+ "@mintlify/previewing/express/encodeurl": ["[email protected]", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
+
+ "@mintlify/previewing/express/finalhandler": ["[email protected]", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" } }, "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg=="],
+
+ "@mintlify/previewing/express/http-errors": ["[email protected]", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="],
+
+ "@mintlify/previewing/express/merge-descriptors": ["[email protected]", "", {}, "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="],
+
+ "@mintlify/previewing/express/path-to-regexp": ["[email protected]", "", {}, "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="],
+
+ "@mintlify/previewing/express/qs": ["[email protected]", "", { "dependencies": { "side-channel": "^1.0.4" } }, "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q=="],
+
+ "@mintlify/previewing/express/send": ["[email protected]", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg=="],
+
+ "@mintlify/previewing/express/serve-static": ["[email protected]", "", { "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.0" } }, "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g=="],
+
+ "@mintlify/previewing/express/statuses": ["[email protected]", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
+
+ "@mintlify/previewing/unist-util-visit/@types/unist": ["@types/[email protected]", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
+
+ "@mintlify/previewing/unist-util-visit/unist-util-is": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="],
+
+ "@mintlify/previewing/unist-util-visit/unist-util-visit-parents": ["[email protected]", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="],
+
+ "@mintlify/previewing/yargs/cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "@mintlify/previewing/yargs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@mintlify/previewing/yargs/yargs-parser": ["[email protected]", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "@mintlify/scraping/yargs/cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "@mintlify/scraping/yargs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@mintlify/scraping/yargs/yargs-parser": ["[email protected]", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "@modelcontextprotocol/sdk/express/accepts": ["[email protected]", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
+
+ "@modelcontextprotocol/sdk/express/body-parser": ["[email protected]", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
+
+ "@modelcontextprotocol/sdk/express/content-disposition": ["[email protected]", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="],
+
+ "@modelcontextprotocol/sdk/express/cookie": ["[email protected]", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
+
+ "@modelcontextprotocol/sdk/express/cookie-signature": ["[email protected]", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
+
+ "@modelcontextprotocol/sdk/express/finalhandler": ["[email protected]", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="],
+
+ "@modelcontextprotocol/sdk/express/fresh": ["[email protected]", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
+
+ "@modelcontextprotocol/sdk/express/merge-descriptors": ["[email protected]", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
+
+ "@modelcontextprotocol/sdk/express/send": ["[email protected]", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="],
+
+ "@modelcontextprotocol/sdk/express/serve-static": ["[email protected]", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="],
+
+ "@modelcontextprotocol/sdk/express/type-is": ["[email protected]", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
+
+ "@node-minify/core/glob/minimatch": ["[email protected]", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA=="],
+
+ "@node-minify/core/glob/minipass": ["[email protected]", "", {}, "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="],
+
+ "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/[email protected]", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="],
+
+ "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/[email protected]", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="],
+
+ "@opennextjs/aws/express/accepts": ["[email protected]", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
+
+ "@opennextjs/aws/express/body-parser": ["[email protected]", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
+
+ "@opennextjs/aws/express/content-disposition": ["[email protected]", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="],
+
+ "@opennextjs/aws/express/cookie": ["[email protected]", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
+
+ "@opennextjs/aws/express/cookie-signature": ["[email protected]", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
+
+ "@opennextjs/aws/express/finalhandler": ["[email protected]", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="],
+
+ "@opennextjs/aws/express/fresh": ["[email protected]", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
+
+ "@opennextjs/aws/express/merge-descriptors": ["[email protected]", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
+
+ "@opennextjs/aws/express/send": ["[email protected]", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="],
+
+ "@opennextjs/aws/express/serve-static": ["[email protected]", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="],
+
+ "@opennextjs/aws/express/type-is": ["[email protected]", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
+
+ "@opennextjs/cloudflare/glob/jackspeak": ["[email protected]", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="],
+
+ "@opennextjs/cloudflare/glob/minimatch": ["[email protected]", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
+
+ "@opennextjs/cloudflare/glob/path-scurry": ["[email protected]", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="],
+
+ "@puppeteer/browsers/yargs/cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "@puppeteer/browsers/yargs/string-width": ["[email protected]", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "@puppeteer/browsers/yargs/yargs-parser": ["[email protected]", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "@repo/web/@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ=="],
+
+ "@repo/web/ai/@ai-sdk/gateway": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.0-beta.1", "@ai-sdk/provider-utils": "3.0.0-beta.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-v+LXXm8INLYAdxHnNMVAJ/B7k+Nejn5dCQMg/F8SRetB5dEQ4sbfimE+b6rawILJznnsy2fugUO1oFFXlUS5Yg=="],
+
+ "@repo/web/ai/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Z8SPncMtS3RsoXITmT7NVwrAq6M44dmw0DoUOYJqNNtCu8iMWuxB8Nxsoqpa0uEEy9R1V1ZThJAXTYgjTUxl3w=="],
+
+ "@repo/web/ai/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.0-beta.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-4Dv/wiGZrvO6fI7P0yMLa4XZru0XW8LPibTObbkHBdweLUVGIze7aCfxxQeY44Uqcbl/h6/yBTkx2XmPtwf/Ow=="],
+
+ "@stoplight/spectral-core/minimatch/brace-expansion": ["[email protected]", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
+
+ "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/[email protected]", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng=="],
+
+ "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/openharmony-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
+
+ "@vanilla-extract/integration/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
+
+ "accepts/mime-types/mime-db": ["[email protected]", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "agents/@modelcontextprotocol/sdk/express": ["[email protected]", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="],
+
+ "agents/@modelcontextprotocol/sdk/zod": ["[email protected]", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="],
+
+ "ai-gateway-provider/ai/@ai-sdk/react": ["@ai-sdk/[email protected]", "", { "dependencies": { "@ai-sdk/provider-utils": "2.2.8", "@ai-sdk/ui-utils": "1.2.11", "swr": "^2.2.5", "throttleit": "2.1.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["zod"] }, "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g=="],
+
+ "ai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "ansi-align/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "ansi-align/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "better-opn/open/define-lazy-prop": ["[email protected]", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="],
+
+ "better-opn/open/is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
+
+ "better-opn/open/is-wsl": ["[email protected]", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+
+ "body-parser/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "c12/chokidar/readdirp": ["[email protected]", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="],
+
+ "chrome-launcher/is-wsl/is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
+
+ "cli-truncate/slice-ansi/is-fullwidth-code-point": ["[email protected]", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="],
+
+ "cloudflare/@types/node/undici-types": ["[email protected]", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
+
+ "compression/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "cosmiconfig/parse-json/lines-and-columns": ["[email protected]", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
+
+ "cytoscape-fcose/cose-base/layout-base": ["[email protected]", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="],
+
+ "d3-sankey/d3-shape/d3-path": ["[email protected]", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="],
+
+ "enquirer/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "express/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "favicons/sharp/@img/sharp-darwin-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
+
+ "favicons/sharp/@img/sharp-darwin-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
+
+ "favicons/sharp/@img/sharp-libvips-darwin-arm64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
+
+ "favicons/sharp/@img/sharp-libvips-darwin-x64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
+
+ "favicons/sharp/@img/sharp-libvips-linux-arm": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
+
+ "favicons/sharp/@img/sharp-libvips-linux-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
+
+ "favicons/sharp/@img/sharp-libvips-linux-s390x": ["@img/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
+
+ "favicons/sharp/@img/sharp-libvips-linux-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
+
+ "favicons/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
+
+ "favicons/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
+
+ "favicons/sharp/@img/sharp-linux-arm": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
+
+ "favicons/sharp/@img/sharp-linux-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
+
+ "favicons/sharp/@img/sharp-linux-s390x": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
+
+ "favicons/sharp/@img/sharp-linux-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
+
+ "favicons/sharp/@img/sharp-linuxmusl-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
+
+ "favicons/sharp/@img/sharp-linuxmusl-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
+
+ "favicons/sharp/@img/sharp-wasm32": ["@img/[email protected]", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
+
+ "favicons/sharp/@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
+
+ "favicons/sharp/@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
+
+ "finalhandler/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "find-process/chalk/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "form-data/mime-types/mime-db": ["[email protected]", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "front-matter/js-yaml/argparse": ["[email protected]", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
+
+ "fx-runner/which/isexe": ["[email protected]", "", {}, "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw=="],
+
+ "gaxios/https-proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "html-to-text/htmlparser2/entities": ["[email protected]", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
+ "ink/cli-cursor/restore-cursor": ["[email protected]", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg=="],
+
+ "ink/react-reconciler/scheduler": ["[email protected]", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="],
+
+ "is-online/got/@sindresorhus/is": ["@sindresorhus/[email protected]", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="],
+
+ "is-online/got/form-data-encoder": ["[email protected]", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="],
+
+ "is-online/got/get-stream": ["[email protected]", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
+
+ "memory-graph-playground/@types/node/undici-types": ["[email protected]", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
+
+ "memory-graph-playground/next/@next/env": ["@next/[email protected]", "", {}, "sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ=="],
+
+ "memory-graph-playground/next/@next/swc-darwin-arm64": ["@next/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg=="],
+
+ "memory-graph-playground/next/@next/swc-darwin-x64": ["@next/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg=="],
+
+ "memory-graph-playground/next/@next/swc-linux-arm64-gnu": ["@next/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A=="],
+
+ "memory-graph-playground/next/@next/swc-linux-arm64-musl": ["@next/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg=="],
+
+ "memory-graph-playground/next/@next/swc-linux-x64-gnu": ["@next/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ=="],
+
+ "memory-graph-playground/next/@next/swc-linux-x64-musl": ["@next/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA=="],
+
+ "memory-graph-playground/next/@next/swc-win32-arm64-msvc": ["@next/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g=="],
+
+ "memory-graph-playground/next/@next/swc-win32-x64-msvc": ["@next/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg=="],
+
+ "memory-graph-playground/next/postcss": ["[email protected]", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
+
+ "mimetext/mime-types/mime-db": ["[email protected]", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "miniflare/sharp/@img/sharp-darwin-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
+
+ "miniflare/sharp/@img/sharp-darwin-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
+
+ "miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
+
+ "miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
+
+ "miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
+
+ "miniflare/sharp/@img/sharp-linux-arm": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
+
+ "miniflare/sharp/@img/sharp-linux-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
+
+ "miniflare/sharp/@img/sharp-linux-s390x": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
+
+ "miniflare/sharp/@img/sharp-linux-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
+
+ "miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
+
+ "miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
+
+ "miniflare/sharp/@img/sharp-wasm32": ["@img/[email protected]", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
+
+ "miniflare/sharp/@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
+
+ "miniflare/sharp/@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
+
+ "mlly/pkg-types/confbox": ["[email protected]", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="],
+
+ "morgan/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "multimatch/minimatch/brace-expansion": ["[email protected]", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
+
+ "next/postcss/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "node-notifier/is-wsl/is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
+
+ "openai/@types/node/undici-types": ["[email protected]", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
+
+ "public-ip/got/@sindresorhus/is": ["@sindresorhus/[email protected]", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="],
+
+ "public-ip/got/form-data-encoder": ["[email protected]", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="],
+
+ "public-ip/got/get-stream": ["[email protected]", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
+
+ "send/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "string-width-cjs/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "terser-webpack-plugin/terser/acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "terser-webpack-plugin/terser/commander": ["[email protected]", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
+
+ "type-is/mime-types/mime-db": ["[email protected]", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "unimport/unplugin/webpack-virtual-modules": ["[email protected]", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="],
+
+ "unplugin/chokidar/readdirp": ["[email protected]", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
+
+ "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
+
+ "vite/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
+
+ "vite/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
+
+ "vite/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
+
+ "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
+
+ "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
+
+ "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
+
+ "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
+
+ "vite/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
+
+ "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
+
+ "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
+
+ "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
+
+ "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
+
+ "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
+
+ "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
+
+ "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
+
+ "vite/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
+
+ "vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
+
+ "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
+
+ "vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
+
+ "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
+
+ "vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
+
+ "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
+
+ "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
+
+ "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
+
+ "vite/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
+
+ "webpack/mime-types/mime-db": ["[email protected]", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="],
+
+ "wrangler/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="],
+
+ "wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ=="],
+
+ "wrangler/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q=="],
+
+ "wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg=="],
+
+ "wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g=="],
+
+ "wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw=="],
+
+ "wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g=="],
+
+ "wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ=="],
+
+ "wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ=="],
+
+ "wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw=="],
+
+ "wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg=="],
+
+ "wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg=="],
+
+ "wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA=="],
+
+ "wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ=="],
+
+ "wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w=="],
+
+ "wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw=="],
+
+ "wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w=="],
+
+ "wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA=="],
+
+ "wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ=="],
+
+ "wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A=="],
+
+ "wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA=="],
+
+ "wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg=="],
+
+ "wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ=="],
+
+ "wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg=="],
+
+ "wrap-ansi-cjs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "wxt/esbuild/@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
+
+ "wxt/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
+
+ "wxt/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
+
+ "wxt/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
+
+ "wxt/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
+
+ "wxt/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
+
+ "wxt/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
+
+ "wxt/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
+
+ "wxt/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
+
+ "wxt/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
+
+ "wxt/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
+
+ "wxt/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
+
+ "wxt/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
+
+ "wxt/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
+
+ "wxt/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
+
+ "wxt/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
+
+ "wxt/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
+
+ "wxt/esbuild/@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
+
+ "wxt/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
+
+ "wxt/esbuild/@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
+
+ "wxt/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
+
+ "wxt/esbuild/@esbuild/openharmony-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
+
+ "wxt/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
+
+ "wxt/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
+
+ "wxt/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
+
+ "wxt/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/cliui/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^2.0.5", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/hash-node/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-stream/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-cloudfront/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/[email protected]", "", { "dependencies": { "@smithy/types": "^4.11.0", "tslib": "^2.6.2" } }, "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/protocol-http": "^2.0.5", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ=="],
+
+ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/[email protected]", "", { "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.398.0", "@aws-sdk/middleware-logger": "3.398.0", "@aws-sdk/middleware-recursion-detection": "3.398.0", "@aws-sdk/middleware-user-agent": "3.398.0", "@aws-sdk/types": "3.398.0", "@aws-sdk/util-endpoints": "3.398.0", "@aws-sdk/util-user-agent-browser": "3.398.0", "@aws-sdk/util-user-agent-node": "3.398.0", "@smithy/config-resolver": "^2.0.5", "@smithy/fetch-http-handler": "^2.0.5", "@smithy/hash-node": "^2.0.5", "@smithy/invalid-dependency": "^2.0.5", "@smithy/middleware-content-length": "^2.0.5", "@smithy/middleware-endpoint": "^2.0.5", "@smithy/middleware-retry": "^2.0.5", "@smithy/middleware-serde": "^2.0.5", "@smithy/middleware-stack": "^2.0.0", "@smithy/node-config-provider": "^2.0.5", "@smithy/node-http-handler": "^2.0.5", "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^2.0.5", "@smithy/shared-ini-file-loader": "^2.0.0", "@smithy/smithy-client": "^2.0.5", "@smithy/types": "^2.2.2", "@smithy/url-parser": "^2.0.5", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.5", "@smithy/util-defaults-mode-node": "^2.0.5", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ=="],
+
+ "@aws-sdk/client-sts/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="],
+
+ "@aws-sdk/client-sts/@smithy/hash-node/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-sts/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="],
+
+ "@aws-sdk/client-sts/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/client-sts/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@aws-sdk/middleware-signing/@smithy/signature-v4/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/[email protected]", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+
+ "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/cli/inquirer/ansi-escapes/type-fest": ["[email protected]", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="],
+
+ "@mintlify/cli/yargs/cliui/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@mintlify/cli/yargs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@mintlify/cli/yargs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@mintlify/cli/yargs/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@mintlify/common/tailwindcss/chokidar/glob-parent": ["[email protected]", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "@mintlify/common/tailwindcss/chokidar/readdirp": ["[email protected]", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
+
+ "@mintlify/previewing/chokidar/readdirp/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "@mintlify/previewing/express/body-parser/iconv-lite": ["[email protected]", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
+
+ "@mintlify/previewing/express/body-parser/raw-body": ["[email protected]", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig=="],
+
+ "@mintlify/previewing/express/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
+
+ "@mintlify/previewing/express/send/mime": ["[email protected]", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
+
+ "@mintlify/previewing/yargs/cliui/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@mintlify/previewing/yargs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@mintlify/previewing/yargs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@mintlify/previewing/yargs/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@mintlify/scraping/yargs/cliui/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@mintlify/scraping/yargs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@mintlify/scraping/yargs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@mintlify/scraping/yargs/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@modelcontextprotocol/sdk/express/accepts/negotiator": ["[email protected]", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
+
+ "@modelcontextprotocol/sdk/express/type-is/media-typer": ["[email protected]", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
+
+ "@opennextjs/aws/express/accepts/negotiator": ["[email protected]", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
+
+ "@opennextjs/aws/express/type-is/media-typer": ["[email protected]", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
+
+ "@opennextjs/cloudflare/glob/path-scurry/lru-cache": ["[email protected]", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="],
+
+ "@puppeteer/browsers/yargs/cliui/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@puppeteer/browsers/yargs/cliui/wrap-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@puppeteer/browsers/yargs/string-width/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "@puppeteer/browsers/yargs/string-width/strip-ansi": ["[email protected]", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@repo/web/@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@repo/web/ai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/[email protected]", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "agents/@modelcontextprotocol/sdk/express/accepts": ["[email protected]", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
+
+ "agents/@modelcontextprotocol/sdk/express/body-parser": ["[email protected]", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
+
+ "agents/@modelcontextprotocol/sdk/express/content-disposition": ["[email protected]", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="],
+
+ "agents/@modelcontextprotocol/sdk/express/cookie": ["[email protected]", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
+
+ "agents/@modelcontextprotocol/sdk/express/cookie-signature": ["[email protected]", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
+
+ "agents/@modelcontextprotocol/sdk/express/finalhandler": ["[email protected]", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="],
+
+ "agents/@modelcontextprotocol/sdk/express/fresh": ["[email protected]", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
+
+ "agents/@modelcontextprotocol/sdk/express/merge-descriptors": ["[email protected]", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
+
+ "agents/@modelcontextprotocol/sdk/express/send": ["[email protected]", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="],
+
+ "agents/@modelcontextprotocol/sdk/express/serve-static": ["[email protected]", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="],
+
+ "agents/@modelcontextprotocol/sdk/express/type-is": ["[email protected]", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
+
+ "ansi-align/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "memory-graph-playground/next/postcss/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "unplugin/chokidar/readdirp/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/cliui/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/cliui/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@aklinker1/rollup-plugin-visualizer/yargs/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types/tslib": ["[email protected]", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA=="],
+
+ "@aws-sdk/client-cloudfront/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types/tslib": ["[email protected]", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-browser/@aws-crypto/util/@aws-sdk/types/tslib": ["[email protected]", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA=="],
+
+ "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util/@aws-sdk/types/tslib": ["[email protected]", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "@aws-sdk/client-sts/@smithy/smithy-client/@smithy/util-stream/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/[email protected]", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
+
+ "@mintlify/cli/yargs/cliui/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/cli/yargs/cliui/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@mintlify/cli/yargs/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/common/tailwindcss/chokidar/readdirp/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "@mintlify/previewing/yargs/cliui/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/previewing/yargs/cliui/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@mintlify/previewing/yargs/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/scraping/yargs/cliui/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@mintlify/scraping/yargs/cliui/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@mintlify/scraping/yargs/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@puppeteer/browsers/yargs/cliui/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "@puppeteer/browsers/yargs/cliui/wrap-ansi/ansi-styles": ["[email protected]", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "@puppeteer/browsers/yargs/string-width/strip-ansi/ansi-regex": ["[email protected]", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "agents/@modelcontextprotocol/sdk/express/accepts/negotiator": ["[email protected]", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
+
+ "agents/@modelcontextprotocol/sdk/express/type-is/media-typer": ["[email protected]", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
+ }
+}
diff --git a/packages/ai-sdk/package.json b/packages/ai-sdk/package.json
index f3800c1e..5e59fa5e 100644
--- a/packages/ai-sdk/package.json
+++ b/packages/ai-sdk/package.json
@@ -4,7 +4,7 @@
"version": "1.0.8",
"scripts": {
"build": "tsdown",
- "dev": "tsdown --watch",
+ "dev": "tsdown --watch --ignore-watch .turbo",
"check-types": "tsc --noEmit",
"test": "vitest",
"test:watch": "vitest --watch"
diff --git a/packages/lib/api.ts b/packages/lib/api.ts
index bfdc3ac0..657067a1 100644
--- a/packages/lib/api.ts
+++ b/packages/lib/api.ts
@@ -159,6 +159,10 @@ export const apiSchema = createSchema({
output: MigrateMCPResponseSchema,
},
+ "@get/documents/:id": {
+ output: z.any(),
+ },
+
// Delete a memory
"@delete/documents/:id": {
output: z.any(), // 204 No-Content
diff --git a/packages/lib/package.json b/packages/lib/package.json
index 7b548984..33db50d6 100644
--- a/packages/lib/package.json
+++ b/packages/lib/package.json
@@ -7,6 +7,8 @@
"@ai-sdk/anthropic": "^1.2.12",
"@ai-sdk/google": "^1.2.22",
"@ai-sdk/groq": "^1.2.9",
+ "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query-devtools": "^5.84.2",
"ai-gateway-provider": "^0.0.11"
}
}
diff --git a/packages/lib/posthog.tsx b/packages/lib/posthog.tsx
index 0c436e1e..438cef64 100644
--- a/packages/lib/posthog.tsx
+++ b/packages/lib/posthog.tsx
@@ -73,7 +73,7 @@ export function PostHogProvider({ children }: { children: React.ReactNode }) {
return (
<>
<Suspense fallback={null}>
- <PostHogPageTracking />
+ {process.env.NODE_ENV === "production" && <PostHogPageTracking />}
</Suspense>
{children}
</>
diff --git a/packages/lib/types.ts b/packages/lib/types.ts
new file mode 100644
index 00000000..024c4811
--- /dev/null
+++ b/packages/lib/types.ts
@@ -0,0 +1,12 @@
+/**
+ * Common TypeScript types shared across the application
+ */
+
+export interface Project {
+ id: string
+ name: string
+ containerTag: string
+ createdAt: string
+ updatedAt: string
+ isExperimental?: boolean
+}
diff --git a/packages/tools/package.json b/packages/tools/package.json
index 346a3e40..aba90b46 100644
--- a/packages/tools/package.json
+++ b/packages/tools/package.json
@@ -5,7 +5,7 @@
"description": "Memory tools for AI SDK and OpenAI function calling with supermemory",
"scripts": {
"build": "tsdown",
- "dev": "tsdown --watch",
+ "dev": "tsdown --watch --ignore-watch .turbo",
"check-types": "tsc --noEmit",
"test": "vitest --testTimeout 100000",
"test:watch": "vitest --watch --testTimeout 100000"
diff --git a/packages/ui/assets/Logo.tsx b/packages/ui/assets/Logo.tsx
index bb8800c8..6741acf9 100644
--- a/packages/ui/assets/Logo.tsx
+++ b/packages/ui/assets/Logo.tsx
@@ -16,7 +16,7 @@ export const Logo = ({
<title>supermemory Logo</title>
<path
d="M205.864 66.263h-76.401V0h-24.684v71.897c0 7.636 3.021 14.97 8.391 20.373l62.383 62.777 17.454-17.564-46.076-46.365h58.948v-24.84l-.015-.015ZM12.872 30.517l46.075 46.365H0v24.84h76.4v66.264h24.685V96.089c0-7.637-3.021-14.97-8.39-20.374l-62.37-62.762-17.453 17.564Z"
- fill="currentColor"
+ fill="#ffffff"
/>
</svg>
);
@@ -49,3 +49,267 @@ export const LogoFull = ({
</svg>
);
};
+
+export const GradientLogo = ({ className = "" }: { className?: string }) => {
+ return (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="65"
+ height="53"
+ viewBox="0 0 65 53"
+ fill="none"
+ className={className}
+ >
+ <title>Gradient supermemory logo</title>
+ <g clipPath="url(#clip0_503_43779)">
+ <path
+ d="M64.1607 20.7042H40.3439V0.00268555H32.6488V22.4642C32.6488 24.8499 33.5906 27.141 35.2645 28.8291L54.7116 48.4414L60.1526 42.9542L45.7893 28.4691H64.1651V20.7088L64.1607 20.7042Z"
+ fill="url(#paint0_linear_503_43779)"
+ />
+ <path
+ d="M3.9992 9.536L18.3626 24.0213H-0.0134277V31.7816H23.8034V52.483H31.4984V30.0216C31.4984 27.6358 30.5567 25.3446 28.8827 23.6567L9.44012 4.0489L3.9992 9.536Z"
+ fill="url(#paint1_linear_503_43779)"
+ />
+ </g>
+ <defs>
+ <linearGradient
+ id="paint0_linear_503_43779"
+ x1="3.272"
+ y1="-0.0520011"
+ x2="122.975"
+ y2="9.51098"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <linearGradient
+ id="paint1_linear_503_43779"
+ x1="3.272"
+ y1="-0.0520011"
+ x2="122.975"
+ y2="9.51098"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <clipPath id="clip0_503_43779">
+ <rect
+ width="64.732"
+ height="52.4854"
+ fill="white"
+ transform="translate(-0.0136719)"
+ />
+ </clipPath>
+ </defs>
+ </svg>
+ );
+};
+
+export const LogoBgGradient = ({ className = "" }: { className?: string }) => {
+ return (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="182"
+ height="184"
+ viewBox="0 0 182 184"
+ fill="none"
+ className={className}
+ >
+ <title>Logo background gradient</title>
+ <g opacity="0.7">
+ <g filter="url(#filter0_f_503_43757)">
+ <ellipse
+ cx="14.2835"
+ cy="24.7691"
+ rx="14.2835"
+ ry="24.7691"
+ transform="matrix(1 0 0 -1 86.3853 115.758)"
+ fill="#1410FF"
+ />
+ </g>
+ <g filter="url(#filter1_f_503_43757)">
+ <ellipse
+ cx="80.5032"
+ cy="92.8882"
+ rx="14.2835"
+ ry="24.7691"
+ transform="rotate(-180 80.5032 92.8882)"
+ fill="#1410FF"
+ />
+ </g>
+ <g filter="url(#filter2_f_503_43757)">
+ <ellipse
+ cx="23.4137"
+ cy="11.8923"
+ rx="23.4137"
+ ry="11.8923"
+ transform="matrix(0.979973 -0.199127 -0.12394 -0.99229 69.9859 107.485)"
+ fill="#0091FF"
+ />
+ </g>
+ <g filter="url(#filter3_f_503_43757)">
+ <ellipse
+ cx="9.9778"
+ cy="7.53189"
+ rx="9.9778"
+ ry="7.53189"
+ transform="matrix(0.829871 -0.557955 -0.381948 -0.924183 98.8062 105.408)"
+ fill="#0099FF"
+ />
+ </g>
+ <g filter="url(#filter4_f_503_43757)">
+ <ellipse
+ cx="9.9778"
+ cy="7.53189"
+ rx="9.9778"
+ ry="7.53189"
+ transform="matrix(-0.829871 -0.557955 0.381948 -0.924184 82.4371 105.912)"
+ fill="#0099FF"
+ />
+ </g>
+ <g filter="url(#filter5_f_503_43757)">
+ <ellipse
+ cx="5.38795"
+ cy="10.704"
+ rx="5.38795"
+ ry="10.704"
+ transform="matrix(-3.03601e-08 -1 -1 5.00629e-08 99.5963 84.5005)"
+ fill="#47A8FD"
+ />
+ </g>
+ </g>
+ <defs>
+ <filter
+ id="filter0_f_503_43757"
+ x="20.1657"
+ y="9.15527e-05"
+ width="161.006"
+ height="181.977"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="33.1098"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ <filter
+ id="filter1_f_503_43757"
+ x="3.05176e-05"
+ y="1.89951"
+ width="161.006"
+ height="181.977"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="33.1098"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ <filter
+ id="filter2_f_503_43757"
+ x="18.7991"
+ y="28.6653"
+ width="145.315"
+ height="124.713"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="24.8324"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ <filter
+ id="filter3_f_503_43757"
+ x="54.0543"
+ y="42.579"
+ width="100.311"
+ height="100.602"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="20.6936"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ <filter
+ id="filter4_f_503_43757"
+ x="26.8781"
+ y="43.0827"
+ width="100.311"
+ height="100.602"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="20.6936"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ <filter
+ id="filter5_f_503_43757"
+ x="28.5235"
+ y="24.0599"
+ width="120.737"
+ height="110.105"
+ filterUnits="userSpaceOnUse"
+ colorInterpolationFilters="sRGB"
+ >
+ <feFlood floodOpacity="0" result="BackgroundImageFix" />
+ <feBlend
+ mode="normal"
+ in="SourceGraphic"
+ in2="BackgroundImageFix"
+ result="shape"
+ />
+ <feGaussianBlur
+ stdDeviation="24.8324"
+ result="effect1_foregroundBlur_503_43757"
+ />
+ </filter>
+ </defs>
+ </svg>
+ );
+};
diff --git a/packages/ui/assets/icons.tsx b/packages/ui/assets/icons.tsx
index 5383f690..c2ae59fc 100644
--- a/packages/ui/assets/icons.tsx
+++ b/packages/ui/assets/icons.tsx
@@ -194,15 +194,171 @@ export const PDF = ({ className }: { className?: string }) => (
<title>PDF</title>
<path
d="M3 13h.86v-.9h.39c.62 0 1.14-.45 1.14-1.06s-.5-1.05-1.14-1.05H3v3Zm.86-1.59v-.72h.3c.2 0 .37.13.37.35s-.16.36-.37.36h-.3ZM6.19 13h1.19c1 0 1.62-.59 1.62-1.52C9 10.61 8.38 10 7.38 10H6.19zm.86-.71V10.7h.29c.33 0 .78.16.78.78c0 .65-.45.81-.78.81zM10 13h.86v-1.07h1.06v-.69h-1.06v-.54h1.21v-.69h-2.06v3Z"
- fill="currentColor"
+ fill="#DC2626"
/>
<path
d="M12.5 16h-10c-.83 0-1.5-.67-1.5-1.5v-13C1 .67 1.67 0 2.5 0h7.09c.4 0 .78.16 1.06.44l2.91 2.91c.28.28.44.66.44 1.06V14.5c0 .83-.67 1.5-1.5 1.5M2.5 1c-.28 0-.5.22-.5.5v13c0 .28.22.5.5.5h10c.28 0 .5-.22.5-.5V4.41a.47.47 0 0 0-.15-.35L9.94 1.15A.5.5 0 0 0 9.59 1z"
- fill="currentColor"
+ fill="#DC2626"
/>
<path
d="M13.38 5h-2.91C9.66 5 9 4.34 9 3.53V.62c0-.28.22-.5.5-.5s.5.22.5.5v2.91c0 .26.21.47.47.47h2.91c.28 0 .5.22.5.5s-.22.5-.5.5"
- fill="currentColor"
+ fill="#DC2626"
/>
</svg>
);
+
+export const SyncLogoIcon = ({ className }: { className?: string }) => {
+ return (
+ <svg
+ width="11"
+ height="9"
+ viewBox="0 0 11 9"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>Sync Logo</title>
+ <g clipPath="url(#clip0_344_4856)">
+ <path
+ d="M10.596 3.41884H6.66329V0.000488281H5.39264V3.70946C5.39264 4.10339 5.54815 4.48172 5.82456 4.76047L9.03576 7.99894L9.9342 7.09287L7.56245 4.70102H10.5968V3.41959L10.596 3.41884Z"
+ fill="url(#paint0_linear_344_4856)"
+ />
+ <path
+ d="M0.662587 1.57476L3.03434 3.96665H0V5.24807H3.93276V8.66641H5.20341V4.95745C5.20341 4.56349 5.0479 4.18516 4.77149 3.90644L1.56102 0.668701L0.662587 1.57476Z"
+ fill="url(#paint1_linear_344_4856)"
+ />
+ </g>
+ <defs>
+ <linearGradient
+ id="paint0_linear_344_4856"
+ x1="5.65905"
+ y1="-0.00784643"
+ x2="15.4099"
+ y2="0.406611"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <linearGradient
+ id="paint1_linear_344_4856"
+ x1="0.266373"
+ y1="0.660367"
+ x2="10.0159"
+ y2="1.07475"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <clipPath id="clip0_344_4856">
+ <rect width="10.6889" height="8.66667" fill="white" />
+ </clipPath>
+ </defs>
+ </svg>
+ );
+};
+
+export const MCPIcon = ({ className }: { className?: string }) => {
+ return (
+ <svg
+ width="22"
+ height="7"
+ viewBox="0 0 22 7"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ className={className}
+ >
+ <title>Model Context Protocol</title>
+ <path
+ d="M0 6.86538V0.134615H2.54399L3.80042 6H3.98732L5.24374 0.134615H7.78774V6.86538H6.45863V1.06731H6.27173L5.02569 6.86538H2.76205L1.51601 1.06731H1.32911V6.86538H0Z"
+ fill="url(#paint0_linear_336_3565)"
+ />
+ <path
+ d="M11.9187 7C11.0188 7 10.3058 6.76923 9.7797 6.30769C9.25359 5.83974 8.99054 5.17308 8.99054 4.30769V2.69231C8.99054 1.82692 9.25359 1.16346 9.7797 0.701923C10.3058 0.233974 11.0188 0 11.9187 0C12.8117 0 13.5005 0.227564 13.9851 0.682693C14.4766 1.13141 14.7223 1.75 14.7223 2.53846V2.59615H13.3724V2.5C13.3724 2.10256 13.2513 1.77564 13.009 1.51923C12.7737 1.26282 12.4102 1.13462 11.9187 1.13462C11.4342 1.13462 11.0534 1.27244 10.7765 1.54808C10.4996 1.82372 10.3612 2.19872 10.3612 2.67308V4.32692C10.3612 4.79487 10.4996 5.16987 10.7765 5.45192C11.0534 5.72756 11.4342 5.86539 11.9187 5.86539C12.4102 5.86539 12.7737 5.73718 13.009 5.48077C13.2513 5.21795 13.3724 4.89103 13.3724 4.5V4.32692H14.7223V4.46154C14.7223 5.25 14.4766 5.8718 13.9851 6.32692C13.5005 6.77564 12.8117 7 11.9187 7Z"
+ fill="url(#paint1_linear_336_3565)"
+ />
+ <path
+ d="M15.8391 6.86538V0.134615H18.8296C19.2865 0.134615 19.688 0.221154 20.0341 0.394231C20.3872 0.560898 20.6606 0.798077 20.8544 1.10577C21.0552 1.41346 21.1556 1.77885 21.1556 2.20192V2.33654C21.1556 2.75321 21.0517 3.11859 20.844 3.43269C20.6433 3.74038 20.3664 3.98077 20.0134 4.15385C19.6672 4.32051 19.2727 4.40385 18.8296 4.40385H17.2098V6.86538H15.8391ZM17.2098 3.25H18.6946C19.02 3.25 19.283 3.16667 19.4838 3C19.6845 2.83333 19.7849 2.60577 19.7849 2.31731V2.22115C19.7849 1.93269 19.6845 1.70513 19.4838 1.53846C19.283 1.37179 19.02 1.28846 18.6946 1.28846H17.2098V3.25Z"
+ fill="url(#paint2_linear_336_3565)"
+ />
+ <defs>
+ <linearGradient
+ id="paint0_linear_336_3565"
+ x1="1.08299"
+ y1="-0.00729429"
+ x2="39.3036"
+ y2="7.53871"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <linearGradient
+ id="paint1_linear_336_3565"
+ x1="1.08299"
+ y1="-0.00729429"
+ x2="39.3036"
+ y2="7.53871"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ <linearGradient
+ id="paint2_linear_336_3565"
+ x1="1.08299"
+ y1="-0.00729429"
+ x2="39.3036"
+ y2="7.53871"
+ gradientUnits="userSpaceOnUse"
+ >
+ <stop stopColor="#369BFD" />
+ <stop offset="0.41" stopColor="#36FDFD" />
+ <stop offset="0.79" stopColor="#36FDB5" />
+ </linearGradient>
+ </defs>
+ </svg>
+ );
+};
+
+export const ClaudeDesktopIcon = ({ className }: { className?: string }) => {
+ return (
+ <svg
+ width="12"
+ height="12"
+ viewBox="0 0 12 12"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlnsXlink="http://www.w3.org/1999/xlink"
+ className={className}
+ >
+ <title>Claude Desktop</title>
+ <rect width="12" height="12" fill="url(#pattern0_336_3533)" />
+ <defs>
+ <pattern
+ id="pattern0_336_3533"
+ patternContentUnits="objectBoundingBox"
+ width="1"
+ height="1"
+ >
+ <use
+ xlinkHref="#image0_336_3533"
+ transform="translate(-0.181818 -0.136364) scale(0.0050505)"
+ />
+ </pattern>
+ <image
+ id="image0_336_3533"
+ width="252"
+ height="252"
+ preserveAspectRatio="none"
+ xlinkHref="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAAD8CAYAAABTq8lnAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAB5USURBVHgB7Z1/kFzVdefPua+n54c0kpD4jbARoN8yzq4dGwhZftixWf9I8G5kacB2FHsDTmWTXW8Ckljv0uzaRuBKeTeprS3zj4mLgMSkal3eH4kdQwljWMD4B45AmtGvAWQkGSSNkDTTM9N9T06PFHzPnfH09ExPa2bu91M1qM7h3vded7/ve++cd++5RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJrCBGqia+O6fykiN4c+ZvdpY5OcEJKTtg0/YjYk8tSy+x/7Ps0g9hQ+fT4NDp4f+k4N5veHdm5ucWh1oXOQwLTEEQAgGSB4ABICggcgIRDDV2HPxvXXhnaZ5MP6z4dDHxNfFdoav1diWBvHMv9DaHqRx1paW7eFviWFh3ppGtF15/rfDG3nZI1+2DWhr0z8amizoxfy+ZYfhb7p9rlSJkdgbNhfY0ziq0Xo/aFPBR73ah2xHZGbQjMj+lmxWFwQtZpWwnDsrwttT/wB/agfCH3M8prpJPQN/Vx7o01B8NMEPNIDkBAQPAAJAcEDkBCI4avgxX3OOJjOpZExe80I069nIn8YuTfSWWJ/YcOCOKegicUvV+0odKl18MdZJPLRZwlMC3CHByAhIHgAEgKCByAhEMNXg/mN0NR37m1UF/gizQS8J/RoHN0S2pdRT4kL20vUAMpDxXbK6GLjHLnn6gO1hIaco5MEpiUQfFW8Ebye8edOPmU3jIpLFlpXrxF8D11WpNFkNwWIz9qZyhdH7omMxBwUT6cITEvwSA9AQkDwACQEBA9AQiCGr4Jn/mZos9B6jXhX0WQRqcTrJmYfLLb8+9B2VNyu/2ynhuDPYz/5z8Ush0nszMBGIoWCuYkdPrm39biUzGSmc9udmcm4cOHCAf6TvxygBMAdHoCEgOABSAgIHoCEQAxfjSzXFZpcLu0V4ldMG5F3Un34NbNZ4q7H1q7NQt8nOzvLNAWUy2WXKaHPe08ToOgoO0YNQL5+e9PPdvfnQ193X9fvhjZnch6TnBf6jhbFfIdvHjj8/Mt3f+q50LfqKw8fpFkIBF+FFV962Ai+e/O6fUxkBC9EUyR4euryc86Jn8KmRPBMzpGXSZ8PQq5fhBoi+IrY25qKZuSj9+5TZI6HL9d/Ljc+sUOnhPnr4kuvRJuflYLHIz0ACQHBA5AQEDwACYEYvkZy7P6fBrymDPNQ2f8kasY0kYknI5N/75u74NjvRL6/oSlAo9pzPMnlNGnkyMDQYDdNAc98Ya0ZQNOSG7pdY/bPR82WWbP6VCdm/ngT0XtD3/7CLR+0rRYUlxQeKtIMB3d4ABICggcgISB4ABICMXyN9OdLp1oHc4etl58JLSF5hwbw76BJI4vZuasj59TE8Ex5ZpprnePoyHTI9pHe+fo10SQ5MwnG3JB29u/6rN0VXcvEi6KeVPvOpF3fxRvXKWoy+55//NSsWJYNgq+R1YXOSvkmU8Kpe+M6I/jKelR63k1a8HoOLtbT92pqAJkKXo/ZCH6c0jEXP02A9V76tc5JC15xPdRjzk9V4O+bfRFdpEe5iCZPe0X0oSMbaDUCPzy/ZVYIHo/0ACQEBA9AQkDwACTEtI/hNTEzInbq2rz+v4W2hswLWPw5xsf8su2VPXGgZekToefGQqEuFWGbBgbuC+2hfPMfaRJsSdTsYqoROZ0HMLmA3ZvWfcg0ytHepV/atpcmCwvL8CrW4QGMoxvxvtDWO0hdJs7sG+j+kCf/EbsveQ9NBcw9XCkSHLDyvm8eoVkI7vAAJAQED0BCQPAAJMS0j+H3bLztklI2aJYf1qvU+00j8S0SVYBVTEwvUl54cXHX6tC3v7DhG1GfiU2QWLDA9in27dPY9mm7f1pL9YDpxtD0JfEiYuJozV/UPPqEPbVo3mFBzf2ITaEIPZgJLTO1e9P6G0K7LOVr9YP8OjWG15jpGUqAGTDwprSYy84KnOX91XqpCJYbm2g1R5VYisXi/wrtlpaW3oqbaiS+SOy+a91+Fc/TUbO6CN57uSm0md1+uvfeJ6JmNQveE7Xql3aO9Y5jKTmRqDKMO0ETwfvr7a75N3Tb76MGoBfj1/QvCcHjkR6AhIDgAUgICB6AhJj2MbzPuEkTStGa7LXPiOLTSTwTozqRZ0N7sL//O90b138n9C27f+sjVCNXtq18fjttfyH0Xdx/wYbQ1k9woR7ThVQzHMe1e/cM7DoU+b5NNW+W5+lBLaYa8eJtrsKXX6vWZ9dda5dnzKYyjScuUKNguy/9LZ5ctmXrdkoA3OEBSAgIHoCEgOABSIjpH8P7TN+Nl3tCX92uUkxzjC30bn3Hb3y7N61/PbRLRD0rt2ztobG4pyA33Fsw6zR1U9ff2V3LdbrDCcTwMbJE3yHfFDn/d9wo7rXrrs+2W09fniZCLjOTTHQjfXGT/YUNZkDPQH/fuz3zb9GYR1gfmOmwEJsiHfrDPBk166FEmPaCLw2Ve3OO9xtnVqezI6rworxbKqIPmzDtCO3c6fXae2gMuFLvhgrmIHfe2WEE79xwwu46mjxLhOxFarRDokhSLblB89mHvOQnspIcc8kIvtyUH1HtplgsGsFnnF1FIr8d+mSKFF8Ru/4cZr36lVu2badEwSM9AAkBwQOQEBA8AAkxIytxdt257jPGkfFNJP4DthXXPIhknGg+weYUPNPnQrsyCWdJ4aHesTbSdVfH72mC0H4OkpuoHojbEJos/OKyrz7y09C3a9NaOwmHss9oXP17NBbMJ1noVOhadv9Wk3h8ofDxtjkDObMklJN8NDGFF+m+6lFtdjR6jCXy4NCQfD10rfla51FKFNzhAUgICB6AhIDgAUiImbnyjKMXjS0ySI5fCV0at94R2l5kriYsqr2vHge8oDLYJfRkxGYJpIH+gR27N99m3t8vve+vbRVdpr2O6buhS4RNEQh9N+1oInkWJ6YqjjAd139MDM+e55k+LM1UBY3f+/Ro3hirTdtg2+VOeHXkNvG6vhdvrdNbdy/D42h+iWP316FdpvKP67H01WxhRgp++f3bjOD3Fza8UiwWzcw3J/IJY1dGw4jUQfAyYtad92KSdrqrv9VTLR7HYgRfzrK9zpdMAkxP3v9qtjO8YpVkVPsx2uSfRBfIYVw00o6aqw130wtHn1593hyrjYr9cj1ms7a6XigW2cOpDzKcLyVbajyXM4LPlVvevPRr34Dgz4BHegASAoIHICEgeAASYlYsgTsedp4ug3xD6NM4/x5qFMxmOSq91D6+/CtbHw9d3ZvX/YVpI/w+zTtUrdBbfdf8bc0GmBl0ZWKTv9ET4aOa5PjY2Buip7TNU6FLiH8R7exmFrmZGgHT93T/3wtdK7ZsvZ/ArwR3eAASAoIHICEgeAASYmYOvJkYPXS6eMXbsOPzTQuhNaJ/tlu8GsuEscUuvMzv3thxZehi8T8zexa5RGNiuxKOSLyk1jiQC/Sd/rsi3wFrctWBN/r9tOvxmGWvdbu2YIjIFTRlsKkEzEzP6pv4pwmMm2QEf6YsVU/o23d3h5k15UnWeaFLQp9Eg2wmjMhvGptZxS7XmP17/3nTJHNX6YUhXvqqZsHrRewC/WxX2f3LcdOGOT+OFenaqXIRCvtFiVCewqdGIflRtK/nlt+/9QcExg0e6QFICAgegISA4AFIiGQG3owHTTiN+D66N3d8OXJdNyIerx89kZ3n4crPv0Rj5nOpVpgGteOQddnlrHW7lWTbFCbcaqb3zN/bDGbu6tB2+dKp1YXOCa1Hnyq4wwOQEBA8AAkBwQOQECkNvKkKM8uION6RmeBCZfq5YzYFJfTd/W12S1Kp2jqBATK0ILKzSjlZu2mqGX2/nsXZCX03H8fr9RpgVC8q1YF/HDoqMXvUZpCmiBcKt5slyhec7J9bzpXNaj3O24FbZf3dOSNTsdf7kvn9OMteac43vxr6qlU4ricQfERF9JHLCL6r0PFiVspMBRc/OPTRaCP6H6mH4CvCnDRSuXAIxZVzplOCbgR6gdqnn/2J0NfIBN2cgaIR7mCezs88mZLcZfJmVKaK/Rz9wRaGPids1+wryQ+KvvhWtLuGCR6P9AAkBAQPQEJA8AAkBAbe1AEpFMyFs6vv5ev1i/0XphFzgcCvRKI17R27R5dtefTRsfrsLtw2r6+PTLntfNOQqRDEni9lT5caH5GdSER8kSeJZgFOURKT+TXxZGYqrnhg67XUIHCHByAhIHgAEgKCByAhEMPXgXiwTs/mjncWiS4LfU7od6NOV+m3H1WhGfkePh34/0aOF4W8GeDE0RLgnnmevuc2K+iIE9OGheZpfmB+5LvA7koq25hrfXYATb1gph3e80uhT2P49dQgMPCmDowyWKeHoplvO/50rSnnnG9yt4rYZBKlLPhoYBC74XJjy6NGJiGnj6easBOTtON4gS+aXnc1PVGO639fpbMEHukBSAgIHoCEgOABSIiGhjddd3XcEtoZawzLNo4tk/SFtkbHJSE2SwJrouY1s2GmkxpGnwhdQmKiuTL7IRY2s6uylrxZU36A2vtW3fM/zIysUeLzuvBSYW1lUoWZWJEV+Ytm3+R+Q5N71xGYpvC+yLFX8w57Q4dzdqnuLOMdrql/R+hbUvgWJs8AAOoPBA9AQkDwACREY9/Ds3wkNDXOPk+d55kmZKurClMlFjfxuCcfFRCQQSYeoMhpLO8q2ygbV7FkYqc8Hx3q3txh9t+1aX30ETSnIFy2x+jNdphpiKO8g4hdQcb1U78GdEW7ndJRe8z+kLB7xX4qeSeB8cPDVXFsZRzhw7aJnBDmuLiGyRPp7/eWxuNmtR7v5XWzHeGj2u5Y6NOY/ZDZaqn0C2paEK8m1DAaPPBGTGUYf3rpovZx9KveokppGB5Hn/FUl5FKbo/JXFxU4D1Rs37dWH/kMxcFce6wnjG/sMfIr0YHfYi8HaShF0AIvjYqYjeJWP0OTWJNf8CDjuRg6CoT///Qzpr4NZ/ZZPGKwqNv0gwDj/QAJAQED0BCQPAAJERjY3hPm43t+BaNqD5BM4tmPWa7lrrEFVSqZx3Ej5zlMWqfROczahLtmOZBTN7DMf991KxSOcbE1ZpN3R7aLS0tvY0sAz3dwR0egISA4AFICAgegIRobAwfTSSoDJjRuOxnxiNklu/RuDYnJOY4mTmObJmiqjNqmYolLNSk/22yvaJYnNhxlYugHyWq5vj4dDsSr/TCZPctlT6ci9q0Rm0qq9fEK9jMgiIZfEQ/65HQo9/XT00Lkrf0hz4RdTTnCgsfYefMYCVxmRk4VRzw2aE/+/Sc0HdgaasZiLPve8f8Jzs7y5QAZzUlNFwa6t57zTHsONlllu9xjluYS+akZ/2VjV0Rqo8E7+ySP9qnTRNlbbZfVPpIBahbGfMi6HTXPrq4sPfm+DThVBG3Ebh+1jl2Q9zMnqLPRQujPhVxxwK/jGY6zN16Jd8dujz7b4S2E+5T0ZsBM2VnR63lfXNRylLzqLXeua12VN1FNPTeOx4cogTAIz0ACQHBA5AQEDwACYEy1dOIPXevM/kLTRV0eC8dUbMlBKYcjiovCXFl8E48gOdgZJ/U5LDJD2jewVQxOtsDgXCHByAhIHgAEgKCByAhEMM3iP2FDeade6l/4IqykytCH4t8OOr2LvWauF4D+6lZxngKYea4GMibZ/7eRsQu16xn5hwNnOfS2SN+L1888/dLRg4MGlFdR3/TJ2wT/qHj3POh58otD++hBoGlphpGrxF8OcuvZs+/ZZp4+ZyxhwcUyoy/KEskFK7MchPZZdrES03R8PpvZ1PwTaPYtjqTyHlUBYnXomd6WH/9o1Gzhgkej/QAJAQED0BCQPAAJARi+Dqwv3CLmeBSLjZdLZ7N0saD/e4/hDafrppjZ+vxuML1uOJqZaZgfOG+jKYTUaJR49pWjhLGJ9v6rgntluMtLU6azfeTy5fjiVVLNNlnBiIJy9V218NlveNKv2ftRqfH8zslkZsi9yXUIHCHByAhIHgAEgKCByAhEMPXyMt3f+qiJl+6MPQNDowYMHOFRtZXWldcXSeqiDMqfED7HbAujpaeosrgnStpZnGhxvG/Fjrai3M+HtouJ7upKPb9tPhoeebsqGe7ZLMmNLpME5ZFjtyi0FUWu0S5bni+Y55n+9Fi00JE/z/H7+HjakQjYbaDdbzs12130VkCgq+RM2L/Z8YpfIe1ZYHUpRSVHNDtPBd6nFB0AaBzRGZc2asLz/z9EqGPGTNz31q6aKkte1UovEU1cnqEY280yjFvEqp6QXiH/hNdBOjqyL5Ef9d85Ksu+GhNQb0R7NPf6xk6S+CRHoCEgOABSAgIHoCEwGy5gJ2b1l+WYzaDNLz3/yW0Rf8/12ONdqY3NG41M8ayLPuj0HZMp8qlAbvUMTU9Y+1RBvBE6DE/qcf8ZOT+zzS92a9/PaEj3zrwr2yTBcUlhYcasta6yMhJTLs2d1wf2iz+fG1kJtQM8KlHQvvkQFvx2q919tNZAnd4ABICggcgISB4ABIimffwL9x+exNdfNAUNWjvb/vt0GaSK7zYQSwSxfROZH61paD/qWtkPxfZO8S5l0wH70010zLJKo3sV9mNjmMAD/MPQlOPeZ8QD9CYhzcqXbYHn6vf0SKqnbgyTKWsh129Z2R1mxGVfQaKLWa8g6e+H+l79hdC31RVhGXWLMjIOL4nNMqUvZGTkllh6ORgm8kxXDP/jbO6wk06A29U7HMGcq2Rd11o6Am9QrMzK0Jf/AuPW+xiW+qF41lji3viVEv746FvTvEts66eI16q/9wabXvMBN3pnfunQ5vZnXLRABBP1dFP0G22c/rTT1rwcnqGX/zVxoIfucyWFyP4jNxfFYvFuFrMlJWArog+cvXQDAOP9AAkBAQPQEJA8AAkxKwdeNO16ZMfNA5xt+h/boma1afSCNt179nxtz3Tt0Pfii9vfaHaZro3rXss2vAqTRStHquPBpVH9Uc0VVBPtPa9O7TnFts+oS0/YbYs/K/Ndpj61GeWV8pR/j2h7Xno8178H0aHMJ6JO3btdeZHMmIzIKUs/n+Ost1q2x6x/JNnvjG0z/bSTtMN3OEBSAgIHoCEgOABSIgZ+R5eCgVzodo1sPNKV5Ko6guvi7qt0NgxrlhC1eHolbW8IlHVGX07+zeh7Tzv9C3yOo3BaBN1NF5fFdnnjzgaomgADf1Y/54ynosuMoM7eN9xDZm5jcbgdPzOR6y35Xholf3gXnJ2PAGL3EzV4Kgcr9AST97E2pr3eDhqc5V+/ndFW4qXyq4UoDBxvmP5/dAe6i8+v3vzWrO009L7Ot+gRJmpA2+M4LMSLVMR2jJTQp+hyDHeUTO2l1jBM++XSGDLj8170LQ5dsxzZ2d5rO0Oi9376+2+aMwE3Rns2mUq+DLzN0Pfe+940Ai+e/O6TDc+J9qXhalfrzBG8Ffc/6ARvF6k9jrvn7X9uLrg4zLaTEv0WhsNIOLo99JknEh73C9q00Jx1RkhI3h2lJPMRaWxKFnB45EegISA4AFICAgegISYkTF8V7HLDKrhTBN0Ip+iycLcw9GECJeTfxPaA7nysTWFzqNUI10b114X2pqQ+ozG0Z+lGnEifxzaXuTFlV/t7Bmrj/dyiX6494W+UUZcaSrA5gdiVrSs+P522m5m4l3Sf6GJvWV4lluVNexleMCTHfRUFpNk9Y6eXPnAtj8PfTs3dhibWa7RpOE10bZN9Vn9fr6gWZjPh749m9Z+KLRLPju44oGtYyZZZwu4wwOQEBA8AAkBwQOQEDNz4I3YQgSVYiT6Hx81ii9m+v85msRBj0dbfklf3JoqNJWYPbTnH6eqFUdPr3ZC0WonA2byir7fX0nVef3M39tUYvbQbiI6FHfa8YW1C0Ob2bVpzqDKby2D+iWeHLPJPQW54d6C+Z53867/YzdDlVVd3k81Ikw3hLbzckS/x12hr9g/+F3ThuSUnghx1dobrck5JjGFT0ri/sC0oPLTu7641uQmVnypcz/NQmak4DOxg2H0ZPGVLNjYvSpil5LxCP2dsZ17/srm5aYUFRcK4ykOE9NSLBbtCDAiW2JZZDyzzF7Xa5mZZbfsq50/rdapOefi9dgrg27G/K21zaDua0zB83DJm4L5nrvv6rCCd5qwk9oFr5u+wdiOdw0NDhoRrrz/ke+E9u7NHRWxm0FGehpEgpdKWbMmuy/6A3vMrlkzdz+3/WhWCh6P9AAkBAQPQEJA8AAkxKyoeLP/zrUXDkXLD2tixsTrWdkfa4sqw1xapyV/Dv3Zp83ElBO5odu90O22la2G+yvoMRbzXyxrWfHfjWscOYXuzes+Zj3cIV5urdLt+5oFMZOCVjyw7YtUI3s2ddysB2gm1GjK5d9RrTD9XHMKJq5+pHWVGWRzzz33SFxJdufmdSZX4mR4UlU0sSpeKqyS8LV5ISdkjtk5+uEVW7b9kGY4uMMDkBAQPAAJAcEDkBCzYuWZvjl0su2UHYDiKG9islJTU//h3lyJpoATTUMfCG3vhwtZnDt2Lx6KxwVozP5XoalX459ooGrHFxQKVBXhxZFjXrUuXBmY5HjS30+ZqScj2m58QhvszrhZ4+gWGvt42jVANxNsbh3sMt/zjrvWVwpb7A19WUY7Q9uXJGPig9H+/62xpTJIis3gHGH6SGgPee+7/uNaMwhq+Zc743f3055ZIfjVhc7KgJGTdJbQE9qciMy0Rk/oKoIfFrtJGuoV6qHQzre09I6yvFFVPIkRvIqnquBVXF6Ta5MWfL65uYd6e83Ft9TcbCrnaDJuPsWVauLjkeFjNsetiUfzPeezrPLdGMEv+9I2I/j9hQ0Hi8WiSbY5kg6zM+ZFusO4ItBHbRP3uv7QPyLLjBM8HukBSAgIHoCEgOABSIh0louuEzs3rr/WCUdVVvyfUK0wb9dY30zeWXnf1h6qAxwfH8ml1foIyTHHNh6eCEsKD1UmtJgZbLs2rb3Dtspum1CFIpEvhKamHVp3bLaJtDX3db4cHc+I5aiU5aGx8+5bP6yZVjM4x0X7koqr5Ga8XnCHByAhIHgAEgKCByAhEMNXoavQYd6n+37/LmEyVU/HOQPp+6aP0DPa8TmaCljOM7bwnGrL7jDxYLlKAYyJoifZntAuk39ZiH9s90//fBybykJD8w6rmiiLlwB/mWqk7If2Zq7JFNfgctku18X8/ICXAzTDgeCrMWBHzOWY13iRD1GN6AluBC/Mz6y479GpETyRXZOOpW0cy2wNELsTNAVcuaXTCH7X5vUvMcnlppHULnhlJZ0exBPyFaqRNaePzxxj1592mEE27e3tfcu2PNhHMxw80gOQEBA8AAkBwQOQEIjhA+TrtzcdPHjQVDg90e//NrR9tB75qDA/pe1sxdUtW/8TTQEv3bn2wpxzFxin0AVUIxrie2Y/RA2gubnlu729vSan0dbc/MGo2QKq9l2PsmSVFAr2JjZKVZzxsPzPH32TZiG4wwOQEBA8AAkBwQOQEIjhAw4cPNZ+4lR+UejL3Ig4ckThBg0Q/yG0HfGzzsnj1AAyoVZhb46ZpfbruL4X13fM2RFqAD3UU7pswWVmgs1gsbjNtpJr9Yu9NuqaURUOHH+pObQX33tvJS8xJZWOZiIQfMDJYjaPiS6O3ONYEoqN4MtEz638ytbGCL6JWstlWmgPh2qGmfqkmRqSqLqxsL0iQCPC3ZvWG8Fr0rOdRq5RV1Xwg3nKh7ZeXIQg+LfBIz0ACQHBA5AQEDwACYEYPuBQy6EDi4+0mpLGvnXeH4e2BoTzNUY21VSXH5tnl2Q6dmwiS0xPCJbcOxz760JfzaNMKn2E+5cXzt5gk6Vbtv4ktLs2d/wl+fLfhz5mvj609XO+JuJfDX1XPNB5nMCvBHd4ABICggcgISB4ABICMXzADXSD375ou/Fd3HfO86HNmW8ul9kOvolj9sce85UX242gJOV5jtwl1juOKJ7ZDHypx6ozdWWQ3qR8tit0ebHVcIVLx/UERsxeAxB8wJm11+OE2/NUKw0S++ld8TwRWVxzR5EBsx3iaSX4M7PV4iTiLgKTAo/0ACQEBA9AQkDwACQEYvgZjiPe45lMiWWNz6+u1k+zDGZZZWGalRVegAV3eAASAoIHICEgeAASAjH8DKfE8npG9ELoE6Lu0GahTJhN8QhP9C3bpox33AkAwc9wfLN/vXkwZ0ablcQbwRNzXpN0pvRT0ZeN4IfKuYaUtwJnFzzSA5AQEDwACQHBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDZ5x8BaVrDh2OM7QQAAAAASUVORK5CYII="
+ />
+ </defs>
+ </svg>
+ );
+};
diff --git a/packages/ui/button/external-auth.tsx b/packages/ui/button/external-auth.tsx
index 04f05af3..23164cb1 100644
--- a/packages/ui/button/external-auth.tsx
+++ b/packages/ui/button/external-auth.tsx
@@ -15,9 +15,15 @@ export function ExternalAuthButton({
return (
<Button
className={cn(
- "flex flex-grow cursor-pointer max-w-full bg-background items-center justify-center gap-[0.625rem] rounded-xl border-[1.5px] border-border px-6 py-5 hover:bg-accent",
+ "flex flex-grow cursor-pointer max-w-full items-center justify-center gap-[0.625rem] rounded-xl px-6 py-5 hover:opacity-75",
className,
)}
+ style={{
+ borderRadius: "12px",
+ background: "linear-gradient(180deg, #00264F 0%, #001933 100%), linear-gradient(180deg, #0A0E14 0%, #05070A 100%)",
+ boxShadow: "0 1px 2px 0 rgba(0, 43, 87, 0.10), 1px 1px 1px 1px #002B57 inset",
+ height: "44px",
+ }}
{...props}
>
<span className="aspect-square">{authIcon}</span>
diff --git a/packages/ui/components/button.tsx b/packages/ui/components/button.tsx
index 6aee692a..e91bd2e7 100644
--- a/packages/ui/components/button.tsx
+++ b/packages/ui/components/button.tsx
@@ -8,18 +8,26 @@ const buttonVariants = cva(
{
variants: {
variant: {
- default:
- "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
+ default: " text-primary-foreground shadow-xs hover:bg-primary/90",
+ newDefault:
+ "bg-gradient-to-b from-[#1C2026] to-[#12161C] text-white shadow-[inset_-2px_-2px_6px_0_rgba(0,0,0,0.15),inset_2px_2px_4px_0_rgba(255,255,255,0.05)] hover:from-[#1C2026]/90 hover:to-[#12161C]/90",
destructive:
"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline:
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
secondary:
"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
+ headers:
+ "border-[#161F2C] border bg-gradient-to-b from-neutral-900 to-black !text-[14px]",
ghost:
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
link: "text-primary underline-offset-4 hover:underline",
settingsNav: "cursor-pointer rounded-sm bg-transparent",
+ onboarding:
+ "rounded-xl !px-6 !py-3 bg-black border border-[#161F2C] hover:bg-[#161F2C] !h-[40px] cursor-pointer text-white",
+ linkPreview:
+ "rounded-xl !px-3 !py-1 bg-black border border-[#161F2C] hover:bg-[#161F2C] cursor-pointer text-white border border-[#161F2C]",
+ insideOut: "shadow-inside-out rounded-full bg-[#0D121A]",
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
diff --git a/packages/ui/components/text-separator.tsx b/packages/ui/components/text-separator.tsx
index 6e3e671b..bd448233 100644
--- a/packages/ui/components/text-separator.tsx
+++ b/packages/ui/components/text-separator.tsx
@@ -14,11 +14,9 @@ export function TextSeparator({
className={cn("flex gap-4 items-center justify-center", className)}
{...props}
>
- <div className="w-full h-px bg-border" />
- <span className="text-muted-foreground text-[0.75rem] uppercase tracking-[-0.2px] leading-[0.875rem]">
+ <span className="text-foreground text-[0.75rem] uppercase tracking-[-0.2px] leading-3.5">
{text}
</span>
- <div className="w-full h-px bg-border" />
</div>
);
}
diff --git a/packages/ui/globals.css b/packages/ui/globals.css
index 357e34b7..d92fd10f 100644
--- a/packages/ui/globals.css
+++ b/packages/ui/globals.css
@@ -90,7 +90,7 @@
--shadow-offset-x: 0;
--shadow-offset-y: 1px;
--letter-spacing: -0.01em;
- --spacing: 0.24rem;
+ --spacing: 0.25rem;
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.02);
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.02);
--shadow-sm:
@@ -151,7 +151,7 @@
--shadow-offset-x: 0;
--shadow-offset-y: 1px;
--letter-spacing: -0.01em;
- --spacing: 0.24rem;
+ --spacing: 0.25rem;
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.02);
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.02);
--shadow-sm:
@@ -255,6 +255,7 @@
}
body {
@apply bg-background text-foreground;
+ font-size: 14px;
letter-spacing: var(--tracking-normal);
}
}
diff --git a/packages/ui/input/labeled-input.tsx b/packages/ui/input/labeled-input.tsx
index 84f205fe..5bad5410 100644
--- a/packages/ui/input/labeled-input.tsx
+++ b/packages/ui/input/labeled-input.tsx
@@ -3,7 +3,7 @@ import { Input } from "@ui/components/input";
import { Label1Regular } from "@ui/text/label/label-1-regular";
interface LabeledInputProps extends React.ComponentProps<"div"> {
- label: string;
+ label?: string;
inputType: string;
inputPlaceholder: string;
error?: string | null;
@@ -11,23 +11,29 @@ interface LabeledInputProps extends React.ComponentProps<"div"> {
}
export function LabeledInput({
- label,
inputType,
inputPlaceholder,
className,
error,
inputProps,
+ label,
...props
}: LabeledInputProps) {
return (
<div className={cn("flex flex-col gap-2", className)} {...props}>
- <Label1Regular className="text-foreground">{label}</Label1Regular>
-
+ {label && <Label1Regular className="text-foreground">{label}</Label1Regular>}
<Input
className={cn(
- "w-full leading-[1.375rem] tracking-[-0.4px] rounded-2xl p-5 placeholder:text-muted-foreground text-foreground border-[1.5px] border-border disabled:cursor-not-allowed disabled:opacity-50",
+ "w-full leading-[1.375rem] tracking-[-0.4px] rounded-xl p-4 placeholder:text-muted-foreground/50 text-foreground disabled:cursor-not-allowed disabled:opacity-50",
inputProps?.className,
)}
+ style={{
+ height: "44px",
+ borderRadius: "12px",
+ border: "1px solid rgba(82, 89, 102, 0.20)",
+ background: "#070E1B",
+ boxShadow: "0 1px 2px 0 rgba(0, 43, 87, 0.10), 0 0 0 1px rgba(43, 49, 67, 0.08) inset, 0 1px 1px 0 rgba(0, 0, 0, 0.08) inset, 0 2px 4px 0 rgba(0, 0, 0, 0.02) inset",
+ }}
placeholder={inputPlaceholder}
type={inputType}
{...inputProps}
diff --git a/packages/ui/pages/login.tsx b/packages/ui/pages/login.tsx
index 8846a906..69b52089 100644
--- a/packages/ui/pages/login.tsx
+++ b/packages/ui/pages/login.tsx
@@ -480,4 +480,4 @@ export function LoginPage({
)}
</section>
);
-}
+} \ No newline at end of file
diff --git a/packages/validation/api.ts b/packages/validation/api.ts
index 91ac5e09..9d8c1983 100644
--- a/packages/validation/api.ts
+++ b/packages/validation/api.ts
@@ -808,6 +808,7 @@ export const ConnectionResponseSchema = z.object({
id: z.string(),
metadata: z.record(z.any()).optional(),
provider: z.string(),
+ containerTags: z.array(z.string()).optional(),
})
export const RequestTypeSchema = RequestTypeEnum
diff --git a/packages/validation/schemas.ts b/packages/validation/schemas.ts
index 92524164..0bd73a1e 100644
--- a/packages/validation/schemas.ts
+++ b/packages/validation/schemas.ts
@@ -261,6 +261,7 @@ export const MemoryEntrySchema = z.object({
// Status flags
isInference: z.boolean().default(false),
isForgotten: z.boolean().default(false),
+ isStatic: z.boolean().default(false),
forgetAfter: z.coerce.date().nullable().optional(),
forgetReason: z.string().nullable().optional(),