@cerbur/clutch-dsh-worktree 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -6
- package/lib/client/WorktreeModeAction.d.ts +4 -3
- package/lib/client/WorktreeModeAction.d.ts.map +1 -1
- package/lib/client/WorktreeModeAction.js +3 -3
- package/lib/client/WorktreeModeAction.js.map +1 -1
- package/lib/client/WorktreeSurface.d.ts +4 -3
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +146 -64
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/entry.d.ts +6 -0
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +5 -1
- package/lib/client/entry.js.map +1 -1
- package/lib/client/locales.d.ts +149 -0
- package/lib/client/locales.d.ts.map +1 -0
- package/lib/client/locales.js +148 -0
- package/lib/client/locales.js.map +1 -0
- package/lib/client/sidebar-overlay-geometry.js +1 -1
- package/lib/client/sidebar-overlay-geometry.js.map +1 -1
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +6 -5
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client/worktree-error-copy.d.ts +7 -0
- package/lib/client/worktree-error-copy.d.ts.map +1 -0
- package/lib/client/worktree-error-copy.js +44 -0
- package/lib/client/worktree-error-copy.js.map +1 -0
- package/lib/client/worktree-view.d.ts +1 -0
- package/lib/client/worktree-view.d.ts.map +1 -1
- package/lib/client/worktree-view.js +15 -5
- package/lib/client/worktree-view.js.map +1 -1
- package/lib/client.js +425 -98
- package/lib/client.js.map +1 -1
- package/package.json +4 -1
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["styles","IconBranchOutline16","IconEditOutline16","IconTrashOutline16","styles","IconChevronDownOutline14","IconChevronRightOutline14","IconFolderOpen16","IconFolderClose16","Menu","IconEllipsisOutline16","IconPlusOutline16","StateDot","IconBranchOutline16","IconArchiveOutline20","_Fragment","IconCloseOutline16","IconSearchOutline16","Modal","Button","Input"],"sources":["client/worktree-connection.js","client/WorktreeModeAction.js","client/navigation.js","client/overlay-bounds.js","client/sidebar-overlay-geometry.js","client/view-mode.js","client/worktree-view.js","client/WorktreeSurface.js","client/view-mode-store.js","client/virtual-workspace-membership.js","client/entry.js"],"sourcesContent":["/** The one logical channel shared by the DSH Connection and Typert Gateway. */\nexport const WORKTREE_CONNECTION_CHANNEL = '/api';\n/**\n * Canonical Worktree endpoints owned by this adapter. Keeping the table here makes\n * the browser call surface auditable without making React know wire names.\n */\nexport const WORKTREE_CONNECTION_ENDPOINTS = Object.freeze({\n listWorktrees: 'worktreeManager/listWorktrees',\n listBranches: 'worktreeManager/listBranches',\n createWorktree: 'worktreeManager/createWorktree',\n removeWorktree: 'worktreeManager/removeWorktree',\n listBindings: 'worktreeManager/listBindings',\n bindSession: 'worktreeManager/bindSession',\n});\n/** Browser-safe error shared by transport, Gateway, endpoint and domain failures. */\nexport class WorktreeConnectionError extends Error {\n code;\n details;\n retryable;\n constructor(options) {\n super(options.message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = 'WorktreeConnectionError';\n this.code = options.code;\n this.details = Object.freeze({ ...(options.details ?? {}) });\n this.retryable = options.retryable;\n }\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isWorktreeError(value) {\n return (isRecord(value) &&\n typeof value.code === 'string' &&\n typeof value.message === 'string' &&\n isRecord(value.details));\n}\nfunction isWorktreeRemoteResult(value) {\n if (!isRecord(value) || typeof value.ok !== 'boolean')\n return false;\n return value.ok || (isWorktreeError(value.error) && value.error.details !== undefined);\n}\nfunction disposedError() {\n return new WorktreeConnectionError({\n code: 'CLIENT_DISPOSED',\n message: 'Worktree connection is disposed; reload the plugin and retry.',\n details: {},\n retryable: false,\n });\n}\nfunction connectionFailure(endpoint, error, code = 'CONNECTION_CALL_FAILED') {\n const message = error instanceof Error ? error.message : String(error);\n return new WorktreeConnectionError({\n code,\n message: `Worktree endpoint ${endpoint} failed; retryable connection error: ${message}`,\n details: { endpoint },\n retryable: true,\n cause: error,\n });\n}\nfunction gatewayFailure(endpoint, result) {\n throw new WorktreeConnectionError({\n code: result.error.code,\n message: `Worktree endpoint ${endpoint} failed: ${result.error.message}`,\n details: isRecord(result.error.details) ? result.error.details : {},\n retryable: true,\n });\n}\nfunction invalidResult(endpoint) {\n return new WorktreeConnectionError({\n code: 'WORKTREE_RPC_INVALID_RESULT',\n message: `Worktree endpoint ${endpoint} returned an invalid result; retry the request.`,\n details: { endpoint },\n retryable: true,\n });\n}\nfunction unwrap(endpoint, result) {\n if (!result.ok)\n gatewayFailure(endpoint, result);\n if (!isWorktreeRemoteResult(result.value))\n throw invalidResult(endpoint);\n if (!result.value.ok) {\n throw new WorktreeConnectionError({\n code: result.value.error.code,\n message: result.value.error.message,\n details: result.value.error.details,\n retryable: false,\n });\n }\n return result.value.value;\n}\n/**\n * Adapt the shared DSH Connection RPC into the existing WorktreeManager contract.\n * All wire details and request cancellation live behind this one deep module.\n */\nexport function createWorktreeConnectionAdapter(rpc) {\n const inFlight = new Set();\n let disposed = false;\n async function invoke(method, input) {\n if (disposed)\n throw disposedError();\n const controller = new AbortController();\n inFlight.add(controller);\n const endpoint = WORKTREE_CONNECTION_ENDPOINTS[method];\n try {\n let result;\n try {\n result = await rpc.call(WORKTREE_CONNECTION_CHANNEL, endpoint, { args: { input } }, controller.signal);\n }\n catch (error) {\n if (disposed && controller.signal.aborted)\n throw disposedError();\n throw connectionFailure(endpoint, error);\n }\n return unwrap(endpoint, result);\n }\n finally {\n inFlight.delete(controller);\n }\n }\n return {\n listWorktrees: (input) => invoke('listWorktrees', input),\n listBranches: (input) => invoke('listBranches', input),\n createWorktree: (input) => invoke('createWorktree', input),\n async removeWorktree(input) {\n await invoke('removeWorktree', input);\n },\n listBindings: (input) => invoke('listBindings', input),\n bindSession: (input) => invoke('bindSession', input),\n dispose() {\n if (disposed)\n return;\n disposed = true;\n for (const controller of inFlight)\n controller.abort();\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-connection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree.css';\n/** Footer action that enters/exits the peer Worktree navigation mode. */\nexport function WorktreeModeAction({ wide, useStore, actions, available, }) {\n if (!available)\n return null;\n const mode = useStore((state) => state.viewMode);\n const active = mode === 'worktree';\n return (_jsxs(\"button\", { type: \"button\", className: styles.action, \"data-worktree-mode-action\": true, \"data-active\": active || undefined, \"data-collapsed\": !wide || undefined, \"aria-label\": active ? 'Exit Worktree mode' : 'Open Worktree mode', \"aria-pressed\": active, title: active ? 'Exit Worktree mode' : 'Worktree mode', onClick: () => {\n actions.setViewMode(active ? 'workspace-session' : 'worktree');\n }, children: [_jsx(IconBranchOutline16, { size: wide ? 16 : 18 }), wide && _jsx(\"span\", { className: styles.actionLabel, children: \"Worktree\" })] }));\n}\n//# sourceMappingURL=WorktreeModeAction.js.map","/** Open an existing Session through DSH without touching the peer view mode. */\nexport function openWorktreeSession(opener, sessionId) {\n opener.open(sessionId);\n}\n//# sourceMappingURL=navigation.js.map","export function computeOverlayBounds(frame, newSession, footer) {\n if (newSession === undefined || footer === undefined) {\n return { ready: false, top: 0, height: 0 };\n }\n const top = Math.max(0, newSession.top - frame.top);\n const footerTop = Math.max(top, footer.top - frame.top);\n return { ready: true, top, height: footerTop - top };\n}\n//# sourceMappingURL=overlay-bounds.js.map","import { useLayoutEffect, useRef, useState } from 'react';\nimport { computeOverlayBounds } from './overlay-bounds.js';\nconst EMPTY_BOUNDS = { ready: false, top: 0, height: 0 };\nfunction asRect(element) {\n const rect = element.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n}\nexport function resolveNativeSidebarRoot(sidebar) {\n const directChild = sidebar.firstElementChild;\n if (directChild === null)\n return undefined;\n const directRect = directChild.getBoundingClientRect();\n if (directRect.width > 0 || directRect.height > 0)\n return directChild;\n return directChild.firstElementChild ?? directChild;\n}\nexport function findNewSessionAnchor(root) {\n const labels = ['新建会话', 'New session', '新会话', 'New Session'];\n const buttons = [...root.querySelectorAll('button')];\n const visibleLabel = buttons.find((button) => {\n const text = button.textContent?.trim();\n return text === '新会话' || text === 'New Session';\n });\n if (visibleLabel !== undefined)\n return visibleLabel;\n for (const label of labels) {\n const button = buttons.find((candidate) => candidate.getAttribute('aria-label') === label);\n if (button !== undefined)\n return button;\n }\n return undefined;\n}\nexport function useSidebarOverlayGeometry(active) {\n const ref = useRef(null);\n const [width, setWidth] = useState(280);\n const [bounds, setBounds] = useState(EMPTY_BOUNDS);\n useLayoutEffect(() => {\n if (!active) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const surface = ref.current;\n const overlay = surface?.closest('[data-shell-overlay]');\n const frame = overlay?.parentElement;\n const sidebar = frame?.firstElementChild;\n const nativeRoot = sidebar === null || sidebar === undefined ? undefined : resolveNativeSidebarRoot(sidebar);\n if (!(overlay instanceof HTMLElement) ||\n !(sidebar instanceof HTMLElement) ||\n !(nativeRoot instanceof HTMLElement)) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n let frameHandle;\n const update = () => {\n const newSession = findNewSessionAnchor(nativeRoot);\n const footer = nativeRoot.lastElementChild;\n const nextWidth = sidebar.getBoundingClientRect().width;\n if (nextWidth > 0)\n setWidth(nextWidth);\n setBounds(computeOverlayBounds(asRect(overlay), newSession === undefined ? undefined : asRect(newSession), footer === null ? undefined : asRect(footer)));\n };\n const scheduleUpdate = () => {\n if (frameHandle !== undefined)\n return;\n frameHandle = requestAnimationFrame(() => {\n frameHandle = undefined;\n update();\n });\n };\n update();\n const resizeObserver = typeof ResizeObserver === 'function'\n ? new ResizeObserver(scheduleUpdate)\n : undefined;\n for (const element of [overlay, sidebar, nativeRoot]) {\n resizeObserver?.observe(element);\n }\n const newSession = findNewSessionAnchor(nativeRoot);\n const footer = nativeRoot.lastElementChild;\n if (newSession !== undefined)\n resizeObserver?.observe(newSession);\n if (footer !== null)\n resizeObserver?.observe(footer);\n const mutationObserver = typeof MutationObserver === 'function'\n ? new MutationObserver(scheduleUpdate)\n : undefined;\n mutationObserver?.observe(nativeRoot, { childList: true, subtree: true });\n return () => {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n if (frameHandle !== undefined)\n cancelAnimationFrame(frameHandle);\n };\n }, [active]);\n return { ref, width, bounds };\n}\n//# sourceMappingURL=sidebar-overlay-geometry.js.map","/** Browser-local storage key; it is never sent to DSH or the sidecar. */\nexport const WORKTREE_VIEW_MODE_STORAGE_KEY = 'clutch-dsh-worktree.view-mode';\n/** Guard persisted values before they become a visible mode. */\nexport function isWorktreeViewMode(value) {\n return value === 'workspace-session' || value === 'worktree';\n}\n/** Degraded/unavailable plugin state always exposes the original DSH view. */\nexport function effectiveViewMode(preferred, worktreeServiceAvailable) {\n if (!worktreeServiceAvailable || !isWorktreeViewMode(preferred))\n return 'workspace-session';\n return preferred;\n}\n/** Keep the Main bucket scoped to the selected DSH Workspace before filtering bindings. */\nexport function workspaceSessionIds(workspaces, workspaceId, sessionIds) {\n if (workspaceId === undefined)\n return [];\n const workspace = workspaces.items.find((candidate) => candidate.workspaceId === workspaceId);\n if (workspace === undefined)\n return [];\n const listed = new Set(sessionIds);\n return workspace.sessionIds.filter((sessionId) => listed.has(sessionId));\n}\nexport function unboundSessionIds(sessionIds, boundSessionIds) {\n const bound = new Set(boundSessionIds);\n return sessionIds.filter((sessionId) => !bound.has(sessionId));\n}\n/**\n * Apply a browser-only membership delta to a DSH Workspace list snapshot.\n * `previousBindings` are removed first so the same function can also undo a\n * projection after a binding is deleted or the plugin is disposed.\n */\nexport function projectVirtualWorkspaceMembership(snapshot, previousBindings, nextBindings) {\n const previousSessionIds = new Set(previousBindings.map((binding) => binding.sessionId));\n const nextByWorkspace = new Map();\n for (const binding of nextBindings) {\n const sessionIds = nextByWorkspace.get(binding.workspaceId) ?? [];\n if (!sessionIds.includes(binding.sessionId))\n sessionIds.push(binding.sessionId);\n nextByWorkspace.set(binding.workspaceId, sessionIds);\n }\n const items = snapshot.items.map((workspace) => {\n const nativeSessionIds = workspace.sessionIds.filter((sessionId) => !previousSessionIds.has(sessionId));\n const virtualSessionIds = nextByWorkspace.get(workspace.workspaceId) ?? [];\n const sessionIds = [\n ...nativeSessionIds,\n ...virtualSessionIds.filter((sessionId) => !nativeSessionIds.includes(sessionId)),\n ];\n if (sessionIds.length === workspace.sessionIds.length &&\n sessionIds.every((sessionId, index) => sessionId === workspace.sessionIds[index])) {\n return workspace;\n }\n return { ...workspace, sessionIds };\n });\n if (items.every((workspace, index) => workspace === snapshot.items[index]))\n return snapshot;\n return { ...snapshot, items };\n}\n/**\n * Select the initial Worktree surface Workspace without navigating DSH:\n * current Session membership wins, then DSH recency, then the first available\n * Workspace keeps the surface usable in an empty/reconnecting fixture.\n */\nexport function initialWorkspaceId(workspaces, sessions) {\n const currentSessionId = sessions.current;\n if (currentSessionId !== undefined) {\n const currentWorkspace = workspaces.items.find((workspace) => workspace.sessionIds.includes(currentSessionId));\n if (currentWorkspace !== undefined)\n return currentWorkspace.workspaceId;\n }\n if (workspaces.recentWorkspaceId !== undefined &&\n workspaces.items.some((workspace) => workspace.workspaceId === workspaces.recentWorkspaceId)) {\n return workspaces.recentWorkspaceId;\n }\n return workspaces.items[0]?.workspaceId;\n}\n//# sourceMappingURL=view-mode.js.map","/** A DSH Session exists even when the external Worktree binding needs repair. */\nexport class WorktreeSessionBindingError extends Error {\n code = 'SESSION_BINDING_FAILED';\n retryable = true;\n sessionId;\n cause;\n constructor(sessionId, cause) {\n const reason = cause instanceof Error ? cause.message : String(cause);\n super(`Session ${sessionId} was created, but Worktree binding failed: ${reason}`);\n this.name = 'WorktreeSessionBindingError';\n this.sessionId = sessionId;\n this.cause = cause;\n }\n}\n/** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */\nexport function stableWorkspaceIds(previous, next) {\n if (previous.length !== next.length)\n return next;\n for (let index = 0; index < previous.length; index += 1) {\n if (previous[index] !== next[index])\n return next;\n }\n return previous;\n}\n/** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */\nexport function selectDefaultBaseBranch(branches) {\n return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';\n}\nfunction browserRandomUuid() {\n const randomUUID = globalThis.crypto?.randomUUID;\n if (typeof randomUUID === 'function')\n return randomUUID.call(globalThis.crypto);\n return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;\n}\n/** Generate a short, editable default branch name without colliding with known local names. */\nexport function createDefaultWorktreeName(existingNames, randomUuid = browserRandomUuid) {\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n for (let attempt = 0; attempt < 100; attempt += 1) {\n const suffix = randomUuid().replace(/[^a-z0-9]/gi, '').slice(0, 8).toLowerCase();\n if (suffix.length < 8)\n continue;\n const candidate = `dsh/${suffix}`;\n if (!usedNames.has(candidate))\n return candidate;\n }\n throw new Error('Unable to generate an available default Worktree name.');\n}\n/** Hide DSH-archived Sessions from the browser-local Worktree projection. */\nexport function filterArchivedSessionIds(sessionIds, archivedSessionIds) {\n return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));\n}\n/** Read all three Worktree projections needed by the surface in one refresh. */\nexport async function loadWorktreeView(manager, workspaceId) {\n const [worktrees, branches, bindings] = await Promise.all([\n manager.listWorktrees({ workspaceId }),\n manager.listBranches({ workspaceId }),\n manager.listBindings({ workspaceId }),\n ]);\n return { worktrees, branches, bindings };\n}\n/** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */\nexport async function loadWorktreeViews(manager, workspaceIds) {\n return Promise.all(workspaceIds.map(async (workspaceId) => ({\n workspaceId,\n ...(await loadWorktreeView(manager, workspaceId)),\n })));\n}\n/** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */\nexport async function executeWorktreeAction(manager, action) {\n if (action.type === 'createWorktree') {\n return manager.createWorktree(action.input);\n }\n if (action.type === 'removeWorktree') {\n await manager.removeWorktree(action.input);\n return;\n }\n}\n/**\n * Create a normal DSH Session at a Worktree cwd, then add the external binding.\n * A binding failure deliberately leaves the DSH-created Session intact.\n */\nexport async function createSessionForWorktree(input) {\n const sessionId = await input.createSession({ cwd: input.cwd });\n try {\n await input.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(sessionId, error);\n }\n input.beforeOpen?.(sessionId);\n input.openSession(sessionId);\n return sessionId;\n}\n/** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */\nexport function toWorktreeViewError(error) {\n if (typeof error === 'object' && error !== null) {\n const candidate = error;\n return {\n code: typeof candidate.code === 'string' ? candidate.code : 'WORKTREE_VIEW_FAILED',\n message: typeof candidate.message === 'string'\n ? candidate.message\n : 'Worktree data is unavailable. Retry the request.',\n retryable: candidate.retryable !== false,\n };\n }\n return {\n code: 'WORKTREE_VIEW_FAILED',\n message: 'Worktree data is unavailable. Retry the request.',\n retryable: true,\n };\n}\n//# sourceMappingURL=worktree-view.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button, IconArchiveOutline20, IconBranchOutline16, IconChevronDownOutline14, IconChevronRightOutline14, IconCloseOutline16, IconEditOutline16, IconEllipsisOutline16, IconFolderClose16, IconFolderOpen16, IconPlusOutline16, IconSearchOutline16, IconTrashOutline16, Input, Menu, Modal, StateDot, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { openWorktreeSession } from './navigation.js';\nimport { useSidebarOverlayGeometry } from './sidebar-overlay-geometry.js';\nimport { effectiveViewMode, unboundSessionIds, workspaceSessionIds } from './view-mode.js';\nimport { executeWorktreeAction, createDefaultWorktreeName, filterArchivedSessionIds, loadWorktreeViews, selectDefaultBaseBranch, stableWorkspaceIds, toWorktreeViewError, WorktreeSessionBindingError, } from './worktree-view.js';\nimport styles from './worktree.css';\nconst EMPTY_READ_STATE = { status: 'idle', views: [] };\nfunction useStableWorkspaceIds(workspaces) {\n const next = workspaces.map((workspace) => workspace.workspaceId);\n const previousRef = useRef([]);\n const stable = stableWorkspaceIds(previousRef.current, next);\n if (stable !== previousRef.current)\n previousRef.current = stable;\n return previousRef.current;\n}\nfunction sessionLabel(sessionId, sessions) {\n return sessions.byId[sessionId]?.displayTitle ?? sessionId;\n}\nfunction rowHalf(event) {\n const rect = event.currentTarget.getBoundingClientRect();\n return event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n}\nfunction bindingIdsFor(bindings, worktreeId) {\n return bindings\n .filter((binding) => binding.worktreeId === worktreeId)\n .map((binding) => binding.sessionId);\n}\nfunction includesText(value, query) {\n return value.toLocaleLowerCase().includes(query);\n}\nfunction workspaceMatches(workspace, view, sessions, query) {\n if (query.length === 0)\n return true;\n if (includesText(workspace.title, query))\n return true;\n if (workspace.sessionIds.some((sessionId) => includesText(sessionLabel(sessionId, sessions), query))) {\n return true;\n }\n if (view === undefined)\n return false;\n if (view.worktrees.some((record) => includesText(record.branch, query) || includesText(record.absolutePath, query))) {\n return true;\n }\n return view.bindings.some((binding) => includesText(sessionLabel(binding.sessionId, sessions), query));\n}\n/** Workspace row using the native DSH menu, fixed action column, and drag contract. */\nfunction WorktreeWorkspaceRow({ workspace, expanded, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }) {\n const workspaceMenuItems = [\n {\n id: 'rename',\n label: 'Rename',\n icon: _jsx(IconEditOutline16, {}),\n disabled: actionPending,\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: actionPending,\n },\n ];\n const markerClass = drag.marker === 'before'\n ? styles.dropBefore\n : drag.marker === 'after'\n ? styles.dropAfter\n : '';\n return (_jsxs(\"div\", { className: `${styles.workspaceRow} ${markerClass}`, \"data-workspace-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, draggable: true, onClick: () => {\n onToggle();\n }, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', workspace.workspaceId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.workspaceDisclosure}`, \"aria-label\": `${expanded ? 'Collapse' : 'Expand'} ${workspace.title}`, \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.workspaceIcon, \"aria-hidden\": \"true\", children: expanded ? _jsx(IconFolderOpen16, {}) : _jsx(IconFolderClose16, {}) }), _jsx(\"span\", { className: styles.workspaceTitle, children: workspace.title }), _jsxs(\"span\", { className: `${styles.treeActionSlot} ${styles.workspaceActions}`, children: [_jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n onMenuOpenChange(false);\n }, items: workspaceMenuItems, onSelect: (id) => {\n onMenuOpenChange(false);\n if (id === 'rename')\n onRename();\n if (id === 'delete')\n onDelete();\n }, portal: true, closeOnPointerLeave: true, anchor: (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-workspace-menu\": true, \"aria-label\": `Workspace options for ${workspace.title}`, onClick: (event) => {\n event.stopPropagation();\n onMenuOpenChange(!menuOpen);\n }, children: _jsx(IconEllipsisOutline16, {}) })) }) }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-worktree\": true, \"aria-label\": `Add Worktree to ${workspace.title}`, onClick: (event) => {\n event.stopPropagation();\n onCreateWorktree();\n }, children: _jsx(IconPlusOutline16, {}) })] })] }));\n}\n/** Shared Main/Worktree group row with parameterized icon, state, and actions. */\nfunction WorktreeGroupRow({ kind, label, expanded, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, }) {\n const main = kind === 'main';\n return (_jsxs(\"div\", { className: styles.worktreeRow, \"data-main-group\": main ? 'true' : undefined, \"data-main-expanded\": main ? String(expanded) : undefined, onClick: onToggle, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.worktreeDisclosure}`, \"aria-label\": `${expanded ? 'Collapse' : 'Expand'} ${label}`, \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.worktreeIcon, \"aria-hidden\": \"true\", children: icon }), state !== undefined && stateLabel !== undefined && (_jsx(\"span\", { className: styles.worktreeState, role: \"img\", \"aria-label\": stateLabel, title: stateLabel, children: _jsx(StateDot, { state: state }) })), _jsx(\"span\", { className: styles.worktreeLabel, children: label }), _jsx(\"span\", { className: styles.treeActionSlot, children: onCreateSession !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-main-session\": main ? 'true' : undefined, \"data-add-session\": main ? undefined : 'true', \"aria-label\": `Add Session to ${workspaceTitle}`, onClick: (event) => {\n event.stopPropagation();\n onCreateSession();\n }, children: _jsx(IconPlusOutline16, {}) })) })] }));\n}\n/** Worktree-mode Session row with the same trailing options menu as native DSH rows. */\nfunction WorktreeSessionRow({ sessionId, label, drag, actionPending, onOpen, onRename, onFork, onArchive, }) {\n const [menuOpen, setMenuOpen] = useState(false);\n const markerClass = drag.marker === 'before'\n ? styles.dropBefore\n : drag.marker === 'after'\n ? styles.dropAfter\n : '';\n const sessionMenuItems = [\n {\n id: 'rename',\n label: 'Rename',\n icon: _jsx(IconEditOutline16, {}),\n disabled: onRename === undefined || actionPending,\n },\n {\n id: 'fork',\n label: 'Fork session',\n icon: _jsx(IconBranchOutline16, {}),\n disabled: onFork === undefined || actionPending,\n },\n {\n id: 'archive',\n label: 'Archive session',\n icon: _jsx(IconArchiveOutline20, { size: 16 }),\n disabled: onArchive === undefined || actionPending,\n },\n ];\n return (_jsxs(\"div\", { className: `${styles.treeSessionRow} ${markerClass}`, \"data-session-id\": sessionId, \"data-session-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, role: \"treeitem\", draggable: true, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', sessionId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsxs(\"button\", { type: \"button\", className: styles.treeSessionContent, onClick: onOpen, children: [_jsx(\"span\", { className: styles.treeGuide, \"aria-hidden\": \"true\", children: \"\\u2514\" }), _jsx(\"span\", { className: styles.sessionLabel, children: label })] }), _jsx(\"span\", { className: styles.rowActions, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n setMenuOpen(false);\n }, items: sessionMenuItems, onSelect: (id) => {\n setMenuOpen(false);\n if (id === 'rename')\n onRename?.(sessionId, label);\n if (id === 'fork')\n onFork?.(sessionId);\n if (id === 'archive')\n onArchive?.(sessionId);\n }, portal: true, closeOnPointerLeave: true, anchor: (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-session-menu\": true, \"aria-label\": `Session options for ${label}`, onClick: (event) => {\n event.stopPropagation();\n setMenuOpen((current) => !current);\n }, children: _jsx(IconEllipsisOutline16, {}) })) }) })] }));\n}\nfunction WorktreeSessionGroup({ groupKey, sessionIds, workspaceId, expanded, actionPending, sessions, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }) {\n const visibleSessionIds = expanded ? sessionIds : sessionIds.slice(0, 5);\n const sameGroupDrag = dragState?.groupKey === groupKey;\n return (_jsxs(_Fragment, { children: [visibleSessionIds.map((sessionId) => (_jsx(WorktreeSessionRow, { sessionId: sessionId, label: sessionLabel(sessionId, sessions), drag: {\n active: sameGroupDrag,\n marker: sameGroupDrag && dragState.over?.sessionId === sessionId\n ? dragState.over.half\n : null,\n start: () => {\n onStartDrag(groupKey, sessionId);\n },\n hover: (half) => {\n onHoverDrag(sessionId, half);\n },\n drop: (half) => {\n if (dragState === undefined)\n return;\n onCommitDrag(dragState, { sessionId, half }, sessionIds, workspaceId);\n },\n end: () => {\n if (dragState?.over !== null && dragState?.over !== undefined) {\n onCommitDrag(dragState, dragState.over, sessionIds, workspaceId);\n }\n else {\n onClearDrag();\n }\n onFinishDrag();\n },\n }, actionPending: actionPending, onOpen: () => {\n onOpen(sessionId);\n }, onRename: onRename, onFork: onFork, onArchive: onArchive }, `${groupKey}:${sessionId}`))), sessionIds.length > 5 && (_jsx(\"button\", { type: \"button\", className: styles.sessionOverflowButton, \"aria-expanded\": expanded, onClick: onToggleExpanded, children: expanded ? 'Collapse' : `Expand ${sessionIds.length - 5} more` }))] }));\n}\n/**\n * Peer Worktree navigation surface. It keeps the original DSH Workspace mode\n * intact and renders a browser-local Workspace → Worktree → Session projection.\n */\nexport function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, available, manager, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, renameSession, forkSession, archiveSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }) {\n const preferredMode = useStore((state) => state.viewMode);\n const mode = effectiveViewMode(preferredMode, available && manager !== undefined);\n const sessions = useSessions((state) => state);\n const workspaces = useWorkspaces((state) => state);\n const workspaceIds = useStableWorkspaceIds(workspaces.items);\n const [readState, setReadState] = useState(EMPTY_READ_STATE);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedWorkspaces, setExpandedWorkspaces] = useState({});\n const [expandedMains, setExpandedMains] = useState({});\n const [expandedWorktrees, setExpandedWorktrees] = useState({});\n const [worktreeModalWorkspaceId, setWorktreeModalWorkspaceId] = useState();\n const [openWorkspaceMenuId, setOpenWorkspaceMenuId] = useState();\n const [selectedBranch, setSelectedBranch] = useState('');\n const [newBranch, setNewBranch] = useState('');\n const [pendingSessionBinding, setPendingSessionBinding] = useState();\n const [actionError, setActionError] = useState();\n const [actionPending, setActionPending] = useState(false);\n const [sessionRenameTarget, setSessionRenameTarget] = useState();\n const [sessionRenameDraft, setSessionRenameDraft] = useState('');\n const [sessionRenamePending, setSessionRenamePending] = useState(false);\n const [sessionRenameError, setSessionRenameError] = useState();\n const [workspaceDrag, setWorkspaceDrag] = useState();\n const [workspaceRenameTarget, setWorkspaceRenameTarget] = useState();\n const [workspaceRenameDraft, setWorkspaceRenameDraft] = useState('');\n const [workspaceRenamePending, setWorkspaceRenamePending] = useState(false);\n const [workspaceRenameError, setWorkspaceRenameError] = useState();\n const [workspaceDeleteTarget, setWorkspaceDeleteTarget] = useState();\n const [workspaceDeletePending, setWorkspaceDeletePending] = useState(false);\n const [workspaceDeleteError, setWorkspaceDeleteError] = useState();\n const workspaceDropCommitted = useRef(false);\n const [sessionDrag, setSessionDrag] = useState();\n const [expandedSessionGroups, setExpandedSessionGroups] = useState({});\n const sessionDropCommitted = useRef(false);\n const { ref, width, bounds } = useSidebarOverlayGeometry(mode === 'worktree');\n const collapsed = width <= 64;\n const query = searchQuery.trim().toLocaleLowerCase();\n const archivedSessionIds = workspaces.archivedSessionIds ?? [];\n const refresh = useCallback(async () => {\n if (manager === undefined) {\n setReadState(EMPTY_READ_STATE);\n return;\n }\n setReadState({ status: 'loading', views: [] });\n try {\n const views = await loadWorktreeViews(manager, workspaceIds);\n setReadState({ status: 'ready', views });\n }\n catch (error) {\n setReadState({\n status: 'error',\n views: [],\n error: toWorktreeViewError(error),\n });\n }\n }, [manager, workspaceIds]);\n useEffect(() => {\n if (mode === 'worktree') {\n void refresh();\n }\n else {\n setReadState(EMPTY_READ_STATE);\n }\n }, [mode, refresh]);\n useEffect(() => {\n if (readState.status !== 'ready' || syncSessionWorkspaces === undefined)\n return;\n syncSessionWorkspaces(readState.views.flatMap((view) => view.bindings.map((binding) => ({\n workspaceId: binding.workspaceId,\n sessionId: binding.sessionId,\n }))));\n }, [readState.status, readState.views, syncSessionWorkspaces]);\n const viewByWorkspace = useMemo(() => new Map(readState.views.map((view) => [view.workspaceId, view])), [readState.views]);\n const modalWorkspace = workspaces.items.find((workspace) => workspace.workspaceId === worktreeModalWorkspaceId);\n const modalView = worktreeModalWorkspaceId === undefined\n ? undefined\n : viewByWorkspace.get(worktreeModalWorkspaceId);\n const runMutation = async (operation) => {\n setActionPending(true);\n setActionError(undefined);\n try {\n await operation();\n await refresh();\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const workspaceRenameTrimmed = workspaceRenameDraft.trim();\n const workspaceRenameDuplicate = workspaceRenameTarget !== undefined &&\n workspaceRenameTrimmed.length > 0 &&\n workspaces.items.some((workspace) => workspace.workspaceId !== workspaceRenameTarget.workspaceId &&\n workspace.title === workspaceRenameTrimmed);\n const workspaceRenameBlocked = workspaceRenamePending ||\n workspaceRenameTarget === undefined ||\n workspaceRenameTrimmed.length === 0 ||\n workspaceRenameTrimmed === workspaceRenameTarget?.currentTitle ||\n workspaceRenameDuplicate;\n const openWorkspaceRename = (workspace) => {\n setWorkspaceRenameTarget({\n workspaceId: workspace.workspaceId,\n currentTitle: workspace.title,\n });\n setWorkspaceRenameDraft(workspace.title);\n setWorkspaceRenameError(undefined);\n };\n const closeWorkspaceRename = () => {\n if (workspaceRenamePending)\n return;\n setWorkspaceRenameTarget(undefined);\n setWorkspaceRenameError(undefined);\n };\n const confirmWorkspaceRename = async () => {\n const target = workspaceRenameTarget;\n if (workspaceRenameBlocked || target === undefined)\n return;\n if (renameWorkspace === undefined) {\n setWorkspaceRenameError('Workspace rename is unavailable; retry after reconnecting.');\n return;\n }\n setWorkspaceRenamePending(true);\n setWorkspaceRenameError(undefined);\n try {\n await renameWorkspace(target.workspaceId, workspaceRenameTrimmed);\n setWorkspaceRenameTarget(undefined);\n }\n catch (error) {\n setWorkspaceRenameError(error instanceof Error ? error.message : String(error));\n }\n finally {\n setWorkspaceRenamePending(false);\n }\n };\n const openWorkspaceDelete = (workspace) => {\n setWorkspaceDeleteTarget({ workspaceId: workspace.workspaceId, title: workspace.title });\n setWorkspaceDeleteError(undefined);\n };\n const closeWorkspaceDelete = () => {\n if (workspaceDeletePending)\n return;\n setWorkspaceDeleteTarget(undefined);\n setWorkspaceDeleteError(undefined);\n };\n const confirmWorkspaceDelete = async () => {\n const target = workspaceDeleteTarget;\n if (target === undefined || workspaceDeletePending)\n return;\n if (deleteWorkspace === undefined) {\n setWorkspaceDeleteError('Workspace delete is unavailable; retry after reconnecting.');\n return;\n }\n setWorkspaceDeletePending(true);\n setWorkspaceDeleteError(undefined);\n try {\n await deleteWorkspace(target.workspaceId);\n setWorkspaceDeleteTarget(undefined);\n }\n catch (error) {\n setWorkspaceDeleteError(error instanceof Error ? error.message : String(error));\n }\n finally {\n setWorkspaceDeletePending(false);\n }\n };\n const commitWorkspaceDrag = (activeDrag, over) => {\n if (workspaceDropCommitted.current)\n return;\n workspaceDropCommitted.current = true;\n setWorkspaceDrag(undefined);\n const rows = workspaces.items;\n const targetIndex = rows.findIndex((workspace) => workspace.workspaceId === over.workspaceId);\n const sourceIndex = rows.findIndex((workspace) => workspace.workspaceId === activeDrag.workspaceId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeWorkspaceId = over.half === 'before'\n ? over.workspaceId\n : rows[targetIndex + 1]?.workspaceId;\n const anchorIndex = beforeWorkspaceId === undefined\n ? rows.length\n : rows.findIndex((workspace) => workspace.workspaceId === beforeWorkspaceId);\n if (beforeWorkspaceId === activeDrag.workspaceId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertWorkspaceBefore === undefined) {\n setActionError({\n code: 'WORKSPACE_ORDER_UNAVAILABLE',\n message: 'Workspace ordering is unavailable; retry after reconnecting.',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorkspaceBefore(activeDrag.workspaceId, beforeWorkspaceId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitSessionDrag = (activeDrag, over, sessionIds, workspaceId) => {\n if (sessionDropCommitted.current)\n return;\n sessionDropCommitted.current = true;\n setSessionDrag(undefined);\n const targetIndex = sessionIds.indexOf(over.sessionId);\n const sourceIndex = sessionIds.indexOf(activeDrag.sessionId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeSessionId = over.half === 'before'\n ? over.sessionId\n : sessionIds[targetIndex + 1];\n const anchorIndex = beforeSessionId === undefined\n ? sessionIds.length\n : sessionIds.indexOf(beforeSessionId);\n if (beforeSessionId === activeDrag.sessionId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertSessionBefore === undefined) {\n setActionError({\n code: 'SESSION_ORDER_UNAVAILABLE',\n message: 'Session ordering is unavailable; retry after reconnecting.',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertSessionBefore(workspaceId, activeDrag.sessionId, beforeSessionId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const openSessionRename = (sessionId, currentTitle) => {\n setSessionRenameTarget({ sessionId, currentTitle });\n setSessionRenameDraft(currentTitle);\n setSessionRenameError(undefined);\n };\n const closeSessionRename = () => {\n if (sessionRenamePending)\n return;\n setSessionRenameTarget(undefined);\n setSessionRenameError(undefined);\n };\n const confirmSessionRename = async () => {\n const target = sessionRenameTarget;\n const title = sessionRenameDraft.trim();\n if (target === undefined || title.length === 0 || sessionRenamePending)\n return;\n if (renameSession === undefined) {\n setSessionRenameError('Session rename is unavailable; retry after reconnecting.');\n return;\n }\n setSessionRenamePending(true);\n setSessionRenameError(undefined);\n try {\n await renameSession(target.sessionId, title);\n setSessionRenameTarget(undefined);\n }\n catch (error) {\n setSessionRenameError(error instanceof Error ? error.message : String(error));\n }\n finally {\n setSessionRenamePending(false);\n }\n };\n const archiveWorktreeSession = async (sessionId) => {\n if (archiveSession === undefined)\n return;\n await runMutation(() => archiveSession(sessionId));\n };\n const toggleWorkspace = (workspaceId) => {\n setExpandedWorkspaces((current) => ({\n ...current,\n [workspaceId]: current[workspaceId] === false,\n }));\n };\n const toggleMain = (workspaceId) => {\n setExpandedMains((current) => ({\n ...current,\n [workspaceId]: current[workspaceId] === false,\n }));\n };\n const toggleWorktree = (worktreeId) => {\n setExpandedWorktrees((current) => ({\n ...current,\n [worktreeId]: current[worktreeId] === false,\n }));\n };\n const openWorktreeCreator = (workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const baseBranch = selectDefaultBaseBranch(view?.branches ?? []);\n const existingNames = [\n ...(view?.branches ?? []).map((branch) => branch.name),\n ...(view?.worktrees ?? []).map((worktree) => worktree.branch),\n ];\n setWorktreeModalWorkspaceId(workspace.workspaceId);\n setSelectedBranch(baseBranch);\n setNewBranch(createDefaultWorktreeName(existingNames));\n setActionError(undefined);\n };\n const submitWorktree = async () => {\n const worktreeName = newBranch.trim();\n if (manager === undefined ||\n modalWorkspace === undefined ||\n selectedBranch.length === 0 ||\n worktreeName.length === 0) {\n return;\n }\n const input = {\n workspaceId: modalWorkspace.workspaceId,\n branch: selectedBranch,\n newBranch: worktreeName,\n };\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n const createdWorktree = await executeWorktreeAction(manager, {\n type: 'createWorktree',\n input,\n });\n if (createdWorktree === undefined) {\n throw new Error('Worktree creation returned no Worktree record; retry the request.');\n }\n setWorktreeModalWorkspaceId(undefined);\n if (createSessionCallback === undefined) {\n await refresh();\n setActionError({\n code: 'SESSION_CREATE_UNAVAILABLE',\n message: 'Worktree created, but Session creation is unavailable; retry after reconnecting.',\n retryable: true,\n });\n return;\n }\n const sessionInput = {\n workspaceId: createdWorktree.workspaceId,\n worktreeId: createdWorktree.worktreeId,\n cwd: createdWorktree.absolutePath,\n };\n try {\n await createSessionCallback(sessionInput);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError) {\n setPendingSessionBinding({ ...sessionInput, sessionId: error.sessionId });\n }\n throw error;\n }\n await refresh();\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const createSession = async (input) => {\n if (createSessionCallback === undefined) {\n setActionError({\n code: 'SESSION_CREATE_UNAVAILABLE',\n message: 'Session creation is unavailable; retry after reconnecting.',\n retryable: true,\n });\n return;\n }\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n await createSessionCallback(input);\n await refresh();\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError) {\n setPendingSessionBinding({ ...input, sessionId: error.sessionId });\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retrySessionBinding = async () => {\n if (manager === undefined || pendingSessionBinding === undefined)\n return;\n setActionPending(true);\n setActionError(undefined);\n try {\n await manager.bindSession({\n workspaceId: pendingSessionBinding.workspaceId,\n worktreeId: pendingSessionBinding.worktreeId,\n sessionId: pendingSessionBinding.sessionId,\n });\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n ensureSessionWorkspace?.(pendingSessionBinding.workspaceId, sessionId);\n await refresh();\n openSession(sessionId);\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const openWorkspaceSession = (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n openWorktreeSession({ open: openSession }, sessionId);\n };\n if (mode !== 'worktree')\n return null;\n const visibleWorkspaces = workspaces.items.filter((workspace) => workspaceMatches(workspace, viewByWorkspace.get(workspace.workspaceId), sessions, query));\n return (_jsxs(\"aside\", { ref: ref, className: styles.surface, \"data-worktree-surface\": true, \"data-collapsed\": collapsed || undefined, \"aria-label\": \"Worktree navigation\", style: {\n width: `${width}px`,\n ...(bounds.ready\n ? { top: `${bounds.top}px`, height: `${bounds.height}px` }\n : { height: '0px', visibility: 'hidden' }),\n }, children: [_jsxs(\"div\", { className: styles.wideContent, children: [_jsxs(\"header\", { className: styles.header, children: [_jsx(\"span\", { className: styles.title, children: \"Worktrees\" }), _jsx(\"button\", { type: \"button\", className: styles.closeButton, \"aria-label\": \"Exit Worktree mode\", onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: _jsx(IconCloseOutline16, {}) })] }), _jsxs(\"div\", { className: styles.searchRow, children: [_jsx(\"span\", { className: styles.searchIcon, \"aria-hidden\": \"true\", children: _jsx(IconSearchOutline16, {}) }), _jsx(\"input\", { className: styles.searchInput, \"aria-label\": \"Search Workspaces and Sessions\", placeholder: \"Search Workspaces and Sessions\", value: searchQuery, onChange: (event) => {\n setSearchQuery(event.currentTarget.value);\n } }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"aria-label\": \"Add Workspace\", onClick: () => {\n if (createWorkspace !== undefined)\n void runMutation(createWorkspace);\n }, children: _jsx(IconPlusOutline16, {}) })] }), _jsxs(\"div\", { className: styles.content, tabIndex: 0, children: [actionError !== undefined && (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: actionError.message }), pendingSessionBinding !== undefined && (_jsxs(\"div\", { className: styles.recoveryActions, children: [_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n void retrySessionBinding();\n }, children: \"Retry Binding\" }), _jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n setActionError(undefined);\n openSession(sessionId);\n }, children: \"Open Created Session\" })] })), actionError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n setActionError(undefined);\n void refresh();\n }, children: \"Retry\" }))] })), readState.status === 'loading' && _jsx(\"p\", { className: styles.message, children: \"Loading Workspaces\\u2026\" }), readState.status === 'error' && readState.error !== undefined ? (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: readState.error.message }), _jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n void refresh();\n }, children: \"Retry\" })] })) : readState.status === 'ready' ? (_jsx(\"div\", { className: styles.workspaceList, children: visibleWorkspaces.length === 0 ? (_jsx(\"p\", { className: styles.empty, children: \"No matching Workspaces\" })) : (visibleWorkspaces.map((workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const expanded = expandedWorkspaces[workspace.workspaceId] !== false;\n const workspaceMatchesQuery = includesText(workspace.title, query);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = unboundSessionIds(allWorkspaceSessionIds, [\n ...boundSessionIds,\n ]);\n const visibleMainSessionIds = mainSessionIds.filter((sessionId) => workspaceMatchesQuery ||\n includesText(sessionLabel(sessionId, sessions), query));\n const mainExpanded = expandedMains[workspace.workspaceId] !== false;\n const mainGroupKey = `main:${workspace.workspaceId}`;\n const worktrees = view?.worktrees ?? [];\n return (_jsxs(\"section\", { className: styles.workspaceGroup, \"data-workspace-id\": workspace.workspaceId, children: [_jsx(WorktreeWorkspaceRow, { workspace: workspace, expanded: expanded, actionPending: actionPending, menuOpen: openWorkspaceMenuId === workspace.workspaceId, drag: {\n active: workspaceDrag !== undefined,\n marker: workspaceDrag?.over?.workspaceId === workspace.workspaceId\n ? workspaceDrag.over.half\n : null,\n start: () => {\n workspaceDropCommitted.current = false;\n setWorkspaceDrag({ workspaceId: workspace.workspaceId, over: null });\n },\n hover: (half) => {\n setWorkspaceDrag((current) => current === undefined\n ? current\n : {\n ...current,\n over: { workspaceId: workspace.workspaceId, half },\n });\n },\n drop: (half) => {\n if (workspaceDrag === undefined)\n return;\n commitWorkspaceDrag(workspaceDrag, {\n workspaceId: workspace.workspaceId,\n half,\n });\n },\n end: () => {\n if (workspaceDrag?.over !== null && workspaceDrag?.over !== undefined) {\n commitWorkspaceDrag(workspaceDrag, workspaceDrag.over);\n }\n else {\n setWorkspaceDrag(undefined);\n }\n workspaceDropCommitted.current = false;\n },\n }, onToggle: () => {\n toggleWorkspace(workspace.workspaceId);\n }, onCreateWorktree: () => {\n openWorktreeCreator(workspace);\n }, onRename: () => {\n openWorkspaceRename(workspace);\n }, onDelete: () => {\n openWorkspaceDelete(workspace);\n }, onMenuOpenChange: (open) => {\n setOpenWorkspaceMenuId(open ? workspace.workspaceId : undefined);\n } }), expanded && (_jsxs(\"div\", { className: styles.treeChildren, children: [_jsx(WorktreeGroupRow, { kind: \"main\", label: \"Main\", expanded: mainExpanded, icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, onToggle: () => {\n toggleMain(workspace.workspaceId);\n }, onCreateSession: createMainSession === undefined\n ? undefined\n : () => {\n createMainSession(workspace.workspaceId);\n } }), mainExpanded && (_jsx(WorktreeSessionGroup, { groupKey: mainGroupKey, sessionIds: visibleMainSessionIds, workspaceId: workspace.workspaceId, expanded: expandedSessionGroups[mainGroupKey] === true, actionPending: actionPending, sessions: sessions, dragState: sessionDrag, onToggleExpanded: () => {\n setExpandedSessionGroups((current) => ({\n ...current,\n [mainGroupKey]: current[mainGroupKey] !== true,\n }));\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorktreeSession({ open: openSession }, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined ? undefined : archiveWorktreeSession })), worktrees.length === 0 && (_jsx(\"p\", { className: styles.emptyNested, children: \"No Worktrees\" })), worktrees.map((record) => {\n const worktreeSessionIds = filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds);\n const worktreeMatchesQuery = workspaceMatchesQuery ||\n includesText(record.branch, query) ||\n includesText(record.absolutePath, query);\n if (query.length > 0 &&\n !worktreeMatchesQuery &&\n !worktreeSessionIds.some((sessionId) => includesText(sessionLabel(sessionId, sessions), query))) {\n return null;\n }\n const visibleWorktreeSessionIds = worktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n includesText(sessionLabel(sessionId, sessions), query));\n const worktreeGroupKey = `worktree:${record.worktreeId}`;\n const state = record.status === 'removed'\n ? 'warning'\n : record.health === 'repair'\n ? 'error'\n : 'done';\n const stateLabel = record.status === 'removed'\n ? 'Detached Worktree'\n : record.health === 'repair'\n ? 'Worktree needs repair'\n : 'Active Worktree ready';\n const worktreeExpanded = expandedWorktrees[record.worktreeId] !== false;\n return (_jsxs(\"div\", { className: styles.worktreeGroup, \"data-worktree-id\": record.worktreeId, children: [_jsx(WorktreeGroupRow, { kind: \"worktree\", label: record.branch, expanded: worktreeExpanded, icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, state: state, stateLabel: stateLabel, onToggle: () => {\n toggleWorktree(record.worktreeId);\n }, onCreateSession: record.status === 'active'\n ? () => {\n void createSession({\n workspaceId: record.workspaceId,\n worktreeId: record.worktreeId,\n cwd: record.absolutePath,\n });\n }\n : undefined }), worktreeExpanded && (_jsx(WorktreeSessionGroup, { groupKey: worktreeGroupKey, sessionIds: visibleWorktreeSessionIds, workspaceId: workspace.workspaceId, expanded: expandedSessionGroups[worktreeGroupKey] === true, actionPending: actionPending, sessions: sessions, dragState: sessionDrag, onToggleExpanded: () => {\n setExpandedSessionGroups((current) => ({\n ...current,\n [worktreeGroupKey]: current[worktreeGroupKey] !== true,\n }));\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorkspaceSession(workspace.workspaceId, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined\n ? undefined\n : archiveWorktreeSession }))] }, record.worktreeId));\n })] }))] }, workspace.workspaceId));\n })) })) : null] })] }), _jsx(\"div\", { className: styles.railContent, children: _jsx(\"button\", { type: \"button\", className: styles.railButton, \"aria-label\": \"Exit Worktree mode\", onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: \"WT\" }) }), _jsxs(Modal, { open: sessionRenameTarget !== undefined, onClose: closeSessionRename, closeLabel: \"Close\", title: \"Rename session\", footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: sessionRenamePending, onClick: closeSessionRename, children: \"Cancel\" }), _jsx(Button, { variant: \"primary\", disabled: sessionRenamePending || sessionRenameDraft.trim().length === 0, onClick: () => {\n void confirmSessionRename();\n }, children: \"Rename\" })] })), children: [_jsx(Input, { className: styles.renameInput, value: sessionRenameDraft, \"aria-label\": \"Session name\", autoFocus: true, disabled: sessionRenamePending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n setSessionRenameDraft(event.currentTarget.value);\n setSessionRenameError(undefined);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void confirmSessionRename();\n }\n } }), sessionRenameError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: sessionRenameError }))] }), workspaceRenameTarget !== undefined && (_jsxs(Modal, { open: workspaceRenameTarget !== undefined, onClose: closeWorkspaceRename, closeLabel: \"Close Rename Workspace dialog\", title: \"Rename Workspace\", footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: workspaceRenamePending, onClick: closeWorkspaceRename, children: \"Cancel\" }), _jsx(Button, { variant: \"primary\", disabled: workspaceRenameBlocked, onClick: () => {\n void confirmWorkspaceRename();\n }, children: \"Rename\" })] })), children: [_jsx(Input, { className: styles.renameInput, value: workspaceRenameDraft, \"aria-label\": \"Workspace name\", autoFocus: true, disabled: workspaceRenamePending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n setWorkspaceRenameDraft(event.currentTarget.value);\n setWorkspaceRenameError(undefined);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void confirmWorkspaceRename();\n }\n } }), workspaceRenameDuplicate && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: \"A Workspace with this name already exists.\" })), workspaceRenameError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: workspaceRenameError }))] })), workspaceDeleteTarget !== undefined && (_jsx(Modal, { open: workspaceDeleteTarget !== undefined, onClose: closeWorkspaceDelete, closeLabel: \"Close Delete Workspace dialog\", title: \"Delete Workspace\", description: `Delete ${workspaceDeleteTarget.title}? This removes only the DSH Workspace registration. The directory, Sessions, and Git Worktrees will be retained.`, footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: workspaceDeletePending, onClick: closeWorkspaceDelete, children: \"Cancel\" }), _jsx(Button, { variant: \"outline\", disabled: workspaceDeletePending, onClick: () => {\n void confirmWorkspaceDelete();\n }, children: \"Delete\" })] })), children: workspaceDeleteError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: workspaceDeleteError })) })), worktreeModalWorkspaceId !== undefined && modalWorkspace !== undefined && (_jsxs(Modal, { open: worktreeModalWorkspaceId !== undefined, onClose: () => {\n if (actionPending)\n return;\n setWorktreeModalWorkspaceId(undefined);\n }, closeLabel: \"Close Create Worktree dialog\", title: \"New Worktree\", description: `${modalWorkspace.title} · the Worktree path is managed by DSH.`, footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: () => {\n setWorktreeModalWorkspaceId(undefined);\n }, children: \"Cancel\" }), _jsx(Button, { variant: \"primary\", disabled: actionPending ||\n selectedBranch.length === 0 ||\n newBranch.trim().length === 0, onClick: () => {\n void submitWorktree();\n }, children: \"Create Worktree\" })] })), children: [_jsxs(\"label\", { className: styles.modalField, children: [\"Base branch\", _jsxs(\"select\", { className: styles.actionSelect, \"aria-label\": \"Worktree base branch\", value: selectedBranch, disabled: actionPending, onChange: (event) => {\n setSelectedBranch(event.currentTarget.value);\n }, children: [_jsx(\"option\", { value: \"\", children: \"No local branch\" }), (modalView?.branches ?? []).map((branch) => (_jsxs(\"option\", { value: branch.name, children: [branch.name, branch.isCurrent ? ' (current)' : '', branch.checkedOut ? ' (checked out)' : ''] }, branch.name)))] })] }), _jsxs(\"label\", { className: styles.modalField, children: [\"Worktree name\", _jsx(Input, { className: styles.renameInput, \"aria-label\": \"Worktree name\", value: newBranch, placeholder: \"dsh/12345678\", disabled: actionPending, onChange: (event) => {\n setNewBranch(event.currentTarget.value);\n } })] }), modalView?.branches.length === 0 && (_jsx(\"p\", { className: styles.empty, children: \"No local branches found in this Workspace.\" }))] }))] }));\n}\n//# sourceMappingURL=WorktreeSurface.js.map","import { defineStore } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_VIEW_MODE_STORAGE_KEY, } from './view-mode.js';\n/** Create one root-scoped, browser-local view-mode store for the two slot entries. */\nexport function createWorktreeViewStore() {\n return defineStore({\n init: () => ({ viewMode: 'workspace-session' }),\n persist: WORKTREE_VIEW_MODE_STORAGE_KEY,\n actions: {\n setViewMode: (draft, mode) => {\n draft.viewMode = mode;\n },\n },\n });\n}\n//# sourceMappingURL=view-mode-store.js.map","import { projectVirtualWorkspaceMembership, } from './view-mode.js';\nfunction normalizeBindings(bindings) {\n const bySession = new Map();\n for (const binding of bindings) {\n if (binding.workspaceId.length === 0 || binding.sessionId.length === 0)\n continue;\n bySession.set(binding.sessionId, binding);\n }\n return [...bySession.values()];\n}\nfunction sameWorkspaceItems(left, right) {\n if (left.items.length !== right.items.length)\n return false;\n return left.items.every((item, index) => {\n const other = right.items[index];\n if (item === other)\n return true;\n if (typeof item !== 'object' ||\n item === null ||\n typeof other !== 'object' ||\n other === null ||\n !('workspaceId' in item) ||\n !('workspaceId' in other) ||\n !('sessionIds' in item) ||\n !('sessionIds' in other)) {\n return false;\n }\n const leftSessionIds = item.sessionIds;\n const rightSessionIds = other.sessionIds;\n return (item.workspaceId === other.workspaceId &&\n Array.isArray(leftSessionIds) &&\n Array.isArray(rightSessionIds) &&\n leftSessionIds.length === rightSessionIds.length &&\n leftSessionIds.every((sessionId, sessionIndex) => sessionId === rightSessionIds[sessionIndex]));\n });\n}\n/**\n * Maintains a re-playable in-memory overlay over DSH's Workspace list. Native\n * refreshes are observed and the current sidecar bindings are applied again;\n * no DSH Host mutation or persistence is involved.\n */\nexport function createVirtualWorkspaceMembership(list) {\n let bindings = [];\n let disposed = false;\n let applying = false;\n const apply = (nextBindings) => {\n const current = list.getSnapshot();\n const next = projectVirtualWorkspaceMembership(current, bindings, nextBindings);\n if (sameWorkspaceItems(current, next))\n return;\n applying = true;\n try {\n list.set(next);\n }\n finally {\n applying = false;\n }\n };\n const replay = () => {\n if (disposed || applying)\n return;\n apply(bindings);\n };\n const unsubscribe = list.subscribe(replay);\n const sync = (nextBindings) => {\n if (disposed)\n return;\n const normalized = normalizeBindings(nextBindings);\n apply(normalized);\n bindings = normalized;\n };\n return {\n ensure(binding) {\n if (disposed)\n return;\n if (bindings.some((current) => current.workspaceId === binding.workspaceId && current.sessionId === binding.sessionId)) {\n return;\n }\n sync([...bindings.filter((current) => current.sessionId !== binding.sessionId), binding]);\n },\n sync,\n removeSession(sessionId) {\n sync(bindings.filter((binding) => binding.sessionId !== sessionId));\n },\n dispose() {\n if (disposed)\n return;\n apply([]);\n bindings = [];\n disposed = true;\n unsubscribe();\n },\n };\n}\n//# sourceMappingURL=virtual-workspace-membership.js.map","import { createWorktreeConnectionAdapter } from './worktree-connection.js';\nimport { WorktreeModeAction } from './WorktreeModeAction.js';\nimport { WorktreeSurface } from './WorktreeSurface.js';\nimport { createWorktreeViewStore } from './view-mode-store.js';\nimport { createVirtualWorkspaceMembership, } from './virtual-workspace-membership.js';\nimport { createSessionForWorktree } from './worktree-view.js';\nexport { WORKTREE_CONNECTION_CHANNEL, WORKTREE_CONNECTION_ENDPOINTS, WorktreeConnectionError, createWorktreeConnectionAdapter, } from './worktree-connection.js';\n/** Required DSH Client services; Connection is the sole Worktree wire dependency. */\nexport const inject = ['connection', 'slots', 'sessions', 'workspaces'];\n/**\n * DSH Client entry. The adapter is composed once per plugin fiber and is disposed\n * with that fiber, so slot consumers share one manager and one request lifetime.\n */\nexport function apply(ctx) {\n const manager = createWorktreeConnectionAdapter(ctx.connection.rpc);\n const sessions = ctx.sessions;\n const virtualWorkspaceMembership = createVirtualWorkspaceMembership(ctx.workspaces.list);\n ctx.effect(() => () => manager.dispose(), 'clutch-dsh-worktree: connection cleanup');\n ctx.effect(() => () => virtualWorkspaceMembership.dispose(), 'clutch-dsh-worktree: Workspace membership cleanup');\n const viewStore = createWorktreeViewStore();\n const ensureSessionWorkspace = (workspaceId, sessionId) => {\n virtualWorkspaceMembership.ensure({ workspaceId, sessionId });\n };\n const syncSessionWorkspaces = (bindings) => {\n virtualWorkspaceMembership.sync(bindings);\n };\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'clutch-dsh-worktree-mode-action',\n store: viewStore,\n inject: () => ({ available: true }),\n }, WorktreeModeAction));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'clutch-dsh-worktree-navigation',\n store: viewStore,\n inject: () => ({\n available: true,\n manager,\n createWorkspace: async () => {\n const workspacePath = await ctx.workspaces.pickDirectory();\n if (workspacePath !== null)\n await ctx.workspaces.create({ path: workspacePath });\n },\n createSessionForWorktree: (input) => createSessionForWorktree({\n ...input,\n createSession: (sessionInput) => sessions.create(sessionInput),\n manager,\n beforeOpen: (sessionId) => {\n ensureSessionWorkspace(input.workspaceId, sessionId);\n },\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n createMainSession: (workspaceId) => {\n ctx.workspaces.startSession(workspaceId);\n },\n renameWorkspace: async (workspaceId, title) => {\n await ctx.workspaces.rename(workspaceId, title);\n },\n deleteWorkspace: async (workspaceId) => {\n await ctx.workspaces.delete(workspaceId);\n },\n insertWorkspaceBefore: async (workspaceId, beforeWorkspaceId) => {\n await ctx.workspaces.insertBefore(workspaceId, beforeWorkspaceId);\n },\n insertSessionBefore: async (workspaceId, sessionId, beforeSessionId) => {\n await ctx.workspaces.insertSessionBefore(workspaceId, sessionId, beforeSessionId);\n },\n renameSession: async (sessionId, title) => {\n const session = ctx.sessions.binding(sessionId)?.session;\n if (session === undefined)\n throw new Error(`unknown session \"${sessionId}\"`);\n const result = await session.rename(title);\n if (!result.ok)\n throw new Error(result.error.message);\n },\n forkSession: (sessionId) => {\n void ctx.sessions.fork({\n sessionId: sessionId,\n increaseTitle: true,\n })\n .then((childId) => {\n ctx.sessions.open(childId);\n })\n .catch(() => {\n // Fork failure leaves the current Session and Worktree projection unchanged.\n });\n },\n archiveSession: (sessionId) => ctx.workspaces.archiveSession(sessionId),\n ensureSessionWorkspace,\n syncSessionWorkspaces,\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n }, WorktreeSurface));\n}\n//# sourceMappingURL=entry.js.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["styles","IconBranchOutline16","IconEditOutline16","IconTrashOutline16","styles","IconChevronDownOutline14","IconChevronRightOutline14","IconFolderOpen16","IconFolderClose16","Menu","IconEllipsisOutline16","IconPlusOutline16","StateDot","HoverCard","IconBranchOutline16","IconArchiveOutline20","_Fragment","IconCloseOutline16","IconSearchOutline16","Modal","Button","Input"],"sources":["client/locales.js","client/worktree-connection.js","client/WorktreeModeAction.js","client/navigation.js","client/overlay-bounds.js","client/sidebar-overlay-geometry.js","client/view-mode.js","client/worktree-error-copy.js","client/worktree-view.js","client/WorktreeSurface.js","client/view-mode-store.js","client/virtual-workspace-membership.js","client/entry.js"],"sourcesContent":["export const WORKTREE_NS = 'worktree';\nexport const zh = {\n 'mode.open': '打开 Worktree 模式',\n 'mode.exit': '退出 Worktree 模式',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree 导航',\n 'workspace.rename': '重命名',\n 'workspace.delete': '删除',\n 'workspace.expand': '展开 {name}',\n 'workspace.collapse': '收起 {name}',\n 'workspace.options': '工作区选项:{name}',\n 'workspace.addWorktree': '向 {name} 添加 Worktree',\n 'workspace.add': '添加工作区',\n 'workspace.search': '搜索工作区和会话',\n 'workspace.noMatches': '没有匹配的工作区',\n 'workspace.renameTitle': '重命名工作区',\n 'workspace.name': '工作区名称',\n 'workspace.duplicate': '已存在同名工作区。',\n 'workspace.deleteTitle': '删除工作区',\n 'workspace.deleteDescription': '删除“{name}”?这只会移除 DSH 工作区注册。目录、会话和 Git Worktree 会保留。',\n 'worktree.title': 'Worktree',\n 'worktree.main': 'Main',\n 'worktree.detached': '已分离 Worktree',\n 'worktree.repair': 'Worktree 需要修复',\n 'worktree.ready': '活动 Worktree 已就绪',\n 'worktree.expand': '展开 {name}',\n 'worktree.collapse': '收起 {name}',\n 'worktree.options': 'Worktree 选项:{name}',\n 'worktree.remove': '移除 Worktree',\n 'worktree.removeDescription': '移除“{name}”?Session 会保留在 DSH 中,并作为已分离关系继续可用。',\n 'worktree.addSession': '向 {name} 添加会话',\n 'worktree.noWorktrees': '暂无 Worktree',\n 'worktree.createTitle': '新建 Worktree',\n 'worktree.createDescription': '“{name}” · Worktree 路径由 DSH 管理。',\n 'worktree.baseBranch': 'Worktree 基线分支',\n 'worktree.noLocalBranch': '没有本地分支',\n 'worktree.noBranches': '此工作区中没有找到本地分支。',\n 'worktree.name': 'Worktree 名称',\n 'worktree.create': '创建 Worktree',\n 'session.options': '会话选项:{name}',\n 'session.rename': '重命名会话',\n 'session.fork': 'Fork 会话',\n 'session.archive': '归档会话',\n 'session.expandMore': '展开其余 {count} 个会话',\n 'session.collapse': '收起',\n 'session.name': '会话名称',\n 'dialog.close': '关闭',\n 'dialog.closeWorkspaceRename': '关闭重命名工作区对话框',\n 'dialog.closeWorkspaceDelete': '关闭删除工作区对话框',\n 'dialog.closeWorktreeCreate': '关闭创建 Worktree 对话框',\n 'dialog.closeWorktreeRemove': '关闭移除 Worktree 对话框',\n 'dialog.cancel': '取消',\n 'dialog.rename': '重命名',\n 'dialog.delete': '删除',\n 'action.retry': '重试',\n 'action.retryBinding': '重试绑定',\n 'action.openCreatedSession': '打开已创建的 Session',\n 'status.loading': '正在加载工作区…',\n 'error.worktreeDataUnavailable': 'Worktree 数据不可用,请重试。',\n 'error.connectionDisposed': 'Worktree 连接已释放,请重新加载插件后重试。',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} 调用失败;连接错误,可重试:{reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} 返回了无效结果,请重试请求。',\n 'error.workspaceOrderingUnavailable': '工作区排序不可用,请重新连接后重试。',\n 'error.sessionOrderingUnavailable': '会话排序不可用,请重新连接后重试。',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree 已创建,但 Session 创建不可用,请重新连接后重试。',\n 'error.sessionCreationUnavailable': 'Session 创建不可用,请重新连接后重试。',\n 'error.worktreeRecordMissing': 'Worktree 创建未返回 Worktree 记录,请重试请求。',\n 'error.workspaceRenameUnavailable': '工作区重命名不可用,请重新连接后重试。',\n 'error.workspaceDeleteUnavailable': '工作区删除不可用,请重新连接后重试。',\n 'error.sessionRenameUnavailable': '会话重命名不可用,请重新连接后重试。',\n 'error.sessionBindingFailed': 'Session {sessionId} 已创建,但 Worktree 绑定失败:{reason}',\n 'branch.current': '(当前)',\n 'branch.checkedOut': '(已检出)',\n};\nexport const en = {\n 'mode.open': 'Open Worktree mode',\n 'mode.exit': 'Exit Worktree mode',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree navigation',\n 'workspace.rename': 'Rename',\n 'workspace.delete': 'Delete',\n 'workspace.expand': 'Expand {name}',\n 'workspace.collapse': 'Collapse {name}',\n 'workspace.options': 'Workspace options for {name}',\n 'workspace.addWorktree': 'Add Worktree to {name}',\n 'workspace.add': 'Add Workspace',\n 'workspace.search': 'Search Workspaces and Sessions',\n 'workspace.noMatches': 'No matching Workspaces',\n 'workspace.renameTitle': 'Rename Workspace',\n 'workspace.name': 'Workspace name',\n 'workspace.duplicate': 'A Workspace with this name already exists.',\n 'workspace.deleteTitle': 'Delete Workspace',\n 'workspace.deleteDescription': 'Delete {name}? This removes only the DSH Workspace registration. The directory, Sessions, and Git Worktrees will be retained.',\n 'worktree.title': 'Worktrees',\n 'worktree.main': 'Main',\n 'worktree.detached': 'Detached Worktree',\n 'worktree.repair': 'Worktree needs repair',\n 'worktree.ready': 'Active Worktree ready',\n 'worktree.expand': 'Expand {name}',\n 'worktree.collapse': 'Collapse {name}',\n 'worktree.options': 'Worktree options for {name}',\n 'worktree.remove': 'Remove Worktree',\n 'worktree.removeDescription': 'Remove {name}? Sessions stay in DSH and remain available as detached bindings.',\n 'worktree.addSession': 'Add Session to {name}',\n 'worktree.noWorktrees': 'No Worktrees',\n 'worktree.createTitle': 'New Worktree',\n 'worktree.createDescription': '{name} · the Worktree path is managed by DSH.',\n 'worktree.baseBranch': 'Worktree base branch',\n 'worktree.noLocalBranch': 'No local branch',\n 'worktree.noBranches': 'No local branches found in this Workspace.',\n 'worktree.name': 'Worktree name',\n 'worktree.create': 'Create Worktree',\n 'session.options': 'Session options for {name}',\n 'session.rename': 'Rename session',\n 'session.fork': 'Fork session',\n 'session.archive': 'Archive session',\n 'session.expandMore': 'Expand {count} more',\n 'session.collapse': 'Collapse',\n 'session.name': 'Session name',\n 'dialog.close': 'Close',\n 'dialog.closeWorkspaceRename': 'Close Rename Workspace dialog',\n 'dialog.closeWorkspaceDelete': 'Close Delete Workspace dialog',\n 'dialog.closeWorktreeCreate': 'Close Create Worktree dialog',\n 'dialog.closeWorktreeRemove': 'Close Remove Worktree dialog',\n 'dialog.cancel': 'Cancel',\n 'dialog.rename': 'Rename',\n 'dialog.delete': 'Delete',\n 'action.retry': 'Retry',\n 'action.retryBinding': 'Retry Binding',\n 'action.openCreatedSession': 'Open Created Session',\n 'status.loading': 'Loading Workspaces…',\n 'error.worktreeDataUnavailable': 'Worktree data is unavailable. Retry the request.',\n 'error.connectionDisposed': 'Worktree connection is disposed; reload the plugin and retry.',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} failed; retryable connection error: {reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} returned an invalid result; retry the request.',\n 'error.workspaceOrderingUnavailable': 'Workspace ordering is unavailable; retry after reconnecting.',\n 'error.sessionOrderingUnavailable': 'Session ordering is unavailable; retry after reconnecting.',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree created, but Session creation is unavailable; retry after reconnecting.',\n 'error.sessionCreationUnavailable': 'Session creation is unavailable; retry after reconnecting.',\n 'error.worktreeRecordMissing': 'Worktree creation returned no Worktree record; retry the request.',\n 'error.workspaceRenameUnavailable': 'Workspace rename is unavailable; retry after reconnecting.',\n 'error.workspaceDeleteUnavailable': 'Workspace delete is unavailable; retry after reconnecting.',\n 'error.sessionRenameUnavailable': 'Session rename is unavailable; retry after reconnecting.',\n 'error.sessionBindingFailed': 'Session {sessionId} was created, but Worktree binding failed: {reason}',\n 'branch.current': ' (current)',\n 'branch.checkedOut': ' (checked out)',\n};\n//# sourceMappingURL=locales.js.map","/** The one logical channel shared by the DSH Connection and Typert Gateway. */\nexport const WORKTREE_CONNECTION_CHANNEL = '/api';\n/**\n * Canonical Worktree endpoints owned by this adapter. Keeping the table here makes\n * the browser call surface auditable without making React know wire names.\n */\nexport const WORKTREE_CONNECTION_ENDPOINTS = Object.freeze({\n listWorktrees: 'worktreeManager/listWorktrees',\n listBranches: 'worktreeManager/listBranches',\n createWorktree: 'worktreeManager/createWorktree',\n removeWorktree: 'worktreeManager/removeWorktree',\n listBindings: 'worktreeManager/listBindings',\n bindSession: 'worktreeManager/bindSession',\n});\n/** Browser-safe error shared by transport, Gateway, endpoint and domain failures. */\nexport class WorktreeConnectionError extends Error {\n code;\n details;\n retryable;\n constructor(options) {\n super(options.message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = 'WorktreeConnectionError';\n this.code = options.code;\n this.details = Object.freeze({ ...(options.details ?? {}) });\n this.retryable = options.retryable;\n }\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isWorktreeError(value) {\n return (isRecord(value) &&\n typeof value.code === 'string' &&\n typeof value.message === 'string' &&\n isRecord(value.details));\n}\nfunction isWorktreeRemoteResult(value) {\n if (!isRecord(value) || typeof value.ok !== 'boolean')\n return false;\n return value.ok || (isWorktreeError(value.error) && value.error.details !== undefined);\n}\nfunction disposedError() {\n return new WorktreeConnectionError({\n code: 'CLIENT_DISPOSED',\n message: '',\n details: {},\n retryable: false,\n });\n}\nfunction connectionFailure(endpoint, error, code = 'CONNECTION_CALL_FAILED') {\n const message = error instanceof Error ? error.message : String(error);\n return new WorktreeConnectionError({\n code,\n message,\n details: { endpoint },\n retryable: true,\n cause: error,\n });\n}\nfunction gatewayFailure(endpoint, result) {\n const rawDetails = isRecord(result.error.details) ? result.error.details : {};\n throw new WorktreeConnectionError({\n code: result.error.code,\n message: result.error.message,\n details: { endpoint, ...rawDetails },\n retryable: true,\n });\n}\nfunction invalidResult(endpoint) {\n return new WorktreeConnectionError({\n code: 'WORKTREE_RPC_INVALID_RESULT',\n message: '',\n details: { endpoint },\n retryable: true,\n });\n}\nfunction unwrap(endpoint, result) {\n if (!result.ok)\n gatewayFailure(endpoint, result);\n if (!isWorktreeRemoteResult(result.value))\n throw invalidResult(endpoint);\n if (!result.value.ok) {\n throw new WorktreeConnectionError({\n code: result.value.error.code,\n message: result.value.error.message,\n details: result.value.error.details,\n retryable: false,\n });\n }\n return result.value.value;\n}\n/**\n * Adapt the shared DSH Connection RPC into the existing WorktreeManager contract.\n * All wire details and request cancellation live behind this one deep module.\n */\nexport function createWorktreeConnectionAdapter(rpc) {\n const inFlight = new Set();\n let disposed = false;\n async function invoke(method, input) {\n if (disposed)\n throw disposedError();\n const controller = new AbortController();\n inFlight.add(controller);\n const endpoint = WORKTREE_CONNECTION_ENDPOINTS[method];\n try {\n let result;\n try {\n result = await rpc.call(WORKTREE_CONNECTION_CHANNEL, endpoint, { args: { input } }, controller.signal);\n }\n catch (error) {\n if (disposed && controller.signal.aborted)\n throw disposedError();\n throw connectionFailure(endpoint, error);\n }\n return unwrap(endpoint, result);\n }\n finally {\n inFlight.delete(controller);\n }\n }\n return {\n listWorktrees: (input) => invoke('listWorktrees', input),\n listBranches: (input) => invoke('listBranches', input),\n createWorktree: (input) => invoke('createWorktree', input),\n async removeWorktree(input) {\n await invoke('removeWorktree', input);\n },\n listBindings: (input) => invoke('listBindings', input),\n bindSession: (input) => invoke('bindSession', input),\n dispose() {\n if (disposed)\n return;\n disposed = true;\n for (const controller of inFlight)\n controller.abort();\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-connection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree.css';\n/** Footer action that enters/exits the peer Worktree navigation mode. */\nexport function WorktreeModeAction({ wide, useStore, actions, t, available, }) {\n if (!available)\n return null;\n const mode = useStore((state) => state.viewMode);\n const active = mode === 'worktree';\n return (_jsxs(\"button\", { type: \"button\", className: styles.action, \"data-worktree-mode-action\": true, \"data-active\": active || undefined, \"data-collapsed\": !wide || undefined, \"aria-label\": active ? t('mode.exit') : t('mode.open'), \"aria-pressed\": active, title: active ? t('mode.exit') : t('mode.label'), onClick: () => {\n actions.setViewMode(active ? 'workspace-session' : 'worktree');\n }, children: [_jsx(IconBranchOutline16, { size: wide ? 16 : 18 }), wide && _jsx(\"span\", { className: styles.actionLabel, children: t('mode.label') })] }));\n}\n//# sourceMappingURL=WorktreeModeAction.js.map","/** Open an existing Session through DSH without touching the peer view mode. */\nexport function openWorktreeSession(opener, sessionId) {\n opener.open(sessionId);\n}\n//# sourceMappingURL=navigation.js.map","export function computeOverlayBounds(frame, newSession, footer) {\n if (newSession === undefined || footer === undefined) {\n return { ready: false, top: 0, height: 0 };\n }\n const top = Math.max(0, newSession.top - frame.top);\n const footerTop = Math.max(top, footer.top - frame.top);\n return { ready: true, top, height: footerTop - top };\n}\n//# sourceMappingURL=overlay-bounds.js.map","import { useLayoutEffect, useRef, useState } from 'react';\nimport { computeOverlayBounds } from './overlay-bounds.js';\nconst EMPTY_BOUNDS = { ready: false, top: 0, height: 0 };\nfunction asRect(element) {\n const rect = element.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n}\nexport function resolveNativeSidebarRoot(sidebar) {\n const directChild = sidebar.firstElementChild;\n if (directChild === null)\n return undefined;\n const directRect = directChild.getBoundingClientRect();\n if (directRect.width > 0 || directRect.height > 0)\n return directChild;\n return directChild.firstElementChild ?? directChild;\n}\nexport function findNewSessionAnchor(root) {\n const labels = ['新建会话', 'New session', '新会话', 'New Session'];\n const buttons = Array.from(root.querySelectorAll('button'));\n const visibleLabel = buttons.find((button) => {\n const text = button.textContent?.trim();\n return text === '新会话' || text === 'New Session';\n });\n if (visibleLabel !== undefined)\n return visibleLabel;\n for (const label of labels) {\n const button = buttons.find((candidate) => candidate.getAttribute('aria-label') === label);\n if (button !== undefined)\n return button;\n }\n return undefined;\n}\nexport function useSidebarOverlayGeometry(active) {\n const ref = useRef(null);\n const [width, setWidth] = useState(280);\n const [bounds, setBounds] = useState(EMPTY_BOUNDS);\n useLayoutEffect(() => {\n if (!active) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const surface = ref.current;\n const overlay = surface?.closest('[data-shell-overlay]');\n const frame = overlay?.parentElement;\n const sidebar = frame?.firstElementChild;\n const nativeRoot = sidebar === null || sidebar === undefined ? undefined : resolveNativeSidebarRoot(sidebar);\n if (!(overlay instanceof HTMLElement) ||\n !(sidebar instanceof HTMLElement) ||\n !(nativeRoot instanceof HTMLElement)) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n let frameHandle;\n const update = () => {\n const newSession = findNewSessionAnchor(nativeRoot);\n const footer = nativeRoot.lastElementChild;\n const nextWidth = sidebar.getBoundingClientRect().width;\n if (nextWidth > 0)\n setWidth(nextWidth);\n setBounds(computeOverlayBounds(asRect(overlay), newSession === undefined ? undefined : asRect(newSession), footer === null ? undefined : asRect(footer)));\n };\n const scheduleUpdate = () => {\n if (frameHandle !== undefined)\n return;\n frameHandle = requestAnimationFrame(() => {\n frameHandle = undefined;\n update();\n });\n };\n update();\n const resizeObserver = typeof ResizeObserver === 'function'\n ? new ResizeObserver(scheduleUpdate)\n : undefined;\n for (const element of [overlay, sidebar, nativeRoot]) {\n resizeObserver?.observe(element);\n }\n const newSession = findNewSessionAnchor(nativeRoot);\n const footer = nativeRoot.lastElementChild;\n if (newSession !== undefined)\n resizeObserver?.observe(newSession);\n if (footer !== null)\n resizeObserver?.observe(footer);\n const mutationObserver = typeof MutationObserver === 'function'\n ? new MutationObserver(scheduleUpdate)\n : undefined;\n mutationObserver?.observe(nativeRoot, { childList: true, subtree: true });\n return () => {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n if (frameHandle !== undefined)\n cancelAnimationFrame(frameHandle);\n };\n }, [active]);\n return { ref, width, bounds };\n}\n//# sourceMappingURL=sidebar-overlay-geometry.js.map","/** Browser-local storage key; it is never sent to DSH or the sidecar. */\nexport const WORKTREE_VIEW_MODE_STORAGE_KEY = 'clutch-dsh-worktree.view-mode';\n/** Guard persisted values before they become a visible mode. */\nexport function isWorktreeViewMode(value) {\n return value === 'workspace-session' || value === 'worktree';\n}\n/** Degraded/unavailable plugin state always exposes the original DSH view. */\nexport function effectiveViewMode(preferred, worktreeServiceAvailable) {\n if (!worktreeServiceAvailable || !isWorktreeViewMode(preferred))\n return 'workspace-session';\n return preferred;\n}\n/** Keep the Main bucket scoped to the selected DSH Workspace before filtering bindings. */\nexport function workspaceSessionIds(workspaces, workspaceId, sessionIds) {\n if (workspaceId === undefined)\n return [];\n const workspace = workspaces.items.find((candidate) => candidate.workspaceId === workspaceId);\n if (workspace === undefined)\n return [];\n const listed = new Set(sessionIds);\n return workspace.sessionIds.filter((sessionId) => listed.has(sessionId));\n}\nexport function unboundSessionIds(sessionIds, boundSessionIds) {\n const bound = new Set(boundSessionIds);\n return sessionIds.filter((sessionId) => !bound.has(sessionId));\n}\n/**\n * Apply a browser-only membership delta to a DSH Workspace list snapshot.\n * `previousBindings` are removed first so the same function can also undo a\n * projection after a binding is deleted or the plugin is disposed.\n */\nexport function projectVirtualWorkspaceMembership(snapshot, previousBindings, nextBindings) {\n const previousSessionIds = new Set(previousBindings.map((binding) => binding.sessionId));\n const nextByWorkspace = new Map();\n for (const binding of nextBindings) {\n const sessionIds = nextByWorkspace.get(binding.workspaceId) ?? [];\n if (!sessionIds.includes(binding.sessionId))\n sessionIds.push(binding.sessionId);\n nextByWorkspace.set(binding.workspaceId, sessionIds);\n }\n const items = snapshot.items.map((workspace) => {\n const nativeSessionIds = workspace.sessionIds.filter((sessionId) => !previousSessionIds.has(sessionId));\n const virtualSessionIds = nextByWorkspace.get(workspace.workspaceId) ?? [];\n const sessionIds = [\n ...nativeSessionIds,\n ...virtualSessionIds.filter((sessionId) => !nativeSessionIds.includes(sessionId)),\n ];\n if (sessionIds.length === workspace.sessionIds.length &&\n sessionIds.every((sessionId, index) => sessionId === workspace.sessionIds[index])) {\n return workspace;\n }\n return { ...workspace, sessionIds };\n });\n if (items.every((workspace, index) => workspace === snapshot.items[index]))\n return snapshot;\n return { ...snapshot, items };\n}\n/**\n * Select the initial Worktree surface Workspace without navigating DSH:\n * current Session membership wins, then DSH recency, then the first available\n * Workspace keeps the surface usable in an empty/reconnecting fixture.\n */\nexport function initialWorkspaceId(workspaces, sessions) {\n const currentSessionId = sessions.current;\n if (currentSessionId !== undefined) {\n const currentWorkspace = workspaces.items.find((workspace) => workspace.sessionIds.includes(currentSessionId));\n if (currentWorkspace !== undefined)\n return currentWorkspace.workspaceId;\n }\n if (workspaces.recentWorkspaceId !== undefined &&\n workspaces.items.some((workspace) => workspace.workspaceId === workspaces.recentWorkspaceId)) {\n return workspaces.recentWorkspaceId;\n }\n return workspaces.items[0]?.workspaceId;\n}\n//# sourceMappingURL=view-mode.js.map","function detail(error, name) {\n const value = error.details?.[name];\n return typeof value === 'string' ? value : '';\n}\nfunction reason(error, t) {\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n}\nexport function formatWorktreeViewError(error, t) {\n switch (error.code) {\n case 'CLIENT_DISPOSED':\n return t('error.connectionDisposed');\n case 'CONNECTION_CALL_FAILED':\n return t('error.connectionFailed', {\n endpoint: detail(error, 'endpoint'),\n reason: reason(error, t),\n });\n case 'WORKTREE_RPC_INVALID_RESULT':\n return t('error.invalidResult', { endpoint: detail(error, 'endpoint') });\n case 'WORKSPACE_ORDER_UNAVAILABLE':\n return t('error.workspaceOrderingUnavailable');\n case 'SESSION_ORDER_UNAVAILABLE':\n return t('error.sessionOrderingUnavailable');\n case 'SESSION_CREATE_UNAVAILABLE':\n return t('error.sessionCreationUnavailable');\n case 'WORKTREE_CREATED_SESSION_UNAVAILABLE':\n return t('error.worktreeCreatedSessionUnavailable');\n case 'WORKTREE_RECORD_MISSING':\n return t('error.worktreeRecordMissing');\n case 'WORKSPACE_RENAME_UNAVAILABLE':\n return t('error.workspaceRenameUnavailable');\n case 'WORKSPACE_DELETE_UNAVAILABLE':\n return t('error.workspaceDeleteUnavailable');\n case 'SESSION_RENAME_UNAVAILABLE':\n return t('error.sessionRenameUnavailable');\n case 'SESSION_BINDING_FAILED':\n return t('error.sessionBindingFailed', {\n sessionId: detail(error, 'sessionId'),\n reason: reason(error, t),\n });\n default:\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n }\n}\n//# sourceMappingURL=worktree-error-copy.js.map","/** A DSH Session exists even when the external Worktree binding needs repair. */\nexport class WorktreeSessionBindingError extends Error {\n code = 'SESSION_BINDING_FAILED';\n retryable = true;\n sessionId;\n cause;\n constructor(sessionId, cause) {\n const reason = cause instanceof Error ? cause.message : String(cause);\n super(reason);\n this.name = 'WorktreeSessionBindingError';\n this.sessionId = sessionId;\n this.cause = cause;\n }\n}\n/** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */\nexport function stableWorkspaceIds(previous, next) {\n if (previous.length !== next.length)\n return next;\n for (let index = 0; index < previous.length; index += 1) {\n if (previous[index] !== next[index])\n return next;\n }\n return previous;\n}\n/** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */\nexport function selectDefaultBaseBranch(branches) {\n return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';\n}\nfunction browserRandomUuid() {\n const randomUUID = globalThis.crypto?.randomUUID;\n if (typeof randomUUID === 'function')\n return randomUUID.call(globalThis.crypto);\n return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;\n}\n/** Generate a short, editable default branch name without colliding with known local names. */\nexport function createDefaultWorktreeName(existingNames, randomUuid = browserRandomUuid) {\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n for (let attempt = 0; attempt < 100; attempt += 1) {\n const suffix = randomUuid().replace(/[^a-z0-9]/gi, '').slice(0, 8).toLowerCase();\n if (suffix.length < 8)\n continue;\n const candidate = `dsh/${suffix}`;\n if (!usedNames.has(candidate))\n return candidate;\n }\n throw new Error('Unable to generate an available default Worktree name.');\n}\n/** Hide DSH-archived Sessions from the browser-local Worktree projection. */\nexport function filterArchivedSessionIds(sessionIds, archivedSessionIds) {\n return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));\n}\n/** Read all three Worktree projections needed by the surface in one refresh. */\nexport async function loadWorktreeView(manager, workspaceId) {\n const [worktrees, branches, bindings] = await Promise.all([\n manager.listWorktrees({ workspaceId }),\n manager.listBranches({ workspaceId }),\n manager.listBindings({ workspaceId }),\n ]);\n return { worktrees, branches, bindings };\n}\n/** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */\nexport async function loadWorktreeViews(manager, workspaceIds) {\n return Promise.all(workspaceIds.map(async (workspaceId) => ({\n workspaceId,\n ...(await loadWorktreeView(manager, workspaceId)),\n })));\n}\n/** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */\nexport async function executeWorktreeAction(manager, action) {\n if (action.type === 'createWorktree') {\n return manager.createWorktree(action.input);\n }\n if (action.type === 'removeWorktree') {\n await manager.removeWorktree(action.input);\n return;\n }\n}\n/**\n * Create a normal DSH Session at a Worktree cwd, then add the external binding.\n * A binding failure deliberately leaves the DSH-created Session intact.\n */\nexport async function createSessionForWorktree(input) {\n const sessionId = await input.createSession({ cwd: input.cwd });\n try {\n await input.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(sessionId, error);\n }\n input.beforeOpen?.(sessionId);\n input.openSession(sessionId);\n return sessionId;\n}\nfunction recordDetails(value) {\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n return undefined;\n const details = value.details;\n if (typeof details !== 'object' || details === null || Array.isArray(details))\n return undefined;\n return details;\n}\n/** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */\nexport function toWorktreeViewError(error) {\n if (typeof error === 'object' && error !== null) {\n const candidate = error;\n const details = error instanceof WorktreeSessionBindingError\n ? { ...(recordDetails(error) ?? {}), sessionId: error.sessionId }\n : recordDetails(error);\n return {\n code: typeof candidate.code === 'string' ? candidate.code : 'WORKTREE_VIEW_FAILED',\n message: typeof candidate.message === 'string' ? candidate.message : '',\n retryable: candidate.retryable !== false,\n ...(details === undefined ? {} : { details }),\n };\n }\n return {\n code: 'WORKTREE_VIEW_FAILED',\n message: '',\n retryable: true,\n };\n}\n//# sourceMappingURL=worktree-view.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button, HoverCard, IconArchiveOutline20, IconBranchOutline16, IconChevronDownOutline14, IconChevronRightOutline14, IconCloseOutline16, IconEditOutline16, IconEllipsisOutline16, IconFolderClose16, IconFolderOpen16, IconPlusOutline16, IconSearchOutline16, IconTrashOutline16, Input, Menu, Modal, StateDot, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { openWorktreeSession } from './navigation.js';\nimport { useSidebarOverlayGeometry } from './sidebar-overlay-geometry.js';\nimport { effectiveViewMode, unboundSessionIds, workspaceSessionIds } from './view-mode.js';\nimport { formatWorktreeViewError } from './worktree-error-copy.js';\nimport { executeWorktreeAction, createDefaultWorktreeName, filterArchivedSessionIds, loadWorktreeViews, selectDefaultBaseBranch, stableWorkspaceIds, toWorktreeViewError, WorktreeSessionBindingError, } from './worktree-view.js';\nimport styles from './worktree.css';\nfunction toNativeWorktreeViewError(error) {\n const viewError = toWorktreeViewError(error);\n if (typeof error === 'object' && error !== null)\n return viewError;\n return { ...viewError, message: String(error) };\n}\nconst EMPTY_READ_STATE = { status: 'idle', views: [] };\nfunction useStableWorkspaceIds(workspaces) {\n const next = workspaces.map((workspace) => workspace.workspaceId);\n const previousRef = useRef([]);\n const stable = stableWorkspaceIds(previousRef.current, next);\n if (stable !== previousRef.current)\n previousRef.current = stable;\n return previousRef.current;\n}\nfunction sessionLabel(sessionId, sessions) {\n return sessions.byId[sessionId]?.displayTitle ?? sessionId;\n}\nfunction rowHalf(event) {\n const rect = event.currentTarget.getBoundingClientRect();\n return event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n}\nfunction bindingIdsFor(bindings, worktreeId) {\n return bindings\n .filter((binding) => binding.worktreeId === worktreeId)\n .map((binding) => binding.sessionId);\n}\nfunction includesText(value, query) {\n return value.toLocaleLowerCase().includes(query);\n}\nfunction workspaceMatches(workspace, view, sessions, query) {\n if (query.length === 0)\n return true;\n if (includesText(workspace.title, query))\n return true;\n if (workspace.sessionIds.some((sessionId) => includesText(sessionLabel(sessionId, sessions), query))) {\n return true;\n }\n if (view === undefined)\n return false;\n if (view.worktrees.some((record) => includesText(record.branch, query) || includesText(record.absolutePath, query))) {\n return true;\n }\n return view.bindings.some((binding) => includesText(sessionLabel(binding.sessionId, sessions), query));\n}\n/** Workspace row using the native DSH menu, fixed action column, and drag contract. */\nfunction WorktreeWorkspaceRow({ t, workspace, expanded, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }) {\n const workspaceMenuItems = [\n {\n id: 'rename',\n label: t('workspace.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: actionPending,\n },\n {\n id: 'delete',\n label: t('workspace.delete'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: actionPending,\n },\n ];\n const markerClass = drag.marker === 'before'\n ? styles.dropBefore\n : drag.marker === 'after'\n ? styles.dropAfter\n : '';\n return (_jsxs(\"div\", { className: `${styles.workspaceRow} ${markerClass}`, \"data-workspace-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, draggable: true, onClick: () => {\n onToggle();\n }, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', workspace.workspaceId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.workspaceDisclosure}`, \"aria-label\": t(expanded ? 'workspace.collapse' : 'workspace.expand', {\n name: workspace.title,\n }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.workspaceIcon, \"aria-hidden\": \"true\", children: expanded ? _jsx(IconFolderOpen16, {}) : _jsx(IconFolderClose16, {}) }), _jsx(\"span\", { className: styles.workspaceTitle, children: workspace.title }), _jsxs(\"span\", { className: `${styles.treeActionSlot} ${styles.workspaceActions}`, children: [_jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n onMenuOpenChange(false);\n }, items: workspaceMenuItems, onSelect: (id) => {\n onMenuOpenChange(false);\n if (id === 'rename')\n onRename();\n if (id === 'delete')\n onDelete();\n }, portal: true, closeOnPointerLeave: true, anchor: (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-workspace-menu\": true, \"aria-label\": t('workspace.options', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onMenuOpenChange(!menuOpen);\n }, children: _jsx(IconEllipsisOutline16, {}) })) }) }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-worktree\": true, \"aria-label\": t('workspace.addWorktree', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onCreateWorktree();\n }, children: _jsx(IconPlusOutline16, {}) })] })] }));\n}\n/** Shared Main/Worktree group row with parameterized icon, state, and actions. */\nfunction WorktreeGroupRow({ t, kind, label, expanded, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, }) {\n const main = kind === 'main';\n const row = (_jsxs(\"div\", { className: styles.worktreeRow, \"data-main-group\": main ? 'true' : undefined, \"data-main-expanded\": main ? String(expanded) : undefined, \"data-menu-open\": menu?.open ? 'true' : undefined, onClick: onToggle, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.worktreeDisclosure}`, \"aria-label\": t(expanded ? 'worktree.collapse' : 'worktree.expand', { name: label }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.worktreeIcon, \"aria-hidden\": \"true\", children: icon }), state !== undefined && stateLabel !== undefined && (_jsx(\"span\", { className: styles.worktreeState, role: \"img\", \"aria-label\": stateLabel, title: stateLabel, children: _jsx(StateDot, { state: state }) })), _jsx(\"span\", { className: styles.worktreeLabel, children: label }), _jsxs(\"span\", { className: styles.treeActionSlot, children: [menu !== undefined && (_jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menu.open, onClose: () => {\n menu.onOpenChange(false);\n }, items: [\n {\n id: 'remove',\n label: t('worktree.remove'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: menu.disabled,\n },\n ], onSelect: (id) => {\n menu.onOpenChange(false);\n if (id === 'remove')\n menu.onRemove();\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-worktree-menu\": true, \"aria-label\": t('worktree.options', { name: menu.label }), onClick: (event) => {\n event.stopPropagation();\n menu.onOpenChange(!menu.open);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) })), onCreateSession !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-main-session\": main ? 'true' : undefined, \"data-add-session\": main ? undefined : 'true', \"aria-label\": t('worktree.addSession', { name: workspaceTitle }), onClick: (event) => {\n event.stopPropagation();\n onCreateSession();\n }, children: _jsx(IconPlusOutline16, {}) }))] })] }));\n if (main)\n return row;\n return (_jsx(HoverCard, { anchor: row, content: _jsx(\"div\", { className: styles.worktreeHoverTitle, children: label }), openDelayMs: 500, disabled: menu?.open === true }));\n}\n/** Worktree-mode Session row with the same trailing options menu as native DSH rows. */\nfunction WorktreeSessionRow({ t, sessionId, label, drag, actionPending, onOpen, onRename, onFork, onArchive, }) {\n const [menuOpen, setMenuOpen] = useState(false);\n const markerClass = drag.marker === 'before'\n ? styles.dropBefore\n : drag.marker === 'after'\n ? styles.dropAfter\n : '';\n const sessionMenuItems = [\n {\n id: 'rename',\n label: t('session.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: onRename === undefined || actionPending,\n },\n {\n id: 'fork',\n label: t('session.fork'),\n icon: _jsx(IconBranchOutline16, {}),\n disabled: onFork === undefined || actionPending,\n },\n {\n id: 'archive',\n label: t('session.archive'),\n icon: _jsx(IconArchiveOutline20, { size: 16 }),\n disabled: onArchive === undefined || actionPending,\n },\n ];\n return (_jsxs(\"div\", { className: `${styles.treeSessionRow} ${markerClass}`, \"data-session-id\": sessionId, \"data-session-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, role: \"treeitem\", draggable: true, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', sessionId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsxs(\"button\", { type: \"button\", className: styles.treeSessionContent, onClick: onOpen, children: [_jsx(\"span\", { className: styles.treeGuide, \"aria-hidden\": \"true\", children: \"\\u2514\" }), _jsx(\"span\", { className: styles.sessionLabel, children: label })] }), _jsx(\"span\", { className: styles.rowActions, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n setMenuOpen(false);\n }, items: sessionMenuItems, onSelect: (id) => {\n setMenuOpen(false);\n if (id === 'rename')\n onRename?.(sessionId, label);\n if (id === 'fork')\n onFork?.(sessionId);\n if (id === 'archive')\n onArchive?.(sessionId);\n }, portal: true, closeOnPointerLeave: true, anchor: (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-session-menu\": true, \"aria-label\": t('session.options', { name: label }), onClick: (event) => {\n event.stopPropagation();\n setMenuOpen((current) => !current);\n }, children: _jsx(IconEllipsisOutline16, {}) })) }) })] }));\n}\nfunction WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, expanded, actionPending, sessions, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }) {\n const visibleSessionIds = expanded ? sessionIds : sessionIds.slice(0, 5);\n const sameGroupDrag = dragState?.groupKey === groupKey;\n return (_jsxs(_Fragment, { children: [visibleSessionIds.map((sessionId) => (_jsx(WorktreeSessionRow, { t: t, sessionId: sessionId, label: sessionLabel(sessionId, sessions), drag: {\n active: sameGroupDrag,\n marker: sameGroupDrag && dragState.over?.sessionId === sessionId\n ? dragState.over.half\n : null,\n start: () => {\n onStartDrag(groupKey, sessionId);\n },\n hover: (half) => {\n onHoverDrag(sessionId, half);\n },\n drop: (half) => {\n if (dragState === undefined)\n return;\n onCommitDrag(dragState, { sessionId, half }, sessionIds, workspaceId);\n },\n end: () => {\n if (dragState?.over !== null && dragState?.over !== undefined) {\n onCommitDrag(dragState, dragState.over, sessionIds, workspaceId);\n }\n else {\n onClearDrag();\n }\n onFinishDrag();\n },\n }, actionPending: actionPending, onOpen: () => {\n onOpen(sessionId);\n }, onRename: onRename, onFork: onFork, onArchive: onArchive }, `${groupKey}:${sessionId}`))), sessionIds.length > 5 && (_jsx(\"button\", { type: \"button\", className: styles.sessionOverflowButton, \"aria-expanded\": expanded, onClick: onToggleExpanded, children: expanded\n ? t('session.collapse')\n : t('session.expandMore', { count: sessionIds.length - 5 }) }))] }));\n}\n/**\n * Peer Worktree navigation surface. It keeps the original DSH Workspace mode\n * intact and renders a browser-local Workspace → Worktree → Session projection.\n */\nexport function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, t, available, manager, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, renameSession, forkSession, archiveSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }) {\n const preferredMode = useStore((state) => state.viewMode);\n const mode = effectiveViewMode(preferredMode, available && manager !== undefined);\n const sessions = useSessions((state) => state);\n const workspaces = useWorkspaces((state) => state);\n const workspaceIds = useStableWorkspaceIds(workspaces.items);\n const [readState, setReadState] = useState(EMPTY_READ_STATE);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedWorkspaces, setExpandedWorkspaces] = useState({});\n const [expandedMains, setExpandedMains] = useState({});\n const [expandedWorktrees, setExpandedWorktrees] = useState({});\n const [worktreeModalWorkspaceId, setWorktreeModalWorkspaceId] = useState();\n const [openWorkspaceMenuId, setOpenWorkspaceMenuId] = useState();\n const [openWorktreeMenuId, setOpenWorktreeMenuId] = useState();\n const [worktreeRemoval, setWorktreeRemoval] = useState();\n const [selectedBranch, setSelectedBranch] = useState('');\n const [newBranch, setNewBranch] = useState('');\n const [pendingSessionBinding, setPendingSessionBinding] = useState();\n const [actionError, setActionError] = useState();\n const [actionPending, setActionPending] = useState(false);\n const [sessionRenameTarget, setSessionRenameTarget] = useState();\n const [sessionRenameDraft, setSessionRenameDraft] = useState('');\n const [sessionRenamePending, setSessionRenamePending] = useState(false);\n const [sessionRenameError, setSessionRenameError] = useState();\n const [workspaceDrag, setWorkspaceDrag] = useState();\n const [workspaceRenameTarget, setWorkspaceRenameTarget] = useState();\n const [workspaceRenameDraft, setWorkspaceRenameDraft] = useState('');\n const [workspaceRenamePending, setWorkspaceRenamePending] = useState(false);\n const [workspaceRenameError, setWorkspaceRenameError] = useState();\n const [workspaceDeleteTarget, setWorkspaceDeleteTarget] = useState();\n const [workspaceDeletePending, setWorkspaceDeletePending] = useState(false);\n const [workspaceDeleteError, setWorkspaceDeleteError] = useState();\n const workspaceDropCommitted = useRef(false);\n const [sessionDrag, setSessionDrag] = useState();\n const [expandedSessionGroups, setExpandedSessionGroups] = useState({});\n const sessionDropCommitted = useRef(false);\n const { ref, width, bounds } = useSidebarOverlayGeometry(mode === 'worktree');\n const collapsed = width <= 64;\n const query = searchQuery.trim().toLocaleLowerCase();\n const archivedSessionIds = workspaces.archivedSessionIds ?? [];\n const refresh = useCallback(async () => {\n if (manager === undefined) {\n setReadState(EMPTY_READ_STATE);\n return;\n }\n setReadState({ status: 'loading', views: [] });\n try {\n const views = await loadWorktreeViews(manager, workspaceIds);\n setReadState({ status: 'ready', views });\n }\n catch (error) {\n setReadState({\n status: 'error',\n views: [],\n error: toWorktreeViewError(error),\n });\n }\n }, [manager, workspaceIds]);\n useEffect(() => {\n if (mode === 'worktree') {\n void refresh();\n }\n else {\n setReadState(EMPTY_READ_STATE);\n }\n }, [mode, refresh]);\n useEffect(() => {\n if (readState.status !== 'ready' || syncSessionWorkspaces === undefined)\n return;\n syncSessionWorkspaces(readState.views.flatMap((view) => view.bindings.map((binding) => ({\n workspaceId: binding.workspaceId,\n sessionId: binding.sessionId,\n }))));\n }, [readState.status, readState.views, syncSessionWorkspaces]);\n const viewByWorkspace = useMemo(() => new Map(readState.views.map((view) => [view.workspaceId, view])), [readState.views]);\n const modalWorkspace = workspaces.items.find((workspace) => workspace.workspaceId === worktreeModalWorkspaceId);\n const modalView = worktreeModalWorkspaceId === undefined\n ? undefined\n : viewByWorkspace.get(worktreeModalWorkspaceId);\n const runMutation = async (operation) => {\n setActionPending(true);\n setActionError(undefined);\n try {\n await operation();\n await refresh();\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const workspaceRenameTrimmed = workspaceRenameDraft.trim();\n const workspaceRenameDuplicate = workspaceRenameTarget !== undefined &&\n workspaceRenameTrimmed.length > 0 &&\n workspaces.items.some((workspace) => workspace.workspaceId !== workspaceRenameTarget.workspaceId &&\n workspace.title === workspaceRenameTrimmed);\n const workspaceRenameBlocked = workspaceRenamePending ||\n workspaceRenameTarget === undefined ||\n workspaceRenameTrimmed.length === 0 ||\n workspaceRenameTrimmed === workspaceRenameTarget?.currentTitle ||\n workspaceRenameDuplicate;\n const openWorkspaceRename = (workspace) => {\n setWorkspaceRenameTarget({\n workspaceId: workspace.workspaceId,\n currentTitle: workspace.title,\n });\n setWorkspaceRenameDraft(workspace.title);\n setWorkspaceRenameError(undefined);\n };\n const closeWorkspaceRename = () => {\n if (workspaceRenamePending)\n return;\n setWorkspaceRenameTarget(undefined);\n setWorkspaceRenameError(undefined);\n };\n const confirmWorkspaceRename = async () => {\n const target = workspaceRenameTarget;\n if (workspaceRenameBlocked || target === undefined)\n return;\n if (renameWorkspace === undefined) {\n setWorkspaceRenameError({\n code: 'WORKSPACE_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceRenamePending(true);\n setWorkspaceRenameError(undefined);\n try {\n await renameWorkspace(target.workspaceId, workspaceRenameTrimmed);\n setWorkspaceRenameTarget(undefined);\n }\n catch (error) {\n setWorkspaceRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceRenamePending(false);\n }\n };\n const openWorkspaceDelete = (workspace) => {\n setWorkspaceDeleteTarget({ workspaceId: workspace.workspaceId, title: workspace.title });\n setWorkspaceDeleteError(undefined);\n };\n const closeWorkspaceDelete = () => {\n if (workspaceDeletePending)\n return;\n setWorkspaceDeleteTarget(undefined);\n setWorkspaceDeleteError(undefined);\n };\n const confirmWorkspaceDelete = async () => {\n const target = workspaceDeleteTarget;\n if (target === undefined || workspaceDeletePending)\n return;\n if (deleteWorkspace === undefined) {\n setWorkspaceDeleteError({\n code: 'WORKSPACE_DELETE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceDeletePending(true);\n setWorkspaceDeleteError(undefined);\n try {\n await deleteWorkspace(target.workspaceId);\n setWorkspaceDeleteTarget(undefined);\n }\n catch (error) {\n setWorkspaceDeleteError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceDeletePending(false);\n }\n };\n const commitWorkspaceDrag = (activeDrag, over) => {\n if (workspaceDropCommitted.current)\n return;\n workspaceDropCommitted.current = true;\n setWorkspaceDrag(undefined);\n const rows = workspaces.items;\n const targetIndex = rows.findIndex((workspace) => workspace.workspaceId === over.workspaceId);\n const sourceIndex = rows.findIndex((workspace) => workspace.workspaceId === activeDrag.workspaceId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeWorkspaceId = over.half === 'before'\n ? over.workspaceId\n : rows[targetIndex + 1]?.workspaceId;\n const anchorIndex = beforeWorkspaceId === undefined\n ? rows.length\n : rows.findIndex((workspace) => workspace.workspaceId === beforeWorkspaceId);\n if (beforeWorkspaceId === activeDrag.workspaceId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertWorkspaceBefore === undefined) {\n setActionError({\n code: 'WORKSPACE_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorkspaceBefore(activeDrag.workspaceId, beforeWorkspaceId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitSessionDrag = (activeDrag, over, sessionIds, workspaceId) => {\n if (sessionDropCommitted.current)\n return;\n sessionDropCommitted.current = true;\n setSessionDrag(undefined);\n const targetIndex = sessionIds.indexOf(over.sessionId);\n const sourceIndex = sessionIds.indexOf(activeDrag.sessionId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeSessionId = over.half === 'before'\n ? over.sessionId\n : sessionIds[targetIndex + 1];\n const anchorIndex = beforeSessionId === undefined\n ? sessionIds.length\n : sessionIds.indexOf(beforeSessionId);\n if (beforeSessionId === activeDrag.sessionId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertSessionBefore === undefined) {\n setActionError({\n code: 'SESSION_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertSessionBefore(workspaceId, activeDrag.sessionId, beforeSessionId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const openSessionRename = (sessionId, currentTitle) => {\n setSessionRenameTarget({ sessionId, currentTitle });\n setSessionRenameDraft(currentTitle);\n setSessionRenameError(undefined);\n };\n const closeSessionRename = () => {\n if (sessionRenamePending)\n return;\n setSessionRenameTarget(undefined);\n setSessionRenameError(undefined);\n };\n const confirmSessionRename = async () => {\n const target = sessionRenameTarget;\n const title = sessionRenameDraft.trim();\n if (target === undefined || title.length === 0 || sessionRenamePending)\n return;\n if (renameSession === undefined) {\n setSessionRenameError({\n code: 'SESSION_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setSessionRenamePending(true);\n setSessionRenameError(undefined);\n try {\n await renameSession(target.sessionId, title);\n setSessionRenameTarget(undefined);\n }\n catch (error) {\n setSessionRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setSessionRenamePending(false);\n }\n };\n const archiveWorktreeSession = async (sessionId) => {\n if (archiveSession === undefined)\n return;\n await runMutation(() => archiveSession(sessionId));\n };\n const toggleWorkspace = (workspaceId) => {\n setExpandedWorkspaces((current) => ({\n ...current,\n [workspaceId]: current[workspaceId] === false,\n }));\n };\n const toggleMain = (workspaceId) => {\n setExpandedMains((current) => ({\n ...current,\n [workspaceId]: current[workspaceId] === false,\n }));\n };\n const toggleWorktree = (worktreeId) => {\n setExpandedWorktrees((current) => ({\n ...current,\n [worktreeId]: current[worktreeId] === false,\n }));\n };\n const openWorktreeCreator = (workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const baseBranch = selectDefaultBaseBranch(view?.branches ?? []);\n const existingNames = [\n ...(view?.branches ?? []).map((branch) => branch.name),\n ...(view?.worktrees ?? []).map((worktree) => worktree.branch),\n ];\n setWorktreeModalWorkspaceId(workspace.workspaceId);\n setSelectedBranch(baseBranch);\n setNewBranch(createDefaultWorktreeName(existingNames));\n setActionError(undefined);\n };\n const submitWorktree = async () => {\n const worktreeName = newBranch.trim();\n if (manager === undefined ||\n modalWorkspace === undefined ||\n selectedBranch.length === 0 ||\n worktreeName.length === 0) {\n return;\n }\n const input = {\n workspaceId: modalWorkspace.workspaceId,\n branch: selectedBranch,\n newBranch: worktreeName,\n };\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n const createdWorktree = await executeWorktreeAction(manager, {\n type: 'createWorktree',\n input,\n });\n if (createdWorktree === undefined) {\n throw {\n code: 'WORKTREE_RECORD_MISSING',\n message: '',\n retryable: true,\n };\n }\n setWorktreeModalWorkspaceId(undefined);\n if (createSessionCallback === undefined) {\n await refresh();\n setActionError({\n code: 'WORKTREE_CREATED_SESSION_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n const sessionInput = {\n workspaceId: createdWorktree.workspaceId,\n worktreeId: createdWorktree.worktreeId,\n cwd: createdWorktree.absolutePath,\n };\n try {\n await createSessionCallback(sessionInput);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError) {\n setPendingSessionBinding({ ...sessionInput, sessionId: error.sessionId });\n }\n throw error;\n }\n await refresh();\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const createSession = async (input) => {\n if (createSessionCallback === undefined) {\n setActionError({\n code: 'SESSION_CREATE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n await createSessionCallback(input);\n await refresh();\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError) {\n setPendingSessionBinding({ ...input, sessionId: error.sessionId });\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retrySessionBinding = async () => {\n if (manager === undefined || pendingSessionBinding === undefined)\n return;\n setActionPending(true);\n setActionError(undefined);\n try {\n await manager.bindSession({\n workspaceId: pendingSessionBinding.workspaceId,\n worktreeId: pendingSessionBinding.worktreeId,\n sessionId: pendingSessionBinding.sessionId,\n });\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n ensureSessionWorkspace?.(pendingSessionBinding.workspaceId, sessionId);\n await refresh();\n openSession(sessionId);\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const openWorkspaceSession = (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n openWorktreeSession({ open: openSession }, sessionId);\n };\n if (mode !== 'worktree')\n return null;\n const visibleWorkspaces = workspaces.items.filter((workspace) => workspaceMatches(workspace, viewByWorkspace.get(workspace.workspaceId), sessions, query));\n return (_jsxs(\"aside\", { ref: ref, className: styles.surface, \"data-worktree-surface\": true, \"data-collapsed\": collapsed || undefined, \"aria-label\": t('mode.navigation'), style: {\n width: `${width}px`,\n ...(bounds.ready\n ? { top: `${bounds.top}px`, height: `${bounds.height}px` }\n : { height: '0px', visibility: 'hidden' }),\n }, children: [_jsxs(\"div\", { className: styles.wideContent, children: [_jsxs(\"header\", { className: styles.header, children: [_jsx(\"span\", { className: styles.title, children: t('worktree.title') }), _jsx(\"button\", { type: \"button\", className: styles.closeButton, \"aria-label\": t('mode.exit'), onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: _jsx(IconCloseOutline16, {}) })] }), _jsxs(\"div\", { className: styles.searchRow, children: [_jsx(\"span\", { className: styles.searchIcon, \"aria-hidden\": \"true\", children: _jsx(IconSearchOutline16, {}) }), _jsx(\"input\", { className: styles.searchInput, \"aria-label\": t('workspace.search'), placeholder: t('workspace.search'), value: searchQuery, onChange: (event) => {\n setSearchQuery(event.currentTarget.value);\n } }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"aria-label\": t('workspace.add'), onClick: () => {\n if (createWorkspace !== undefined)\n void runMutation(createWorkspace);\n }, children: _jsx(IconPlusOutline16, {}) })] }), _jsxs(\"div\", { className: styles.content, tabIndex: 0, children: [actionError !== undefined && (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(actionError, t) }), pendingSessionBinding !== undefined && (_jsxs(\"div\", { className: styles.recoveryActions, children: [_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n void retrySessionBinding();\n }, children: t('action.retryBinding') }), _jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n setActionError(undefined);\n openSession(sessionId);\n }, children: t('action.openCreatedSession') })] })), actionError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n setActionError(undefined);\n void refresh();\n }, children: t('action.retry') }))] })), readState.status === 'loading' && (_jsx(\"p\", { className: styles.message, children: t('status.loading') })), readState.status === 'error' && readState.error !== undefined ? (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(readState.error, t) }), _jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n void refresh();\n }, children: t('action.retry') })] })) : readState.status === 'ready' ? (_jsx(\"div\", { className: styles.workspaceList, children: visibleWorkspaces.length === 0 ? (_jsx(\"p\", { className: styles.empty, children: t('workspace.noMatches') })) : (visibleWorkspaces.map((workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const expanded = expandedWorkspaces[workspace.workspaceId] !== false;\n const workspaceMatchesQuery = includesText(workspace.title, query);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = unboundSessionIds(allWorkspaceSessionIds, [\n ...boundSessionIds,\n ]);\n const visibleMainSessionIds = mainSessionIds.filter((sessionId) => workspaceMatchesQuery ||\n includesText(sessionLabel(sessionId, sessions), query));\n const mainExpanded = expandedMains[workspace.workspaceId] !== false;\n const mainGroupKey = `main:${workspace.workspaceId}`;\n const worktrees = view?.worktrees ?? [];\n return (_jsxs(\"section\", { className: styles.workspaceGroup, \"data-workspace-id\": workspace.workspaceId, children: [_jsx(WorktreeWorkspaceRow, { t: t, workspace: workspace, expanded: expanded, actionPending: actionPending, menuOpen: openWorkspaceMenuId === workspace.workspaceId, drag: {\n active: workspaceDrag !== undefined,\n marker: workspaceDrag?.over?.workspaceId === workspace.workspaceId\n ? workspaceDrag.over.half\n : null,\n start: () => {\n workspaceDropCommitted.current = false;\n setWorkspaceDrag({ workspaceId: workspace.workspaceId, over: null });\n },\n hover: (half) => {\n setWorkspaceDrag((current) => current === undefined\n ? current\n : {\n ...current,\n over: { workspaceId: workspace.workspaceId, half },\n });\n },\n drop: (half) => {\n if (workspaceDrag === undefined)\n return;\n commitWorkspaceDrag(workspaceDrag, {\n workspaceId: workspace.workspaceId,\n half,\n });\n },\n end: () => {\n if (workspaceDrag?.over !== null && workspaceDrag?.over !== undefined) {\n commitWorkspaceDrag(workspaceDrag, workspaceDrag.over);\n }\n else {\n setWorkspaceDrag(undefined);\n }\n workspaceDropCommitted.current = false;\n },\n }, onToggle: () => {\n toggleWorkspace(workspace.workspaceId);\n }, onCreateWorktree: () => {\n openWorktreeCreator(workspace);\n }, onRename: () => {\n openWorkspaceRename(workspace);\n }, onDelete: () => {\n openWorkspaceDelete(workspace);\n }, onMenuOpenChange: (open) => {\n setOpenWorkspaceMenuId(open ? workspace.workspaceId : undefined);\n } }), expanded && (_jsxs(\"div\", { className: styles.treeChildren, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"main\", label: t('worktree.main'), expanded: mainExpanded, icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, onToggle: () => {\n toggleMain(workspace.workspaceId);\n }, onCreateSession: createMainSession === undefined\n ? undefined\n : () => {\n createMainSession(workspace.workspaceId);\n } }), mainExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: mainGroupKey, sessionIds: visibleMainSessionIds, workspaceId: workspace.workspaceId, expanded: expandedSessionGroups[mainGroupKey] === true, actionPending: actionPending, sessions: sessions, dragState: sessionDrag, onToggleExpanded: () => {\n setExpandedSessionGroups((current) => ({\n ...current,\n [mainGroupKey]: current[mainGroupKey] !== true,\n }));\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorktreeSession({ open: openSession }, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined ? undefined : archiveWorktreeSession })), worktrees.length === 0 && (_jsx(\"p\", { className: styles.emptyNested, children: t('worktree.noWorktrees') })), worktrees.map((record) => {\n const worktreeSessionIds = filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds);\n const worktreeMatchesQuery = workspaceMatchesQuery ||\n includesText(record.branch, query) ||\n includesText(record.absolutePath, query);\n if (query.length > 0 &&\n !worktreeMatchesQuery &&\n !worktreeSessionIds.some((sessionId) => includesText(sessionLabel(sessionId, sessions), query))) {\n return null;\n }\n const visibleWorktreeSessionIds = worktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n includesText(sessionLabel(sessionId, sessions), query));\n const worktreeGroupKey = `worktree:${record.worktreeId}`;\n const state = record.status === 'removed'\n ? 'warning'\n : record.health === 'repair'\n ? 'error'\n : 'done';\n const stateLabel = record.status === 'removed'\n ? t('worktree.detached')\n : record.health === 'repair'\n ? t('worktree.repair')\n : t('worktree.ready');\n const worktreeExpanded = expandedWorktrees[record.worktreeId] !== false;\n return (_jsxs(\"div\", { className: styles.worktreeGroup, \"data-worktree-id\": record.worktreeId, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"worktree\", label: record.branch, expanded: worktreeExpanded, icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, state: state, stateLabel: stateLabel, onToggle: () => {\n toggleWorktree(record.worktreeId);\n }, onCreateSession: record.status === 'active'\n ? () => {\n void createSession({\n workspaceId: record.workspaceId,\n worktreeId: record.worktreeId,\n cwd: record.absolutePath,\n });\n }\n : undefined, menu: record.status === 'active'\n ? {\n open: openWorktreeMenuId === record.worktreeId,\n label: record.branch,\n disabled: actionPending,\n onOpenChange: (open) => {\n setOpenWorktreeMenuId(open ? record.worktreeId : undefined);\n },\n onRemove: () => {\n setWorktreeRemoval(record);\n setActionError(undefined);\n },\n }\n : undefined }), worktreeExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: worktreeGroupKey, sessionIds: visibleWorktreeSessionIds, workspaceId: workspace.workspaceId, expanded: expandedSessionGroups[worktreeGroupKey] === true, actionPending: actionPending, sessions: sessions, dragState: sessionDrag, onToggleExpanded: () => {\n setExpandedSessionGroups((current) => ({\n ...current,\n [worktreeGroupKey]: current[worktreeGroupKey] !== true,\n }));\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorkspaceSession(workspace.workspaceId, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined\n ? undefined\n : archiveWorktreeSession }))] }, record.worktreeId));\n })] }))] }, workspace.workspaceId));\n })) })) : null] })] }), _jsx(\"div\", { className: styles.railContent, children: _jsx(\"button\", { type: \"button\", className: styles.railButton, \"aria-label\": t('mode.exit'), onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: \"WT\" }) }), _jsxs(Modal, { open: sessionRenameTarget !== undefined, onClose: closeSessionRename, closeLabel: t('dialog.close'), title: t('session.rename'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: sessionRenamePending, onClick: closeSessionRename, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: sessionRenamePending || sessionRenameDraft.trim().length === 0, onClick: () => {\n void confirmSessionRename();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: sessionRenameDraft, \"aria-label\": t('session.name'), autoFocus: true, disabled: sessionRenamePending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n setSessionRenameDraft(event.currentTarget.value);\n setSessionRenameError(undefined);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void confirmSessionRename();\n }\n } }), sessionRenameError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(sessionRenameError, t) }))] }), workspaceRenameTarget !== undefined && (_jsxs(Modal, { open: workspaceRenameTarget !== undefined, onClose: closeWorkspaceRename, closeLabel: t('dialog.closeWorkspaceRename'), title: t('workspace.renameTitle'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: workspaceRenamePending, onClick: closeWorkspaceRename, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: workspaceRenameBlocked, onClick: () => {\n void confirmWorkspaceRename();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: workspaceRenameDraft, \"aria-label\": t('workspace.name'), autoFocus: true, disabled: workspaceRenamePending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n setWorkspaceRenameDraft(event.currentTarget.value);\n setWorkspaceRenameError(undefined);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void confirmWorkspaceRename();\n }\n } }), workspaceRenameDuplicate && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: t('workspace.duplicate') })), workspaceRenameError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(workspaceRenameError, t) }))] })), workspaceDeleteTarget !== undefined && (_jsx(Modal, { open: workspaceDeleteTarget !== undefined, onClose: closeWorkspaceDelete, closeLabel: t('dialog.closeWorkspaceDelete'), title: t('workspace.deleteTitle'), description: t('workspace.deleteDescription', { name: workspaceDeleteTarget.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: workspaceDeletePending, onClick: closeWorkspaceDelete, children: t('dialog.cancel') }), _jsx(Button, { variant: \"outline\", disabled: workspaceDeletePending, onClick: () => {\n void confirmWorkspaceDelete();\n }, children: t('dialog.delete') })] })), children: workspaceDeleteError !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(workspaceDeleteError, t) })) })), worktreeModalWorkspaceId !== undefined && modalWorkspace !== undefined && (_jsxs(Modal, { open: worktreeModalWorkspaceId !== undefined, onClose: () => {\n if (actionPending)\n return;\n setWorktreeModalWorkspaceId(undefined);\n }, closeLabel: t('dialog.closeWorktreeCreate'), title: t('worktree.createTitle'), description: t('worktree.createDescription', { name: modalWorkspace.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: () => {\n setWorktreeModalWorkspaceId(undefined);\n }, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: actionPending ||\n selectedBranch.length === 0 ||\n newBranch.trim().length === 0, onClick: () => {\n void submitWorktree();\n }, children: t('worktree.create') })] })), children: [_jsxs(\"label\", { className: styles.modalField, children: [t('worktree.baseBranch'), _jsxs(\"select\", { className: styles.actionSelect, \"aria-label\": t('worktree.baseBranch'), value: selectedBranch, disabled: actionPending, onChange: (event) => {\n setSelectedBranch(event.currentTarget.value);\n }, children: [_jsx(\"option\", { value: \"\", children: t('worktree.noLocalBranch') }), (modalView?.branches ?? []).map((branch) => (_jsxs(\"option\", { value: branch.name, children: [branch.name, branch.isCurrent ? t('branch.current') : '', branch.checkedOut ? t('branch.checkedOut') : ''] }, branch.name)))] })] }), _jsxs(\"label\", { className: styles.modalField, children: [t('worktree.name'), _jsx(Input, { className: styles.renameInput, \"aria-label\": t('worktree.name'), value: newBranch, placeholder: \"dsh/12345678\", disabled: actionPending, onChange: (event) => {\n setNewBranch(event.currentTarget.value);\n } })] }), modalView?.branches.length === 0 && (_jsx(\"p\", { className: styles.empty, children: t('worktree.noBranches') }))] })), worktreeRemoval !== undefined && (_jsx(Modal, { open: worktreeRemoval !== undefined, onClose: () => {\n if (actionPending)\n return;\n setWorktreeRemoval(undefined);\n }, closeLabel: t('dialog.closeWorktreeRemove'), title: t('worktree.remove'), description: t('worktree.removeDescription', { name: worktreeRemoval.branch }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: () => {\n setWorktreeRemoval(undefined);\n }, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: actionPending, onClick: () => {\n if (manager === undefined)\n return;\n const target = worktreeRemoval;\n void runMutation(async () => {\n await executeWorktreeAction(manager, {\n type: 'removeWorktree',\n input: {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n },\n });\n setWorktreeRemoval(undefined);\n });\n }, children: t('worktree.remove') })] })) }))] }));\n}\n//# sourceMappingURL=WorktreeSurface.js.map","import { defineStore } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_VIEW_MODE_STORAGE_KEY, } from './view-mode.js';\n/** Create one root-scoped, browser-local view-mode store for the two slot entries. */\nexport function createWorktreeViewStore() {\n return defineStore({\n init: () => ({ viewMode: 'workspace-session' }),\n persist: WORKTREE_VIEW_MODE_STORAGE_KEY,\n actions: {\n setViewMode: (draft, mode) => {\n draft.viewMode = mode;\n },\n },\n });\n}\n//# sourceMappingURL=view-mode-store.js.map","import { projectVirtualWorkspaceMembership, } from './view-mode.js';\nfunction normalizeBindings(bindings) {\n const bySession = new Map();\n for (const binding of bindings) {\n if (binding.workspaceId.length === 0 || binding.sessionId.length === 0)\n continue;\n bySession.set(binding.sessionId, binding);\n }\n return [...bySession.values()];\n}\nfunction sameWorkspaceItems(left, right) {\n if (left.items.length !== right.items.length)\n return false;\n return left.items.every((item, index) => {\n const other = right.items[index];\n if (item === other)\n return true;\n if (typeof item !== 'object' ||\n item === null ||\n typeof other !== 'object' ||\n other === null ||\n !('workspaceId' in item) ||\n !('workspaceId' in other) ||\n !('sessionIds' in item) ||\n !('sessionIds' in other)) {\n return false;\n }\n const leftSessionIds = item.sessionIds;\n const rightSessionIds = other.sessionIds;\n return (item.workspaceId === other.workspaceId &&\n Array.isArray(leftSessionIds) &&\n Array.isArray(rightSessionIds) &&\n leftSessionIds.length === rightSessionIds.length &&\n leftSessionIds.every((sessionId, sessionIndex) => sessionId === rightSessionIds[sessionIndex]));\n });\n}\n/**\n * Maintains a re-playable in-memory overlay over DSH's Workspace list. Native\n * refreshes are observed and the current sidecar bindings are applied again;\n * no DSH Host mutation or persistence is involved.\n */\nexport function createVirtualWorkspaceMembership(list) {\n let bindings = [];\n let disposed = false;\n let applying = false;\n const apply = (nextBindings) => {\n const current = list.getSnapshot();\n const next = projectVirtualWorkspaceMembership(current, bindings, nextBindings);\n if (sameWorkspaceItems(current, next))\n return;\n applying = true;\n try {\n list.set(next);\n }\n finally {\n applying = false;\n }\n };\n const replay = () => {\n if (disposed || applying)\n return;\n apply(bindings);\n };\n const unsubscribe = list.subscribe(replay);\n const sync = (nextBindings) => {\n if (disposed)\n return;\n const normalized = normalizeBindings(nextBindings);\n apply(normalized);\n bindings = normalized;\n };\n return {\n ensure(binding) {\n if (disposed)\n return;\n if (bindings.some((current) => current.workspaceId === binding.workspaceId && current.sessionId === binding.sessionId)) {\n return;\n }\n sync([...bindings.filter((current) => current.sessionId !== binding.sessionId), binding]);\n },\n sync,\n removeSession(sessionId) {\n sync(bindings.filter((binding) => binding.sessionId !== sessionId));\n },\n dispose() {\n if (disposed)\n return;\n apply([]);\n bindings = [];\n disposed = true;\n unsubscribe();\n },\n };\n}\n//# sourceMappingURL=virtual-workspace-membership.js.map","import { WORKTREE_NS, en, zh } from './locales.js';\nimport { createWorktreeConnectionAdapter } from './worktree-connection.js';\nimport { WorktreeModeAction } from './WorktreeModeAction.js';\nimport { WorktreeSurface } from './WorktreeSurface.js';\nimport { createWorktreeViewStore } from './view-mode-store.js';\nimport { createVirtualWorkspaceMembership, } from './virtual-workspace-membership.js';\nimport { createSessionForWorktree } from './worktree-view.js';\nexport { WORKTREE_CONNECTION_CHANNEL, WORKTREE_CONNECTION_ENDPOINTS, WorktreeConnectionError, createWorktreeConnectionAdapter, } from './worktree-connection.js';\n/** Required DSH Client services; Connection is the sole Worktree wire dependency. */\nexport const inject = ['connection', 'locale', 'slots', 'sessions', 'workspaces'];\n/**\n * DSH Client entry. The adapter is composed once per plugin fiber and is disposed\n * with that fiber, so slot consumers share one manager and one request lifetime.\n */\nexport function apply(ctx) {\n ctx.effect(() => ctx.locale.register(WORKTREE_NS, { zh, en }), 'clutch-dsh-worktree: locale dictionaries');\n const manager = createWorktreeConnectionAdapter(ctx.connection.rpc);\n const sessions = ctx.sessions;\n const virtualWorkspaceMembership = createVirtualWorkspaceMembership(ctx.workspaces.list);\n ctx.effect(() => () => manager.dispose(), 'clutch-dsh-worktree: connection cleanup');\n ctx.effect(() => () => virtualWorkspaceMembership.dispose(), 'clutch-dsh-worktree: Workspace membership cleanup');\n const viewStore = createWorktreeViewStore();\n const ensureSessionWorkspace = (workspaceId, sessionId) => {\n virtualWorkspaceMembership.ensure({ workspaceId, sessionId });\n };\n const syncSessionWorkspaces = (bindings) => {\n virtualWorkspaceMembership.sync(bindings);\n };\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'clutch-dsh-worktree-mode-action',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({ available: true }),\n }, WorktreeModeAction));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'clutch-dsh-worktree-navigation',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({\n available: true,\n manager,\n createWorkspace: async () => {\n const workspacePath = await ctx.workspaces.pickDirectory();\n if (workspacePath !== null)\n await ctx.workspaces.create({ path: workspacePath });\n },\n createSessionForWorktree: (input) => createSessionForWorktree({\n ...input,\n createSession: (sessionInput) => sessions.create(sessionInput),\n manager,\n beforeOpen: (sessionId) => {\n ensureSessionWorkspace(input.workspaceId, sessionId);\n },\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n createMainSession: (workspaceId) => {\n ctx.workspaces.startSession(workspaceId);\n },\n renameWorkspace: async (workspaceId, title) => {\n await ctx.workspaces.rename(workspaceId, title);\n },\n deleteWorkspace: async (workspaceId) => {\n await ctx.workspaces.delete(workspaceId);\n },\n insertWorkspaceBefore: async (workspaceId, beforeWorkspaceId) => {\n await ctx.workspaces.insertBefore(workspaceId, beforeWorkspaceId);\n },\n insertSessionBefore: async (workspaceId, sessionId, beforeSessionId) => {\n await ctx.workspaces.insertSessionBefore(workspaceId, sessionId, beforeSessionId);\n },\n renameSession: async (sessionId, title) => {\n const session = ctx.sessions.binding(sessionId)?.session;\n if (session === undefined)\n throw new Error(`unknown session \"${sessionId}\"`);\n const result = await session.rename(title);\n if (!result.ok)\n throw new Error(result.error.message);\n },\n forkSession: (sessionId) => {\n void ctx.sessions.fork({\n sessionId: sessionId,\n increaseTitle: true,\n })\n .then((childId) => {\n ctx.sessions.open(childId);\n })\n .catch(() => {\n // Fork failure leaves the current Session and Worktree projection unchanged.\n });\n },\n archiveSession: (sessionId) => ctx.workspaces.archiveSession(sessionId),\n ensureSessionWorkspace,\n syncSessionWorkspaces,\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n }, WorktreeSurface));\n}\n//# sourceMappingURL=entry.js.map"],"mappings":";;;;;;;;;;;EAAA,MAAa,cAAc;EAC3B,MAAa,KAAK;GACd,aAAa;GACb,aAAa;GACb,cAAc;GACd,mBAAmB;GACnB,oBAAoB;GACpB,oBAAoB;GACpB,oBAAoB;GACpB,sBAAsB;GACtB,qBAAqB;GACrB,yBAAyB;GACzB,iBAAiB;GACjB,oBAAoB;GACpB,uBAAuB;GACvB,yBAAyB;GACzB,kBAAkB;GAClB,uBAAuB;GACvB,yBAAyB;GACzB,+BAA+B;GAC/B,kBAAkB;GAClB,iBAAiB;GACjB,qBAAqB;GACrB,mBAAmB;GACnB,kBAAkB;GAClB,mBAAmB;GACnB,qBAAqB;GACrB,oBAAoB;GACpB,mBAAmB;GACnB,8BAA8B;GAC9B,uBAAuB;GACvB,wBAAwB;GACxB,wBAAwB;GACxB,8BAA8B;GAC9B,uBAAuB;GACvB,0BAA0B;GAC1B,uBAAuB;GACvB,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACnB,kBAAkB;GAClB,gBAAgB;GAChB,mBAAmB;GACnB,sBAAsB;GACtB,oBAAoB;GACpB,gBAAgB;GAChB,gBAAgB;GAChB,+BAA+B;GAC/B,+BAA+B;GAC/B,8BAA8B;GAC9B,8BAA8B;GAC9B,iBAAiB;GACjB,iBAAiB;GACjB,iBAAiB;GACjB,gBAAgB;GAChB,uBAAuB;GACvB,6BAA6B;GAC7B,kBAAkB;GAClB,iCAAiC;GACjC,4BAA4B;GAC5B,0BAA0B;GAC1B,uBAAuB;GACvB,sCAAsC;GACtC,oCAAoC;GACpC,2CAA2C;GAC3C,oCAAoC;GACpC,+BAA+B;GAC/B,oCAAoC;GACpC,oCAAoC;GACpC,kCAAkC;GAClC,8BAA8B;GAC9B,kBAAkB;GAClB,qBAAqB;EACzB;EACA,MAAa,KAAK;GACd,aAAa;GACb,aAAa;GACb,cAAc;GACd,mBAAmB;GACnB,oBAAoB;GACpB,oBAAoB;GACpB,oBAAoB;GACpB,sBAAsB;GACtB,qBAAqB;GACrB,yBAAyB;GACzB,iBAAiB;GACjB,oBAAoB;GACpB,uBAAuB;GACvB,yBAAyB;GACzB,kBAAkB;GAClB,uBAAuB;GACvB,yBAAyB;GACzB,+BAA+B;GAC/B,kBAAkB;GAClB,iBAAiB;GACjB,qBAAqB;GACrB,mBAAmB;GACnB,kBAAkB;GAClB,mBAAmB;GACnB,qBAAqB;GACrB,oBAAoB;GACpB,mBAAmB;GACnB,8BAA8B;GAC9B,uBAAuB;GACvB,wBAAwB;GACxB,wBAAwB;GACxB,8BAA8B;GAC9B,uBAAuB;GACvB,0BAA0B;GAC1B,uBAAuB;GACvB,iBAAiB;GACjB,mBAAmB;GACnB,mBAAmB;GACnB,kBAAkB;GAClB,gBAAgB;GAChB,mBAAmB;GACnB,sBAAsB;GACtB,oBAAoB;GACpB,gBAAgB;GAChB,gBAAgB;GAChB,+BAA+B;GAC/B,+BAA+B;GAC/B,8BAA8B;GAC9B,8BAA8B;GAC9B,iBAAiB;GACjB,iBAAiB;GACjB,iBAAiB;GACjB,gBAAgB;GAChB,uBAAuB;GACvB,6BAA6B;GAC7B,kBAAkB;GAClB,iCAAiC;GACjC,4BAA4B;GAC5B,0BAA0B;GAC1B,uBAAuB;GACvB,sCAAsC;GACtC,oCAAoC;GACpC,2CAA2C;GAC3C,oCAAoC;GACpC,+BAA+B;GAC/B,oCAAoC;GACpC,oCAAoC;GACpC,kCAAkC;GAClC,8BAA8B;GAC9B,kBAAkB;GAClB,qBAAqB;EACzB;;;;ECjJA,MAAa,8BAA8B;;;;;EAK3C,MAAa,gCAAgC,OAAO,OAAO;GACvD,eAAe;GACf,cAAc;GACd,gBAAgB;GAChB,gBAAgB;GAChB,cAAc;GACd,aAAa;EACjB,CAAC;;EAED,IAAa,0BAAb,cAA6C,MAAM;GAC/C;GACA;GACA;GACA,YAAY,SAAS;IACjB,MAAM,QAAQ,SAAS,QAAQ,UAAU,KAAA,IAAY,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,CAAC;IACzF,KAAK,OAAO;IACZ,KAAK,OAAO,QAAQ;IACpB,KAAK,UAAU,OAAO,OAAO,EAAE,GAAI,QAAQ,WAAW,CAAC,EAAG,CAAC;IAC3D,KAAK,YAAY,QAAQ;GAC7B;EACJ;EACA,SAAS,SAAS,OAAO;GACrB,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;EAC9E;EACA,SAAS,gBAAgB,OAAO;GAC5B,OAAQ,SAAS,KAAK,KAClB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,YAAY,YACzB,SAAS,MAAM,OAAO;EAC9B;EACA,SAAS,uBAAuB,OAAO;GACnC,IAAI,CAAC,SAAS,KAAK,KAAK,OAAO,MAAM,OAAO,WACxC,OAAO;GACX,OAAO,MAAM,MAAO,gBAAgB,MAAM,KAAK,KAAK,MAAM,MAAM,YAAY,KAAA;EAChF;EACA,SAAS,gBAAgB;GACrB,OAAO,IAAI,wBAAwB;IAC/B,MAAM;IACN,SAAS;IACT,SAAS,CAAC;IACV,WAAW;GACf,CAAC;EACL;EACA,SAAS,kBAAkB,UAAU,OAAO,OAAO,0BAA0B;GAEzE,OAAO,IAAI,wBAAwB;IAC/B;IACA,SAHY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;IAIjE,SAAS,EAAE,SAAS;IACpB,WAAW;IACX,OAAO;GACX,CAAC;EACL;EACA,SAAS,eAAe,UAAU,QAAQ;GACtC,MAAM,aAAa,SAAS,OAAO,MAAM,OAAO,IAAI,OAAO,MAAM,UAAU,CAAC;GAC5E,MAAM,IAAI,wBAAwB;IAC9B,MAAM,OAAO,MAAM;IACnB,SAAS,OAAO,MAAM;IACtB,SAAS;KAAE;KAAU,GAAG;IAAW;IACnC,WAAW;GACf,CAAC;EACL;EACA,SAAS,cAAc,UAAU;GAC7B,OAAO,IAAI,wBAAwB;IAC/B,MAAM;IACN,SAAS;IACT,SAAS,EAAE,SAAS;IACpB,WAAW;GACf,CAAC;EACL;EACA,SAAS,OAAO,UAAU,QAAQ;GAC9B,IAAI,CAAC,OAAO,IACR,eAAe,UAAU,MAAM;GACnC,IAAI,CAAC,uBAAuB,OAAO,KAAK,GACpC,MAAM,cAAc,QAAQ;GAChC,IAAI,CAAC,OAAO,MAAM,IACd,MAAM,IAAI,wBAAwB;IAC9B,MAAM,OAAO,MAAM,MAAM;IACzB,SAAS,OAAO,MAAM,MAAM;IAC5B,SAAS,OAAO,MAAM,MAAM;IAC5B,WAAW;GACf,CAAC;GAEL,OAAO,OAAO,MAAM;EACxB;;;;;EAKA,SAAgB,gCAAgC,KAAK;GACjD,MAAM,2BAAW,IAAI,IAAI;GACzB,IAAI,WAAW;GACf,eAAe,OAAO,QAAQ,OAAO;IACjC,IAAI,UACA,MAAM,cAAc;IACxB,MAAM,aAAa,IAAI,gBAAgB;IACvC,SAAS,IAAI,UAAU;IACvB,MAAM,WAAW,8BAA8B;IAC/C,IAAI;KACA,IAAI;KACJ,IAAI;MACA,SAAS,MAAM,IAAI,KAAK,6BAA6B,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,MAAM;KACzG,SACO,OAAO;MACV,IAAI,YAAY,WAAW,OAAO,SAC9B,MAAM,cAAc;MACxB,MAAM,kBAAkB,UAAU,KAAK;KAC3C;KACA,OAAO,OAAO,UAAU,MAAM;IAClC,UACQ;KACJ,SAAS,OAAO,UAAU;IAC9B;GACJ;GACA,OAAO;IACH,gBAAgB,UAAU,OAAO,iBAAiB,KAAK;IACvD,eAAe,UAAU,OAAO,gBAAgB,KAAK;IACrD,iBAAiB,UAAU,OAAO,kBAAkB,KAAK;IACzD,MAAM,eAAe,OAAO;KACxB,MAAM,OAAO,kBAAkB,KAAK;IACxC;IACA,eAAe,UAAU,OAAO,gBAAgB,KAAK;IACrD,cAAc,UAAU,OAAO,eAAe,KAAK;IACnD,UAAU;KACN,IAAI,UACA;KACJ,WAAW;KACX,KAAK,MAAM,cAAc,UACrB,WAAW,MAAM;KACrB,SAAS,MAAM;IACnB;GACJ;EACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECtIA,SAAgB,mBAAmB,EAAE,MAAM,UAAU,SAAS,GAAG,aAAc;GAC3E,IAAI,CAAC,WACD,OAAO;GAEX,MAAM,SADO,UAAU,UAAU,MAAM,QACrB,MAAM;GACxB,QAAA,GAAA,kBAAA,KAAA,CAAc,UAAU;IAAE,MAAM;IAAU,WAAWA,qBAAO;IAAQ,6BAA6B;IAAM,eAAe,UAAU,KAAA;IAAW,kBAAkB,CAAC,QAAQ,KAAA;IAAW,cAAc,SAAS,EAAE,WAAW,IAAI,EAAE,WAAW;IAAG,gBAAgB;IAAQ,OAAO,SAAS,EAAE,WAAW,IAAI,EAAE,YAAY;IAAG,eAAe;KAC1T,QAAQ,YAAY,SAAS,sBAAsB,UAAU;IACjE;IAAG,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMC,sCAAAA,qBAAqB,EAAE,MAAM,OAAO,KAAK,GAAG,CAAC,GAAG,SAAA,GAAA,kBAAA,IAAA,CAAa,QAAQ;KAAE,WAAWD,qBAAO;KAAa,UAAU,EAAE,YAAY;IAAE,CAAC,CAAC;GAAE,CAAC;EAChK;;;;ECXA,SAAgB,oBAAoB,QAAQ,WAAW;GACnD,OAAO,KAAK,SAAS;EACzB;;;ECHA,SAAgB,qBAAqB,OAAO,YAAY,QAAQ;GAC5D,IAAI,eAAe,KAAA,KAAa,WAAW,KAAA,GACvC,OAAO;IAAE,OAAO;IAAO,KAAK;IAAG,QAAQ;GAAE;GAE7C,MAAM,MAAM,KAAK,IAAI,GAAG,WAAW,MAAM,MAAM,GAAG;GAElD,OAAO;IAAE,OAAO;IAAM;IAAK,QADT,KAAK,IAAI,KAAK,OAAO,MAAM,MAAM,GACR,IAAI;GAAI;EACvD;;;ECLA,MAAM,eAAe;GAAE,OAAO;GAAO,KAAK;GAAG,QAAQ;EAAE;EACvD,SAAS,OAAO,SAAS;GACrB,MAAM,OAAO,QAAQ,sBAAsB;GAC3C,OAAO;IAAE,KAAK,KAAK;IAAK,QAAQ,KAAK;GAAO;EAChD;EACA,SAAgB,yBAAyB,SAAS;GAC9C,MAAM,cAAc,QAAQ;GAC5B,IAAI,gBAAgB,MAChB,OAAO,KAAA;GACX,MAAM,aAAa,YAAY,sBAAsB;GACrD,IAAI,WAAW,QAAQ,KAAK,WAAW,SAAS,GAC5C,OAAO;GACX,OAAO,YAAY,qBAAqB;EAC5C;EACA,SAAgB,qBAAqB,MAAM;GACvC,MAAM,SAAS;IAAC;IAAQ;IAAe;IAAO;GAAa;GAC3D,MAAM,UAAU,MAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC;GAC1D,MAAM,eAAe,QAAQ,MAAM,WAAW;IAC1C,MAAM,OAAO,OAAO,aAAa,KAAK;IACtC,OAAO,SAAS,SAAS,SAAS;GACtC,CAAC;GACD,IAAI,iBAAiB,KAAA,GACjB,OAAO;GACX,KAAK,MAAM,SAAS,QAAQ;IACxB,MAAM,SAAS,QAAQ,MAAM,cAAc,UAAU,aAAa,YAAY,MAAM,KAAK;IACzF,IAAI,WAAW,KAAA,GACX,OAAO;GACf;EAEJ;EACA,SAAgB,0BAA0B,QAAQ;GAC9C,MAAM,OAAA,GAAA,MAAA,OAAA,CAAa,IAAI;GACvB,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,SAAA,CAAqB,GAAG;GACtC,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,SAAA,CAAsB,YAAY;GACjD,CAAA,GAAA,MAAA,gBAAA,OAAsB;IAClB,IAAI,CAAC,QAAQ;KACT,UAAU,YAAY;KACtB;IACJ;IAEA,MAAM,UADU,IAAI,SACK,QAAQ,sBAAsB;IAEvD,MAAM,WADQ,SAAS,cAAA,EACA;IACvB,MAAM,aAAa,YAAY,QAAQ,YAAY,KAAA,IAAY,KAAA,IAAY,yBAAyB,OAAO;IAC3G,IAAI,EAAE,mBAAmB,gBACrB,EAAE,mBAAmB,gBACrB,EAAE,sBAAsB,cAAc;KACtC,UAAU,YAAY;KACtB;IACJ;IACA,IAAI;IACJ,MAAM,eAAe;KACjB,MAAM,aAAa,qBAAqB,UAAU;KAClD,MAAM,SAAS,WAAW;KAC1B,MAAM,YAAY,QAAQ,sBAAsB,CAAC,CAAC;KAClD,IAAI,YAAY,GACZ,SAAS,SAAS;KACtB,UAAU,qBAAqB,OAAO,OAAO,GAAG,eAAe,KAAA,IAAY,KAAA,IAAY,OAAO,UAAU,GAAG,WAAW,OAAO,KAAA,IAAY,OAAO,MAAM,CAAC,CAAC;IAC5J;IACA,MAAM,uBAAuB;KACzB,IAAI,gBAAgB,KAAA,GAChB;KACJ,cAAc,4BAA4B;MACtC,cAAc,KAAA;MACd,OAAO;KACX,CAAC;IACL;IACA,OAAO;IACP,MAAM,iBAAiB,OAAO,mBAAmB,aAC3C,IAAI,eAAe,cAAc,IACjC,KAAA;IACN,KAAK,MAAM,WAAW;KAAC;KAAS;KAAS;IAAU,GAC/C,gBAAgB,QAAQ,OAAO;IAEnC,MAAM,aAAa,qBAAqB,UAAU;IAClD,MAAM,SAAS,WAAW;IAC1B,IAAI,eAAe,KAAA,GACf,gBAAgB,QAAQ,UAAU;IACtC,IAAI,WAAW,MACX,gBAAgB,QAAQ,MAAM;IAClC,MAAM,mBAAmB,OAAO,qBAAqB,aAC/C,IAAI,iBAAiB,cAAc,IACnC,KAAA;IACN,kBAAkB,QAAQ,YAAY;KAAE,WAAW;KAAM,SAAS;IAAK,CAAC;IACxE,aAAa;KACT,gBAAgB,WAAW;KAC3B,kBAAkB,WAAW;KAC7B,IAAI,gBAAgB,KAAA,GAChB,qBAAqB,WAAW;IACxC;GACJ,GAAG,CAAC,MAAM,CAAC;GACX,OAAO;IAAE;IAAK;IAAO;GAAO;EAChC;;;;EC7FA,MAAa,iCAAiC;;EAE9C,SAAgB,mBAAmB,OAAO;GACtC,OAAO,UAAU,uBAAuB,UAAU;EACtD;;EAEA,SAAgB,kBAAkB,WAAW,0BAA0B;GACnE,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,SAAS,GAC1D,OAAO;GACX,OAAO;EACX;;EAEA,SAAgB,oBAAoB,YAAY,aAAa,YAAY;GACrE,IAAI,gBAAgB,KAAA,GAChB,OAAO,CAAC;GACZ,MAAM,YAAY,WAAW,MAAM,MAAM,cAAc,UAAU,gBAAgB,WAAW;GAC5F,IAAI,cAAc,KAAA,GACd,OAAO,CAAC;GACZ,MAAM,SAAS,IAAI,IAAI,UAAU;GACjC,OAAO,UAAU,WAAW,QAAQ,cAAc,OAAO,IAAI,SAAS,CAAC;EAC3E;EACA,SAAgB,kBAAkB,YAAY,iBAAiB;GAC3D,MAAM,QAAQ,IAAI,IAAI,eAAe;GACrC,OAAO,WAAW,QAAQ,cAAc,CAAC,MAAM,IAAI,SAAS,CAAC;EACjE;;;;;;EAMA,SAAgB,kCAAkC,UAAU,kBAAkB,cAAc;GACxF,MAAM,qBAAqB,IAAI,IAAI,iBAAiB,KAAK,YAAY,QAAQ,SAAS,CAAC;GACvF,MAAM,kCAAkB,IAAI,IAAI;GAChC,KAAK,MAAM,WAAW,cAAc;IAChC,MAAM,aAAa,gBAAgB,IAAI,QAAQ,WAAW,KAAK,CAAC;IAChE,IAAI,CAAC,WAAW,SAAS,QAAQ,SAAS,GACtC,WAAW,KAAK,QAAQ,SAAS;IACrC,gBAAgB,IAAI,QAAQ,aAAa,UAAU;GACvD;GACA,MAAM,QAAQ,SAAS,MAAM,KAAK,cAAc;IAC5C,MAAM,mBAAmB,UAAU,WAAW,QAAQ,cAAc,CAAC,mBAAmB,IAAI,SAAS,CAAC;IACtG,MAAM,oBAAoB,gBAAgB,IAAI,UAAU,WAAW,KAAK,CAAC;IACzE,MAAM,aAAa,CACf,GAAG,kBACH,GAAG,kBAAkB,QAAQ,cAAc,CAAC,iBAAiB,SAAS,SAAS,CAAC,CACpF;IACA,IAAI,WAAW,WAAW,UAAU,WAAW,UAC3C,WAAW,OAAO,WAAW,UAAU,cAAc,UAAU,WAAW,MAAM,GAChF,OAAO;IAEX,OAAO;KAAE,GAAG;KAAW;IAAW;GACtC,CAAC;GACD,IAAI,MAAM,OAAO,WAAW,UAAU,cAAc,SAAS,MAAM,MAAM,GACrE,OAAO;GACX,OAAO;IAAE,GAAG;IAAU;GAAM;EAChC;;;ECxDA,SAAS,OAAO,OAAO,MAAM;GACzB,MAAM,QAAQ,MAAM,UAAU;GAC9B,OAAO,OAAO,UAAU,WAAW,QAAQ;EAC/C;EACA,SAAS,OAAO,OAAO,GAAG;GACtB,OAAO,MAAM,QAAQ,SAAS,IAAI,MAAM,UAAU,EAAE,+BAA+B;EACvF;EACA,SAAgB,wBAAwB,OAAO,GAAG;GAC9C,QAAQ,MAAM,MAAd;IACI,KAAK,mBACD,OAAO,EAAE,0BAA0B;IACvC,KAAK,0BACD,OAAO,EAAE,0BAA0B;KAC/B,UAAU,OAAO,OAAO,UAAU;KAClC,QAAQ,OAAO,OAAO,CAAC;IAC3B,CAAC;IACL,KAAK,+BACD,OAAO,EAAE,uBAAuB,EAAE,UAAU,OAAO,OAAO,UAAU,EAAE,CAAC;IAC3E,KAAK,+BACD,OAAO,EAAE,oCAAoC;IACjD,KAAK,6BACD,OAAO,EAAE,kCAAkC;IAC/C,KAAK,8BACD,OAAO,EAAE,kCAAkC;IAC/C,KAAK,wCACD,OAAO,EAAE,yCAAyC;IACtD,KAAK,2BACD,OAAO,EAAE,6BAA6B;IAC1C,KAAK,gCACD,OAAO,EAAE,kCAAkC;IAC/C,KAAK,gCACD,OAAO,EAAE,kCAAkC;IAC/C,KAAK,8BACD,OAAO,EAAE,gCAAgC;IAC7C,KAAK,0BACD,OAAO,EAAE,8BAA8B;KACnC,WAAW,OAAO,OAAO,WAAW;KACpC,QAAQ,OAAO,OAAO,CAAC;IAC3B,CAAC;IACL,SACI,OAAO,MAAM,QAAQ,SAAS,IAAI,MAAM,UAAU,EAAE,+BAA+B;GAC3F;EACJ;;;;ECzCA,IAAa,8BAAb,cAAiD,MAAM;GACnD,OAAO;GACP,YAAY;GACZ;GACA;GACA,YAAY,WAAW,OAAO;IAC1B,MAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;IACpE,MAAM,MAAM;IACZ,KAAK,OAAO;IACZ,KAAK,YAAY;IACjB,KAAK,QAAQ;GACjB;EACJ;;EAEA,SAAgB,mBAAmB,UAAU,MAAM;GAC/C,IAAI,SAAS,WAAW,KAAK,QACzB,OAAO;GACX,KAAK,IAAI,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,GAClD,IAAI,SAAS,WAAW,KAAK,QACzB,OAAO;GAEf,OAAO;EACX;;EAEA,SAAgB,wBAAwB,UAAU;GAC9C,OAAO,SAAS,MAAM,WAAW,OAAO,SAAS,CAAC,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ;EACrF;EACA,SAAS,oBAAoB;GACzB,MAAM,aAAa,WAAW,QAAQ;GACtC,IAAI,OAAO,eAAe,YACtB,OAAO,WAAW,KAAK,WAAW,MAAM;GAC5C,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;EAC3E;;EAEA,SAAgB,0BAA0B,eAAe,aAAa,mBAAmB;GACrF,MAAM,YAAY,IAAI,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC;GACvE,KAAK,IAAI,UAAU,GAAG,UAAU,KAAK,WAAW,GAAG;IAC/C,MAAM,SAAS,WAAW,CAAC,CAAC,QAAQ,eAAe,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY;IAC/E,IAAI,OAAO,SAAS,GAChB;IACJ,MAAM,YAAY,OAAO;IACzB,IAAI,CAAC,UAAU,IAAI,SAAS,GACxB,OAAO;GACf;GACA,MAAM,IAAI,MAAM,wDAAwD;EAC5E;;EAEA,SAAgB,yBAAyB,YAAY,oBAAoB;GACrE,OAAO,WAAW,QAAQ,cAAc,CAAC,mBAAmB,SAAS,SAAS,CAAC;EACnF;;EAEA,eAAsB,iBAAiB,SAAS,aAAa;GACzD,MAAM,CAAC,WAAW,UAAU,YAAY,MAAM,QAAQ,IAAI;IACtD,QAAQ,cAAc,EAAE,YAAY,CAAC;IACrC,QAAQ,aAAa,EAAE,YAAY,CAAC;IACpC,QAAQ,aAAa,EAAE,YAAY,CAAC;GACxC,CAAC;GACD,OAAO;IAAE;IAAW;IAAU;GAAS;EAC3C;;EAEA,eAAsB,kBAAkB,SAAS,cAAc;GAC3D,OAAO,QAAQ,IAAI,aAAa,IAAI,OAAO,iBAAiB;IACxD;IACA,GAAI,MAAM,iBAAiB,SAAS,WAAW;GACnD,EAAE,CAAC;EACP;;EAEA,eAAsB,sBAAsB,SAAS,QAAQ;GACzD,IAAI,OAAO,SAAS,kBAChB,OAAO,QAAQ,eAAe,OAAO,KAAK;GAE9C,IAAI,OAAO,SAAS,kBAAkB;IAClC,MAAM,QAAQ,eAAe,OAAO,KAAK;IACzC;GACJ;EACJ;;;;;EAKA,eAAsB,yBAAyB,OAAO;GAClD,MAAM,YAAY,MAAM,MAAM,cAAc,EAAE,KAAK,MAAM,IAAI,CAAC;GAC9D,IAAI;IACA,MAAM,MAAM,QAAQ,YAAY;KAC5B,aAAa,MAAM;KACnB,YAAY,MAAM;KAClB;IACJ,CAAC;GACL,SACO,OAAO;IACV,MAAM,IAAI,4BAA4B,WAAW,KAAK;GAC1D;GACA,MAAM,aAAa,SAAS;GAC5B,MAAM,YAAY,SAAS;GAC3B,OAAO;EACX;EACA,SAAS,cAAc,OAAO;GAC1B,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAClE,OAAO,KAAA;GACX,MAAM,UAAU,MAAM;GACtB,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GACxE,OAAO,KAAA;GACX,OAAO;EACX;;EAEA,SAAgB,oBAAoB,OAAO;GACvC,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;IAC7C,MAAM,YAAY;IAClB,MAAM,UAAU,iBAAiB,8BAC3B;KAAE,GAAI,cAAc,KAAK,KAAK,CAAC;KAAI,WAAW,MAAM;IAAU,IAC9D,cAAc,KAAK;IACzB,OAAO;KACH,MAAM,OAAO,UAAU,SAAS,WAAW,UAAU,OAAO;KAC5D,SAAS,OAAO,UAAU,YAAY,WAAW,UAAU,UAAU;KACrE,WAAW,UAAU,cAAc;KACnC,GAAI,YAAY,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ;IAC/C;GACJ;GACA,OAAO;IACH,MAAM;IACN,SAAS;IACT,WAAW;GACf;EACJ;;;ECnHA,SAAS,0BAA0B,OAAO;GACtC,MAAM,YAAY,oBAAoB,KAAK;GAC3C,IAAI,OAAO,UAAU,YAAY,UAAU,MACvC,OAAO;GACX,OAAO;IAAE,GAAG;IAAW,SAAS,OAAO,KAAK;GAAE;EAClD;EACA,MAAM,mBAAmB;GAAE,QAAQ;GAAQ,OAAO,CAAC;EAAE;EACrD,SAAS,sBAAsB,YAAY;GACvC,MAAM,OAAO,WAAW,KAAK,cAAc,UAAU,WAAW;GAChE,MAAM,eAAA,GAAA,MAAA,OAAA,CAAqB,CAAC,CAAC;GAC7B,MAAM,SAAS,mBAAmB,YAAY,SAAS,IAAI;GAC3D,IAAI,WAAW,YAAY,SACvB,YAAY,UAAU;GAC1B,OAAO,YAAY;EACvB;EACA,SAAS,aAAa,WAAW,UAAU;GACvC,OAAO,SAAS,KAAK,UAAU,EAAE,gBAAgB;EACrD;EACA,SAAS,QAAQ,OAAO;GACpB,MAAM,OAAO,MAAM,cAAc,sBAAsB;GACvD,OAAO,MAAM,UAAU,KAAK,MAAM,KAAK,SAAS,IAAI,WAAW;EACnE;EACA,SAAS,cAAc,UAAU,YAAY;GACzC,OAAO,SACF,QAAQ,YAAY,QAAQ,eAAe,UAAU,CAAC,CACtD,KAAK,YAAY,QAAQ,SAAS;EAC3C;EACA,SAAS,aAAa,OAAO,OAAO;GAChC,OAAO,MAAM,kBAAkB,CAAC,CAAC,SAAS,KAAK;EACnD;EACA,SAAS,iBAAiB,WAAW,MAAM,UAAU,OAAO;GACxD,IAAI,MAAM,WAAW,GACjB,OAAO;GACX,IAAI,aAAa,UAAU,OAAO,KAAK,GACnC,OAAO;GACX,IAAI,UAAU,WAAW,MAAM,cAAc,aAAa,aAAa,WAAW,QAAQ,GAAG,KAAK,CAAC,GAC/F,OAAO;GAEX,IAAI,SAAS,KAAA,GACT,OAAO;GACX,IAAI,KAAK,UAAU,MAAM,WAAW,aAAa,OAAO,QAAQ,KAAK,KAAK,aAAa,OAAO,cAAc,KAAK,CAAC,GAC9G,OAAO;GAEX,OAAO,KAAK,SAAS,MAAM,YAAY,aAAa,aAAa,QAAQ,WAAW,QAAQ,GAAG,KAAK,CAAC;EACzG;;EAEA,SAAS,qBAAqB,EAAE,GAAG,WAAW,UAAU,eAAe,UAAU,MAAM,UAAU,kBAAkB,UAAU,UAAU,oBAAqB;GACxJ,MAAM,qBAAqB,CACvB;IACI,IAAI;IACJ,OAAO,EAAE,kBAAkB;IAC3B,OAAA,GAAA,kBAAA,IAAA,CAAWE,sCAAAA,mBAAmB,CAAC,CAAC;IAChC,UAAU;GACd,GACA;IACI,IAAI;IACJ,OAAO,EAAE,kBAAkB;IAC3B,OAAA,GAAA,kBAAA,IAAA,CAAWC,sCAAAA,oBAAoB,CAAC,CAAC;IACjC,QAAQ;IACR,UAAU;GACd,CACJ;GACA,MAAM,cAAc,KAAK,WAAW,WAC9BC,qBAAO,aACP,KAAK,WAAW,UACZA,qBAAO,YACP;GACV,QAAA,GAAA,kBAAA,KAAA,CAAc,OAAO;IAAE,WAAW,GAAGA,qBAAO,aAAa,GAAG;IAAe,uBAAuB,KAAK,SAAS,WAAW,KAAA;IAAW,kBAAkB,YAAY,KAAA;IAAW,WAAW;IAAM,eAAe;KACvM,SAAS;IACb;IAAG,cAAc,UAAU;KACvB,MAAM,aAAa,gBAAgB;KACnC,MAAM,aAAa,QAAQ,cAAc,UAAU,WAAW;KAC9D,KAAK,MAAM;IACf;IAAG,WAAW,KAAK;IAAK,aAAa,UAAU;KAC3C,IAAI,CAAC,KAAK,QACN;KACJ,MAAM,eAAe;KACrB,MAAM,aAAa,aAAa;KAChC,KAAK,MAAM,QAAQ,KAAK,CAAC;IAC7B;IAAG,SAAS,UAAU;KAClB,IAAI,CAAC,KAAK,QACN;KACJ,MAAM,eAAe;KACrB,KAAK,KAAK,QAAQ,KAAK,CAAC;IAC5B;IAAG,UAAU;gCAAM,UAAU;MAAE,MAAM;MAAU,WAAW,GAAGA,qBAAO,iBAAiB,GAAGA,qBAAO;MAAuB,cAAc,EAAE,WAAW,uBAAuB,oBAAoB,EAChL,MAAM,UAAU,MACpB,CAAC;MAAG,iBAAiB;MAAU,UAAU,UAAU;OAC/C,MAAM,gBAAgB;OACtB,SAAS;MACb;MAAG,UAAU,YAAA,GAAA,kBAAA,IAAA,CAAiBC,sCAAAA,0BAA0B,EAAE,MAAM,GAAG,CAAC,KAAA,GAAA,kBAAA,IAAA,CAAWC,sCAAAA,2BAA2B,EAAE,MAAM,GAAG,CAAC;KAAG,CAAC;gCAAQ,QAAQ;MAAE,WAAWF,qBAAO;MAAe,eAAe;MAAQ,UAAU,YAAA,GAAA,kBAAA,IAAA,CAAgBG,sCAAAA,kBAAkB,CAAC,CAAC,KAAA,GAAA,kBAAA,IAAA,CAASC,sCAAAA,mBAAmB,CAAC,CAAC;KAAE,CAAC;gCAAQ,QAAQ;MAAE,WAAWJ,qBAAO;MAAgB,UAAU,UAAU;KAAM,CAAC;iCAAS,QAAQ;MAAE,WAAW,GAAGA,qBAAO,eAAe,GAAGA,qBAAO;MAAoB,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,QAAQ;OAAE,WAAWA,qBAAO;OAAY,WAAA,GAAA,kBAAA,IAAA,CAAeK,sCAAAA,MAAM;QAAE,MAAM;QAAU,eAAe;SACrhB,iBAAiB,KAAK;QAC1B;QAAG,OAAO;QAAoB,WAAW,OAAO;SAC5C,iBAAiB,KAAK;SACtB,IAAI,OAAO,UACP,SAAS;SACb,IAAI,OAAO,UACP,SAAS;QACjB;QAAG,QAAQ;QAAM,qBAAqB;QAAM,SAAA,GAAA,kBAAA,IAAA,CAAc,UAAU;SAAE,MAAM;SAAU,WAAWL,qBAAO;SAAY,uBAAuB;SAAM,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,MAAM,CAAC;SAAG,UAAU,UAAU;UAC9N,MAAM,gBAAgB;UACtB,iBAAiB,CAAC,QAAQ;SAC9B;SAAG,WAAA,GAAA,kBAAA,IAAA,CAAeM,sCAAAA,uBAAuB,CAAC,CAAC;QAAE,CAAC;OAAG,CAAC;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,UAAU;OAAE,MAAM;OAAU,WAAWN,qBAAO;OAAY,qBAAqB;OAAM,cAAc,EAAE,yBAAyB,EAAE,MAAM,UAAU,MAAM,CAAC;OAAG,UAAU,UAAU;QAC/O,MAAM,gBAAgB;QACtB,iBAAiB;OACrB;OAAG,WAAA,GAAA,kBAAA,IAAA,CAAeO,sCAAAA,mBAAmB,CAAC,CAAC;MAAE,CAAC,CAAC;KAAE,CAAC;IAAC;GAAE,CAAC;EAC1E;;EAEA,SAAS,iBAAiB,EAAE,GAAG,MAAM,OAAO,UAAU,MAAM,gBAAgB,OAAO,YAAY,UAAU,iBAAiB,QAAS;GAC/H,MAAM,OAAO,SAAS;GACtB,MAAM,OAAA,GAAA,kBAAA,KAAA,CAAa,OAAO;IAAE,WAAWP,qBAAO;IAAa,mBAAmB,OAAO,SAAS,KAAA;IAAW,sBAAsB,OAAO,OAAO,QAAQ,IAAI,KAAA;IAAW,kBAAkB,MAAM,OAAO,SAAS,KAAA;IAAW,SAAS;IAAU,UAAU;gCAAM,UAAU;MAAE,MAAM;MAAU,WAAW,GAAGA,qBAAO,iBAAiB,GAAGA,qBAAO;MAAsB,cAAc,EAAE,WAAW,sBAAsB,mBAAmB,EAAE,MAAM,MAAM,CAAC;MAAG,iBAAiB;MAAU,UAAU,UAAU;OACjd,MAAM,gBAAgB;OACtB,SAAS;MACb;MAAG,UAAU,YAAA,GAAA,kBAAA,IAAA,CAAiBC,sCAAAA,0BAA0B,EAAE,MAAM,GAAG,CAAC,KAAA,GAAA,kBAAA,IAAA,CAAWC,sCAAAA,2BAA2B,EAAE,MAAM,GAAG,CAAC;KAAG,CAAC;gCAAQ,QAAQ;MAAE,WAAWF,qBAAO;MAAc,eAAe;MAAQ,UAAU;KAAK,CAAC;KAAG,UAAU,KAAA,KAAa,eAAe,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,QAAQ;MAAE,WAAWA,qBAAO;MAAe,MAAM;MAAO,cAAc;MAAY,OAAO;MAAY,WAAA,GAAA,kBAAA,IAAA,CAAeQ,sCAAAA,UAAU,EAAS,MAAM,CAAC;KAAE,CAAC;gCAAS,QAAQ;MAAE,WAAWR,qBAAO;MAAe,UAAU;KAAM,CAAC;iCAAS,QAAQ;MAAE,WAAWA,qBAAO;MAAgB,UAAU,CAAC,SAAS,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,QAAQ;OAAE,WAAWA,qBAAO;OAAY,WAAA,GAAA,kBAAA,IAAA,CAAeK,sCAAAA,MAAM;QAAE,MAAM,KAAK;QAAM,eAAe;SAChpB,KAAK,aAAa,KAAK;QAC3B;QAAG,OAAO,CACN;SACI,IAAI;SACJ,OAAO,EAAE,iBAAiB;SAC1B,OAAA,GAAA,kBAAA,IAAA,CAAWN,sCAAAA,oBAAoB,CAAC,CAAC;SACjC,QAAQ;SACR,UAAU,KAAK;QACnB,CACJ;QAAG,WAAW,OAAO;SACjB,KAAK,aAAa,KAAK;SACvB,IAAI,OAAO,UACP,KAAK,SAAS;QACtB;QAAG,QAAQ;QAAM,qBAAqB;QAAM,SAAA,GAAA,kBAAA,IAAA,CAAa,UAAU;SAAE,MAAM;SAAU,WAAWC,qBAAO;SAAY,sBAAsB;SAAM,cAAc,EAAE,oBAAoB,EAAE,MAAM,KAAK,MAAM,CAAC;SAAG,UAAU,UAAU;UACtN,MAAM,gBAAgB;UACtB,KAAK,aAAa,CAAC,KAAK,IAAI;SAChC;SAAG,WAAA,GAAA,kBAAA,IAAA,CAAeM,sCAAAA,uBAAuB,CAAC,CAAC;QAAE,CAAC;OAAE,CAAC;MAAE,CAAC,GAAI,oBAAoB,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,UAAU;OAAE,MAAM;OAAU,WAAWN,qBAAO;OAAY,yBAAyB,OAAO,SAAS,KAAA;OAAW,oBAAoB,OAAO,KAAA,IAAY;OAAQ,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;OAAG,UAAU,UAAU;QACtV,MAAM,gBAAgB;QACtB,gBAAgB;OACpB;OAAG,WAAA,GAAA,kBAAA,IAAA,CAAeO,sCAAAA,mBAAmB,CAAC,CAAC;MAAE,CAAC,CAAE;KAAE,CAAC;IAAC;GAAE,CAAC;GACvE,IAAI,MACA,OAAO;GACX,QAAA,GAAA,kBAAA,IAAA,CAAaE,sCAAAA,WAAW;IAAE,QAAQ;IAAK,UAAA,GAAA,kBAAA,IAAA,CAAc,OAAO;KAAE,WAAWT,qBAAO;KAAoB,UAAU;IAAM,CAAC;IAAG,aAAa;IAAK,UAAU,MAAM,SAAS;GAAK,CAAC;EAC7K;;EAEA,SAAS,mBAAmB,EAAE,GAAG,WAAW,OAAO,MAAM,eAAe,QAAQ,UAAU,QAAQ,aAAc;GAC5G,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,SAAA,CAAwB,KAAK;GAC9C,MAAM,cAAc,KAAK,WAAW,WAC9BA,qBAAO,aACP,KAAK,WAAW,UACZA,qBAAO,YACP;GACV,MAAM,mBAAmB;IACrB;KACI,IAAI;KACJ,OAAO,EAAE,gBAAgB;KACzB,OAAA,GAAA,kBAAA,IAAA,CAAWF,sCAAAA,mBAAmB,CAAC,CAAC;KAChC,UAAU,aAAa,KAAA,KAAa;IACxC;IACA;KACI,IAAI;KACJ,OAAO,EAAE,cAAc;KACvB,OAAA,GAAA,kBAAA,IAAA,CAAWY,sCAAAA,qBAAqB,CAAC,CAAC;KAClC,UAAU,WAAW,KAAA,KAAa;IACtC;IACA;KACI,IAAI;KACJ,OAAO,EAAE,iBAAiB;KAC1B,OAAA,GAAA,kBAAA,IAAA,CAAWC,sCAAAA,sBAAsB,EAAE,MAAM,GAAG,CAAC;KAC7C,UAAU,cAAc,KAAA,KAAa;IACzC;GACJ;GACA,QAAA,GAAA,kBAAA,KAAA,CAAc,OAAO;IAAE,WAAW,GAAGX,qBAAO,eAAe,GAAG;IAAe,mBAAmB;IAAW,qBAAqB,KAAK,SAAS,WAAW,KAAA;IAAW,kBAAkB,YAAY,KAAA;IAAW,MAAM;IAAY,WAAW;IAAM,cAAc,UAAU;KAChQ,MAAM,aAAa,gBAAgB;KACnC,MAAM,aAAa,QAAQ,cAAc,SAAS;KAClD,KAAK,MAAM;IACf;IAAG,WAAW,KAAK;IAAK,aAAa,UAAU;KAC3C,IAAI,CAAC,KAAK,QACN;KACJ,MAAM,eAAe;KACrB,MAAM,aAAa,aAAa;KAChC,KAAK,MAAM,QAAQ,KAAK,CAAC;IAC7B;IAAG,SAAS,UAAU;KAClB,IAAI,CAAC,KAAK,QACN;KACJ,MAAM,eAAe;KACrB,KAAK,KAAK,QAAQ,KAAK,CAAC;IAC5B;IAAG,UAAU,EAAA,GAAA,kBAAA,KAAA,CAAO,UAAU;KAAE,MAAM;KAAU,WAAWA,qBAAO;KAAoB,SAAS;KAAQ,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,QAAQ;MAAE,WAAWA,qBAAO;MAAW,eAAe;MAAQ,UAAU;KAAS,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,QAAQ;MAAE,WAAWA,qBAAO;MAAc,UAAU;KAAM,CAAC,CAAC;IAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,QAAQ;KAAE,WAAWA,qBAAO;KAAY,WAAA,GAAA,kBAAA,IAAA,CAAeK,sCAAAA,MAAM;MAAE,MAAM;MAAU,eAAe;OACtW,YAAY,KAAK;MACrB;MAAG,OAAO;MAAkB,WAAW,OAAO;OAC1C,YAAY,KAAK;OACjB,IAAI,OAAO,UACP,WAAW,WAAW,KAAK;OAC/B,IAAI,OAAO,QACP,SAAS,SAAS;OACtB,IAAI,OAAO,WACP,YAAY,SAAS;MAC7B;MAAG,QAAQ;MAAM,qBAAqB;MAAM,SAAA,GAAA,kBAAA,IAAA,CAAc,UAAU;OAAE,MAAM;OAAU,WAAWL,qBAAO;OAAY,qBAAqB;OAAM,cAAc,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;OAAG,UAAU,UAAU;QAChN,MAAM,gBAAgB;QACtB,aAAa,YAAY,CAAC,OAAO;OACrC;OAAG,WAAA,GAAA,kBAAA,IAAA,CAAeM,sCAAAA,uBAAuB,CAAC,CAAC;MAAE,CAAC;KAAG,CAAC;IAAE,CAAC,CAAC;GAAE,CAAC;EACjF;EACA,SAAS,qBAAqB,EAAE,GAAG,UAAU,YAAY,aAAa,UAAU,eAAe,UAAU,WAAW,kBAAkB,aAAa,aAAa,aAAa,cAAc,cAAc,QAAQ,UAAU,QAAQ,aAAc;GAC7O,MAAM,oBAAoB,WAAW,aAAa,WAAW,MAAM,GAAG,CAAC;GACvE,MAAM,gBAAgB,WAAW,aAAa;GAC9C,QAAA,GAAA,kBAAA,KAAA,CAAcM,kBAAAA,UAAW,EAAE,UAAU,CAAC,kBAAkB,KAAK,eAAA,GAAA,kBAAA,IAAA,CAAoB,oBAAoB;IAAK;IAAc;IAAW,OAAO,aAAa,WAAW,QAAQ;IAAG,MAAM;KACnK,QAAQ;KACR,QAAQ,iBAAiB,UAAU,MAAM,cAAc,YACjD,UAAU,KAAK,OACf;KACN,aAAa;MACT,YAAY,UAAU,SAAS;KACnC;KACA,QAAQ,SAAS;MACb,YAAY,WAAW,IAAI;KAC/B;KACA,OAAO,SAAS;MACZ,IAAI,cAAc,KAAA,GACd;MACJ,aAAa,WAAW;OAAE;OAAW;MAAK,GAAG,YAAY,WAAW;KACxE;KACA,WAAW;MACP,IAAI,WAAW,SAAS,QAAQ,WAAW,SAAS,KAAA,GAChD,aAAa,WAAW,UAAU,MAAM,YAAY,WAAW;WAG/D,YAAY;MAEhB,aAAa;KACjB;IACJ;IAAkB;IAAe,cAAc;KAC3C,OAAO,SAAS;IACpB;IAAa;IAAkB;IAAmB;GAAU,GAAG,GAAG,SAAS,GAAG,WAAW,CAAE,GAAG,WAAW,SAAS,MAAA,GAAA,kBAAA,IAAA,CAAW,UAAU;IAAE,MAAM;IAAU,WAAWZ,qBAAO;IAAuB,iBAAiB;IAAU,SAAS;IAAkB,UAAU,WAC5P,EAAE,kBAAkB,IACpB,EAAE,sBAAsB,EAAE,OAAO,WAAW,SAAS,EAAE,CAAC;GAAE,CAAC,CAAE,EAAE,CAAC;EACtF;;;;;EAKA,SAAgB,gBAAgB,EAAE,UAAU,SAAS,aAAa,eAAe,GAAG,WAAW,SAAS,iBAAiB,0BAA0B,uBAAuB,mBAAmB,iBAAiB,iBAAiB,uBAAuB,qBAAqB,eAAe,aAAa,gBAAgB,wBAAwB,uBAAuB,eAAgB;GAElX,MAAM,OAAO,kBADS,UAAU,UAAU,MAAM,QACL,GAAG,aAAa,YAAY,KAAA,CAAS;GAChF,MAAM,WAAW,aAAa,UAAU,KAAK;GAC7C,MAAM,aAAa,eAAe,UAAU,KAAK;GACjD,MAAM,eAAe,sBAAsB,WAAW,KAAK;GAC3D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,SAAA,CAAyB,gBAAgB;GAC3D,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,SAAA,CAA2B,EAAE;GACjD,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC,CAAC,CAAC;GAC/D,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,SAAA,CAA6B,CAAC,CAAC;GACrD,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,SAAA,CAAiC,CAAC,CAAC;GAC7D,MAAM,CAAC,0BAA0B,gCAAA,GAAA,MAAA,SAAA,CAAwC;GACzE,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,SAAA,CAAmC;GAC/D,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC;GAC7D,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,SAAA,CAA+B;GACvD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,SAAA,CAA8B,EAAE;GACvD,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,SAAA,CAAyB,EAAE;GAC7C,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,SAAA,CAAqC;GACnE,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,SAAA,CAA2B;GAC/C,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,SAAA,CAA6B,KAAK;GACxD,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,SAAA,CAAmC;GAC/D,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC,EAAE;GAC/D,MAAM,CAAC,sBAAsB,4BAAA,GAAA,MAAA,SAAA,CAAoC,KAAK;GACtE,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC;GAC7D,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,SAAA,CAA6B;GACnD,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,SAAA,CAAqC;GACnE,MAAM,CAAC,sBAAsB,4BAAA,GAAA,MAAA,SAAA,CAAoC,EAAE;GACnE,MAAM,CAAC,wBAAwB,8BAAA,GAAA,MAAA,SAAA,CAAsC,KAAK;GAC1E,MAAM,CAAC,sBAAsB,4BAAA,GAAA,MAAA,SAAA,CAAoC;GACjE,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,SAAA,CAAqC;GACnE,MAAM,CAAC,wBAAwB,8BAAA,GAAA,MAAA,SAAA,CAAsC,KAAK;GAC1E,MAAM,CAAC,sBAAsB,4BAAA,GAAA,MAAA,SAAA,CAAoC;GACjE,MAAM,0BAAA,GAAA,MAAA,OAAA,CAAgC,KAAK;GAC3C,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,SAAA,CAA2B;GAC/C,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,SAAA,CAAqC,CAAC,CAAC;GACrE,MAAM,wBAAA,GAAA,MAAA,OAAA,CAA8B,KAAK;GACzC,MAAM,EAAE,KAAK,OAAO,WAAW,0BAA0B,SAAS,UAAU;GAC5E,MAAM,YAAY,SAAS;GAC3B,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,kBAAkB;GACnD,MAAM,qBAAqB,WAAW,sBAAsB,CAAC;GAC7D,MAAM,WAAA,GAAA,MAAA,YAAA,CAAsB,YAAY;IACpC,IAAI,YAAY,KAAA,GAAW;KACvB,aAAa,gBAAgB;KAC7B;IACJ;IACA,aAAa;KAAE,QAAQ;KAAW,OAAO,CAAC;IAAE,CAAC;IAC7C,IAAI;KACA,MAAM,QAAQ,MAAM,kBAAkB,SAAS,YAAY;KAC3D,aAAa;MAAE,QAAQ;MAAS;KAAM,CAAC;IAC3C,SACO,OAAO;KACV,aAAa;MACT,QAAQ;MACR,OAAO,CAAC;MACR,OAAO,oBAAoB,KAAK;KACpC,CAAC;IACL;GACJ,GAAG,CAAC,SAAS,YAAY,CAAC;GAC1B,CAAA,GAAA,MAAA,UAAA,OAAgB;IACZ,IAAI,SAAS,YACT,QAAa;SAGb,aAAa,gBAAgB;GAErC,GAAG,CAAC,MAAM,OAAO,CAAC;GAClB,CAAA,GAAA,MAAA,UAAA,OAAgB;IACZ,IAAI,UAAU,WAAW,WAAW,0BAA0B,KAAA,GAC1D;IACJ,sBAAsB,UAAU,MAAM,SAAS,SAAS,KAAK,SAAS,KAAK,aAAa;KACpF,aAAa,QAAQ;KACrB,WAAW,QAAQ;IACvB,EAAE,CAAC,CAAC;GACR,GAAG;IAAC,UAAU;IAAQ,UAAU;IAAO;GAAqB,CAAC;GAC7D,MAAM,mBAAA,GAAA,MAAA,QAAA,OAAgC,IAAI,IAAI,UAAU,MAAM,KAAK,SAAS,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC;GACzH,MAAM,iBAAiB,WAAW,MAAM,MAAM,cAAc,UAAU,gBAAgB,wBAAwB;GAC9G,MAAM,YAAY,6BAA6B,KAAA,IACzC,KAAA,IACA,gBAAgB,IAAI,wBAAwB;GAClD,MAAM,cAAc,OAAO,cAAc;IACrC,iBAAiB,IAAI;IACrB,eAAe,KAAA,CAAS;IACxB,IAAI;KACA,MAAM,UAAU;KAChB,MAAM,QAAQ;IAClB,SACO,OAAO;KACV,eAAe,oBAAoB,KAAK,CAAC;IAC7C,UACQ;KACJ,iBAAiB,KAAK;IAC1B;GACJ;GACA,MAAM,yBAAyB,qBAAqB,KAAK;GACzD,MAAM,2BAA2B,0BAA0B,KAAA,KACvD,uBAAuB,SAAS,KAChC,WAAW,MAAM,MAAM,cAAc,UAAU,gBAAgB,sBAAsB,eACjF,UAAU,UAAU,sBAAsB;GAClD,MAAM,yBAAyB,0BAC3B,0BAA0B,KAAA,KAC1B,uBAAuB,WAAW,KAClC,2BAA2B,uBAAuB,gBAClD;GACJ,MAAM,uBAAuB,cAAc;IACvC,yBAAyB;KACrB,aAAa,UAAU;KACvB,cAAc,UAAU;IAC5B,CAAC;IACD,wBAAwB,UAAU,KAAK;IACvC,wBAAwB,KAAA,CAAS;GACrC;GACA,MAAM,6BAA6B;IAC/B,IAAI,wBACA;IACJ,yBAAyB,KAAA,CAAS;IAClC,wBAAwB,KAAA,CAAS;GACrC;GACA,MAAM,yBAAyB,YAAY;IACvC,MAAM,SAAS;IACf,IAAI,0BAA0B,WAAW,KAAA,GACrC;IACJ,IAAI,oBAAoB,KAAA,GAAW;KAC/B,wBAAwB;MACpB,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,0BAA0B,IAAI;IAC9B,wBAAwB,KAAA,CAAS;IACjC,IAAI;KACA,MAAM,gBAAgB,OAAO,aAAa,sBAAsB;KAChE,yBAAyB,KAAA,CAAS;IACtC,SACO,OAAO;KACV,wBAAwB,0BAA0B,KAAK,CAAC;IAC5D,UACQ;KACJ,0BAA0B,KAAK;IACnC;GACJ;GACA,MAAM,uBAAuB,cAAc;IACvC,yBAAyB;KAAE,aAAa,UAAU;KAAa,OAAO,UAAU;IAAM,CAAC;IACvF,wBAAwB,KAAA,CAAS;GACrC;GACA,MAAM,6BAA6B;IAC/B,IAAI,wBACA;IACJ,yBAAyB,KAAA,CAAS;IAClC,wBAAwB,KAAA,CAAS;GACrC;GACA,MAAM,yBAAyB,YAAY;IACvC,MAAM,SAAS;IACf,IAAI,WAAW,KAAA,KAAa,wBACxB;IACJ,IAAI,oBAAoB,KAAA,GAAW;KAC/B,wBAAwB;MACpB,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,0BAA0B,IAAI;IAC9B,wBAAwB,KAAA,CAAS;IACjC,IAAI;KACA,MAAM,gBAAgB,OAAO,WAAW;KACxC,yBAAyB,KAAA,CAAS;IACtC,SACO,OAAO;KACV,wBAAwB,0BAA0B,KAAK,CAAC;IAC5D,UACQ;KACJ,0BAA0B,KAAK;IACnC;GACJ;GACA,MAAM,uBAAuB,YAAY,SAAS;IAC9C,IAAI,uBAAuB,SACvB;IACJ,uBAAuB,UAAU;IACjC,iBAAiB,KAAA,CAAS;IAC1B,MAAM,OAAO,WAAW;IACxB,MAAM,cAAc,KAAK,WAAW,cAAc,UAAU,gBAAgB,KAAK,WAAW;IAC5F,MAAM,cAAc,KAAK,WAAW,cAAc,UAAU,gBAAgB,WAAW,WAAW;IAClG,IAAI,gBAAgB,MAAM,gBAAgB,IACtC;IACJ,MAAM,oBAAoB,KAAK,SAAS,WAClC,KAAK,cACL,KAAK,cAAc,EAAE,EAAE;IAC7B,MAAM,cAAc,sBAAsB,KAAA,IACpC,KAAK,SACL,KAAK,WAAW,cAAc,UAAU,gBAAgB,iBAAiB;IAC/E,IAAI,sBAAsB,WAAW,eACjC,gBAAgB,eAChB,gBAAgB,cAAc,GAC9B;IAEJ,IAAI,0BAA0B,KAAA,GAAW;KACrC,eAAe;MACX,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,eAAe,KAAA,CAAS;IACxB,sBAA2B,WAAW,aAAa,iBAAiB,CAAC,CAAC,OAAO,UAAU;KACnF,eAAe,oBAAoB,KAAK,CAAC;IAC7C,CAAC;GACL;GACA,MAAM,qBAAqB,YAAY,MAAM,YAAY,gBAAgB;IACrE,IAAI,qBAAqB,SACrB;IACJ,qBAAqB,UAAU;IAC/B,eAAe,KAAA,CAAS;IACxB,MAAM,cAAc,WAAW,QAAQ,KAAK,SAAS;IACrD,MAAM,cAAc,WAAW,QAAQ,WAAW,SAAS;IAC3D,IAAI,gBAAgB,MAAM,gBAAgB,IACtC;IACJ,MAAM,kBAAkB,KAAK,SAAS,WAChC,KAAK,YACL,WAAW,cAAc;IAC/B,MAAM,cAAc,oBAAoB,KAAA,IAClC,WAAW,SACX,WAAW,QAAQ,eAAe;IACxC,IAAI,oBAAoB,WAAW,aAC/B,gBAAgB,eAChB,gBAAgB,cAAc,GAC9B;IAEJ,IAAI,wBAAwB,KAAA,GAAW;KACnC,eAAe;MACX,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,eAAe,KAAA,CAAS;IACxB,oBAAyB,aAAa,WAAW,WAAW,eAAe,CAAC,CAAC,OAAO,UAAU;KAC1F,eAAe,oBAAoB,KAAK,CAAC;IAC7C,CAAC;GACL;GACA,MAAM,qBAAqB,WAAW,iBAAiB;IACnD,uBAAuB;KAAE;KAAW;IAAa,CAAC;IAClD,sBAAsB,YAAY;IAClC,sBAAsB,KAAA,CAAS;GACnC;GACA,MAAM,2BAA2B;IAC7B,IAAI,sBACA;IACJ,uBAAuB,KAAA,CAAS;IAChC,sBAAsB,KAAA,CAAS;GACnC;GACA,MAAM,uBAAuB,YAAY;IACrC,MAAM,SAAS;IACf,MAAM,QAAQ,mBAAmB,KAAK;IACtC,IAAI,WAAW,KAAA,KAAa,MAAM,WAAW,KAAK,sBAC9C;IACJ,IAAI,kBAAkB,KAAA,GAAW;KAC7B,sBAAsB;MAClB,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,wBAAwB,IAAI;IAC5B,sBAAsB,KAAA,CAAS;IAC/B,IAAI;KACA,MAAM,cAAc,OAAO,WAAW,KAAK;KAC3C,uBAAuB,KAAA,CAAS;IACpC,SACO,OAAO;KACV,sBAAsB,0BAA0B,KAAK,CAAC;IAC1D,UACQ;KACJ,wBAAwB,KAAK;IACjC;GACJ;GACA,MAAM,yBAAyB,OAAO,cAAc;IAChD,IAAI,mBAAmB,KAAA,GACnB;IACJ,MAAM,kBAAkB,eAAe,SAAS,CAAC;GACrD;GACA,MAAM,mBAAmB,gBAAgB;IACrC,uBAAuB,aAAa;KAChC,GAAG;MACF,cAAc,QAAQ,iBAAiB;IAC5C,EAAE;GACN;GACA,MAAM,cAAc,gBAAgB;IAChC,kBAAkB,aAAa;KAC3B,GAAG;MACF,cAAc,QAAQ,iBAAiB;IAC5C,EAAE;GACN;GACA,MAAM,kBAAkB,eAAe;IACnC,sBAAsB,aAAa;KAC/B,GAAG;MACF,aAAa,QAAQ,gBAAgB;IAC1C,EAAE;GACN;GACA,MAAM,uBAAuB,cAAc;IACvC,MAAM,OAAO,gBAAgB,IAAI,UAAU,WAAW;IACtD,MAAM,aAAa,wBAAwB,MAAM,YAAY,CAAC,CAAC;IAC/D,MAAM,gBAAgB,CAClB,IAAI,MAAM,YAAY,CAAC,EAAA,CAAG,KAAK,WAAW,OAAO,IAAI,GACrD,IAAI,MAAM,aAAa,CAAC,EAAA,CAAG,KAAK,aAAa,SAAS,MAAM,CAChE;IACA,4BAA4B,UAAU,WAAW;IACjD,kBAAkB,UAAU;IAC5B,aAAa,0BAA0B,aAAa,CAAC;IACrD,eAAe,KAAA,CAAS;GAC5B;GACA,MAAM,iBAAiB,YAAY;IAC/B,MAAM,eAAe,UAAU,KAAK;IACpC,IAAI,YAAY,KAAA,KACZ,mBAAmB,KAAA,KACnB,eAAe,WAAW,KAC1B,aAAa,WAAW,GACxB;IAEJ,MAAM,QAAQ;KACV,aAAa,eAAe;KAC5B,QAAQ;KACR,WAAW;IACf;IACA,iBAAiB,IAAI;IACrB,eAAe,KAAA,CAAS;IACxB,yBAAyB,KAAA,CAAS;IAClC,IAAI;KACA,MAAM,kBAAkB,MAAM,sBAAsB,SAAS;MACzD,MAAM;MACN;KACJ,CAAC;KACD,IAAI,oBAAoB,KAAA,GACpB,MAAM;MACF,MAAM;MACN,SAAS;MACT,WAAW;KACf;KAEJ,4BAA4B,KAAA,CAAS;KACrC,IAAI,0BAA0B,KAAA,GAAW;MACrC,MAAM,QAAQ;MACd,eAAe;OACX,MAAM;OACN,SAAS;OACT,WAAW;MACf,CAAC;MACD;KACJ;KACA,MAAM,eAAe;MACjB,aAAa,gBAAgB;MAC7B,YAAY,gBAAgB;MAC5B,KAAK,gBAAgB;KACzB;KACA,IAAI;MACA,MAAM,sBAAsB,YAAY;KAC5C,SACO,OAAO;MACV,IAAI,iBAAiB,6BACjB,yBAAyB;OAAE,GAAG;OAAc,WAAW,MAAM;MAAU,CAAC;MAE5E,MAAM;KACV;KACA,MAAM,QAAQ;IAClB,SACO,OAAO;KACV,eAAe,oBAAoB,KAAK,CAAC;IAC7C,UACQ;KACJ,iBAAiB,KAAK;IAC1B;GACJ;GACA,MAAM,gBAAgB,OAAO,UAAU;IACnC,IAAI,0BAA0B,KAAA,GAAW;KACrC,eAAe;MACX,MAAM;MACN,SAAS;MACT,WAAW;KACf,CAAC;KACD;IACJ;IACA,iBAAiB,IAAI;IACrB,eAAe,KAAA,CAAS;IACxB,yBAAyB,KAAA,CAAS;IAClC,IAAI;KACA,MAAM,sBAAsB,KAAK;KACjC,MAAM,QAAQ;IAClB,SACO,OAAO;KACV,IAAI,iBAAiB,6BACjB,yBAAyB;MAAE,GAAG;MAAO,WAAW,MAAM;KAAU,CAAC;KAErE,eAAe,oBAAoB,KAAK,CAAC;IAC7C,UACQ;KACJ,iBAAiB,KAAK;IAC1B;GACJ;GACA,MAAM,sBAAsB,YAAY;IACpC,IAAI,YAAY,KAAA,KAAa,0BAA0B,KAAA,GACnD;IACJ,iBAAiB,IAAI;IACrB,eAAe,KAAA,CAAS;IACxB,IAAI;KACA,MAAM,QAAQ,YAAY;MACtB,aAAa,sBAAsB;MACnC,YAAY,sBAAsB;MAClC,WAAW,sBAAsB;KACrC,CAAC;KACD,MAAM,YAAY,sBAAsB;KACxC,yBAAyB,KAAA,CAAS;KAClC,yBAAyB,sBAAsB,aAAa,SAAS;KACrE,MAAM,QAAQ;KACd,YAAY,SAAS;IACzB,SACO,OAAO;KACV,eAAe,oBAAoB,KAAK,CAAC;IAC7C,UACQ;KACJ,iBAAiB,KAAK;IAC1B;GACJ;GACA,MAAM,wBAAwB,aAAa,cAAc;IACrD,yBAAyB,aAAa,SAAS;IAC/C,oBAAoB,EAAE,MAAM,YAAY,GAAG,SAAS;GACxD;GACA,IAAI,SAAS,YACT,OAAO;GACX,MAAM,oBAAoB,WAAW,MAAM,QAAQ,cAAc,iBAAiB,WAAW,gBAAgB,IAAI,UAAU,WAAW,GAAG,UAAU,KAAK,CAAC;GACzJ,QAAA,GAAA,kBAAA,KAAA,CAAc,SAAS;IAAO;IAAK,WAAWA,qBAAO;IAAS,yBAAyB;IAAM,kBAAkB,aAAa,KAAA;IAAW,cAAc,EAAE,iBAAiB;IAAG,OAAO;KAC1K,OAAO,GAAG,MAAM;KAChB,GAAI,OAAO,QACL;MAAE,KAAK,GAAG,OAAO,IAAI;MAAK,QAAQ,GAAG,OAAO,OAAO;KAAI,IACvD;MAAE,QAAQ;MAAO,YAAY;KAAS;IAChD;IAAG,UAAU;iCAAO,OAAO;MAAE,WAAWA,qBAAO;MAAa,UAAU;mCAAO,UAAU;QAAE,WAAWA,qBAAO;QAAQ,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,QAAQ;SAAE,WAAWA,qBAAO;SAAO,UAAU,EAAE,gBAAgB;QAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,UAAU;SAAE,MAAM;SAAU,WAAWA,qBAAO;SAAa,cAAc,EAAE,WAAW;SAAG,eAAe;UACzR,QAAQ,YAAY,mBAAmB;SAC3C;SAAG,WAAA,GAAA,kBAAA,IAAA,CAAea,sCAAAA,oBAAoB,CAAC,CAAC;QAAE,CAAC,CAAC;OAAE,CAAC;mCAAS,OAAO;QAAE,WAAWb,qBAAO;QAAW,UAAU;oCAAM,QAAQ;UAAE,WAAWA,qBAAO;UAAY,eAAe;UAAQ,WAAA,GAAA,kBAAA,IAAA,CAAec,sCAAAA,qBAAqB,CAAC,CAAC;SAAE,CAAC;oCAAQ,SAAS;UAAE,WAAWd,qBAAO;UAAa,cAAc,EAAE,kBAAkB;UAAG,aAAa,EAAE,kBAAkB;UAAG,OAAO;UAAa,WAAW,UAAU;WACtX,eAAe,MAAM,cAAc,KAAK;UAC5C;SAAE,CAAC;oCAAQ,UAAU;UAAE,MAAM;UAAU,WAAWA,qBAAO;UAAY,cAAc,EAAE,eAAe;UAAG,eAAe;WAClH,IAAI,oBAAoB,KAAA,GACpB,YAAiB,eAAe;UACxC;UAAG,WAAA,GAAA,kBAAA,IAAA,CAAeO,sCAAAA,mBAAmB,CAAC,CAAC;SAAE,CAAC;QAAC;OAAE,CAAC;mCAAS,OAAO;QAAE,WAAWP,qBAAO;QAAS,UAAU;QAAG,UAAU;SAAC,gBAAgB,KAAA,MAAA,GAAA,kBAAA,KAAA,CAAoB,OAAO;UAAE,WAAWA,qBAAO;UAAO,MAAM;UAAS,uBAAuB;UAAM,UAAU;sCAAM,KAAK;YAAE,WAAWA,qBAAO;YAAS,cAAc;YAAQ,UAAU,wBAAwB,aAAa,CAAC;WAAE,CAAC;WAAG,0BAA0B,KAAA,MAAA,GAAA,kBAAA,KAAA,CAAoB,OAAO;YAAE,WAAWA,qBAAO;YAAiB,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,UAAU;aAAE,MAAM;aAAU,WAAWA,qBAAO;aAAc,UAAU;aAAe,eAAe;cAC7hB,oBAAyB;aAC7B;aAAG,UAAU,EAAE,qBAAqB;YAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,UAAU;aAAE,MAAM;aAAU,WAAWA,qBAAO;aAAc,UAAU;aAAe,eAAe;cAC/I,MAAM,YAAY,sBAAsB;cACxC,yBAAyB,KAAA,CAAS;cAClC,eAAe,KAAA,CAAS;cACxB,YAAY,SAAS;aACzB;aAAG,UAAU,EAAE,2BAA2B;YAAE,CAAC,CAAC;WAAE,CAAC;WAAI,YAAY,cAAA,GAAA,kBAAA,IAAA,CAAmB,UAAU;YAAE,MAAM;YAAU,WAAWA,qBAAO;YAAa,eAAe;aAClK,eAAe,KAAA,CAAS;aACxB,QAAa;YACjB;YAAG,UAAU,EAAE,cAAc;WAAE,CAAC;UAAE;SAAE,CAAC;SAAI,UAAU,WAAW,cAAA,GAAA,kBAAA,IAAA,CAAmB,KAAK;UAAE,WAAWA,qBAAO;UAAS,UAAU,EAAE,gBAAgB;SAAE,CAAC;SAAI,UAAU,WAAW,WAAW,UAAU,UAAU,KAAA,KAAA,GAAA,kBAAA,KAAA,CAAmB,OAAO;UAAE,WAAWA,qBAAO;UAAO,MAAM;UAAS,uBAAuB;UAAM,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,KAAK;WAAE,WAAWA,qBAAO;WAAS,cAAc;WAAQ,UAAU,wBAAwB,UAAU,OAAO,CAAC;UAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQ,UAAU;WAAE,MAAM;WAAU,WAAWA,qBAAO;WAAa,eAAe;YACxf,QAAa;WACjB;WAAG,UAAU,EAAE,cAAc;UAAE,CAAC,CAAC;SAAE,CAAC,IAAK,UAAU,WAAW,WAAA,GAAA,kBAAA,IAAA,CAAgB,OAAO;UAAE,WAAWA,qBAAO;UAAe,UAAU,kBAAkB,WAAW,KAAA,GAAA,kBAAA,IAAA,CAAU,KAAK;WAAE,WAAWA,qBAAO;WAAO,UAAU,EAAE,qBAAqB;UAAE,CAAC,IAAM,kBAAkB,KAAK,cAAc;WAC5R,MAAM,OAAO,gBAAgB,IAAI,UAAU,WAAW;WACtD,MAAM,WAAW,mBAAmB,UAAU,iBAAiB;WAC/D,MAAM,wBAAwB,aAAa,UAAU,OAAO,KAAK;WACjE,MAAM,yBAAyB,yBAAyB,oBAAoB,YAAY,UAAU,aAAa,SAAS,GAAG,GAAG,kBAAkB;WAChJ,MAAM,WAAW,MAAM,YAAY,CAAC;WAKpC,MAAM,wBAHiB,kBAAkB,wBAAwB,CAC7D,GAAG,IAFqB,IAAI,SAAS,KAAK,YAAY,QAAQ,SAAS,CAEtD,CACrB,CAC2C,CAAC,CAAC,QAAQ,cAAc,yBAC/D,aAAa,aAAa,WAAW,QAAQ,GAAG,KAAK,CAAC;WAC1D,MAAM,eAAe,cAAc,UAAU,iBAAiB;WAC9D,MAAM,eAAe,QAAQ,UAAU;WACvC,MAAM,YAAY,MAAM,aAAa,CAAC;WACtC,QAAA,GAAA,kBAAA,KAAA,CAAc,WAAW;YAAE,WAAWA,qBAAO;YAAgB,qBAAqB,UAAU;YAAa,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,sBAAsB;aAAK;aAAc;aAAqB;aAAyB;aAAe,UAAU,wBAAwB,UAAU;aAAa,MAAM;cAC9Q,QAAQ,kBAAkB,KAAA;cAC1B,QAAQ,eAAe,MAAM,gBAAgB,UAAU,cACjD,cAAc,KAAK,OACnB;cACN,aAAa;eACT,uBAAuB,UAAU;eACjC,iBAAiB;gBAAE,aAAa,UAAU;gBAAa,MAAM;eAAK,CAAC;cACvE;cACA,QAAQ,SAAS;eACb,kBAAkB,YAAY,YAAY,KAAA,IACpC,UACA;gBACE,GAAG;gBACH,MAAM;iBAAE,aAAa,UAAU;iBAAa;gBAAK;eACrD,CAAC;cACT;cACA,OAAO,SAAS;eACZ,IAAI,kBAAkB,KAAA,GAClB;eACJ,oBAAoB,eAAe;gBAC/B,aAAa,UAAU;gBACvB;eACJ,CAAC;cACL;cACA,WAAW;eACP,IAAI,eAAe,SAAS,QAAQ,eAAe,SAAS,KAAA,GACxD,oBAAoB,eAAe,cAAc,IAAI;oBAGrD,iBAAiB,KAAA,CAAS;eAE9B,uBAAuB,UAAU;cACrC;aACJ;aAAG,gBAAgB;cACf,gBAAgB,UAAU,WAAW;aACzC;aAAG,wBAAwB;cACvB,oBAAoB,SAAS;aACjC;aAAG,gBAAgB;cACf,oBAAoB,SAAS;aACjC;aAAG,gBAAgB;cACf,oBAAoB,SAAS;aACjC;aAAG,mBAAmB,SAAS;cAC3B,uBAAuB,OAAO,UAAU,cAAc,KAAA,CAAS;aACnE;YAAE,CAAC,GAAG,aAAA,GAAA,kBAAA,KAAA,CAAmB,OAAO;aAAE,WAAWA,qBAAO;aAAc,UAAU;yCAAM,kBAAkB;eAAK;eAAG,MAAM;eAAQ,OAAO,EAAE,eAAe;eAAG,UAAU;eAAc,OAAA,GAAA,kBAAA,IAAA,CAAWU,sCAAAA,qBAAqB,CAAC,CAAC;eAAG,gBAAgB,UAAU;eAAO,gBAAgB;gBACvP,WAAW,UAAU,WAAW;eACpC;eAAG,iBAAiB,sBAAsB,KAAA,IACpC,KAAA,UACM;gBACJ,kBAAkB,UAAU,WAAW;eAC3C;cAAE,CAAC;cAAG,iBAAA,GAAA,kBAAA,IAAA,CAAsB,sBAAsB;eAAK;eAAG,UAAU;eAAc,YAAY;eAAuB,aAAa,UAAU;eAAa,UAAU,sBAAsB,kBAAkB;eAAqB;eAAyB;eAAU,WAAW;eAAa,wBAAwB;gBACnT,0BAA0B,aAAa;iBACnC,GAAG;kBACF,eAAe,QAAQ,kBAAkB;gBAC9C,EAAE;eACN;eAAG,cAAc,UAAU,cAAc;gBACrC,qBAAqB,UAAU;gBAC/B,eAAe;iBAAE;iBAAU;iBAAW,MAAM;gBAAK,CAAC;eACtD;eAAG,cAAc,WAAW,SAAS;gBACjC,gBAAgB,YAAY,YAAY,KAAA,IAClC,UACA;iBAAE,GAAG;iBAAS,MAAM;kBAAE;kBAAW;iBAAK;gBAAE,CAAC;eACnD;eAAG,mBAAmB;gBAClB,eAAe,KAAA,CAAS;eAC5B;eAAG,oBAAoB;gBACnB,qBAAqB,UAAU;eACnC;eAAG,cAAc;eAAmB,SAAS,cAAc;gBACvD,oBAAoB,EAAE,MAAM,YAAY,GAAG,SAAS;eACxD;eAAG,UAAU,kBAAkB,KAAA,IAAY,KAAA,IAAY;eAAmB,QAAQ;eAAa,WAAW,mBAAmB,KAAA,IAAY,KAAA,IAAY;cAAuB,CAAC;cAAI,UAAU,WAAW,MAAA,GAAA,kBAAA,IAAA,CAAW,KAAK;eAAE,WAAWV,qBAAO;eAAa,UAAU,EAAE,sBAAsB;cAAE,CAAC;cAAI,UAAU,KAAK,WAAW;eAC1T,MAAM,qBAAqB,yBAAyB,cAAc,UAAU,OAAO,UAAU,CAAC,CAAC,QAAQ,cAAc,SAAS,IAAI,SAAS,SAAS,CAAC,GAAG,kBAAkB;eAC1K,MAAM,uBAAuB,yBACzB,aAAa,OAAO,QAAQ,KAAK,KACjC,aAAa,OAAO,cAAc,KAAK;eAC3C,IAAI,MAAM,SAAS,KACf,CAAC,wBACD,CAAC,mBAAmB,MAAM,cAAc,aAAa,aAAa,WAAW,QAAQ,GAAG,KAAK,CAAC,GAC9F,OAAO;eAEX,MAAM,4BAA4B,mBAAmB,QAAQ,cAAc,wBACvE,aAAa,aAAa,WAAW,QAAQ,GAAG,KAAK,CAAC;eAC1D,MAAM,mBAAmB,YAAY,OAAO;eAC5C,MAAM,QAAQ,OAAO,WAAW,YAC1B,YACA,OAAO,WAAW,WACd,UACA;eACV,MAAM,aAAa,OAAO,WAAW,YAC/B,EAAE,mBAAmB,IACrB,OAAO,WAAW,WACd,EAAE,iBAAiB,IACnB,EAAE,gBAAgB;eAC5B,MAAM,mBAAmB,kBAAkB,OAAO,gBAAgB;eAClE,QAAA,GAAA,kBAAA,KAAA,CAAc,OAAO;gBAAE,WAAWA,qBAAO;gBAAe,oBAAoB,OAAO;gBAAY,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,kBAAkB;iBAAK;iBAAG,MAAM;iBAAY,OAAO,OAAO;iBAAQ,UAAU;iBAAkB,OAAA,GAAA,kBAAA,IAAA,CAAWU,sCAAAA,qBAAqB,CAAC,CAAC;iBAAG,gBAAgB,UAAU;iBAAc;iBAAmB;iBAAY,gBAAgB;kBACzT,eAAe,OAAO,UAAU;iBACpC;iBAAG,iBAAiB,OAAO,WAAW,iBAC1B;kBACJ,cAAmB;mBACf,aAAa,OAAO;mBACpB,YAAY,OAAO;mBACnB,KAAK,OAAO;kBAChB,CAAC;iBACL,IACE,KAAA;iBAAW,MAAM,OAAO,WAAW,WACnC;kBACE,MAAM,uBAAuB,OAAO;kBACpC,OAAO,OAAO;kBACd,UAAU;kBACV,eAAe,SAAS;mBACpB,sBAAsB,OAAO,OAAO,aAAa,KAAA,CAAS;kBAC9D;kBACA,gBAAgB;mBACZ,mBAAmB,MAAM;mBACzB,eAAe,KAAA,CAAS;kBAC5B;iBACJ,IACE,KAAA;gBAAU,CAAC,GAAG,qBAAA,GAAA,kBAAA,IAAA,CAA0B,sBAAsB;iBAAK;iBAAG,UAAU;iBAAkB,YAAY;iBAA2B,aAAa,UAAU;iBAAa,UAAU,sBAAsB,sBAAsB;iBAAqB;iBAAyB;iBAAU,WAAW;iBAAa,wBAAwB;kBAC7U,0BAA0B,aAAa;mBACnC,GAAG;oBACF,mBAAmB,QAAQ,sBAAsB;kBACtD,EAAE;iBACN;iBAAG,cAAc,UAAU,cAAc;kBACrC,qBAAqB,UAAU;kBAC/B,eAAe;mBAAE;mBAAU;mBAAW,MAAM;kBAAK,CAAC;iBACtD;iBAAG,cAAc,WAAW,SAAS;kBACjC,gBAAgB,YAAY,YAAY,KAAA,IAClC,UACA;mBAAE,GAAG;mBAAS,MAAM;oBAAE;oBAAW;mBAAK;kBAAE,CAAC;iBACnD;iBAAG,mBAAmB;kBAClB,eAAe,KAAA,CAAS;iBAC5B;iBAAG,oBAAoB;kBACnB,qBAAqB,UAAU;iBACnC;iBAAG,cAAc;iBAAmB,SAAS,cAAc;kBACvD,qBAAqB,UAAU,aAAa,SAAS;iBACzD;iBAAG,UAAU,kBAAkB,KAAA,IAAY,KAAA,IAAY;iBAAmB,QAAQ;iBAAa,WAAW,mBAAmB,KAAA,IACvH,KAAA,IACA;gBAAuB,CAAC,CAAE;eAAE,GAAG,OAAO,UAAU;cACtE,CAAC;aAAC;YAAE,CAAC,CAAE;WAAE,GAAG,UAAU,WAAW;UACrD,CAAC;SAAG,CAAC,IAAK;QAAI;OAAE,CAAC;MAAC;KAAE,CAAC;gCAAQ,OAAO;MAAE,WAAWV,qBAAO;MAAa,WAAA,GAAA,kBAAA,IAAA,CAAe,UAAU;OAAE,MAAM;OAAU,WAAWA,qBAAO;OAAY,cAAc,EAAE,WAAW;OAAG,eAAe;QACnM,QAAQ,YAAY,mBAAmB;OAC3C;OAAG,UAAU;MAAK,CAAC;KAAE,CAAC;iCAASe,sCAAAA,OAAO;MAAE,MAAM,wBAAwB,KAAA;MAAW,SAAS;MAAoB,YAAY,EAAE,cAAc;MAAG,OAAO,EAAE,gBAAgB;MAAG,SAAA,GAAA,kBAAA,KAAA,CAAeH,kBAAAA,UAAW,EAAE,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMI,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAsB,SAAS;OAAoB,UAAU,EAAE,eAAe;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQA,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU,wBAAwB,mBAAmB,KAAK,CAAC,CAAC,WAAW;OAAG,eAAe;QACjc,qBAA0B;OAC9B;OAAG,UAAU,EAAE,eAAe;MAAE,CAAC,CAAC,EAAE,CAAC;MAAI,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMC,sCAAAA,OAAO;OAAE,WAAWjB,qBAAO;OAAa,OAAO;OAAoB,cAAc,EAAE,cAAc;OAAG,WAAW;OAAM,UAAU;OAAsB,UAAU,UAAU;QAClO,MAAM,cAAc,OAAO;OAC/B;OAAG,WAAW,UAAU;QACpB,sBAAsB,MAAM,cAAc,KAAK;QAC/C,sBAAsB,KAAA,CAAS;OACnC;OAAG,YAAY,UAAU;QACrB,IAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,YAAY,aAAa;SACzD,MAAM,eAAe;SACrB,qBAA0B;QAC9B;OACJ;MAAE,CAAC,GAAG,uBAAuB,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,KAAK;OAAE,WAAWA,qBAAO;OAAa,MAAM;OAAS,UAAU,wBAAwB,oBAAoB,CAAC;MAAE,CAAC,CAAE;KAAE,CAAC;KAAG,0BAA0B,KAAA,MAAA,GAAA,kBAAA,KAAA,CAAoBe,sCAAAA,OAAO;MAAE,MAAM,0BAA0B,KAAA;MAAW,SAAS;MAAsB,YAAY,EAAE,6BAA6B;MAAG,OAAO,EAAE,uBAAuB;MAAG,SAAA,GAAA,kBAAA,KAAA,CAAeH,kBAAAA,UAAW,EAAE,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMI,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAwB,SAAS;OAAsB,UAAU,EAAE,eAAe;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQA,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAwB,eAAe;QACjnB,uBAA4B;OAChC;OAAG,UAAU,EAAE,eAAe;MAAE,CAAC,CAAC,EAAE,CAAC;MAAI,UAAU;kCAAMC,sCAAAA,OAAO;QAAE,WAAWjB,qBAAO;QAAa,OAAO;QAAsB,cAAc,EAAE,gBAAgB;QAAG,WAAW;QAAM,UAAU;QAAwB,UAAU,UAAU;SACxO,MAAM,cAAc,OAAO;QAC/B;QAAG,WAAW,UAAU;SACpB,wBAAwB,MAAM,cAAc,KAAK;SACjD,wBAAwB,KAAA,CAAS;QACrC;QAAG,YAAY,UAAU;SACrB,IAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,YAAY,aAAa;UACzD,MAAM,eAAe;UACrB,uBAA4B;SAChC;QACJ;OAAE,CAAC;OAAG,6BAAA,GAAA,kBAAA,IAAA,CAAkC,KAAK;QAAE,WAAWA,qBAAO;QAAa,MAAM;QAAS,UAAU,EAAE,qBAAqB;OAAE,CAAC;OAAI,yBAAyB,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,KAAK;QAAE,WAAWA,qBAAO;QAAa,MAAM;QAAS,UAAU,wBAAwB,sBAAsB,CAAC;OAAE,CAAC;MAAE;KAAE,CAAC;KAAI,0BAA0B,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmBe,sCAAAA,OAAO;MAAE,MAAM,0BAA0B,KAAA;MAAW,SAAS;MAAsB,YAAY,EAAE,6BAA6B;MAAG,OAAO,EAAE,uBAAuB;MAAG,aAAa,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,MAAM,CAAC;MAAG,SAAA,GAAA,kBAAA,KAAA,CAAeH,kBAAAA,UAAW,EAAE,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMI,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAwB,SAAS;OAAsB,UAAU,EAAE,eAAe;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQA,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAwB,eAAe;QAC10B,uBAA4B;OAChC;OAAG,UAAU,EAAE,eAAe;MAAE,CAAC,CAAC,EAAE,CAAC;MAAI,UAAU,yBAAyB,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmB,KAAK;OAAE,WAAWhB,qBAAO;OAAa,MAAM;OAAS,UAAU,wBAAwB,sBAAsB,CAAC;MAAE,CAAC;KAAG,CAAC;KAAI,6BAA6B,KAAA,KAAa,mBAAmB,KAAA,MAAA,GAAA,kBAAA,KAAA,CAAoBe,sCAAAA,OAAO;MAAE,MAAM,6BAA6B,KAAA;MAAW,eAAe;OACvX,IAAI,eACA;OACJ,4BAA4B,KAAA,CAAS;MACzC;MAAG,YAAY,EAAE,4BAA4B;MAAG,OAAO,EAAE,sBAAsB;MAAG,aAAa,EAAE,8BAA8B,EAAE,MAAM,eAAe,MAAM,CAAC;MAAG,SAAA,GAAA,kBAAA,KAAA,CAAeH,kBAAAA,UAAW,EAAE,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMI,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAe,eAAe;QAClQ,4BAA4B,KAAA,CAAS;OACzC;OAAG,UAAU,EAAE,eAAe;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQA,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU,iBAC7E,eAAe,WAAW,KAC1B,UAAU,KAAK,CAAC,CAAC,WAAW;OAAG,eAAe;QAC9C,eAAoB;OACxB;OAAG,UAAU,EAAE,iBAAiB;MAAE,CAAC,CAAC,EAAE,CAAC;MAAI,UAAU;mCAAO,SAAS;QAAE,WAAWhB,qBAAO;QAAY,UAAU,CAAC,EAAE,qBAAqB,IAAA,GAAA,kBAAA,KAAA,CAAS,UAAU;SAAE,WAAWA,qBAAO;SAAc,cAAc,EAAE,qBAAqB;SAAG,OAAO;SAAgB,UAAU;SAAe,WAAW,UAAU;UACjS,kBAAkB,MAAM,cAAc,KAAK;SAC/C;SAAG,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAM,UAAU;UAAE,OAAO;UAAI,UAAU,EAAE,wBAAwB;SAAE,CAAC,IAAI,WAAW,YAAY,CAAC,EAAA,CAAG,KAAK,YAAA,GAAA,kBAAA,KAAA,CAAkB,UAAU;UAAE,OAAO,OAAO;UAAM,UAAU;WAAC,OAAO;WAAM,OAAO,YAAY,EAAE,gBAAgB,IAAI;WAAI,OAAO,aAAa,EAAE,mBAAmB,IAAI;UAAE;SAAE,GAAG,OAAO,IAAI,CAAE,CAAC;QAAE,CAAC,CAAC;OAAE,CAAC;mCAAS,SAAS;QAAE,WAAWA,qBAAO;QAAY,UAAU,CAAC,EAAE,eAAe,IAAA,GAAA,kBAAA,IAAA,CAAQiB,sCAAAA,OAAO;SAAE,WAAWjB,qBAAO;SAAa,cAAc,EAAE,eAAe;SAAG,OAAO;SAAW,aAAa;SAAgB,UAAU;SAAe,WAAW,UAAU;UAC9iB,aAAa,MAAM,cAAc,KAAK;SAC1C;QAAE,CAAC,CAAC;OAAE,CAAC;OAAG,WAAW,SAAS,WAAW,MAAA,GAAA,kBAAA,IAAA,CAAW,KAAK;QAAE,WAAWA,qBAAO;QAAO,UAAU,EAAE,qBAAqB;OAAE,CAAC;MAAE;KAAE,CAAC;KAAI,oBAAoB,KAAA,MAAA,GAAA,kBAAA,IAAA,CAAmBe,sCAAAA,OAAO;MAAE,MAAM,oBAAoB,KAAA;MAAW,eAAe;OACjP,IAAI,eACA;OACJ,mBAAmB,KAAA,CAAS;MAChC;MAAG,YAAY,EAAE,4BAA4B;MAAG,OAAO,EAAE,iBAAiB;MAAG,aAAa,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,OAAO,CAAC;MAAG,SAAA,GAAA,kBAAA,KAAA,CAAeH,kBAAAA,UAAW,EAAE,UAAU,EAAA,GAAA,kBAAA,IAAA,CAAMI,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAe,eAAe;QAC/P,mBAAmB,KAAA,CAAS;OAChC;OAAG,UAAU,EAAE,eAAe;MAAE,CAAC,IAAA,GAAA,kBAAA,IAAA,CAAQA,sCAAAA,QAAQ;OAAE,SAAS;OAAW,UAAU;OAAe,eAAe;QAC3G,IAAI,YAAY,KAAA,GACZ;QACJ,MAAM,SAAS;QACf,YAAiB,YAAY;SACzB,MAAM,sBAAsB,SAAS;UACjC,MAAM;UACN,OAAO;WACH,aAAa,OAAO;WACpB,YAAY,OAAO;UACvB;SACJ,CAAC;SACD,mBAAmB,KAAA,CAAS;QAChC,CAAC;OACL;OAAG,UAAU,EAAE,iBAAiB;MAAE,CAAC,CAAC,EAAE,CAAC;KAAG,CAAC;IAAE;GAAE,CAAC;EAC5E;;;;EC/4BA,SAAgB,0BAA0B;GACtC,QAAA,GAAA,uCAAA,YAAA,CAAmB;IACf,aAAa,EAAE,UAAU,oBAAoB;IAC7C,SAAS;IACT,SAAS,EACL,cAAc,OAAO,SAAS;KAC1B,MAAM,WAAW;IACrB,EACJ;GACJ,CAAC;EACL;;;ECZA,SAAS,kBAAkB,UAAU;GACjC,MAAM,4BAAY,IAAI,IAAI;GAC1B,KAAK,MAAM,WAAW,UAAU;IAC5B,IAAI,QAAQ,YAAY,WAAW,KAAK,QAAQ,UAAU,WAAW,GACjE;IACJ,UAAU,IAAI,QAAQ,WAAW,OAAO;GAC5C;GACA,OAAO,CAAC,GAAG,UAAU,OAAO,CAAC;EACjC;EACA,SAAS,mBAAmB,MAAM,OAAO;GACrC,IAAI,KAAK,MAAM,WAAW,MAAM,MAAM,QAClC,OAAO;GACX,OAAO,KAAK,MAAM,OAAO,MAAM,UAAU;IACrC,MAAM,QAAQ,MAAM,MAAM;IAC1B,IAAI,SAAS,OACT,OAAO;IACX,IAAI,OAAO,SAAS,YAChB,SAAS,QACT,OAAO,UAAU,YACjB,UAAU,QACV,EAAE,iBAAiB,SACnB,EAAE,iBAAiB,UACnB,EAAE,gBAAgB,SAClB,EAAE,gBAAgB,QAClB,OAAO;IAEX,MAAM,iBAAiB,KAAK;IAC5B,MAAM,kBAAkB,MAAM;IAC9B,OAAQ,KAAK,gBAAgB,MAAM,eAC/B,MAAM,QAAQ,cAAc,KAC5B,MAAM,QAAQ,eAAe,KAC7B,eAAe,WAAW,gBAAgB,UAC1C,eAAe,OAAO,WAAW,iBAAiB,cAAc,gBAAgB,aAAa;GACrG,CAAC;EACL;;;;;;EAMA,SAAgB,iCAAiC,MAAM;GACnD,IAAI,WAAW,CAAC;GAChB,IAAI,WAAW;GACf,IAAI,WAAW;GACf,MAAM,SAAS,iBAAiB;IAC5B,MAAM,UAAU,KAAK,YAAY;IACjC,MAAM,OAAO,kCAAkC,SAAS,UAAU,YAAY;IAC9E,IAAI,mBAAmB,SAAS,IAAI,GAChC;IACJ,WAAW;IACX,IAAI;KACA,KAAK,IAAI,IAAI;IACjB,UACQ;KACJ,WAAW;IACf;GACJ;GACA,MAAM,eAAe;IACjB,IAAI,YAAY,UACZ;IACJ,MAAM,QAAQ;GAClB;GACA,MAAM,cAAc,KAAK,UAAU,MAAM;GACzC,MAAM,QAAQ,iBAAiB;IAC3B,IAAI,UACA;IACJ,MAAM,aAAa,kBAAkB,YAAY;IACjD,MAAM,UAAU;IAChB,WAAW;GACf;GACA,OAAO;IACH,OAAO,SAAS;KACZ,IAAI,UACA;KACJ,IAAI,SAAS,MAAM,YAAY,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,cAAc,QAAQ,SAAS,GACjH;KAEJ,KAAK,CAAC,GAAG,SAAS,QAAQ,YAAY,QAAQ,cAAc,QAAQ,SAAS,GAAG,OAAO,CAAC;IAC5F;IACA;IACA,cAAc,WAAW;KACrB,KAAK,SAAS,QAAQ,YAAY,QAAQ,cAAc,SAAS,CAAC;IACtE;IACA,UAAU;KACN,IAAI,UACA;KACJ,MAAM,CAAC,CAAC;KACR,WAAW,CAAC;KACZ,WAAW;KACX,YAAY;IAChB;GACJ;EACJ;;;;ECpFA,MAAa,SAAS;GAAC;GAAc;GAAU;GAAS;GAAY;EAAY;;;;;EAKhF,SAAgB,MAAM,KAAK;GACvB,IAAI,aAAa,IAAI,OAAO,SAAS,aAAa;IAAE;IAAI;GAAG,CAAC,GAAG,0CAA0C;GACzG,MAAM,UAAU,gCAAgC,IAAI,WAAW,GAAG;GAClE,MAAM,WAAW,IAAI;GACrB,MAAM,6BAA6B,iCAAiC,IAAI,WAAW,IAAI;GACvF,IAAI,mBAAmB,QAAQ,QAAQ,GAAG,yCAAyC;GACnF,IAAI,mBAAmB,2BAA2B,QAAQ,GAAG,mDAAmD;GAChH,MAAM,YAAY,wBAAwB;GAC1C,MAAM,0BAA0B,aAAa,cAAc;IACvD,2BAA2B,OAAO;KAAE;KAAa;IAAU,CAAC;GAChE;GACA,MAAM,yBAAyB,aAAa;IACxC,2BAA2B,KAAK,QAAQ;GAC5C;GACA,IAAI,MAAM,OAAO,+BAA+B,IAAI,MAAM,SAAS;IAC/D,MAAM;IACN,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,eAAe,EAAE,WAAW,KAAK;GACrC,GAAG,kBAAkB,CAAC;GACtB,IAAI,MAAM,OAAO,uBAAuB,IAAI,MAAM,SAAS;IACvD,MAAM;IACN,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,eAAe;KACX,WAAW;KACX;KACA,iBAAiB,YAAY;MACzB,MAAM,gBAAgB,MAAM,IAAI,WAAW,cAAc;MACzD,IAAI,kBAAkB,MAClB,MAAM,IAAI,WAAW,OAAO,EAAE,MAAM,cAAc,CAAC;KAC3D;KACA,2BAA2B,UAAU,yBAAyB;MAC1D,GAAG;MACH,gBAAgB,iBAAiB,SAAS,OAAO,YAAY;MAC7D;MACA,aAAa,cAAc;OACvB,uBAAuB,MAAM,aAAa,SAAS;MACvD;MACA,cAAc,cAAc;OACxB,IAAI,SAAS,KAAK,SAAS;MAC/B;KACJ,CAAC;KACD,oBAAoB,gBAAgB;MAChC,IAAI,WAAW,aAAa,WAAW;KAC3C;KACA,iBAAiB,OAAO,aAAa,UAAU;MAC3C,MAAM,IAAI,WAAW,OAAO,aAAa,KAAK;KAClD;KACA,iBAAiB,OAAO,gBAAgB;MACpC,MAAM,IAAI,WAAW,OAAO,WAAW;KAC3C;KACA,uBAAuB,OAAO,aAAa,sBAAsB;MAC7D,MAAM,IAAI,WAAW,aAAa,aAAa,iBAAiB;KACpE;KACA,qBAAqB,OAAO,aAAa,WAAW,oBAAoB;MACpE,MAAM,IAAI,WAAW,oBAAoB,aAAa,WAAW,eAAe;KACpF;KACA,eAAe,OAAO,WAAW,UAAU;MACvC,MAAM,UAAU,IAAI,SAAS,QAAQ,SAAS,CAAC,EAAE;MACjD,IAAI,YAAY,KAAA,GACZ,MAAM,IAAI,MAAM,oBAAoB,UAAU,EAAE;MACpD,MAAM,SAAS,MAAM,QAAQ,OAAO,KAAK;MACzC,IAAI,CAAC,OAAO,IACR,MAAM,IAAI,MAAM,OAAO,MAAM,OAAO;KAC5C;KACA,cAAc,cAAc;MACxB,IAAS,SAAS,KAAK;OACR;OACX,eAAe;MACnB,CAAC,CAAC,CACG,MAAM,YAAY;OACnB,IAAI,SAAS,KAAK,OAAO;MAC7B,CAAC,CAAC,CACG,YAAY,CAEjB,CAAC;KACL;KACA,iBAAiB,cAAc,IAAI,WAAW,eAAe,SAAS;KACtE;KACA;KACA,cAAc,cAAc;MACxB,IAAI,SAAS,KAAK,SAAS;KAC/B;IACJ;GACJ,GAAG,eAAe,CAAC;EACvB"}
|