spec-cat 0.1.62 → 0.1.64
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/BOa_3MnO.js +1 -0
- package/.output/public/_nuxt/{FfyCVKRU.js → Be7Q-KZm.js} +1 -1
- package/.output/public/_nuxt/{DPOGSCeV.js → C0xGK0_5.js} +1 -1
- package/.output/public/_nuxt/{Su-Cl_JF.js → C5uvKiQJ.js} +1 -1
- package/.output/public/_nuxt/{DIOhMCOf.js → CJOi1pKi.js} +3 -3
- package/.output/public/_nuxt/{D4LyIv_t.js → Cqzfu4b1.js} +1 -1
- package/.output/public/_nuxt/CrxPmt5A.js +1 -0
- package/.output/public/_nuxt/D0ZHasco.js +105 -0
- package/.output/public/_nuxt/DIUADCOG.js +1 -0
- package/.output/public/_nuxt/DaYnMifu.js +43 -0
- package/.output/public/_nuxt/DhK8N2yk.js +58 -0
- package/.output/public/_nuxt/{Bz2rU2zs.js → DntGb46R.js} +1 -1
- package/.output/public/_nuxt/{DwpuOtAP.js → FCWUBLV4.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/39e9ce1e-ba3f-4066-8a58-66dfecfe2817.json +1 -0
- package/.output/public/_nuxt/builds/meta/dev.json +1 -0
- package/.output/public/_nuxt/default.DKcvUy2t.css +1 -0
- package/.output/public/_nuxt/entry.uBSFaL6A.css +1 -0
- package/.output/public/_nuxt/{useTheme.Cny4Z64J.css → useTheme.B4wINCoW.css} +1 -1
- package/.output/server/chunks/_/aiProviderRegistry.mjs +1 -2
- package/.output/server/chunks/_/aiProviderRegistry.mjs.map +1 -1
- package/.output/server/chunks/_/aiProviderSelection.mjs +2 -2
- package/.output/server/chunks/_/chatGit.mjs +5 -3
- package/.output/server/chunks/_/chatGit.mjs.map +1 -1
- package/.output/server/chunks/_/claudeProvider.mjs +1 -215
- package/.output/server/chunks/_/claudeProvider.mjs.map +1 -1
- package/.output/server/chunks/_/claudeService.mjs +50 -54
- package/.output/server/chunks/_/claudeService.mjs.map +1 -1
- package/.output/server/chunks/_/codexProvider.mjs +47 -812
- package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
- package/.output/server/chunks/_/git.mjs +1 -2
- package/.output/server/chunks/_/git.mjs.map +1 -1
- package/.output/server/chunks/_/gitApiHelpers.mjs +1 -1
- package/.output/server/chunks/_/gitBranchOperations.mjs +1 -1
- package/.output/server/chunks/_/interactiveProviderQuery.mjs +160 -0
- package/.output/server/chunks/_/interactiveProviderQuery.mjs.map +1 -0
- package/.output/server/chunks/_/jobPersister.mjs +37 -6
- package/.output/server/chunks/_/jobPersister.mjs.map +1 -1
- package/.output/server/chunks/_/jobQueue.mjs +430 -278
- package/.output/server/chunks/_/jobQueue.mjs.map +1 -1
- package/.output/server/chunks/_/terminalSessions.mjs +582 -0
- package/.output/server/chunks/_/terminalSessions.mjs.map +1 -0
- package/.output/server/chunks/_/worktreeSetup.mjs +98 -0
- package/.output/server/chunks/_/worktreeSetup.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +1198 -584
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/_ws.mjs +21 -111
- package/.output/server/chunks/routes/_ws.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/providers.get.mjs +3 -1
- package/.output/server/chunks/routes/api/ai/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/compare.get.mjs +4 -5
- package/.output/server/chunks/routes/api/chat/compare.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/context.get.mjs +4 -2
- package/.output/server/chunks/routes/api/chat/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/finalize.post.mjs +17 -13
- package/.output/server/chunks/routes/api/chat/finalize.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs +26 -29
- package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs +4 -5
- package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview.delete.mjs +4 -5
- package/.output/server/chunks/routes/api/chat/preview.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview.post.mjs +4 -6
- package/.output/server/chunks/routes/api/chat/preview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/rebase.post.mjs +4 -7
- package/.output/server/chunks/routes/api/chat/rebase.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs +4 -6
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree.delete.mjs +11 -4
- package/.output/server/chunks/routes/api/chat/worktree.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree.post.mjs +4 -6
- package/.output/server/chunks/routes/api/chat/worktree.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +10 -9
- package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives.delete.mjs +40 -0
- package/.output/server/chunks/routes/api/conversations/archives.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/conversations/archives.get.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations/archives.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/update.post.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations/update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations.get.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations.post.mjs +4 -7
- package/.output/server/chunks/routes/api/conversations.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cwd.get.mjs +4 -2
- package/.output/server/chunks/routes/api/cwd.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branch-rename.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/branch-rename.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branch.delete.mjs +4 -5
- package/.output/server/chunks/routes/api/git/branch.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branches.get.mjs +4 -6
- package/.output/server/chunks/routes/api/git/branches.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/checkout.post.mjs +4 -5
- package/.output/server/chunks/routes/api/git/checkout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/clean.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/clean.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +3 -4
- package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/commit.post.mjs +4 -5
- package/.output/server/chunks/routes/api/git/commit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/diff.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/fetch.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/fetch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/file-diff.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/file-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/graph.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/graph.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/log.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/log.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/merge-base.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/merge-base.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/merge.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/merge.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/pull.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/pull.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/push.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/push.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/rebase.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/rebase.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.delete.mjs +3 -4
- package/.output/server/chunks/routes/api/git/remote.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/remote.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.put.mjs +3 -4
- package/.output/server/chunks/routes/api/git/remote.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remotes.get.mjs +3 -4
- package/.output/server/chunks/routes/api/git/remotes.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/reset.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/revert.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/revert.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/show.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/show.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stage.post.mjs +4 -5
- package/.output/server/chunks/routes/api/git/stage.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-apply.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash-apply.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-branch.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash-branch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-drop.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash-drop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-pop.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash-pop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash.get.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/stash.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/state.get.mjs +3 -4
- package/.output/server/chunks/routes/api/git/state.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/status.get.mjs +4 -5
- package/.output/server/chunks/routes/api/git/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +3 -4
- package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag-push.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/tag-push.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag.delete.mjs +3 -4
- package/.output/server/chunks/routes/api/git/tag.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag.post.mjs +3 -4
- package/.output/server/chunks/routes/api/git/tag.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/unstage.post.mjs +4 -5
- package/.output/server/chunks/routes/api/git/unstage.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +7 -4
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +4 -2
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +4 -2
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +19 -16
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +4 -6
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +6 -3
- package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +7 -4
- package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/abort.post.mjs +4 -2
- package/.output/server/chunks/routes/api/rebase/abort.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +19 -105
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs +3 -1
- package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs +4 -2
- package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/continue.post.mjs +71 -73
- package/.output/server/chunks/routes/api/rebase/continue.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/resolve.put.mjs +3 -1
- package/.output/server/chunks/routes/api/rebase/resolve.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repository/status.get.mjs +4 -5
- package/.output/server/chunks/routes/api/repository/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings.get.mjs +6 -5
- package/.output/server/chunks/routes/api/settings.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings.post.mjs +5 -3
- package/.output/server/chunks/routes/api/settings.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs +3 -1
- package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs +3 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/features.get.mjs +3 -1
- package/.output/server/chunks/routes/api/specs/features.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/reindex.post.mjs +4 -2
- package/.output/server/chunks/routes/api/specs/reindex.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/search.get.mjs +4 -2
- package/.output/server/chunks/routes/api/specs/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/status.get.mjs +4 -2
- package/.output/server/chunks/routes/api/specs/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs +4 -2
- package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs +4 -2
- package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/git-watcher-ws.mjs +4 -2
- package/.output/server/chunks/routes/git-watcher-ws.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +4 -2
- package/.output/server/chunks/routes/terminal-ws.mjs +230 -0
- package/.output/server/chunks/routes/terminal-ws.mjs.map +1 -0
- package/.output/server/index.mjs +4 -2
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/node-pty/build/Makefile +369 -0
- package/.output/server/node_modules/node-pty/build/Release/pty.node +0 -0
- package/.output/server/node_modules/node-pty/build/binding.Makefile +6 -0
- package/.output/server/node_modules/node-pty/build/config.gypi +513 -0
- package/.output/server/node_modules/node-pty/build/pty.target.mk +168 -0
- package/.output/server/node_modules/node-pty/lib/eventEmitter2.js +47 -0
- package/.output/server/node_modules/node-pty/lib/index.js +52 -0
- package/.output/server/node_modules/node-pty/lib/shared/conout.js +11 -0
- package/.output/server/node_modules/node-pty/lib/terminal.js +190 -0
- package/.output/server/node_modules/node-pty/lib/unixTerminal.js +346 -0
- package/.output/server/node_modules/node-pty/lib/utils.js +39 -0
- package/.output/server/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
- package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.js +320 -0
- package/.output/server/node_modules/node-pty/lib/windowsTerminal.js +199 -0
- package/.output/server/node_modules/node-pty/package.json +64 -0
- package/.output/server/package.json +2 -1
- package/package.json +4 -1
- package/.output/public/_nuxt/2zamijve.js +0 -1
- package/.output/public/_nuxt/BEjIzkrM.js +0 -85
- package/.output/public/_nuxt/BaSsfm-t.js +0 -36
- package/.output/public/_nuxt/BjdLSVUw.js +0 -1
- package/.output/public/_nuxt/DeqM2TrP.js +0 -1
- package/.output/public/_nuxt/builds/meta/df07a2f8-c6d6-420d-a863-ac6e0e7673e0.json +0 -1
- package/.output/public/_nuxt/default.DKSPicGu.css +0 -1
- package/.output/public/_nuxt/entry.BUDfUMkE.css +0 -1
- package/.output/public/_nuxt/zrVRZSxq.js +0 -64
- package/.output/server/chunks/_/baseBranch.mjs +0 -137
- package/.output/server/chunks/_/baseBranch.mjs.map +0 -1
- package/.output/server/chunks/_/claude.mjs +0 -164
- package/.output/server/chunks/_/claude.mjs.map +0 -1
- package/.output/server/chunks/_/conversationStore.mjs +0 -257
- package/.output/server/chunks/_/conversationStore.mjs.map +0 -1
- package/.output/server/chunks/_/geminiProvider.mjs +0 -372
- package/.output/server/chunks/_/geminiProvider.mjs.map +0 -1
- package/.output/server/chunks/_/gitExec.mjs +0 -48
- package/.output/server/chunks/_/gitExec.mjs.map +0 -1
- package/.output/server/chunks/_/providerProcessError.mjs +0 -163
- package/.output/server/chunks/_/providerProcessError.mjs.map +0 -1
- package/.output/server/chunks/_/uiAdapter.mjs +0 -421
- package/.output/server/chunks/_/uiAdapter.mjs.map +0 -1
- package/.output/server/chunks/routes/api/chat.post.mjs +0 -276
- package/.output/server/chunks/routes/api/chat.post.mjs.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BjdLSVUw.js","./DIOhMCOf.js","./entry.BUDfUMkE.css","./DPOGSCeV.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{y as v,z as y,A as d,d as Ie,C as ee,G as m,R as je,S as Je,U as Zt,I as Se,E as Xe,B as A,K as Y,g as Q,J as ze,V as hs,k as J,W as tr,L as Be,H as ge,o as gt,X as $t,Y as Km,O as Ve,Z as zt,T as Pr,_ as ps,M as _u,$ as _e,a0 as ds,P as On,D as ct,Q as kr,a1 as Jm,a2 as Or,a3 as ks,a4 as Cc,a5 as W1,c as q1,a6 as Wh,a7 as ep,a8 as j1,q as Y1,a9 as F1,x as U1,aa as Do}from"./DIOhMCOf.js";import{r as Ct,c as vn,b as ml,a as gs}from"./Bz2rU2zs.js";import{g as vo,m as G1,p as H1,h as qh,i as K1,j as jh,k as J1,l as ev,n as tv,w as rv,o as nv,q as tp,s as Yh,C as sv,_ as iv,t as Ru,u as ov,r as Fh,a as Uh}from"./zrVRZSxq.js";import{_ as ws}from"./DlAUqK2U.js";import{S as _a,i as av,b as lv,P as cv,W as Gh,M as Hh,c as Kh,d as Jh,g as ed,e as uv,D as rp,f as np,h as hv,a as bo,j as Ht,u as xo,k as Zs,l as Lo}from"./BjdLSVUw.js";import{u as Qc,_ as dv}from"./Su-Cl_JF.js";function fv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75"})])}function mv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5m8.25 3v6.75m0 0-3-3m3 3 3-3M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function pv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 8.25H7.5a2.25 2.25 0 0 0-2.25 2.25v9a2.25 2.25 0 0 0 2.25 2.25h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25H15M9 12l3 3m0 0 3-3m-3 3V2.25"})])}function gv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"})])}function Ov(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"})])}function sp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 0 0-3.7-3.7 48.678 48.678 0 0 0-7.324 0 4.006 4.006 0 0 0-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 0 0 3.7 3.7 48.656 48.656 0 0 0 7.324 0 4.006 4.006 0 0 0 3.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3-3 3"})])}function ip(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"})])}function op(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3"})])}function ap(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25"})])}function lp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15"})])}function cp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"})])}function vv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"})])}function up(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z"})])}function bv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 12.75c1.148 0 2.278.08 3.383.237 1.037.146 1.866.966 1.866 2.013 0 3.728-2.35 6.75-5.25 6.75S6.75 18.728 6.75 15c0-1.046.83-1.867 1.866-2.013A24.204 24.204 0 0 1 12 12.75Zm0 0c2.883 0 5.647.508 8.207 1.44a23.91 23.91 0 0 1-1.152 6.06M12 12.75c-2.883 0-5.647.508-8.208 1.44.125 2.104.52 4.136 1.153 6.06M12 12.75a2.25 2.25 0 0 0 2.248-2.354M12 12.75a2.25 2.25 0 0 1-2.248-2.354M12 8.25c.995 0 1.971-.08 2.922-.236.403-.066.74-.358.795-.762a3.778 3.778 0 0 0-.399-2.25M12 8.25c-.995 0-1.97-.08-2.922-.236-.402-.066-.74-.358-.795-.762a3.734 3.734 0 0 1 .4-2.253M12 8.25a2.25 2.25 0 0 0-2.248 2.146M12 8.25a2.25 2.25 0 0 1 2.248 2.146M8.683 5a6.032 6.032 0 0 1-1.155-1.002c.07-.63.27-1.222.574-1.747m.581 2.749A3.75 3.75 0 0 1 15.318 5m0 0c.427-.283.815-.62 1.155-.999a4.471 4.471 0 0 0-.575-1.752M4.921 6a24.048 24.048 0 0 0-.392 3.314c1.668.546 3.416.914 5.223 1.082M19.08 6c.205 1.08.337 2.187.392 3.314a23.882 23.882 0 0 1-5.223 1.082"})])}function xv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 14.25v2.25m3-4.5v4.5m3-6.75v6.75m3-9v9M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"})])}function hp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"})])}function yv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 0 1 1.037-.443 48.282 48.282 0 0 0 5.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function Bu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 12.75 6 6 9-13.5"})])}function kv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})])}function Zu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"})])}function wv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"})])}function Eu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"})])}function Fs(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z"})])}function dp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0-3-3m3 3 3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z"})])}function Sv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 9.75 16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"})])}function Pc(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function $v(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"})])}function Cv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375M9 15l2.25 2.25L15 12"})])}function Qv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"})])}function Pv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m5.231 13.481L15 17.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v16.5c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Zm3.75 11.625a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"})])}function Os(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function En(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})])}function Tv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"})])}function Mv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function Av(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 0 0-1.883 2.542l.857 6a2.25 2.25 0 0 0 2.227 1.932H19.05a2.25 2.25 0 0 0 2.227-1.932l.857-6a2.25 2.25 0 0 0-1.883-2.542m-16.5 0V6A2.25 2.25 0 0 1 6 3.75h3.879a1.5 1.5 0 0 1 1.06.44l2.122 2.12a1.5 1.5 0 0 0 1.06.44H18A2.25 2.25 0 0 1 20.25 9v.776"})])}function _v(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z"})])}function Rv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5"})])}function Bv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"})])}function Zv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"})])}function fp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function fs(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"})])}function Ev(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 12h14"})])}function Dv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13"})])}function mp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})])}function Lv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z"})])}function td(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"})])}function Du(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z"})])}function pp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"})])}function gp(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"})])}function Lu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z"})])}function Yi(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"})])}function Op(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9.563C9 9.252 9.252 9 9.563 9h4.874c.311 0 .563.252.563.563v4.874c0 .311-.252.563-.563.563H9.564A.562.562 0 0 1 9 14.437V9.564Z"})])}function Xu(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z"}),d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 6h.008v.008H6V6Z"})])}function Xv(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z"})])}async function rd(r){return $fetch("/api/chat/worktree",{method:"POST",body:r})}async function Iv(r){await $fetch("/api/chat/worktree",{method:"DELETE",body:r})}async function Vv(r){const e=await $fetch("/api/chat/preview-sync",{method:"POST",body:r});if(!e.success)throw new Error(e.error||"Unknown preview sync failure")}const zv={class:"flex items-center gap-1.5 px-2 py-1.5 bg-retro-panel border-b border-retro-border"},Nv={class:"relative flex-1 min-w-0"},Wv={key:0,class:"text-[11px] text-retro-muted flex-shrink-0 min-w-[60px] text-center"},qv=["disabled"],jv=["disabled"],Yv=Ie({__name:"GitFindWidget",props:{resultCount:{},currentIndex:{}},emits:["search","next","prev","close"],setup(r,{expose:e,emit:t}){const n=t,s=Q(""),i=Q(null);let o=null;function a(){o&&clearTimeout(o),o=setTimeout(()=>{n("search",s.value)},200)}function l(u){u.key==="Escape"?(u.preventDefault(),n("close")):u.key==="Enter"&&(u.preventDefault(),u.shiftKey?n("prev"):n("next"))}function c(){i.value?.focus(),i.value?.select()}return e({focus:c}),(u,h)=>(v(),y("div",zv,[ee(m(fs),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("div",Nv,[je(d("input",{ref_key:"inputRef",ref:i,"onUpdate:modelValue":h[0]||(h[0]=f=>Je(s)?s.value=f:null),type:"text",placeholder:"Find in commits...","aria-label":"Search commits",class:"w-full px-2 py-1 text-sm bg-retro-dark border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",onInput:a,onKeydown:l},null,544),[[Zt,m(s)]])]),m(s)?(v(),y("span",Wv,[r.resultCount>0?(v(),y(Se,{key:0},[Xe(A(r.currentIndex+1)+" of "+A(r.resultCount),1)],64)):(v(),y(Se,{key:1},[Xe(" No results ")],64))])):Y("",!0),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text disabled:opacity-30 disabled:cursor-not-allowed transition-colors",disabled:r.resultCount===0,"aria-label":"Previous result",title:"Previous (Shift+Enter)",onClick:h[1]||(h[1]=f=>n("prev"))},[ee(m(wv),{class:"w-4 h-4"})],8,qv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text disabled:opacity-30 disabled:cursor-not-allowed transition-colors",disabled:r.resultCount===0,"aria-label":"Next result",title:"Next (Enter)",onClick:h[2]||(h[2]=f=>n("next"))},[ee(m(kv),{class:"w-4 h-4"})],8,jv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors","aria-label":"Close find widget",title:"Close (Escape)",onClick:h[3]||(h[3]=f=>n("close"))},[ee(m(Ct),{class:"w-4 h-4"})])]))}}),Fv={class:"flex flex-col bg-retro-dark border border-retro-border rounded shadow-lg max-w-md w-full"},Uv={class:"flex items-center justify-between px-3 py-2 border-b border-retro-border"},Gv={class:"flex-1 overflow-auto max-h-[300px]"},Hv={class:"font-semibold text-retro-cyan flex-shrink-0 min-w-[60px]"},Kv=["onKeyup"],Jv=["onClick"],eb={class:"text-retro-muted truncate flex-1 font-mono"},tb=["onClick"],rb=["onClick"],nb={key:0,class:"px-3 py-4 text-center text-retro-muted text-xs"},sb={key:0,class:"px-3 py-2 border-t border-retro-border space-y-2"},ib={class:"flex gap-2 justify-end"},ob=["disabled"],ab={key:1,class:"px-3 py-2 border-t border-retro-border"},lb=Ie({__name:"GitRemoteManager",props:{remotes:{},loading:{type:Boolean}},emits:["add","edit","delete","close"],setup(r,{emit:e}){const t=e,n=Q(!1),s=Q(""),i=Q(""),o=Q(null),a=Q("");function l(){n.value=!0,s.value="",i.value=""}function c(){!s.value.trim()||!i.value.trim()||(t("add",{name:s.value.trim(),url:i.value.trim()}),n.value=!1)}function u(g){o.value=g.name,a.value=g.fetchUrl}function h(g){a.value.trim()&&(t("edit",{name:g,newUrl:a.value.trim()}),o.value=null)}function f(){o.value=null}return(g,p)=>(v(),y("div",Fv,[d("div",Uv,[p[5]||(p[5]=d("h3",{class:"text-sm font-semibold text-retro-text"},"Remote Repositories",-1)),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",onClick:p[0]||(p[0]=O=>t("close"))},[ee(m(Ct),{class:"w-4 h-4"})])]),d("div",Gv,[(v(!0),y(Se,null,ze(r.remotes,O=>(v(),y("div",{key:O.name,class:"flex items-center gap-2 px-3 py-2 border-b border-retro-border/50 text-xs"},[d("span",Hv,A(O.name),1),m(o)===O.name?(v(),y(Se,{key:0},[je(d("input",{"onUpdate:modelValue":p[1]||(p[1]=b=>Je(a)?a.value=b:null),type:"text",class:"flex-1 px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan",onKeyup:[hs(b=>h(O.name),["enter"]),hs(f,["escape"])]},null,40,Kv),[[Zt,m(a)]]),d("button",{class:"p-0.5 text-retro-green hover:text-retro-green/80",onClick:b=>h(O.name)},[ee(m(Bu),{class:"w-3.5 h-3.5"})],8,Jv),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text",onClick:f},[ee(m(Ct),{class:"w-3.5 h-3.5"})])],64)):(v(),y(Se,{key:1},[d("span",eb,A(O.fetchUrl),1),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-text",title:"Edit",onClick:b=>u(O)},[ee(m(mp),{class:"w-3.5 h-3.5"})],8,tb),d("button",{class:"p-0.5 text-retro-muted hover:text-retro-red",title:"Delete",onClick:b=>t("delete",O.name)},[ee(m(vn),{class:"w-3.5 h-3.5"})],8,rb)],64))]))),128)),r.remotes.length===0?(v(),y("div",nb," No remotes configured ")):Y("",!0)]),m(n)?(v(),y("div",sb,[je(d("input",{"onUpdate:modelValue":p[2]||(p[2]=O=>Je(s)?s.value=O:null),type:"text",placeholder:"Remote name (e.g., origin)",class:"w-full px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Zt,m(s)]]),je(d("input",{"onUpdate:modelValue":p[3]||(p[3]=O=>Je(i)?i.value=O:null),type:"text",placeholder:"Remote URL",class:"w-full px-2 py-1 text-xs bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",onKeyup:hs(c,["enter"])},null,544),[[Zt,m(i)]]),d("div",ib,[d("button",{class:"px-2 py-1 text-xs text-retro-muted hover:text-retro-text transition-colors",onClick:p[4]||(p[4]=O=>n.value=!1)}," Cancel "),d("button",{class:"px-2 py-1 text-xs bg-retro-cyan/20 text-retro-cyan border border-retro-cyan/40 rounded hover:bg-retro-cyan/30 transition-colors",disabled:!m(s).trim()||!m(i).trim(),onClick:c}," Add Remote ",8,ob)])])):Y("",!0),m(n)?Y("",!0):(v(),y("div",ab,[d("button",{class:"flex items-center gap-1 text-xs text-retro-cyan hover:text-retro-cyan/80 transition-colors",onClick:l},[ee(m(ml),{class:"w-3.5 h-3.5"}),p[6]||(p[6]=Xe(" Add Remote ",-1))])]))]))}}),pl={NODE_RADIUS:4,ROW_HEIGHT:32,COLUMN_WIDTH:20,PADDING:10,VISIBLE_BUFFER:10},Xo=["#3B82F6","#EF4444","#10B981","#F59E0B","#8B5CF6","#EC4899","#14B8A6","#F97316","#06B6D4","#84CC16","#F43F5E","#A855F7"],Us={A:{label:"Added",colorClass:"text-retro-green"},M:{label:"Modified",colorClass:"text-retro-yellow"},D:{label:"Deleted",colorClass:"text-retro-red"},R:{label:"Renamed",colorClass:"text-retro-blue"},C:{label:"Copied",colorClass:"text-retro-purple"},U:{label:"Unmerged",colorClass:"text-retro-cyan"}},cb=["width","height"],ub=["d","stroke","stroke-dasharray"],hb={key:0},db=["cx","r"],fb=["cx","r","fill"],mb=["cx","r","stroke"],pb=["cx","r","fill"],gb=["cx","r","stroke"],Ob=["cx","r","fill"],vb=["cx","r"],bb=["cx","r","fill"],vp=Ie({__name:"GitGraphSvg",props:{rowData:{},maxLane:{default:4},highlightBranches:{},tooltipText:{}},setup(r){const e=r,{COLUMN_WIDTH:t,ROW_HEIGHT:n,NODE_RADIUS:s,PADDING:i}=pl,o=J(()=>i*2+(e.maxLane+1)*t),a=n,l=n/2;function c(f){return i+f*t}function u(f){const g=c(f.fromLane),p=c(f.toLane);if(f.type==="vertical")return`M ${g} 0 L ${p} ${a}`;if(f.type==="vertical-top")return`M ${g} 0 L ${g} ${l}`;if(f.type==="vertical-bottom")return`M ${g} ${l} L ${g} ${a}`;if(f.style==="rounded")return`M ${g} ${l} C ${g} ${a}, ${p} ${a}, ${p} ${a}`;{const O=a*.75;return`M ${g} ${l} L ${g} ${O} L ${p} ${a}`}}const h=J(()=>e.rowData?c(e.rowData.lane):i);return(f,g)=>(v(),y("svg",{width:m(o),height:m(a),class:"block flex-shrink-0","aria-hidden":"true"},[r.rowData?(v(),y(Se,{key:0},[(v(!0),y(Se,null,ze(r.rowData.connections,(p,O)=>(v(),y("path",{key:O,d:u(p),stroke:p.color,"stroke-width":"2",fill:"none","stroke-dasharray":p.type.startsWith("merge")?"4 3":"none"},null,8,ub))),128)),d("g",null,[r.tooltipText?(v(),y("title",hb,A(r.tooltipText),1)):Y("",!0),r.rowData.nodeType==="head"?(v(),y(Se,{key:1},[d("circle",{cx:m(h),cy:l,r:m(s)+2,fill:"none",stroke:"currentColor","stroke-width":"2",class:"text-retro-cyan"},null,8,db),d("circle",{cx:m(h),cy:l,r:m(s),fill:r.rowData.color},null,8,fb)],64)):r.rowData.nodeType==="merge"?(v(),y(Se,{key:2},[d("circle",{cx:m(h),cy:l,r:m(s)+1,fill:"none",stroke:r.rowData.color,"stroke-width":"1.5"},null,8,mb),d("circle",{cx:m(h),cy:l,r:m(s)-1,fill:r.rowData.color},null,8,pb)],64)):r.rowData.nodeType==="stash"?(v(),y(Se,{key:3},[d("circle",{cx:m(h),cy:l,r:m(s),fill:"none",stroke:r.rowData.color,"stroke-width":"2"},null,8,gb),d("circle",{cx:m(h),cy:l,r:m(s)-2,fill:r.rowData.color},null,8,Ob)],64)):r.rowData.nodeType==="uncommitted"?(v(),y("circle",{key:4,cx:m(h),cy:l,r:m(s),fill:"none",stroke:"currentColor","stroke-width":"2",class:"text-retro-yellow","stroke-dasharray":"3 2"},null,8,vb)):(v(),y("circle",{key:5,cx:m(h),cy:l,r:m(s),fill:r.rowData.color},null,8,bb))])],64)):Y("",!0)],8,cb))}}),xb=["aria-selected","aria-label"],yb={key:1,class:"flex gap-1 flex-shrink-0"},kb=["title","onContextmenu"],wb={key:2,class:"flex gap-1 flex-shrink-0"},Sb=["onContextmenu"],$b={class:"text-retro-text text-xs truncate flex-1"},Cb={key:5,class:"flex-shrink-0 text-retro-muted text-[10px] hidden sm:inline"},Qb={key:6,class:"flex-shrink-0 text-retro-muted text-[10px]"},nd=72,Pb=Ie({__name:"GitCommitRow",props:{commit:{},index:{},isSelected:{type:Boolean},isHighlighted:{type:Boolean},isBranchHighlighted:{type:Boolean},isFeatureHighlighted:{type:Boolean},isPreviewHighlighted:{type:Boolean},isMuted:{type:Boolean},currentBranchName:{},localBranchNames:{},graphRowData:{},maxLane:{},columnVisibility:{}},emits:["click","keydown","branchContextMenu","commitContextMenu","tagContextMenu"],setup(r,{emit:e}){const t=r,n=e,s=J(()=>{const f=t.commit.branches;if(f.length===0)return[];const g=t.localBranchNames,p=[],O=[];for(const S of f)g.has(S)?p.push(S):O.push(S);const b=new Set(p),x=new Map,k=[];for(const S of O){const P=S.indexOf("/");if(P>0){const X=S.substring(P+1),E=S.substring(0,P);b.has(X)?(x.has(X)||x.set(X,[]),x.get(X).push(E)):k.push(S)}else k.push(S)}const w=[];for(const S of p){const P=x.get(S)||[];P.length>0?w.push({displayName:`${S}/${P.join(",")}`,originalBranches:[S,...P.map(X=>`${X}/${S}`)],isLocal:!0}):w.push({displayName:S,originalBranches:[S],isLocal:!0})}for(const S of k)w.push({displayName:S,originalBranches:[S],isLocal:!1});return w});function i(f,g){f.preventDefault(),f.stopPropagation();const p=g.originalBranches[0];n("branchContextMenu",{branch:p,x:f.clientX,y:f.clientY,isCurrentBranch:g.isLocal&&g.originalBranches.includes(t.currentBranchName??""),isLocal:g.isLocal})}function o(f,g){f.preventDefault(),f.stopPropagation(),n("tagContextMenu",{tag:g,x:f.clientX,y:f.clientY})}function a(f){f.preventDefault(),f.stopPropagation(),n("commitContextMenu",{x:f.clientX,y:f.clientY})}const{ROW_HEIGHT:l}=pl,c=J(()=>{const f=[t.commit.shortHash];return t.commit.branches.length>0&&f.push(t.commit.branches.join(", ")),t.commit.tags.length>0&&f.push(t.commit.tags.map(g=>`tag: ${g}`).join(", ")),f.join(" — ")});function u(f){const p=Date.now()/1e3-f;return p<60?"just now":p<3600?`${Math.floor(p/60)}m ago`:p<86400?`${Math.floor(p/3600)}h ago`:p<604800?`${Math.floor(p/86400)}d ago`:p<2592e3?`${Math.floor(p/604800)}w ago`:new Date(f*1e3).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}function h(f){const g=f.split(`
|
|
3
|
-
`)[0];return g.length>nd?g.substring(0,nd-3)+"...":g}return(f,g)=>{const p=vp;return v(),y("div",{class:Be(["flex items-center cursor-pointer group focus:outline-none focus:ring-1 focus:ring-retro-cyan/50 focus:ring-inset",{"opacity-40":r.isMuted,"bg-retro-magenta/10":r.isPreviewHighlighted,"bg-retro-yellow/20":r.isFeatureHighlighted&&!r.isPreviewHighlighted}]),style:tr({height:`${m(l)}px`}),role:"row",tabindex:"0","aria-selected":r.isSelected,"aria-label":`Commit ${r.commit.shortHash} by ${r.commit.author}: ${r.commit.message.split(`
|
|
4
|
-
`)[0]}`,onClick:g[0]||(g[0]=O=>n("click",O)),onKeydown:g[1]||(g[1]=O=>n("keydown",O)),onContextmenu:a},[ee(p,{rowData:r.graphRowData,maxLane:r.maxLane,tooltipText:m(c)},null,8,["rowData","maxLane","tooltipText"]),d("div",{class:Be(["flex-1 flex items-center gap-2 px-2 min-w-0 rounded-r transition-colors",{"bg-retro-magenta/10 border-l-2 border-retro-magenta/40":r.isPreviewHighlighted,"bg-retro-yellow/30 border-l-2 border-retro-yellow":r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-cyan/15":r.isSelected&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-yellow/10":r.isHighlighted&&!r.isSelected&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"bg-retro-cyan/5":r.isBranchHighlighted&&!r.isSelected&&!r.isHighlighted&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted,"group-hover:bg-retro-panel/50":!r.isSelected&&!r.isHighlighted&&!r.isFeatureHighlighted&&!r.isPreviewHighlighted&&!r.isBranchHighlighted}]),style:tr({height:`${m(l)-4}px`})},[!r.columnVisibility||r.columnVisibility.commit!==!1?(v(),y("span",{key:0,class:Be(["flex-shrink-0 font-mono text-[11px]",r.commit.isHead?"text-retro-cyan font-semibold":"text-retro-muted"])},A(r.commit.shortHash),3)):Y("",!0),m(s).length>0?(v(),y("div",yb,[(v(!0),y(Se,null,ze(m(s),O=>(v(),y("span",{key:O.displayName,class:Be(["px-1.5 py-0.5 text-[10px] rounded font-semibold leading-none cursor-context-menu hover:ring-1 hover:ring-retro-cyan/50",r.commit.isHead&&O.isLocal?"bg-retro-cyan/20 text-retro-cyan border border-retro-cyan/40":r.isPreviewHighlighted?"bg-retro-magenta/10 text-retro-magenta border border-retro-magenta/40":r.isFeatureHighlighted?"bg-retro-yellow/15 text-retro-yellow border border-retro-yellow/30":r.isBranchHighlighted?"bg-retro-cyan/15 text-retro-cyan/80 border border-retro-cyan/30":O.isLocal?"bg-retro-green/15 text-retro-green border border-retro-green/30":"bg-retro-orange/15 text-retro-orange border border-retro-orange/30"]),title:O.originalBranches.join(", "),onContextmenu:b=>i(b,O)},A(O.displayName),43,kb))),128))])):Y("",!0),r.commit.tags.length>0?(v(),y("div",wb,[(v(!0),y(Se,null,ze(r.commit.tags,O=>(v(),y("span",{key:O,class:"px-1 py-0.5 text-[10px] rounded-sm bg-retro-yellow/15 text-retro-yellow border border-retro-yellow/25 flex items-center gap-0.5 leading-none cursor-context-menu hover:ring-1 hover:ring-retro-yellow/50",onContextmenu:b=>o(b,O)},[ee(m(Xu),{class:"w-2.5 h-2.5"}),Xe(" "+A(O),1)],40,Sb))),128))])):Y("",!0),d("span",$b,A(h(r.commit.message)),1),r.commit.signatureStatus==="good"?(v(),ge(m(gp),{key:3,class:"w-3.5 h-3.5 flex-shrink-0 text-retro-green",title:"Verified signature"})):r.commit.signatureStatus==="bad"?(v(),ge(m(Lu),{key:4,class:"w-3.5 h-3.5 flex-shrink-0 text-retro-red",title:"Bad signature"})):Y("",!0),!r.columnVisibility||r.columnVisibility.author!==!1?(v(),y("span",Cb,A(r.commit.author),1)):Y("",!0),!r.columnVisibility||r.columnVisibility.date!==!1?(v(),y("span",Qb,A(u(r.commit.timestamp)),1)):Y("",!0)],6)],46,xb)}}});function Tb(){const{COLUMN_WIDTH:r,ROW_HEIGHT:e,NODE_RADIUS:t,PADDING:n}=pl;function s(l){let c=0;for(let u=0;u<l.length;u++){const h=l.charCodeAt(u);c=(c<<5)-c+h,c=c&c}return Math.abs(c)}function i(l){const c=s(l)%Xo.length;return Xo[c]}function o(l,c="rounded"){const u=new Map;if(l.length===0)return u;const h=new Set,f=new Map;for(const w of l)f.set(w.hash,w);const g=l[0];if(g){let w=g;for(;w;){h.add(w.hash);const S=w.parents?.[0];w=S?f.get(S):void 0}}const p=new Map,O=new Map,b=new Map,x=new Map,k=new Map;for(let w=0;w<l.length;w++){const S=l[w];k.set(S.hash,w);const P=h.has(S.hash);let X,E;if(x.has(S.hash)){const I=x.get(S.hash);X=I.lane,E=I.color,x.delete(S.hash)}else if(P)X=0,E=Xo[0];else{for(X=1;b.has(X);)X++;E=i(S.hash.substring(0,7))}p.set(S.hash,X),O.set(S.hash,E),b.set(X,S.hash);const K=S.isMerge||S.parents&&S.parents.length>1;let le="regular";S.isHead?le="head":K&&(le="merge"),u.set(S.hash,{commitHash:S.hash,lane:X,color:E,nodeType:le,isMainline:h.has(S.hash),connections:[]});const oe=S.parents||[];for(let I=0;I<oe.length;I++){const D=oe[I];if(p.has(D)||x.has(D))continue;const U=h.has(D);let z,V;if(I===0)z=X,V=E;else if(U)z=0,V=Xo[0];else{for(z=1;b.has(z)||z===X;)z++;V=i(D.substring(0,7))}x.set(D,{lane:z,color:V,childHash:S.hash})}const N=oe[0];if(!N)b.delete(X);else{const I=p.get(N),D=x.get(N),U=I??D?.lane;U!==void 0&&U!==X&&b.delete(X)}}for(let w=0;w<l.length;w++){const S=l[w],P=u.get(S.hash);if(!P)continue;const X=S.parents||[];for(let E=0;E<X.length;E++){const K=X[E],le=p.get(K),oe=k.get(K);if(le===void 0)continue;const N=P.lane,I=le,D=E===0?P.color:O.get(K)||i(K.substring(0,7));if(N===I?P.connections.push({type:"vertical-bottom",fromLane:N,toLane:I,color:D,style:c}):E>0?P.connections.push({type:N<I?"merge-out":"merge-in",fromLane:N,toLane:I,color:D,style:c}):P.connections.push({type:N<I?"branch-out":"branch-in",fromLane:N,toLane:I,color:D,style:c}),oe!==void 0&&oe>w+1)for(let U=w+1;U<oe;U++){const z=l[U],V=u.get(z.hash);V&&V.connections.push({type:"vertical",fromLane:I,toLane:I,color:D,style:c})}if(oe!==void 0){const U=u.get(K);U&&U.connections.push({type:"vertical-top",fromLane:I,toLane:I,color:D,style:c})}}}return u}function a(l){let c=0;for(const u of l.values()){u.lane>c&&(c=u.lane);for(const h of u.connections)h.fromLane>c&&(c=h.fromLane),h.toLane>c&&(c=h.toLane)}return c}return{computeGraphRows:o,computeMaxLane:a,getBranchColor:i,COLUMN_WIDTH:r,ROW_HEIGHT:e,NODE_RADIUS:t,PADDING:n}}const Mb=["aria-selected"],Ab={class:"text-retro-yellow text-xs font-medium"},_b={key:1,class:"flex items-center justify-center gap-2 p-2 text-retro-muted text-sm"},Rb={key:2,class:"p-2 text-center text-retro-muted/50 text-xs"},Bb=Ie({__name:"GitCommitList",props:{commits:{},stashes:{},selectedCommit:{},hasMore:{type:Boolean},loading:{type:Boolean},loadingMore:{type:Boolean},searchQuery:{},uncommittedChangesCount:{},isUncommittedChangesSelected:{type:Boolean},highlightBranches:{},featureHighlightBranches:{},featureMergeBases:{},previewHighlightBranches:{},previewMergeBases:{},currentBranchName:{},localBranchNames:{},graphStyle:{default:"rounded"},muteNonAncestral:{type:Boolean},columnVisibility:{}},emits:["select","compareSelect","loadMore","branchContextMenu","commitContextMenu","tagContextMenu","stashContextMenu","selectUncommittedChanges","scrollStart","scrollEnd"],setup(r,{expose:e,emit:t}){const n=r,s=t;function i(){s("selectUncommittedChanges")}function o(re){(re.key==="Enter"||re.key===" ")&&(re.preventDefault(),s("selectUncommittedChanges"))}const a=J(()=>n.searchQuery?.toLowerCase()??""),l=J(()=>new Set(n.highlightBranches??[])),c=J(()=>l.value.size>0),u=J(()=>{const re=a.value;if(!re)return new Set;const Oe=new Set;for(const ve of n.commits)(ve.message.toLowerCase().includes(re)||ve.author.toLowerCase().includes(re)||ve.shortHash.toLowerCase().includes(re)||ve.hash.toLowerCase().includes(re)||ve.branches.some(Ce=>Ce.toLowerCase().includes(re))||ve.tags.some(Ce=>Ce.toLowerCase().includes(re)))&&Oe.add(ve.hash);return Oe}),h=J(()=>{if(!c.value)return new Set;const re=new Set;for(const Oe of n.commits)Oe.branches.some(ve=>l.value.has(ve))&&re.add(Oe.hash);return re}),f=J(()=>{if(!n.featureHighlightBranches||n.featureHighlightBranches.length===0)return new Set;const re=n.featureMergeBases??{},Oe=new Map;for(const Ce of n.commits)Oe.set(Ce.hash,Ce);const ve=new Set;for(const Ce of n.featureHighlightBranches){const Me=n.commits.find(M=>M.branches.includes(Ce));if(!Me)continue;const Ue=re[Ce]??null;if(!Ue)continue;let Ye=Me;for(;Ye&&Ye.hash!==Ue;)ve.add(Ye.hash),Ye=Ye.parents?.[0]?Oe.get(Ye.parents[0]):void 0}return ve}),g=J(()=>{if(!n.previewHighlightBranches||n.previewHighlightBranches.length===0)return new Set;const re=n.previewMergeBases??{},Oe=new Map;for(const Ce of n.commits)Oe.set(Ce.hash,Ce);const ve=new Set;for(const Ce of n.previewHighlightBranches){const Me=n.commits.find(M=>M.branches.includes(Ce));if(!Me)continue;const Ue=re[Ce]??null;if(!Ue)continue;let Ye=Me;for(;Ye&&Ye.hash!==Ue;)ve.add(Ye.hash),Ye=Ye.parents?.[0]?Oe.get(Ye.parents[0]):void 0}return ve});function p(re,Oe){s("branchContextMenu",{...Oe,commitHash:re.hash})}function O(re,Oe){s("commitContextMenu",{commit:re,...Oe})}function b(re,Oe){s("tagContextMenu",{...Oe,commitHash:re.hash})}const{ROW_HEIGHT:x,VISIBLE_BUFFER:k}=pl,{computeGraphRows:w,computeMaxLane:S}=Tb(),P=J(()=>w([...n.commits],n.graphStyle)),X=J(()=>S(P.value)),E=J(()=>{const re=n.stashes||[];if(re.length===0)return n.commits.map((Me,Ue)=>({type:"commit",commit:Me,commitIndex:Ue}));const Oe=[],ve=[...re].sort((Me,Ue)=>new Date(Ue.date).getTime()-new Date(Me.date).getTime());let Ce=0;for(let Me=0;Me<n.commits.length;Me++){const Ue=n.commits[Me],Ye=Ue.timestamp*1e3;for(;Ce<ve.length&&new Date(ve[Ce].date).getTime()>=Ye;)Oe.push({type:"stash",stash:ve[Ce]}),Ce++;Oe.push({type:"commit",commit:Ue,commitIndex:Me})}for(;Ce<ve.length;)Oe.push({type:"stash",stash:ve[Ce]}),Ce++;return Oe}),K=Q(null),le=Q(0),oe=Q(400);let N=null;const I=J(()=>{const re=k,Oe=E.value.length,ve=Math.max(0,Math.floor(le.value/x)-re),Ce=Math.min(Oe,Math.ceil((le.value+oe.value)/x)+re);return{startIndex:ve,endIndex:Ce}}),D=J(()=>{const{startIndex:re,endIndex:Oe}=I.value;return E.value.slice(re,Oe).map((ve,Ce)=>({row:ve,index:re+Ce,graphRow:ve.type==="commit"&&P.value.get(ve.commit.hash)||null,isHighlighted:ve.type==="commit"?u.value.has(ve.commit.hash):!1,isBranchHighlighted:ve.type==="commit"?h.value.has(ve.commit.hash):!1,isFeatureHighlighted:ve.type==="commit"?f.value.has(ve.commit.hash):!1,isPreviewHighlighted:ve.type==="commit"?g.value.has(ve.commit.hash):!1,isMuted:ve.type==="commit"&&n.muteNonAncestral?!(P.value.get(ve.commit.hash)?.isMainline??!1):!1}))}),U=J(()=>E.value.length*x),z=J(()=>I.value.startIndex*x);function V(re){const Oe=re.target;le.value=Oe.scrollTop,N||s("scrollStart"),N&&clearTimeout(N),N=setTimeout(()=>{N=null,s("scrollEnd")},150),n.hasMore&&!n.loading&&!n.loadingMore&&Oe.scrollTop+Oe.clientHeight>=Oe.scrollHeight-200&&s("loadMore")}function G(re,Oe){Oe.ctrlKey||Oe.metaKey?s("compareSelect",re):s("select",re)}function j(re,Oe,ve){if(re.key==="Enter"||re.key===" ")re.preventDefault(),s("select",Oe);else if(re.key==="ArrowDown"){re.preventDefault();for(let Ce=ve+1;Ce<E.value.length;Ce++){const Me=E.value[Ce];if(Me.type==="commit"){s("select",Me.commit),ce(Ce);break}}}else if(re.key==="ArrowUp"){re.preventDefault();for(let Ce=ve-1;Ce>=0;Ce--){const Me=E.value[Ce];if(Me.type==="commit"){s("select",Me.commit),ce(Ce);break}}}}function ce(re){if(!K.value)return;const Oe=re*x,ve=K.value.scrollTop,Ce=ve+K.value.clientHeight;Oe<ve?K.value.scrollTop=Oe:Oe+x>Ce&&(K.value.scrollTop=Oe+x-K.value.clientHeight)}gt(()=>{if(K.value){oe.value=K.value.clientHeight;const re=new ResizeObserver(Oe=>{for(const ve of Oe)oe.value=ve.contentRect.height});re.observe(K.value),$t(()=>re.disconnect())}});function H(){return K.value?.scrollTop??0}function F(re){K.value&&(K.value.scrollTop=re)}return e({getScrollPosition:H,setScrollPosition:F,scrollToIndex:ce}),(re,Oe)=>{const ve=vp,Ce=Pb;return v(),y("div",{ref_key:"containerRef",ref:K,class:"h-full overflow-auto",role:"list","aria-label":"Commit history",onScroll:V},[r.uncommittedChangesCount&&r.uncommittedChangesCount>0?(v(),y("div",{key:0,class:"flex items-center cursor-pointer group sticky top-0 z-10 bg-retro-dark border-b border-retro-border",style:tr({height:`${m(x)}px`}),role:"button",tabindex:"0","aria-selected":r.isUncommittedChangesSelected,onClick:i,onKeydown:o},[ee(ve,{rowData:{commitHash:"uncommitted",lane:0,color:"#F59E0B",nodeType:"uncommitted",isMainline:!1,connections:[]},maxLane:m(X)},null,8,["maxLane"]),d("div",{class:Be(["flex-1 flex items-center gap-2 px-2 min-w-0 rounded-r transition-colors",{"bg-retro-yellow/15":r.isUncommittedChangesSelected,"group-hover:bg-retro-panel/50":!r.isUncommittedChangesSelected}]),style:tr({height:`${m(x)-4}px`})},[ee(m(vo),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("span",Ab," Uncommitted Changes ("+A(r.uncommittedChangesCount)+") ",1),Oe[1]||(Oe[1]=d("span",{class:"flex-1"},null,-1)),Oe[2]||(Oe[2]=d("span",{class:"text-retro-muted text-[10px]"},"Working tree",-1))],6)],44,Mb)):Y("",!0),d("div",{class:"relative",style:tr({height:`${m(U)}px`})},[d("div",{class:"absolute left-0 right-0",style:tr({transform:`translateY(${m(z)}px)`})},[(v(!0),y(Se,null,ze(m(D),({row:Me,index:Ue,graphRow:Ye,isHighlighted:M,isBranchHighlighted:T,isFeatureHighlighted:R,isPreviewHighlighted:Z,isMuted:be})=>(v(),y(Se,{key:Me.type==="commit"?Me.commit.hash:`stash-${Me.stash.index}`},[Me.type==="commit"?Km([Me.commit.hash,Me.commit.message,Me.commit.timestamp,Me.commit.branches.join("|"),Me.commit.tags.join("|"),r.selectedCommit?.hash===Me.commit.hash,M,T,R,Z,be,n.currentBranchName||"",n.columnVisibility?.date!==!1,n.columnVisibility?.author!==!1,n.columnVisibility?.commit!==!1],()=>(v(),ge(Ce,{key:0,commit:Me.commit,index:Me.commitIndex,isSelected:r.selectedCommit?.hash===Me.commit.hash,isHighlighted:M,isBranchHighlighted:T,isFeatureHighlighted:R,isPreviewHighlighted:Z,isMuted:be,currentBranchName:n.currentBranchName,localBranchNames:n.localBranchNames,graphRowData:Ye,maxLane:m(X),columnVisibility:n.columnVisibility,onClick:Qe=>G(Me.commit,Qe),onKeydown:Qe=>j(Qe,Me.commit,Ue),onBranchContextMenu:Qe=>p(Me.commit,Qe),onCommitContextMenu:Qe=>O(Me.commit,Qe),onTagContextMenu:Qe=>b(Me.commit,Qe)},null,8,["commit","index","isSelected","isHighlighted","isBranchHighlighted","isFeatureHighlighted","isPreviewHighlighted","isMuted","currentBranchName","localBranchNames","graphRowData","maxLane","columnVisibility","onClick","onKeydown","onBranchContextMenu","onCommitContextMenu","onTagContextMenu"])),Oe,0):Y("",!0)],64))),128))],4)],4),(r.loading||r.loadingMore)&&r.commits.length>0?(v(),y("div",_b,[...Oe[3]||(Oe[3]=[d("div",{class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Xe(" Loading more commits... ",-1)])])):Y("",!0),!r.hasMore&&r.commits.length>0&&!r.loading?(v(),y("div",Rb,A(r.commits.length)+" commits loaded ",1)):Y("",!0)],544)}}});function Zb(r){const e=r.charAt(0).toUpperCase();return e in Us?e:"M"}function Io(r,e){if(r&&typeof r=="object"){const t=r;if(typeof t.data?.message=="string"&&t.data.message.trim())return t.data.message;if(typeof t.statusMessage=="string"&&t.statusMessage.trim())return t.statusMessage;if(typeof t.message=="string"&&t.message.trim())return t.message}return r instanceof Error&&r.message?r.message:e}function bp(r,e){const t=e.trim().toLowerCase();return t?r.filter(n=>n.message.toLowerCase().includes(t)||n.author.toLowerCase().includes(t)||n.shortHash.includes(t)||n.hash.includes(t)||n.branches.some(s=>s.toLowerCase().includes(t))||n.tags.some(s=>s.toLowerCase().includes(t))):[...r]}function Eb(r,e){return e.size===0?[...r]:r.filter(t=>t.branches.some(n=>e.has(n)))}function Db(r=10){const e=new Map;function t(s,i){const o=i.toLowerCase(),a=`${o}:${s.length}`,l=e.get(a);if(l)return l;const c=bp(s,o);if(e.size>=r){const u=e.keys().next().value;u!==void 0&&e.delete(u)}return e.set(a,c),c}function n(){e.clear()}return{filter:t,clear:n}}const Lb={class:"flex flex-col h-full border-t border-retro-border bg-retro-dark"},Xb={class:"flex items-center justify-between p-2 border-b border-retro-border flex-shrink-0"},Ib={class:"flex items-center gap-2 text-xs min-w-0"},Vb={class:"font-mono text-retro-cyan"},zb={class:"font-mono text-retro-cyan"},Nb={key:0,class:"px-3 py-1.5 text-xs text-retro-muted border-b border-retro-border flex-shrink-0"},Wb={class:"text-retro-green"},qb={class:"text-retro-red"},jb={key:1,class:"flex-1 flex items-center justify-center"},Yb={key:2,class:"flex-1 overflow-auto"},Fb={class:"text-retro-text truncate flex-1"},Ub={class:"text-retro-muted"},Gb={key:0,class:"flex-shrink-0 text-[10px] font-mono"},Hb={key:0,class:"text-retro-green"},Kb={key:1,class:"text-retro-red ml-1"},Jb={key:1,class:"flex-shrink-0 text-[10px] text-retro-muted italic"},ex={key:3,class:"flex-1 flex items-center justify-center text-retro-muted text-sm"},tx=Ie({__name:"GitComparisonView",props:{fromCommit:{},toCommit:{},files:{},stats:{},loading:{type:Boolean}},emits:["close"],setup(r,{emit:e}){const t=e;function n(s){const i=Zb(s);return Us[i]||Us.M}return(s,i)=>(v(),y("div",Lb,[d("div",Xb,[d("div",Ib,[i[1]||(i[1]=d("span",{class:"text-retro-muted"},"Comparing",-1)),d("span",Vb,A(r.fromCommit.shortHash),1),i[2]||(i[2]=d("span",{class:"text-retro-muted"},"→",-1)),d("span",zb,A(r.toCommit.shortHash),1)]),d("button",{class:"p-1 text-retro-muted hover:text-retro-text transition-colors flex-shrink-0","aria-label":"Close comparison",onClick:i[0]||(i[0]=o=>t("close"))},[ee(m(Ct),{class:"w-4 h-4"})])]),r.stats?(v(),y("div",Nb,[Xe(A(r.stats.filesChanged)+" file"+A(r.stats.filesChanged!==1?"s":"")+" changed, ",1),d("span",Wb,"+"+A(r.stats.additions),1),d("span",qb," -"+A(r.stats.deletions),1)])):Y("",!0),r.loading?(v(),y("div",jb,[...i[3]||(i[3]=[d("div",{class:"flex items-center gap-2 text-retro-muted text-sm"},[d("div",{class:"w-4 h-4 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"}),Xe(" Loading comparison... ")],-1)])])):r.files&&r.files.length>0?(v(),y("div",Yb,[(v(!0),y(Se,null,ze(r.files,o=>(v(),y("div",{key:o.path,class:"flex items-center gap-2 px-3 py-1.5 hover:bg-retro-panel/50 text-xs border-b border-retro-border/50"},[d("span",{class:Be(["flex-shrink-0 w-4 text-center font-semibold text-[10px]",n(o.status).colorClass])},A(o.status.charAt(0)),3),d("span",Fb,[o.oldPath&&o.status.startsWith("R")?(v(),y(Se,{key:0},[d("span",Ub,A(o.oldPath),1),i[4]||(i[4]=d("span",{class:"text-retro-muted mx-1"},"→",-1))],64)):Y("",!0),Xe(" "+A(o.path),1)]),o.binary?(v(),y("span",Jb,"binary")):(v(),y("span",Gb,[o.additions>0?(v(),y("span",Hb,"+"+A(o.additions),1)):Y("",!0),o.deletions>0?(v(),y("span",Kb,"-"+A(o.deletions),1)):Y("",!0)]))]))),128))])):r.files&&r.files.length===0?(v(),y("div",ex," No differences between these commits ")):Y("",!0)]))}}),rx={":art:":"🎨",":zap:":"⚡",":fire:":"🔥",":bug:":"🐛",":ambulance:":"🚑",":sparkles:":"✨",":memo:":"📝",":rocket:":"🚀",":lipstick:":"💄",":tada:":"🎉",":white_check_mark:":"✅",":lock:":"🔒",":closed_lock_with_key:":"🔐",":bookmark:":"🔖",":rotating_light:":"🚨",":construction:":"🚧",":green_heart:":"💚",":arrow_down:":"⬇️",":arrow_up:":"⬆️",":pushpin:":"📌",":construction_worker:":"👷",":chart_with_upwards_trend:":"📈",":recycle:":"♻️",":heavy_plus_sign:":"➕",":heavy_minus_sign:":"➖",":wrench:":"🔧",":hammer:":"🔨",":globe_with_meridians:":"🌐",":pencil2:":"✏️",":poop:":"💩",":rewind:":"⏪",":twisted_rightwards_arrows:":"🔀",":package:":"📦",":alien:":"👽",":truck:":"🚚",":page_facing_up:":"📄",":boom:":"💥",":bento:":"🍱",":wheelchair:":"♿",":bulb:":"💡",":beers:":"🍻",":speech_balloon:":"💬",":card_file_box:":"🗃️",":loud_sound:":"🔊",":mute:":"🔇",":busts_in_silhouette:":"👥",":children_crossing:":"🚸",":building_construction:":"🏗️",":iphone:":"📱",":clown_face:":"🤡",":egg:":"🥚",":see_no_evil:":"🙈",":camera_flash:":"📸",":alembic:":"⚗️",":mag:":"🔍",":label:":"🏷️",":seedling:":"🌱",":triangular_flag_on_post:":"🚩",":goal_net:":"🥅",":dizzy:":"💫",":wastebasket:":"🗑️",":passport_control:":"🛂",":adhesive_bandage:":"🩹",":monocle_face:":"🧐",":coffin:":"⚰️",":test_tube:":"🧪",":necktie:":"👔",":stethoscope:":"🩺",":bricks:":"🧱",":technologist:":"🧑💻",":money_with_wings:":"💸",":thread:":"🧵",":safety_vest:":"🦺"},nx=/https?:\/\/[^\s<>)"']+/g;function sx(r){return r.replace(nx,e=>`<a href="${e}" target="_blank" rel="noopener noreferrer" class="text-retro-blue hover:underline">${e}</a>`)}function ix(r){return r.replace(/:[a-z0-9_]+:/g,e=>rx[e]||e)}function ox(r){if(!r)return"";let e=ix(r);return e=G1.parse(e),e=sx(e),e=H1.sanitize(e,{ALLOWED_TAGS:["a","strong","em","code","b","i","br","p","ul","ol","li","pre","blockquote","h1","h2","h3"],ALLOWED_ATTR:["href","target","rel","class"]}),e}const ax={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},lx={class:"flex items-center gap-2 min-w-0"},cx={class:"text-retro-cyan font-mono text-sm"},ux={class:"text-retro-muted text-sm truncate"},hx={class:"flex items-center gap-1 flex-shrink-0"},dx=["aria-label","title"],fx={class:"flex-1 overflow-auto p-4 space-y-4"},mx={class:"space-y-2"},px={class:"flex items-center gap-2 text-sm"},gx={class:"text-retro-text font-mono text-xs bg-retro-panel px-2 py-1 rounded"},Ox={class:"flex items-center gap-2 text-sm"},vx={class:"text-retro-text"},bx={class:"text-retro-muted"},xx={key:0,class:"flex items-center gap-2 text-sm"},yx={class:"text-retro-text"},kx={class:"text-retro-muted"},wx={class:"flex items-center gap-2 text-sm"},Sx={class:"text-retro-text"},$x={key:1,class:"flex items-start gap-2 text-sm"},Cx={class:"flex flex-wrap gap-1"},Qx=["onClick","title"],Px={key:2,class:"flex items-start gap-2 text-sm"},Tx={class:"flex flex-wrap gap-1"},Mx={key:3,class:"flex items-start gap-2 text-sm"},Ax={class:"flex flex-wrap gap-1"},_x={class:"space-y-1"},Rx={class:"text-retro-text text-sm font-mono bg-retro-panel p-3 rounded"},Bx={key:0,class:"space-y-1"},Zx=["innerHTML"],Ex={key:1,class:"space-y-2"},Dx={class:"flex items-center gap-2 text-sm"},Lx={class:"text-retro-muted"},Xx={key:0,class:"flex items-center gap-2"},Ix={class:"text-retro-green text-xs font-mono"},Vx={class:"flex-1 h-2 rounded overflow-hidden bg-retro-panel flex"},zx={class:"text-retro-red text-xs font-mono"},Nx={key:2,class:"space-y-2"},Wx={class:"flex items-center justify-between"},qx={class:"text-retro-muted text-xs uppercase tracking-wide"},jx={class:"flex items-center gap-1"},Yx={key:0,class:"text-retro-muted text-sm py-2"},Fx={key:1,class:"space-y-0.5"},Ux=["onClick"],Gx=["title"],Hx={class:"text-retro-text font-mono text-xs truncate flex-1"},Kx={class:"text-retro-muted"},Jx={class:"text-retro-text"},ey={key:0,class:"flex-shrink-0 font-mono text-xs flex items-center gap-1"},ty={key:0,class:"text-retro-green"},ry={key:1,class:"text-retro-red"},ny={key:1,class:"flex-shrink-0 font-mono text-xs text-retro-muted"},sy={key:2,class:"space-y-0"},iy=["onClick"],oy={class:"text-retro-text font-mono text-xs"},ay=["title"],ly={class:"text-retro-text font-mono text-xs truncate flex-1"},cy={class:"text-retro-muted"},uy={class:"text-retro-text"},hy={key:0,class:"flex-shrink-0 font-mono text-xs flex items-center gap-1"},dy={key:0,class:"text-retro-green"},fy={key:1,class:"text-retro-red"},my={key:1,class:"flex-shrink-0 font-mono text-xs text-retro-muted"},py={key:3,class:"flex items-center gap-2 text-retro-muted text-sm py-2"},gy={key:4,class:"text-retro-muted text-sm py-2"},Oy=Ie({__name:"GitCommitDetail",props:{commit:{},files:{},stats:{},loading:{type:Boolean,default:!1},committer:{},committerEmail:{},detailPosition:{default:"inline"}},emits:["close","navigateToCommit","togglePosition","navigatePrev","navigateNext","openFileDiff"],setup(r,{emit:e}){const t=r,n=e,s=Q(null),i=Q("flat"),o=Q(new Set),a=J(()=>!t.committer||!t.committerEmail?!1:t.committer!==t.commit.author||t.committerEmail!==t.commit.email),l=J(()=>{const N=t.commit.body;return N?ox(N):""}),c=J(()=>{if(!t.stats)return"";const{filesChanged:N,additions:I,deletions:D}=t.stats,z=[`${N} ${N===1?"file":"files"} changed`];return I>0&&z.push(`+${I} insertion${I===1?"":"s"}`),D>0&&z.push(`-${D} deletion${D===1?"":"s"}`),z.join(", ")});function u(N){const I=[];for(const D of N){const U=D.path.split("/");let z=I;for(let V=0;V<U.length;V++){const G=U[V],j=V===U.length-1,ce=U.slice(0,V+1).join("/");let H=z.find(F=>F.name===G&&F.isDirectory===!j);H||(H={name:G,fullPath:ce,isDirectory:!j,children:[],file:j?D:void 0},z.push(H)),j||(z=H.children)}}return h(I),I}function h(N){for(const I of N)if(I.isDirectory)for(h(I.children);I.children.length===1&&I.children[0].isDirectory;){const D=I.children[0];I.name=`${I.name}/${D.name}`,I.fullPath=D.fullPath,I.children=D.children}}function f(N){return[...N].sort((I,D)=>I.isDirectory&&!D.isDirectory?-1:!I.isDirectory&&D.isDirectory?1:I.name.localeCompare(D.name))}function g(N,I,D){const U=[];for(const z of f(N)){const V=D.size===0?!0:D.has(z.fullPath);U.push({key:z.fullPath,depth:I,isDirectory:z.isDirectory,name:z.name,fullPath:z.fullPath,expanded:z.isDirectory?V:!1,file:z.file}),z.isDirectory&&V&&U.push(...g(z.children,I+1,D))}return U}const p=J(()=>!t.files||t.files.length===0?[]:u(t.files)),O=J(()=>g(p.value,0,o.value));function b(N){o.value.has(N)?o.value.delete(N):o.value.add(N),o.value=new Set(o.value)}function x(){const N=I=>{const D=[];for(const U of I)U.isDirectory&&(D.push(U.fullPath),D.push(...N(U.children)));return D};o.value=new Set(N(p.value))}function k(){o.value=new Set}Ve(i,N=>{N==="tree"&&x()});function w(N){return new Date(N*1e3).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}function S(N){return Us[N]||{label:N,colorClass:"text-retro-muted"}}const P=J(()=>{if(!t.stats)return{addPct:0,delPct:0};const N=t.stats.additions+t.stats.deletions;return N===0?{addPct:50,delPct:50}:{addPct:Math.round(t.stats.additions/N*100),delPct:Math.round(t.stats.deletions/N*100)}});function X(N){N.key==="ArrowUp"?(N.preventDefault(),n("navigatePrev")):N.key==="ArrowDown"?(N.preventDefault(),n("navigateNext")):N.key==="Escape"&&(N.preventDefault(),n("close"))}gt(()=>{zt(()=>{s.value?.focus()})}),Ve(()=>t.commit.hash,()=>{zt(()=>{s.value?.focus()})});function E(){n("close")}function K(N){n("navigateToCommit",N)}function le(){n("togglePosition")}function oe(N){n("openFileDiff",N)}return(N,I)=>(v(),y("section",{ref_key:"containerRef",ref:s,tabindex:0,onKeydown:X,class:"flex-1 min-h-0 flex flex-col border-t border-retro-border bg-retro-dark focus:outline-none","aria-label":"Commit details",role:"region"},[d("div",ax,[d("div",lx,[d("span",cx,A(r.commit.shortHash),1),d("span",ux,A(r.commit.message.split(`
|
|
5
|
-
`)[0]),1)]),d("div",hx,[d("button",{onClick:le,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":r.detailPosition==="inline"?"Dock detail to bottom":"Show detail inline",title:r.detailPosition==="inline"?"Dock to bottom":"Show inline"},[r.detailPosition==="inline"?(v(),ge(m(lp),{key:0,class:"w-4 h-4 text-retro-muted hover:text-retro-text"})):(v(),ge(m(ap),{key:1,class:"w-4 h-4 text-retro-muted hover:text-retro-text"}))],8,dx),d("button",{onClick:E,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close commit details"},[ee(m(Ct),{class:"w-4 h-4 text-retro-muted hover:text-retro-text"})])])]),d("div",fx,[d("div",mx,[d("div",px,[I[2]||(I[2]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Hash:",-1)),d("code",gx,A(r.commit.hash),1)]),d("div",Ox,[ee(m(qh),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",vx,A(r.commit.author),1),d("span",bx,"<"+A(r.commit.email)+">",1)]),a.value?(v(),y("div",xx,[ee(m(qh),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),I[3]||(I[3]=d("span",{class:"text-retro-muted text-xs uppercase mr-1"},"Committer:",-1)),d("span",yx,A(r.committer),1),d("span",kx,"<"+A(r.committerEmail)+">",1)])):Y("",!0),d("div",wx,[ee(m(K1),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",Sx,A(w(r.commit.timestamp)),1)]),r.commit.parents?.length>0?(v(),y("div",$x,[I[4]||(I[4]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Parents:",-1)),d("div",Cx,[(v(!0),y(Se,null,ze(r.commit.parents,D=>(v(),y("button",{key:D,onClick:U=>K(D),class:"text-retro-cyan font-mono text-xs bg-retro-panel px-2 py-0.5 rounded hover:bg-retro-dark hover:text-retro-text transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-retro-cyan",title:`Navigate to parent ${D.substring(0,7)}`},A(D.substring(0,7)),9,Qx))),128))])])):Y("",!0),r.commit.branches?.length>0?(v(),y("div",Px,[I[5]||(I[5]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Branches:",-1)),d("div",Tx,[(v(!0),y(Se,null,ze(r.commit.branches,D=>(v(),y("span",{key:D,class:"text-retro-green font-mono text-xs bg-retro-panel px-2 py-0.5 rounded"},A(D),1))),128))])])):Y("",!0),r.commit.tags?.length>0?(v(),y("div",Mx,[I[6]||(I[6]=d("span",{class:"text-retro-muted w-20 flex-shrink-0"},"Tags:",-1)),d("div",Ax,[(v(!0),y(Se,null,ze(r.commit.tags,D=>(v(),y("span",{key:D,class:"text-retro-yellow font-mono text-xs bg-retro-panel px-2 py-0.5 rounded"},A(D),1))),128))])])):Y("",!0)]),d("div",_x,[I[7]||(I[7]=d("h4",{class:"text-retro-muted text-xs uppercase tracking-wide"}," Message ",-1)),d("div",Rx,A(r.commit.message.split(`
|
|
6
|
-
`)[0]),1)]),r.commit.body?(v(),y("div",Bx,[I[8]||(I[8]=d("h4",{class:"text-retro-muted text-xs uppercase tracking-wide"}," Body ",-1)),d("div",{class:"text-retro-text text-sm font-mono bg-retro-panel p-3 rounded commit-body-rendered",innerHTML:l.value},null,8,Zx)])):Y("",!0),r.stats?(v(),y("div",Ex,[d("div",Dx,[d("span",Lx,A(c.value),1)]),r.stats.additions>0||r.stats.deletions>0?(v(),y("div",Xx,[d("span",Ix,"+"+A(r.stats.additions),1),d("div",Vx,[d("div",{class:"bg-retro-green h-full transition-all",style:tr({width:P.value.addPct+"%"})},null,4),d("div",{class:"bg-retro-red h-full transition-all",style:tr({width:P.value.delPct+"%"})},null,4)]),d("span",zx,"-"+A(r.stats.deletions),1)])):Y("",!0)])):Y("",!0),r.files?(v(),y("div",Nx,[d("div",Wx,[d("h4",qx," Files Changed ("+A(r.files.length)+") ",1),d("div",jx,[d("button",{onClick:I[0]||(I[0]=D=>i.value="flat"),class:Be(["p-1 rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan",i.value==="flat"?"bg-retro-panel text-retro-cyan":"text-retro-muted hover:text-retro-text"]),"aria-label":"Flat file list",title:"Flat file list"},[ee(m(fp),{class:"w-4 h-4"})],2),d("button",{onClick:I[1]||(I[1]=D=>i.value="tree"),class:Be(["p-1 rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan",i.value==="tree"?"bg-retro-panel text-retro-cyan":"text-retro-muted hover:text-retro-text"]),"aria-label":"Tree file view",title:"Tree file view"},[ee(m(jh),{class:"w-4 h-4"})],2)])]),r.files.length===0?(v(),y("div",Yx," No files changed in this commit. ")):i.value==="flat"?(v(),y("ul",Fx,[(v(!0),y(Se,null,ze(r.files,D=>(v(),y("li",{key:D.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group cursor-pointer",onClick:U=>oe(D)},[d("span",{class:Be(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",S(D.status).colorClass]),title:S(D.status).label},A(D.status),11,Gx),ee(m(Os),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",Hx,[D.status==="R"&&D.oldPath?(v(),y(Se,{key:0},[d("span",Kx,A(D.oldPath),1),I[9]||(I[9]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",Jx,A(D.path),1)],64)):(v(),y(Se,{key:1},[Xe(A(D.path),1)],64))]),!D.binary&&(D.additions>0||D.deletions>0)?(v(),y("span",ey,[D.additions>0?(v(),y("span",ty,"+"+A(D.additions),1)):Y("",!0),D.deletions>0?(v(),y("span",ry,"-"+A(D.deletions),1)):Y("",!0)])):D.binary?(v(),y("span",ny,"binary")):Y("",!0)],8,Ux))),128))])):(v(),y("div",sy,[d("div",{class:"flex items-center gap-2 mb-1"},[d("button",{onClick:x,class:"text-xs text-retro-muted hover:text-retro-text transition-colors"}," Expand all "),I[10]||(I[10]=d("span",{class:"text-retro-muted text-xs"},"|",-1)),d("button",{onClick:k,class:"text-xs text-retro-muted hover:text-retro-text transition-colors"}," Collapse all ")]),(v(!0),y(Se,null,ze(O.value,D=>(v(),y("div",{key:D.key,class:Be(["flex items-center gap-1 py-0.5 px-1 hover:bg-retro-panel rounded text-sm cursor-pointer",{"select-none":D.isDirectory}]),style:tr({paddingLeft:D.depth*16+4+"px"}),onClick:U=>D.isDirectory?b(D.fullPath):D.file?oe(D.file):void 0},[D.isDirectory?(v(),y(Se,{key:0},[ee(m(J1),{class:Be(["w-3 h-3 text-retro-muted transition-transform flex-shrink-0",{"rotate-90":D.expanded}])},null,8,["class"]),ee(m(jh),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("span",oy,A(D.name),1)],64)):D.file?(v(),y(Se,{key:1},[d("span",{class:Be(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",S(D.file.status).colorClass]),title:S(D.file.status).label},A(D.file.status),11,ay),ee(m(Os),{class:"w-4 h-4 text-retro-muted flex-shrink-0"}),d("span",ly,[D.file.status==="R"&&D.file.oldPath?(v(),y(Se,{key:0},[d("span",cy,A(D.file.oldPath.split("/").pop()),1),I[11]||(I[11]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",uy,A(D.name),1)],64)):(v(),y(Se,{key:1},[Xe(A(D.name),1)],64))]),!D.file.binary&&(D.file.additions>0||D.file.deletions>0)?(v(),y("span",hy,[D.file.additions>0?(v(),y("span",dy,"+"+A(D.file.additions),1)):Y("",!0),D.file.deletions>0?(v(),y("span",fy,"-"+A(D.file.deletions),1)):Y("",!0)])):D.file.binary?(v(),y("span",my,"binary")):Y("",!0)],64)):Y("",!0)],14,iy))),128))]))])):r.loading?(v(),y("div",py,[...I[12]||(I[12]=[d("div",{class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Xe(" Loading file changes... ",-1)])])):(v(),y("div",gy," Failed to load file changes. "))])],544))}}),vy=ws(Oy,[["__scopeId","data-v-29f450ea"]]),by={class:"flex-1 min-h-0 flex flex-col border-t border-retro-border bg-retro-dark","aria-label":"Uncommitted changes details"},xy={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},yy={class:"flex items-center gap-2 min-w-0"},ky={class:"text-retro-muted text-sm"},wy={key:0,class:"w-3 h-3 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin",title:"Staging..."},Sy={class:"flex-1 overflow-auto p-4 space-y-3"},$y={class:"space-y-2"},Cy=["disabled"],Qy={class:"space-y-1"},Py={class:"flex items-center justify-between"},Ty={class:"text-retro-green text-xs uppercase tracking-wide font-semibold"},My={key:0,class:"text-retro-muted text-xs py-1"},Ay={key:1,class:"space-y-0.5"},_y=["aria-label","onClick"],Ry={class:"text-retro-text font-mono text-xs truncate"},By={class:"space-y-1"},Zy={class:"flex items-center justify-between"},Ey={class:"text-retro-yellow text-xs uppercase tracking-wide font-semibold"},Dy={key:0,class:"text-retro-muted text-xs py-1"},Ly={key:1,class:"space-y-0.5"},Xy=["aria-label","onClick"],Iy={class:"text-retro-text font-mono text-xs truncate"},Vy=Ie({__name:"GitUncommittedDetail",props:{stagedFiles:{default:()=>[]},unstagedFiles:{default:()=>[]},isStaging:{type:Boolean,default:!1},isCommitting:{type:Boolean,default:!1}},emits:["close","stageFiles","unstageFiles","stageAll","unstageAll","commit"],setup(r,{emit:e}){const t=r,n=e,s=Q(""),i=Q(!1),o=J(()=>s.value.trim().length>0&&t.stagedFiles.length>0&&!i.value&&!t.isCommitting);function a(O){return Us[O]||{label:O,colorClass:"text-retro-muted"}}function l(){n("close")}function c(O){n("stageFiles",[O.path])}function u(O){n("unstageFiles",[O.path])}function h(){n("stageAll")}function f(){n("unstageAll")}async function g(){o.value&&(i.value=!0,n("commit",s.value.trim()),s.value="",i.value=!1)}function p(O){(O.metaKey||O.ctrlKey)&&O.key==="Enter"&&(O.preventDefault(),g())}return(O,b)=>(v(),y("section",by,[d("div",xy,[d("div",yy,[ee(m(vo),{class:"w-4 h-4 text-retro-yellow"}),b[1]||(b[1]=d("span",{class:"text-retro-yellow font-semibold text-sm"},"Uncommitted Changes",-1)),d("span",ky,"("+A(r.stagedFiles.length+r.unstagedFiles.length)+" files)",1),t.isStaging?(v(),y("div",wy)):Y("",!0)]),d("button",{onClick:l,class:"p-1 hover:bg-retro-dark rounded transition-colors focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close uncommitted changes details"},[ee(m(Ct),{class:"w-4 h-4 text-retro-muted hover:text-retro-text"})])]),d("div",Sy,[d("div",$y,[je(d("textarea",{"onUpdate:modelValue":b[0]||(b[0]=x=>Je(s)?s.value=x:null),placeholder:"Commit message...",rows:"3",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan resize-none font-mono",onKeydown:p},null,544),[[Zt,m(s)]]),d("button",{disabled:!m(o),class:Be(["w-full px-3 py-1.5 text-sm font-semibold rounded transition-colors disabled:opacity-40 disabled:cursor-not-allowed",m(o)?"bg-retro-green text-retro-dark hover:bg-retro-green/90":"bg-retro-green/30 text-retro-dark"]),onClick:g},A(m(i)||t.isCommitting?"Committing...":`Commit (${r.stagedFiles.length} staged)`),11,Cy)]),d("div",Qy,[d("div",Py,[d("h4",Ty," Staged Changes ("+A(r.stagedFiles.length)+") ",1),r.stagedFiles.length>0?(v(),y("button",{key:0,class:"text-[11px] text-retro-muted hover:text-retro-text transition-colors",onClick:f}," Unstage All ")):Y("",!0)]),r.stagedFiles.length===0?(v(),y("div",My," No staged files. Stage files below to commit. ")):(v(),y("ul",Ay,[(v(!0),y(Se,null,ze(r.stagedFiles,x=>(v(),y("li",{key:"staged-"+x.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group"},[d("button",{class:"flex-shrink-0 w-5 h-5 flex items-center justify-center rounded hover:bg-retro-red/20 transition-colors opacity-60 group-hover:opacity-100",title:"Unstage file","aria-label":`Unstage ${x.path}`,onClick:k=>u(x)},[ee(m(Ev),{class:"w-3.5 h-3.5 text-retro-red"})],8,_y),d("span",{class:Be(["flex-shrink-0 w-4 text-center text-xs font-bold",a(x.status).colorClass])},A(x.status),3),ee(m(Os),{class:"w-3.5 h-3.5 text-retro-muted flex-shrink-0"}),d("span",Ry,A(x.oldPath?`${x.oldPath} → ${x.path}`:x.path),1)]))),128))]))]),d("div",By,[d("div",Zy,[d("h4",Ey," Unstaged Changes ("+A(r.unstagedFiles.length)+") ",1),r.unstagedFiles.length>0?(v(),y("button",{key:0,class:"text-[11px] text-retro-muted hover:text-retro-text transition-colors",onClick:h}," Stage All ")):Y("",!0)]),r.unstagedFiles.length===0?(v(),y("div",Dy," No unstaged changes. ")):(v(),y("ul",Ly,[(v(!0),y(Se,null,ze(r.unstagedFiles,x=>(v(),y("li",{key:"unstaged-"+x.path,class:"flex items-center gap-2 text-sm py-1 px-2 hover:bg-retro-panel rounded group"},[d("button",{class:"flex-shrink-0 w-5 h-5 flex items-center justify-center rounded hover:bg-retro-green/20 transition-colors opacity-60 group-hover:opacity-100",title:"Stage file","aria-label":`Stage ${x.path}`,onClick:k=>c(x)},[ee(m(ml),{class:"w-3.5 h-3.5 text-retro-green"})],8,Xy),d("span",{class:Be(["flex-shrink-0 w-4 text-center text-xs font-bold",a(x.status).colorClass])},A(x.status),3),ee(m(Os),{class:"w-3.5 h-3.5 text-retro-muted flex-shrink-0"}),d("span",Iy,A(x.oldPath?`${x.oldPath} → ${x.path}`:x.path),1)]))),128))]))])])]))}}),zy=["aria-label"],Ny={key:0,class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border truncate font-mono"},Wy={key:0,class:"my-1 border-t border-retro-border",role:"separator"},qy=["aria-disabled","onClick","onMouseenter"],jy={key:1,class:"w-4 h-4 flex-shrink-0"},sd=220,Yy=36,Fy=9,Uy=29,hn=8,yo=Ie({__name:"GitContextMenu",props:{items:{},x:{},y:{},title:{}},emits:["close","action"],setup(r,{emit:e}){const t=r,n=e,s=Q(null),i=Q(-1),o=J(()=>t.items.map((g,p)=>({item:g,i:p})).filter(({item:g})=>!g.disabled).map(({i:g})=>g));let a=!1;function l(g){a&&s.value&&!s.value.contains(g.target)&&n("close")}gt(()=>{requestAnimationFrame(()=>{a=!0}),document.addEventListener("mousedown",l),document.addEventListener("contextmenu",l),zt(()=>{s.value?.focus()})}),$t(()=>{a=!1,document.removeEventListener("mousedown",l),document.removeEventListener("contextmenu",l)});function c(g){const p=o.value;if(p.length===0)return;if(i.value===-1){i.value=g===1?p[0]:p[p.length-1];return}const O=p.indexOf(i.value);if(O===-1){i.value=g===1?p[0]:p[p.length-1];return}const b=O+g;b>=0&&b<p.length&&(i.value=p[b])}function u(g){switch(g.key){case"Escape":g.preventDefault(),n("close");break;case"ArrowDown":g.preventDefault(),c(1);break;case"ArrowUp":g.preventDefault(),c(-1);break;case"Enter":{g.preventDefault();const p=t.items[i.value];p&&!p.disabled&&(n("action",p.key),n("close"));break}}}function h(g){g.disabled||(n("action",g.key),n("close"))}const f=J(()=>{const g=t.title?Uy:0,p=t.items.filter(w=>w.separator).length,O=t.items.length*Yy+p*Fy+hn,b=g+O;let x=t.x,k=t.y;return typeof window<"u"&&(x+sd>window.innerWidth-hn&&(x=window.innerWidth-sd-hn),x<hn&&(x=hn),k+b>window.innerHeight-hn&&(k=window.innerHeight-b-hn),k<hn&&(k=hn)),{left:`${x}px`,top:`${k}px`}});return(g,p)=>(v(),ge(Pr,{to:"body"},[d("div",{ref_key:"menuRef",ref:s,class:"fixed z-50 bg-retro-panel border border-retro-border rounded shadow-lg py-1 min-w-[220px]",style:tr(m(f)),role:"menu","aria-label":r.title??"Context menu",tabindex:"-1",onKeydown:u},[r.title?(v(),y("div",Ny,A(r.title),1)):Y("",!0),(v(!0),y(Se,null,ze(r.items,(O,b)=>(v(),y(Se,{key:O.key},[O.separator?(v(),y("div",Wy)):Y("",!0),d("button",{class:Be(["w-full flex items-center gap-2 px-3 py-2 text-sm transition-colors focus:outline-none",[O.disabled?"text-retro-muted/50 cursor-not-allowed":O.danger?["text-retro-red hover:bg-retro-red/10 focus:bg-retro-red/10",m(i)===b?"bg-retro-red/10":""]:["text-retro-text hover:bg-retro-cyan/10 focus:bg-retro-cyan/10",m(i)===b?"bg-retro-cyan/10":""]]]),role:"menuitem","aria-disabled":O.disabled||void 0,tabindex:-1,onClick:x=>h(O),onMouseenter:x=>i.value=O.disabled?m(i):b,onMouseleave:p[0]||(p[0]=x=>i.value=-1)},[O.icon?(v(),ge(ps(O.icon),{key:0,class:Be(["w-4 h-4 flex-shrink-0",O.disabled?"opacity-50":O.danger?"":"text-retro-muted"])},null,8,["class"])):(v(),y("span",jy)),Xe(" "+A(O.label),1)],42,qy)],64))),128))],44,zy)]))}}),Gy=Ie({__name:"GitBranchMenu",props:{branchName:{},isCurrentBranch:{type:Boolean},isLocal:{type:Boolean},x:{},y:{}},emits:["close","checkout","createBranch","deleteBranch","rename","merge","rebase","push","pull","fetch","copyName"],setup(r,{emit:e}){const t=r,n=e,s=J(()=>[{key:"checkout",label:"Checkout",icon:gs,disabled:t.isCurrentBranch},{key:"rename",label:"Rename",icon:ev,separator:!0},{key:"deleteBranch",label:"Delete",icon:vn,danger:!0,disabled:t.isCurrentBranch},{key:"merge",label:"Merge into Current",icon:cp,separator:!0,disabled:t.isCurrentBranch},{key:"rebase",label:"Rebase Current Onto",icon:sp,disabled:t.isCurrentBranch},{key:"push",label:"Push",icon:ip,separator:!0},{key:"copyName",label:"Copy Branch Name",icon:Fs,separator:!0}]),i=J(()=>[{key:"checkout",label:"Checkout",icon:gs},{key:"deleteBranch",label:"Delete Remote Branch",icon:vn,separator:!0,danger:!0},{key:"fetch",label:"Fetch",icon:dp,separator:!0},{key:"pull",label:"Pull into Current",icon:gv},{key:"copyName",label:"Copy Branch Name",icon:Fs,separator:!0}]),o=J(()=>t.isLocal?s.value:i.value),a={checkout:()=>n("checkout"),createBranch:()=>n("createBranch"),deleteBranch:()=>n("deleteBranch"),rename:()=>n("rename"),merge:()=>n("merge"),rebase:()=>n("rebase"),push:()=>n("push"),pull:()=>n("pull"),fetch:()=>n("fetch"),copyName:()=>n("copyName")};function l(c){a[c]?.(),n("close")}return(c,u)=>{const h=yo;return v(),ge(h,{items:m(o),x:r.x,y:r.y,title:r.branchName,onAction:l,onClose:u[0]||(u[0]=f=>n("close"))},null,8,["items","x","y","title"])}}}),Hy=Ie({__name:"GitCommitMenu",props:{commit:{},x:{},y:{}},emits:["close","addTag","createBranch","checkout","cherryPick","revert","mergeInto","reset","copyHash","copySubject"],setup(r,{emit:e}){const t=e,n=J(()=>[{key:"addTag",label:"Add Tag",icon:Xu},{key:"createBranch",label:"Create Branch",icon:ml},{key:"checkout",label:"Checkout (detached HEAD)",icon:gs,separator:!0},{key:"cherryPick",label:"Cherry Pick",icon:Qv},{key:"revert",label:"Revert",icon:op},{key:"mergeInto",label:"Merge into Current",icon:cp,separator:!0},{key:"reset",label:"Reset Current Branch to Here",icon:sp,danger:!0},{key:"copyHash",label:"Copy Commit Hash",icon:Fs,separator:!0},{key:"copySubject",label:"Copy Commit Subject",icon:Fs}]),s={addTag:()=>t("addTag"),createBranch:()=>t("createBranch"),checkout:()=>t("checkout"),cherryPick:()=>t("cherryPick"),revert:()=>t("revert"),mergeInto:()=>t("mergeInto"),reset:()=>t("reset"),copyHash:()=>t("copyHash"),copySubject:()=>t("copySubject")};function i(o){s[o]?.(),t("close")}return(o,a)=>{const l=yo;return v(),ge(l,{items:m(n),x:r.x,y:r.y,title:r.commit.shortHash,onAction:i,onClose:a[0]||(a[0]=c=>t("close"))},null,8,["items","x","y","title"])}}}),Ky=Ie({__name:"GitTagMenu",props:{tagName:{},x:{},y:{}},emits:["close","viewDetails","deleteTag","pushTag","copyName"],setup(r,{emit:e}){const t=e,n=[{key:"viewDetails",label:"View Details",icon:Xu},{key:"deleteTag",label:"Delete Tag",icon:vn,separator:!0,danger:!0},{key:"pushTag",label:"Push Tag",icon:ip},{key:"copyName",label:"Copy Tag Name",icon:Fs,separator:!0}],s={viewDetails:()=>t("viewDetails"),deleteTag:()=>t("deleteTag"),pushTag:()=>t("pushTag"),copyName:()=>t("copyName")};function i(o){s[o]?.()}return(o,a)=>{const l=yo;return v(),ge(l,{items:n,x:r.x,y:r.y,title:r.tagName,onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y","title"])}}}),Jy=Ie({__name:"GitStashMenu",props:{stashIndex:{},stashMessage:{},x:{},y:{}},emits:["close","apply","pop","drop","createBranch","copyName","copyHash"],setup(r,{emit:e}){const t=e,n=[{key:"apply",label:"Apply Stash",icon:pv},{key:"pop",label:"Pop Stash",icon:op},{key:"createBranch",label:"Create Branch from Stash",icon:tv,separator:!0},{key:"drop",label:"Drop Stash",icon:vn,separator:!0,danger:!0},{key:"copyName",label:"Copy Stash Reference",icon:Fs,separator:!0},{key:"copyHash",label:"Copy Stash Hash",icon:Rv}],s={apply:()=>t("apply"),pop:()=>t("pop"),drop:()=>t("drop"),createBranch:()=>t("createBranch"),copyName:()=>t("copyName"),copyHash:()=>t("copyHash")};function i(o){s[o]?.()}return(o,a)=>{const l=yo;return v(),ge(l,{items:n,x:r.x,y:r.y,title:r.stashMessage,onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y","title"])}}}),ek=Ie({__name:"GitUncommittedMenu",props:{x:{},y:{}},emits:["close","stash","reset","clean"],setup(r,{emit:e}){const t=e,n=[{key:"stash",label:"Stash Uncommitted Changes",icon:mv},{key:"reset",label:"Reset Working Directory",icon:gs,separator:!0,danger:!0},{key:"clean",label:"Clean Untracked Files",icon:vn,danger:!0}],s={stash:()=>t("stash"),reset:()=>t("reset"),clean:()=>t("clean")};function i(o){s[o]?.()}return(o,a)=>{const l=yo;return v(),ge(l,{items:n,x:r.x,y:r.y,title:"Uncommitted Changes",onClose:a[0]||(a[0]=c=>t("close")),onAction:i},null,8,["x","y"])}}});async function tk(r,e,t){try{return(await $fetch("/api/git/merge-base",{params:{workingDirectory:r,branch:e,baseBranch:t??void 0}})).mergeBase}catch{return null}}function id(r){const e={};for(const{branch:t,mergeBase:n}of r)t&&n&&(e[t]=n);return e}async function rk(r){return $fetch("/api/git/file-diff",{query:r})}async function nk(r){return $fetch("/api/git/diff",{query:r})}const gl=_u("gitGraph",()=>{const r=Q([]),e=Q([]),t=Q([]),n=Q(new Set),s=Q([]),i=Q([]),o=Q(0),a=Q(!1),l=Q(null),c=Q(null),u=Q(null),h=Q(!1),f=Q(null),g=Q(!1),p=Q(0),O=Q(""),b=Q([]),x=Q(null),k=Q(!1),w=Q(!1),S=Q(!1),P=Q(!1),X=8e3,E=Q(null);let K=null;function le(W){E.value=W,K&&clearTimeout(K),K=setTimeout(()=>{E.value=null},X)}function oe(){E.value=null,K&&(clearTimeout(K),K=null)}async function N(W,ie,Le,Ut){if(!x.value)return{success:!1,error:"No working directory set"};try{const zr=await $fetch(W,{method:Ut?.method??"POST",body:{workingDirectory:x.value,...ie}});return(Ut?.reloadGraph??!0)&&await sr(x.value),{success:!0,data:zr}}catch(zr){const Nr=Io(zr,Le);return le(Nr),{success:!1,error:Nr}}}const I=Q(null),D=Q(!1),U=Q(!1),z=Q(null),V=Q([]),G=Q([]),j=Q(null),ce=Q(null),H=Q(null),F=Q("inline"),re=Q("list"),Oe=Q("rounded"),ve=Q(!1),Ce=Q({date:!0,author:!0,commit:!0}),Me=Q(0),Ue=Q(0),Ye=Q(null),M=Q(null),T=Q(null),R=Q(null),Z=Q(null),be=Q(null),Qe=Q(null),te=Q(null),se=Q(null),ye=Q(null),q=Q(null),xe=Q(!1),Pe=Db(),rt=J(()=>{if(!O.value&&b.value.length===0)return r.value;let W=r.value;if(O.value&&(W=Pe.filter(W,O.value)),b.value.length>0){const ie=new Set(b.value);W=Eb(W,ie)}return W}),At=J(()=>e.value.find(W=>W.isHead)||null);async function sr(W){x.value=W,h.value=!0,f.value=null;try{const[ie,Le,Ut,zr,Nr]=await Promise.all([$fetch("/api/git/log",{query:{workingDirectory:W}}),$fetch("/api/git/status",{query:{workingDirectory:W}}),$fetch("/api/git/stash",{query:{workingDirectory:W}}).then(Pn=>Pn.stashes).catch(()=>[]),$fetch("/api/git/remotes",{query:{workingDirectory:W}}).then(Pn=>Pn.remotes).catch(()=>[]),$fetch("/api/git/state",{query:{workingDirectory:W}}).then(Pn=>Pn.state).catch(()=>null)]);r.value=ie.commits,e.value=ie.branches,t.value=ie.tags,n.value=new Set(ie.localBranches??[]),g.value=ie.hasMore,p.value=ie.totalCount,s.value=Le.stagedFiles??[],i.value=Le.unstagedFiles??[],o.value=(Le.stagedCount??0)+(Le.unstagedCount??0),V.value=Ut,G.value=zr,z.value=Nr,I.value=Date.now(),await Ts()}catch(ie){const Le=ie instanceof Error?ie.message:"Failed to load git graph";f.value=Le,r.value=[],e.value=[],t.value=[],s.value=[],i.value=[],o.value=0,V.value=[],G.value=[]}finally{h.value=!1}}async function on(){if(x.value)try{const W=await $fetch("/api/git/status",{query:{workingDirectory:x.value}});s.value=W.stagedFiles??[],i.value=W.unstagedFiles??[],o.value=(W.stagedCount??0)+(W.unstagedCount??0)}catch(W){console.error("Failed to refresh uncommitted changes:",W)}}const xr=Q(!1);async function qn(){if(!(!x.value||!g.value||h.value||xr.value)){xr.value=!0;try{const W=await $fetch("/api/git/log",{query:{workingDirectory:x.value,offset:r.value.length}});r.value=[...r.value,...W.commits],g.value=W.hasMore}catch(W){console.error("Failed to load more commits:",W)}finally{xr.value=!1}}}async function an(W){if(l.value=W,c.value=null,u.value=null,a.value=!1,k.value=!0,!x.value){k.value=!1;return}try{const ie=await $fetch("/api/git/show",{query:{workingDirectory:x.value,hash:W.hash}});c.value=ie.files,u.value=ie.stats}catch(ie){console.error("Failed to load commit details:",ie),c.value=[],u.value={additions:0,deletions:0,filesChanged:0},le("Failed to load commit details")}finally{k.value=!1}}function jn(){l.value=null,c.value=null,u.value=null,a.value=!1}function ln(){l.value=null,u.value=null,c.value=null,a.value=!0}function Sn(W){O.value=W,Me.value=0,qt()}const Lt=J(()=>O.value?bp(r.value,O.value).map(W=>W.hash):[]);function qt(){Ue.value=Lt.value.length}function de(){Lt.value.length!==0&&(Me.value=(Me.value+1)%Lt.value.length,qt(),Re())}function ke(){Lt.value.length!==0&&(Me.value=Me.value<=0?Lt.value.length-1:Me.value-1,qt(),Re())}function Re(){const W=Lt.value[Me.value];if(W){const ie=r.value.find(Le=>Le.hash===W);ie&&an(ie)}}function We(W){const ie=b.value.indexOf(W);ie===-1?b.value.push(W):b.value.splice(ie,1)}function Fe(){O.value="",b.value=[]}async function wt(W){if(!x.value)return{success:!1,error:"No working directory set"};P.value=!0;try{const ie=await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:x.value,branchName:W}});return ie.success&&await sr(x.value),{success:ie.success,error:ie.error}}catch(ie){const Le=ie instanceof Error?ie.message:"Failed to checkout branch";return le(Le),{success:!1,error:Le}}finally{P.value=!1}}async function ot(W,ie){if(!x.value)return{success:!1,error:"No working directory set"};try{const Le=await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:x.value,branchName:W,createBranch:!0,fromCommit:ie}});return Le.success&&await sr(x.value),{success:Le.success,error:Le.error}}catch(Le){return{success:!1,error:Le instanceof Error?Le.message:"Failed to create branch"}}}async function Ft(W,ie=!1){return N("/api/git/branch",{branchName:W,force:ie},"Failed to delete branch",{method:"DELETE"})}async function ir(W){return N("/api/git/branch",{branchName:W,remote:!0},"Failed to delete remote branch",{method:"DELETE"})}async function yr(W){if(!x.value)return{success:!1,error:"No working directory set"};w.value=!0;try{return await $fetch("/api/git/stage",{method:"POST",body:{workingDirectory:x.value,files:W}}),await on(),{success:!0}}catch(ie){const Le=ie instanceof Error?ie.message:"Failed to stage files";return le(Le),{success:!1,error:Le}}finally{w.value=!1}}async function Yn(W){if(!x.value)return{success:!1,error:"No working directory set"};w.value=!0;try{return await $fetch("/api/git/unstage",{method:"POST",body:{workingDirectory:x.value,files:W}}),await on(),{success:!0}}catch(ie){const Le=ie instanceof Error?ie.message:"Failed to unstage files";return le(Le),{success:!1,error:Le}}finally{w.value=!1}}async function Xr(W){if(!x.value)return{success:!1,error:"No working directory set"};S.value=!0;try{return await $fetch("/api/git/commit",{method:"POST",body:{workingDirectory:x.value,message:W}}),await sr(x.value),{success:!0}}catch(ie){const Le=ie instanceof Error?ie.message:"Failed to commit changes";return le(Le),{success:!1,error:Le}}finally{S.value=!1}}async function di(W,ie){return N("/api/git/branch-rename",{oldName:W,newName:ie},"Failed to rename branch")}async function fi(W,ie){return N("/api/git/merge",{branch:W,...ie},"Failed to merge branch")}async function mi(W){return N("/api/git/rebase",{onto:W},"Failed to rebase branch")}async function pi(W,ie,Le,Ut){return N("/api/git/push",{branch:W,remote:ie,force:Le,forceWithLease:Ut},"Failed to push branch")}async function gi(W,ie,Le,Ut){return N("/api/git/pull",{branch:W,remote:ie,noFastForward:Le,squash:Ut},"Failed to pull branch")}async function Oi(W,ie,Le){return N("/api/git/fetch",{branch:W,remote:ie,...Le},"Failed to fetch")}async function vi(W,ie,Le){return N("/api/git/cherry-pick",{hash:W,recordOrigin:ie,noCommit:Le},"Failed to cherry-pick commit")}async function bi(W){return N("/api/git/revert",{hash:W},"Failed to revert commit")}async function xi(W,ie){return N("/api/git/reset",{hash:W,mode:ie},"Failed to reset to commit")}async function yi(W){if(!x.value)return{success:!1,error:"No working directory set"};try{return await $fetch("/api/git/checkout",{method:"POST",body:{workingDirectory:x.value,branchName:W}}),await sr(x.value),{success:!0}}catch(ie){const Le=ie?.data?.message||ie?.statusMessage||ie?.message||"Failed to checkout commit";return le(Le),{success:!1,error:Le}}}async function Xt(W){const ie=W.message.split(`
|
|
7
|
-
`)[0];return lr(ie)}async function or(W,ie,Le,Ut,zr){return N("/api/git/tag",{name:W,hash:ie,annotated:Le,message:Ut,pushToRemote:zr},"Failed to create tag")}async function Ss(W,ie){return N("/api/git/tag",{name:W,deleteFromRemote:ie},"Failed to delete tag",{method:"DELETE"})}async function cn(W,ie){return N("/api/git/tag-push",{name:W,remote:ie},"Failed to push tag")}async function $n(W){if(!x.value)return{success:!1,error:"No working directory set"};try{return{success:!0,data:await $fetch(`/api/git/tag/${encodeURIComponent(W)}`,{query:{workingDirectory:x.value}})}}catch(ie){const Le=Io(ie,"Failed to get tag detail");return le(Le),{success:!1,error:Le}}}async function $s(W){return lr(W)}async function Cn(){if(!x.value)return{success:!1,error:"No working directory set"};try{const W=await $fetch("/api/git/stash",{query:{workingDirectory:x.value}});return V.value=W.stashes,{success:!0}}catch(W){const ie=Io(W,"Failed to load stashes");return le(ie),{success:!1,error:ie}}}async function un(W,ie){return N("/api/git/stash-apply",{index:W,reinstateIndex:ie},"Failed to apply stash")}async function ki(W,ie){return N("/api/git/stash-pop",{index:W,reinstateIndex:ie},"Failed to pop stash")}async function Cs(W){return N("/api/git/stash-drop",{index:W},"Failed to drop stash")}async function Qn(W,ie){return N("/api/git/stash-branch",{index:W,branchName:ie},"Failed to create branch from stash")}async function vt(W,ie){return N("/api/git/stash",{message:W,includeUntracked:ie},"Failed to stash changes")}async function _r(){if(!x.value)return{success:!1,error:"No working directory set"};try{const W=await $fetch("/api/git/remotes",{query:{workingDirectory:x.value}});return G.value=W.remotes,{success:!0}}catch(W){const ie=Io(W,"Failed to load remotes");return le(ie),{success:!1,error:ie}}}async function Fn(W,ie){return N("/api/git/remote",{name:W,url:ie},"Failed to add remote")}async function wi(W,ie){return N("/api/git/remote",{name:W,newUrl:ie},"Failed to edit remote",{method:"PUT"})}async function Un(W){return N("/api/git/remote",{name:W},"Failed to delete remote",{method:"DELETE"})}async function Qs(W,ie){return N("/api/git/fetch",{all:!0,prune:W,pruneTags:ie},"Failed to fetch all")}function Ps(){F.value=F.value==="inline"?"bottom":"inline"}function Ir(){re.value=re.value==="list"?"tree":"list"}function ar(W){Oe.value=W}function Gn(){ve.value=!ve.value}function Si(W){Ce.value={...Ce.value,[W]:!Ce.value[W]}}async function Vr(W,ie,Le){if(!ie||!x.value){W.value=null;return}W.value=await tk(x.value,ie,Le)}async function $i(W){Ye.value=W,await Vr(M,W)}async function Hn(W,ie){T.value=W,Z.value=ie??null,await Vr(R,W,ie)}async function Kn(W,ie){be.value=W,te.value=ie??null,await Vr(Qe,W,ie)}async function Ts(){x.value&&await Promise.all([Vr(M,Ye.value),Vr(R,T.value,Z.value),Vr(Qe,be.value,te.value)])}function Ze(W){const ie=r.value.find(Le=>Le.hash===W||Le.shortHash===W);ie&&an(ie)}async function ue(W){return N("/api/git/reset",{hash:"HEAD",mode:W},"Failed to reset working directory")}async function C(){return N("/api/git/clean",{},"Failed to clean untracked files")}function B(W){ce.value=W}function _(){ce.value=null}function L(W){H.value=W}function ae(){H.value=null}const fe=Q(null),he=Q(null),me=Q(!1),nt=J(()=>!!j.value&&!!l.value);function pt(W){j.value=W,W&&l.value&&et()}function Ot(){j.value=null,fe.value=null,he.value=null,me.value=!1}async function et(){if(!(!x.value||!l.value||!j.value)){me.value=!0;try{const W=await nk({workingDirectory:x.value,from:j.value.hash,to:l.value.hash});fe.value=W.files,he.value=W.stats}catch(W){console.error("Failed to load comparison:",W),le("Failed to load commit comparison"),fe.value=null,he.value=null}finally{me.value=!1}}}async function lr(W){try{return await rv(W),{success:!0}}catch(ie){const Le=ie?.message||"Failed to copy to clipboard";return le(Le),{success:!1,error:Le}}}async function Ms(W,ie){se.value=ie,ye.value=W,q.value=null,xe.value=!0,await D1()}function Nh(){se.value=null,ye.value=null,q.value=null,xe.value=!1}async function D1(){if(!x.value||!ye.value||!se.value){xe.value=!1;return}xe.value=!0;try{q.value=await rk({workingDirectory:x.value,commitHash:ye.value,filePath:se.value.path})}catch(W){console.error("Failed to load file diff:",W),le("Failed to load file diff"),q.value=null}finally{xe.value=!1}}function L1(){r.value=[],e.value=[],t.value=[],n.value=new Set,s.value=[],i.value=[],o.value=0,a.value=!1,l.value=null,c.value=null,u.value=null,h.value=!1,f.value=null,g.value=!1,p.value=0,O.value="",b.value=[],x.value=null,I.value=null,D.value=!1,U.value=!1,z.value=null,xr.value=!1,k.value=!1,w.value=!1,S.value=!1,P.value=!1,V.value=[],G.value=[],j.value=null,fe.value=null,he.value=null,me.value=!1,ce.value=null,H.value=null,F.value="inline",re.value="list",Oe.value="rounded",ve.value=!1,Ce.value={date:!0,author:!0,commit:!0},Me.value=0,Ue.value=0,Ye.value=null,T.value=null,R.value=null,Z.value=null,be.value=null,Qe.value=null,te.value=null,se.value=null,ye.value=null,q.value=null,xe.value=!1,oe(),Pe.clear()}async function X1(){if(!x.value||U.value||h.value)return!1;U.value=!0;try{const W=(await $fetch("/api/git/state",{query:{workingDirectory:x.value}})).state,ie=z.value;if(z.value=W,I.value=Date.now(),!ie)return!1;const Le=ie.headCommit!==W.headCommit||ie.branchListHash!==W.branchListHash,Ut=ie.workingTreeHash!==W.workingTreeHash,zr=ie.stashListHash!==W.stashListHash;if(Le){const[Tn,Eo,z1]=await Promise.all([$fetch("/api/git/log",{query:{workingDirectory:x.value}}),$fetch("/api/git/status",{query:{workingDirectory:x.value}}),$fetch("/api/git/stash",{query:{workingDirectory:x.value}}).then(N1=>N1.stashes).catch(()=>[])]);return r.value=Tn.commits,e.value=Tn.branches,t.value=Tn.tags,n.value=new Set(Tn.localBranches??[]),g.value=Tn.hasMore,p.value=Tn.totalCount,s.value=Eo.stagedFiles??[],i.value=Eo.unstagedFiles??[],o.value=(Eo.stagedCount??0)+(Eo.unstagedCount??0),V.value=z1,await Ts(),!0}if(!Ut&&!zr)return!1;const[Nr,Pn]=await Promise.all([Ut?$fetch("/api/git/status",{query:{workingDirectory:x.value}}):Promise.resolve(null),zr?$fetch("/api/git/stash",{query:{workingDirectory:x.value}}).then(Tn=>Tn.stashes).catch(()=>[]):Promise.resolve(null)]);return Nr&&(s.value=Nr.stagedFiles??[],i.value=Nr.unstagedFiles??[],o.value=(Nr.stagedCount??0)+(Nr.unstagedCount??0)),Pn&&(V.value=Pn),!0}catch(W){return console.error("Failed to refresh git graph:",W),!1}finally{U.value=!1}}function I1(){D.value=!0}function V1(){D.value=!1}return{commits:_e(r),branches:_e(e),tags:_e(t),localBranchNames:_e(n),stagedFiles:_e(s),unstagedFiles:_e(i),uncommittedChangesCount:_e(o),isUncommittedChangesSelected:_e(a),selectedCommit:_e(l),selectedCommitFiles:_e(c),selectedCommitStats:_e(u),loading:_e(h),loadingMore:_e(xr),error:_e(f),hasMore:_e(g),totalCount:_e(p),searchQuery:_e(O),filteredBranches:_e(b),workingDirectory:_e(x),stashes:_e(V),remotes:_e(G),comparisonCommit:_e(j),comparisonFiles:_e(fe),comparisonStats:_e(he),comparisonLoading:_e(me),isComparing:nt,activeDialog:_e(ce),activeContextMenu:_e(H),detailViewPosition:_e(F),fileViewMode:_e(re),graphStyle:_e(Oe),muteNonAncestral:_e(ve),columnVisibility:_e(Ce),searchResultIndex:_e(Me),searchResultCount:_e(Ue),selectedFeatureId:_e(Ye),featureMergeBase:_e(M),conversationBranch:_e(T),conversationMergeBase:_e(R),conversationBaseBranch:_e(Z),previewBranch:_e(be),previewMergeBase:_e(Qe),previewBaseBranch:_e(te),diffViewerFile:_e(se),diffViewerCommitHash:_e(ye),diffViewerContent:_e(q),diffViewerLoading:_e(xe),lastRefreshTime:_e(I),isPollingActive:_e(D),isRefreshing:_e(U),isLoadingDetails:_e(k),isStaging:_e(w),isCommitting:_e(S),isCheckingOut:_e(P),operationError:_e(E),filteredCommits:rt,currentBranch:At,searchResultHashes:Lt,loadGitGraph:sr,loadMoreCommits:qn,refreshUncommittedChanges:on,selectCommit:an,selectUncommittedChanges:ln,clearSelection:jn,setSearchQuery:Sn,toggleBranchFilter:We,clearFilters:Fe,nextSearchResult:de,prevSearchResult:ke,checkoutBranch:wt,createBranch:ot,deleteLocalBranch:Ft,deleteRemoteBranch:ir,stageFiles:yr,unstageFiles:Yn,commitChanges:Xr,reset:L1,clearOperationError:oe,renameBranch:di,mergeBranch:fi,rebaseBranch:mi,pushBranch:pi,pullBranch:gi,fetchBranch:Oi,cherryPickCommit:vi,revertCommit:bi,resetToCommit:xi,checkoutCommit:yi,copyCommitSubject:Xt,createTag:or,deleteTag:Ss,pushTag:cn,getTagDetail:$n,copyTagName:$s,loadStashes:Cn,applyStash:un,popStash:ki,dropStash:Cs,stashBranch:Qn,stashChanges:vt,loadRemotes:_r,addRemote:Fn,editRemote:wi,deleteRemote:Un,fetchAll:Qs,setActiveDialog:B,clearActiveDialog:_,setActiveContextMenu:L,clearActiveContextMenu:ae,selectComparisonCommit:pt,clearComparison:Ot,loadComparisonData:et,copyToClipboard:lr,toggleDetailViewPosition:Ps,toggleFileViewMode:Ir,setGraphStyle:ar,toggleMuteNonAncestral:Gn,toggleColumnVisibility:Si,navigateToCommit:Ze,resetWorking:ue,cleanUntracked:C,setSelectedFeatureId:$i,setConversationBranch:Hn,setPreviewBranch:Kn,openFileDiff:Ms,closeFileDiff:Nh,checkAndRefresh:X1,startPolling:I1,stopPolling:V1}});async function od(){if(typeof window>"u")return{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0};try{const r=await $fetch("/api/conversations");if(!r||!Array.isArray(r.conversations))return console.warn("[conversationStorage] Invalid data structure from server"),{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0};r.version!==_a&&console.warn(`[conversationStorage] Storage version mismatch: ${r.version} vs ${_a}`);const e=r.conversations.map(l=>{if(!l||typeof l!="object")return l;const c=l;return"claudeSessionId"in c&&!("providerSessionId"in c)?{...c,providerSessionId:c.claudeSessionId}:l}),n=(Array.isArray(r.archivedConversations)?r.archivedConversations:[]).map(l=>{if(!l||typeof l!="object")return l;const c=l;return"claudeSessionId"in c&&!("providerSessionId"in c)?{...c,providerSessionId:c.claudeSessionId}:l}),s=e.filter(av),i=n.filter(lv),o=e.length-s.length,a=n.length-i.length;return o>0&&console.warn(`[conversationStorage] Discarded ${o} corrupted active conversation(s)`),a>0&&console.warn(`[conversationStorage] Discarded ${a} corrupted archive conversation(s)`),{conversations:s,archivedConversations:i,discardedConversations:o,discardedArchives:a}}catch(r){return console.error("[conversationStorage] Failed to load conversations:",r),{conversations:[],archivedConversations:[],discardedConversations:0,discardedArchives:0}}}async function sk(r,e=[]){if(typeof window>"u")return!1;try{return await $fetch("/api/conversations",{method:"POST",body:{version:_a,conversations:r,archivedConversations:e}}),!0}catch(t){return console.error("Failed to save conversations:",t),!1}}async function ik(r){if(typeof window>"u")return!1;try{return await $fetch("/api/conversations/update",{method:"POST",body:{version:_a,conversation:r}}),!0}catch(e){return console.error("Failed to save conversation:",e),!1}}function ok(r){return r?r.map(e=>{switch(e.type){case"text":return e.text;case"tool_use":return`[${e.name}] ${e.inputSummary}`;case"tool_result":return e.isError?`Error: ${e.content.slice(0,100)}`:"";case"thinking":case"result_summary":case"session_init":return"";default:return""}}).filter(Boolean).join(`
|
|
8
|
-
`):""}function Vo(r){r.contentBlocks&&(r.content=ok(r.contentBlocks))}function ak(r,e){if(r.type!==e.type)return!0;switch(e.type){case"text":return r.text!==e.text;case"tool_use":{const t=r;return t.name!==e.name||t.inputSummary!==e.inputSummary}case"tool_result":{const t=r;return t.content!==e.content||t.isError!==e.isError}default:return!1}}function lk(r,e,t="info",n,s=Date.now,i=Math.random){return{id:`conflict-msg-${s()}-${i().toString(36).slice(2,7)}`,role:r,content:e,timestamp:s(),type:t,fileRef:n}}function ck(r,e){return e===0?{message:`All ${r} file${r===1?"":"s"} resolved successfully. Click "Continue Rebase" to proceed.`,succeeded:!0}:{message:`Resolution complete: ${r} succeeded, ${e} failed. You can retry or abort.`,succeeded:!1}}function uk(r,e){const t=[];for(let n=0;n<r.length;n+=e)t.push(r.slice(n,n+e));return t}function hk(r,e){return r.filter(t=>!e.has(t.path))}function dk(r){return`Detected ${r} conflicted file${r===1?"":"s"}. Enter optional guidance below and click "Resolve Conflicts Automatically" to start.`}function fk(r){return`Starting AI resolution for ${r} file${r===1?"":"s"} (parallel)...`}async function mk(r){return $fetch("/api/chat/preview",{method:"POST",body:r})}async function pk(r){return $fetch("/api/chat/preview",{method:"DELETE",body:r})}function gk(r,e){return r===e?{kind:"end-current",id:e}:r?{kind:"swap",endId:r,startId:e}:{kind:"start",id:e}}function Ok(r){const e=new Map,t=r.setTimer??setTimeout,n=r.clearTimer??clearTimeout;function s(l){if(e.has(l))return;const c=t(()=>{e.delete(l),r.onFlush(l)},r.delayMs);e.set(l,c)}function i(l){const c=e.get(l);c&&(n(c),e.delete(l)),r.onFlush(l)}function o(l){const c=e.get(l);c&&(n(c),e.delete(l))}function a(){for(const l of e.values())n(l);e.clear()}return{schedule:s,flush:i,cancel:o,cancelAll:a,hasPending:l=>e.has(l),pendingCount:()=>e.size}}async function vk(r){return $fetch("/api/chat/finalize",{method:"POST",body:r})}async function bk(r){return $fetch("/api/chat/rebase",{method:"POST",body:r})}async function xk(r){return $fetch("/api/rebase/conflicts",{params:{worktreePath:r}})}async function yk(r){const{signal:e,...t}=r;return $fetch("/api/rebase/resolve",{method:"PUT",body:t,signal:e})}async function kk(r){const e=r.mode==="sync"?"/api/rebase/continue-sync":"/api/rebase/continue",{mode:t,...n}=r;return $fetch(e,{method:"POST",body:n})}async function ad(r){return $fetch("/api/rebase/abort",{method:"POST",body:{worktreePath:r}})}async function wk(r){const{signal:e,...t}=r;return $fetch("/api/rebase/ai-resolve",{method:"POST",body:t,signal:e})}const vr=_u("chat",()=>{const r=Q(!1),e=Q(cv),t=Q("ask"),n=Q(""),s=Q([]),i=Q([]),o=Q(null),a=Q("active"),l=Q(new Set),c=new Map,u=Q(!1),h=Q(0),g=Ok({delayMs:1200,onFlush:C=>{const B=s.value.find(_=>_.id===C);B&&(B.updatedAt=new Date().toISOString(),ik(B))}}),p=Q(null),O=Q(null);let b=null;function x(C){return C?c.get(C)??null:null}function k(C){let B=c.get(C);return B||(B={session:null,pendingPermission:null,pendingPlanApproval:null,lastError:null,debugEvents:[]},c.set(C,B)),B}const w=J(()=>s.value.find(C=>C.id===o.value)||null),S=J(()=>w.value?.messages??[]),P=J(()=>(h.value,x(o.value)?.session??null)),X=J(()=>(h.value,x(o.value)?.pendingPermission??null)),E=J(()=>(h.value,x(o.value)?.pendingPlanApproval??null)),K=J(()=>(h.value,x(o.value)?.lastError??null)),le=J(()=>(h.value,x(o.value)?.debugEvents??[])),oe=J(()=>P.value?.status==="streaming"),N=J(()=>w.value?.providerSessionId??""),I=J(()=>S.value.length>0),D=J(()=>S.value[S.value.length-1]||null);function U(C){return l.value.has(C)}const z=J(()=>o.value?l.value.has(o.value):!1),V=J(()=>s.value.length>0),G=J(()=>i.value.length>0),j=J(()=>s.value.length),ce=J(()=>j.value>=Gh),H=J(()=>s.value),F=J(()=>i.value),re=J(()=>p.value&&s.value.find(C=>C.id===p.value)||null);function Oe(C){return p.value===C}function ve(C){a.value=C}async function Ce(C){if(!(!C?.previewBranch||!C.worktreePath))try{await Vv({previewBranch:C.previewBranch,worktreePath:C.worktreePath})}catch(B){console.warn("[chat] Failed to sync preview branch after worktree update",{conversationId:C.id,previewBranch:C.previewBranch,worktreePath:C.worktreePath,error:B instanceof Error?B.message:String(B)})}}async function Me(C){if(U(C))return{success:!1,error:"Cannot archive while this conversation is streaming"};if(s.value.findIndex(_=>_.id===C)===-1)return{success:!1,error:"Conversation not found"};try{const _=await $fetch(`/api/conversations/${C}/archive`,{method:"POST"});return _.success&&_.archived?(g.cancel(C),c.delete(C),s.value=Array.isArray(_.conversations)?_.conversations:s.value.filter(L=>L.id!==C),i.value=Array.isArray(_.archivedConversations)?_.archivedConversations:[_.archived,...i.value],cn(),$n(),p.value===C&&(p.value=null),o.value===C&&(o.value=s.value[0]?.id??null),typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:o.value}}).catch(L=>{console.error("Failed to save active conversation:",L)}),{success:!0}):{success:!1,error:"Failed to archive conversation"}}catch(_){return{success:!1,error:_ instanceof Error?_.message:"Failed to archive conversation"}}}async function Ue(C,B){if(Kn().atLimit)return{success:!1,error:`Cannot restore. Active conversations reached ${Hh}.`};if(!i.value.some(L=>L.id===C))return{success:!1,error:"Archived conversation not found"};try{const L=await $fetch(`/api/conversations/archives/${C}/restore`,{method:"POST",body:{baseBranch:B}});return L.success&&L.conversation?(s.value=Array.isArray(L.conversations)?L.conversations:[L.conversation,...s.value],Array.isArray(L.archivedConversations)?i.value=L.archivedConversations:i.value=i.value.filter(ae=>ae.id!==C),a.value="active",Cn(L.conversation.id),cn(),Xt(),{success:!0,conversationId:L.conversation.id}):{success:!1,error:"Failed to restore archived conversation"}}catch(L){return{success:!1,error:L instanceof Error?L.message:"Failed to restore archived conversation"}}}async function Ye(C){const B=i.value.findIndex(_=>_.id===C);if(B===-1)return{success:!1,error:"Archived conversation not found"};try{return await $fetch(`/api/conversations/archives/${C}`,{method:"DELETE"}),i.value.splice(B,1),$n(),{success:!0}}catch{return i.value.splice(B,1),Xt(),{success:!0}}}async function M(){if(!(typeof window>"u"))try{const C=await $fetch("/api/settings");if(C){if(typeof C.panelWidth=="number"){const L=C.panelWidth;L>=Kh&&L<=Jh&&(e.value=L)}typeof C.isPanelOpen=="boolean"&&(r.value=C.isPanelOpen),typeof C.activeConversationId=="string"&&(o.value=C.activeConversationId);const{useSettingsStore:B}=await ds(async()=>{const{useSettingsStore:L}=await import("./BjdLSVUw.js").then(ae=>ae.s);return{useSettingsStore:L}},__vite__mapDeps([0,1,2]),import.meta.url),_=B();await _.hydrate(),t.value=_.permissionMode}}catch(C){console.error("Failed to load chat settings:",C)}}function T(C){t.value=C,typeof window<"u"&&ds(async()=>{const{useSettingsStore:B}=await import("./BjdLSVUw.js").then(_=>_.s);return{useSettingsStore:B}},__vite__mapDeps([0,1,2]),import.meta.url).then(({useSettingsStore:B})=>{B().setPermissionMode(C)})}function R(C,B){const _=B??o.value;if(!_)return;const L=k(_);L.pendingPermission=C,h.value++}function Z(C){const B=C??o.value;if(!B)return;const _=c.get(B);_&&(_.pendingPermission=null,h.value++)}function be(C,B){const _=B??o.value;if(!_)return;const L=k(_);L.pendingPlanApproval=C,h.value++}function Qe(C){const B=C??o.value;if(!B)return;const _=c.get(B);_&&(_.pendingPlanApproval=null,h.value++)}function te(){r.value=!r.value,q()}function se(){r.value=!0,q()}function ye(){r.value=!1,q()}function q(){typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{isPanelOpen:r.value}}).catch(C=>{console.error("Failed to save panel state:",C)})}function xe(C){const B=Math.max(Kh,Math.min(Jh,C));e.value=B,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{panelWidth:B}}).catch(_=>{console.error("Failed to save panel width:",_)})}function Pe(C){n.value=C}function rt(C,B){const _=B??o.value;if(!_)return;const L=s.value.find(ae=>ae.id===_);L&&(L.providerSessionId=C)}function At(C,B){const _=s.value.find(L=>L.id===C);_&&(_.worktreeBranch=B,_.lastCommitTime=new Date().toISOString())}async function sr(C){const B=s.value.find(L=>L.id===C);if(!B?.worktreeBranch)return null;const _=B.worktreeBranch.trim();if(!_)return null;try{const ae=(await $fetch("/api/specs/features")).features.find(fe=>fe.id===_);return ae?(B.featureId!==ae.id&&(B.featureId=ae.id,B.updatedAt=new Date().toISOString(),Xt()),ae.id):null}catch(L){return console.warn("[chat] Failed to map branch to feature",{conversationId:C,branchName:_,error:L instanceof Error?L.message:String(L)}),null}}function on(C,B,_){const L=s.value.find(ae=>ae.id===C);L&&(L.providerId=B,L.providerModelKey=_)}function xr(C){const B=C??o.value;if(!B)return;const _=s.value.find(L=>L.id===B);_&&(_.providerSessionId="")}function qn(C){return s.value.find(_=>_.id===C)?.providerSessionId??""}function an(C){l.value.add(C)}function jn(C){l.value.delete(C)}function ln(C,B){const _=B??o.value;if(!_)return;const L=s.value.find(ae=>ae.id===_);L&&L.messages.push(C)}function Sn(C,B,_){const L={id:ed(),role:"user",content:C,attachments:_&&_.length>0?_:void 0,timestamp:new Date().toISOString()};return ln(L,B),L}function Lt(C){const B={id:ed(),role:"assistant",content:"",timestamp:new Date().toISOString(),status:"streaming"};return ln(B,C),B}function qt(C,B,_){const L=_??o.value;if(!L)return;const ae=s.value.find(he=>he.id===L);if(!ae)return;const fe=ae.messages.findIndex(he=>he.id===C);fe!==-1&&(ae.messages[fe]={...ae.messages[fe],...B})}function de(C,B){const _=s.value.find(ae=>ae.id===B);if(!_)return;const L=_.messages.findIndex(ae=>ae.id===C);L!==-1&&(_.messages[L]={..._.messages[L],content:"",status:"streaming",contentBlocks:[]})}function ke(C,B,_){const L=_??o.value;if(!L)return;const ae=s.value.find(he=>he.id===L);if(!ae)return;const fe=ae.messages.findIndex(he=>he.id===C);fe!==-1&&(ae.messages[fe].content+=B)}function Re(C,B,_){const L=_??o.value;if(!L)return;const ae=s.value.find(he=>he.id===L);if(!ae)return;const fe=ae.messages.findIndex(he=>he.id===C);if(fe!==-1){const he=ae.messages[fe],me=he.tools?[...he.tools,B]:[B];ae.messages[fe]={...he,tools:me}}}function We(C,B,_,L){const ae=L??o.value;if(!ae)return;const fe=s.value.find(me=>me.id===ae);if(!fe)return;const he=fe.messages.findIndex(me=>me.id===C);if(he!==-1){const me=fe.messages[he];if(me.tools){const nt=me.tools.findIndex(pt=>pt.id===B);if(nt!==-1){const pt=[...me.tools];pt[nt]={...pt[nt],..._},fe.messages[he]={...me,tools:pt}}}}or(ae,!1)}function Fe(C,B){const _=B??o.value;if(!_)return;const L=s.value.find(fe=>fe.id===_);if(!L)return;const ae=L.messages.find(fe=>fe.id===C);ae&&!ae.contentBlocks&&(ae.contentBlocks=[])}function wt(C,B,_){const L=_??o.value;if(!L)return;const ae=s.value.find(he=>he.id===L);if(!ae)return;const fe=ae.messages.find(he=>he.id===C);fe&&(fe.contentBlocks||(fe.contentBlocks=[]),fe.contentBlocks.push(B),Vo(fe))}function ot(C,B,_,L){const ae=L??o.value;if(!ae)return;const fe=s.value.find(Ot=>Ot.id===ae);if(!fe)return;const he=fe.messages.find(Ot=>Ot.id===C);if(!he?.contentBlocks)return;const me=he.contentBlocks.findIndex(Ot=>Ot.id===B);if(me===-1)return;const pt={...he.contentBlocks[me]};_(pt),he.contentBlocks[me]=pt}function Ft(C,B,_,L,ae){const fe=L??o.value;if(!fe)return;const he=s.value.find(lr=>lr.id===fe);if(!he)return;const me=he.messages.find(lr=>lr.id===C);if(!me?.contentBlocks)return;const nt=me.contentBlocks.findIndex(lr=>lr.id===B);if(nt===-1)return;const pt=me.contentBlocks[nt],Ot={...pt};_(Ot),me.contentBlocks[nt]=Ot,ae?.syncContent!==!1&&ak(pt,Ot)&&Vo(me),or(fe,!1)}function ir(C,B,_){const L=_??o.value;if(!L)return;const ae=s.value.find(he=>he.id===L);if(!ae)return;const fe=ae.messages.find(he=>he.id===C);fe&&(fe.contentBlocks||(fe.contentBlocks=[]),fe.contentBlocks.push(B),Vo(fe),or(L,!1))}function yr(C,B,_){const L=_??o.value;if(!L)return null;const ae=s.value.find(he=>he.id===L);if(!ae)return null;const fe=ae.messages.find(he=>he.id===C);return fe?.contentBlocks?fe.contentBlocks.find(he=>he.type==="tool_use"&&he.toolUseId===B)??null:null}function Yn(C,B,_,L,ae){const fe=s.value.find(me=>me.id===ae);if(!fe)return;const he=fe.messages.findIndex(me=>me.id===C);he!==-1&&(fe.messages[he]={...fe.messages[he],content:_,contentBlocks:B,status:L},or(ae,!0))}function Xr(C,B){const _=B??o.value;if(!_)return;const L=c.get(_);L?.session&&(L.session.status=C,h.value++)}function di(C,B){const _=B??o.value;if(!_)return;const L=k(_);L.session={sessionId:C,cwd:n.value,status:"streaming",startedAt:new Date().toISOString()},L.lastError=null,h.value++}function fi(C){const B=C??o.value;if(!B)return;const _=c.get(B);_?.session&&(_.session.status="idle",h.value++)}function mi(C,B){const _=B??o.value;if(!_)return;const L=k(_);L.session&&(L.session.status="error",L.session.error=C),L.lastError=C,h.value++}function pi(C,B){if(!u.value)return;const _=B??o.value;if(!_)return;const L=k(_),ae=(()=>{if(typeof C.payload=="string")return C.payload;try{return JSON.stringify(C.payload,null,2)}catch{return String(C.payload)}})(),fe=8e3,he=300,me=ae.length>fe?`${ae.slice(0,fe)}
|
|
9
|
-
... (truncated)`:ae;L.debugEvents.push({id:`dbg-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,timestamp:new Date().toISOString(),direction:C.direction,channel:C.channel,eventType:C.eventType||"unknown",payload:me}),L.debugEvents.length>he&&L.debugEvents.splice(0,L.debugEvents.length-he),h.value++}function gi(C){u.value=C}function Oi(C){const B=C??o.value;if(!B)return;const _=c.get(B);_&&(_.debugEvents=[],h.value++)}function vi(){if(!o.value)return;const C=s.value.find(_=>_.id===o.value);C&&(C.messages=[]);const B=o.value;c.delete(B),h.value++}function bi(C){const B=C??o.value;if(!B)return;const _=c.get(B);_&&(_.lastError=null,_.session&&(_.session.error=void 0),h.value++)}async function xi(){const C=await od();if(s.value=C.conversations,i.value=C.archivedConversations,C.discardedArchives>0&&console.warn(`[chat] Skipped ${C.discardedArchives} corrupted archived conversation(s)`),cn(),$n(),!p.value){const B=s.value.find(_=>!!_.previewBranch&&!_.finalized);B&&(p.value=B.id)}if(o.value){const B=s.value.find(_=>_.id===o.value);B&&B.cwd?n.value=B.cwd:B||(o.value=null,r.value=!1)}}async function yi(){const C=await od(),B=new Map(s.value.map(he=>[he.id,he])),_=new Set(C.conversations.map(he=>he.id));let L=0,ae=0,fe=0;for(const he of C.conversations){const me=B.get(he.id);if(!me)s.value.push(he),B.set(he.id,he),L++,console.log(`[chat] refresh: added new conversation ${he.id} (source=${he.source}, msgs=${he.messages.length})`);else if(he.source!=="user"&&(he.messages.length>me.messages.length||he.updatedAt>(me.updatedAt||""))){const nt=s.value.findIndex(pt=>pt.id===he.id);nt!==-1&&(s.value.splice(nt,1,he),console.log(`[chat] refresh: updated conversation ${he.id} (msgs: ${me.messages.length} → ${he.messages.length}, updatedAt: ${me.updatedAt} → ${he.updatedAt})`)),ae++}else me&&he.messages.length!==me.messages.length&&console.log(`[chat] refresh: skipped update for ${he.id} (source=${he.source}, server msgs=${he.messages.length}, local msgs=${me.messages.length})`)}for(let he=s.value.length-1;he>=0;he--){const me=s.value[he];!_.has(me.id)&&!l.value.has(me.id)&&(console.log(`[chat] refresh: removed conversation ${me.id} (no longer on server)`),o.value===me.id&&(o.value=null),s.value.splice(he,1),fe++)}return C.archivedConversations&&(i.value=C.archivedConversations),(L>0||ae>0||fe>0)&&cn(),console.log(`[chat] refreshServerConversations: loaded=${C.conversations.length}, added=${L}, updated=${ae}, removed=${fe}`),L+ae+fe}function Xt(){sk(s.value,i.value)}function or(C,B=!1){s.value.find(L=>L.id===C)&&(B?g.flush(C):g.schedule(C))}function Ss(C=!1){o.value&&or(o.value,C)}function cn(){s.value.sort((C,B)=>new Date(B.createdAt).getTime()-new Date(C.createdAt).getTime())}function $n(){i.value.sort((C,B)=>new Date(B.archivedAt).getTime()-new Date(C.archivedAt).getTime())}async function $s(C){if(Kn().atLimit)return"";const _=uv();let L=null;if(C?.featureId){const me=await rd({conversationId:_,featureId:C.featureId,baseBranch:C.baseBranch});if(!me.success&&me.error)throw new Error(me.error);L=me}let ae=null;if(typeof window<"u")try{const{useSettingsStore:me}=await ds(async()=>{const{useSettingsStore:pt}=await import("./BjdLSVUw.js").then(Ot=>Ot.s);return{useSettingsStore:pt}},__vite__mapDeps([0,1,2]),import.meta.url),nt=me();await nt.hydrate(),ae=nt.providerSelection}catch(me){console.warn("[chat] Failed to load provider selection for new conversation",me)}const fe=ae||{providerId:np,modelKey:rp},he={id:_,title:"New Conversation",messages:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),cwd:n.value||process.cwd?.()||"",source:C?.featureId?"cascade":"user",featureId:C?.featureId,providerId:fe.providerId,providerModelKey:fe.modelKey};if(L?.success&&L.worktreePath&&L.branch&&(he.worktreePath=L.worktreePath,he.worktreeBranch=L.branch,he.cwd=L.worktreePath,he.hasWorktree=!0,L.baseBranch&&(he.baseBranch=L.baseBranch)),s.value.unshift(he),o.value=_,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:_}}).catch(me=>{console.error("Failed to save active conversation:",me)}),!C?.featureId)try{const me=await rd({conversationId:_,baseBranch:C?.baseBranch});if(me.success&&me.worktreePath&&me.branch){const nt=s.value.find(pt=>pt.id===_);nt&&(nt.worktreePath=me.worktreePath,nt.worktreeBranch=me.branch,nt.cwd=me.worktreePath,nt.hasWorktree=!0,me.baseBranch&&(nt.baseBranch=me.baseBranch))}}catch(me){console.warn("[chat] Failed to create worktree for conversation",_,me)}return or(_,!0),_}function Cn(C){const B=s.value.find(_=>_.id===C);B&&(o.value=C,r.value=!0,B.cwd&&(n.value=B.cwd),!B.featureId&&B.worktreeBranch&&sr(C),typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:C,isPanelOpen:!0}}).catch(_=>{console.error("Failed to save active conversation:",_)}))}async function un(C){const B=s.value.findIndex(L=>L.id===C);if(B===-1)return;const _=s.value[B];if(p.value===C&&(p.value=null),_.hasWorktree&&_.worktreePath&&_.worktreeBranch)try{await Iv({worktreePath:_.worktreePath,branch:_.worktreeBranch})}catch(L){console.warn("[chat] Failed to clean up worktree for conversation",C,L)}s.value.splice(B,1),c.delete(C),l.value.delete(C),g.cancel(C),o.value===C&&(o.value=null,typeof window<"u"&&$fetch("/api/settings",{method:"POST",body:{activeConversationId:null}}).catch(L=>{console.error("Failed to clear active conversation:",L)})),Xt()}async function ki(C,B,_){const L=s.value.find(fe=>fe.id===C);if(!L)return{success:!1,error:"Conversation not found"};if(!L.hasWorktree)return{success:!1,error:"No worktree associated with this conversation"};const ae=_||L.baseBranch;try{const fe=await vk({conversationId:C,commitMessage:B,baseBranch:ae,worktreePath:L.worktreePath,worktreeBranch:L.worktreeBranch,previewBranch:L.previewBranch});return fe.success?(p.value===C&&(p.value=null),L.worktreePath=void 0,L.worktreeBranch=void 0,L.hasWorktree=!1,L.baseBranch=void 0,L.previewBranch=void 0,L.finalized=!0,L.updatedAt=new Date().toISOString(),Xt()):fe.rebaseInProgress&&await Qn(C,L.worktreePath,ae||"main",B),fe}catch(fe){return{success:!1,error:fe instanceof Error?fe.message:String(fe)}}}async function Cs(C,B){const _=s.value.find(ae=>ae.id===C);if(!_)return{success:!1,error:"Conversation not found"};if(!_.hasWorktree)return{success:!1,error:"No worktree associated with this conversation"};const L=B||_.baseBranch;try{const ae=await bk({conversationId:C,baseBranch:L,worktreePath:_.worktreePath});return ae.rebaseInProgress?await Qn(C,_.worktreePath,L||"main","","sync"):ae.success&&(await Ce(_),_.baseBranch=L,Xt()),ae}catch(ae){return{success:!1,error:ae instanceof Error?ae.message:String(ae)}}}async function Qn(C,B,_,L,ae="finalize"){O.value={conversationId:C,worktreePath:B,baseBranch:_,commitMessage:L,files:[],resolvedFiles:new Set,loading:!0,error:null,mode:ae,retryCount:0,strategy:"auto",chatMessages:[],userGuidance:"",lifecycleState:"detected"};try{const fe=await xk(B);O.value&&(O.value.files=fe.files,O.value.loading=!1,vt("system",dk(fe.files.length),"info"))}catch(fe){O.value&&(O.value.error=fe instanceof Error?fe.message:String(fe),O.value.loading=!1)}}function vt(C,B,_="info",L){O.value&&O.value.chatMessages.push(lk(C,B,_,L))}function _r(C){O.value&&(O.value.userGuidance=C)}async function Fn(C,B,_){if(!O.value||_?.aborted)return!1;try{const L=await yk({worktreePath:O.value.worktreePath,filePath:C,content:B,signal:_});return L.success&&O.value&&O.value.resolvedFiles.add(C),L.success}catch{return!1}}async function wi(){if(!O.value)return{success:!1,error:"No conflict resolution in progress"};const{conversationId:C,commitMessage:B,baseBranch:_,mode:L,worktreePath:ae}=O.value;try{const fe=s.value.find(me=>me.id===C),he=await kk({mode:L,conversationId:C,commitMessage:B,baseBranch:_,worktreePath:ae,worktreeBranch:fe?.worktreeBranch,previewBranch:fe?.previewBranch});if(he.success){if(L==="finalize"){p.value===C&&(p.value=null);const me=s.value.find(nt=>nt.id===C);me&&(me.worktreePath=void 0,me.worktreeBranch=void 0,me.hasWorktree=!1,me.baseBranch=void 0,me.previewBranch=void 0,me.finalized=!0,me.updatedAt=new Date().toISOString(),Xt())}else if(L==="sync"){const me=s.value.find(nt=>nt.id===C);me&&(await Ce(me),me.baseBranch=_,me.updatedAt=new Date().toISOString(),Xt())}O.value=null}else he.rebaseInProgress&&await Qn(C,ae,_,B,L);return he}catch(fe){return{success:!1,error:fe instanceof Error?fe.message:String(fe)}}}async function Un(){if(!O.value)return!1;try{const C=await ad(O.value.worktreePath);return O.value=null,C.success}catch{return O.value=null,!1}}async function Qs(C,B){if(!O.value||B?.aborted)return!1;const _=O.value.files.find(L=>L.path===C);if(!_)return!1;try{const L=await wk({worktreePath:O.value.worktreePath,filePath:C,conflictContent:_.content,userGuidance:O.value.userGuidance||void 0,signal:B});if(B?.aborted)return!1;if(L.success&&L.resolvedContent!==void 0){_.content=L.resolvedContent;const ae=await Fn(C,L.resolvedContent,B);return ae?vt("assistant",`Resolved: ${C}`,"success",C):vt("assistant",`Failed to write resolved content for ${C}`,"error",C),ae}return vt("assistant",`Failed to resolve ${C}: ${L.error||"Unknown error"}`,"error",C),!1}catch(L){const ae=L instanceof Error?L.message:String(L);return vt("assistant",`Error resolving ${C}: ${ae}`,"error",C),!1}}async function Ps(){if(!O.value)return;const C=hk(O.value.files,O.value.resolvedFiles);if(C.length===0){vt("system","All files are already resolved.","info");return}const B=new AbortController;b=B;const _=B.signal;O.value.lifecycleState="resolving";const L=O.value.userGuidance;L&&vt("user",L),vt("system",fk(C.length),"info");let ae=0,fe=0;const he=uk(C,3);for(const nt of he){if(!O.value||_.aborted)break;for(const Ot of nt)vt("assistant",`Resolving: ${Ot.path}...`,"progress",Ot.path);const pt=await Promise.all(nt.map(Ot=>Qs(Ot.path,_)));for(const Ot of pt)Ot?ae++:fe++}if(b===B&&(b=null),!O.value||_.aborted)return;const me=ck(ae,fe);O.value.lifecycleState=me.succeeded?"resolved":"failed",vt("system",me.message,"summary")}async function Ir(){if(!O.value)return;b&&(b.abort(),b=null);const{worktreePath:C}=O.value;vt("system","Resolution cancelled. Resetting conflict state...","info");try{await ad(C)}catch{}O.value=null}async function ar(C){const B=s.value.find(_=>_.id===C);if(!B)return{success:!1,error:"Conversation not found"};if(!B.hasWorktree||!B.worktreePath||!B.baseBranch)return{success:!1,error:"No worktree to preview"};try{const _=await mk({conversationId:C,worktreePath:B.worktreePath,baseBranch:B.baseBranch});return _.success&&_.previewBranch&&(B.previewBranch=_.previewBranch,p.value=C,B.updatedAt=new Date().toISOString(),Xt()),{success:_.success,error:_.error}}catch(_){return{success:!1,error:_ instanceof Error?_.message:String(_)}}}async function Gn(C){const B=s.value.find(_=>_.id===C);if(!B)return{success:!1,error:"Conversation not found"};if(!B.previewBranch||!B.baseBranch)return p.value=null,{success:!1,error:"No active preview"};try{const _=await pk({previewBranch:B.previewBranch,baseBranch:B.baseBranch});return _.success&&(B.previewBranch=void 0,p.value=null,B.updatedAt=new Date().toISOString(),Xt()),{success:_.success,error:_.error}}catch(_){return{success:!1,error:_ instanceof Error?_.message:String(_)}}}async function Si(C){const B=gk(p.value,C);if(B.kind==="end-current")return await Gn(B.id);if(B.kind==="swap"){const _=await Gn(B.endId);return _.success?await ar(B.startId):{success:!1,error:`Failed to end previous preview: ${_.error}`}}return await ar(B.id)}function Vr(C){const B=C.trim();if(!B)return null;const _=s.value.filter(L=>L.featureId===B?!0:L.worktreeBranch?.trim()===B);return _.length===0?null:_.sort((L,ae)=>new Date(ae.updatedAt).getTime()-new Date(L.updatedAt).getTime())[0]||null}function $i(C,B){const _=s.value.find(L=>L.id===C);_&&(_.title=B.trim(),_.updatedAt=new Date().toISOString(),cn(),Xt())}function Hn(C){const B=o.value;if(!B)return;const _=s.value.find(ae=>ae.id===B);if(!_||_.title!=="New Conversation")return;const L=_.messages.find(ae=>ae.role==="user");L&&(L.content.trim().length>0?_.title=hv(L.content):L.attachments&&L.attachments.length>0&&(_.title=L.attachments.length===1?"[Image] New Conversation":`[${L.attachments.length} Images] New Conversation`))}function Kn(){const C=s.value.length;return{atLimit:C>=Hh,nearLimit:C>=Gh,count:C}}async function Ts(C,B){o.value||await $s();const _=Sn(C,void 0,B);return Hn(),Ss(!0),_}function Ze(C,B,_){const L=_??o.value;ke(C,B,L??void 0),L&&or(L,!1)}function ue(C,B){const _=B??o.value;qt(C,{status:"complete"},_??void 0),_&&or(_,!0)}return{messages:S,session:P,isPanelOpen:r,panelWidth:_e(e),permissionMode:_e(t),pendingPermission:X,pendingPlanApproval:E,cwd:_e(n),lastError:K,debugEvents:le,debugStreamEnabled:_e(u),providerSessionId:N,conversations:_e(s),archivedConversations:_e(i),activeConversationId:_e(o),conversationViewMode:_e(a),conflictState:_e(O),previewingConversationId:_e(p),isStreaming:oe,hasMessages:I,lastMessage:D,isActiveConversationStreaming:z,hasConversations:V,hasArchivedConversations:G,activeConversation:w,conversationCount:j,isNearStorageLimit:ce,sortedConversations:H,sortedArchivedConversations:F,previewingConversation:re,streamingConversations:_e(l),initialize:M,togglePanel:te,openPanel:se,closePanel:ye,setPanelWidth:xe,setPermissionMode:T,setPendingPermission:R,clearPendingPermission:Z,setPendingPlanApproval:be,clearPendingPlanApproval:Qe,setCwd:Pe,setProviderSessionId:rt,clearProviderSession:xr,getProviderSessionId:qn,updateWorktreeBranch:At,setConversationProviderSelection:on,startConversationStreaming:an,endConversationStreaming:jn,isConversationStreaming:U,addMessage:ln,addUserMessage:Sn,addAssistantMessage:Lt,updateMessage:qt,resetMessageForReplay:de,appendToMessage:ke,addToolToMessage:Re,updateToolInMessage:We,initContentBlocks:Fe,appendContentBlock:wt,appendContentBlockWithSave:ir,updateBlockById:ot,updateBlockWithSave:Ft,findToolUseBlock:yr,batchSetMessageBlocks:Yn,syncContentFromBlocks:Vo,setSessionStatus:Xr,startSession:di,endSession:fi,setSessionError:mi,setDebugStreamEnabled:gi,pushDebugEvent:pi,clearDebugEvents:Oi,clearMessages:vi,clearError:bi,loadConversations:xi,refreshServerConversations:yi,saveAllConversations:Xt,saveCurrentConversation:Ss,saveConversation:or,createConversation:$s,selectConversation:Cn,deleteConversation:un,archiveConversation:Me,restoreArchivedConversation:Ue,deleteArchivedConversation:Ye,setConversationViewMode:ve,findConversationByFeature:Vr,syncConversationFeatureFromBranch:sr,renameConversation:$i,checkStorageLimits:Kn,finalizeConversation:ki,rebaseConversation:Cs,resolveConflictFile:Fn,continueRebase:wi,abortRebase:Un,aiResolveConflictFile:Qs,aiResolveAllConflicts:Ps,addConflictChatMessage:vt,setConflictUserGuidance:_r,cancelConflictResolution:Ir,previewConversation:ar,unpreviewConversation:Gn,togglePreview:Si,isConversationPreviewing:Oe,addUserMessageWithConversation:Ts,appendToMessageWithSave:Ze,completeMessageWithSave:ue}});function Sk(r={}){const e=gl(),t=300,n=5e3,s=250;let i=null,o=null,a=null,l=null,c=null,u=!1,h=!1;const f=Q(!1),g=Q(!1);let p=r;function O(I){p=I}async function b(){const I=p.getScrollPosition?.()??0,D=await e.checkAndRefresh();return D&&p.setScrollPosition&&(await zt(),p.setScrollPosition(I)),D}function x(){return f.value||!!e.activeContextMenu||!!e.activeDialog}async function k(){if(x()){g.value=!0;return}S()}async function w(){if(u){h=!0;return}u=!0;try{await b()}finally{u=!1,h&&(h=!1,S())}}function S(){o&&clearTimeout(o),o=setTimeout(()=>{o=null,w()},s)}function P(I){if(typeof window>"u")return;if(a&&a.readyState===WebSocket.OPEN){a.send(JSON.stringify({type:"watch",workingDirectory:I}));return}l&&(clearTimeout(l),l=null);const U=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/git-watcher-ws`;a=new WebSocket(U),a.onopen=()=>{a.send(JSON.stringify({type:"watch",workingDirectory:I}))},a.onmessage=z=>{try{JSON.parse(z.data).type==="git_changed"&&k()}catch{}},a.onclose=()=>{a=null,e.isPollingActive&&c&&(l=setTimeout(()=>{c&&P(c)},n))},a.onerror=()=>{}}function X(){l&&(clearTimeout(l),l=null),a&&(a.close(),a=null)}function E(I){I&&(c=I),!e.isPollingActive&&(e.startPolling(),c&&P(c))}function K(){X(),e.stopPolling()}function le(){f.value=!0,i&&(clearTimeout(i),i=null)}function oe(){i&&clearTimeout(i),i=setTimeout(async()=>{f.value=!1,g.value&&(g.value=!1,S())},t)}function N(){K(),i&&(clearTimeout(i),i=null),o&&(clearTimeout(o),o=null),u=!1,h=!1,c=null}return Ve(()=>[e.activeContextMenu,e.activeDialog],()=>{!e.activeContextMenu&&!e.activeDialog&&g.value&&!f.value&&(g.value=!1,S())}),{isUserInteracting:_e(f),isDeferredRefresh:_e(g),startPolling:E,stopPolling:K,startInteraction:le,endInteraction:oe,cleanup:N,setScrollCallbacks:O}}function $k(r){function e(s){if((s.ctrlKey||s.metaKey)&&s.key==="h"){s.preventDefault(),r.onScrollToHead();return}if(s.key==="Escape"){s.preventDefault(),r.onEscape();return}}function t(){document.addEventListener("keydown",e)}function n(){document.removeEventListener("keydown",e)}return{start:t,stop:n}}function Ck(r){const e=Q({visible:!1,branchName:"",loading:!1,error:null});async function t(){e.value.loading=!0,e.value.error=null;const H=await r.checkoutBranch(e.value.branchName);e.value.loading=!1,H.success?e.value.visible=!1:e.value.error=H.error||"Unknown error"}const n=Q({visible:!1,fromCommit:"",loading:!1,error:null});async function s(H){n.value.loading=!0,n.value.error=null;const F=await r.createBranch(H.name,n.value.fromCommit);n.value.loading=!1,F.success?(H.checkout&&await r.checkoutBranch(H.name),n.value.visible=!1):n.value.error=F.error||"Unknown error"}const i=Q({visible:!1,branchName:"",isLocal:!0,force:!1,loading:!1,error:null});async function o(H){i.value.loading=!0,i.value.error=null;const{branchName:F,isLocal:re}=i.value,Oe=H?.force??i.value.force,ve=re?await r.deleteLocalBranch(F,Oe):await r.deleteRemoteBranch(F);i.value.loading=!1,ve.success?i.value.visible=!1:i.value.error=ve.error||"Unknown error"}const a=Q({visible:!1,branchName:"",newName:"",loading:!1,error:null});async function l(){if(!a.value.newName.trim()){a.value.error="Branch name is required";return}a.value.loading=!0,a.value.error=null;const H=await r.renameBranch(a.value.branchName,a.value.newName.trim());a.value.loading=!1,H.success?a.value.visible=!1:a.value.error=H.error||"Unknown error"}const c=Q({visible:!1,branchName:"",loading:!1,error:null});async function u(H){c.value.loading=!0,c.value.error=null;const F=await r.mergeBranch(c.value.branchName,H);c.value.loading=!1,F.success?c.value.visible=!1:c.value.error=F.error||"Unknown error"}const h=Q({visible:!1,branchName:"",loading:!1,error:null});async function f(){h.value.loading=!0,h.value.error=null;const H=await r.rebaseBranch(h.value.branchName);h.value.loading=!1,H.success?h.value.visible=!1:h.value.error=H.error||"Unknown error"}const g=Q({visible:!1,branchName:"",loading:!1,error:null});async function p(H){g.value.loading=!0,g.value.error=null;const F=await r.pushBranch(g.value.branchName,H.remote,H.force,H.forceWithLease);g.value.loading=!1,F.success?g.value.visible=!1:g.value.error=F.error||"Unknown error"}const O=Q({visible:!1,branchName:"",loading:!1,error:null});async function b(H){O.value.loading=!0,O.value.error=null;const F=await r.pullBranch(O.value.branchName,H.remote,H.noFastForward,H.squash);O.value.loading=!1,F.success?O.value.visible=!1:O.value.error=F.error||"Unknown error"}const x=Q({visible:!1,commitHash:"",commitMessage:"",loading:!1,error:null});async function k(H){x.value.loading=!0,x.value.error=null;const F=await r.cherryPickCommit(x.value.commitHash,H.recordOrigin,H.noCommit);x.value.loading=!1,F.success?x.value.visible=!1:x.value.error=F.error||"Unknown error"}const w=Q({visible:!1,commitHash:"",commitMessage:"",loading:!1,error:null});async function S(H){w.value.loading=!0,w.value.error=null;const F=await r.resetToCommit(w.value.commitHash,H.mode);w.value.loading=!1,F.success?w.value.visible=!1:w.value.error=F.error||"Unknown error"}const P=Q({visible:!1,commitHash:"",loading:!1,error:null});async function X(H){P.value.loading=!0,P.value.error=null;const F=await r.createTag(H.name,P.value.commitHash,H.annotated,H.message,H.pushToRemote);P.value.loading=!1,F.success?P.value.visible=!1:P.value.error=F.error||"Unknown error"}const E=Q({visible:!1,tagName:"",loading:!1,error:null});async function K(H){E.value.loading=!0,E.value.error=null;const F=await r.deleteTag(E.value.tagName,H.deleteFromRemote?H.remote||"origin":void 0);E.value.loading=!1,F.success?E.value.visible=!1:E.value.error=F.error||"Unknown error"}const le=Q({visible:!1,tagName:"",loading:!1,tagDetail:null}),oe=Q({visible:!1,loading:!1,error:null});async function N(H){oe.value.loading=!0,oe.value.error=null;const F=await r.stashChanges(H.message,H.includeUntracked);oe.value.loading=!1,F.success?oe.value.visible=!1:oe.value.error=F.error||"Unknown error"}const I=Q({visible:!1,stashIndex:0,loading:!1,error:null}),D=Q("");async function U(H){I.value.loading=!0,I.value.error=null;const F=await r.stashBranch(I.value.stashIndex,H);I.value.loading=!1,F.success?I.value.visible=!1:I.value.error=F.error||"Unknown error"}const z=Q({visible:!1,loading:!1,error:null});async function V(H){z.value.loading=!0,z.value.error=null;const F=await r.resetWorking(H.mode);z.value.loading=!1,F.success?z.value.visible=!1:z.value.error=F.error||"Unknown error"}const G=Q({visible:!1,loading:!1,error:null});async function j(){G.value.loading=!0,G.value.error=null;const H=await r.cleanUntracked();G.value.loading=!1,H.success?G.value.visible=!1:G.value.error=H.error||"Unknown error"}const ce=J(()=>e.value.visible||n.value.visible||i.value.visible||a.value.visible||c.value.visible||h.value.visible||g.value.visible||O.value.visible||x.value.visible||w.value.visible||P.value.visible||E.value.visible||le.value.visible||oe.value.visible||I.value.visible||z.value.visible||G.value.visible);return{checkoutDialog:e,confirmCheckout:t,createBranchDialog:n,confirmCreateBranch:s,deleteBranchDialog:i,confirmDeleteBranch:o,renameDialog:a,confirmRenameBranch:l,mergeDialog:c,confirmMerge:u,rebaseDialog:h,confirmRebase:f,pushDialog:g,confirmPush:p,pullDialog:O,confirmPull:b,cherryPickDialog:x,confirmCherryPick:k,resetDialog:w,confirmReset:S,tagCreateDialog:P,confirmTagCreate:X,tagDeleteDialog:E,confirmTagDelete:K,tagDetailDialog:le,stashDialog:oe,confirmStash:N,stashBranchDialog:I,stashBranchInput:D,confirmStashBranch:U,resetWorkingDialog:z,confirmResetWorking:V,cleanUntrackedDialog:G,confirmCleanUntracked:j,isAnyDialogOpen:ce}}function Qk(r,e){const t=Q({visible:!1,x:0,y:0});function n(q,xe){t.value={visible:!0,x:q,y:xe},setTimeout(()=>{t.value.visible=!1},1500)}const s=Q({visible:!1,branch:"",x:0,y:0,isCurrentBranch:!1,isLocal:!0,commitHash:""});function i(q){s.value={visible:!0,...q},r.setActiveContextMenu({type:"branch",props:q,position:{x:q.x,y:q.y}})}function o(){s.value.visible=!1,r.clearActiveContextMenu()}function a(){o(),e.checkoutDialog.value={visible:!0,branchName:s.value.branch,loading:!1,error:null}}function l(){const q=s.value.branch;o(),e.renameDialog.value={visible:!0,branchName:q,newName:q,loading:!1,error:null}}function c(){const{branch:q,isLocal:xe}=s.value;o(),e.deleteBranchDialog.value={visible:!0,branchName:q,isLocal:xe,force:!1,loading:!1,error:null}}function u(){const q=s.value.branch;o(),e.mergeDialog.value={visible:!0,branchName:q,loading:!1,error:null}}function h(){const q=s.value.branch;o(),e.rebaseDialog.value={visible:!0,branchName:q,loading:!1,error:null}}function f(){const q=s.value.branch;o(),e.pushDialog.value={visible:!0,branchName:q,loading:!1,error:null}}function g(){const q=s.value.branch;o(),e.pullDialog.value={visible:!0,branchName:q,loading:!1,error:null}}async function p(){const q=s.value.branch;o(),await r.fetchBranch(q)}async function O(){const{branch:q,x:xe,y:Pe}=s.value;o(),(await r.copyToClipboard(q)).success&&n(xe,Pe)}function b(){o(),e.createBranchDialog.value={visible:!0,fromCommit:s.value.commitHash,loading:!1,error:null}}const x=Q({visible:!1,commit:null,x:0,y:0});function k(q){x.value={visible:!0,commit:q.commit,x:q.x,y:q.y},r.setActiveContextMenu({type:"commit",props:q,position:{x:q.x,y:q.y}})}function w(){x.value.visible=!1,r.clearActiveContextMenu()}function S(q){return q===!1?!1:typeof q=="object"&&q!==null&&"success"in q?!!q.success:!0}function P(q){const xe=x.value.commit;if(!xe)return!1;w();const Pe=q(xe);return Pe&&typeof Pe.then=="function"?Pe.then(S).catch(()=>!1):S(Pe)}function X(){P(q=>{e.tagCreateDialog.value={visible:!0,commitHash:q.hash,loading:!1,error:null}})}function E(){P(q=>{e.createBranchDialog.value={visible:!0,fromCommit:q.hash,loading:!1,error:null}})}function K(){P(q=>{e.checkoutDialog.value={visible:!0,branchName:q.hash,loading:!1,error:null}})}function le(){P(q=>{e.cherryPickDialog.value={visible:!0,commitHash:q.hash,commitMessage:q.message,loading:!1,error:null}})}async function oe(){await P(q=>r.revertCommit(q.hash))}function N(){P(q=>{e.mergeDialog.value={visible:!0,branchName:q.shortHash,loading:!1,error:null}})}function I(){P(q=>{e.resetDialog.value={visible:!0,commitHash:q.hash,commitMessage:q.message,loading:!1,error:null}})}async function D(){const{x:q,y:xe}=x.value;await P(rt=>r.copyToClipboard(rt.hash))&&n(q,xe)}async function U(){const{x:q,y:xe}=x.value;await P(rt=>r.copyCommitSubject(rt))&&n(q,xe)}const z=Q({visible:!1,tag:"",x:0,y:0,commitHash:""});function V(q){z.value={visible:!0,...q},r.setActiveContextMenu({type:"tag",props:q,position:{x:q.x,y:q.y}})}function G(){z.value.visible=!1,r.clearActiveContextMenu()}async function j(){const q=z.value.tag;G(),e.tagDetailDialog.value={visible:!0,tagName:q,loading:!0,tagDetail:null};const xe=await r.getTagDetail(q);e.tagDetailDialog.value.loading=!1,xe.success&&xe.data&&(e.tagDetailDialog.value.tagDetail=xe.data)}function ce(){const q=z.value.tag;G(),e.tagDeleteDialog.value={visible:!0,tagName:q,loading:!1,error:null}}async function H(){const q=z.value.tag;G(),await r.pushTag(q)}async function F(){const{tag:q,x:xe,y:Pe}=z.value;G(),(await r.copyToClipboard(q)).success&&n(xe,Pe)}const re=Q({visible:!1,x:0,y:0});function Oe(q){re.value={visible:!0,...q},r.setActiveContextMenu({type:"uncommitted",props:q,position:{x:q.x,y:q.y}})}function ve(){re.value.visible=!1,r.clearActiveContextMenu()}function Ce(){ve(),e.stashDialog.value={visible:!0,loading:!1,error:null}}function Me(){ve(),e.resetWorkingDialog.value={visible:!0,loading:!1,error:null}}function Ue(){ve(),e.cleanUntrackedDialog.value={visible:!0,loading:!1,error:null}}const Ye=Q({visible:!1,stash:null,x:0,y:0});function M(q){Ye.value={visible:!0,stash:q.stash,x:q.x,y:q.y},r.setActiveContextMenu({type:"stash",props:q,position:{x:q.x,y:q.y}})}function T(){Ye.value.visible=!1,r.clearActiveContextMenu()}function R(q){const xe=Ye.value.stash;if(!xe)return!1;T();const Pe=q(xe);return Pe&&typeof Pe.then=="function"?Pe.then(S).catch(()=>!1):S(Pe)}async function Z(){await R(q=>r.applyStash(q.index))}async function be(){await R(q=>r.popStash(q.index))}async function Qe(){await R(q=>r.dropStash(q.index))}function te(){R(q=>{e.stashBranchDialog.value={visible:!0,stashIndex:q.index,loading:!1,error:null}})}async function se(){const{x:q,y:xe}=Ye.value;await R(rt=>r.copyToClipboard(`stash@{${rt.index}}`))&&n(q,xe)}async function ye(){const{x:q,y:xe}=Ye.value;await R(rt=>r.copyToClipboard(rt.hash))&&n(q,xe)}return{copyFeedback:t,showCopyFeedback:n,branchMenu:s,handleBranchContextMenu:i,closeBranchMenu:o,handleBranchCheckout:a,handleBranchRename:l,handleBranchDelete:c,handleBranchMerge:u,handleBranchRebase:h,handleBranchPush:f,handleBranchPull:g,handleBranchFetch:p,handleBranchCopyName:O,handleBranchCreateBranch:b,commitMenu:x,handleCommitContextMenu:k,closeCommitMenu:w,handleCommitAddTag:X,handleCommitCreateBranch:E,handleCommitCheckout:K,handleCommitCherryPick:le,handleCommitRevert:oe,handleCommitMergeInto:N,handleCommitReset:I,handleCommitCopyHash:D,handleCommitCopySubject:U,tagMenu:z,handleTagContextMenu:V,closeTagMenu:G,handleTagViewDetails:j,handleTagDelete:ce,handleTagPush:H,handleTagCopyName:F,uncommittedMenu:re,handleUncommittedContextMenu:Oe,closeUncommittedMenu:ve,handleUncommittedStash:Ce,handleUncommittedReset:Me,handleUncommittedClean:Ue,stashMenu:Ye,handleStashContextMenu:M,closeStashMenu:T,handleStashApply:Z,handleStashPop:be,handleStashDrop:Qe,handleStashCreateBranch:te,handleStashCopyName:se,handleStashCopyHash:ye}}const Pk={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},Tk={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},Mk={class:"text-sm font-mono text-retro-text"},Ak={class:"p-4"},_k={key:0,class:"mb-3 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},Rk={class:"flex justify-end gap-2 px-4 py-3 border-t border-retro-border"},Bk=["disabled"],Zk=["disabled"],Et=Ie({__name:"GitDialog",props:{title:{},visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null},confirmLabel:{default:"Confirm"},confirmDanger:{type:Boolean,default:!1},cancelLabel:{default:"Cancel"}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e;function s(i){i.key==="Escape"&&n("close"),i.key==="Enter"&&!t.loading&&(i.preventDefault(),n("confirm"))}return Ve(()=>t.visible,i=>{i?document.addEventListener("keydown",s):document.removeEventListener("keydown",s)}),$t(()=>{document.removeEventListener("keydown",s)}),(i,o)=>(v(),ge(Pr,{to:"body"},[ee(On,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ct(()=>[r.visible?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",role:"dialog","aria-modal":"true",onClick:o[3]||(o[3]=kr(a=>n("close"),["self"]))},[d("div",Pk,[d("div",Tk,[d("h3",Mk,A(r.title),1),d("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close",onClick:o[0]||(o[0]=a=>n("close"))},[ee(m(Ct),{class:"h-4 w-4"})])]),d("div",Ak,[r.error?(v(),y("div",_k,A(r.error),1)):Y("",!0),Jm(i.$slots,"default")]),d("div",Rk,[d("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:r.loading,onClick:o[1]||(o[1]=a=>n("close"))},A(r.cancelLabel),9,Bk),d("button",{type:"button",class:Be(["px-3 py-1.5 text-xs font-mono rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",[r.confirmDanger?"text-retro-red bg-retro-red/10 border border-retro-red/30 hover:bg-retro-red/20":"text-retro-black bg-retro-cyan hover:bg-retro-cyan/80"]]),disabled:r.loading,onClick:o[2]||(o[2]=a=>n("confirm"))},A(r.loading?"Loading...":r.confirmLabel),11,Zk)])])])):Y("",!0)]),_:3})]))}}),Ek={class:"text-retro-text text-sm font-mono mb-4"},Dk={class:"text-retro-cyan"},Lk={class:"space-y-3"},Xk={class:"flex items-center gap-2 cursor-pointer"},Ik={class:"flex items-center gap-2 cursor-pointer"},Vk={class:"flex items-center gap-2 cursor-pointer"},zk=Ie({__name:"MergeDialog",props:{visible:{type:Boolean},branchName:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q(!1),i=Q(!1),o=Q(!1);function a(){n("confirm",{noCommit:s.value,noFastForward:i.value,squash:o.value})}return Ve(()=>t.visible,l=>{l&&(s.value=!1,i.value=!1,o.value=!1)}),(l,c)=>(v(),ge(Et,{title:"Merge Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Merge",onClose:c[3]||(c[3]=u=>n("close")),onConfirm:a},{default:ct(()=>[d("p",Ek,[c[4]||(c[4]=Xe(" Merge ",-1)),d("span",Dk,A(r.branchName),1),c[5]||(c[5]=Xe(" into current branch ",-1))]),d("div",Lk,[d("label",Xk,[je(d("input",{"onUpdate:modelValue":c[0]||(c[0]=u=>Je(s)?s.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(s)]]),c[6]||(c[6]=d("span",{class:"text-retro-muted text-sm"},"No commit (stage changes only)",-1))]),d("label",Ik,[je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>Je(i)?i.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(i)]]),c[7]||(c[7]=d("span",{class:"text-retro-muted text-sm"},"No fast-forward (always create merge commit)",-1))]),d("label",Vk,[je(d("input",{"onUpdate:modelValue":c[2]||(c[2]=u=>Je(o)?o.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(o)]]),c[8]||(c[8]=d("span",{class:"text-retro-muted text-sm"},"Squash (combine all commits into one)",-1))])])]),_:1},8,["visible","loading","error"]))}}),Nk={class:"text-retro-text text-sm font-mono mb-2"},Wk={class:"text-retro-cyan"},qk={class:"space-y-3 mt-4"},jk={class:"flex items-center gap-2 cursor-pointer"},Yk=Ie({__name:"DeleteBranchDialog",props:{visible:{type:Boolean},branchName:{},isLocal:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q(!1);function i(){n("confirm",{force:s.value})}return Ve(()=>t.visible,o=>{o&&(s.value=!1)}),(o,a)=>(v(),ge(Et,{title:"Delete Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Delete","confirm-danger":!0,onClose:a[1]||(a[1]=l=>n("close")),onConfirm:i},{default:ct(()=>[a[4]||(a[4]=d("div",{class:"mb-4 p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"}," This action is permanent and cannot be undone. ",-1)),d("p",Nk,[Xe(" Delete "+A(r.isLocal?"local":"remote")+" branch ",1),d("span",Wk,A(r.branchName),1),a[2]||(a[2]=Xe("? ",-1))]),d("div",qk,[d("label",jk,[je(d("input",{"onUpdate:modelValue":a[0]||(a[0]=l=>Je(s)?s.value=l:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(s)]]),a[3]||(a[3]=d("span",{class:"text-retro-muted text-sm"},"Force delete (even if not fully merged)",-1))])])]),_:1},8,["visible","loading","error"]))}}),Fk={class:"text-retro-text text-sm font-mono mb-4"},Uk={class:"text-retro-cyan"},Gk={class:"space-y-3"},Hk=["value"],Kk={class:"flex items-center gap-2 cursor-pointer"},Jk=["checked"],ew={class:"flex items-center gap-2 cursor-pointer"},tw=["checked"],rw={key:0,class:"p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"},nw=Ie({__name:"PushDialog",props:{visible:{type:Boolean},branchName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q("origin"),i=Q(!1),o=Q(!1);function a(u){i.value=u,u&&(o.value=!1)}function l(u){o.value=u,u&&(i.value=!1)}function c(){n("confirm",{remote:s.value,force:i.value,forceWithLease:o.value})}return Ve(()=>t.visible,u=>{u&&(s.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin",i.value=!1,o.value=!1)}),(u,h)=>(v(),ge(Et,{title:"Push Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Push",onClose:h[3]||(h[3]=f=>n("close")),onConfirm:c},{default:ct(()=>[d("p",Fk,[h[4]||(h[4]=Xe(" Push ",-1)),d("span",Uk,A(r.branchName),1),h[5]||(h[5]=Xe(" to remote ",-1))]),d("div",Gk,[d("div",null,[h[6]||(h[6]=d("label",{class:"text-retro-muted text-sm block mb-1"},"Remote",-1)),je(d("select",{"onUpdate:modelValue":h[0]||(h[0]=f=>Je(s)?s.value=f:null),class:"w-full bg-retro-panel border border-retro-border rounded text-retro-text text-sm px-2 py-1.5 font-mono focus:outline-none focus:border-retro-cyan"},[(v(!0),y(Se,null,ze(r.remotes,f=>(v(),y("option",{key:f,value:f},A(f),9,Hk))),128))],512),[[ks,m(s)]])]),d("label",Kk,[d("input",{checked:m(i),type:"checkbox",class:"accent-retro-cyan",onChange:h[1]||(h[1]=f=>a(f.target.checked))},null,40,Jk),h[7]||(h[7]=d("span",{class:"text-retro-muted text-sm"},"Force push",-1))]),d("label",ew,[d("input",{checked:m(o),type:"checkbox",class:"accent-retro-cyan",onChange:h[2]||(h[2]=f=>l(f.target.checked))},null,40,tw),h[8]||(h[8]=d("span",{class:"text-retro-muted text-sm"},"Force with lease (safer force push)",-1))]),m(i)||m(o)?(v(),y("div",rw,A(m(i)?"Force push will overwrite remote history. Use with caution.":"Force with lease will reject the push if the remote has been updated since your last fetch."),1)):Y("",!0)])]),_:1},8,["visible","loading","error"]))}}),sw={class:"text-retro-text text-sm font-mono mb-4"},iw={class:"text-retro-cyan"},ow={class:"space-y-3"},aw=["value"],lw={class:"flex items-center gap-2 cursor-pointer"},cw={class:"flex items-center gap-2 cursor-pointer"},uw=Ie({__name:"PullDialog",props:{visible:{type:Boolean},branchName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q("origin"),i=Q(!1),o=Q(!1);function a(){n("confirm",{remote:s.value,noFastForward:i.value,squash:o.value})}return Ve(()=>t.visible,l=>{l&&(s.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin",i.value=!1,o.value=!1)}),(l,c)=>(v(),ge(Et,{title:"Pull Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Pull",onClose:c[3]||(c[3]=u=>n("close")),onConfirm:a},{default:ct(()=>[d("p",sw,[c[4]||(c[4]=Xe(" Pull ",-1)),d("span",iw,A(r.branchName),1),c[5]||(c[5]=Xe(" from remote ",-1))]),d("div",ow,[d("div",null,[c[6]||(c[6]=d("label",{class:"text-retro-muted text-sm block mb-1"},"Remote",-1)),je(d("select",{"onUpdate:modelValue":c[0]||(c[0]=u=>Je(s)?s.value=u:null),class:"w-full bg-retro-panel border border-retro-border rounded text-retro-text text-sm px-2 py-1.5 font-mono focus:outline-none focus:border-retro-cyan"},[(v(!0),y(Se,null,ze(r.remotes,u=>(v(),y("option",{key:u,value:u},A(u),9,aw))),128))],512),[[ks,m(s)]])]),d("label",lw,[je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>Je(i)?i.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(i)]]),c[7]||(c[7]=d("span",{class:"text-retro-muted text-sm"},"No fast-forward (always create merge commit)",-1))]),d("label",cw,[je(d("input",{"onUpdate:modelValue":c[2]||(c[2]=u=>Je(o)?o.value=u:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(o)]]),c[8]||(c[8]=d("span",{class:"text-retro-muted text-sm"},"Squash (combine all commits into one)",-1))])])]),_:1},8,["visible","loading","error"]))}}),hw={class:"text-retro-text text-sm font-mono mb-4"},dw={class:"text-retro-cyan"},fw={class:"text-retro-cyan"},mw={class:"p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"},pw={class:"text-retro-cyan"},gw={class:"text-retro-cyan"},Ow=Ie({__name:"RebaseDialog",props:{visible:{type:Boolean},branchName:{},ontoBranch:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),ge(Et,{title:"Rebase Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Rebase",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("confirm"))},{default:ct(()=>[d("p",hw,[s[2]||(s[2]=Xe(" Rebase ",-1)),d("span",dw,A(r.branchName),1),s[3]||(s[3]=Xe(" onto ",-1)),d("span",fw,A(r.ontoBranch),1)]),d("div",mw,[s[4]||(s[4]=Xe(" This will rewrite commit history. Commits from ",-1)),d("span",pw,A(r.branchName),1),s[5]||(s[5]=Xe(" will be replayed on top of ",-1)),d("span",gw,A(r.ontoBranch),1),s[6]||(s[6]=Xe(". ",-1))])]),_:1},8,["visible","loading","error"]))}}),vw={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},bw={class:"text-sm font-mono text-retro-cyan"},xw={class:"text-xs font-mono text-retro-text mt-1 truncate"},yw={class:"space-y-3"},kw={class:"flex items-start gap-2 cursor-pointer group"},ww={class:"flex items-start gap-2 cursor-pointer group"},Sw=Ie({__name:"CherryPickDialog",props:{visible:{type:Boolean},commitHash:{},commitMessage:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=Q(!1),s=Q(!1);function i(){t("confirm",{recordOrigin:n.value,noCommit:s.value})}function o(){n.value=!1,s.value=!1,t("close")}return(a,l)=>(v(),ge(Et,{title:"Cherry-Pick Commit",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Cherry-Pick",onClose:o,onConfirm:i},{default:ct(()=>[d("div",vw,[l[2]||(l[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"Commit",-1)),d("div",bw,A(r.commitHash.slice(0,7)),1),d("div",xw,A(r.commitMessage.split(`
|
|
10
|
-
`)[0]),1)]),d("div",yw,[d("label",kw,[je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>Je(n)?n.value=c:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[Or,m(n)]]),l[3]||(l[3]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Record origin (-x) "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"},' Append "(cherry picked from commit ...)" to the commit message ')],-1))]),d("label",ww,[je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>Je(s)?s.value=c:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[Or,m(s)]]),l[4]||(l[4]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," No commit "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Apply changes to the working directory without committing ")],-1))])])]),_:1},8,["visible","loading","error"]))}}),$w={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},Cw={class:"text-sm font-mono text-retro-cyan"},Qw={class:"text-xs font-mono text-retro-text mt-1 truncate"},Pw={class:"space-y-2"},Tw=["value"],Mw={key:0,class:"mt-3 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},Aw=Ie({__name:"ResetDialog",props:{visible:{type:Boolean},commitHash:{},commitMessage:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=Q("mixed"),s=[{value:"soft",label:"Soft",description:"Move HEAD, keep staged changes and working directory"},{value:"mixed",label:"Mixed",description:"Move HEAD, reset staging area, keep working directory"},{value:"hard",label:"Hard",description:"Move HEAD, reset staging area and working directory (DESTRUCTIVE)"}];function i(){t("confirm",{mode:n.value})}function o(){n.value="mixed",t("close")}return(a,l)=>(v(),ge(Et,{title:"Reset to Commit",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Reset","confirm-danger":m(n)==="hard",onClose:o,onConfirm:i},{default:ct(()=>[d("div",$w,[l[1]||(l[1]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"Reset to",-1)),d("div",Cw,A(r.commitHash.slice(0,7)),1),d("div",Qw,A(r.commitMessage.split(`
|
|
11
|
-
`)[0]),1)]),d("div",Pw,[l[2]||(l[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-2"},"Reset mode",-1)),(v(),y(Se,null,ze(s,c=>d("label",{key:c.value,class:Be(["flex items-start gap-2 p-2 rounded cursor-pointer group border transition-colors",[m(n)===c.value?"border-retro-cyan bg-retro-cyan/5":"border-transparent hover:bg-retro-panel"]])},[je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=u=>Je(n)?n.value=u:null),type:"radio",name:"reset-mode",value:c.value,class:"mt-0.5 accent-retro-cyan"},null,8,Tw),[[Cc,m(n)]]),d("div",null,[d("span",{class:Be(["text-sm font-mono transition-colors",[c.value==="hard"?"text-retro-red":"text-retro-text",m(n)===c.value?"text-retro-cyan":""]])},A(c.label),3),d("p",{class:Be(["text-xs font-mono mt-0.5",c.value==="hard"?"text-retro-red/70":"text-retro-muted"])},A(c.description),3)])],2)),64))]),m(n)==="hard"?(v(),y("div",Mw," Warning: Hard reset will permanently discard all uncommitted changes in your working directory and staging area. This action cannot be undone. ")):Y("",!0)]),_:1},8,["visible","loading","error","confirm-danger"]))}}),_w={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},Rw={class:"text-sm font-mono text-retro-cyan"},Bw={class:"mb-4"},Zw={class:"mb-3"},Ew={class:"flex items-start gap-2 cursor-pointer group"},Dw={key:0,class:"mb-4"},Lw={class:"space-y-2"},Xw={class:"flex items-start gap-2 cursor-pointer group"},Iw=["disabled"],Vw={key:0,class:"ml-6"},zw=["value"],Nw=Ie({__name:"TagCreateDialog",props:{visible:{type:Boolean},commitHash:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=Q(""),s=Q(!1),i=Q(""),o=Q(!1),a=Q(""),l=J(()=>n.value.trim().length>0);function c(){if(!l.value)return;const h={name:n.value.trim(),annotated:s.value};s.value&&i.value.trim()&&(h.message=i.value.trim()),o.value&&a.value&&(h.pushToRemote=a.value),t("confirm",h)}function u(){n.value="",s.value=!1,i.value="",o.value=!1,a.value="",t("close")}return Ve(()=>s.value,h=>{h||(i.value="")}),(h,f)=>(v(),ge(Et,{title:"Create Tag",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Create Tag",onClose:u,onConfirm:c},{default:ct(()=>[d("div",_w,[f[5]||(f[5]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"At commit",-1)),d("div",Rw,A(r.commitHash.slice(0,7)),1)]),d("div",Bw,[f[6]||(f[6]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Tag name",-1)),je(d("input",{"onUpdate:modelValue":f[0]||(f[0]=g=>Je(n)?n.value=g:null),type:"text",placeholder:"v1.0.0",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Zt,m(n)]])]),d("div",Zw,[d("label",Ew,[je(d("input",{"onUpdate:modelValue":f[1]||(f[1]=g=>Je(s)?s.value=g:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[Or,m(s)]]),f[7]||(f[7]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Annotated tag "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Create a full tag object with message and tagger info ")],-1))])]),m(s)?(v(),y("div",Dw,[f[8]||(f[8]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Tag message",-1)),je(d("textarea",{"onUpdate:modelValue":f[2]||(f[2]=g=>Je(i)?i.value=g:null),rows:"3",placeholder:"Release description...",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan resize-none"},null,512),[[Zt,m(i)]])])):Y("",!0),d("div",Lw,[d("label",Xw,[je(d("input",{"onUpdate:modelValue":f[3]||(f[3]=g=>Je(o)?o.value=g:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan",disabled:r.remotes.length===0},null,8,Iw),[[Or,m(o)]]),d("div",null,[d("span",{class:Be(["text-sm font-mono transition-colors",r.remotes.length===0?"text-retro-muted":"text-retro-text group-hover:text-retro-cyan"])}," Push to remote ",2)])]),m(o)&&r.remotes.length>0?(v(),y("div",Vw,[je(d("select",{"onUpdate:modelValue":f[4]||(f[4]=g=>Je(a)?a.value=g:null),class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan"},[f[9]||(f[9]=d("option",{value:"",disabled:"",class:"text-retro-muted"},"Select remote",-1)),(v(!0),y(Se,null,ze(r.remotes,g=>(v(),y("option",{key:g,value:g},A(g),9,zw))),128))],512),[[ks,m(a)]])])):Y("",!0)])]),_:1},8,["visible","loading","error"]))}}),Ww={class:"text-retro-text text-sm font-mono mb-2"},qw={class:"text-retro-cyan"},jw={class:"space-y-3 mt-4"},Yw={class:"flex items-center gap-2 cursor-pointer"},Fw={key:0,class:"ml-6"},Uw=["value"],Gw=Ie({__name:"TagDeleteDialog",props:{visible:{type:Boolean},tagName:{},remotes:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q(!1),i=Q("origin");function o(){n("confirm",{deleteFromRemote:s.value,remote:s.value?i.value:void 0})}return Ve(()=>t.visible,a=>{a&&(s.value=!1,i.value=t.remotes.includes("origin")?"origin":t.remotes[0]??"origin")}),(a,l)=>(v(),ge(Et,{title:"Delete Tag",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Delete","confirm-danger":!0,onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ct(()=>[l[7]||(l[7]=d("div",{class:"mb-4 p-2 text-xs font-mono text-retro-yellow bg-retro-yellow/10 border border-retro-yellow/30 rounded"}," This action is permanent and cannot be undone. ",-1)),d("p",Ww,[l[3]||(l[3]=Xe(" Delete tag ",-1)),d("span",qw,A(r.tagName),1),l[4]||(l[4]=Xe("? ",-1))]),d("div",jw,[d("label",Yw,[je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>Je(s)?s.value=c:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(s)]]),l[5]||(l[5]=d("span",{class:"text-retro-muted text-sm"},"Also delete from remote",-1))]),m(s)?(v(),y("div",Fw,[l[6]||(l[6]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Remote",-1)),je(d("select",{"onUpdate:modelValue":l[1]||(l[1]=c=>Je(i)?i.value=c:null),class:"w-full px-2 py-1.5 text-sm font-mono bg-retro-panel border border-retro-border rounded text-retro-text focus:outline-none focus:border-retro-cyan"},[(v(!0),y(Se,null,ze(r.remotes,c=>(v(),y("option",{key:c,value:c},A(c),9,Uw))),128))],512),[[ks,m(i)]])])):Y("",!0)])]),_:1},8,["visible","loading","error"]))}}),Hw={class:"mb-4"},Kw={class:"text-retro-cyan text-sm font-mono"},Jw={class:"mb-4"},eS={class:"text-retro-text text-sm font-mono"},tS={class:"mb-4"},rS={class:"text-retro-text text-sm font-mono break-all select-all"},nS={class:"mb-4"},sS={class:"text-retro-text text-sm font-mono"},iS={class:"text-retro-muted"},oS={class:"mb-4"},aS={class:"text-retro-text text-sm font-mono"},lS={key:1,class:"mb-2"},cS={class:"p-2 text-sm font-mono text-retro-text bg-retro-panel border border-retro-border rounded whitespace-pre-wrap"},uS={key:1,class:"text-retro-muted text-sm font-mono text-center py-4"},hS=Ie({__name:"TagDetailDialog",props:{visible:{type:Boolean},tagName:{},tagDetail:{},loading:{type:Boolean,default:!1}},emits:["close"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),ge(Et,{title:"Tag Details",visible:r.visible,loading:r.loading,"confirm-label":"Close","cancel-label":"Close",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("close"))},{default:ct(()=>[d("div",Hw,[s[2]||(s[2]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Tag",-1)),d("p",Kw,A(r.tagName),1)]),r.tagDetail?(v(),y(Se,{key:0},[d("div",Jw,[s[3]||(s[3]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Type",-1)),d("p",eS,A(r.tagDetail.isAnnotated?"Annotated":"Lightweight"),1)]),d("div",tS,[s[4]||(s[4]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Hash",-1)),d("p",rS,A(r.tagDetail.hash),1)]),r.tagDetail.tagger?(v(),y(Se,{key:0},[d("div",nS,[s[5]||(s[5]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Tagger",-1)),d("p",sS,[Xe(A(r.tagDetail.tagger.name)+" ",1),d("span",iS,"<"+A(r.tagDetail.tagger.email)+">",1)])]),d("div",oS,[s[6]||(s[6]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Date",-1)),d("p",aS,A(r.tagDetail.tagger.date),1)])],64)):Y("",!0),r.tagDetail.message?(v(),y("div",lS,[s[7]||(s[7]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Message",-1)),d("div",cS,A(r.tagDetail.message),1)])):Y("",!0)],64)):r.loading?(v(),y("div",uS," Loading tag details... ")):Y("",!0)]),_:1},8,["visible","loading"]))}}),dS={class:"mb-4 p-3 bg-retro-panel border border-retro-border rounded"},fS={class:"text-sm font-mono text-retro-cyan"},mS={class:"mb-4"},pS={class:"flex items-start gap-2 cursor-pointer group"},gS=Ie({__name:"CreateBranchDialog",props:{visible:{type:Boolean},fromCommit:{},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e,n=Q(""),s=Q(!0),i=J(()=>n.value.trim().length>0);function o(){i.value&&t("confirm",{name:n.value.trim(),checkout:s.value})}function a(){n.value="",s.value=!0,t("close")}return(l,c)=>(v(),ge(Et,{title:"Create Branch",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Create Branch",onClose:a,onConfirm:o},{default:ct(()=>[d("div",dS,[c[2]||(c[2]=d("div",{class:"text-xs font-mono text-retro-muted mb-1"},"From",-1)),d("div",fS,A(r.fromCommit.slice(0,7)),1)]),d("div",mS,[c[3]||(c[3]=d("label",{class:"block text-xs font-mono text-retro-muted mb-1.5"},"Branch name",-1)),je(d("input",{"onUpdate:modelValue":c[0]||(c[0]=u=>Je(n)?n.value=u:null),type:"text",placeholder:"feature/my-branch",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan"},null,512),[[Zt,m(n)]])]),d("label",pS,[je(d("input",{"onUpdate:modelValue":c[1]||(c[1]=u=>Je(s)?s.value=u:null),type:"checkbox",class:"mt-0.5 accent-retro-cyan"},null,512),[[Or,m(s)]]),c[4]||(c[4]=d("div",null,[d("span",{class:"text-sm font-mono text-retro-text group-hover:text-retro-cyan transition-colors"}," Switch to new branch "),d("p",{class:"text-xs font-mono text-retro-muted mt-0.5"}," Checkout the branch after creating it ")],-1))])]),_:1},8,["visible","loading","error"]))}}),OS={class:"space-y-4"},vS={class:"flex items-center gap-2 cursor-pointer"},bS=Ie({__name:"StashDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q(""),i=Q(!1);function o(){n("confirm",{message:s.value.trim()||void 0,includeUntracked:i.value})}return Ve(()=>t.visible,a=>{a&&(s.value="",i.value=!1)}),(a,l)=>(v(),ge(Et,{title:"Stash Changes",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Stash",onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ct(()=>[l[5]||(l[5]=d("p",{class:"text-retro-text text-sm font-mono mb-4"}," Save uncommitted changes to the stash. ",-1)),d("div",OS,[d("div",null,[l[3]||(l[3]=d("label",{class:"block text-retro-muted text-xs font-mono mb-1"},"Message (optional)",-1)),je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>Je(s)?s.value=c:null),type:"text",placeholder:"Stash description...",class:"w-full px-2 py-1.5 text-sm font-mono bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted/50 focus:outline-none focus:border-retro-cyan"},null,512),[[Zt,m(s)]])]),d("label",vS,[je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>Je(i)?i.value=c:null),type:"checkbox",class:"accent-retro-cyan"},null,512),[[Or,m(i)]]),l[4]||(l[4]=d("span",{class:"text-retro-muted text-sm"},"Include untracked files",-1))])])]),_:1},8,["visible","loading","error"]))}}),xS={class:"space-y-3"},yS={class:"flex items-start gap-2 cursor-pointer"},kS={class:"flex items-start gap-2 cursor-pointer"},wS={key:0,class:"mt-4 p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},SS=Ie({__name:"ResetWorkingDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=r,n=e,s=Q("mixed"),i=J(()=>s.value==="hard");function o(){n("confirm",{mode:s.value})}return Ve(()=>t.visible,a=>{a&&(s.value="mixed")}),(a,l)=>(v(),ge(Et,{title:"Reset Working Directory",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Reset","confirm-danger":m(i),onClose:l[2]||(l[2]=c=>n("close")),onConfirm:o},{default:ct(()=>[l[5]||(l[5]=d("p",{class:"text-retro-text text-sm font-mono mb-4"}," Reset the working directory to HEAD. ",-1)),d("div",xS,[d("label",yS,[je(d("input",{"onUpdate:modelValue":l[0]||(l[0]=c=>Je(s)?s.value=c:null),type:"radio",value:"mixed",name:"reset-mode",class:"accent-retro-cyan mt-0.5"},null,512),[[Cc,m(s)]]),l[3]||(l[3]=d("div",null,[d("span",{class:"text-retro-text text-sm font-mono"},"Mixed"),d("p",{class:"text-retro-muted text-xs font-mono mt-0.5"}," Reset staging area, keep working directory ")],-1))]),d("label",kS,[je(d("input",{"onUpdate:modelValue":l[1]||(l[1]=c=>Je(s)?s.value=c:null),type:"radio",value:"hard",name:"reset-mode",class:"accent-retro-cyan mt-0.5"},null,512),[[Cc,m(s)]]),l[4]||(l[4]=d("div",null,[d("span",{class:"text-retro-text text-sm font-mono"},"Hard"),d("p",{class:"text-retro-muted text-xs font-mono mt-0.5"}," Reset staging area AND working directory (DESTRUCTIVE) ")],-1))])]),m(i)?(v(),y("div",wS," WARNING: Hard reset will permanently discard all uncommitted changes. This cannot be undone. ")):Y("",!0)]),_:1},8,["visible","loading","error","confirm-danger"]))}}),$S=Ie({__name:"CleanUntrackedDialog",props:{visible:{type:Boolean},loading:{type:Boolean,default:!1},error:{default:null}},emits:["close","confirm"],setup(r,{emit:e}){const t=e;return(n,s)=>(v(),ge(Et,{title:"Clean Untracked Files",visible:r.visible,loading:r.loading,error:r.error,"confirm-label":"Clean","confirm-danger":"",onClose:s[0]||(s[0]=i=>t("close")),onConfirm:s[1]||(s[1]=i=>t("confirm"))},{default:ct(()=>[...s[2]||(s[2]=[d("div",{class:"space-y-3"},[d("p",{class:"text-retro-text text-sm font-mono"}," Remove all untracked files and directories from the working tree. "),d("p",{class:"text-retro-muted text-xs font-mono"},[Xe(" This runs "),d("code",null,"git clean -fd"),Xe(" and cannot be undone. ")])],-1)])]),_:1},8,["visible","loading","error"]))}}),CS={class:"text-retro-muted text-sm"},QS={class:"text-retro-cyan font-mono"},PS={class:"space-y-3"},TS={class:"text-retro-muted text-sm"},MS={class:"text-retro-cyan font-mono"},AS={class:"space-y-3"},_S={class:"text-retro-muted text-sm"},RS={class:"text-retro-magenta font-mono"},BS={key:0,class:"fixed bottom-4 right-4 z-50 flex items-center gap-2 px-4 py-2.5 text-sm bg-retro-red/90 text-white rounded-lg shadow-lg max-w-sm",role:"alert"},ZS={class:"flex-1"},ES=Ie({__name:"GitGraphDialogs",props:{dialogs:{},store:{},remoteNames:{},copyFeedback:{}},setup(r){const e=r,{checkoutDialog:t,confirmCheckout:n,createBranchDialog:s,confirmCreateBranch:i,deleteBranchDialog:o,confirmDeleteBranch:a,renameDialog:l,confirmRenameBranch:c,mergeDialog:u,confirmMerge:h,rebaseDialog:f,confirmRebase:g,pushDialog:p,confirmPush:O,pullDialog:b,confirmPull:x,cherryPickDialog:k,confirmCherryPick:w,resetDialog:S,confirmReset:P,tagCreateDialog:X,confirmTagCreate:E,tagDeleteDialog:K,confirmTagDelete:le,tagDetailDialog:oe,stashDialog:N,confirmStash:I,stashBranchDialog:D,stashBranchInput:U,confirmStashBranch:z,resetWorkingDialog:V,confirmResetWorking:G,cleanUntrackedDialog:j,confirmCleanUntracked:ce}=e.dialogs;return(H,F)=>(v(),y(Se,null,[m(t).visible?(v(),ge(Et,{key:0,title:"Checkout",visible:m(t).visible,loading:m(t).loading,error:m(t).error,confirmLabel:"Checkout",onClose:F[0]||(F[0]=re=>m(t).visible=!1),onConfirm:m(n)},{default:ct(()=>[d("p",CS,[F[23]||(F[23]=Xe(" Are you sure you want to checkout ",-1)),d("span",QS,A(m(t).branchName),1),F[24]||(F[24]=Xe("? ",-1))])]),_:1},8,["visible","loading","error","onConfirm"])):Y("",!0),m(l).visible?(v(),ge(Et,{key:1,title:"Rename Branch",visible:m(l).visible,loading:m(l).loading,error:m(l).error,confirmLabel:"Rename",onClose:F[3]||(F[3]=re=>m(l).visible=!1),onConfirm:m(c)},{default:ct(()=>[d("div",PS,[d("p",TS,[F[25]||(F[25]=Xe(" Rename ",-1)),d("span",MS,A(m(l).branchName),1)]),je(d("input",{"onUpdate:modelValue":F[1]||(F[1]=re=>m(l).newName=re),type:"text",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",placeholder:"New branch name",onKeyup:F[2]||(F[2]=hs((...re)=>m(c)&&m(c)(...re),["enter"]))},null,544),[[Zt,m(l).newName]])])]),_:1},8,["visible","loading","error","onConfirm"])):Y("",!0),m(u).visible?(v(),ge(zk,{key:2,visible:m(u).visible,branchName:m(u).branchName,loading:m(u).loading,error:m(u).error,onClose:F[4]||(F[4]=re=>m(u).visible=!1),onConfirm:m(h)},null,8,["visible","branchName","loading","error","onConfirm"])):Y("",!0),m(o).visible?(v(),ge(Yk,{key:3,visible:m(o).visible,branchName:m(o).branchName,isLocal:m(o).isLocal,loading:m(o).loading,error:m(o).error,onClose:F[5]||(F[5]=re=>m(o).visible=!1),onConfirm:m(a)},null,8,["visible","branchName","isLocal","loading","error","onConfirm"])):Y("",!0),m(p).visible?(v(),ge(nw,{key:4,visible:m(p).visible,branchName:m(p).branchName,remotes:r.remoteNames,loading:m(p).loading,error:m(p).error,onClose:F[6]||(F[6]=re=>m(p).visible=!1),onConfirm:m(O)},null,8,["visible","branchName","remotes","loading","error","onConfirm"])):Y("",!0),m(b).visible?(v(),ge(uw,{key:5,visible:m(b).visible,branchName:m(b).branchName,remotes:r.remoteNames,loading:m(b).loading,error:m(b).error,onClose:F[7]||(F[7]=re=>m(b).visible=!1),onConfirm:m(x)},null,8,["visible","branchName","remotes","loading","error","onConfirm"])):Y("",!0),m(f).visible?(v(),ge(Ow,{key:6,visible:m(f).visible,branchName:r.store.currentBranch?.name||"HEAD",ontoBranch:m(f).branchName,loading:m(f).loading,error:m(f).error,onClose:F[8]||(F[8]=re=>m(f).visible=!1),onConfirm:m(g)},null,8,["visible","branchName","ontoBranch","loading","error","onConfirm"])):Y("",!0),m(k).visible?(v(),ge(Sw,{key:7,visible:m(k).visible,commitHash:m(k).commitHash,commitMessage:m(k).commitMessage,loading:m(k).loading,error:m(k).error,onClose:F[9]||(F[9]=re=>m(k).visible=!1),onConfirm:m(w)},null,8,["visible","commitHash","commitMessage","loading","error","onConfirm"])):Y("",!0),m(S).visible?(v(),ge(Aw,{key:8,visible:m(S).visible,commitHash:m(S).commitHash,commitMessage:m(S).commitMessage,loading:m(S).loading,error:m(S).error,onClose:F[10]||(F[10]=re=>m(S).visible=!1),onConfirm:m(P)},null,8,["visible","commitHash","commitMessage","loading","error","onConfirm"])):Y("",!0),m(X).visible?(v(),ge(Nw,{key:9,visible:m(X).visible,commitHash:m(X).commitHash,remotes:r.remoteNames,loading:m(X).loading,error:m(X).error,onClose:F[11]||(F[11]=re=>m(X).visible=!1),onConfirm:m(E)},null,8,["visible","commitHash","remotes","loading","error","onConfirm"])):Y("",!0),m(K).visible?(v(),ge(Gw,{key:10,visible:m(K).visible,tagName:m(K).tagName,remotes:r.remoteNames,loading:m(K).loading,error:m(K).error,onClose:F[12]||(F[12]=re=>m(K).visible=!1),onConfirm:m(le)},null,8,["visible","tagName","remotes","loading","error","onConfirm"])):Y("",!0),m(oe).visible?(v(),ge(hS,{key:11,visible:m(oe).visible,tagName:m(oe).tagName,tagDetail:m(oe).tagDetail,loading:m(oe).loading,onClose:F[13]||(F[13]=re=>m(oe).visible=!1)},null,8,["visible","tagName","tagDetail","loading"])):Y("",!0),m(s).visible?(v(),ge(gS,{key:12,visible:m(s).visible,fromCommit:m(s).fromCommit,loading:m(s).loading,error:m(s).error,onClose:F[14]||(F[14]=re=>m(s).visible=!1),onConfirm:m(i)},null,8,["visible","fromCommit","loading","error","onConfirm"])):Y("",!0),m(D).visible?(v(),ge(Et,{key:13,title:"Create Branch from Stash",visible:m(D).visible,loading:m(D).loading,error:m(D).error,confirmLabel:"Create Branch",onClose:F[17]||(F[17]=re=>m(D).visible=!1),onConfirm:F[18]||(F[18]=re=>m(z)(m(U)))},{default:ct(()=>[d("div",AS,[d("p",_S,[F[26]||(F[26]=Xe(" Create a new branch from ",-1)),d("span",RS,"stash@"+A("{")+A(m(D).stashIndex)+A("}"),1)]),je(d("input",{"onUpdate:modelValue":F[15]||(F[15]=re=>Je(U)?U.value=re:null),type:"text",class:"w-full px-3 py-2 text-sm bg-retro-panel border border-retro-border rounded text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan",placeholder:"Branch name",onKeyup:F[16]||(F[16]=hs(re=>m(z)(m(U)),["enter"]))},null,544),[[Zt,m(U)]])])]),_:1},8,["visible","loading","error"])):Y("",!0),m(N).visible?(v(),ge(bS,{key:14,visible:m(N).visible,loading:m(N).loading,error:m(N).error,onClose:F[19]||(F[19]=re=>m(N).visible=!1),onConfirm:m(I)},null,8,["visible","loading","error","onConfirm"])):Y("",!0),m(V).visible?(v(),ge(SS,{key:15,visible:m(V).visible,loading:m(V).loading,error:m(V).error,onClose:F[20]||(F[20]=re=>m(V).visible=!1),onConfirm:m(G)},null,8,["visible","loading","error","onConfirm"])):Y("",!0),m(j).visible?(v(),ge($S,{key:16,visible:m(j).visible,loading:m(j).loading,error:m(j).error,onClose:F[21]||(F[21]=re=>m(j).visible=!1),onConfirm:m(ce)},null,8,["visible","loading","error","onConfirm"])):Y("",!0),(v(),ge(Pr,{to:"body"},[ee(On,{name:"fade"},{default:ct(()=>[r.copyFeedback.visible?(v(),y("div",{key:0,class:"fixed z-50 px-3 py-1.5 text-sm bg-retro-green text-retro-dark rounded shadow-lg",style:tr({left:`${r.copyFeedback.x}px`,top:`${r.copyFeedback.y-40}px`})}," Copied! ",4)):Y("",!0)]),_:1})])),(v(),ge(Pr,{to:"body"},[ee(On,{name:"fade"},{default:ct(()=>[r.store.operationError?(v(),y("div",BS,[ee(m(En),{class:"w-4 h-4 flex-shrink-0"}),d("span",ZS,A(r.store.operationError),1),d("button",{class:"flex-shrink-0 p-0.5 hover:bg-white/20 rounded transition-colors",onClick:F[22]||(F[22]=re=>r.store.clearOperationError()),"aria-label":"Dismiss error"},[ee(m(Ct),{class:"w-3.5 h-3.5"})])])):Y("",!0)]),_:1})]))],64))}}),DS=ws(ES,[["__scopeId","data-v-c47c4487"]]),Iu=globalThis.setInterval,LS={class:"h-full flex flex-col bg-retro-dark",role:"region","aria-label":"Git Graph"},XS={key:0,class:"flex-1 flex flex-col items-center justify-center gap-3"},IS={key:1,class:"flex-1 flex flex-col items-center justify-center p-8 text-center"},VS={key:2,class:"flex-1 flex flex-col items-center justify-center p-8 text-center"},zS={class:"text-retro-red text-sm mb-4"},NS={key:3,class:"flex-1 flex items-center justify-center p-4"},WS={class:"flex-shrink-0 flex items-center gap-2 p-2 border-b border-retro-border"},qS={class:"relative"},jS={key:0,class:"absolute left-0 top-full mt-1 z-10 bg-retro-panel border border-retro-border rounded shadow-lg py-2 min-w-[200px]"},YS={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},FS=["checked"],US={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},GS=["checked"],HS={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},KS=["checked"],JS={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},e2=["checked"],t2={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},r2=["checked"],n2={class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},s2=["checked"],i2={class:"relative"},o2=["aria-expanded"],a2={key:0,class:"text-xs"},l2={key:0,class:"absolute right-0 top-full mt-1 z-10 bg-retro-panel border border-retro-border rounded shadow-lg py-1 min-w-[220px] max-h-[400px] overflow-auto"},c2=["checked","onChange"],u2={class:"text-sm text-retro-text truncate"},h2={key:0,class:"text-[10px] text-retro-cyan"},d2={class:"px-3 py-1 text-[10px] text-retro-orange font-semibold uppercase tracking-wider mt-1"},f2=["checked","onChange"],m2={class:"text-sm text-retro-text truncate"},p2={class:"relative"},g2={key:0,class:"absolute right-0 top-full mt-1 z-20"},O2=["title"],v2=5e3,b2=Ie({__name:"GitGraph",props:{workingDirectory:{},isActive:{type:Boolean,default:!0}},setup(r){const e=r,t=gl(),n=vr(),s=Sk(),i=Ck(t),o=Qk(t,i),{checkoutDialog:a,confirmCheckout:l,createBranchDialog:c,confirmCreateBranch:u,deleteBranchDialog:h,confirmDeleteBranch:f,renameDialog:g,confirmRenameBranch:p,mergeDialog:O,confirmMerge:b,rebaseDialog:x,confirmRebase:k,pushDialog:w,confirmPush:S,pullDialog:P,confirmPull:X,cherryPickDialog:E,confirmCherryPick:K,resetDialog:le,confirmReset:oe,tagCreateDialog:N,confirmTagCreate:I,tagDeleteDialog:D,confirmTagDelete:U,tagDetailDialog:z,stashDialog:V,confirmStash:G,stashBranchDialog:j,stashBranchInput:ce,confirmStashBranch:H,resetWorkingDialog:F,confirmResetWorking:re,cleanUntrackedDialog:Oe,confirmCleanUntracked:ve,isAnyDialogOpen:Ce}=i,{copyFeedback:Me,branchMenu:Ue,handleBranchContextMenu:Ye,closeBranchMenu:M,handleBranchCheckout:T,handleBranchRename:R,handleBranchDelete:Z,handleBranchMerge:be,handleBranchRebase:Qe,handleBranchPush:te,handleBranchPull:se,handleBranchFetch:ye,handleBranchCopyName:q,handleBranchCreateBranch:xe,commitMenu:Pe,handleCommitContextMenu:rt,closeCommitMenu:At,handleCommitAddTag:sr,handleCommitCreateBranch:on,handleCommitCheckout:xr,handleCommitCherryPick:qn,handleCommitRevert:an,handleCommitMergeInto:jn,handleCommitReset:ln,handleCommitCopyHash:Sn,handleCommitCopySubject:Lt,tagMenu:qt,handleTagContextMenu:de,closeTagMenu:ke,handleTagViewDetails:Re,handleTagDelete:We,handleTagPush:Fe,handleTagCopyName:wt,uncommittedMenu:ot,closeUncommittedMenu:Ft,handleUncommittedStash:ir,handleUncommittedReset:yr,handleUncommittedClean:Yn,stashMenu:Xr,handleStashContextMenu:di,closeStashMenu:fi,handleStashApply:mi,handleStashPop:pi,handleStashDrop:gi,handleStashCreateBranch:Oi,handleStashCopyName:vi,handleStashCopyHash:bi}=o,xi=J(()=>{const Ze=n.activeConversation?.worktreeBranch;return Ze?[Ze]:[]}),yi=J(()=>{const Ze=[],ue=t.selectedFeatureId;ue&&Ze.push(ue);const C=t.conversationBranch;return C&&!Ze.includes(C)&&Ze.push(C),Ze});Ve(()=>[n.activeConversation?.worktreeBranch,n.activeConversation?.baseBranch],([Ze,ue])=>{t.setConversationBranch(Ze??null,ue??null)},{immediate:!0});const Xt=J(()=>{const Ze=t.previewBranch;return Ze?[Ze]:[]});Ve(()=>[n.previewingConversation?.worktreeBranch,n.previewingConversation?.baseBranch],([Ze,ue])=>{t.setPreviewBranch(Ze??null,ue??null)},{immediate:!0});const or=J(()=>id([{branch:t.previewBranch,mergeBase:t.previewMergeBase}])),Ss=J(()=>id([{branch:t.selectedFeatureId,mergeBase:t.featureMergeBase},{branch:t.conversationBranch,mergeBase:t.conversationMergeBase}])),cn=J(()=>t.remotes.map(Ze=>Ze.name)),$n=Q(null);Ve(()=>e.workingDirectory,async Ze=>{if(Ze){await t.loadGitGraph(Ze);const ue=n.previewingConversation?.worktreeBranch;ue&&await t.setPreviewBranch(ue,n.previewingConversation?.baseBranch??null);const C=n.activeConversation?.worktreeBranch;C&&await t.setConversationBranch(C,n.activeConversation?.baseBranch??null)}},{immediate:!0}),Ve(()=>e.isActive,Ze=>{Ze&&t.commits.length>0&&!t.error?s.startPolling(e.workingDirectory):s.stopPolling()},{immediate:!0}),Ve(()=>t.commits.length,Ze=>{Ze>0&&e.isActive&&!t.error&&s.startPolling(e.workingDirectory)}),Ve(()=>$n.value,Ze=>{Ze&&s.setScrollCallbacks({getScrollPosition:()=>Ze.getScrollPosition(),setScrollPosition:ue=>Ze.setScrollPosition(ue)})}),$t(()=>{s.cleanup(),t.reset()});const $s=J(()=>t.error?.includes("Not a Git repository")),Cn=Q(Date.now());let un=null;const ki=()=>{un||(un=Iu(()=>{Cn.value=Date.now()},v2))},Cs=()=>{un&&(clearInterval(un),un=null)};gt(()=>{Ve(()=>e.isActive,Ze=>{Ze?(Cn.value=Date.now(),ki()):Cs()},{immediate:!0})}),$t(()=>{Cs()});const Qn=J(()=>{const Ze=t.lastRefreshTime;if(!Ze)return null;const ue=Math.floor((Cn.value-Ze)/1e3);return t.isRefreshing?"Syncing...":ue<5?"Just now":ue<60?`${ue}s ago`:`${Math.floor(ue/60)}m ago`}),vt=Q(!1),_r=Q(!1),Fn=Q(null);function wi(){vt.value=!0,zt(()=>Fn.value?.focus())}function Un(){vt.value=!1,t.setSearchQuery("")}function Qs(Ze){t.setSearchQuery(Ze)}const Ps=$k({onScrollToHead:()=>{const Ze=t.commits.find(ue=>ue.isHead);Ze&&t.selectCommit(Ze)},onEscape:()=>{Ir.value?Ir.value=!1:_r.value?_r.value=!1:ar.value?ar.value=!1:vt.value?Un():t.isComparing?t.clearComparison():(t.selectedCommit||t.isUncommittedChangesSelected)&&t.clearSelection()}});gt(()=>{Ps.start()}),$t(()=>{Ps.stop()});const Ir=Q(!1),ar=Q(!1);async function Gn(){await t.fetchAll(!0)}async function Si(Ze){await t.addRemote(Ze.name,Ze.url)}async function Vr(Ze){await t.editRemote(Ze.name,Ze.newUrl)}async function $i(Ze){await t.deleteRemote(Ze)}const Hn=J(()=>{const Ze=[],ue={};for(const C of t.branches)if(t.localBranchNames.has(C.name))Ze.push(C);else{const B=C.name.indexOf("/");if(B>0){const _=C.name.substring(0,B);ue[_]||(ue[_]=[]),ue[_].push(C)}else Ze.push(C)}return{local:Ze,remotes:ue}});Ve(Ce,Ze=>{Ze?t.setActiveDialog({type:"generic",props:{}}):t.clearActiveDialog()});function Kn(Ze){t.selectedCommit?t.selectComparisonCommit(Ze):t.selectCommit(Ze)}function Ts(Ze){t.navigateToCommit(Ze)}return(Ze,ue)=>{const C=Yv,B=lb,_=Bb,L=tx,ae=vy,fe=Vy,he=Gy,me=Hy,nt=Ky,pt=Jy,Ot=ek;return v(),y("div",LS,[m(t).loading&&m(t).commits.length===0?(v(),y("div",XS,[...ue[20]||(ue[20]=[d("div",{class:"w-6 h-6 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),d("div",{class:"text-retro-muted text-sm"},"Loading git history...",-1)])])):m($s)?(v(),y("div",IS,[ee(m(En),{class:"w-12 h-12 text-retro-yellow mb-4"}),ue[21]||(ue[21]=d("h3",{class:"text-retro-text font-semibold mb-2"},"Not a Git Repository",-1)),ue[22]||(ue[22]=d("p",{class:"text-retro-muted text-sm max-w-xs"},[Xe(" This directory is not initialized as a Git repository. Run "),d("code",{class:"text-retro-cyan"},"git init"),Xe(" to get started. ")],-1))])):m(t).error?(v(),y("div",VS,[ee(m(En),{class:"w-10 h-10 text-retro-red mb-3"}),d("p",zS,A(m(t).error),1),d("button",{class:"flex items-center gap-2 px-3 py-1.5 text-sm text-retro-text border border-retro-border rounded hover:border-retro-cyan hover:text-retro-cyan transition-colors",onClick:ue[0]||(ue[0]=et=>m(t).loadGitGraph(e.workingDirectory))},[ee(m(gs),{class:"w-4 h-4"}),ue[23]||(ue[23]=Xe(" Retry ",-1))])])):m(t).commits.length===0?(v(),y("div",NS,[...ue[24]||(ue[24]=[d("div",{class:"text-retro-muted text-center"},[d("p",null,"No commits found in this repository.")],-1)])])):(v(),y(Se,{key:4},[m(vt)?(v(),ge(C,{key:0,ref_key:"findWidgetRef",ref:Fn,resultCount:m(t).searchResultHashes.length,currentIndex:m(t).searchResultIndex,onSearch:Qs,onNext:m(t).nextSearchResult,onPrev:m(t).prevSearchResult,onClose:Un},null,8,["resultCount","currentIndex","onNext","onPrev"])):Y("",!0),d("div",WS,[d("button",{class:Be(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(vt)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Find",title:"Find",onClick:ue[1]||(ue[1]=et=>m(vt)?Un():wi())},[ee(m(fs),{class:"w-4 h-4"})],2),d("div",qS,[d("button",{class:Be(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(Ir)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Graph settings",title:"Settings",onClick:ue[2]||(ue[2]=et=>Ir.value=!m(Ir))},[ee(m(fv),{class:"w-4 h-4"})],2),m(Ir)?(v(),y("div",jS,[ue[31]||(ue[31]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mb-1"}," Graph Style ",-1)),d("label",YS,[d("input",{type:"radio",name:"graphStyle",value:"rounded",checked:m(t).graphStyle==="rounded",class:"accent-retro-cyan",onChange:ue[3]||(ue[3]=et=>m(t).setGraphStyle("rounded"))},null,40,FS),ue[25]||(ue[25]=d("span",{class:"text-sm text-retro-text"},"Rounded",-1))]),d("label",US,[d("input",{type:"radio",name:"graphStyle",value:"angular",checked:m(t).graphStyle==="angular",class:"accent-retro-cyan",onChange:ue[4]||(ue[4]=et=>m(t).setGraphStyle("angular"))},null,40,GS),ue[26]||(ue[26]=d("span",{class:"text-sm text-retro-text"},"Angular",-1))]),ue[32]||(ue[32]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mt-2 mb-1"}," Display ",-1)),d("label",HS,[d("input",{type:"checkbox",checked:m(t).muteNonAncestral,class:"accent-retro-cyan",onChange:ue[5]||(ue[5]=et=>m(t).toggleMuteNonAncestral())},null,40,KS),ue[27]||(ue[27]=d("span",{class:"text-sm text-retro-text"},"Mute non-ancestral",-1))]),ue[33]||(ue[33]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border mt-2 mb-1"}," Columns ",-1)),d("label",JS,[d("input",{type:"checkbox",checked:m(t).columnVisibility.commit!==!1,class:"accent-retro-cyan",onChange:ue[6]||(ue[6]=et=>m(t).toggleColumnVisibility("commit"))},null,40,e2),ue[28]||(ue[28]=d("span",{class:"text-sm text-retro-text"},"Hash",-1))]),d("label",t2,[d("input",{type:"checkbox",checked:m(t).columnVisibility.author!==!1,class:"accent-retro-cyan",onChange:ue[7]||(ue[7]=et=>m(t).toggleColumnVisibility("author"))},null,40,r2),ue[29]||(ue[29]=d("span",{class:"text-sm text-retro-text"},"Author",-1))]),d("label",n2,[d("input",{type:"checkbox",checked:m(t).columnVisibility.date!==!1,class:"accent-retro-cyan",onChange:ue[8]||(ue[8]=et=>m(t).toggleColumnVisibility("date"))},null,40,s2),ue[30]||(ue[30]=d("span",{class:"text-sm text-retro-text"},"Date",-1))])])):Y("",!0)]),ue[36]||(ue[36]=d("span",{class:"flex-1"},null,-1)),d("div",i2,[d("button",{class:Be(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(_r)||m(t).filteredBranches.length>0?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Filter by branch","aria-expanded":m(_r),onClick:ue[9]||(ue[9]=et=>_r.value=!m(_r))},[ee(m(_v),{class:"w-4 h-4"}),m(t).filteredBranches.length>0?(v(),y("span",a2," ("+A(m(t).filteredBranches.length)+") ",1)):Y("",!0)],10,o2),m(_r)?(v(),y("div",l2,[ue[35]||(ue[35]=d("div",{class:"px-3 py-1 text-xs text-retro-muted border-b border-retro-border"}," Filter by Branch ",-1)),m(t).filteredBranches.length>0?(v(),y("button",{key:0,class:"w-full text-left px-3 py-1.5 text-sm text-retro-cyan hover:bg-retro-cyan/10",onClick:ue[10]||(ue[10]=et=>m(t).clearFilters())}," Clear All Filters ")):Y("",!0),m(Hn).local.length>0?(v(),y(Se,{key:1},[ue[34]||(ue[34]=d("div",{class:"px-3 py-1 text-[10px] text-retro-green font-semibold uppercase tracking-wider mt-1"}," Local ",-1)),(v(!0),y(Se,null,ze(m(Hn).local,et=>(v(),y("label",{key:et.name,class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},[d("input",{type:"checkbox",checked:m(t).filteredBranches.includes(et.name),class:"accent-retro-cyan",onChange:lr=>m(t).toggleBranchFilter(et.name)},null,40,c2),d("span",u2,A(et.name),1),et.isHead?(v(),y("span",h2,"(HEAD)")):Y("",!0)]))),128))],64)):Y("",!0),(v(!0),y(Se,null,ze(m(Hn).remotes,(et,lr)=>(v(),y(Se,{key:lr},[d("div",d2,A(lr),1),(v(!0),y(Se,null,ze(et,Ms=>(v(),y("label",{key:Ms.name,class:"flex items-center gap-2 px-3 py-1 hover:bg-retro-panel/50 cursor-pointer"},[d("input",{type:"checkbox",checked:m(t).filteredBranches.includes(Ms.name),class:"accent-retro-cyan",onChange:Nh=>m(t).toggleBranchFilter(Ms.name)},null,40,f2),d("span",m2,A(Ms.name),1)]))),128))],64))),128))])):Y("",!0)]),d("button",{class:Be(["flex items-center gap-1 px-2 py-1.5 text-sm border border-retro-border text-retro-muted rounded hover:text-retro-text hover:border-retro-text transition-colors",{"animate-spin":m(t).isRefreshing}]),"aria-label":"Refresh",title:"Refresh",onClick:ue[11]||(ue[11]=et=>m(t).loadGitGraph(e.workingDirectory))},[ee(m(gs),{class:"w-4 h-4"})],2),d("button",{class:"flex items-center gap-1 px-2 py-1.5 text-sm border border-retro-border text-retro-muted rounded hover:text-retro-text hover:border-retro-text transition-colors","aria-label":"Fetch all remotes",title:"Fetch All",onClick:Gn},[ee(m(dp),{class:"w-4 h-4"})]),d("div",p2,[d("button",{class:Be(["flex items-center gap-1 px-2 py-1.5 text-sm border rounded transition-colors",m(ar)?"border-retro-cyan text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text"]),"aria-label":"Manage remotes",title:"Remotes",onClick:ue[12]||(ue[12]=et=>ar.value=!m(ar))},[ee(m(Pc),{class:"w-4 h-4"})],2),m(ar)?(v(),y("div",g2,[ee(B,{remotes:m(t).remotes,onAdd:Si,onEdit:Vr,onDelete:$i,onClose:ue[13]||(ue[13]=et=>ar.value=!1)},null,8,["remotes"])])):Y("",!0)]),m(Qn)&&e.isActive?(v(),y("div",{key:0,class:Be(["flex items-center text-[10px] text-retro-muted",{"text-retro-cyan":m(t).isRefreshing}]),title:m(t).lastRefreshTime?`Last checked: ${new Date(m(t).lastRefreshTime).toLocaleTimeString()}`:"","aria-live":"polite","aria-atomic":"true"},[d("span",{class:Be(["inline-block w-1.5 h-1.5 rounded-full mr-1",m(t).isRefreshing?"bg-retro-cyan animate-pulse":"bg-retro-muted/50"]),"aria-hidden":"true"},null,2),Xe(" "+A(m(Qn)),1)],10,O2)):Y("",!0)]),d("div",{class:Be(["flex-1 min-h-0 overflow-hidden",{"max-h-[50%]":m(t).selectedCommit||m(t).isUncommittedChangesSelected}])},[ee(_,{ref_key:"commitListRef",ref:$n,commits:m(t).filteredCommits,stashes:m(t).stashes,selectedCommit:m(t).selectedCommit,hasMore:m(t).hasMore,loading:m(t).loading,loadingMore:m(t).loadingMore,searchQuery:m(t).searchQuery,uncommittedChangesCount:m(t).uncommittedChangesCount,isUncommittedChangesSelected:m(t).isUncommittedChangesSelected,highlightBranches:m(xi),featureHighlightBranches:m(yi),featureMergeBases:m(Ss),previewHighlightBranches:m(Xt),previewMergeBases:m(or),currentBranchName:m(t).currentBranch?.name,localBranchNames:m(t).localBranchNames,graphStyle:m(t).graphStyle,muteNonAncestral:m(t).muteNonAncestral,columnVisibility:m(t).columnVisibility,onSelect:m(t).selectCommit,onLoadMore:m(t).loadMoreCommits,onBranchContextMenu:m(Ye),onCommitContextMenu:m(rt),onTagContextMenu:m(de),onStashContextMenu:m(di),onCompareSelect:Kn,onSelectUncommittedChanges:m(t).selectUncommittedChanges,onScrollStart:m(s).startInteraction,onScrollEnd:m(s).endInteraction},null,8,["commits","stashes","selectedCommit","hasMore","loading","loadingMore","searchQuery","uncommittedChangesCount","isUncommittedChangesSelected","highlightBranches","featureHighlightBranches","featureMergeBases","previewHighlightBranches","previewMergeBases","currentBranchName","localBranchNames","graphStyle","muteNonAncestral","columnVisibility","onSelect","onLoadMore","onBranchContextMenu","onCommitContextMenu","onTagContextMenu","onStashContextMenu","onSelectUncommittedChanges","onScrollStart","onScrollEnd"])],2),m(t).isComparing&&m(t).selectedCommit&&m(t).comparisonCommit?(v(),ge(L,{key:1,fromCommit:m(t).comparisonCommit,toCommit:m(t).selectedCommit,files:m(t).comparisonFiles,stats:m(t).comparisonStats,loading:m(t).comparisonLoading,onClose:m(t).clearComparison},null,8,["fromCommit","toCommit","files","stats","loading","onClose"])):m(t).selectedCommit?(v(),ge(ae,{key:2,commit:m(t).selectedCommit,files:m(t).selectedCommitFiles,stats:m(t).selectedCommitStats,loading:m(t).isLoadingDetails,detailPosition:m(t).detailViewPosition,onClose:m(t).clearSelection,onNavigateToCommit:Ts,onTogglePosition:m(t).toggleDetailViewPosition,onOpenFileDiff:ue[14]||(ue[14]=et=>m(t).selectedCommit&&m(t).openFileDiff(m(t).selectedCommit.hash,et))},null,8,["commit","files","stats","loading","detailPosition","onClose","onTogglePosition"])):Y("",!0),m(t).isUncommittedChangesSelected?(v(),ge(fe,{key:3,stagedFiles:m(t).stagedFiles,unstagedFiles:m(t).unstagedFiles,isStaging:m(t).isStaging,isCommitting:m(t).isCommitting,onClose:m(t).clearSelection,onStageFiles:ue[15]||(ue[15]=et=>m(t).stageFiles(et)),onUnstageFiles:ue[16]||(ue[16]=et=>m(t).unstageFiles(et)),onStageAll:ue[17]||(ue[17]=()=>m(t).stageFiles([])),onUnstageAll:ue[18]||(ue[18]=()=>m(t).unstageFiles([])),onCommit:ue[19]||(ue[19]=et=>m(t).commitChanges(et))},null,8,["stagedFiles","unstagedFiles","isStaging","isCommitting","onClose"])):Y("",!0)],64)),m(Ue).visible?(v(),ge(he,{key:5,branchName:m(Ue).branch,isCurrentBranch:m(Ue).isCurrentBranch,isLocal:m(Ue).isLocal,x:m(Ue).x,y:m(Ue).y,onClose:m(M),onCheckout:m(T),onCreateBranch:m(xe),onDeleteBranch:m(Z),onRename:m(R),onMerge:m(be),onRebase:m(Qe),onPush:m(te),onPull:m(se),onFetch:m(ye),onCopyName:m(q)},null,8,["branchName","isCurrentBranch","isLocal","x","y","onClose","onCheckout","onCreateBranch","onDeleteBranch","onRename","onMerge","onRebase","onPush","onPull","onFetch","onCopyName"])):Y("",!0),m(Pe).visible&&m(Pe).commit?(v(),ge(me,{key:6,commit:m(Pe).commit,x:m(Pe).x,y:m(Pe).y,onClose:m(At),onAddTag:m(sr),onCreateBranch:m(on),onCheckout:m(xr),onCherryPick:m(qn),onRevert:m(an),onMergeInto:m(jn),onReset:m(ln),onCopyHash:m(Sn),onCopySubject:m(Lt)},null,8,["commit","x","y","onClose","onAddTag","onCreateBranch","onCheckout","onCherryPick","onRevert","onMergeInto","onReset","onCopyHash","onCopySubject"])):Y("",!0),m(qt).visible?(v(),ge(nt,{key:7,tagName:m(qt).tag,x:m(qt).x,y:m(qt).y,onClose:m(ke),onViewDetails:m(Re),onDeleteTag:m(We),onPushTag:m(Fe),onCopyName:m(wt)},null,8,["tagName","x","y","onClose","onViewDetails","onDeleteTag","onPushTag","onCopyName"])):Y("",!0),m(Xr).visible&&m(Xr).stash?(v(),ge(pt,{key:8,stashIndex:m(Xr).stash.index,stashMessage:m(Xr).stash.message,x:m(Xr).x,y:m(Xr).y,onClose:m(fi),onApply:m(mi),onPop:m(pi),onDrop:m(gi),onCreateBranch:m(Oi),onCopyName:m(vi),onCopyHash:m(bi)},null,8,["stashIndex","stashMessage","x","y","onClose","onApply","onPop","onDrop","onCreateBranch","onCopyName","onCopyHash"])):Y("",!0),m(ot).visible?(v(),ge(Ot,{key:9,x:m(ot).x,y:m(ot).y,onClose:m(Ft),onStash:m(ir),onReset:m(yr),onClean:m(Yn)},null,8,["x","y","onClose","onStash","onReset","onClean"])):Y("",!0),ee(DS,{dialogs:m(i),store:m(t),remoteNames:m(cn),copyFeedback:m(Me)},null,8,["dialogs","store","remoteNames","copyFeedback"])])}}}),x2=ws(b2,[["__scopeId","data-v-e2b31aba"]]),ld=W1("/app-logo.svg"),y2={class:"flex items-start justify-between gap-2"},k2={class:"flex-1 min-w-0"},w2={class:"flex items-center gap-2"},S2={class:"font-mono text-sm text-retro-text truncate"},$2={class:"text-xs font-mono text-retro-muted mt-1 truncate"},C2={class:"flex items-center gap-1 flex-shrink-0"},Q2={key:0,class:"inline-flex items-center gap-1 text-[10px] font-mono text-retro-red",title:"Critical traceability gaps"},P2={key:1,class:"inline-flex items-center gap-1 text-[10px] font-mono text-retro-yellow",title:"Major traceability gaps"},T2={key:2,class:"text-[10px] font-mono text-retro-muted mr-1",title:"Completed tasks / total tasks"},M2={key:3,class:"w-2 h-2 rounded-full bg-retro-green",title:"spec"},A2={key:4,class:"w-2 h-2 rounded-full bg-retro-cyan",title:"plan"},_2={key:5,class:"w-2 h-2 rounded-full bg-retro-yellow",title:"tasks"},R2={class:"flex flex-wrap items-center justify-between gap-1 mt-2"},B2={key:0,class:"flex items-center gap-1"},Z2=["title","disabled","onClick"],E2=Ie({__name:"FeatureCard",props:{feature:{},skills:{},isActive:{type:Boolean},criticalAlerts:{},majorAlerts:{}},emits:["select","cascade","openChat","skill"],setup(r,{emit:e}){const t={DocumentCheckIcon:Cv,PuzzlePieceIcon:td,DocumentMagnifyingGlassIcon:Pv,WrenchScrewdriverIcon:Xv,SparklesIcon:Yi,BeakerIcon:vv,ShieldCheckIcon:gp,CommandLineIcon:$v,CpuChipIcon:nv,LightBulbIcon:Zv},n=r,s=e,i=vr();function o(f){return t[f]||td}function a(f){return f.prerequisites.every(g=>n.feature.files.some(p=>p.filename===g))}function l(f){return f.prerequisites.filter(g=>!n.feature.files.some(p=>p.filename===g))}function c(f){return a(f)?`${f.name} (Shift+click: new conversation)`:`Requires: ${l(f).join(", ")}`}const u=J(()=>{const f=i.findConversationByFeature(n.feature.id);return f?i.isConversationStreaming(f.id):!1}),h=J(()=>n.isActive?["border-retro-cyan shadow-retro","feature-card-active","dark:bg-gradient-to-br dark:from-retro-cyan/10 dark:via-retro-panel dark:to-retro-magenta/5"]:["border-retro-border","feature-card-light","hover:border-retro-muted","dark:bg-gradient-to-br","dark:from-retro-panel dark:via-retro-panel dark:to-retro-cyan/5","dark:hover:from-retro-cyan/5 dark:hover:via-retro-panel dark:hover:to-retro-magenta/5"]);return(f,g)=>(v(),y("button",{type:"button",class:Be(["w-full p-3 text-left rounded-lg border transition-all duration-200 group",m(h)]),onClick:g[5]||(g[5]=p=>s("select",r.feature.id))},[d("div",y2,[d("div",k2,[d("div",w2,[ee(m(Os),{class:Be(["h-4 w-4 flex-shrink-0 transition-colors duration-200",r.isActive?"text-retro-cyan":"text-retro-muted group-hover:text-retro-cyan"])},null,8,["class"]),d("span",S2,A(r.feature.id),1)]),d("p",$2,A(r.feature.name),1)]),d("div",C2,[r.criticalAlerts>0?(v(),y("span",Q2,[g[6]||(g[6]=d("span",{class:"w-1.5 h-1.5 rounded-full bg-retro-red"},null,-1)),Xe(" "+A(r.criticalAlerts),1)])):Y("",!0),r.majorAlerts>0?(v(),y("span",P2,[g[7]||(g[7]=d("span",{class:"w-1.5 h-1.5 rounded-full bg-retro-yellow"},null,-1)),Xe(" "+A(r.majorAlerts),1)])):Y("",!0),r.feature.hasTasks?(v(),y("span",T2,A(r.feature.completedTasks)+"/"+A(r.feature.totalTasks),1)):Y("",!0),r.feature.hasSpec?(v(),y("span",M2)):Y("",!0),r.feature.hasPlan?(v(),y("span",A2)):Y("",!0),r.feature.hasTasks?(v(),y("span",_2)):Y("",!0)])]),d("div",R2,[r.feature.hasSpec?(v(),y("div",B2,[d("button",{type:"button",class:"flex items-center justify-center p-1 bg-retro-cyan/20 text-retro-cyan rounded hover:bg-retro-cyan/30 transition-colors",title:"Clarify spec (Shift+click: new conversation)",onClick:g[0]||(g[0]=kr(p=>s("cascade",p,r.feature.id,"clarify"),["stop"]))},[ee(m(Du),{class:"h-3.5 w-3.5"})]),d("button",{type:"button",class:"flex items-center justify-center p-1 bg-retro-cyan/20 text-retro-cyan rounded hover:bg-retro-cyan/30 transition-colors",title:"Plan → Tasks → Implement (Shift+click: new conversation)",onClick:g[1]||(g[1]=kr(p=>s("cascade",p,r.feature.id,"plan"),["stop"]))},[ee(m(Eu),{class:"h-3.5 w-3.5"})]),r.feature.hasPlan?(v(),y("button",{key:0,type:"button",class:"flex items-center justify-center p-1 bg-retro-yellow/20 text-retro-yellow rounded hover:bg-retro-yellow/30 transition-colors",title:"Tasks → Implement (Shift+click: new conversation)",onClick:g[2]||(g[2]=kr(p=>s("cascade",p,r.feature.id,"tasks"),["stop"]))},[ee(m(fp),{class:"h-3.5 w-3.5"})])):Y("",!0),r.feature.hasTasks?(v(),y("button",{key:1,type:"button",class:"flex items-center justify-center p-1 bg-retro-magenta/20 text-retro-magenta rounded hover:bg-retro-magenta/30 transition-colors",title:"Implement (Shift+click: new conversation)",onClick:g[3]||(g[3]=kr(p=>s("cascade",p,r.feature.id,"implement"),["stop"]))},[ee(m(Lv),{class:"h-3.5 w-3.5"})])):Y("",!0),r.skills.length>0?(v(),y(Se,{key:2},[g[8]||(g[8]=d("div",{class:"w-px h-4 bg-retro-border mx-0.5"},null,-1)),(v(!0),y(Se,null,ze(r.skills,p=>(v(),y("button",{key:p.id,type:"button",class:Be(["flex items-center justify-center p-1 rounded transition-colors",[a(p)&&!m(u)?"bg-retro-pink/20 text-retro-pink hover:bg-retro-pink/30":"bg-retro-subtle/10 text-retro-subtle cursor-not-allowed",m(u)?"animate-pulse":""]]),title:c(p),disabled:!a(p)||m(u),onClick:kr(O=>s("skill",O,r.feature.id,p.id),["stop"])},[(v(),ge(ps(o(p.icon)),{class:"h-3.5 w-3.5"}))],10,Z2))),128))],64)):Y("",!0)])):Y("",!0),r.feature.hasSpec?(v(),y("button",{key:1,type:"button",class:"flex items-center justify-center p-1 bg-retro-green/20 text-retro-green rounded hover:bg-retro-green/30 transition-colors",title:"Open new chat linked to this spec",onClick:g[4]||(g[4]=kr(p=>s("openChat",p,r.feature.id),["stop"]))},[ee(m(yv),{class:"h-3.5 w-3.5"})])):Y("",!0)])],2))}});let Tc=[],xp=[];(()=>{let r="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<r.length;e++)(e%2?xp:Tc).push(t=t+r[e])})();function D2(r){if(r<768)return!1;for(let e=0,t=Tc.length;;){let n=e+t>>1;if(r<Tc[n])t=n;else if(r>=xp[n])e=n+1;else return!0;if(e==t)return!1}}function cd(r){return r>=127462&&r<=127487}const ud=8205;function L2(r,e,t=!0,n=!0){return(t?yp:X2)(r,e,n)}function yp(r,e,t){if(e==r.length)return e;e&&kp(r.charCodeAt(e))&&wp(r.charCodeAt(e-1))&&e--;let n=Rl(r,e);for(e+=hd(n);e<r.length;){let s=Rl(r,e);if(n==ud||s==ud||t&&D2(s))e+=hd(s),n=s;else if(cd(s)){let i=0,o=e-2;for(;o>=0&&cd(Rl(r,o));)i++,o-=2;if(i%2==0)break;e+=2}else break}return e}function X2(r,e,t){for(;e>0;){let n=yp(r,e-2,t);if(n<e)return n;e--}return 0}function Rl(r,e){let t=r.charCodeAt(e);if(!wp(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return kp(n)?(t-55296<<10)+(n-56320)+65536:t}function kp(r){return r>=56320&&r<57344}function wp(r){return r>=55296&&r<56320}function hd(r){return r<65536?1:2}class tt{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Gs(this,e,t);let s=[];return this.decompose(0,e,s,2),n.length&&n.decompose(0,n.length,s,3),this.decompose(t,this.length,s,1),Fr.from(s,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Gs(this,e,t);let n=[];return this.decompose(e,t,n,0),Fr.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),s=new Xi(this),i=new Xi(e);for(let o=t,a=t;;){if(s.next(o),i.next(o),o=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(a+=s.value.length,s.done||a>=n)return!0}}iter(e=1){return new Xi(this,e)}iterRange(e,t=this.length){return new Sp(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;n=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new $p(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?tt.empty:e.length<=32?new bt(e):Fr.from(bt.split(e,[]))}}class bt extends tt{constructor(e,t=I2(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,s){for(let i=0;;i++){let o=this.text[i],a=s+o.length;if((t?n:a)>=e)return new V2(s,a,n,o);s=a+1,n++}}decompose(e,t,n,s){let i=e<=0&&t>=this.length?this:new bt(dd(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=n.pop(),a=va(i.text,o.text.slice(),0,i.length);if(a.length<=32)n.push(new bt(a,o.length+i.length));else{let l=a.length>>1;n.push(new bt(a.slice(0,l)),new bt(a.slice(l)))}}else n.push(i)}replace(e,t,n){if(!(n instanceof bt))return super.replace(e,t,n);[e,t]=Gs(this,e,t);let s=va(this.text,va(n.text,dd(this.text,0,e)),t),i=this.length+n.length-(t-e);return s.length<=32?new bt(s,i):Fr.from(bt.split(s,[]),i)}sliceString(e,t=this.length,n=`
|
|
12
|
-
`){[e,t]=Gs(this,e,t);let s="";for(let i=0,o=0;i<=t&&o<this.text.length;o++){let a=this.text[o],l=i+a.length;i>e&&o&&(s+=n),e<l&&t>i&&(s+=a.slice(Math.max(0,e-i),t-i)),i=l+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let n=[],s=-1;for(let i of e)n.push(i),s+=i.length+1,n.length==32&&(t.push(new bt(n,s)),n=[],s=-1);return s>-1&&t.push(new bt(n,s)),t}}class Fr extends tt{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,t,n,s){for(let i=0;;i++){let o=this.children[i],a=s+o.length,l=n+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,n,s);s=a+1,n=l+1}}decompose(e,t,n,s){for(let i=0,o=0;o<=t&&i<this.children.length;i++){let a=this.children[i],l=o+a.length;if(e<=l&&t>=o){let c=s&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?n.push(a):a.decompose(e-o,t-o,n,c)}o=l+1}}replace(e,t,n){if([e,t]=Gs(this,e,t),n.lines<this.lines)for(let s=0,i=0;s<this.children.length;s++){let o=this.children[s],a=i+o.length;if(e>=i&&t<=a){let l=o.replace(e-i,t-i,n),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let u=this.children.slice();return u[s]=l,new Fr(u,this.length-(t-e)+n.length)}return super.replace(i,a,l)}i=a+1}return super.replace(e,t,n)}sliceString(e,t=this.length,n=`
|
|
13
|
-
`){[e,t]=Gs(this,e,t);let s="";for(let i=0,o=0;i<this.children.length&&o<=t;i++){let a=this.children[i],l=o+a.length;o>e&&i&&(s+=n),e<l&&t>o&&(s+=a.sliceString(e-o,t-o,n)),o=l+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof Fr))return 0;let n=0,[s,i,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,i+=t){if(s==o||i==a)return n;let l=this.children[s],c=e.children[i];if(l!=c)return n+l.scanIdentical(c,t);n+=l.length+1}}static from(e,t=e.reduce((n,s)=>n+s.length+1,-1)){let n=0;for(let g of e)n+=g.lines;if(n<32){let g=[];for(let p of e)p.flatten(g);return new bt(g,t)}let s=Math.max(32,n>>5),i=s<<1,o=s>>1,a=[],l=0,c=-1,u=[];function h(g){let p;if(g.lines>i&&g instanceof Fr)for(let O of g.children)h(O);else g.lines>o&&(l>o||!l)?(f(),a.push(g)):g instanceof bt&&l&&(p=u[u.length-1])instanceof bt&&g.lines+p.lines<=32?(l+=g.lines,c+=g.length+1,u[u.length-1]=new bt(p.text.concat(g.text),p.length+1+g.length)):(l+g.lines>s&&f(),l+=g.lines,c+=g.length+1,u.push(g))}function f(){l!=0&&(a.push(u.length==1?u[0]:Fr.from(u,c)),c=-1,l=u.length=0)}for(let g of e)h(g);return f(),a.length==1?a[0]:new Fr(a,t)}}tt.empty=new bt([""],0);function I2(r){let e=-1;for(let t of r)e+=t.length+1;return e}function va(r,e,t=0,n=1e9){for(let s=0,i=0,o=!0;i<r.length&&s<=n;i++){let a=r[i],l=s+a.length;l>=t&&(l>n&&(a=a.slice(0,n-s)),s<t&&(a=a.slice(t-s)),o?(e[e.length-1]+=a,o=!1):e.push(a)),s=l+1}return e}function dd(r,e,t){return va(r,[""],e,t)}class Xi{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof bt?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],i=this.offsets[n],o=i>>1,a=s instanceof bt?s.text.length:s.children.length;if(o==(t>0?a:0)){if(n==0)return this.done=!0,this.value="",this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
|
|
14
|
-
`,this;e--}else if(s instanceof bt){let l=s.text[o+(t<0?-1:0)];if(this.offsets[n]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=s.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof bt?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class Sp{constructor(e,t,n){this.value="",this.done=!1,this.cursor=new Xi(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=n?s:t<0?s.slice(s.length-n):s.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class $p{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:n,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(tt.prototype[Symbol.iterator]=function(){return this.iter()},Xi.prototype[Symbol.iterator]=Sp.prototype[Symbol.iterator]=$p.prototype[Symbol.iterator]=function(){return this});let V2=class{constructor(e,t,n,s){this.from=e,this.to=t,this.number=n,this.text=s}get length(){return this.to-this.from}};function Gs(r,e,t){return e=Math.max(0,Math.min(r.length,e)),[e,Math.max(e,Math.min(r.length,t))]}function Tt(r,e,t=!0,n=!0){return L2(r,e,t,n)}function z2(r){return r>=56320&&r<57344}function N2(r){return r>=55296&&r<56320}function Kt(r,e){let t=r.charCodeAt(e);if(!N2(t)||e+1==r.length)return t;let n=r.charCodeAt(e+1);return z2(n)?(t-55296<<10)+(n-56320)+65536:t}function Vu(r){return r<=65535?String.fromCharCode(r):(r-=65536,String.fromCharCode((r>>10)+55296,(r&1023)+56320))}function Ur(r){return r<65536?1:2}const Mc=/\r\n?|\n/;var Bt=(function(r){return r[r.Simple=0]="Simple",r[r.TrackDel=1]="TrackDel",r[r.TrackBefore=2]="TrackBefore",r[r.TrackAfter=3]="TrackAfter",r})(Bt||(Bt={}));class tn{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,s=0;t<this.sections.length;){let i=this.sections[t++],o=this.sections[t++];o<0?(e(n,s,i),s+=i):s+=o,n+=i}}iterChangedRanges(e,t=!1){Ac(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let n=this.sections[t++],s=this.sections[t++];s<0?e.push(n,s):e.push(s,n)}return new tn(e)}composeDesc(e){return this.empty?e:e.empty?this:Cp(this,e)}mapDesc(e,t=!1){return e.empty?this:_c(this,e,t)}mapPos(e,t=-1,n=Bt.Simple){let s=0,i=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=s+a;if(l<0){if(c>e)return i+(e-s);i+=a}else{if(n!=Bt.Simple&&c>=e&&(n==Bt.TrackDel&&s<e&&c>e||n==Bt.TrackBefore&&s<e||n==Bt.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==s||t<0?i:i+l;i+=l}s=c}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,t=e){for(let n=0,s=0;n<this.sections.length&&s<=t;){let i=this.sections[n++],o=this.sections[n++],a=s+i;if(o>=0&&s<=t&&a>=e)return s<e&&a>t?"cover":!0;s=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let n=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+n+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new tn(e)}static create(e){return new tn(e)}}class St extends tn{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Ac(this,(t,n,s,i,o)=>e=e.replace(s,s+(n-t),o),!1),e}mapDesc(e,t=!1){return _c(this,e,t,!0)}invert(e){let t=this.sections.slice(),n=[];for(let s=0,i=0;s<t.length;s+=2){let o=t[s],a=t[s+1];if(a>=0){t[s]=a,t[s+1]=o;let l=s>>1;for(;n.length<l;)n.push(tt.empty);n.push(o?e.slice(i,i+o):tt.empty)}i+=o}return new St(t,n)}compose(e){return this.empty?e:e.empty?this:Cp(this,e,!0)}map(e,t=!1){return e.empty?this:_c(this,e,t,!0)}iterChanges(e,t=!1){Ac(this,e,t)}get desc(){return tn.create(this.sections)}filter(e){let t=[],n=[],s=[],i=new Fi(this);e:for(let o=0,a=0;;){let l=o==e.length?1e9:e[o++];for(;a<l||a==l&&i.len==0;){if(i.done)break e;let u=Math.min(i.len,l-a);Vt(s,u,-1);let h=i.ins==-1?-1:i.off==0?i.ins:0;Vt(t,u,h),h>0&&Bn(n,t,i.text),i.forward(u),a+=u}let c=e[o++];for(;a<c;){if(i.done)break e;let u=Math.min(i.len,c-a);Vt(t,u,-1),Vt(s,u,i.ins==-1?-1:i.off==0?i.ins:0),i.forward(u),a+=u}}return{changes:new St(t,n),filtered:tn.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],s=this.sections[t+1];s<0?e.push(n):s==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,n){let s=[],i=[],o=0,a=null;function l(u=!1){if(!u&&!s.length)return;o<t&&Vt(s,t-o,-1);let h=new St(s,i);a=a?a.compose(h.map(a)):h,s=[],i=[],o=0}function c(u){if(Array.isArray(u))for(let h of u)c(h);else if(u instanceof St){if(u.length!=t)throw new RangeError(`Mismatched change set length (got ${u.length}, expected ${t})`);l(),a=a?a.compose(u.map(a)):u}else{let{from:h,to:f=h,insert:g}=u;if(h>f||h<0||f>t)throw new RangeError(`Invalid change range ${h} to ${f} (in doc of length ${t})`);let p=g?typeof g=="string"?tt.of(g.split(n||Mc)):g:tt.empty,O=p.length;if(h==f&&O==0)return;h<o&&l(),h>o&&Vt(s,h-o,-1),Vt(s,f-h,O),Bn(i,s,p),o=f}}return c(e),l(!a),a}static empty(e){return new St(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],n=[];for(let s=0;s<e.length;s++){let i=e[s];if(typeof i=="number")t.push(i,-1);else{if(!Array.isArray(i)||typeof i[0]!="number"||i.some((o,a)=>a&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)t.push(i[0],0);else{for(;n.length<s;)n.push(tt.empty);n[s]=tt.of(i.slice(1)),t.push(i[0],n[s].length)}}}return new St(t,n)}static createSet(e,t){return new St(e,t)}}function Vt(r,e,t,n=!1){if(e==0&&t<=0)return;let s=r.length-2;s>=0&&t<=0&&t==r[s+1]?r[s]+=e:s>=0&&e==0&&r[s]==0?r[s+1]+=t:n?(r[s]+=e,r[s+1]+=t):r.push(e,t)}function Bn(r,e,t){if(t.length==0)return;let n=e.length-2>>1;if(n<r.length)r[r.length-1]=r[r.length-1].append(t);else{for(;r.length<n;)r.push(tt.empty);r.push(t)}}function Ac(r,e,t){let n=r.inserted;for(let s=0,i=0,o=0;o<r.sections.length;){let a=r.sections[o++],l=r.sections[o++];if(l<0)s+=a,i+=a;else{let c=s,u=i,h=tt.empty;for(;c+=a,u+=l,l&&n&&(h=h.append(n[o-2>>1])),!(t||o==r.sections.length||r.sections[o+1]<0);)a=r.sections[o++],l=r.sections[o++];e(s,c,i,u,h),s=c,i=u}}}function _c(r,e,t,n=!1){let s=[],i=n?[]:null,o=new Fi(r),a=new Fi(e);for(let l=-1;;){if(o.done&&a.len||a.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&a.ins==-1){let c=Math.min(o.len,a.len);Vt(s,c,-1),o.forward(c),a.forward(c)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len<o.len||a.len==o.len&&!t))){let c=a.len;for(Vt(s,a.ins,-1);c;){let u=Math.min(o.len,c);o.ins>=0&&l<o.i&&o.len<=u&&(Vt(s,0,o.ins),i&&Bn(i,s,o.text),l=o.i),o.forward(u),c-=u}a.next()}else if(o.ins>=0){let c=0,u=o.len;for(;u;)if(a.ins==-1){let h=Math.min(u,a.len);c+=h,u-=h,a.forward(h)}else if(a.ins==0&&a.len<u)u-=a.len,a.next();else break;Vt(s,c,l<o.i?o.ins:0),i&&l<o.i&&Bn(i,s,o.text),l=o.i,o.forward(o.len-u)}else{if(o.done&&a.done)return i?St.createSet(s,i):tn.create(s);throw new Error("Mismatched change set lengths")}}}function Cp(r,e,t=!1){let n=[],s=t?[]:null,i=new Fi(r),o=new Fi(e);for(let a=!1;;){if(i.done&&o.done)return s?St.createSet(n,s):tn.create(n);if(i.ins==0)Vt(n,i.len,0,a),i.next();else if(o.len==0&&!o.done)Vt(n,0,o.ins,a),s&&Bn(s,n,o.text),o.next();else{if(i.done||o.done)throw new Error("Mismatched change set lengths");{let l=Math.min(i.len2,o.len),c=n.length;if(i.ins==-1){let u=o.ins==-1?-1:o.off?0:o.ins;Vt(n,l,u,a),s&&u&&Bn(s,n,o.text)}else o.ins==-1?(Vt(n,i.off?0:i.len,l,a),s&&Bn(s,n,i.textBit(l))):(Vt(n,i.off?0:i.len,o.off?0:o.ins,a),s&&!o.off&&Bn(s,n,o.text));a=(i.ins>l||o.ins>=0&&o.len>l)&&(a||n.length>c),i.forward2(l),o.forward(l)}}}}class Fi{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?tt.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?tt.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class as{constructor(e,t,n){this.from=e,this.to=t,this.flags=n}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let n,s;return this.empty?n=s=e.mapPos(this.from,t):(n=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),n==this.from&&s==this.to?this:new as(n,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return ne.range(e,t);let n=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return ne.range(this.anchor,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return ne.range(e.anchor,e.head)}static create(e,t,n){return new as(e,t,n)}}class ne{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:ne.create(this.ranges.map(n=>n.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new ne([this.main],0)}addRange(e,t=!0){return ne.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let n=this.ranges.slice();return n[t]=e,ne.create(n,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new ne(e.ranges.map(t=>as.fromJSON(t)),e.main)}static single(e,t=e){return new ne([ne.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,s=0;s<e.length;s++){let i=e[s];if(i.empty?i.from<=n:i.from<n)return ne.normalized(e.slice(),t);n=i.to}return new ne(e,t)}static cursor(e,t=0,n,s){return as.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n))|(s??16777215)<<6)}static range(e,t,n,s){let i=(n??16777215)<<6|(s==null?7:Math.min(6,s));return t<e?as.create(t,e,48|i):as.create(e,t,(t>e?8:0)|i)}static normalized(e,t=0){let n=e[t];e.sort((s,i)=>s.from-i.from),t=e.indexOf(n);for(let s=1;s<e.length;s++){let i=e[s],o=e[s-1];if(i.empty?i.from<=o.to:i.from<o.to){let a=o.from,l=Math.max(i.to,o.to);s<=t&&t--,e.splice(--s,2,i.anchor>i.head?ne.range(l,a):ne.range(a,l))}}return new ne(e,t)}}function Qp(r,e){for(let t of r.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let zu=0;class Te{constructor(e,t,n,s,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=s,this.id=zu++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new Te(e.combine||(t=>t),e.compareInput||((t,n)=>t===n),e.compare||(e.combine?(t,n)=>t===n:Nu),!!e.static,e.enables)}of(e){return new ba([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new ba(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new ba(e,this,2,t)}from(e,t){return t||(t=n=>n),this.compute([e],n=>t(n.field(e)))}}function Nu(r,e){return r==e||r.length==e.length&&r.every((t,n)=>t===e[n])}class ba{constructor(e,t,n,s){this.dependencies=e,this.facet=t,this.type=n,this.value=s,this.id=zu++}dynamicSlot(e){var t;let n=this.value,s=this.facet.compareInput,i=this.id,o=e[i]>>1,a=this.type==2,l=!1,c=!1,u=[];for(let h of this.dependencies)h=="doc"?l=!0:h=="selection"?c=!0:(((t=e[h.id])!==null&&t!==void 0?t:1)&1)==0&&u.push(e[h.id]);return{create(h){return h.values[o]=n(h),1},update(h,f){if(l&&f.docChanged||c&&(f.docChanged||f.selection)||Rc(h,u)){let g=n(h);if(a?!fd(g,h.values[o],s):!s(g,h.values[o]))return h.values[o]=g,1}return 0},reconfigure:(h,f)=>{let g,p=f.config.address[i];if(p!=null){let O=Ba(f,p);if(this.dependencies.every(b=>b instanceof Te?f.facet(b)===h.facet(b):b instanceof Mt?f.field(b,!1)==h.field(b,!1):!0)||(a?fd(g=n(h),O,s):s(g=n(h),O)))return h.values[o]=O,0}else g=n(h);return h.values[o]=g,1}}}}function fd(r,e,t){if(r.length!=e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function Rc(r,e){let t=!1;for(let n of e)Ii(r,n)&1&&(t=!0);return t}function W2(r,e,t){let n=t.map(l=>r[l.id]),s=t.map(l=>l.type),i=n.filter(l=>!(l&1)),o=r[e.id]>>1;function a(l){let c=[];for(let u=0;u<n.length;u++){let h=Ba(l,n[u]);if(s[u]==2)for(let f of h)c.push(f);else c.push(h)}return e.combine(c)}return{create(l){for(let c of n)Ii(l,c);return l.values[o]=a(l),1},update(l,c){if(!Rc(l,i))return 0;let u=a(l);return e.compare(u,l.values[o])?0:(l.values[o]=u,1)},reconfigure(l,c){let u=Rc(l,n),h=c.config.facets[e.id],f=c.facet(e);if(h&&!u&&Nu(t,h))return l.values[o]=f,0;let g=a(l);return e.compare(g,f)?(l.values[o]=f,0):(l.values[o]=g,1)}}}const zo=Te.define({static:!0});class Mt{constructor(e,t,n,s,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=s,this.spec=i,this.provides=void 0}static define(e){let t=new Mt(zu++,e.create,e.update,e.compare||((n,s)=>n===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(zo).find(n=>n.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:n=>(n.values[t]=this.create(n),1),update:(n,s)=>{let i=n.values[t],o=this.updateF(i,s);return this.compareF(i,o)?0:(n.values[t]=o,1)},reconfigure:(n,s)=>{let i=n.facet(zo),o=s.facet(zo),a;return(a=i.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(n.values[t]=a.create(n),1):s.config.address[this.id]!=null?(n.values[t]=s.field(this),0):(n.values[t]=this.create(n),1)}}}init(e){return[this,zo.of({field:this,create:e})]}get extension(){return this}}const ss={lowest:4,low:3,default:2,high:1,highest:0};function Ci(r){return e=>new Pp(e,r)}const kn={highest:Ci(ss.highest),high:Ci(ss.high),default:Ci(ss.default),low:Ci(ss.low),lowest:Ci(ss.lowest)};class Pp{constructor(e,t){this.inner=e,this.prec=t}}class Ol{of(e){return new Bc(this,e)}reconfigure(e){return Ol.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Bc{constructor(e,t){this.compartment=e,this.inner=t}}class Ra{constructor(e,t,n,s,i,o){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=s,this.staticValues=i,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,n){let s=[],i=Object.create(null),o=new Map;for(let f of q2(e,t,o))f instanceof Mt?s.push(f):(i[f.facet.id]||(i[f.facet.id]=[])).push(f);let a=Object.create(null),l=[],c=[];for(let f of s)a[f.id]=c.length<<1,c.push(g=>f.slot(g));let u=n?.config.facets;for(let f in i){let g=i[f],p=g[0].facet,O=u&&u[f]||[];if(g.every(b=>b.type==0))if(a[p.id]=l.length<<1|1,Nu(O,g))l.push(n.facet(p));else{let b=p.combine(g.map(x=>x.value));l.push(n&&p.compare(b,n.facet(p))?n.facet(p):b)}else{for(let b of g)b.type==0?(a[b.id]=l.length<<1|1,l.push(b.value)):(a[b.id]=c.length<<1,c.push(x=>b.dynamicSlot(x)));a[p.id]=c.length<<1,c.push(b=>W2(b,p,g))}}let h=c.map(f=>f(a));return new Ra(e,o,h,a,l,i)}}function q2(r,e,t){let n=[[],[],[],[],[]],s=new Map;function i(o,a){let l=s.get(o);if(l!=null){if(l<=a)return;let c=n[l].indexOf(o);c>-1&&n[l].splice(c,1),o instanceof Bc&&t.delete(o.compartment)}if(s.set(o,a),Array.isArray(o))for(let c of o)i(c,a);else if(o instanceof Bc){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let c=e.get(o.compartment)||o.inner;t.set(o.compartment,c),i(c,a)}else if(o instanceof Pp)i(o.inner,o.prec);else if(o instanceof Mt)n[a].push(o),o.provides&&i(o.provides,a);else if(o instanceof ba)n[a].push(o),o.facet.extensions&&i(o.facet.extensions,ss.default);else{let c=o.extension;if(!c)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(c,a)}}return i(r,ss.default),n.reduce((o,a)=>o.concat(a))}function Ii(r,e){if(e&1)return 2;let t=e>>1,n=r.status[t];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;r.status[t]=4;let s=r.computeSlot(r,r.config.dynamicSlots[t]);return r.status[t]=2|s}function Ba(r,e){return e&1?r.config.staticValues[e>>1]:r.values[e>>1]}const Tp=Te.define(),Zc=Te.define({combine:r=>r.some(e=>e),static:!0}),Mp=Te.define({combine:r=>r.length?r[0]:void 0,static:!0}),Ap=Te.define(),_p=Te.define(),Rp=Te.define(),Bp=Te.define({combine:r=>r.length?r[0]:!1});class wn{constructor(e,t){this.type=e,this.value=t}static define(){return new j2}}class j2{of(e){return new wn(this,e)}}class Y2{constructor(e){this.map=e}of(e){return new Ne(this,e)}}class Ne{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new Ne(this.type,t)}is(e){return this.type==e}static define(e={}){return new Y2(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let s of e){let i=s.map(t);i&&n.push(i)}return n}}Ne.reconfigure=Ne.define();Ne.appendConfig=Ne.define();class yt{constructor(e,t,n,s,i,o){this.startState=e,this.changes=t,this.selection=n,this.effects=s,this.annotations=i,this.scrollIntoView=o,this._doc=null,this._state=null,n&&Qp(n,t.newLength),i.some(a=>a.type==yt.time)||(this.annotations=i.concat(yt.time.of(Date.now())))}static create(e,t,n,s,i,o){return new yt(e,t,n,s,i,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(yt.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}yt.time=wn.define();yt.userEvent=wn.define();yt.addToHistory=wn.define();yt.remote=wn.define();function F2(r,e){let t=[];for(let n=0,s=0;;){let i,o;if(n<r.length&&(s==e.length||e[s]>=r[n]))i=r[n++],o=r[n++];else if(s<e.length)i=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<i?t.push(i,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function Zp(r,e,t){var n;let s,i,o;return t?(s=e.changes,i=St.empty(e.changes.length),o=r.changes.compose(e.changes)):(s=e.changes.map(r.changes),i=r.changes.mapDesc(e.changes,!0),o=r.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(i):(n=r.selection)===null||n===void 0?void 0:n.map(s),effects:Ne.mapEffects(r.effects,s).concat(Ne.mapEffects(e.effects,i)),annotations:r.annotations.length?r.annotations.concat(e.annotations):e.annotations,scrollIntoView:r.scrollIntoView||e.scrollIntoView}}function Ec(r,e,t){let n=e.selection,s=Is(e.annotations);return e.userEvent&&(s=s.concat(yt.userEvent.of(e.userEvent))),{changes:e.changes instanceof St?e.changes:St.of(e.changes||[],t,r.facet(Mp)),selection:n&&(n instanceof ne?n:ne.single(n.anchor,n.head)),effects:Is(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function Ep(r,e,t){let n=Ec(r,e.length?e[0]:{},r.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let i=1;i<e.length;i++){e[i].filter===!1&&(t=!1);let o=!!e[i].sequential;n=Zp(n,Ec(r,e[i],o?n.changes.newLength:r.doc.length),o)}let s=yt.create(r,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);return G2(t?U2(s):s)}function U2(r){let e=r.startState,t=!0;for(let s of e.facet(Ap)){let i=s(r);if(i===!1){t=!1;break}Array.isArray(i)&&(t=t===!0?i:F2(t,i))}if(t!==!0){let s,i;if(t===!1)i=r.changes.invertedDesc,s=St.empty(e.doc.length);else{let o=r.changes.filter(t);s=o.changes,i=o.filtered.mapDesc(o.changes).invertedDesc}r=yt.create(e,s,r.selection&&r.selection.map(i),Ne.mapEffects(r.effects,i),r.annotations,r.scrollIntoView)}let n=e.facet(_p);for(let s=n.length-1;s>=0;s--){let i=n[s](r);i instanceof yt?r=i:Array.isArray(i)&&i.length==1&&i[0]instanceof yt?r=i[0]:r=Ep(e,Is(i),!1)}return r}function G2(r){let e=r.startState,t=e.facet(Rp),n=r;for(let s=t.length-1;s>=0;s--){let i=t[s](r);i&&Object.keys(i).length&&(n=Zp(n,Ec(e,i,r.changes.newLength),!0))}return n==r?r:yt.create(e,r.changes,r.selection,n.effects,n.annotations,n.scrollIntoView)}const H2=[];function Is(r){return r==null?H2:Array.isArray(r)?r:[r]}var mt=(function(r){return r[r.Word=0]="Word",r[r.Space=1]="Space",r[r.Other=2]="Other",r})(mt||(mt={}));const K2=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Dc;try{Dc=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function J2(r){if(Dc)return Dc.test(r);for(let e=0;e<r.length;e++){let t=r[e];if(/\w/.test(t)||t>""&&(t.toUpperCase()!=t.toLowerCase()||K2.test(t)))return!0}return!1}function e$(r){return e=>{if(!/\S/.test(e))return mt.Space;if(J2(e))return mt.Word;for(let t=0;t<r.length;t++)if(e.indexOf(r[t])>-1)return mt.Word;return mt.Other}}class He{constructor(e,t,n,s,i,o){this.config=e,this.doc=t,this.selection=n,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,o&&(o._state=this);for(let a=0;a<this.config.dynamicSlots.length;a++)Ii(this,a<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw new RangeError("Field is not present in this state");return}return Ii(this,n),Ba(this,n)}update(...e){return Ep(this,e,!0)}applyTransaction(e){let t=this.config,{base:n,compartments:s}=t;for(let a of e.effects)a.is(Ol.reconfigure)?(t&&(s=new Map,t.compartments.forEach((l,c)=>s.set(c,l)),t=null),s.set(a.value.compartment,a.value.extension)):a.is(Ne.reconfigure)?(t=null,n=a.value):a.is(Ne.appendConfig)&&(t=null,n=Is(n).concat(a.value));let i;t?i=e.startState.values.slice():(t=Ra.resolve(n,s,this),i=new He(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(Zc)?e.newSelection:e.newSelection.asSingle();new He(t,e.newDoc,o,i,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:ne.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),s=this.changes(n.changes),i=[n.range],o=Is(n.effects);for(let a=1;a<t.ranges.length;a++){let l=e(t.ranges[a]),c=this.changes(l.changes),u=c.map(s);for(let f=0;f<a;f++)i[f]=i[f].map(u);let h=s.mapDesc(c,!0);i.push(l.range.map(h)),s=s.compose(u),o=Ne.mapEffects(o,u).concat(Ne.mapEffects(Is(l.effects),h))}return{changes:s,selection:ne.create(i,t.mainIndex),effects:o}}changes(e=[]){return e instanceof St?e:St.of(e,this.doc.length,this.facet(He.lineSeparator))}toText(e){return tt.of(e.split(this.facet(He.lineSeparator)||Mc))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Ii(this,t),Ba(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let s=e[n];s instanceof Mt&&this.config.address[s.id]!=null&&(t[n]=s.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(e,t={},n){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(n){for(let i in n)if(Object.prototype.hasOwnProperty.call(e,i)){let o=n[i],a=e[i];s.push(o.init(l=>o.spec.fromJSON(a,l)))}}return He.create({doc:e.doc,selection:ne.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=Ra.resolve(e.extensions||[],new Map),n=e.doc instanceof tt?e.doc:tt.of((e.doc||"").split(t.staticFacet(He.lineSeparator)||Mc)),s=e.selection?e.selection instanceof ne?e.selection:ne.single(e.selection.anchor,e.selection.head):ne.single(0);return Qp(s,n.length),t.staticFacet(Zc)||(s=s.asSingle()),new He(t,n,s,t.dynamicSlots.map(()=>null),(i,o)=>o.create(i),null)}get tabSize(){return this.facet(He.tabSize)}get lineBreak(){return this.facet(He.lineSeparator)||`
|
|
15
|
-
`}get readOnly(){return this.facet(Bp)}phrase(e,...t){for(let n of this.facet(He.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(n,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>t.length?n:t[i-1]})),e}languageDataAt(e,t,n=-1){let s=[];for(let i of this.facet(Tp))for(let o of i(this,t,n))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return e$(t.length?t[0]:"")}wordAt(e){let{text:t,from:n,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),o=e-n,a=e-n;for(;o>0;){let l=Tt(t,o,!1);if(i(t.slice(l,o))!=mt.Word)break;o=l}for(;a<s;){let l=Tt(t,a);if(i(t.slice(a,l))!=mt.Word)break;a=l}return o==a?null:ne.range(o+n,a+n)}}He.allowMultipleSelections=Zc;He.tabSize=Te.define({combine:r=>r.length?r[0]:4});He.lineSeparator=Mp;He.readOnly=Bp;He.phrases=Te.define({compare(r,e){let t=Object.keys(r),n=Object.keys(e);return t.length==n.length&&t.every(s=>r[s]==e[s])}});He.languageData=Tp;He.changeFilter=Ap;He.transactionFilter=_p;He.transactionExtender=Rp;Ol.reconfigure=Ne.define();function nn(r,e,t={}){let n={};for(let s of r)for(let i of Object.keys(s)){let o=s[i],a=n[i];if(a===void 0)n[i]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,i))n[i]=t[i](a,o);else throw new Error("Config merge conflict for field "+i)}for(let s in e)n[s]===void 0&&(n[s]=e[s]);return n}class Dn{eq(e){return this==e}range(e,t=e){return Lc.create(e,t,this)}}Dn.prototype.startSide=Dn.prototype.endSide=0;Dn.prototype.point=!1;Dn.prototype.mapMode=Bt.TrackDel;function Wu(r,e){return r==e||r.constructor==e.constructor&&r.eq(e)}let Lc=class Dp{constructor(e,t,n){this.from=e,this.to=t,this.value=n}static create(e,t,n){return new Dp(e,t,n)}};function Xc(r,e){return r.from-e.from||r.value.startSide-e.value.startSide}class qu{constructor(e,t,n,s){this.from=e,this.to=t,this.value=n,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,s=0){let i=n?this.to:this.from;for(let o=s,a=i.length;;){if(o==a)return o;let l=o+a>>1,c=i[l]-e||(n?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,n,s){for(let i=this.findIndex(t,-1e9,!0),o=this.findIndex(n,1e9,!1,i);i<o;i++)if(s(this.from[i]+e,this.to[i]+e,this.value[i])===!1)return!1}map(e,t){let n=[],s=[],i=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],u=this.from[l]+e,h=this.to[l]+e,f,g;if(u==h){let p=t.mapPos(u,c.startSide,c.mapMode);if(p==null||(f=g=p,c.startSide!=c.endSide&&(g=t.mapPos(u,c.endSide),g<f)))continue}else if(f=t.mapPos(u,c.startSide),g=t.mapPos(h,c.endSide),f>g||f==g&&c.startSide>0&&c.endSide<=0)continue;(g-f||c.endSide-c.startSide)<0||(o<0&&(o=f),c.point&&(a=Math.max(a,g-f)),n.push(c),s.push(f-o),i.push(g-o))}return{mapped:n.length?new qu(s,i,n,a):null,pos:o}}}class Ge{constructor(e,t,n,s){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=s}static create(e,t,n,s){return new Ge(e,t,n,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:n=!1,filterFrom:s=0,filterTo:i=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(n&&(t=t.slice().sort(Xc)),this.isEmpty)return t.length?Ge.of(t):this;let a=new Lp(this,null,-1).goto(0),l=0,c=[],u=new bn;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let h=t[l++];u.addInner(h.from,h.to,h.value)||c.push(h)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||s>this.chunkEnd(a.chunkIndex)||i<this.chunkPos[a.chunkIndex])&&u.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||s>a.to||i<a.from||o(a.from,a.to,a.value))&&(u.addInner(a.from,a.to,a.value)||c.push(Lc.create(a.from,a.to,a.value))),a.next());return u.finishInner(this.nextLayer.isEmpty&&!c.length?Ge.empty:this.nextLayer.update({add:c,filter:o,filterFrom:s,filterTo:i}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],n=[],s=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)s=Math.max(s,l.maxPoint),t.push(l),n.push(e.mapPos(a));else if(c===!0){let{mapped:u,pos:h}=l.map(a,e);u&&(s=Math.max(s,u.maxPoint),t.push(u),n.push(h))}}let i=this.nextLayer.map(e);return t.length==0?i:new Ge(n,t,i||Ge.empty,s)}between(e,t,n){if(!this.isEmpty){for(let s=0;s<this.chunk.length;s++){let i=this.chunkPos[s],o=this.chunk[s];if(t>=i&&e<=i+o.length&&o.between(i,e-i,t-i,n)===!1)return}this.nextLayer.between(e,t,n)}}iter(e=0){return Ui.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ui.from(e).goto(t)}static compare(e,t,n,s,i=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=i),a=t.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=i),l=md(o,a,n),c=new Qi(o,l,i),u=new Qi(a,l,i);n.iterGaps((h,f,g)=>pd(c,h,u,f,g,s)),n.empty&&n.length==0&&pd(c,0,u,0,0,s)}static eq(e,t,n=0,s){s==null&&(s=999999999);let i=e.filter(u=>!u.isEmpty&&t.indexOf(u)<0),o=t.filter(u=>!u.isEmpty&&e.indexOf(u)<0);if(i.length!=o.length)return!1;if(!i.length)return!0;let a=md(i,o),l=new Qi(i,a,0).goto(n),c=new Qi(o,a,0).goto(n);for(;;){if(l.to!=c.to||!Ic(l.active,c.active)||l.point&&(!c.point||!Wu(l.point,c.point)))return!1;if(l.to>s)return!0;l.next(),c.next()}}static spans(e,t,n,s,i=-1){let o=new Qi(e,null,i).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,n);if(o.point){let u=o.activeForPoint(o.to),h=o.pointFrom<t?u.length+1:o.point.startSide<0?u.length:Math.min(u.length,l);s.point(a,c,o.point,u,h,o.pointRank),l=Math.min(o.openEnd(c),u.length)}else c>a&&(s.span(a,c,o.active,l),l=o.openEnd(c));if(o.to>n)return l+(o.point&&o.to>n?1:0);a=o.to,o.next()}}static of(e,t=!1){let n=new bn;for(let s of e instanceof Lc?[e]:t?t$(e):e)n.add(s.from,s.to,s.value);return n.finish()}static join(e){if(!e.length)return Ge.empty;let t=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let s=e[n];s!=Ge.empty;s=s.nextLayer)t=new Ge(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}}Ge.empty=new Ge([],[],null,-1);function t$(r){if(r.length>1)for(let e=r[0],t=1;t<r.length;t++){let n=r[t];if(Xc(e,n)>0)return r.slice().sort(Xc);e=n}return r}Ge.empty.nextLayer=Ge.empty;class bn{finishChunk(e){this.chunks.push(new qu(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,n){this.addInner(e,t,n)||(this.nextLayer||(this.nextLayer=new bn)).add(e,t,n)}addInner(e,t,n){let s=e-this.lastTo||n.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,!0}finish(){return this.finishInner(Ge.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=Ge.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}}function md(r,e,t){let n=new Map;for(let i of r)for(let o=0;o<i.chunk.length;o++)i.chunk[o].maxPoint<=0&&n.set(i.chunk[o],i.chunkPos[o]);let s=new Set;for(let i of e)for(let o=0;o<i.chunk.length;o++){let a=n.get(i.chunk[o]);a!=null&&(t?t.mapPos(a):a)==i.chunkPos[o]&&!t?.touchesRange(a,a+i.chunk[o].length)&&s.add(i.chunk[o])}return s}class Lp{constructor(e,t,n,s=0){this.layer=e,this.skip=t,this.minPoint=n,this.rank=s}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,n){for(;this.chunkIndex<this.layer.chunk.length;){let s=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(s)||this.layer.chunkEnd(this.chunkIndex)<e||s.maxPoint<this.minPoint))break;this.chunkIndex++,n=!1}if(this.chunkIndex<this.layer.chunk.length){let s=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0);(!n||this.rangeIndex<s)&&this.setRangeIndex(s)}this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],n=e+t.from[this.rangeIndex];if(this.from=n,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class Ui{constructor(e){this.heap=e}static from(e,t=null,n=-1){let s=[];for(let i=0;i<e.length;i++)for(let o=e[i];!o.isEmpty;o=o.nextLayer)o.maxPoint>=n&&s.push(new Lp(o,t,n,i));return s.length==1?s[0]:new Ui(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let n=this.heap.length>>1;n>=0;n--)Bl(this.heap,n);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let n=this.heap.length>>1;n>=0;n--)Bl(this.heap,n);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Bl(this.heap,0)}}}function Bl(r,e){for(let t=r[e];;){let n=(e<<1)+1;if(n>=r.length)break;let s=r[n];if(n+1<r.length&&s.compare(r[n+1])>=0&&(s=r[n+1],n++),t.compare(s)<0)break;r[n]=t,r[e]=s,e=n}}class Qi{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Ui.from(e,t,n)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){No(this.active,e),No(this.activeTo,e),No(this.activeRank,e),this.minActive=gd(this.active,this.activeTo)}addActive(e){let t=0,{value:n,to:s,rank:i}=this.cursor;for(;t<this.activeRank.length&&(i-this.activeRank[t]||s-this.activeTo[t])>0;)t++;Wo(this.active,t,n),Wo(this.activeTo,t,s),Wo(this.activeRank,t,i),e&&Wo(e,t,this.cursor.from),this.minActive=gd(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),n&&No(n,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=i,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=i.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(n){this.openStart=0;for(let s=n.length-1;s>=0&&n[s]<e;s--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let t=[];for(let n=this.active.length-1;n>=0&&!(this.activeRank[n]<this.pointRank);n--)(this.activeTo[n]>e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}}function pd(r,e,t,n,s,i){r.goto(e),t.goto(n);let o=n+s,a=n,l=n-e,c=!!i.boundChange;for(let u=!1;;){let h=r.to+l-t.to,f=h||r.endSide-t.endSide,g=f<0?r.to+l:t.to,p=Math.min(g,o);if(r.point||t.point?(r.point&&t.point&&Wu(r.point,t.point)&&Ic(r.activeForPoint(r.to),t.activeForPoint(t.to))||i.comparePoint(a,p,r.point,t.point),u=!1):(u&&i.boundChange(a),p>a&&!Ic(r.active,t.active)&&i.compareRange(a,p,r.active,t.active),c&&p<o&&(h||r.openEnd(g)!=t.openEnd(g))&&(u=!0)),g>o)break;a=g,f<=0&&r.next(),f>=0&&t.next()}}function Ic(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!=e[t]&&!Wu(r[t],e[t]))return!1;return!0}function No(r,e){for(let t=e,n=r.length-1;t<n;t++)r[t]=r[t+1];r.pop()}function Wo(r,e,t){for(let n=r.length-1;n>=e;n--)r[n+1]=r[n];r[e]=t}function gd(r,e){let t=-1,n=1e9;for(let s=0;s<e.length;s++)(e[s]-n||r[s].endSide-r[t].endSide)<0&&(t=s,n=e[s]);return t}function Zr(r,e,t=r.length){let n=0;for(let s=0;s<t&&s<r.length;)r.charCodeAt(s)==9?(n+=e-n%e,s++):(n++,s=Tt(r,s));return n}function Vc(r,e,t,n){for(let s=0,i=0;;){if(i>=e)return s;if(s==r.length)break;i+=r.charCodeAt(s)==9?t-i%t:1,s=Tt(r,s)}return n===!0?-1:r.length}const zc="ͼ",Od=typeof Symbol>"u"?"__"+zc:Symbol.for(zc),Nc=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),vd=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Ln{constructor(e,t){this.rules=[];let{finish:n}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function i(o,a,l,c){let u=[],h=/^@(\w+)\b/.exec(o[0]),f=h&&h[1]=="keyframes";if(h&&a==null)return l.push(o[0]+";");for(let g in a){let p=a[g];if(/&/.test(g))i(g.split(/,\s*/).map(O=>o.map(b=>O.replace(/&/,b))).reduce((O,b)=>O.concat(b)),p,l);else if(p&&typeof p=="object"){if(!h)throw new RangeError("The value of a property ("+g+") should be a primitive value.");i(s(g),p,u,f)}else p!=null&&u.push(g.replace(/_.*/,"").replace(/[A-Z]/g,O=>"-"+O.toLowerCase())+": "+p+";")}(u.length||f)&&l.push((n&&!h&&!c?o.map(n):o).join(", ")+" {"+u.join(" ")+"}")}for(let o in e)i(s(o),e[o],this.rules)}getRules(){return this.rules.join(`
|
|
16
|
-
`)}static newName(){let e=vd[Od]||1;return vd[Od]=e+1,zc+e.toString(36)}static mount(e,t,n){let s=e[Nc],i=n&&n.nonce;s?i&&s.setNonce(i):s=new r$(e,i),s.mount(Array.isArray(t)?t:[t],e)}}let bd=new Map;class r${constructor(e,t){let n=e.ownerDocument||e,s=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=bd.get(n);if(i)return e[Nc]=i;this.sheet=new s.CSSStyleSheet,bd.set(n,this)}else this.styleTag=n.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Nc]=this}mount(e,t){let n=this.sheet,s=0,i=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<i&&l>-1&&(this.modules.splice(l,1),i--,l=-1),l==-1){if(this.modules.splice(i++,0,a),n)for(let c=0;c<a.rules.length;c++)n.insertRule(a.rules[c],s++)}else{for(;i<l;)s+=this.modules[i++].rules.length;s+=a.rules.length,i++}}if(n)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
|
|
17
|
-
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}}var Xn={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Gi={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},n$=typeof navigator<"u"&&/Mac/.test(navigator.platform),s$=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Rt=0;Rt<10;Rt++)Xn[48+Rt]=Xn[96+Rt]=String(Rt);for(var Rt=1;Rt<=24;Rt++)Xn[Rt+111]="F"+Rt;for(var Rt=65;Rt<=90;Rt++)Xn[Rt]=String.fromCharCode(Rt+32),Gi[Rt]=String.fromCharCode(Rt);for(var Zl in Xn)Gi.hasOwnProperty(Zl)||(Gi[Zl]=Xn[Zl]);function i$(r){var e=n$&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||s$&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?Gi:Xn)[r.keyCode]||r.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function at(){var r=arguments[0];typeof r=="string"&&(r=document.createElement(r));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=t[n];typeof s=="string"?r.setAttribute(n,s):s!=null&&(r[n]=s)}e++}for(;e<arguments.length;e++)Xp(r,arguments[e]);return r}function Xp(r,e){if(typeof e=="string")r.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)r.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)Xp(r,e[t]);else throw new RangeError("Unsupported child node: "+e)}let jt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},Wc=typeof document<"u"?document:{documentElement:{style:{}}};const qc=/Edge\/(\d+)/.exec(jt.userAgent),Ip=/MSIE \d/.test(jt.userAgent),jc=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(jt.userAgent),vl=!!(Ip||jc||qc),xd=!vl&&/gecko\/(\d+)/i.test(jt.userAgent),El=!vl&&/Chrome\/(\d+)/.exec(jt.userAgent),o$="webkitFontSmoothing"in Wc.documentElement.style,Yc=!vl&&/Apple Computer/.test(jt.vendor),yd=Yc&&(/Mobile\/\w+/.test(jt.userAgent)||jt.maxTouchPoints>2);var Ae={mac:yd||/Mac/.test(jt.platform),windows:/Win/.test(jt.platform),linux:/Linux|X11/.test(jt.platform),ie:vl,ie_version:Ip?Wc.documentMode||6:jc?+jc[1]:qc?+qc[1]:0,gecko:xd,gecko_version:xd?+(/Firefox\/(\d+)/.exec(jt.userAgent)||[0,0])[1]:0,chrome:!!El,chrome_version:El?+El[1]:0,ios:yd,android:/Android\b/.test(jt.userAgent),webkit_version:o$?+(/\bAppleWebKit\/(\d+)/.exec(jt.userAgent)||[0,0])[1]:0,safari:Yc,safari_version:Yc?+(/\bVersion\/(\d+(\.\d+)?)/.exec(jt.userAgent)||[0,0])[1]:0,tabSize:Wc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function ju(r,e){for(let t in r)t=="class"&&e.class?e.class+=" "+r.class:t=="style"&&e.style?e.style+=";"+r.style:e[t]=r[t];return e}const Za=Object.create(null);function Yu(r,e,t){if(r==e)return!0;r||(r=Za),e||(e=Za);let n=Object.keys(r),s=Object.keys(e);if(n.length-0!=s.length-0)return!1;for(let i of n)if(i!=t&&(s.indexOf(i)==-1||r[i]!==e[i]))return!1;return!0}function a$(r,e){for(let t=r.attributes.length-1;t>=0;t--){let n=r.attributes[t].name;e[n]==null&&r.removeAttribute(n)}for(let t in e){let n=e[t];t=="style"?r.style.cssText=n:r.getAttribute(t)!=n&&r.setAttribute(t,n)}}function kd(r,e,t){let n=!1;if(e)for(let s in e)t&&s in t||(n=!0,s=="style"?r.style.cssText="":r.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(n=!0,s=="style"?r.style.cssText=t[s]:r.setAttribute(s,t[s]));return n}function l$(r){let e=Object.create(null);for(let t=0;t<r.attributes.length;t++){let n=r.attributes[t];e[n.name]=n.value}return e}class sn{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,n){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}var Dt=(function(r){return r[r.Text=0]="Text",r[r.WidgetBefore=1]="WidgetBefore",r[r.WidgetAfter=2]="WidgetAfter",r[r.WidgetRange=3]="WidgetRange",r})(Dt||(Dt={}));class De extends Dn{constructor(e,t,n,s){super(),this.startSide=e,this.endSide=t,this.widget=n,this.spec=s}get heightRelevant(){return!1}static mark(e){return new ko(e)}static widget(e){let t=Math.max(-1e4,Math.min(1e4,e.side||0)),n=!!e.block;return t+=n&&!e.inlineOrder?t>0?3e8:-4e8:t>0?1e8:-1e8,new vs(e,t,t,n,e.widget||null,!1)}static replace(e){let t=!!e.block,n,s;if(e.isBlockGap)n=-5e8,s=4e8;else{let{start:i,end:o}=Vp(e,t);n=(i?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new vs(e,n,s,t,e.widget||null,!0)}static line(e){return new wo(e)}static set(e,t=!1){return Ge.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}De.none=Ge.empty;class ko extends De{constructor(e){let{start:t,end:n}=Vp(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?ju(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||Za}eq(e){return this==e||e instanceof ko&&this.tagName==e.tagName&&Yu(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}}ko.prototype.point=!1;class wo extends De{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof wo&&this.spec.class==e.spec.class&&Yu(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}}wo.prototype.mapMode=Bt.TrackBefore;wo.prototype.point=!0;class vs extends De{constructor(e,t,n,s,i,o){super(t,n,i,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?Bt.TrackBefore:Bt.TrackAfter:Bt.TrackDel}get type(){return this.startSide!=this.endSide?Dt.WidgetRange:this.startSide<=0?Dt.WidgetBefore:Dt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof vs&&c$(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}}vs.prototype.point=!0;function Vp(r,e=!1){let{inclusiveStart:t,inclusiveEnd:n}=r;return t==null&&(t=r.inclusive),n==null&&(n=r.inclusive),{start:t??e,end:n??e}}function c$(r,e){return r==e||!!(r&&e&&r.compare(e))}function Vs(r,e,t,n=0){let s=t.length-1;s>=0&&t[s]+n>=r?t[s]=Math.max(t[s],e):t.push(r,e)}class Hi extends Dn{constructor(e,t){super(),this.tagName=e,this.attributes=t}eq(e){return e==this||e instanceof Hi&&this.tagName==e.tagName&&Yu(this.attributes,e.attributes)}static create(e){return new Hi(e.tagName,e.attributes||Za)}static set(e,t=!1){return Ge.of(e,t)}}Hi.prototype.startSide=Hi.prototype.endSide=-1;function Ki(r){let e;return r.nodeType==11?e=r.getSelection?r:r.ownerDocument:e=r,e.getSelection()}function Fc(r,e){return e?r==e||r.contains(e.nodeType!=1?e.parentNode:e):!1}function Vi(r,e){if(!e.anchorNode)return!1;try{return Fc(r,e.anchorNode)}catch{return!1}}function xa(r){return r.nodeType==3?Ji(r,0,r.nodeValue.length).getClientRects():r.nodeType==1?r.getClientRects():[]}function zi(r,e,t,n){return t?wd(r,e,t,n,-1)||wd(r,e,t,n,1):!1}function In(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e}function Ea(r){return r.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(r.nodeName)}function wd(r,e,t,n,s){for(;;){if(r==t&&e==n)return!0;if(e==(s<0?0:xn(r))){if(r.nodeName=="DIV")return!1;let i=r.parentNode;if(!i||i.nodeType!=1)return!1;e=In(r)+(s<0?0:1),r=i}else if(r.nodeType==1){if(r=r.childNodes[e+(s<0?-1:0)],r.nodeType==1&&r.contentEditable=="false")return!1;e=s<0?xn(r):0}else return!1}}function xn(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Da(r,e){let t=e?r.left:r.right;return{left:t,right:t,top:r.top,bottom:r.bottom}}function u$(r){let e=r.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:r.innerWidth,top:0,bottom:r.innerHeight}}function zp(r,e){let t=e.width/r.offsetWidth,n=e.height/r.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-r.offsetWidth)<1)&&(t=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-r.offsetHeight)<1)&&(n=1),{scaleX:t,scaleY:n}}function h$(r,e,t,n,s,i,o,a){let l=r.ownerDocument,c=l.defaultView||window;for(let u=r,h=!1;u&&!h;)if(u.nodeType==1){let f,g=u==l.body,p=1,O=1;if(g)f=u$(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(h=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let k=u.getBoundingClientRect();({scaleX:p,scaleY:O}=zp(u,k)),f={left:k.left,right:k.left+u.clientWidth*p,top:k.top,bottom:k.top+u.clientHeight*O}}let b=0,x=0;if(s=="nearest")e.top<f.top?(x=e.top-(f.top+o),t>0&&e.bottom>f.bottom+x&&(x=e.bottom-f.bottom+o)):e.bottom>f.bottom&&(x=e.bottom-f.bottom+o,t<0&&e.top-x<f.top&&(x=e.top-(f.top+o)));else{let k=e.bottom-e.top,w=f.bottom-f.top;x=(s=="center"&&k<=w?e.top+k/2-w/2:s=="start"||s=="center"&&t<0?e.top-o:e.bottom-w+o)-f.top}if(n=="nearest"?e.left<f.left?(b=e.left-(f.left+i),t>0&&e.right>f.right+b&&(b=e.right-f.right+i)):e.right>f.right&&(b=e.right-f.right+i,t<0&&e.left<f.left+b&&(b=e.left-(f.left+i))):b=(n=="center"?e.left+(e.right-e.left)/2-(f.right-f.left)/2:n=="start"==a?e.left-i:e.right-(f.right-f.left)+i)-f.left,b||x)if(g)c.scrollBy(b,x);else{let k=0,w=0;if(x){let S=u.scrollTop;u.scrollTop+=x/O,w=(u.scrollTop-S)*O}if(b){let S=u.scrollLeft;u.scrollLeft+=b/p,k=(u.scrollLeft-S)*p}e={left:e.left-k,top:e.top-w,right:e.right-k,bottom:e.bottom-w},k&&Math.abs(k-b)<1&&(n="nearest"),w&&Math.abs(w-x)<1&&(s="nearest")}if(g)break;(e.top<f.top||e.bottom>f.bottom||e.left<f.left||e.right>f.right)&&(e={left:Math.max(e.left,f.left),right:Math.min(e.right,f.right),top:Math.max(e.top,f.top),bottom:Math.min(e.bottom,f.bottom)}),u=u.assignedSlot||u.parentNode}else if(u.nodeType==11)u=u.host;else break}function d$(r){let e=r.ownerDocument,t,n;for(let s=r.parentNode;s&&!(s==e.body||t&&n);)if(s.nodeType==1)!n&&s.scrollHeight>s.clientHeight&&(n=s),!t&&s.scrollWidth>s.clientWidth&&(t=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:t,y:n}}class f${constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?xn(t):0),n,Math.min(e.focusOffset,n?xn(n):0))}set(e,t,n,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=s}}let ns=null;Ae.safari&&Ae.safari_version>=26&&(ns=!1);function Np(r){if(r.setActive)return r.setActive();if(ns)return r.focus(ns);let e=[];for(let t=r;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(r.focus(ns==null?{get preventScroll(){return ns={preventScroll:!0},!0}}:void 0),!ns){ns=!1;for(let t=0;t<e.length;){let n=e[t++],s=e[t++],i=e[t++];n.scrollTop!=s&&(n.scrollTop=s),n.scrollLeft!=i&&(n.scrollLeft=i)}}}let Sd;function Ji(r,e,t=e){let n=Sd||(Sd=document.createRange());return n.setEnd(r,t),n.setStart(r,e),n}function zs(r,e,t,n){let s={key:e,code:e,keyCode:t,which:t,cancelable:!0};n&&({altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey,metaKey:s.metaKey}=n);let i=new KeyboardEvent("keydown",s);i.synthetic=!0,r.dispatchEvent(i);let o=new KeyboardEvent("keyup",s);return o.synthetic=!0,r.dispatchEvent(o),i.defaultPrevented||o.defaultPrevented}function m$(r){for(;r;){if(r&&(r.nodeType==9||r.nodeType==11&&r.host))return r;r=r.assignedSlot||r.parentNode}return null}function p$(r,e){let t=e.focusNode,n=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=n)return!1;for(n=Math.min(n,xn(t));;)if(n){if(t.nodeType!=1)return!1;let s=t.childNodes[n-1];s.contentEditable=="false"?n--:(t=s,n=xn(t))}else{if(t==r)return!0;n=In(t),t=t.parentNode}}function Wp(r){return r.scrollTop>Math.max(1,r.scrollHeight-r.clientHeight-4)}function qp(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n>0)return{node:t,offset:n};if(t.nodeType==1&&n>0){if(t.contentEditable=="false")return null;t=t.childNodes[n-1],n=xn(t)}else if(t.parentNode&&!Ea(t))n=In(t),t=t.parentNode;else return null}}function jp(r,e){for(let t=r,n=e;;){if(t.nodeType==3&&n<t.nodeValue.length)return{node:t,offset:n};if(t.nodeType==1&&n<t.childNodes.length){if(t.contentEditable=="false")return null;t=t.childNodes[n],n=0}else if(t.parentNode&&!Ea(t))n=In(t)+1,t=t.parentNode;else return null}}class Br{constructor(e,t,n=!0){this.node=e,this.offset=t,this.precise=n}static before(e,t){return new Br(e.parentNode,In(e),t)}static after(e,t){return new Br(e.parentNode,In(e)+1,t)}}var ut=(function(r){return r[r.LTR=0]="LTR",r[r.RTL=1]="RTL",r})(ut||(ut={}));const bs=ut.LTR,Fu=ut.RTL;function Yp(r){let e=[];for(let t=0;t<r.length;t++)e.push(1<<+r[t]);return e}const g$=Yp("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),O$=Yp("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),Uc=Object.create(null),Wr=[];for(let r of["()","[]","{}"]){let e=r.charCodeAt(0),t=r.charCodeAt(1);Uc[e]=t,Uc[t]=-e}function Fp(r){return r<=247?g$[r]:1424<=r&&r<=1524?2:1536<=r&&r<=1785?O$[r-1536]:1774<=r&&r<=2220?4:8192<=r&&r<=8204?256:64336<=r&&r<=65023?4:1}const v$=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class Hr{get dir(){return this.level%2?Fu:bs}constructor(e,t,n){this.from=e,this.to=t,this.level=n}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,n,s){let i=-1;for(let o=0;o<e.length;o++){let a=e[o];if(a.from<=t&&a.to>=t){if(a.level==n)return o;(i<0||(s!=0?s<0?a.from<t:a.to>t:e[i].level>a.level))&&(i=o)}}if(i<0)throw new RangeError("Index out of range");return i}}function Up(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++){let n=r[t],s=e[t];if(n.from!=s.from||n.to!=s.to||n.direction!=s.direction||!Up(n.inner,s.inner))return!1}return!0}const lt=[];function b$(r,e,t,n,s){for(let i=0;i<=n.length;i++){let o=i?n[i-1].to:e,a=i<n.length?n[i].from:t,l=i?256:s;for(let c=o,u=l,h=l;c<a;c++){let f=Fp(r.charCodeAt(c));f==512?f=u:f==8&&h==4&&(f=16),lt[c]=f==4?2:f,f&7&&(h=f),u=f}for(let c=o,u=l,h=l;c<a;c++){let f=lt[c];if(f==128)c<a-1&&u==lt[c+1]&&u&24?f=lt[c]=u:lt[c]=256;else if(f==64){let g=c+1;for(;g<a&<[g]==64;)g++;let p=c&&u==8||g<t&<[g]==8?h==1?1:8:256;for(let O=c;O<g;O++)lt[O]=p;c=g-1}else f==8&&h==1&&(lt[c]=1);u=f,f&7&&(h=f)}}}function x$(r,e,t,n,s){let i=s==1?2:1;for(let o=0,a=0,l=0;o<=n.length;o++){let c=o?n[o-1].to:e,u=o<n.length?n[o].from:t;for(let h=c,f,g,p;h<u;h++)if(g=Uc[f=r.charCodeAt(h)])if(g<0){for(let O=a-3;O>=0;O-=3)if(Wr[O+1]==-g){let b=Wr[O+2],x=b&2?s:b&4?b&1?i:s:0;x&&(lt[h]=lt[Wr[O]]=x),a=O;break}}else{if(Wr.length==189)break;Wr[a++]=h,Wr[a++]=f,Wr[a++]=l}else if((p=lt[h])==2||p==1){let O=p==s;l=O?0:1;for(let b=a-3;b>=0;b-=3){let x=Wr[b+2];if(x&2)break;if(O)Wr[b+2]|=2;else{if(x&4)break;Wr[b+2]|=4}}}}}function y$(r,e,t,n){for(let s=0,i=n;s<=t.length;s++){let o=s?t[s-1].to:r,a=s<t.length?t[s].from:e;for(let l=o;l<a;){let c=lt[l];if(c==256){let u=l+1;for(;;)if(u==a){if(s==t.length)break;u=t[s++].to,a=s<t.length?t[s].from:e}else if(lt[u]==256)u++;else break;let h=i==1,f=(u<e?lt[u]:n)==1,g=h==f?h?1:2:n;for(let p=u,O=s,b=O?t[O-1].to:r;p>l;)p==b&&(p=t[--O].from,b=O?t[O-1].to:r),lt[--p]=g;l=u}else i=c,l++}}}function Gc(r,e,t,n,s,i,o){let a=n%2?2:1;if(n%2==s%2)for(let l=e,c=0;l<t;){let u=!0,h=!1;if(c==i.length||l<i[c].from){let O=lt[l];O!=a&&(u=!1,h=O==16)}let f=!u&&a==1?[]:null,g=u?n:n+1,p=l;e:for(;;)if(c<i.length&&p==i[c].from){if(h)break e;let O=i[c];if(!u)for(let b=O.to,x=c+1;;){if(b==t)break e;if(x<i.length&&i[x].from==b)b=i[x++].to;else{if(lt[b]==a)break e;break}}if(c++,f)f.push(O);else{O.from>l&&o.push(new Hr(l,O.from,g));let b=O.direction==bs!=!(g%2);Hc(r,b?n+1:n,s,O.inner,O.from,O.to,o),l=O.to}p=O.to}else{if(p==t||(u?lt[p]!=a:lt[p]==a))break;p++}f?Gc(r,l,p,n+1,s,f,o):l<p&&o.push(new Hr(l,p,g)),l=p}else for(let l=t,c=i.length;l>e;){let u=!0,h=!1;if(!c||l>i[c-1].to){let O=lt[l-1];O!=a&&(u=!1,h=O==16)}let f=!u&&a==1?[]:null,g=u?n:n+1,p=l;e:for(;;)if(c&&p==i[c-1].to){if(h)break e;let O=i[--c];if(!u)for(let b=O.from,x=c;;){if(b==e)break e;if(x&&i[x-1].to==b)b=i[--x].from;else{if(lt[b-1]==a)break e;break}}if(f)f.push(O);else{O.to<l&&o.push(new Hr(O.to,l,g));let b=O.direction==bs!=!(g%2);Hc(r,b?n+1:n,s,O.inner,O.from,O.to,o),l=O.from}p=O.from}else{if(p==e||(u?lt[p-1]!=a:lt[p-1]==a))break;p--}f?Gc(r,p,l,n+1,s,f,o):p<l&&o.push(new Hr(p,l,g)),l=p}}function Hc(r,e,t,n,s,i,o){let a=e%2?2:1;b$(r,s,i,n,a),x$(r,s,i,n,a),y$(s,i,n,a),Gc(r,s,i,e,t,n,o)}function k$(r,e,t){if(!r)return[new Hr(0,0,e==Fu?1:0)];if(e==bs&&!t.length&&!v$.test(r))return Gp(r.length);if(t.length)for(;r.length>lt.length;)lt[lt.length]=256;let n=[],s=e==bs?0:1;return Hc(r,s,s,t,0,r.length,n),n}function Gp(r){return[new Hr(0,r,0)]}let Hp="";function w$(r,e,t,n,s){var i;let o=n.head-r.from,a=Hr.find(e,o,(i=n.bidiLevel)!==null&&i!==void 0?i:-1,n.assoc),l=e[a],c=l.side(s,t);if(o==c){let f=a+=s?1:-1;if(f<0||f>=e.length)return null;l=e[a=f],o=l.side(!s,t),c=l.side(s,t)}let u=Tt(r.text,o,l.forward(s,t));(u<l.from||u>l.to)&&(u=c),Hp=r.text.slice(Math.min(o,u),Math.max(o,u));let h=a==(s?e.length-1:0)?null:e[a+(s?1:-1)];return h&&u==c&&h.level+(s?0:1)<l.level?ne.cursor(h.side(!s,t)+r.from,h.forward(s,t)?1:-1,h.level):ne.cursor(u+r.from,l.forward(s,t)?-1:1,l.level)}function S$(r,e,t){for(let n=e;n<t;n++){let s=Fp(r.charCodeAt(n));if(s==1)return bs;if(s==2||s==4)return Fu}return bs}const Kp=Te.define(),Jp=Te.define(),eg=Te.define(),tg=Te.define(),Kc=Te.define(),rg=Te.define(),ng=Te.define(),Uu=Te.define(),Gu=Te.define(),sg=Te.define({combine:r=>r.some(e=>e)}),ig=Te.define({combine:r=>r.some(e=>e)}),og=Te.define();class Ns{constructor(e,t="nearest",n="nearest",s=5,i=5,o=!1){this.range=e,this.y=t,this.x=n,this.yMargin=s,this.xMargin=i,this.isSnapshot=o}map(e){return e.empty?this:new Ns(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Ns(ne.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const qo=Ne.define({map:(r,e)=>r.map(e)}),ag=Ne.define();function rr(r,e,t){let n=r.facet(tg);n.length?n[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}const mn=Te.define({combine:r=>r.length?r[0]:!0});let $$=0;const Es=Te.define({combine(r){return r.filter((e,t)=>{for(let n=0;n<t;n++)if(r[n].plugin==e.plugin)return!1;return!0})}});class xt{constructor(e,t,n,s,i){this.id=e,this.create=t,this.domEventHandlers=n,this.domEventObservers=s,this.baseExtensions=i(this),this.extension=this.baseExtensions.concat(Es.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(Es.of({plugin:this,arg:e}))}static define(e,t){const{eventHandlers:n,eventObservers:s,provide:i,decorations:o}=t||{};return new xt($$++,e,n,s,a=>{let l=[];return o&&l.push(bl.of(c=>{let u=c.plugin(a);return u?o(u):De.none})),i&&l.push(i(a)),l})}static fromClass(e,t){return xt.define((n,s)=>new e(n,s),t)}}class Dl{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(n){if(rr(t.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){rr(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(n){rr(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const lg=Te.define(),Hu=Te.define(),bl=Te.define(),cg=Te.define(),Ku=Te.define(),So=Te.define(),ug=Te.define();function $d(r,e){let t=r.state.facet(ug);if(!t.length)return t;let n=t.map(i=>i instanceof Function?i(r):i),s=[];return Ge.spans(n,e.from,e.to,{point(){},span(i,o,a,l){let c=i-e.from,u=o-e.from,h=s;for(let f=a.length-1;f>=0;f--,l--){let g=a[f].spec.bidiIsolate,p;if(g==null&&(g=S$(e.text,c,u)),l>0&&h.length&&(p=h[h.length-1]).to==c&&p.direction==g)p.to=u,h=p.inner;else{let O={from:c,to:u,direction:g,inner:[]};h.push(O),h=O.inner}}}}),s}const hg=Te.define();function Ju(r){let e=0,t=0,n=0,s=0;for(let i of r.state.facet(hg)){let o=i(r);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:n,bottom:s}}const Bi=Te.define();class wr{constructor(e,t,n,s){this.fromA=e,this.toA=t,this.fromB=n,this.toB=s}join(e){return new wr(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>n.toA)){if(s.toA<n.fromA)break;n=n.join(s),e.splice(t-1,1)}}return e.splice(t,0,n),e}static extendWithRanges(e,t){if(t.length==0)return e;let n=[];for(let s=0,i=0,o=0;;){let a=s<e.length?e[s].fromB:1e9,l=i<t.length?t[i]:1e9,c=Math.min(a,l);if(c==1e9)break;let u=c+o,h=c,f=u;for(;;)if(i<t.length&&t[i]<=h){let g=t[i+1];i+=2,h=Math.max(h,g);for(let p=s;p<e.length&&e[p].fromB<=h;p++)o=e[p].toA-e[p].toB;f=Math.max(f,g+o)}else if(s<e.length&&e[s].fromB<=h){let g=e[s++];h=Math.max(h,g.toB),f=Math.max(f,g.toA),o=g.toA-g.toB}else break;n.push(new wr(u,f,c,h))}return n}}class La{constructor(e,t,n){this.view=e,this.state=t,this.transactions=n,this.flags=0,this.startState=e.state,this.changes=St.empty(this.startState.doc.length);for(let i of n)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,o,a,l)=>s.push(new wr(i,o,a,l))),this.changedRanges=s}static create(e,t,n){return new La(e,t,n)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const C$=[];class kt{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return C$}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&a$(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let n=t;for(let s of this.children){if(s==e)return n;n+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let n=In(this.dom),s=this.length?e>0:t>0;return new Br(this.parent.dom,n+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof yl)return e;return null}static get(e){return e.cmTile}}class xl extends kt{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,n=null,s,i=e?.node==t?e:null,o=0;for(let a of this.children){if(a.sync(e),o+=a.length+a.breakAfter,s=n?n.nextSibling:t.firstChild,i&&s!=a.dom&&(i.written=!0),a.dom.parentNode==t)for(;s&&s!=a.dom;)s=Cd(s);else t.insertBefore(a.dom,s);n=a.dom}for(s=n?n.nextSibling:t.firstChild,i&&s&&(i.written=!0);s;)s=Cd(s);this.length=o}}function Cd(r){let e=r.nextSibling;return r.parentNode.removeChild(r),e}class yl extends xl{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=kt.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],n=this,s=0,i=0;;)if(s==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&i++,s=t.pop()}else{let o=n.children[s++];if(o instanceof pn)t.push(s),n=o,s=0;else{let a=i+o.length,l=e(o,i);if(l!==void 0)return l;i=a+o.breakAfter}}}resolveBlock(e,t){let n,s=-1,i,o=-1;if(this.blockTiles((a,l)=>{let c=l+a.length;if(e>=l&&e<=c){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(n=void 0)}(l<e||e==c&&(t<-1?a.length:a.covers(1)))&&(!n||!a.isWidget()&&n.isWidget())&&(n=a,s=e-l),(c>e||e==l&&(t>1?a.length:a.covers(-1)))&&(!i||!a.isWidget()&&i.isWidget())&&(i=a,o=e-l)}}),!n&&!i)throw new Error("No tile at position "+e);return n&&t<0||!i?{tile:n,offset:s}:{tile:i,offset:o}}}class pn extends xl{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let n=new pn(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}}class Hs extends xl{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,n){let s=new Hs(t||document.createElement("div"),e);return(!t||!n)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,t,n){let s=null,i=-1,o=null,a=-1;function l(u,h){for(let f=0,g=0;f<u.children.length&&g<=h;f++){let p=u.children[f],O=g+p.length;O>=h&&(p.isComposite()?l(p,h-g):(!o||o.isHidden&&(t>0||n&&P$(o,p)))&&(O>h||p.flags&32)?(o=p,a=h-g):(g<h||p.flags&16&&!p.isHidden)&&(s=p,i=h-g)),g=O}}l(this,e);let c=(t<0?s:o)||s||o;return c?{tile:c,offset:c==s?i:a}:null}coordsIn(e,t){let n=this.resolveInline(e,t,!0);return n?n.tile.coordsIn(Math.max(0,n.offset),t):Q$(this)}domIn(e,t){let n=this.resolveInline(e,t);if(n){let{tile:s,offset:i}=n;if(this.dom.contains(s.dom))return s.isText()?new Br(s.dom,Math.min(s.dom.nodeValue.length,i)):s.domPosFor(i,s.flags&16?1:s.flags&32?-1:t);let o=n.tile.parent,a=!1;for(let l of o.children){if(a)return new Br(l.dom,0);l==n.tile&&(a=!0)}}return new Br(this.dom,0)}}function Q$(r){let e=r.dom.lastChild;if(!e)return r.dom.getBoundingClientRect();let t=xa(e);return t[t.length-1]||null}function P$(r,e){let t=r.coordsIn(0,1),n=e.coordsIn(0,1);return t&&n&&n.top<t.bottom}class er extends xl{constructor(e,t){super(e),this.mark=t}get domAttrs(){return this.mark.attrs}static of(e,t){let n=new er(t||document.createElement(e.tagName),e);return t||(n.flags|=4),n}}class ls extends kt{constructor(e,t){super(e,t.length),this.text=t}sync(e){this.flags&2||(super.sync(e),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text))}isText(){return!0}toString(){return JSON.stringify(this.text)}coordsIn(e,t){let n=this.dom.nodeValue.length;e>n&&(e=n);let s=e,i=e,o=0;e==0&&t<0||e==n&&t>=0?Ae.chrome||Ae.gecko||(e?(s--,o=1):i<n&&(i++,o=-1)):t<0?s--:i<n&&i++;let a=Ji(this.dom,s,i).getClientRects();if(!a.length)return null;let l=a[(o?o<0:t>=0)?0:a.length-1];return Ae.safari&&!o&&l.width==0&&(l=Array.prototype.find.call(a,c=>c.width)||l),o?Da(l,o<0):l||null}static of(e,t){let n=new ls(t||document.createTextNode(e),e);return t||(n.flags|=2),n}}class xs extends kt{constructor(e,t,n,s){super(e,t,s),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,n){let s=this.widget.coordsAt(this.dom,e,t);if(s)return s;if(n)return Da(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let i=this.dom.getClientRects(),o=null;if(!i.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?i.length-1:0;o=i[l],!(e>0?l==0:l==i.length-1||o.top<o.bottom);l+=a?-1:1);return Da(o,!a)}}get overrideDOMText(){if(!this.length)return tt.empty;let{root:e}=this;if(!e)return tt.empty;let t=this.posAtStart;return e.view.state.doc.slice(t,t+this.length)}destroy(){super.destroy(),this.widget.destroy(this.dom)}static of(e,t,n,s,i){return i||(i=e.toDOM(t),e.editable||(i.contentEditable="false")),new xs(i,n,e,s)}}class Xa extends kt{constructor(e){let t=document.createElement("img");t.className="cm-widgetBuffer",t.setAttribute("aria-hidden","true"),super(t,0,e)}get isHidden(){return!0}get overrideDOMText(){return tt.empty}coordsIn(e){return this.dom.getBoundingClientRect()}}class T${constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,n){let{tile:s,index:i,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(s.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(i==s.children.length){if(!e&&!a.length)break;n&&n.leave(s),o=!!s.breakAfter,{tile:s,index:i}=a.pop(),i++}else{let l=s.children[i],c=l.breakAfter;(t>0?l.length<=e:l.length<e)&&(!n||n.skip(l,0,l.length)!==!1||!l.isComposite)?(o=!!c,i++,e-=l.length):(a.push({tile:s,index:i}),s=l,i=0,n&&l.isComposite()&&n.enter(l))}else if(i==s.length)o=!!s.breakAfter,{tile:s,index:i}=a.pop(),i++;else if(e){let l=Math.min(e,s.length-i);n&&n.skip(s,i,i+l),e-=l,i+=l}else break;return this.tile=s,this.index=i,this.beforeBreak=o,this}get root(){return this.parents.length?this.parents[0].tile:this.tile}}class M${constructor(e,t,n,s){this.from=e,this.to=t,this.wrapper=n,this.rank=s}}class A${constructor(e,t,n){this.cache=e,this.root=t,this.blockWrappers=n,this.curLine=null,this.lastBlock=null,this.afterWidget=null,this.pos=0,this.wrappers=[],this.wrapperPos=0}addText(e,t,n,s){var i;this.flushBuffer();let o=this.ensureMarks(t,n),a=o.lastChild;if(a&&a.isText()&&!(a.flags&8)&&a.length+e.length<512){this.cache.reused.set(a,2);let l=o.children[o.children.length-1]=new ls(a.dom,a.text+e);l.parent=o}else o.append(s||ls.of(e,(i=this.cache.find(ls))===null||i===void 0?void 0:i.dom));this.pos+=e.length,this.afterWidget=null}addComposition(e,t){let n=this.curLine;n.dom!=t.line.dom&&(n.setDOM(this.cache.reused.has(t.line)?Ll(t.line.dom):t.line.dom),this.cache.reused.set(t.line,2));let s=n;for(let a=t.marks.length-1;a>=0;a--){let l=t.marks[a],c=s.lastChild;if(c instanceof er&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Ll(l.dom)),s=c;else{if(this.cache.reused.get(l)){let h=kt.get(l.dom);h&&h.setDOM(Ll(l.dom))}let u=er.of(l.mark,l.dom);s.append(u),s=u}this.cache.reused.set(l,2)}let i=kt.get(e.text);i&&this.cache.reused.set(i,2);let o=new ls(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,t,n){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let i=this.ensureMarks(t,n);!s&&!(e.flags&16)&&i.append(this.getBuffer(1)),i.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var n;e||(e=dg);let s=Hs.start(e,t||((n=this.cache.find(Hs))===null||n===void 0?void 0:n.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var n;let s=this.curLine;for(let i=e.length-1;i>=0;i--){let o=e[i],a;if(t>0&&(a=s.lastChild)&&a instanceof er&&a.mark.eq(o))s=a,t--;else{let l=er.of(o,(n=this.cache.find(er,c=>c.mark.eq(o)))===null||n===void 0?void 0:n.dom);s.append(l),s=l,t=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Qd(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(Ae.ios&&Qd(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Xl,0,32)||new xs(Xl.toDOM(),0,Xl,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to<this.pos&&this.wrappers.splice(e,1);for(let e=this.blockWrappers;e.value&&e.from<=this.pos;e.next())if(e.to>=this.pos){let t=new M$(e.from,e.to,e.value,e.rank),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-t.rank||this.wrappers[n-1].to-t.to)<0;)n--;this.wrappers.splice(n,0,t)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let n of this.wrappers){let s=t.lastChild;if(n.from<this.pos&&s instanceof pn&&s.wrapper.eq(n.wrapper))t=s;else{let i=pn.of(n.wrapper,(e=this.cache.find(pn,o=>o.wrapper.eq(n.wrapper)))===null||e===void 0?void 0:e.dom);t.append(i),t=i}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),n=this.cache.find(Xa,void 0,1);return n&&(n.flags=t),n||new Xa(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class _${constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:i,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let a=this.textOff=Math.min(e,s.length);return i?null:s.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,t);return this.textOff=t,n}}const Ia=[xs,Hs,ls,er,Xa,pn,yl];for(let r=0;r<Ia.length;r++)Ia[r].bucket=r;class R${constructor(e){this.view=e,this.buckets=Ia.map(()=>[]),this.index=Ia.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,n=2){let s=e.bucket,i=this.buckets[s],o=this.index[s];for(let a=i.length-1;a>=0;a--){let l=(a+o)%i.length,c=i[l];if((!t||t(c))&&!this.reused.has(c))return i.splice(l,1),l<o&&this.index[s]--,this.reused.set(c,n),c}return null}findWidget(e,t,n){let s=this.buckets[0];if(s.length)for(let i=0,o=0;;i++){if(i==s.length){if(o)return null;o=1,i=0}let a=s[i];if(!this.reused.has(a)&&(o==0?a.widget.compare(e):a.widget.constructor==e.constructor&&e.updateDOM(a.dom,this.view)))return s.splice(i,1),i<this.index[0]&&this.index[0]--,a.widget==e&&a.length==t&&(a.flags&497)==n?(this.reused.set(a,1),a):(this.reused.set(a,2),new xs(a.dom,t,e,a.flags&-498|n))}}reuse(e){return this.reused.set(e,1),e}maybeReuse(e,t=2){if(!this.reused.has(e))return this.reused.set(e,t),e.dom}clear(){for(let e=0;e<this.buckets.length;e++)this.buckets[e].length=this.index[e]=0}}class B${constructor(e,t,n,s,i){this.view=e,this.decorations=s,this.disallowBlockEffectsFor=i,this.openWidget=!1,this.openMarks=0,this.cache=new R$(e),this.text=new _$(e.state.doc),this.builder=new A$(this.cache,new yl(e,e.contentDOM),Ge.iter(n)),this.cache.reused.set(t,2),this.old=new T$(t),this.reuseWalker={skip:(o,a,l)=>{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let n=t&&this.getCompositionContext(t.text);for(let s=0,i=0,o=0;;){let a=o<e.length?e[o++]:null,l=a?a.fromA:this.old.root.length;if(l>s){let c=l-s;this.preserve(c,!o,!a),s=l,i+=c}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA<t.range.toA?1:-1),this.emit(i,t.range.fromB),this.cache.clear(),this.builder.addComposition(t,n),this.text.skip(t.range.toB-t.range.fromB),this.forward(t.range.fromA,a.toA),this.emit(t.range.toB,a.toB)):(this.forward(a.fromA,a.toA),this.emit(i,a.toB)),i=a.toB,s=a.toA}return this.builder.curLine&&this.builder.endLine(),this.builder.root}preserve(e,t,n){let s=D$(this.old),i=this.openMarks;this.old.advance(e,n?1:-1,{skip:(o,a,l)=>{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let c=l>0||a<o.length?xs.of(o.widget,this.view,l-a,o.flags&496,this.cache.maybeReuse(o)):this.cache.reuse(o);c.flags&256?(c.flags&=-2,this.builder.addBlockWidget(c)):(this.builder.ensureLine(null),this.builder.addInlineWidget(c,s,i),i=s.length)}else if(o.isText())this.builder.ensureLine(null),!a&&l==o.length?this.builder.addText(o.text,s,i,this.cache.reuse(o)):(this.cache.add(o),this.builder.addText(o.text.slice(a,l),s,i)),i=s.length;else if(o.isLine())o.flags&=-2,this.cache.reused.set(o,1),this.builder.addLine(o);else if(o instanceof Xa)this.cache.add(o);else if(o instanceof er)this.builder.ensureLine(null),this.builder.addMark(o,s,i),this.cache.reused.set(o,1),i=s.length;else return!1;this.openWidget=!1},enter:o=>{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof er&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=i=0):o instanceof er&&(s.shift(),i=Math.min(i,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let n=null,s=this.builder,i=0,o=Ge.spans(this.decorations,e,t,{point:(a,l,c,u,h,f)=>{if(c instanceof vs){if(this.disallowBlockEffectsFor[f]){if(c.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(i=u.length,h>u.length)s.continueWidget(l-a);else{let g=c.widget||(c.block?Ks.block:Ks.inline),p=Z$(c),O=this.cache.findWidget(g,l-a,p)||xs.of(g,this.view,l-a,p);c.block?(c.startSide>0&&s.addLineStartIfNotCovered(n),s.addBlockWidget(O)):(s.ensureLine(n),s.addInlineWidget(O,u,h))}n=null}else n=E$(n,c);l>a&&this.text.skip(l-a)},span:(a,l,c,u)=>{for(let h=a;h<l;){let f=this.text.next(Math.min(512,l-h));f==null?(s.addLineStartIfNotCovered(n),s.addBreak(),h++):(s.ensureLine(n),s.addText(f,c,h==a?u:c.length),h+=f.length),n=null}}});s.addLineStartIfNotCovered(n),this.openWidget=o>i,this.openMarks=o}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let t=[],n=null;for(let s=e.parentNode;;s=s.parentNode){let i=kt.get(s);if(s==this.view.contentDOM)break;i instanceof er?t.push(i):i?.isLine()?n=i:i instanceof pn||(s.nodeName=="DIV"&&!n&&s!=this.view.contentDOM?n=new Hs(s,dg):n||t.push(er.of(new ko({tagName:s.nodeName.toLowerCase(),attributes:l$(s)}),s)))}return{line:n,marks:t}}}function Qd(r,e){let t=n=>{for(let s of n.children)if((e?s.isText():s.length)||t(s))return!0;return!1};return t(r)}function Z$(r){let e=r.isReplace?(r.startSide<0?64:0)|(r.endSide>0?128:0):r.startSide>0?32:16;return r.block&&(e|=256),e}const dg={class:"cm-line"};function E$(r,e){let t=e.spec.attributes,n=e.spec.class;return!t&&!n||(r||(r={class:"cm-line"}),t&&ju(t,r),n&&(r.class+=" "+n)),r}function D$(r){let e=[];for(let t=r.parents.length;t>1;t--){let n=t==r.parents.length?r.tile:r.parents[t].tile;n instanceof er&&e.push(n.mark)}return e}function Ll(r){let e=kt.get(r);return e&&e.setDOM(r.cloneNode()),r}class Ks extends sn{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}Ks.inline=new Ks("span");Ks.block=new Ks("div");const Xl=new class extends sn{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class Pd{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=De.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new yl(e,e.contentDOM),this.updateInner([new wr(0,0,0,e.state.doc.length)],null)}update(e){var t;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.every(({fromA:u,toA:h})=>h<this.minWidthFrom||u>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!j$(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?X$(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:u,to:h}=this.hasComposition;n=new wr(u,h,e.changes.mapPos(u,-1),e.changes.mapPos(h,1)).addToSet(n.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(Ae.ie||Ae.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=z$(o,this.decorations,e.changes);l.length&&(n=wr.extendWithRanges(n,l));let c=W$(a,this.blockWrappers,e.changes);return c.length&&(n=wr.extendWithRanges(n,c)),i&&!n.some(u=>u.fromA<=i.range.fromA&&u.toA>=i.range.toA)&&(n=i.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let o=this.tile,a=new B$(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);this.tile=a.run(e,t),Jc(o,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let i=Ae.chrome||Ae.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(i),i&&(i.written||n.selectionRange.focusNode!=i.node||!this.tile.dom.contains(i.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let i of this.tile.children)i.isWidget()&&i.widget instanceof Il&&s.push(i.dom);n.updateGaps(s)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let n of t.effects)n.is(ag)&&(this.editContextFormatting=n.value)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let{dom:n}=this.tile,s=this.view.root.activeElement,i=s==n,o=!i&&!(this.view.state.facet(mn)||n.tabIndex>-1)&&Vi(n,this.view.observer.selectionRange)&&!(s&&n.contains(s));if(!(i||t||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c,u;if(l.empty?u=c=this.inlineDOMNearPos(l.anchor,l.assoc||1):(u=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),c=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),Ae.gecko&&l.empty&&!this.hasComposition&&L$(c)){let f=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(f,c.node.childNodes[c.offset]||null)),c=u=new Br(f,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!zi(c.node,c.offset,h.anchorNode,h.anchorOffset)||!zi(u.node,u.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{Ae.android&&Ae.chrome&&n.contains(h.focusNode)&&q$(h.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let f=Ki(this.view.root);if(f)if(l.empty){if(Ae.gecko){let g=I$(c.node,c.offset);if(g&&g!=3){let p=(g==1?qp:jp)(c.node,c.offset);p&&(c=new Br(p.node,p.offset))}}f.collapse(c.node,c.offset),l.bidiLevel!=null&&f.caretBidiLevel!==void 0&&(f.caretBidiLevel=l.bidiLevel)}else if(f.extend){f.collapse(c.node,c.offset);try{f.extend(u.node,u.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,u]=[u,c]),g.setEnd(u.node,u.offset),g.setStart(c.node,c.offset),f.removeAllRanges(),f.addRange(g)}o&&this.view.root.activeElement==n&&(n.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(c,u)),this.impreciseAnchor=c.precise?null:new Br(h.anchorNode,h.anchorOffset),this.impreciseHead=u.precise?null:new Br(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&zi(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=Ki(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let a=o.posAtStart;if(t.head==a||t.head==a+o.length)return;let l=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!l||!c||l.bottom>c.top)return;let u=this.domAtPos(t.head+t.assoc,t.assoc);n.collapse(u.node,u.offset),n.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=t.from&&n.collapse(s,i)}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=n.posAtStart;if(n.isComposite()){let i;if(e==n.dom)i=n.dom.childNodes[t];else{let o=xn(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==n.dom)break;o==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?o=-1:o=1),e=a}o<0?i=e:i=e.nextSibling}if(i==n.dom.firstChild)return s;for(;i&&!kt.get(i);)i=i.nextSibling;if(!i)return s+n.length;for(let o=0,a=s;;o++){let l=n.children[o];if(l.dom==i)return a;a+=l.length+l.breakAfter}}else return n.isText()?e==n.dom?s+t:s+(t?n.length:0):s}domAtPos(e,t){let{tile:n,offset:s}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(e,t):n.domIn(s,t)}inlineDOMNearPos(e,t){let n,s=-1,i=!1,o,a=-1,l=!1;return this.tile.blockTiles((c,u)=>{if(c.isWidget()){if(c.flags&32&&u>=e)return!0;c.flags&16&&(i=!0)}else{let h=u+c.length;if(u<=e&&(n=c,s=e-u,i=h<e),h>=e&&!o&&(o=c,a=e-u,l=u>e),u>e&&o)return!0}}),!n&&!o?this.domAtPos(e,t):(i&&o?n=null:l&&n&&(o=null),n&&t<0||!o?n.domIn(s,t):o.domIn(a,t))}coordsAt(e,t){let{tile:n,offset:s}=this.tile.resolveBlock(e,t);return n.isWidget()?n.widget instanceof Il?null:n.coordsInWidget(s,t,!0):n.coordsIn(s,t)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function s(i,o){if(i.isComposite())for(let a of i.children){if(a.length>=o){let l=s(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(i.isText()&&o<i.length){let a=Tt(i.text,o);if(a==o)return null;let l=Ji(i.dom,o,a).getClientRects();for(let c=0;c<l.length;c++){let u=l[c];if(c==l.length-1||u.top<u.bottom&&u.left<u.right)return u}}return null}return s(t,n)}measureVisibleLineHeights(e){let t=[],{from:n,to:s}=e,i=this.view.contentDOM.clientWidth,o=i>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==ut.LTR,c=0,u=(h,f,g)=>{for(let p=0;p<h.children.length&&!(f>s);p++){let O=h.children[p],b=f+O.length,x=O.dom.getBoundingClientRect(),{height:k}=x;if(g&&!p&&(c+=x.top-g.top),O instanceof pn)b>n&&u(O,f,x);else if(f>=n&&(c>0&&t.push(-c),t.push(k+c),c=0,o)){let w=O.dom.lastChild,S=w?xa(w):[];if(S.length){let P=S[S.length-1],X=l?P.right-x.left:x.right-P.left;X>a&&(a=X,this.minWidth=i,this.minWidthFrom=f,this.minWidthTo=b)}}g&&p==h.children.length-1&&(c+=g.bottom-x.bottom),f=b+O.breakAfter}};return u(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?ut.RTL:ut.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let c of o.children){if(!c.isText()||/[^ -~]/.test(c.text))return;let u=xa(c.dom);if(u.length!=1)return;a+=u[0].width,l=u[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),n,s,i;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=xa(t.firstChild)[0];n=t.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,i=o&&o.height?o.height:n,t.remove()}),{lineHeight:n,charWidth:s,textHeight:i}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,s=0;;s++){let i=s==t.viewports.length?null:t.viewports[s],o=i?i.from-1:this.view.state.doc.length;if(o>n){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(De.replace({widget:new Il(a),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!i)break;n=i.to+1}return De.set(e)}updateDeco(){let e=1,t=this.view.state.facet(bl).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),n=!1,s=this.view.state.facet(Ku).map((i,o)=>{let a=typeof i=="function";return a&&(n=!0),a?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=n,t.push(Ge.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;this.blockWrappers=this.view.state.facet(cg).map(i=>typeof i=="function"?i(this.view):i)}scrollIntoView(e){if(e.isSnapshot){let c=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=c.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let c of this.view.state.facet(og))try{if(c(this.view,e.range,e))return!0}catch(u){rr(this.view.state,u,"scroll handler")}let{range:t}=e,n=this.coordsAt(t.head,t.empty?t.assoc:t.head>t.anchor?-1:1),s;if(!n)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(n={left:Math.min(n.left,s.left),top:Math.min(n.top,s.top),right:Math.max(n.right,s.right),bottom:Math.max(n.bottom,s.bottom)});let i=Ju(this.view),o={left:n.left-i.left,top:n.top-i.top,right:n.right+i.right,bottom:n.bottom+i.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(h$(this.view.scrollDOM,o,t.head<t.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,a),-a),Math.max(Math.min(e.yMargin,l),-l),this.view.textDirection==ut.LTR),window.visualViewport&&window.innerHeight-window.visualViewport.height>1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottom<window.pageYOffset+window.visualViewport.offsetTop)){let c=this.view.docView.lineAt(t.head,1);c&&c.dom.scrollIntoView({block:"nearest"})}}lineHasWidget(e){let t=n=>n.isWidget()||n.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Jc(this.tile)}}function Jc(r,e){let t=e?.get(r);if(t!=1){t==null&&r.destroy();for(let n of r.children)Jc(n,e)}}function L$(r){return r.node.nodeType==1&&r.node.firstChild&&(r.offset==0||r.node.childNodes[r.offset-1].contentEditable=="false")&&(r.offset==r.node.childNodes.length||r.node.childNodes[r.offset].contentEditable=="false")}function fg(r,e){let t=r.observer.selectionRange;if(!t.focusNode)return null;let n=qp(t.focusNode,t.focusOffset),s=jp(t.focusNode,t.focusOffset),i=n||s;if(s&&n&&s.node!=n.node){let a=kt.get(s.node);if(!a||a.isText()&&a.text!=s.node.nodeValue)i=s;else if(r.docView.lastCompositionAfterCursor){let l=kt.get(n.node);!l||l.isText()&&l.text!=n.node.nodeValue||(i=s)}}if(r.docView.lastCompositionAfterCursor=i!=n,!i)return null;let o=e-i.offset;return{from:o,to:o+i.node.nodeValue.length,node:i.node}}function X$(r,e,t){let n=fg(r,t);if(!n)return null;let{node:s,from:i,to:o}=n,a=s.nodeValue;if(/[\n\r]/.test(a)||r.state.doc.sliceString(n.from,n.to)!=a)return null;let l=e.invertedDesc;return{range:new wr(l.mapPos(i),l.mapPos(o),i,o),text:s}}function I$(r,e){return r.nodeType!=1?0:(e&&r.childNodes[e-1].contentEditable=="false"?1:0)|(e<r.childNodes.length&&r.childNodes[e].contentEditable=="false"?2:0)}let V$=class{constructor(){this.changes=[]}compareRange(e,t){Vs(e,t,this.changes)}comparePoint(e,t){Vs(e,t,this.changes)}boundChange(e){Vs(e,e,this.changes)}};function z$(r,e,t){let n=new V$;return Ge.compare(r,e,t,n),n.changes}class N${constructor(){this.changes=[]}compareRange(e,t){Vs(e,t,this.changes)}comparePoint(){}boundChange(e){Vs(e,e,this.changes)}}function W$(r,e,t){let n=new N$;return Ge.compare(r,e,t,n),n.changes}function q$(r,e){for(let t=r;t&&t!=e;t=t.assignedSlot||t.parentNode)if(t.nodeType==1&&t.contentEditable=="false")return!0;return!1}function j$(r,e){let t=!1;return e&&r.iterChangedRanges((n,s)=>{n<e.to&&s>e.from&&(t=!0)}),t}class Il extends sn{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function Y$(r,e,t=1){let n=r.charCategorizer(e),s=r.doc.lineAt(e),i=e-s.from;if(s.length==0)return ne.cursor(e);i==0?t=1:i==s.length&&(t=-1);let o=i,a=i;t<0?o=Tt(s.text,i,!1):a=Tt(s.text,i);let l=n(s.text.slice(o,a));for(;o>0;){let c=Tt(s.text,o,!1);if(n(s.text.slice(c,o))!=l)break;o=c}for(;a<s.length;){let c=Tt(s.text,a);if(n(s.text.slice(a,c))!=l)break;a=c}return ne.range(o+s.from,a+s.from)}function F$(r,e,t,n,s){let i=Math.round((n-e.left)*r.defaultCharacterWidth);if(r.lineWrapping&&t.height>r.defaultLineHeight*1.5){let a=r.viewState.heightOracle.textHeight,l=Math.floor((s-t.top-(r.defaultLineHeight-a)*.5)/a);i+=l*r.viewState.heightOracle.lineLength}let o=r.state.sliceDoc(t.from,t.to);return t.from+Vc(o,i,r.state.tabSize)}function eu(r,e,t){let n=r.lineBlockAt(e);if(Array.isArray(n.type)){let s;for(let i of n.type){if(i.from>e)break;if(!(i.to<e)){if(i.from<e&&i.to>e)return i;(!s||i.type==Dt.Text&&(s.type!=i.type||(t<0?i.from<e:i.to>e)))&&(s=i)}}return s||n}return n}function U$(r,e,t,n){let s=eu(r,e.head,e.assoc||-1),i=!n||s.type!=Dt.Text||!(r.lineWrapping||s.widgetLineBreaks)?null:r.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let o=r.dom.getBoundingClientRect(),a=r.textDirectionAt(s.from),l=r.posAtCoords({x:t==(a==ut.LTR)?o.right-1:o.left+1,y:(i.top+i.bottom)/2});if(l!=null)return ne.cursor(l,t?-1:1)}return ne.cursor(t?s.to:s.from,t?-1:1)}function Td(r,e,t,n){let s=r.state.doc.lineAt(e.head),i=r.bidiSpans(s),o=r.textDirectionAt(s.from);for(let a=e,l=null;;){let c=w$(s,i,o,a,t),u=Hp;if(!c){if(s.number==(t?r.state.doc.lines:1))return a;u=`
|
|
18
|
-
`,s=r.state.doc.line(s.number+(t?1:-1)),i=r.bidiSpans(s),c=r.visualLineSide(s,!t)}if(l){if(!l(u))return a}else{if(!n)return c;l=n(u)}a=c}}function G$(r,e,t){let n=r.state.charCategorizer(e),s=n(t);return i=>{let o=n(i);return s==mt.Space&&(s=o),s==o}}function H$(r,e,t,n){let s=e.head,i=t?1:-1;if(s==(t?r.state.doc.length:0))return ne.cursor(s,e.assoc);let o=e.goalColumn,a,l=r.contentDOM.getBoundingClientRect(),c=r.coordsAtPos(s,(e.empty?e.assoc:0)||(t?1:-1)),u=r.documentTop;if(c)o==null&&(o=c.left-l.left),a=i<0?c.top:c.bottom;else{let p=r.viewState.lineBlockAt(s);o==null&&(o=Math.min(l.right-l.left,r.defaultCharacterWidth*(s-p.from))),a=(i<0?p.top:p.bottom)+u}let h=l.left+o,f=n??r.viewState.heightOracle.textHeight>>1,g=tu(r,{x:h,y:a+f*i},!1,i);return ne.cursor(g.pos,g.assoc,void 0,o)}function Ni(r,e,t){for(;;){let n=0;for(let s of r)s.between(e-1,e+1,(i,o,a)=>{if(e>i&&e<o){let l=n||t||(e-i<o-e?-1:1);e=l<0?i:o,n=l}});if(!n)return e}}function mg(r,e){let t=null;for(let n=0;n<e.ranges.length;n++){let s=e.ranges[n],i=null;if(s.empty){let o=Ni(r,s.from,0);o!=s.from&&(i=ne.cursor(o,-1))}else{let o=Ni(r,s.from,-1),a=Ni(r,s.to,1);(o!=s.from||a!=s.to)&&(i=ne.range(s.from==s.anchor?o:a,s.from==s.head?o:a))}i&&(t||(t=e.ranges.slice()),t[n]=i)}return t?ne.create(t,e.mainIndex):e}function Vl(r,e,t){let n=Ni(r.state.facet(So).map(s=>s(r)),t.from,e.head>t.from?-1:1);return n==t.from?t:ne.cursor(n,n<t.from?1:-1)}class Gr{constructor(e,t){this.pos=e,this.assoc=t}}function tu(r,e,t,n){let s=r.contentDOM.getBoundingClientRect(),i=s.top+r.viewState.paddingTop,{x:o,y:a}=e,l=a-i,c;for(;;){if(l<0)return new Gr(0,1);if(l>r.viewState.docHeight)return new Gr(r.state.doc.length,-1);if(c=r.elementAtHeight(l),n==null)break;if(c.type==Dt.Text){if(n<0?c.to<r.viewport.from:c.from>r.viewport.to)break;let f=r.docView.coordsAt(n<0?c.from:c.to,n>0?-1:1);if(f&&(n<0?f.top<=l+i:f.bottom>=l+i))break}let h=r.viewState.heightOracle.textHeight/2;l=n>0?c.bottom+h:c.top-h}if(r.viewport.from>=c.to||r.viewport.to<=c.from){if(t)return null;if(c.type==Dt.Text){let h=F$(r,s,c,o,a);return new Gr(h,h==c.from?1:-1)}}if(c.type!=Dt.Text)return l<(c.top+c.bottom)/2?new Gr(c.from,1):new Gr(c.to,-1);let u=r.docView.lineAt(c.from,2);return(!u||u.length!=c.length)&&(u=r.docView.lineAt(c.from,-2)),new K$(r,o,a,r.textDirectionAt(c.from)).scanTile(u,c.from)}class K${constructor(e,t,n,s){this.view=e,this.x=t,this.y=n,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:n,spans:s}=this.bidiSpansAt(e);return s[Hr.find(s,e-n.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:n,spans:s}=this.bidiSpansAt(e);return s[Hr.find(s,e-n.from,-1,t)].dir}bidiIn(e,t){let{spans:n,line:s}=this.bidiSpansAt(e);return n.length>1||n.length&&(n[0].level!=this.baseDir||n[0].to+s.from<t)}scan(e,t){let n=0,s=e.length-1,i=new Set,o=this.bidiIn(e[0],e[s]),a,l,c=-1,u=1e9,h;e:for(;n<s;){let g=s-n,p=n+s>>1;t:if(i.has(p)){let b=n+Math.floor(Math.random()*g);for(let x=0;x<g;x++){if(!i.has(b)){p=b;break t}b++,b==s&&(b=n)}break e}i.add(p);let O=t(p);if(O)for(let b=0;b<O.length;b++){let x=O[b],k=0;if(x.bottom<this.y)(!a||a.bottom<x.bottom)&&(a=x),k=1;else if(x.top>this.y)(!l||l.top>x.top)&&(l=x),k=-1;else{let w=x.left>this.x?this.x-x.left:x.right<this.x?this.x-x.right:0,S=Math.abs(w);S<u&&(c=p,u=S,h=x),w&&(k=w<0==(this.baseDir==ut.LTR)?-1:1)}k==-1&&(!o||this.baseDirAt(e[p],1))?s=p:k==1&&(!o||this.baseDirAt(e[p+1],-1))&&(n=p+1)}}if(!h){let g=a&&(!l||this.y-a.bottom<l.top-this.y)?a:l;return this.y=(g.top+g.bottom)/2,this.scan(e,t)}let f=(o?this.dirAt(e[c],1):this.baseDir)==ut.LTR;return{i:c,after:this.x>(h.left+h.right)/2==f}}scanText(e,t){let n=[];for(let i=0;i<e.length;i=Tt(e.text,i))n.push(t+i);n.push(t+e.length);let s=this.scan(n,i=>{let o=n[i]-t,a=n[i+1]-t;return Ji(e.dom,o,a).getClientRects()});return s.after?new Gr(n[s.i+1],-1):new Gr(n[s.i],1)}scanTile(e,t){if(!e.length)return new Gr(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let n=[t];for(let a=0,l=t;a<e.children.length;a++)n.push(l+=e.children[a].length);let s=this.scan(n,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Ji(l.dom,0,l.length)).getClientRects()}),i=e.children[s.i],o=n[s.i];return i.isText()?this.scanText(i,o):i.isComposite()?this.scanTile(i,o):s.after?new Gr(n[s.i+1],-1):new Gr(o,1)}}const Zi="";class J${constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(He.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Zi}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let s=e;;){this.findPointBefore(n,s);let i=this.text.length;this.readNode(s);let o=kt.get(s),a=s.nextSibling;if(a==t){o?.breakAfter&&!a&&n!=this.view.contentDOM&&this.lineBreak();break}let l=kt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:Ea(s))||Ea(a)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>i)&&!tC(a,t)&&this.lineBreak(),s=a}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,o=1,a;if(this.lineSeparator?(i=t.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(a=s.exec(t))&&(i=a.index,o=a[0].length),this.append(t.slice(n,i<0?t.length:i)),i<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=o-1);n=i+o}}readNode(e){let t=kt.get(e),n=t&&t.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let s=n.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(eC(e,n.node,n.offset)?t:0))}}function eC(r,e,t){for(;;){if(!e||t<xn(e))return!1;if(e==r)return!0;t=In(e)+1,e=e.parentNode}}function tC(r,e){let t;for(;!(r==e||!r);r=r.nextSibling){let n=kt.get(r);if(!n?.isWidget())return!1;n&&(t||(t=[])).push(n)}if(t)for(let n of t){let s=n.overrideDOMText;if(s?.length)return!1}return!0}class Md{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}}class rC{constructor(e,t,n,s){this.typeOver=s,this.bounds=null,this.text="",this.domChanged=t>-1;let{impreciseHead:i,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=pg(e.docView.tile,t,n,0))){let a=i||o?[]:sC(e),l=new J$(a,e);l.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=l.text,this.newSel=iC(a,this.bounds.from)}else{let a=e.observer.selectionRange,l=i&&i.node==a.focusNode&&i.offset==a.focusOffset||!Fc(e.contentDOM,a.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),c=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Fc(e.contentDOM,a.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),u=e.viewport;if((Ae.ios||Ae.chrome)&&e.state.selection.main.empty&&l!=c&&(u.from>0||u.to<e.state.doc.length)){let h=Math.min(l,c),f=Math.max(l,c),g=u.from-h,p=u.to-f;(g==0||g==1||h==0)&&(p==0||p==-1||f==e.state.doc.length)&&(l=0,c=e.state.doc.length)}e.inputState.composing>-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(ne.range(c,l)):this.newSel=ne.single(c,l)}}}function pg(r,e,t,n){if(r.isComposite()){let s=-1,i=-1,o=-1,a=-1;for(let l=0,c=n,u=n;l<r.children.length;l++){let h=r.children[l],f=c+h.length;if(c<e&&f>t)return pg(h,e,t,c);if(f>=e&&s==-1&&(s=l,i=c),c>t&&h.dom.parentNode==r.dom){o=l,a=u;break}u=f,c=f+h.breakAfter}return{from:i,to:a<0?n+r.length:a,startDOM:(s?r.children[s-1].dom.nextSibling:null)||r.dom.firstChild,endDOM:o<r.children.length&&o>=0?r.children[o].dom:null}}else return r.isText()?{from:n,to:n+r.length,startDOM:r.dom,endDOM:r.dom.nextSibling}:null}function gg(r,e){let t,{newSel:n}=e,s=r.state.selection.main,i=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:a}=e.bounds,l=s.from,c=null;(i===8||Ae.android&&e.text.length<a-o)&&(l=s.to,c="end");let u=Og(r.state.doc.sliceString(o,a,Zi),e.text,l-o,c);u&&(Ae.chrome&&i==13&&u.toB==u.from+2&&e.text.slice(u.from,u.toB)==Zi+Zi&&u.toB--,t={from:o+u.from,to:o+u.toA,insert:tt.of(e.text.slice(u.from,u.toB).split(Zi))})}else n&&(!r.hasFocus&&r.state.facet(mn)||Va(n,s))&&(n=null);if(!t&&!n)return!1;if(!t&&e.typeOver&&!s.empty&&n&&n.main.empty?t={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,s.to)}:(Ae.mac||Ae.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&r.contentDOM.getAttribute("autocorrect")=="off"?(n&&t.insert.length==2&&(n=ne.single(n.main.anchor-1,n.main.head-1)),t={from:t.from,to:t.to,insert:tt.of([t.insert.toString().replace("."," ")])}):t&&t.from>=s.from&&t.to<=s.to&&(t.from!=s.from||t.to!=s.to)&&s.to-s.from-(t.to-t.from)<=4?t={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,t.from).append(t.insert).append(r.state.doc.slice(t.to,s.to))}:r.state.doc.lineAt(s.from).to<s.to&&r.docView.lineHasWidget(s.to)&&r.inputState.insertingTextAt>Date.now()-50?t={from:s.from,to:s.to,insert:r.state.toText(r.inputState.insertingText)}:Ae.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==`
|
|
19
|
-
`&&r.lineWrapping&&(n&&(n=ne.single(n.main.anchor-1,n.main.head-1)),t={from:s.from,to:s.to,insert:tt.of([" "])}),t)return eh(r,t,n,i);if(n&&!Va(n,s)){let o=!1,a="select";return r.inputState.lastSelectionTime>Date.now()-50&&(r.inputState.lastSelectionOrigin=="select"&&(o=!0),a=r.inputState.lastSelectionOrigin,a=="select.pointer"&&(n=mg(r.state.facet(So).map(l=>l(r)),n))),r.dispatch({selection:n,scrollIntoView:o,userEvent:a}),!0}else return!1}function eh(r,e,t,n=-1){if(Ae.ios&&r.inputState.flushIOSKey(e))return!0;let s=r.state.selection.main;if(Ae.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&r.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&zs(r.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||n==8&&e.insert.length<e.to-e.from&&e.to>s.head)&&zs(r.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&zs(r.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();r.inputState.composing>=0&&r.inputState.composing++;let o,a=()=>o||(o=nC(r,e,t));return r.state.facet(rg).some(l=>l(r,e.from,e.to,i,a))||r.dispatch(a()),!0}function nC(r,e,t){let n,s=r.state,i=s.selection.main,o=-1;if(e.from==e.to&&e.from<i.from||e.from>i.to){let l=e.from<i.from?-1:1,c=l<0?i.from:i.to,u=Ni(s.facet(So).map(h=>h(r)),c,l);e.from==u&&(o=u)}if(o>-1)n={changes:e,selection:ne.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&r.inputState.composing<0){let l=i.from<e.from?s.sliceDoc(i.from,e.from):"",c=i.to>e.to?s.sliceDoc(e.to,i.to):"";n=s.replaceSelection(r.state.toText(l+e.insert.sliceString(0,void 0,r.state.lineBreak)+c))}else{let l=s.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(r.inputState.composing>=0||r.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let u=r.state.sliceDoc(e.from,e.to),h,f=t&&fg(r,t.main.head);if(f){let p=e.insert.length-(e.to-e.from);h={from:f.from,to:f.to-p}}else h=r.state.doc.lineAt(i.head);let g=i.to-e.to;n=s.changeByRange(p=>{if(p.from==i.from&&p.to==i.to)return{changes:l,range:c||p.map(l)};let O=p.to-g,b=O-u.length;if(r.state.sliceDoc(b,O)!=u||O>=h.from&&b<=h.to)return{range:p};let x=s.changes({from:b,to:O,insert:e.insert}),k=p.to-i.to;return{changes:x,range:c?ne.range(Math.max(0,c.anchor+k),Math.max(0,c.head+k)):p.map(x)}})}else n={changes:l,selection:c&&s.selection.replaceRange(c)}}let a="input.type";return(r.composing||r.inputState.compositionPendingChange&&r.inputState.compositionEndedAt>Date.now()-50)&&(r.inputState.compositionPendingChange=!1,a+=".compose",r.inputState.compositionFirstChange&&(a+=".start",r.inputState.compositionFirstChange=!1)),s.update(n,{userEvent:a,scrollIntoView:!0})}function Og(r,e,t,n){let s=Math.min(r.length,e.length),i=0;for(;i<s&&r.charCodeAt(i)==e.charCodeAt(i);)i++;if(i==s&&r.length==e.length)return null;let o=r.length,a=e.length;for(;o>0&&a>0&&r.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(n=="end"){let l=Math.max(0,i-Math.min(o,a));t-=o+l-i}if(o<i&&r.length<e.length){let l=t<=i&&t>=o?i-t:0;i-=l,a=i+(a-o),o=i}else if(a<i){let l=t<=i&&t>=a?i-t:0;i-=l,o=i+(o-a),a=i}return{from:i,toA:o,toB:a}}function sC(r){let e=[];if(r.root.activeElement!=r.contentDOM)return e;let{anchorNode:t,anchorOffset:n,focusNode:s,focusOffset:i}=r.observer.selectionRange;return t&&(e.push(new Md(t,n)),(s!=t||i!=n)&&e.push(new Md(s,i))),e}function iC(r,e){if(r.length==0)return null;let t=r[0].pos,n=r.length==2?r[1].pos:t;return t>-1&&n>-1?ne.single(t+e,n+e):null}function Va(r,e){return e.head==r.main.head&&e.anchor==r.main.anchor}class oC{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,Ae.safari&&e.contentDOM.addEventListener("input",()=>null),Ae.gecko&&yC(e.contentDOM.ownerDocument)}handleEvent(e){!mC(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let s of n.observers)s(this.view,t);for(let s of n.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=aC(e),n=this.handlers,s=this.view.contentDOM;for(let i in t)if(i!="scroll"){let o=!t[i].handlers.length,a=n[i];a&&o!=!a.handlers.length&&(s.removeEventListener(i,this.handleEvent),a=null),a||s.addEventListener(i,this.handleEvent,{passive:o})}for(let i in n)i!="scroll"&&!t[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&bg.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),Ae.android&&Ae.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return Ae.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=vg.find(n=>n.keyCode==e.keyCode))&&!e.ctrlKey||lC.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,zs(this.view.contentDOM,t.key,t.keyCode,t instanceof KeyboardEvent?t:void 0))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:Ae.safari&&!Ae.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function Ad(r,e){return(t,n)=>{try{return e.call(r,n,t)}catch(s){rr(t.state,s)}}}function aC(r){let e=Object.create(null);function t(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of r){let s=n.spec,i=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(i)for(let a in i){let l=i[a];l&&t(a).handlers.push(Ad(n.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push(Ad(n.value,l))}}for(let n in Er)t(n).handlers.push(Er[n]);for(let n in Tr)t(n).observers.push(Tr[n]);return e}const vg=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],lC="dthko",bg=[16,17,18,20,91,92,224,225],jo=6;function Yo(r){return Math.max(0,r)*.7+8}function cC(r,e){return Math.max(Math.abs(r.clientX-e.clientX),Math.abs(r.clientY-e.clientY))}class uC{constructor(e,t,n,s){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=d$(e.contentDOM),this.atoms=e.state.facet(So).map(o=>o(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(He.allowMultipleSelections)&&hC(e,t),this.dragging=fC(e,t)&&kg(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&cC(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=0,s=0,i=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=Ju(this.view);e.clientX-l.left<=s+jo?t=-Yo(s-e.clientX):e.clientX+l.right>=o-jo&&(t=Yo(e.clientX-o)),e.clientY-l.top<=i+jo?n=-Yo(i-e.clientY):e.clientY+l.bottom>=a-jo&&(n=Yo(e.clientY-a)),this.setScrollSpeed(t,n)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,n=mg(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function hC(r,e){let t=r.state.facet(Kp);return t.length?t[0](e):Ae.mac?e.metaKey:e.ctrlKey}function dC(r,e){let t=r.state.facet(Jp);return t.length?t[0](e):Ae.mac?!e.altKey:!e.ctrlKey}function fC(r,e){let{main:t}=r.state.selection;if(t.empty)return!1;let n=Ki(r.root);if(!n||n.rangeCount==0)return!0;let s=n.getRangeAt(0).getClientRects();for(let i=0;i<s.length;i++){let o=s[i];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function mC(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,n;t!=r.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(n=kt.get(t))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}const Er=Object.create(null),Tr=Object.create(null),xg=Ae.ie&&Ae.ie_version<15||Ae.ios&&Ae.webkit_version<604;function pC(r){let e=r.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{r.focus(),t.remove(),yg(r,t.value)},50)}function kl(r,e,t){for(let n of r.facet(e))t=n(t,r);return t}function yg(r,e){e=kl(r.state,Uu,e);let{state:t}=r,n,s=1,i=t.toText(e),o=i.lines==t.selection.ranges.length;if(ru!=null&&t.selection.ranges.every(l=>l.empty)&&ru==i.toString()){let l=-1;n=t.changeByRange(c=>{let u=t.doc.lineAt(c.from);if(u.from==l)return{range:c};l=u.from;let h=t.toText((o?i.line(s++).text:e)+t.lineBreak);return{changes:{from:u.from,insert:h},range:ne.cursor(c.from+h.length)}})}else o?n=t.changeByRange(l=>{let c=i.line(s++);return{changes:{from:l.from,to:l.to,insert:c.text},range:ne.cursor(l.from+c.length)}}):n=t.replaceSelection(i);r.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}Tr.scroll=r=>{r.inputState.lastScrollTop=r.scrollDOM.scrollTop,r.inputState.lastScrollLeft=r.scrollDOM.scrollLeft};Er.keydown=(r,e)=>(r.inputState.setSelectionOrigin("select"),e.keyCode==27&&r.inputState.tabFocusMode!=0&&(r.inputState.tabFocusMode=Date.now()+2e3),!1);Tr.touchstart=(r,e)=>{r.inputState.lastTouchTime=Date.now(),r.inputState.setSelectionOrigin("select.pointer")};Tr.touchmove=r=>{r.inputState.setSelectionOrigin("select.pointer")};Er.mousedown=(r,e)=>{if(r.observer.flush(),r.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let n of r.state.facet(eg))if(t=n(r,e),t)break;if(!t&&e.button==0&&(t=OC(r,e)),t){let n=!r.hasFocus;r.inputState.startMouseSelection(new uC(r,e,t,n)),n&&r.observer.ignore(()=>{Np(r.contentDOM);let i=r.root.activeElement;i&&!i.contains(r.contentDOM)&&i.blur()});let s=r.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else r.inputState.setSelectionOrigin("select.pointer");return!1};function _d(r,e,t,n){if(n==1)return ne.cursor(e,t);if(n==2)return Y$(r.state,e,t);{let s=r.docView.lineAt(e,t),i=r.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:i.from,a=s?s.posAtEnd:i.to;return a<r.state.doc.length&&a==i.to&&a++,ne.range(o,a)}}const gC=Ae.ie&&Ae.ie_version<=11;let Rd=null,Bd=0,Zd=0;function kg(r){if(!gC)return r.detail;let e=Rd,t=Zd;return Rd=r,Zd=Date.now(),Bd=!e||t>Date.now()-400&&Math.abs(e.clientX-r.clientX)<2&&Math.abs(e.clientY-r.clientY)<2?(Bd+1)%3:1}function OC(r,e){let t=r.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=kg(e),s=r.state.selection;return{update(i){i.docChanged&&(t.pos=i.changes.mapPos(t.pos),s=s.map(i.changes))},get(i,o,a){let l=r.posAndSideAtCoords({x:i.clientX,y:i.clientY},!1),c,u=_d(r,l.pos,l.assoc,n);if(t.pos!=l.pos&&!o){let h=_d(r,t.pos,t.assoc,n),f=Math.min(h.from,u.from),g=Math.max(h.to,u.to);u=f<u.from?ne.range(f,g):ne.range(g,f)}return o?s.replaceRange(s.main.extend(u.from,u.to)):a&&n==1&&s.ranges.length>1&&(c=vC(s,l.pos))?c:a?s.addRange(u):ne.create([u])}}}function vC(r,e){for(let t=0;t<r.ranges.length;t++){let{from:n,to:s}=r.ranges[t];if(n<=e&&s>=e)return ne.create(r.ranges.slice(0,t).concat(r.ranges.slice(t+1)),r.mainIndex==t?0:r.mainIndex-(r.mainIndex>t?1:0))}return null}Er.dragstart=(r,e)=>{let{selection:{main:t}}=r.state;if(e.target.draggable){let s=r.docView.tile.nearest(e.target);if(s&&s.isWidget()){let i=s.posAtStart,o=i+s.length;(i>=t.to||o<=t.from)&&(t=ne.range(i,o))}}let{inputState:n}=r;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",kl(r.state,Gu,r.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Er.dragend=r=>(r.inputState.draggedContent=null,!1);function Ed(r,e,t,n){if(t=kl(r.state,Uu,t),!t)return;let s=r.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=r.inputState,o=n&&i&&dC(r,e)?{from:i.from,to:i.to}:null,a={from:s,insert:t},l=r.state.changes(o?[o,a]:a);r.focus(),r.dispatch({changes:l,selection:{anchor:l.mapPos(s,-1),head:l.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),r.inputState.draggedContent=null}Er.drop=(r,e)=>{if(!e.dataTransfer)return!1;if(r.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let n=Array(t.length),s=0,i=()=>{++s==t.length&&Ed(r,e,n.filter(o=>o!=null).join(r.state.lineBreak),!1)};for(let o=0;o<t.length;o++){let a=new FileReader;a.onerror=i,a.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(n[o]=a.result),i()},a.readAsText(t[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return Ed(r,e,n,!0),!0}return!1};Er.paste=(r,e)=>{if(r.state.readOnly)return!0;r.observer.flush();let t=xg?null:e.clipboardData;return t?(yg(r,t.getData("text/plain")||t.getData("text/uri-list")),!0):(pC(r),!1)};function bC(r,e){let t=r.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),r.focus()},50)}function xC(r){let e=[],t=[],n=!1;for(let s of r.selection.ranges)s.empty||(e.push(r.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:i}of r.selection.ranges){let o=r.doc.lineAt(i);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(r.doc.length,o.to+1)})),s=o.number}n=!0}return{text:kl(r,Gu,e.join(r.lineBreak)),ranges:t,linewise:n}}let ru=null;Er.copy=Er.cut=(r,e)=>{if(!Vi(r.contentDOM,r.observer.selectionRange))return!1;let{text:t,ranges:n,linewise:s}=xC(r.state);if(!t&&!s)return!1;ru=s?t:null,e.type=="cut"&&!r.state.readOnly&&r.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let i=xg?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",t),!0):(bC(r,t),!1)};const wg=wn.define();function Sg(r,e){let t=[];for(let n of r.facet(ng)){let s=n(r,e);s&&t.push(s)}return t.length?r.update({effects:t,annotations:wg.of(!0)}):null}function $g(r){setTimeout(()=>{let e=r.hasFocus;if(e!=r.inputState.notifiedFocused){let t=Sg(r.state,e);t?r.dispatch(t):r.update([])}},10)}Tr.focus=r=>{r.inputState.lastFocusTime=Date.now(),!r.scrollDOM.scrollTop&&(r.inputState.lastScrollTop||r.inputState.lastScrollLeft)&&(r.scrollDOM.scrollTop=r.inputState.lastScrollTop,r.scrollDOM.scrollLeft=r.inputState.lastScrollLeft),$g(r)};Tr.blur=r=>{r.observer.clearSelectionRange(),$g(r)};Tr.compositionstart=Tr.compositionupdate=r=>{r.observer.editContext||(r.inputState.compositionFirstChange==null&&(r.inputState.compositionFirstChange=!0),r.inputState.composing<0&&(r.inputState.composing=0))};Tr.compositionend=r=>{r.observer.editContext||(r.inputState.composing=-1,r.inputState.compositionEndedAt=Date.now(),r.inputState.compositionPendingKey=!0,r.inputState.compositionPendingChange=r.observer.pendingRecords().length>0,r.inputState.compositionFirstChange=null,Ae.chrome&&Ae.android?r.observer.flushSoon():r.inputState.compositionPendingChange?Promise.resolve().then(()=>r.observer.flush()):setTimeout(()=>{r.inputState.composing<0&&r.docView.hasComposition&&r.update([])},50))};Tr.contextmenu=r=>{r.inputState.lastContextMenu=Date.now()};Er.beforeinput=(r,e)=>{var t,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(r.inputState.insertingText=e.data,r.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&r.observer.editContext){let i=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(i&&o.length){let a=o[0],l=r.posAtDOM(a.startContainer,a.startOffset),c=r.posAtDOM(a.endContainer,a.endOffset);return eh(r,{from:l,to:c,insert:r.state.toText(i)},null),!0}}let s;if(Ae.chrome&&Ae.android&&(s=vg.find(i=>i.inputType==e.inputType))&&(r.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>i+10&&r.hasFocus&&(r.contentDOM.blur(),r.focus())},100)}return Ae.ios&&e.inputType=="deleteContentForward"&&r.observer.flushSoon(),Ae.safari&&e.inputType=="insertText"&&r.inputState.composing>=0&&setTimeout(()=>Tr.compositionend(r,e),20),!1};const Dd=new Set;function yC(r){Dd.has(r)||(Dd.add(r),r.addEventListener("copy",()=>{}),r.addEventListener("cut",()=>{}))}const Ld=["pre-wrap","normal","pre-line","break-spaces"];let Js=!1;function Xd(){Js=!1}class kC{constructor(e){this.lineWrapping=e,this.doc=tt.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Ld.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n<e.length;n++){let s=e[n];s<0?n++:this.heightSamples[Math.floor(s*10)]||(t=!0,this.heightSamples[Math.floor(s*10)]=!0)}return t}refresh(e,t,n,s,i,o){let a=Ld.indexOf(e)>-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a||Math.abs(n-this.charWidth)>.1;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=n,this.textHeight=s,this.lineLength=i,l){this.heightSamples={};for(let c=0;c<o.length;c++){let u=o[c];u<0?c++:this.heightSamples[Math.floor(u*10)]=!0}}return l}}class wC{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}}class Rr{constructor(e,t,n,s,i){this.from=e,this.length=t,this.top=n,this.height=s,this._content=i}get type(){return typeof this._content=="number"?Dt.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof vs?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new Rr(this.from,this.length+e.length,this.top,this.height+e.height,t)}}var ft=(function(r){return r[r.ByPos=0]="ByPos",r[r.ByHeight=1]="ByHeight",r[r.ByPosNoHeight=2]="ByPosNoHeight",r})(ft||(ft={}));const ya=.001;class Yt{constructor(e,t,n=2){this.length=e,this.height=t,this.flags=n}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>ya&&(Js=!0),this.height=e)}replace(e,t,n){return Yt.of(n)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,s){let i=this,o=n.doc;for(let a=s.length-1;a>=0;a--){let{fromA:l,toA:c,fromB:u,toB:h}=s[a],f=i.lineAt(l,ft.ByPosNoHeight,n.setDoc(t),0,0),g=f.to>=c?f:i.lineAt(c,ft.ByPosNoHeight,n,0,0);for(h+=g.to-c,c=g.to;a>0&&f.from<=s[a-1].toA;)l=s[a-1].fromA,u=s[a-1].fromB,a--,l<f.from&&(f=i.lineAt(l,ft.ByPosNoHeight,n,0,0));u+=f.from-l,l=f.from;let p=th.build(n.setDoc(o),e,u,h);i=za(i,i.replace(l,c,p))}return i.updateHeight(n,0)}static empty(){return new fr(0,0,0)}static of(e){if(e.length==1)return e[0];let t=0,n=e.length,s=0,i=0;for(;;)if(t==n)if(s>i*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),n+=1+a.break,s-=a.size}else if(i>s*2){let a=e[n];a.break?e.splice(n,1,a.left,null,a.right):e.splice(n,1,a.left,a.right),n+=2+a.break,i-=a.size}else break;else if(s<i){let a=e[t++];a&&(s+=a.size)}else{let a=e[--n];a&&(i+=a.size)}let o=0;return e[t-1]==null?(o=1,t--):e[t]==null&&(o=1,n++),new $C(Yt.of(e.slice(0,t)),o,Yt.of(e.slice(n)))}}function za(r,e){return r==e?r:(r.constructor!=e.constructor&&(Js=!0),e)}Yt.prototype.size=1;const SC=De.replace({});class Cg extends Yt{constructor(e,t,n){super(e,t),this.deco=n,this.spaceAbove=0}mainBlock(e,t){return new Rr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,n,s){return this.spaceAbove&&e<n+this.spaceAbove?new Rr(s,0,n,this.spaceAbove,SC):this.mainBlock(n,s)}lineAt(e,t,n,s,i){let o=this.mainBlock(s,i);return this.spaceAbove?this.blockAt(0,n,s,i).join(o):o}forEachLine(e,t,n,s,i,o){e<=i+this.length&&t>=i&&o(this.lineAt(0,ft.ByPos,n,s,i))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,n=!1,s){return s&&s.from<=t&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}}class fr extends Cg{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new Rr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,n){let s=n[0];return n.length==1&&(s instanceof fr||s instanceof _t&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof _t?s=new fr(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):Yt.of(n)}updateHeight(e,t=0,n=!1,s){return s&&s.from<=t&&s.more?this.setMeasuredHeight(s):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class _t extends Yt{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,i=s-n+1,o,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*i);o=l/i,this.length>i+1&&(a=(this.height-l)/(this.length-i-1))}else o=this.height/i;return{firstLine:n,lastLine:s,perLine:o,perChar:a}}blockAt(e,t,n,s){let{firstLine:i,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(t,s);if(t.lineWrapping){let c=s+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-n)/this.height))*this.length)),u=t.doc.lineAt(c),h=a+u.length*l,f=Math.max(n,e-h/2);return new Rr(u.from,u.length,f,h,0)}else{let c=Math.max(0,Math.min(o-i,Math.floor((e-n)/a))),{from:u,length:h}=t.doc.line(i+c);return new Rr(u,h,n+a*c,a,0)}}lineAt(e,t,n,s,i){if(t==ft.ByHeight)return this.blockAt(e,n,s,i);if(t==ft.ByPosNoHeight){let{from:g,to:p}=n.doc.lineAt(e);return new Rr(g,p-g,0,0,0)}let{firstLine:o,perLine:a,perChar:l}=this.heightMetrics(n,i),c=n.doc.lineAt(e),u=a+c.length*l,h=c.number-o,f=s+a*h+l*(c.from-i-h);return new Rr(c.from,c.length,Math.max(s,Math.min(f,s+this.height-u)),u,0)}forEachLine(e,t,n,s,i,o){e=Math.max(e,i),t=Math.min(t,i+this.length);let{firstLine:a,perLine:l,perChar:c}=this.heightMetrics(n,i);for(let u=e,h=s;u<=t;){let f=n.doc.lineAt(u);if(u==e){let p=f.number-a;h+=l*p+c*(e-i-p)}let g=l+c*f.length;o(new Rr(f.from,f.length,h,g,0)),h+=g,u=f.to+1}}replace(e,t,n){let s=this.length-t;if(s>0){let i=n[n.length-1];i instanceof _t?n[n.length-1]=new _t(i.length+s):n.push(null,new _t(s-1))}if(e>0){let i=n[0];i instanceof _t?n[0]=new _t(e+i.length):n.unshift(new _t(e-1),null)}return Yt.of(n)}decomposeLeft(e,t){t.push(new _t(e-1),null)}decomposeRight(e,t){t.push(null,new _t(this.length-e-1))}updateHeight(e,t=0,n=!1,s){let i=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],a=Math.max(t,s.from),l=-1;for(s.from>t&&o.push(new _t(s.from-t-1).updateHeight(e,t));a<=i&&s.more;){let u=e.doc.lineAt(a).length;o.length&&o.push(null);let h=s.heights[s.index++],f=0;h<0&&(f=-h,h=s.heights[s.index++]),l==-1?l=h:Math.abs(h-l)>=ya&&(l=-2);let g=new fr(u,h,f);g.outdated=!1,o.push(g),a+=u+1}a<=i&&o.push(null,new _t(i-a).updateHeight(e,a));let c=Yt.of(o);return(l<0||Math.abs(c.height-this.height)>=ya||Math.abs(l-this.heightMetrics(e,t).perLine)>=ya)&&(Js=!0),za(this,c)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class $C extends Yt{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,s){let i=n+this.left.height;return e<i?this.left.blockAt(e,t,n,s):this.right.blockAt(e,t,i,s+this.left.length+this.break)}lineAt(e,t,n,s,i){let o=s+this.left.height,a=i+this.left.length+this.break,l=t==ft.ByHeight?e<o:e<a,c=l?this.left.lineAt(e,t,n,s,i):this.right.lineAt(e,t,n,o,a);if(this.break||(l?c.to<a:c.from>a))return c;let u=t==ft.ByPosNoHeight?ft.ByPosNoHeight:ft.ByPos;return l?c.join(this.right.lineAt(a,u,n,o,a)):this.left.lineAt(a,u,n,s,i).join(c)}forEachLine(e,t,n,s,i,o){let a=s+this.left.height,l=i+this.left.length+this.break;if(this.break)e<l&&this.left.forEachLine(e,t,n,s,i,o),t>=l&&this.right.forEachLine(e,t,n,a,l,o);else{let c=this.lineAt(l,ft.ByPos,n,s,i);e<c.from&&this.left.forEachLine(e,c.from-1,n,s,i,o),c.to>=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,a,l,o)}}replace(e,t,n){let s=this.left.length+this.break;if(t<s)return this.balanced(this.left.replace(e,t,n),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,n));let i=[];e>0&&this.decomposeLeft(e,i);let o=i.length;for(let a of n)i.push(a);if(e>0&&Id(i,o-1),t<this.length){let a=i.length;this.decomposeRight(t,i),Id(i,a)}return Yt.of(i)}decomposeLeft(e,t){let n=this.left.length;if(e<=n)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(n++,e>=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,s=n+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e<n&&this.left.decomposeRight(e,t),this.break&&e<s&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?Yt.of(this.break?[e,null,t]:[e,t]):(this.left=za(this.left,e),this.right=za(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,s){let{left:i,right:o}=this,a=t+i.length+this.break,l=null;return s&&s.from<=t+i.length&&s.more?l=i=i.updateHeight(e,t,n,s):i.updateHeight(e,t,n),s&&s.from<=a+o.length&&s.more?l=o=o.updateHeight(e,a,n,s):o.updateHeight(e,a,n),l?this.balanced(i,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Id(r,e){let t,n;r[e]==null&&(t=r[e-1])instanceof _t&&(n=r[e+1])instanceof _t&&r.splice(e-1,3,new _t(t.length+1+n.length))}const CC=5;class th{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let n=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof fr?s.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new fr(n-this.pos,-1,0)),this.writtenTo=n,t>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e<t||n.heightRelevant){let s=n.widget?n.widget.estimatedHeight:0,i=n.widget?n.widget.lineBreaks:0;s<0&&(s=this.oracle.lineHeight);let o=t-e;n.block?this.addBlock(new Cg(o,s,n)):(o||i||s>=CC)&&this.addLineDeco(s,i,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new fr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new _t(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof fr)return e;let t=new fr(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let s=this.ensureLine();s.length+=n,s.collapsed+=n,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof fr)&&!this.isCovered?this.nodes.push(new fr(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let n=e;for(let s of this.nodes)s instanceof fr&&s.updateHeight(this.oracle,n),n+=s?s.length:1;return this.nodes}static build(e,t,n,s){let i=new th(n,e);return Ge.spans(t,n,s,i,0),i.finish(n)}}function QC(r,e,t){let n=new PC;return Ge.compare(r,e,t,n,0),n.changes}class PC{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,n,s){(e<t||n&&n.heightRelevant||s&&s.heightRelevant)&&Vs(e,t,this.changes,5)}}function TC(r,e){let t=r.getBoundingClientRect(),n=r.ownerDocument,s=n.defaultView||window,i=Math.max(0,t.left),o=Math.min(s.innerWidth,t.right),a=Math.max(0,t.top),l=Math.min(s.innerHeight,t.bottom);for(let c=r.parentNode;c&&c!=n.body;)if(c.nodeType==1){let u=c,h=window.getComputedStyle(u);if((u.scrollHeight>u.clientHeight||u.scrollWidth>u.clientWidth)&&h.overflow!="visible"){let f=u.getBoundingClientRect();i=Math.max(i,f.left),o=Math.min(o,f.right),a=Math.max(a,f.top),l=Math.min(c==r.parentNode?s.innerHeight:l,f.bottom)}c=h.position=="absolute"||h.position=="fixed"?u.offsetParent:u.parentNode}else if(c.nodeType==11)c=c.host;else break;return{left:i-t.left,right:Math.max(i,o)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function MC(r){let e=r.getBoundingClientRect(),t=r.ownerDocument.defaultView||window;return e.left<t.innerWidth&&e.right>0&&e.top<t.innerHeight&&e.bottom>0}function AC(r,e){let t=r.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}class zl{constructor(e,t,n,s){this.from=e,this.to=t,this.size=n,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++){let s=e[n],i=t[n];if(s.from!=i.from||s.to!=i.to||s.size!=i.size)return!1}return!0}draw(e,t){return De.replace({widget:new _C(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}}class _C extends sn{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class Vd{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!1,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=zd,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=ut.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let t=e.facet(Hu).some(n=>typeof n!="function"&&n.class=="cm-lineWrapping");this.heightOracle=new kC(t),this.stateDeco=Nd(e),this.heightMap=Yt.empty().applyChanges(this.stateDeco,tt.empty,this.heightOracle.setDoc(e.doc),[new wr(0,0,0,e.doc.length)]);for(let n=0;n<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());n++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=De.set(this.lineGaps.map(n=>n.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let s=n?t.head:t.anchor;if(!e.some(({from:i,to:o})=>s>=i&&s<=o)){let{from:i,to:o}=this.lineBlockAt(s);e.push(new Fo(i,o))}}return this.viewports=e.sort((n,s)=>n.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?zd:new rh(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Ei(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=Nd(this.state);let s=e.changedRanges,i=wr.extendWithRanges(s,QC(n,this.stateDeco,e?e.changes:St.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);Xd(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=o||Js)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<l.from||t.range.head>l.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let c=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(ig)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,n=window.getComputedStyle(t),s=this.heightOracle,i=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?ut.RTL:ut.LTR;let o=this.heightOracle.mustRefreshForWrapping(i)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let c=0,u=0;if(a.width&&a.height){let{scaleX:S,scaleY:P}=zp(t,a);(S>.005&&Math.abs(this.scaleX-S)>.005||P>.005&&Math.abs(this.scaleY-P)>.005)&&(this.scaleX=S,this.scaleY=P,c|=16,o=l=!0)}let h=(parseInt(n.paddingTop)||0)*this.scaleY,f=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=f)&&(this.paddingTop=h,this.paddingBottom=f,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let g=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=g&&(this.scrollAnchorHeight=-1,this.scrollTop=g),this.scrolledToBottom=Wp(e.scrollDOM);let p=(this.printing?AC:TC)(t,this.paddingTop),O=p.top-this.pixelViewport.top,b=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let x=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(x!=this.inView&&(this.inView=x,x&&(l=!0)),!this.inView&&!this.scrollTarget&&!MC(e.dom))return 0;let k=a.width;if((this.contentDOMWidth!=k||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),l){let S=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(S)&&(o=!0),o||s.lineWrapping&&Math.abs(k-this.contentDOMWidth)>s.charWidth){let{lineHeight:P,charWidth:X,textHeight:E}=e.docView.measureTextSize();o=P>0&&s.refresh(i,P,X,E,Math.max(5,k/X),S),o&&(e.docView.minWidth=0,c|=16)}O>0&&b>0?u=Math.max(O,b):O<0&&b<0&&(u=Math.min(O,b)),Xd();for(let P of this.viewports){let X=P.from==this.viewport.from?S:e.docView.measureVisibleLineHeights(P);this.heightMap=(o?Yt.empty().applyChanges(this.stateDeco,tt.empty,this.heightOracle,[new wr(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new wC(P.from,X))}Js&&(c|=2)}let w=!this.viewportIsAppropriate(this.viewport,u)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return w&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(u,this.scrollTarget),c|=this.updateForViewport()),(c&2||w)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new Fo(s.lineAt(o-n*1e3,ft.ByHeight,i,0,0).from,s.lineAt(a+(1-n)*1e3,ft.ByHeight,i,0,0).to);if(t){let{head:c}=t.range;if(c<l.from||c>l.to){let u=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=s.lineAt(c,ft.ByPos,i,0,0),f;t.y=="center"?f=(h.top+h.bottom)/2-u/2:t.y=="start"||t.y=="nearest"&&c<l.from?f=h.top:f=h.bottom-u,l=new Fo(s.lineAt(f-1e3/2,ft.ByHeight,i,0,0).from,s.lineAt(f+u+1e3/2,ft.ByHeight,i,0,0).to)}}return l}mapViewport(e,t){let n=t.mapPos(e.from,-1),s=t.mapPos(e.to,1);return new Fo(this.heightMap.lineAt(n,ft.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(s,ft.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},n=0){if(!this.inView)return!0;let{top:s}=this.heightMap.lineAt(e,ft.ByPos,this.heightOracle,0,0),{bottom:i}=this.heightMap.lineAt(t,ft.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:a}=this;return(e==0||s<=o-Math.max(10,Math.min(-n,250)))&&(t==this.state.doc.length||i>=a+Math.max(10,Math.min(n,250)))&&s>o-2*1e3&&i<a+2*1e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let n=[];for(let s of e)t.touchesRange(s.from,s.to)||n.push(new zl(t.mapPos(s.from),t.mapPos(s.to),s.size,s.displaySize));return n}ensureLineGaps(e,t){let n=this.heightOracle.lineWrapping,s=n?1e4:2e3,i=s>>1,o=s<<1;if(this.defaultTextDirection!=ut.LTR&&!n)return[];let a=[],l=(u,h,f,g)=>{if(h-u<i)return;let p=this.state.selection.main,O=[p.from];p.empty||O.push(p.to);for(let x of O)if(x>u&&x<h){l(u,x-10,f,g),l(x+10,h,f,g);return}let b=BC(e,x=>x.from>=f.from&&x.to<=f.to&&Math.abs(x.from-u)<i&&Math.abs(x.to-h)<i&&!O.some(k=>x.from<k&&x.to>k));if(!b){if(h<f.to&&t&&n&&t.visibleRanges.some(w=>w.from<=h&&w.to>=h)){let w=t.moveToLineBoundary(ne.cursor(h),!1,!0).head;w>u&&(h=w)}let x=this.gapSize(f,u,h,g),k=n||x<2e6?x:2e6;b=new zl(u,h,x,k)}a.push(b)},c=u=>{if(u.length<o||u.type!=Dt.Text)return;let h=RC(u.from,u.to,this.stateDeco);if(h.total<o)return;let f=this.scrollTarget?this.scrollTarget.range.head:null,g,p;if(n){let O=s/this.heightOracle.lineLength*this.heightOracle.lineHeight,b,x;if(f!=null){let k=Go(h,f),w=((this.visibleBottom-this.visibleTop)/2+O)/u.height;b=k-w,x=k+w}else b=(this.visibleTop-u.top-O)/u.height,x=(this.visibleBottom-u.top+O)/u.height;g=Uo(h,b),p=Uo(h,x)}else{let O=h.total*this.heightOracle.charWidth,b=s*this.heightOracle.charWidth,x=0;if(O>2e6)for(let X of e)X.from>=u.from&&X.from<u.to&&X.size!=X.displaySize&&X.from*this.heightOracle.charWidth+x<this.pixelViewport.left&&(x=X.size-X.displaySize);let k=this.pixelViewport.left+x,w=this.pixelViewport.right+x,S,P;if(f!=null){let X=Go(h,f),E=((w-k)/2+b)/O;S=X-E,P=X+E}else S=(k-b)/O,P=(w+b)/O;g=Uo(h,S),p=Uo(h,P)}g>u.from&&l(u.from,g,u,h),p<u.to&&l(p,u.to,u,h)};for(let u of this.viewportLines)Array.isArray(u.type)?u.type.forEach(c):c(u);return a}gapSize(e,t,n,s){let i=Go(s,n)-Go(s,t);return this.heightOracle.lineWrapping?e.height*i:s.total*this.heightOracle.charWidth*i}updateLineGaps(e){zl.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=De.set(e.map(t=>t.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let n=[];Ge.spans(t,this.viewport.from,this.viewport.to,{span(i,o){n.push({from:i,to:o})},point(){}},20);let s=0;if(n.length!=this.visibleRanges.length)s=12;else for(let i=0;i<n.length&&!(s&8);i++){let o=this.visibleRanges[i],a=n[i];(o.from!=a.from||o.to!=a.to)&&(s|=4,e&&e.mapPos(o.from,-1)==a.from&&e.mapPos(o.to,1)==a.to||(s|=8))}return this.visibleRanges=n,s}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Ei(this.heightMap.lineAt(e,ft.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Ei(this.heightMap.lineAt(this.scaler.fromDOM(e),ft.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Ei(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Fo{constructor(e,t){this.from=e,this.to=t}}function RC(r,e,t){let n=[],s=r,i=0;return Ge.spans(t,r,e,{span(){},point(o,a){o>s&&(n.push({from:s,to:o}),i+=o-s),s=a}},20),s<e&&(n.push({from:s,to:e}),i+=e-s),{total:i,ranges:n}}function Uo({total:r,ranges:e},t){if(t<=0)return e[0].from;if(t>=1)return e[e.length-1].to;let n=Math.floor(r*t);for(let s=0;;s++){let{from:i,to:o}=e[s],a=o-i;if(n<=a)return i+n;n-=a}}function Go(r,e){let t=0;for(let{from:n,to:s}of r.ranges){if(e<=s){t+=e-n;break}t+=s-n}return t/r.total}function BC(r,e){for(let t of r)if(e(t))return t}const zd={toDOM(r){return r},fromDOM(r){return r},scale:1,eq(r){return r==this}};function Nd(r){let e=r.facet(bl).filter(n=>typeof n!="function"),t=r.facet(Ku).filter(n=>typeof n!="function");return t.length&&e.push(Ge.join(t)),e}class rh{constructor(e,t,n){let s=0,i=0,o=0;this.viewports=n.map(({from:a,to:l})=>{let c=t.lineAt(a,ft.ByPos,e,0,0).top,u=t.lineAt(l,ft.ByPos,e,0,0).bottom;return s+=u-c,{from:a,to:l,top:c,bottom:u,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let a of this.viewports)a.domTop=o+(a.top-i)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),i=a.bottom}toDOM(e){for(let t=0,n=0,s=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.top)return s+(e-n)*this.scale;if(e<=i.bottom)return i.domTop+(e-i.top);n=i.bottom,s=i.domBottom}}fromDOM(e){for(let t=0,n=0,s=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.domTop)return n+(e-s)/this.scale;if(e<=i.domBottom)return i.top+(e-i.domTop);n=i.bottom,s=i.domBottom}}eq(e){return e instanceof rh?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((t,n)=>t.from==e.viewports[n].from&&t.to==e.viewports[n].to):!1}}function Ei(r,e){if(e.scale==1)return r;let t=e.toDOM(r.top),n=e.toDOM(r.bottom);return new Rr(r.from,r.length,t,n-t,Array.isArray(r._content)?r._content.map(s=>Ei(s,e)):r._content)}const Ho=Te.define({combine:r=>r.join(" ")}),nu=Te.define({combine:r=>r.indexOf(!0)>-1}),su=Ln.newName(),Qg=Ln.newName(),Pg=Ln.newName(),Tg={"&light":"."+Qg,"&dark":"."+Pg};function iu(r,e,t){return new Ln(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,s=>{if(s=="&")return r;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):r+" "+n}})}const ZC=iu("."+su,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Tg),EC={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Nl=Ae.ie&&Ae.ie_version<=11;class DC{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new f$,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let n of t)this.queue.push(n);(Ae.ie&&Ae.ie_version<=11||Ae.ios&&e.composing)&&t.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&Ae.android&&e.constructor.EDIT_CONTEXT!==!1&&!(Ae.chrome&&Ae.chrome_version<126)&&(this.editContext=new XC(e),e.state.facet(mn)&&(e.contentDOM.editContext=this.editContext.editContext)),Nl&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,s=this.selectionRange;if(n.state.facet(mn)?n.root.activeElement!=this.dom:!Vi(this.dom,s))return;let i=s.anchorNode&&n.docView.tile.nearest(s.anchorNode);if(i&&i.isWidget()&&i.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(Ae.ie&&Ae.ie_version<=11||Ae.android&&Ae.chrome)&&!n.state.selection.main.empty&&s.focusNode&&zi(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Ki(e.root);if(!t)return!1;let n=Ae.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&LC(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let s=Vi(this.dom,n);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&p$(this.dom,n)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(n),s&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let n=this.dom;n;)if(n.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==n?e++:t||(t=this.scrollTargets.slice(0,e)),t&&t.push(n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let n of this.scrollTargets)n.removeEventListener("scroll",this.onScroll);for(let n of this.scrollTargets=t)n.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,EC),Nl&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),Nl&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var n;if(!this.delayedAndroidKey){let s=()=>{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&zs(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!(!((n=this.delayedAndroidKey)===null||n===void 0)&&n.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,s=!1;for(let i of e){let o=this.readMutation(i);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:n}=o:(t=Math.min(o.from,t),n=Math.max(o.to,n)))}return{from:t,to:n,typeOver:s}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),s=this.selectionChanged&&Vi(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new rC(this.view,e,t,n);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,s=gg(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!Va(this.view.state.selection,t.newSel.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let n=Wd(t,e.previousSibling||e.target.previousSibling,-1),s=Wd(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(mn)!=e.state.facet(mn)&&(e.view.contentDOM.editContext=e.state.facet(mn)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Wd(r,e,t){for(;e;){let n=kt.get(e);if(n&&n.parent==r)return n;let s=e.parentNode;e=s!=r.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function qd(r,e){let t=e.startContainer,n=e.startOffset,s=e.endContainer,i=e.endOffset,o=r.docView.domAtPos(r.state.selection.main.anchor,1);return zi(o.node,o.offset,s,i)&&([t,n,s,i]=[s,i,t,n]),{anchorNode:t,anchorOffset:n,focusNode:s,focusOffset:i}}function LC(r,e){if(e.getComposedRanges){let s=e.getComposedRanges(r.root)[0];if(s)return qd(r,s)}let t=null;function n(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return r.contentDOM.addEventListener("beforeinput",n,!0),r.dom.ownerDocument.execCommand("indent"),r.contentDOM.removeEventListener("beforeinput",n,!0),t?qd(r,t):null}class XC{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let s=e.state.selection.main,{anchor:i,head:o}=s,a=this.toEditorPos(n.updateRangeStart),l=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>n.text.length;a==this.from&&i<this.from?a=i:l==this.to&&i>this.to&&(l=i);let u=Og(e.state.sliceDoc(a,l),n.text,(c?s.from:s.to)-a,c?"end":null);if(!u){let f=ne.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));Va(f,s)||e.dispatch({selection:f,userEvent:"select"});return}let h={from:u.from+a,to:u.toA+a,insert:tt.of(n.text.slice(u.from,u.toB).split(`
|
|
20
|
-
`))};if((Ae.mac||Ae.android)&&h.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:tt.of([n.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let f=this.to-this.from+(h.to-h.from+h.insert.length);eh(e,h,ne.single(this.toEditorPos(n.selectionStart,f),this.toEditorPos(n.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from<h.to&&!h.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let s=[],i=null;for(let o=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.rangeEnd);o<a;o++){let l=e.coordsForChar(o);i=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||i||new DOMRect,s.push(i)}t.updateCharacterBounds(n.rangeStart,s)},this.handlers.textformatupdate=n=>{let s=[];for(let i of n.getTextFormats()){let o=i.underlineStyle,a=i.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(i.rangeStart),c=this.toEditorPos(i.rangeEnd);if(l<c){let u=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;s.push(De.mark({attributes:{style:u}}).range(l,c))}}}e.dispatch({effects:ag.of(De.set(s))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)t.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{this.editContext.updateControlBounds(n.contentDOM.getBoundingClientRect());let s=Ki(n.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,o,a,l,c)=>{if(n)return;let u=c.length-(o-i);if(s&&o>=s.to)if(s.from==i&&s.to==o&&s.insert.eq(c)){s=this.pendingContextChange=null,t+=u,this.to+=u;return}else s=null,this.revertPending(e.state);if(i+=t,o+=t,o<=this.from)this.from+=u,this.to+=u;else if(i<this.to){if(i<this.from||o>this.to||this.to-this.from+c.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(o),c.toString()),this.to+=u}t+=u}),s&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(n,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class $e{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(s=>s.forEach(i=>n(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||m$(e.parent)||document,this.viewState=new Vd(e.state||He.create(e)),e.scrollTo&&e.scrollTo.is(qo)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Es).map(s=>new Dl(s));for(let s of this.plugins)s.update(this);this.observer=new DC(this),this.inputState=new oC(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Pd(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof yt?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,n=!1,s,i=this.state;for(let f of e){if(f.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=f.state}if(this.destroyed){this.viewState.state=i;return}let o=this.hasFocus,a=0,l=null;e.some(f=>f.annotation(wg))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=Sg(i,o),l||(a=1));let c=this.observer.delayedAndroidKey,u=null;if(c?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(u=null)):this.observer.clear(),i.facet(He.phrases)!=this.state.facet(He.phrases))return this.setState(i);s=La.create(this,i,e),s.flags|=a;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let f of e){if(h&&(h=h.map(f.changes)),f.scrollIntoView){let{main:g}=f.state.selection;h=new Ns(g.empty?g:ne.cursor(g.head,g.head>g.anchor?-1:1))}for(let g of f.effects)g.is(qo)&&(h=g.value.clip(this.state))}this.viewState.update(s,h),this.bidiCache=Na.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(Bi)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(f=>f.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Ho)!=s.state.facet(Ho)&&(this.viewState.mustMeasureContent=!0),(t||n||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let f of this.state.facet(Kc))try{f(s)}catch(g){rr(this.state,g,"update listener")}(l||u)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),u&&!gg(this,u)&&c.force&&zs(this.contentDOM,c.key,c.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new Vd(e),this.plugins=e.facet(Es).map(n=>new Dl(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new Pd(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Es),n=e.state.facet(Es);if(t!=n){let s=[];for(let i of n){let o=t.indexOf(i);if(o<0)s.push(new Dl(i));else{let a=this.plugins[o];a.mustUpdate=e,s.push(a)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s<this.plugins.length;s++)this.plugins[s].update(this);t!=n&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(n){rr(this.state,n,"doc view update listener")}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.scrollDOM,s=n.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let a=0;;a++){if(o<0)if(Wp(n))i=-1,o=this.viewState.heightMap.height;else{let g=this.viewState.scrollAnchorAt(s);i=g.from,o=g.top}this.updateState=1;let l=this.viewState.measure(this);if(!l&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let c=[];l&4||([this.measureRequests,c]=[c,this.measureRequests]);let u=c.map(g=>{try{return g.read(this)}catch(p){return rr(this.state,p),jd}}),h=La.create(this,this.state,[]),f=!1;h.flags|=l,t?t.flags|=l:t=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),f=this.docView.update(h),f&&this.docViewUpdate());for(let g=0;g<c.length;g++)if(u[g]!=jd)try{let p=c[g];p.write&&p.write(u[g],this)}catch(p){rr(this.state,p)}if(f&&this.docView.updateSelection(!0),!h.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let p=(i<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(i).top)-o;if(p>1||p<-1){s=s+p,n.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let a of this.state.facet(Kc))a(t)}get themeClasses(){return su+" "+(this.state.facet(nu)?Pg:Qg)+" "+this.state.facet(Ho)}updateAttrs(){let e=Yd(this,lg,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(mn)?"true":"false",class:"cm-content",style:`${Ae.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Yd(this,Hu,t);let n=this.observer.ignore(()=>{let s=kd(this.contentDOM,this.contentAttrs,t),i=kd(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(e){let t=!0;for(let n of e)for(let s of n.effects)if(s.is($e.announce)){t&&(this.announceDOM.textContent=""),t=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(Bi);let e=this.state.facet($e.cspNonce);Ln.mount(this.root,this.styleModules.concat(ZC).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.plugin!=e)&&this.pluginMap.set(e,t=this.plugins.find(n=>n.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return Vl(this,e,Td(this,e,t,n))}moveByGroup(e,t){return Vl(this,e,Td(this,e,t,n=>G$(this,e.head,n)))}visualLineSide(e,t){let n=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=n[t?n.length-1:0];return ne.cursor(i.side(t,s)+e.from,i.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,n=!0){return U$(this,e,t,n)}moveVertically(e,t,n){return Vl(this,e,H$(this,e,t,n))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let n=tu(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),tu(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.docView.coordsAt(e,t);if(!n||n.left==n.right)return n;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),o=i[Hr.find(i,e-s.from,-1,t)];return Da(n,o.dir==ut.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(sg)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>IC)return Gp(e.length);let t=this.textDirectionAt(e.from),n;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==t&&(i.fresh||Up(i.isolates,n=$d(this,e))))return i.order;n||(n=$d(this,e));let s=k$(e.text,t,n);return this.bidiCache.push(new Na(e.from,e.to,t,n,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Ae.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Np(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return qo.of(new Ns(typeof e=="number"?ne.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return qo.of(new Ns(ne.cursor(n.from),"start","start",n.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return xt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return xt.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=Ln.newName(),s=[Ho.of(n),Bi.of(iu(`.${n}`,e))];return t&&t.dark&&s.push(nu.of(!0)),s}static baseTheme(e){return kn.lowest(Bi.of(iu("."+su,e,Tg)))}static findFromDOM(e){var t;let n=e.querySelector(".cm-content"),s=n&&kt.get(n)||kt.get(e);return((t=s?.root)===null||t===void 0?void 0:t.view)||null}}$e.styleModule=Bi;$e.inputHandler=rg;$e.clipboardInputFilter=Uu;$e.clipboardOutputFilter=Gu;$e.scrollHandler=og;$e.focusChangeEffect=ng;$e.perLineTextDirection=sg;$e.exceptionSink=tg;$e.updateListener=Kc;$e.editable=mn;$e.mouseSelectionStyle=eg;$e.dragMovesSelection=Jp;$e.clickAddsSelectionRange=Kp;$e.decorations=bl;$e.blockWrappers=cg;$e.outerDecorations=Ku;$e.atomicRanges=So;$e.bidiIsolatedRanges=ug;$e.scrollMargins=hg;$e.darkTheme=nu;$e.cspNonce=Te.define({combine:r=>r.length?r[0]:""});$e.contentAttributes=Hu;$e.editorAttributes=lg;$e.lineWrapping=$e.contentAttributes.of({class:"cm-lineWrapping"});$e.announce=Ne.define();const IC=4096,jd={};class Na{constructor(e,t,n,s,i,o){this.from=e,this.to=t,this.dir=n,this.isolates=s,this.fresh=i,this.order=o}static update(e,t){if(t.empty&&!e.some(i=>i.fresh))return e;let n=[],s=e.length?e[e.length-1].dir:ut.LTR;for(let i=Math.max(0,e.length-10);i<e.length;i++){let o=e[i];o.dir==s&&!t.touchesRange(o.from,o.to)&&n.push(new Na(t.mapPos(o.from,1),t.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return n}}function Yd(r,e,t){for(let n=r.state.facet(e),s=n.length-1;s>=0;s--){let i=n[s],o=typeof i=="function"?i(r):i;o&&ju(o,t)}return t}const VC=Ae.mac?"mac":Ae.windows?"win":Ae.linux?"linux":"key";function zC(r,e){const t=r.split(/-(?!$)/);let n=t[t.length-1];n=="Space"&&(n=" ");let s,i,o,a;for(let l=0;l<t.length-1;++l){const c=t[l];if(/^(cmd|meta|m)$/i.test(c))a=!0;else if(/^a(lt)?$/i.test(c))s=!0;else if(/^(c|ctrl|control)$/i.test(c))i=!0;else if(/^s(hift)?$/i.test(c))o=!0;else if(/^mod$/i.test(c))e=="mac"?a=!0:i=!0;else throw new Error("Unrecognized modifier name: "+c)}return s&&(n="Alt-"+n),i&&(n="Ctrl-"+n),a&&(n="Meta-"+n),o&&(n="Shift-"+n),n}function Ko(r,e,t){return e.altKey&&(r="Alt-"+r),e.ctrlKey&&(r="Ctrl-"+r),e.metaKey&&(r="Meta-"+r),t!==!1&&e.shiftKey&&(r="Shift-"+r),r}const NC=kn.default($e.domEventHandlers({keydown(r,e){return Ag(Mg(e.state),r,e,"editor")}})),$o=Te.define({enables:NC}),Fd=new WeakMap;function Mg(r){let e=r.facet($o),t=Fd.get(e);return t||Fd.set(e,t=jC(e.reduce((n,s)=>n.concat(s),[]))),t}function WC(r,e,t){return Ag(Mg(r.state),e,r,t)}let Rn=null;const qC=4e3;function jC(r,e=VC){let t=Object.create(null),n=Object.create(null),s=(o,a)=>{let l=n[o];if(l==null)n[o]=a;else if(l!=a)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},i=(o,a,l,c,u)=>{var h,f;let g=t[o]||(t[o]=Object.create(null)),p=a.split(/ (?!$)/).map(x=>zC(x,e));for(let x=1;x<p.length;x++){let k=p.slice(0,x).join(" ");s(k,!0),g[k]||(g[k]={preventDefault:!0,stopPropagation:!1,run:[w=>{let S=Rn={view:w,prefix:k,scope:o};return setTimeout(()=>{Rn==S&&(Rn=null)},qC),!0}]})}let O=p.join(" ");s(O,!1);let b=g[O]||(g[O]={preventDefault:!1,stopPropagation:!1,run:((f=(h=g._any)===null||h===void 0?void 0:h.run)===null||f===void 0?void 0:f.slice())||[]});l&&b.run.push(l),c&&(b.preventDefault=!0),u&&(b.stopPropagation=!0)};for(let o of r){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let c of a){let u=t[c]||(t[c]=Object.create(null));u._any||(u._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let f in u)u[f].run.push(g=>h(g,ou))}let l=o[e]||o.key;if(l)for(let c of a)i(c,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&i(c,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return t}let ou=null;function Ag(r,e,t,n){ou=e;let s=i$(e),i=Kt(s,0),o=Ur(i)==s.length&&s!=" ",a="",l=!1,c=!1,u=!1;Rn&&Rn.view==t&&Rn.scope==n&&(a=Rn.prefix+" ",bg.indexOf(e.keyCode)<0&&(c=!0,Rn=null));let h=new Set,f=b=>{if(b){for(let x of b.run)if(!h.has(x)&&(h.add(x),x(t)))return b.stopPropagation&&(u=!0),!0;b.preventDefault&&(b.stopPropagation&&(u=!0),c=!0)}return!1},g=r[n],p,O;return g&&(f(g[a+Ko(s,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Ae.windows&&e.ctrlKey&&e.altKey)&&!(Ae.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=Xn[e.keyCode])&&p!=s?(f(g[a+Ko(p,e,!0)])||e.shiftKey&&(O=Gi[e.keyCode])!=s&&O!=p&&f(g[a+Ko(O,e,!1)]))&&(l=!0):o&&e.shiftKey&&f(g[a+Ko(s,e,!0)])&&(l=!0),!l&&f(g._any)&&(l=!0)),c&&(l=!0),l&&u&&e.stopPropagation(),ou=null,l}class Co{constructor(e,t,n,s,i){this.className=e,this.left=t,this.top=n,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,n){if(n.empty){let s=e.coordsAtPos(n.head,n.assoc||1);if(!s)return[];let i=_g(e);return[new Co(t,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return YC(e,t,n)}}function _g(r){let e=r.scrollDOM.getBoundingClientRect();return{left:(r.textDirection==ut.LTR?e.left:e.right-r.scrollDOM.clientWidth*r.scaleX)-r.scrollDOM.scrollLeft*r.scaleX,top:e.top-r.scrollDOM.scrollTop*r.scaleY}}function Ud(r,e,t,n){let s=r.coordsAtPos(e,t*2);if(!s)return n;let i=r.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,a=r.posAtCoords({x:i.left+1,y:o}),l=r.posAtCoords({x:i.right-1,y:o});return a==null||l==null?n:{from:Math.max(n.from,Math.min(a,l)),to:Math.min(n.to,Math.max(a,l))}}function YC(r,e,t){if(t.to<=r.viewport.from||t.from>=r.viewport.to)return[];let n=Math.max(t.from,r.viewport.from),s=Math.min(t.to,r.viewport.to),i=r.textDirection==ut.LTR,o=r.contentDOM,a=o.getBoundingClientRect(),l=_g(r),c=o.querySelector(".cm-line"),u=c&&window.getComputedStyle(c),h=a.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),f=a.right-(u?parseInt(u.paddingRight):0),g=eu(r,n,1),p=eu(r,s,-1),O=g.type==Dt.Text?g:null,b=p.type==Dt.Text?p:null;if(O&&(r.lineWrapping||g.widgetLineBreaks)&&(O=Ud(r,n,1,O)),b&&(r.lineWrapping||p.widgetLineBreaks)&&(b=Ud(r,s,-1,b)),O&&b&&O.from==b.from&&O.to==b.to)return k(w(t.from,t.to,O));{let P=O?w(t.from,null,O):S(g,!1),X=b?w(null,t.to,b):S(p,!0),E=[];return(O||g).to<(b||p).from-(O&&b?1:0)||g.widgetLineBreaks>1&&P.bottom+r.defaultLineHeight/2<X.top?E.push(x(h,P.bottom,f,X.top)):P.bottom<X.top&&r.elementAtHeight((P.bottom+X.top)/2).type==Dt.Text&&(P.bottom=X.top=(P.bottom+X.top)/2),k(P).concat(E).concat(k(X))}function x(P,X,E,K){return new Co(e,P-l.left,X-l.top,Math.max(0,E-P),K-X)}function k({top:P,bottom:X,horizontal:E}){let K=[];for(let le=0;le<E.length;le+=2)K.push(x(E[le],P,E[le+1],X));return K}function w(P,X,E){let K=1e9,le=-1e9,oe=[];function N(U,z,V,G,j){let ce=r.coordsAtPos(U,U==E.to?-2:2),H=r.coordsAtPos(V,V==E.from?2:-2);!ce||!H||(K=Math.min(ce.top,H.top,K),le=Math.max(ce.bottom,H.bottom,le),j==ut.LTR?oe.push(i&&z?h:ce.left,i&&G?f:H.right):oe.push(!i&&G?h:H.left,!i&&z?f:ce.right))}let I=P??E.from,D=X??E.to;for(let U of r.visibleRanges)if(U.to>I&&U.from<D)for(let z=Math.max(U.from,I),V=Math.min(U.to,D);;){let G=r.state.doc.lineAt(z);for(let j of r.bidiSpans(G)){let ce=j.from+G.from,H=j.to+G.from;if(ce>=V)break;H>z&&N(Math.max(ce,z),P==null&&ce<=I,Math.min(H,V),X==null&&H>=D,j.dir)}if(z=G.to+1,z>=V)break}return oe.length==0&&N(I,P==null,D,X==null,r.textDirection),{top:K,bottom:le,horizontal:oe}}function S(P,X){let E=a.top+(X?P.top:P.bottom);return{top:E,bottom:E,horizontal:[]}}}function FC(r,e){return r.constructor==e.constructor&&r.eq(e)}class UC{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(ka)!=e.state.facet(ka)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,n=e.facet(ka);for(;t<n.length&&n[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:t}=this.view;(e!=this.scaleX||t!=this.scaleY)&&(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(e){if(e.length!=this.drawn.length||e.some((t,n)=>!FC(t,this.drawn[n]))){let t=this.dom.firstChild,n=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[n].constructor&&s.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,Ae.safari&&Ae.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const ka=Te.define();function Rg(r){return[xt.define(e=>new UC(e,r)),ka.of(r)]}const eo=Te.define({combine(r){return nn(r,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function GC(r={}){return[eo.of(r),HC,KC,JC,ig.of(!0)]}function Bg(r){return r.startState.facet(eo)!=r.state.facet(eo)}const HC=Rg({above:!0,markers(r){let{state:e}=r,t=e.facet(eo),n=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||t.drawRangeCursor){let o=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=s.empty?s:ne.cursor(s.head,s.head>s.anchor?-1:1);for(let l of Co.forRange(r,o,a))n.push(l)}}return n},update(r,e){r.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=Bg(r);return t&&Gd(r.state,e),r.docChanged||r.selectionSet||t},mount(r,e){Gd(e.state,r)},class:"cm-cursorLayer"});function Gd(r,e){e.style.animationDuration=r.facet(eo).cursorBlinkRate+"ms"}const KC=Rg({above:!1,markers(r){return r.state.selection.ranges.map(e=>e.empty?[]:Co.forRange(r,"cm-selectionBackground",e)).reduce((e,t)=>e.concat(t))},update(r,e){return r.docChanged||r.selectionSet||r.viewportChanged||Bg(r)},class:"cm-selectionLayer"}),JC=kn.highest($e.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Zg=Ne.define({map(r,e){return r==null?null:e.mapPos(r)}}),Di=Mt.define({create(){return null},update(r,e){return r!=null&&(r=e.changes.mapPos(r)),e.effects.reduce((t,n)=>n.is(Zg)?n.value:t,r)}}),e5=xt.fromClass(class{constructor(r){this.view=r,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(r){var e;let t=r.state.field(Di);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(r.startState.field(Di)!=t||r.docChanged||r.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:r}=this,e=r.state.field(Di),t=e!=null&&r.coordsAtPos(e);if(!t)return null;let n=r.scrollDOM.getBoundingClientRect();return{left:t.left-n.left+r.scrollDOM.scrollLeft*r.scaleX,top:t.top-n.top+r.scrollDOM.scrollTop*r.scaleY,height:t.bottom-t.top}}drawCursor(r){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;r?(this.cursor.style.left=r.left/e+"px",this.cursor.style.top=r.top/t+"px",this.cursor.style.height=r.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(r){this.view.state.field(Di)!=r&&this.view.dispatch({effects:Zg.of(r)})}},{eventObservers:{dragover(r){this.setDropPos(this.view.posAtCoords({x:r.clientX,y:r.clientY}))},dragleave(r){(r.target==this.view.contentDOM||!this.view.contentDOM.contains(r.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function t5(){return[Di,e5]}function Hd(r,e,t,n,s){e.lastIndex=0;for(let i=r.iterRange(t,n),o=t,a;!i.next().done;o+=i.value.length)if(!i.lineBreak)for(;a=e.exec(i.value);)s(o+a.index,a)}function r5(r,e){let t=r.visibleRanges;if(t.length==1&&t[0].from==r.viewport.from&&t[0].to==r.viewport.to)return t;let n=[];for(let{from:s,to:i}of t)s=Math.max(r.state.doc.lineAt(s).from,s-e),i=Math.min(r.state.doc.lineAt(i).to,i+e),n.length&&n[n.length-1].to>=s?n[n.length-1].to=i:n.push({from:s,to:i});return n}class n5{constructor(e){const{regexp:t,decoration:n,decorate:s,boundary:i,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(a,l,c,u)=>s(u,c,c+a[0].length,a,l);else if(typeof n=="function")this.addMatch=(a,l,c,u)=>{let h=n(a,l,c);h&&u(c,c+a[0].length,h)};else if(n)this.addMatch=(a,l,c,u)=>u(c,c+a[0].length,n);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=o}createDeco(e){let t=new bn,n=t.add.bind(t);for(let{from:s,to:i}of r5(e,this.maxLength))Hd(e.state.doc,this.regexp,s,i,(o,a)=>this.addMatch(a,e,o,n));return t.finish()}updateDeco(e,t){let n=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(n=Math.min(a,n),s=Math.max(l,s))}),e.viewportMoved||s-n>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),n,s):t}updateRange(e,t,n,s){for(let i of e.visibleRanges){let o=Math.max(i.from,n),a=Math.min(i.to,s);if(a>=o){let l=e.state.doc.lineAt(o),c=l.to<a?e.state.doc.lineAt(a):l,u=Math.max(i.from,l.from),h=Math.min(i.to,c.to);if(this.boundary){for(;o>l.from;o--)if(this.boundary.test(l.text[o-1-l.from])){u=o;break}for(;a<c.to;a++)if(this.boundary.test(c.text[a-c.from])){h=a;break}}let f=[],g,p=(O,b,x)=>f.push(x.range(O,b));if(l==c)for(this.regexp.lastIndex=u-l.from;(g=this.regexp.exec(l.text))&&g.index<h-l.from;)this.addMatch(g,e,g.index+l.from,p);else Hd(e.state.doc,this.regexp,u,h,(O,b)=>this.addMatch(b,e,O,p));t=t.update({filterFrom:u,filterTo:h,filter:(O,b)=>O<u||b>h,add:f})}}return t}}const au=/x/.unicode!=null?"gu":"g",s5=new RegExp(`[\0-\b
|
|
21
|
-
--\u2028\u2029\uFEFF-]`,au),i5={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let Wl=null;function o5(){var r;if(Wl==null&&typeof document<"u"&&document.body){let e=document.body.style;Wl=((r=e.tabSize)!==null&&r!==void 0?r:e.MozTabSize)!=null}return Wl||!1}const wa=Te.define({combine(r){let e=nn(r,{render:null,specialChars:s5,addSpecialChars:null});return(e.replaceTabs=!o5())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,au)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,au)),e}});function a5(r={}){return[wa.of(r),l5()]}let Kd=null;function l5(){return Kd||(Kd=xt.fromClass(class{constructor(r){this.view=r,this.decorations=De.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(r.state.facet(wa)),this.decorations=this.decorator.createDeco(r)}makeDecorator(r){return new n5({regexp:r.specialChars,decoration:(e,t,n)=>{let{doc:s}=t.state,i=Kt(e[0],0);if(i==9){let o=s.lineAt(n),a=t.state.tabSize,l=Zr(o.text,a,n-o.from);return De.replace({widget:new d5((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=De.replace({widget:new h5(r,i)}))},boundary:r.replaceTabs?void 0:/[^]/})}update(r){let e=r.state.facet(wa);r.startState.facet(wa)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(r.view)):this.decorations=this.decorator.updateDeco(r,this.decorations)}},{decorations:r=>r.decorations}))}const c5="•";function u5(r){return r>=32?c5:r==10?"":String.fromCharCode(9216+r)}class h5 extends sn{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=u5(this.code),n=e.state.phrase("Control character")+" "+(i5[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,n,t);if(s)return s;let i=document.createElement("span");return i.textContent=t,i.title=n,i.setAttribute("aria-label",n),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class d5 extends sn{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function f5(){return p5}const m5=De.line({class:"cm-activeLine"}),p5=xt.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.docChanged||r.selectionSet)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=-1,t=[];for(let n of r.state.selection.ranges){let s=r.lineBlockAt(n.head);s.from>e&&(t.push(m5.range(s.from)),e=s.from)}return De.set(t)}},{decorations:r=>r.decorations}),lu=2e3;function g5(r,e,t){let n=Math.min(e.line,t.line),s=Math.max(e.line,t.line),i=[];if(e.off>lu||t.off>lu||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=n;l<=s;l++){let c=r.doc.line(l);c.length<=a&&i.push(ne.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=n;l<=s;l++){let c=r.doc.line(l),u=Vc(c.text,o,r.tabSize,!0);if(u<0)i.push(ne.cursor(c.to));else{let h=Vc(c.text,a,r.tabSize);i.push(ne.range(c.from+u,c.from+h))}}}return i}function O5(r,e){let t=r.coordsAtPos(r.viewport.from);return t?Math.round(Math.abs((t.left-e)/r.defaultCharacterWidth)):-1}function Jd(r,e){let t=r.posAtCoords({x:e.clientX,y:e.clientY},!1),n=r.state.doc.lineAt(t),s=t-n.from,i=s>lu?-1:s==n.length?O5(r,e.clientX):Zr(n.text,r.state.tabSize,t-n.from);return{line:n.number,col:i,off:s}}function v5(r,e){let t=Jd(r,e),n=r.state.selection;return t?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(i);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},n=n.map(s.changes)}},get(s,i,o){let a=Jd(r,s);if(!a)return n;let l=g5(r.state,t,a);return l.length?o?ne.create(l.concat(n.ranges)):ne.create(l):n}}:null}function b5(r){let e=(t=>t.altKey&&t.button==0);return $e.mouseSelectionStyle.of((t,n)=>e(n)?v5(t,n):null)}const x5={Alt:[18,r=>!!r.altKey],Control:[17,r=>!!r.ctrlKey],Shift:[16,r=>!!r.shiftKey],Meta:[91,r=>!!r.metaKey]},y5={style:"cursor: crosshair"};function k5(r={}){let[e,t]=x5[r.key||"Alt"],n=xt.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[n,$e.contentAttributes.of(s=>{var i;return!((i=s.plugin(n))===null||i===void 0)&&i.isDown?y5:null})]}const Jo="-10000px";class Eg{constructor(e,t,n,s){this.facet=t,this.createTooltipView=n,this.removeTooltipView=s,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let i=null;this.tooltipViews=this.tooltips.map(o=>i=n(o,i))}update(e,t){var n;let s=e.state.facet(this.facet),i=s.filter(l=>l);if(s===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let o=[],a=t?[]:null;for(let l=0;l<i.length;l++){let c=i[l],u=-1;if(c){for(let h=0;h<this.tooltips.length;h++){let f=this.tooltips[h];f&&f.create==c.create&&(u=h)}if(u<0)o[l]=this.createTooltipView(c,l?o[l-1]:null),a&&(a[l]=!!c.above);else{let h=o[l]=this.tooltipViews[u];a&&(a[l]=t[u]),h.update&&h.update(e)}}}for(let l of this.tooltipViews)o.indexOf(l)<0&&(this.removeTooltipView(l),(n=l.destroy)===null||n===void 0||n.call(l));return t&&(a.forEach((l,c)=>t[c]=l),t.length=a.length),this.input=s,this.tooltips=i,this.tooltipViews=o,!0}}function w5(r){let e=r.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const ql=Te.define({combine:r=>{var e,t,n;return{position:Ae.ios?"absolute":((e=r.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=r.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((n=r.find(s=>s.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||w5}}}),ef=new WeakMap,nh=xt.fromClass(class{constructor(r){this.view=r,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=r.state.facet(ql);this.position=e.position,this.parent=e.parent,this.classes=r.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Eg(r,sh,(t,n)=>this.createTooltip(t,n),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),r.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let r of this.manager.tooltipViews)this.intersectionObserver.observe(r.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(r){r.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(r,this.above);e&&this.observeIntersection();let t=e||r.geometryChanged,n=r.state.facet(ql);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(r,e){let t=r.create(this.view),n=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),r.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",t.dom.appendChild(s)}return t.dom.style.position=this.position,t.dom.style.top=Jo,t.dom.style.left="0px",this.container.insertBefore(t.dom,n),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var r,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(r=n.destroy)===null||r===void 0||r.call(n);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let r=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(Ae.safari){let o=i.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(r=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:r,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),s=Ju(this.view);return{visible:{left:n.left+s.left,top:n.top+s.top,right:n.right-s.right,bottom:n.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(ql).tooltipSpace(this.view),scaleX:r,scaleY:e,makeAbsolute:t}}writeMeasure(r){var e;if(r.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:n,scaleX:s,scaleY:i}=r,o=[];for(let a=0;a<this.manager.tooltips.length;a++){let l=this.manager.tooltips[a],c=this.manager.tooltipViews[a],{dom:u}=c,h=r.pos[a],f=r.size[a];if(!h||l.clip!==!1&&(h.bottom<=Math.max(t.top,n.top)||h.top>=Math.min(t.bottom,n.bottom)||h.right<Math.max(t.left,n.left)-.1||h.left>Math.min(t.right,n.right)+.1)){u.style.top=Jo;continue}let g=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,p=g?7:0,O=f.right-f.left,b=(e=ef.get(c))!==null&&e!==void 0?e:f.bottom-f.top,x=c.offset||$5,k=this.view.textDirection==ut.LTR,w=f.width>n.right-n.left?k?n.left:n.right-f.width:k?Math.max(n.left,Math.min(h.left-(g?14:0)+x.x,n.right-O)):Math.min(Math.max(n.left,h.left-O+(g?14:0)-x.x),n.right-O),S=this.above[a];!l.strictSide&&(S?h.top-b-p-x.y<n.top:h.bottom+b+p+x.y>n.bottom)&&S==n.bottom-h.bottom>h.top-n.top&&(S=this.above[a]=!S);let P=(S?h.top-n.top:n.bottom-h.bottom)-p;if(P<b&&c.resize!==!1){if(P<this.view.defaultLineHeight){u.style.top=Jo;continue}ef.set(c,b),u.style.height=(b=P)/i+"px"}else u.style.height&&(u.style.height="");let X=S?h.top-b-p-x.y:h.bottom+p+x.y,E=w+O;if(c.overlap!==!0)for(let K of o)K.left<E&&K.right>w&&K.top<X+b&&K.bottom>X&&(X=S?K.top-b-2-p:K.bottom+p+2);if(this.position=="absolute"?(u.style.top=(X-r.parent.top)/i+"px",tf(u,(w-r.parent.left)/s)):(u.style.top=X/i+"px",tf(u,w/s)),g){let K=h.left+(k?x.x:-x.x)-(w+14-7);g.style.left=K/s+"px"}c.overlap!==!0&&o.push({left:w,top:X,right:E,bottom:X+b}),u.classList.toggle("cm-tooltip-above",S),u.classList.toggle("cm-tooltip-below",!S),c.positioned&&c.positioned(r.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let r of this.manager.tooltipViews)r.dom.style.top=Jo}},{eventObservers:{scroll(){this.maybeMeasure()}}});function tf(r,e){let t=parseInt(r.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(r.style.left=e+"px")}const S5=$e.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),$5={x:0,y:0},sh=Te.define({enables:[nh,S5]}),Wa=Te.define({combine:r=>r.reduce((e,t)=>e.concat(t),[])});class wl{static create(e){return new wl(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Eg(e,Wa,(t,n)=>this.createHostedView(t,n),t=>t.dom.remove())}createHostedView(e,t){let n=e.create(this.view);return n.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(n.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&n.mount&&n.mount(this.view),n}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let n of this.manager.tooltipViews){let s=n[e];if(s!==void 0){if(t===void 0)t=s;else if(t!==s)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const C5=sh.compute([Wa],r=>{let e=r.facet(Wa);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var n;return(n=t.end)!==null&&n!==void 0?n:t.pos})),create:wl.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});class Q5{constructor(e,t,n,s,i){this.view=e,this.source=t,this.field=n,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:t}=this,n=e.docView.tile.nearest(t.target);if(!n)return;let s,i=1;if(n.isWidget())s=n.posAtStart;else{if(s=e.posAtCoords(t),s==null)return;let a=e.coordsAtPos(s);if(!a||t.y<a.top||t.y>a.bottom||t.x<a.left-e.defaultCharacterWidth||t.x>a.right+e.defaultCharacterWidth)return;let l=e.bidiSpans(e.state.doc.lineAt(s)).find(u=>u.from<=s&&u.to>=s),c=l&&l.dir==ut.RTL?-1:1;i=t.x<a.left?-c:c}let o=this.source(e,s,i);if(o?.then){let a=this.pending={pos:s};o.then(l=>{this.pending==a&&(this.pending=null,l&&!(Array.isArray(l)&&!l.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(l)?l:[l])}))},l=>rr(e.state,l,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(nh),t=e?e.manager.tooltips.findIndex(n=>n.create==wl.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,n;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!P5(i.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,a=(n=(t=s[0])===null||t===void 0?void 0:t.end)!==null&&n!==void 0?n:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!T5(this.view,o,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length){let{tooltip:n}=this;n&&n.dom.contains(e.relatedTarget)?this.watchTooltipLeave(n.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=n=>{e.removeEventListener("mouseleave",t),this.active.length&&!this.view.dom.contains(n.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const ea=4;function P5(r,e){let{left:t,right:n,top:s,bottom:i}=r.getBoundingClientRect(),o;if(o=r.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();s=Math.min(a.top,s),i=Math.max(a.bottom,i)}return e.clientX>=t-ea&&e.clientX<=n+ea&&e.clientY>=s-ea&&e.clientY<=i+ea}function T5(r,e,t,n,s,i){let o=r.scrollDOM.getBoundingClientRect(),a=r.documentTop+r.documentPadding.top+r.contentHeight;if(o.left>n||o.right<n||o.top>s||Math.min(o.bottom,a)<s)return!1;let l=r.posAtCoords({x:n,y:s},!1);return l>=e&&l<=t}function M5(r,e={}){let t=Ne.define(),n=Mt.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(i,o))),i.docChanged)){let o=[];for(let a of s){let l=i.changes.mapPos(a.pos,-1,Bt.TrackDel);if(l!=null){let c=Object.assign(Object.create(null),a);c.pos=l,c.end!=null&&(c.end=i.changes.mapPos(c.end)),o.push(c)}}s=o}for(let o of i.effects)o.is(t)&&(s=o.value),o.is(A5)&&(s=[]);return s},provide:s=>Wa.from(s)});return{active:n,extension:[n,xt.define(s=>new Q5(s,r,n,t,e.hoverTime||300)),C5]}}function Dg(r,e){let t=r.plugin(nh);if(!t)return null;let n=t.manager.tooltips.indexOf(e);return n<0?null:t.manager.tooltipViews[n]}const A5=Ne.define(),rf=Te.define({combine(r){let e,t;for(let n of r)e=e||n.topContainer,t=t||n.bottomContainer;return{topContainer:e,bottomContainer:t}}});function ih(r,e){let t=r.plugin(Lg),n=t?t.specs.indexOf(e):-1;return n>-1?t.panels[n]:null}const Lg=xt.fromClass(class{constructor(r){this.input=r.state.facet(to),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(r));let e=r.state.facet(rf);this.top=new ta(r,!0,e.topContainer),this.bottom=new ta(r,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(r){let e=r.state.facet(rf);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new ta(r.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new ta(r.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=r.state.facet(to);if(t!=this.input){let n=t.filter(l=>l),s=[],i=[],o=[],a=[];for(let l of n){let c=this.specs.indexOf(l),u;c<0?(u=l(r.view),a.push(u)):(u=this.panels[c],u.update&&u.update(r)),s.push(u),(u.top?i:o).push(u)}this.specs=n,this.panels=s,this.top.sync(i),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let n of this.panels)n.update&&n.update(r)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:r=>$e.scrollMargins.of(e=>{let t=e.plugin(r);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})});class ta{constructor(e,t,n){this.view=e,this.top=t,this.container=n,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=nf(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=nf(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function nf(r){let e=r.nextSibling;return r.remove(),e}const to=Te.define({enables:Lg});function _5(r,e){let t,n=new Promise(o=>t=o),s=o=>R5(o,e,t);r.state.field(jl,!1)?r.dispatch({effects:Xg.of(s)}):r.dispatch({effects:Ne.appendConfig.of(jl.init(()=>[s]))});let i=Ig.of(s);return{close:i,result:n.then(o=>((r.win.queueMicrotask||(l=>r.win.setTimeout(l,10)))(()=>{r.state.field(jl).indexOf(s)>-1&&r.dispatch({effects:i})}),o))}}const jl=Mt.define({create(){return[]},update(r,e){for(let t of e.effects)t.is(Xg)?r=[t.value].concat(r):t.is(Ig)&&(r=r.filter(n=>n!=t.value));return r},provide:r=>to.computeN([r],e=>e.field(r))}),Xg=Ne.define(),Ig=Ne.define();function R5(r,e,t){let n=e.content?e.content(r,()=>o(null)):null;if(!n){if(n=at("form"),e.input){let a=at("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),n.appendChild(at("label",(e.label||"")+": ",a))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(at("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let s=n.nodeName=="FORM"?[n]:n.querySelectorAll("form");for(let a=0;a<s.length;a++){let l=s[a];l.addEventListener("keydown",c=>{c.keyCode==27?(c.preventDefault(),o(null)):c.keyCode==13&&(c.preventDefault(),o(l))}),l.addEventListener("submit",c=>{c.preventDefault(),o(l)})}let i=at("div",n,at("button",{onclick:()=>o(null),"aria-label":r.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(i.className=e.class),i.classList.add("cm-dialog");function o(a){i.contains(i.ownerDocument.activeElement)&&r.focus(),t(a)}return{dom:i,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=n.querySelector(e.focus):a=n.querySelector("input")||n.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}class yn extends Dn{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}yn.prototype.elementClass="";yn.prototype.toDOM=void 0;yn.prototype.mapMode=Bt.TrackBefore;yn.prototype.startSide=yn.prototype.endSide=-1;yn.prototype.point=!0;const Sa=Te.define(),B5=Te.define(),Z5={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Ge.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},Wi=Te.define();function E5(r){return[Vg(),Wi.of({...Z5,...r})]}const sf=Te.define({combine:r=>r.some(e=>e)});function Vg(r){return[D5]}const D5=xt.fromClass(class{constructor(r){this.view=r,this.domAfter=null,this.prevViewport=r.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=r.state.facet(Wi).map(e=>new af(r,e)),this.fixed=!r.state.facet(sf);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),r.scrollDOM.insertBefore(this.dom,r.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(r){if(this.updateGutters(r)){let e=this.prevViewport,t=r.view.viewport,n=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(n<(t.to-t.from)*.8)}if(r.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(sf)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=r.view.viewport}syncGutters(r){let e=this.dom.nextSibling;r&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=Ge.iter(this.view.state.facet(Sa),this.view.viewport.from),n=[],s=this.gutters.map(i=>new L5(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(i.type)){let o=!0;for(let a of i.type)if(a.type==Dt.Text&&o){cu(t,n,a.from);for(let l of s)l.line(this.view,a,n);o=!1}else if(a.widget)for(let l of s)l.widget(this.view,a)}else if(i.type==Dt.Text){cu(t,n,i.from);for(let o of s)o.line(this.view,i,n)}else if(i.widget)for(let o of s)o.widget(this.view,i);for(let i of s)i.finish();r&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(r){let e=r.startState.facet(Wi),t=r.state.facet(Wi),n=r.docChanged||r.heightChanged||r.viewportChanged||!Ge.eq(r.startState.facet(Sa),r.state.facet(Sa),r.view.viewport.from,r.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(r)&&(n=!0);else{n=!0;let s=[];for(let i of t){let o=e.indexOf(i);o<0?s.push(new af(this.view,i)):(this.gutters[o].update(r),s.push(this.gutters[o]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return n}destroy(){for(let r of this.gutters)r.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:r=>$e.scrollMargins.of(e=>{let t=e.plugin(r);if(!t||t.gutters.length==0||!t.fixed)return null;let n=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==ut.LTR?{left:n,right:s}:{right:n,left:s}})});function of(r){return Array.isArray(r)?r:[r]}function cu(r,e,t){for(;r.value&&r.from<=t;)r.from==t&&e.push(r.value),r.next()}class L5{constructor(e,t,n){this.gutter=e,this.height=n,this.i=0,this.cursor=Ge.iter(e.markers,t.from)}addElement(e,t,n){let{gutter:s}=this,i=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let a=new zg(e,o,i,n);s.elements.push(a),s.dom.appendChild(a.dom)}else s.elements[this.i].update(e,o,i,n);this.height=t.bottom,this.i++}line(e,t,n){let s=[];cu(this.cursor,s,t.from),n.length&&(s=s.concat(n));let i=this.gutter.config.lineMarker(e,t,s);i&&s.unshift(i);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let n=this.gutter.config.widgetMarker(e,t.widget,t),s=n?[n]:null;for(let i of e.state.facet(B5)){let o=i(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class af{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let n in t.domEventHandlers)this.dom.addEventListener(n,s=>{let i=s.target,o;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let l=i.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=s.clientY;let a=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[n](e,a,s)&&s.preventDefault()});this.markers=of(t.markers(e)),t.initialSpacer&&(this.spacer=new zg(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=of(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let n=e.view.viewport;return!Ge.eq(this.markers,t,n.from,n.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class zg{constructor(e,t,n,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,n,s)}update(e,t,n,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=n&&(this.dom.style.marginTop=(this.above=n)?n+"px":""),X5(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let n="cm-gutterElement",s=this.dom.firstChild;for(let i=0,o=0;;){let a=o,l=i<t.length?t[i++]:null,c=!1;if(l){let u=l.elementClass;u&&(n+=" "+u);for(let h=o;h<this.markers.length;h++)if(this.markers[h].compare(l)){a=h,c=!0;break}}else a=this.markers.length;for(;o<a;){let u=this.markers[o++];if(u.toDOM){u.destroy(s);let h=s.nextSibling;s.remove(),s=h}}if(!l)break;l.toDOM&&(c?s=s.nextSibling:this.dom.insertBefore(l.toDOM(e),s)),c&&o++}this.dom.className=n,this.markers=t}destroy(){this.setMarkers(null,[])}}function X5(r,e){if(r.length!=e.length)return!1;for(let t=0;t<r.length;t++)if(!r[t].compare(e[t]))return!1;return!0}const I5=Te.define(),V5=Te.define(),Ds=Te.define({combine(r){return nn(r,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let n=Object.assign({},e);for(let s in t){let i=n[s],o=t[s];n[s]=i?(a,l,c)=>i(a,l,c)||o(a,l,c):o}return n}})}});class Yl extends yn{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Fl(r,e){return r.state.facet(Ds).formatNumber(e,r.state)}const z5=Wi.compute([Ds],r=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(I5)},lineMarker(e,t,n){return n.some(s=>s.toDOM)?null:new Yl(Fl(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,n)=>{for(let s of e.state.facet(V5)){let i=s(e,t,n);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ds)!=e.state.facet(Ds),initialSpacer(e){return new Yl(Fl(e,lf(e.state.doc.lines)))},updateSpacer(e,t){let n=Fl(t.view,lf(t.view.state.doc.lines));return n==e.number?e:new Yl(n)},domEventHandlers:r.facet(Ds).domEventHandlers,side:"before"}));function N5(r={}){return[Ds.of(r),Vg(),z5]}function lf(r){let e=9;for(;e<r;)e=e*10+9;return e}const W5=new class extends yn{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},q5=Sa.compute(["selection"],r=>{let e=[],t=-1;for(let n of r.selection.ranges){let s=r.doc.lineAt(n.head).from;s>t&&(t=s,e.push(W5.range(s)))}return Ge.of(e)});function j5(){return q5}const Ng=1024;let Y5=0;class Sr{constructor(e,t){this.from=e,this.to=t}}class qe{constructor(e={}){this.id=Y5++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=Qt.match(e)),t=>{let n=e(t);return n===void 0?null:[this,n]}}}qe.closedBy=new qe({deserialize:r=>r.split(" ")});qe.openedBy=new qe({deserialize:r=>r.split(" ")});qe.group=new qe({deserialize:r=>r.split(" ")});qe.isolate=new qe({deserialize:r=>{if(r&&r!="rtl"&&r!="ltr"&&r!="auto")throw new RangeError("Invalid value for isolate: "+r);return r||"auto"}});qe.contextHash=new qe({perNode:!0});qe.lookAhead=new qe({perNode:!0});qe.mounted=new qe({perNode:!0});class Ws{constructor(e,t,n,s=!1){this.tree=e,this.overlay=t,this.parser=n,this.bracketed=s}static get(e){return e&&e.props&&e.props[qe.mounted.id]}}const F5=Object.create(null);class Qt{constructor(e,t,n,s=0){this.name=e,this.props=t,this.id=n,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):F5,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new Qt(e.name||"",t,e.id,n);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(qe.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let s of n.split(" "))t[s]=e[n];return n=>{for(let s=n.prop(qe.group),i=-1;i<(s?s.length:0);i++){let o=t[i<0?n.name:s[i]];if(o)return o}}}}Qt.none=new Qt("",Object.create(null),0,8);class Qo{constructor(e){this.types=e;for(let t=0;t<e.length;t++)if(e[t].id!=t)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let t=[];for(let n of this.types){let s=null;for(let i of e){let o=i(n);if(o){s||(s=Object.assign({},n.props));let a=o[1],l=o[0];l.combine&&l.id in s&&(a=l.combine(s[l.id],a)),s[l.id]=a}}t.push(s?new Qt(n.name,s,n.id,n.flags):n)}return new Qo(t)}}const ra=new WeakMap,cf=new WeakMap;var it;(function(r){r[r.ExcludeBuffers=1]="ExcludeBuffers",r[r.IncludeAnonymous=2]="IncludeAnonymous",r[r.IgnoreMounts=4]="IgnoreMounts",r[r.IgnoreOverlays=8]="IgnoreOverlays",r[r.EnterBracketed=16]="EnterBracketed"})(it||(it={}));class st{constructor(e,t,n,s,i){if(this.type=e,this.children=t,this.positions=n,this.length=s,this.props=null,i&&i.length){this.props=Object.create(null);for(let[o,a]of i)this.props[typeof o=="number"?o:o.id]=a}}toString(){let e=Ws.get(this);if(e&&!e.overlay)return e.tree.toString();let t="";for(let n of this.children){let s=n.toString();s&&(t&&(t+=","),t+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(t.length?"("+t+")":""):t}cursor(e=0){return new qa(this.topNode,e)}cursorAt(e,t=0,n=0){let s=ra.get(this)||this.topNode,i=new qa(s);return i.moveTo(e,t),ra.set(this,i._tree),i}get topNode(){return new Nt(this,0,0,null)}resolve(e,t=0){let n=ro(ra.get(this)||this.topNode,e,t,!1);return ra.set(this,n),n}resolveInner(e,t=0){let n=ro(cf.get(this)||this.topNode,e,t,!0);return cf.set(this,n),n}resolveStack(e,t=0){return H5(this,e,t)}iterate(e){let{enter:t,leave:n,from:s=0,to:i=this.length}=e,o=e.mode||0,a=(o&it.IncludeAnonymous)>0;for(let l=this.cursor(o|it.IncludeAnonymous);;){let c=!1;if(l.from<=i&&l.to>=s&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;c=!0}for(;c&&n&&(a||!l.type.isAnonymous)&&n(l),!l.nextSibling();){if(!l.parent())return;c=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:lh(Qt.none,this.children,this.positions,0,this.children.length,0,this.length,(t,n,s)=>new st(this.type,t,n,s,this.propValues),e.makeTree||((t,n,s)=>new st(Qt.none,t,n,s)))}static build(e){return K5(e)}}st.empty=new st(Qt.none,[],[],0);class oh{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new oh(this.buffer,this.index)}}class Vn{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return Qt.none}toString(){let e=[];for(let t=0;t<this.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(",")}childString(e){let t=this.buffer[e],n=this.buffer[e+3],s=this.set.types[t],i=s.name;if(/\W/.test(i)&&!s.isError&&(i=JSON.stringify(i)),e+=4,n==e)return i;let o=[];for(;e<n;)o.push(this.childString(e)),e=this.buffer[e+3];return i+"("+o.join(",")+")"}findChild(e,t,n,s,i){let{buffer:o}=this,a=-1;for(let l=e;l!=t&&!(Wg(i,s,o[l+1],o[l+2])&&(a=l,n>0));l=o[l+3]);return a}slice(e,t,n){let s=this.buffer,i=new Uint16Array(t-e),o=0;for(let a=e,l=0;a<t;){i[l++]=s[a++],i[l++]=s[a++]-n;let c=i[l++]=s[a++]-n;i[l++]=s[a++]-e,o=Math.max(o,c)}return new Vn(i,o,this.set)}}function Wg(r,e,t,n){switch(r){case-2:return t<e;case-1:return n>=e&&t<e;case 0:return t<e&&n>e;case 1:return t<=e&&n>e;case 2:return n>e;case 4:return!0}}function ro(r,e,t,n){for(var s;r.from==r.to||(t<1?r.from>=e:r.from>e)||(t>-1?r.to<=e:r.to<e);){let o=!n&&r instanceof Nt&&r.index<0?null:r.parent;if(!o)return r;r=o}let i=n?0:it.IgnoreOverlays;if(n)for(let o=r,a=o.parent;a;o=a,a=o.parent)o instanceof Nt&&o.index<0&&((s=a.enter(e,t,i))===null||s===void 0?void 0:s.from)!=o.from&&(r=a);for(;;){let o=r.enter(e,t,i);if(!o)return r;r=o}}class qg{cursor(e=0){return new qa(this,e)}getChild(e,t=null,n=null){let s=uf(this,e,t,n);return s.length?s[0]:null}getChildren(e,t=null,n=null){return uf(this,e,t,n)}resolve(e,t=0){return ro(this,e,t,!1)}resolveInner(e,t=0){return ro(this,e,t,!0)}matchContext(e){return uu(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),n=this;for(;t;){let s=t.lastChild;if(!s||s.to!=t.to)break;s.type.isError&&s.from==s.to?(n=t,t=s.prevSibling):t=s}return n}get node(){return this}get next(){return this.parent}}class Nt extends qg{constructor(e,t,n,s){super(),this._tree=e,this.from=t,this.index=n,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,t,n,s,i=0){for(let o=this;;){for(let{children:a,positions:l}=o._tree,c=t>0?a.length:-1;e!=c;e+=t){let u=a[e],h=l[e]+o.from,f;if(!(!(i&it.EnterBracketed&&u instanceof st&&(f=Ws.get(u))&&!f.overlay&&f.bracketed&&n>=h&&n<=h+u.length)&&!Wg(s,n,h,h+u.length))){if(u instanceof Vn){if(i&it.ExcludeBuffers)continue;let g=u.findChild(0,u.buffer.length,t,n-h,s);if(g>-1)return new Kr(new U5(o,u,e,h),null,g)}else if(i&it.IncludeAnonymous||!u.type.isAnonymous||ah(u)){let g;if(!(i&it.IgnoreMounts)&&(g=Ws.get(u))&&!g.overlay)return new Nt(g.tree,h,e,o);let p=new Nt(u,h,e,o);return i&it.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?u.children.length-1:0,t,n,s,i)}}}if(i&it.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,n=0){let s;if(!(n&it.IgnoreOverlays)&&(s=Ws.get(this._tree))&&s.overlay){let i=e-this.from,o=n&it.EnterBracketed&&s.bracketed;for(let{from:a,to:l}of s.overlay)if((t>0||o?a<=i:a<i)&&(t<0||o?l>=i:l>i))return new Nt(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function uf(r,e,t,n){let s=r.cursor(),i=[];if(!s.firstChild())return i;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return i}for(;;){if(n!=null&&s.type.is(n))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return n==null?i:[]}}function uu(r,e,t=e.length-1){for(let n=r;t>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[t]&&e[t]!=n.name)return!1;t--}}return!0}class U5{constructor(e,t,n,s){this.parent=e,this.buffer=t,this.index=n,this.start=s}}class Kr extends qg{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,n);return i<0?null:new Kr(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,n=0){if(n&it.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return i<0?null:new Kr(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Kr(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new Kr(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,s=this.index+4,i=n.buffer[this.index+3];if(i>s){let o=n.buffer[this.index+1];e.push(n.slice(s,i,o)),t.push(0)}return new st(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function jg(r){if(!r.length)return null;let e=0,t=r[0];for(let i=1;i<r.length;i++){let o=r[i];(o.from>t.from||o.to<t.to)&&(t=o,e=i)}let n=t instanceof Nt&&t.index<0?null:t.parent,s=r.slice();return n?s[e]=n:s.splice(e,1),new G5(s,t)}class G5{constructor(e,t){this.heads=e,this.node=t}get next(){return jg(this.heads)}}function H5(r,e,t){let n=r.resolveInner(e,t),s=null;for(let i=n instanceof Nt?n:n.context.parent;i;i=i.parent)if(i.index<0){let o=i.parent;(s||(s=[n])).push(o.resolve(e,t)),i=o}else{let o=Ws.get(i.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let a=new Nt(o.tree,o.overlay[0].from+i.from,-1,i);(s||(s=[n])).push(ro(a,e,t,!1))}}return s?jg(s):n}class qa{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~it.EnterBracketed,e instanceof Nt)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:n,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=n+s.buffer[e+1],this.to=n+s.buffer[e+2],!0}yield(e){return e?e instanceof Nt?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,n,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,n);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,n=this.mode){return this.buffer?n&it.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&it.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&it.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,n=this.stack.length-1;if(e<0){let s=n<0?0:this.stack[n]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(n<0?t.buffer.length:t.buffer[this.stack[n]+3]))return this.yieldBuf(s)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,n,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let i=0;i<this.index;i++)if(s.buffer.buffer[i+3]<this.index)return!1;({index:t,parent:n}=s)}else({index:t,_parent:n}=this._tree);for(;n;{index:t,_parent:n}=n)if(t>-1)for(let i=t+e,o=e<0?-1:n._tree.children.length;i!=o;i+=e){let a=n._tree.children[i];if(this.mode&it.IncludeAnonymous||a instanceof Vn||!a.type.isAnonymous||ah(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,t=null,n=0;if(e&&e.context==this.buffer)e:for(let s=this.index,i=this.stack.length;i>=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,n=i+1;break e}s=this.stack[--i]}for(let s=n;s<this.stack.length;s++)t=new Kr(this.buffer,t,this.stack[s]);return this.bufferNode=new Kr(this.buffer,t,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,t){for(let n=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){n++;continue}this.type.isAnonymous||(s=!0)}for(;;){if(s&&t&&t(this),s=this.type.isAnonymous,!n)return;if(this.nextSibling())break;this.parent(),n--,s=!0}}}matchContext(e){if(!this.buffer)return uu(this.node.parent,e);let{buffer:t}=this.buffer,{types:n}=t.set;for(let s=e.length-1,i=this.stack.length-1;s>=0;i--){if(i<0)return uu(this._tree,e,s);let o=n[t.buffer[this.stack[i]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function ah(r){return r.children.some(e=>e instanceof Vn||!e.type.isAnonymous||ah(e))}function K5(r){var e;let{buffer:t,nodeSet:n,maxBufferLength:s=Ng,reused:i=[],minRepeatType:o=n.types.length}=r,a=Array.isArray(t)?new oh(t,t.length):t,l=n.types,c=0,u=0;function h(P,X,E,K,le,oe){let{id:N,start:I,end:D,size:U}=a,z=u,V=c;if(U<0)if(a.next(),U==-1){let F=i[N];E.push(F),K.push(I-P);return}else if(U==-3){c=N;return}else if(U==-4){u=N;return}else throw new RangeError(`Unrecognized record size: ${U}`);let G=l[N],j,ce,H=I-P;if(D-I<=s&&(ce=b(a.pos-X,le))){let F=new Uint16Array(ce.size-ce.skip),re=a.pos-ce.size,Oe=F.length;for(;a.pos>re;)Oe=x(ce.start,F,Oe);j=new Vn(F,D-ce.start,n),H=ce.start-P}else{let F=a.pos-U;a.next();let re=[],Oe=[],ve=N>=o?N:-1,Ce=0,Me=D;for(;a.pos>F;)ve>=0&&a.id==ve&&a.size>=0?(a.end<=Me-s&&(p(re,Oe,I,Ce,a.end,Me,ve,z,V),Ce=re.length,Me=a.end),a.next()):oe>2500?f(I,F,re,Oe):h(I,F,re,Oe,ve,oe+1);if(ve>=0&&Ce>0&&Ce<re.length&&p(re,Oe,I,Ce,I,Me,ve,z,V),re.reverse(),Oe.reverse(),ve>-1&&Ce>0){let Ue=g(G,V);j=lh(G,re,Oe,0,re.length,0,D-I,Ue,Ue)}else j=O(G,re,Oe,D-I,z-D,V)}E.push(j),K.push(H)}function f(P,X,E,K){let le=[],oe=0,N=-1;for(;a.pos>X;){let{id:I,start:D,end:U,size:z}=a;if(z>4)a.next();else{if(N>-1&&D<N)break;N<0&&(N=U-s),le.push(I,D,U),oe++,a.next()}}if(oe){let I=new Uint16Array(oe*4),D=le[le.length-2];for(let U=le.length-3,z=0;U>=0;U-=3)I[z++]=le[U],I[z++]=le[U+1]-D,I[z++]=le[U+2]-D,I[z++]=z;E.push(new Vn(I,le[2]-D,n)),K.push(D-P)}}function g(P,X){return(E,K,le)=>{let oe=0,N=E.length-1,I,D;if(N>=0&&(I=E[N])instanceof st){if(!N&&I.type==P&&I.length==le)return I;(D=I.prop(qe.lookAhead))&&(oe=K[N]+I.length+D)}return O(P,E,K,le,oe,X)}}function p(P,X,E,K,le,oe,N,I,D){let U=[],z=[];for(;P.length>K;)U.push(P.pop()),z.push(X.pop()+E-le);P.push(O(n.types[N],U,z,oe-le,I-oe,D)),X.push(le-E)}function O(P,X,E,K,le,oe,N){if(oe){let I=[qe.contextHash,oe];N=N?[I].concat(N):[I]}if(le>25){let I=[qe.lookAhead,le];N=N?[I].concat(N):[I]}return new st(P,X,E,K,N)}function b(P,X){let E=a.fork(),K=0,le=0,oe=0,N=E.end-s,I={size:0,start:0,skip:0};e:for(let D=E.pos-P;E.pos>D;){let U=E.size;if(E.id==X&&U>=0){I.size=K,I.start=le,I.skip=oe,oe+=4,K+=4,E.next();continue}let z=E.pos-U;if(U<0||z<D||E.start<N)break;let V=E.id>=o?4:0,G=E.start;for(E.next();E.pos>z;){if(E.size<0)if(E.size==-3||E.size==-4)V+=4;else break e;else E.id>=o&&(V+=4);E.next()}le=G,K+=U,oe+=V}return(X<0||K==P)&&(I.size=K,I.start=le,I.skip=oe),I.size>4?I:void 0}function x(P,X,E){let{id:K,start:le,end:oe,size:N}=a;if(a.next(),N>=0&&K<o){let I=E;if(N>4){let D=a.pos-(N-4);for(;a.pos>D;)E=x(P,X,E)}X[--E]=I,X[--E]=oe-P,X[--E]=le-P,X[--E]=K}else N==-3?c=K:N==-4&&(u=K);return E}let k=[],w=[];for(;a.pos>0;)h(r.start||0,r.bufferStart||0,k,w,-1,0);let S=(e=r.length)!==null&&e!==void 0?e:k.length?w[0]+k[0].length:0;return new st(l[r.topID],k.reverse(),w.reverse(),S)}const hf=new WeakMap;function $a(r,e){if(!r.isAnonymous||e instanceof Vn||e.type!=r)return 1;let t=hf.get(e);if(t==null){t=1;for(let n of e.children){if(n.type!=r||!(n instanceof st)){t=1;break}t+=$a(r,n)}hf.set(e,t)}return t}function lh(r,e,t,n,s,i,o,a,l){let c=0;for(let p=n;p<s;p++)c+=$a(r,e[p]);let u=Math.ceil(c*1.5/8),h=[],f=[];function g(p,O,b,x,k){for(let w=b;w<x;){let S=w,P=O[w],X=$a(r,p[w]);for(w++;w<x;w++){let E=$a(r,p[w]);if(X+E>=u)break;X+=E}if(w==S+1){if(X>u){let E=p[S];g(E.children,E.positions,0,E.children.length,O[S]+k);continue}h.push(p[S])}else{let E=O[w-1]+p[w-1].length-P;h.push(lh(r,p,O,S,w,P,E,null,l))}f.push(P+k-i)}}return g(e,t,n,s,0),(a||l)(h,f,o)}class Yg{constructor(){this.map=new WeakMap}setBuffer(e,t,n){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,n)}getBuffer(e,t){let n=this.map.get(e);return n&&n.get(t)}set(e,t){e instanceof Kr?this.setBuffer(e.context.buffer,e.index,t):e instanceof Nt&&this.map.set(e.tree,t)}get(e){return e instanceof Kr?this.getBuffer(e.context.buffer,e.index):e instanceof Nt?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class gn{constructor(e,t,n,s,i=!1,o=!1){this.from=e,this.to=t,this.tree=n,this.offset=s,this.open=(i?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],n=!1){let s=[new gn(0,e.length,e,0,!1,n)];for(let i of t)i.to>e.length&&s.push(i);return s}static applyChanges(e,t,n=128){if(!t.length)return e;let s=[],i=1,o=e.length?e[0]:null;for(let a=0,l=0,c=0;;a++){let u=a<t.length?t[a]:null,h=u?u.fromA:1e9;if(h-l>=n)for(;o&&o.from<h;){let f=o;if(l>=f.from||h<=f.to||c){let g=Math.max(f.from,l)-c,p=Math.min(f.to,h)-c;f=g>=p?null:new gn(g,p,f.tree,f.offset+c,a>0,!!u)}if(f&&s.push(f),o.to>h)break;o=i<e.length?e[i++]:null}if(!u)break;l=u.toA,c=u.toA-u.toB}return s}}class ch{startParse(e,t,n){return typeof e=="string"&&(e=new J5(e)),n=n?n.length?n.map(s=>new Sr(s.from,s.to)):[new Sr(0,0)]:[new Sr(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let s=this.startParse(e,t,n);for(;;){let i=s.advance();if(i)return i}}}class J5{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}function Fg(r){return(e,t,n,s)=>new tQ(e,r,t,n,s)}class df{constructor(e,t,n,s,i,o){this.parser=e,this.parse=t,this.overlay=n,this.bracketed=s,this.target=i,this.from=o}}function ff(r){if(!r.length||r.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(r))}class eQ{constructor(e,t,n,s,i,o,a,l){this.parser=e,this.predicate=t,this.mounts=n,this.index=s,this.start=i,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}}const hu=new qe({perNode:!0});class tQ{constructor(e,t,n,s,i){this.nest=t,this.input=n,this.fragments=s,this.ranges=i,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let s of this.inner)s.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new st(n.type,n.children,n.positions,n.length,n.propValues.concat([[hu,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[qe.mounted.id]=new Ws(t,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].from<e&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(e){if(this.stoppedAt=e,this.baseParse)this.baseParse.stopAt(e);else for(let t=this.innerDone;t<this.inner.length;t++)this.inner[t].parse.stopAt(e)}startInner(){let e=new sQ(this.fragments),t=null,n=null,s=new qa(new Nt(this.baseTree,this.ranges[0].from,0,null),it.IncludeAnonymous|it.IgnoreMounts);e:for(let i,o;;){let a=!0,l;if(this.stoppedAt!=null&&s.from>=this.stoppedAt)a=!1;else if(e.hasNode(s)){if(t){let c=t.mounts.find(u=>u.frag.from<=s.from&&u.frag.to>=s.to&&u.mount.overlay);if(c)for(let u of c.mount.overlay){let h=u.from+c.pos,f=u.to+c.pos;h>=s.from&&f<=s.to&&!t.ranges.some(g=>g.from<f&&g.to>h)&&t.ranges.push({from:h,to:f})}}a=!1}else if(n&&(o=rQ(n.ranges,s.from,s.to)))a=o!=2;else if(!s.type.isAnonymous&&(i=this.nest(s,this.input))&&(s.from<s.to||!i.overlay)){s.tree||(nQ(s),t&&t.depth++,n&&n.depth++);let c=e.findMounts(s.from,i.parser);if(typeof i.overlay=="function")t=new eQ(i.parser,i.overlay,c,this.inner.length,s.from,!!i.bracketed,s.tree,t);else{let u=gf(this.ranges,i.overlay||(s.from<s.to?[new Sr(s.from,s.to)]:[]));u.length&&ff(u),(u.length||!i.overlay)&&this.inner.push(new df(i.parser,u.length?i.parser.startParse(this.input,Of(c,u),u):i.parser.startParse(""),i.overlay?i.overlay.map(h=>new Sr(h.from-s.from,h.to-s.from)):null,!!i.bracketed,s.tree,u.length?u[0].from:s.from)),i.overlay?u.length&&(n={ranges:u,depth:0,prev:n}):a=!1}}else if(t&&(l=t.predicate(s))&&(l===!0&&(l=new Sr(s.from,s.to)),l.from<l.to)){let c=t.ranges.length-1;c>=0&&t.ranges[c].to==l.from?t.ranges[c]={from:t.ranges[c].from,to:l.to}:t.ranges.push(l)}if(a&&s.firstChild())t&&t.depth++,n&&n.depth++;else for(;!s.nextSibling();){if(!s.parent())break e;if(t&&!--t.depth){let c=gf(this.ranges,t.ranges);c.length&&(ff(c),this.inner.splice(t.index,0,new df(t.parser,t.parser.startParse(this.input,Of(t.mounts,c),c),t.ranges.map(u=>new Sr(u.from-t.start,u.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}n&&!--n.depth&&(n=n.prev)}}}}function rQ(r,e,t){for(let n of r){if(n.from>=t)break;if(n.to>e)return n.from<=e&&n.to>=t?2:1}return 0}function mf(r,e,t,n,s,i){if(e<t){let o=r.buffer[e+1];n.push(r.slice(e,t,o)),s.push(o-i)}}function nQ(r){let{node:e}=r,t=[],n=e.context.buffer;do t.push(r.index),r.parent();while(!r.tree);let s=r.tree,i=s.children.indexOf(n),o=s.children[i],a=o.buffer,l=[i];function c(u,h,f,g,p,O){let b=t[O],x=[],k=[];mf(o,u,b,x,k,g);let w=a[b+1],S=a[b+2];l.push(x.length);let P=O?c(b+4,a[b+3],o.set.types[a[b]],w,S-w,O-1):e.toTree();return x.push(P),k.push(w-g),mf(o,a[b+3],h,x,k,g),new st(f,x,k,p)}s.children[i]=c(0,a.length,Qt.none,0,o.length,t.length-1);for(let u of l){let h=r.tree.children[u],f=r.tree.positions[u];r.yield(new Nt(h,f+r.from,u,r._tree))}}class pf{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(it.IncludeAnonymous|it.IgnoreMounts)}moveTo(e){let{cursor:t}=this,n=e-this.offset;for(;!this.done&&t.from<n;)t.to>=e&&t.enter(n,1,it.IgnoreOverlays|it.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof st)t=t.children[0];else break}return!1}}let sQ=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(t=n.tree.prop(hu))!==null&&t!==void 0?t:n.to,this.inner=new pf(n.tree,-n.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(hu))!==null&&e!==void 0?e:t.to,this.inner=new pf(t.tree,-t.offset)}}findMounts(e,t){var n;let s=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let i=this.inner.cursor.node;i;i=i.parent){let o=(n=i.tree)===null||n===void 0?void 0:n.prop(qe.mounted);if(o&&o.parser==t)for(let a=this.fragI;a<this.fragments.length;a++){let l=this.fragments[a];if(l.from>=i.to)break;l.tree==this.curFrag.tree&&s.push({frag:l,pos:i.from-l.offset,mount:o})}}}return s}};function gf(r,e){let t=null,n=e;for(let s=1,i=0;s<r.length;s++){let o=r[s-1].to,a=r[s].from;for(;i<n.length;i++){let l=n[i];if(l.from>=a)break;l.to<=o||(t||(n=t=e.slice()),l.from<o?(t[i]=new Sr(l.from,o),l.to>a&&t.splice(i+1,0,new Sr(a,l.to))):l.to>a?t[i--]=new Sr(a,l.to):t.splice(i--,1))}}return n}function iQ(r,e,t,n){let s=0,i=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let u=s==r.length?1e9:o?r[s].to:r[s].from,h=i==e.length?1e9:a?e[i].to:e[i].from;if(o!=a){let f=Math.max(l,t),g=Math.min(u,h,n);f<g&&c.push(new Sr(f,g))}if(l=Math.min(u,h),l==1e9)break;u==l&&(o?(o=!1,s++):o=!0),h==l&&(a?(a=!1,i++):a=!0)}return c}function Of(r,e){let t=[];for(let{pos:n,mount:s,frag:i}of r){let o=n+(s.overlay?s.overlay[0].from:0),a=o+s.tree.length,l=Math.max(i.from,o),c=Math.min(i.to,a);if(s.overlay){let u=s.overlay.map(f=>new Sr(f.from+n,f.to+n)),h=iQ(e,u,l,c);for(let f=0,g=l;;f++){let p=f==h.length,O=p?c:h[f].from;if(O>g&&t.push(new gn(g,O,s.tree,-o,i.from>=g||i.openStart,i.to<=O||i.openEnd)),p)break;g=h[f].to}}else t.push(new gn(l,c,s.tree,-o,i.from>=o||i.openStart,i.to<=a||i.openEnd))}return t}let oQ=0;class pr{constructor(e,t,n,s){this.name=e,this.set=t,this.base=n,this.modified=s,this.id=oQ++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let n=typeof e=="string"?e:"?";if(e instanceof pr&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new pr(n,[],null,[]);if(s.set.push(s),t)for(let i of t.set)s.set.push(i);return s}static defineModifier(e){let t=new ja(e);return n=>n.modified.indexOf(t)>-1?n:ja.get(n.base||n,n.modified.concat(t).sort((s,i)=>s.id-i.id))}}let aQ=0;class ja{constructor(e){this.name=e,this.instances=[],this.id=aQ++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find(a=>a.base==e&&lQ(t,a.modified));if(n)return n;let s=[],i=new pr(e.name,s,e,t);for(let a of t)a.instances.push(i);let o=cQ(t);for(let a of e.set)if(!a.modified.length)for(let l of o)s.push(ja.get(a,l));return i}}function lQ(r,e){return r.length==e.length&&r.every((t,n)=>t==e[n])}function cQ(r){let e=[[]];for(let t=0;t<r.length;t++)for(let n=0,s=e.length;n<s;n++)e.push(e[n].concat(r[t]));return e.sort((t,n)=>n.length-t.length)}function ai(r){let e=Object.create(null);for(let t in r){let n=r[t];Array.isArray(n)||(n=[n]);for(let s of t.split(" "))if(s){let i=[],o=2,a=s;for(let h=0;;){if(a=="..."&&h>0&&h+3==s.length){o=1;break}let f=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!f)throw new RangeError("Invalid path: "+s);if(i.push(f[0]=="*"?"":f[0][0]=='"'?JSON.parse(f[0]):f[0]),h+=f[0].length,h==s.length)break;let g=s[h++];if(h==s.length&&g=="!"){o=0;break}if(g!="/")throw new RangeError("Invalid path: "+s);a=s.slice(h)}let l=i.length-1,c=i[l];if(!c)throw new RangeError("Invalid path: "+s);let u=new no(n,o,l>0?i.slice(0,l):null);e[c]=u.sort(e[c])}}return Ug.add(e)}const Ug=new qe({combine(r,e){let t,n,s;for(;r||e;){if(!r||e&&r.depth>=e.depth?(s=e,e=e.next):(s=r,r=r.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let i=new no(s.tags,s.mode,s.context);t?t.next=i:n=i,t=i}return n}});class no{constructor(e,t,n,s){this.tags=e,this.mode=t,this.context=n,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}no.empty=new no([],2,null);function Gg(r,e){let t=Object.create(null);for(let i of r)if(!Array.isArray(i.tag))t[i.tag.id]=i.class;else for(let o of i.tag)t[o.id]=i.class;let{scope:n,all:s=null}=e||{};return{style:i=>{let o=s;for(let a of i)for(let l of a.set){let c=t[l.id];if(c){o=o?o+" "+c:c;break}}return o},scope:n}}function uQ(r,e){let t=null;for(let n of r){let s=n.style(e);s&&(t=t?t+" "+s:s)}return t}function hQ(r,e,t,n=0,s=r.length){let i=new dQ(n,Array.isArray(e)?e:[e],t);i.highlightRange(r.cursor(),n,s,"",i.highlighters),i.flush(s)}class dQ{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,s,i){let{type:o,from:a,to:l}=e;if(a>=n||l<=t)return;o.isTop&&(i=this.highlighters.filter(g=>!g.scope||g.scope(o)));let c=s,u=fQ(e)||no.empty,h=uQ(i,u.tags);if(h&&(c&&(c+=" "),c+=h,u.mode==1&&(s+=(s?" ":"")+h)),this.startSpan(Math.max(t,a),c),u.opaque)return;let f=e.tree&&e.tree.prop(qe.mounted);if(f&&f.overlay){let g=e.node.enter(f.overlay[0].from+a,1),p=this.highlighters.filter(b=>!b.scope||b.scope(f.tree.type)),O=e.firstChild();for(let b=0,x=a;;b++){let k=b<f.overlay.length?f.overlay[b]:null,w=k?k.from+a:l,S=Math.max(t,x),P=Math.min(n,w);if(S<P&&O)for(;e.from<P&&(this.highlightRange(e,S,P,s,i),this.startSpan(Math.min(P,e.to),c),!(e.to>=w||!e.nextSibling())););if(!k||w>n)break;x=k.to+a,x>t&&(this.highlightRange(g.cursor(),Math.max(t,k.from+a),Math.min(n,x),"",p),this.startSpan(Math.min(n,x),c))}O&&e.parent()}else if(e.firstChild()){f&&(s="");do if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,s,i),this.startSpan(Math.min(n,e.to),c)}while(e.nextSibling());e.parent()}}}function fQ(r){let e=r.type.prop(Ug);for(;e&&e.context&&!r.matchContext(e.context);)e=e.next;return e||null}const we=pr.define,na=we(),An=we(),vf=we(An),bf=we(An),_n=we(),sa=we(_n),Ul=we(_n),Yr=we(),Jn=we(Yr),qr=we(),jr=we(),du=we(),Pi=we(du),ia=we(),$={comment:na,lineComment:we(na),blockComment:we(na),docComment:we(na),name:An,variableName:we(An),typeName:vf,tagName:we(vf),propertyName:bf,attributeName:we(bf),className:we(An),labelName:we(An),namespace:we(An),macroName:we(An),literal:_n,string:sa,docString:we(sa),character:we(sa),attributeValue:we(sa),number:Ul,integer:we(Ul),float:we(Ul),bool:we(_n),regexp:we(_n),escape:we(_n),color:we(_n),url:we(_n),keyword:qr,self:we(qr),null:we(qr),atom:we(qr),unit:we(qr),modifier:we(qr),operatorKeyword:we(qr),controlKeyword:we(qr),definitionKeyword:we(qr),moduleKeyword:we(qr),operator:jr,derefOperator:we(jr),arithmeticOperator:we(jr),logicOperator:we(jr),bitwiseOperator:we(jr),compareOperator:we(jr),updateOperator:we(jr),definitionOperator:we(jr),typeOperator:we(jr),controlOperator:we(jr),punctuation:du,separator:we(du),bracket:Pi,angleBracket:we(Pi),squareBracket:we(Pi),paren:we(Pi),brace:we(Pi),content:Yr,heading:Jn,heading1:we(Jn),heading2:we(Jn),heading3:we(Jn),heading4:we(Jn),heading5:we(Jn),heading6:we(Jn),contentSeparator:we(Yr),list:we(Yr),quote:we(Yr),emphasis:we(Yr),strong:we(Yr),link:we(Yr),monospace:we(Yr),strikethrough:we(Yr),inserted:we(),deleted:we(),changed:we(),invalid:we(),meta:ia,documentMeta:we(ia),annotation:we(ia),processingInstruction:we(ia),definition:pr.defineModifier("definition"),constant:pr.defineModifier("constant"),function:pr.defineModifier("function"),standard:pr.defineModifier("standard"),local:pr.defineModifier("local"),special:pr.defineModifier("special")};for(let r in $){let e=$[r];e instanceof pr&&(e.name=r)}Gg([{tag:$.link,class:"tok-link"},{tag:$.heading,class:"tok-heading"},{tag:$.emphasis,class:"tok-emphasis"},{tag:$.strong,class:"tok-strong"},{tag:$.keyword,class:"tok-keyword"},{tag:$.atom,class:"tok-atom"},{tag:$.bool,class:"tok-bool"},{tag:$.url,class:"tok-url"},{tag:$.labelName,class:"tok-labelName"},{tag:$.inserted,class:"tok-inserted"},{tag:$.deleted,class:"tok-deleted"},{tag:$.literal,class:"tok-literal"},{tag:$.string,class:"tok-string"},{tag:$.number,class:"tok-number"},{tag:[$.regexp,$.escape,$.special($.string)],class:"tok-string2"},{tag:$.variableName,class:"tok-variableName"},{tag:$.local($.variableName),class:"tok-variableName tok-local"},{tag:$.definition($.variableName),class:"tok-variableName tok-definition"},{tag:$.special($.variableName),class:"tok-variableName2"},{tag:$.definition($.propertyName),class:"tok-propertyName tok-definition"},{tag:$.typeName,class:"tok-typeName"},{tag:$.namespace,class:"tok-namespace"},{tag:$.className,class:"tok-className"},{tag:$.macroName,class:"tok-macroName"},{tag:$.propertyName,class:"tok-propertyName"},{tag:$.operator,class:"tok-operator"},{tag:$.comment,class:"tok-comment"},{tag:$.meta,class:"tok-meta"},{tag:$.invalid,class:"tok-invalid"},{tag:$.punctuation,class:"tok-punctuation"}]);var Gl;const cs=new qe;function uh(r){return Te.define({combine:r?e=>e.concat(r):void 0})}const hh=new qe;class $r{constructor(e,t,n=[],s=""){this.data=e,this.name=s,He.prototype.hasOwnProperty("tree")||Object.defineProperty(He.prototype,"tree",{get(){return ht(this)}}),this.parser=t,this.extension=[zn.of(this),He.languageData.of((i,o,a)=>{let l=xf(i,o,a),c=l.type.prop(cs);if(!c)return[];let u=i.facet(c),h=l.type.prop(hh);if(h){let f=l.resolve(o-l.from,a);for(let g of h)if(g.test(f,i)){let p=i.facet(g.facet);return g.type=="replace"?p:p.concat(u)}}return u})].concat(n)}isActiveAt(e,t,n=-1){return xf(e,t,n).type.prop(cs)==this.data}findRegions(e){let t=e.facet(zn);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],s=(i,o)=>{if(i.prop(cs)==this.data){n.push({from:o,to:o+i.length});return}let a=i.prop(qe.mounted);if(a){if(a.tree.prop(cs)==this.data){if(a.overlay)for(let l of a.overlay)n.push({from:l.from+o,to:l.to+o});else n.push({from:o,to:o+i.length});return}else if(a.overlay){let l=n.length;if(s(a.tree,a.overlay[0].from+o),n.length>l)return}}for(let l=0;l<i.children.length;l++){let c=i.children[l];c instanceof st&&s(c,i.positions[l]+o)}};return s(ht(e),0),n}get allowsNesting(){return!0}}$r.setState=Ne.define();function xf(r,e,t){let n=r.facet(zn),s=ht(r).topNode;if(!n||n.allowsNesting)for(let i=s;i;i=i.enter(e,t,it.ExcludeBuffers|it.EnterBracketed))i.type.isTop&&(s=i);return s}class ei extends $r{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(e){let t=uh(e.languageData);return new ei(t,e.parser.configure({props:[cs.add(n=>n.isTop?t:void 0)]}),e.name)}configure(e,t){return new ei(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ht(r){let e=r.field($r.state,!1);return e?e.tree:st.empty}class mQ{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}}let Ti=null;class so{constructor(e,t,n=[],s,i,o,a,l){this.parser=e,this.state=t,this.fragments=n,this.tree=s,this.treeLen=i,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,n){return new so(e,t,[],st.empty,0,n,[],null)}startParse(){return this.parser.startParse(new mQ(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=st.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(gn.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(n=this.parse.stoppedAt)!==null&&n!==void 0?n:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(gn.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=Ti;Ti=this;try{return e()}finally{Ti=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=yf(e,t.from,t.to);return e}changes(e,t){let{fragments:n,tree:s,treeLen:i,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,u,h,f)=>l.push({fromA:c,toA:u,fromB:h,toB:f})),n=gn.applyChanges(n,l),s=st.empty,i=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let u=e.mapPos(c.from,1),h=e.mapPos(c.to,-1);u<h&&a.push({from:u,to:h})}}}return new so(this.parser,t,n,s,i,o,a,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let n=0;n<this.skipped.length;n++){let{from:s,to:i}=this.skipped[n];s<e.to&&i>e.from&&(this.fragments=yf(this.fragments,s,i),this.skipped.splice(n--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends ch{createParse(t,n,s){let i=s[0].from,o=s[s.length-1].to;return{parsedPos:i,advance(){let l=Ti;if(l){for(let c of s)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new st(Qt.none,[],[],o-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return Ti}}function yf(r,e,t){return gn.applyChanges(r,[{fromA:e,toA:t,fromB:e,toB:t}])}class ti{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,n)||t.takeTree(),new ti(t)}static init(e){let t=Math.min(3e3,e.doc.length),n=so.create(e.facet(zn).parser,e,{from:0,to:t});return n.work(20,t)||n.takeTree(),new ti(n)}}$r.state=Mt.define({create:ti.init,update(r,e){for(let t of e.effects)if(t.is($r.setState))return t.value;return e.startState.facet(zn)!=e.state.facet(zn)?ti.init(e.state):r.apply(e)}});let Hg=r=>{let e=setTimeout(()=>r(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Hg=r=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(r,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const Hl=typeof navigator<"u"&&(!((Gl=navigator.scheduling)===null||Gl===void 0)&&Gl.isInputPending)?()=>navigator.scheduling.isInputPending():null,pQ=xt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field($r.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field($r.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Hg(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:n,viewport:{to:s}}=this.view,i=n.field($r.state);if(i.tree==i.context.tree&&i.context.isDone(s+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!Hl?Math.max(25,e.timeRemaining()-5):1e9),a=i.context.treeLen<s&&n.doc.length>s+1e3,l=i.context.work(()=>Hl&&Hl()||Date.now()>o,s+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:$r.setState.of(new ti(i.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>rr(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),zn=Te.define({combine(r){return r.length?r[0]:null},enables:r=>[$r.state,pQ,$e.contentAttributes.compute([r],e=>{let t=e.facet(r);return t&&t.name?{"data-language":t.name}:{}})]});class io{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}class Ya{constructor(e,t,n,s,i,o=void 0){this.name=e,this.alias=t,this.extensions=n,this.filename=s,this.loadFunc=i,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:n}=e;if(!t){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(n)}return new Ya(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,t,n)}static matchFilename(e,t){for(let s of e)if(s.filename&&s.filename.test(t))return s;let n=/\.([^.]+)$/.exec(t);if(n){for(let s of e)if(s.extensions.indexOf(n[1])>-1)return s}return null}static matchLanguageName(e,t,n=!0){t=t.toLowerCase();for(let s of e)if(s.alias.some(i=>i==t))return s;if(n)for(let s of e)for(let i of s.alias){let o=t.indexOf(i);if(o>-1&&(i.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+i.length])))return s}return null}}const gQ=Te.define(),Po=Te.define({combine:r=>{if(!r.length)return" ";let e=r[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(r[0]));return e}});function Fa(r){let e=r.facet(Po);return e.charCodeAt(0)==9?r.tabSize*e.length:e.length}function oo(r,e){let t="",n=r.tabSize,s=r.facet(Po)[0];if(s==" "){for(;e>=n;)t+=" ",e-=n;s=" "}for(let i=0;i<e;i++)t+=s;return t}function dh(r,e){r instanceof He&&(r=new Sl(r));for(let n of r.state.facet(gQ)){let s=n(r,e);if(s!==void 0)return s}let t=ht(r.state);return t.length>=e?OQ(r,t,e):null}class Sl{constructor(e,t={}){this.state=e,this.options=t,this.unit=Fa(e)}lineAt(e,t=1){let n=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=n.from&&s<=n.to?i&&s==e?{text:"",from:e}:(t<0?s<e:s<=e)?{text:n.text.slice(s-n.from),from:s}:{text:n.text.slice(0,s-n.from),from:n.from}:n}textAfterPos(e,t=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:n,from:s}=this.lineAt(e,t);return n.slice(e-s,Math.min(n.length,e+100-s))}column(e,t=1){let{text:n,from:s}=this.lineAt(e,t),i=this.countColumn(n,e-s),o=this.options.overrideIndentation?this.options.overrideIndentation(s):-1;return o>-1&&(i+=o-this.countColumn(n,n.search(/\S|$/))),i}countColumn(e,t=e.length){return Zr(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:n,from:s}=this.lineAt(e,t),i=this.options.overrideIndentation;if(i){let o=i(s);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const To=new qe;function OQ(r,e,t){let n=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=n.node){let i=[];for(let o=s;o&&!(o.from<n.node.from||o.to>n.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)i.push(o);for(let o=i.length-1;o>=0;o--)n={node:i[o],next:n}}return Kg(n,r,t)}function Kg(r,e,t){for(let n=r;n;n=n.next){let s=bQ(n.node);if(s)return s(fh.create(e,t,n))}return 0}function vQ(r){return r.pos==r.options.simulateBreak&&r.options.simulateDoubleBreak}function bQ(r){let e=r.type.prop(To);if(e)return e;let t=r.firstChild,n;if(t&&(n=t.type.prop(qe.closedBy))){let s=r.lastChild,i=s&&n.indexOf(s.name)>-1;return o=>Jg(o,!0,1,void 0,i&&!vQ(o)?s.from:void 0)}return r.parent==null?xQ:null}function xQ(){return 0}class fh extends Sl{constructor(e,t,n){super(e.state,e.options),this.base=e,this.pos=t,this.context=n}get node(){return this.context.node}static create(e,t,n){return new fh(e,t,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(t.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(yQ(n,e))break;t=this.state.doc.lineAt(n.from)}return this.lineIndent(t.from)}continue(){return Kg(this.context.next,this.base,this.pos)}}function yQ(r,e){for(let t=e;t;t=t.parent)if(r==t)return!0;return!1}function kQ(r){let e=r.node,t=e.childAfter(e.from),n=e.lastChild;if(!t)return null;let s=r.options.simulateBreak,i=r.state.doc.lineAt(t.from),o=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==n)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let c=/^ */.exec(i.text.slice(t.to-i.from))[0].length;return{from:t.from,to:t.to+c}}a=l.to}}function wQ({closing:r,align:e=!0,units:t=1}){return n=>Jg(n,e,t,r)}function Jg(r,e,t,n,s){let i=r.textAfter,o=i.match(/^\s*/)[0].length,a=n&&i.slice(o,o+n.length)==n||s==r.pos+o,l=e?kQ(r):null;return l?a?r.column(l.from):r.column(l.to):r.baseIndent+(a?0:r.unit*t)}const SQ=r=>r.baseIndent;function Ca({except:r,units:e=1}={}){return t=>{let n=r&&r.test(t.textAfter);return t.baseIndent+(n?0:e*t.unit)}}const $Q=200;function CQ(){return He.transactionFilter.of(r=>{if(!r.docChanged||!r.isUserEvent("input.type")&&!r.isUserEvent("input.complete"))return r;let e=r.startState.languageDataAt("indentOnInput",r.startState.selection.main.head);if(!e.length)return r;let t=r.newDoc,{head:n}=r.newSelection.main,s=t.lineAt(n);if(n>s.from+$Q)return r;let i=t.sliceString(s.from,n);if(!e.some(c=>c.test(i)))return r;let{state:o}=r,a=-1,l=[];for(let{head:c}of o.selection.ranges){let u=o.doc.lineAt(c);if(u.from==a)continue;a=u.from;let h=dh(o,u.from);if(h==null)continue;let f=/^\s*/.exec(u.text)[0],g=oo(o,h);f!=g&&l.push({from:u.from,to:u.from+f.length,insert:g})}return l.length?[r,{changes:l,sequential:!0}]:r})}const eO=Te.define(),li=new qe;function tO(r){let e=r.firstChild,t=r.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?r.to:t.from}:null}function QQ(r,e,t){let n=ht(r);if(n.length<t)return null;let s=n.resolveStack(t,1),i=null;for(let o=s;o;o=o.next){let a=o.node;if(a.to<=t||a.from>t)continue;if(i&&a.from<e)break;let l=a.type.prop(li);if(l&&(a.to<n.length-50||n.length==r.doc.length||!PQ(a))){let c=l(a,r);c&&c.from<=t&&c.from>=e&&c.to>t&&(i=c)}}return i}function PQ(r){let e=r.lastChild;return e&&e.to==r.to&&e.type.isError}function Ua(r,e,t){for(let n of r.facet(eO)){let s=n(r,e,t);if(s)return s}return QQ(r,e,t)}function rO(r,e){let t=e.mapPos(r.from,1),n=e.mapPos(r.to,-1);return t>=n?void 0:{from:t,to:n}}const $l=Ne.define({map:rO}),Mo=Ne.define({map:rO});function nO(r){let e=[];for(let{head:t}of r.state.selection.ranges)e.some(n=>n.from<=t&&n.to>=t)||e.push(r.lineBlockAt(t));return e}const ys=Mt.define({create(){return De.none},update(r,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((t,n)=>r=kf(r,t,n)),r=r.map(e.changes);for(let t of e.effects)if(t.is($l)&&!TQ(r,t.value.from,t.value.to)){let{preparePlaceholder:n}=e.state.facet(oO),s=n?De.replace({widget:new EQ(n(e.state,t.value))}):wf;r=r.update({add:[s.range(t.value.from,t.value.to)]})}else t.is(Mo)&&(r=r.update({filter:(n,s)=>t.value.from!=n||t.value.to!=s,filterFrom:t.value.from,filterTo:t.value.to}));return e.selection&&(r=kf(r,e.selection.main.head)),r},provide:r=>$e.decorations.from(r),toJSON(r,e){let t=[];return r.between(0,e.doc.length,(n,s)=>{t.push(n,s)}),t},fromJSON(r){if(!Array.isArray(r)||r.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<r.length;){let n=r[t++],s=r[t++];if(typeof n!="number"||typeof s!="number")throw new RangeError("Invalid JSON for fold state");e.push(wf.range(n,s))}return De.set(e,!0)}});function kf(r,e,t=e){let n=!1;return r.between(e,t,(s,i)=>{s<t&&i>e&&(n=!0)}),n?r.update({filterFrom:e,filterTo:t,filter:(s,i)=>s>=t||i<=e}):r}function Ga(r,e,t){var n;let s=null;return(n=r.field(ys,!1))===null||n===void 0||n.between(e,t,(i,o)=>{(!s||s.from>i)&&(s={from:i,to:o})}),s}function TQ(r,e,t){let n=!1;return r.between(e,e,(s,i)=>{s==e&&i==t&&(n=!0)}),n}function sO(r,e){return r.field(ys,!1)?e:e.concat(Ne.appendConfig.of(aO()))}const MQ=r=>{for(let e of nO(r)){let t=Ua(r.state,e.from,e.to);if(t)return r.dispatch({effects:sO(r.state,[$l.of(t),iO(r,t)])}),!0}return!1},AQ=r=>{if(!r.state.field(ys,!1))return!1;let e=[];for(let t of nO(r)){let n=Ga(r.state,t.from,t.to);n&&e.push(Mo.of(n),iO(r,n,!1))}return e.length&&r.dispatch({effects:e}),e.length>0};function iO(r,e,t=!0){let n=r.state.doc.lineAt(e.from).number,s=r.state.doc.lineAt(e.to).number;return $e.announce.of(`${r.state.phrase(t?"Folded lines":"Unfolded lines")} ${n} ${r.state.phrase("to")} ${s}.`)}const _Q=r=>{let{state:e}=r,t=[];for(let n=0;n<e.doc.length;){let s=r.lineBlockAt(n),i=Ua(e,s.from,s.to);i&&t.push($l.of(i)),n=(i?r.lineBlockAt(i.to):s).to+1}return t.length&&r.dispatch({effects:sO(r.state,t)}),!!t.length},RQ=r=>{let e=r.state.field(ys,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,r.state.doc.length,(n,s)=>{t.push(Mo.of({from:n,to:s}))}),r.dispatch({effects:t}),!0},BQ=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:MQ},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:AQ},{key:"Ctrl-Alt-[",run:_Q},{key:"Ctrl-Alt-]",run:RQ}],ZQ={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},oO=Te.define({combine(r){return nn(r,ZQ)}});function aO(r){return[ys,XQ]}function lO(r,e){let{state:t}=r,n=t.facet(oO),s=o=>{let a=r.lineBlockAt(r.posAtDOM(o.target)),l=Ga(r.state,a.from,a.to);l&&r.dispatch({effects:Mo.of(l)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(r,s,e);let i=document.createElement("span");return i.textContent=n.placeholderText,i.setAttribute("aria-label",t.phrase("folded code")),i.title=t.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const wf=De.replace({widget:new class extends sn{toDOM(r){return lO(r,null)}}});class EQ extends sn{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return lO(e,this.value)}}const DQ={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Kl extends yn{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function LQ(r={}){let e={...DQ,...r},t=new Kl(e,!0),n=new Kl(e,!1),s=xt.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(zn)!=o.state.facet(zn)||o.startState.field(ys,!1)!=o.state.field(ys,!1)||ht(o.startState)!=ht(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new bn;for(let l of o.viewportLineBlocks){let c=Ga(o.state,l.from,l.to)?n:Ua(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:i}=e;return[s,E5({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(s))===null||a===void 0?void 0:a.markers)||Ge.empty},initialSpacer(){return new Kl(e,!1)},domEventHandlers:{...i,click:(o,a,l)=>{if(i.click&&i.click(o,a,l))return!0;let c=Ga(o.state,a.from,a.to);if(c)return o.dispatch({effects:Mo.of(c)}),!0;let u=Ua(o.state,a.from,a.to);return u?(o.dispatch({effects:$l.of(u)}),!0):!1}}}),aO()]}const XQ=$e.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Ao{constructor(e,t){this.specs=e;let n;function s(a){let l=Ln.newName();return(n||(n=Object.create(null)))["."+l]=a,l}const i=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof $r?a=>a.prop(cs)==o.data:o?a=>a==o:void 0,this.style=Gg(e.map(a=>({tag:a.tag,class:a.class||s(Object.assign({},a,{tag:null}))})),{all:i}).style,this.module=n?new Ln(n):null,this.themeType=t.themeType}static define(e,t){return new Ao(e,t||{})}}const fu=Te.define(),cO=Te.define({combine(r){return r.length?[r[0]]:null}});function Jl(r){let e=r.facet(fu);return e.length?e:r.facet(cO)}function uO(r,e){let t=[VQ],n;return r instanceof Ao&&(r.module&&t.push($e.styleModule.of(r.module)),n=r.themeType),e?.fallback?t.push(cO.of(r)):n?t.push(fu.computeN([$e.darkTheme],s=>s.facet($e.darkTheme)==(n=="dark")?[r]:[])):t.push(fu.of(r)),t}class IQ{constructor(e){this.markCache=Object.create(null),this.tree=ht(e.state),this.decorations=this.buildDeco(e,Jl(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ht(e.state),n=Jl(e.state),s=n!=Jl(e.startState),{viewport:i}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<i.to&&!s&&t.type==this.tree.type&&o>=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=i.to)}buildDeco(e,t){if(!t||!this.tree.length)return De.none;let n=new bn;for(let{from:s,to:i}of e.visibleRanges)hQ(this.tree,t,(o,a,l)=>{n.add(o,a,this.markCache[l]||(this.markCache[l]=De.mark({class:l})))},s,i);return n.finish()}}const VQ=kn.high(xt.fromClass(IQ,{decorations:r=>r.decorations})),zQ=Ao.define([{tag:$.meta,color:"#404740"},{tag:$.link,textDecoration:"underline"},{tag:$.heading,textDecoration:"underline",fontWeight:"bold"},{tag:$.emphasis,fontStyle:"italic"},{tag:$.strong,fontWeight:"bold"},{tag:$.strikethrough,textDecoration:"line-through"},{tag:$.keyword,color:"#708"},{tag:[$.atom,$.bool,$.url,$.contentSeparator,$.labelName],color:"#219"},{tag:[$.literal,$.inserted],color:"#164"},{tag:[$.string,$.deleted],color:"#a11"},{tag:[$.regexp,$.escape,$.special($.string)],color:"#e40"},{tag:$.definition($.variableName),color:"#00f"},{tag:$.local($.variableName),color:"#30a"},{tag:[$.typeName,$.namespace],color:"#085"},{tag:$.className,color:"#167"},{tag:[$.special($.variableName),$.macroName],color:"#256"},{tag:$.definition($.propertyName),color:"#00c"},{tag:$.comment,color:"#940"},{tag:$.invalid,color:"#f00"}]),NQ=$e.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),hO=1e4,dO="()[]{}",fO=Te.define({combine(r){return nn(r,{afterCursor:!0,brackets:dO,maxScanDistance:hO,renderMatch:jQ})}}),WQ=De.mark({class:"cm-matchingBracket"}),qQ=De.mark({class:"cm-nonmatchingBracket"});function jQ(r){let e=[],t=r.matched?WQ:qQ;return e.push(t.range(r.start.from,r.start.to)),r.end&&e.push(t.range(r.end.from,r.end.to)),e}function Sf(r){let e=[],t=r.facet(fO);for(let n of r.selection.ranges){if(!n.empty)continue;let s=Jr(r,n.head,-1,t)||n.head>0&&Jr(r,n.head-1,1,t)||t.afterCursor&&(Jr(r,n.head,1,t)||n.head<r.doc.length&&Jr(r,n.head+1,-1,t));s&&(e=e.concat(t.renderMatch(s,r)))}return De.set(e,!0)}const YQ=xt.fromClass(class{constructor(r){this.paused=!1,this.decorations=Sf(r.state)}update(r){(r.docChanged||r.selectionSet||this.paused)&&(r.view.composing?(this.decorations=this.decorations.map(r.changes),this.paused=!0):(this.decorations=Sf(r.state),this.paused=!1))}},{decorations:r=>r.decorations}),FQ=[YQ,NQ];function UQ(r={}){return[fO.of(r),FQ]}const mO=new qe;function mu(r,e,t){let n=r.prop(e<0?qe.openedBy:qe.closedBy);if(n)return n;if(r.name.length==1){let s=t.indexOf(r.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function pu(r){let e=r.type.prop(mO);return e?e(r.node):r}function Jr(r,e,t,n={}){let s=n.maxScanDistance||hO,i=n.brackets||dO,o=ht(r),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=mu(l.type,t,i);if(c&&l.from<l.to){let u=pu(l);if(u&&(t>0?e>=u.from&&e<u.to:e>u.from&&e<=u.to))return GQ(r,e,t,l,u,c,i)}}return HQ(r,e,t,o,a.type,s,i)}function GQ(r,e,t,n,s,i,o){let a=n.parent,l={from:s.from,to:s.to},c=0,u=a?.cursor();if(u&&(t<0?u.childBefore(n.from):u.childAfter(n.to)))do if(t<0?u.to<=n.from:u.from>=n.to){if(c==0&&i.indexOf(u.type.name)>-1&&u.from<u.to){let h=pu(u);return{start:l,end:h?{from:h.from,to:h.to}:void 0,matched:!0}}else if(mu(u.type,t,o))c++;else if(mu(u.type,-t,o)){if(c==0){let h=pu(u);return{start:l,end:h&&h.from<h.to?{from:h.from,to:h.to}:void 0,matched:!1}}c--}}while(t<0?u.prevSibling():u.nextSibling());return{start:l,matched:!1}}function HQ(r,e,t,n,s,i,o){let a=t<0?r.sliceDoc(e-1,e):r.sliceDoc(e,e+1),l=o.indexOf(a);if(l<0||l%2==0!=t>0)return null;let c={from:t<0?e-1:e,to:t>0?e+1:e},u=r.doc.iterRange(e,t>0?r.doc.length:0),h=0;for(let f=0;!u.next().done&&f<=i;){let g=u.value;t<0&&(f+=g.length);let p=e+f*t;for(let O=t>0?0:g.length-1,b=t>0?g.length:-1;O!=b;O+=t){let x=o.indexOf(g[O]);if(!(x<0||n.resolveInner(p+O,1).type!=s))if(x%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:p+O,to:p+O+1},matched:x>>1==l>>1};h--}}t>0&&(f+=g.length)}return u.done?{start:c,matched:!1}:null}const KQ=Object.create(null),$f=[Qt.none],Cf=[],Qf=Object.create(null),JQ=Object.create(null);for(let[r,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])JQ[r]=eP(KQ,e);function ec(r,e){Cf.indexOf(r)>-1||(Cf.push(r),console.warn(e))}function eP(r,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let u=r[c]||$[c];u?typeof u=="function"?l.length?l=l.map(u):ec(c,`Modifier ${c} used at start of tag`):l.length?ec(c,`Tag ${c} used as modifier`):l=Array.isArray(u)?u:[u]:ec(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let n=e.replace(/ /g,"_"),s=n+" "+t.map(a=>a.id),i=Qf[s];if(i)return i.id;let o=Qf[s]=Qt.define({id:$f.length,name:n,props:[ai({[n]:t})]});return $f.push(o),o.id}ut.RTL,ut.LTR;const tP=r=>{let{state:e}=r,t=e.doc.lineAt(e.selection.main.from),n=ph(r.state,t.from);return n.line?rP(r):n.block?sP(r):!1};function mh(r,e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let s=r(e,t);return s?(n(t.update(s)),!0):!1}}const rP=mh(aP,0),nP=mh(pO,0),sP=mh((r,e)=>pO(r,e,oP(e)),0);function ph(r,e){let t=r.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}const Mi=50;function iP(r,{open:e,close:t},n,s){let i=r.sliceDoc(n-Mi,n),o=r.sliceDoc(s,s+Mi),a=/\s*$/.exec(i)[0].length,l=/^\s*/.exec(o)[0].length,c=i.length-a;if(i.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:n-a,margin:a&&1},close:{pos:s+l,margin:l&&1}};let u,h;s-n<=2*Mi?u=h=r.sliceDoc(n,s):(u=r.sliceDoc(n,n+Mi),h=r.sliceDoc(s-Mi,s));let f=/^\s*/.exec(u)[0].length,g=/\s*$/.exec(h)[0].length,p=h.length-g-t.length;return u.slice(f,f+e.length)==e&&h.slice(p,p+t.length)==t?{open:{pos:n+f+e.length,margin:/\s/.test(u.charAt(f+e.length))?1:0},close:{pos:s-g-t.length,margin:/\s/.test(h.charAt(p-1))?1:0}}:null}function oP(r){let e=[];for(let t of r.selection.ranges){let n=r.doc.lineAt(t.from),s=t.to<=n.to?n:r.doc.lineAt(t.to);s.from>n.from&&s.from==t.to&&(s=t.to==n.to+1?n:r.doc.lineAt(t.to-1));let i=e.length-1;i>=0&&e[i].to>n.from?e[i].to=s.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:s.to})}return e}function pO(r,e,t=e.selection.ranges){let n=t.map(i=>ph(e,i.from).block);if(!n.every(i=>i))return null;let s=t.map((i,o)=>iP(e,n[o],i.from,i.to));if(r!=2&&!s.every(i=>i))return{changes:e.changes(t.map((i,o)=>s[o]?[]:[{from:i.from,insert:n[o].open+" "},{from:i.to,insert:" "+n[o].close}]))};if(r!=1&&s.some(i=>i)){let i=[];for(let o=0,a;o<s.length;o++)if(a=s[o]){let l=n[o],{open:c,close:u}=a;i.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:u.pos-u.margin,to:u.pos+l.close.length})}return{changes:i}}return null}function aP(r,e,t=e.selection.ranges){let n=[],s=-1;e:for(let{from:i,to:o}of t){let a=n.length,l=1e9,c;for(let u=i;u<=o;){let h=e.doc.lineAt(u);if(c==null&&(c=ph(e,h.from).line,!c))continue e;if(h.from>s&&(i==o||o>h.from)){s=h.from;let f=/^\s*/.exec(h.text)[0].length,g=f==h.length,p=h.text.slice(f,f+c.length)==c?f:-1;f<h.text.length&&f<l&&(l=f),n.push({line:h,comment:p,token:c,indent:f,empty:g,single:!1})}u=h.to+1}if(l<1e9)for(let u=a;u<n.length;u++)n[u].indent<n[u].line.text.length&&(n[u].indent=l);n.length==a+1&&(n[a].single=!0)}if(r!=2&&n.some(i=>i.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:a,token:l,indent:c,empty:u,single:h}of n)(h||!u)&&i.push({from:a.from+c,insert:l+" "});let o=e.changes(i);return{changes:o,selection:e.selection.map(o,1)}}else if(r!=1&&n.some(i=>i.comment>=0)){let i=[];for(let{line:o,comment:a,token:l}of n)if(a>=0){let c=o.from+a,u=c+l.length;o.text[u-o.from]==" "&&u++,i.push({from:c,to:u})}return{changes:i}}return null}const gu=wn.define(),lP=wn.define(),cP=Te.define(),gO=Te.define({combine(r){return nn(r,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,s)=>e(n,s)||t(n,s)})}}),OO=Mt.define({create(){return en.empty},update(r,e){let t=e.state.facet(gO),n=e.annotation(gu);if(n){let l=nr.fromTransaction(e,n.selection),c=n.side,u=c==0?r.undone:r.done;return l?u=Ha(u,u.length,t.minDepth,l):u=xO(u,e.startState.selection),new en(c==0?n.rest:u,c==0?u:n.rest)}let s=e.annotation(lP);if((s=="full"||s=="before")&&(r=r.isolate()),e.annotation(yt.addToHistory)===!1)return e.changes.empty?r:r.addMapping(e.changes.desc);let i=nr.fromTransaction(e),o=e.annotation(yt.time),a=e.annotation(yt.userEvent);return i?r=r.addChanges(i,o,a,t,e):e.selection&&(r=r.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(s=="full"||s=="after")&&(r=r.isolate()),r},toJSON(r){return{done:r.done.map(e=>e.toJSON()),undone:r.undone.map(e=>e.toJSON())}},fromJSON(r){return new en(r.done.map(nr.fromJSON),r.undone.map(nr.fromJSON))}});function uP(r={}){return[OO,gO.of(r),$e.domEventHandlers({beforeinput(e,t){let n=e.inputType=="historyUndo"?vO:e.inputType=="historyRedo"?Ou:null;return n?(e.preventDefault(),n(t)):!1}})]}function Cl(r,e){return function({state:t,dispatch:n}){if(!e&&t.readOnly)return!1;let s=t.field(OO,!1);if(!s)return!1;let i=s.pop(r,t,e);return i?(n(i),!0):!1}}const vO=Cl(0,!1),Ou=Cl(1,!1),hP=Cl(0,!0),dP=Cl(1,!0);class nr{constructor(e,t,n,s,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new nr(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new nr(e.changes&&St.fromJSON(e.changes),[],e.mapped&&tn.fromJSON(e.mapped),e.startSelection&&ne.fromJSON(e.startSelection),e.selectionsAfter.map(ne.fromJSON))}static fromTransaction(e,t){let n=Cr;for(let s of e.startState.facet(cP)){let i=s(e);i.length&&(n=n.concat(i))}return!n.length&&e.changes.empty?null:new nr(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,Cr)}static selection(e){return new nr(void 0,Cr,void 0,void 0,e)}}function Ha(r,e,t,n){let s=e+1>t+20?e-t-1:0,i=r.slice(s,e);return i.push(n),i}function fP(r,e){let t=[],n=!1;return r.iterChangedRanges((s,i)=>t.push(s,i)),e.iterChangedRanges((s,i,o,a)=>{for(let l=0;l<t.length;){let c=t[l++],u=t[l++];a>=c&&o<=u&&(n=!0)}}),n}function mP(r,e){return r.ranges.length==e.ranges.length&&r.ranges.filter((t,n)=>t.empty!=e.ranges[n].empty).length===0}function bO(r,e){return r.length?e.length?r.concat(e):r:e}const Cr=[],pP=200;function xO(r,e){if(r.length){let t=r[r.length-1],n=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-pP));return n.length&&n[n.length-1].eq(e)?r:(n.push(e),Ha(r,r.length-1,1e9,t.setSelAfter(n)))}else return[nr.selection([e])]}function gP(r){let e=r[r.length-1],t=r.slice();return t[r.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function tc(r,e){if(!r.length)return r;let t=r.length,n=Cr;for(;t;){let s=OP(r[t-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let i=r.slice(0,t);return i[t-1]=s,i}else e=s.mapped,t--,n=s.selectionsAfter}return n.length?[nr.selection(n)]:Cr}function OP(r,e,t){let n=bO(r.selectionsAfter.length?r.selectionsAfter.map(a=>a.map(e)):Cr,t);if(!r.changes)return nr.selection(n);let s=r.changes.map(e),i=e.mapDesc(r.changes,!0),o=r.mapped?r.mapped.composeDesc(i):i;return new nr(s,Ne.mapEffects(r.effects,e),o,r.startSelection.map(i),n)}const vP=/^(input\.type|delete)($|\.)/;class en{constructor(e,t,n=0,s=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=s}isolate(){return this.prevTime?new en(this.done,this.undone):this}addChanges(e,t,n,s,i){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!n||vP.test(n))&&(!a.selectionsAfter.length&&t-this.prevTime<s.newGroupDelay&&s.joinToEvent(i,fP(a.changes,e.changes))||n=="input.type.compose")?o=Ha(o,o.length-1,s.minDepth,new nr(e.changes.compose(a.changes),bO(Ne.mapEffects(e.effects,a.changes),a.effects),a.mapped,a.startSelection,Cr)):o=Ha(o,o.length,s.minDepth,e),new en(o,Cr,t,n)}addSelection(e,t,n,s){let i=this.done.length?this.done[this.done.length-1].selectionsAfter:Cr;return i.length>0&&t-this.prevTime<s&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&mP(i[i.length-1],e)?this:new en(xO(this.done,e),this.undone,t,n)}addMapping(e){return new en(tc(this.done,e),tc(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let s=e==0?this.done:this.undone;if(s.length==0)return null;let i=s[s.length-1],o=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:gu.of({side:e,rest:gP(s),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(i.changes){let a=s.length==1?Cr:s.slice(0,s.length-1);return i.mapped&&(a=tc(a,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:gu.of({side:e,rest:a,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}en.empty=new en(Cr,Cr);const bP=[{key:"Mod-z",run:vO,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ou,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ou,preventDefault:!0},{key:"Mod-u",run:hP,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:dP,preventDefault:!0}];function ci(r,e){return ne.create(r.ranges.map(e),r.mainIndex)}function Dr(r,e){return r.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Lr({state:r,dispatch:e},t){let n=ci(r.selection,t);return n.eq(r.selection,!0)?!1:(e(Dr(r,n)),!0)}function Ql(r,e){return ne.cursor(e?r.to:r.from)}function yO(r,e){return Lr(r,t=>t.empty?r.moveByChar(t,e):Ql(t,e))}function Wt(r){return r.textDirectionAt(r.state.selection.main.head)==ut.LTR}const kO=r=>yO(r,!Wt(r)),wO=r=>yO(r,Wt(r));function SO(r,e){return Lr(r,t=>t.empty?r.moveByGroup(t,e):Ql(t,e))}const xP=r=>SO(r,!Wt(r)),yP=r=>SO(r,Wt(r));function kP(r,e,t){if(e.type.prop(t))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(r.sliceDoc(e.from,e.to)))||e.firstChild}function Pl(r,e,t){let n=ht(r).resolveInner(e.head),s=t?qe.closedBy:qe.openedBy;for(let l=e.head;;){let c=t?n.childAfter(l):n.childBefore(l);if(!c)break;kP(r,c,s)?n=c:l=t?c.to:c.from}let i=n.type.prop(s),o,a;return i&&(o=t?Jr(r,n.from,1):Jr(r,n.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?n.to:n.from,ne.cursor(a,t?-1:1)}const wP=r=>Lr(r,e=>Pl(r.state,e,!Wt(r))),SP=r=>Lr(r,e=>Pl(r.state,e,Wt(r)));function $O(r,e){return Lr(r,t=>{if(!t.empty)return Ql(t,e);let n=r.moveVertically(t,e);return n.head!=t.head?n:r.moveToLineBoundary(t,e)})}const CO=r=>$O(r,!1),QO=r=>$O(r,!0);function PO(r){let e=r.scrollDOM.clientHeight<r.scrollDOM.scrollHeight-2,t=0,n=0,s;if(e){for(let i of r.state.facet($e.scrollMargins)){let o=i(r);o?.top&&(t=Math.max(o?.top,t)),o?.bottom&&(n=Math.max(o?.bottom,n))}s=r.scrollDOM.clientHeight-t-n}else s=(r.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:t,marginBottom:n,selfScroll:e,height:Math.max(r.defaultLineHeight,s-5)}}function TO(r,e){let t=PO(r),{state:n}=r,s=ci(n.selection,o=>o.empty?r.moveVertically(o,e,t.height):Ql(o,e));if(s.eq(n.selection))return!1;let i;if(t.selfScroll){let o=r.coordsAtPos(n.selection.main.head),a=r.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottom<c&&(i=$e.scrollIntoView(s.main.head,{y:"start",yMargin:o.top-l}))}return r.dispatch(Dr(n,s),{effects:i}),!0}const Pf=r=>TO(r,!1),vu=r=>TO(r,!0);function Wn(r,e,t){let n=r.lineBlockAt(e.head),s=r.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?n.to:n.from)&&(s=r.moveToLineBoundary(e,t,!1)),!t&&s.head==n.from&&n.length){let i=/^\s*/.exec(r.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(s=ne.cursor(n.from+i))}return s}const $P=r=>Lr(r,e=>Wn(r,e,!0)),CP=r=>Lr(r,e=>Wn(r,e,!1)),QP=r=>Lr(r,e=>Wn(r,e,!Wt(r))),PP=r=>Lr(r,e=>Wn(r,e,Wt(r))),TP=r=>Lr(r,e=>ne.cursor(r.lineBlockAt(e.head).from,1)),MP=r=>Lr(r,e=>ne.cursor(r.lineBlockAt(e.head).to,-1));function AP(r,e,t){let n=!1,s=ci(r.selection,i=>{let o=Jr(r,i.head,-1)||Jr(r,i.head,1)||i.head>0&&Jr(r,i.head-1,1)||i.head<r.doc.length&&Jr(r,i.head+1,-1);if(!o||!o.end)return i;n=!0;let a=o.start.from==i.head?o.end.to:o.end.from;return ne.cursor(a)});return n?(e(Dr(r,s)),!0):!1}const _P=({state:r,dispatch:e})=>AP(r,e);function Mr(r,e){let t=ci(r.state.selection,n=>{let s=e(n);return ne.range(n.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return t.eq(r.state.selection)?!1:(r.dispatch(Dr(r.state,t)),!0)}function MO(r,e){return Mr(r,t=>r.moveByChar(t,e))}const AO=r=>MO(r,!Wt(r)),_O=r=>MO(r,Wt(r));function RO(r,e){return Mr(r,t=>r.moveByGroup(t,e))}const RP=r=>RO(r,!Wt(r)),BP=r=>RO(r,Wt(r)),ZP=r=>Mr(r,e=>Pl(r.state,e,!Wt(r))),EP=r=>Mr(r,e=>Pl(r.state,e,Wt(r)));function BO(r,e){return Mr(r,t=>r.moveVertically(t,e))}const ZO=r=>BO(r,!1),EO=r=>BO(r,!0);function DO(r,e){return Mr(r,t=>r.moveVertically(t,e,PO(r).height))}const Tf=r=>DO(r,!1),Mf=r=>DO(r,!0),DP=r=>Mr(r,e=>Wn(r,e,!0)),LP=r=>Mr(r,e=>Wn(r,e,!1)),XP=r=>Mr(r,e=>Wn(r,e,!Wt(r))),IP=r=>Mr(r,e=>Wn(r,e,Wt(r))),VP=r=>Mr(r,e=>ne.cursor(r.lineBlockAt(e.head).from)),zP=r=>Mr(r,e=>ne.cursor(r.lineBlockAt(e.head).to)),Af=({state:r,dispatch:e})=>(e(Dr(r,{anchor:0})),!0),_f=({state:r,dispatch:e})=>(e(Dr(r,{anchor:r.doc.length})),!0),Rf=({state:r,dispatch:e})=>(e(Dr(r,{anchor:r.selection.main.anchor,head:0})),!0),Bf=({state:r,dispatch:e})=>(e(Dr(r,{anchor:r.selection.main.anchor,head:r.doc.length})),!0),NP=({state:r,dispatch:e})=>(e(r.update({selection:{anchor:0,head:r.doc.length},userEvent:"select"})),!0),WP=({state:r,dispatch:e})=>{let t=Tl(r).map(({from:n,to:s})=>ne.range(n,Math.min(s+1,r.doc.length)));return e(r.update({selection:ne.create(t),userEvent:"select"})),!0},qP=({state:r,dispatch:e})=>{let t=ci(r.selection,n=>{let s=ht(r),i=s.resolveStack(n.from,1);if(n.empty){let o=s.resolveStack(n.from,-1);o.node.from>=i.node.from&&o.node.to<=i.node.to&&(i=o)}for(let o=i;o;o=o.next){let{node:a}=o;if((a.from<n.from&&a.to>=n.to||a.to>n.to&&a.from<=n.from)&&o.next)return ne.range(a.to,a.from)}return n});return t.eq(r.selection)?!1:(e(Dr(r,t)),!0)};function LO(r,e){let{state:t}=r,n=t.selection,s=t.selection.ranges.slice();for(let i of t.selection.ranges){let o=t.doc.lineAt(i.head);if(e?o.to<r.state.doc.length:o.from>0)for(let a=i;;){let l=r.moveVertically(a,e);if(l.head<o.from||l.head>o.to){s.some(c=>c.head==l.head)||s.push(l);break}else{if(l.head==a.head)break;a=l}}}return s.length==n.ranges.length?!1:(r.dispatch(Dr(t,ne.create(s,s.length-1))),!0)}const jP=r=>LO(r,!1),YP=r=>LO(r,!0),FP=({state:r,dispatch:e})=>{let t=r.selection,n=null;return t.ranges.length>1?n=ne.create([t.main]):t.main.empty||(n=ne.create([ne.cursor(t.main.head)])),n?(e(Dr(r,n)),!0):!1};function _o(r,e){if(r.state.readOnly)return!1;let t="delete.selection",{state:n}=r,s=n.changeByRange(i=>{let{from:o,to:a}=i;if(o==a){let l=e(i);l<o?(t="delete.backward",l=oa(r,l,!1)):l>o&&(t="delete.forward",l=oa(r,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=oa(r,o,!1),a=oa(r,a,!0);return o==a?{range:i}:{changes:{from:o,to:a},range:ne.cursor(o,o<i.head?-1:1)}});return s.changes.empty?!1:(r.dispatch(n.update(s,{scrollIntoView:!0,userEvent:t,effects:t=="delete.selection"?$e.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function oa(r,e,t){if(r instanceof $e)for(let n of r.state.facet($e.atomicRanges).map(s=>s(r)))n.between(e,e,(s,i)=>{s<e&&i>e&&(e=t?i:s)});return e}const XO=(r,e,t)=>_o(r,n=>{let s=n.from,{state:i}=r,o=i.doc.lineAt(s),a,l;if(t&&!e&&s>o.from&&s<o.from+200&&!/[^ \t]/.test(a=o.text.slice(0,s-o.from))){if(a[a.length-1]==" ")return s-1;let c=Zr(a,i.tabSize),u=c%Fa(i)||Fa(i);for(let h=0;h<u&&a[a.length-1-h]==" ";h++)s--;l=s}else l=Tt(o.text,s-o.from,e,e)+o.from,l==s&&o.number!=(e?i.doc.lines:1)?l+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(l-o.from,s-o.from))&&(l=Tt(o.text,l-o.from,!1,!1)+o.from);return l}),bu=r=>XO(r,!1,!0),IO=r=>XO(r,!0,!1),VO=(r,e)=>_o(r,t=>{let n=t.head,{state:s}=r,i=s.doc.lineAt(n),o=s.charCategorizer(n);for(let a=null;;){if(n==(e?i.to:i.from)){n==t.head&&i.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let l=Tt(i.text,n-i.from,e)+i.from,c=i.text.slice(Math.min(n,l)-i.from,Math.max(n,l)-i.from),u=o(c);if(a!=null&&u!=a)break;(c!=" "||n!=t.head)&&(a=u),n=l}return n}),zO=r=>VO(r,!1),UP=r=>VO(r,!0),GP=r=>_o(r,e=>{let t=r.lineBlockAt(e.head).to;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),HP=r=>_o(r,e=>{let t=r.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),KP=r=>_o(r,e=>{let t=r.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),JP=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:tt.of(["",""])},range:ne.cursor(n.from)}));return e(r.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},e3=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(n=>{if(!n.empty||n.from==0||n.from==r.doc.length)return{range:n};let s=n.from,i=r.doc.lineAt(s),o=s==i.from?s-1:Tt(i.text,s-i.from,!1)+i.from,a=s==i.to?s+1:Tt(i.text,s-i.from,!0)+i.from;return{changes:{from:o,to:a,insert:r.doc.slice(s,a).append(r.doc.slice(o,s))},range:ne.cursor(a)}});return t.changes.empty?!1:(e(r.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Tl(r){let e=[],t=-1;for(let n of r.selection.ranges){let s=r.doc.lineAt(n.from),i=r.doc.lineAt(n.to);if(!n.empty&&n.to==i.from&&(i=r.doc.lineAt(n.to-1)),t>=s.number){let o=e[e.length-1];o.to=i.to,o.ranges.push(n)}else e.push({from:s.from,to:i.to,ranges:[n]});t=i.number+1}return e}function NO(r,e,t){if(r.readOnly)return!1;let n=[],s=[];for(let i of Tl(r)){if(t?i.to==r.doc.length:i.from==0)continue;let o=r.doc.lineAt(t?i.to+1:i.from-1),a=o.length+1;if(t){n.push({from:i.to,to:o.to},{from:i.from,insert:o.text+r.lineBreak});for(let l of i.ranges)s.push(ne.range(Math.min(r.doc.length,l.anchor+a),Math.min(r.doc.length,l.head+a)))}else{n.push({from:o.from,to:i.from},{from:i.to,insert:r.lineBreak+o.text});for(let l of i.ranges)s.push(ne.range(l.anchor-a,l.head-a))}}return n.length?(e(r.update({changes:n,scrollIntoView:!0,selection:ne.create(s,r.selection.mainIndex),userEvent:"move.line"})),!0):!1}const t3=({state:r,dispatch:e})=>NO(r,e,!1),r3=({state:r,dispatch:e})=>NO(r,e,!0);function WO(r,e,t){if(r.readOnly)return!1;let n=[];for(let i of Tl(r))t?n.push({from:i.from,insert:r.doc.slice(i.from,i.to)+r.lineBreak}):n.push({from:i.to,insert:r.lineBreak+r.doc.slice(i.from,i.to)});let s=r.changes(n);return e(r.update({changes:s,selection:r.selection.map(s,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const n3=({state:r,dispatch:e})=>WO(r,e,!1),s3=({state:r,dispatch:e})=>WO(r,e,!0),i3=r=>{if(r.state.readOnly)return!1;let{state:e}=r,t=e.changes(Tl(e).map(({from:s,to:i})=>(s>0?s--:i<e.doc.length&&i++,{from:s,to:i}))),n=ci(e.selection,s=>{let i;if(r.lineWrapping){let o=r.lineBlockAt(s.head),a=r.coordsAtPos(s.head,s.assoc||1);a&&(i=o.bottom+r.documentTop-a.bottom+r.defaultLineHeight/2)}return r.moveVertically(s,!0,i)}).map(t);return r.dispatch({changes:t,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function o3(r,e){if(/\(\)|\[\]|\{\}/.test(r.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ht(r).resolveInner(e),n=t.childBefore(e),s=t.childAfter(e),i;return n&&s&&n.to<=e&&s.from>=e&&(i=n.type.prop(qe.closedBy))&&i.indexOf(s.name)>-1&&r.doc.lineAt(n.to).from==r.doc.lineAt(s.from).from&&!/\S/.test(r.sliceDoc(n.to,s.from))?{from:n.to,to:s.from}:null}const Zf=qO(!1),a3=qO(!0);function qO(r){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(s=>{let{from:i,to:o}=s,a=e.doc.lineAt(i),l=!r&&i==o&&o3(e,i);r&&(i=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new Sl(e,{simulateBreak:i,simulateDoubleBreak:!!l}),u=dh(c,i);for(u==null&&(u=Zr(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));o<a.to&&/\s/.test(a.text[o-a.from]);)o++;l?{from:i,to:o}=l:i>a.from&&i<a.from+100&&!/\S/.test(a.text.slice(0,i))&&(i=a.from);let h=["",oo(e,u)];return l&&h.push(oo(e,c.lineIndent(a.from,-1))),{changes:{from:i,to:o,insert:tt.of(h)},range:ne.cursor(i+1+h[1].length)}});return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}}function gh(r,e){let t=-1;return r.changeByRange(n=>{let s=[];for(let o=n.from;o<=n.to;){let a=r.doc.lineAt(o);a.number>t&&(n.empty||n.to>a.from)&&(e(a,s,n),t=a.number),o=a.to+1}let i=r.changes(s);return{changes:s,range:ne.range(i.mapPos(n.anchor,1),i.mapPos(n.head,1))}})}const l3=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=Object.create(null),n=new Sl(r,{overrideIndentation:i=>{let o=t[i];return o??-1}}),s=gh(r,(i,o,a)=>{let l=dh(n,i.from);if(l==null)return;/\S/.test(i.text)||(l=0);let c=/^\s*/.exec(i.text)[0],u=oo(r,l);(c!=u||a.from<i.from+c.length)&&(t[i.from]=l,o.push({from:i.from,to:i.from+c.length,insert:u}))});return s.changes.empty||e(r.update(s,{userEvent:"indent"})),!0},c3=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(gh(r,(t,n)=>{n.push({from:t.from,insert:r.facet(Po)})}),{userEvent:"input.indent"})),!0),u3=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(gh(r,(t,n)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let i=Zr(s,r.tabSize),o=0,a=oo(r,Math.max(0,i-Fa(r)));for(;o<s.length&&o<a.length&&s.charCodeAt(o)==a.charCodeAt(o);)o++;n.push({from:t.from+o,to:t.from+s.length,insert:a.slice(o)})}),{userEvent:"delete.dedent"})),!0),h3=r=>(r.setTabFocusMode(),!0),d3=[{key:"Ctrl-b",run:kO,shift:AO,preventDefault:!0},{key:"Ctrl-f",run:wO,shift:_O},{key:"Ctrl-p",run:CO,shift:ZO},{key:"Ctrl-n",run:QO,shift:EO},{key:"Ctrl-a",run:TP,shift:VP},{key:"Ctrl-e",run:MP,shift:zP},{key:"Ctrl-d",run:IO},{key:"Ctrl-h",run:bu},{key:"Ctrl-k",run:GP},{key:"Ctrl-Alt-h",run:zO},{key:"Ctrl-o",run:JP},{key:"Ctrl-t",run:e3},{key:"Ctrl-v",run:vu}],f3=[{key:"ArrowLeft",run:kO,shift:AO,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:xP,shift:RP,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:QP,shift:XP,preventDefault:!0},{key:"ArrowRight",run:wO,shift:_O,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:yP,shift:BP,preventDefault:!0},{mac:"Cmd-ArrowRight",run:PP,shift:IP,preventDefault:!0},{key:"ArrowUp",run:CO,shift:ZO,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Af,shift:Rf},{mac:"Ctrl-ArrowUp",run:Pf,shift:Tf},{key:"ArrowDown",run:QO,shift:EO,preventDefault:!0},{mac:"Cmd-ArrowDown",run:_f,shift:Bf},{mac:"Ctrl-ArrowDown",run:vu,shift:Mf},{key:"PageUp",run:Pf,shift:Tf},{key:"PageDown",run:vu,shift:Mf},{key:"Home",run:CP,shift:LP,preventDefault:!0},{key:"Mod-Home",run:Af,shift:Rf},{key:"End",run:$P,shift:DP,preventDefault:!0},{key:"Mod-End",run:_f,shift:Bf},{key:"Enter",run:Zf,shift:Zf},{key:"Mod-a",run:NP},{key:"Backspace",run:bu,shift:bu,preventDefault:!0},{key:"Delete",run:IO,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:zO,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:UP,preventDefault:!0},{mac:"Mod-Backspace",run:HP,preventDefault:!0},{mac:"Mod-Delete",run:KP,preventDefault:!0}].concat(d3.map(r=>({mac:r.key,run:r.run,shift:r.shift}))),m3=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:wP,shift:ZP},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:SP,shift:EP},{key:"Alt-ArrowUp",run:t3},{key:"Shift-Alt-ArrowUp",run:n3},{key:"Alt-ArrowDown",run:r3},{key:"Shift-Alt-ArrowDown",run:s3},{key:"Mod-Alt-ArrowUp",run:jP},{key:"Mod-Alt-ArrowDown",run:YP},{key:"Escape",run:FP},{key:"Mod-Enter",run:a3},{key:"Alt-l",mac:"Ctrl-l",run:WP},{key:"Mod-i",run:qP,preventDefault:!0},{key:"Mod-[",run:u3},{key:"Mod-]",run:c3},{key:"Mod-Alt-\\",run:l3},{key:"Shift-Mod-k",run:i3},{key:"Shift-Mod-\\",run:_P},{key:"Mod-/",run:tP},{key:"Alt-A",run:nP},{key:"Ctrl-m",mac:"Shift-Alt-m",run:h3}].concat(f3),Ef=typeof String.prototype.normalize=="function"?r=>r.normalize("NFKD"):r=>r;class ri{constructor(e,t,n=0,s=e.length,i,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,s),this.bufferStart=n,this.normalize=i?a=>i(Ef(a)):Ef,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Kt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Vu(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=Ur(e);let s=this.normalize(t);if(s.length)for(let i=0,o=n;;i++){let a=s.charCodeAt(i),l=this.match(a,o,this.bufferPos+this.bufferStart);if(i==s.length-1){if(l)return this.value=l,this;break}o==n&&i<t.length&&t.charCodeAt(i)==a&&o++}}}match(e,t,n){let s=null;for(let i=0;i<this.matches.length;i+=2){let o=this.matches[i],a=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?s={from:this.matches[i+1],to:n}:(this.matches[i]++,a=!0)),a||(this.matches.splice(i,2),i-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:t,to:n}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(ri.prototype[Symbol.iterator]=function(){return this});const jO={from:-1,to:-1,match:/.*/.exec("")},Oh="gm"+(/x/.unicode==null?"":"u");class YO{constructor(e,t,n,s=0,i=e.length){if(this.text=e,this.to=i,this.curLine="",this.done=!1,this.value=jO,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new FO(e,t,n,s,i);this.re=new RegExp(t,Oh+(n?.ignoreCase?"i":"")),this.test=n?.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=Ka(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let n=this.curLineStart+t.index,s=n+t[0].length;if(this.matchPos=Ka(this.text,s+(n==s?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<s||n>this.value.to)&&(!this.test||this.test(n,s,t)))return this.value={from:n,to:s,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const rc=new WeakMap;class qs{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,n){let s=rc.get(e);if(!s||s.from>=n||s.to<=t){let a=new qs(t,e.sliceString(t,n));return rc.set(e,a),a}if(s.from==t&&s.to==n)return s;let{text:i,from:o}=s;return o>t&&(i=e.sliceString(t,o)+i,o=t),s.to<n&&(i+=e.sliceString(s.to,n)),rc.set(e,new qs(o,i)),new qs(t,i.slice(t-o,n-o))}}class FO{constructor(e,t,n,s,i){this.text=e,this.to=i,this.done=!1,this.value=jO,this.matchPos=Ka(e,s),this.re=new RegExp(t,Oh+(n?.ignoreCase?"i":"")),this.test=n?.test,this.flat=qs.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let n=this.flat.from+t.index,s=n+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,s,t)))return this.value={from:n,to:s,match:t},this.matchPos=Ka(this.text,s+(n==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=qs.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(YO.prototype[Symbol.iterator]=FO.prototype[Symbol.iterator]=function(){return this});function p3(r){try{return new RegExp(r,Oh),!0}catch{return!1}}function Ka(r,e){if(e>=r.length)return e;let t=r.lineAt(e),n;for(;e<t.to&&(n=t.text.charCodeAt(e-t.from))>=56320&&n<57344;)e++;return e}const g3=r=>{let{state:e}=r,t=String(e.doc.lineAt(r.state.selection.main.head).number),{close:n,result:s}=_5(r,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return s.then(i=>{let o=i&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(i.elements.line.value);if(!o){r.dispatch({effects:n});return}let a=e.doc.lineAt(e.selection.main.head),[,l,c,u,h]=o,f=u?+u.slice(1):0,g=c?+c:a.number;if(c&&h){let b=g/100;l&&(b=b*(l=="-"?-1:1)+a.number/e.doc.lines),g=Math.round(e.doc.lines*b)}else c&&l&&(g=g*(l=="-"?-1:1)+a.number);let p=e.doc.line(Math.max(1,Math.min(e.doc.lines,g))),O=ne.cursor(p.from+Math.max(0,Math.min(f,p.length)));r.dispatch({effects:[n,$e.scrollIntoView(O.from,{y:"center"})],selection:O})}),!0},O3={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},v3=Te.define({combine(r){return nn(r,O3,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function b3(r){return[S3,w3]}const x3=De.mark({class:"cm-selectionMatch"}),y3=De.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function Df(r,e,t,n){return(t==0||r(e.sliceDoc(t-1,t))!=mt.Word)&&(n==e.doc.length||r(e.sliceDoc(n,n+1))!=mt.Word)}function k3(r,e,t,n){return r(e.sliceDoc(t,t+1))==mt.Word&&r(e.sliceDoc(n-1,n))==mt.Word}const w3=xt.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.selectionSet||r.docChanged||r.viewportChanged)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=r.state.facet(v3),{state:t}=r,n=t.selection;if(n.ranges.length>1)return De.none;let s=n.main,i,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return De.none;let l=t.wordAt(s.head);if(!l)return De.none;o=t.charCategorizer(s.head),i=t.sliceDoc(l.from,l.to)}else{let l=s.to-s.from;if(l<e.minSelectionLength||l>200)return De.none;if(e.wholeWords){if(i=t.sliceDoc(s.from,s.to),o=t.charCategorizer(s.head),!(Df(o,t,s.from,s.to)&&k3(o,t,s.from,s.to)))return De.none}else if(i=t.sliceDoc(s.from,s.to),!i)return De.none}let a=[];for(let l of r.visibleRanges){let c=new ri(t.doc,i,l.from,l.to);for(;!c.next().done;){let{from:u,to:h}=c.value;if((!o||Df(o,t,u,h))&&(s.empty&&u<=s.from&&h>=s.to?a.push(y3.range(u,h)):(u>=s.to||h<=s.from)&&a.push(x3.range(u,h)),a.length>e.maxMatches))return De.none}}return De.set(a)}},{decorations:r=>r.decorations}),S3=$e.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),$3=({state:r,dispatch:e})=>{let{selection:t}=r,n=ne.create(t.ranges.map(s=>r.wordAt(s.head)||ne.cursor(s.head)),t.mainIndex);return n.eq(t)?!1:(e(r.update({selection:n})),!0)};function C3(r,e){let{main:t,ranges:n}=r.selection,s=r.wordAt(t.head),i=s&&s.from==t.from&&s.to==t.to;for(let o=!1,a=new ri(r.doc,e,n[n.length-1].to);;)if(a.next(),a.done){if(o)return null;a=new ri(r.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(l=>l.from==a.value.from))continue;if(i){let l=r.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}const Q3=({state:r,dispatch:e})=>{let{ranges:t}=r.selection;if(t.some(i=>i.from===i.to))return $3({state:r,dispatch:e});let n=r.sliceDoc(t[0].from,t[0].to);if(r.selection.ranges.some(i=>r.sliceDoc(i.from,i.to)!=n))return!1;let s=C3(r,n);return s?(e(r.update({selection:r.selection.addRange(ne.range(s.from,s.to),!1),effects:$e.scrollIntoView(s.to)})),!0):!1},ui=Te.define({combine(r){return nn(r,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new V3(e),scrollToMatch:e=>$e.scrollIntoView(e)})}});class UO{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||p3(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,n)=>n=="n"?`
|
|
22
|
-
`:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new R3(this):new M3(this)}getCursor(e,t=0,n){let s=e.doc?e:He.create({doc:e});return n==null&&(n=s.doc.length),this.regexp?Bs(this,s,t,n):Rs(this,s,t,n)}}class GO{constructor(e){this.spec=e}}function P3(r,e,t){return(n,s,i,o)=>{if(t&&!t(n,s,i,o))return!1;let a=n>=o&&s<=o+i.length?i.slice(n-o,s-o):e.doc.sliceString(n,s);return r(a,e,n,s)}}function Rs(r,e,t,n){let s;return r.wholeWord&&(s=T3(e.doc,e.charCategorizer(e.selection.main.head))),r.test&&(s=P3(r.test,e,s)),new ri(e.doc,r.unquoted,t,n,r.caseSensitive?void 0:i=>i.toLowerCase(),s)}function T3(r,e){return(t,n,s,i)=>((i>t||i+s.length<n)&&(i=Math.max(0,t-2),s=r.sliceString(i,Math.min(r.length,n+2))),(e(Ja(s,t-i))!=mt.Word||e(el(s,t-i))!=mt.Word)&&(e(el(s,n-i))!=mt.Word||e(Ja(s,n-i))!=mt.Word))}class M3 extends GO{constructor(e){super(e)}nextMatch(e,t,n){let s=Rs(this.spec,e,n,e.doc.length).nextOverlapping();if(s.done){let i=Math.min(e.doc.length,t+this.spec.unquoted.length);s=Rs(this.spec,e,0,i).nextOverlapping()}return s.done||s.value.from==t&&s.value.to==n?null:s.value}prevMatchInRange(e,t,n){for(let s=n;;){let i=Math.max(t,s-1e4-this.spec.unquoted.length),o=Rs(this.spec,e,i,s),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(i==t)return null;s-=1e4}}prevMatch(e,t,n){let s=this.prevMatchInRange(e,0,t);return s||(s=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=t||s.to!=n)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let n=Rs(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=t)return null;s.push(n.value)}return s}highlight(e,t,n,s){let i=Rs(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function A3(r,e,t){return(n,s,i)=>(!t||t(n,s,i))&&r(i[0],e,n,s)}function Bs(r,e,t,n){let s;return r.wholeWord&&(s=_3(e.charCategorizer(e.selection.main.head))),r.test&&(s=A3(r.test,e,s)),new YO(e.doc,r.search,{ignoreCase:!r.caseSensitive,test:s},t,n)}function Ja(r,e){return r.slice(Tt(r,e,!1),e)}function el(r,e){return r.slice(e,Tt(r,e))}function _3(r){return(e,t,n)=>!n[0].length||(r(Ja(n.input,n.index))!=mt.Word||r(el(n.input,n.index))!=mt.Word)&&(r(el(n.input,n.index+n[0].length))!=mt.Word||r(Ja(n.input,n.index+n[0].length))!=mt.Word)}class R3 extends GO{nextMatch(e,t,n){let s=Bs(this.spec,e,n,e.doc.length).next();return s.done&&(s=Bs(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,n){for(let s=1;;s++){let i=Math.max(t,n-s*1e4),o=Bs(this.spec,e,i,n),a=null;for(;!o.next().done;)a=o.value;if(a&&(i==t||a.from>i+10))return a;if(i==t)return null}}prevMatch(e,t,n){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let s=n.length;s>0;s--){let i=+n.slice(0,s);if(i>0&&i<e.match.length)return e.match[i]+n.slice(s)}return t})}matchAll(e,t){let n=Bs(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=t)return null;s.push(n.value)}return s}highlight(e,t,n,s){let i=Bs(this.spec,e,Math.max(0,t-250),Math.min(n+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const ao=Ne.define(),vh=Ne.define(),Zn=Mt.define({create(r){return new nc(xu(r).create(),null)},update(r,e){for(let t of e.effects)t.is(ao)?r=new nc(t.value.create(),r.panel):t.is(vh)&&(r=new nc(r.query,t.value?bh:null));return r},provide:r=>to.from(r,e=>e.panel)});class nc{constructor(e,t){this.query=e,this.panel=t}}const B3=De.mark({class:"cm-searchMatch"}),Z3=De.mark({class:"cm-searchMatch cm-searchMatch-selected"}),E3=xt.fromClass(class{constructor(r){this.view=r,this.decorations=this.highlight(r.state.field(Zn))}update(r){let e=r.state.field(Zn);(e!=r.startState.field(Zn)||r.docChanged||r.selectionSet||r.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:r,panel:e}){if(!e||!r.spec.valid)return De.none;let{view:t}=this,n=new bn;for(let s=0,i=t.visibleRanges,o=i.length;s<o;s++){let{from:a,to:l}=i[s];for(;s<o-1&&l>i[s+1].from-500;)l=i[++s].to;r.highlight(t.state,a,l,(c,u)=>{let h=t.state.selection.ranges.some(f=>f.from==c&&f.to==u);n.add(c,u,h?Z3:B3)})}return n.finish()}},{decorations:r=>r.decorations});function Ro(r){return e=>{let t=e.state.field(Zn,!1);return t&&t.query.spec.valid?r(e,t):JO(e)}}const tl=Ro((r,{query:e})=>{let{to:t}=r.state.selection.main,n=e.nextMatch(r.state,t,t);if(!n)return!1;let s=ne.single(n.from,n.to),i=r.state.facet(ui);return r.dispatch({selection:s,effects:[xh(r,n),i.scrollToMatch(s.main,r)],userEvent:"select.search"}),KO(r),!0}),rl=Ro((r,{query:e})=>{let{state:t}=r,{from:n}=t.selection.main,s=e.prevMatch(t,n,n);if(!s)return!1;let i=ne.single(s.from,s.to),o=r.state.facet(ui);return r.dispatch({selection:i,effects:[xh(r,s),o.scrollToMatch(i.main,r)],userEvent:"select.search"}),KO(r),!0}),D3=Ro((r,{query:e})=>{let t=e.matchAll(r.state,1e3);return!t||!t.length?!1:(r.dispatch({selection:ne.create(t.map(n=>ne.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),L3=({state:r,dispatch:e})=>{let t=r.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:n,to:s}=t.main,i=[],o=0;for(let a=new ri(r.doc,r.sliceDoc(n,s));!a.next().done;){if(i.length>1e3)return!1;a.value.from==n&&(o=i.length),i.push(ne.range(a.value.from,a.value.to))}return e(r.update({selection:ne.create(i,o),userEvent:"select.search.matches"})),!0},Lf=Ro((r,{query:e})=>{let{state:t}=r,{from:n,to:s}=t.selection.main;if(t.readOnly)return!1;let i=e.nextMatch(t,n,n);if(!i)return!1;let o=i,a=[],l,c,u=[];o.from==n&&o.to==s&&(c=t.toText(e.getReplacement(o)),a.push({from:o.from,to:o.to,insert:c}),o=e.nextMatch(t,o.from,o.to),u.push($e.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(n).number)+".")));let h=r.state.changes(a);return o&&(l=ne.single(o.from,o.to).map(h),u.push(xh(r,o)),u.push(t.facet(ui).scrollToMatch(l.main,r))),r.dispatch({changes:h,selection:l,effects:u,userEvent:"input.replace"}),!0}),X3=Ro((r,{query:e})=>{if(r.state.readOnly)return!1;let t=e.matchAll(r.state,1e9).map(s=>{let{from:i,to:o}=s;return{from:i,to:o,insert:e.getReplacement(s)}});if(!t.length)return!1;let n=r.state.phrase("replaced $ matches",t.length)+".";return r.dispatch({changes:t,effects:$e.announce.of(n),userEvent:"input.replace.all"}),!0});function bh(r){return r.state.facet(ui).createPanel(r)}function xu(r,e){var t,n,s,i,o;let a=r.selection.main,l=a.empty||a.to>a.from+100?"":r.sliceDoc(a.from,a.to);if(e&&!l)return e;let c=r.facet(ui);return new UO({search:((t=e?.literal)!==null&&t!==void 0?t:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(n=e?.caseSensitive)!==null&&n!==void 0?n:c.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:c.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:c.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:c.wholeWord})}function HO(r){let e=ih(r,bh);return e&&e.dom.querySelector("[main-field]")}function KO(r){let e=HO(r);e&&e==r.root.activeElement&&e.select()}const JO=r=>{let e=r.state.field(Zn,!1);if(e&&e.panel){let t=HO(r);if(t&&t!=r.root.activeElement){let n=xu(r.state,e.query.spec);n.valid&&r.dispatch({effects:ao.of(n)}),t.focus(),t.select()}}else r.dispatch({effects:[vh.of(!0),e?ao.of(xu(r.state,e.query.spec)):Ne.appendConfig.of(N3)]});return!0},e0=r=>{let e=r.state.field(Zn,!1);if(!e||!e.panel)return!1;let t=ih(r,bh);return t&&t.dom.contains(r.root.activeElement)&&r.focus(),r.dispatch({effects:vh.of(!1)}),!0},I3=[{key:"Mod-f",run:JO,scope:"editor search-panel"},{key:"F3",run:tl,shift:rl,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:tl,shift:rl,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:e0,scope:"editor search-panel"},{key:"Mod-Shift-l",run:L3},{key:"Mod-Alt-g",run:g3},{key:"Mod-d",run:Q3,preventDefault:!0}];class V3{constructor(e){this.view=e;let t=this.query=e.state.field(Zn).query.spec;this.commit=this.commit.bind(this),this.searchField=at("input",{value:t.search,placeholder:cr(e,"Find"),"aria-label":cr(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=at("input",{value:t.replace,placeholder:cr(e,"Replace"),"aria-label":cr(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=at("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=at("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=at("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function n(s,i,o){return at("button",{class:"cm-button",name:s,onclick:i,type:"button"},o)}this.dom=at("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,n("next",()=>tl(e),[cr(e,"next")]),n("prev",()=>rl(e),[cr(e,"previous")]),n("select",()=>D3(e),[cr(e,"all")]),at("label",null,[this.caseField,cr(e,"match case")]),at("label",null,[this.reField,cr(e,"regexp")]),at("label",null,[this.wordField,cr(e,"by word")]),...e.state.readOnly?[]:[at("br"),this.replaceField,n("replace",()=>Lf(e),[cr(e,"replace")]),n("replaceAll",()=>X3(e),[cr(e,"replace all")])],at("button",{name:"close",onclick:()=>e0(e),"aria-label":cr(e,"close"),type:"button"},["×"])])}commit(){let e=new UO({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:ao.of(e)}))}keydown(e){WC(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?rl:tl)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Lf(this.view))}update(e){for(let t of e.transactions)for(let n of t.effects)n.is(ao)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(ui).top}}function cr(r,e){return r.state.phrase(e)}const aa=30,la=/[\s\.,:;?!]/;function xh(r,{from:e,to:t}){let n=r.state.doc.lineAt(e),s=r.state.doc.lineAt(t).to,i=Math.max(n.from,e-aa),o=Math.min(s,t+aa),a=r.state.sliceDoc(i,o);if(i!=n.from){for(let l=0;l<aa;l++)if(!la.test(a[l+1])&&la.test(a[l])){a=a.slice(l);break}}if(o!=s){for(let l=a.length-1;l>a.length-aa;l--)if(!la.test(a[l-1])&&la.test(a[l])){a=a.slice(0,l);break}}return $e.announce.of(`${r.state.phrase("current match")}. ${a} ${r.state.phrase("on line")} ${n.number}.`)}const z3=$e.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),N3=[Zn,kn.low(E3),z3];class yh{constructor(e,t,n,s){this.state=e,this.pos=t,this.explicit=n,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ht(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),n=Math.max(t.from,this.pos-250),s=t.text.slice(n-t.from,this.pos-t.from),i=s.search(r0(e,!1));return i<0?null:{from:n+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function Xf(r){let e=Object.keys(r).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function W3(r){let e=Object.create(null),t=Object.create(null);for(let{label:s}of r){e[s[0]]=!0;for(let i=1;i<s.length;i++)t[s[i]]=!0}let n=Xf(e)+Xf(t)+"*$";return[new RegExp("^"+n),new RegExp(n)]}function t0(r){let e=r.map(s=>typeof s=="string"?{label:s}:s),[t,n]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:W3(e);return s=>{let i=s.matchBefore(n);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:t}:null}}function q3(r,e){return t=>{for(let n=ht(t.state).resolveInner(t.pos,-1);n;n=n.parent){if(r.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(t)}}class If{constructor(e,t,n,s){this.completion=e,this.source=t,this.match=n,this.score=s}}function ms(r){return r.selection.main.from}function r0(r,e){var t;let{source:n}=r,s=e&&n[0]!="^",i=n[n.length-1]!="$";return!s&&!i?r:new RegExp(`${s?"^":""}(?:${n})${i?"$":""}`,(t=r.flags)!==null&&t!==void 0?t:r.ignoreCase?"i":"")}const kh=wn.define();function j3(r,e,t,n){let{main:s}=r.selection,i=t-s.from,o=n-s.from;return{...r.changeByRange(a=>{if(a!=s&&t!=n&&r.sliceDoc(a.from+i,a.from+o)!=r.sliceDoc(t,n))return{range:a};let l=r.toText(e);return{changes:{from:a.from+i,to:n==s.from?a.to:a.from+o,insert:l},range:ne.cursor(a.from+i+l.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const Vf=new WeakMap;function Y3(r){if(!Array.isArray(r))return r;let e=Vf.get(r);return e||Vf.set(r,e=t0(r)),e}const nl=Ne.define(),lo=Ne.define();class F3{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t<e.length;){let n=Kt(e,t),s=Ur(n);this.chars.push(n);let i=e.slice(t,t+s),o=i.toUpperCase();this.folded.push(Kt(o==i?i.toLowerCase():o,0)),t+=s}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:t,folded:n,any:s,precise:i,byWord:o}=this;if(t.length==1){let k=Kt(e,0),w=Ur(k),S=w==e.length?0:-100;if(k!=t[0])if(k==n[0])S+=-200;else return null;return this.ret(S,[0,w])}let a=e.indexOf(this.pattern);if(a==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let l=t.length,c=0;if(a<0){for(let k=0,w=Math.min(e.length,200);k<w&&c<l;){let S=Kt(e,k);(S==t[c]||S==n[c])&&(s[c++]=k),k+=Ur(S)}if(c<l)return null}let u=0,h=0,f=!1,g=0,p=-1,O=-1,b=/[a-z]/.test(e),x=!0;for(let k=0,w=Math.min(e.length,200),S=0;k<w&&h<l;){let P=Kt(e,k);a<0&&(u<l&&P==t[u]&&(i[u++]=k),g<l&&(P==t[g]||P==n[g]?(g==0&&(p=k),O=k+1,g++):g=0));let X,E=P<255?P>=48&&P<=57||P>=97&&P<=122?2:P>=65&&P<=90?1:0:(X=Vu(P))!=X.toLowerCase()?1:X!=X.toUpperCase()?2:0;(!k||E==1&&b||S==0&&E!=0)&&(t[h]==P||n[h]==P&&(f=!0)?o[h++]=k:o.length&&(x=!1)),S=E,k+=Ur(P)}return h==l&&o[0]==0&&x?this.result(-100+(f?-200:0),o,e):g==l&&p==0?this.ret(-200-e.length+(O==e.length?0:-100),[0,O]):a>-1?this.ret(-700-e.length,[a,a+this.pattern.length]):g==l?this.ret(-900-e.length,[p,O]):h==l?this.result(-100+(f?-200:0)+-700+(x?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,n){let s=[],i=0;for(let o of t){let a=o+(this.astral?Ur(Kt(n,o)):1);i&&s[i-1]==o?s[i-1]=a:(s[i++]=o,s[i++]=a)}return this.ret(e-n.length,s)}}class U3{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let t=e.slice(0,this.pattern.length),n=t==this.pattern?0:t.toLowerCase()==this.folded?-200:null;return n==null?null:(this.matched=[0,t.length],this.score=n+(e.length==this.pattern.length?0:-100),this)}}const Pt=Te.define({combine(r){return nn(r,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:G3,filterStrict:!1,compareCompletions:(e,t)=>(e.sortText||e.label).localeCompare(t.sortText||t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>n=>zf(e(n),t(n)),optionClass:(e,t)=>n=>zf(e(n),t(n)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function zf(r,e){return r?e?r+" "+e:r:e}function G3(r,e,t,n,s,i){let o=r.textDirection==ut.RTL,a=o,l=!1,c="top",u,h,f=e.left-s.left,g=s.right-e.right,p=n.right-n.left,O=n.bottom-n.top;if(a&&f<Math.min(p,g)?a=!1:!a&&g<Math.min(p,f)&&(a=!0),p<=(a?f:g))u=Math.max(s.top,Math.min(t.top,s.bottom-O))-e.top,h=Math.min(400,a?f:g);else{l=!0,h=Math.min(400,(o?e.right:s.right-e.left)-30);let k=s.bottom-e.bottom;k>=O||k>e.top?u=t.bottom-e.top:(c="bottom",u=e.bottom-t.top)}let b=(e.bottom-e.top)/i.offsetHeight,x=(e.right-e.left)/i.offsetWidth;return{style:`${c}: ${u/b}px; max-width: ${h/x}px`,class:"cm-completionInfo-"+(l?o?"left-narrow":"right-narrow":a?"left":"right")}}function H3(r){let e=r.addToOptions.slice();return r.icons&&e.push({render(t){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),t.type&&n.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(t,n,s,i){let o=document.createElement("span");o.className="cm-completionLabel";let a=t.displayLabel||t.label,l=0;for(let c=0;c<i.length;){let u=i[c++],h=i[c++];u>l&&o.appendChild(document.createTextNode(a.slice(l,u)));let f=o.appendChild(document.createElement("span"));f.appendChild(document.createTextNode(a.slice(u,h))),f.className="cm-completionMatchedText",l=h}return l<a.length&&o.appendChild(document.createTextNode(a.slice(l))),o},position:50},{render(t){if(!t.detail)return null;let n=document.createElement("span");return n.className="cm-completionDetail",n.textContent=t.detail,n},position:80}),e.sort((t,n)=>t.position-n.position).map(t=>t.render)}function sc(r,e,t){if(r<=t)return{from:0,to:r};if(e<0&&(e=0),e<=r>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let n=Math.floor((r-e)/t);return{from:r-(n+1)*t,to:r-n*t}}class K3{constructor(e,t,n){this.view=e,this.stateField=t,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:l=>this.placeInfo(l),key:this},this.space=null,this.currentClass="";let s=e.state.field(t),{options:i,selected:o}=s.open,a=e.state.facet(Pt);this.optionContent=H3(a),this.optionClass=a.optionClass,this.tooltipClass=a.tooltipClass,this.range=sc(i.length,o,a.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",l=>{let{options:c}=e.state.field(t).open;for(let u=l.target,h;u&&u!=this.dom;u=u.parentNode)if(u.nodeName=="LI"&&(h=/-(\d+)$/.exec(u.id))&&+h[1]<c.length){this.applyCompletion(e,c[+h[1]]),l.preventDefault();return}}),this.dom.addEventListener("focusout",l=>{let c=e.state.field(this.stateField,!1);c&&c.tooltip&&e.state.facet(Pt).closeOnBlur&&l.relatedTarget!=e.contentDOM&&e.dispatch({effects:lo.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let n=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=s){let{options:i,selected:o,disabled:a}=n.open;(!s.open||s.open.options!=i)&&(this.range=sc(i.length,o,e.state.facet(Pt).maxRenderedOptions),this.showOptions(i,n.id)),this.updateSel(),a!=((t=s.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!a)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of t.split(" "))n&&this.dom.classList.add(n);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected<this.range.from||t.selected>=this.range.to)&&(this.range=sc(t.options.length,t.selected,this.view.state.facet(Pt).maxRenderedOptions),this.showOptions(t.options,e.id));let n=this.updateSelectedOption(t.selected);if(n){this.destroyInfo();let{completion:s}=t.options[t.selected],{info:i}=s;if(!i)return;let o=typeof i=="string"?document.createTextNode(i):i(s);if(!o)return;"then"in o?o.then(a=>{a&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(a,s)}).catch(a=>rr(this.view.state,a,"completion info")):(this.addInfoPane(o,s),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,t){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;n.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let n=this.list.firstChild,s=this.range.from;n;n=n.nextSibling,s++)n.nodeName!="LI"||!n.id?s--:s==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),t=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return t&&eT(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let o=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(i.bottom,t.bottom)-10||s.bottom<Math.max(i.top,t.top)+10?null:this.view.state.facet(Pt).positionInfo(this.view,t,s,n,i,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,t,n){const s=document.createElement("ul");s.id=t,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions")),s.addEventListener("mousedown",o=>{o.target==s&&o.preventDefault()});let i=null;for(let o=n.from;o<n.to;o++){let{completion:a,match:l}=e[o],{section:c}=a;if(c){let f=typeof c=="string"?c:c.name;if(f!=i&&(o>n.from||n.from==0))if(i=f,typeof c!="string"&&c.header)s.appendChild(c.header(c));else{let g=s.appendChild(document.createElement("completion-section"));g.textContent=f}}const u=s.appendChild(document.createElement("li"));u.id=t+"-"+o,u.setAttribute("role","option");let h=this.optionClass(a);h&&(u.className=h);for(let f of this.optionContent){let g=f(a,this.view.state,this.view,l);g&&u.appendChild(g)}}return n.from&&s.classList.add("cm-completionListIncompleteTop"),n.to<e.length&&s.classList.add("cm-completionListIncompleteBottom"),s}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function J3(r,e){return t=>new K3(t,r,e)}function eT(r,e){let t=r.getBoundingClientRect(),n=e.getBoundingClientRect(),s=t.height/r.offsetHeight;n.top<t.top?r.scrollTop-=(t.top-n.top)/s:n.bottom>t.bottom&&(r.scrollTop+=(n.bottom-t.bottom)/s)}function Nf(r){return(r.boost||0)*100+(r.apply?10:0)+(r.info?5:0)+(r.type?1:0)}function tT(r,e){let t=[],n=null,s=null,i=u=>{t.push(u);let{section:h}=u.completion;if(h){n||(n=[]);let f=typeof h=="string"?h:h.name;n.some(g=>g.name==f)||n.push(typeof h=="string"?{name:f}:h)}},o=e.facet(Pt);for(let u of r)if(u.hasResult()){let h=u.result.getMatch;if(u.result.filter===!1)for(let f of u.result.options)i(new If(f,u.source,h?h(f):[],1e9-t.length));else{let f=e.sliceDoc(u.from,u.to),g,p=o.filterStrict?new U3(f):new F3(f);for(let O of u.result.options)if(g=p.match(O.label)){let b=O.displayLabel?h?h(O,g.matched):[]:g.matched,x=g.score+(O.boost||0);if(i(new If(O,u.source,b,x)),typeof O.section=="object"&&O.section.rank==="dynamic"){let{name:k}=O.section;s||(s=Object.create(null)),s[k]=Math.max(x,s[k]||-1e9)}}}}if(n){let u=Object.create(null),h=0,f=(g,p)=>(g.rank==="dynamic"&&p.rank==="dynamic"?s[p.name]-s[g.name]:0)||(typeof g.rank=="number"?g.rank:1e9)-(typeof p.rank=="number"?p.rank:1e9)||(g.name<p.name?-1:1);for(let g of n.sort(f))h-=1e5,u[g.name]=h;for(let g of t){let{section:p}=g.completion;p&&(g.score+=u[typeof p=="string"?p:p.name])}}let a=[],l=null,c=o.compareCompletions;for(let u of t.sort((h,f)=>f.score-h.score||c(h.completion,f.completion))){let h=u.completion;!l||l.label!=h.label||l.detail!=h.detail||l.type!=null&&h.type!=null&&l.type!=h.type||l.apply!=h.apply||l.boost!=h.boost?a.push(u):Nf(u.completion)>Nf(l)&&(a[a.length-1]=u),l=u.completion}return a}class Ls{constructor(e,t,n,s,i,o){this.options=e,this.attrs=t,this.tooltip=n,this.timestamp=s,this.selected=i,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new Ls(this.options,Wf(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,n,s,i,o){if(s&&!o&&e.some(c=>c.isPending))return s.setDisabled();let a=tT(e,t);if(!a.length)return s&&e.some(c=>c.isPending)?s.setDisabled():null;let l=t.facet(Pt).selectOnOpen?0:-1;if(s&&s.selected!=l&&s.selected!=-1){let c=s.options[s.selected].completion;for(let u=0;u<a.length;u++)if(a[u].completion==c){l=u;break}}return new Ls(a,Wf(n,l),{pos:e.reduce((c,u)=>u.hasResult()?Math.min(c,u.from):c,1e8),create:aT,above:i.aboveCursor},s?s.timestamp:Date.now(),l,!1)}map(e){return new Ls(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Ls(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class sl{constructor(e,t,n){this.active=e,this.id=t,this.open=n}static start(){return new sl(iT,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,n=t.facet(Pt),i=(n.override||t.languageDataAt("autocomplete",ms(t)).map(Y3)).map(l=>(this.active.find(u=>u.source==l)||new Qr(l,this.active.some(u=>u.state!=0)?1:0)).update(e,n));i.length==this.active.length&&i.every((l,c)=>l==this.active[c])&&(i=this.active);let o=this.open,a=e.effects.some(l=>l.is(wh));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||i.some(l=>l.hasResult()&&e.changes.touchesRange(l.from,l.to))||!rT(i,this.active)||a?o=Ls.build(i,t,this.id,o,n,a):o&&o.disabled&&!i.some(l=>l.isPending)&&(o=null),!o&&i.every(l=>!l.isPending)&&i.some(l=>l.hasResult())&&(i=i.map(l=>l.hasResult()?new Qr(l.source,0):l));for(let l of e.effects)l.is(s0)&&(o=o&&o.setSelected(l.value,this.id));return i==this.active&&o==this.open?this:new sl(i,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?nT:sT}}function rT(r,e){if(r==e)return!0;for(let t=0,n=0;;){for(;t<r.length&&!r[t].hasResult();)t++;for(;n<e.length&&!e[n].hasResult();)n++;let s=t==r.length,i=n==e.length;if(s||i)return s==i;if(r[t++].result!=e[n++].result)return!1}}const nT={"aria-autocomplete":"list"},sT={};function Wf(r,e){let t={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":r};return e>-1&&(t["aria-activedescendant"]=r+"-"+e),t}const iT=[];function n0(r,e){if(r.isUserEvent("input.complete")){let n=r.annotation(kh);if(n&&e.activateOnCompletion(n))return 12}let t=r.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:r.isUserEvent("delete.backward")?2:r.selection?8:r.docChanged?16:0}class Qr{constructor(e,t,n=!1){this.source=e,this.state=t,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,t){let n=n0(e,t),s=this;(n&8||n&16&&this.touches(e))&&(s=new Qr(s.source,0)),n&4&&s.state==0&&(s=new Qr(this.source,1)),s=s.updateFor(e,n);for(let i of e.effects)if(i.is(nl))s=new Qr(s.source,1,i.value);else if(i.is(lo))s=new Qr(s.source,0);else if(i.is(wh))for(let o of i.value)o.source==s.source&&(s=o);return s}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(ms(e.state))}}class js extends Qr{constructor(e,t,n,s,i,o){super(e,3,t),this.limit=n,this.result=s,this.from=i,this.to=o}hasResult(){return!0}updateFor(e,t){var n;if(!(t&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),a=ms(e.state);if(a>o||!s||t&2&&(ms(e.startState)==this.from||a<this.limit))return new Qr(this.source,t&4?1:0);let l=e.changes.mapPos(this.limit);return oT(s.validFor,e.state,i,o)?new js(this.source,this.explicit,l,s,i,o):s.update&&(s=s.update(s,i,o,new yh(e.state,a,!1)))?new js(this.source,this.explicit,l,s,s.from,(n=s.to)!==null&&n!==void 0?n:ms(e.state)):new Qr(this.source,1,this.explicit)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new js(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new Qr(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}}function oT(r,e,t,n){if(!r)return!1;let s=e.sliceDoc(t,n);return typeof r=="function"?r(s,t,n,e):r0(r,!0).test(s)}const wh=Ne.define({map(r,e){return r.map(t=>t.map(e))}}),s0=Ne.define(),Jt=Mt.define({create(){return sl.start()},update(r,e){return r.update(e)},provide:r=>[sh.from(r,e=>e.tooltip),$e.contentAttributes.from(r,e=>e.attrs)]});function Sh(r,e){const t=e.completion.apply||e.completion.label;let n=r.state.field(Jt).active.find(s=>s.source==e.source);return n instanceof js?(typeof t=="string"?r.dispatch({...j3(r.state,t,n.from,n.to),annotations:kh.of(e.completion)}):t(r,e.completion,n.from,n.to),!0):!1}const aT=J3(Jt,Sh);function ca(r,e="option"){return t=>{let n=t.state.field(Jt,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp<t.state.facet(Pt).interactionDelay)return!1;let s=1,i;e=="page"&&(i=Dg(t,n.open.tooltip))&&(s=Math.max(2,Math.floor(i.dom.offsetHeight/i.dom.querySelector("li").offsetHeight)-1));let{length:o}=n.open.options,a=n.open.selected>-1?n.open.selected+s*(r?1:-1):r?0:o-1;return a<0?a=e=="page"?0:o-1:a>=o&&(a=e=="page"?o-1:0),t.dispatch({effects:s0.of(a)}),!0}}const lT=r=>{let e=r.state.field(Jt,!1);return r.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<r.state.facet(Pt).interactionDelay?!1:Sh(r,e.open.options[e.open.selected])},ic=r=>r.state.field(Jt,!1)?(r.dispatch({effects:nl.of(!0)}),!0):!1,cT=r=>{let e=r.state.field(Jt,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(r.dispatch({effects:lo.of(null)}),!0)};class uT{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const hT=50,dT=1e3,fT=xt.fromClass(class{constructor(r){this.view=r,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of r.state.field(Jt).active)e.isPending&&this.startQuery(e)}update(r){let e=r.state.field(Jt),t=r.state.facet(Pt);if(!r.selectionSet&&!r.docChanged&&r.startState.field(Jt)==e)return;let n=r.transactions.some(i=>{let o=n0(i,t);return o&8||(i.selection||i.docChanged)&&!(o&3)});for(let i=0;i<this.running.length;i++){let o=this.running[i];if(n||o.context.abortOnDocChange&&r.docChanged||o.updates.length+r.transactions.length>hT&&Date.now()-o.time>dT){for(let a of o.context.abortListeners)try{a()}catch(l){rr(this.view.state,l)}o.context.abortListeners=null,this.running.splice(i--,1)}else o.updates.push(...r.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),r.transactions.some(i=>i.effects.some(o=>o.is(nl)))&&(this.pendingStart=!0);let s=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(o=>o.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of r.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:r}=this.view,e=r.field(Jt);for(let t of e.active)t.isPending&&!this.running.some(n=>n.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Pt).updateSyncTime))}startQuery(r){let{state:e}=this.view,t=ms(e),n=new yh(e,t,r.explicit,this.view),s=new uT(r,n);this.running.push(s),Promise.resolve(r.source(n)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:lo.of(null)}),rr(this.view.state,i)})}scheduleAccept(){this.running.every(r=>r.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Pt).updateSyncTime))}accept(){var r;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(Pt),n=this.view.state.field(Jt);for(let s=0;s<this.running.length;s++){let i=this.running[s];if(i.done===void 0)continue;if(this.running.splice(s--,1),i.done){let a=ms(i.updates.length?i.updates[0].startState:this.view.state),l=Math.min(a,i.done.from+(i.active.explicit?0:1)),c=new js(i.active.source,i.active.explicit,l,i.done,i.done.from,(r=i.done.to)!==null&&r!==void 0?r:a);for(let u of i.updates)c=c.update(u,t);if(c.hasResult()){e.push(c);continue}}let o=n.active.find(a=>a.source==i.active.source);if(o&&o.isPending)if(i.done==null){let a=new Qr(i.active.source,0);for(let l of i.updates)a=a.update(l,t);a.isPending||e.push(a)}else this.startQuery(o)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:wh.of(e)})}},{eventHandlers:{blur(r){let e=this.view.state.field(Jt,!1);if(e&&e.tooltip&&this.view.state.facet(Pt).closeOnBlur){let t=e.open&&Dg(this.view,e.open.tooltip);(!t||!t.dom.contains(r.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:lo.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:nl.of(!1)}),20),this.composing=0}}}),mT=typeof navigator=="object"&&/Win/.test(navigator.platform),pT=kn.highest($e.domEventHandlers({keydown(r,e){let t=e.state.field(Jt,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||r.key.length>1||r.ctrlKey&&!(mT&&r.altKey)||r.metaKey)return!1;let n=t.open.options[t.open.selected],s=t.active.find(o=>o.source==n.source),i=n.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(r.key)>-1&&Sh(e,n),!1}})),i0=$e.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class gT{constructor(e,t,n,s){this.field=e,this.line=t,this.from=n,this.to=s}}class $h{constructor(e,t,n){this.field=e,this.from=t,this.to=n}map(e){let t=e.mapPos(this.from,-1,Bt.TrackDel),n=e.mapPos(this.to,1,Bt.TrackDel);return t==null||n==null?null:new $h(this.field,t,n)}}class Ch{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let n=[],s=[t],i=e.doc.lineAt(t),o=/^\s*/.exec(i.text)[0];for(let l of this.lines){if(n.length){let c=o,u=/^\t*/.exec(l)[0].length;for(let h=0;h<u;h++)c+=e.facet(Po);s.push(t+c.length-u),l=c+l.slice(u)}n.push(l),t+=l.length+1}let a=this.fieldPositions.map(l=>new $h(l.field,s[l.line]+l.from,s[l.line]+l.to));return{text:n,ranges:a}}static parse(e){let t=[],n=[],s=[],i;for(let o of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=i[1]?+i[1]:null,l=i[2]||i[3]||"",c=-1,u=l.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h<t.length;h++)(a!=null?t[h].seq==a:u&&t[h].name==u)&&(c=h);if(c<0){let h=0;for(;h<t.length&&(a==null||t[h].seq!=null&&t[h].seq<a);)h++;t.splice(h,0,{seq:a,name:u}),c=h;for(let f of s)f.field>=c&&f.field++}for(let h of s)if(h.line==n.length&&h.from>i.index){let f=i[2]?3+(i[1]||"").length:2;h.from-=f,h.to-=f}s.push(new gT(c,n.length,i.index,i.index+u.length)),o=o.slice(0,i.index)+l+o.slice(i.index+i[0].length)}o=o.replace(/\\([{}])/g,(a,l,c)=>{for(let u of s)u.line==n.length&&u.from>c&&(u.from--,u.to--);return l}),n.push(o)}return new Ch(n,s)}}let OT=De.widget({widget:new class extends sn{toDOM(){let r=document.createElement("span");return r.className="cm-snippetFieldPosition",r}ignoreEvent(){return!1}}}),vT=De.mark({class:"cm-snippetField"});class hi{constructor(e,t){this.ranges=e,this.active=t,this.deco=De.set(e.map(n=>(n.from==n.to?OT:vT).range(n.from,n.to)),!0)}map(e){let t=[];for(let n of this.ranges){let s=n.map(e);if(!s)return null;t.push(s)}return new hi(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(n=>n.field==this.active&&n.from<=t.from&&n.to>=t.to))}}const Bo=Ne.define({map(r,e){return r&&r.map(e)}}),bT=Ne.define(),co=Mt.define({create(){return null},update(r,e){for(let t of e.effects){if(t.is(Bo))return t.value;if(t.is(bT)&&r)return new hi(r.ranges,t.value)}return r&&e.docChanged&&(r=r.map(e.changes)),r&&e.selection&&!r.selectionInsideField(e.selection)&&(r=null),r},provide:r=>$e.decorations.from(r,e=>e?e.deco:De.none)});function Qh(r,e){return ne.create(r.filter(t=>t.field==e).map(t=>ne.range(t.from,t.to)))}function xT(r){let e=Ch.parse(r);return(t,n,s,i)=>{let{text:o,ranges:a}=e.instantiate(t.state,s),{main:l}=t.state.selection,c={changes:{from:s,to:i==l.from?l.to:i,insert:tt.of(o)},scrollIntoView:!0,annotations:n?[kh.of(n),yt.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=Qh(a,0)),a.some(u=>u.field>0)){let u=new hi(a,0),h=c.effects=[Bo.of(u)];t.state.field(co,!1)===void 0&&h.push(Ne.appendConfig.of([co,$T,CT,i0]))}t.dispatch(t.state.update(c))}}function o0(r){return({state:e,dispatch:t})=>{let n=e.field(co,!1);if(!n||r<0&&n.active==0)return!1;let s=n.active+r,i=r>0&&!n.ranges.some(o=>o.field==s+r);return t(e.update({selection:Qh(n.ranges,s),effects:Bo.of(i?null:new hi(n.ranges,s)),scrollIntoView:!0})),!0}}const yT=({state:r,dispatch:e})=>r.field(co,!1)?(e(r.update({effects:Bo.of(null)})),!0):!1,kT=o0(1),wT=o0(-1),ST=[{key:"Tab",run:kT,shift:wT},{key:"Escape",run:yT}],qf=Te.define({combine(r){return r.length?r[0]:ST}}),$T=kn.highest($o.compute([qf],r=>r.facet(qf)));function Gt(r,e){return{...e,apply:xT(r)}}const CT=$e.domEventHandlers({mousedown(r,e){let t=e.state.field(co,!1),n;if(!t||(n=e.posAtCoords({x:r.clientX,y:r.clientY}))==null)return!1;let s=t.ranges.find(i=>i.from<=n&&i.to>=n);return!s||s.field==t.active?!1:(e.dispatch({selection:Qh(t.ranges,s.field),effects:Bo.of(t.ranges.some(i=>i.field>s.field)?new hi(t.ranges,s.field):null),scrollIntoView:!0}),!0)}}),uo={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},us=Ne.define({map(r,e){let t=e.mapPos(r,-1,Bt.TrackAfter);return t??void 0}}),Ph=new class extends Dn{};Ph.startSide=1;Ph.endSide=-1;const a0=Mt.define({create(){return Ge.empty},update(r,e){if(r=r.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);r=r.update({filter:n=>n>=t.from&&n<=t.to})}for(let t of e.effects)t.is(us)&&(r=r.update({add:[Ph.range(t.value,t.value+1)]}));return r}});function QT(){return[TT,a0]}const oc="()[]{}<>«»»«[]{}";function l0(r){for(let e=0;e<oc.length;e+=2)if(oc.charCodeAt(e)==r)return oc.charAt(e+1);return Vu(r<128?r:r+1)}function c0(r,e){return r.languageDataAt("closeBrackets",e)[0]||uo}const PT=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),TT=$e.inputHandler.of((r,e,t,n)=>{if((PT?r.composing:r.compositionStarted)||r.state.readOnly)return!1;let s=r.state.selection.main;if(n.length>2||n.length==2&&Ur(Kt(n,0))==1||e!=s.from||t!=s.to)return!1;let i=_T(r.state,n);return i?(r.dispatch(i),!0):!1}),MT=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let n=c0(r,r.selection.main.head).brackets||uo.brackets,s=null,i=r.changeByRange(o=>{if(o.empty){let a=RT(r.doc,o.head);for(let l of n)if(l==a&&Ml(r.doc,o.head)==l0(Kt(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:ne.cursor(o.head-l.length)}}return{range:s=o}});return s||e(r.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},AT=[{key:"Backspace",run:MT}];function _T(r,e){let t=c0(r,r.selection.main.head),n=t.brackets||uo.brackets;for(let s of n){let i=l0(Kt(s,0));if(e==s)return i==s?ET(r,s,n.indexOf(s+s+s)>-1,t):BT(r,s,i,t.before||uo.before);if(e==i&&u0(r,r.selection.main.from))return ZT(r,s,i)}return null}function u0(r,e){let t=!1;return r.field(a0).between(0,r.doc.length,n=>{n==e&&(t=!0)}),t}function Ml(r,e){let t=r.sliceString(e,e+2);return t.slice(0,Ur(Kt(t,0)))}function RT(r,e){let t=r.sliceString(e-2,e);return Ur(Kt(t,0))==t.length?t:t.slice(1)}function BT(r,e,t,n){let s=null,i=r.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:us.of(o.to+e.length),range:ne.range(o.anchor+e.length,o.head+e.length)};let a=Ml(r.doc,o.head);return!a||/\s/.test(a)||n.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:us.of(o.head+e.length),range:ne.cursor(o.head+e.length)}:{range:s=o}});return s?null:r.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function ZT(r,e,t){let n=null,s=r.changeByRange(i=>i.empty&&Ml(r.doc,i.head)==t?{changes:{from:i.head,to:i.head+t.length,insert:t},range:ne.cursor(i.head+t.length)}:n={range:i});return n?null:r.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function ET(r,e,t,n){let s=n.stringPrefixes||uo.stringPrefixes,i=null,o=r.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:us.of(a.to+e.length),range:ne.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=Ml(r.doc,l),u;if(c==e){if(jf(r,l))return{changes:{insert:e+e,from:l},effects:us.of(l+e.length),range:ne.cursor(l+e.length)};if(u0(r,l)){let f=t&&r.sliceDoc(l,l+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:l,to:l+f.length,insert:f},range:ne.cursor(l+f.length)}}}else{if(t&&r.sliceDoc(l-2*e.length,l)==e+e&&(u=Yf(r,l-2*e.length,s))>-1&&jf(r,u))return{changes:{insert:e+e+e+e,from:l},effects:us.of(l+e.length),range:ne.cursor(l+e.length)};if(r.charCategorizer(l)(c)!=mt.Word&&Yf(r,l,s)>-1&&!DT(r,l,e,s))return{changes:{insert:e+e,from:l},effects:us.of(l+e.length),range:ne.cursor(l+e.length)}}return{range:i=a}});return i?null:r.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function jf(r,e){let t=ht(r).resolveInner(e+1);return t.parent&&t.from==e}function DT(r,e,t,n){let s=ht(r).resolveInner(e,-1),i=n.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=r.sliceDoc(s.from,Math.min(s.to,s.from+t.length+i)),l=a.indexOf(t);if(!l||l>-1&&n.indexOf(a.slice(0,l))>-1){let u=s.firstChild;for(;u&&u.from==s.from&&u.to-u.from>t.length+l;){if(r.sliceDoc(u.to-t.length,u.to)==t)return!1;u=u.firstChild}return!0}let c=s.to==e&&s.parent;if(!c)break;s=c}return!1}function Yf(r,e,t){let n=r.charCategorizer(e);if(n(r.sliceDoc(e-1,e))!=mt.Word)return e;for(let s of t){let i=e-s.length;if(r.sliceDoc(i,e)==s&&n(r.sliceDoc(i-1,i))!=mt.Word)return i}return-1}function LT(r={}){return[pT,Jt,Pt.of(r),fT,XT,i0]}const h0=[{key:"Ctrl-Space",run:ic},{mac:"Alt-`",run:ic},{mac:"Alt-i",run:ic},{key:"Escape",run:cT},{key:"ArrowDown",run:ca(!0)},{key:"ArrowUp",run:ca(!1)},{key:"PageDown",run:ca(!0,"page")},{key:"PageUp",run:ca(!1,"page")},{key:"Enter",run:lT}],XT=kn.highest($o.computeN([Pt],r=>r.facet(Pt).defaultKeymap?[h0]:[]));class Ff{constructor(e,t,n){this.from=e,this.to=t,this.diagnostic=n}}class is{constructor(e,t,n){this.diagnostics=e,this.panel=t,this.selected=n}static init(e,t,n){let s=n.facet(ho).markerFilter;s&&(e=s(e,n));let i=e.slice().sort((g,p)=>g.from-p.from||g.to-p.to),o=new bn,a=[],l=0,c=n.doc.iter(),u=0,h=n.doc.length;for(let g=0;;){let p=g==i.length?null:i[g];if(!p&&!a.length)break;let O,b;if(a.length)O=l,b=a.reduce((w,S)=>Math.min(w,S.to),p&&p.from>O?p.from:1e8);else{if(O=p.from,O>h)break;b=p.to,a.push(p),g++}for(;g<i.length;){let w=i[g];if(w.from==O&&(w.to>w.from||w.to==O))a.push(w),g++,b=Math.min(w.to,b);else{b=Math.min(w.from,b);break}}b=Math.min(b,h);let x=!1;if(a.some(w=>w.from==O&&(w.to==b||b==h))&&(x=O==b,!x&&b-O<10)){let w=O-(u+c.value.length);w>0&&(c.next(w),u=O);for(let S=O;;){if(S>=b){x=!0;break}if(!c.lineBreak&&u+c.value.length>S)break;S=u+c.value.length,u+=c.value.length,c.next()}}let k=KT(a);if(x)o.add(O,O,De.widget({widget:new FT(k),diagnostics:a.slice()}));else{let w=a.reduce((S,P)=>P.markClass?S+" "+P.markClass:S,"");o.add(O,b,De.mark({class:"cm-lintRange cm-lintRange-"+k+w,diagnostics:a.slice(),inclusiveEnd:a.some(S=>S.to>b)}))}if(l=b,l==h)break;for(let w=0;w<a.length;w++)a[w].to<=l&&a.splice(w--,1)}let f=o.finish();return new is(f,t,Nn(f))}}function Nn(r,e=null,t=0){let n=null;return r.between(t,1e9,(s,i,{spec:o})=>{if(!(e&&o.diagnostics.indexOf(e)<0))if(!n)n=new Ff(s,i,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(n.diagnostic)<0)return!1;n=new Ff(n.from,i,n.diagnostic)}}),n}function IT(r,e){let t=e.pos,n=e.end||t,s=r.state.facet(ho).hideOn(r,t,n);if(s!=null)return s;let i=r.startState.doc.lineAt(e.pos);return!!(r.effects.some(o=>o.is(d0))||r.changes.touchesRange(i.from,Math.max(i.to,n)))}function VT(r,e){return r.field(gr,!1)?e:e.concat(Ne.appendConfig.of(JT))}const d0=Ne.define(),Th=Ne.define(),f0=Ne.define(),gr=Mt.define({create(){return new is(De.none,null,null)},update(r,e){if(e.docChanged&&r.diagnostics.size){let t=r.diagnostics.map(e.changes),n=null,s=r.panel;if(r.selected){let i=e.changes.mapPos(r.selected.from,1);n=Nn(t,r.selected.diagnostic,i)||Nn(t,null,i)}!t.size&&s&&e.state.facet(ho).autoPanel&&(s=null),r=new is(t,s,n)}for(let t of e.effects)if(t.is(d0)){let n=e.state.facet(ho).autoPanel?t.value.length?fo.open:null:r.panel;r=is.init(t.value,n,e.state)}else t.is(Th)?r=new is(r.diagnostics,t.value?fo.open:null,r.selected):t.is(f0)&&(r=new is(r.diagnostics,r.panel,t.value));return r},provide:r=>[to.from(r,e=>e.panel),$e.decorations.from(r,e=>e.diagnostics)]}),zT=De.mark({class:"cm-lintRange cm-lintRange-active"});function NT(r,e,t){let{diagnostics:n}=r.state.field(gr),s,i=-1,o=-1;n.between(e-(t<0?1:0),e+(t>0?1:0),(l,c,{spec:u})=>{if(e>=l&&e<=c&&(l==c||(e>l||t>0)&&(e<c||t<0)))return s=u.diagnostics,i=l,o=c,!1});let a=r.state.facet(ho).tooltipFilter;return s&&a&&(s=a(s,r.state)),s?{pos:i,end:o,above:r.state.doc.lineAt(i).to<o,create(){return{dom:WT(r,s)}}}:null}function WT(r,e){return at("ul",{class:"cm-tooltip-lint"},e.map(t=>p0(r,t,!1)))}const qT=r=>{let e=r.state.field(gr,!1);(!e||!e.panel)&&r.dispatch({effects:VT(r.state,[Th.of(!0)])});let t=ih(r,fo.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},Uf=r=>{let e=r.state.field(gr,!1);return!e||!e.panel?!1:(r.dispatch({effects:Th.of(!1)}),!0)},jT=r=>{let e=r.state.field(gr,!1);if(!e)return!1;let t=r.state.selection.main,n=Nn(e.diagnostics,null,t.to+1);return!n&&(n=Nn(e.diagnostics,null,0),!n||n.from==t.from&&n.to==t.to)?!1:(r.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),!0)},YT=[{key:"Mod-Shift-m",run:qT,preventDefault:!0},{key:"F8",run:jT}],ho=Te.define({combine(r){return{sources:r.map(e=>e.source).filter(e=>e!=null),...nn(r.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:Gf,tooltipFilter:Gf,needsRefresh:(e,t)=>e?t?n=>e(n)||t(n):e:t,hideOn:(e,t)=>e?t?(n,s,i)=>e(n,s,i)||t(n,s,i):e:t,autoPanel:(e,t)=>e||t})}}});function Gf(r,e){return r?e?(t,n)=>e(r(t,n),n):r:e}function m0(r){let e=[];if(r)e:for(let{name:t}of r){for(let n=0;n<t.length;n++){let s=t[n];if(/[a-zA-Z]/.test(s)&&!e.some(i=>i.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function p0(r,e,t){var n;let s=t?m0(e.actions):[];return at("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},at("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(r):e.message),(n=e.actions)===null||n===void 0?void 0:n.map((i,o)=>{let a=!1,l=g=>{if(g.preventDefault(),a)return;a=!0;let p=Nn(r.state.field(gr).diagnostics,e);p&&i.apply(r,p.from,p.to)},{name:c}=i,u=s[o]?c.indexOf(s[o]):-1,h=u<0?c:[c.slice(0,u),at("u",c.slice(u,u+1)),c.slice(u+1)],f=i.markClass?" "+i.markClass:"";return at("button",{type:"button",class:"cm-diagnosticAction"+f,onclick:l,onmousedown:l,"aria-label":` Action: ${c}${u<0?"":` (access key "${s[o]})"`}.`},h)}),e.source&&at("div",{class:"cm-diagnosticSource"},e.source))}class FT extends sn{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return at("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class Hf{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=p0(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class fo{constructor(e){this.view=e,this.items=[];let t=s=>{if(!(s.ctrlKey||s.altKey||s.metaKey)){if(s.keyCode==27)Uf(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],o=m0(i.actions);for(let a=0;a<o.length;a++)if(o[a].toUpperCase().charCodeAt(0)==s.keyCode){let l=Nn(this.view.state.field(gr).diagnostics,i);l&&i.actions[a].apply(e,l.from,l.to)}}else return;s.preventDefault()}},n=s=>{for(let i=0;i<this.items.length;i++)this.items[i].dom.contains(s.target)&&this.moveSelection(i)};this.list=at("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t,onclick:n}),this.dom=at("div",{class:"cm-panel-lint"},this.list,at("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>Uf(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(gr).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(gr),n=0,s=!1,i=null,o=new Set;for(e.between(0,this.view.state.doc.length,(a,l,{spec:c})=>{for(let u of c.diagnostics){if(o.has(u))continue;o.add(u);let h=-1,f;for(let g=n;g<this.items.length;g++)if(this.items[g].diagnostic==u){h=g;break}h<0?(f=new Hf(this.view,u),this.items.splice(n,0,f),s=!0):(f=this.items[h],h>n&&(this.items.splice(n,h-n),s=!0)),t&&f.diagnostic==t.diagnostic?f.dom.hasAttribute("aria-selected")||(f.dom.setAttribute("aria-selected","true"),i=f):f.dom.hasAttribute("aria-selected")&&f.dom.removeAttribute("aria-selected"),n++}});n<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();this.items.length==0&&(this.items.push(new Hf(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),i?(this.list.setAttribute("aria-activedescendant",i.id),this.view.requestMeasure({key:this,read:()=>({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:a,panel:l})=>{let c=l.height/this.list.offsetHeight;a.top<l.top?this.list.scrollTop-=(l.top-a.top)/c:a.bottom>l.bottom&&(this.list.scrollTop+=(a.bottom-l.bottom)/c)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let n=e;e=n.nextSibling,n.remove()}for(let n of this.items)if(n.dom.parentNode==this.list){for(;e!=n.dom;)t();e=n.dom.nextSibling}else this.list.insertBefore(n.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(gr),n=Nn(t.diagnostics,this.items[e].diagnostic);n&&this.view.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0,effects:f0.of(n)})}static open(e){return new fo(e)}}function UT(r,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(r)}</svg>')`}function ua(r){return UT(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${r}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const GT=$e.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:ua("#d11")},".cm-lintRange-warning":{backgroundImage:ua("orange")},".cm-lintRange-info":{backgroundImage:ua("#999")},".cm-lintRange-hint":{backgroundImage:ua("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function HT(r){return r=="error"?4:r=="warning"?3:r=="info"?2:1}function KT(r){let e="hint",t=1;for(let n of r){let s=HT(n.severity);s>t&&(t=s,e=n.severity)}return e}const JT=[gr,$e.decorations.compute([gr],r=>{let{selected:e,panel:t}=r.field(gr);return!e||!t||e.from==e.to?De.none:De.set([zT.range(e.from,e.to)])}),M5(NT,{hideOn:IT}),GT],eM=[N5(),j5(),a5(),uP(),LQ(),GC(),t5(),He.allowMultipleSelections.of(!0),CQ(),uO(zQ,{fallback:!0}),UQ(),QT(),LT(),b5(),k5(),f5(),b3(),$o.of([...AT,...m3,...I3,...bP,...BQ,...h0,...YT])];class il{static create(e,t,n,s,i){let o=s+(s<<8)+e+(t<<4)|0;return new il(e,t,n,o,i,[],[])}constructor(e,t,n,s,i,o,a){this.type=e,this.value=t,this.from=n,this.hash=s,this.end=i,this.children=o,this.positions=a,this.hashProp=[[qe.contextHash,s]]}addChild(e,t){e.prop(qe.contextHash)!=this.hash&&(e=new st(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){let n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new st(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(s,i,o)=>new st(Qt.none,s,i,o,this.hashProp)})}}var pe;(function(r){r[r.Document=1]="Document",r[r.CodeBlock=2]="CodeBlock",r[r.FencedCode=3]="FencedCode",r[r.Blockquote=4]="Blockquote",r[r.HorizontalRule=5]="HorizontalRule",r[r.BulletList=6]="BulletList",r[r.OrderedList=7]="OrderedList",r[r.ListItem=8]="ListItem",r[r.ATXHeading1=9]="ATXHeading1",r[r.ATXHeading2=10]="ATXHeading2",r[r.ATXHeading3=11]="ATXHeading3",r[r.ATXHeading4=12]="ATXHeading4",r[r.ATXHeading5=13]="ATXHeading5",r[r.ATXHeading6=14]="ATXHeading6",r[r.SetextHeading1=15]="SetextHeading1",r[r.SetextHeading2=16]="SetextHeading2",r[r.HTMLBlock=17]="HTMLBlock",r[r.LinkReference=18]="LinkReference",r[r.Paragraph=19]="Paragraph",r[r.CommentBlock=20]="CommentBlock",r[r.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",r[r.Escape=22]="Escape",r[r.Entity=23]="Entity",r[r.HardBreak=24]="HardBreak",r[r.Emphasis=25]="Emphasis",r[r.StrongEmphasis=26]="StrongEmphasis",r[r.Link=27]="Link",r[r.Image=28]="Image",r[r.InlineCode=29]="InlineCode",r[r.HTMLTag=30]="HTMLTag",r[r.Comment=31]="Comment",r[r.ProcessingInstruction=32]="ProcessingInstruction",r[r.Autolink=33]="Autolink",r[r.HeaderMark=34]="HeaderMark",r[r.QuoteMark=35]="QuoteMark",r[r.ListMark=36]="ListMark",r[r.LinkMark=37]="LinkMark",r[r.EmphasisMark=38]="EmphasisMark",r[r.CodeMark=39]="CodeMark",r[r.CodeText=40]="CodeText",r[r.CodeInfo=41]="CodeInfo",r[r.LinkTitle=42]="LinkTitle",r[r.LinkLabel=43]="LinkLabel",r[r.URL=44]="URL"})(pe||(pe={}));class tM{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}class rM{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return qi(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let s=t;s<e;s++)n+=this.text.charCodeAt(s)==9?4-n%4:1;return n}findColumn(e){let t=0;for(let n=0;t<this.text.length&&n<e;t++)n+=this.text.charCodeAt(t)==9?4-n%4:1;return t}scrub(){if(!this.baseIndent)return this.text;let e="";for(let t=0;t<this.basePos;t++)e+=" ";return e+this.text.slice(this.basePos)}}function Kf(r,e,t){if(t.pos==t.text.length||r!=e.block&&t.indent>=e.stack[t.depth+1].value+t.baseIndent)return!0;if(t.indent>=t.baseIndent+4)return!1;let n=(r.type==pe.OrderedList?_h:Ah)(t,e,!1);return n>0&&(r.type!=pe.BulletList||Mh(t,e,!1)<0)&&t.text.charCodeAt(t.pos+n-1)==r.value}const g0={[pe.Blockquote](r,e,t){return t.next!=62?!1:(t.markers.push(Ke(pe.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1)),t.moveBase(t.pos+(Ar(t.text.charCodeAt(t.pos+1))?2:1)),r.end=e.lineStart+t.text.length,!0)},[pe.ListItem](r,e,t){return t.indent<t.baseIndent+r.value&&t.next>-1?!1:(t.moveBaseColumn(t.baseIndent+r.value),!0)},[pe.OrderedList]:Kf,[pe.BulletList]:Kf,[pe.Document](){return!0}};function Ar(r){return r==32||r==9||r==10||r==13}function qi(r,e=0){for(;e<r.length&&Ar(r.charCodeAt(e));)e++;return e}function Jf(r,e,t){for(;e>t&&Ar(r.charCodeAt(e-1));)e--;return e}function O0(r){if(r.next!=96&&r.next!=126)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;if(e<r.pos+3)return-1;if(r.next==96){for(let t=e;t<r.text.length;t++)if(r.text.charCodeAt(t)==96)return-1}return e}function v0(r){return r.next!=62?-1:r.text.charCodeAt(r.pos+1)==32?2:1}function Mh(r,e,t){if(r.next!=42&&r.next!=45&&r.next!=95)return-1;let n=1;for(let s=r.pos+1;s<r.text.length;s++){let i=r.text.charCodeAt(s);if(i==r.next)n++;else if(!Ar(i))return-1}return t&&r.next==45&&y0(r)>-1&&r.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf($0.SetextHeading)>-1||n<3?-1:1}function b0(r,e){for(let t=r.stack.length-1;t>=0;t--)if(r.stack[t].type==e)return!0;return!1}function Ah(r,e,t){return(r.next==45||r.next==43||r.next==42)&&(r.pos==r.text.length-1||Ar(r.text.charCodeAt(r.pos+1)))&&(!t||b0(e,pe.BulletList)||r.skipSpace(r.pos+2)<r.text.length)?1:-1}function _h(r,e,t){let n=r.pos,s=r.next;for(;s>=48&&s<=57;){n++;if(n==r.text.length)return-1;s=r.text.charCodeAt(n)}return n==r.pos||n>r.pos+9||s!=46&&s!=41||n<r.text.length-1&&!Ar(r.text.charCodeAt(n+1))||t&&!b0(e,pe.OrderedList)&&(r.skipSpace(n+1)==r.text.length||n>r.pos+1||r.next!=49)?-1:n+1-r.pos}function x0(r){if(r.next!=35)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==35;)e++;if(e<r.text.length&&r.text.charCodeAt(e)!=32)return-1;let t=e-r.pos;return t>6?-1:t}function y0(r){if(r.next!=45&&r.next!=61||r.indent>=r.baseIndent+4)return-1;let e=r.pos+1;for(;e<r.text.length&&r.text.charCodeAt(e)==r.next;)e++;let t=e;for(;e<r.text.length&&Ar(r.text.charCodeAt(e));)e++;return e==r.text.length?t:-1}const yu=/^[ \t]*$/,k0=/-->/,w0=/\?>/,ku=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*<!--/,k0],[/^\s*<\?/,w0],[/^\s*<![A-Z]/,/>/],[/^\s*<!\[CDATA\[/,/\]\]>/],[/^\s*<\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|\/?>|$)/i,yu],[/^\s*(?:<\/[a-z][\w-]*\s*>|<[a-z][\w-]*(\s+[a-z:_][\w-.]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*>)\s*$/i,yu]];function S0(r,e,t){if(r.next!=60)return-1;let n=r.text.slice(r.pos);for(let s=0,i=ku.length-(t?1:0);s<i;s++)if(ku[s][0].test(n))return s;return-1}function em(r,e){let t=r.countIndent(e,r.pos,r.indent),n=r.countIndent(r.skipSpace(e),e,t);return n>=t+5?t+1:n}function Mn(r,e,t){let n=r.length-1;n>=0&&r[n].to==e&&r[n].type==pe.CodeText?r[n].to=t:r.push(Ke(pe.CodeText,e,t))}const ha={LinkReference:void 0,IndentedCode(r,e){let t=e.baseIndent+4;if(e.indent<t)return!1;let n=e.findColumn(t),s=r.lineStart+n,i=r.lineStart+e.text.length,o=[],a=[];for(Mn(o,s,i);r.nextLine()&&e.depth>=r.stack.length;)if(e.pos==e.text.length){Mn(a,r.lineStart-1,r.lineStart);for(let l of e.markers)a.push(l)}else{if(e.indent<t)break;{if(a.length){for(let c of a)c.type==pe.CodeText?Mn(o,c.from,c.to):o.push(c);a=[]}Mn(o,r.lineStart-1,r.lineStart);for(let c of e.markers)o.push(c);i=r.lineStart+e.text.length;let l=r.lineStart+e.findColumn(e.baseIndent+4);l<i&&Mn(o,l,i)}}return a.length&&(a=a.filter(l=>l.type!=pe.CodeText),a.length&&(e.markers=a.concat(e.markers))),r.addNode(r.buffer.writeElements(o,-s).finish(pe.CodeBlock,i-s),s),!0},FencedCode(r,e){let t=O0(e);if(t<0)return!1;let n=r.lineStart+e.pos,s=e.next,i=t-e.pos,o=e.skipSpace(t),a=Jf(e.text,e.text.length,o),l=[Ke(pe.CodeMark,n,n+i)];o<a&&l.push(Ke(pe.CodeInfo,r.lineStart+o,r.lineStart+a));for(let c=!0,u=!0,h=!1;r.nextLine()&&e.depth>=r.stack.length;c=!1){let f=e.pos;if(e.indent-e.baseIndent<4)for(;f<e.text.length&&e.text.charCodeAt(f)==s;)f++;if(f-e.pos>=i&&e.skipSpace(f)==e.text.length){for(let g of e.markers)l.push(g);u&&h&&Mn(l,r.lineStart-1,r.lineStart),l.push(Ke(pe.CodeMark,r.lineStart+e.pos,r.lineStart+f)),r.nextLine();break}else{h=!0,c||(Mn(l,r.lineStart-1,r.lineStart),u=!1);for(let O of e.markers)l.push(O);let g=r.lineStart+e.basePos,p=r.lineStart+e.text.length;g<p&&(Mn(l,g,p),u=!1)}}return r.addNode(r.buffer.writeElements(l,-n).finish(pe.FencedCode,r.prevLineEnd()-n),n),!0},Blockquote(r,e){let t=v0(e);return t<0?!1:(r.startContext(pe.Blockquote,e.pos),r.addNode(pe.QuoteMark,r.lineStart+e.pos,r.lineStart+e.pos+1),e.moveBase(e.pos+t),null)},HorizontalRule(r,e){if(Mh(e,r,!1)<0)return!1;let t=r.lineStart+e.pos;return r.nextLine(),r.addNode(pe.HorizontalRule,t),!0},BulletList(r,e){let t=Ah(e,r,!1);if(t<0)return!1;r.block.type!=pe.BulletList&&r.startContext(pe.BulletList,e.basePos,e.next);let n=em(e,e.pos+1);return r.startContext(pe.ListItem,e.basePos,n-e.baseIndent),r.addNode(pe.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},OrderedList(r,e){let t=_h(e,r,!1);if(t<0)return!1;r.block.type!=pe.OrderedList&&r.startContext(pe.OrderedList,e.basePos,e.text.charCodeAt(e.pos+t-1));let n=em(e,e.pos+t);return r.startContext(pe.ListItem,e.basePos,n-e.baseIndent),r.addNode(pe.ListMark,r.lineStart+e.pos,r.lineStart+e.pos+t),e.moveBaseColumn(n),null},ATXHeading(r,e){let t=x0(e);if(t<0)return!1;let n=e.pos,s=r.lineStart+n,i=Jf(e.text,e.text.length,n),o=i;for(;o>n&&e.text.charCodeAt(o-1)==e.next;)o--;(o==i||o==n||!Ar(e.text.charCodeAt(o-1)))&&(o=e.text.length);let a=r.buffer.write(pe.HeaderMark,0,t).writeElements(r.parser.parseInline(e.text.slice(n+t+1,o),s+t+1),-s);o<e.text.length&&a.write(pe.HeaderMark,o-n,i-n);let l=a.finish(pe.ATXHeading1-1+t,e.text.length-n);return r.nextLine(),r.addNode(l,s),!0},HTMLBlock(r,e){let t=S0(e,r,!1);if(t<0)return!1;let n=r.lineStart+e.pos,s=ku[t][1],i=[],o=s!=yu;for(;!s.test(e.text)&&r.nextLine();){if(e.depth<r.stack.length){o=!1;break}for(let c of e.markers)i.push(c)}o&&r.nextLine();let a=s==k0?pe.CommentBlock:s==w0?pe.ProcessingInstructionBlock:pe.HTMLBlock,l=r.prevLineEnd();return r.addNode(r.buffer.writeElements(i,-n).finish(a,l-n),n),!0},SetextHeading:void 0};class nM{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,n){if(this.stage==-1)return!1;let s=n.content+`
|
|
23
|
-
`+t.scrub(),i=this.advance(s);return i>-1&&i<s.length?this.complete(e,n,i):!1}finish(e,t){return(this.stage==2||this.stage==3)&&qi(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,n){return e.addLeafElement(t,Ke(pe.LinkReference,this.start,this.start+n,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(B0(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ke(pe.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(_0(e,qi(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=qi(e,this.pos),n=0;if(t>this.pos){let s=R0(e,t,this.start);if(s){let i=ac(e,s.to-this.start);i>0&&(this.nextStage(s),n=i)}}return n||(n=ac(e,this.pos)),n>0&&n<e.length?n:-1}else return ac(e,this.pos)}}}function ac(r,e){for(;e<r.length;e++){let t=r.charCodeAt(e);if(t==10)break;if(!Ar(t))return-1}return e}class sM{nextLine(e,t,n){let s=t.depth<e.stack.length?-1:y0(t),i=t.next;if(s<0)return!1;let o=Ke(pe.HeaderMark,e.lineStart+t.pos,e.lineStart+s);return e.nextLine(),e.addLeafElement(n,Ke(i==61?pe.SetextHeading1:pe.SetextHeading2,n.start,e.prevLineEnd(),[...e.parser.parseInline(n.content,n.start),o])),!0}finish(){return!1}}const $0={LinkReference(r,e){return e.content.charCodeAt(0)==91?new nM(e):null},SetextHeading(){return new sM}},iM=[(r,e)=>x0(e)>=0,(r,e)=>O0(e)>=0,(r,e)=>v0(e)>=0,(r,e)=>Ah(e,r,!0)>=0,(r,e)=>_h(e,r,!0)>=0,(r,e)=>Mh(e,r,!0)>=0,(r,e)=>S0(e,r,!0)>=0],oM={text:"",end:0};class aM{constructor(e,t,n,s){this.parser=e,this.input=t,this.ranges=s,this.line=new rM,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=s[s.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=s[0].from,this.block=il.create(pe.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=n.length?new uM(n,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let n=0;;){let s=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;n<e.markers.length&&(!s||e.markers[n].from<s.end);){let i=e.markers[n++];this.addNode(i.type,i.from,i.to)}if(!s)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let n of this.parser.blockParsers)if(n){let s=n(this,e);if(s!=!1){if(s==!0)return null;e.forward();continue e}}break}let t=new tM(this.lineStart+e.pos,e.text.slice(e.pos));for(let n of this.parser.leafBlockParsers)if(n){let s=n(this,t);s&&t.parsers.push(s)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let n of this.parser.endLeafBlock)if(n(this,e,t))break e}for(let n of t.parsers)if(n.nextLine(this,e,t))return null;t.content+=`
|
|
24
|
-
`+e.scrub();for(let n of e.markers)t.marks.push(n)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=Z0(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=oM;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let n=this.absoluteLineStart,s=this.rangeI;for(;this.ranges[s].to<t.end;){s++;let i=this.ranges[s].from,o=this.lineChunkAt(i);t.end=i+o.length,t.text=t.text.slice(0,this.ranges[s-1].to-n)+o,n=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,e.reset(t);e.depth<this.stack.length;e.depth++){let s=this.stack[e.depth],i=this.parser.skipContextMarkup[s.type];if(!i)throw new Error("Unhandled block context "+pe[s.type]);let o=this.line.markers.length;if(!i(s,this,e)){this.line.markers.length>o&&(s.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),n;if(this.input.lineChunks)n=t==`
|
|
25
|
-
`?"":t;else{let s=t.indexOf(`
|
|
26
|
-
`);n=s<0?t:t.slice(0,s)}return e+n.length>this.to?n.slice(0,this.to-e):n}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,n=0){this.block=il.create(e,n,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,n=0){this.startContext(this.parser.getNodeType(e),t,n)}addNode(e,t,n){typeof e=="number"&&(e=new st(this.parser.nodeSet.types[e],ni,ni,(n??this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(Su(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?C0(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let n of e.parsers)if(n.finish(this,e))return;let t=Su(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(pe.Paragraph,e.content.length),e.start)}elt(e,t,n,s){return typeof e=="string"?Ke(this.parser.getNodeType(e),t,n,s):new T0(e,t)}get buffer(){return new P0(this.parser.nodeSet)}}function C0(r,e,t,n,s){let i=r[e].to,o=[],a=[],l=t.from+n;function c(u,h){for(;h?u>=i:u>i;){let f=r[e+1].from-i;n+=f,u+=f,e++,i=r[e].to}}for(let u=t.firstChild;u;u=u.nextSibling){c(u.from+n,!0);let h=u.from+n,f,g=s.get(u.tree);g?f=g:u.to+n>i?(f=C0(r,e,u,n,s),c(u.to+n,!1)):f=u.toTree(),o.push(f),a.push(h-l)}return c(t.to+n,!1),new st(t.type,o,a,t.to+n-l,t.tree?t.tree.propValues:void 0)}class Al extends ch{constructor(e,t,n,s,i,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=n,this.blockNames=s,this.endLeafBlock=i,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let u of e.types)this.nodeTypes[u.name]=u.id}createParse(e,t,n){let s=new aM(this,e,t,n);for(let i of this.wrappers)s=i(s,e,t,n);return s}configure(e){let t=wu(e);if(!t)return this;let{nodeSet:n,skipContextMarkup:s}=this,i=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),u=this.endLeafBlock.slice(),h=this.wrappers;if(Ai(t.defineNodes)){s=Object.assign({},s);let f=n.types.slice(),g;for(let p of t.defineNodes){let{name:O,block:b,composite:x,style:k}=typeof p=="string"?{name:p}:p;if(f.some(P=>P.name==O))continue;x&&(s[f.length]=(P,X,E)=>x(X,E,P.value));let w=f.length,S=x?["Block","BlockContext"]:b?w>=pe.ATXHeading1&&w<=pe.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;f.push(Qt.define({id:w,name:O,props:S&&[[qe.group,S]]})),k&&(g||(g={}),Array.isArray(k)||k instanceof pr?g[O]=k:Object.assign(g,k))}n=new Qo(f),g&&(n=n.extend(ai(g)))}if(Ai(t.props)&&(n=n.extend(...t.props)),Ai(t.remove))for(let f of t.remove){let g=this.blockNames.indexOf(f),p=this.inlineNames.indexOf(f);g>-1&&(i[g]=o[g]=void 0),p>-1&&(l[p]=void 0)}if(Ai(t.parseBlock))for(let f of t.parseBlock){let g=a.indexOf(f.name);if(g>-1)i[g]=f.parse,o[g]=f.leaf;else{let p=f.before?da(a,f.before):f.after?da(a,f.after)+1:a.length-1;i.splice(p,0,f.parse),o.splice(p,0,f.leaf),a.splice(p,0,f.name)}f.endLeaf&&u.push(f.endLeaf)}if(Ai(t.parseInline))for(let f of t.parseInline){let g=c.indexOf(f.name);if(g>-1)l[g]=f.parse;else{let p=f.before?da(c,f.before):f.after?da(c,f.after)+1:c.length-1;l.splice(p,0,f.parse),c.splice(p,0,f.name)}}return t.wrap&&(h=h.concat(t.wrap)),new Al(n,i,o,a,u,s,l,c,h)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let n=new Rh(this,e,t);e:for(let s=t;s<n.end;){let i=n.char(s);for(let o of this.inlineParsers)if(o){let a=o(n,i,s);if(a>=0){s=a;continue e}}s++}return n.resolveMarkers(0)}}function Ai(r){return r!=null&&r.length>0}function wu(r){if(!Array.isArray(r))return r;if(r.length==0)return null;let e=wu(r[0]);if(r.length==1)return e;let t=wu(r.slice(1));if(!t||!e)return e||t;let n=(o,a)=>(o||ni).concat(a||ni),s=e.wrap,i=t.wrap;return{props:n(e.props,t.props),defineNodes:n(e.defineNodes,t.defineNodes),parseBlock:n(e.parseBlock,t.parseBlock),parseInline:n(e.parseInline,t.parseInline),remove:n(e.remove,t.remove),wrap:s?i?(o,a,l,c)=>s(i(o,a,l,c),a,l,c):s:i}}function da(r,e){let t=r.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}let Q0=[Qt.none];for(let r=1,e;e=pe[r];r++)Q0[r]=Qt.define({id:r,name:e,props:r>=pe.Escape?[]:[[qe.group,r in g0?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});const ni=[];class P0{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,n,s=0){return this.content.push(e,t,n,4+s*4),this}writeElements(e,t=0){for(let n of e)n.writeTo(this,t);return this}finish(e,t){return st.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}}let mo=class{constructor(e,t,n,s=ni){this.type=e,this.from=t,this.to=n,this.children=s}writeTo(e,t){let n=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-n)}toTree(e){return new P0(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}};class T0{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return ni}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}}function Ke(r,e,t,n){return new mo(r,e,t,n)}const M0={resolve:"Emphasis",mark:"EmphasisMark"},A0={resolve:"Emphasis",mark:"EmphasisMark"},os={},ol={};class mr{constructor(e,t,n,s){this.type=e,this.from=t,this.to=n,this.side=s}}const tm="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";let po=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{po=new RegExp("[\\p{S}|\\p{P}]","u")}catch{}const lc={Escape(r,e,t){if(e!=92||t==r.end-1)return-1;let n=r.char(t+1);for(let s=0;s<tm.length;s++)if(tm.charCodeAt(s)==n)return r.append(Ke(pe.Escape,t,t+2));return-1},Entity(r,e,t){if(e!=38)return-1;let n=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(r.slice(t+1,t+31));return n?r.append(Ke(pe.Entity,t,t+1+n[0].length)):-1},InlineCode(r,e,t){if(e!=96||t&&r.char(t-1)==96)return-1;let n=t+1;for(;n<r.end&&r.char(n)==96;)n++;let s=n-t,i=0;for(;n<r.end;n++)if(r.char(n)==96){if(i++,i==s&&r.char(n+1)!=96)return r.append(Ke(pe.InlineCode,t,n+1,[Ke(pe.CodeMark,t,t+s),Ke(pe.CodeMark,n+1-s,n+1)]))}else i=0;return-1},HTMLTag(r,e,t){if(e!=60||t==r.end-1)return-1;let n=r.slice(t+1,r.end),s=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(n);if(s)return r.append(Ke(pe.Autolink,t,t+1+s[0].length,[Ke(pe.LinkMark,t,t+1),Ke(pe.URL,t+1,t+s[0].length),Ke(pe.LinkMark,t+s[0].length,t+1+s[0].length)]));let i=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(n);if(i)return r.append(Ke(pe.Comment,t,t+1+i[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return r.append(Ke(pe.ProcessingInstruction,t,t+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(n);return a?r.append(Ke(pe.HTMLTag,t,t+1+a[0].length)):-1},Emphasis(r,e,t){if(e!=95&&e!=42)return-1;let n=t+1;for(;r.char(n)==e;)n++;let s=r.slice(t-1,t),i=r.slice(n,n+1),o=po.test(s),a=po.test(i),l=/\s|^$/.test(s),c=/\s|^$/.test(i),u=!c&&(!a||l||o),h=!l&&(!o||c||a),f=u&&(e==42||!h||o),g=h&&(e==42||!u||a);return r.append(new mr(e==95?M0:A0,t,n,(f?1:0)|(g?2:0)))},HardBreak(r,e,t){if(e==92&&r.char(t+1)==10)return r.append(Ke(pe.HardBreak,t,t+2));if(e==32){let n=t+1;for(;r.char(n)==32;)n++;if(r.char(n)==10&&n>=t+2)return r.append(Ke(pe.HardBreak,t,n+1))}return-1},Link(r,e,t){return e==91?r.append(new mr(os,t,t+1,1)):-1},Image(r,e,t){return e==33&&r.char(t+1)==91?r.append(new mr(ol,t,t+2,1)):-1},LinkEnd(r,e,t){if(e!=93)return-1;for(let n=r.parts.length-1;n>=0;n--){let s=r.parts[n];if(s instanceof mr&&(s.type==os||s.type==ol)){if(!s.side||r.skipSpace(s.to)==t&&!/[(\[]/.test(r.slice(t+1,t+2)))return r.parts[n]=null,-1;let i=r.takeContent(n),o=r.parts[n]=lM(r,i,s.type==os?pe.Link:pe.Image,s.from,t+1);if(s.type==os)for(let a=0;a<n;a++){let l=r.parts[a];l instanceof mr&&l.type==os&&(l.side=0)}return o.to}}return-1}};function lM(r,e,t,n,s){let{text:i}=r,o=r.char(s),a=s;if(e.unshift(Ke(pe.LinkMark,n,n+(t==pe.Image?2:1))),e.push(Ke(pe.LinkMark,s-1,s)),o==40){let l=r.skipSpace(s+1),c=_0(i,l-r.offset,r.offset),u;c&&(l=r.skipSpace(c.to),l!=c.to&&(u=R0(i,l-r.offset,r.offset),u&&(l=r.skipSpace(u.to)))),r.char(l)==41&&(e.push(Ke(pe.LinkMark,s,s+1)),a=l+1,c&&e.push(c),u&&e.push(u),e.push(Ke(pe.LinkMark,l,a)))}else if(o==91){let l=B0(i,s-r.offset,r.offset,!1);l&&(e.push(l),a=l.to)}return Ke(t,n,a,e)}function _0(r,e,t){if(r.charCodeAt(e)==60){for(let s=e+1;s<r.length;s++){let i=r.charCodeAt(s);if(i==62)return Ke(pe.URL,e+t,s+1+t);if(i==60||i==10)return!1}return null}else{let s=0,i=e;for(let o=!1;i<r.length;i++){let a=r.charCodeAt(i);if(Ar(a))break;if(o)o=!1;else if(a==40)s++;else if(a==41){if(!s)break;s--}else a==92&&(o=!0)}return i>e?Ke(pe.URL,e+t,i+t):i==r.length?null:!1}}function R0(r,e,t){let n=r.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let s=n==40?41:n;for(let i=e+1,o=!1;i<r.length;i++){let a=r.charCodeAt(i);if(o)o=!1;else{if(a==s)return Ke(pe.LinkTitle,e+t,i+1+t);a==92&&(o=!0)}}return null}function B0(r,e,t,n){for(let s=!1,i=e+1,o=Math.min(r.length,i+999);i<o;i++){let a=r.charCodeAt(i);if(s)s=!1;else{if(a==93)return n?!1:Ke(pe.LinkLabel,e+t,i+1+t);if(n&&!Ar(a)&&(n=!1),a==91)return!1;a==92&&(s=!0)}}return null}class Rh{constructor(e,t,n){this.parser=e,this.text=t,this.offset=n,this.parts=[]}char(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,s,i){return this.append(new mr(e,t,n,(s?1:0)|(i?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof mr&&(t.type==os||t.type==ol))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n<this.parts.length;n++){let s=this.parts[n];if(!(s instanceof mr&&s.type.resolve&&s.side&2))continue;let i=s.type==M0||s.type==A0,o=s.to-s.from,a,l=n-1;for(;l>=e;l--){let O=this.parts[l];if(O instanceof mr&&O.side&1&&O.type==s.type&&!(i&&(s.side&1||O.side&2)&&(O.to-O.from+o)%3==0&&((O.to-O.from)%3||o%3))){a=O;break}}if(!a)continue;let c=s.type.resolve,u=[],h=a.from,f=s.to;if(i){let O=Math.min(2,a.to-a.from,o);h=a.to-O,f=s.from+O,c=O==1?"Emphasis":"StrongEmphasis"}a.type.mark&&u.push(this.elt(a.type.mark,h,a.to));for(let O=l+1;O<n;O++)this.parts[O]instanceof mo&&u.push(this.parts[O]),this.parts[O]=null;s.type.mark&&u.push(this.elt(s.type.mark,s.from,f));let g=this.elt(c,h,f,u);this.parts[l]=i&&a.from!=h?new mr(a.type,a.from,h,a.side):null,(this.parts[n]=i&&s.to!=f?new mr(s.type,f,s.to,s.side):null)?this.parts.splice(n,0,g):this.parts[n]=g}let t=[];for(let n=e;n<this.parts.length;n++){let s=this.parts[n];s instanceof mo&&t.push(s)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let n=this.parts[t];if(n instanceof mr&&n.type==e&&n.side&1)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}getDelimiterAt(e){let t=this.parts[e];return t instanceof mr?t:null}skipSpace(e){return qi(this.text,e-this.offset)+this.offset}elt(e,t,n,s){return typeof e=="string"?Ke(this.parser.getNodeType(e),t,n,s):new T0(e,t)}}Rh.linkStart=os;Rh.imageStart=ol;function Su(r,e){if(!e.length)return r;if(!r.length)return e;let t=r.slice(),n=0;for(let s of e){for(;n<t.length&&t[n].to<s.to;)n++;if(n<t.length&&t[n].from<s.from){let i=t[n];i instanceof mo&&(t[n]=new mo(i.type,i.from,i.to,Su(i.children,[s])))}else t.splice(n++,0,s)}return t}const cM=[pe.CodeBlock,pe.ListItem,pe.OrderedList,pe.BulletList];let uM=class{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to<=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd<0){let i=this.fragment.to;for(;i>0&&this.input.read(i-1,i)!=`
|
|
27
|
-
`;)i--;this.fragmentEnd=i?i-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let s=e+this.fragment.offset;for(;n.to<=s;)if(!n.parent())return!1;for(;;){if(n.from>=s)return this.fragment.from<=t;if(!n.childAfter(s))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(qe.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,s=this.fragmentEnd-(this.fragment.openEnd?1:0),i=e.absoluteLineStart,o=i,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-n>s){if(t.type.isAnonymous&&t.firstChild())continue;break}let u=Z0(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,u);else{let h=new st(e.parser.nodeSet.types[pe.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(h,t.tree),e.addNode(h,u)}if(t.type.is("Block")&&(cM.indexOf(t.type.id)<0?(o=t.to-n,a=e.block.children.length):(o=l,a=c),l=t.to-n,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-i}};function Z0(r,e){let t=r;for(let n=1;n<e.length;n++){let s=e[n-1].to,i=e[n].from;s<r&&(t-=i-s)}return t}const hM=ai({"Blockquote/...":$.quote,HorizontalRule:$.contentSeparator,"ATXHeading1/... SetextHeading1/...":$.heading1,"ATXHeading2/... SetextHeading2/...":$.heading2,"ATXHeading3/...":$.heading3,"ATXHeading4/...":$.heading4,"ATXHeading5/...":$.heading5,"ATXHeading6/...":$.heading6,"Comment CommentBlock":$.comment,Escape:$.escape,Entity:$.character,"Emphasis/...":$.emphasis,"StrongEmphasis/...":$.strong,"Link/... Image/...":$.link,"OrderedList/... BulletList/...":$.list,"BlockQuote/...":$.quote,"InlineCode CodeText":$.monospace,"URL Autolink":$.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":$.processingInstruction,"CodeInfo LinkLabel":$.labelName,LinkTitle:$.string,Paragraph:$.content}),dM=new Al(new Qo(Q0).extend(hM),Object.keys(ha).map(r=>ha[r]),Object.keys(ha).map(r=>$0[r]),Object.keys(ha),iM,g0,Object.keys(lc).map(r=>lc[r]),Object.keys(lc),[]);function fM(r,e,t){let n=[];for(let s=r.firstChild,i=e;;s=s.nextSibling){let o=s?s.from:t;if(o>i&&n.push({from:i,to:o}),!s)break;i=s.to}return n}function mM(r){let{codeParser:e,htmlParser:t}=r;return{wrap:Fg((s,i)=>{let o=s.type.id;if(e&&(o==pe.CodeBlock||o==pe.FencedCode)){let a="";if(o==pe.FencedCode){let c=s.node.getChild(pe.CodeInfo);c&&(a=i.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==pe.CodeText,bracketed:o==pe.FencedCode}}else if(t&&(o==pe.HTMLBlock||o==pe.HTMLTag||o==pe.CommentBlock))return{parser:t,overlay:fM(s.node,s.from,s.to)};return null})}}const pM={resolve:"Strikethrough",mark:"StrikethroughMark"},gM={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":$.strikethrough}},{name:"StrikethroughMark",style:$.processingInstruction}],parseInline:[{name:"Strikethrough",parse(r,e,t){if(e!=126||r.char(t+1)!=126||r.char(t+2)==126)return-1;let n=r.slice(t-1,t),s=r.slice(t+2,t+3),i=/\s|^$/.test(n),o=/\s|^$/.test(s),a=po.test(n),l=po.test(s);return r.addDelimiter(pM,t,t+2,!o&&(!l||i||a),!i&&(!a||o||l))},after:"Emphasis"}]};function ji(r,e,t=0,n,s=0){let i=0,o=!0,a=-1,l=-1,c=!1,u=()=>{n.push(r.elt("TableCell",s+a,s+l,r.parser.parseInline(e.slice(a,l),s+a)))};for(let h=t;h<e.length;h++){let f=e.charCodeAt(h);f==124&&!c?((!o||a>-1)&&i++,o=!1,n&&(a>-1&&u(),n.push(r.elt("TableDelimiter",h+s,h+s+1))),a=l=-1):(c||f!=32&&f!=9)&&(a<0&&(a=h),l=h+1),c=!c&&f==92}return a>-1&&(i++,n&&u()),i}function rm(r,e){for(let t=e;t<r.length;t++){let n=r.charCodeAt(t);if(n==124)return!0;n==92&&t++}return!1}const E0=/^\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;class nm{constructor(){this.rows=null}nextLine(e,t,n){if(this.rows==null){this.rows=!1;let s;if((t.next==45||t.next==58||t.next==124)&&E0.test(s=t.text.slice(t.pos))){let i=[];ji(e,n.content,0,i,n.start)==ji(e,s,t.pos)&&(this.rows=[e.elt("TableHeader",n.start,n.start+n.content.length,i),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let s=[];ji(e,t.text,t.pos,s,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,s))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}}const OM={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":$.heading}},"TableRow",{name:"TableCell",style:$.content},{name:"TableDelimiter",style:$.processingInstruction}],parseBlock:[{name:"Table",leaf(r,e){return rm(e.content,0)?new nm:null},endLeaf(r,e,t){if(t.parsers.some(s=>s instanceof nm)||!rm(e.text,e.basePos))return!1;let n=r.peekLine();return E0.test(n)&&ji(r,e.text,e.basePos)==ji(r,n,e.basePos)},before:"SetextHeading"}]};class vM{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}}const bM={defineNodes:[{name:"Task",block:!0,style:$.list},{name:"TaskMarker",style:$.atom}],parseBlock:[{name:"TaskList",leaf(r,e){return/^\[[ xX]\][ \t]/.test(e.content)&&r.parentType().name=="ListItem"?new vM:null},after:"SetextHeading"}]},sm=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,im=/[\w-]+(\.[\w-]+)+(\/[^\s<]*)?/gy,xM=/[\w-]+\.[\w-]+($|\/)/,om=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,am=/\/[a-zA-Z\d@.]+/gy;function lm(r,e,t,n){let s=0;for(let i=e;i<t;i++)r[i]==n&&s++;return s}function yM(r,e){im.lastIndex=e;let t=im.exec(r);if(!t||xM.exec(t[0])[0].indexOf("_")>-1)return-1;let n=e+t[0].length;for(;;){let s=r[n-1],i;if(/[?!.,:*_~]/.test(s)||s==")"&&lm(r,e,n,")")>lm(r,e,n,"("))n--;else if(s==";"&&(i=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(r.slice(e,n))))n=e+i.index;else break}return n}function cm(r,e){om.lastIndex=e;let t=om.exec(r);if(!t)return-1;let n=t[0][t[0].length-1];return n=="_"||n=="-"?-1:e+t[0].length-(n=="."?1:0)}const kM={parseInline:[{name:"Autolink",parse(r,e,t){let n=t-r.offset;if(n&&/\w/.test(r.text[n-1]))return-1;sm.lastIndex=n;let s=sm.exec(r.text),i=-1;if(!s)return-1;if(s[1]||s[2]){if(i=yM(r.text,n+s[0].length),i>-1&&r.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(r.text.slice(n,i));i=n+o[0].length}}else s[3]?i=cm(r.text,n):(i=cm(r.text,n+s[0].length),i>-1&&s[0]=="xmpp:"&&(am.lastIndex=i,s=am.exec(r.text),s&&(i=s.index+s[0].length)));return i<0?-1:(r.addElement(r.elt("URL",t,i+r.offset)),i+r.offset)}}]},wM=[OM,bM,gM,kM];function D0(r,e,t){return(n,s,i)=>{if(s!=r||n.char(i+1)==r)return-1;let o=[n.elt(t,i,i+1)];for(let a=i+1;a<n.end;a++){let l=n.char(a);if(l==r)return n.addElement(n.elt(e,i,a+1,o.concat(n.elt(t,a,a+1))));if(l==92&&o.push(n.elt("Escape",a,a+++2)),Ar(l))break}return-1}}const SM={defineNodes:[{name:"Superscript",style:$.special($.content)},{name:"SuperscriptMark",style:$.processingInstruction}],parseInline:[{name:"Superscript",parse:D0(94,"Superscript","SuperscriptMark")}]},$M={defineNodes:[{name:"Subscript",style:$.special($.content)},{name:"SubscriptMark",style:$.processingInstruction}],parseInline:[{name:"Subscript",parse:D0(126,"Subscript","SubscriptMark")}]},CM={defineNodes:[{name:"Emoji",style:$.character}],parseInline:[{name:"Emoji",parse(r,e,t){let n;return e!=58||!(n=/^[a-zA-Z_0-9]+:/.exec(r.slice(t+1,r.end)))?-1:r.addElement(r.elt("Emoji",t,t+1+n[0].length))}}]};var um={};class al{constructor(e,t,n,s,i,o,a,l,c,u=0,h){this.p=e,this.stack=t,this.state=n,this.reducePos=s,this.pos=i,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=u,this.parent=h}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,n=0){let s=e.parser.context;return new al(e,[],t,n,n,0,[],0,s?new hm(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let n=e>>19,s=e&65535,{parser:i}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=i.dynamicPrecedence(s);if(a&&(this.score+=a),n==0){this.pushState(i.getGoto(this.state,s,!0),this.reducePos),s<i.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(s,this.reducePos);return}let l=this.stack.length-(n-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from,u=this.reducePos-c;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=u));let h=l?this.stack[l-1]:0,f=this.bufferBase+this.buffer.length-h;if(s<i.minRepeatTerm||e&131072){let g=i.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,c,g,f+4,!0)}if(e&262144)this.state=this.stack[l];else{let g=this.stack[l-3];this.state=i.getGoto(g,s,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(s,c)}storeNode(e,t,n,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this,a=this.buffer.length;if(a==0&&o.parent&&(a=o.bufferBase-o.parent.bufferBase,o=o.parent),a>0&&o.buffer[a-4]==0&&o.buffer[a-1]>-1){if(t==n)return;if(o.buffer[a-2]>=t){o.buffer[a-2]=n;return}}}if(!i||this.pos==n)this.buffer.push(e,t,n,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>n;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>n;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=n,this.buffer[o+3]=s}}shift(e,t,n,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:o}=this.p;this.pos=s;let a=o.stateFlag(i,1);!a&&(s>n||t<=o.maxNode)&&(this.reducePos=s),this.pushState(i,a?n:Math.min(n,this.reducePos)),this.shiftContext(t,n),t<=o.maxNode&&this.buffer.push(t,n,s,4)}else this.pos=s,this.shiftContext(t,n),t<=this.p.parser.maxNode&&this.buffer.push(t,n,s,4)}apply(e,t,n,s){e&65536?this.reduce(e):this.shift(e,t,n,s)}useNode(e,t){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(n,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let n=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new al(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,n?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new QM(this);;){let n=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(n==0)return!1;if((n&65536)==0)return!0;t.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let s=[];for(let i=0,o;i<t.length;i+=2)(o=t[i+1])!=this.state&&this.p.parser.hasAction(o,e)&&s.push(t[i],o);if(this.stack.length<120)for(let i=0;s.length<8&&i<t.length;i+=2){let o=t[i+1];s.some((a,l)=>l&1&&a==o)||s.push(t[i],o)}t=s}let n=[];for(let s=0;s<t.length&&n.length<4;s+=2){let i=t[s+1];if(i==this.state)continue;let o=this.split();o.pushState(i,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(t[s],this.pos),o.reducePos=this.pos,o.score-=200,n.push(o)}return n}forceReduce(){let{parser:e}=this.p,t=e.stateSlot(this.state,5);if((t&65536)==0)return!1;if(!e.validAction(this.state,t)){let n=t>>19,s=t&65535,i=this.stack.length-n*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],n=(s,i)=>{if(!t.includes(s))return t.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let a=(o>>19)-i;if(a>1){let l=o&65535,c=this.stack.length-a*3;if(c>=0&&e.getGoto(this.stack[c],l,!1)>=0)return a<<19|65536|l}}else{let a=n(o,i+1);if(a!=null)return a}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t<this.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let t=new hm(this.curContext.tracker,e);t.hash!=this.curContext.hash&&this.emitContext(),this.curContext=t}}setLookAhead(e){return e<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=e,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class hm{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}}class QM{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}}class ll{constructor(e,t,n){this.stack=e,this.pos=t,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new ll(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new ll(this.stack,this.pos,this.index)}}function Li(r,e=Uint16Array){if(typeof r!="string")return r;let t=null;for(let n=0,s=0;n<r.length;){let i=0;for(;;){let o=r.charCodeAt(n++),a=!1;if(o==126){i=65535;break}o>=92&&o--,o>=34&&o--;let l=o-32;if(l>=46&&(l-=46,a=!0),i+=l,a)break;i*=46}t?t[s++]=i:t=new e(i)}return t}class Qa{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const dm=new Qa;class PM{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=dm,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let n=this.range,s=this.rangeIndex,i=this.pos+e;for(;i<n.from;){if(!s)return null;let o=this.ranges[--s];i-=n.from-o.to,n=o}for(;t<0?i>n.to:i>=n.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];i+=o.from-n.to,n=o}return i}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,n,s;if(t>=0&&t<this.chunk.length)n=this.pos+e,s=this.chunk.charCodeAt(t);else{let i=this.resolveOffset(e,1);if(i==null)return-1;if(n=i,n>=this.chunk2Pos&&n<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(n-this.chunk2Pos);else{let o=this.rangeIndex,a=this.range;for(;a.to<=n;)a=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=n),n+this.chunk2.length>a.to&&(this.chunk2=this.chunk2.slice(0,a.to-n)),s=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),s}acceptToken(e,t=0){let n=t?this.resolveOffset(t,-1):this.pos;if(n==null||n<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=n}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:t}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),t=this.pos+e.length;this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=dm,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let n="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(n+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return n}}class Ys{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:n}=t.p;L0(this.data,e,t,this.id,n.data,n.tokenPrecTable)}}Ys.prototype.contextual=Ys.prototype.fallback=Ys.prototype.extend=!1;class cl{constructor(e,t,n){this.precTable=t,this.elseToken=n,this.data=typeof e=="string"?Li(e):e}token(e,t){let n=e.pos,s=0;for(;;){let i=e.next<0,o=e.resolveOffset(1,1);if(L0(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(i||s++,o==null)break;e.reset(o,e.token)}s&&(e.reset(n,e.token),e.acceptToken(this.elseToken,s))}}cl.prototype.contextual=Ys.prototype.fallback=Ys.prototype.extend=!1;class br{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}}function L0(r,e,t,n,s,i){let o=0,a=1<<n,{dialect:l}=t.p.parser;e:for(;(a&r[o])!=0;){let c=r[o+1];for(let g=o+3;g<c;g+=2)if((r[g+1]&a)>0){let p=r[g];if(l.allows(p)&&(e.token.value==-1||e.token.value==p||TM(p,e.token.value,s,i))){e.acceptToken(p);break}}let u=e.next,h=0,f=r[o+2];if(e.next<0&&f>h&&r[c+f*3-3]==65535){o=r[c+f*3-1];continue e}for(;h<f;){let g=h+f>>1,p=c+g+(g<<1),O=r[p],b=r[p+1]||65536;if(u<O)f=g;else if(u>=b)h=g+1;else{o=r[p+2],e.advance();continue e}}break}}function fm(r,e,t){for(let n=e,s;(s=r[n])!=65535;n++)if(s==t)return n-e;return-1}function TM(r,e,t,n){let s=fm(t,n,e);return s<0||fm(t,n,r)<s}const ur=typeof process<"u"&&um&&/\bparse\b/.test(um.LOG);let cc=null;function mm(r,e,t){let n=r.cursor(it.IncludeAnonymous);for(n.moveTo(e);;)if(!(t<0?n.childBefore(e):n.childAfter(e)))for(;;){if((t<0?n.to<e:n.from>e)&&!n.type.isError)return t<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(r.length,Math.max(n.from+1,e+25));if(t<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return t<0?0:r.length}}class MM{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?mm(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?mm(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let t=this.trees.length-1;if(t<0)return this.nextFragment(),null;let n=this.trees[t],s=this.index[t];if(s==n.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let i=n.children[s],o=this.start[t]+n.positions[s];if(o>e)return this.nextStart=o,null;if(i instanceof st){if(o==e){if(o<this.safeFrom)return null;let a=o+i.length;if(a<=this.safeTo){let l=i.prop(qe.lookAhead);if(!l||a+l<this.fragment.to)return i}}this.index[t]++,o+i.length>=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+i.length}}}class AM{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new Qa)}getActions(e){let t=0,n=null,{parser:s}=e.p,{tokenizers:i}=s,o=s.stateSlot(e.state,3),a=e.curContext?e.curContext.hash:0,l=0;for(let c=0;c<i.length;c++){if((1<<c&o)==0)continue;let u=i[c],h=this.tokens[c];if(!(n&&!u.fallback)&&((u.contextual||h.start!=e.pos||h.mask!=o||h.context!=a)&&(this.updateCachedToken(h,u,e),h.mask=o,h.context=a),h.lookAhead>h.end+25&&(l=Math.max(h.lookAhead,l)),h.value!=0)){let f=t;if(h.extended>-1&&(t=this.addActions(e,h.extended,h.end,t)),t=this.addActions(e,h.value,h.end,t),!u.extend&&(n=h,t>f))break}}for(;this.actions.length>t;)this.actions.pop();return l&&e.setLookAhead(l),!n&&e.pos==this.stream.end&&(n=new Qa,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,t=this.addActions(e,n.value,n.end,t)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new Qa,{pos:n,p:s}=e;return t.start=n,t.end=Math.min(n+1,s.stream.end),t.value=n==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,n){let s=this.stream.clipPos(n.pos);if(t.token(this.stream.reset(s,e),n),e.value>-1){let{parser:i}=n.p;for(let o=0;o<i.specialized.length;o++)if(i.specialized[o]==e.value){let a=i.specializers[o](this.stream.read(e.start,e.end),n);if(a>=0&&n.p.parser.dialect.allows(a>>1)){(a&1)==0?e.value=a>>1:e.extended=a>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,n,s){for(let i=0;i<s;i+=3)if(this.actions[i]==e)return s;return this.actions[s++]=e,this.actions[s++]=t,this.actions[s++]=n,s}addActions(e,t,n,s){let{state:i}=e,{parser:o}=e.p,{data:a}=o;for(let l=0;l<2;l++)for(let c=o.stateSlot(i,l?2:1);;c+=3){if(a[c]==65535)if(a[c+1]==1)c=fn(a,c+2);else{s==0&&a[c+1]==2&&(s=this.putAction(fn(a,c+2),t,n,s));break}a[c]==t&&(s=this.putAction(fn(a,c+1),t,n,s))}return s}}class _M{constructor(e,t,n,s){this.parser=e,this.input=t,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new PM(t,s),this.tokens=new AM(e,this.stream),this.topTerm=e.top[1];let{from:i}=s[0];this.stacks=[al.start(this,e.top[0],i)],this.fragments=n.length&&this.stream.end-i>e.bufferLength*4?new MM(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,n=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let a=e[o];for(;;){if(this.tokens.mainToken=null,a.pos>t)n.push(a);else{if(this.advanceStack(a,n,e))continue;{s||(s=[],i=[]),s.push(a);let l=this.tokens.getMainToken(a);i.push(l.value,l.end)}}break}}if(!n.length){let o=s&&BM(s);if(o)return ur&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw ur&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,n);if(o)return ur&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((a,l)=>l.score-a.score);n.length>o;)n.pop();n.some(a=>a.reducePos>t)&&this.recovering--}else if(n.length>1){e:for(let o=0;o<n.length-1;o++){let a=n[o];for(let l=o+1;l<n.length;l++){let c=n[l];if(a.sameState(c)||a.buffer.length>500&&c.buffer.length>500)if((a.score-c.score||a.buffer.length-c.buffer.length)>0)n.splice(l--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,a)=>a.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o<n.length;o++)n[o].pos<this.minStackPos&&(this.minStackPos=n[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,t,n){let s=e.pos,{parser:i}=this,o=ur?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let c=e.curContext&&e.curContext.tracker.strict,u=c?e.curContext.hash:0;for(let h=this.fragments.nodeAt(s);h;){let f=this.parser.nodeSet.types[h.type.id]==h.type?i.getGoto(e.state,h.type.id):-1;if(f>-1&&h.length&&(!c||(h.prop(qe.contextHash)||0)==u))return e.useNode(h,f),ur&&console.log(o+this.stackID(e)+` (via reuse of ${i.getName(h.type.id)})`),!0;if(!(h instanceof st)||h.children.length==0||h.positions[0]>0)break;let g=h.children[0];if(g instanceof st&&h.positions[0]==0)h=g;else break}}let a=i.stateSlot(e.state,4);if(a>0)return e.reduce(a),ur&&console.log(o+this.stackID(e)+` (via always-reduce ${i.getName(a&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let l=this.tokens.getActions(e);for(let c=0;c<l.length;){let u=l[c++],h=l[c++],f=l[c++],g=c==l.length||!n,p=g?e:e.split(),O=this.tokens.mainToken;if(p.apply(u,h,O?O.start:p.pos,f),ur&&console.log(o+this.stackID(p)+` (via ${(u&65536)==0?"shift":`reduce of ${i.getName(u&65535)}`} for ${i.getName(h)} @ ${s}${p==e?"":", split"})`),g)return!0;p.pos>s?t.push(p):n.push(p)}return!1}advanceFully(e,t){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return pm(e,t),!0}}runRecovery(e,t,n){let s=null,i=!1;for(let o=0;o<e.length;o++){let a=e[o],l=t[o<<1],c=t[(o<<1)+1],u=ur?this.stackID(a)+" -> ":"";if(a.deadEnd&&(i||(i=!0,a.restart(),ur&&console.log(u+this.stackID(a)+" (restarted)"),this.advanceFully(a,n))))continue;let h=a.split(),f=u;for(let g=0;g<10&&h.forceReduce()&&(ur&&console.log(f+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,n));g++)ur&&(f=this.stackID(h)+" -> ");for(let g of a.recoverByInsert(l))ur&&console.log(u+this.stackID(g)+" (via recover-insert)"),this.advanceFully(g,n);this.stream.end>a.pos?(c==a.pos&&(c++,l=0),a.recoverByDelete(l,c),ur&&console.log(u+this.stackID(a)+` (via recover-delete ${this.parser.getName(l)})`),pm(a,n)):(!s||s.score<h.score)&&(s=h)}return s}stackToTree(e){return e.close(),st.build({buffer:ll.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(cc||(cc=new WeakMap)).get(e);return t||cc.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}}function pm(r,e){for(let t=0;t<e.length;t++){let n=e[t];if(n.pos==r.pos&&n.sameState(r)){e[t].score<r.score&&(e[t]=r);return}}e.push(r)}class RM{constructor(e,t,n){this.source=e,this.flags=t,this.disabled=n}allows(e){return!this.disabled||this.disabled[e]==0}}const uc=r=>r;class X0{constructor(e){this.start=e.start,this.shift=e.shift||uc,this.reduce=e.reduce||uc,this.reuse=e.reuse||uc,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class si extends ch{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let a=0;a<e.repeatNodeCount;a++)t.push("");let n=Object.keys(e.topRules).map(a=>e.topRules[a][1]),s=[];for(let a=0;a<t.length;a++)s.push([]);function i(a,l,c){s[a].push([l,l.deserialize(String(c))])}if(e.nodeProps)for(let a of e.nodeProps){let l=a[0];typeof l=="string"&&(l=qe[l]);for(let c=1;c<a.length;){let u=a[c++];if(u>=0)i(u,l,a[c++]);else{let h=a[c+-u];for(let f=-u;f>0;f--)i(a[c++],l,h);c++}}}this.nodeSet=new Qo(t.map((a,l)=>Qt.define({name:l>=this.minRepeatTerm?void 0:a,id:l,props:s[l],top:n.indexOf(l)>-1,error:l==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(l)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Ng;let o=Li(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let a=0;a<this.specializerSpecs.length;a++)this.specialized[a]=this.specializerSpecs[a].term;this.specializers=this.specializerSpecs.map(gm),this.states=Li(e.states,Uint32Array),this.data=Li(e.stateData),this.goto=Li(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(a=>typeof a=="number"?new Ys(o,a):a),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,n){let s=new _M(this,e,t,n);for(let i of this.wrappers)s=i(s,e,t,n);return s}getGoto(e,t,n=!1){let s=this.goto;if(t>=s[0])return-1;for(let i=s[t+1];;){let o=s[i++],a=o&1,l=s[i++];if(a&&n)return l;for(let c=i+(o>>1);i<c;i++)if(s[i]==e)return l;if(a)return-1}}hasAction(e,t){let n=this.data;for(let s=0;s<2;s++)for(let i=this.stateSlot(e,s?2:1),o;;i+=3){if((o=n[i])==65535)if(n[i+1]==1)o=n[i=fn(n,i+2)];else{if(n[i+1]==2)return fn(n,i+2);break}if(o==t||o==0)return fn(n,i+1)}return 0}stateSlot(e,t){return this.states[e*6+t]}stateFlag(e,t){return(this.stateSlot(e,0)&t)>0}validAction(e,t){return!!this.allActions(e,n=>n==t?!0:null)}allActions(e,t){let n=this.stateSlot(e,4),s=n?t(n):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=fn(this.data,i+2);else break;s=t(fn(this.data,i+1))}return s}nextStates(e){let t=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=fn(this.data,n+2);else break;if((this.data[n+2]&1)==0){let s=this.data[n+1];t.some((i,o)=>o&1&&i==s)||t.push(this.data[n],s)}}return t}configure(e){let t=Object.assign(Object.create(si.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=n}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(n=>{let s=e.tokenizers.find(i=>i.from==n);return s?s.to:n})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((n,s)=>{let i=e.specializers.find(a=>a.from==n.external);if(!i)return n;let o=Object.assign(Object.assign({},n),{external:i.to});return t.specializers[s]=gm(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),n=t.map(()=>!1);if(e)for(let i of e.split(" ")){let o=t.indexOf(i);o>=0&&(n[o]=!0)}let s=null;for(let i=0;i<t.length;i++)if(!n[i])for(let o=this.dialects[t[i]],a;(a=this.data[o++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[a]=1;return new RM(e,n,s)}static deserialize(e){return new si(e)}}function fn(r,e){return r[e]|r[e+1]<<16}function BM(r){let e=null;for(let t of r){let n=t.p.stoppedAt;(t.pos==t.p.stream.end||n!=null&&t.pos>n)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.score<t.score)&&(e=t)}return e}function gm(r){if(r.external){let e=r.extend?1:0;return(t,n)=>r.external(t,n)<<1|e}return r.get}const ZM=55,EM=1,DM=56,LM=2,XM=57,IM=3,Om=4,VM=5,Bh=6,I0=7,V0=8,z0=9,N0=10,zM=11,NM=12,WM=13,hc=58,qM=14,jM=15,vm=59,W0=21,YM=23,q0=24,FM=25,$u=27,j0=28,UM=29,GM=32,HM=35,KM=37,JM=38,e4=0,t4=1,r4={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},n4={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},bm={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function s4(r){return r==45||r==46||r==58||r>=65&&r<=90||r==95||r>=97&&r<=122||r>=161}let xm=null,ym=null,km=0;function Cu(r,e){let t=r.pos+e;if(km==t&&ym==r)return xm;let n=r.peek(e),s="";for(;s4(n);)s+=String.fromCharCode(n),n=r.peek(++e);return ym=r,km=t,xm=s?s.toLowerCase():n==i4||n==o4?void 0:null}const Y0=60,ul=62,Zh=47,i4=63,o4=33,a4=45;function wm(r,e){this.name=r,this.parent=e}const l4=[Bh,N0,I0,V0,z0],c4=new X0({start:null,shift(r,e,t,n){return l4.indexOf(e)>-1?new wm(Cu(n,1)||"",r):r},reduce(r,e){return e==W0&&r?r.parent:r},reuse(r,e,t,n){let s=e.type.id;return s==Bh||s==KM?new wm(Cu(n,1)||"",r):r},strict:!1}),u4=new br((r,e)=>{if(r.next!=Y0){r.next<0&&e.context&&r.acceptToken(hc);return}r.advance();let t=r.next==Zh;t&&r.advance();let n=Cu(r,0);if(n===void 0)return;if(!n)return r.acceptToken(t?jM:qM);let s=e.context?e.context.name:null;if(t){if(n==s)return r.acceptToken(zM);if(s&&n4[s])return r.acceptToken(hc,-2);if(e.dialectEnabled(e4))return r.acceptToken(NM);for(let i=e.context;i;i=i.parent)if(i.name==n)return;r.acceptToken(WM)}else{if(n=="script")return r.acceptToken(I0);if(n=="style")return r.acceptToken(V0);if(n=="textarea")return r.acceptToken(z0);if(r4.hasOwnProperty(n))return r.acceptToken(N0);s&&bm[s]&&bm[s][n]?r.acceptToken(hc,-1):r.acceptToken(Bh)}},{contextual:!0}),h4=new br(r=>{for(let e=0,t=0;;t++){if(r.next<0){t&&r.acceptToken(vm);break}if(r.next==a4)e++;else if(r.next==ul&&e>=2){t>=3&&r.acceptToken(vm,-2);break}else e=0;r.advance()}});function d4(r){for(;r;r=r.parent)if(r.name=="svg"||r.name=="math")return!0;return!1}const f4=new br((r,e)=>{if(r.next==Zh&&r.peek(1)==ul){let t=e.dialectEnabled(t4)||d4(e.context);r.acceptToken(t?VM:Om,2)}else r.next==ul&&r.acceptToken(Om,1)});function Eh(r,e,t){let n=2+r.length;return new br(s=>{for(let i=0,o=0,a=0;;a++){if(s.next<0){a&&s.acceptToken(e);break}if(i==0&&s.next==Y0||i==1&&s.next==Zh||i>=2&&i<n&&s.next==r.charCodeAt(i-2))i++,o++;else if(i==n&&s.next==ul){a>o?s.acceptToken(e,-o):s.acceptToken(t,-(o-2));break}else if((s.next==10||s.next==13)&&a){s.acceptToken(e,1);break}else i=o=0;s.advance()}})}const m4=Eh("script",ZM,EM),p4=Eh("style",DM,LM),g4=Eh("textarea",XM,IM),O4=ai({"Text RawText IncompleteTag IncompleteCloseTag":$.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":$.angleBracket,TagName:$.tagName,"MismatchedCloseTag/TagName":[$.tagName,$.invalid],AttributeName:$.attributeName,"AttributeValue UnquotedAttributeValue":$.attributeValue,Is:$.definitionOperator,"EntityReference CharacterReference":$.character,Comment:$.blockComment,ProcessingInst:$.processingInstruction,DoctypeDecl:$.documentMeta}),v4=si.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:c4,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[O4],skippedNodes:[0],repeatNodeCount:9,tokenData:"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X",tokenizers:[m4,p4,g4,f4,u4,h4,0,1,2,3,4,5],topRules:{Document:[0,16]},dialects:{noMatch:0,selfClosing:515},tokenPrec:517});function F0(r,e){let t=Object.create(null);for(let n of r.getChildren(q0)){let s=n.getChild(FM),i=n.getChild($u)||n.getChild(j0);s&&(t[e.read(s.from,s.to)]=i?i.type.id==$u?e.read(i.from+1,i.to-1):e.read(i.from,i.to):"")}return t}function Sm(r,e){let t=r.getChild(YM);return t?e.read(t.from,t.to):" "}function dc(r,e,t){let n;for(let s of t)if(!s.attrs||s.attrs(n||(n=F0(r.node.parent.firstChild,e))))return{parser:s.parser,bracketed:!0};return null}function U0(r=[],e=[]){let t=[],n=[],s=[],i=[];for(let a of r)(a.tag=="script"?t:a.tag=="style"?n:a.tag=="textarea"?s:i).push(a);let o=e.length?Object.create(null):null;for(let a of e)(o[a.name]||(o[a.name]=[])).push(a);return Fg((a,l)=>{let c=a.type.id;if(c==UM)return dc(a,l,t);if(c==GM)return dc(a,l,n);if(c==HM)return dc(a,l,s);if(c==W0&&i.length){let u=a.node,h=u.firstChild,f=h&&Sm(h,l),g;if(f){for(let p of i)if(p.tag==f&&(!p.attrs||p.attrs(g||(g=F0(h,l))))){let O=u.lastChild,b=O.type.id==JM?O.from:u.to;if(b>h.to)return{parser:p.parser,overlay:[{from:h.to,to:b}]}}}}if(o&&c==q0){let u=a.node,h;if(h=u.firstChild){let f=o[l.read(h.from,h.to)];if(f)for(let g of f){if(g.tagName&&g.tagName!=Sm(u.parent,l))continue;let p=u.lastChild;if(p.type.id==$u){let O=p.from+1,b=p.lastChild,x=p.to-(b&&b.isError?0:1);if(x>O)return{parser:g.parser,overlay:[{from:O,to:x}],bracketed:!0}}else if(p.type.id==j0)return{parser:g.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}const b4=122,$m=1,x4=123,y4=124,G0=2,k4=125,w4=3,S4=4,H0=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],$4=58,C4=40,K0=95,Q4=91,Pa=45,P4=46,T4=35,M4=37,A4=38,_4=92,R4=10,B4=42;function go(r){return r>=65&&r<=90||r>=97&&r<=122||r>=161}function Dh(r){return r>=48&&r<=57}function Cm(r){return Dh(r)||r>=97&&r<=102||r>=65&&r<=70}const J0=(r,e,t)=>(n,s)=>{for(let i=!1,o=0,a=0;;a++){let{next:l}=n;if(go(l)||l==Pa||l==K0||i&&Dh(l))!i&&(l!=Pa||a>0)&&(i=!0),o===a&&l==Pa&&o++,n.advance();else if(l==_4&&n.peek(1)!=R4){if(n.advance(),Cm(n.next)){do n.advance();while(Cm(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();i=!0}else{i&&n.acceptToken(o==2&&s.canShift(G0)?e:l==C4?t:r);break}}},Z4=new br(J0(x4,G0,y4)),E4=new br(J0(k4,w4,S4)),D4=new br(r=>{if(H0.includes(r.peek(-1))){let{next:e}=r;(go(e)||e==K0||e==T4||e==P4||e==B4||e==Q4||e==$4&&go(r.peek(1))||e==Pa||e==A4)&&r.acceptToken(b4)}}),L4=new br(r=>{if(!H0.includes(r.peek(-1))){let{next:e}=r;if(e==M4&&(r.advance(),r.acceptToken($m)),go(e)){do r.advance();while(go(r.next)||Dh(r.next));r.acceptToken($m)}}}),X4=ai({"AtKeyword import charset namespace keyframes media supports":$.definitionKeyword,"from to selector":$.keyword,NamespaceName:$.namespace,KeyframeName:$.labelName,KeyframeRangeName:$.operatorKeyword,TagName:$.tagName,ClassName:$.className,PseudoClassName:$.constant($.className),IdName:$.labelName,"FeatureName PropertyName":$.propertyName,AttributeName:$.attributeName,NumberLiteral:$.number,KeywordQuery:$.keyword,UnaryQueryOp:$.operatorKeyword,"CallTag ValueName":$.atom,VariableName:$.variableName,Callee:$.operatorKeyword,Unit:$.unit,"UniversalSelector NestingSelector":$.definitionOperator,"MatchOp CompareOp":$.compareOperator,"ChildOp SiblingOp, LogicOp":$.logicOperator,BinOp:$.arithmeticOperator,Important:$.modifier,Comment:$.blockComment,ColorLiteral:$.color,"ParenthesizedContent StringLiteral":$.string,":":$.punctuation,"PseudoOp #":$.derefOperator,"; ,":$.separator,"( )":$.paren,"[ ]":$.squareBracket,"{ }":$.brace}),I4={__proto__:null,lang:38,"nth-child":38,"nth-last-child":38,"nth-of-type":38,"nth-last-of-type":38,dir:38,"host-context":38,if:84,url:124,"url-prefix":124,domain:124,regexp:124},V4={__proto__:null,or:98,and:98,not:106,only:106,layer:170},z4={__proto__:null,selector:112,layer:166},N4={__proto__:null,"@import":162,"@media":174,"@charset":178,"@namespace":182,"@keyframes":188,"@supports":200,"@scope":204},W4={__proto__:null,to:207},q4=si.deserialize({version:14,states:"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mO<rQhO'#EQOOQW'#EQ'#EQO=WQ`O1G0UO1[QhO1G0UOOQ[,59o,59oO'tQhO'#DXOOQ[,59q,59qO=]Q#tO,5:VOOQS1G0[1G0[OOQS1G0^1G0^OOQS1G0`1G0`O=hQ`O1G0`O=mQdO'#E`OOQS1G0c1G0cOOQS1G0i1G0iO=xQaO,5:RO-`Q`O1G0kOOQS1G0k1G0kO-eQ`O1G0kO>PQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<<IOOElQdO'#EqOEvQ`O,5;yOOQP1G/u1G/uOOQS-E8j-E8jOFOQdO'#EpOFYQ`O,5;rOOQ]1G.x1G.xOOQP<<IO<<IOOFbQdO7+$|OOQO'#D]'#D]OFiQ!bO7+%QOFqQhO'#EoOF{Q`O,5;xO&lQdO,5;xOOQW1G/o1G/oOOQO'#ES'#ESOGTQ`O1G0WOOQS<<I[<<I[O&lQdO,59tOGnQhO1G/_OOQ[1G/_1G/_OGuQ`O1G/_OOQW-E8l-E8lOOQ[7+%]7+%]OOQO,5:{,5:{O=pQdO'#ExOCeQ`O,5;cOOQS,5;c,5;cOOQS-E8u-E8uOOQS1G0f1G0fOOQS<<Iq<<IqOG}Q!fO,5;_OOQS-E8q-E8qOOQO<<IX<<IXOOQPAN>jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<<Hh<<HhOOQW<<Hl<<HlOIjQhO<<HlOI{QhO,5;ZOJWQ`O,5;ZOOQO-E8m-E8mOJ]QdO1G1dOBZQdO'#EuOJgQ`O7+%rOOQW7+%r7+%rOJoQ!bO1G/`OOQ[7+$y7+$yOJzQhO7+$yPKRQ`O'#EnOOQO,5;d,5;dOOQO-E8v-E8vOOQS1G0}1G0}OKWQ`OAN>WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<<I^<<I^OOQ[<<He<<HePOQW,5;Y,5;YOOQWG23rG23rOKeQdO7+&a",stateData:"Kx~O#sOS#tQQ~OW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#oRO~OQiOW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#ohO~O#m$SP~P!dO#tmO~O#ooO~O]qO`rOarOjsOmtO!juO!mwO#nvO~OpzO!^xO~P$SOc!QO#o|O#p}O~O#o!RO~O#o!TO~OW[OZ[O]TO`VOaVOjWOmXO!jYO!mZO#oRO~OS!]Oe!YO!V![O!Y!`O#q!XOp$TP~Ok$TP~P&POQ!jOe!cOm!dOp!eOr!mOt!mOz!kO!`!lO#o!bO#p!hO#}!fO~Ot!qO!`!lO#o!pO~Ot!sO#o!sO~OS!]Oe!YO!V![O!Y!`O#q!XO~Oe!vOpzO#Z!xO~O]YX`YX`!pXaYXjYXmYXpYX!^YX!jYX!mYX#nYX~O`!zO~Ok!{O#m$SXo$SX~O#m$SXo$SX~P!dO#u#OO#v#OO#w#QO~Oc#UO#o|O#p}O~OpzO!^xO~Oo$SP~P!dOe#`O~Oe#aO~Ol#bO!h#cO~O]qO`rOarOjsOmtO~Op!ia!^!ia!j!ia!m!ia#n!iad!ia~P*zOp!la!^!la!j!la!m!la#n!lad!la~P*zOR#gOS!]Oe!YOr#gOt#gO!V![O!Y!`O#q#dO#}!fO~O!R#iO!^#jOk$TXp$TX~Oe#mO~Ok#oOpzO~Oe!vO~O]#rO`#rOd#uOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl#wO~P&lO]#rO`#rOi#rOj#rOk#rOo#yO~P&lOP#zOSsXesXksXvsX!VsX!YsX!usX!wsX#qsX!TsXQsX]sX`sXdsXisXjsXmsXpsXrsXtsXzsX!`sX#osX#psX#}sXlsXosX!^sX!qsX#msX~Ov#{O!u#|O!w#}Ok$TP~P'tOe#aOS#{Xk#{Xv#{X!V#{X!Y#{X!u#{X!w#{X#q#{XQ#{X]#{X`#{Xd#{Xi#{Xj#{Xm#{Xp#{Xr#{Xt#{Xz#{X!`#{X#o#{X#p#{X#}#{Xl#{Xo#{X!^#{X!q#{X#m#{X~Oe$RO~Oe$TO~Ok$VOv#{O~Ok$WO~Ot$XO!`!lO~Op$YO~OpzO!R#iO~OpzO#Z$`O~O!q$bOk!oa#m!oao!oa~P&lOk#hX#m#hXo#hX~P!dOk!{O#m$Sao$Sa~O#u#OO#v#OO#w$hO~Ol$jO!h$kO~Op!ii!^!ii!j!ii!m!ii#n!iid!ii~P*zOp!ki!^!ki!j!ki!m!ki#n!kid!ki~P*zOp!li!^!li!j!li!m!li#n!lid!li~P*zOp#fa!^#fa~P$SOo$lO~Od$RP~P%_Od#zP~P&lO`!PXd}X!R}X!T!PX~O`$sO!T$tO~Od$uO!R#iO~Ok#jXp#jX!^#jX~P'tO!^#jOk$Tap$Ta~O!R#iOk!Uap!Ua!^!Uad!Ua`!Ua~OS!]Oe!YO!V![O!Y!`O#q$yO~Od$QP~P9dOv#{OQ#|X]#|X`#|Xd#|Xe#|Xi#|Xj#|Xk#|Xm#|Xp#|Xr#|Xt#|Xz#|X!`#|X#o#|X#p#|X#}#|Xl#|Xo#|X~O]#rO`#rOd%OOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl%PO~P&lO]#rO`#rOi#rOj#rOk#rOo%QO~P&lOe%SOS!tXk!tX!V!tX!Y!tX#q!tX~Ok%TO~Od%YOt%ZO!a%ZO~Ok%[O~Oo%cO#o%^O#}%]O~Od%dO~P$SOv#{O!^%hO!q%jOk!oi#m!oio!oi~P&lOk#ha#m#hao#ha~P!dOk!{O#m$Sio$Si~O!^%mOd$RX~P$SOd%oO~Ov#{OQ#`Xd#`Xe#`Xm#`Xp#`Xr#`Xt#`Xz#`X!^#`X!`#`X#o#`X#p#`X#}#`X~O!^%qOd#zX~P&lOd%sO~Ol%tOv#{O~OR#gOr#gOt#gO#q%vO#}!fO~O!R#iOk#jap#ja!^#ja~O`!PXd}X!R}X!^}X~O!R#iO!^%xOd$QX~O`%zO~Od%{O~O#o%|O~Ok&OO~O`&PO!R#iO~Od&ROk&QO~Od&UO~OP#zOpsX!^sXdsX~O#}%]Op#TX!^#TX~OpzO!^&WO~Oo&[O#o%^O#}%]O~Ov#{OQ#gXe#gXk#gXm#gXp#gXr#gXt#gXz#gX!^#gX!`#gX!q#gX#m#gX#o#gX#p#gX#}#gXo#gX~O!^%hO!q&`Ok!oq#m!oqo!oq~P&lOl&aOv#{O~Od#eX!^#eX~P%_O!^%mOd$Ra~Od#dX!^#dX~P&lO!^%qOd#za~Od&fO~P&lOd&gO!T&hO~Od#cX!^#cX~P9dO!^%xOd$Qa~O]&mOd&oO~OS#bae#ba!V#ba!Y#ba#q#ba~Od&qO~PG]Od&qOk&rO~Ov#{OQ#gae#gak#gam#gap#gar#gat#gaz#ga!^#ga!`#ga!q#ga#m#ga#o#ga#p#ga#}#gao#ga~Od#ea!^#ea~P$SOd#da!^#da~P&lOR#gOr#gOt#gO#q%vO#}%]O~O!R#iOd#ca!^#ca~O`&xO~O!^%xOd$Qi~P&lO]&mOd&|O~Ov#{Od|ik|i~Od&}O~PG]Ok'OO~Od'PO~O!^%xOd$Qq~Od#cq!^#cq~P&lO#s!a#t#}]#}v!m~",goto:"2h$UPPPPP$VP$YP$c$uP$cP%X$cPP%_PPP%e%o%oPPPPP%oPP%oP&]P%oP%o'W%oP't'w'}'}(^'}P'}P'}P'}'}P(m'}(yP(|PP)p)v$c)|$c*SP$cP$c$cP*Y*{+YP$YP+aP+dP$YP$YP$YP+j$YP+m+p+s+z$YP$YPP$YP,P,V,f,|-[-b-l-r-x.O.U.`.f.l.rPPPPPPPPPPP.x/R/w/z0|P1U1u2O2R2U2[RnQ_^OP`kz!{$dq[OPYZ`kuvwxz!v!{#`$d%mqSOPYZ`kuvwxz!v!{#`$d%mQpTR#RqQ!OVR#SrQ#S!QS$Q!i!jR$i#U!V!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'Q!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QU#g!Y$t&hU%`$Y%b&WR&V%_!V!iac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QR$S!kQ%W$RR&S%Xk!^]bf!Y![!g#i#j#m$P$R%X%xQ#e!YQ${#mQ%w$tQ&j%xR&w&hQ!ygQ#p!`Q$^!xR%f$`R#n!]!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QQ!qdR$X!rQ!PVR#TrQ#S!PR$i#TQ!SWR#VsQ!UXR#WtQ{UQ!wgQ#^yQ#o!_Q$U!nQ$[!uQ$_!yQ%e$^Q&Y%aQ&]%fR&v&XSjPzQ!}kQ$c!{R%k$dZiPkz!{$dR$P!gQ%}%SR&z&mR!rdR!teR$Z!tS%a$Y%bR&t&WV%_$Y%b&WQ#PmR$g#PQ`OSkPzU!a`k$dR$d!{Q$p#aY%p$p%u&d&l'QQ%u$sQ&d%qQ&l%zR'Q&xQ#t!cQ#v!dQ#x!eV$}#t#v#xQ%X$RR&T%XQ%y$zS&k%y&yR&y&lQ%r$pR&e%rQ%n$mR&c%nQyUR#]yQ%i$aR&_%iQ!|jS$e!|$fR$f!}Q&n%}R&{&nQ#k!ZR$x#kQ%b$YR&Z%bQ&X%aR&u&X__OP`kz!{$d^UOP`kz!{$dQ!VYQ!WZQ#XuQ#YvQ#ZwQ#[xQ$]!vQ$m#`R&b%mR$q#aQ!gaQ!oc[#q!c!d!e#t#v#xQ$a!zd$o#a$p$s%q%u%z&d&l&x'QQ$r#cQ%R#{S%g$a%iQ%l$kQ&^%hR&p&P]#s!c!d!e#t#v#xW!Z]b!g$PQ!ufQ#f!YQ#l![Q$v#iQ$w#jQ$z#mS%V$R%XR&i%xQ#h!YQ%w$tR&w&hR$|#mR$n#`QlPR#_zQ!_]Q!nbQ$O!gR%U$P",nodeNames:"⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles",maxTerm:143,nodeProps:[["isolate",-2,5,36,""],["openedBy",20,"(",28,"[",31,"{"],["closedBy",21,")",29,"]",32,"}"]],propSources:[X4],skippedNodes:[0,5,106],repeatNodeCount:15,tokenData:"JQ~R!YOX$qX^%i^p$qpq%iqr({rs-ust/itu6Wuv$qvw7Qwx7cxy9Qyz9cz{9h{|:R|}>t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj<VY!a`Oy%Qz{%Q{|<u|}%Q}!O<u!O!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj<zU!a`Oy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj=eU!a`#}YOy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj>O[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj>yS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%QjBUU`YOy%Qz![%Q![!]Bh!];'S%Q;'S;=`%c<%lO%QbBoSaQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjCQSkYOy%Qz;'S%Q;'S;=`%c<%lO%QhCcU!TWOy%Qz!_%Q!_!`Cu!`;'S%Q;'S;=`%c<%lO%QhC|S!TW!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QlDaS!TW!hSOy%Qz;'S%Q;'S;=`%c<%lO%QjDtV!jQ!TWOy%Qz!_%Q!_!`Cu!`!aEZ!a;'S%Q;'S;=`%c<%lO%QbEbS!jQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjEqYOy%Qz}%Q}!OFa!O!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjFfW!a`Oy%Qz!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjGV[iY!a`Oy%Qz}%Q}!OGO!O!Q%Q!Q![GO![!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjHQSmYOy%Qz;'S%Q;'S;=`%c<%lO%QnHcSl^Oy%Qz;'S%Q;'S;=`%c<%lO%QjHtSpYOy%Qz;'S%Q;'S;=`%c<%lO%QjIVSoYOy%Qz;'S%Q;'S;=`%c<%lO%QfIhU!mQOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Q`I}P;=`<%l$q",tokenizers:[D4,L4,Z4,E4,1,2,3,4,new cl("m~RRYZ[z{a~~g~aO#v~~dP!P!Qg~lO#w~~",28,129)],topRules:{StyleSheet:[0,6],Styles:[1,105]},dynamicPrecedences:{76:1},specialized:[{term:124,get:r=>I4[r]||-1},{term:125,get:r=>V4[r]||-1},{term:4,get:r=>z4[r]||-1},{term:25,get:r=>N4[r]||-1},{term:123,get:r=>W4[r]||-1}],tokenPrec:1963});let fc=null;function mc(){if(!fc&&typeof document=="object"&&document.body){let{style:r}=document.body,e=[],t=new Set;for(let n in r)n!="cssText"&&n!="cssFloat"&&typeof r[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())),t.has(n)||(e.push(n),t.add(n)));fc=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return fc||[]}const Qm=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(r=>({type:"class",label:r})),Pm=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(r=>({type:"keyword",label:r})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(r=>({type:"constant",label:r}))),j4=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(r=>({type:"type",label:r})),Y4=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(r=>({type:"keyword",label:r})),dn=/^(\w[\w-]*|-\w[\w-]*|)$/,F4=/^-(-[\w-]*)?$/;function U4(r,e){var t;if((r.name=="("||r.type.isError)&&(r=r.parent||r),r.name!="ArgList")return!1;let n=(t=r.parent)===null||t===void 0?void 0:t.firstChild;return n?.name!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}const Tm=new Yg,G4=["Declaration"];function H4(r){for(let e=r;;){if(e.type.isTop)return e;if(!(e=e.parent))return r}}function e1(r,e,t){if(e.to-e.from>4096){let n=Tm.get(e);if(n)return n;let s=[],i=new Set,o=e.cursor(it.IncludeAnonymous);if(o.firstChild())do for(let a of e1(r,o.node,t))i.has(a.label)||(i.add(a.label),s.push(a));while(o.nextSibling());return Tm.set(e,s),s}else{let n=[],s=new Set;return e.cursor().iterate(i=>{var o;if(t(i)&&i.matchContext(G4)&&((o=i.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let a=r.sliceString(i.from,i.to);s.has(a)||(s.add(a),n.push({label:a,type:"variable"}))}}),n}}const K4=r=>e=>{let{state:t,pos:n}=e,s=ht(t).resolveInner(n,-1),i=s.type.isError&&s.from==s.to-1&&t.doc.sliceString(s.from,s.to)=="-";if(s.name=="PropertyName"||(i||s.name=="TagName")&&/^(Block|Styles)$/.test(s.resolve(s.to).name))return{from:s.from,options:mc(),validFor:dn};if(s.name=="ValueName")return{from:s.from,options:Pm,validFor:dn};if(s.name=="PseudoClassName")return{from:s.from,options:Qm,validFor:dn};if(r(s)||(e.explicit||i)&&U4(s,t.doc))return{from:r(s)||i?s.from:n,options:e1(t.doc,H4(s),r),validFor:F4};if(s.name=="TagName"){for(let{parent:l}=s;l;l=l.parent)if(l.name=="Block")return{from:s.from,options:mc(),validFor:dn};return{from:s.from,options:j4,validFor:dn}}if(s.name=="AtKeyword")return{from:s.from,options:Y4,validFor:dn};if(!e.explicit)return null;let o=s.resolve(n),a=o.childBefore(n);return a&&a.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:Qm,validFor:dn}:a&&a.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:Pm,validFor:dn}:o.name=="Block"||o.name=="Styles"?{from:n,options:mc(),validFor:dn}:null},J4=K4(r=>r.name=="VariableName"),hl=ei.define({name:"css",parser:q4.configure({props:[To.add({Declaration:Ca()}),li.add({"Block KeyframeList":tO})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function eA(){return new io(hl,hl.data.of({autocomplete:J4}))}const tA=316,rA=317,Mm=1,nA=2,sA=3,iA=4,oA=318,aA=320,lA=321,cA=5,uA=6,hA=0,Qu=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],t1=125,dA=59,Pu=47,fA=42,mA=43,pA=45,gA=60,OA=44,vA=63,bA=46,xA=91,yA=new X0({start:!1,shift(r,e){return e==cA||e==uA||e==aA?r:e==lA},strict:!1}),kA=new br((r,e)=>{let{next:t}=r;(t==t1||t==-1||e.context)&&r.acceptToken(oA)},{contextual:!0,fallback:!0}),wA=new br((r,e)=>{let{next:t}=r,n;Qu.indexOf(t)>-1||t==Pu&&((n=r.peek(1))==Pu||n==fA)||t!=t1&&t!=dA&&t!=-1&&!e.context&&r.acceptToken(tA)},{contextual:!0}),SA=new br((r,e)=>{r.next==xA&&!e.context&&r.acceptToken(rA)},{contextual:!0}),$A=new br((r,e)=>{let{next:t}=r;if(t==mA||t==pA){if(r.advance(),t==r.next){r.advance();let n=!e.context&&e.canShift(Mm);r.acceptToken(n?Mm:nA)}}else t==vA&&r.peek(1)==bA&&(r.advance(),r.advance(),(r.next<48||r.next>57)&&r.acceptToken(sA))},{contextual:!0});function pc(r,e){return r>=65&&r<=90||r>=97&&r<=122||r==95||r>=192||!e&&r>=48&&r<=57}const CA=new br((r,e)=>{if(r.next!=gA||!e.dialectEnabled(hA)||(r.advance(),r.next==Pu))return;let t=0;for(;Qu.indexOf(r.next)>-1;)r.advance(),t++;if(pc(r.next,!0)){for(r.advance(),t++;pc(r.next,!1);)r.advance(),t++;for(;Qu.indexOf(r.next)>-1;)r.advance(),t++;if(r.next==OA)return;for(let n=0;;n++){if(n==7){if(!pc(r.next,!0))return;break}if(r.next!="extends".charCodeAt(n))break;r.advance(),t++}}r.acceptToken(iA,-t)}),QA=ai({"get set async static":$.modifier,"for while do if else switch try catch finally return throw break continue default case defer":$.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":$.operatorKeyword,"let var const using function class extends":$.definitionKeyword,"import export from":$.moduleKeyword,"with debugger new":$.keyword,TemplateString:$.special($.string),super:$.atom,BooleanLiteral:$.bool,this:$.self,null:$.null,Star:$.modifier,VariableName:$.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":$.function($.variableName),VariableDefinition:$.definition($.variableName),Label:$.labelName,PropertyName:$.propertyName,PrivatePropertyName:$.special($.propertyName),"CallExpression/MemberExpression/PropertyName":$.function($.propertyName),"FunctionDeclaration/VariableDefinition":$.function($.definition($.variableName)),"ClassDeclaration/VariableDefinition":$.definition($.className),"NewExpression/VariableName":$.className,PropertyDefinition:$.definition($.propertyName),PrivatePropertyDefinition:$.definition($.special($.propertyName)),UpdateOp:$.updateOperator,"LineComment Hashbang":$.lineComment,BlockComment:$.blockComment,Number:$.number,String:$.string,Escape:$.escape,ArithOp:$.arithmeticOperator,LogicOp:$.logicOperator,BitOp:$.bitwiseOperator,CompareOp:$.compareOperator,RegExp:$.regexp,Equals:$.definitionOperator,Arrow:$.function($.punctuation),": Spread":$.punctuation,"( )":$.paren,"[ ]":$.squareBracket,"{ }":$.brace,"InterpolationStart InterpolationEnd":$.special($.brace),".":$.derefOperator,", ;":$.separator,"@":$.meta,TypeName:$.typeName,TypeDefinition:$.definition($.typeName),"type enum interface implements namespace module declare":$.definitionKeyword,"abstract global Privacy readonly override":$.modifier,"is keyof unique infer asserts":$.operatorKeyword,JSXAttributeValue:$.attributeValue,JSXText:$.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":$.angleBracket,"JSXIdentifier JSXNameSpacedName":$.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":$.attributeName,"JSXBuiltin/JSXIdentifier":$.standard($.tagName)}),PA={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},TA={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},MA={__proto__:null,"<":193},AA=si.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]",stateData:"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hOTX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WOPP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~",goto:"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_",nodeNames:"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:yA,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[QA],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[wA,SA,$A,CA,2,3,4,5,6,7,8,9,10,11,12,13,14,kA,new cl("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new cl("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:r=>PA[r]||-1},{term:343,get:r=>TA[r]||-1},{term:95,get:r=>MA[r]||-1}],tokenPrec:15201}),r1=[Gt("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),Gt("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),Gt("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),Gt("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),Gt("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),Gt(`try {
|
|
28
|
-
\${}
|
|
29
|
-
} catch (\${error}) {
|
|
30
|
-
\${}
|
|
31
|
-
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Gt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Gt(`if (\${}) {
|
|
32
|
-
\${}
|
|
33
|
-
} else {
|
|
34
|
-
\${}
|
|
35
|
-
}`,{label:"if",detail:"/ else block",type:"keyword"}),Gt(`class \${name} {
|
|
36
|
-
constructor(\${params}) {
|
|
37
|
-
\${}
|
|
38
|
-
}
|
|
39
|
-
}`,{label:"class",detail:"definition",type:"keyword"}),Gt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Gt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],_A=r1.concat([Gt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Gt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Gt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Am=new Yg,n1=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function _i(r){return(e,t)=>{let n=e.node.getChild("VariableDefinition");return n&&t(n,r),!0}}const RA=["FunctionDeclaration"],BA={FunctionDeclaration:_i("function"),ClassDeclaration:_i("class"),ClassExpression:()=>!0,EnumDeclaration:_i("constant"),TypeAliasDeclaration:_i("type"),NamespaceDeclaration:_i("namespace"),VariableDefinition(r,e){r.matchContext(RA)||e(r,"variable")},TypeDefinition(r,e){e(r,"type")},__proto__:null};function s1(r,e){let t=Am.get(e);if(t)return t;let n=[],s=!0;function i(o,a){let l=r.sliceString(o.from,o.to);n.push({label:l,type:a})}return e.cursor(it.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let a=BA[o.name];if(a&&a(o,i)||n1.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of s1(r,o.node))n.push(a);return!1}}),Am.set(e,n),n}const _m=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,i1=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function ZA(r){let e=ht(r.state).resolveInner(r.pos,-1);if(i1.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&_m.test(r.state.sliceDoc(e.from,e.to));if(!t&&!r.explicit)return null;let n=[];for(let s=e;s;s=s.parent)n1.has(s.name)&&(n=n.concat(s1(r.state.doc,s)));return{options:n,from:t?e.from:r.pos,validFor:_m}}const rn=ei.define({name:"javascript",parser:AA.configure({props:[To.add({IfStatement:Ca({except:/^\s*({|else\b)/}),TryStatement:Ca({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:SQ,SwitchBody:r=>{let e=r.textAfter,t=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return r.baseIndent+(t?0:n?1:2)*r.unit},Block:wQ({closing:"}"}),ArrowFunction:r=>r.baseIndent+r.unit,"TemplateString BlockComment":()=>null,"Statement Property":Ca({except:/^\s*{/}),JSXElement(r){let e=/^\s*<\//.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},JSXEscape(r){let e=/\s*\}/.test(r.textAfter);return r.lineIndent(r.node.from)+(e?0:r.unit)},"JSXOpenTag JSXSelfClosingTag"(r){return r.column(r.node.from)+r.unit}}),li.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":tO,BlockComment(r){return{from:r.from+2,to:r.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),o1={test:r=>/^JSX/.test(r.name),facet:uh({commentTokens:{block:{open:"{/*",close:"*/}"}}})},a1=rn.configure({dialect:"ts"},"typescript"),l1=rn.configure({dialect:"jsx",props:[hh.add(r=>r.isTop?[o1]:void 0)]}),c1=rn.configure({dialect:"jsx ts",props:[hh.add(r=>r.isTop?[o1]:void 0)]},"typescript");let u1=r=>({label:r,type:"keyword"});const h1="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(u1),EA=h1.concat(["declare","implements","private","protected","public"].map(u1));function DA(r={}){let e=r.jsx?r.typescript?c1:l1:r.typescript?a1:rn,t=r.typescript?_A.concat(EA):r1.concat(h1);return new io(e,[rn.data.of({autocomplete:q3(i1,t0(t))}),rn.data.of({autocomplete:ZA}),r.jsx?IA:[]])}function LA(r){for(;;){if(r.name=="JSXOpenTag"||r.name=="JSXSelfClosingTag"||r.name=="JSXFragmentTag")return r;if(r.name=="JSXEscape"||!r.parent)return null;r=r.parent}}function Rm(r,e,t=r.length){for(let n=e?.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return r.sliceString(n.from,Math.min(n.to,t));return""}const XA=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),IA=$e.inputHandler.of((r,e,t,n,s)=>{if((XA?r.composing:r.compositionStarted)||r.state.readOnly||e!=t||n!=">"&&n!="/"||!rn.isActiveAt(r.state,e,-1))return!1;let i=s(),{state:o}=i,a=o.changeByRange(l=>{var c;let{head:u}=l,h=ht(o).resolveInner(u-1,-1),f;if(h.name=="JSXStartTag"&&(h=h.parent),!(o.doc.sliceString(u-1,u)!=n||h.name=="JSXAttributeValue"&&h.to>u)){if(n==">"&&h.name=="JSXFragmentTag")return{range:l,changes:{from:u,insert:"</>"}};if(n=="/"&&h.name=="JSXStartCloseTag"){let g=h.parent,p=g.parent;if(p&&g.from==u-2&&((f=Rm(o.doc,p.firstChild,u))||((c=p.firstChild)===null||c===void 0?void 0:c.name)=="JSXFragmentTag")){let O=`${f}>`;return{range:ne.cursor(u+O.length,-1),changes:{from:u,insert:O}}}}else if(n==">"){let g=LA(h);if(g&&g.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(u,u+2))&&(f=Rm(o.doc,g,u)))return{range:l,changes:{from:u,insert:`</${f}>`}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([i,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),Ri=["_blank","_self","_top","_parent"],gc=["ascii","utf-8","utf-16","latin1","latin1"],Oc=["get","post","put","delete"],vc=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],hr=["true","false"],Ee={},VA={a:{attrs:{href:null,ping:null,type:null,media:null,target:Ri,hreflang:null}},abbr:Ee,address:Ee,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:Ee,aside:Ee,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:Ee,base:{attrs:{href:null,target:Ri}},bdi:Ee,bdo:Ee,blockquote:{attrs:{cite:null}},body:Ee,br:Ee,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:vc,formmethod:Oc,formnovalidate:["novalidate"],formtarget:Ri,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:Ee,center:Ee,cite:Ee,code:Ee,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:Ee,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:Ee,div:Ee,dl:Ee,dt:Ee,em:Ee,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:Ee,figure:Ee,footer:Ee,form:{attrs:{action:null,name:null,"accept-charset":gc,autocomplete:["on","off"],enctype:vc,method:Oc,novalidate:["novalidate"],target:Ri}},h1:Ee,h2:Ee,h3:Ee,h4:Ee,h5:Ee,h6:Ee,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:Ee,hgroup:Ee,hr:Ee,html:{attrs:{manifest:null}},i:Ee,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:vc,formmethod:Oc,formnovalidate:["novalidate"],formtarget:Ri,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:Ee,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:Ee,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:Ee,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:gc,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Ee,noscript:Ee,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Ee,param:{attrs:{name:null,value:null}},pre:Ee,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Ee,rt:Ee,ruby:Ee,samp:Ee,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:gc}},section:Ee,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:Ee,source:{attrs:{src:null,type:null,media:null}},span:Ee,strong:Ee,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:Ee,summary:Ee,sup:Ee,table:Ee,tbody:Ee,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Ee,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:Ee,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:Ee,time:{attrs:{datetime:null}},title:Ee,tr:Ee,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:Ee,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:Ee},d1={accesskey:null,class:null,contenteditable:hr,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:hr,autocorrect:hr,autocapitalize:hr,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":hr,"aria-autocomplete":["inline","list","both","none"],"aria-busy":hr,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":hr,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":hr,"aria-hidden":hr,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":hr,"aria-multiselectable":hr,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":hr,"aria-relevant":null,"aria-required":hr,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},f1="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(r=>"on"+r);for(let r of f1)d1[r]=null;class Oo{constructor(e,t){this.tags={...VA,...e},this.globalAttrs={...d1,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}}Oo.default=new Oo;function ii(r,e,t=r.length){if(!e)return"";let n=e.firstChild,s=n&&n.getChild("TagName");return s?r.sliceString(s.from,Math.min(s.to,t)):""}function oi(r,e=!1){for(;r;r=r.parent)if(r.name=="Element")if(e)e=!1;else return r;return null}function m1(r,e,t){let n=t.tags[ii(r,oi(e))];return n?.children||t.allTags}function Lh(r,e){let t=[];for(let n=oi(e);n&&!n.type.isTop;n=oi(n.parent)){let s=ii(r,n);if(s&&n.lastChild.name=="CloseTag")break;s&&t.indexOf(s)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&t.push(s)}return t}const p1=/^[:\-\.\w\u00b7-\uffff]*$/;function Bm(r,e,t,n,s){let i=/\s*>/.test(r.sliceDoc(s,s+5))?"":">",o=oi(t,t.name=="StartTag"||t.name=="TagName");return{from:n,to:s,options:m1(r.doc,o,e).map(a=>({label:a,type:"type"})).concat(Lh(r.doc,t).map((a,l)=>({label:"/"+a,apply:"/"+a+i,type:"type",boost:99-l}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function Zm(r,e,t,n){let s=/\s*>/.test(r.sliceDoc(n,n+5))?"":">";return{from:t,to:n,options:Lh(r.doc,e).map((i,o)=>({label:i,apply:i+s,type:"type",boost:99-o})),validFor:p1}}function zA(r,e,t,n){let s=[],i=0;for(let o of m1(r.doc,t,e))s.push({label:"<"+o,type:"type"});for(let o of Lh(r.doc,t))s.push({label:"</"+o+">",type:"type",boost:99-i++});return{from:n,to:n,options:s,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function NA(r,e,t,n,s){let i=oi(t),o=i?e.tags[ii(r.doc,i)]:null,a=o&&o.attrs?Object.keys(o.attrs):[],l=o&&o.globalAttrs===!1?a:a.length?a.concat(e.globalAttrNames):e.globalAttrNames;return{from:n,to:s,options:l.map(c=>({label:c,type:"property"})),validFor:p1}}function WA(r,e,t,n,s){var i;let o=(i=t.parent)===null||i===void 0?void 0:i.getChild("AttributeName"),a=[],l;if(o){let c=r.sliceDoc(o.from,o.to),u=e.globalAttrs[c];if(!u){let h=oi(t),f=h?e.tags[ii(r.doc,h)]:null;u=f?.attrs&&f.attrs[c]}if(u){let h=r.sliceDoc(n,s).toLowerCase(),f='"',g='"';/^['"]/.test(h)?(l=h[0]=='"'?/^[^"]*$/:/^[^']*$/,f="",g=r.sliceDoc(s,s+1)==h[0]?"":h[0],h=h.slice(1),n++):l=/^[^\s<>='"]*$/;for(let p of u)a.push({label:p,apply:f+p+g,type:"constant"})}}return{from:n,to:s,options:a,validFor:l}}function g1(r,e){let{state:t,pos:n}=e,s=ht(t).resolveInner(n,-1),i=s.resolve(n);for(let o=n,a;i==s&&(a=s.childBefore(o));){let l=a.lastChild;if(!l||!l.type.isError||l.from<l.to)break;i=s=a,o=l.from}return s.name=="TagName"?s.parent&&/CloseTag$/.test(s.parent.name)?Zm(t,s,s.from,n):Bm(t,r,s,s.from,n):s.name=="StartTag"||s.name=="IncompleteTag"?Bm(t,r,s,n,n):s.name=="StartCloseTag"||s.name=="IncompleteCloseTag"?Zm(t,s,n,n):s.name=="OpenTag"||s.name=="SelfClosingTag"||s.name=="AttributeName"?NA(t,r,s,s.name=="AttributeName"?s.from:n,n):s.name=="Is"||s.name=="AttributeValue"||s.name=="UnquotedAttributeValue"?WA(t,r,s,s.name=="Is"?n:s.from,n):e.explicit&&(i.name=="Element"||i.name=="Text"||i.name=="Document")?zA(t,r,s,n):null}function qA(r){return g1(Oo.default,r)}function jA(r){let{extraTags:e,extraGlobalAttributes:t}=r,n=t||e?new Oo(e,t):Oo.default;return s=>g1(n,s)}const YA=rn.parser.configure({top:"SingleExpression"}),O1=[{tag:"script",attrs:r=>r.type=="text/typescript"||r.lang=="ts",parser:a1.parser},{tag:"script",attrs:r=>r.type=="text/babel"||r.type=="text/jsx",parser:l1.parser},{tag:"script",attrs:r=>r.type=="text/typescript-jsx",parser:c1.parser},{tag:"script",attrs(r){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(r.type)},parser:YA},{tag:"script",attrs(r){return!r.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(r.type)},parser:rn.parser},{tag:"style",attrs(r){return(!r.lang||r.lang=="css")&&(!r.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(r.type))},parser:hl.parser}],v1=[{name:"style",parser:hl.parser.configure({top:"Styles"})}].concat(f1.map(r=>({name:r,parser:rn.parser}))),b1=ei.define({name:"html",parser:v4.configure({props:[To.add({Element(r){let e=/^(\s*)(<\/)?/.exec(r.textAfter);return r.node.to<=r.pos+e[0].length?r.continue():r.lineIndent(r.node.from)+(e[2]?0:r.unit)},"OpenTag CloseTag SelfClosingTag"(r){return r.column(r.node.from)+r.unit},Document(r){if(r.pos+/\s*/.exec(r.textAfter)[0].length<r.node.to)return r.continue();let e=null,t;for(let n=r.node;;){let s=n.lastChild;if(!s||s.name!="Element"||s.to!=n.to)break;e=n=s}return e&&!((t=e.lastChild)&&(t.name=="CloseTag"||t.name=="SelfClosingTag"))?r.lineIndent(e.from)+r.unit:null}}),li.add({Element(r){let e=r.firstChild,t=r.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:t.name=="CloseTag"?t.from:r.to}}}),mO.add({"OpenTag CloseTag":r=>r.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"<!--",close:"-->"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Ta=b1.configure({wrap:U0(O1,v1)});function FA(r={}){let e="",t;r.matchClosingTags===!1&&(e="noMatch"),r.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(r.nestedLanguages&&r.nestedLanguages.length||r.nestedAttributes&&r.nestedAttributes.length)&&(t=U0((r.nestedLanguages||[]).concat(O1),(r.nestedAttributes||[]).concat(v1)));let n=t?b1.configure({wrap:t,dialect:e}):e?Ta.configure({dialect:e}):Ta;return new io(n,[Ta.data.of({autocomplete:jA(r)}),r.autoCloseTags!==!1?UA:[],DA().support,eA().support])}const Em=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),UA=$e.inputHandler.of((r,e,t,n,s)=>{if(r.composing||r.state.readOnly||e!=t||n!=">"&&n!="/"||!Ta.isActiveAt(r.state,e,-1))return!1;let i=s(),{state:o}=i,a=o.changeByRange(l=>{var c,u,h;let f=o.doc.sliceString(l.from-1,l.to)==n,{head:g}=l,p=ht(o).resolveInner(g,-1),O;if(f&&n==">"&&p.name=="EndTag"){let b=p.parent;if(((u=(c=b.parent)===null||c===void 0?void 0:c.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&(O=ii(o.doc,b.parent,g))&&!Em.has(O)){let x=g+(o.doc.sliceString(g,g+1)===">"?1:0),k=`</${O}>`;return{range:l,changes:{from:g,to:x,insert:k}}}}else if(f&&n=="/"&&p.name=="IncompleteCloseTag"){let b=p.parent;if(p.from==g-2&&((h=b.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(O=ii(o.doc,b,g))&&!Em.has(O)){let x=g+(o.doc.sliceString(g,g+1)===">"?1:0),k=`${O}>`;return{range:ne.cursor(g+k.length,-1),changes:{from:g,to:x,insert:k}}}}return{range:l}});return a.changes.empty?!1:(r.dispatch([i,o.update(a,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),x1=uh({commentTokens:{block:{open:"<!--",close:"-->"}}}),y1=new qe,k1=dM.configure({props:[li.add(r=>!r.is("Block")||r.is("Document")||Tu(r)!=null||GA(r)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),y1.add(Tu),To.add({Document:()=>null}),cs.add({Document:x1})]});function Tu(r){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(r.name);return e?+e[1]:void 0}function GA(r){return r.name=="OrderedList"||r.name=="BulletList"}function HA(r,e){let t=r;for(;;){let n=t.nextSibling,s;if(!n||(s=Tu(n.type))!=null&&s<=e)break;t=n}return t.to}const KA=eO.of((r,e,t)=>{for(let n=ht(r).resolveInner(t,-1);n&&!(n.from<e);n=n.parent){let s=n.type.prop(y1);if(s==null)continue;let i=HA(n,s);if(i>t)return{from:t,to:i}}return null});function Xh(r){return new $r(x1,r,[],"markdown")}const JA=Xh(k1),e_=k1.configure([wM,$M,SM,CM,{props:[li.add({Table:(r,e)=>({from:e.doc.lineAt(r.from).to,to:r.to})})]}]),dl=Xh(e_);function t_(r,e){return t=>{if(t&&r){let n=null;if(t=/\S*/.exec(t)[0],typeof r=="function"?n=r(t):n=Ya.matchLanguageName(r,t,!0),n instanceof Ya)return n.support?n.support.language.parser:so.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}class bc{constructor(e,t,n,s,i,o,a){this.node=e,this.from=t,this.to=n,this.spaceBefore=s,this.spaceAfter=i,this.type=o,this.item=a}blank(e,t=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length<e;)n+=" ";return n}else{for(let s=this.to-this.from-n.length-this.spaceAfter.length;s>0;s--)n+=" ";return n+(t?this.spaceAfter:"")}}marker(e,t){let n=this.node.name=="OrderedList"?String(+S1(this.item,e)[2]+t):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function w1(r,e){let t=[],n=[];for(let s=r;s;s=s.parent){if(s.name=="FencedCode")return n;(s.name=="ListItem"||s.name=="Blockquote")&&t.push(s)}for(let s=t.length-1;s>=0;s--){let i=t[s],o,a=e.lineAt(i.from),l=i.from-a.from;if(i.name=="Blockquote"&&(o=/^ *>( ?)/.exec(a.text.slice(l))))n.push(new bc(i,l,l+o[0].length,"",o[1],">",null));else if(i.name=="ListItem"&&i.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(a.text.slice(l)))){let c=o[3],u=o[0].length;c.length>=4&&(c=c.slice(0,c.length-4),u-=4),n.push(new bc(i.parent,l,l+u,o[1],c,o[2],i))}else if(i.name=="ListItem"&&i.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(a.text.slice(l)))){let c=o[4],u=o[0].length;c.length>4&&(c=c.slice(0,c.length-4),u-=4);let h=o[2];o[3]&&(h+=o[3].replace(/[xX]/," ")),n.push(new bc(i.parent,l,l+u,o[1],c,h,i))}}return n}function S1(r,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(r.from,r.from+10))}function xc(r,e,t,n=0){for(let s=-1,i=r;;){if(i.name=="ListItem"){let a=S1(i,e),l=+a[2];if(s>=0){if(l!=s+1)return;t.push({from:i.from+a[1].length,to:i.from+a[0].length,insert:String(s+2+n)})}s=l}let o=i.nextSibling;if(!o)break;i=o}}function Ih(r,e){let t=/^[ \t]*/.exec(r)[0].length;if(!t||e.facet(Po)!=" ")return r;let n=Zr(r,4,t),s="";for(let i=n;i>0;)i>=4?(s+=" ",i-=4):(s+=" ",i--);return s+r.slice(t)}const r_=(r={})=>({state:e,dispatch:t})=>{let n=ht(e),{doc:s}=e,i=null,o=e.changeByRange(a=>{if(!a.empty||!dl.isActiveAt(e,a.from,-1)&&!dl.isActiveAt(e,a.from,1))return i={range:a};let l=a.from,c=s.lineAt(l),u=w1(n.resolveInner(l,-1),s);for(;u.length&&u[u.length-1].from>l-c.from;)u.pop();if(!u.length)return i={range:a};let h=u[u.length-1];if(h.to-h.spaceAfter.length>l-c.from)return i={range:a};let f=l>=h.to-h.spaceAfter.length&&!/\S/.test(c.text.slice(h.to));if(h.item&&f){let x=h.node.firstChild,k=h.node.getChild("ListItem","ListItem");if(x.to>=l||k&&k.to<l||c.from>0&&!/[^\s>]/.test(s.lineAt(c.from-1).text)||r.nonTightLists===!1){let w=u.length>1?u[u.length-2]:null,S,P="";w&&w.item?(S=c.from+w.from,P=w.marker(s,1)):S=c.from+(w?w.to:0);let X=[{from:S,to:l,insert:P}];return h.node.name=="OrderedList"&&xc(h.item,s,X,-2),w&&w.node.name=="OrderedList"&&xc(w.item,s,X),{range:ne.cursor(S+P.length),changes:X}}else{let w=Lm(u,e,c);return{range:ne.cursor(l+w.length+1),changes:{from:c.from,insert:w+e.lineBreak}}}}if(h.node.name=="Blockquote"&&f&&c.from){let x=s.lineAt(c.from-1),k=/>\s*$/.exec(x.text);if(k&&k.index==h.from){let w=e.changes([{from:x.from+k.index,to:x.to},{from:c.from+h.from,to:c.to}]);return{range:a.map(w),changes:w}}}let g=[];h.node.name=="OrderedList"&&xc(h.item,s,g);let p=h.item&&h.item.from<c.from,O="";if(!p||/^[\s\d.)\-+*>]*/.exec(c.text)[0].length>=h.to)for(let x=0,k=u.length-1;x<=k;x++)O+=x==k&&!p?u[x].marker(s,1):u[x].blank(x<k?Zr(c.text,4,u[x+1].from)-O.length:null);let b=l;for(;b>c.from&&/\s/.test(c.text.charAt(b-c.from-1));)b--;return O=Ih(O,e),s_(h.node,e.doc)&&(O=Lm(u,e,c)+e.lineBreak+O),g.push({from:b,to:l,insert:e.lineBreak+O}),{range:ne.cursor(b+O.length+1),changes:g}});return i?!1:(t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},n_=r_();function Dm(r){return r.name=="QuoteMark"||r.name=="ListMark"}function s_(r,e){if(r.name!="OrderedList"&&r.name!="BulletList")return!1;let t=r.firstChild,n=r.getChild("ListItem","ListItem");if(!n)return!1;let s=e.lineAt(t.to),i=e.lineAt(n.from),o=/^[\s>]*$/.test(s.text);return s.number+(o?0:1)<i.number}function Lm(r,e,t){let n="";for(let s=0,i=r.length-2;s<=i;s++)n+=r[s].blank(s<i?Zr(t.text,4,r[s+1].from)-n.length:null,s<i);return Ih(n,e)}function i_(r,e){let t=r.resolveInner(e,-1),n=e;Dm(t)&&(n=t.from,t=t.parent);for(let s;s=t.childBefore(n);)if(Dm(s))n=s.from;else if(s.name=="OrderedList"||s.name=="BulletList")t=s.lastChild,n=t.to;else break;return t}const o_=({state:r,dispatch:e})=>{let t=ht(r),n=null,s=r.changeByRange(i=>{let o=i.from,{doc:a}=r;if(i.empty&&dl.isActiveAt(r,i.from)){let l=a.lineAt(o),c=w1(i_(t,o),a);if(c.length){let u=c[c.length-1],h=u.to-u.spaceAfter.length+(u.spaceAfter?1:0);if(o-l.from>h&&!/\S/.test(l.text.slice(h,o-l.from)))return{range:ne.cursor(l.from+h),changes:{from:l.from+h,to:o}};if(o-l.from==h&&(!u.item||l.from<=u.item.from||!/\S/.test(l.text.slice(0,u.to)))){let f=l.from+u.from;if(u.item&&u.node.from<u.item.from&&/\S/.test(l.text.slice(u.from,u.to))){let g=u.blank(Zr(l.text,4,u.to)-Zr(l.text,4,u.from));return f==l.from&&(g=Ih(g,r)),{range:ne.cursor(f+g.length),changes:{from:f,to:l.from+u.to,insert:g}}}if(f<o)return{range:ne.cursor(f),changes:{from:f,to:o}}}}}return n={range:i}});return n?!1:(e(r.update(s,{scrollIntoView:!0,userEvent:"delete"})),!0)},a_=[{key:"Enter",run:n_},{key:"Backspace",run:o_}],$1=FA({matchClosingTags:!1});function l_(r={}){let{codeLanguages:e,defaultCodeLanguage:t,addKeymap:n=!0,base:{parser:s}=JA,completeHTMLTags:i=!0,pasteURLAsLink:o=!0,htmlTagLanguage:a=$1}=r;if(!(s instanceof Al))throw new RangeError("Base parser provided to `markdown` should be a Markdown parser");let l=r.extensions?[r.extensions]:[],c=[a.support,KA],u;o&&c.push(d_),t instanceof io?(c.push(t.support),u=t.language):t&&(u=t);let h=e||u?t_(e,u):void 0;l.push(mM({codeParser:h,htmlParser:a.language.parser})),n&&c.push(kn.high($o.of(a_)));let f=Xh(s.configure(l));return i&&c.push(f.data.of({autocomplete:c_})),new io(f,c)}function c_(r){let{state:e,pos:t}=r,n=/<[:\-\.\w\u00b7-\uffff]*$/.exec(e.sliceDoc(t-25,t));if(!n)return null;let s=ht(e).resolveInner(t,-1);for(;s&&!s.type.isTop;){if(s.name=="CodeBlock"||s.name=="FencedCode"||s.name=="ProcessingInstructionBlock"||s.name=="CommentBlock"||s.name=="Link"||s.name=="Image")return null;s=s.parent}return{from:t-n[0].length,to:t,options:u_(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}let yc=null;function u_(){if(yc)return yc;let r=qA(new yh(He.create({extensions:$1}),0,!0));return yc=r?r.options:[]}const h_=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,d_=$e.domEventHandlers({paste:(r,e)=>{var t;let{main:n}=e.state.selection;if(n.empty)return!1;let s=(t=r.clipboardData)===null||t===void 0?void 0:t.getData("text/plain");if(!s||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(s)||(/^www\./.test(s)&&(s="https://"+s),!dl.isActiveAt(e.state,n.from,1)))return!1;let i=ht(e.state),o=!1;return i.iterate({from:n.from,to:n.to,enter:a=>{(a.from>n.from||h_.test(a.name))&&(o=!0)},leave:a=>{a.to<n.to&&(o=!0)}}),o?!1:(e.dispatch({changes:[{from:n.from,insert:"["},{from:n.to,insert:`](${s})`}],userEvent:"input.paste",scrollIntoView:!0}),!0)}}),f_="#e5c07b",Xm="#e06c75",m_="#56b6c2",p_="#ffffff",Ma="#abb2bf",Mu="#7d8799",g_="#61afef",O_="#98c379",Im="#d19a66",v_="#c678dd",b_="#21252b",Vm="#2c313a",zm="#282c34",kc="#353a42",x_="#3E4451",Nm="#528bff",y_=$e.theme({"&":{color:Ma,backgroundColor:zm},".cm-content":{caretColor:Nm},".cm-cursor, .cm-dropCursor":{borderLeftColor:Nm},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:x_},".cm-panels":{backgroundColor:b_,color:Ma},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:zm,color:Mu,border:"none"},".cm-activeLineGutter":{backgroundColor:Vm},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:kc},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:kc,borderBottomColor:kc},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Vm,color:Ma}}},{dark:!0}),k_=Ao.define([{tag:$.keyword,color:v_},{tag:[$.name,$.deleted,$.character,$.propertyName,$.macroName],color:Xm},{tag:[$.function($.variableName),$.labelName],color:g_},{tag:[$.color,$.constant($.name),$.standard($.name)],color:Im},{tag:[$.definition($.name),$.separator],color:Ma},{tag:[$.typeName,$.className,$.number,$.changed,$.annotation,$.modifier,$.self,$.namespace],color:f_},{tag:[$.operator,$.operatorKeyword,$.url,$.escape,$.regexp,$.link,$.special($.string)],color:m_},{tag:[$.meta,$.comment],color:Mu},{tag:$.strong,fontWeight:"bold"},{tag:$.emphasis,fontStyle:"italic"},{tag:$.strikethrough,textDecoration:"line-through"},{tag:$.link,color:Mu,textDecoration:"underline"},{tag:$.heading,fontWeight:"bold",color:Xm},{tag:[$.atom,$.bool,$.special($.variableName)],color:Im},{tag:[$.processingInstruction,$.string,$.inserted],color:O_},{tag:$.invalid,color:p_}]),w_=[y_,uO(k_)],S_=Ie({__name:"MarkdownCodeEditor",props:{modelValue:{},readOnly:{type:Boolean,default:!1},lineToReveal:{default:null}},emits:["update:modelValue"],setup(r,{emit:e}){const t=r,n=e,s=Q(null);let i=null,o=!1,a=null;const l=Ne.define(),c=Ne.define(),u=Mt.define({create(){return De.none},update(p,O){let b=p.map(O.changes);for(const x of O.effects)if(x.is(c)&&(b=De.none),x.is(l)){const k=Math.max(1,Math.min(x.value,O.state.doc.lines)),w=O.state.doc.line(k);b=De.set([De.line({class:"cm-target-line"}).range(w.from)])}return b},provide:p=>$e.decorations.from(p)});function h(){i&&(a&&clearTimeout(a),a=setTimeout(()=>{i&&i.dispatch({effects:c.of(void 0)})},1600))}function f(p){if(!i)return;const O=Math.max(1,Math.min(p,i.state.doc.lines)),b=i.state.doc.line(O);i.dispatch({selection:{anchor:b.from},effects:[$e.scrollIntoView(b.from,{y:"center"}),l.of(O)]}),i.focus(),h()}function g(p,O){return He.create({doc:p,extensions:[eM,l_(),w_,$e.lineWrapping,u,$e.updateListener.of(b=>{!b.docChanged||o||n("update:modelValue",b.state.doc.toString())}),$e.theme({"&":{height:"100%",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",fontSize:"13px",backgroundColor:"rgb(var(--color-retro-black))",color:"rgb(var(--color-retro-text))"},".cm-scroller":{overflow:"auto",lineHeight:"1.6"},".cm-gutters":{backgroundColor:"rgb(var(--color-retro-dark))",color:"rgb(var(--color-retro-subtle))",borderRight:"1px solid rgb(var(--color-retro-border))"},".cm-content":{caretColor:"rgb(var(--color-retro-cyan))",padding:"12px 0"},".cm-activeLine":{backgroundColor:"rgba(34, 211, 238, 0.08)"},".cm-selectionBackground, &.cm-focused .cm-selectionBackground":{backgroundColor:"rgba(34, 211, 238, 0.22)"}}),He.readOnly.of(O)]})}return gt(()=>{s.value&&(i=new $e({state:g(t.modelValue,t.readOnly),parent:s.value}),t.lineToReveal&&f(t.lineToReveal))}),Ve(()=>t.modelValue,p=>{if(!i)return;const O=i.state.doc.toString();O!==p&&(o=!0,i.dispatch({changes:{from:0,to:O.length,insert:p}}),o=!1)}),Ve(()=>t.lineToReveal,p=>{p&&f(p)}),q1(()=>{a&&clearTimeout(a),i&&(i.destroy(),i=null)}),(p,O)=>(v(),y("div",{ref_key:"rootRef",ref:s,class:"h-full w-full"},null,512))}}),$_=ws(S_,[["__scopeId","data-v-d77d4160"]]),C_={class:"fixed inset-0 z-50 flex items-center justify-center"},Q_={class:"relative w-[96vw] h-[94vh] bg-retro-black border border-retro-border rounded-lg shadow-2xl flex flex-col overflow-hidden"},P_={class:"flex-shrink-0 flex items-center justify-between px-4 h-12 border-b border-retro-border bg-retro-dark"},T_={class:"flex items-center gap-3 min-w-0"},M_={class:"text-sm font-mono font-bold text-retro-cyan truncate"},A_={class:"text-xs font-mono text-retro-subtle"},__={class:"flex items-center gap-2"},R_=["disabled"],B_={class:"flex-shrink-0 flex items-center gap-0 border-b border-retro-border bg-retro-dark overflow-x-auto"},Z_=["onClick"],E_={class:"flex-1 min-h-0 overflow-y-auto"},D_={key:0,class:"p-5 max-w-6xl mx-auto"},L_={key:0,class:"flex items-center justify-center py-12"},X_={key:1,class:"flex flex-col items-center justify-center py-12 text-center px-4"},I_={class:"text-sm font-mono text-retro-red"},V_={key:2,class:"space-y-4"},z_={key:0,class:"rounded border border-retro-cyan/40 bg-retro-cyan/10 px-3 py-2 text-xs font-mono text-retro-cyan"},N_={class:"grid grid-cols-2 lg:grid-cols-5 gap-2"},W_={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},q_={class:"text-sm font-mono text-retro-text"},j_={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},Y_={class:"text-sm font-mono text-retro-cyan"},F_={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},U_={class:"text-sm font-mono text-retro-yellow"},G_={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},H_={class:"text-sm font-mono text-retro-green"},K_={class:"rounded border border-retro-border bg-retro-panel px-3 py-2"},J_={class:"text-sm font-mono text-retro-text"},eR={class:"rounded border border-retro-border bg-retro-panel px-3 py-3"},tR={class:"flex items-center justify-between gap-2 mb-2"},rR={class:"text-[11px] font-mono text-retro-subtle"},nR={key:0,class:"text-xs font-mono text-retro-green"},sR={key:1,class:"space-y-2"},iR={class:"uppercase tracking-wide mr-2"},oR={class:"rounded border border-retro-border bg-retro-panel p-3 overflow-x-auto"},aR={class:"min-w-[760px]"},lR={class:"text-retro-text"},cR=["disabled","onClick"],uR=["disabled","onClick"],hR=["disabled","onClick"],dR={class:"text-retro-muted"},fR={key:1,class:"flex items-center justify-center py-12"},mR={key:2,class:"flex flex-col items-center justify-center py-12 text-center px-4"},pR={class:"text-sm font-mono text-retro-red"},gR={key:3,class:"flex flex-col items-center justify-center py-12 text-center"},OR={key:4,class:"h-full flex flex-col"},vR=["innerHTML"],bR=Ie({__name:"SpecViewerModal",props:{feature:{}},emits:["close"],setup(r,{emit:e}){const t=r,n=e,s=bo(),{renderMarkdown:i}=tp(),o=Q(t.feature.files[0]?.filename||""),a=Q("document"),l=Q(""),c=Q(!1),u=Q(null),h=Q(!1),f=Q(""),g=Q(!1),p=Q(null),O=Q(null),b=Q(!1),x=Q(null),k=Q(null),w=J(()=>{const G={critical:0,major:1,minor:2};return[...k.value?.alerts??[]].sort((j,ce)=>G[j.severity]-G[ce.severity])});function S(G){return G.status==="covered"?"text-retro-green border-retro-green/40 bg-retro-green/10":G.status==="partial"?"text-retro-yellow border-retro-yellow/40 bg-retro-yellow/10":"text-retro-red border-retro-red/40 bg-retro-red/10"}function P(G){return G.severity==="critical"?"text-retro-red border-retro-red/40 bg-retro-red/10":G.severity==="major"?"text-retro-yellow border-retro-yellow/40 bg-retro-yellow/10":"text-retro-cyan border-retro-cyan/40 bg-retro-cyan/10"}async function X(){b.value=!0,x.value=null;try{k.value=await $fetch(`/api/specs/traceability/${t.feature.id}`)}catch{x.value="Failed to load traceability data",k.value=null}finally{b.value=!1}}async function E(G=o.value){if(G){c.value=!0,u.value=null;try{const j=`/api/specs/${t.feature.id}/${G}`,ce=await $fetch(j);l.value=ce.content}catch{u.value="Failed to load file",l.value=""}finally{c.value=!1}}}function K(){E()}const le=J(()=>l.value?i(l.value):"");function oe(G){O.value=null,a.value="document",h.value&&(h.value=!1),o.value=G,E()}function N(){h.value&&U(),a.value="traceability",!k.value&&!b.value&&X()}async function I(G,j,ce){j&&(o.value!==G?(o.value=G,await E(G)):l.value||await E(G),a.value="document",h.value=!0,f.value=l.value,p.value=null,O.value={filename:G,line:j,requirementId:ce},await zt(),p.value=j)}function D(){f.value=l.value,p.value=null,h.value=!0}function U(){h.value=!1,f.value=""}async function z(){g.value=!0;try{const G=`/api/specs/${t.feature.id}/${o.value}`;await $fetch(G,{method:"PUT",body:{content:f.value}}),l.value=f.value,h.value=!1,s.success("Saved")}catch{s.error("Failed to save")}finally{g.value=!1}}function V(G){G.key==="Escape"&&(h.value?U():n("close"))}return gt(()=>{window.addEventListener("keydown",V),E(),X()}),$t(()=>{window.removeEventListener("keydown",V)}),(G,j)=>{const ce=$_;return v(),ge(Pr,{to:"body"},[d("div",C_,[d("div",{class:"absolute inset-0 bg-black/80",onClick:j[0]||(j[0]=H=>n("close"))}),d("div",Q_,[d("div",P_,[d("div",T_,[d("span",M_,A(r.feature.name),1),d("span",A_,A(r.feature.id),1)]),d("div",__,[m(h)?(v(),y(Se,{key:0},[d("button",{type:"button",class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-muted transition-colors",onClick:U}," Cancel "),d("button",{type:"button",class:"px-3 py-1 text-xs font-mono rounded border border-retro-cyan text-retro-cyan hover:bg-retro-cyan/10 transition-colors disabled:opacity-50",disabled:m(g),onClick:z},A(m(g)?"Saving...":"Save"),9,R_)],64)):m(a)==="document"&&m(l)&&!m(c)&&!m(u)?(v(),y("button",{key:1,type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Edit",onClick:D},[ee(m(mp),{class:"h-4 w-4"})])):Y("",!0),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close (ESC)",onClick:j[1]||(j[1]=H=>n("close"))},[ee(m(Ct),{class:"h-4 w-4"})])])]),d("div",B_,[d("button",{type:"button",class:Be(["px-4 py-2 text-xs font-mono border-b-2 transition-colors whitespace-nowrap flex items-center gap-1",[m(a)==="traceability"?"border-retro-magenta text-retro-magenta bg-retro-black":"border-transparent text-retro-muted hover:text-retro-text hover:bg-retro-panel"]]),onClick:N},[ee(m(xv),{class:"h-3.5 w-3.5"}),j[3]||(j[3]=Xe(" Traceability ",-1))],2),(v(!0),y(Se,null,ze(r.feature.files,H=>(v(),y("button",{key:H.filename,type:"button",class:Be(["px-4 py-2 text-xs font-mono border-b-2 transition-colors whitespace-nowrap",[m(a)==="document"&&m(o)===H.filename?"border-retro-cyan text-retro-cyan bg-retro-black":"border-transparent text-retro-muted hover:text-retro-text hover:bg-retro-panel"]]),onClick:F=>oe(H.filename)},A(H.label),11,Z_))),128))]),d("div",E_,[m(a)==="traceability"?(v(),y("div",D_,[m(b)?(v(),y("div",L_,[...j[4]||(j[4]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading traceability...",-1)])])):m(x)?(v(),y("div",X_,[d("p",I_,A(m(x)),1),d("button",{type:"button",class:"mt-3 px-3 py-1.5 text-xs font-mono bg-retro-panel border border-retro-border rounded text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:X}," Retry ")])):m(k)?(v(),y("div",V_,[m(O)?(v(),y("div",z_," Jump target: "+A(m(O).requirementId)+" → "+A(m(O).filename)+":"+A(m(O).line),1)):Y("",!0),d("div",N_,[d("div",W_,[j[5]||(j[5]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"FR total",-1)),d("p",q_,A(m(k).summary.frTotal),1)]),d("div",j_,[j[6]||(j[6]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Plan coverage",-1)),d("p",Y_,A(m(k).summary.frWithPlan)+"/"+A(m(k).summary.frTotal),1)]),d("div",F_,[j[7]||(j[7]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Task mapping",-1)),d("p",U_,A(m(k).summary.frWithTasks)+"/"+A(m(k).summary.frTotal),1)]),d("div",G_,[j[8]||(j[8]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Fully covered",-1)),d("p",H_,A(m(k).summary.frFullyCovered)+"/"+A(m(k).summary.frTotal),1)]),d("div",K_,[j[9]||(j[9]=d("p",{class:"text-[11px] font-mono text-retro-subtle"},"Task progress",-1)),d("p",J_,A(m(k).summary.taskCompleted)+"/"+A(m(k).summary.taskTotal),1)])]),d("div",eR,[d("div",tR,[j[10]||(j[10]=d("h3",{class:"text-xs font-mono text-retro-text"},"Gap Alerts",-1)),d("span",rR,A(m(w).length)+" issues",1)]),m(w).length===0?(v(),y("div",nR," No traceability gaps detected. ")):(v(),y("div",sR,[(v(!0),y(Se,null,ze(m(w),H=>(v(),y("div",{key:H.id,class:Be(["rounded border px-2.5 py-2 text-xs font-mono",P(H)])},[d("span",iR,A(H.severity),1),d("span",null,A(H.message),1)],2))),128))]))]),d("div",oR,[d("div",aR,[j[11]||(j[11]=d("div",{class:"grid grid-cols-[140px_1fr_1fr_1fr_120px] gap-2 text-[11px] font-mono text-retro-subtle px-2 pb-2 border-b border-retro-border"},[d("span",null,"Requirement"),d("span",null,"Spec"),d("span",null,"Plan"),d("span",null,"Tasks"),d("span",null,"Progress")],-1)),(v(!0),y(Se,null,ze(m(k).requirements,H=>(v(),y("div",{key:H.id,class:"grid grid-cols-[140px_1fr_1fr_1fr_120px] gap-2 items-center px-2 py-2 border-b border-retro-border/60 text-xs font-mono"},[d("span",lR,A(H.id),1),d("button",{type:"button",class:"h-6 rounded border border-retro-green/40 bg-retro-green/10 flex items-center px-2 text-retro-green disabled:opacity-50 disabled:cursor-not-allowed",disabled:!H.locations.specLine,onClick:F=>I("spec.md",H.locations.specLine,H.id)},[d("span",null,A(H.locations.specLine?`L${H.locations.specLine}`:"Defined"),1)],8,cR),d("button",{type:"button",class:Be(["h-6 rounded border flex items-center px-2 disabled:opacity-50 disabled:cursor-not-allowed",H.inPlan?"text-retro-cyan border-retro-cyan/40 bg-retro-cyan/10":"text-retro-subtle border-retro-border bg-retro-black/50"]),disabled:!H.locations.planLine,onClick:F=>I("plan.md",H.locations.planLine,H.id)},[d("span",null,A(H.locations.planLine?`L${H.locations.planLine}`:H.inPlan?"Linked":"Missing"),1)],10,uR),d("button",{type:"button",class:Be(["h-6 rounded border flex items-center px-2 disabled:opacity-50 disabled:cursor-not-allowed",S(H)]),disabled:H.locations.taskLines.length===0,onClick:F=>I("tasks.md",H.locations.taskLines[0],H.id)},[d("span",null,A(H.locations.taskLines.length>0?`L${H.locations.taskLines[0]}`:H.inTasks?"Mapped":"Missing"),1)],10,hR),d("span",dR,A(H.taskCompleted)+"/"+A(H.taskTotal),1)]))),128))])])])):Y("",!0)])):m(c)?(v(),y("div",fR,[...j[12]||(j[12]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading...",-1)])])):m(u)?(v(),y("div",mR,[d("p",pR,A(m(u)),1),d("button",{type:"button",class:"mt-3 px-3 py-1.5 text-xs font-mono bg-retro-panel border border-retro-border rounded text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:K}," Retry ")])):r.feature.files.length===0?(v(),y("div",gR,[...j[13]||(j[13]=[d("p",{class:"text-sm font-mono text-retro-muted"},"No spec files found",-1),d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," This feature directory has no .md files ",-1)])])):m(h)?(v(),y("div",OR,[ee(ce,{modelValue:m(f),"onUpdate:modelValue":j[2]||(j[2]=H=>Je(f)?f.value=H:null),"line-to-reveal":m(p),class:"flex-1"},null,8,["modelValue","line-to-reveal"])])):(v(),y("div",{key:5,class:"spec-markdown p-6 text-sm font-mono text-retro-text max-w-4xl mx-auto",innerHTML:m(le)},null,8,vR))])])])])}}}),xR={class:"w-full max-w-2xl rounded-xl border border-retro-border/80 bg-retro-black shadow-[0_24px_70px_rgba(0,0,0,0.55)] overflow-hidden"},yR={class:"flex items-center justify-between px-4 py-2 border-b border-retro-border/60 bg-retro-dark/70"},kR={class:"flex items-center gap-2 px-4 py-3 border-b border-retro-border/60"},wR={class:"flex items-center justify-between px-4 py-1.5 border-b border-retro-border/40 bg-retro-dark/30 text-[10px] font-mono text-retro-subtle"},SR={class:"flex items-center gap-3"},$R={class:"inline-flex items-center gap-1"},CR={key:0},QR={key:0,class:"truncate max-w-[42%]"},PR={class:"max-h-[58vh] overflow-y-auto"},TR={key:0,class:"px-4 py-3 text-xs font-mono text-retro-subtle animate-pulse"},MR={key:1,class:"px-4 py-4 text-xs font-mono text-retro-subtle"},AR={key:2,class:"px-4 py-4 text-xs font-mono text-retro-subtle"},_R={key:3,class:"px-4 py-3 text-xs font-mono text-retro-red"},RR={key:4,class:"py-2 px-2 space-y-2"},BR=["onMouseenter","onClick"],ZR={class:"flex items-center justify-between gap-3 text-[10px] font-mono"},ER={class:"text-retro-cyan/90"},DR={class:"text-retro-subtle truncate"},LR=["innerHTML"],XR={key:5,class:"px-4 py-3 text-xs font-mono text-retro-subtle"},IR={class:"flex items-center justify-between gap-3 px-4 py-2 border-t border-retro-border/60 bg-retro-dark/50 text-[11px] font-mono text-retro-subtle"},VR={key:0,class:"text-retro-yellow"},zR={key:0,class:"px-4 pb-3 text-xs font-mono text-retro-red flex items-center gap-2"},NR=400,WR=Ie({__name:"FeatureSearchModal",props:{availableFeatureIds:{}},emits:["close","select"],setup(r,{emit:e}){const t=r,n=e,{renderMarkdown:s}=tp(),i=Q(""),o=Q(!1),a=Q(!1),l=Q(null),c=Q(null),u=Q(null),h=Q(null),f=Q([]),g=Q(-1),p=Q(null),O=Q([]);let b=null,x=0;const k=J(()=>i.value.trim()),w=J(()=>{const z=k.value.toLowerCase().split(/\s+/).map(V=>V.trim()).filter(V=>V.length>=2);return Array.from(new Set(z)).slice(0,8)}),S=J(()=>l.value||c.value?"error":!k.value&&a.value?"empty-query":f.value.length>0?"results":a.value&&!o.value?"no-results":"idle");function P(z){return{featureId:z.chunk.featureId,sourcePath:z.chunk.sourcePath,headingHierarchy:z.chunk.headingHierarchy,snippet:z.chunk.content,matchType:z.matchType,score:z.score,lineStart:z.chunk.lineStart,lineEnd:z.chunk.lineEnd}}async function X(){const z=k.value;if(c.value=null,!z){a.value=!0,u.value=null,h.value=null,l.value=null,f.value=[],g.value=-1;return}const V=++x;a.value=!0,l.value=null,o.value=!0;try{const G=await $fetch("/api/specs/search",{query:{q:z,mode:"keyword",limit:20}});if(V!==x)return;u.value=G.warning??null,h.value=G.searchTime,f.value=G.results.map(P),g.value=f.value.length>0?0:-1}catch(G){if(V!==x)return;const j=G instanceof Error?G.message:"Failed to search specs";l.value=j,h.value=null,f.value=[],g.value=-1}finally{V===x&&(o.value=!1)}}Ve(i,()=>{l.value=null,c.value=null,b&&clearTimeout(b),b=setTimeout(()=>{X()},NR)}),Ve(f,()=>{O.value=[]}),Ve(g,async z=>{z<0||(await zt(),O.value[z]?.scrollIntoView({block:"nearest"}))});function E(){n("close")}function K(z){const V=f.value[z];if(V){if(!t.availableFeatureIds.includes(V.featureId)){c.value="Feature unavailable";return}n("select",V.featureId),n("close")}}function le(z){if(f.value.length===0)return;if(g.value<0){g.value=0;return}const V=g.value+z;if(V<0){g.value=f.value.length-1;return}if(V>=f.value.length){g.value=0;return}g.value=V}function oe(z){if(z.key==="ArrowDown"){z.preventDefault(),le(1);return}if(z.key==="ArrowUp"){z.preventDefault(),le(-1);return}if(z.key==="Enter"){z.preventDefault(),g.value>=0&&K(g.value);return}z.key==="Escape"&&(z.preventDefault(),E())}function N(z){z.target===z.currentTarget&&E()}function I(z,V){if(!V){O.value[z]=null;return}if(V instanceof HTMLElement){O.value[z]=V;return}const G=V.$el;O.value[z]=G instanceof HTMLElement?G:null}function D(){X()}function U(z){const V=z.trim();if(!V)return"";const G=V.length>700?`${V.slice(0,700)}...`:V,j=s(G);if(w.value.length===0)return j;const ce=w.value.map(F=>F.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),H=new RegExp(`(${ce.join("|")})`,"gi");return j.split(/(<[^>]+>)/g).map(F=>F.startsWith("<")?F:F.replace(H,"<mark>$1</mark>")).join("")}return gt(()=>{zt(()=>{p.value?.focus()})}),$t(()=>{b&&clearTimeout(b)}),(z,V)=>(v(),ge(Pr,{to:"body"},[ee(On,{appear:"","enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition duration-120 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ct(()=>[d("div",{class:"fixed inset-0 z-50 flex items-start justify-center pt-16 px-4 bg-black/75 backdrop-blur-[1px]",onClick:N},[ee(On,{appear:"","enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0 translate-y-2 scale-[0.99]","enter-to-class":"opacity-100 translate-y-0 scale-100","leave-active-class":"transition duration-120 ease-in","leave-from-class":"opacity-100 translate-y-0 scale-100","leave-to-class":"opacity-0 translate-y-1 scale-[0.995]"},{default:ct(()=>[d("div",xR,[d("div",yR,[V[1]||(V[1]=d("div",{class:"flex items-center gap-2"},[d("span",{class:"inline-flex items-center rounded px-2 py-0.5 text-[10px] font-mono border border-retro-cyan/50 text-retro-cyan bg-retro-cyan/10"}," Command Palette "),d("span",{class:"text-[10px] font-mono text-retro-subtle"},"Global spec search")],-1)),d("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close (Escape)",onClick:E},[ee(m(Ct),{class:"h-4 w-4"})])]),d("div",kR,[ee(m(fs),{class:"h-4 w-4 text-retro-cyan"}),je(d("input",{ref_key:"inputRef",ref:p,"onUpdate:modelValue":V[0]||(V[0]=G=>Je(i)?i.value=G:null),type:"text",placeholder:"Search specs across all features...",class:"flex-1 bg-transparent text-sm font-mono text-retro-text placeholder:text-retro-subtle focus:outline-none",onKeydown:oe},null,544),[[Zt,m(i)]]),V[2]||(V[2]=d("span",{class:"text-[10px] font-mono text-retro-subtle border border-retro-border/60 rounded px-1.5 py-0.5"},"400ms",-1))]),d("div",wR,[d("div",SR,[d("span",$R,[ee(m(Os),{class:"h-3.5 w-3.5"}),Xe(" "+A(m(f).length)+" results ",1)]),m(h)!==null?(v(),y("span",CR,A(m(h))+"ms",1)):Y("",!0)]),m(k)?(v(),y("span",QR,"“"+A(m(k))+"”",1)):Y("",!0)]),d("div",PR,[m(o)?(v(),y("div",TR," Searching... ")):m(S)==="empty-query"?(v(),y("div",MR," Enter a search term to search across all feature specs. ")):m(S)==="no-results"?(v(),y("div",AR," No matching features found. ")):m(S)==="error"?(v(),y("div",_R,[d("p",null,A(m(c)||m(l)),1),m(l)?(v(),y("button",{key:0,type:"button",class:"mt-2 px-2 py-1 rounded border border-retro-border text-retro-muted hover:text-retro-cyan hover:border-retro-cyan transition-colors",onClick:D}," Retry ")):Y("",!0)])):m(f).length>0?(v(),y("ul",RR,[(v(!0),y(Se,null,ze(m(f),(G,j)=>(v(),y("li",{key:`${G.featureId}:${G.sourcePath}:${j}`},[d("button",{type:"button",ref_for:!0,ref:ce=>I(j,ce),class:Be(["w-full text-left px-4 py-3 min-h-[132px] rounded-lg border border-retro-border/40 border-l-2 transition-colors",j===m(g)?"border-retro-cyan bg-retro-panel/95 text-retro-text shadow-[0_0_0_1px_rgba(34,211,238,0.18)]":"text-retro-muted hover:text-retro-text hover:bg-retro-panel/90"]),onMouseenter:ce=>g.value=j,onClick:ce=>K(j)},[d("div",ZR,[d("span",ER,A(G.featureId),1),d("span",DR,A(G.sourcePath)+":"+A(G.lineStart)+"-"+A(G.lineEnd),1)]),d("div",{class:"snippet-markdown mt-2 max-h-20 overflow-hidden text-xs text-retro-text",innerHTML:U(G.snippet)},null,8,LR),V[3]||(V[3]=d("div",{class:"mt-2 text-[10px] font-mono text-retro-subtle"}," Select feature ",-1))],42,BR)]))),128))])):(v(),y("div",XR," Start typing to search. "))]),d("div",IR,[V[4]||(V[4]=d("div",{class:"flex items-center gap-2"},[d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"↑↓ move"),d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"Enter select"),d("span",{class:"border border-retro-border/70 rounded px-1.5 py-0.5"},"Esc close")],-1)),m(u)?(v(),y("span",VR,A(m(u)),1)):Y("",!0)]),m(c)?(v(),y("div",zR,[ee(m(En),{class:"h-3.5 w-3.5"}),d("span",null,A(m(c)),1)])):Y("",!0)])]),_:1})])]),_:1})]))}}),qR=ws(WR,[["__scopeId","data-v-5199b408"]]);function jR(r){return/^\/speckit\.(clarify|plan|tasks|implement)(\s|$)/.test(r)}function YR(r=Date.now,e=Math.random){return`req-${r()}-${e().toString(36).slice(2,8)}`}function Wm(r=Date.now){return`session-${r()}`}function Aa(r,e=!1){const t={};return(!e||r?.hasWorktree)&&r?.worktreePath&&(t.cwd=r.worktreePath,t.worktreeBranch=r.worktreeBranch),r?.baseBranch&&(t.baseBranch=r.baseBranch),r?.featureId&&(t.featureId=r.featureId),Object.keys(t).length>0?t:void 0}function C1(r){if(r.file_path)return String(r.file_path);if(r.path)return String(r.path);if(r.command)return String(r.command).slice(0,50);if(r.pattern)return String(r.pattern);for(const e of Object.values(r))if(typeof e=="string"&&e.length<100)return e;return""}function FR(r){switch(r){case 1e3:return"Normal closure";case 1001:return"Endpoint is going away (server shutdown or page navigation)";case 1002:return"Protocol error";case 1003:return"Unsupported data";case 1005:return"No status code received from peer (close frame had no code)";case 1006:return"Abnormal closure (connection dropped without close frame)";case 1007:return"Invalid payload data";case 1008:return"Policy violation";case 1009:return"Message too big";case 1010:return"Missing required extension";case 1011:return"Internal server error";case 1012:return"Service restart";case 1013:return"Try again later (temporary overload)";case 1015:return"TLS handshake failure";default:return r>=4e3&&r<=4999?"Application-specific close code":"Unknown close code"}}function UR(r,e){const t=[];return r.reason?t.push(r.reason):t.push(FR(r.code)),e?.lastServerError?t.push(`Last server error: ${e.lastServerError}`):e?.lastSocketError&&t.push(`Last socket error: ${e.lastSocketError}`),t.push(`wasClean: ${r.wasClean?"yes":"no"}`),t.join(" | ")}function qm(r,e="Permission"){const t=r||"",n=t.match(/write to (.+?)(?:[\s,?]|$)/i),s=t.match(/read (.+?)(?:[\s,?]|$)/i),i=t.match(/run (.+?)(?:[?,]|$)/i);return n?.[1]?{tool:"Write",description:t,filePath:n[1].trim()}:s?.[1]?{tool:"Read",description:t,filePath:s[1].trim()}:i?.[1]?{tool:"Bash",description:t,command:i[1].trim()}:{tool:e,description:t}}function GR(){return typeof document>"u"||typeof document.hasFocus!="function"?!1:document.visibilityState==="visible"&&document.hasFocus()}function HR(){return typeof window>"u"?"":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/_ws`}function wc(r,e){return`${r}:${e}`}function fa(r,e){for(const t of r)if(t.type==="tool_use"){const n=t;(n.status==="running"||n.status==="pending")&&(n.status=e)}}function KR(){const r=new Map;function e(a,l,c){r.set(a,{featureId:l,queue:[...c]})}function t(a){a?r.delete(a):r.clear()}function n(a){return r.get(a)}function s(a){const l=r.get(a);if(!l||l.queue.length===0)return null;const c=l.queue.shift();return l.queue.length===0&&r.delete(a),{featureId:l.featureId,step:c}}function i(a){return r.has(a)}function o(){return r.size}return{enable:e,disable:t,get:n,popNextStep:s,has:i,size:o}}function Q1(r,e=Ht){return{id:e(),type:"session_init",model:r.model,tools:r.tools,permissionMode:r.permissionMode,cwd:r.cwd}}function P1(r,e=Ht){return{id:r.blockId||e(),type:"text",text:r.text||""}}function T1(r,e=Ht){return{id:r.blockId||e(),type:"thinking",thinking:r.thinking||""}}function M1(r,e=Ht){if(!r.toolUseId||!r.name)return null;const t=r.blockId||e();return{block:{id:t,type:"tool_use",toolUseId:r.toolUseId,name:r.name,input:{},inputSummary:"",status:"running"},tracking:{blockId:t,toolUseId:r.toolUseId,name:r.name,inputJson:""},index:r.index??0}}function A1(r,e=Ht){return{id:e(),type:"tool_result",toolUseId:r.toolUseId,content:r.content||"",isError:!!r.isError}}function _1(r,e=Ht){return r.subtype!=="success"||!r.usage?null:{id:e(),type:"result_summary",totalCostUsd:r.totalCostUsd??0,durationMs:r.durationMs??0,numTurns:r.numTurns??0,usage:r.usage}}function fl(r,e,t){if(e!==void 0){const n=r.get(e);if(n)return n}if(t){for(const[,n]of r)if(n.blockId===t)return n}}function JR(r,e=Ht){const t=[],n=new Map,s=[];let i="",o=null,a=null,l="streaming",c=!1;for(const u of r){if(u.type==="done"){u.denied||u.aborted?(fa(t,"error"),l="stopped"):u.awaitingUserInput?l="complete":l==="error"||l==="stopped"?fa(t,"error"):(fa(t,"complete"),l="complete"),c=!0;continue}if(u.type==="error"){fa(t,"error"),l="error";continue}if(u.type!=="ui_event"||!u.event)continue;const h=u.event;switch(h.sessionId&&s.push(h.sessionId),h.type){case"session_init":{t.push(Q1(h,e));break}case"block_start":{if(h.blockType==="text"){const f=P1(h,e);t.push(f),o=f.id,h.text&&(i+=h.text)}else if(h.blockType==="thinking"){const f=T1(h,e);t.push(f),a=f.id}else if(h.blockType==="tool_use"){const f=M1(h,e);f&&(t.push(f.block),n.set(f.index,f.tracking))}break}case"block_delta":{if(h.text&&o){const f=t.find(g=>g.id===o);f&&f.type==="text"&&(f.text+=h.text,i+=h.text)}if(h.thinking&&a){const f=t.find(g=>g.id===a);f&&f.type==="thinking"&&(f.thinking+=h.thinking)}if(h.partialJson){const f=fl(n,h.index,h.blockId);f&&(f.inputJson+=h.partialJson)}break}case"block_end":{const f=fl(n,h.index,h.blockId);if(!f)o&&(o=null),a&&(a=null);else{let g={};try{g=JSON.parse(f.inputJson)}catch{}const p=t.find(O=>O.id===f.blockId);if(p&&p.type==="tool_use"){const O=p;O.input=g,O.inputSummary=C1(g),O.status="pending"}for(const[O,b]of n)if(b===f){n.delete(O);break}}break}case"tool_result":{const f=t.find(g=>g.type==="tool_use"&&g.toolUseId===h.toolUseId);f&&f.type==="tool_use"&&(f.status=h.isError?"error":"complete"),t.push(A1(h,e));break}case"turn_result":{h.subtype!=="success"&&(l="error");const f=_1(h,e);f&&t.push(f);break}case"error":{l="error";break}}}return{contentBlocks:t,flatText:i,currentTextBlockId:o,currentThinkingBlockId:a,activeTools:n,finalStatus:l,isDone:c,providerSessionIds:s}}function eB(r,e,t=Date.now){return{ws:r,currentMessageId:"",conversationId:e,activeTools:new Map,currentTextBlockId:null,currentThinkingBlockId:null,healthCheckInterval:null,lastMessageTime:t(),lastServerError:null,lastSocketError:null,isReplaying:!1,replayBuffer:[]}}function Sc(r,e,t){const n=r.get(e);return!!n&&n.ws!==t}function tB(r,e){const t=r.get(e);return t?t.ws.readyState===WebSocket.OPEN?{kind:"open",conn:t}:{kind:"stale",conn:t}:{kind:"none"}}const dt=new Map;let ma=0;const As=KR(),Xs=new Map,pa=new Set;function ga(r){if(r){const e=Xs.get(r);e&&(clearTimeout(e),Xs.delete(r))}else{for(const e of Xs.values())clearTimeout(e);Xs.clear()}}const rB=3e4,R1=18e4,nB=Math.round(R1/1e3);function _l(){const r=vr(),e=xo();ma++;function t(M){const R=r.conversations.find(Z=>Z.id===M)?.title?.trim()||"Chat";return new Notification("Spec Cat",{body:`${R} response completed.`,tag:`chat-complete-${M}`})}async function n(M){if(!(typeof window>"u"||typeof Notification>"u")&&!GR()){if(Notification.permission==="granted"){t(M);return}if(Notification.permission==="default")try{await Notification.requestPermission()==="granted"&&t(M)}catch(T){console.warn("[useChatStream] Failed to request browser notification permission:",T)}}}function s(M){M.healthCheckInterval&&(clearInterval(M.healthCheckInterval),M.healthCheckInterval=null)}function i(M){s(M),M.lastMessageTime=Date.now(),M.healthCheckInterval=Iu(()=>{const T=M.conversationId;if(dt.get(T)!==M){s(M);return}if(M.ws.readyState!==WebSocket.OPEN){console.warn(`[useChatStream] Health check: WebSocket not open for ${T}`),s(M),r.isConversationStreaming(T)&&(c(M.currentMessageId,T,"error"),r.updateMessage(M.currentMessageId,{status:"error"},T),r.setSessionError("Connection lost during streaming",T),r.endSession(T),r.endConversationStreaming(T)),dt.delete(T);return}if(r.isConversationStreaming(T)){const R=Date.now()-M.lastMessageTime;R>R1&&(console.warn(`[useChatStream] Health check: streaming timeout for ${T} (${Math.round(R/1e3)}s)`),s(M),c(M.currentMessageId,T,"error"),r.updateMessage(M.currentMessageId,{status:"error"},T),r.setSessionError(`Streaming timed out — no response from server for ${nB} seconds`,T),r.endSession(T),r.endConversationStreaming(T),M.ws.close(),dt.delete(T))}},rB)}function o(M,T){return r.conversations.find(Z=>Z.id===M)?.messages.find(Z=>Z.id===T)?.status}function a(M,T=!0){const R=dt.get(M);R&&(s(R),T&&R.ws.readyState!==WebSocket.CLOSED&&R.ws.readyState!==WebSocket.CLOSING&&R.ws.close(),dt.delete(M))}function l(M,T,R){!R||!M.currentTextBlockId||(r.updateBlockWithSave(M.currentMessageId,M.currentTextBlockId,Z=>{Z.type==="text"&&(Z.text+=R)},T,{syncContent:!1}),r.appendToMessage(M.currentMessageId,R,T))}function c(M,T,R){const be=r.conversations.find(Qe=>Qe.id===T)?.messages.find(Qe=>Qe.id===M);if(be?.contentBlocks)for(const Qe of be.contentBlocks)Qe.type==="tool_use"&&(Qe.status==="running"||Qe.status==="pending")&&r.updateBlockById(M,Qe.id,te=>{te.type==="tool_use"&&(te.status=R)},T)}async function u(M){try{(await h(M)).send(JSON.stringify({type:"reset_context"})),r.clearProviderSession(M),console.log("[useChatStream] Context reset requested for conversation:",M)}catch(T){throw console.error("[useChatStream] Failed to reset context:",T),T}}function h(M){return new Promise((T,R)=>{let Z=!1;const be=xe=>{Z||(Z=!0,T(xe))},Qe=xe=>{Z||(Z=!0,R(xe))},te=tB(dt,M);if(te.kind==="open"){be(te.conn.ws);return}te.kind==="stale"&&(s(te.conn),te.conn.ws.close(),dt.delete(M));const se=HR(),ye=new WebSocket(se),q=eB(ye,M);dt.set(M,q),ye.onopen=()=>{be(ye)},ye.onerror=xe=>{if(console.error(`[useChatStream] WebSocket error for conversation ${M}:`,xe),Sc(dt,M,ye))return;const Pe=dt.get(M);Pe&&(Pe.lastSocketError="Browser reported a WebSocket transport error (network/proxy/server)"),r.isConversationStreaming(M)&&(Pe?.currentMessageId&&(c(Pe.currentMessageId,M,"error"),r.updateMessage(Pe.currentMessageId,{status:"error"},M)),r.setSessionError("Connection error during streaming",M),r.endSession(M),r.endConversationStreaming(M)),dt.delete(M),Qe(new Error("WebSocket connection failed. Server may be unavailable."))},ye.onclose=xe=>{if(Sc(dt,M,ye))return;const Pe=dt.get(M);if(Pe&&s(Pe),dt.delete(M),As.disable(M),!Z){Qe(new Error(`WebSocket closed before connection was established (code: ${xe.code})`));return}if(r.isConversationStreaming(M)){Pe?.currentMessageId&&(c(Pe.currentMessageId,M,"error"),r.updateMessage(Pe.currentMessageId,{status:"error"},M));const rt=UR(xe,Pe);r.setSessionError(`Connection closed: ${rt} (code: ${xe.code})`,M),r.endSession(M),r.endConversationStreaming(M)}},ye.onmessage=xe=>{Sc(dt,M,ye)||p(xe.data,M)}})}async function f(M,T=3){for(let R=0;R<T;R++){const Z=r.conversations.find(be=>be.id===M);if(Z)return Z;R<T-1&&await new Promise(be=>setTimeout(be,100))}console.error("[useChatStream] Conversation not found after retries:",M)}function g(M,T){const R=r.conversations.find(be=>be.id===M);if(!R)return null;const Z=R.messages.findIndex(be=>be.id===T);if(Z<=0)return null;for(let be=Z-1;be>=0;be--){const Qe=R.messages[be];if(Qe.role==="user"&&Qe.content.trim().length>0)return Qe.content}return null}async function p(M,T){const R=dt.get(T);if(R){R.lastMessageTime=Date.now();try{r.pushDebugEvent({direction:"in",channel:"ws",eventType:"ws.raw",payload:M},T);const Z=JSON.parse(M);if(r.pushDebugEvent({direction:"in",channel:"ws",eventType:Z.type,payload:Z},T),R.isReplaying&&((Z.type==="ui_event"||Z.type==="done"||Z.type==="error")&&R.replayBuffer.push(Z),Z.type!=="replay_end"))return;if(Z.type==="error")return await P(Z,R,T),void 0;if(Z.type==="done"){await X(Z,R,T);return}if(Z.type==="pong")return;if(Z.type==="session_reset"){console.warn(`[useChatStream] Session reset for ${T}:`,Z.reason),r.setProviderSessionId("",T),z(R.currentMessageId,`
|
|
40
|
-
|
|
41
|
-
> **Session Reset**: Previous session could not be resumed. Retrying with a fresh session...
|
|
42
|
-
|
|
43
|
-
`,T);return}if(Z.type==="worktree_recovered"){console.log(`[useChatStream] Worktree recovered for ${T}`),z(R.currentMessageId,`
|
|
44
|
-
|
|
45
|
-
> **Worktree recovered**: The work directory was restored after a system restart.
|
|
46
|
-
|
|
47
|
-
`,T);return}if(Z.type==="context_reset"){console.log(`[useChatStream] Context reset confirmed for ${T}`);return}if(Z.type==="aborted"){console.log(`[useChatStream] Abort confirmed for ${T}`);return}if(Z.type==="subscribed"){console.log(`[useChatStream] Subscribed to ${T}`,Z.jobId?`(job: ${Z.jobId}, status: ${Z.jobStatus})`:"(no active job)"),Z.jobId||(r.endSession(T),r.endConversationStreaming(T));return}if(Z.type==="replay_start"){console.log(`[useChatStream] Replay start for ${T}: ${Z.eventCount} events from job ${Z.jobId}`),R.isReplaying=!0,R.replayBuffer=[];return}if(Z.type==="replay_end"){console.log(`[useChatStream] Replay end for ${T}: nextCursor=${Z.nextCursor}`),D(R,T),R.isReplaying=!1,R.replayBuffer=[];return}if(Z.type==="notification"){N(Z);return}if(Z.type==="permission_request"){x(Z,R,T);return}if(Z.type==="permission_prompt"&&Z.text){k(Z,R,T);return}Z.type==="ui_event"&&Z.event?I(Z.event,T):Z.type==="provider_json"&&Z.data}catch(Z){console.error(`[useChatStream] Failed to parse WebSocket message for ${T}:`,Z,"Raw data:",M?.slice(0,200)),c(R.currentMessageId,T,"error"),r.updateMessage(R.currentMessageId,{status:"error"},T),r.setSessionError(`Failed to parse server response: ${Z instanceof Error?Z.message:"Invalid JSON"}`,T),r.endSession(T),r.endConversationStreaming(T),ce(T),r.saveConversation(T,!0),a(T)}}}function O(M,T,R){if(M.text&&T.currentTextBlockId&&l(T,R,M.text),M.thinking&&T.currentThinkingBlockId&&r.updateBlockWithSave(T.currentMessageId,T.currentThinkingBlockId,Z=>{Z.type==="thinking"&&(Z.thinking+=M.thinking)},R,{syncContent:!1}),M.partialJson){const Z=fl(T.activeTools,M.index,M.blockId);Z&&(Z.inputJson+=M.partialJson)}}function b(M,T,R){const Z=fl(T.activeTools,M.index,M.blockId);if(!Z){T.currentTextBlockId&&(T.currentTextBlockId=null),T.currentThinkingBlockId&&(T.currentThinkingBlockId=null);return}let be={};try{be=JSON.parse(Z.inputJson)}catch{}if(Z.name==="ExitPlanMode"){const Qe={allowedPrompts:be.allowedPrompts};r.setPendingPlanApproval(Qe,R)}r.updateBlockWithSave(T.currentMessageId,Z.blockId,Qe=>{if(Qe.type==="tool_use"){const te=Qe;te.input=be,te.inputSummary=C1(be),te.status="pending"}},R);for(const[Qe,te]of T.activeTools)if(te===Z){T.activeTools.delete(Qe);break}}function x(M,T,R){s(T),r.endConversationStreaming(R);const Z=qm(M.description||"",M.tool||"Permission");r.setPendingPermission(Z,R);let be=`
|
|
48
|
-
|
|
49
|
-
**Permission Required**: ${Z.tool}`;Z.filePath&&(be+=` - ${Z.filePath}`),z(T.currentMessageId,be+`
|
|
50
|
-
`,R)}function k(M,T,R){s(T),r.endConversationStreaming(R);const Z=qm(M.text||"","Permission");r.setPendingPermission(Z,R);const be=`
|
|
51
|
-
|
|
52
|
-
**${Z.tool}**: ${Z.filePath||Z.command||Z.description}
|
|
53
|
-
`;z(T.currentMessageId,be,R)}const w=/codex cannot access session files|failed to clean up stale arg0 temp dirs: Permission denied|failed to initialize rollout recorder: Permission denied|failed to create session: Permission denied|\/\.codex\/.*permission denied/i,S=/state db missing rollout path for thread/i;async function P(M,T,R){console.error(`[useChatStream] Server error for ${R}:`,M.error);const Z=M.error||"Unknown server error";T.lastServerError=Z;const be=w.test(Z);if(S.test(Z)&&!be){const te=wc(R,T.currentMessageId);if(!pa.has(te)){const se=g(R,T.currentMessageId);if(se){pa.add(te),r.setProviderSessionId("",R),z(T.currentMessageId,`
|
|
54
|
-
|
|
55
|
-
> **Session Reset**: Codex resume state was corrupted. Retrying once with a fresh session...
|
|
56
|
-
|
|
57
|
-
`,R);try{const ye=r.conversations.find(xe=>xe.id===R),q=Aa(ye);return await V(se,T.currentMessageId,R,q),!0}catch(ye){console.error(`[useChatStream] Rollout-path recovery retry failed for ${R}:`,ye)}}}}return s(T),c(T.currentMessageId,R,"error"),r.updateMessage(T.currentMessageId,{status:"error"},R),S.test(Z)&&r.setProviderSessionId("",R),pa.delete(wc(R,T.currentMessageId)),r.setSessionError(Z,R),r.endSession(R),r.endConversationStreaming(R),ce(R),r.saveConversation(R,!0),a(R),!1}async function X(M,T,R){s(T);const Z=o(R,T.currentMessageId);if(pa.delete(wc(R,T.currentMessageId)),M.denied||M.aborted){c(T.currentMessageId,R,"error"),r.updateMessage(T.currentMessageId,{status:"stopped"},R),E(T,R);return}if(M.awaitingUserInput){r.completeMessageWithSave(T.currentMessageId,R),r.endSession(R),r.endConversationStreaming(R),n(R),r.clearPendingPermission(R),r.saveConversation(R,!0),T.activeTools.clear();return}if(Z==="error"||Z==="stopped"){c(T.currentMessageId,R,"error"),E(T,R);return}c(T.currentMessageId,R,"complete"),r.completeMessageWithSave(T.currentMessageId,R),r.endSession(R),r.endConversationStreaming(R),n(R);const be=await f(R),Qe=K(be,R,T),te=As.popNextStep(R);te&&Qe.then(()=>{const se=setTimeout(()=>{Xs.delete(R),H(R,te.featureId,te.step)},1500);ga(R),Xs.set(R,se)}),r.clearPendingPermission(R),r.saveConversation(R,!0),T.activeTools.clear()}function E(M,T){r.endSession(T),r.endConversationStreaming(T),ce(T),r.clearPendingPermission(T),M.activeTools.clear(),r.saveConversation(T,!0)}function K(M,T,R){return!M?.hasWorktree||!M.worktreePath?Promise.resolve():$fetch("/api/chat/worktree-commit",{method:"POST",body:{worktreePath:M.worktreePath,conversationId:T,previousBranch:M.worktreeBranch}}).then(Z=>M.previewBranch&&M.worktreePath?$fetch("/api/chat/preview-sync",{method:"POST",body:{previewBranch:M.previewBranch,worktreePath:M.worktreePath}}).then(be=>{if(!be.success)throw new Error(be.error||"Unknown preview sync failure");return Z}):Z).then(async Z=>{if(Z?.success&&Z.currentBranch!==M.worktreeBranch){const be=M.worktreeBranch||"unknown";r.updateWorktreeBranch(T,Z.currentBranch);const Qe=await r.syncConversationFeatureFromBranch(T),te=Z.deletedPreviousBranch?` and deleted \`${be}\``:"",se=Qe?` and linked to feature \`${Qe}\``:"";z(R.currentMessageId,`
|
|
58
|
-
|
|
59
|
-
> **Branch changed**: AI switched from \`${be}\` to \`${Z.currentBranch}\`${te}${se}
|
|
60
|
-
|
|
61
|
-
`,T)}else Z?.success&&M.worktreeBranch&&r.updateWorktreeBranch(T,M.worktreeBranch);return r.saveConversation(T,!1),Z}).catch(Z=>{console.warn("[useChatStream] Auto-commit/preview-sync failed:",Z)})}let le=null;const oe=500;function N(M){const T=M.notificationEvent,R=M.source;console.log(`[useChatStream] Global notification: ${T}`,{jobId:M.jobId,conversationId:M.conversationId,source:R,status:M.status}),(T==="job_created"&&R!=="user"||T==="job_completed"||T==="job_persisted")&&(le&&clearTimeout(le),le=setTimeout(()=>{le=null,r.refreshServerConversations()},oe))}function I(M,T){const R=dt.get(T);if(R)switch(r.pushDebugEvent({direction:"in",channel:"ui",eventType:M.type,payload:M},T),M.sessionId&&r.setProviderSessionId(M.sessionId,T),M.type){case"session_init":{U(R.currentMessageId,T),r.appendContentBlockWithSave(R.currentMessageId,Q1(M),T);break}case"block_start":{if(U(R.currentMessageId,T),M.blockType==="text"){const Z=P1(M);r.appendContentBlockWithSave(R.currentMessageId,Z,T),R.currentTextBlockId=Z.id}else if(M.blockType==="thinking"){const Z=T1(M);r.appendContentBlockWithSave(R.currentMessageId,Z,T),R.currentThinkingBlockId=Z.id}else if(M.blockType==="tool_use"){const Z=M1(M);Z&&(r.appendContentBlockWithSave(R.currentMessageId,Z.block,T),R.activeTools.set(Z.index,Z.tracking))}break}case"block_delta":{O(M,R,T);break}case"block_end":{b(M,R,T);break}case"tool_result":{U(R.currentMessageId,T);const Z=r.findToolUseBlock(R.currentMessageId,M.toolUseId,T);Z&&Z.type==="tool_use"&&r.updateBlockById(R.currentMessageId,Z.id,be=>{be.type==="tool_use"&&(be.status=M.isError?"error":"complete")},T),r.appendContentBlockWithSave(R.currentMessageId,A1(M),T);break}case"permission_request":{s(R),r.endConversationStreaming(T);const Z={tool:M.tool,description:M.description,input:M.input,tools:M.tools};r.setPendingPermission(Z,T),z(R.currentMessageId,`
|
|
62
|
-
|
|
63
|
-
**Permission Required**: ${Z.tool}
|
|
64
|
-
`,T);break}case"turn_result":{M.subtype!=="success"&&(r.updateMessage(R.currentMessageId,{status:"error"},T),ce(T),M.subtype==="max_turns"?r.setSessionError("Maximum conversation turns reached. Please start a new conversation.",T):r.setSessionError("Provider reported an execution error.",T));const Z=_1(M);Z&&(U(R.currentMessageId,T),r.appendContentBlockWithSave(R.currentMessageId,Z,T));break}case"error":{r.updateMessage(R.currentMessageId,{status:"error"},T),r.setSessionError(M.error,T);break}}}function D(M,T){const R=M.replayBuffer;if(R.length===0)return;const Z=JR(R);for(const be of Z.providerSessionIds)r.setProviderSessionId(be,T);r.batchSetMessageBlocks(M.currentMessageId,Z.contentBlocks,Z.flatText,Z.finalStatus,T),M.currentTextBlockId=Z.currentTextBlockId,M.currentThinkingBlockId=Z.currentThinkingBlockId,M.activeTools=Z.activeTools,Z.isDone&&(s(M),r.endSession(T),r.endConversationStreaming(T),n(T)),console.log(`[useChatStream] Replay batch processed: ${R.length} events → ${Z.contentBlocks.length} blocks, status=${Z.finalStatus}`)}function U(M,T){r.initContentBlocks(M,T)}function z(M,T,R){U(M,R);const Z={id:Ht(),type:"text",text:T};r.appendContentBlockWithSave(M,Z,R)}async function V(M,T,R,Z){if(typeof window>"u")return;const be=YR();try{const Qe=await h(R),te=dt.get(R);te&&(te.currentMessageId=T,te.activeTools.clear(),te.currentTextBlockId=null,te.currentThinkingBlockId=null,i(te)),jR(M)&&r.setProviderSessionId("",R);const ye=r.getProviderSessionId(R),q=r.conversations.find(At=>At.id===R),xe=q?.providerId||e.providerSelection.providerId||np,Pe=q?.providerModelKey||e.providerSelection.modelKey||rp;q&&(!q.providerId||!q.providerModelKey)&&(r.setConversationProviderSelection(R,xe,Pe),r.saveConversation(R,!0));const rt={type:"chat",message:M,attachments:Z?.attachments,requestId:be,sessionId:ye||void 0,permissionMode:r.permissionMode,conversationId:R,cwd:Z?.cwd,worktreeBranch:Z?.worktreeBranch,baseBranch:Z?.baseBranch,featureId:Z?.featureId,providerId:xe,providerModelKey:Pe};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"chat",payload:rt},R),Qe.send(JSON.stringify(rt))}catch(Qe){r.updateMessage(T,{status:"error"},R),r.setSessionError(Qe.message||"Connection failed",R),r.endSession(R),r.endConversationStreaming(R),r.saveConversation(R,!0),a(R)}}function G(M,T){const R=T??r.activeConversationId;if(!R)return;const Z=dt.get(R);if(!Z||Z.ws.readyState!==WebSocket.OPEN)return;const be={type:"permission_response",allow:M};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"permission_response",payload:be},R),Z.ws.send(JSON.stringify(be)),M&&(r.startConversationStreaming(R),i(Z));const Qe=M?"Allowed":"Denied";z(Z.currentMessageId,`${Qe}
|
|
65
|
-
`,R),r.clearPendingPermission(R)}function j(M,T,R){As.enable(T,M,R)}function ce(M){ga(M),As.disable(M)}async function H(M,T,R){const Z=r.conversations.find(se=>se.id===M);if(!Z){ce(M);return}r.activeConversationId!==M&&r.selectConversation(M);let be;if(R.startsWith("skill:")){const se=R.replace("skill:","");try{be=(await $fetch(`/api/skills/${se}/prompt`,{method:"POST",body:{featureId:T,cwd:Z?.worktreePath}})).prompt}catch(ye){console.error(`[useChatStream] Failed to render skill prompt for ${se}:`,ye);return}}else be=`/speckit.${R} ${T}`;r.addUserMessage(be,M),r.saveConversation(M,!0);const Qe=r.addAssistantMessage(M);r.startSession(Wm(),M),r.startConversationStreaming(M);const te=Aa(Z);await V(be,Qe.id,M,te)}async function F(M,T,R=0){if(!(typeof window>"u"))try{const Z=await h(M),be=dt.get(M);be&&(be.currentMessageId=T,be.activeTools.clear(),be.currentTextBlockId=null,be.currentThinkingBlockId=null,i(be)),r.startConversationStreaming(M);const Qe={type:"subscribe",conversationId:M,cursor:R};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"subscribe",payload:Qe},M),Z.send(JSON.stringify(Qe))}catch(Z){console.error(`[useChatStream] Failed to subscribe to ${M}:`,Z),r.setSessionError(Z.message||"Subscribe failed",M)}}function re(M){const T=M??r.activeConversationId;if(!T)return;const R=dt.get(T);if(R){if(s(R),R.ws.readyState===WebSocket.OPEN){const be={type:"abort",conversationId:T};r.pushDebugEvent({direction:"out",channel:"ws",eventType:"abort",payload:be},T),R.ws.send(JSON.stringify(be))}R.ws.readyState!==WebSocket.CLOSED&&R.ws.readyState!==WebSocket.CLOSING&&R.ws.close(),dt.delete(T)}const Z=R?.currentMessageId??Oe(T);Z&&(c(Z,T,"error"),r.updateMessage(Z,{status:"stopped"},T)),r.endSession(T),r.endConversationStreaming(T),r.clearPendingPermission(T),ce(T),r.saveConversation(T,!0)}function Oe(M){const T=r.conversations.find(R=>R.id===M);if(!T)return null;for(let R=T.messages.length-1;R>=0;R--){const Z=T.messages[R];if(Z.role==="assistant"&&Z.status==="streaming")return Z.id}return null}function ve(M){const T=dt.get(M);T&&(s(T),T.ws.close(),dt.delete(M)),ga(M),As.disable(M)}function Ce(){for(const[M,T]of dt)s(T),T.ws.close(),dt.delete(M);ga(),As.disable()}async function Me(M){const T=M??r.activeConversationId;if(!T)return;r.clearPendingPlanApproval(T),r.setPermissionMode("auto");const R="Approved. Proceed with the implementation.";r.addUserMessage(R,T),r.saveConversation(T,!0);const Z=r.addAssistantMessage(T);r.startSession(Wm(),T),r.startConversationStreaming(T);const be=r.conversations.find(te=>te.id===T),Qe=Aa(be,!0);await V(R,Z.id,T,Qe)}function Ue(M){const T=M??r.activeConversationId;T&&r.clearPendingPlanApproval(T)}async function Ye(M){if(typeof window>"u")return!1;try{const T=await $fetch("/api/jobs",{params:{conversationId:M}}),Z=T.find(te=>te.status==="running"||te.status==="waiting_permission"||te.status==="queued")||[...T].sort((te,se)=>se.eventCount-te.eventCount).find(te=>te.eventCount>0),be=r.conversations.find(te=>te.id===M);if(!be)return!1;const Qe=[...be.messages].reverse().find(te=>te.role==="assistant");return Z?!Qe||Qe.status!=="streaming"?!1:(console.log("[useChatStream] Resuming streaming for",M,"job:",Z.id,"status:",Z.status,"events:",Z.eventCount),r.resetMessageForReplay(Qe.id,M),r.startSession(`resume-${Date.now()}`,M),await F(M,Qe.id,0),!0):(Qe&&Qe.status==="streaming"&&(r.updateMessage(Qe.id,{status:"error"},M),r.setSessionError("Streaming was interrupted (server job no longer active)",M)),!1)}catch(T){return console.error("[useChatStream] Failed to resume streaming:",T),!1}}return $t(()=>{ma--,ma<=0&&(ma=0,Ce())}),{sendMessage:V,sendPermissionResponse:G,subscribe:F,tryResumeStreaming:Ye,approvePlan:Me,rejectPlan:Ue,abort:re,disconnect:Ce,disconnectConversation:ve,enableCascade:j,disableCascade:ce,resetContext:u}}const sB=/^[0-9a-f]{7,40}$/i;function Zo(r){if(typeof r!="string")return!1;const e=r.trim();return e.length>0&&e!=="HEAD"&&!e.startsWith("sc/")&&!sB.test(e)}function Vh(r,e){const t=e.map(s=>s.trim()).filter(Boolean),n=r?.trim()||"";return n&&t.includes(n)&&Zo(n)?n:t.includes("main")?"main":t.includes("master")?"master":t[0]||null}function B1(r){return Zo(r)?r.trim():"Loading branches..."}function zh(r){const e=[r.name,r.ref];for(const t of e){if(typeof t!="string")continue;const n=t.trim();if(!n)continue;const s=n.startsWith("refs/heads/")?n.slice(11):n;if(Zo(s))return s}return null}const iB={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},oB={class:"px-4 py-3 border-b border-retro-border flex items-center justify-between"},aB=["disabled"],lB={class:"px-4 py-4 space-y-3"},cB={class:"relative"},uB=["disabled"],hB={key:0,value:""},dB=["value"],fB={key:0,class:"text-xs font-mono text-retro-red"},mB={key:1,class:"text-xs font-mono text-retro-muted"},pB={class:"px-4 py-3 border-t border-retro-border flex items-center gap-2 justify-end"},gB=["disabled"],OB=["disabled"],Au=Ie({__name:"NewConversationModal",props:{show:{type:Boolean},creating:{type:Boolean}},emits:["close","create"],setup(r,{emit:e}){const t=r,n=e,s=Q([]),i=Q(""),o=Q(!1),a=Q(""),l=J(()=>!o.value&&!t.creating&&i.value.length>0&&s.value.length>0);async function c(){o.value=!0,a.value="";try{const{cwd:h}=await $fetch("/api/cwd"),g=(await $fetch("/api/git/branches",{query:{excludeSc:!0,workingDirectory:h}})).branches.filter(O=>!O.isRemote).map(zh).filter(O=>!!O),p=Array.from(new Set(g)).sort((O,b)=>{const x=w=>w==="main"?0:w==="master"?1:2,k=x(O)-x(b);return k!==0?k:O.localeCompare(b,void 0,{sensitivity:"base"})});if(s.value=p,!p.length){i.value="",a.value="No local branches available for chat creation.";return}i.value=Vh("main",p)||p[0]}catch(h){s.value=[],i.value="",a.value=h instanceof Error?h.message:"Failed to load branches"}finally{o.value=!1}}Ve(()=>t.show,h=>{h&&c()});function u(){l.value&&n("create",i.value)}return(h,f)=>(v(),ge(Pr,{to:"body"},[ee(On,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ct(()=>[r.show?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:f[3]||(f[3]=kr(g=>n("close"),["self"]))},[d("div",iB,[d("div",oB,[f[4]||(f[4]=d("h3",{class:"text-sm font-mono text-retro-text font-semibold"},"New Conversation",-1)),d("button",{type:"button",class:"p-1 text-retro-muted hover:text-retro-text transition-colors",disabled:r.creating,onClick:f[0]||(f[0]=g=>n("close"))},[ee(m(Ct),{class:"w-4 h-4"})],8,aB)]),d("div",lB,[f[5]||(f[5]=d("label",{class:"block text-xs font-mono text-retro-muted"},"Base Branch",-1)),d("div",cB,[je(d("select",{"onUpdate:modelValue":f[1]||(f[1]=g=>i.value=g),disabled:o.value||r.creating||s.value.length===0,class:"w-full appearance-none bg-retro-black border border-retro-border rounded px-2 py-1.5 pr-7 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan disabled:opacity-40"},[o.value?(v(),y("option",hB,"Loading branches...")):Y("",!0),(v(!0),y(Se,null,ze(s.value,g=>(v(),y("option",{key:g,value:g},A(g),9,dB))),128))],8,uB),[[ks,i.value]]),ee(m(Zu),{class:"absolute right-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})]),a.value?(v(),y("p",fB,A(a.value),1)):(v(),y("p",mB," The conversation worktree will be created from the selected branch. "))]),d("div",pB,[d("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",disabled:r.creating,onClick:f[2]||(f[2]=g=>n("close"))}," Cancel ",8,gB),d("button",{type:"button",disabled:!l.value,class:"px-3 py-1.5 text-xs font-mono rounded border bg-retro-cyan/10 border-retro-cyan/50 text-retro-cyan hover:bg-retro-cyan/20 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",onClick:u},A(r.creating?"Creating...":"Create"),9,OB)])])])):Y("",!0)]),_:1})]))}}),vB={class:"h-full flex flex-col bg-retro-black"},bB={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border"},xB={class:"flex items-center gap-1"},yB={class:"flex-shrink-0 px-3 pt-3"},kB={class:"relative"},wB={class:"flex-1 overflow-y-auto p-3"},SB={class:"space-y-2"},$B={key:0,class:"flex items-center justify-center py-12"},CB={key:1,class:"flex flex-col items-center justify-center py-12 text-center"},QB={key:2,class:"flex flex-col items-center justify-center py-12 text-center"},jm=Ie({__name:"FeaturesPanel",setup(r){const e=vr(),t=gl(),{sendMessage:n,enableCascade:s}=_l(),i=bo(),o=Q("features"),a=Q(null),l=Q(null),c=Q([]),u=Q([]),h=Q(!1),f=Q({}),g=Q(!1),p=Q(null),O=Q(!1),b=Q(!1),x=Q(!1),k=Q(null),w=Q(""),S=Q("");let P=null;Ve(w,te=>{P&&clearTimeout(P),P=setTimeout(()=>{S.value=te},300)});const X=J(()=>{const te=S.value.trim().toLowerCase();return te?c.value.filter(se=>se.name.toLowerCase().includes(te)||se.id.toLowerCase().includes(te)):c.value}),E=Q({}),K=J(()=>{const te=e.activeConversation;if(!te)return null;if(te.featureId)return te.featureId;const se=te.worktreeBranch?.trim();return se&&c.value.some(ye=>ye.id===se)?se:null}),le=J(()=>K.value||a.value);Ve(()=>e.activeConversationId,()=>{a.value=null;const te=K.value;t.setSelectedFeatureId(te),te&&zt(()=>{const se=E.value[te];se&&se.scrollIntoView({behavior:"auto",block:"nearest"})})}),Ve(a,te=>{te&&zt(()=>{const se=E.value[te];se&&se.scrollIntoView({behavior:"auto",block:"nearest"})})});async function oe(){h.value=!0;try{const te=await $fetch("/api/specs/features");c.value=te.features,N(te.features)}catch{i.error("Failed to load features"),c.value=[],f.value={}}finally{h.value=!1}}async function N(te){if(te.length===0){f.value={};return}const se=await Promise.allSettled(te.map(async q=>{const xe=await $fetch(`/api/specs/traceability/${q.id}`),Pe=xe.alerts.filter(At=>At.severity==="critical").length,rt=xe.alerts.filter(At=>At.severity==="major").length;return{featureId:q.id,critical:Pe,major:rt}})),ye={};for(const q of se)q.status==="fulfilled"&&(ye[q.value.featureId]={critical:q.value.critical,major:q.value.major});f.value=ye}async function I(){try{const te=await $fetch("/api/skills");u.value=te.skills}catch{u.value=[]}}gt(()=>{oe(),I(),window.addEventListener("keydown",z)}),$t(()=>{window.removeEventListener("keydown",z)});function D(te,se={}){if(a.value=te,l.value=null,o.value="files",t.setSelectedFeatureId(te),se.openViewer!==!1){const ye=c.value.find(q=>q.id===te);ye&&(p.value=ye,g.value=!0)}}function U(){g.value=!1,p.value=null}function z(te){(te.ctrlKey||te.metaKey)&&te.key.toLowerCase()==="k"&&(te.preventDefault(),O.value||(O.value=!0))}function V(){O.value=!1}function G(te){D(te,{openViewer:!1}),O.value=!1}function j(){O.value=!0}const ce=J(()=>c.value.map(te=>te.id));function H(te){return f.value[te]??{critical:0,major:0}}const F={plan:["tasks","implement"],tasks:["implement"],implement:[],clarify:[],analyze:[]},re={analyze:["skill:better-spec"]};async function Oe(te,se,ye){if(te.startsWith("skill:")){const q=te.replace("skill:",""),xe=ye?e.conversations.find(rt=>rt.id===ye):null;return(await $fetch(`/api/skills/${q}/prompt`,{method:"POST",body:{featureId:se,cwd:xe?.worktreePath}})).prompt}return`/speckit.${te} ${se}`}function ve(te,se){if(se)return null;const ye=e.findConversationByFeature(te);return ye&&!e.isConversationStreaming(ye.id)&&!ye.finalized?(e.selectConversation(ye.id),ye.id):null}function Ce(te){const se=e.findConversationByFeature(te);return se&&se.finalized?(i.error(`This feature has a finalized conversation "${se.title}". Please archive it first to start a new conversation.`),e.selectConversation(se.id),!0):!1}async function Me(te,se,ye){const q=await e.createConversation({featureId:te,baseBranch:ye});if(!q)throw new Error("Failed to create conversation");return e.renameConversation(q,se),e.selectConversation(q),q}async function Ue(te,se){e.addUserMessage(se,te),e.saveConversation(te,!0);const ye=e.conversations.find(Pe=>Pe.id===te),q=e.addAssistantMessage(te);e.startSession(`session-${Date.now()}`,te),e.startConversationStreaming(te);const xe={};ye?.worktreePath&&(xe.cwd=ye.worktreePath,xe.worktreeBranch=ye.worktreeBranch),ye?.featureId&&(xe.featureId=ye.featureId),await n(se,q.id,te,Object.keys(xe).length>0?xe:void 0)}async function Ye(te,se,ye){const q=re[se];let xe;if(q&&q.length>0){const Pe=[...q.slice(1),se,...F[se]||[]];s(te,ye,Pe);const rt=q[0];try{xe=await Oe(rt,te,ye)}catch(At){i.error(At instanceof Error?At.message:"Failed to resolve prerequisite step");return}}else{const Pe=F[se]||[];Pe.length>0&&s(te,ye,Pe),xe=`/speckit.${se} ${te}`}await Ue(ye,xe)}async function M(te,se,ye){const q=te.shiftKey;if(!q&&Ce(se))return;const xe=ve(se,q);if(xe){try{await Ye(se,ye,xe)}catch(Pe){i.error(Pe instanceof Error?Pe.message:"Failed to run cascade action")}return}k.value={type:"cascade",featureId:se,command:ye,title:`${ye}: ${se}`},b.value=!0}async function T(te,se){Ce(se)||(k.value={type:"open-chat",featureId:se,title:`spec: ${se}`},b.value=!0)}async function R(te,se,ye){let q;try{const xe=e.conversations.find(Pe=>Pe.id===ye);q=await $fetch(`/api/skills/${se}/prompt`,{method:"POST",body:{featureId:te,cwd:xe?.worktreePath}})}catch(xe){throw new Error(xe instanceof Error?xe.message:"Failed to render skill prompt")}await Ue(ye,q.prompt)}async function Z(te,se,ye){const q=te.shiftKey;if(!q&&Ce(se))return;const xe=ve(se,q);if(xe){try{await R(se,ye,xe)}catch(Pe){i.error(Pe instanceof Error?Pe.message:"Failed to run skill")}return}k.value={type:"skill",featureId:se,skillId:ye,title:`skill: ${ye} — ${se}`},b.value=!0}function be(){b.value=!1,k.value=null}async function Qe(te){if(k.value){x.value=!0;try{const se=k.value,ye=await Me(se.featureId,se.title,te);se.type==="cascade"?await Ye(se.featureId,se.command,ye):se.type==="skill"&&await R(se.featureId,se.skillId,ye),b.value=!1,k.value=null}catch(se){i.error(se instanceof Error?se.message:"Failed to create conversation")}finally{x.value=!1}}}return(te,se)=>{const ye=E2,q=bR,xe=qR;return v(),y("div",vB,[d("div",bB,[se[2]||(se[2]=d("div",{class:"flex items-center gap-2 min-w-0"},null,-1)),d("div",xB,[d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Search (Ctrl/Cmd+K)",onClick:j},[ee(m(fs),{class:"h-4 w-4"})]),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:oe},[ee(m(gs),{class:Be(["h-4 w-4",{"animate-spin":m(h)}])},null,8,["class"])])])]),d("div",yB,[d("div",kB,[ee(m(fs),{class:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-retro-subtle"}),je(d("input",{"onUpdate:modelValue":se[0]||(se[0]=Pe=>Je(w)?w.value=Pe:null),type:"text",placeholder:"Search features...",class:"w-full pl-8 pr-3 py-1.5 text-xs font-mono rounded border border-retro-border bg-retro-panel text-retro-text placeholder:text-retro-subtle focus:outline-none focus:border-retro-cyan transition-colors"},null,512),[[Zt,m(w)]])])]),d("div",wB,[d("div",SB,[(v(!0),y(Se,null,ze(m(X),Pe=>(v(),y("div",{key:Pe.id,ref_for:!0,ref:rt=>{m(E)[Pe.id]=rt}},[ee(ye,{feature:Pe,skills:m(u),"is-active":m(le)===Pe.id,"critical-alerts":H(Pe.id).critical,"major-alerts":H(Pe.id).major,onSelect:se[1]||(se[1]=rt=>D(rt,{openViewer:!0})),onCascade:M,onOpenChat:T,onSkill:Z},null,8,["feature","skills","is-active","critical-alerts","major-alerts"])]))),128))]),m(h)&&m(c).length===0?(v(),y("div",$B,[...se[3]||(se[3]=[d("span",{class:"text-sm font-mono text-retro-muted animate-pulse"},"Loading features...",-1)])])):Y("",!0),!m(h)&&m(c).length>0&&m(X).length===0?(v(),y("div",CB,[ee(m(fs),{class:"h-10 w-10 text-retro-subtle mb-3"}),se[4]||(se[4]=d("p",{class:"text-sm font-mono text-retro-muted"},"No matching features",-1)),se[5]||(se[5]=d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," Try a different search term ",-1))])):Y("",!0),!m(h)&&m(c).length===0?(v(),y("div",QB,[ee(m(Av),{class:"h-10 w-10 text-retro-subtle mb-3"}),se[6]||(se[6]=d("p",{class:"text-sm font-mono text-retro-muted"},"No features found",-1)),se[7]||(se[7]=d("p",{class:"mt-1 text-xs font-mono text-retro-subtle"}," Create a feature in specs/ to get started ",-1))])):Y("",!0)]),m(g)&&m(p)?(v(),ge(q,{key:0,feature:m(p),onClose:U},null,8,["feature"])):Y("",!0),m(O)?(v(),ge(xe,{key:1,"available-feature-ids":m(ce),onClose:V,onSelect:G},null,8,["available-feature-ids"])):Y("",!0),ee(Au,{show:m(b),creating:m(x),onClose:be,onCreate:Qe},null,8,["show","creating"])])}}}),PB={class:"h-full flex flex-col bg-retro-black"},TB={class:"flex-shrink-0 px-3 py-2 border-b border-retro-border space-y-2"},MB={class:"flex items-center justify-between gap-2"},AB={class:"flex items-center gap-1"},_B={class:"relative"},RB=["placeholder"],BB={key:0,class:"flex-shrink-0 flex items-center gap-2 px-3 py-2 bg-retro-yellow/10 border-b border-retro-yellow/30 text-xs"},ZB={class:"text-retro-yellow font-mono"},EB={class:"flex-1 overflow-y-auto p-2"},DB={key:0,class:"space-y-1"},LB={key:1,class:"text-center py-6 text-retro-muted"},XB={class:"font-mono text-xs"},IB={key:1,class:"text-center py-8 text-retro-muted"},VB={key:0,class:"space-y-2"},zB={class:"flex items-start justify-between gap-2"},NB={class:"min-w-0"},WB={class:"text-sm font-mono text-retro-text truncate"},qB={class:"text-xs text-retro-muted mt-1 truncate"},jB={class:"text-xs text-retro-muted/70 mt-1"},YB={class:"text-xs text-retro-muted/70"},FB={class:"flex items-center gap-1 flex-shrink-0"},UB=["onClick"],GB=["onClick"],HB={key:1,class:"text-center py-6 text-retro-muted"},KB={class:"font-mono text-xs"},JB={key:1,class:"text-center py-8 text-retro-muted"},Ym=Ie({__name:"ConversationsPanel",setup(r){const e=vr(),t=bo(),n=Q(""),s=Q(""),i=Q(!1),o=Q(!1),a=Q(!1),l=Q(!1),c=Q(null);let u=null;Ve(n,V=>{u&&clearTimeout(u),u=setTimeout(()=>{s.value=V},180)},{immediate:!0}),$t(()=>{u&&(clearTimeout(u),u=null)});const h=new Map,f=new Map;Ve(()=>e.sortedConversations.map(V=>V.id),V=>{const G=new Set(V);for(const j of h.keys())G.has(j)||h.delete(j)},{immediate:!0}),Ve(()=>e.sortedArchivedConversations.map(V=>V.id),V=>{const G=new Set(V);for(const j of f.keys())G.has(j)||f.delete(j)},{immediate:!0});function g(V){const G=V.messages[V.messages.length-1];return[V.updatedAt,V.title,V.messages.length,G?.id||"",G?.content?.length||0].join("|")}function p(V){const G=V.messages[V.messages.length-1];return[V.updatedAt,V.archivedAt,V.title,V.messages.length,G?.id||"",G?.content?.length||0].join("|")}function O(V){const G=g(V),j=h.get(V.id);if(j&&j.signature===G)return j.text;const ce=[V.title,...V.messages.map(H=>H.content||"")].join(`
|
|
66
|
-
`).toLowerCase();return h.set(V.id,{signature:G,text:ce}),ce}function b(V){const G=p(V),j=f.get(V.id);if(j&&j.signature===G)return j.text;const ce=[V.title,...V.messages.map(H=>H.content||"")].join(`
|
|
67
|
-
`).toLowerCase();return f.set(V.id,{signature:G,text:ce}),ce}const x=J(()=>e.conversationViewMode==="archive"),k=J(()=>{const V=e.sortedConversations;if(!s.value.trim())return V;const G=s.value.toLowerCase().trim();return V.filter(j=>O(j).includes(G))}),w=J(()=>{const V=e.sortedArchivedConversations;if(!s.value.trim())return V;const G=s.value.toLowerCase().trim();return V.filter(j=>b(j).includes(G))}),S=J(()=>e.previewingConversationId);async function P(){if(e.checkStorageLimits().atLimit){t.error("Delete or archive a conversation first (limit: 100).");return}i.value=!0}async function X(V){o.value=!0;try{if(!await e.createConversation({baseBranch:V})){t.error("Failed to create conversation");return}i.value=!1}catch(G){t.error(G instanceof Error?G.message:"Failed to create conversation")}finally{o.value=!1}}function E(V){e.selectConversation(V),e.setConversationViewMode("active")}async function K(V){const G=await e.archiveConversation(V);if(!G.success){t.error(G.error||"Failed to archive conversation");return}t.success("Conversation archived")}async function le(V){c.value=V,a.value=!0}function oe(){a.value=!1,c.value=null}async function N(V){if(c.value){l.value=!0;try{const G=await e.restoreArchivedConversation(c.value,V);if(!G.success){t.error(G.error||"Failed to restore archived conversation");return}t.success("Archived conversation restored"),a.value=!1,c.value=null}finally{l.value=!1}}}async function I(V){const G=await e.deleteArchivedConversation(V);if(!G.success){t.error(G.error||"Failed to delete archived conversation");return}t.success("Archived conversation deleted")}function D(V,G){e.renameConversation(V,G)}function U(V){return new Date(V).toLocaleString()}function z(V){if(!V.length)return"No messages";const j=(V[V.length-1].content||"").trim();return j?j.length>80?`${j.slice(0,80)}...`:j:"No messages"}return(V,G)=>(v(),y("div",PB,[d("div",TB,[d("div",MB,[d("button",{onClick:P,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"New conversation","aria-label":"New conversation"},[ee(m(ml),{class:"w-4 h-4"})]),d("div",AB,[d("button",{onClick:G[0]||(G[0]=j=>m(e).setConversationViewMode("active")),class:Be(["p-1.5 rounded transition-colors",x.value?"text-retro-muted hover:text-retro-cyan hover:bg-retro-panel":"text-retro-cyan bg-retro-cyan/10"]),title:"Active conversations","aria-label":"Active conversations"},[ee(m(hp),{class:"w-4 h-4"})],2),d("button",{onClick:G[1]||(G[1]=j=>m(e).setConversationViewMode("archive")),class:Be(["p-1.5 rounded transition-colors",x.value?"text-retro-cyan bg-retro-cyan/10":"text-retro-muted hover:text-retro-cyan hover:bg-retro-panel"]),title:"Archived conversations","aria-label":"Archived conversations"},[ee(m(Yh),{class:"w-4 h-4"})],2)])]),d("div",_B,[ee(m(fs),{class:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted"}),je(d("input",{"onUpdate:modelValue":G[2]||(G[2]=j=>n.value=j),type:"text",placeholder:x.value?"Search archive...":"Search conversations...",class:"w-full pl-8 pr-3 py-1.5 text-xs font-mono bg-retro-black border border-retro-border rounded focus:border-retro-cyan focus:outline-none focus:ring-1 focus:ring-retro-cyan text-retro-text placeholder-retro-muted"},null,8,RB),[[Zt,n.value]])])]),m(e).isNearStorageLimit?(v(),y("div",BB,[ee(m(En),{class:"w-4 h-4 text-retro-yellow flex-shrink-0"}),d("p",ZB,A(m(e).conversationCount)+" active conversations. Limit is 100. ",1)])):Y("",!0),d("div",EB,[x.value?(v(),y(Se,{key:1},[m(e).hasArchivedConversations?(v(),y("div",VB,[w.value.length>0?(v(!0),y(Se,{key:0},ze(w.value,(j,ce,H,F)=>{const re=[j.id,j.title,j.updatedAt,j.archivedAt,j.messages.length];if(F&&F.key===j.id&&Wh(F,re))return F;const Oe=(v(),y("div",{key:j.id,onClick:ve=>le(j.id),onKeydown:[hs(kr(ve=>le(j.id),["prevent"]),["enter"]),hs(kr(ve=>le(j.id),["prevent"]),["space"])],class:"w-full text-left p-3 rounded border border-retro-border hover:border-retro-cyan/50 hover:bg-retro-cyan/5 transition-colors",role:"button",tabindex:"0"},[d("div",zB,[d("div",NB,[d("h3",WB,A(j.title),1),d("p",qB,A(z(j.messages)),1),d("p",jB," Archived: "+A(U(j.archivedAt)),1),d("p",YB," Updated: "+A(U(j.updatedAt)),1)]),d("div",FB,[d("button",{onClick:kr(ve=>le(j.id),["stop"]),class:"inline-flex items-center gap-1 px-2 py-1 text-xs font-mono border border-retro-cyan/40 text-retro-cyan rounded hover:bg-retro-cyan/10 transition-colors",title:"Restore archived conversation"},[ee(m(Yh),{class:"w-3.5 h-3.5"}),G[9]||(G[9]=Xe(" Restore ",-1))],8,UB),d("button",{onClick:kr(ve=>I(j.id),["stop"]),class:"inline-flex items-center gap-1 px-2 py-1 text-xs font-mono border border-red-400/40 text-red-300 rounded hover:bg-red-500/10 transition-colors",title:"Delete archived conversation"},[ee(m(vn),{class:"w-3.5 h-3.5"}),G[10]||(G[10]=Xe(" Delete ",-1))],8,GB)])])],40,["onClick","onKeydown"]));return Oe.memo=re,Oe},G,5),128)):(v(),y("div",HB,[d("p",KB,'No archived results for "'+A(n.value)+'"',1)]))])):(v(),y("div",JB,[...G[11]||(G[11]=[d("p",{class:"font-mono text-sm"},"No archived conversations",-1),d("p",{class:"text-xs mt-1"},"Archived conversations will appear here",-1)])]))],64)):(v(),y(Se,{key:0},[m(e).hasConversations?(v(),y("div",DB,[k.value.length>0?(v(!0),y(Se,{key:0},ze(k.value,(j,ce,H,F)=>{const re=[j.id,j.title,j.updatedAt,j.messages.length,j.finalized,j.id===m(e).activeConversationId,m(e).isConversationStreaming(j.id),S.value===j.id];if(F&&F.key===j.id&&Wh(F,re))return F;const Oe=(v(),y("div",{key:j.id},[ee(sv,{conversation:j,"is-active":j.id===m(e).activeConversationId,"is-streaming":m(e).isConversationStreaming(j.id),"is-previewing":S.value===j.id,onSelect:ve=>E(j.id),onArchive:ve=>K(j.id),onRename:ve=>D(j.id,ve)},null,8,["conversation","is-active","is-streaming","is-previewing","onSelect","onArchive","onRename"])]));return Oe.memo=re,Oe},G,3),128)):(v(),y("div",LB,[d("p",XB,'No results for "'+A(n.value)+'"',1)]))])):(v(),y("div",IB,[...G[8]||(G[8]=[d("p",{class:"font-mono text-sm"},"No conversations",-1),d("p",{class:"text-xs mt-1"},'Click "New" to start',-1)])]))],64))]),ee(Au,{show:i.value,creating:o.value,onClose:G[7]||(G[7]=j=>i.value=!1),onCreate:X},null,8,["show","creating"]),ee(Au,{show:a.value,creating:l.value,onClose:oe,onCreate:N},null,8,["show","creating"])]))}}),e7={mobile:768,tablet:1024};function t7(r,e){return r<e.mobile?"mobile":r<e.tablet?"tablet":"desktop"}const Z1=_u("layout",{state:()=>({currentViewport:"desktop",chatFullscreen:!1}),getters:{isMobile:r=>r.currentViewport==="mobile",isTablet:r=>r.currentViewport==="tablet",isDesktop:r=>r.currentViewport==="desktop",isChatFullscreen:r=>r.chatFullscreen},actions:{updateViewport(r){this.currentViewport=t7(r,e7)},toggleChatFullscreen(){this.chatFullscreen=!this.chatFullscreen},setChatFullscreen(r){this.chatFullscreen=r}}});function r7(){const r=Q(null),e=Q(!0);let t=null,n="smooth";const s=50;function i(){const f=r.value;return f?f.scrollHeight-f.scrollTop-f.clientHeight<s:!0}function o(){e.value=i()}function a(f="smooth"){if(n=f,t!==null)return;t=(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):p=>setTimeout(()=>p(Date.now()),16))(()=>{t=null,zt(()=>{const p=r.value;p&&p.scrollTo({top:p.scrollHeight,behavior:n})})})}function l(f="smooth"){a(f),e.value=!0}function c(f="smooth"){e.value&&a(f)}function u(){e.value=!0}function h(){e.value=!1}return{containerRef:r,shouldAutoScroll:_e(e),onScroll:o,scrollToBottom:a,forceScrollToBottom:l,maybeScrollToBottom:c,enableAutoScroll:u,disableAutoScroll:h}}function n7(r){if(!r)return null;if(r instanceof HTMLElement)return r;if(typeof r=="object"&&"$el"in r){const e=r.$el;return e instanceof HTMLElement?e:null}return null}function s7(r){const{allMessages:e,containerRef:t,estimateItemHeight:n=120,overscan:s=6}=r,i=Q(0),o=Q(0),a=Q(new Map),l=new Map;let c=null;function u(k,w){if(!Number.isFinite(w)||w<=0)return;const S=Math.ceil(w);if(a.value.get(k)===S)return;const P=new Map(a.value);P.set(k,S),a.value=P}function h(k,w){u(k,w.getBoundingClientRect().height)}function f(k,w){const S=l.get(k);S&&c&&c.unobserve(S),S&&delete S.dataset.virtualMessageId,l.delete(k);const P=n7(w);P&&(P.dataset.virtualMessageId=k,l.set(k,P),h(k,P),c&&c.observe(P))}function g(){const k=t.value;k&&(i.value=k.scrollTop)}const p=J(()=>{const k=e.value,w=new Array(k.length);let S=0;for(let P=0;P<k.length;P++)w[P]=S,S+=a.value.get(k[P].id)??n;return{offsets:w,totalHeight:S}});function O(k,w){let S=0,P=k.length-1,X=k.length;for(;S<=P;){const E=Math.floor((S+P)/2);k[E]>=w?(X=E,P=E-1):S=E+1}return X===k.length?Math.max(0,k.length-1):X}const b=J(()=>{const k=e.value;if(k.length===0)return[];const{offsets:w}=p.value,S=i.value,P=S+Math.max(o.value,1),X=O(w,Math.max(0,S-n));let E=X;for(;E<k.length&&w[E]<P;)E++;const K=Math.max(0,X-s),le=Math.min(k.length,E+s),oe=[];for(let N=K;N<le;N++)oe.push({message:k[N],index:N,top:w[N]});return oe}),x=J(()=>p.value.totalHeight);return gt(()=>{const k=t.value;k&&(o.value=k.clientHeight,i.value=k.scrollTop),c=new ResizeObserver(w=>{for(const S of w){const P=S.target;if(t.value&&P===t.value){o.value=S.contentRect.height;continue}const X=P.dataset.virtualMessageId;X&&u(X,S.contentRect.height)}}),t.value&&c.observe(t.value);for(const[w,S]of l)S.dataset.virtualMessageId=w,c.observe(S),h(w,S)}),$t(()=>{c&&(c.disconnect(),c=null),l.clear()}),{visibleItems:b,totalHeight:x,onVirtualScroll:g,setItemRef:f}}const i7={key:0,class:"flex flex-col items-center justify-center h-full p-8 text-center"},o7={key:1,class:"relative"},a7={class:"sticky bottom-0"},l7={key:0,class:"px-4 py-2 bg-retro-dark/90 border-t border-retro-border/50 backdrop-blur-sm"},c7={key:1,class:"px-4 py-2.5 bg-retro-red/20 border-t border-retro-red/50"},u7={class:"flex items-start gap-2"},h7={class:"flex-1 min-w-0"},d7={class:"flex items-center justify-between gap-2 mb-0.5"},f7={class:"text-xs font-mono text-retro-red/80 break-words whitespace-pre-wrap"},m7={key:2,class:"px-4 py-2 bg-retro-dark/90 border-t border-retro-border/50"},p7=Ie({__name:"ChatMessages",setup(r){const e=vr(),{containerRef:t,onScroll:n,maybeScrollToBottom:s,scrollToBottom:i,forceScrollToBottom:o}=r7(),{visibleItems:a,totalHeight:l,onVirtualScroll:c,setItemRef:u}=s7({allMessages:J(()=>e.messages),containerRef:t});function h(){n(),c()}const f=J(()=>e.isActiveConversationStreaming),g=J(()=>{const k=e.lastMessage;return!k||k.role!=="assistant"?null:k.status}),p=Q(!1);function O(k){const w=k.contentBlocks;return!w||w.length===0?"":w.map(S=>{switch(S.type){case"tool_use":return`u:${S.id}:${S.status}:${S.inputSummary}`;case"tool_result":return`r:${S.id}:${S.toolUseId}:${S.isError?1:0}:${S.content.length}`;case"text":return`t:${S.id}:${S.text.length}`;case"thinking":return`k:${S.id}:${S.thinking.length}`;case"result_summary":return`s:${S.id}:${S.numTurns}:${S.durationMs}`;case"session_init":return`i:${S.id}:${S.model}:${S.tools.length}`;default:return""}}).join("|")}const b=Q(null);function x(){if(b.value&&(b.value(),b.value=null),!t.value||typeof ResizeObserver>"u")return;const k=new ResizeObserver(()=>{s("instant")});k.observe(t.value),b.value=()=>{k.disconnect()}}return gt(()=>{i("instant"),x()}),$t(()=>{b.value&&b.value()}),Ve(()=>e.activeConversationId,()=>{p.value=!1,i("instant")}),Ve(t,()=>{x()}),Ve(()=>[e.activeConversationId,e.messages.length],([k,w])=>{!k||w===0||p.value||(p.value=!0,o("instant"))},{immediate:!0}),Ve(()=>e.messages.length,()=>{s("instant")}),Ve(()=>e.lastMessage?.content,()=>{s("instant")}),Ve([f,()=>e.lastError],()=>{s("instant")}),Ve(l,()=>{s("instant")}),(k,w)=>(v(),y("div",{ref_key:"containerRef",ref:t,class:"flex-1 overflow-y-auto",onScroll:h},[m(e).hasMessages?(v(),y("div",o7,[d("div",{class:"relative",style:tr({height:`${m(l)}px`})},[(v(!0),y(Se,null,ze(m(a),S=>(v(),y("div",{key:S.message.id,class:"absolute left-0 right-0 border-b border-retro-border/30",style:tr({transform:`translateY(${S.top}px)`})},[d("div",{ref_for:!0,ref:P=>m(u)(S.message.id,P)},[Km([S.message.id,S.message.status,S.message.content,S.message.contentBlocks?.length||0,O(S.message),S.message.tools?.length||0],()=>ee(iv,{message:S.message},null,8,["message"]),w,0)],512)],4))),128))],4)])):(v(),y("div",i7,[...w[2]||(w[2]=[d("div",{class:"text-retro-muted text-sm font-mono mb-2"}," No messages yet ",-1),d("div",{class:"text-retro-muted text-xs font-mono"}," Send a message to start chatting ",-1)])])),d("div",a7,[m(f)&&!m(e).lastError?(v(),y("div",l7,[...w[3]||(w[3]=[ep('<div class="flex items-center gap-2"><div class="flex gap-1"><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:0ms;"></span><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:150ms;"></span><span class="w-1.5 h-1.5 rounded-full bg-retro-cyan animate-bounce" style="animation-delay:300ms;"></span></div><span class="text-xs font-mono text-retro-muted">Processing...</span></div>',1)])])):Y("",!0),m(e).lastError?(v(),y("div",c7,[d("div",u7,[ee(m(vo),{class:"w-4 h-4 text-retro-red flex-shrink-0 mt-0.5"}),d("div",h7,[d("div",d7,[w[4]||(w[4]=d("p",{class:"text-xs font-mono font-semibold text-retro-red"},"Error",-1)),d("button",{class:"text-xs font-mono text-retro-red/60 hover:text-retro-red underline",onClick:w[1]||(w[1]=S=>m(e).clearError())}," Dismiss ")]),d("p",f7,A(m(e).lastError),1),w[5]||(w[5]=d("p",{class:"text-xs font-mono text-retro-muted mt-1"}," Check browser console (F12) for more details ",-1))])])])):m(g)==="stopped"?(v(),y("div",m7,[...w[6]||(w[6]=[d("div",{class:"flex items-center gap-2"},[d("span",{class:"w-2 h-2 rounded-full bg-retro-muted"}),d("span",{class:"text-xs font-mono text-retro-muted"},"Stopped")],-1)])])):Y("",!0)])],544))}});function g7(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0 1 12.548-3.364l1.903 1.903h-3.183a.75.75 0 1 0 0 1.5h4.992a.75.75 0 0 0 .75-.75V4.356a.75.75 0 0 0-1.5 0v3.18l-1.9-1.9A9 9 0 0 0 3.306 9.67a.75.75 0 1 0 1.45.388Zm15.408 3.352a.75.75 0 0 0-.919.53 7.5 7.5 0 0 1-12.548 3.364l-1.902-1.903h3.183a.75.75 0 0 0 0-1.5H2.984a.75.75 0 0 0-.75.75v4.992a.75.75 0 0 0 1.5 0v-3.18l1.9 1.9a9 9 0 0 0 15.059-4.035.75.75 0 0 0-.53-.918Z","clip-rule":"evenodd"})])}function Fm(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z","clip-rule":"evenodd"})])}function O7(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{d:"M3.478 2.404a.75.75 0 0 0-.926.941l2.432 7.905H13.5a.75.75 0 0 1 0 1.5H4.984l-2.432 7.905a.75.75 0 0 0 .926.94 60.519 60.519 0 0 0 18.445-8.986.75.75 0 0 0 0-1.218A60.517 60.517 0 0 0 3.478 2.404Z"})])}function v7(r,e){return v(),y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[d("path",{"fill-rule":"evenodd",d:"M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z","clip-rule":"evenodd"})])}const b7=/^\/(reset|reset-context|new|clear)$/,x7=/^\/(context|ctx)$/;function y7(r){if(b7.test(r))return{kind:"reset"};if(x7.test(r))return{kind:"context"};const e=C7(r);return e?{kind:"spec-search",command:e}:{kind:"none"}}function k7(r,e){const t={permissionMode:e};return r?.hasWorktree&&r.worktreePath?t.cwd=r.worktreePath:r?.cwd&&(t.cwd=r.cwd),r?.featureId&&(t.featureId=r.featureId),r?.providerId&&(t.providerId=r.providerId),r?.providerModelKey&&(t.providerModelKey=r.providerModelKey),r?.providerSessionId&&(t.providerSessionId=r.providerSessionId),t}function w7(r,e={}){return{q:r.q,mode:r.mode??"hybrid",featureId:r.featureId??e.featureId,fileType:r.fileType,limit:String(r.limit??5)}}function S7(r){const e=r.instructionFiles.length>0?r.instructionFiles.map(n=>{const s=n.source==="cwd"?"cwd":"ancestor",i=n.mtime?` (mtime: ${n.mtime})`:"";return`- \`${n.path}\` [${s}] - ${n.hint}${i}`}):["- (none detected from current cwd ancestry)"],t=r.specContext.files.length>0?r.specContext.files.map(n=>`- \`${n}\``):["- (none)"];return["## Context Snapshot","",`- Time: ${r.generatedAt}`,`- Session state: **${r.sessionState}**`,`- Provider session ID: \`${r.providerSessionId??"(empty)"}\``,`- Provider: \`${r.providerId}\` / \`${r.providerModelKey}\``,`- Permission mode: \`${r.permissionMode}\``,`- CWD (requested): \`${r.requestedCwd}\``,`- CWD (effective): \`${r.effectiveCwd}\``,`- Feature: \`${r.featureId??"(none)"}\``,"","### Spec Context Injection",`- Active on next turn: **${r.specContext.active?"yes":"no"}**`,`- Reason: ${r.specContext.reason}`,...t,"","### Detected Instruction Files",...e].join(`
|
|
68
|
-
`)}function $7(r){return(r.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(t=>t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t)}function C7(r){const e=r.match(/^\/(?:spec-search|specsearch)\b(.*)$/i);if(!e)return null;const t=$7(e[1]?.trim()??""),n=[],s={q:""};for(let i=0;i<t.length;i++){const o=t[i];if(o==="--mode"&&t[i+1]){const a=t[++i];(a==="keyword"||a==="semantic"||a==="hybrid")&&(s.mode=a);continue}if(o.startsWith("--mode=")){const a=o.slice(7);(a==="keyword"||a==="semantic"||a==="hybrid")&&(s.mode=a);continue}if(o==="--feature"&&t[i+1]){s.featureId=t[++i];continue}if(o.startsWith("--feature=")){s.featureId=o.slice(10);continue}if(o==="--file-type"&&t[i+1]){s.fileType=t[++i];continue}if(o.startsWith("--file-type=")){s.fileType=o.slice(12);continue}if(o==="--limit"&&t[i+1]){const a=Number.parseInt(t[++i],10);Number.isFinite(a)&&a>0&&(s.limit=a);continue}if(o.startsWith("--limit=")){const a=Number.parseInt(o.slice(8),10);Number.isFinite(a)&&a>0&&(s.limit=a);continue}n.push(o)}return s.q=n.join(" ").trim(),s}function Q7(r,e=1400){const t=r.trim();return t.length<=e?t:`${t.slice(0,e)}
|
|
69
|
-
...`}function P7(r,e){const t=[];if(t.push("## Spec Search Results"),t.push(""),t.push(`- Query: \`${r.q}\``),t.push(`- Mode: \`${e.mode}\``),r.featureId&&t.push(`- Feature filter: \`${r.featureId}\``),r.fileType&&t.push(`- File type filter: \`${r.fileType}\``),t.push(`- Hits: **${e.totalCount}** (${e.searchTime}ms)`),e.warning&&t.push(`- Warning: ${e.warning}`),e.results.length===0)return t.push(""),t.push("No matching indexed chunks were found."),t.join(`
|
|
70
|
-
`);t.push("");for(const[n,s]of e.results.entries()){const i=s.chunk;t.push(`### ${n+1}. \`${i.sourcePath}:${i.lineStart}\``),t.push(`- Match: \`${s.matchType}\` (score: ${s.score.toFixed(3)})`),i.headingHierarchy.length>0&&t.push(`- Headings: ${i.headingHierarchy.join(" > ")}`),t.push(""),t.push(Q7(i.content)),t.push("")}return t.join(`
|
|
71
|
-
`)}function E1(r){return`${r.providerId}::${r.modelKey}`}function T7(r,e){const t=new Map;for(const s of r)for(const i of s.models)t.set(i.label,(t.get(i.label)??0)+1);return r.flatMap(s=>s.models.map(i=>{const o=s.capabilities.streaming&&(!e||s.capabilities.permissions),a=(t.get(i.label)??0)>1;return{key:`${s.id}::${i.key}`,providerId:s.id,providerName:s.name,modelKey:i.key,modelLabel:i.label,label:a?`${i.label} · ${s.name}`:i.label,compatible:o}})).sort((s,i)=>s.modelLabel.localeCompare(i.modelLabel,void 0,{sensitivity:"base"})||s.providerName.localeCompare(i.providerName,void 0,{sensitivity:"base"}))}function M7(r){const e=new Map;for(const s of r){const i=e.get(s.providerId);if(i){i.options.push(s);continue}e.set(s.providerId,{providerId:s.providerId,providerName:s.providerName,options:[s]})}const t=new Map([["codex",0],["claude",1]]),n=Array.from(e.values());return n.sort((s,i)=>{const o=t.get(s.providerId)??99,a=t.get(i.providerId)??99;return o!==a?o-a:s.providerName.localeCompare(i.providerName,void 0,{sensitivity:"base"})}),n}function A7(r,e){const t=E1(e);return r.find(n=>n.key===t)??null}const Um=4,_7=5*1024*1024;function R7(r){return r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/(1024*1024)).toFixed(1)} MB`}function B7(r,e=_7){return r.type.startsWith("image/")?r.size>e?{ok:!1,reason:"too-large"}:{ok:!0}:{ok:!1,reason:"not-image"}}function Z7(r){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>{typeof n.result=="string"?e(n.result):t(new Error("Failed to read image"))},n.onerror=()=>t(n.error||new Error("Failed to read image")),n.readAsDataURL(r)})}function E7(r=Date.now,e=Math.random){return`att-${r()}-${e().toString(36).slice(2,8)}`}function D7(r=Date.now,e=Math.random){return`q-${r()}-${e().toString(36).slice(2,8)}`}function L7(r,e=D7){const t=r.text.trim();return t.length===0&&r.attachments.length===0?null:{id:e(),text:t,attachments:[...r.attachments]}}function X7(r,e){return r.filter(t=>t.id!==e)}const I7={class:"flex-shrink-0 flex-grow-0 border-t border-retro-border bg-retro-dark p-3"},V7={class:"flex flex-wrap items-center gap-2 mb-2"},z7={class:"relative min-w-0 flex-1 max-w-full sm:max-w-[154px] model-selector"},N7=["disabled"],W7={class:"truncate text-left"},q7={key:0,class:"absolute bottom-full left-0 mb-1 py-1 bg-retro-dark border border-retro-border rounded shadow-lg z-10 min-w-[220px] max-w-[280px]"},j7={key:0,class:"px-3 py-1.5 text-xs font-mono text-retro-muted"},Y7={class:"px-3 py-1 text-[11px] font-mono uppercase tracking-wide text-retro-cyan/80 select-none"},F7=["disabled","onClick"],U7={class:"truncate"},G7={class:"relative mode-selector"},H7={key:0,class:"absolute bottom-full left-0 mb-1 py-1 bg-retro-dark border border-retro-border rounded shadow-lg z-10 min-w-[140px]"},K7=["onClick"],J7={class:"hidden text-xs font-mono text-retro-muted sm:inline"},e8={key:0,class:"mb-3 p-3 bg-retro-yellow/10 border border-retro-yellow/50 rounded"},t8={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},r8={class:"flex-1 min-w-0"},n8={class:"text-xs font-mono text-retro-text truncate"},s8={class:"text-retro-cyan"},i8={key:0,class:"text-retro-muted"},o8={key:1,class:"text-retro-muted"},a8={key:1,class:"mb-3 p-3 bg-retro-cyan/10 border border-retro-cyan/50 rounded"},l8={key:2,class:"mb-2 flex flex-wrap gap-2"},c8=["src","alt"],u8={class:"mt-1 truncate text-[10px] font-mono text-retro-muted"},h8={class:"truncate text-[10px] font-mono text-retro-muted/80"},d8=["onClick"],f8={key:3,class:"mb-2"},m8={class:"text-[10px] font-mono text-retro-muted mb-1 uppercase tracking-wide"},p8={class:"space-y-1"},g8={class:"text-[10px] font-mono text-retro-yellow flex-shrink-0"},O8={class:"flex-1 text-xs font-mono text-retro-text truncate"},v8={key:0,class:"text-[10px] font-mono text-retro-muted flex-shrink-0"},b8=["onClick"],x8={class:"flex gap-2 items-start"},y8=["disabled"],k8={class:"flex-1 relative min-h-[40px]"},w8=["disabled","placeholder"],S8=["disabled","title"],$8=Ie({__name:"ChatInput",props:{disabled:{type:Boolean}},setup(r){const e=r,t=vr(),n=xo(),{sendMessage:s,sendPermissionResponse:i,approvePlan:o,rejectPlan:a,abort:l,resetContext:c}=_l(),u=Q(""),h=Q(null),f=Q(null),g=Q(!1),p=Q(!1),O=Q(!1),b=Q([]);let x=null;const k=Q(null),w=Q({}),S=J(()=>{const de=t.activeConversationId;return de?w.value[de]??[]:[]});function P(de,ke){if(ke.length===0){const{[de]:Re,...We}=w.value;w.value=We}else w.value={...w.value,[de]:ke}}const{data:X,pending:E}=Qc("chat-input-ai-providers",()=>$fetch("/api/ai/providers"),{server:!1,default:()=>({providers:[]})}),K=J(()=>X.value?.providers??[]),le=J(()=>t.permissionMode==="ask"||t.permissionMode==="plan"),oe=J(()=>T7(K.value,le.value)),N=J(()=>M7(oe.value)),I=J(()=>{const de=t.activeConversation;return de?.providerId&&de.providerModelKey?{providerId:de.providerId,modelKey:de.providerModelKey}:k.value?k.value:n.providerSelection}),D=J(()=>E1(I.value)),U=J(()=>A7(oe.value,I.value)),z=J(()=>U.value?.label||"Select model");function V(de,ke){t.setConversationProviderSelection(de,ke.providerId,ke.modelKey),t.clearProviderSession(de),t.saveConversation(de,!0)}function G(de){k.value&&(V(de,k.value),k.value=null)}function j(de){if(!de||!de.compatible)return;const ke={providerId:de.providerId,modelKey:de.modelKey},Re=t.activeConversationId;if(Re){V(Re,ke),k.value=null,O.value=!1;return}k.value=ke,O.value=!1}const ce={plan:Eu,ask:Du,auto:up,bypass:Lu},H={plan:"text-retro-cyan",ask:"text-retro-green",auto:"text-retro-yellow",bypass:"text-retro-red"};function F(de){t.setPermissionMode(de),p.value=!1}function re(de){const ke=de.target;ke.closest(".mode-selector")||(p.value=!1),ke.closest(".model-selector")||(O.value=!1)}gt(()=>{document.addEventListener("click",re),n.hydrate()}),$t(()=>{document.removeEventListener("click",re),x!==null&&typeof window<"u"&&typeof window.cancelAnimationFrame=="function"&&(window.cancelAnimationFrame(x),x=null)});const Oe=J(()=>(u.value.trim().length>0||b.value.length>0)&&!g.value&&!t.pendingPermission&&!Me.value),ve=J(()=>t.isActiveConversationStreaming&&!t.pendingPermission),Ce=J(()=>t.pendingPermission!==null),Me=J(()=>t.pendingPlanApproval!==null);function Ue(){i(!0,t.activeConversationId)}function Ye(){i(!1,t.activeConversationId)}function M(){o(t.activeConversationId)}function T(){a(t.activeConversationId)}function R(){b.value=[],f.value&&(f.value.value="")}function Z(de){b.value=b.value.filter(ke=>ke.id!==de)}async function be(de){const ke=de.target,Re=ke.files?Array.from(ke.files):[];if(Re.length===0)return;const{useToast:We}=await ds(async()=>{const{useToast:ot}=await import("./BjdLSVUw.js").then(Ft=>Ft.n);return{useToast:ot}},__vite__mapDeps([0,1,2]),import.meta.url),Fe=We();let wt=Um-b.value.length;if(wt<=0){Fe.warning(`You can attach up to ${Um} images per message.`),ke.value="";return}for(const ot of Re){if(wt<=0)break;const Ft=B7(ot);if(!Ft.ok){Ft.reason==="not-image"?Fe.warning(`Skipped "${ot.name}": only image files are supported.`):Fe.warning(`Skipped "${ot.name}": max size is 5 MB.`);continue}try{const ir=await Z7(ot);b.value.push({id:E7(),name:ot.name,mimeType:ot.type,size:ot.size,dataUrl:ir}),wt--}catch{Fe.error(`Failed to attach "${ot.name}".`)}}ke.value=""}const Qe=J(()=>{if(t.isActiveConversationStreaming||g.value)return!1;const de=t.lastMessage;return de?.role==="assistant"&&de?.status==="error"});async function te(de){const ke=t.activeConversationId??await t.createConversation(),Re=t.addAssistantMessage(ke);if(!de.q){t.updateMessage(Re.id,{content:["Usage: `/spec-search <query> [--mode keyword|semantic|hybrid] [--feature <feature-id>] [--file-type <type>] [--limit <n>]`","","Examples:","- `/spec-search FR-001`",'- `/spec-search "indexing indicator" --mode hybrid --feature 008-spec-search --limit 5`'].join(`
|
|
72
|
-
`),status:"complete"},ke);return}const We=t.activeConversation,Fe=w7(de,{featureId:We?.featureId});try{const wt=await $fetch("/api/specs/search",{query:Fe});t.updateMessage(Re.id,{content:P7({...de,mode:Fe.mode,featureId:Fe.featureId},wt),status:"complete"},ke)}catch(wt){const ot=wt instanceof Error?wt.message:"Failed to run spec search";t.updateMessage(Re.id,{content:`Spec search failed: ${ot}`,status:"error"},ke)}}async function se(){const de=k7(t.activeConversation,t.permissionMode),ke=await $fetch("/api/chat/context",{query:de}),Re=t.activeConversationId??await t.createConversation(),We=t.addAssistantMessage(Re);t.updateMessage(We.id,{content:S7(ke),status:"complete"},Re)}function ye(de=[]){const ke=Aa(t.activeConversation,!0)??{};return de.length>0?{...ke,attachments:de}:Object.keys(ke).length>0?ke:void 0}function q(de){const ke=t.addAssistantMessage(de);return t.startSession(`session-${Date.now()}`,de),t.startConversationStreaming(de),t.saveConversation(de,!0),ke}function xe(de,ke,Re,We){const Fe=Re instanceof Error?Re.message:We;t.setSessionError(Fe,de),t.updateMessage(ke,{status:"error"},de),t.endSession(de),t.endConversationStreaming(de)}async function Pe(de,ke){const Re=de!==void 0,We=(de??u.value).trim(),Fe=ke??[...b.value];if(We.length===0&&Fe.length===0||t.isActiveConversationStreaming||g.value||e.disabled)return;const wt=!!t.activeConversationId;let ot=null,Ft=null;const ir=y7(We);if(ir.kind!=="none"){if(ir.kind==="reset"){await qn();return}ir.kind==="context"?await se():ir.kind==="spec-search"&&await te(ir.command),Re||(u.value="",R(),Lt());return}g.value=!0,Re||(u.value="",R(),Lt());try{if(await t.addUserMessageWithConversation(We,Fe),ot=t.activeConversationId,!ot)throw new Error("Failed to create or select a conversation");wt||G(ot);const yr=q(ot);Ft=yr.id,await s(We,yr.id,ot,ye(Fe))}catch(yr){if(ot&&Ft)xe(ot,Ft,yr,"Failed to send message");else{const Yn=yr instanceof Error?yr.message:"Failed to send message";t.setSessionError(Yn)}}finally{g.value=!1}}async function rt(){try{l(t.activeConversationId)}catch{}}function At(){t.isActiveConversationStreaming?sr():Pe()}function sr(){const de=t.activeConversationId;if(!de)return;const ke=L7({text:u.value,attachments:b.value});ke&&(P(de,[...S.value,ke]),u.value="",R(),Lt(),qt())}function on(de){const ke=t.activeConversationId;ke&&P(ke,X7(S.value,de))}async function xr(){const de=t.activeConversationId;if(!de)return;const ke=w.value[de]??[];if(ke.length===0||t.isActiveConversationStreaming||g.value||t.pendingPermission||t.pendingPlanApproval)return;const[Re,...We]=ke;P(de,We),await Pe(Re.text,Re.attachments)}async function qn(){if(t.activeConversationId){u.value="",R(),Lt(),g.value=!0;try{await c(t.activeConversationId);const de=t.addAssistantMessage(t.activeConversationId);t.updateMessage(de.id,{content:"✨ **Context cleared** — The AI conversation context has been reset. Starting fresh from here.",status:"complete"},t.activeConversationId);const{useToast:ke}=await ds(async()=>{const{useToast:We}=await import("./BjdLSVUw.js").then(Fe=>Fe.n);return{useToast:We}},__vite__mapDeps([0,1,2]),import.meta.url);ke().success("AI context has been reset. The conversation will start fresh.")}catch(de){console.error("Failed to reset context:",de);const{useToast:ke}=await ds(async()=>{const{useToast:We}=await import("./BjdLSVUw.js").then(Fe=>Fe.n);return{useToast:We}},__vite__mapDeps([0,1,2]),import.meta.url);ke().error("Failed to reset context. Please try again.")}finally{g.value=!1}}}async function an(){const de=t.messages;let ke=null;for(let Fe=de.length-1;Fe>=0;Fe--)if(de[Fe].role==="user"){ke={content:de[Fe].content,attachments:de[Fe].attachments??[]};break}if(!ke||!t.activeConversationId)return;const Re=t.activeConversationId;t.clearError(),g.value=!0;let We=null;try{const Fe=q(Re);We=Fe.id,await s(ke.content,Fe.id,Re,ye(ke.attachments))}catch(Fe){if(We)xe(Re,We,Fe,"Failed to retry message");else{const wt=Fe instanceof Error?Fe.message:"Failed to retry message";t.setSessionError(wt,Re)}}finally{g.value=!1}}function jn(de){de.key==="Enter"&&!de.shiftKey&&(de.preventDefault(),At())}function ln(){const de=h.value;if(de){if(!u.value.trim()){de.style.height="";return}de.style.height="auto",de.style.height=Math.min(de.scrollHeight,200)+"px"}}function Sn(){if(x!==null)return;x=(typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):ke=>setTimeout(()=>ke(Date.now()),16))(()=>{x=null,ln()})}function Lt(){const de=h.value;de&&(de.style.height="")}function qt(){zt(()=>{h.value?.focus()})}return Ve(u,Sn),Ve(()=>[t.isActiveConversationStreaming,t.pendingPermission!==null,t.pendingPlanApproval!==null],([de,ke,Re],We)=>{We&&(We[0]||We[1]||We[2])&&!(de||ke||Re)&&(S.value.length>0?zt(()=>xr()):qt())}),Ve(()=>t.activeConversationId,()=>{t.activeConversationId&&(k.value=null),R(),qt(),!t.isActiveConversationStreaming&&S.value.length>0&&zt(()=>xr())}),(de,ke)=>(v(),y("div",I7,[d("div",V7,[d("div",z7,[d("button",{disabled:r.disabled||m(t).isActiveConversationStreaming||m(Ce)||m(Me)||m(E)||m(oe).length===0,class:"flex items-center justify-between gap-1.5 w-full px-2 py-1 rounded border border-retro-border/50 hover:border-retro-border text-xs font-mono text-retro-muted transition-colors disabled:opacity-60 disabled:cursor-not-allowed",onClick:ke[0]||(ke[0]=Re=>O.value=!m(O))},[d("span",W7,A(m(z)),1),ee(m(Fm),{class:"w-3 h-3 flex-shrink-0"})],8,N7),m(O)?(v(),y("div",q7,[m(oe).length===0?(v(),y("div",j7," Loading models... ")):Y("",!0),(v(!0),y(Se,null,ze(m(N),Re=>(v(),y("div",{key:Re.providerId,class:"py-0.5"},[d("div",Y7,A(Re.providerName),1),(v(!0),y(Se,null,ze(Re.options,We=>(v(),y("button",{key:We.key,disabled:!We.compatible,class:Be(["flex items-center gap-2 w-full px-3 py-1.5 text-xs font-mono text-left hover:bg-retro-panel transition-colors disabled:opacity-50 disabled:cursor-not-allowed",m(D)===We.key?"bg-retro-panel text-retro-text":"text-retro-muted"]),onClick:Fe=>j(We)},[d("span",U7,A(We.modelLabel)+A(We.compatible?"":" (unsupported for current permission mode)"),1)],10,F7))),128))]))),128))])):Y("",!0)]),d("div",G7,[d("button",{class:Be(["flex items-center gap-1.5 px-2 py-1 rounded border border-retro-border/50 hover:border-retro-border text-xs font-mono transition-colors",H[m(t).permissionMode]]),onClick:ke[1]||(ke[1]=Re=>p.value=!m(p))},[(v(),ge(ps(ce[m(t).permissionMode]),{class:"w-4 h-4"})),d("span",null,A(m(Zs)[m(t).permissionMode]),1),ee(m(Fm),{class:"w-3 h-3"})],2),m(p)?(v(),y("div",H7,[(v(),y(Se,null,ze(["plan","ask","auto","bypass"],Re=>d("button",{key:Re,class:Be(["flex items-center gap-2 w-full px-3 py-1.5 text-xs font-mono text-left hover:bg-retro-panel transition-colors",[H[Re],m(t).permissionMode===Re?"bg-retro-panel":""]]),onClick:We=>F(Re)},[(v(),ge(ps(ce[Re]),{class:"w-4 h-4"})),d("span",null,A(m(Zs)[Re]),1)],10,K7)),64))])):Y("",!0)]),d("span",J7,A(m(t).permissionMode==="plan"?"Plan only":m(t).permissionMode==="ask"?"Ask before actions":m(t).permissionMode==="auto"?"Auto approve":"All permissions"),1)]),m(Ce)?(v(),y("div",e8,[d("div",t8,[d("div",r8,[ke[4]||(ke[4]=d("div",{class:"text-xs font-mono text-retro-yellow font-bold mb-1"}," Permission Required ",-1)),d("div",n8,[d("span",s8,A(m(t).pendingPermission?.tool),1),m(t).pendingPermission?.filePath?(v(),y("span",i8," - "+A(m(t).pendingPermission.filePath),1)):m(t).pendingPermission?.command?(v(),y("span",o8," - "+A(m(t).pendingPermission.command),1)):Y("",!0)])]),d("div",{class:"flex flex-shrink-0 gap-2"},[d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-green/20 text-retro-green border border-retro-green/50 hover:bg-retro-green/30 transition-colors",onClick:Ue}," Allow "),d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-red/20 text-retro-red border border-retro-red/50 hover:bg-retro-red/30 transition-colors",onClick:Ye}," Deny ")])])])):Y("",!0),m(Me)?(v(),y("div",a8,[d("div",{class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},[ke[5]||(ke[5]=d("div",{class:"flex-1 min-w-0"},[d("div",{class:"text-xs font-mono text-retro-cyan font-bold mb-1"}," Plan Ready for Review "),d("div",{class:"text-xs font-mono text-retro-muted"}," Approve to switch to Auto mode and start implementation. ")],-1)),d("div",{class:"flex flex-shrink-0 gap-2"},[d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-green/20 text-retro-green border border-retro-green/50 hover:bg-retro-green/30 transition-colors",onClick:M}," Approve & Implement "),d("button",{class:"px-3 py-1.5 text-xs font-mono rounded bg-retro-red/20 text-retro-red border border-retro-red/50 hover:bg-retro-red/30 transition-colors",onClick:T}," Reject ")])])])):Y("",!0),m(b).length>0?(v(),y("div",l8,[(v(!0),y(Se,null,ze(m(b),Re=>(v(),y("div",{key:Re.id,class:"relative w-24 rounded border border-retro-border/70 bg-retro-black/80 p-1"},[d("img",{src:Re.dataUrl,alt:Re.name,class:"h-16 w-full rounded object-cover"},null,8,c8),d("div",u8,A(Re.name),1),d("div",h8,A(m(R7)(Re.size)),1),d("button",{class:"absolute -right-2 -top-2 rounded-full border border-retro-border bg-retro-panel p-0.5 text-retro-red hover:bg-retro-red/20",type:"button",onClick:We=>Z(Re.id)},[ee(m(Ct),{class:"h-3 w-3"})],8,d8)]))),128))])):Y("",!0),m(S).length>0?(v(),y("div",f8,[d("div",m8," Queued ("+A(m(S).length)+") ",1),d("div",p8,[(v(!0),y(Se,null,ze(m(S),(Re,We)=>(v(),y("div",{key:Re.id,class:"flex items-center gap-2 px-2.5 py-1.5 bg-retro-panel/50 border border-retro-border/30 rounded"},[d("span",g8,"#"+A(We+1),1),d("span",O8,A(Re.text),1),Re.attachments.length>0?(v(),y("span",v8," +"+A(Re.attachments.length)+" img ",1)):Y("",!0),d("button",{class:"flex-shrink-0 p-0.5 text-retro-muted hover:text-retro-red transition-colors",title:"Cancel queued message",onClick:Fe=>on(Re.id)},[ee(m(Ct),{class:"w-3.5 h-3.5"})],8,b8)]))),128))])])):Y("",!0),d("div",x8,[d("input",{ref_key:"fileInputRef",ref:f,type:"file",accept:"image/*",multiple:"",class:"hidden",onChange:be},null,544),d("button",{class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-panel/70 text-retro-muted hover:text-retro-cyan hover:bg-retro-panel disabled:opacity-50 disabled:cursor-not-allowed transition-colors",type:"button",title:"Attach images",disabled:r.disabled||m(Ce)||m(Me),onClick:ke[2]||(ke[2]=Re=>m(f)?.click())},[ee(m(Dv),{class:"w-5 h-5"})],8,y8),d("div",k8,[je(d("textarea",{ref_key:"inputRef",ref:h,"onUpdate:modelValue":ke[3]||(ke[3]=Re=>Je(u)?u.value=Re:null),disabled:r.disabled||m(Ce)||m(Me),placeholder:r.disabled?"This conversation is finalized (read-only)":m(t).isActiveConversationStreaming?"Type to queue a message...":"Type a message...",rows:"1",class:"w-full h-full min-h-[40px] px-3 py-2 bg-retro-black border border-retro-border rounded text-sm font-mono text-retro-text placeholder-retro-muted focus:outline-none focus:border-retro-cyan disabled:opacity-50 disabled:cursor-not-allowed resize-none overflow-hidden",onKeydown:jn},null,40,w8),[[Zt,m(u)]])]),m(Qe)?(v(),y("button",{key:0,class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-yellow/20 text-retro-yellow hover:bg-retro-yellow/30 transition-colors",title:"Retry last message",onClick:an},[ee(m(g7),{class:"w-5 h-5"})])):Y("",!0),m(Ce)?Y("",!0):(v(),y("button",{key:1,disabled:!m(Oe),title:m(t).isActiveConversationStreaming?"Queue message":"Send message",class:Be(["flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded disabled:opacity-50 disabled:cursor-not-allowed transition-colors",m(t).isActiveConversationStreaming?"bg-retro-yellow/20 text-retro-yellow hover:bg-retro-yellow/30":"bg-retro-cyan/20 text-retro-cyan hover:bg-retro-cyan/30"]),onClick:At},[m(t).isActiveConversationStreaming?(v(),ge(m(pp),{key:0,class:"w-5 h-5"})):(v(),ge(m(O7),{key:1,class:"w-5 h-5"}))],10,S8)),m(ve)?(v(),y("button",{key:2,class:"flex-shrink-0 h-10 w-10 inline-flex items-center justify-center p-0 rounded bg-retro-red/20 text-retro-red hover:bg-retro-red/30 transition-colors",onClick:rt},[ee(m(v7),{class:"w-5 h-5"})])):Y("",!0)]),ke[6]||(ke[6]=d("div",{class:"mt-1 hidden text-xs font-mono text-retro-muted sm:block"}," Press Enter to send (or queue while AI is responding), Shift+Enter for new line. Slash commands: `/context`, `/reset`, `/new`, `/clear`, `/spec-search`. ",-1))]))}}),C8={class:"h-64 border-t border-retro-border bg-retro-dark/50 flex flex-col"},Q8={class:"h-9 flex items-center justify-between px-3 border-b border-retro-border/40"},P8={key:0,class:"flex-1 flex items-center justify-center text-xs font-mono text-retro-muted"},T8={key:1,class:"flex-1 overflow-y-auto scrollbar-custom"},M8={class:"flex items-center gap-2 text-[10px] font-mono"},A8={class:"text-retro-muted"},_8={class:"text-retro-muted"},R8={class:"text-retro-green truncate"},B8={class:"mt-1 text-[11px] font-mono text-retro-text whitespace-pre-wrap break-words"},Z8=Ie({__name:"ChatDebugPanel",setup(r){const e=vr(),{debugEvents:t}=j1(e);function n(i){return new Date(i).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}function s(i){return i==="in"?"text-retro-cyan":i==="out"?"text-retro-yellow":"text-retro-muted"}return(i,o)=>(v(),y("div",C8,[d("div",Q8,[o[1]||(o[1]=d("div",{class:"text-[11px] font-mono text-retro-text"}," Debug Stream (CLI/Provider) ",-1)),d("button",{class:"p-1 rounded hover:bg-retro-panel transition-colors",title:"Clear debug events",onClick:o[0]||(o[0]=a=>m(e).clearDebugEvents())},[ee(m(vn),{class:"w-3.5 h-3.5 text-retro-muted"})])]),m(t).length===0?(v(),y("div",P8," No debug events yet ")):(v(),y("div",T8,[(v(!0),y(Se,null,ze(m(t),a=>(v(),y("div",{key:a.id,class:"px-3 py-2 border-b border-retro-border/20"},[d("div",M8,[d("span",A8,A(n(a.timestamp)),1),d("span",{class:Be(s(a.direction))},A(a.direction.toUpperCase()),3),d("span",_8,A(a.channel),1),d("span",R8,A(a.eventType),1)]),d("pre",B8,A(a.payload),1)]))),128))]))]))}}),E8={class:"px-4 py-3 border-b border-retro-border bg-retro-dark/80 space-y-3"},D8={class:"flex items-center justify-between"},L8={class:"space-y-1 text-xs font-mono"},X8={class:"flex items-center gap-2"},I8={class:"relative"},V8=["disabled"],z8=["value"],N8=["value"],W8={class:"flex items-center gap-2"},q8={class:"text-retro-text"},j8={class:"relative"},Y8=["disabled"],F8=["disabled"],U8={key:0,class:"flex items-center justify-between gap-3 rounded border border-retro-border bg-retro-black px-2 py-1.5 text-xs font-mono"},G8={class:"min-w-0"},H8={class:"flex items-center gap-2"},K8={class:"text-retro-text truncate"},J8={key:0,class:"mt-0.5 text-retro-red truncate"},eZ={class:"flex items-center gap-2"},tZ=["disabled"],rZ=["disabled"],nZ=Ie({__name:"FinalizeConfirm",props:{baseBranch:{},worktreeBranch:{},worktreePath:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=r,n=e,s=Q(""),i=Q(null),o=Q(!1),a=Q(!1),l=Q("idle"),c=Q(""),u=Q(null),h=Q(Zo(t.baseBranch)?t.baseBranch:""),f=Q([]),g=Q(!1),p=Q(null),O=J(()=>B1(h.value||t.baseBranch));async function b(){if(a.value)return;a.value=!0,l.value="running",c.value="";const w=new AbortController;u.value=w;try{const S=await $fetch("/api/chat/generate-commit-message",{method:"POST",signal:w.signal,body:{conversationId:t.worktreePath.split("/").pop()?.replace("sc-","")||"",worktreePath:t.worktreePath,worktreeBranch:t.worktreeBranch,baseBranch:h.value||t.baseBranch}});S.success&&S.message?(s.value=S.message,l.value="done"):(l.value="error",c.value=S.error||"Failed to generate commit message")}catch(S){w.signal.aborted?l.value="aborted":(l.value="error",c.value=S instanceof Error?S.message:String(S))}finally{a.value=!1,u.value===w&&(u.value=null)}}function x(){u.value?.abort()}gt(async()=>{const w=(async()=>{try{const P=t.worktreePath.split("/").pop()||"",X=await $fetch(`/api/commits/${encodeURIComponent(P)}`,{params:{workingDirectory:t.worktreePath}});i.value=X.aheadCount}catch{i.value=null}})(),S=(async()=>{g.value=!0;try{const P=t.worktreePath||(await $fetch("/api/cwd")).cwd,X=await $fetch("/api/git/branches",{query:{workingDirectory:P}});f.value=X.branches.filter(K=>!K.isRemote&&!K.name.startsWith("sc/")).map(zh).filter(K=>!!K);const E=Vh(h.value||t.baseBranch,f.value);E&&(h.value=E)}catch{f.value=[]}finally{g.value=!1}})();await Promise.all([w,S]),zt(()=>p.value?.focus())});function k(){!s.value.trim()||!h.value||(o.value=!0,n("confirm",s.value.trim(),h.value))}return(w,S)=>(v(),y("div",E8,[d("div",D8,[S[4]||(S[4]=d("span",{class:"text-xs font-mono text-retro-text font-semibold uppercase tracking-wide"}," Finalize ",-1)),d("button",{type:"button",class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",title:"Cancel",onClick:S[0]||(S[0]=P=>n("cancel"))},[ee(m(Ct),{class:"w-4 h-4"})])]),d("div",L8,[d("div",X8,[S[5]||(S[5]=d("span",{class:"text-retro-muted"},"target:",-1)),d("div",I8,[je(d("select",{"onUpdate:modelValue":S[1]||(S[1]=P=>h.value=P),disabled:o.value||g.value,class:"appearance-none bg-retro-black border border-retro-border rounded px-2 py-0.5 pr-6 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan cursor-pointer disabled:opacity-40"},[g.value?(v(),y("option",{key:0,value:h.value},A(O.value),9,z8)):Y("",!0),(v(!0),y(Se,null,ze(f.value,P=>(v(),y("option",{key:P,value:P},A(P),9,N8))),128))],8,V8),[[ks,h.value]]),ee(m(Zu),{class:"absolute right-1 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})])]),d("div",W8,[S[6]||(S[6]=d("span",{class:"text-retro-muted"},"commits:",-1)),d("span",q8,A(i.value!==null?i.value:"..."),1)])]),d("div",j8,[je(d("textarea",{ref_key:"textareaRef",ref:p,"onUpdate:modelValue":S[2]||(S[2]=P=>s.value=P),placeholder:"Squash commit message...",rows:"2",class:"w-full px-2 py-1.5 pr-8 text-xs font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan resize-none",disabled:o.value||a.value},null,8,Y8),[[Zt,s.value]]),d("button",{type:"button",disabled:o.value||a.value||g.value||!h.value,class:"absolute right-1.5 top-1.5 p-0.5 rounded text-retro-muted hover:text-retro-cyan transition-colors disabled:opacity-40",title:"Generate commit message",onClick:b},[ee(m(Yi),{class:Be(["w-4 h-4",{"animate-spin":a.value}])},null,8,["class"])],8,F8)]),l.value!=="idle"?(v(),y("div",U8,[d("div",G8,[d("div",H8,[ee(m(Yi),{class:Be(["w-3.5 h-3.5 text-retro-cyan shrink-0",{"animate-spin":l.value==="running"}])},null,8,["class"]),d("span",K8,A(l.value==="running"?`Generating from ${h.value}...`:l.value==="done"?"Commit message generated":l.value==="aborted"?"Generation stopped":"Generation failed"),1)]),c.value?(v(),y("div",J8,A(c.value),1)):Y("",!0)]),l.value==="running"?(v(),y("button",{key:0,type:"button",class:"shrink-0 p-0.5 rounded text-retro-muted hover:text-retro-red transition-colors",title:"Stop generation",onClick:x},[ee(m(Op),{class:"w-4 h-4"})])):Y("",!0)])):Y("",!0),d("div",eZ,[d("button",{type:"button",disabled:!s.value.trim()||!h.value||o.value,class:"flex items-center gap-1 px-3 py-1 text-xs font-mono rounded border transition-colors bg-retro-green/10 border-retro-green/50 text-retro-green hover:bg-retro-green/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:k},[ee(m(Bu),{class:"w-3.5 h-3.5"}),Xe(" "+A(o.value?"Finalizing...":"Confirm"),1)],8,tZ),d("button",{type:"button",disabled:o.value,class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",onClick:S[3]||(S[3]=P=>n("cancel"))}," Cancel ",8,rZ)])]))}}),sZ={class:"px-4 py-3 border-b border-retro-border bg-retro-dark/80 space-y-3"},iZ={class:"flex items-center justify-between"},oZ={class:"space-y-1 text-xs font-mono"},aZ={class:"flex items-center gap-2"},lZ={class:"text-retro-cyan"},cZ={class:"flex items-center gap-2"},uZ={class:"relative"},hZ=["disabled"],dZ=["value"],fZ=["value"],mZ={class:"flex items-center gap-2"},pZ={class:"text-retro-text"},gZ={class:"flex items-center gap-2"},OZ=["disabled"],vZ=["disabled"],bZ=Ie({__name:"RebaseConfirm",props:{baseBranch:{},worktreeBranch:{},worktreePath:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=r,n=e,s=Q(null),i=Q(!1),o=Q(Zo(t.baseBranch)?t.baseBranch:""),a=Q([]),l=Q(!1),c=J(()=>B1(o.value||t.baseBranch));let u=0;async function h(g){if(!g){u++,s.value=null;return}const p=++u;try{const O=await $fetch("/api/chat/compare",{params:{worktreePath:t.worktreePath,baseBranch:g}});if(p!==u)return;s.value=O.ahead}catch{if(p!==u)return;s.value=null}}gt(async()=>{const g=h(o.value),p=(async()=>{l.value=!0;try{const O=t.worktreePath||(await $fetch("/api/cwd")).cwd,b=await $fetch("/api/git/branches",{query:{workingDirectory:O}});a.value=b.branches.filter(k=>!k.isRemote&&!k.name.startsWith("sc/")).map(zh).filter(k=>!!k);const x=Vh(o.value||t.baseBranch,a.value);x&&(o.value=x)}catch{a.value=[]}finally{l.value=!1}})();await Promise.all([g,p])}),Ve(o,g=>{h(g)});function f(){o.value&&(i.value=!0,n("confirm",o.value))}return(g,p)=>(v(),y("div",sZ,[d("div",iZ,[p[3]||(p[3]=d("span",{class:"text-xs font-mono text-retro-text font-semibold uppercase tracking-wide"}," Rebase Worktree ",-1)),d("button",{type:"button",class:"p-0.5 text-retro-muted hover:text-retro-text transition-colors",title:"Cancel",onClick:p[0]||(p[0]=O=>n("cancel"))},[ee(m(Ct),{class:"w-4 h-4"})])]),d("div",oZ,[d("div",aZ,[p[4]||(p[4]=d("span",{class:"text-retro-muted"},"worktree:",-1)),d("span",lZ,A(r.worktreeBranch),1)]),d("div",cZ,[p[5]||(p[5]=d("span",{class:"text-retro-muted"},"target:",-1)),d("div",uZ,[je(d("select",{"onUpdate:modelValue":p[1]||(p[1]=O=>o.value=O),disabled:i.value||l.value,class:"appearance-none bg-retro-black border border-retro-border rounded px-2 py-0.5 pr-6 text-xs font-mono text-retro-cyan focus:outline-none focus:border-retro-cyan cursor-pointer disabled:opacity-40"},[l.value?(v(),y("option",{key:0,value:o.value},A(c.value),9,dZ)):Y("",!0),(v(!0),y(Se,null,ze(a.value,O=>(v(),y("option",{key:O,value:O},A(O),9,fZ))),128))],8,hZ),[[ks,o.value]]),ee(m(Zu),{class:"absolute right-1 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-retro-muted pointer-events-none"})])]),d("div",mZ,[p[6]||(p[6]=d("span",{class:"text-retro-muted"},"commits ahead:",-1)),d("span",pZ,A(s.value!==null?s.value:"..."),1)])]),d("div",gZ,[d("button",{type:"button",disabled:i.value||!o.value,class:"flex items-center gap-1 px-3 py-1 text-xs font-mono rounded border transition-colors bg-retro-cyan/10 border-retro-cyan/50 text-retro-cyan hover:bg-retro-cyan/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:f},[ee(m(Bu),{class:"w-3.5 h-3.5"}),Xe(" "+A(i.value?"Rebasing...":"Confirm"),1)],8,OZ),d("button",{type:"button",disabled:i.value,class:"px-3 py-1 text-xs font-mono rounded border border-retro-border text-retro-muted hover:text-retro-text hover:border-retro-text/30 transition-colors disabled:opacity-40",onClick:p[2]||(p[2]=O=>n("cancel"))}," Cancel ",8,vZ)])]))}}),xZ={class:"flex-1 flex flex-col overflow-hidden"},yZ={class:"flex-shrink-0 px-4 py-2 border-b border-retro-border flex items-center justify-between bg-retro-dark"},kZ={class:"text-xs font-mono text-retro-text truncate"},wZ={class:"flex items-center gap-2 flex-shrink-0"},SZ={key:0,class:"text-xs font-mono text-retro-green"},$Z={key:1,class:"text-[11px] font-mono text-retro-muted"},CZ={key:0,class:"flex items-center justify-center h-full text-retro-muted text-xs font-mono"},QZ=["innerHTML"],PZ={key:0,class:"flex-shrink-0 px-4 py-2 border-t border-retro-border bg-retro-yellow/10 text-retro-yellow text-xs font-mono"},TZ=Ie({__name:"ConflictFileEditor",props:{file:{},resolved:{type:Boolean},isAiResolving:{type:Boolean},strategy:{}},emits:["resolve","aiResolve","retry"],setup(r,{emit:e}){const t=r;Q(t.file.content);const n=Q(""),s=Q(!1);Ve(()=>t.file.path,()=>{l()}),Ve(()=>t.file.content,()=>{l()});const i=J(()=>{const u=/^<{7}\s/gm;return(t.file.content.match(u)||[]).length});function o(u){const h=u.split(".").pop()?.toLowerCase()||"";return{ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",vue:"vue",html:"html",css:"css",scss:"scss",less:"less",json:"json",yaml:"yaml",yml:"yaml",md:"markdown",py:"python",rb:"ruby",go:"go",rs:"rust",java:"java",kt:"kotlin",swift:"swift",sh:"bash",zsh:"bash",sql:"sql",graphql:"graphql",xml:"xml",svg:"xml",toml:"toml",ini:"ini",dockerfile:"dockerfile"}[h]||"text"}let a=0;async function l(){const u=++a;s.value=!0;try{const{codeToHtml:h}=await ds(async()=>{const{codeToHtml:w}=await import("./DPOGSCeV.js");return{codeToHtml:w}},__vite__mapDeps([3,1,2]),import.meta.url),f=o(t.file.path),p=t.file.content.split(`
|
|
73
|
-
`);let O="",b=!1,x=!1,k=0;for(const w of p){k++;const S=/^<{7}\s/.test(w),P=/^={7}$/.test(w),X=/^>{7}\s/.test(w);if(S){b=!0,x=!1,O+=`<div class="conflict-line conflict-marker-line" data-line="${k}"><span class="line-number">${k}</span><span class="line-content conflict-marker">${c(w)}</span></div>
|
|
74
|
-
`;continue}if(P&&b){b=!1,x=!0,O+=`<div class="conflict-line conflict-marker-line" data-line="${k}"><span class="line-number">${k}</span><span class="line-content conflict-marker">${c(w)}</span></div>
|
|
75
|
-
`;continue}if(X){x=!1,O+=`<div class="conflict-line conflict-marker-line" data-line="${k}"><span class="line-number">${k}</span><span class="line-content conflict-marker">${c(w)}</span></div>
|
|
76
|
-
`;continue}let E=c(w);try{const oe=(await h(w||" ",{lang:f,theme:"vitesse-dark"})).match(/<code[^>]*><span class="line">(.*?)<\/span><\/code>/s);oe&&(E=oe[1])}catch{}let K="";b?K="conflict-ours":x&&(K="conflict-theirs"),O+=`<div class="conflict-line ${K}" data-line="${k}"><span class="line-number">${k}</span><span class="line-content">${E}</span></div>
|
|
77
|
-
`}if(u!==a)return;n.value=O}catch{if(u!==a)return;const h=t.file.content.split(`
|
|
78
|
-
`);n.value=h.map((f,g)=>{const p=g+1;return`<div class="conflict-line" data-line="${p}"><span class="line-number">${p}</span><span class="line-content">${c(f)}</span></div>`}).join(`
|
|
79
|
-
`)}finally{u===a&&(s.value=!1)}}function c(u){return u.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}return gt(()=>{l()}),(u,h)=>(v(),y("div",xZ,[d("div",yZ,[d("span",kZ,A(r.file.path),1),d("div",wZ,[r.resolved?(v(),y("span",SZ," Resolved ")):i.value>0?(v(),y("span",$Z,A(i.value)+" conflict "+A(i.value===1?"block":"blocks"),1)):Y("",!0)])]),d("div",{class:Be(["flex-1 overflow-auto bg-retro-black conflict-viewer",{"opacity-60":r.resolved}])},[s.value?(v(),y("div",CZ," Highlighting... ")):(v(),y("div",{key:1,class:"conflict-code",innerHTML:n.value},null,8,QZ))],2),i.value>0&&!r.resolved?(v(),y("div",PZ," File contains "+A(i.value)+" conflict "+A(i.value===1?"block":"blocks")+". Use AI resolution to resolve. ",1)):Y("",!0)]))}}),MZ={class:"flex flex-col h-full border-l border-retro-border bg-retro-dark"},AZ={class:"flex-shrink-0 px-3 py-2 border-b border-retro-border"},_Z={class:"flex items-center gap-2"},RZ={class:"text-[10px] font-mono text-retro-muted mt-1"},BZ={key:0,class:"text-xs font-mono text-retro-muted text-center py-8"},ZZ={key:0,class:"bg-retro-panel/50 rounded px-2 py-1.5 border border-retro-border"},EZ={class:"mt-0.5"},DZ={class:"inline-block w-3 text-center opacity-70"},LZ={key:1,class:"flex items-center gap-2 text-xs font-mono text-retro-cyan"},XZ={class:"flex-shrink-0 border-t border-retro-border p-3 space-y-2"},IZ=["disabled"],VZ=["disabled"],zZ={key:0},NZ={key:1},WZ=Ie({__name:"ConflictChatPanel",setup(r){const e=vr(),t=xo(),n=Q(""),s=Q(null),i=J(()=>e.conflictState?.chatMessages??[]),o=J(()=>e.conflictState?.lifecycleState==="resolving"),a=J(()=>{if(!e.conflictState)return!1;const p=e.conflictState.files.length,O=e.conflictState.resolvedFiles.size;return p>0&&O>=p}),l=J(()=>e.conflictState?e.conflictState.files.length-e.conflictState.resolvedFiles.size:0),c=J(()=>`${t.providerId}/${t.providerModelKey}`);Ve(()=>i.value.length,async()=>{await zt(),s.value&&(s.value.scrollTop=s.value.scrollHeight)});function u(){!e.conflictState||o.value||(e.setConflictUserGuidance(n.value.trim()),e.aiResolveAllConflicts())}function h(){e.cancelConflictResolution()}function f(p){switch(p.type){case"success":return"text-retro-green";case"error":return"text-retro-red";case"progress":return"text-retro-cyan";case"summary":return"text-retro-yellow";default:return"text-retro-muted"}}function g(p){switch(p.type){case"success":return"✓";case"error":return"✗";case"progress":return"▶";case"summary":return"─";default:return"●"}}return(p,O)=>(v(),y("div",MZ,[d("div",AZ,[d("div",_Z,[ee(m(Yi),{class:"w-4 h-4 text-retro-orange"}),O[1]||(O[1]=d("span",{class:"text-xs font-mono text-retro-text font-semibold"},"AI Conflict Resolution",-1))]),d("div",RZ," Model: "+A(c.value),1)]),d("div",{ref_key:"messagesContainer",ref:s,class:"flex-1 overflow-y-auto px-3 py-2 space-y-2"},[i.value.length===0?(v(),y("div",BZ," Enter optional guidance below and click resolve to start AI conflict resolution. ")):Y("",!0),(v(!0),y(Se,null,ze(i.value,b=>(v(),y("div",{key:b.id,class:Be(["text-xs font-mono leading-relaxed",b.role==="user"?"text-retro-text":f(b)])},[b.role==="user"?(v(),y("div",ZZ,[O[2]||(O[2]=d("span",{class:"text-retro-muted text-[10px]"},"Guidance:",-1)),d("div",EZ,A(b.content),1)])):(v(),y(Se,{key:1},[d("span",DZ,A(g(b)),1),Xe(" "+A(b.content),1)],64))],2))),128)),o.value?(v(),y("div",LZ,[...O[3]||(O[3]=[d("span",{class:"animate-pulse"},"●",-1),Xe(" Processing... ",-1)])])):Y("",!0)],512),d("div",XZ,[je(d("textarea",{"onUpdate:modelValue":O[0]||(O[0]=b=>n.value=b),disabled:o.value,placeholder:'Optional: Add guidance for AI resolution (e.g., "prefer feature branch API changes", "keep both import sets")...',class:"w-full h-16 px-2 py-1.5 text-xs font-mono bg-retro-black text-retro-text border border-retro-border rounded resize-none focus:outline-none focus:border-retro-cyan/50 placeholder:text-retro-muted/50 disabled:opacity-50",spellcheck:"false"},null,8,IZ),[[Zt,n.value]]),o.value?(v(),y("button",{key:1,type:"button",class:"w-full flex items-center justify-center gap-2 px-3 py-2 text-xs font-mono rounded border transition-colors bg-retro-red/10 border-retro-red/50 text-retro-red hover:bg-retro-red/20",onClick:h},[ee(m(Op),{class:"w-4 h-4"}),O[4]||(O[4]=Xe(" Stop Resolution ",-1))])):(v(),y("button",{key:0,type:"button",disabled:a.value||l.value===0,class:"w-full flex items-center justify-center gap-2 px-3 py-2 text-xs font-mono rounded border transition-colors bg-retro-orange/10 border-retro-orange/50 text-retro-orange hover:bg-retro-orange/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:u},[ee(m(Yi),{class:"w-4 h-4"}),a.value?(v(),y("span",zZ,"All Conflicts Resolved")):(v(),y("span",NZ,"Resolve Conflicts Automatically ("+A(l.value)+")",1))],8,VZ))])]))}}),qZ={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60"},jZ={class:"w-full max-w-7xl mx-4 my-8 h-[85vh] bg-retro-dark border border-retro-border rounded-lg shadow-xl flex flex-col overflow-hidden"},YZ={class:"flex-shrink-0 px-4 py-3 border-b border-retro-border flex items-center justify-between"},FZ={class:"flex items-center gap-3"},UZ={class:"text-xs font-mono text-retro-muted"},GZ={class:"flex items-center gap-2"},HZ=["disabled"],KZ=["disabled"],JZ={key:0,class:"flex-1 flex items-center justify-center text-retro-muted text-sm font-mono"},eE={key:1,class:"flex-1 flex items-center justify-center text-retro-red text-sm font-mono"},tE={key:2,class:"flex-1 flex overflow-hidden"},rE={class:"w-56 flex-shrink-0 border-r border-retro-border overflow-y-auto bg-retro-dark"},nE={class:"py-1"},sE=["onClick"],iE={class:"flex-1 flex flex-col overflow-hidden min-w-0"},oE={key:1,class:"flex-1 flex items-center justify-center text-retro-muted text-sm font-mono"},aE={class:"w-80 flex-shrink-0"},lE=Ie({__name:"ConflictResolutionModal",emits:["close"],setup(r,{emit:e}){const t=e,n=vr(),s=Q(null),i=Q(!1),o=Q(!1),a=J(()=>n.conflictState?.files??[]),l=J(()=>n.conflictState?.resolvedFiles??new Set),c=J(()=>a.value.length),u=J(()=>l.value.size),h=J(()=>c.value>0&&u.value>=c.value),f=J(()=>s.value?a.value.find(x=>x.path===s.value)??null:null);function g(x){return l.value.has(x)}function p(x){s.value=x}async function O(){i.value=!0;const x=await n.continueRebase();i.value=!1,x.success&&t("close")}async function b(){o.value=!0,await n.cancelConflictResolution(),o.value=!1,t("close")}return(x,k)=>(v(),ge(Pr,{to:"body"},[ee(On,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ct(()=>[m(n).conflictState?(v(),y("div",qZ,[d("div",jZ,[d("div",YZ,[d("div",FZ,[ee(m(En),{class:"w-5 h-5 text-retro-yellow"}),k[0]||(k[0]=d("h3",{class:"text-sm font-mono text-retro-text font-semibold"},"Resolve Conflicts",-1)),d("span",UZ,A(u.value)+"/"+A(c.value)+" resolved ",1)]),d("div",GZ,[d("button",{type:"button",disabled:!h.value||i.value||o.value,class:"flex items-center gap-1 px-3 py-1.5 text-xs font-mono rounded border transition-colors bg-retro-green/10 border-retro-green/50 text-retro-green hover:bg-retro-green/20 disabled:opacity-40 disabled:cursor-not-allowed",onClick:O},A(i.value?"Continuing...":"Continue Rebase"),9,HZ),d("button",{type:"button",disabled:i.value||o.value,class:"px-3 py-1.5 text-xs font-mono rounded border border-retro-red/50 text-retro-red hover:bg-retro-red/10 transition-colors disabled:opacity-40",onClick:b},A(o.value?"Aborting...":"Abort"),9,KZ)])]),m(n).conflictState?.loading?(v(),y("div",JZ," Loading conflict files... ")):m(n).conflictState?.error?(v(),y("div",eE,A(m(n).conflictState.error),1)):(v(),y("div",tE,[d("div",rE,[d("div",nE,[(v(!0),y(Se,null,ze(a.value,w=>(v(),y("button",{key:w.path,type:"button",class:Be(["w-full text-left px-3 py-2 text-xs font-mono flex items-center gap-2 transition-colors hover:bg-retro-panel",{"bg-retro-panel":s.value===w.path}]),onClick:S=>p(w.path)},[g(w.path)?(v(),ge(m(Ru),{key:0,class:"w-3.5 h-3.5 text-retro-green flex-shrink-0"})):(v(),ge(m(vo),{key:1,class:"w-3.5 h-3.5 text-retro-yellow flex-shrink-0"})),d("span",{class:Be(["truncate",g(w.path)?"text-retro-green":"text-retro-yellow"])},A(w.path),3)],10,sE))),128))])]),d("div",iE,[f.value?(v(),ge(TZ,{key:0,file:f.value,resolved:g(f.value.path)},null,8,["file","resolved"])):(v(),y("div",oE," Select a file to view "))]),d("div",aE,[ee(WZ)])]))])])):Y("",!0)]),_:1})]))}}),cE={key:0,class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},uE={class:"flex items-center justify-between p-4 border-b border-retro-border"},hE={class:"flex items-center gap-2"},dE={class:"p-4"},fE={class:"mt-2 text-sm text-retro-text font-mono truncate"},mE={class:"flex justify-end gap-3 p-4 border-t border-retro-border"},pE=Ie({__name:"DeleteConfirmModal",props:{show:{type:Boolean},title:{}},emits:["confirm","cancel"],setup(r,{emit:e}){const t=e;function n(s){s.target===s.currentTarget&&t("cancel")}return(s,i)=>(v(),ge(Pr,{to:"body"},[ee(On,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:ct(()=>[r.show?(v(),y("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n},[ee(On,{"enter-active-class":"transition-all duration-200","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-all duration-200","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:ct(()=>[r.show?(v(),y("div",cE,[d("div",uE,[d("div",hE,[ee(m(En),{class:"w-5 h-5 text-retro-red"}),i[3]||(i[3]=d("h3",{class:"text-lg font-mono text-retro-text"},"Delete Conversation",-1))]),d("button",{onClick:i[0]||(i[0]=o=>t("cancel")),class:"p-1 hover:bg-retro-panel rounded transition-colors"},[ee(m(Ct),{class:"w-5 h-5 text-retro-muted"})])]),d("div",dE,[i[4]||(i[4]=d("p",{class:"text-sm text-retro-muted font-mono"}," Are you sure you want to delete this conversation? ",-1)),d("p",fE,' "'+A(r.title)+'" ',1),i[5]||(i[5]=d("p",{class:"mt-3 text-xs text-retro-muted"}," This action cannot be undone. ",-1))]),d("div",mE,[d("button",{onClick:i[1]||(i[1]=o=>t("cancel")),class:"px-4 py-2 text-sm font-mono text-retro-muted border border-retro-border rounded hover:bg-retro-panel transition-colors"}," Cancel "),d("button",{onClick:i[2]||(i[2]=o=>t("confirm")),class:"px-4 py-2 text-sm font-mono text-white bg-retro-red/80 border border-retro-red rounded hover:bg-retro-red transition-colors"}," Delete ")])])):Y("",!0)]),_:1})])):Y("",!0)]),_:1})]))}}),gE={class:"h-full flex flex-col bg-retro-black"},OE={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},vE={class:"flex items-center gap-2 min-w-0"},bE={class:"text-xs font-mono text-retro-text truncate"},xE={class:"flex items-center gap-1"},yE=["disabled","title"],kE=["title"],wE=["title"],SE=["disabled"],$E={key:4,class:"flex-shrink-0 px-4 py-2 border-b border-retro-border bg-retro-green/10 text-retro-green text-xs font-mono text-center"},CE={class:"flex-1 min-h-0 flex flex-col"},Gm=Ie({__name:"ChatPanel",setup(r){const e=vr(),t=Z1(),{disconnectConversation:n,abort:s}=_l();gt(async()=>{try{const ce=await $fetch("/api/cwd");e.setCwd(ce.cwd)}catch{}});const i=J(()=>e.activeConversation?.title||"New Chat"),o=Q(!1),a=J(()=>t.isChatFullscreen),l=Q(!1);Ve(l,ce=>{e.setDebugStreamEnabled(ce)}),$t(()=>{e.setDebugStreamEnabled(!1)});function c(){t.toggleChatFullscreen()}async function u(){o.value=!1;const ce=e.activeConversationId;ce&&(e.isConversationStreaming(ce)&&s(ce),n(ce),await e.deleteConversation(ce)),e.clearMessages()}function h(){e.hasMessages&&(o.value=!0)}function f(){o.value=!1}const g=Q(!1),p=Q(null),O=J(()=>e.activeConversation?.finalized===!0),b=J(()=>O.value),x=Q(null),k=Q(!1);let w=0;async function S(){const ce=e.activeConversation;if(!ce?.worktreePath||!ce?.baseBranch){w++,x.value=null;return}const H=++w;k.value=!0;try{const F=await $fetch("/api/chat/compare",{params:{worktreePath:ce.worktreePath,baseBranch:ce.baseBranch}});if(H!==w)return;x.value=F}catch{if(H!==w)return;x.value=null}finally{H===w&&(k.value=!1)}}Ve(()=>[e.activeConversationId,e.activeConversation?.worktreePath,e.activeConversation?.baseBranch,e.activeConversation?.lastCommitTime,e.activeConversation?.updatedAt,e.isActiveConversationStreaming],()=>{S()},{immediate:!0}),Ve(()=>e.activeConversationId,()=>{g.value=!1,z.value=!1,p.value=null});const P=J(()=>x.value?x.value.ahead===0&&x.value.behind===0:!1),X=J(()=>{const ce=e.activeConversation;return ce?.hasWorktree&&!ce?.finalized}),E=J(()=>{const ce=e.activeConversation;return!!ce?.hasWorktree&&!ce?.finalized&&!e.isActiveConversationStreaming&&!P.value});function K(){g.value=!0,p.value=null}async function le(ce,H){const F=e.activeConversationId;if(!F)return;const re=await e.finalizeConversation(F,ce,H);if(g.value=!1,re.success)p.value={type:"success",message:`Merged to ${H}`},setTimeout(()=>{p.value=null},5e3);else if(re.rebaseInProgress)p.value=null;else{const Oe=re.conflictFiles?.length?`Conflict in: ${re.conflictFiles.join(", ")}`:re.error||"Finalize failed";p.value={type:"error",message:Oe}}}function oe(){g.value=!1}function N(){if(!e.conflictState&&e.activeConversation?.hasWorktree){const ce=e.activeConversation?.baseBranch||"main";p.value={type:"success",message:`Rebased onto ${ce}`},setTimeout(()=>{p.value=null},5e3)}else p.value=null}const I=Q(!1),D=J(()=>!!e.activeConversation?.previewBranch);async function U(){const ce=e.activeConversationId;if(!ce)return;I.value=!0,p.value=null;const H=D.value,F=await e.togglePreview(ce);if(F.success){const re=H?`Switched back to ${e.activeConversation?.baseBranch}`:"Preview active — main worktree updated";p.value={type:"success",message:re},setTimeout(()=>{p.value=null},3e3)}else p.value={type:"error",message:F.error||"Preview toggle failed"};I.value=!1}const z=Q(!1);function V(){z.value=!0,p.value=null}async function G(ce){const H=e.activeConversationId;if(!H)return;const F=await e.rebaseConversation(H,ce);z.value=!1,F.success?(p.value={type:"success",message:`Rebased onto ${ce}`},setTimeout(()=>{p.value=null},5e3)):F.rebaseInProgress?p.value=null:p.value={type:"error",message:F.error||"Rebase failed"}}function j(){z.value=!1}return(ce,H)=>(v(),y("div",gE,[d("div",OE,[d("div",vE,[d("span",bE,A(m(i)),1)]),d("div",xE,[m(X)?(v(),y("button",{key:0,disabled:m(I),class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors disabled:opacity-40 disabled:cursor-not-allowed",title:m(D)?"End preview: switch back to base branch":"Preview: test worktree changes in main worktree",onClick:U},[m(D)?(v(),ge(m(Tv),{key:0,class:"w-4 h-4 text-retro-cyan"})):(v(),ge(m(Mv),{key:1,class:"w-4 h-4"}))],8,yE)):Y("",!0),m(E)?(v(),y("button",{key:1,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Rebase: sync worktree onto target base branch",onClick:V},[...H[2]||(H[2]=[ep('<svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><circle cx="7" cy="4.5" r="1.5" fill="currentColor"></circle><circle cx="18" cy="20" r="1.5" fill="currentColor"></circle><circle cx="12" cy="7" r="1.4" fill="currentColor" opacity="0.9"></circle><path d="M7 6V16M7 16L4.5 13.5M7 16L9.5 13.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8.4 7H12.5C15.5376 7 18 9.46243 18 12.5V18.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M15.5 16L18 18.5L20.5 16" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>',1)])])):Y("",!0),m(E)?(v(),y("button",{key:2,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Finalize: squash & merge to base branch",onClick:K},[ee(m(Ru),{class:"w-4 h-4"})])):Y("",!0),d("button",{class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:m(a)?"Exit fullscreen chat":"Fullscreen chat",onClick:c},[m(a)?(v(),ge(m(ap),{key:0,class:"w-4 h-4"})):(v(),ge(m(lp),{key:1,class:"w-4 h-4"}))],8,kE),d("button",{class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:m(l)?"Hide debug stream":"Show debug stream",onClick:H[0]||(H[0]=F=>l.value=!m(l))},[ee(m(bv),{class:Be(["w-4 h-4",m(l)?"text-retro-cyan":""])},null,8,["class"])],8,wE),d("button",{disabled:!m(e).hasMessages,class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel disabled:opacity-30 disabled:cursor-not-allowed transition-colors",title:"New conversation",onClick:h},[ee(m(vn),{class:"w-4 h-4"})],8,SE)])]),ee(pE,{show:m(o),title:m(i),onConfirm:u,onCancel:f},null,8,["show","title"]),m(g)&&m(e).activeConversation?.hasWorktree?(v(),ge(nZ,{key:0,"base-branch":m(e).activeConversation.baseBranch||"main","worktree-branch":m(e).activeConversation.worktreeBranch||"","worktree-path":m(e).activeConversation.worktreePath||"",onConfirm:le,onCancel:oe},null,8,["base-branch","worktree-branch","worktree-path"])):Y("",!0),m(z)&&m(e).activeConversation?.hasWorktree?(v(),ge(bZ,{key:1,"base-branch":m(e).activeConversation.baseBranch||"main","worktree-branch":m(e).activeConversation.worktreeBranch||"","worktree-path":m(e).activeConversation.worktreePath||"",onConfirm:G,onCancel:j},null,8,["base-branch","worktree-branch","worktree-path"])):Y("",!0),m(e).conflictState?(v(),ge(lE,{key:2,onClose:N})):Y("",!0),m(p)?(v(),y("div",{key:3,class:Be(["flex-shrink-0 px-4 py-2 border-b border-retro-border text-xs font-mono",m(p).type==="success"?"bg-retro-green/10 text-retro-green":"bg-retro-red/10 text-retro-red"])},[Xe(A(m(p).message)+" ",1),m(p).type==="error"?(v(),y("button",{key:0,class:"ml-2 underline hover:no-underline",onClick:H[1]||(H[1]=F=>p.value=null)}," dismiss ")):Y("",!0)],2)):Y("",!0),m(O)?(v(),y("div",$E," This conversation has been finalized and is read-only. ")):Y("",!0),d("div",CE,[ee(p7,{class:"flex-1 overflow-hidden"}),m(l)?(v(),ge(Z8,{key:0})):Y("",!0)]),ee($8,{disabled:m(b)},null,8,["disabled"])]))}}),QE={class:"flex-shrink-0 flex items-center justify-between px-4 py-2 border-b border-retro-border bg-retro-panel"},PE={class:"flex items-center gap-2 min-w-0"},TE=["title"],ME={class:"text-retro-text font-mono text-sm truncate"},AE={class:"text-retro-muted"},_E={class:"text-retro-text"},RE={class:"text-retro-muted font-mono text-xs flex-shrink-0"},BE={class:"flex-1 overflow-auto"},ZE={key:0,class:"flex items-center justify-center gap-2 text-retro-muted text-sm py-8"},EE={key:1,class:"flex items-center justify-center text-retro-muted text-sm py-8"},DE={key:2,class:"flex items-center justify-center text-retro-muted text-sm py-8"},LE={key:3,class:"w-full text-xs font-mono border-collapse diff-table"},XE={key:0,class:"diff-warning"},IE={key:0,colspan:"3",class:"diff-hunk-header px-4 py-1"},VE={class:"diff-line-num select-none text-right px-2 w-12"},zE={class:"diff-line-num select-none text-right px-2 w-12 border-r border-retro-border"},NE={class:"diff-line-content px-3 whitespace-pre-wrap break-all"},WE={key:0,class:"diff-sign"},qE={key:1,class:"diff-sign"},jE={key:2,class:"diff-sign"},YE={key:4,class:"flex items-center justify-center text-retro-muted text-sm py-8"},FE=Ie({__name:"GitFileDiffViewer",props:{file:{},commitHash:{},content:{},loading:{type:Boolean}},emits:["close"],setup(r,{emit:e}){const t=r,n=e,s=Q(null),i=J(()=>t.commitHash.substring(0,7)),o=J(()=>Us[t.file.status]||{label:t.file.status,colorClass:"text-retro-muted"}),a=J(()=>t.file.status==="R"&&t.file.oldPath);function l(c){c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),n("close"))}return gt(()=>{s.value?.focus()}),(c,u)=>(v(),y("div",{ref_key:"containerRef",ref:s,tabindex:0,onKeydown:l,class:"flex flex-col h-full bg-retro-dark focus:outline-none","aria-label":"File diff viewer",role:"region"},[d("div",QE,[d("div",PE,[d("span",{class:Be(["flex-shrink-0 w-5 h-5 flex items-center justify-center text-xs font-bold rounded",o.value.colorClass]),title:o.value.label},A(r.file.status),11,TE),d("span",ME,[a.value&&r.file.oldPath?(v(),y(Se,{key:0},[d("span",AE,A(r.file.oldPath),1),u[1]||(u[1]=d("span",{class:"text-retro-yellow mx-1"},"→",-1)),d("span",_E,A(r.file.path),1)],64)):(v(),y(Se,{key:1},[Xe(A(r.file.path),1)],64))]),d("span",RE," @ "+A(i.value),1)]),d("button",{onClick:u[0]||(u[0]=h=>n("close")),class:"p-1 hover:bg-retro-dark rounded transition-colors flex-shrink-0 focus:outline-none focus:ring-2 focus:ring-retro-cyan","aria-label":"Close diff viewer",title:"Close (Esc)"},[ee(m(Ct),{class:"w-5 h-5 text-retro-muted hover:text-retro-text"})])]),d("div",BE,[r.loading?(v(),y("div",ZE,[...u[2]||(u[2]=[d("div",{class:"w-4 h-4 border-2 border-retro-muted border-t-retro-cyan rounded-full animate-spin"},null,-1),Xe(" Loading diff... ",-1)])])):r.content&&r.content.binary?(v(),y("div",EE,[...u[3]||(u[3]=[d("span",{class:"bg-retro-panel px-4 py-2 rounded font-mono"}," Binary file — cannot display diff ",-1)])])):r.content&&r.content.lines.length===0?(v(),y("div",DE,[...u[4]||(u[4]=[d("span",{class:"bg-retro-panel px-4 py-2 rounded font-mono"}," No changes in this file ",-1)])])):r.content?(v(),y("table",LE,[d("tbody",null,[r.content.truncated?(v(),y("tr",XE,[...u[5]||(u[5]=[d("td",{colspan:"3",class:"px-4 py-2 text-retro-yellow bg-retro-panel text-center"}," Diff truncated — file has more than 10,000 lines ",-1)])])):Y("",!0),(v(!0),y(Se,null,ze(r.content.lines,(h,f)=>(v(),y("tr",{key:f,class:Be({"diff-add":h.type==="add","diff-delete":h.type==="delete","diff-context":h.type==="context","diff-header":h.type==="header"})},[h.type==="header"?(v(),y("td",IE,A(h.content),1)):(v(),y(Se,{key:1},[d("td",VE,A(h.oldLineNumber??""),1),d("td",zE,A(h.newLineNumber??""),1),d("td",NE,[h.type==="add"?(v(),y("span",WE,"+")):h.type==="delete"?(v(),y("span",qE,"-")):(v(),y("span",jE," ")),Xe(" "+A(h.content),1)])],64))],2))),128))])])):(v(),y("div",YE," Failed to load diff content. "))])],544))}}),Hm=ws(FE,[["__scopeId","data-v-74bf9bf3"]]),UE={class:"fixed inset-0 z-50 flex items-center justify-center"},GE={class:"relative w-[90vw] max-w-lg bg-retro-black border border-retro-border rounded-lg shadow-2xl flex flex-col overflow-hidden"},HE={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},KE={class:"flex items-center gap-2"},JE={class:"text-sm font-mono text-retro-text"},e6={class:"p-6 overflow-y-auto max-h-[70vh] space-y-6"},t6={key:0},r6={class:"space-y-6"},n6={class:"space-y-1.5"},s6=["value","checked","onChange"],i6={class:"flex-1"},o6={class:"text-sm font-mono text-retro-text"},a6={class:"text-xs text-retro-muted leading-tight"},l6={class:"text-xs font-mono text-retro-muted"},c6={class:"text-xs text-retro-muted mb-3"},u6=["disabled"],h6={class:"space-y-1.5"},d6=["value","checked","onChange"],f6={class:"flex-1"},m6={class:"text-sm font-mono text-retro-text"},p6={class:"text-xs text-retro-muted leading-tight"},g6={key:1,class:"space-y-4"},O6={class:"space-y-1.5"},v6=["checked"],b6=["checked"],x6={class:"flex items-center justify-between px-3 py-2 rounded border border-retro-border bg-retro-panel"},y6={class:"text-xs font-mono text-retro-cyan"},k6=Ie({__name:"SettingsModal",emits:["close"],setup(r,{emit:e}){const t=e,n=xo(),s=Y1(),i=bo(),o=Q("main"),a=Q(!1),l=J(()=>s.public.appVersion||"unknown"),c=[{value:"dark",label:"Dark",description:"Retro terminal theme with dark backgrounds"},{value:"light",label:"Light",description:"Bright theme for well-lit environments"}],u=[{value:"plan",label:Zs.plan,description:Lo.plan,icon:Eu,color:"text-retro-cyan"},{value:"ask",label:Zs.ask,description:Lo.ask,icon:Du,color:"text-retro-green"},{value:"auto",label:Zs.auto,description:Lo.auto,icon:up,color:"text-retro-yellow"},{value:"bypass",label:Zs.bypass,description:Lo.bypass,icon:Lu,color:"text-retro-red"}],{data:h,pending:f,error:g}=Qc("ai-providers",()=>$fetch("/api/ai/providers"),{server:!1}),p=J(()=>h.value?.providers??[]),O=J(()=>{const D=g.value;return D?D instanceof Error?D.message:String(D):null}),{data:b,refresh:x}=Qc("spec-search-status",()=>$fetch("/api/specs/status"),{server:!1,default:()=>null}),k=J(()=>{const D=b.value;return D?D.isIndexing?`Indexing (${D.currentJob||"running"})`:D.schedulerActive?`Indexed ${D.fileCount} files / ${D.chunkCount} chunks`:"Scheduler inactive":"Status unavailable"});gt(()=>{n.hydrate()});const w=D=>{n.setProviderSelection(D),i.success("Settings saved")},S=()=>{o.value="provider"},P=()=>{o.value="main"},X=D=>{n.setTheme(D),i.success("Settings saved")},E=D=>{n.setPermissionMode(D),i.success("Settings saved")},K=D=>{n.setAutoGenerateCommitMessages(D),i.success("Settings saved")},le=()=>{t("close")},oe=async()=>{if(!a.value){a.value=!0;try{const D=await $fetch("/api/specs/reindex",{method:"POST",body:{}});!D.success&&D.status==="already-indexing"?i.info("Spec index is already running"):i.success("Spec reindex started"),await x()}catch(D){i.error(D instanceof Error?D.message:"Failed to start spec reindex")}finally{a.value=!1}}},N=D=>{D.key==="Escape"&&t("close")};gt(()=>{window.addEventListener("keydown",N)}),$t(()=>{window.removeEventListener("keydown",N)});let I=null;return gt(()=>{I=Iu(()=>{x()},5e3)}),$t(()=>{I&&clearInterval(I)}),(D,U)=>(v(),ge(Pr,{to:"body"},[d("div",UE,[d("div",{class:"absolute inset-0 bg-black/70",onClick:le}),d("div",GE,[d("div",HE,[d("div",KE,[o.value==="provider"?(v(),y("button",{key:0,type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Back",onClick:P},[ee(m(Ov),{class:"h-4 w-4"})])):Y("",!0),d("h2",JE,A(o.value==="provider"?"AI Provider Settings":"Settings"),1)]),d("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",title:"Close",onClick:U[0]||(U[0]=z=>t("close"))},[ee(m(Ct),{class:"h-4 w-4"})])]),d("div",e6,[o.value==="main"?(v(),y("section",t6,[d("div",r6,[d("section",null,[U[3]||(U[3]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Theme",-1)),U[4]||(U[4]=d("p",{class:"text-xs text-retro-muted mb-3"}," Choose between dark and light appearance. ",-1)),d("div",n6,[(v(),y(Se,null,ze(c,z=>d("label",{key:z.value,class:Be(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).theme===z.value?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"theme",value:z.value,checked:m(n).theme===z.value,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:V=>X(z.value)},null,40,s6),d("div",i6,[d("div",o6,A(z.label),1),d("div",a6,A(z.description),1)])],2)),64))])]),U[11]||(U[11]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[U[6]||(U[6]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"AI Provider",-1)),U[7]||(U[7]=d("p",{class:"text-xs text-retro-muted mb-3"}," Configure provider and model settings for new conversations. ",-1)),d("button",{type:"button",class:"w-full flex items-center justify-between px-3 py-2 rounded border border-retro-border bg-retro-panel hover:border-retro-muted transition-colors",onClick:S},[U[5]||(U[5]=d("span",{class:"text-sm font-mono text-retro-text"},"Provider Settings",-1)),d("span",l6,A(m(n).providerSelection.providerId)+" / "+A(m(n).providerSelection.modelKey),1)])]),U[12]||(U[12]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[U[8]||(U[8]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Spec Search Index",-1)),d("p",c6,A(k.value),1),d("button",{type:"button",class:"w-full flex items-center justify-center px-3 py-2 rounded border border-retro-border bg-retro-panel text-retro-text hover:border-retro-muted transition-colors disabled:opacity-60",disabled:a.value||m(b)?.isIndexing,onClick:oe},A(a.value?"Starting reindex...":"Reindex Specs"),9,u6)]),U[13]||(U[13]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[U[9]||(U[9]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Default Permission Mode",-1)),U[10]||(U[10]=d("p",{class:"text-xs text-retro-muted mb-3"}," Set the default permission mode for all new chat conversations. ",-1)),d("div",h6,[(v(),y(Se,null,ze(u,z=>d("label",{key:z.value,class:Be(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).permissionMode===z.value?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"permission-mode",value:z.value,checked:m(n).permissionMode===z.value,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:V=>E(z.value)},null,40,d6),(v(),ge(ps(z.icon),{class:Be(["w-4 h-4 flex-shrink-0",z.color])},null,8,["class"])),d("div",f6,[d("div",m6,A(z.label),1),d("div",p6,A(z.description),1)])],2)),64))])]),U[14]||(U[14]=d("div",{class:"border-t border-retro-border"},null,-1))])])):(v(),y("section",g6,[U[15]||(U[15]=d("div",null,[d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"AI Provider"),d("p",{class:"text-xs text-retro-muted mb-3"}," Choose which registered provider and model powers new conversations. ")],-1)),ee(dv,{providers:p.value,selected:m(n).providerSelection,permissionMode:m(n).permissionMode,pending:m(f),errorMessage:O.value,onSelect:w},null,8,["providers","selected","permissionMode","pending","errorMessage"])])),U[23]||(U[23]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[U[18]||(U[18]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Commit Messages",-1)),U[19]||(U[19]=d("p",{class:"text-xs text-retro-muted mb-3"}," Choose whether to use AI to generate commit messages automatically. ",-1)),d("div",O6,[d("label",{class:Be(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).autoGenerateCommitMessages?"border-retro-border bg-retro-panel hover:border-retro-muted":"border-retro-cyan bg-retro-cyan/10"]])},[d("input",{type:"radio",name:"commit-messages",value:!1,checked:!m(n).autoGenerateCommitMessages,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:U[1]||(U[1]=z=>K(!1))},null,40,v6),U[16]||(U[16]=d("div",{class:"flex-1"},[d("div",{class:"text-sm font-mono text-retro-text"},"Template (Recommended)"),d("div",{class:"text-xs text-retro-muted leading-tight"},"Simple template-based messages. No token usage.")],-1))],2),d("label",{class:Be(["flex items-center gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[m(n).autoGenerateCommitMessages?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted"]])},[d("input",{type:"radio",name:"commit-messages",value:!0,checked:m(n).autoGenerateCommitMessages,class:"w-3.5 h-3.5 text-retro-cyan accent-retro-cyan",onChange:U[2]||(U[2]=z=>K(!0))},null,40,b6),U[17]||(U[17]=d("div",{class:"flex-1"},[d("div",{class:"text-sm font-mono text-retro-text"},"AI-Generated"),d("div",{class:"text-xs text-retro-muted leading-tight"},"Uses Claude Haiku to create meaningful commit messages. ~300-500 tokens per commit.")],-1))],2)])]),U[24]||(U[24]=d("div",{class:"border-t border-retro-border"},null,-1)),d("section",null,[U[21]||(U[21]=d("h3",{class:"text-sm font-mono font-semibold text-retro-text mb-1"},"Spec-Cat",-1)),U[22]||(U[22]=d("p",{class:"text-xs text-retro-muted mb-3"}," Application version. ",-1)),d("div",x6,[U[20]||(U[20]=d("span",{class:"text-sm font-mono text-retro-text"},"Version",-1)),d("span",y6,A(l.value),1)])])])])])]))}}),w6={class:"fixed top-4 right-4 z-50 flex flex-col gap-2 max-w-sm"},S6={class:"flex-1 text-sm font-mono text-retro-text"},$6=["onClick"],C6=Ie({__name:"ToastContainer",setup(r){const{toasts:e,remove:t}=bo(),n={success:{bg:"bg-retro-green/20",icon:"text-retro-green",border:"border-retro-green/50"},error:{bg:"bg-retro-red/20",icon:"text-retro-red",border:"border-retro-red/50"},info:{bg:"bg-retro-cyan/20",icon:"text-retro-cyan",border:"border-retro-cyan/50"},warning:{bg:"bg-retro-yellow/20",icon:"text-retro-yellow",border:"border-retro-yellow/50"}},s=i=>{switch(i){case"success":return Ru;case"error":return vo;case"warning":return En;default:return Bv}};return(i,o)=>(v(),ge(Pr,{to:"body"},[d("div",w6,[ee(F1,{"enter-active-class":"transition-all duration-300 ease-out","leave-active-class":"transition-all duration-200 ease-in","enter-from-class":"opacity-0 translate-x-4","enter-to-class":"opacity-100 translate-x-0","leave-from-class":"opacity-100 translate-x-0","leave-to-class":"opacity-0 translate-x-4"},{default:ct(()=>[(v(!0),y(Se,null,ze(m(e),a=>(v(),y("div",{key:a.id,class:Be(["flex items-start gap-3 p-3 rounded-lg border shadow-lg",[n[a.type].bg,n[a.type].border]])},[(v(),ge(ps(s(a.type)),{class:Be(["h-5 w-5 flex-shrink-0 mt-0.5",n[a.type].icon])},null,8,["class"])),d("p",S6,A(a.message),1),d("button",{type:"button",class:"p-0.5 rounded text-retro-muted hover:text-retro-text transition-colors",onClick:l=>m(t)(a.id)},[ee(m(Ct),{class:"h-4 w-4"})],8,$6)],2))),128))]),_:1})])]))}}),Q6=Ie({__name:"SplashScreen",setup(r){const e=Q(!0),t=Q(!1);return gt(()=>{setTimeout(()=>{t.value=!0,setTimeout(()=>{e.value=!1},600)},1800)}),(n,s)=>(v(),ge(Pr,{to:"body"},[e.value?(v(),y("div",{key:0,class:Be(["fixed inset-0 z-[9999] flex items-center justify-center bg-retro-black transition-opacity duration-500",{"opacity-0":t.value}])},[...s[0]||(s[0]=[d("div",{class:"flex flex-col items-center gap-6"},[d("pre",{class:"text-retro-cyan font-mono text-xs leading-tight select-none splash-glow"},` ____ ____ _
|
|
80
|
-
/ ___| _ __ ___ ___ / ___|__ _| |_
|
|
81
|
-
\\___ \\| '_ \\ / _ \\/ __|| | / _\` | __|
|
|
82
|
-
___) | |_) | __/ (__ | |__| (_| | |_
|
|
83
|
-
|____/| .__/ \\___|\\___| \\____\\__,_|\\__|
|
|
84
|
-
|_|
|
|
85
|
-
`),d("div",{class:"flex items-center gap-2"},[d("span",{class:"inline-block w-2 h-2 rounded-full bg-retro-cyan animate-pulse"}),d("span",{class:"text-retro-muted font-mono text-xs tracking-widest uppercase"},"initializing")])],-1)])],2)):Y("",!0)]))}}),P6=ws(Q6,[["__scopeId","data-v-7fddb179"]]);let It=null,_s=null,es=null;const T6=5e3,M6=500,A6=1e3,$c=5;let dr=null;const ts=new Map,rs=new Map,Oa=new Map;function _6(){return typeof window>"u"?"":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/_ws`}function R6(){const r=vr();async function e(){console.log("[GlobalNotifications] Executing debounced refresh");const p=await r.refreshServerConversations();console.log("[GlobalNotifications] Refresh result:",p);const O=[];for(const[b,x]of ts)ts.delete(b),n(b,x)||O.push([b,x]);for(const[b,x]of O){const k=(rs.get(b)??0)+1;if(k<=$c){rs.set(b,k),console.log(`[GlobalNotifications] Scheduling retry ${k}/${$c} for ${b}`);const w=setTimeout(()=>{Oa.delete(b),ts.set(b,x),t()},A6*k);Oa.set(b,w)}else console.warn(`[GlobalNotifications] Gave up streaming setup for ${b} after ${$c} retries`),rs.delete(b)}}function t(){es&&clearTimeout(es),es=setTimeout(()=>{es=null,e()},M6)}function n(p,O){if(!It||It.readyState!==WebSocket.OPEN)return!1;if(r.isConversationStreaming(p))return rs.delete(p),!0;const b=r.conversations.find(w=>w.id===p);if(!b)return console.warn("[GlobalNotifications] Conversation not found for streaming:",p),!1;rs.delete(p),b.messages.length===0&&O&&r.addUserMessage(O,p);const x=[...b.messages].reverse().find(w=>w.role==="assistant");if(x)return r.resetMessageForReplay(x.id,p),r.startConversationStreaming(p),dr={conversationId:p,messageId:x.id,currentTextBlockId:null,currentToolBlockId:null,currentToolInputJson:"",isReplaying:!1,replayBuffer:[]},It.send(JSON.stringify({type:"subscribe",conversationId:p,cursor:0})),console.log("[GlobalNotifications] Resumed server job streaming (existing msg):",p),!0;const k=r.addAssistantMessage(p);return r.initContentBlocks(k.id,p),r.startConversationStreaming(p),dr={conversationId:p,messageId:k.id,currentTextBlockId:null,currentToolBlockId:null,currentToolInputJson:"",isReplaying:!1,replayBuffer:[]},It.send(JSON.stringify({type:"subscribe",conversationId:p,cursor:0})),console.log("[GlobalNotifications] Subscribed to server job streaming:",p),!0}function s(p){try{const O=JSON.parse(p.data);if(O.type==="notification"){i(O);return}dr&&o(O)}catch{}}function i(p){if(console.log("[GlobalNotifications] Received:",p.notificationEvent,p.conversationId),p.notificationEvent==="job_created"){ts.set(p.conversationId,p.message||""),t();return}if(p.notificationEvent==="job_persisted"){dr?.conversationId===p.conversationId&&(r.endConversationStreaming(p.conversationId),dr=null),ts.delete(p.conversationId),rs.delete(p.conversationId),t();return}if(p.notificationEvent!=="job_completed"&&p.notificationEvent==="conversation_archived"){t();return}}function o(p){const O=dr,b=O.conversationId;if(p.type==="replay_start"){O.isReplaying=!0,O.replayBuffer=[];return}if(p.type==="replay_end"){a(O),O.isReplaying=!1,O.replayBuffer=[];return}if(O.isReplaying){(p.type==="ui_event"||p.type==="done"||p.type==="error")&&O.replayBuffer.push(p);return}if(p.type==="ui_event"&&p.event){c(O,p.event,b);return}if(p.type!=="done"&&p.type==="error"){r.updateMessage(O.messageId,{status:"error"},b),r.setSessionError(p.error||"Server job error",b),r.endConversationStreaming(b),dr=null;return}}function a(p){const O=[];let b="",x=null,k=null,w="";for(const S of p.replayBuffer){if(S.type!=="ui_event"||!S.event)continue;const P=S.event;switch(P.type){case"block_start":if(P.blockType==="text"){const X=P.blockId||Ht();O.push({id:X,type:"text",text:P.text||""}),x=X,k=null,P.text&&(b+=P.text)}else if(P.blockType==="tool_use"&&P.toolUseId&&P.name){const X=P.blockId||Ht();O.push({id:X,type:"tool_use",toolUseId:P.toolUseId,name:P.name,input:{},inputSummary:"",status:"running"}),x=null,k=P.index??0,w=""}break;case"block_delta":if(P.text&&x){const X=O.find(E=>E.id===x);X&&X.type==="text"&&(X.text+=P.text,b+=P.text)}P.partialJson&&k!==null&&(w+=P.partialJson);break;case"block_end":if(x&&(x=null),k!==null){const X=[...O].reverse().find(E=>E.type==="tool_use");if(X){let E={};try{E=JSON.parse(w)}catch{}X.input=E,X.inputSummary=l(E),X.status="pending"}k=null,w=""}break;case"tool_result":{const X=[...O].reverse().find(E=>E.type==="tool_use"&&E.toolUseId===P.toolUseId);X&&(X.status=P.isError?"error":"complete"),O.push({id:Ht(),type:"tool_result",toolUseId:P.toolUseId,content:P.content||"",isError:!!P.isError});break}}}O.length>0&&r.batchSetMessageBlocks(p.messageId,O,b,"streaming",p.conversationId),p.currentTextBlockId=x,p.currentToolBlockId=null,p.currentToolInputJson="",console.log(`[GlobalNotifications] Replay batch: ${p.replayBuffer.length} events → ${O.length} blocks`)}function l(p){return p.file_path?String(p.file_path):p.path?String(p.path):p.command?String(p.command).slice(0,50):""}function c(p,O,b){switch(O.type){case"block_start":{if(O.blockType==="text"){const x=O.blockId||Ht(),k={id:x,type:"text",text:O.text||""};r.appendContentBlock(p.messageId,k,b),p.currentTextBlockId=x,p.currentToolBlockId=null,O.text&&r.appendToMessage(p.messageId,O.text,b)}else if(O.blockType==="tool_use"&&O.toolUseId&&O.name){const x=O.blockId||Ht(),k={id:x,type:"tool_use",toolUseId:O.toolUseId,name:O.name,input:{},inputSummary:"",status:"running"};r.appendContentBlock(p.messageId,k,b),p.currentToolBlockId=x,p.currentToolInputJson="",p.currentTextBlockId=null}break}case"block_delta":{O.text&&p.currentTextBlockId&&(r.updateBlockById(p.messageId,p.currentTextBlockId,x=>{x.type==="text"&&(x.text+=O.text)},b),r.appendToMessage(p.messageId,O.text,b)),O.partialJson&&p.currentToolBlockId&&(p.currentToolInputJson+=O.partialJson);break}case"block_end":{if(p.currentTextBlockId&&(p.currentTextBlockId=null),p.currentToolBlockId){const x=p.currentToolBlockId,k=p.currentToolInputJson;r.updateBlockById(p.messageId,x,w=>{if(w.type==="tool_use"){const S=w;let P={};try{P=JSON.parse(k)}catch{}S.input=P,S.inputSummary=l(P),S.status="pending"}},b),p.currentToolBlockId=null,p.currentToolInputJson=""}break}case"tool_result":{if(O.toolUseId){const x=r.findToolUseBlock(p.messageId,O.toolUseId,b);x&&r.updateBlockById(p.messageId,x.id,w=>{w.type==="tool_use"&&(w.status=O.isError?"error":"complete")},b);const k={id:Ht(),type:"tool_result",toolUseId:O.toolUseId,content:O.content||"",isError:!!O.isError};r.appendContentBlock(p.messageId,k,b)}break}}}function u(){if(typeof window>"u"||It&&(It.readyState===WebSocket.OPEN||It.readyState===WebSocket.CONNECTING))return;const p=_6();It=new WebSocket(p),It.onopen=()=>{console.log("[GlobalNotifications] WebSocket connected")},It.onmessage=s,It.onclose=O=>{console.log("[GlobalNotifications] WebSocket closed",{code:O.code,reason:O.reason}),It=null,dr&&(r.endConversationStreaming(dr.conversationId),dr=null),h()},It.onerror=O=>{console.warn("[GlobalNotifications] WebSocket error",O)}}function h(){_s||(_s=setTimeout(()=>{_s=null,u()},T6))}function f(){_s&&(clearTimeout(_s),_s=null),es&&(clearTimeout(es),es=null);for(const p of Oa.values())clearTimeout(p);Oa.clear(),rs.clear(),ts.clear(),dr&&(r.endConversationStreaming(dr.conversationId),dr=null),It&&(It.close(),It=null)}async function g(){try{const O=(await $fetch("/api/jobs")).filter(b=>b.source!=="user"&&(b.status==="running"||b.status==="waiting_permission"||b.status==="queued"||b.status==="done"&&b.eventCount>0));if(O.length===0)return;await r.refreshServerConversations();for(const b of O){if(r.isConversationStreaming(b.conversationId))continue;const x=r.conversations.find(S=>S.id===b.conversationId);if(!x)continue;const k=[...x.messages].reverse().find(S=>S.role==="assistant");if(k&&(k.status==="complete"||k.status==="error"||k.status==="stopped"))continue;console.log("[GlobalNotifications] Resuming active server job:",b.id,"for conversation:",b.conversationId),n(b.conversationId,"")||(console.log("[GlobalNotifications] WS not ready for resume, queuing for retry:",b.conversationId),ts.set(b.conversationId,""),t())}}catch(p){console.warn("[GlobalNotifications] Failed to check for active server jobs:",p)}}return gt(()=>{u()}),$t(()=>{f()}),{connect:u,disconnect:f,resumeActiveServerJobs:g}}const B6={class:"h-screen min-w-[320px] overflow-hidden bg-retro-black text-retro-text"},Z6={key:0,class:"flex h-full flex-col overflow-hidden"},E6={class:"flex-shrink-0 border-b border-retro-border bg-retro-panel"},D6={class:"flex h-14 items-center justify-between gap-3 px-3"},L6={class:"flex items-center gap-2 min-w-0"},X6={class:"min-w-0"},I6={class:"text-[11px] text-retro-muted font-mono truncate"},V6={class:"flex items-center gap-1"},z6=["title"],N6={class:"relative flex-1 min-h-0 overflow-hidden"},W6={class:"absolute inset-0 flex flex-col overflow-hidden","aria-label":"Git"},q6={class:"absolute inset-0 flex flex-col overflow-hidden","aria-label":"Specs"},j6={class:"absolute inset-0 flex flex-col overflow-hidden","aria-label":"Conversations"},Y6={class:"absolute inset-0 flex flex-col overflow-hidden","aria-label":"Chat"},F6={key:0,class:"absolute inset-0 z-30 flex flex-col overflow-hidden bg-retro-black"},U6={class:"flex-shrink-0 border-t border-retro-border bg-retro-panel","aria-label":"Mobile primary navigation"},G6={class:"grid h-16 grid-cols-4"},H6=["aria-current","onClick"],K6={class:"truncate"},J6={key:1,class:"flex h-full overflow-x-auto"},eD={class:"flex flex-col overflow-hidden",style:{flex:"3"}},tD={class:"flex-shrink-0 h-14 flex items-center justify-between px-4 border-b border-retro-border bg-retro-panel"},rD={class:"flex items-center gap-2 min-w-0"},nD={key:0,class:"text-xs text-retro-muted font-mono truncate"},sD={class:"flex items-center gap-1"},iD=["title"],oD={class:"flex-1 min-h-0 overflow-y-auto"},aD={class:"relative flex min-w-0",style:{flex:"7"}},lD={key:0,class:"flex flex-col overflow-hidden border-l border-retro-border",style:{flex:"2"}},cD={key:1,class:"flex flex-col overflow-hidden border-l border-retro-border",style:{flex:"2"}},uD={key:2,class:"absolute inset-0 z-30 flex flex-col overflow-hidden border-l border-retro-border bg-retro-black"},wD=Ie({__name:"default",setup(r){const e=Z1(),t=xo(),n=vr(),s=gl(),{isDark:i,toggleTheme:o}=ov(),{tryResumeStreaming:a}=_l(),{resumeActiveServerJobs:l}=R6(),c=J(()=>s.diffViewerFile!==null),u=J(()=>e.isMobile),h=J(()=>e.isChatFullscreen),f=J(()=>h.value),g=J(()=>h.value?7:3),p=Q(!1),O=Q(""),b=Q("chat"),x=[{id:"git",label:"Git",icon:Sv},{id:"features",label:"Specs",icon:Os},{id:"conversations",label:"Threads",icon:pp},{id:"chat",label:"Chat",icon:hp}],k=J(()=>x.find(E=>E.id===b.value)?.label??"Chat"),w=J(()=>{if(!O.value)return"";const E=O.value.replace(/\/+$/,"").split("/");return E[E.length-1]||""}),S=J(()=>w.value?`spec cat :: ${w.value}`:"spec cat");function P(){return n.conversations.filter(E=>[...E.messages].reverse().find(le=>le.role==="assistant")?.status==="streaming").map(E=>E.id)}U1(()=>({title:S.value}));const X=()=>{typeof window<"u"&&e.updateViewport(window.innerWidth)};return Ve(u,E=>{E&&h.value&&e.setChatFullscreen(!1)}),Ve(()=>n.activeConversationId,(E,K)=>{u.value&&b.value==="conversations"&&E&&E!==K&&(b.value="chat")}),gt(async()=>{typeof window<"u"&&(e.updateViewport(window.innerWidth),window.addEventListener("resize",X)),await t.hydrate(),await n.initialize(),await n.loadConversations();const E=P();await Promise.allSettled(E.map(K=>a(K))),await l();try{const K=await $fetch("/api/cwd");O.value=K.cwd}catch{O.value=""}}),$t(()=>{typeof window<"u"&&window.removeEventListener("resize",X)}),(E,K)=>{const le=x2;return v(),y("div",B6,[u.value?(v(),y("div",Z6,[d("header",E6,[d("div",D6,[d("div",L6,[K[8]||(K[8]=d("img",{alt:"SpecCat",src:ld,class:"w-5 h-5 text-retro-cyan mb-1"},null,-1)),d("div",X6,[K[7]||(K[7]=d("div",{class:"text-xs font-bold text-retro-cyan font-mono uppercase tracking-wider"},"SPECCAT",-1)),d("div",I6,A(w.value?`${w.value} / ${k.value}`:k.value),1)])]),d("div",V6,[d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-black",title:m(i)?"Switch to light theme":"Switch to dark theme",onClick:K[0]||(K[0]=(...oe)=>m(o)&&m(o)(...oe))},[m(i)?(v(),ge(m(Fh),{key:0,class:"w-5 h-5"})):(v(),ge(m(Uh),{key:1,class:"w-5 h-5"}))],8,z6),d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-black",title:"Settings",onClick:K[1]||(K[1]=oe=>p.value=!0)},[ee(m(Pc),{class:"w-5 h-5"})])])])]),d("main",N6,[je(d("section",W6,[ee(le,{"working-directory":O.value,"is-active":b.value==="git"},null,8,["working-directory","is-active"])],512),[[Do,b.value==="git"]]),je(d("section",q6,[ee(jm)],512),[[Do,b.value==="features"]]),je(d("section",j6,[ee(Ym)],512),[[Do,b.value==="conversations"]]),je(d("section",Y6,[ee(Gm)],512),[[Do,b.value==="chat"]]),c.value?(v(),y("div",F6,[ee(Hm,{file:m(s).diffViewerFile,"commit-hash":m(s).diffViewerCommitHash,content:m(s).diffViewerContent,loading:m(s).diffViewerLoading,onClose:K[2]||(K[2]=oe=>m(s).closeFileDiff())},null,8,["file","commit-hash","content","loading"])])):Y("",!0)]),d("nav",U6,[d("div",G6,[(v(),y(Se,null,ze(x,oe=>d("button",{key:oe.id,type:"button",class:Be(["flex min-w-0 flex-col items-center justify-center gap-1 px-1 text-[11px] font-mono transition-colors",b.value===oe.id?"text-retro-cyan bg-retro-cyan/10":"text-retro-muted hover:text-retro-text hover:bg-retro-black"]),"aria-current":b.value===oe.id?"page":void 0,onClick:N=>b.value=oe.id},[(v(),ge(ps(oe.icon),{class:"h-5 w-5 flex-shrink-0"})),d("span",K6,A(oe.label),1)],10,H6)),64))])])])):(v(),y("div",J6,[d("div",eD,[d("div",tD,[d("div",rD,[K[9]||(K[9]=d("img",{alt:"SpecCat",src:ld,class:"w-5 h-5 text-retro-cyan mb-1"},null,-1)),K[10]||(K[10]=d("span",{class:"text-sm font-bold text-retro-cyan font-mono uppercase tracking-wider flex-shrink-0"},"SPECCAT",-1)),w.value?(v(),y("span",nD,"/ "+A(w.value),1)):Y("",!0)]),d("div",sD,[d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-panel",title:m(i)?"Switch to light theme":"Switch to dark theme",onClick:K[3]||(K[3]=(...oe)=>m(o)&&m(o)(...oe))},[m(i)?(v(),ge(m(Fh),{key:0,class:"w-5 h-5"})):(v(),ge(m(Uh),{key:1,class:"w-5 h-5"}))],8,iD),d("button",{type:"button",class:"p-2 rounded transition-colors text-retro-muted hover:text-retro-text hover:bg-retro-panel",title:"Settings",onClick:K[4]||(K[4]=oe=>p.value=!0)},[ee(m(Pc),{class:"w-5 h-5"})])])]),d("div",oD,[ee(le,{"working-directory":O.value},null,8,["working-directory"])])]),d("div",aD,[f.value?Y("",!0):(v(),y("div",lD,[ee(jm)])),f.value?Y("",!0):(v(),y("div",cD,[ee(Ym)])),d("div",{class:"flex flex-col overflow-hidden border-l border-retro-border",style:tr({flex:g.value})},[ee(Gm)],4),c.value?(v(),y("div",uD,[ee(Hm,{file:m(s).diffViewerFile,"commit-hash":m(s).diffViewerCommitHash,content:m(s).diffViewerContent,loading:m(s).diffViewerLoading,onClose:K[5]||(K[5]=oe=>m(s).closeFileDiff())},null,8,["file","commit-hash","content","loading"])])):Y("",!0)])])),p.value?(v(),ge(k6,{key:2,onClose:K[6]||(K[6]=oe=>p.value=!1)})):Y("",!0),ee(C6),ee(P6),Jm(E.$slots,"default")])}}});export{wD as default};
|