@halcyonlabs/app 0.47.0-halcyon.21 → 0.47.0-halcyon.24
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/app/dist/assets/{AddMachineDialog-4BQFC118.js → AddMachineDialog-BlVfh9PM.js} +1 -1
- package/app/dist/assets/AddMachineDialog-BlVfh9PM.js.br +0 -0
- package/app/dist/assets/AddMachineDialog-BlVfh9PM.js.gz +0 -0
- package/app/dist/assets/{AppCommandShortcutHint-BlXOfa_n.js → AppCommandShortcutHint-C1mIupNX.js} +1 -1
- package/app/dist/assets/{AppFileExternalNavigationDispatcher-fGD_vTns.js → AppFileExternalNavigationDispatcher-zdrgMBvF.js} +1 -1
- package/app/dist/assets/AppFileExternalNavigationDispatcher-zdrgMBvF.js.br +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-zdrgMBvF.js.gz +0 -0
- package/app/dist/assets/{AppToasterView-DzbjTKdn.js → AppToasterView-C6IQDk4H.js} +1 -1
- package/app/dist/assets/{BbDiff-BkqgAZD9.js → BbDiff-CORXfK92.js} +1 -1
- package/app/dist/assets/BbDiff-CORXfK92.js.br +0 -0
- package/app/dist/assets/BbDiff-CORXfK92.js.gz +0 -0
- package/app/dist/assets/{BbDiffSplit-DTvWaW-n.js → BbDiffSplit-By8A1QN-.js} +2 -2
- package/app/dist/assets/BbDiffSplit-By8A1QN-.js.br +0 -0
- package/app/dist/assets/BbDiffSplit-By8A1QN-.js.gz +0 -0
- package/app/dist/assets/{BbSourceCode-Dqw4VrLu.js → BbSourceCode-C3we2GZp.js} +1 -1
- package/app/dist/assets/BbSourceCode-C3we2GZp.js.br +0 -0
- package/app/dist/assets/BbSourceCode-C3we2GZp.js.gz +0 -0
- package/app/dist/assets/{BrowserTabDeck-CuHEyZd6.js → BrowserTabDeck-BtVycavD.js} +1 -1
- package/app/dist/assets/BrowserTabDeck-BtVycavD.js.br +0 -0
- package/app/dist/assets/BrowserTabDeck-BtVycavD.js.gz +0 -0
- package/app/dist/assets/{CommandPaletteBody-DynxiDg6.js → CommandPaletteBody-JfQwJqGn.js} +1 -1
- package/app/dist/assets/CommandPaletteBody-JfQwJqGn.js.br +0 -0
- package/app/dist/assets/CommandPaletteBody-JfQwJqGn.js.gz +0 -0
- package/app/dist/assets/{DiffHost-3UTZIJNs.js → DiffHost-DEYVmsVa.js} +1 -1
- package/app/dist/assets/DiffHost-DEYVmsVa.js.br +0 -0
- package/app/dist/assets/DiffHost-DEYVmsVa.js.gz +0 -0
- package/app/dist/assets/{ExperimentalFileLinkMenu-C0RXVabs.js → ExperimentalFileLinkMenu-B-B8GXE8.js} +1 -1
- package/app/dist/assets/ExperimentalFileLinkMenu-B-B8GXE8.js.br +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-B-B8GXE8.js.gz +0 -0
- package/app/dist/assets/{FilePreview-BxgJ2jjI.js → FilePreview-BHoPmg-c.js} +1 -1
- package/app/dist/assets/FilePreview-BHoPmg-c.js.br +0 -0
- package/app/dist/assets/FilePreview-BHoPmg-c.js.gz +0 -0
- package/app/dist/assets/{GitDiffCardHeader-Ce736y-m.js → GitDiffCardHeader-6LP_7oWh.js} +1 -1
- package/app/dist/assets/GitDiffCardHeader-6LP_7oWh.js.br +0 -0
- package/app/dist/assets/GitDiffCardHeader-6LP_7oWh.js.gz +0 -0
- package/app/dist/assets/{InlineMessageEditorFrame-Dud8h1It.js → InlineMessageEditorFrame-DyVCSKBJ.js} +1 -1
- package/app/dist/assets/InlineMessageEditorFrame-DyVCSKBJ.js.br +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-DyVCSKBJ.js.gz +0 -0
- package/app/dist/assets/{MachineRenameDialog-C_ZV5gEB.js → MachineRenameDialog-HGiXO0UG.js} +1 -1
- package/app/dist/assets/MachineRenameDialog-HGiXO0UG.js.br +0 -0
- package/app/dist/assets/MachineRenameDialog-HGiXO0UG.js.gz +0 -0
- package/app/dist/assets/{MachineSettingsView-BWSIpenw.js → MachineSettingsView-C4q9cbRr.js} +1 -1
- package/app/dist/assets/MachineSettingsView-C4q9cbRr.js.br +0 -0
- package/app/dist/assets/MachineSettingsView-C4q9cbRr.js.gz +0 -0
- package/app/dist/assets/{MicrophonePreferences-CNEhQgAS.js → MicrophonePreferences-qaOpiph1.js} +1 -1
- package/app/dist/assets/MicrophonePreferences-qaOpiph1.js.br +0 -0
- package/app/dist/assets/MicrophonePreferences-qaOpiph1.js.gz +0 -0
- package/app/dist/assets/{ModelReasoningMenu-BeNCpeQf.js → ModelReasoningMenu-CVmIvyBC.js} +1 -1
- package/app/dist/assets/ModelReasoningMenu-CVmIvyBC.js.br +0 -0
- package/app/dist/assets/ModelReasoningMenu-CVmIvyBC.js.gz +0 -0
- package/app/dist/assets/{NewTabPage-CsPDV6iC.js → NewTabPage-BD3LFok4.js} +1 -1
- package/app/dist/assets/NewTabPage-BD3LFok4.js.br +0 -0
- package/app/dist/assets/NewTabPage-BD3LFok4.js.gz +0 -0
- package/app/dist/assets/{NewThreadComposer-BY0jUSbs.js → NewThreadComposer-C2ZKRVh2.js} +1 -1
- package/app/dist/assets/NewThreadComposer-C2ZKRVh2.js.br +0 -0
- package/app/dist/assets/NewThreadComposer-C2ZKRVh2.js.gz +0 -0
- package/app/dist/assets/{OnboardingFlow-BQdrTtHC.js → OnboardingFlow-D7-YF2ZM.js} +1 -1
- package/app/dist/assets/OnboardingFlow-D7-YF2ZM.js.br +0 -0
- package/app/dist/assets/OnboardingFlow-D7-YF2ZM.js.gz +0 -0
- package/app/dist/assets/{OptionPicker-sql35hd_.js → OptionPicker-DzY4ri8R.js} +1 -1
- package/app/dist/assets/OptionPicker-DzY4ri8R.js.br +0 -0
- package/app/dist/assets/OptionPicker-DzY4ri8R.js.gz +0 -0
- package/app/dist/assets/{PaletteShell-B9KeWKsT.js → PaletteShell-4enjLs-M.js} +1 -1
- package/app/dist/assets/PaletteShell-4enjLs-M.js.br +0 -0
- package/app/dist/assets/PaletteShell-4enjLs-M.js.gz +0 -0
- package/app/dist/assets/{PaneMaximizeButton-CGBzyikf.js → PaneMaximizeButton-40ZGXf3w.js} +1 -1
- package/app/dist/assets/PaneMaximizeButton-40ZGXf3w.js.br +0 -0
- package/app/dist/assets/PaneMaximizeButton-40ZGXf3w.js.gz +0 -0
- package/app/dist/assets/{PierreLineSelectionActions-BYL6I0xE.js → PierreLineSelectionActions-DrQj-N__.js} +1 -1
- package/app/dist/assets/PierreLineSelectionActions-DrQj-N__.js.br +0 -0
- package/app/dist/assets/PierreLineSelectionActions-DrQj-N__.js.gz +0 -0
- package/app/dist/assets/{PluginPanelRightPanelHost-Dj-wS_Ki.js → PluginPanelRightPanelHost-Ha0PrCa9.js} +1 -1
- package/app/dist/assets/PluginPanelRightPanelHost-Ha0PrCa9.js.br +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-Ha0PrCa9.js.gz +0 -0
- package/app/dist/assets/{PluginThreadChat-Dh-No9s-.js → PluginThreadChat-D_tbXHEo.js} +1 -1
- package/app/dist/assets/PluginThreadChat-D_tbXHEo.js.br +0 -0
- package/app/dist/assets/PluginThreadChat-D_tbXHEo.js.gz +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-Ckp-m-c0.js +1 -0
- package/app/dist/assets/ProjectDetailSettingsView-Ckp-m-c0.js.br +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-Ckp-m-c0.js.gz +0 -0
- package/app/dist/assets/{ProjectMachineSetupDialog-BW4gUYj0.js → ProjectMachineSetupDialog-Bn43xkw-.js} +1 -1
- package/app/dist/assets/ProjectMachineSetupDialog-Bn43xkw-.js.br +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-Bn43xkw-.js.gz +0 -0
- package/app/dist/assets/{ProjectsSettingsSection-BI_xhcA2.js → ProjectsSettingsSection-DXHostGl.js} +1 -1
- package/app/dist/assets/ProjectsSettingsSection-DXHostGl.js.br +0 -0
- package/app/dist/assets/ProjectsSettingsSection-DXHostGl.js.gz +0 -0
- package/app/dist/assets/{QueuedMessagesList-BEyivVSE.js → QueuedMessagesList-C53i8_rz.js} +1 -1
- package/app/dist/assets/QueuedMessagesList-C53i8_rz.js.br +0 -0
- package/app/dist/assets/QueuedMessagesList-C53i8_rz.js.gz +0 -0
- package/app/dist/assets/{RemotePathBrowser-DVW5AwBs.js → RemotePathBrowser-CsCxZdUk.js} +1 -1
- package/app/dist/assets/RemotePathBrowser-CsCxZdUk.js.br +0 -0
- package/app/dist/assets/RemotePathBrowser-CsCxZdUk.js.gz +0 -0
- package/app/dist/assets/{RootComposeView-Cbnwq7j_.js → RootComposeView-CsV3Ut7E.js} +1 -1
- package/app/dist/assets/RootComposeView-CsV3Ut7E.js.br +0 -0
- package/app/dist/assets/RootComposeView-CsV3Ut7E.js.gz +0 -0
- package/app/dist/assets/{SecondaryPanelLayout-fG8BuYv-.js → SecondaryPanelLayout-BPTIpQ2F.js} +1 -1
- package/app/dist/assets/SecondaryPanelLayout-BPTIpQ2F.js.br +0 -0
- package/app/dist/assets/SecondaryPanelLayout-BPTIpQ2F.js.gz +0 -0
- package/app/dist/assets/{ServerMoveOverlayView-CPWZimVv.js → ServerMoveOverlayView-DxwZdF-Z.js} +1 -1
- package/app/dist/assets/ServerMoveOverlayView-DxwZdF-Z.js.br +0 -0
- package/app/dist/assets/ServerMoveOverlayView-DxwZdF-Z.js.gz +0 -0
- package/app/dist/assets/{SettingsSidebar-DxfoXXKW.js → SettingsSidebar-CYEXglCo.js} +1 -1
- package/app/dist/assets/SettingsSidebar-CYEXglCo.js.br +0 -0
- package/app/dist/assets/SettingsSidebar-CYEXglCo.js.gz +0 -0
- package/app/dist/assets/{SettingsView-D_DkKpuv.js → SettingsView-B3HpJfUo.js} +1 -1
- package/app/dist/assets/SettingsView-B3HpJfUo.js.br +0 -0
- package/app/dist/assets/SettingsView-B3HpJfUo.js.gz +0 -0
- package/app/dist/assets/{SidebarFooterCustomize-VQoenr5y.js → SidebarFooterCustomize-BGXeu0og.js} +1 -1
- package/app/dist/assets/SidebarFooterCustomize-BGXeu0og.js.br +0 -0
- package/app/dist/assets/SidebarFooterCustomize-BGXeu0og.js.gz +0 -0
- package/app/dist/assets/{SidebarVisibilityCustomize-DUKnlz9Y.js → SidebarVisibilityCustomize-Qy7hHO5j.js} +1 -1
- package/app/dist/assets/SidebarVisibilityCustomize-Qy7hHO5j.js.br +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-Qy7hHO5j.js.gz +0 -0
- package/app/dist/assets/{SourceCodeHost-BlXLvWv2.js → SourceCodeHost-CJpVOgCd.js} +2 -2
- package/app/dist/assets/SourceCodeHost-CJpVOgCd.js.br +0 -0
- package/app/dist/assets/SourceCodeHost-CJpVOgCd.js.gz +0 -0
- package/app/dist/assets/{SplitWorkspaceRoute-6w4G23kc.js → SplitWorkspaceRoute-CWPCkdjo.js} +2 -2
- package/app/dist/assets/SplitWorkspaceRoute-CWPCkdjo.js.br +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-CWPCkdjo.js.gz +0 -0
- package/app/dist/assets/{TerminalOutputBlock-BxBSWJr_.js → TerminalOutputBlock-BzxpJ5H3.js} +1 -1
- package/app/dist/assets/TerminalOutputBlock-BzxpJ5H3.js.br +0 -0
- package/app/dist/assets/TerminalOutputBlock-BzxpJ5H3.js.gz +0 -0
- package/app/dist/assets/{ThreadActionsMenu-ChpSKv80.js → ThreadActionsMenu-DfUIyx3e.js} +1 -1
- package/app/dist/assets/ThreadActionsMenu-DfUIyx3e.js.br +0 -0
- package/app/dist/assets/ThreadActionsMenu-DfUIyx3e.js.gz +0 -0
- package/app/dist/assets/{ThreadDetailView-CfH3uWo-.js → ThreadDetailView-BqzwklQd.js} +3 -3
- package/app/dist/assets/ThreadDetailView-BqzwklQd.js.br +0 -0
- package/app/dist/assets/ThreadDetailView-BqzwklQd.js.gz +0 -0
- package/app/dist/assets/{ThreadSearchPaletteMode-B72v3f5V.js → ThreadSearchPaletteMode-Dni8lJt2.js} +1 -1
- package/app/dist/assets/ThreadSearchPaletteMode-Dni8lJt2.js.br +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-Dni8lJt2.js.gz +0 -0
- package/app/dist/assets/{ThreadSecondaryPanel-4nIZy4h9.js → ThreadSecondaryPanel-Cfah9-yR.js} +1 -1
- package/app/dist/assets/ThreadSecondaryPanel-Cfah9-yR.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanel-Cfah9-yR.js.gz +0 -0
- package/app/dist/assets/{ThreadSecondaryPanelTabContent-8-e35_Me.js → ThreadSecondaryPanelTabContent-ByMkWr4B.js} +1 -1
- package/app/dist/assets/ThreadSecondaryPanelTabContent-ByMkWr4B.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-ByMkWr4B.js.gz +0 -0
- package/app/dist/assets/{ThreadStatusGlyph-C9tzRtlV.js → ThreadStatusGlyph-MjAgpNtv.js} +1 -1
- package/app/dist/assets/ThreadStatusGlyph-MjAgpNtv.js.br +0 -0
- package/app/dist/assets/ThreadStatusGlyph-MjAgpNtv.js.gz +0 -0
- package/app/dist/assets/{ThreadTerminalPanel-CqTk9L2y.js → ThreadTerminalPanel-2UtGqd1Z.js} +1 -1
- package/app/dist/assets/ThreadTerminalPanel-2UtGqd1Z.js.br +0 -0
- package/app/dist/assets/ThreadTerminalPanel-2UtGqd1Z.js.gz +0 -0
- package/app/dist/assets/{ThreadTerminalView-B6XNBrJ9.js → ThreadTerminalView-BqsCrU1_.js} +1 -1
- package/app/dist/assets/ThreadTerminalView-BqsCrU1_.js.br +0 -0
- package/app/dist/assets/ThreadTerminalView-BqsCrU1_.js.gz +0 -0
- package/app/dist/assets/{ThreadTimelineNavigationContext-DbZHHZfY.js → ThreadTimelineNavigationContext-B_vg4bPl.js} +2 -2
- package/app/dist/assets/ThreadTimelineNavigationContext-B_vg4bPl.js.br +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-B_vg4bPl.js.gz +0 -0
- package/app/dist/assets/{ThreadUnarchiveButton-CtjS9UkR.js → ThreadUnarchiveButton-CnlHu7Dv.js} +1 -1
- package/app/dist/assets/{TimelineDetailScroll-CpFZhWhU.js → TimelineDetailScroll-CIXDGLcx.js} +1 -1
- package/app/dist/assets/TimelineDetailScroll-CIXDGLcx.js.br +0 -0
- package/app/dist/assets/TimelineDetailScroll-CIXDGLcx.js.gz +0 -0
- package/app/dist/assets/{TimelineFileDiffBlock-JiOlR3O8.js → TimelineFileDiffBlock-Cy_6X6XY.js} +1 -1
- package/app/dist/assets/TimelineFileDiffBlock-Cy_6X6XY.js.br +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-Cy_6X6XY.js.gz +0 -0
- package/app/dist/assets/{TimelineSelectionMenu-DT4qwoFI.js → TimelineSelectionMenu-DzrSCC7e.js} +1 -1
- package/app/dist/assets/TimelineSelectionMenu-DzrSCC7e.js.br +0 -0
- package/app/dist/assets/TimelineSelectionMenu-DzrSCC7e.js.gz +0 -0
- package/app/dist/assets/{ToolsView-nAAic88Z.js → ToolsView-B8oDS6Ek.js} +1 -1
- package/app/dist/assets/ToolsView-B8oDS6Ek.js.br +0 -0
- package/app/dist/assets/ToolsView-B8oDS6Ek.js.gz +0 -0
- package/app/dist/assets/{ToolsViewSplits-Blo3GJMQ.js → ToolsViewSplits-JK-JmYIg.js} +2 -2
- package/app/dist/assets/ToolsViewSplits-JK-JmYIg.js.br +0 -0
- package/app/dist/assets/ToolsViewSplits-JK-JmYIg.js.gz +0 -0
- package/app/dist/assets/{WaveformVisualizer-BrH_nwc4.js → WaveformVisualizer-GDJ4mJRx.js} +1 -1
- package/app/dist/assets/WaveformVisualizer-GDJ4mJRx.js.br +0 -0
- package/app/dist/assets/WaveformVisualizer-GDJ4mJRx.js.gz +0 -0
- package/app/dist/assets/{absolute-file-path-W_eh4kPq.js → absolute-file-path-B-cUOroV.js} +1 -1
- package/app/dist/assets/{app-fixed-tab-navigation-DX9s-gCj.js → app-fixed-tab-navigation-BpDuGNDS.js} +1 -1
- package/app/dist/assets/app-fixed-tab-navigation-BpDuGNDS.js.br +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-BpDuGNDS.js.gz +0 -0
- package/app/dist/assets/{audio-input-device-preference-DsU6GGNE.js → audio-input-device-preference-BeKjzmnK.js} +1 -1
- package/app/dist/assets/audio-input-device-preference-BeKjzmnK.js.br +0 -0
- package/app/dist/assets/audio-input-device-preference-BeKjzmnK.js.gz +0 -0
- package/app/dist/assets/{bottom-anchored-scroll-body-C8n22V_o.js → bottom-anchored-scroll-body-DaHi9M7W.js} +1 -1
- package/app/dist/assets/bottom-anchored-scroll-body-DaHi9M7W.js.br +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-DaHi9M7W.js.gz +0 -0
- package/app/dist/assets/{browser-url-B0SjaYti.js → browser-url-BdtGkCbj.js} +1 -1
- package/app/dist/assets/browser-url-BdtGkCbj.js.br +0 -0
- package/app/dist/assets/browser-url-BdtGkCbj.js.gz +0 -0
- package/app/dist/assets/{checkbox-Ct38DhHB.js → checkbox-5zZ_V1_F.js} +1 -1
- package/app/dist/assets/checkbox-5zZ_V1_F.js.br +0 -0
- package/app/dist/assets/checkbox-5zZ_V1_F.js.gz +0 -0
- package/app/dist/assets/{code-loading-skeletons-C_099GEq.js → code-loading-skeletons-DzoCzgll.js} +1 -1
- package/app/dist/assets/code-loading-skeletons-DzoCzgll.js.br +0 -0
- package/app/dist/assets/code-loading-skeletons-DzoCzgll.js.gz +0 -0
- package/app/dist/assets/{code-rendering-OxBy5zPr.js → code-rendering-A15j47Uy.js} +1 -1
- package/app/dist/assets/{code-theme-registration-BokyXo30.js → code-theme-registration-q5iRcekZ.js} +1 -1
- package/app/dist/assets/{detail-card-Cj628JNK.js → detail-card-BvFcq0Ru.js} +1 -1
- package/app/dist/assets/detail-card-BvFcq0Ru.js.br +0 -0
- package/app/dist/assets/detail-card-BvFcq0Ru.js.gz +0 -0
- package/app/dist/assets/{diff-stats-tally-MtORWItG.js → diff-stats-tally-DA41wrwM.js} +1 -1
- package/app/dist/assets/diff-stats-tally-DA41wrwM.js.br +0 -0
- package/app/dist/assets/diff-stats-tally-DA41wrwM.js.gz +0 -0
- package/app/dist/assets/{environment-mutations-rP4eROm2.js → environment-mutations-Bl2PK8kR.js} +1 -1
- package/app/dist/assets/environment-mutations-Bl2PK8kR.js.br +0 -0
- package/app/dist/assets/environment-mutations-Bl2PK8kR.js.gz +0 -0
- package/app/dist/assets/{environment-workspace-display-O1JRHfbV.js → environment-workspace-display-DdMsNL4x.js} +3 -3
- package/app/dist/assets/environment-workspace-display-DdMsNL4x.js.br +0 -0
- package/app/dist/assets/environment-workspace-display-DdMsNL4x.js.gz +0 -0
- package/app/dist/assets/{event-code-block-DqUZCAii.js → event-code-block-DT4pyQ5R.js} +1 -1
- package/app/dist/assets/event-code-block-DT4pyQ5R.js.br +0 -0
- package/app/dist/assets/event-code-block-DT4pyQ5R.js.gz +0 -0
- package/app/dist/assets/{expandable-text-herJC70e.js → expandable-text-CtGFLpBX.js} +1 -1
- package/app/dist/assets/expandable-text-CtGFLpBX.js.br +0 -0
- package/app/dist/assets/expandable-text-CtGFLpBX.js.gz +0 -0
- package/app/dist/assets/{file-opener-preference-BEeek6dm.js → file-opener-preference-B5sOAhVM.js} +1 -1
- package/app/dist/assets/{file-path-link-Cni9Azi2.js → file-path-link-xsn9GiAq.js} +1 -1
- package/app/dist/assets/file-path-link-xsn9GiAq.js.br +0 -0
- package/app/dist/assets/file-path-link-xsn9GiAq.js.gz +0 -0
- package/app/dist/assets/{host-mutations-Ckc-eVys.js → host-mutations-Bf4idS3m.js} +1 -1
- package/app/dist/assets/host-mutations-Bf4idS3m.js.br +0 -0
- package/app/dist/assets/host-mutations-Bf4idS3m.js.gz +0 -0
- package/app/dist/assets/{icon-extended-DDFkslJU.js → icon-extended-C7x9E4W9.js} +1 -1
- package/app/dist/assets/icon-extended-C7x9E4W9.js.br +0 -0
- package/app/dist/assets/icon-extended-C7x9E4W9.js.gz +0 -0
- package/app/dist/assets/{image-lightbox-BW1bqQJM.js → image-lightbox-CzY6y14n.js} +1 -1
- package/app/dist/assets/image-lightbox-CzY6y14n.js.br +0 -0
- package/app/dist/assets/image-lightbox-CzY6y14n.js.gz +0 -0
- package/app/dist/assets/index-B-RDC4LU.js +395 -0
- package/app/dist/assets/index-B-RDC4LU.js.br +0 -0
- package/app/dist/assets/index-B-RDC4LU.js.gz +0 -0
- package/app/dist/assets/{inline-rename-editor-wjwfk7v2.js → inline-rename-editor-DUVacR_R.js} +1 -1
- package/app/dist/assets/inline-rename-editor-DUVacR_R.js.br +0 -0
- package/app/dist/assets/inline-rename-editor-DUVacR_R.js.gz +0 -0
- package/app/dist/assets/{launcherRow-rIW7Z6Xm.js → launcherRow-C9Htfook.js} +1 -1
- package/app/dist/assets/launcherRow-C9Htfook.js.br +0 -0
- package/app/dist/assets/launcherRow-C9Htfook.js.gz +0 -0
- package/app/dist/assets/{localhost-link-rewrite-description-Bovg3W--.js → localhost-link-rewrite-description-DfPXtfPs.js} +1 -1
- package/app/dist/assets/localhost-link-rewrite-description-DfPXtfPs.js.br +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-DfPXtfPs.js.gz +0 -0
- package/app/dist/assets/{machine-provider-queries-CRlWTEz7.js → machine-provider-queries-By9Ipha4.js} +1 -1
- package/app/dist/assets/machine-provider-queries-By9Ipha4.js.br +0 -0
- package/app/dist/assets/machine-provider-queries-By9Ipha4.js.gz +0 -0
- package/app/dist/assets/{machine-server-access-D3hixOIC.js → machine-server-access-6584jQ7-.js} +1 -1
- package/app/dist/assets/{markdown-file-image-routing-DAIVjxLg.js → markdown-file-image-routing-0_tf5d6g.js} +1 -1
- package/app/dist/assets/{markdown-html-B-Kyh3zI.js → markdown-html-JK4Gnuli.js} +1 -1
- package/app/dist/assets/markdown-html-JK4Gnuli.js.br +0 -0
- package/app/dist/assets/markdown-html-JK4Gnuli.js.gz +0 -0
- package/app/dist/assets/{markdown-local-file-link-C89PR8d5.js → markdown-local-file-link-DXjnoCIE.js} +1 -1
- package/app/dist/assets/markdown-local-file-link-DXjnoCIE.js.br +0 -0
- package/app/dist/assets/markdown-local-file-link-DXjnoCIE.js.gz +0 -0
- package/app/dist/assets/{markdown-preview-B7BmqIlu.js → markdown-preview-Bfwf40CC.js} +2 -2
- package/app/dist/assets/markdown-preview-Bfwf40CC.js.br +0 -0
- package/app/dist/assets/markdown-preview-Bfwf40CC.js.gz +0 -0
- package/app/dist/assets/{markdown-prompt-mentions-B0JRhgrI.js → markdown-prompt-mentions-BuHEkhJs.js} +1 -1
- package/app/dist/assets/markdown-prompt-mentions-BuHEkhJs.js.br +0 -0
- package/app/dist/assets/markdown-prompt-mentions-BuHEkhJs.js.gz +0 -0
- package/app/dist/assets/{model-load-error-message-B-HKqgUD.js → model-load-error-message-CnA6byT0.js} +1 -1
- package/app/dist/assets/model-load-error-message-CnA6byT0.js.br +0 -0
- package/app/dist/assets/model-load-error-message-CnA6byT0.js.gz +0 -0
- package/app/dist/assets/onboarding-telemetry-D6SXoh98.js +1 -0
- package/app/dist/assets/{open-in-editor-button-CQGreiCk.js → open-in-editor-button-jScMiuob.js} +1 -1
- package/app/dist/assets/open-in-editor-button-jScMiuob.js.br +0 -0
- package/app/dist/assets/open-in-editor-button-jScMiuob.js.gz +0 -0
- package/app/dist/assets/{page-shell-BHTOdeQn.js → page-shell-ClYdhKtX.js} +1 -1
- package/app/dist/assets/page-shell-ClYdhKtX.js.br +0 -0
- package/app/dist/assets/page-shell-ClYdhKtX.js.gz +0 -0
- package/app/dist/assets/{pierre-worker-pool-Bm9cLA-c.js → pierre-worker-pool-D1nZ9Lcz.js} +1 -1
- package/app/dist/assets/pierre-worker-pool-D1nZ9Lcz.js.br +0 -0
- package/app/dist/assets/pierre-worker-pool-D1nZ9Lcz.js.gz +0 -0
- package/app/dist/assets/{plugin-detail-navigation-CmSGTNyL.js → plugin-detail-navigation-BD4jDXuP.js} +1 -1
- package/app/dist/assets/plugin-detail-navigation-BD4jDXuP.js.br +0 -0
- package/app/dist/assets/plugin-detail-navigation-BD4jDXuP.js.gz +0 -0
- package/app/dist/assets/{plugin-frontend-BdQdYbWd.js → plugin-frontend-qfGFykt-.js} +3 -3
- package/app/dist/assets/plugin-frontend-qfGFykt-.js.br +0 -0
- package/app/dist/assets/plugin-frontend-qfGFykt-.js.gz +0 -0
- package/app/dist/assets/{plugin-ui-DyNDyPD9.js → plugin-ui-DfbeKd73.js} +1 -1
- package/app/dist/assets/plugin-ui-DfbeKd73.js.br +0 -0
- package/app/dist/assets/plugin-ui-DfbeKd73.js.gz +0 -0
- package/app/dist/assets/{project-default-execution-options-query-h6eTG6_Q.js → project-default-execution-options-query-DQKDDkRo.js} +1 -1
- package/app/dist/assets/{queued-editor-typeahead-layout-BKui5z7C.js → queued-editor-typeahead-layout-DKGYsvQ-.js} +1 -1
- package/app/dist/assets/queued-editor-typeahead-layout-DKGYsvQ-.js.br +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-DKGYsvQ-.js.gz +0 -0
- package/app/dist/assets/{queued-messages-layout-BuEilXwP.js → queued-messages-layout-ClZkWHAV.js} +1 -1
- package/app/dist/assets/queued-messages-layout-ClZkWHAV.js.br +0 -0
- package/app/dist/assets/queued-messages-layout-ClZkWHAV.js.gz +0 -0
- package/app/dist/assets/{resource-list-B6MkAu8v.js → resource-list-CC7zN47b.js} +1 -1
- package/app/dist/assets/resource-list-CC7zN47b.js.br +0 -0
- package/app/dist/assets/resource-list-CC7zN47b.js.gz +0 -0
- package/app/dist/assets/root-compose-create-preference-z0-Xe1ss.js +1 -0
- package/app/dist/assets/{save-file-DYAtq7A9.js → save-file-Cs9LWQ4E.js} +1 -1
- package/app/dist/assets/{settings-nav-DbICcozy.js → settings-nav-BKMVpc5b.js} +1 -1
- package/app/dist/assets/settings-nav-BKMVpc5b.js.br +0 -0
- package/app/dist/assets/settings-nav-BKMVpc5b.js.gz +0 -0
- package/app/dist/assets/{settings-sections-Cq0VX9E8.js → settings-sections-LqqPm8q3.js} +1 -1
- package/app/dist/assets/settings-sections-LqqPm8q3.js.br +0 -0
- package/app/dist/assets/settings-sections-LqqPm8q3.js.gz +0 -0
- package/app/dist/assets/{shortcut-pill-DldxrKgx.js → shortcut-pill-DOMeVrnR.js} +1 -1
- package/app/dist/assets/{sidebarTouchSensor-D7jKXrfM.js → sidebarTouchSensor-PP8-SQld.js} +1 -1
- package/app/dist/assets/sidebarTouchSensor-PP8-SQld.js.br +0 -0
- package/app/dist/assets/sidebarTouchSensor-PP8-SQld.js.gz +0 -0
- package/app/dist/assets/{switch-CzvlSesf.js → switch-B9nrFpZc.js} +1 -1
- package/app/dist/assets/switch-B9nrFpZc.js.br +0 -0
- package/app/dist/assets/switch-B9nrFpZc.js.gz +0 -0
- package/app/dist/assets/{textarea-9yaIMD7J.js → textarea-2fJEsqsi.js} +1 -1
- package/app/dist/assets/{thread-event-parser-BqVpKC6z.js → thread-event-parser-DedSEtmp.js} +1 -1
- package/app/dist/assets/thread-event-parser-DedSEtmp.js.br +0 -0
- package/app/dist/assets/thread-event-parser-DedSEtmp.js.gz +0 -0
- package/app/dist/assets/{thread-panel-queries-C3MI4mdc.js → thread-panel-queries-5N40syTx.js} +1 -1
- package/app/dist/assets/thread-panel-queries-5N40syTx.js.br +0 -0
- package/app/dist/assets/thread-panel-queries-5N40syTx.js.gz +0 -0
- package/app/dist/assets/{thread-runtime-mutations-Cr1H7KSz.js → thread-runtime-mutations-BY5xzme0.js} +1 -1
- package/app/dist/assets/thread-runtime-mutations-BY5xzme0.js.br +0 -0
- package/app/dist/assets/thread-runtime-mutations-BY5xzme0.js.gz +0 -0
- package/app/dist/assets/{thread-terminal-queries-B4JkOWS2.js → thread-terminal-queries-BF7AB7qh.js} +1 -1
- package/app/dist/assets/thread-terminal-queries-BF7AB7qh.js.br +0 -0
- package/app/dist/assets/thread-terminal-queries-BF7AB7qh.js.gz +0 -0
- package/app/dist/assets/{threadRecentItems-DI2mgj7S.js → threadRecentItems-CYYbbS1r.js} +1 -1
- package/app/dist/assets/threadRecentItems-CYYbbS1r.js.br +0 -0
- package/app/dist/assets/threadRecentItems-CYYbbS1r.js.gz +0 -0
- package/app/dist/assets/{threadWorkspaceOpenPath-BQgtUYL5.js → threadWorkspaceOpenPath-B5anoH2-.js} +1 -1
- package/app/dist/assets/threadWorkspaceOpenPath-B5anoH2-.js.br +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-B5anoH2-.js.gz +0 -0
- package/app/dist/assets/{title-bar-scroll-fade-CxbgbTcm.js → title-bar-scroll-fade-BfqL4WEJ.js} +1 -1
- package/app/dist/assets/title-bar-scroll-fade-BfqL4WEJ.js.br +0 -0
- package/app/dist/assets/title-bar-scroll-fade-BfqL4WEJ.js.gz +0 -0
- package/app/dist/assets/{truncate-start-CaCnKnh9.js → truncate-start-D-P3rLti.js} +1 -1
- package/app/dist/assets/{use-hover-popover-CyIdak3c.js → use-hover-popover-Bb8PuVyu.js} +1 -1
- package/app/dist/assets/use-hover-popover-Bb8PuVyu.js.br +0 -0
- package/app/dist/assets/use-hover-popover-Bb8PuVyu.js.gz +0 -0
- package/app/dist/assets/{useElementWidth-CL3Nb-eq.js → useElementWidth-vSwGqg9a.js} +1 -1
- package/app/dist/assets/useElementWidth-vSwGqg9a.js.br +0 -0
- package/app/dist/assets/useElementWidth-vSwGqg9a.js.gz +0 -0
- package/app/dist/assets/{useLocalOpenTargets-yzd9-Ceh.js → useLocalOpenTargets-DqjYzi0b.js} +1 -1
- package/app/dist/assets/useLocalOpenTargets-DqjYzi0b.js.br +0 -0
- package/app/dist/assets/useLocalOpenTargets-DqjYzi0b.js.gz +0 -0
- package/app/dist/assets/{usePanelResizeSnap-dys9IwEk.js → usePanelResizeSnap-Dvi7sa3e.js} +1 -1
- package/app/dist/assets/usePanelResizeSnap-Dvi7sa3e.js.br +0 -0
- package/app/dist/assets/usePanelResizeSnap-Dvi7sa3e.js.gz +0 -0
- package/app/dist/assets/{usePanelTerminals-BN8UCJFO.js → usePanelTerminals-B9MNSur4.js} +1 -1
- package/app/dist/assets/usePanelTerminals-B9MNSur4.js.br +0 -0
- package/app/dist/assets/usePanelTerminals-B9MNSur4.js.gz +0 -0
- package/app/dist/assets/{usePathSuggestions-DkeFAE7l.js → usePathSuggestions-zhZ-4fh8.js} +1 -1
- package/app/dist/assets/usePathSuggestions-zhZ-4fh8.js.br +0 -0
- package/app/dist/assets/usePathSuggestions-zhZ-4fh8.js.gz +0 -0
- package/app/dist/assets/{useResolvedLiveFileTarget-43fAKgDx.js → useResolvedLiveFileTarget-CZZwqw4L.js} +1 -1
- package/app/dist/assets/useResolvedLiveFileTarget-CZZwqw4L.js.br +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-CZZwqw4L.js.gz +0 -0
- package/app/dist/assets/{useThreadTerminalController-DcWLbe8W.js → useThreadTerminalController-CvXy-5HP.js} +1 -1
- package/app/dist/assets/useThreadTerminalController-CvXy-5HP.js.br +0 -0
- package/app/dist/assets/useThreadTerminalController-CvXy-5HP.js.gz +0 -0
- package/app/dist/assets/{workspace-change-summary-Bd3p-LXz.js → workspace-change-summary-CY01JLmJ.js} +1 -1
- package/app/dist/assets/workspace-change-summary-CY01JLmJ.js.br +0 -0
- package/app/dist/assets/workspace-change-summary-CY01JLmJ.js.gz +0 -0
- package/app/dist/assets/{workspace-checkout-display-DMp28yCr.js → workspace-checkout-display-C9B0QPLi.js} +4 -4
- package/app/dist/assets/workspace-checkout-display-C9B0QPLi.js.br +0 -0
- package/app/dist/assets/workspace-checkout-display-C9B0QPLi.js.gz +0 -0
- package/app/dist/index.html +17 -17
- package/app/dist/index.html.br +0 -0
- package/app/dist/index.html.gz +0 -0
- package/dist/index.d.ts +140 -111
- package/dist/index.js +9 -5
- package/host-daemon/dist/bb +2 -2
- package/host-daemon/dist/bb-chunks/{browser-DVIVPPSL.js → browser-3RYUCU4H.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-ATDR5E2C.js → chunk-CZ4K4Z4T.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-ZWBRH7R6.js → chunk-DCRUVPRR.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-7EOZF4HA.js → chunk-F7XCHQA3.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-JWA6VJYL.js → chunk-FYCUA6H6.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-5ZMA4MIX.js → chunk-FZ76WJJG.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-UXSJP3YM.js → chunk-GVXLVAX4.js} +1 -1
- package/host-daemon/dist/bb-chunks/chunk-HDUE2YKX.js +2199 -0
- package/host-daemon/dist/bb-chunks/{chunk-REEBSQ75.js → chunk-L5UJ4QUD.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-QE47NRKX.js → chunk-NZY63D4X.js} +1 -1
- package/host-daemon/dist/bb-chunks/{chunk-MLYXPSJC.js → chunk-UCNQXYXP.js} +1 -1
- package/host-daemon/dist/bb-chunks/chunk-WMCZMPZ4.js +2 -0
- package/host-daemon/dist/bb-chunks/{client-YJBBA4JS.js → client-NLWJKXJ2.js} +1 -1
- package/host-daemon/dist/bb-chunks/{commander-errors-P6LP2OHL.js → commander-errors-GDOJDU37.js} +1 -1
- package/host-daemon/dist/bb-chunks/{context-env-LJ5IITUO.js → context-env-VLEFLYWD.js} +1 -1
- package/host-daemon/dist/bb-chunks/{context-hints-MUUUMT2P.js → context-hints-FXEXGMFT.js} +1 -1
- package/host-daemon/dist/bb-chunks/{diagnostics-5EMHJNW7.js → diagnostics-ZKJGPJUH.js} +1 -1
- package/host-daemon/dist/bb-chunks/{environment-ZRSQFVHG.js → environment-CY5JUFSR.js} +1 -1
- package/host-daemon/dist/bb-chunks/{file-AEVJYJAY.js → file-KGZLZ36T.js} +1 -1
- package/host-daemon/dist/bb-chunks/{guide-GLY5UY4M.js → guide-MXAVSGKZ.js} +1 -1
- package/host-daemon/dist/bb-chunks/{machine-Z5QSPWEE.js → machine-Y7XFS7EJ.js} +1 -1
- package/host-daemon/dist/bb-chunks/{marketplace-4CGZ3NTM.js → marketplace-QLPRDZTC.js} +1 -1
- package/host-daemon/dist/bb-chunks/{plugin-VO7RP4JU.js → plugin-K276UYTK.js} +1 -1
- package/host-daemon/dist/bb-chunks/{plugin-cli-proxy-6Y6TTP7A.js → plugin-cli-proxy-QE7C6YLF.js} +1 -1
- package/host-daemon/dist/bb-chunks/project-QD44GO6S.js +2 -0
- package/host-daemon/dist/bb-chunks/{prompt-history-ZNIBNYER.js → prompt-history-YGK557NG.js} +1 -1
- package/host-daemon/dist/bb-chunks/{provider-TJ4DGKBX.js → provider-FAAY2EKV.js} +1 -1
- package/host-daemon/dist/bb-chunks/{server-YMSYCILC.js → server-Y7FRWA4U.js} +1 -1
- package/host-daemon/dist/bb-chunks/{settings-5CKNFTFZ.js → settings-76RZ35GN.js} +1 -1
- package/host-daemon/dist/bb-chunks/{skill-BMQPIFAD.js → skill-HMSLPSPW.js} +1 -1
- package/host-daemon/dist/bb-chunks/{status-2DJ3O6QU.js → status-GJFZ5YDD.js} +1 -1
- package/host-daemon/dist/bb-chunks/{terminal-NWC5PO4A.js → terminal-LSZHPIET.js} +1 -1
- package/host-daemon/dist/bb-chunks/{theme-OEOGYFXJ.js → theme-BMV5THCU.js} +1 -1
- package/host-daemon/dist/bb-chunks/{thread-AI6SXNXK.js → thread-UZ44ZBA2.js} +1 -1
- package/host-daemon/dist/bb-chunks/thread-event-parser-SIFYMDOV.js +2 -0
- package/host-daemon/dist/bb-chunks/{updates-DFLJJDO4.js → updates-IDCLXRIV.js} +1 -1
- package/host-daemon/dist/bb-chunks/{voice-ZSACREC3.js → voice-EXZARJ2J.js} +1 -1
- package/host-daemon/dist/daemon-bundle.mjs +102 -102
- package/package.json +1 -1
- package/server/dist/builtin-plugins/orbit/dist/app.css +1 -1
- package/server/dist/builtin-plugins/orbit/dist/app.js +31 -31
- package/server/dist/builtin-plugins/orbit/dist/assets/orbit/revision +1 -1
- package/server/dist/builtin-plugins/orbit/dist/server.js +52 -52
- package/server/dist/drizzle/0147_project_permission_escalation.sql +1 -0
- package/server/dist/drizzle/meta/0147_snapshot.json +5295 -0
- package/server/dist/drizzle/meta/_journal.json +7 -0
- package/server/dist/start-server.js +26 -7
- package/app/dist/assets/AddMachineDialog-4BQFC118.js.br +0 -0
- package/app/dist/assets/AddMachineDialog-4BQFC118.js.gz +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-fGD_vTns.js.br +0 -0
- package/app/dist/assets/AppFileExternalNavigationDispatcher-fGD_vTns.js.gz +0 -0
- package/app/dist/assets/BbDiff-BkqgAZD9.js.br +0 -0
- package/app/dist/assets/BbDiff-BkqgAZD9.js.gz +0 -0
- package/app/dist/assets/BbDiffSplit-DTvWaW-n.js.br +0 -0
- package/app/dist/assets/BbDiffSplit-DTvWaW-n.js.gz +0 -0
- package/app/dist/assets/BbSourceCode-Dqw4VrLu.js.br +0 -0
- package/app/dist/assets/BbSourceCode-Dqw4VrLu.js.gz +0 -0
- package/app/dist/assets/BrowserTabDeck-CuHEyZd6.js.br +0 -0
- package/app/dist/assets/BrowserTabDeck-CuHEyZd6.js.gz +0 -0
- package/app/dist/assets/CommandPaletteBody-DynxiDg6.js.br +0 -0
- package/app/dist/assets/CommandPaletteBody-DynxiDg6.js.gz +0 -0
- package/app/dist/assets/DiffHost-3UTZIJNs.js.br +0 -0
- package/app/dist/assets/DiffHost-3UTZIJNs.js.gz +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-C0RXVabs.js.br +0 -0
- package/app/dist/assets/ExperimentalFileLinkMenu-C0RXVabs.js.gz +0 -0
- package/app/dist/assets/FilePreview-BxgJ2jjI.js.br +0 -0
- package/app/dist/assets/FilePreview-BxgJ2jjI.js.gz +0 -0
- package/app/dist/assets/GitDiffCardHeader-Ce736y-m.js.br +0 -0
- package/app/dist/assets/GitDiffCardHeader-Ce736y-m.js.gz +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-Dud8h1It.js.br +0 -0
- package/app/dist/assets/InlineMessageEditorFrame-Dud8h1It.js.gz +0 -0
- package/app/dist/assets/MachineRenameDialog-C_ZV5gEB.js.br +0 -0
- package/app/dist/assets/MachineRenameDialog-C_ZV5gEB.js.gz +0 -0
- package/app/dist/assets/MachineSettingsView-BWSIpenw.js.br +0 -0
- package/app/dist/assets/MachineSettingsView-BWSIpenw.js.gz +0 -0
- package/app/dist/assets/MicrophonePreferences-CNEhQgAS.js.br +0 -0
- package/app/dist/assets/MicrophonePreferences-CNEhQgAS.js.gz +0 -0
- package/app/dist/assets/ModelReasoningMenu-BeNCpeQf.js.br +0 -0
- package/app/dist/assets/ModelReasoningMenu-BeNCpeQf.js.gz +0 -0
- package/app/dist/assets/NewTabPage-CsPDV6iC.js.br +0 -0
- package/app/dist/assets/NewTabPage-CsPDV6iC.js.gz +0 -0
- package/app/dist/assets/NewThreadComposer-BY0jUSbs.js.br +0 -0
- package/app/dist/assets/NewThreadComposer-BY0jUSbs.js.gz +0 -0
- package/app/dist/assets/OnboardingFlow-BQdrTtHC.js.br +0 -0
- package/app/dist/assets/OnboardingFlow-BQdrTtHC.js.gz +0 -0
- package/app/dist/assets/OptionPicker-sql35hd_.js.br +0 -0
- package/app/dist/assets/OptionPicker-sql35hd_.js.gz +0 -0
- package/app/dist/assets/PaletteShell-B9KeWKsT.js.br +0 -0
- package/app/dist/assets/PaletteShell-B9KeWKsT.js.gz +0 -0
- package/app/dist/assets/PaneMaximizeButton-CGBzyikf.js.br +0 -0
- package/app/dist/assets/PaneMaximizeButton-CGBzyikf.js.gz +0 -0
- package/app/dist/assets/PierreLineSelectionActions-BYL6I0xE.js.br +0 -0
- package/app/dist/assets/PierreLineSelectionActions-BYL6I0xE.js.gz +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-Dj-wS_Ki.js.br +0 -0
- package/app/dist/assets/PluginPanelRightPanelHost-Dj-wS_Ki.js.gz +0 -0
- package/app/dist/assets/PluginThreadChat-Dh-No9s-.js.br +0 -0
- package/app/dist/assets/PluginThreadChat-Dh-No9s-.js.gz +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-BOV7URzQ.js +0 -1
- package/app/dist/assets/ProjectDetailSettingsView-BOV7URzQ.js.br +0 -0
- package/app/dist/assets/ProjectDetailSettingsView-BOV7URzQ.js.gz +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-BW4gUYj0.js.br +0 -0
- package/app/dist/assets/ProjectMachineSetupDialog-BW4gUYj0.js.gz +0 -0
- package/app/dist/assets/ProjectsSettingsSection-BI_xhcA2.js.br +0 -0
- package/app/dist/assets/ProjectsSettingsSection-BI_xhcA2.js.gz +0 -0
- package/app/dist/assets/QueuedMessagesList-BEyivVSE.js.br +0 -0
- package/app/dist/assets/QueuedMessagesList-BEyivVSE.js.gz +0 -0
- package/app/dist/assets/RemotePathBrowser-DVW5AwBs.js.br +0 -0
- package/app/dist/assets/RemotePathBrowser-DVW5AwBs.js.gz +0 -0
- package/app/dist/assets/RootComposeView-Cbnwq7j_.js.br +0 -0
- package/app/dist/assets/RootComposeView-Cbnwq7j_.js.gz +0 -0
- package/app/dist/assets/SecondaryPanelLayout-fG8BuYv-.js.br +0 -0
- package/app/dist/assets/SecondaryPanelLayout-fG8BuYv-.js.gz +0 -0
- package/app/dist/assets/ServerMoveOverlayView-CPWZimVv.js.br +0 -0
- package/app/dist/assets/ServerMoveOverlayView-CPWZimVv.js.gz +0 -0
- package/app/dist/assets/SettingsSidebar-DxfoXXKW.js.br +0 -0
- package/app/dist/assets/SettingsSidebar-DxfoXXKW.js.gz +0 -0
- package/app/dist/assets/SettingsView-D_DkKpuv.js.br +0 -0
- package/app/dist/assets/SettingsView-D_DkKpuv.js.gz +0 -0
- package/app/dist/assets/SidebarFooterCustomize-VQoenr5y.js.br +0 -0
- package/app/dist/assets/SidebarFooterCustomize-VQoenr5y.js.gz +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-DUKnlz9Y.js.br +0 -0
- package/app/dist/assets/SidebarVisibilityCustomize-DUKnlz9Y.js.gz +0 -0
- package/app/dist/assets/SourceCodeHost-BlXLvWv2.js.br +0 -0
- package/app/dist/assets/SourceCodeHost-BlXLvWv2.js.gz +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-6w4G23kc.js.br +0 -0
- package/app/dist/assets/SplitWorkspaceRoute-6w4G23kc.js.gz +0 -0
- package/app/dist/assets/TerminalOutputBlock-BxBSWJr_.js.br +0 -0
- package/app/dist/assets/TerminalOutputBlock-BxBSWJr_.js.gz +0 -0
- package/app/dist/assets/ThreadActionsMenu-ChpSKv80.js.br +0 -0
- package/app/dist/assets/ThreadActionsMenu-ChpSKv80.js.gz +0 -0
- package/app/dist/assets/ThreadDetailView-CfH3uWo-.js.br +0 -0
- package/app/dist/assets/ThreadDetailView-CfH3uWo-.js.gz +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-B72v3f5V.js.br +0 -0
- package/app/dist/assets/ThreadSearchPaletteMode-B72v3f5V.js.gz +0 -0
- package/app/dist/assets/ThreadSecondaryPanel-4nIZy4h9.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanel-4nIZy4h9.js.gz +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-8-e35_Me.js.br +0 -0
- package/app/dist/assets/ThreadSecondaryPanelTabContent-8-e35_Me.js.gz +0 -0
- package/app/dist/assets/ThreadStatusGlyph-C9tzRtlV.js.br +0 -0
- package/app/dist/assets/ThreadStatusGlyph-C9tzRtlV.js.gz +0 -0
- package/app/dist/assets/ThreadTerminalPanel-CqTk9L2y.js.br +0 -0
- package/app/dist/assets/ThreadTerminalPanel-CqTk9L2y.js.gz +0 -0
- package/app/dist/assets/ThreadTerminalView-B6XNBrJ9.js.br +0 -0
- package/app/dist/assets/ThreadTerminalView-B6XNBrJ9.js.gz +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-DbZHHZfY.js.br +0 -0
- package/app/dist/assets/ThreadTimelineNavigationContext-DbZHHZfY.js.gz +0 -0
- package/app/dist/assets/TimelineDetailScroll-CpFZhWhU.js.br +0 -0
- package/app/dist/assets/TimelineDetailScroll-CpFZhWhU.js.gz +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-JiOlR3O8.js.br +0 -0
- package/app/dist/assets/TimelineFileDiffBlock-JiOlR3O8.js.gz +0 -0
- package/app/dist/assets/TimelineSelectionMenu-DT4qwoFI.js.br +0 -0
- package/app/dist/assets/TimelineSelectionMenu-DT4qwoFI.js.gz +0 -0
- package/app/dist/assets/ToolsView-nAAic88Z.js.br +0 -0
- package/app/dist/assets/ToolsView-nAAic88Z.js.gz +0 -0
- package/app/dist/assets/ToolsViewSplits-Blo3GJMQ.js.br +0 -0
- package/app/dist/assets/ToolsViewSplits-Blo3GJMQ.js.gz +0 -0
- package/app/dist/assets/WaveformVisualizer-BrH_nwc4.js.br +0 -0
- package/app/dist/assets/WaveformVisualizer-BrH_nwc4.js.gz +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-DX9s-gCj.js.br +0 -0
- package/app/dist/assets/app-fixed-tab-navigation-DX9s-gCj.js.gz +0 -0
- package/app/dist/assets/audio-input-device-preference-DsU6GGNE.js.br +0 -0
- package/app/dist/assets/audio-input-device-preference-DsU6GGNE.js.gz +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-C8n22V_o.js.br +0 -0
- package/app/dist/assets/bottom-anchored-scroll-body-C8n22V_o.js.gz +0 -0
- package/app/dist/assets/browser-url-B0SjaYti.js.br +0 -0
- package/app/dist/assets/browser-url-B0SjaYti.js.gz +0 -0
- package/app/dist/assets/checkbox-Ct38DhHB.js.br +0 -0
- package/app/dist/assets/checkbox-Ct38DhHB.js.gz +0 -0
- package/app/dist/assets/code-loading-skeletons-C_099GEq.js.br +0 -5
- package/app/dist/assets/code-loading-skeletons-C_099GEq.js.gz +0 -0
- package/app/dist/assets/detail-card-Cj628JNK.js.br +0 -0
- package/app/dist/assets/detail-card-Cj628JNK.js.gz +0 -0
- package/app/dist/assets/diff-stats-tally-MtORWItG.js.br +0 -0
- package/app/dist/assets/diff-stats-tally-MtORWItG.js.gz +0 -0
- package/app/dist/assets/environment-mutations-rP4eROm2.js.br +0 -0
- package/app/dist/assets/environment-mutations-rP4eROm2.js.gz +0 -0
- package/app/dist/assets/environment-workspace-display-O1JRHfbV.js.br +0 -0
- package/app/dist/assets/environment-workspace-display-O1JRHfbV.js.gz +0 -0
- package/app/dist/assets/event-code-block-DqUZCAii.js.br +0 -0
- package/app/dist/assets/event-code-block-DqUZCAii.js.gz +0 -0
- package/app/dist/assets/expandable-text-herJC70e.js.br +0 -0
- package/app/dist/assets/expandable-text-herJC70e.js.gz +0 -0
- package/app/dist/assets/file-path-link-Cni9Azi2.js.br +0 -0
- package/app/dist/assets/file-path-link-Cni9Azi2.js.gz +0 -0
- package/app/dist/assets/host-mutations-Ckc-eVys.js.br +0 -0
- package/app/dist/assets/host-mutations-Ckc-eVys.js.gz +0 -0
- package/app/dist/assets/icon-extended-DDFkslJU.js.br +0 -0
- package/app/dist/assets/icon-extended-DDFkslJU.js.gz +0 -0
- package/app/dist/assets/image-lightbox-BW1bqQJM.js.br +0 -0
- package/app/dist/assets/image-lightbox-BW1bqQJM.js.gz +0 -0
- package/app/dist/assets/index-BBxUiLNy.js +0 -395
- package/app/dist/assets/index-BBxUiLNy.js.br +0 -0
- package/app/dist/assets/index-BBxUiLNy.js.gz +0 -0
- package/app/dist/assets/inline-rename-editor-wjwfk7v2.js.br +0 -0
- package/app/dist/assets/inline-rename-editor-wjwfk7v2.js.gz +0 -0
- package/app/dist/assets/launcherRow-rIW7Z6Xm.js.br +0 -0
- package/app/dist/assets/launcherRow-rIW7Z6Xm.js.gz +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-Bovg3W--.js.br +0 -0
- package/app/dist/assets/localhost-link-rewrite-description-Bovg3W--.js.gz +0 -0
- package/app/dist/assets/machine-provider-queries-CRlWTEz7.js.br +0 -0
- package/app/dist/assets/machine-provider-queries-CRlWTEz7.js.gz +0 -0
- package/app/dist/assets/markdown-html-B-Kyh3zI.js.br +0 -0
- package/app/dist/assets/markdown-html-B-Kyh3zI.js.gz +0 -0
- package/app/dist/assets/markdown-local-file-link-C89PR8d5.js.br +0 -0
- package/app/dist/assets/markdown-local-file-link-C89PR8d5.js.gz +0 -0
- package/app/dist/assets/markdown-preview-B7BmqIlu.js.br +0 -0
- package/app/dist/assets/markdown-preview-B7BmqIlu.js.gz +0 -0
- package/app/dist/assets/markdown-prompt-mentions-B0JRhgrI.js.br +0 -0
- package/app/dist/assets/markdown-prompt-mentions-B0JRhgrI.js.gz +0 -0
- package/app/dist/assets/model-load-error-message-B-HKqgUD.js.br +0 -0
- package/app/dist/assets/model-load-error-message-B-HKqgUD.js.gz +0 -0
- package/app/dist/assets/onboarding-telemetry-C21cbjI_.js +0 -1
- package/app/dist/assets/open-in-editor-button-CQGreiCk.js.br +0 -0
- package/app/dist/assets/open-in-editor-button-CQGreiCk.js.gz +0 -0
- package/app/dist/assets/page-shell-BHTOdeQn.js.br +0 -0
- package/app/dist/assets/page-shell-BHTOdeQn.js.gz +0 -0
- package/app/dist/assets/pierre-worker-pool-Bm9cLA-c.js.br +0 -0
- package/app/dist/assets/pierre-worker-pool-Bm9cLA-c.js.gz +0 -0
- package/app/dist/assets/plugin-detail-navigation-CmSGTNyL.js.br +0 -0
- package/app/dist/assets/plugin-detail-navigation-CmSGTNyL.js.gz +0 -0
- package/app/dist/assets/plugin-frontend-BdQdYbWd.js.br +0 -0
- package/app/dist/assets/plugin-frontend-BdQdYbWd.js.gz +0 -0
- package/app/dist/assets/plugin-ui-DyNDyPD9.js.br +0 -0
- package/app/dist/assets/plugin-ui-DyNDyPD9.js.gz +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-BKui5z7C.js.br +0 -0
- package/app/dist/assets/queued-editor-typeahead-layout-BKui5z7C.js.gz +0 -0
- package/app/dist/assets/queued-messages-layout-BuEilXwP.js.br +0 -0
- package/app/dist/assets/queued-messages-layout-BuEilXwP.js.gz +0 -0
- package/app/dist/assets/resource-list-B6MkAu8v.js.br +0 -0
- package/app/dist/assets/resource-list-B6MkAu8v.js.gz +0 -0
- package/app/dist/assets/root-compose-create-preference-DDv947dq.js +0 -1
- package/app/dist/assets/settings-nav-DbICcozy.js.br +0 -0
- package/app/dist/assets/settings-nav-DbICcozy.js.gz +0 -0
- package/app/dist/assets/settings-sections-Cq0VX9E8.js.br +0 -0
- package/app/dist/assets/settings-sections-Cq0VX9E8.js.gz +0 -0
- package/app/dist/assets/sidebarTouchSensor-D7jKXrfM.js.br +0 -0
- package/app/dist/assets/sidebarTouchSensor-D7jKXrfM.js.gz +0 -0
- package/app/dist/assets/switch-CzvlSesf.js.br +0 -0
- package/app/dist/assets/switch-CzvlSesf.js.gz +0 -0
- package/app/dist/assets/thread-event-parser-BqVpKC6z.js.br +0 -0
- package/app/dist/assets/thread-event-parser-BqVpKC6z.js.gz +0 -0
- package/app/dist/assets/thread-panel-queries-C3MI4mdc.js.br +0 -0
- package/app/dist/assets/thread-panel-queries-C3MI4mdc.js.gz +0 -0
- package/app/dist/assets/thread-runtime-mutations-Cr1H7KSz.js.br +0 -0
- package/app/dist/assets/thread-runtime-mutations-Cr1H7KSz.js.gz +0 -0
- package/app/dist/assets/thread-terminal-queries-B4JkOWS2.js.br +0 -0
- package/app/dist/assets/thread-terminal-queries-B4JkOWS2.js.gz +0 -0
- package/app/dist/assets/threadRecentItems-DI2mgj7S.js.br +0 -0
- package/app/dist/assets/threadRecentItems-DI2mgj7S.js.gz +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-BQgtUYL5.js.br +0 -0
- package/app/dist/assets/threadWorkspaceOpenPath-BQgtUYL5.js.gz +0 -0
- package/app/dist/assets/title-bar-scroll-fade-CxbgbTcm.js.br +0 -0
- package/app/dist/assets/title-bar-scroll-fade-CxbgbTcm.js.gz +0 -0
- package/app/dist/assets/use-hover-popover-CyIdak3c.js.br +0 -0
- package/app/dist/assets/use-hover-popover-CyIdak3c.js.gz +0 -0
- package/app/dist/assets/useElementWidth-CL3Nb-eq.js.br +0 -0
- package/app/dist/assets/useElementWidth-CL3Nb-eq.js.gz +0 -0
- package/app/dist/assets/useLocalOpenTargets-yzd9-Ceh.js.br +0 -0
- package/app/dist/assets/useLocalOpenTargets-yzd9-Ceh.js.gz +0 -0
- package/app/dist/assets/usePanelResizeSnap-dys9IwEk.js.br +0 -0
- package/app/dist/assets/usePanelResizeSnap-dys9IwEk.js.gz +0 -0
- package/app/dist/assets/usePanelTerminals-BN8UCJFO.js.br +0 -0
- package/app/dist/assets/usePanelTerminals-BN8UCJFO.js.gz +0 -0
- package/app/dist/assets/usePathSuggestions-DkeFAE7l.js.br +0 -0
- package/app/dist/assets/usePathSuggestions-DkeFAE7l.js.gz +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-43fAKgDx.js.br +0 -0
- package/app/dist/assets/useResolvedLiveFileTarget-43fAKgDx.js.gz +0 -0
- package/app/dist/assets/useThreadTerminalController-DcWLbe8W.js.br +0 -0
- package/app/dist/assets/useThreadTerminalController-DcWLbe8W.js.gz +0 -0
- package/app/dist/assets/workspace-change-summary-Bd3p-LXz.js.br +0 -0
- package/app/dist/assets/workspace-change-summary-Bd3p-LXz.js.gz +0 -0
- package/app/dist/assets/workspace-checkout-display-DMp28yCr.js.br +0 -0
- package/app/dist/assets/workspace-checkout-display-DMp28yCr.js.gz +0 -0
- package/host-daemon/dist/bb-chunks/chunk-CLMP7PJ2.js +0 -2
- package/host-daemon/dist/bb-chunks/chunk-SDZLOCRA.js +0 -2186
- package/host-daemon/dist/bb-chunks/project-J3U36Y4U.js +0 -2
- package/host-daemon/dist/bb-chunks/thread-event-parser-VC3WTCLZ.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var rc=Object.defineProperty;var ic=(e,s)=>{for(var t in s)rc(e,t,{get:s[t],enumerable:!0})};var St={};ic(St,{Activity:()=>oc,Children:()=>Bs,Component:()=>qn,Fragment:()=>Zn,Profiler:()=>lc,PureComponent:()=>cc,StrictMode:()=>dc,Suspense:()=>uc,act:()=>hc,cache:()=>fc,cacheSignal:()=>pc,captureOwnerStack:()=>_c,cloneElement:()=>jt,createContext:()=>mc,createElement:()=>xc,createRef:()=>gc,default:()=>ac,forwardRef:()=>it,isValidElement:()=>Et,lazy:()=>bc,memo:()=>vc,startTransition:()=>yc,unstable_useCacheRefresh:()=>wc,use:()=>kc,useActionState:()=>Ec,useCallback:()=>ie,useContext:()=>Sc,useDebugValue:()=>Ac,useDeferredValue:()=>Cc,useEffect:()=>z,useEffectEvent:()=>Tc,useId:()=>Xc,useImperativeHandle:()=>Nc,useInsertionEffect:()=>Fc,useLayoutEffect:()=>Yn,useMemo:()=>at,useOptimistic:()=>Kc,useReducer:()=>Rc,useRef:()=>ce,useState:()=>E,useSyncExternalStore:()=>Lc,useTransition:()=>Ic,version:()=>Dc});var jn=globalThis.__bbPluginRuntime;if(jn==null||jn.react==null)throw new Error('Cannot load "react": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Ms=jn.react,ac="default"in Ms?Ms.default:Ms,{Activity:oc,Children:Bs,Component:qn,Fragment:Zn,Profiler:lc,PureComponent:cc,StrictMode:dc,Suspense:uc,act:hc,cache:fc,cacheSignal:pc,captureOwnerStack:_c,cloneElement:jt,createContext:mc,createElement:xc,createRef:gc,forwardRef:it,isValidElement:Et,lazy:bc,memo:vc,startTransition:yc,unstable_useCacheRefresh:wc,use:kc,useActionState:Ec,useCallback:ie,useContext:Sc,useDebugValue:Ac,useDeferredValue:Cc,useEffect:z,useEffectEvent:Tc,useId:Xc,useImperativeHandle:Nc,useInsertionEffect:Fc,useLayoutEffect:Yn,useMemo:at,useOptimistic:Kc,useReducer:Rc,useRef:ce,useState:E,useSyncExternalStore:Lc,useTransition:Ic,version:Dc}=Ms;function xi(e,s){if(typeof e=="function")return e(s);e!=null&&(e.current=s)}function Pc(...e){return s=>{let t=!1,n=e.map(r=>{let i=xi(r,s);return!t&&typeof i=="function"&&(t=!0),i});if(t)return()=>{for(let r=0;r<n.length;r++){let i=n[r];typeof i=="function"?i():xi(e[r],null)}}}}function gi(...e){return ie(Pc(...e),e)}function Mc(e){let s=it((t,n)=>{let{children:r,...i}=t,a=null,o=!1,u=[];bi(r)&&typeof Os=="function"&&(r=Os(r._payload)),Bs.forEach(r,f=>{if(Uc(f)){o=!0;let p=f,g="child"in p.props?p.props.child:p.props.children;bi(g)&&typeof Os=="function"&&(g=Os(g._payload)),a=Oc(p,g),u.push(a?.props?.children)}else u.push(f)}),a?a=jt(a,void 0,u):!o&&Bs.count(r)===1&&Et(r)&&(a=r);let l=a?Qc(a):void 0,d=gi(n,l);if(!a){if(r||r===0)throw new Error(o?Gc(e):Vc(e));return r}let h=Hc(i,a.props??{});return a.type!==Zn&&(h.ref=n?d:l),jt(a,h)});return s.displayName=`${e}.Slot`,s}var vi=Mc("Slot"),Bc=Symbol.for("radix.slottable");var Oc=(e,s)=>{if("child"in e.props){let t=e.props.child;return Et(t)?jt(t,void 0,e.props.children(t.props.children)):null}return Et(s)?s:null};function Hc(e,s){let t={...s};for(let n in s){let r=e[n],i=s[n];/^on[A-Z]/.test(n)?r&&i?t[n]=(...o)=>{let u=i(...o);return r(...o),u}:r&&(t[n]=r):n==="style"?t[n]={...r,...i}:n==="className"&&(t[n]=[r,i].filter(Boolean).join(" "))}return{...e,...t}}function Qc(e){let s=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=s&&"isReactWarning"in s&&s.isReactWarning;return t?e.ref:(s=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=s&&"isReactWarning"in s&&s.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function Uc(e){return Et(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Bc}var zc=Symbol.for("react.lazy");function bi(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===zc&&"_payload"in e&&$c(e._payload)}function $c(e){return typeof e=="object"&&e!==null&&"then"in e}var Vc=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Gc=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Os=St[" use ".trim().toString()];var Jn=globalThis.__bbPluginRuntime;if(Jn==null||Jn.classVarianceAuthority==null)throw new Error('Cannot load "class-variance-authority": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Hs=Jn.classVarianceAuthority,Lh="default"in Hs?Hs.default:Hs,{cva:yi,cx:Ih}=Hs;var er=globalThis.__bbPluginRuntime;if(er==null||er.clsx==null)throw new Error('Cannot load "clsx": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Qs=er.clsx,Ph="default"in Qs?Qs.default:Qs,{clsx:wi}=Qs;var tr=globalThis.__bbPluginRuntime;if(tr==null||tr.tailwindMerge==null)throw new Error('Cannot load "tailwind-merge": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Us=tr.tailwindMerge,Bh="default"in Us?Us.default:Us,{createTailwindMerge:Oh,extendTailwindMerge:Hh,fromTheme:Qh,getDefaultConfig:Uh,mergeConfigs:zh,twJoin:$h,twMerge:ki,validators:Vh}=Us;function At(...e){return ki(wi(e))}var zs="transition-colors duration-150 hover:duration-0";var sr=globalThis.__bbPluginRuntime;if(sr==null||sr.jsxRuntime==null)throw new Error('Cannot load "react/jsx-runtime": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var $s=sr.jsxRuntime,Yh="default"in $s?$s.default:$s,{Fragment:Se,jsx:c,jsxs:_}=$s;var Wc=yi(`inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ${zs} focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_[data-icon-root]]:pointer-events-none [&_[data-icon-root]]:size-4 [&_[data-icon-root]]:shrink-0`,{variants:{variant:{default:"bg-foreground text-background hover:bg-foreground/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-transparent hover:bg-state-hover hover:text-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-state-hover hover:text-foreground aria-pressed:bg-state-active aria-pressed:text-foreground aria-pressed:hover:bg-state-active data-[state=open]:bg-state-active data-[state=open]:text-foreground data-[state=open]:hover:bg-state-active",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),K=it(({className:e,variant:s,size:t,asChild:n=!1,...r},i)=>c(n?vi:"button",{className:At(Wc({variant:s,size:t,className:e})),ref:i,...r}));K.displayName="Button";function Ei({interaction:e,submit:s}){let t=e.payload,[n,r]=E(""),[i,a]=E(!1),[o,u]=E("");async function l(d,h=!1){let f=d&&!h&&n?Date.parse(n):null;if(!(i||Date.now()>=t.deadline)){if(f!==null&&(!Number.isFinite(f)||f<=Date.now())){u("Choose a future end time, or leave it empty for no time limit.");return}a(!0);try{await s({approve:d,expiresAt:f,...h?{once:!0}:{}})}catch{u("Your answer did not go through. Try again."),a(!1)}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[_("p",{children:[t.operation&&`This operation: ${t.operation}. `,t.revoke?"Stop using these standing permissions for future work? Work already authorized may finish.":"Let me do these kinds of work without asking you each time? Anything outside these exact limits still asks."]}),t.lines.map((d,h)=>c("p",{children:d},h)),t.decisions.map(d=>c("p",{children:d.description},d.id)),!t.revoke&&_("label",{className:"block",children:["Permission ends (leave empty for no time limit)",c("input",{"aria-label":"Permission ends",className:"block rounded border p-1",type:"datetime-local",value:n,onChange:d=>r(d.target.value)})]}),c("p",{children:"You can list or take back any permission in Settings \u2192 Orbit \u2192 Approvals, or ask me to take one or all back. One original answer in Orbit is enough. A new answer for the same exact scope replaces its earlier decision. Messages and replies elsewhere cannot change these permissions. A summary of each day\u2019s use is available there without root access."}),c("p",{children:"Declining or leaving this unanswered changes nothing."}),o&&c("p",{role:"alert",children:o}),_("div",{className:"flex gap-2",children:[t.operation&&c(K,{disabled:i,onClick:()=>{l(!0,!0)},children:"Approve once"}),c(K,{disabled:i||Date.now()>=t.deadline,onClick:()=>{l(!0)},children:t.revoke?"Take these permissions back":"Allow these kinds of work"}),c(K,{variant:"outline",disabled:i,onClick:()=>{l(!1)},children:"Keep it as it is"})]})]})}var nr=globalThis.__bbPluginRuntime;if(nr==null||nr.pluginSdkApp==null)throw new Error('Cannot load "@get-bb/plugin-sdk/app": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Vs=nr.pluginSdkApp,d0="default"in Vs?Vs.default:Vs,{Markdown:u0,ThreadChat:rr,ThreadTitle:h0,UrlLink:f0,definePluginApp:Si,experimental_BranchPicker:p0,experimental_ComposerRoot:_0,experimental_DetailRow:m0,experimental_Diff:x0,experimental_FailedVoiceRecordings:g0,experimental_FileLink:b0,experimental_Icon:v0,experimental_ImageLightbox:y0,experimental_InfoList:w0,experimental_InfoListRow:k0,experimental_InfoSection:E0,experimental_NewThreadComposer:S0,experimental_PermissionModePicker:A0,experimental_PluginIcon:C0,experimental_PluginRpcCallError:T0,experimental_PromptMentionIcon:X0,experimental_ProviderIcon:N0,experimental_ProviderModelPicker:F0,experimental_ShortcutHint:K0,experimental_SidebarNavigationIcon:R0,experimental_SourceCode:L0,experimental_THREAD_ACTION_GROUPS:I0,experimental_THREAD_CONTEXT_SEGMENT_GROUPS:D0,experimental_THREAD_INFO_ROW_GROUPS:P0,experimental_THREAD_INFO_SECTION_GROUPS:M0,experimental_ThreadActionsContextMenu:B0,experimental_ThreadActionsMenu:O0,experimental_ThreadStatusGlyph:Ai,experimental_ThreadTitleText:H0,experimental_VoiceInputButton:Q0,experimental_VoiceInputTextarea:U0,experimental_VoiceRecordingBar:z0,experimental_copyToClipboard:$0,experimental_describePromptMention:V0,experimental_promptMentionClipboardAttributes:G0,experimental_readPromptMentionClipboard:W0,experimental_saveFile:j0,experimental_useAppPanel:Ci,experimental_useArchiveEnvironmentThreads:q0,experimental_useBranches:Z0,experimental_useCheckoutState:Y0,experimental_useCodeTheme:J0,experimental_useComposerCommandSearch:ef,experimental_useComposerContributions:tf,experimental_useComposerMentionSearch:sf,experimental_useComposerRenderer:nf,experimental_useExperiment:rf,experimental_useFixedTabTarget:af,experimental_usePluginId:of,experimental_useProviders:lf,experimental_useQuestionFormHost:cf,experimental_useRpcKeyedQuery:df,experimental_useRpcMutation:uf,experimental_useRpcQuery:hf,experimental_useRpcRefresh:ff,experimental_useSidebar:Ti,experimental_useSidebarNavigation:pf,experimental_useSidebarNavigationSplit:_f,experimental_useSidebarThreadActions:mf,experimental_useSidebarThreadSplit:xf,experimental_useSidebarThreads:gf,experimental_useThreadActionRegistrations:bf,experimental_useThreadActions:vf,experimental_useThreadTitleDisplayText:yf,useBbContext:Xi,useBbNavigate:Gs,useComposer:Ni,useComposerView:wf,useComposers:kf,useEnvironmentProviders:Ef,useRealtime:Ce,useRealtimeConnectionState:Fi,useRpc:q,useSdk:Ki,useSettings:Sf,useSidebarSplitLayout:Af,useSidebarThreadDraft:Cf,useSidebarThreadDraftIds:Tf,useSidebarThreadRowStatus:Xf,useSidebarThreadRowStatuses:Nf,useSidebarThreadShortcut:Ff,experimental_useSidebarThreadPullRequest:Kf}=Vs;function Ws({interaction:e,submit:s}){let t=e.payload,[n,r]=E(!1),[i,a]=E(null);async function o(u){if(!(n||Date.now()>=t.deadline)){r(!0);try{await s({approve:u})}catch{r(!1),a("Your answer did not go through. Try again.")}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[Object.entries(t.lines).map(([u,l])=>_("section",{children:[c("h3",{className:"font-medium",children:u}),c("p",{className:"whitespace-pre-line",children:l})]},u)),_("p",{children:["Declining or leaving this unanswered changes nothing. This question expires ",new Date(t.deadline).toLocaleDateString(),"."]}),i&&c("p",{role:"alert",children:i}),_("div",{className:"flex gap-2",children:[c(K,{disabled:n||Date.now()>=t.deadline,onClick:()=>{o(!0)},children:t.resume?"Resume this cleanup rule":t.enabled?"Switch these rules on":"Switch these rules off"}),c(K,{variant:"outline",disabled:n||Date.now()>=t.deadline,onClick:()=>{o(!1)},children:"Keep it as it is"})]})]})}function jc({route:e,busy:s,answer:t,cancel:n,expiresAt:r}){return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:[e.what==="spawn"?"Start work":e.what==="tell"?"Send a message":e.what==="relay"?"Relay a message":"Schedule a check"," ",e.what==="relay"?"to":"on"," ",c("span",{className:"font-mono",children:e.station}),e.when&&_("span",{className:"font-normal text-muted-foreground",children:[" (",e.when,")"]})]}),(e.provider||e.model)&&_("div",{className:"mt-1 text-xs",children:["Runs on ",c("span",{className:"font-mono",children:e.provider??"the project's provider"}),e.model&&_(Se,{children:[" ","with ",c("span",{className:"font-mono",children:e.model})]}),e.provider==="codex"&&e.own&&" (Codex, under that machine's own Codex sign-in and settings; Orbit's station protections don't apply)","."]}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:["I\u2019m requesting this from ",e.from,".",e.what==="check"&&" The script runs as orbit on its station, outside Claude Code's sandbox, every time it's due.",e.own&&" I\u2019ll run as you on your machine, with access to your files and accounts.",e.what==="relay"&&" You set this to Ask in Settings \u2192 Orbit \u2192 Relay. The message goes as written below, marked as relayed from Orbit."]})]}),c("div",{className:"font-medium",children:e.title}),c("pre",{className:"max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 font-mono text-xs",children:e.brief}),r&&_("div",{className:"text-xs text-muted-foreground",children:["Expires at ",new Date(r).toLocaleTimeString(),"."]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:s,onClick:()=>t("once"),children:"Approve"}),c(K,{size:"sm",variant:"destructive",disabled:s,onClick:()=>t("deny"),children:"Decline"}),c(K,{size:"sm",variant:"ghost",disabled:s,onClick:()=>{n()},children:"Dismiss"})]})]})}var qc=e=>({"orbit-keys.service":"Password service","orbit-relay.service":"Station connection","orbit-proton-bridge.service":"Mail connection",mail:"Mail connection",gate:"Station connection",plugin:"Orbit service",turn:"Starting work","mail-check":"Mail check",events:"Background work service"})[e]??e;function Zc({switching:e,busy:s,answer:t,cancel:n,expiresAt:r}){let i=e.what==="activate";return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["Switch ",i?"on":"off"," on the station: ",e.piece]}),_("div",{className:"mt-1 text-xs",children:[e.words,"."]})]}),c("div",{className:"text-xs",children:i&&e.recovery?"Every health check still runs. This retry may keep only the known failures below. Another failure or an interrupted switch still undoes it.":i?"I\u2019ll switch this on and check the station\u2019s health. A failed check or interrupted switch restores the previous state.":"I\u2019ll switch this off now. The effect is described above."}),e.recovery&&_("div",{className:"space-y-2 rounded-md border p-2",children:[c("p",{className:"font-medium",children:"Retry and keep this switch if the same checks still fail?"}),c("ul",{className:"list-disc pl-5",children:e.recovery.failures.map(a=>c("li",{children:qc(a)},a))}),c("p",{children:"Approve retries the same switch with the same settings and allows these known failures for this attempt. Services may remain unavailable until repaired. Other failures still undo the switch."})]}),_("div",{className:"text-xs text-muted-foreground",children:["This approves the switch described above.",r&&` Expires at ${new Date(r).toLocaleTimeString()}.`]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:s,onClick:()=>t("once"),children:"Approve"}),c(K,{size:"sm",variant:"destructive",disabled:s,onClick:()=>t("deny"),children:"Decline"}),c(K,{size:"sm",variant:"ghost",disabled:s,onClick:()=>{n()},children:"Dismiss"})]})]})}function Yc({login:e,offers:s,busy:t,answer:n,cancel:r,expiresAt:i}){let a=e.otp?"one-time codes":"sign-ins";return e.humanCheck?_("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[c("div",{className:"font-medium",children:"Proton wants a human check before Bridge signs in"}),c("div",{className:"mt-1 text-xs text-muted-foreground",children:"It's open in Chrome on Orbit's desktop: solve it there from the Desktop panel (Proton accepts it only from Orbit's own computer), then press Done. Bridge's sign-in is waiting and carries on from there. The link, in case the window closed:"})]}),c("a",{className:"break-all font-mono text-xs underline",href:e.humanCheck,target:"_blank",rel:"noreferrer noopener",children:e.humanCheck}),i&&_("div",{className:"text-xs text-muted-foreground",children:["Cancelled if unanswered by ",new Date(i).toLocaleTimeString(),"."]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:t,onClick:()=>n("once"),children:"Done"}),c(K,{size:"sm",variant:"destructive",disabled:t,onClick:()=>n("deny"),children:"Cancel"})]})]}):_("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[c("div",{children:e.bridge?_(Se,{children:[_("div",{className:"font-medium",children:["Sign Proton Mail Bridge in with ",c("span",{className:"font-mono",children:e.item})]}),c("div",{className:"mt-1 text-xs text-muted-foreground",children:"I\u2019ll sign Bridge in through the vault without seeing the password or code. Then I can read and send its mail through Bridge."})]}):_(Se,{children:[_("div",{className:"font-medium",children:["Sign Orbit in: fill ",e.otp?"the one-time code":"the username and password"," from ",c("span",{className:"font-mono",children:e.item})," into"," ",c("span",{className:"font-mono",children:e.unit}),"'s sign-in page, ",c("span",{className:"font-mono",children:e.url})]}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:[e.otp?"The broker fills it into the text field that has the focus on that page; Orbit never sees it.":"The broker fills them into that page's form (the password only into its password field) and signs in; Orbit never sees them."," ","You can see the sign-in form in the Desktop panel."]})]})}),_("ul",{className:"list-disc space-y-0.5 pl-5 text-xs text-muted-foreground",children:[s.includes("thread")&&_("li",{children:[c("b",{children:"For this conversation"}),": ",a," for ",c("span",{className:"font-mono",children:e.name})," asked as this conversation, until bb reloads Orbit."]}),s.includes("always")&&_("li",{children:[c("b",{children:"Always"}),": ",a," for ",c("span",{className:"font-mono",children:e.name})," from any of the station's conversations, from now on. Revoke it in Settings \u2192 Orbit."]}),i&&_("li",{children:["Expires at ",new Date(i).toLocaleTimeString(),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:t,onClick:()=>n("once"),children:"Approve"}),s.includes("thread")&&c(K,{size:"sm",variant:"secondary",disabled:t,onClick:()=>n("thread"),children:"For this conversation"}),s.includes("always")&&c(K,{size:"sm",variant:"secondary",disabled:t,onClick:()=>n("always"),children:"Always"}),c(K,{size:"sm",variant:"destructive",disabled:t,onClick:()=>n("deny"),children:"Decline"}),c(K,{size:"sm",variant:"ghost",disabled:t,onClick:()=>{r()},children:"Dismiss"})]})]})}function Jc({change:e,busy:s,answer:t}){return _("div",{className:"space-y-3 p-3 text-sm",children:[_("p",{className:"font-medium",children:[e.mergeReasons?"Allow merging":e.checks?"Proceed with these checks for":"Approve change"," #",e.number," in ",e.repo,"?"]}),c("a",{className:"underline",href:`https://github.com/${e.repo}/pull/${e.number}/files/${e.head}`,target:"_blank",rel:"noreferrer noopener",children:"Read this version of the change"}),e.mergeReasons?_("p",{children:["Allow this reviewed version to be merged despite:"," ",e.mergeReasons.map(n=>({author:"the author restriction",protected_paths:"protected files",changes_requested:"a request for changes"})[n]).join(", "),". Every check must still pass, the review must match this commit, and the pull request must be ready and mergeable. This changes the default branch."]}):e.checks?_(Se,{children:[c("p",{children:"Allow merging this version despite the results below. Tests may be incomplete or the change may be broken. This also approves the change, including core files. It does not install anything."}),c("a",{className:"underline",href:`https://github.com/${e.repo}/pull/${e.number}/checks`,target:"_blank",rel:"noreferrer noopener",children:"Read the check details"}),c("ul",{className:"list-disc pl-5",children:e.checks.failures.map((n,r)=>c("li",{children:n},r))}),c("p",{className:"text-xs",children:"Only these exact check runs and this version are covered. A rerun, changed result, extra check or later push needs a new decision. Repository, identity and version checks still apply."})]}):c("p",{children:"This approves this whole version, including its core files. A later push needs approval of its own. Every other merge check still applies."}),c("p",{className:"text-xs",children:"This records your approval of the change. It does not install anything."}),c("pre",{className:"whitespace-pre-wrap break-all text-xs",children:e.head}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",disabled:s,onClick:()=>t("once"),children:"Approve"}),c(K,{size:"sm",variant:"destructive",disabled:s,onClick:()=>t("deny"),children:"Decline"})]})]})}function js({interaction:e,submit:s,cancel:t}){let n=e.payload,[r,i]=E(!1),a=u=>{i(!0),s({choice:u}).catch(()=>i(!1))};if(n.change)return c(Jc,{change:n.change,busy:r,answer:a});if(n.switching)return c(Zc,{switching:n.switching,busy:r,answer:a,cancel:()=>{t()},expiresAt:n.expiresAt});if(n.route)return c(jc,{route:n.route,busy:r,answer:a,cancel:()=>{t()},expiresAt:n.expiresAt});if(n.login)return c(Yc,{login:n.login,offers:n.offers,busy:r,answer:a,cancel:()=>{t()},expiresAt:n.expiresAt});let o=new Set(n.offers);return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["I\u2019d like to ",n.level==="act"?"make a change":"look"," with ",c("span",{className:"font-mono",children:n.capability})]}),c("pre",{className:"mt-2 max-h-48 overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted p-2 font-mono text-xs",children:n.command})]}),_("ul",{className:"list-disc space-y-0.5 pl-5 text-xs text-muted-foreground",children:[o.has("thread")&&_("li",{children:[c("b",{children:"For this conversation"}),": any ",c("span",{className:"font-mono",children:n.rule})," command on ",n.capability,", until bb reloads Orbit."]}),o.has("always")&&_("li",{children:[c("b",{children:"Always"}),": this exact command, from now on. Revoke it in Settings \u2192 Orbit."]}),n.sensitive&&_("li",{children:["This command is on ",n.capability,"'s sensitive list, so it asks every time."]}),n.expiresAt&&_("li",{children:["Expires at ",new Date(n.expiresAt).toLocaleTimeString(),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:r,onClick:()=>a("once"),children:"Approve"}),o.has("thread")&&c(K,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a("thread"),children:"Allow for this conversation"}),o.has("always")&&c(K,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a("always"),children:"Always allow"}),c(K,{size:"sm",variant:"destructive",disabled:r,onClick:()=>a("deny"),children:"Decline"}),c(K,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function qs({interaction:e,submit:s,cancel:t}){let n=e.payload,[r,i]=E(!1),a=o=>{i(!0),s({hostId:o}).catch(()=>i(!1))};return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["Which machine manages ",c("span",{className:"font-mono",children:n.station}),"?"]}),_("p",{className:"mt-1 text-xs text-muted-foreground",children:["Several machines have Orbit's station key and this station's VM. Orbit reaches the station only through the one you pick, which receives its credentials when they change. Change it later with ",c("span",{className:"font-mono",children:"bb orbit station manager"}),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[n.machines.map(o=>c(K,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a(o.id),children:o.name},o.id)),c(K,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function Ri({payload:e}){let s=e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.proposal=="string"?e.proposal:"";return/^[a-f0-9]{32}$/.test(s)?c(ir,{id:s}):c("p",{children:"The settings result is unavailable."})}function ir({id:e}){let s=q(),[t,n]=E([]),[r,i]=E(!1);return z(()=>{let a=!0,o,u=async()=>{try{let l=e?await s.call("policy-proposals.result",{id:e}).then(d=>d?[d]:[]):await s.call("policy-proposals.history",null);a&&(n(l),i(!1))}catch{a&&i(!0)}a&&(o=setTimeout(()=>{u()},5e3))};return u(),()=>{a=!1,clearTimeout(o)}},[s,e]),!t.length&&!r?null:_("section",{className:"space-y-2 p-3 text-sm","aria-label":"Station settings results",children:[!e&&c("h2",{className:"font-medium",children:"Recent station settings requests"}),r&&c("p",{role:"alert",children:"The settings result could not be checked. Trying again."}),t.slice(0,e?1:10).map(a=>_("div",{className:"space-y-1 rounded border p-2",children:[c("p",{className:"font-medium",children:a.title}),c("p",{children:a.message})]},a.id))]})}function Zs({interaction:e,submit:s}){let t=e.payload,n=q(),[r,i]=E(!1),[a,o]=E(!1),[u,l]=E(null),[d,h]=E(null),f=Date.now()>=t.deadline;async function p(g){if(!(r||f||g&&t.explanation.extraConfirmation&&!a)){i(!0),h(null);try{await s({approve:g,acknowledgeRisk:a})}catch{h("Your answer did not go through. Try again."),i(!1)}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[c("p",{className:"font-medium",children:"Change station permissions?"}),t.explanation.sections.map(g=>_("section",{className:"space-y-1",children:[c("h3",{className:"font-medium",children:g.heading}),g.sentences.map((w,v)=>c("p",{className:"whitespace-pre-wrap break-words",children:w},v))]},g.heading)),c("p",{children:"This answer covers only these settings and their application. Declining or leaving this unanswered changes nothing."}),_("p",{children:["Expires ",new Date(t.deadline).toLocaleString(),"."]}),_("details",{onToggle:g=>{g.currentTarget.open&&!u&&n.call("policy-proposals.text",{id:t.id}).then(l).catch(()=>h("The exact text could not be loaded. Try opening it again."))},children:[c("summary",{className:"cursor-pointer underline",children:"More details"}),_("p",{children:["Proposer's title: ",t.title]}),c("p",{children:"Proposer's own words (not verified):"}),c("p",{className:"whitespace-pre-wrap break-words",children:t.explanation.details.proposerWords}),t.explanation.details.unchanged.map((g,w)=>c("p",{children:g},w)),u?_("div",{className:"space-y-2",children:[c("p",{children:"Current settings"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.before}),c("p",{children:"Proposed settings"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.after}),c("p",{children:"Checked review"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.preview})]}):c("p",{children:"Loading\u2026"})]}),t.explanation.extraConfirmation&&_("label",{className:"flex gap-2",children:[c("input",{type:"checkbox",checked:a,disabled:r||f,onChange:g=>o(g.target.checked)}),"I understand the extra access described above."]}),f&&c("p",{role:"alert",children:"This request has expired. Nothing was changed."}),d&&c("p",{role:"alert",children:d}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",disabled:r||f||t.explanation.extraConfirmation&&!a,onClick:()=>{p(!0)},children:"Approve"}),c(K,{size:"sm",variant:"destructive",disabled:r||f,onClick:()=>{p(!1)},children:"Decline"})]})]})}var ed=/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/;function qt({url:e,label:s,size:t=64}){let n={width:t,height:t};return!e||!ed.test(e)?c("span",{role:"img","aria-label":`${s}: none`,className:"inline-block shrink-0 rounded-full border border-dashed border-border bg-muted",style:n}):c("img",{src:e,alt:s,className:"shrink-0 rounded-full border border-border bg-muted object-cover",style:n})}function Ys({interaction:e,submit:s,cancel:t}){let n=e.payload,[r,i]=E(!1),a=o=>{i(!0),s({approve:o}).catch(()=>i(!1))};return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[c("div",{className:"font-medium",children:"I\u2019d like to save these preferences"}),c("div",{className:"mt-1",children:n.summary}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:["Requested from ",n.from,". These preferences apply to future work."]})]}),n.avatar&&_("div",{className:"flex items-end gap-4",children:[_("div",{className:"flex flex-col items-center gap-1",children:[c(qt,{url:n.avatar.now,label:"The avatar now"}),c("span",{className:"text-xs text-muted-foreground",children:"Now"})]}),_("div",{className:"flex flex-col items-center gap-1",children:[c(qt,{url:n.avatar.proposed,label:"The proposed avatar",size:96}),c("span",{className:"text-xs text-muted-foreground",children:"Proposed"})]})]}),_("div",{className:"grid gap-2 md:grid-cols-2",children:[_("div",{children:[c("div",{className:"mb-1 text-xs text-muted-foreground",children:"Now"}),c("pre",{className:"max-h-60 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs",children:n.before})]}),_("div",{children:[c("div",{className:"mb-1 text-xs text-muted-foreground",children:"After"}),c("pre",{className:"max-h-60 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs",children:n.after})]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(K,{size:"sm",disabled:r,onClick:()=>a(!0),children:"Approve"}),c(K,{size:"sm",variant:"destructive",disabled:r,onClick:()=>a(!1),children:"Decline"}),c(K,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function Li(e){return e>>>0}function Zt(e){return e|0}var Ii="warn",V=()=>{},ue=()=>{},he=()=>{},ne=()=>{};function td(e){if(typeof e>"u"?e=Ii:Ii=e,V=ue=he=ne=()=>{},typeof window.console<"u")switch(e){case"debug":V=console.debug.bind(window.console);case"info":ue=console.info.bind(window.console);case"warn":he=console.warn.bind(window.console);case"error":ne=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+e+"'")}}td();function Js(e,s=!1){try{return decodeURIComponent(escape(e))}catch(t){if(t instanceof URIError&&s)return e;throw t}}function Te(e){return unescape(encodeURIComponent(e))}var Ct={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode(e){"use strict";let s="",t=e.length,n=t%3;for(let i=0;i<t-2;i+=3)s+=this.toBase64Table[e[i]>>2],s+=this.toBase64Table[((e[i]&3)<<4)+(e[i+1]>>4)],s+=this.toBase64Table[((e[i+1]&15)<<2)+(e[i+2]>>6)],s+=this.toBase64Table[e[i+2]&63];let r=t-n;return n===2?(s+=this.toBase64Table[e[r]>>2],s+=this.toBase64Table[((e[r]&3)<<4)+(e[r+1]>>4)],s+=this.toBase64Table[(e[r+1]&15)<<2],s+=this.toBase64Table[64]):n===1&&(s+=this.toBase64Table[e[r]>>2],s+=this.toBase64Table[(e[r]&3)<<4],s+=this.toBase64Table[64],s+=this.toBase64Table[64]),s},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(e,s=0){let t=e.indexOf("=")-s;t<0&&(t=e.length-s);let n=(t>>2)*3+Math.floor(t%4/1.5),r=new Array(n),i=0,a=0;for(let o=0,u=s;u<e.length;u++){let l=this.toBinaryTable[e.charCodeAt(u)&127],d=e.charAt(u)===this.base64Pad;if(l===-1){ne("Illegal character code "+e.charCodeAt(u)+" at position "+u);continue}a=a<<6|l,i+=6,i>=8&&(i-=8,d||(r[o++]=a>>i&255),a&=(1<<i)-1)}if(i){let o=new Error("Corrupted base64 string");throw o.name="Base64-Error",o}return r}};var ar="ontouchstart"in document.documentElement||document.ontouchstart!==void 0||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function e(){ar=!0,window.removeEventListener("touchstart",e,!1)},!1);var Yt=10*(window.devicePixelRatio||1),Di=!1;try{let e=document.createElement("canvas");e.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',e.style.cursor.indexOf("url")===0?(ue("Data URI scheme cursor supported"),Di=!0):he("Data URI scheme cursor not supported")}catch(e){ne("Data URI scheme cursor test exception: "+e)}var Pi=Di,sd=!0;try{let e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",document.body.appendChild(e);let s=document.createElement("div");e.appendChild(s);let t=e.offsetWidth-s.offsetWidth;e.parentNode.removeChild(e),sd=t!=0}catch(e){ne("Scrollbar test exception: "+e)}var or=!1;async function nd(){if(!("VideoDecoder"in window))return!1;let e={codec:"avc1.42401f",codedWidth:1920,codedHeight:1080,optimizeForLatency:!0};if(!(await VideoDecoder.isConfigSupported(e)).supported)return!1;let t=new Uint8Array(Ct.decode("AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4HcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw==")),n=!1,r=null,i=new VideoDecoder({output:o=>{n=!0,o.close()},error:o=>{r=o}}),a=new EncodedVideoChunk({timestamp:0,type:"key",data:t});i.configure(e),i.decode(a);try{await i.flush()}catch(o){r=o}return!(!n||r!==null)}or=await nd();function He(){return!!/mac/i.exec(navigator.platform)}function Tt(){return!!/win/i.exec(navigator.platform)}function Xt(){return!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform)}function Nt(e,s,t){let n=t.getBoundingClientRect(),r={x:0,y:0};return e<n.left?r.x=0:e>=n.right?r.x=n.width-1:r.x=e-n.left,s<n.top?r.y=0:s>=n.bottom?r.y=n.height-1:r.y=s-n.top,r}function lt(e){e.stopPropagation(),e.preventDefault()}var lr=!1,Bi=null;document.captureElement=null;function ot(e){if(lr)return;let s=new e.constructor(e.type,e);lr=!0,document.captureElement?document.captureElement.dispatchEvent(s):Bi.dispatchEvent(s),lr=!1,e.stopPropagation(),s.defaultPrevented&&e.preventDefault(),e.type==="mouseup"&&Ui()}function Oi(){let e=document.getElementById("noVNC_mouse_capture_elem");e.style.cursor=window.getComputedStyle(document.captureElement).cursor}var Hi=new MutationObserver(Oi);function Qi(e){if(e.setCapture)e.setCapture(),document.captureElement=e;else{Ui();let s=document.getElementById("noVNC_mouse_capture_elem");s===null&&(s=document.createElement("div"),s.id="noVNC_mouse_capture_elem",s.style.position="fixed",s.style.top="0px",s.style.left="0px",s.style.width="100%",s.style.height="100%",s.style.zIndex=1e4,s.style.display="none",document.body.appendChild(s),s.addEventListener("contextmenu",ot),s.addEventListener("mousemove",ot),s.addEventListener("mouseup",ot)),document.captureElement=e,Hi.observe(e,{attributes:!0}),Oi(),s.style.display="",window.addEventListener("mousemove",ot),window.addEventListener("mouseup",ot)}}function Ui(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;Bi=document.captureElement,document.captureElement=null,Hi.disconnect();let e=document.getElementById("noVNC_mouse_capture_elem");e.style.display="none",window.removeEventListener("mousemove",ot),window.removeEventListener("mouseup",ot)}}var ct=class{constructor(){this._listeners=new Map}addEventListener(s,t){this._listeners.has(s)||this._listeners.set(s,new Set),this._listeners.get(s).add(t)}removeEventListener(s,t){this._listeners.has(s)&&this._listeners.get(s).delete(t)}dispatchEvent(s){return this._listeners.has(s.type)?(this._listeners.get(s.type).forEach(t=>t.call(this,s)),!s.defaultPrevented):!0}};var Jt=class{constructor(s){if(this._drawCtx=null,this._renderQ=[],this._flushPromise=null,this._fbWidth=0,this._fbHeight=0,this._prevDrawStyle="",V(">> Display.constructor"),this._target=s,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d"),this._viewportLoc={x:0,y:0,w:this._target.width,h:this._target.height},this._backbuffer=document.createElement("canvas"),this._drawCtx=this._backbuffer.getContext("2d"),this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},V("User Agent: "+navigator.userAgent),V("<< Display.constructor"),this._scale=1,this._clipViewport=!1}get scale(){return this._scale}set scale(s){this._rescale(s)}get clipViewport(){return this._clipViewport}set clipViewport(s){this._clipViewport=s;let t=this._viewportLoc;this.viewportChangeSize(t.w,t.h),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}viewportChangePos(s,t){let n=this._viewportLoc;s=Math.floor(s),t=Math.floor(t),this._clipViewport||(s=-n.w,t=-n.h);let r=n.x+n.w-1,i=n.y+n.h-1;s<0&&n.x+s<0&&(s=-n.x),r+s>=this._fbWidth&&(s-=r+s-this._fbWidth+1),n.y+t<0&&(t=-n.y),i+t>=this._fbHeight&&(t-=i+t-this._fbHeight+1),!(s===0&&t===0)&&(V("viewportChange deltaX: "+s+", deltaY: "+t),n.x+=s,n.y+=t,this._damage(n.x,n.y,n.w,n.h),this.flip())}viewportChangeSize(s,t){(!this._clipViewport||typeof s>"u"||typeof t>"u")&&(V("Setting viewport to full display region"),s=this._fbWidth,t=this._fbHeight),s=Math.floor(s),t=Math.floor(t),s>this._fbWidth&&(s=this._fbWidth),t>this._fbHeight&&(t=this._fbHeight);let n=this._viewportLoc;if(n.w!==s||n.h!==t){n.w=s,n.h=t;let r=this._target;r.width=s,r.height=t,this.viewportChangePos(0,0),this._damage(n.x,n.y,n.w,n.h),this.flip(),this._rescale(this._scale)}}absX(s){return this._scale===0?0:Zt(s/this._scale+this._viewportLoc.x)}absY(s){return this._scale===0?0:Zt(s/this._scale+this._viewportLoc.y)}resize(s,t){this._prevDrawStyle="",this._fbWidth=s,this._fbHeight=t;let n=this._backbuffer;if(n.width!==s||n.height!==t){let i=null;n.width>0&&n.height>0&&(i=this._drawCtx.getImageData(0,0,n.width,n.height)),n.width!==s&&(n.width=s),n.height!==t&&(n.height=t),i&&this._drawCtx.putImageData(i,0,0)}let r=this._viewportLoc;this.viewportChangeSize(r.w,r.h),this.viewportChangePos(0,0)}getImageData(){return this._drawCtx.getImageData(0,0,this.width,this.height)}toDataURL(s,t){return this._backbuffer.toDataURL(s,t)}toBlob(s,t,n){return this._backbuffer.toBlob(s,t,n)}_damage(s,t,n,r){s<this._damageBounds.left&&(this._damageBounds.left=s),t<this._damageBounds.top&&(this._damageBounds.top=t),s+n>this._damageBounds.right&&(this._damageBounds.right=s+n),t+r>this._damageBounds.bottom&&(this._damageBounds.bottom=t+r)}flip(s){if(this._renderQ.length!==0&&!s)this._renderQPush({type:"flip"});else{let t=this._damageBounds.left,n=this._damageBounds.top,r=this._damageBounds.right-t,i=this._damageBounds.bottom-n,a=t-this._viewportLoc.x,o=n-this._viewportLoc.y;a<0&&(r+=a,t-=a,a=0),o<0&&(i+=o,n-=o,o=0),a+r>this._viewportLoc.w&&(r=this._viewportLoc.w-a),o+i>this._viewportLoc.h&&(i=this._viewportLoc.h-o),r>0&&i>0&&this._targetCtx.drawImage(this._backbuffer,t,n,r,i,a,o,r,i),this._damageBounds.left=this._damageBounds.top=65535,this._damageBounds.right=this._damageBounds.bottom=0}}pending(){return this._renderQ.length>0}flush(){return this._renderQ.length===0?Promise.resolve():(this._flushPromise===null&&(this._flushPromise=new Promise(s=>{this._flushResolve=s})),this._flushPromise)}fillRect(s,t,n,r,i,a){this._renderQ.length!==0&&!a?this._renderQPush({type:"fill",x:s,y:t,width:n,height:r,color:i}):(this._setFillColor(i),this._drawCtx.fillRect(s,t,n,r),this._damage(s,t,n,r))}copyImage(s,t,n,r,i,a,o){this._renderQ.length!==0&&!o?this._renderQPush({type:"copy",oldX:s,oldY:t,x:n,y:r,width:i,height:a}):(this._drawCtx.mozImageSmoothingEnabled=!1,this._drawCtx.webkitImageSmoothingEnabled=!1,this._drawCtx.msImageSmoothingEnabled=!1,this._drawCtx.imageSmoothingEnabled=!1,this._drawCtx.drawImage(this._backbuffer,s,t,i,a,n,r,i,a),this._damage(n,r,i,a))}imageRect(s,t,n,r,i,a){if(n===0||r===0)return;let o=new Image;o.src="data: "+i+";base64,"+Ct.encode(a),this._renderQPush({type:"img",img:o,x:s,y:t,width:n,height:r})}videoFrame(s,t,n,r,i){this._renderQPush({type:"frame",frame:i,x:s,y:t,width:n,height:r})}blitImage(s,t,n,r,i,a,o){if(this._renderQ.length!==0&&!o){let u=new Uint8Array(n*r*4);u.set(new Uint8Array(i.buffer,0,u.length)),this._renderQPush({type:"blit",data:u,x:s,y:t,width:n,height:r})}else{let u=new Uint8ClampedArray(i.buffer,i.byteOffset+a,n*r*4),l=new ImageData(u,n,r);this._drawCtx.putImageData(l,s,t),this._damage(s,t,n,r)}}drawImage(s,...t){if(this._drawCtx.drawImage(s,...t),t.length<=4){let[n,r]=t;this._damage(n,r,s.width,s.height)}else{let[,,n,r,i,a]=t;this._damage(i,a,n,r)}}autoscale(s,t){let n;if(s===0||t===0)n=0;else{let r=this._viewportLoc,i=s/t;r.w/r.h>=i?n=s/r.w:n=t/r.h}this._rescale(n)}_rescale(s){this._scale=s;let t=this._viewportLoc,n=s*t.w+"px",r=s*t.h+"px";(this._target.style.width!==n||this._target.style.height!==r)&&(this._target.style.width=n,this._target.style.height=r)}_setFillColor(s){let t="rgb("+s[0]+","+s[1]+","+s[2]+")";t!==this._prevDrawStyle&&(this._drawCtx.fillStyle=t,this._prevDrawStyle=t)}_renderQPush(s){this._renderQ.push(s),this._renderQ.length===1&&this._scanRenderQ()}_resumeRenderQ(){this.removeEventListener("load",this._noVNCDisplay._resumeRenderQ),this._noVNCDisplay._scanRenderQ()}_scanRenderQ(){let s=!0;for(;s&&this._renderQ.length>0;){let t=this._renderQ[0];switch(t.type){case"flip":this.flip(!0);break;case"copy":this.copyImage(t.oldX,t.oldY,t.x,t.y,t.width,t.height,!0);break;case"fill":this.fillRect(t.x,t.y,t.width,t.height,t.color,!0);break;case"blit":this.blitImage(t.x,t.y,t.width,t.height,t.data,0,!0);break;case"img":if(t.img.complete){if(t.img.width!==t.width||t.img.height!==t.height){ne("Decoded image has incorrect dimensions. Got "+t.img.width+"x"+t.img.height+". Expected "+t.width+"x"+t.height+".");return}this.drawImage(t.img,t.x,t.y),t.img.src=""}else t.img._noVNCDisplay=this,t.img.addEventListener("load",this._resumeRenderQ),s=!1;break;case"frame":if(t.frame.ready){let n=t.frame.frame;(n.codedWidth<t.width||n.codedHeight<t.height)&&he("Decoded video frame does not cover its full rectangle area. Expecting at least "+t.width+"x"+t.height+" but got "+n.codedWidth+"x"+n.codedHeight);let r=0,i=0,a=t.width,o=t.height,u=t.x,l=t.y,d=a,h=o;this.drawImage(n,r,i,a,o,u,l,d,h),n.close()}else{let n=this;t.frame.promise.then(()=>{n._scanRenderQ()}),s=!1}break}s&&this._renderQ.shift()}this._renderQ.length===0&&this._flushPromise!==null&&(this._flushResolve(),this._flushPromise=null,this._flushResolve=null)}};function Ae(e,s,t,n,r){if(s.subarray&&e.subarray){e.set(s.subarray(t,t+n),r);return}for(var i=0;i<n;i++)e[r+i]=s[t+i]}var Ft=Uint8Array,ve=Uint16Array,es=Int32Array;function Kt(e,s,t,n){for(var r=e&65535|0,i=e>>>16&65535|0,a=0;t!==0;){a=t>2e3?2e3:t,t-=a;do r=r+s[n++]|0,i=i+r|0;while(--a);r%=65521,i%=65521}return r|i<<16|0}function de(){for(var e,s=[],t=0;t<256;t++){e=t;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;s[t]=e}return s}var bp=de();var tn=30,rd=12;function cr(e,s){var t,n,r,i,a,o,u,l,d,h,f,p,g,w,v,y,k,I,R,L,M,D,U,O,P;t=e.state,n=e.next_in,O=e.input,r=n+(e.avail_in-5),i=e.next_out,P=e.output,a=i-(s-e.avail_out),o=i+(e.avail_out-257),u=t.dmax,l=t.wsize,d=t.whave,h=t.wnext,f=t.window,p=t.hold,g=t.bits,w=t.lencode,v=t.distcode,y=(1<<t.lenbits)-1,k=(1<<t.distbits)-1;e:do{g<15&&(p+=O[n++]<<g,g+=8,p+=O[n++]<<g,g+=8),I=w[p&y];t:for(;;){if(R=I>>>24,p>>>=R,g-=R,R=I>>>16&255,R===0)P[i++]=I&65535;else if(R&16){L=I&65535,R&=15,R&&(g<R&&(p+=O[n++]<<g,g+=8),L+=p&(1<<R)-1,p>>>=R,g-=R),g<15&&(p+=O[n++]<<g,g+=8,p+=O[n++]<<g,g+=8),I=v[p&k];s:for(;;){if(R=I>>>24,p>>>=R,g-=R,R=I>>>16&255,R&16){if(M=I&65535,R&=15,g<R&&(p+=O[n++]<<g,g+=8,g<R&&(p+=O[n++]<<g,g+=8)),M+=p&(1<<R)-1,M>u){e.msg="invalid distance too far back",t.mode=tn;break e}if(p>>>=R,g-=R,R=i-a,M>R){if(R=M-R,R>d&&t.sane){e.msg="invalid distance too far back",t.mode=tn;break e}if(D=0,U=f,h===0){if(D+=l-R,R<L){L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}}else if(h<R){if(D+=l+h-R,R-=h,R<L){L-=R;do P[i++]=f[D++];while(--R);if(D=0,h<L){R=h,L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}}}else if(D+=h-R,R<L){L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}for(;L>2;)P[i++]=U[D++],P[i++]=U[D++],P[i++]=U[D++],L-=3;L&&(P[i++]=U[D++],L>1&&(P[i++]=U[D++]))}else{D=i-M;do P[i++]=P[D++],P[i++]=P[D++],P[i++]=P[D++],L-=3;while(L>2);L&&(P[i++]=P[D++],L>1&&(P[i++]=P[D++]))}}else if((R&64)===0){I=v[(I&65535)+(p&(1<<R)-1)];continue s}else{e.msg="invalid distance code",t.mode=tn;break e}break}}else if((R&64)===0){I=w[(I&65535)+(p&(1<<R)-1)];continue t}else if(R&32){t.mode=rd;break e}else{e.msg="invalid literal/length code",t.mode=tn;break e}break}}while(n<r&&i<o);L=g>>3,n-=L,g-=L<<3,p&=(1<<g)-1,e.next_in=n,e.next_out=i,e.avail_in=n<r?5+(r-n):5-(n-r),e.avail_out=i<o?257+(o-i):257-(i-o),t.hold=p,t.bits=g}var Rt=15,zi=852,$i=592,Vi=0,dr=1,Gi=2,id=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],ad=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],od=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ld=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function dt(e,s,t,n,r,i,a,o){var u=o.bits,l=0,d=0,h=0,f=0,p=0,g=0,w=0,v=0,y=0,k=0,I,R,L,M,D,U=null,O=0,P,G=new ve(Rt+1),Y=new ve(Rt+1),se=null,le=0,j,Q,Z;for(l=0;l<=Rt;l++)G[l]=0;for(d=0;d<n;d++)G[s[t+d]]++;for(p=u,f=Rt;f>=1&&G[f]===0;f--);if(p>f&&(p=f),f===0)return r[i++]=1<<24|64<<16|0,r[i++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<f&&G[h]===0;h++);for(p<h&&(p=h),v=1,l=1;l<=Rt;l++)if(v<<=1,v-=G[l],v<0)return-1;if(v>0&&(e===Vi||f!==1))return-1;for(Y[1]=0,l=1;l<Rt;l++)Y[l+1]=Y[l]+G[l];for(d=0;d<n;d++)s[t+d]!==0&&(a[Y[s[t+d]]++]=d);if(e===Vi?(U=se=a,P=19):e===dr?(U=id,O-=257,se=ad,le-=257,P=256):(U=od,se=ld,P=-1),k=0,d=0,l=h,D=i,g=p,w=0,L=-1,y=1<<p,M=y-1,e===dr&&y>zi||e===Gi&&y>$i)return 1;for(;;){j=l-w,a[d]<P?(Q=0,Z=a[d]):a[d]>P?(Q=se[le+a[d]],Z=U[O+a[d]]):(Q=96,Z=0),I=1<<l-w,R=1<<g,h=R;do R-=I,r[D+(k>>w)+R]=j<<24|Q<<16|Z|0;while(R!==0);for(I=1<<l-1;k&I;)I>>=1;if(I!==0?(k&=I-1,k+=I):k=0,d++,--G[l]===0){if(l===f)break;l=s[t+a[d]]}if(l>p&&(k&M)!==L){for(w===0&&(w=p),D+=h,g=l-w,v=1<<g;g+w<f&&(v-=G[g+w],!(v<=0));)g++,v<<=1;if(y+=1<<g,e===dr&&y>zi||e===Gi&&y>$i)return 1;L=k&M,r[L]=p<<24|g<<16|D-i|0}}return k!==0&&(r[D+k]=l-w<<24|64<<16|0),o.bits=p,0}var cd=0,wa=1,ka=2,Wi=4,dd=5,sn=6,an=0,ud=1,hd=2,ut=-2,fd=-3,ji=-4,pd=-5,qi=8,Ea=1,Zi=2,Yi=3,Ji=4,ea=5,ta=6,sa=7,na=8,ra=9,ia=10,aa=11,Me=12,ur=13,oa=14,hr=15,la=16,ca=17,da=18,ua=19,nn=20,rn=21,ha=22,fa=23,pa=24,_a=25,ma=26,fr=27,xa=28,ga=29,ae=30,ba=31,_d=32,md=852,xd=592,gd=15,bd=gd;function va(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function vd(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new ve(320),this.work=new ve(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function yd(e){var s;return!e||!e.state?ut:(s=e.state,e.total_in=e.total_out=s.total=0,e.msg="",s.wrap&&(e.adler=s.wrap&1),s.mode=Ea,s.last=0,s.havedict=0,s.dmax=32768,s.head=null,s.hold=0,s.bits=0,s.lencode=s.lendyn=new es(md),s.distcode=s.distdyn=new es(xd),s.sane=1,s.back=-1,an)}function mr(e){var s;return!e||!e.state?ut:(s=e.state,s.wsize=0,s.whave=0,s.wnext=0,yd(e))}function wd(e,s){var t,n;return!e||!e.state||(n=e.state,s<0?(t=0,s=-s):(t=(s>>4)+1,s<48&&(s&=15)),s&&(s<8||s>15))?ut:(n.window!==null&&n.wbits!==s&&(n.window=null),n.wrap=t,n.wbits=s,mr(e))}function kd(e,s){var t,n;return e?(n=new vd,e.state=n,n.window=null,t=wd(e,s),t!==an&&(e.state=null),t):ut}function Sa(e){return kd(e,bd)}var ya=!0,pr,_r;function Ed(e){if(ya){var s;for(pr=new es(512),_r=new es(32),s=0;s<144;)e.lens[s++]=8;for(;s<256;)e.lens[s++]=9;for(;s<280;)e.lens[s++]=7;for(;s<288;)e.lens[s++]=8;for(dt(wa,e.lens,0,288,pr,0,e.work,{bits:9}),s=0;s<32;)e.lens[s++]=5;dt(ka,e.lens,0,32,_r,0,e.work,{bits:5}),ya=!1}e.lencode=pr,e.lenbits=9,e.distcode=_r,e.distbits=5}function Sd(e,s,t,n){var r,i=e.state;return i.window===null&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Ft(i.wsize)),n>=i.wsize?(Ae(i.window,s,t-i.wsize,i.wsize,0),i.wnext=0,i.whave=i.wsize):(r=i.wsize-i.wnext,r>n&&(r=n),Ae(i.window,s,t-n,r,i.wnext),n-=r,n?(Ae(i.window,s,t-n,n,0),i.wnext=n,i.whave=i.wsize):(i.wnext+=r,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=r))),0}function Aa(e,s){var t,n,r,i,a,o,u,l,d,h,f,p,g,w,v=0,y,k,I,R,L,M,D,U,O=new Ft(4),P,G,Y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return ut;t=e.state,t.mode===Me&&(t.mode=ur),a=e.next_out,r=e.output,u=e.avail_out,i=e.next_in,n=e.input,o=e.avail_in,l=t.hold,d=t.bits,h=o,f=u,U=an;e:for(;;)switch(t.mode){case Ea:if(t.wrap===0){t.mode=ur;break}for(;d<16;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(t.wrap&2&&l===35615){t.check=0,O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0),l=0,d=0,t.mode=Zi;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg="incorrect header check",t.mode=ae;break}if((l&15)!==qi){e.msg="unknown compression method",t.mode=ae;break}if(l>>>=4,d-=4,D=(l&15)+8,t.wbits===0)t.wbits=D;else if(D>t.wbits){e.msg="invalid window size",t.mode=ae;break}t.dmax=1<<D,e.adler=t.check=1,t.mode=l&512?ia:Me,l=0,d=0;break;case Zi:for(;d<16;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(t.flags=l,(t.flags&255)!==qi){e.msg="unknown compression method",t.mode=ae;break}if(t.flags&57344){e.msg="unknown header flags set",t.mode=ae;break}t.head&&(t.head.text=l>>8&1),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0,t.mode=Yi;case Yi:for(;d<32;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.head&&(t.head.time=l),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,O[2]=l>>>16&255,O[3]=l>>>24&255,t.check=de(t.check,O,4,0)),l=0,d=0,t.mode=Ji;case Ji:for(;d<16;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.head&&(t.head.xflags=l&255,t.head.os=l>>8),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0,t.mode=ea;case ea:if(t.flags&1024){for(;d<16;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.length=l,t.head&&(t.head.extra_len=l),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0}else t.head&&(t.head.extra=null);t.mode=ta;case ta:if(t.flags&1024&&(p=t.length,p>o&&(p=o),p&&(t.head&&(D=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),Ae(t.head.extra,n,i,p,D)),t.flags&512&&(t.check=de(t.check,n,p,i)),o-=p,i+=p,t.length-=p),t.length))break e;t.length=0,t.mode=sa;case sa:if(t.flags&2048){if(o===0)break e;p=0;do D=n[i+p++],t.head&&D&&t.length<65536&&(t.head.name+=String.fromCharCode(D));while(D&&p<o);if(t.flags&512&&(t.check=de(t.check,n,p,i)),o-=p,i+=p,D)break e}else t.head&&(t.head.name=null);t.length=0,t.mode=na;case na:if(t.flags&4096){if(o===0)break e;p=0;do D=n[i+p++],t.head&&D&&t.length<65536&&(t.head.comment+=String.fromCharCode(D));while(D&&p<o);if(t.flags&512&&(t.check=de(t.check,n,p,i)),o-=p,i+=p,D)break e}else t.head&&(t.head.comment=null);t.mode=ra;case ra:if(t.flags&512){for(;d<16;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(l!==(t.check&65535)){e.msg="header crc mismatch",t.mode=ae;break}l=0,d=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=Me;break;case ia:for(;d<32;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}e.adler=t.check=va(l),l=0,d=0,t.mode=aa;case aa:if(t.havedict===0)return e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,hd;e.adler=t.check=1,t.mode=Me;case Me:if(s===dd||s===sn)break e;case ur:if(t.last){l>>>=d&7,d-=d&7,t.mode=fr;break}for(;d<3;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}switch(t.last=l&1,l>>>=1,d-=1,l&3){case 0:t.mode=oa;break;case 1:if(Ed(t),t.mode=nn,s===sn){l>>>=2,d-=2;break e}break;case 2:t.mode=ca;break;case 3:e.msg="invalid block type",t.mode=ae}l>>>=2,d-=2;break;case oa:for(l>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if((l&65535)!==(l>>>16^65535)){e.msg="invalid stored block lengths",t.mode=ae;break}if(t.length=l&65535,l=0,d=0,t.mode=hr,s===sn)break e;case hr:t.mode=la;case la:if(p=t.length,p){if(p>o&&(p=o),p>u&&(p=u),p===0)break e;Ae(r,n,i,p,a),o-=p,i+=p,u-=p,a+=p,t.length-=p;break}t.mode=Me;break;case ca:for(;d<14;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(t.nlen=(l&31)+257,l>>>=5,d-=5,t.ndist=(l&31)+1,l>>>=5,d-=5,t.ncode=(l&15)+4,l>>>=4,d-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=ae;break}t.have=0,t.mode=da;case da:for(;t.have<t.ncode;){for(;d<3;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.lens[Y[t.have++]]=l&7,l>>>=3,d-=3}for(;t.have<19;)t.lens[Y[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,P={bits:t.lenbits},U=dt(cd,t.lens,0,19,t.lencode,0,t.work,P),t.lenbits=P.bits,U){e.msg="invalid code lengths set",t.mode=ae;break}t.have=0,t.mode=ua;case ua:for(;t.have<t.nlen+t.ndist;){for(;v=t.lencode[l&(1<<t.lenbits)-1],y=v>>>24,k=v>>>16&255,I=v&65535,!(y<=d);){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(I<16)l>>>=y,d-=y,t.lens[t.have++]=I;else{if(I===16){for(G=y+2;d<G;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(l>>>=y,d-=y,t.have===0){e.msg="invalid bit length repeat",t.mode=ae;break}D=t.lens[t.have-1],p=3+(l&3),l>>>=2,d-=2}else if(I===17){for(G=y+3;d<G;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}l>>>=y,d-=y,D=0,p=3+(l&7),l>>>=3,d-=3}else{for(G=y+7;d<G;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}l>>>=y,d-=y,D=0,p=11+(l&127),l>>>=7,d-=7}if(t.have+p>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=ae;break}for(;p--;)t.lens[t.have++]=D}}if(t.mode===ae)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=ae;break}if(t.lenbits=9,P={bits:t.lenbits},U=dt(wa,t.lens,0,t.nlen,t.lencode,0,t.work,P),t.lenbits=P.bits,U){e.msg="invalid literal/lengths set",t.mode=ae;break}if(t.distbits=6,t.distcode=t.distdyn,P={bits:t.distbits},U=dt(ka,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,P),t.distbits=P.bits,U){e.msg="invalid distances set",t.mode=ae;break}if(t.mode=nn,s===sn)break e;case nn:t.mode=rn;case rn:if(o>=6&&u>=258){e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,cr(e,f),a=e.next_out,r=e.output,u=e.avail_out,i=e.next_in,n=e.input,o=e.avail_in,l=t.hold,d=t.bits,t.mode===Me&&(t.back=-1);break}for(t.back=0;v=t.lencode[l&(1<<t.lenbits)-1],y=v>>>24,k=v>>>16&255,I=v&65535,!(y<=d);){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(k&&(k&240)===0){for(R=y,L=k,M=I;v=t.lencode[M+((l&(1<<R+L)-1)>>R)],y=v>>>24,k=v>>>16&255,I=v&65535,!(R+y<=d);){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}l>>>=R,d-=R,t.back+=R}if(l>>>=y,d-=y,t.back+=y,t.length=I,k===0){t.mode=ma;break}if(k&32){t.back=-1,t.mode=Me;break}if(k&64){e.msg="invalid literal/length code",t.mode=ae;break}t.extra=k&15,t.mode=ha;case ha:if(t.extra){for(G=t.extra;d<G;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.length+=l&(1<<t.extra)-1,l>>>=t.extra,d-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=fa;case fa:for(;v=t.distcode[l&(1<<t.distbits)-1],y=v>>>24,k=v>>>16&255,I=v&65535,!(y<=d);){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if((k&240)===0){for(R=y,L=k,M=I;v=t.distcode[M+((l&(1<<R+L)-1)>>R)],y=v>>>24,k=v>>>16&255,I=v&65535,!(R+y<=d);){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}l>>>=R,d-=R,t.back+=R}if(l>>>=y,d-=y,t.back+=y,k&64){e.msg="invalid distance code",t.mode=ae;break}t.offset=I,t.extra=k&15,t.mode=pa;case pa:if(t.extra){for(G=t.extra;d<G;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}t.offset+=l&(1<<t.extra)-1,l>>>=t.extra,d-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=ae;break}t.mode=_a;case _a:if(u===0)break e;if(p=f-u,t.offset>p){if(p=t.offset-p,p>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=ae;break}p>t.wnext?(p-=t.wnext,g=t.wsize-p):g=t.wnext-p,p>t.length&&(p=t.length),w=t.window}else w=r,g=a-t.offset,p=t.length;p>u&&(p=u),u-=p,t.length-=p;do r[a++]=w[g++];while(--p);t.length===0&&(t.mode=rn);break;case ma:if(u===0)break e;r[a++]=t.length,u--,t.mode=rn;break;case fr:if(t.wrap){for(;d<32;){if(o===0)break e;o--,l|=n[i++]<<d,d+=8}if(f-=u,e.total_out+=f,t.total+=f,f&&(e.adler=t.check=t.flags?de(t.check,r,f,a-f):Kt(t.check,r,f,a-f)),f=u,(t.flags?l:va(l))!==t.check){e.msg="incorrect data check",t.mode=ae;break}l=0,d=0}t.mode=xa;case xa:if(t.wrap&&t.flags){for(;d<32;){if(o===0)break e;o--,l+=n[i++]<<d,d+=8}if(l!==(t.total&4294967295)){e.msg="incorrect length check",t.mode=ae;break}l=0,d=0}t.mode=ga;case ga:U=ud;break e;case ae:U=fd;break e;case ba:return ji;case _d:default:return ut}return e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,(t.wsize||f!==e.avail_out&&t.mode<ae&&(t.mode<fr||s!==Wi))&&Sd(e,e.output,e.next_out,f-e.avail_out)?(t.mode=ba,ji):(h-=e.avail_in,f-=e.avail_out,e.total_in+=h,e.total_out+=f,t.total+=f,t.wrap&&f&&(e.adler=t.check=t.flags?de(t.check,r,f,e.next_out-f):Kt(t.check,r,f,e.next_out-f)),e.data_type=t.bits+(t.last?64:0)+(t.mode===Me?128:0)+(t.mode===nn||t.mode===hr?256:0),(h===0&&f===0||s===Wi)&&U===an&&(U=pd),U)}function ts(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Xe=class{constructor(){this.strm=new ts,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),Sa(this.strm)}setInput(s){s?(this.strm.input=s,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(s){if(s>this.chunkSize&&(this.chunkSize=s,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=s,Aa(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=s)throw new Error("Incomplete zlib block");return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){mr(this.strm)}};var Ad=4,Ca=0,Ta=1,Cd=2;function It(e){for(var s=e.length;--s>=0;)e[s]=0}var Td=0,La=1,Xd=2,Nd=3,Fd=258,kr=29,os=256,ns=os+1+kr,Lt=30,Er=19,Ia=2*ns+1,ht=15,xr=16,Kd=7,Sr=256,Da=16,Pa=17,Ma=18,yr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],on=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Rd=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Ba=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Ld=512,Be=new Array((ns+2)*2);It(Be);var ss=new Array(Lt*2);It(ss);var rs=new Array(Ld);It(rs);var is=new Array(Fd-Nd+1);It(is);var Ar=new Array(kr);It(Ar);var ln=new Array(Lt);It(ln);function gr(e,s,t,n,r){this.static_tree=e,this.extra_bits=s,this.extra_base=t,this.elems=n,this.max_length=r,this.has_stree=e&&e.length}var Oa,Ha,Qa;function br(e,s){this.dyn_tree=e,this.max_code=0,this.stat_desc=s}function Ua(e){return e<256?rs[e]:rs[256+(e>>>7)]}function as(e,s){e.pending_buf[e.pending++]=s&255,e.pending_buf[e.pending++]=s>>>8&255}function we(e,s,t){e.bi_valid>xr-t?(e.bi_buf|=s<<e.bi_valid&65535,as(e,e.bi_buf),e.bi_buf=s>>xr-e.bi_valid,e.bi_valid+=t-xr):(e.bi_buf|=s<<e.bi_valid&65535,e.bi_valid+=t)}function Fe(e,s,t){we(e,t[s*2],t[s*2+1])}function za(e,s){var t=0;do t|=e&1,e>>>=1,t<<=1;while(--s>0);return t>>>1}function Id(e){e.bi_valid===16?(as(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function Dd(e,s){var t=s.dyn_tree,n=s.max_code,r=s.stat_desc.static_tree,i=s.stat_desc.has_stree,a=s.stat_desc.extra_bits,o=s.stat_desc.extra_base,u=s.stat_desc.max_length,l,d,h,f,p,g,w=0;for(f=0;f<=ht;f++)e.bl_count[f]=0;for(t[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<Ia;l++)d=e.heap[l],f=t[t[d*2+1]*2+1]+1,f>u&&(f=u,w++),t[d*2+1]=f,!(d>n)&&(e.bl_count[f]++,p=0,d>=o&&(p=a[d-o]),g=t[d*2],e.opt_len+=g*(f+p),i&&(e.static_len+=g*(r[d*2+1]+p)));if(w!==0){do{for(f=u-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[u]--,w-=2}while(w>0);for(f=u;f!==0;f--)for(d=e.bl_count[f];d!==0;)h=e.heap[--l],!(h>n)&&(t[h*2+1]!==f&&(e.opt_len+=(f-t[h*2+1])*t[h*2],t[h*2+1]=f),d--)}}function $a(e,s,t){var n=new Array(ht+1),r=0,i,a;for(i=1;i<=ht;i++)n[i]=r=r+t[i-1]<<1;for(a=0;a<=s;a++){var o=e[a*2+1];o!==0&&(e[a*2]=za(n[o]++,o))}}function Pd(){var e,s,t,n,r,i=new Array(ht+1);for(t=0,n=0;n<kr-1;n++)for(Ar[n]=t,e=0;e<1<<yr[n];e++)is[t++]=n;for(is[t-1]=n,r=0,n=0;n<16;n++)for(ln[n]=r,e=0;e<1<<on[n];e++)rs[r++]=n;for(r>>=7;n<Lt;n++)for(ln[n]=r<<7,e=0;e<1<<on[n]-7;e++)rs[256+r++]=n;for(s=0;s<=ht;s++)i[s]=0;for(e=0;e<=143;)Be[e*2+1]=8,e++,i[8]++;for(;e<=255;)Be[e*2+1]=9,e++,i[9]++;for(;e<=279;)Be[e*2+1]=7,e++,i[7]++;for(;e<=287;)Be[e*2+1]=8,e++,i[8]++;for($a(Be,ns+1,i),e=0;e<Lt;e++)ss[e*2+1]=5,ss[e*2]=za(e,5);Oa=new gr(Be,yr,os+1,ns,ht),Ha=new gr(ss,on,0,Lt,ht),Qa=new gr(new Array(0),Rd,0,Er,Kd)}function Va(e){var s;for(s=0;s<ns;s++)e.dyn_ltree[s*2]=0;for(s=0;s<Lt;s++)e.dyn_dtree[s*2]=0;for(s=0;s<Er;s++)e.bl_tree[s*2]=0;e.dyn_ltree[Sr*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function Ga(e){e.bi_valid>8?as(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Md(e,s,t,n){Ga(e),n&&(as(e,t),as(e,~t)),Ae(e.pending_buf,e.window,s,t,e.pending),e.pending+=t}function Xa(e,s,t,n){var r=s*2,i=t*2;return e[r]<e[i]||e[r]===e[i]&&n[s]<=n[t]}function vr(e,s,t){for(var n=e.heap[t],r=t<<1;r<=e.heap_len&&(r<e.heap_len&&Xa(s,e.heap[r+1],e.heap[r],e.depth)&&r++,!Xa(s,n,e.heap[r],e.depth));)e.heap[t]=e.heap[r],t=r,r<<=1;e.heap[t]=n}function Na(e,s,t){var n,r,i=0,a,o;if(e.last_lit!==0)do n=e.pending_buf[e.d_buf+i*2]<<8|e.pending_buf[e.d_buf+i*2+1],r=e.pending_buf[e.l_buf+i],i++,n===0?Fe(e,r,s):(a=is[r],Fe(e,a+os+1,s),o=yr[a],o!==0&&(r-=Ar[a],we(e,r,o)),n--,a=Ua(n),Fe(e,a,t),o=on[a],o!==0&&(n-=ln[a],we(e,n,o)));while(i<e.last_lit);Fe(e,Sr,s)}function wr(e,s){var t=s.dyn_tree,n=s.stat_desc.static_tree,r=s.stat_desc.has_stree,i=s.stat_desc.elems,a,o,u=-1,l;for(e.heap_len=0,e.heap_max=Ia,a=0;a<i;a++)t[a*2]!==0?(e.heap[++e.heap_len]=u=a,e.depth[a]=0):t[a*2+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=u<2?++u:0,t[l*2]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=n[l*2+1]);for(s.max_code=u,a=e.heap_len>>1;a>=1;a--)vr(e,t,a);l=i;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],vr(e,t,1),o=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=o,t[l*2]=t[a*2]+t[o*2],e.depth[l]=(e.depth[a]>=e.depth[o]?e.depth[a]:e.depth[o])+1,t[a*2+1]=t[o*2+1]=l,e.heap[1]=l++,vr(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Dd(e,s),$a(t,u,e.bl_count)}function Fa(e,s,t){var n,r=-1,i,a=s[1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),s[(t+1)*2+1]=65535,n=0;n<=t;n++)i=a,a=s[(n+1)*2+1],!(++o<u&&i===a)&&(o<l?e.bl_tree[i*2]+=o:i!==0?(i!==r&&e.bl_tree[i*2]++,e.bl_tree[Da*2]++):o<=10?e.bl_tree[Pa*2]++:e.bl_tree[Ma*2]++,o=0,r=i,a===0?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function Ka(e,s,t){var n,r=-1,i,a=s[1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),n=0;n<=t;n++)if(i=a,a=s[(n+1)*2+1],!(++o<u&&i===a)){if(o<l)do Fe(e,i,e.bl_tree);while(--o!==0);else i!==0?(i!==r&&(Fe(e,i,e.bl_tree),o--),Fe(e,Da,e.bl_tree),we(e,o-3,2)):o<=10?(Fe(e,Pa,e.bl_tree),we(e,o-3,3)):(Fe(e,Ma,e.bl_tree),we(e,o-11,7));o=0,r=i,a===0?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4)}}function Bd(e){var s;for(Fa(e,e.dyn_ltree,e.l_desc.max_code),Fa(e,e.dyn_dtree,e.d_desc.max_code),wr(e,e.bl_desc),s=Er-1;s>=3&&e.bl_tree[Ba[s]*2+1]===0;s--);return e.opt_len+=3*(s+1)+5+5+4,s}function Od(e,s,t,n){var r;for(we(e,s-257,5),we(e,t-1,5),we(e,n-4,4),r=0;r<n;r++)we(e,e.bl_tree[Ba[r]*2+1],3);Ka(e,e.dyn_ltree,s-1),Ka(e,e.dyn_dtree,t-1)}function Hd(e){var s=4093624447,t;for(t=0;t<=31;t++,s>>>=1)if(s&1&&e.dyn_ltree[t*2]!==0)return Ca;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Ta;for(t=32;t<os;t++)if(e.dyn_ltree[t*2]!==0)return Ta;return Ca}var Ra=!1;function Wa(e){Ra||(Pd(),Ra=!0),e.l_desc=new br(e.dyn_ltree,Oa),e.d_desc=new br(e.dyn_dtree,Ha),e.bl_desc=new br(e.bl_tree,Qa),e.bi_buf=0,e.bi_valid=0,Va(e)}function Cr(e,s,t,n){we(e,(Td<<1)+(n?1:0),3),Md(e,s,t,!0)}function ja(e){we(e,La<<1,3),Fe(e,Sr,Be),Id(e)}function qa(e,s,t,n){var r,i,a=0;e.level>0?(e.strm.data_type===Cd&&(e.strm.data_type=Hd(e)),wr(e,e.l_desc),wr(e,e.d_desc),a=Bd(e),r=e.opt_len+3+7>>>3,i=e.static_len+3+7>>>3,i<=r&&(r=i)):r=i=t+5,t+4<=r&&s!==-1?Cr(e,s,t,n):e.strategy===Ad||i===r?(we(e,(La<<1)+(n?1:0),3),Na(e,Be,ss)):(we(e,(Xd<<1)+(n?1:0),3),Od(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Na(e,e.dyn_ltree,e.dyn_dtree)),Va(e),n&&Ga(e)}function Oe(e,s,t){return e.pending_buf[e.d_buf+e.last_lit*2]=s>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=s&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,s===0?e.dyn_ltree[t*2]++:(e.matches++,s--,e.dyn_ltree[(is[t]+os+1)*2]++,e.dyn_dtree[Ua(s)*2]++),e.last_lit===e.lit_bufsize-1}var Za={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};var mt=0,Ud=1,un=3,ze=4,Ya=5,ft=0,Ja=1,Bt=-2;var Tr=-5,Lr=-1,zd=1,cn=2,$d=3,Vd=4,Gd=0,Wd=2,hn=8,jd=9,qd=15,Zd=8,Yd=29,Jd=256,Rr=Jd+1+Yd,eu=30,tu=19,su=2*Rr+1,nu=15,ee=3,Ue=258,Ne=Ue+ee+1,ru=32,so=42,eo=69,Xr=73,Nr=91,Fr=103,cs=113,dn=666,fe=1,ds=2,_t=3,Ot=4,iu=3;function Pt(e,s){return e.msg=Za[s],s}function to(e){return(e<<1)-(e>4?9:0)}function pt(e){for(var s=e.length;--s>=0;)e[s]=0}function Qe(e){var s=e.state,t=s.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(Ae(e.output,s.pending_buf,s.pending_out,t,e.next_out),e.next_out+=t,s.pending_out+=t,e.total_out+=t,e.avail_out-=t,s.pending-=t,s.pending===0&&(s.pending_out=0))}function pe(e,s){qa(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,s),e.block_start=e.strstart,Qe(e.strm)}function J(e,s){e.pending_buf[e.pending++]=s}function ls(e,s){e.pending_buf[e.pending++]=s>>>8&255,e.pending_buf[e.pending++]=s&255}function au(e,s,t,n){var r=e.avail_in;return r>n&&(r=n),r===0?0:(e.avail_in-=r,Ae(s,e.input,e.next_in,r,t),e.state.wrap===1?e.adler=Kt(e.adler,s,r,t):e.state.wrap===2&&(e.adler=de(e.adler,s,r,t)),e.next_in+=r,e.total_in+=r,r)}function no(e,s){var t=e.max_chain_length,n=e.strstart,r,i,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-Ne?e.strstart-(e.w_size-Ne):0,l=e.window,d=e.w_mask,h=e.prev,f=e.strstart+Ue,p=l[n+a-1],g=l[n+a];e.prev_length>=e.good_match&&(t>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=s,!(l[r+a]!==g||l[r+a-1]!==p||l[r]!==l[n]||l[++r]!==l[n+1])){n+=2,r++;do;while(l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&n<f);if(i=Ue-(f-n),n=f-Ue,i>a){if(e.match_start=s,a=i,i>=o)break;p=l[n+a-1],g=l[n+a]}}while((s=h[s&d])>u&&--t!==0);return a<=e.lookahead?a:e.lookahead}function us(e){var s=e.w_size,t,n,r,i,a;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=s+(s-Ne)){Ae(e.window,e.window,s,s,0),e.match_start-=s,e.strstart-=s,e.block_start-=s,n=e.hash_size,t=n;do r=e.head[--t],e.head[t]=r>=s?r-s:0;while(--n);n=s,t=n;do r=e.prev[--t],e.prev[t]=r>=s?r-s:0;while(--n);i+=s}if(e.strm.avail_in===0)break;if(n=au(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=ee)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+ee-1])&e.hash_mask,e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<ee)););}while(e.lookahead<Ne&&e.strm.avail_in!==0)}function ou(e,s){var t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(us(e),e.lookahead===0&&s===mt)return fe;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+t;if((e.strstart===0||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,pe(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-Ne&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,s===ze?(pe(e,!0),e.strm.avail_out===0?_t:Ot):(e.strstart>e.block_start&&(pe(e,!1),e.strm.avail_out===0),fe)}function Kr(e,s){for(var t,n;;){if(e.lookahead<Ne){if(us(e),e.lookahead<Ne&&s===mt)return fe;if(e.lookahead===0)break}if(t=0,e.lookahead>=ee&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-Ne&&(e.match_length=no(e,t)),e.match_length>=ee)if(n=Oe(e,e.strstart-e.match_start,e.match_length-ee),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ee){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=Oe(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=e.strstart<ee-1?e.strstart:ee-1,s===ze?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:ds}function Dt(e,s){for(var t,n,r;;){if(e.lookahead<Ne){if(us(e),e.lookahead<Ne&&s===mt)return fe;if(e.lookahead===0)break}if(t=0,e.lookahead>=ee&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=ee-1,t!==0&&e.prev_length<e.max_lazy_match&&e.strstart-t<=e.w_size-Ne&&(e.match_length=no(e,t),e.match_length<=5&&(e.strategy===zd||e.match_length===ee&&e.strstart-e.match_start>4096)&&(e.match_length=ee-1)),e.prev_length>=ee&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-ee,n=Oe(e,e.strstart-1-e.prev_match,e.prev_length-ee),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=ee-1,e.strstart++,n&&(pe(e,!1),e.strm.avail_out===0))return fe}else if(e.match_available){if(n=Oe(e,0,e.window[e.strstart-1]),n&&pe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return fe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=Oe(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<ee-1?e.strstart:ee-1,s===ze?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:ds}function lu(e,s){for(var t,n,r,i,a=e.window;;){if(e.lookahead<=Ue){if(us(e),e.lookahead<=Ue&&s===mt)return fe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ee&&e.strstart>0&&(r=e.strstart-1,n=a[r],n===a[++r]&&n===a[++r]&&n===a[++r])){i=e.strstart+Ue;do;while(n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&r<i);e.match_length=Ue-(i-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ee?(t=Oe(e,1,e.match_length-ee),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=Oe(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,s===ze?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:ds}function cu(e,s){for(var t;;){if(e.lookahead===0&&(us(e),e.lookahead===0)){if(s===mt)return fe;break}if(e.match_length=0,t=Oe(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,s===ze?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:ds}function Ke(e,s,t,n,r){this.good_length=e,this.max_lazy=s,this.nice_length=t,this.max_chain=n,this.func=r}var Mt;Mt=[new Ke(0,0,0,0,ou),new Ke(4,4,8,4,Kr),new Ke(4,5,16,8,Kr),new Ke(4,6,32,32,Kr),new Ke(4,4,16,16,Dt),new Ke(8,16,32,32,Dt),new Ke(8,16,128,128,Dt),new Ke(8,32,128,256,Dt),new Ke(32,128,258,1024,Dt),new Ke(32,258,258,4096,Dt)];function du(e){e.window_size=2*e.w_size,pt(e.head),e.max_lazy_match=Mt[e.level].max_lazy,e.good_match=Mt[e.level].good_length,e.nice_match=Mt[e.level].nice_length,e.max_chain_length=Mt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ee-1,e.match_available=0,e.ins_h=0}function uu(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=hn,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new ve(su*2),this.dyn_dtree=new ve((2*eu+1)*2),this.bl_tree=new ve((2*tu+1)*2),pt(this.dyn_ltree),pt(this.dyn_dtree),pt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new ve(nu+1),this.heap=new ve(2*Rr+1),pt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new ve(2*Rr+1),pt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function hu(e){var s;return!e||!e.state?Pt(e,Bt):(e.total_in=e.total_out=0,e.data_type=Wd,s=e.state,s.pending=0,s.pending_out=0,s.wrap<0&&(s.wrap=-s.wrap),s.status=s.wrap?so:cs,e.adler=s.wrap===2?0:1,s.last_flush=mt,Wa(s),ft)}function fu(e){var s=hu(e);return s===ft&&du(e.state),s}function pu(e,s,t,n,r,i){if(!e)return Bt;var a=1;if(s===Lr&&(s=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),r<1||r>jd||t!==hn||n<8||n>15||s<0||s>9||i<0||i>Vd)return Pt(e,Bt);n===8&&(n=9);var o=new uu;return e.state=o,o.strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+ee-1)/ee),o.window=new Ft(o.w_size*2),o.head=new ve(o.hash_size),o.prev=new ve(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Ft(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=s,o.strategy=i,o.method=t,fu(e)}function ro(e,s){return pu(e,s,hn,qd,Zd,Gd)}function Ir(e,s){var t,n,r,i;if(!e||!e.state||s>Ya||s<0)return e?Pt(e,Bt):Bt;if(n=e.state,!e.output||!e.input&&e.avail_in!==0||n.status===dn&&s!==ze)return Pt(e,e.avail_out===0?Tr:Bt);if(n.strm=e,t=n.last_flush,n.last_flush=s,n.status===so)if(n.wrap===2)e.adler=0,J(n,31),J(n,139),J(n,8),n.gzhead?(J(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),J(n,n.gzhead.time&255),J(n,n.gzhead.time>>8&255),J(n,n.gzhead.time>>16&255),J(n,n.gzhead.time>>24&255),J(n,n.level===9?2:n.strategy>=cn||n.level<2?4:0),J(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(J(n,n.gzhead.extra.length&255),J(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=de(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=eo):(J(n,0),J(n,0),J(n,0),J(n,0),J(n,0),J(n,n.level===9?2:n.strategy>=cn||n.level<2?4:0),J(n,iu),n.status=cs);else{var a=hn+(n.w_bits-8<<4)<<8,o=-1;n.strategy>=cn||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,a|=o<<6,n.strstart!==0&&(a|=ru),a+=31-a%31,n.status=cs,ls(n,a),n.strstart!==0&&(ls(n,e.adler>>>16),ls(n,e.adler&65535)),e.adler=1}if(n.status===eo)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),Qe(e),r=n.pending,n.pending===n.pending_buf_size));)J(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=Xr)}else n.status=Xr;if(n.status===Xr)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),Qe(e),r=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindex<n.gzhead.name.length?i=n.gzhead.name.charCodeAt(n.gzindex++)&255:i=0,J(n,i)}while(i!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),i===0&&(n.gzindex=0,n.status=Nr)}else n.status=Nr;if(n.status===Nr)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),Qe(e),r=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindex<n.gzhead.comment.length?i=n.gzhead.comment.charCodeAt(n.gzindex++)&255:i=0,J(n,i)}while(i!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=de(e.adler,n.pending_buf,n.pending-r,r)),i===0&&(n.status=Fr)}else n.status=Fr;if(n.status===Fr&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Qe(e),n.pending+2<=n.pending_buf_size&&(J(n,e.adler&255),J(n,e.adler>>8&255),e.adler=0,n.status=cs)):n.status=cs),n.pending!==0){if(Qe(e),e.avail_out===0)return n.last_flush=-1,ft}else if(e.avail_in===0&&to(s)<=to(t)&&s!==ze)return Pt(e,Tr);if(n.status===dn&&e.avail_in!==0)return Pt(e,Tr);if(e.avail_in!==0||n.lookahead!==0||s!==mt&&n.status!==dn){var u=n.strategy===cn?cu(n,s):n.strategy===$d?lu(n,s):Mt[n.level].func(n,s);if((u===_t||u===Ot)&&(n.status=dn),u===fe||u===_t)return e.avail_out===0&&(n.last_flush=-1),ft;if(u===ds&&(s===Ud?ja(n):s!==Ya&&(Cr(n,0,0,!1),s===un&&(pt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Qe(e),e.avail_out===0))return n.last_flush=-1,ft}return s!==ze?ft:n.wrap<=0?Ja:(n.wrap===2?(J(n,e.adler&255),J(n,e.adler>>8&255),J(n,e.adler>>16&255),J(n,e.adler>>24&255),J(n,e.total_in&255),J(n,e.total_in>>8&255),J(n,e.total_in>>16&255),J(n,e.total_in>>24&255)):(ls(n,e.adler>>>16),ls(n,e.adler&65535)),Qe(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ft:Ja)}var hs=class{constructor(){this.strm=new ts,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),ro(this.strm,Lr)}deflate(s){this.strm.input=s,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let t=Ir(this.strm,un),n=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(t<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let r=[n],i=n.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,t=Ir(this.strm,un),t<0)throw new Error("zlib deflate failed");let u=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);i+=u.length,r.push(u)}while(this.strm.avail_in>0);let a=new Uint8Array(i),o=0;for(let u=0;u<r.length;u++)a.set(r[u],o),o+=r[u].length;n=a}return this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0,n}};var x={XK_VoidSymbol:16777215,XK_BackSpace:65288,XK_Tab:65289,XK_Linefeed:65290,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Sys_Req:65301,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan_Mode:65315,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Touroku:65323,XK_Massyo:65324,XK_Kana_Lock:65325,XK_Kana_Shift:65326,XK_Eisu_Shift:65327,XK_Eisu_toggle:65328,XK_Kanji_Bangou:65335,XK_Zen_Koho:65341,XK_Mae_Koho:65342,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Page_Up:65365,XK_Next:65366,XK_Page_Down:65366,XK_End:65367,XK_Begin:65368,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Break:65387,XK_Mode_switch:65406,XK_script_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Tab:65417,XK_KP_Enter:65421,XK_KP_F1:65425,XK_KP_F2:65426,XK_KP_F3:65427,XK_KP_F4:65428,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Page_Up:65434,XK_KP_Next:65435,XK_KP_Page_Down:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_L1:65480,XK_F12:65481,XK_L2:65481,XK_F13:65482,XK_L3:65482,XK_F14:65483,XK_L4:65483,XK_F15:65484,XK_L5:65484,XK_F16:65485,XK_L6:65485,XK_F17:65486,XK_L7:65486,XK_F18:65487,XK_L8:65487,XK_F19:65488,XK_L9:65488,XK_F20:65489,XK_L10:65489,XK_F21:65490,XK_R1:65490,XK_F22:65491,XK_R2:65491,XK_F23:65492,XK_R3:65492,XK_F24:65493,XK_R4:65493,XK_F25:65494,XK_R5:65494,XK_F26:65495,XK_R6:65495,XK_F27:65496,XK_R7:65496,XK_F28:65497,XK_R8:65497,XK_F29:65498,XK_R9:65498,XK_F30:65499,XK_R10:65499,XK_F31:65500,XK_R11:65500,XK_F32:65501,XK_R12:65501,XK_F33:65502,XK_R13:65502,XK_F34:65503,XK_R14:65503,XK_F35:65504,XK_R15:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Shift_Lock:65510,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_Hyper_L:65517,XK_Hyper_R:65518,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_exclam:33,XK_quotedbl:34,XK_numbersign:35,XK_dollar:36,XK_percent:37,XK_ampersand:38,XK_apostrophe:39,XK_quoteright:39,XK_parenleft:40,XK_parenright:41,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_colon:58,XK_semicolon:59,XK_less:60,XK_equal:61,XK_greater:62,XK_question:63,XK_at:64,XK_A:65,XK_B:66,XK_C:67,XK_D:68,XK_E:69,XK_F:70,XK_G:71,XK_H:72,XK_I:73,XK_J:74,XK_K:75,XK_L:76,XK_M:77,XK_N:78,XK_O:79,XK_P:80,XK_Q:81,XK_R:82,XK_S:83,XK_T:84,XK_U:85,XK_V:86,XK_W:87,XK_X:88,XK_Y:89,XK_Z:90,XK_bracketleft:91,XK_backslash:92,XK_bracketright:93,XK_asciicircum:94,XK_underscore:95,XK_grave:96,XK_quoteleft:96,XK_a:97,XK_b:98,XK_c:99,XK_d:100,XK_e:101,XK_f:102,XK_g:103,XK_h:104,XK_i:105,XK_j:106,XK_k:107,XK_l:108,XK_m:109,XK_n:110,XK_o:111,XK_p:112,XK_q:113,XK_r:114,XK_s:115,XK_t:116,XK_u:117,XK_v:118,XK_w:119,XK_x:120,XK_y:121,XK_z:122,XK_braceleft:123,XK_bar:124,XK_braceright:125,XK_asciitilde:126,XK_nobreakspace:160,XK_exclamdown:161,XK_cent:162,XK_sterling:163,XK_currency:164,XK_yen:165,XK_brokenbar:166,XK_section:167,XK_diaeresis:168,XK_copyright:169,XK_ordfeminine:170,XK_guillemotleft:171,XK_notsign:172,XK_hyphen:173,XK_registered:174,XK_macron:175,XK_degree:176,XK_plusminus:177,XK_twosuperior:178,XK_threesuperior:179,XK_acute:180,XK_mu:181,XK_paragraph:182,XK_periodcentered:183,XK_cedilla:184,XK_onesuperior:185,XK_masculine:186,XK_guillemotright:187,XK_onequarter:188,XK_onehalf:189,XK_threequarters:190,XK_questiondown:191,XK_Agrave:192,XK_Aacute:193,XK_Acircumflex:194,XK_Atilde:195,XK_Adiaeresis:196,XK_Aring:197,XK_AE:198,XK_Ccedilla:199,XK_Egrave:200,XK_Eacute:201,XK_Ecircumflex:202,XK_Ediaeresis:203,XK_Igrave:204,XK_Iacute:205,XK_Icircumflex:206,XK_Idiaeresis:207,XK_ETH:208,XK_Eth:208,XK_Ntilde:209,XK_Ograve:210,XK_Oacute:211,XK_Ocircumflex:212,XK_Otilde:213,XK_Odiaeresis:214,XK_multiply:215,XK_Oslash:216,XK_Ooblique:216,XK_Ugrave:217,XK_Uacute:218,XK_Ucircumflex:219,XK_Udiaeresis:220,XK_Yacute:221,XK_THORN:222,XK_Thorn:222,XK_ssharp:223,XK_agrave:224,XK_aacute:225,XK_acircumflex:226,XK_atilde:227,XK_adiaeresis:228,XK_aring:229,XK_ae:230,XK_ccedilla:231,XK_egrave:232,XK_eacute:233,XK_ecircumflex:234,XK_ediaeresis:235,XK_igrave:236,XK_iacute:237,XK_icircumflex:238,XK_idiaeresis:239,XK_eth:240,XK_ntilde:241,XK_ograve:242,XK_oacute:243,XK_ocircumflex:244,XK_otilde:245,XK_odiaeresis:246,XK_division:247,XK_oslash:248,XK_ooblique:248,XK_ugrave:249,XK_uacute:250,XK_ucircumflex:251,XK_udiaeresis:252,XK_yacute:253,XK_thorn:254,XK_ydiaeresis:255,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_ModeLock:269025025,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_KbdLightOnOff:269025028,XF86XK_KbdBrightnessUp:269025029,XF86XK_KbdBrightnessDown:269025030,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Start:269025050,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Memo:269025054,XF86XK_ToDoList:269025055,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_ContrastAdjust:269025058,XF86XK_RockerUp:269025059,XF86XK_RockerDown:269025060,XF86XK_RockerEnter:269025061,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Sleep:269025071,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_VendorHome:269025076,XF86XK_LightBulb:269025077,XF86XK_Shop:269025078,XF86XK_History:269025079,XF86XK_OpenURL:269025080,XF86XK_AddFavorite:269025081,XF86XK_HotLinks:269025082,XF86XK_BrightnessAdjust:269025083,XF86XK_Finance:269025084,XF86XK_Community:269025085,XF86XK_AudioRewind:269025086,XF86XK_BackForward:269025087,XF86XK_Launch0:269025088,XF86XK_Launch1:269025089,XF86XK_Launch2:269025090,XF86XK_Launch3:269025091,XF86XK_Launch4:269025092,XF86XK_Launch5:269025093,XF86XK_Launch6:269025094,XF86XK_Launch7:269025095,XF86XK_Launch8:269025096,XF86XK_Launch9:269025097,XF86XK_LaunchA:269025098,XF86XK_LaunchB:269025099,XF86XK_LaunchC:269025100,XF86XK_LaunchD:269025101,XF86XK_LaunchE:269025102,XF86XK_LaunchF:269025103,XF86XK_ApplicationLeft:269025104,XF86XK_ApplicationRight:269025105,XF86XK_Book:269025106,XF86XK_CD:269025107,XF86XK_Calculater:269025108,XF86XK_Clear:269025109,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Display:269025113,XF86XK_DOS:269025114,XF86XK_Documents:269025115,XF86XK_Excel:269025116,XF86XK_Explorer:269025117,XF86XK_Game:269025118,XF86XK_Go:269025119,XF86XK_iTouch:269025120,XF86XK_LogOff:269025121,XF86XK_Market:269025122,XF86XK_Meeting:269025123,XF86XK_MenuKB:269025125,XF86XK_MenuPB:269025126,XF86XK_MySites:269025127,XF86XK_New:269025128,XF86XK_News:269025129,XF86XK_OfficeHome:269025130,XF86XK_Open:269025131,XF86XK_Option:269025132,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Q:269025136,XF86XK_Reply:269025138,XF86XK_Reload:269025139,XF86XK_RotateWindows:269025140,XF86XK_RotationPB:269025141,XF86XK_RotationKB:269025142,XF86XK_Save:269025143,XF86XK_ScrollUp:269025144,XF86XK_ScrollDown:269025145,XF86XK_ScrollClick:269025146,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Support:269025150,XF86XK_TaskPane:269025151,XF86XK_Terminal:269025152,XF86XK_Tools:269025153,XF86XK_Travel:269025154,XF86XK_UserPB:269025156,XF86XK_User1KB:269025157,XF86XK_User2KB:269025158,XF86XK_Video:269025159,XF86XK_WheelButton:269025160,XF86XK_Word:269025161,XF86XK_Xfer:269025162,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_Away:269025165,XF86XK_Messenger:269025166,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Pictures:269025169,XF86XK_Music:269025170,XF86XK_Battery:269025171,XF86XK_Bluetooth:269025172,XF86XK_WLAN:269025173,XF86XK_UWB:269025174,XF86XK_AudioForward:269025175,XF86XK_AudioRepeat:269025176,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_CycleAngle:269025180,XF86XK_FrameBack:269025181,XF86XK_FrameForward:269025182,XF86XK_Time:269025183,XF86XK_Select:269025184,XF86XK_View:269025185,XF86XK_TopMenu:269025186,XF86XK_Red:269025187,XF86XK_Green:269025188,XF86XK_Yellow:269025189,XF86XK_Blue:269025190,XF86XK_Suspend:269025191,XF86XK_Hibernate:269025192,XF86XK_TouchpadToggle:269025193,XF86XK_TouchpadOn:269025200,XF86XK_TouchpadOff:269025201,XF86XK_AudioMicMute:269025202,XF86XK_Switch_VT_1:269024769,XF86XK_Switch_VT_2:269024770,XF86XK_Switch_VT_3:269024771,XF86XK_Switch_VT_4:269024772,XF86XK_Switch_VT_5:269024773,XF86XK_Switch_VT_6:269024774,XF86XK_Switch_VT_7:269024775,XF86XK_Switch_VT_8:269024776,XF86XK_Switch_VT_9:269024777,XF86XK_Switch_VT_10:269024778,XF86XK_Switch_VT_11:269024779,XF86XK_Switch_VT_12:269024780,XF86XK_Ungrab:269024800,XF86XK_ClearGrab:269024801,XF86XK_Next_VMode:269024802,XF86XK_Prev_VMode:269024803,XF86XK_LogWindowTree:269024804,XF86XK_LogGrabInfo:269024805};var _u={256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,402:2294,466:16777681,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8361:3839,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8711:2245,8728:3018,8730:2262,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8756:2240,8764:2248,8771:2249,8773:16785992,8800:2237,8801:2255,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200},io={lookup(e){if(e>=32&&e<=255)return e;let s=_u[e];return s!==void 0?s:16777216|e}};var Dr={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"};var Pr={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"};var xt={};function X(e,s){if(s===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[s,s,s,s]}function fn(e,s,t){if(s===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[s,s,t,s]}function te(e,s,t){if(s===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[s,s,s,t]}fn("Alt",x.XK_Alt_L,x.XK_Alt_R);X("AltGraph",x.XK_ISO_Level3_Shift);X("CapsLock",x.XK_Caps_Lock);fn("Control",x.XK_Control_L,x.XK_Control_R);fn("Meta",x.XK_Super_L,x.XK_Super_R);X("NumLock",x.XK_Num_Lock);X("ScrollLock",x.XK_Scroll_Lock);fn("Shift",x.XK_Shift_L,x.XK_Shift_R);te("Enter",x.XK_Return,x.XK_KP_Enter);X("Tab",x.XK_Tab);te(" ",x.XK_space,x.XK_KP_Space);te("ArrowDown",x.XK_Down,x.XK_KP_Down);te("ArrowLeft",x.XK_Left,x.XK_KP_Left);te("ArrowRight",x.XK_Right,x.XK_KP_Right);te("ArrowUp",x.XK_Up,x.XK_KP_Up);te("End",x.XK_End,x.XK_KP_End);te("Home",x.XK_Home,x.XK_KP_Home);te("PageDown",x.XK_Next,x.XK_KP_Next);te("PageUp",x.XK_Prior,x.XK_KP_Prior);X("Backspace",x.XK_BackSpace);te("Clear",x.XK_Clear,x.XK_KP_Begin);X("Copy",x.XF86XK_Copy);X("Cut",x.XF86XK_Cut);te("Delete",x.XK_Delete,x.XK_KP_Delete);te("Insert",x.XK_Insert,x.XK_KP_Insert);X("Paste",x.XF86XK_Paste);X("Redo",x.XK_Redo);X("Undo",x.XK_Undo);X("Cancel",x.XK_Cancel);X("ContextMenu",x.XK_Menu);X("Escape",x.XK_Escape);X("Execute",x.XK_Execute);X("Find",x.XK_Find);X("Help",x.XK_Help);X("Pause",x.XK_Pause);X("Select",x.XK_Select);X("ZoomIn",x.XF86XK_ZoomIn);X("ZoomOut",x.XF86XK_ZoomOut);X("BrightnessDown",x.XF86XK_MonBrightnessDown);X("BrightnessUp",x.XF86XK_MonBrightnessUp);X("Eject",x.XF86XK_Eject);X("LogOff",x.XF86XK_LogOff);X("Power",x.XF86XK_PowerOff);X("PowerOff",x.XF86XK_PowerDown);X("PrintScreen",x.XK_Print);X("Hibernate",x.XF86XK_Hibernate);X("Standby",x.XF86XK_Standby);X("WakeUp",x.XF86XK_WakeUp);X("AllCandidates",x.XK_MultipleCandidate);X("Alphanumeric",x.XK_Eisu_toggle);X("CodeInput",x.XK_Codeinput);X("Compose",x.XK_Multi_key);X("Convert",x.XK_Henkan);X("GroupFirst",x.XK_ISO_First_Group);X("GroupLast",x.XK_ISO_Last_Group);X("GroupNext",x.XK_ISO_Next_Group);X("GroupPrevious",x.XK_ISO_Prev_Group);X("NonConvert",x.XK_Muhenkan);X("PreviousCandidate",x.XK_PreviousCandidate);X("SingleCandidate",x.XK_SingleCandidate);X("HangulMode",x.XK_Hangul);X("HanjaMode",x.XK_Hangul_Hanja);X("JunjaMode",x.XK_Hangul_Jeonja);X("Eisu",x.XK_Eisu_toggle);X("Hankaku",x.XK_Hankaku);X("Hiragana",x.XK_Hiragana);X("HiraganaKatakana",x.XK_Hiragana_Katakana);X("KanaMode",x.XK_Kana_Shift);X("KanjiMode",x.XK_Kanji);X("Katakana",x.XK_Katakana);X("Romaji",x.XK_Romaji);X("Zenkaku",x.XK_Zenkaku);X("ZenkakuHankaku",x.XK_Zenkaku_Hankaku);X("F1",x.XK_F1);X("F2",x.XK_F2);X("F3",x.XK_F3);X("F4",x.XK_F4);X("F5",x.XK_F5);X("F6",x.XK_F6);X("F7",x.XK_F7);X("F8",x.XK_F8);X("F9",x.XK_F9);X("F10",x.XK_F10);X("F11",x.XK_F11);X("F12",x.XK_F12);X("F13",x.XK_F13);X("F14",x.XK_F14);X("F15",x.XK_F15);X("F16",x.XK_F16);X("F17",x.XK_F17);X("F18",x.XK_F18);X("F19",x.XK_F19);X("F20",x.XK_F20);X("F21",x.XK_F21);X("F22",x.XK_F22);X("F23",x.XK_F23);X("F24",x.XK_F24);X("F25",x.XK_F25);X("F26",x.XK_F26);X("F27",x.XK_F27);X("F28",x.XK_F28);X("F29",x.XK_F29);X("F30",x.XK_F30);X("F31",x.XK_F31);X("F32",x.XK_F32);X("F33",x.XK_F33);X("F34",x.XK_F34);X("F35",x.XK_F35);X("Close",x.XF86XK_Close);X("MailForward",x.XF86XK_MailForward);X("MailReply",x.XF86XK_Reply);X("MailSend",x.XF86XK_Send);X("MediaFastForward",x.XF86XK_AudioForward);X("MediaPause",x.XF86XK_AudioPause);X("MediaPlay",x.XF86XK_AudioPlay);X("MediaRecord",x.XF86XK_AudioRecord);X("MediaRewind",x.XF86XK_AudioRewind);X("MediaStop",x.XF86XK_AudioStop);X("MediaTrackNext",x.XF86XK_AudioNext);X("MediaTrackPrevious",x.XF86XK_AudioPrev);X("New",x.XF86XK_New);X("Open",x.XF86XK_Open);X("Print",x.XK_Print);X("Save",x.XF86XK_Save);X("SpellCheck",x.XF86XK_Spell);X("AudioVolumeDown",x.XF86XK_AudioLowerVolume);X("AudioVolumeUp",x.XF86XK_AudioRaiseVolume);X("AudioVolumeMute",x.XF86XK_AudioMute);X("MicrophoneVolumeMute",x.XF86XK_AudioMicMute);X("LaunchApplication1",x.XF86XK_MyComputer);X("LaunchApplication2",x.XF86XK_Calculator);X("LaunchCalendar",x.XF86XK_Calendar);X("LaunchMail",x.XF86XK_Mail);X("LaunchMediaPlayer",x.XF86XK_AudioMedia);X("LaunchMusicPlayer",x.XF86XK_Music);X("LaunchPhone",x.XF86XK_Phone);X("LaunchScreenSaver",x.XF86XK_ScreenSaver);X("LaunchSpreadsheet",x.XF86XK_Excel);X("LaunchWebBrowser",x.XF86XK_WWW);X("LaunchWebCam",x.XF86XK_WebCam);X("LaunchWordProcessor",x.XF86XK_Word);X("BrowserBack",x.XF86XK_Back);X("BrowserFavorites",x.XF86XK_Favorites);X("BrowserForward",x.XF86XK_Forward);X("BrowserHome",x.XF86XK_HomePage);X("BrowserRefresh",x.XF86XK_Refresh);X("BrowserSearch",x.XF86XK_Search);X("BrowserStop",x.XF86XK_Stop);X("Dimmer",x.XF86XK_BrightnessAdjust);X("MediaAudioTrack",x.XF86XK_AudioCycleTrack);X("RandomToggle",x.XF86XK_AudioRandomPlay);X("SplitScreenToggle",x.XF86XK_SplitScreen);X("Subtitle",x.XF86XK_Subtitle);X("VideoModeNext",x.XF86XK_Next_VMode);te("=",x.XK_equal,x.XK_KP_Equal);te("+",x.XK_plus,x.XK_KP_Add);te("-",x.XK_minus,x.XK_KP_Subtract);te("*",x.XK_asterisk,x.XK_KP_Multiply);te("/",x.XK_slash,x.XK_KP_Divide);te(".",x.XK_period,x.XK_KP_Decimal);te(",",x.XK_comma,x.XK_KP_Separator);te("0",x.XK_0,x.XK_KP_0);te("1",x.XK_1,x.XK_KP_1);te("2",x.XK_2,x.XK_KP_2);te("3",x.XK_3,x.XK_KP_3);te("4",x.XK_4,x.XK_KP_4);te("5",x.XK_5,x.XK_KP_5);te("6",x.XK_6,x.XK_KP_6);te("7",x.XK_7,x.XK_KP_7);te("8",x.XK_8,x.XK_KP_8);te("9",x.XK_9,x.XK_KP_9);var Mr=xt;function Ht(e){if(e.code){switch(e.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return e.code}if(e.keyCode in Dr){let s=Dr[e.keyCode];if(He()&&s==="ContextMenu"&&(s="MetaRight"),e.location===2)switch(s){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(e.location===3)switch(s){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return s}return"Unidentified"}function mu(e){if(e.key!==void 0&&e.key!=="Unidentified"){switch(e.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(e.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return e.key==="\0"&&e.code==="NumpadDecimal"?"Delete":e.key}let s=Ht(e);return s in Pr?Pr[s]:e.charCode?String.fromCharCode(e.charCode):"Unidentified"}function ao(e){let s=mu(e);if(s==="Unidentified")return null;if(s in Mr){let n=e.location;if(s==="Meta"&&n===0&&(n=2),s==="Clear"&&n===3&&Ht(e)==="NumLock"&&(n=0),(n===void 0||n>3)&&(n=0),s==="Meta"){let r=Ht(e);if(r==="AltLeft")return x.XK_Meta_L;if(r==="AltRight")return x.XK_Meta_R}if(s==="Clear"&&Ht(e)==="NumLock")return x.XK_Num_Lock;if(Tt())switch(s){case"Zenkaku":case"Hankaku":return x.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return x.XK_Romaji}return Mr[s][n]}if(s.length!==1)return null;let t=s.charCodeAt();return t?io.lookup(t):null}var fs=class{constructor(s){this._target=s||null,this._keyDownList={},this._altGrArmed=!1,this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this)},this.onkeyevent=()=>{}}_sendKeyEvent(s,t,n,r=null,i=null){if(n)this._keyDownList[t]=s;else{if(!(t in this._keyDownList))return;delete this._keyDownList[t]}V("onkeyevent "+(n?"down":"up")+", keysym: "+s,", code: "+t+", numlock: "+r+", capslock: "+i),this.onkeyevent(s,t,n,r,i)}_getKeyCode(s){let t=Ht(s);if(t!=="Unidentified")return t;if(s.keyCode&&s.keyCode!==229)return"Platform"+s.keyCode;if(s.keyIdentifier){if(s.keyIdentifier.substr(0,2)!=="U+")return s.keyIdentifier;let n=parseInt(s.keyIdentifier.substr(2),16);return"Platform"+String.fromCharCode(n).toUpperCase().charCodeAt()}return"Unidentified"}_handleKeyDown(s){let t=this._getKeyCode(s),n=ao(s),r=s.getModifierState("NumLock"),i=s.getModifierState("CapsLock");if((He()||Xt())&&(r=null),this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),t==="AltRight"&&s.timeStamp-this._altGrCtrlTime<50?n=x.XK_ISO_Level3_Shift:this._sendKeyEvent(x.XK_Control_L,"ControlLeft",!0,r,i)),t==="Unidentified"){n&&(this._sendKeyEvent(n,t,!0,r,i),this._sendKeyEvent(n,t,!1,r,i)),lt(s);return}if(He()||Xt())switch(n){case x.XK_Super_L:n=x.XK_Alt_L;break;case x.XK_Super_R:n=x.XK_Super_L;break;case x.XK_Alt_L:n=x.XK_Mode_switch;break;case x.XK_Alt_R:n=x.XK_ISO_Level3_Shift;break}if(t in this._keyDownList&&(n=this._keyDownList[t]),(He()||Xt())&&s.metaKey&&t!=="MetaLeft"&&t!=="MetaRight"){this._sendKeyEvent(n,t,!0,r,i),this._sendKeyEvent(n,t,!1,r,i),lt(s);return}if((He()||Xt())&&t==="CapsLock"){this._sendKeyEvent(x.XK_Caps_Lock,"CapsLock",!0,r,i),this._sendKeyEvent(x.XK_Caps_Lock,"CapsLock",!1,r,i),lt(s);return}let a=[x.XK_Zenkaku_Hankaku,x.XK_Eisu_toggle,x.XK_Katakana,x.XK_Hiragana,x.XK_Romaji];if(Tt()&&a.includes(n)){this._sendKeyEvent(n,t,!0,r,i),this._sendKeyEvent(n,t,!1,r,i),lt(s);return}if(lt(s),t==="ControlLeft"&&Tt()&&!("ControlLeft"in this._keyDownList)){this._altGrArmed=!0,this._altGrTimeout=setTimeout(this._interruptAltGrSequence.bind(this),100),this._altGrCtrlTime=s.timeStamp;return}this._sendKeyEvent(n,t,!0,r,i)}_handleKeyUp(s){lt(s);let t=this._getKeyCode(s);if(this._interruptAltGrSequence(),(He()||Xt())&&t==="CapsLock"){this._sendKeyEvent(x.XK_Caps_Lock,"CapsLock",!0),this._sendKeyEvent(x.XK_Caps_Lock,"CapsLock",!1);return}this._sendKeyEvent(this._keyDownList[t],t,!1),Tt()&&(t==="ShiftLeft"||t==="ShiftRight")&&("ShiftRight"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftRight,"ShiftRight",!1),"ShiftLeft"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftLeft,"ShiftLeft",!1))}_interruptAltGrSequence(){this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),this._sendKeyEvent(x.XK_Control_L,"ControlLeft",!0))}_allKeysUp(){V(">> Keyboard.allKeysUp"),this._interruptAltGrSequence();for(let s in this._keyDownList)this._sendKeyEvent(this._keyDownList[s],s,!1);V("<< Keyboard.allKeysUp")}grab(){this._target.addEventListener("keydown",this._eventHandlers.keydown),this._target.addEventListener("keyup",this._eventHandlers.keyup),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._target.removeEventListener("keydown",this._eventHandlers.keydown),this._target.removeEventListener("keyup",this._eventHandlers.keyup),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}};var ps=class{constructor(){this._target=null,this._state=127,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(s){this.detach(),this._target=s,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(s){let t;switch(s.stopPropagation(),s.preventDefault(),s.type){case"touchstart":t=this._touchStart;break;case"touchmove":t=this._touchMove;break;case"touchend":case"touchcancel":t=this._touchEnd;break}for(let n=0;n<s.changedTouches.length;n++){let r=s.changedTouches[n];t.call(this,r.identifier,r.clientX,r.clientY)}}_touchStart(s,t,n){if(this._hasDetectedGesture()||this._state===0){this._ignored.push(s);return}if(this._tracked.length>0&&Date.now()-this._tracked[0].started>250){this._state=0,this._ignored.push(s);return}if(this._waitingRelease){this._state=0,this._ignored.push(s);return}switch(this._tracked.push({id:s,started:Date.now(),active:!0,firstX:t,firstY:n,lastX:t,lastY:n,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=0}}_touchMove(s,t,n){let r=this._tracked.find(o=>o.id===s);if(r===void 0)return;r.lastX=t,r.lastY=n;let i=t-r.firstX,a=n-r.firstY;if((r.firstX!==r.lastX||r.firstY!==r.lastY)&&(r.angle=Math.atan2(a,i)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(i,a)<50)return;if(this._state&=-24,this._stopLongpressTimeout(),this._tracked.length!==1&&(this._state&=-9),this._tracked.length!==2&&(this._state&=-97),this._tracked.length===2){let o=this._tracked.find(l=>l.id!==s);if(Math.hypot(o.firstX-o.lastX,o.firstY-o.lastY)>50){let l=Math.abs(r.angle-o.angle);l=Math.abs((l+180)%360-180),l>90?this._state&=-33:this._state&=-65,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(s,t,n){if(this._ignored.indexOf(s)!==-1){this._ignored.splice(this._ignored.indexOf(s),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=127,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=0),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=-17,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>250&&(this._state=0),this._tracked.some(i=>Date.now()-i.started>1e3)&&(this._state=0);let r=this._tracked.find(i=>i.id===s);if(r.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==0)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let r=0;r<this._tracked.length;r++)this._tracked[r].active&&this._ignored.push(this._tracked[r].id);this._tracked=[],this._state=0,this._ignored.indexOf(s)!==-1&&this._ignored.splice(this._ignored.indexOf(s),1),this._ignored.length===0&&(this._state=127,this._waitingRelease=!1)}_hasDetectedGesture(){return!(this._state===0||this._state&this._state-1||this._state&7&&this._tracked.some(s=>s.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),1e3)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=16,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),50)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let s=this._getAverageMovement(),t=Math.abs(s.x),n=Math.abs(s.y),r=this._getAverageDistance(),i=Math.abs(Math.hypot(r.first.x,r.first.y)-Math.hypot(r.last.x,r.last.y));n<i&&t<i?this._state=64:this._state=32,this._pushEvent("gesturestart"),this._pushEvent("gesturemove")}_pushEvent(s){let t={type:this._stateToGesture(this._state)},n=this._getPosition(),r=n.last;switch(s==="gesturestart"&&(r=n.first),this._state){case 32:case 64:r=n.first;break}if(t.clientX=r.x,t.clientY=r.y,this._state===64){let a=this._getAverageDistance();s==="gesturestart"?(t.magnitudeX=a.first.x,t.magnitudeY=a.first.y):(t.magnitudeX=a.last.x,t.magnitudeY=a.last.y)}else if(this._state===32)if(s==="gesturestart")t.magnitudeX=0,t.magnitudeY=0;else{let a=this._getAverageMovement();t.magnitudeX=a.x,t.magnitudeY=a.y}let i=new CustomEvent(s,{detail:t});this._target.dispatchEvent(i)}_stateToGesture(s){switch(s){case 1:return"onetap";case 2:return"twotap";case 4:return"threetap";case 8:return"drag";case 16:return"longpress";case 32:return"twodrag";case 64:return"pinch"}throw new Error("Unknown gesture state: "+s)}_getPosition(){if(this._tracked.length===0)throw new Error("Failed to get gesture position, no tracked touches");let s=this._tracked.length,t=0,n=0,r=0,i=0;for(let a=0;a<this._tracked.length;a++)t+=this._tracked[a].firstX,n+=this._tracked[a].firstY,r+=this._tracked[a].lastX,i+=this._tracked[a].lastY;return{first:{x:t/s,y:n/s},last:{x:r/s,y:i/s}}}_getAverageMovement(){if(this._tracked.length===0)throw new Error("Failed to get gesture movement, no tracked touches");let s,t;s=t=0;let n=this._tracked.length;for(let r=0;r<this._tracked.length;r++)s+=this._tracked[r].lastX-this._tracked[r].firstX,t+=this._tracked[r].lastY-this._tracked[r].firstY;return{x:s/n,y:t/n}}_getAverageDistance(){if(this._tracked.length===0)throw new Error("Failed to get gesture distance, no tracked touches");let s=this._tracked[0],t=this._tracked[this._tracked.length-1],n=Math.abs(t.firstX-s.firstX),r=Math.abs(t.firstY-s.firstY),i=Math.abs(t.lastX-s.lastX),a=Math.abs(t.lastY-s.lastY);return{first:{x:n,y:r},last:{x:i,y:a}}}};var _s=!Pi||ar,ms=class{constructor(){this._target=null,this._canvas=document.createElement("canvas"),_s&&(this._canvas.style.position="fixed",this._canvas.style.zIndex="65535",this._canvas.style.pointerEvents="none",this._canvas.style.userSelect="none",this._canvas.style.WebkitUserSelect="none",this._canvas.style.visibility="hidden"),this._position={x:0,y:0},this._hotSpot={x:0,y:0},this._eventHandlers={mouseover:this._handleMouseOver.bind(this),mouseleave:this._handleMouseLeave.bind(this),mousemove:this._handleMouseMove.bind(this),mouseup:this._handleMouseUp.bind(this)}}attach(s){if(this._target&&this.detach(),this._target=s,_s){document.body.appendChild(this._canvas);let t={capture:!0,passive:!0};this._target.addEventListener("mouseover",this._eventHandlers.mouseover,t),this._target.addEventListener("mouseleave",this._eventHandlers.mouseleave,t),this._target.addEventListener("mousemove",this._eventHandlers.mousemove,t),this._target.addEventListener("mouseup",this._eventHandlers.mouseup,t)}this.clear()}detach(){if(this._target){if(_s){let s={capture:!0,passive:!0};this._target.removeEventListener("mouseover",this._eventHandlers.mouseover,s),this._target.removeEventListener("mouseleave",this._eventHandlers.mouseleave,s),this._target.removeEventListener("mousemove",this._eventHandlers.mousemove,s),this._target.removeEventListener("mouseup",this._eventHandlers.mouseup,s),document.contains(this._canvas)&&document.body.removeChild(this._canvas)}this._target=null}}change(s,t,n,r,i){if(r===0||i===0){this.clear();return}this._position.x=this._position.x+this._hotSpot.x-t,this._position.y=this._position.y+this._hotSpot.y-n,this._hotSpot.x=t,this._hotSpot.y=n;let a=this._canvas.getContext("2d");this._canvas.width=r,this._canvas.height=i;let o=new ImageData(new Uint8ClampedArray(s),r,i);if(a.clearRect(0,0,r,i),a.putImageData(o,0,0),_s)this._updatePosition();else{let u=this._canvas.toDataURL();this._target.style.cursor="url("+u+")"+t+" "+n+", default"}}clear(){this._target.style.cursor="none",this._canvas.width=0,this._canvas.height=0,this._position.x=this._position.x+this._hotSpot.x,this._position.y=this._position.y+this._hotSpot.y,this._hotSpot.x=0,this._hotSpot.y=0}move(s,t){if(!_s)return;window.visualViewport?(this._position.x=s+window.visualViewport.offsetLeft,this._position.y=t+window.visualViewport.offsetTop):(this._position.x=s,this._position.y=t),this._updatePosition();let n=document.elementFromPoint(s,t);this._updateVisibility(n)}_handleMouseOver(s){this._handleMouseMove(s)}_handleMouseLeave(s){this._updateVisibility(s.relatedTarget)}_handleMouseMove(s){this._updateVisibility(s.target),this._position.x=s.clientX-this._hotSpot.x,this._position.y=s.clientY-this._hotSpot.y,this._updatePosition()}_handleMouseUp(s){let t=document.elementFromPoint(s.clientX,s.clientY);this._updateVisibility(t),this._captureIsActive()&&window.setTimeout(()=>{this._target&&(t=document.elementFromPoint(s.clientX,s.clientY),this._updateVisibility(t))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(s){return s?s===this._target?!0:!(!this._target.contains(s)||window.getComputedStyle(s).cursor!=="none"):!1}_updateVisibility(s){this._captureIsActive()&&(s=document.captureElement),this._shouldShowCursor(s)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}};var Br=40*1024*1024,pn={CONNECTING:"connecting",OPEN:"open",CLOSING:"closing",CLOSED:"closed"},_n={CONNECTING:[WebSocket.CONNECTING,pn.CONNECTING],OPEN:[WebSocket.OPEN,pn.OPEN],CLOSING:[WebSocket.CLOSING,pn.CLOSING],CLOSED:[WebSocket.CLOSED,pn.CLOSED]},oo=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"],xs=class{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get readyState(){let s;return this._websocket===null?"unused":(s=this._websocket.readyState,_n.CONNECTING.includes(s)?"connecting":_n.OPEN.includes(s)?"open":_n.CLOSING.includes(s)?"closing":_n.CLOSED.includes(s)?"closed":"unknown")}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(s){this._rQi+=s}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(s){let t=0;for(let n=s-1;n>=0;n--)t+=this._rQ[this._rQi++]<<n*8;return t>>>0}rQlen(){return this._rQlen-this._rQi}rQshiftStr(s){let t="";for(let n=0;n<s;n+=4096){let r=this.rQshiftBytes(Math.min(4096,s-n),!1);t+=String.fromCharCode.apply(null,r)}return t}rQshiftBytes(s,t=!0){return this._rQi+=s,t?this._rQ.slice(this._rQi-s,this._rQi):this._rQ.subarray(this._rQi-s,this._rQi)}rQshiftTo(s,t){s.set(new Uint8Array(this._rQ.buffer,this._rQi,t)),this._rQi+=t}rQpeekBytes(s,t=!0){return t?this._rQ.slice(this._rQi,this._rQi+s):this._rQ.subarray(this._rQi,this._rQi+s)}rQwait(s,t,n){if(this._rQlen-this._rQi<t){if(n){if(this._rQi<n)throw new Error("rQwait cannot backup "+n+" bytes");this._rQi-=n}return!0}return!1}sQpush8(s){this._sQensureSpace(1),this._sQ[this._sQlen++]=s}sQpush16(s){this._sQensureSpace(2),this._sQ[this._sQlen++]=s>>8&255,this._sQ[this._sQlen++]=s>>0&255}sQpush32(s){this._sQensureSpace(4),this._sQ[this._sQlen++]=s>>24&255,this._sQ[this._sQlen++]=s>>16&255,this._sQ[this._sQlen++]=s>>8&255,this._sQ[this._sQlen++]=s>>0&255}sQpushString(s){let t=s.split("").map(n=>n.charCodeAt(0));this.sQpushBytes(new Uint8Array(t))}sQpushBytes(s){for(let t=0;t<s.length;){this._sQensureSpace(1);let n=this._sQbufferSize-this._sQlen;n>s.length-t&&(n=s.length-t),this._sQ.set(s.subarray(t,t+n),this._sQlen),this._sQlen+=n,t+=n}}flush(){this._sQlen>0&&this.readyState==="open"&&(this._websocket.send(new Uint8Array(this._sQ.buffer,0,this._sQlen)),this._sQlen=0)}_sQensureSpace(s){this._sQbufferSize-this._sQlen<s&&this.flush()}off(s){this._eventHandlers[s]=()=>{}}on(s,t){this._eventHandlers[s]=t}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(s,t){this.attach(new WebSocket(s,t))}attach(s){this.init();let t=[...Object.keys(s),...Object.getOwnPropertyNames(Object.getPrototypeOf(s))];for(let n=0;n<oo.length;n++){let r=oo[n];if(t.indexOf(r)<0)throw new Error("Raw channel missing property: "+r)}this._websocket=s,this._websocket.binaryType="arraybuffer",this._websocket.onmessage=this._recvMessage.bind(this),this._websocket.onopen=()=>{V(">> WebSock.onopen"),this._websocket.protocol&&ue("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),V("<< WebSock.onopen")},this._websocket.onclose=n=>{V(">> WebSock.onclose"),this._eventHandlers.close(n),V("<< WebSock.onclose")},this._websocket.onerror=n=>{V(">> WebSock.onerror: "+n),this._eventHandlers.error(n),V("<< WebSock.onerror: "+n)}}close(){this._websocket&&((this.readyState==="connecting"||this.readyState==="open")&&(ue("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_expandCompactRQ(s){let t=(this._rQlen-this._rQi+s)*8,n=this._rQbufferSize<t;if(n&&(this._rQbufferSize=Math.max(this._rQbufferSize*2,t)),this._rQbufferSize>Br&&(this._rQbufferSize=Br,this._rQbufferSize-(this._rQlen-this._rQi)<s))throw new Error("Receive queue buffer exceeded "+Br+" bytes, and the new message could not fit");if(n){let r=this._rQ.buffer;this._rQ=new Uint8Array(this._rQbufferSize),this._rQ.set(new Uint8Array(r,this._rQi,this._rQlen-this._rQi))}else this._rQ.copyWithin(0,this._rQi,this._rQlen);this._rQlen=this._rQlen-this._rQi,this._rQi=0}_recvMessage(s){this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0);let t=new Uint8Array(s.data);t.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.set(t,this._rQlen),this._rQlen+=t.length,this._rQlen-this._rQi>0?this._eventHandlers.message():V("Ignoring empty message")}};var lo={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443};var W={encodingRaw:0,encodingCopyRect:1,encodingRRE:2,encodingHextile:5,encodingZlib:6,encodingTight:7,encodingZRLE:16,encodingTightPNG:-260,encodingJPEG:21,encodingH264:50,pseudoEncodingQualityLevel9:-23,pseudoEncodingQualityLevel0:-32,pseudoEncodingDesktopSize:-223,pseudoEncodingLastRect:-224,pseudoEncodingCursor:-239,pseudoEncodingQEMUExtendedKeyEvent:-258,pseudoEncodingQEMULedEvent:-261,pseudoEncodingDesktopName:-307,pseudoEncodingExtendedDesktopSize:-308,pseudoEncodingXvp:-309,pseudoEncodingFence:-312,pseudoEncodingContinuousUpdates:-313,pseudoEncodingExtendedMouseButtons:-316,pseudoEncodingCompressLevel9:-247,pseudoEncodingCompressLevel0:-256,pseudoEncodingVMwareCursor:1464686180,pseudoEncodingExtendedClipboard:3231835598};var mn=class e{constructor(){this._key=null}get algorithm(){return{name:"AES-ECB"}}static async importKey(s,t,n,r){let i=new e;return await i._importKey(s,n,r),i}async _importKey(s,t,n){this._key=await window.crypto.subtle.importKey("raw",s,{name:"AES-CBC"},t,n)}async encrypt(s,t){let n=new Uint8Array(t);if(n.length%16!==0||this._key===null)return null;let r=n.length/16;for(let i=0;i<r;i++){let a=new Uint8Array(await window.crypto.subtle.encrypt({name:"AES-CBC",iv:new Uint8Array(16)},this._key,n.slice(i*16,i*16+16))).slice(0,16);n.set(a,i*16)}return n}},xn=class e{constructor(){this._rawKey=null,this._ctrKey=null,this._cbcKey=null,this._zeroBlock=new Uint8Array(16),this._prefixBlock0=this._zeroBlock,this._prefixBlock1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),this._prefixBlock2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2])}get algorithm(){return{name:"AES-EAX"}}async _encryptBlock(s){let t=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,s);return new Uint8Array(t).slice(0,16)}async _initCMAC(){let s=await this._encryptBlock(this._zeroBlock),t=new Uint8Array(16),n=s[0]>>>6;for(let i=0;i<15;i++)t[i]=s[i+1]>>6|s[i]<<2,s[i]=s[i+1]>>7|s[i]<<1;let r=[0,135,14,137];t[14]^=n>>>1,t[15]=s[15]<<2^r[n],s[15]=s[15]<<1^r[n>>1],this._k1=s,this._k2=t}async _encryptCTR(s,t){let n=await window.crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this._ctrKey,s);return new Uint8Array(n)}async _decryptCTR(s,t){let n=await window.crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this._ctrKey,s);return new Uint8Array(n)}async _computeCMAC(s,t){if(t.length!==16)return null;let n=Math.floor(s.length/16),r=Math.ceil(s.length/16),i=s.length-n*16,a=new Uint8Array((r+1)*16);if(a.set(t),a.set(s,16),i===0)for(let l=0;l<16;l++)a[n*16+l]^=this._k1[l];else{a[(n+1)*16+i]=128;for(let l=0;l<16;l++)a[(n+1)*16+l]^=this._k2[l]}let o=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,a);return o=new Uint8Array(o),o.slice(o.length-32,o.length-16)}static async importKey(s,t,n,r){let i=new e;return await i._importKey(s),i}async _importKey(s){this._rawKey=s,this._ctrKey=await window.crypto.subtle.importKey("raw",s,{name:"AES-CTR"},!1,["encrypt","decrypt"]),this._cbcKey=await window.crypto.subtle.importKey("raw",s,{name:"AES-CBC"},!1,["encrypt"]),await this._initCMAC()}async encrypt(s,t){let n=s.additionalData,r=s.iv,i=await this._computeCMAC(r,this._prefixBlock0),a=await this._encryptCTR(t,i),o=await this._computeCMAC(n,this._prefixBlock1),u=await this._computeCMAC(a,this._prefixBlock2);for(let d=0;d<16;d++)u[d]^=i[d]^o[d];let l=new Uint8Array(16+a.length);return l.set(a),l.set(u,a.length),l}async decrypt(s,t){let n=t.slice(0,t.length-16),r=s.additionalData,i=s.iv,a=t.slice(t.length-16),o=await this._computeCMAC(i,this._prefixBlock0),u=await this._computeCMAC(r,this._prefixBlock1),l=await this._computeCMAC(n,this._prefixBlock2);for(let h=0;h<16;h++)l[h]^=o[h]^u[h];if(l.length!==a.length)return null;for(let h=0;h<a.length;h++)if(l[h]!==a[h])return null;return await this._decryptCTR(n,o)}};var co=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],gu=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],m=0,S,A,N,C,T,F;S=65536;A=1<<24;N=S|A;C=4;T=1024;F=C|T;var uo=[N|T,m|m,S|m,N|F,N|C,S|F,m|C,S|m,m|T,N|T,N|F,m|T,A|F,N|C,A|m,m|C,m|F,A|T,A|T,S|T,S|T,N|m,N|m,A|F,S|C,A|C,A|C,S|C,m|m,m|F,S|F,A|m,S|m,N|F,m|C,N|m,N|T,A|m,A|m,m|T,N|C,S|m,S|T,A|C,m|T,m|C,A|F,S|F,N|F,S|C,N|m,A|F,A|C,m|F,S|F,N|T,m|F,A|T,A|T,m|m,S|C,S|T,m|m,N|C];S=1<<20;A=1<<31;N=S|A;C=32;T=32768;F=C|T;var ho=[N|F,A|T,m|T,S|F,S|m,m|C,N|C,A|F,A|C,N|F,N|T,A|m,A|T,S|m,m|C,N|C,S|T,S|C,A|F,m|m,A|m,m|T,S|F,N|m,S|C,A|C,m|m,S|T,m|F,N|T,N|m,m|F,m|m,S|F,N|C,S|m,A|F,N|m,N|T,m|T,N|m,A|T,m|C,N|F,S|F,m|C,m|T,A|m,m|F,N|T,S|m,A|C,S|C,A|F,A|C,S|C,S|T,m|m,A|T,m|F,A|m,N|C,N|F,S|T];S=1<<17;A=1<<27;N=S|A;C=8;T=512;F=C|T;var fo=[m|F,N|T,m|m,N|C,A|T,m|m,S|F,A|T,S|C,A|C,A|C,S|m,N|F,S|C,N|m,m|F,A|m,m|C,N|T,m|T,S|T,N|m,N|C,S|F,A|F,S|T,S|m,A|F,m|C,N|F,m|T,A|m,N|T,A|m,S|C,m|F,S|m,N|T,A|T,m|m,m|T,S|C,N|F,A|T,A|C,m|T,m|m,N|C,A|F,S|m,A|m,N|F,m|C,S|F,S|T,A|C,N|m,A|F,m|F,N|m,S|F,m|C,N|C,S|T];S=8192;A=1<<23;N=S|A;C=1;T=128;F=C|T;var po=[N|C,S|F,S|F,m|T,N|T,A|F,A|C,S|C,m|m,N|m,N|m,N|F,m|F,m|m,A|T,A|C,m|C,S|m,A|m,N|C,m|T,A|m,S|C,S|T,A|F,m|C,S|T,A|T,S|m,N|T,N|F,m|F,A|T,A|C,N|m,N|F,m|F,m|m,m|m,N|m,S|T,A|T,A|F,m|C,N|C,S|F,S|F,m|T,N|F,m|F,m|C,S|m,A|C,S|C,N|T,A|F,S|C,S|T,A|m,N|C,m|T,A|m,S|m,N|T];S=1<<25;A=1<<30;N=S|A;C=256;T=1<<19;F=C|T;var _o=[m|C,S|F,S|T,N|C,m|T,m|C,A|m,S|T,A|F,m|T,S|C,A|F,N|C,N|T,m|F,A|m,S|m,A|T,A|T,m|m,A|C,N|F,N|F,S|C,N|T,A|C,m|m,N|m,S|F,S|m,N|m,m|F,m|T,N|C,m|C,S|m,A|m,S|T,N|C,A|F,S|C,A|m,N|T,S|F,A|F,m|C,S|m,N|T,N|F,m|F,N|m,N|F,S|T,m|m,A|T,N|m,m|F,S|C,A|C,m|T,m|m,A|T,S|F,A|C];S=1<<22;A=1<<29;N=S|A;C=16;T=16384;F=C|T;var mo=[A|C,N|m,m|T,N|F,N|m,m|C,N|F,S|m,A|T,S|F,S|m,A|C,S|C,A|T,A|m,m|F,m|m,S|C,A|F,m|T,S|T,A|F,m|C,N|C,N|C,m|m,S|F,N|T,m|F,S|T,N|T,A|m,A|T,m|C,N|C,S|T,N|F,S|m,m|F,A|C,S|m,A|T,A|m,m|F,A|C,N|F,S|T,N|m,S|F,N|T,m|m,N|C,m|C,m|T,N|m,S|F,m|T,S|C,A|F,m|m,N|T,A|m,S|C,A|F];S=1<<21;A=1<<26;N=S|A;C=2;T=2048;F=C|T;var xo=[S|m,N|C,A|F,m|m,m|T,A|F,S|F,N|T,N|F,S|m,m|m,A|C,m|C,A|m,N|C,m|F,A|T,S|F,S|C,A|T,A|C,N|m,N|T,S|C,N|m,m|T,m|F,N|F,S|T,m|C,A|m,S|T,A|m,S|T,S|m,A|F,A|F,N|C,N|C,m|C,S|C,A|m,A|T,S|m,N|T,m|F,S|F,N|T,m|F,A|C,N|F,N|m,S|T,m|m,m|C,N|F,m|m,S|F,N|m,m|T,A|C,A|T,m|T,S|C];S=1<<18;A=1<<28;N=S|A;C=64;T=4096;F=C|T;var go=[A|F,m|T,S|m,N|F,A|m,A|F,m|C,A|m,S|C,N|m,N|F,S|T,N|T,S|F,m|T,m|C,N|m,A|C,A|T,m|F,S|T,S|C,N|C,N|T,m|F,m|m,m|m,N|C,A|C,A|T,S|F,S|m,S|F,S|m,N|T,m|T,m|C,N|C,m|T,S|F,A|T,m|C,A|C,N|m,N|C,A|m,S|m,A|F,m|m,N|F,S|C,A|C,N|m,A|T,A|F,m|m,N|F,S|T,S|T,m|F,m|F,S|C,A|m,N|T],gn=class{constructor(s){this.keys=[];let t=[],n=[],r=[];for(let i=0,a=56;i<56;++i,a-=8){a+=a<-5?65:a<-3?31:a<-1?63:a===27?35:0;let o=a&7;t[i]=(s[a>>>3]&1<<o)!==0?1:0}for(let i=0;i<16;++i){let a=i<<1,o=a+1;r[a]=r[o]=0;for(let u=28;u<59;u+=28)for(let l=u-28;l<u;++l){let d=l+gu[i];n[l]=d<u?t[d]:t[d-28]}for(let u=0;u<24;++u)n[co[u]]!==0&&(r[a]|=1<<23-u),n[co[u+24]]!==0&&(r[o]|=1<<23-u)}for(let i=0,a=0,o=0;i<16;++i){let u=r[a++],l=r[a++];this.keys[o]=(u&16515072)<<6,this.keys[o]|=(u&4032)<<10,this.keys[o]|=(l&16515072)>>>10,this.keys[o]|=(l&4032)>>>6,++o,this.keys[o]=(u&258048)<<12,this.keys[o]|=(u&63)<<16,this.keys[o]|=(l&258048)>>>4,this.keys[o]|=l&63,++o}}enc8(s){let t=s.slice(),n=0,r,i,a;r=t[n++]<<24|t[n++]<<16|t[n++]<<8|t[n++],i=t[n++]<<24|t[n++]<<16|t[n++]<<8|t[n++],a=(r>>>4^i)&252645135,i^=a,r^=a<<4,a=(r>>>16^i)&65535,i^=a,r^=a<<16,a=(i>>>2^r)&858993459,r^=a,i^=a<<2,a=(i>>>8^r)&16711935,r^=a,i^=a<<8,i=i<<1|i>>>31&1,a=(r^i)&2863311530,r^=a,i^=a,r=r<<1|r>>>31&1;for(let o=0,u=0;o<8;++o){a=i<<28|i>>>4,a^=this.keys[u++];let l=xo[a&63];l|=_o[a>>>8&63],l|=fo[a>>>16&63],l|=uo[a>>>24&63],a=i^this.keys[u++],l|=go[a&63],l|=mo[a>>>8&63],l|=po[a>>>16&63],l|=ho[a>>>24&63],r^=l,a=r<<28|r>>>4,a^=this.keys[u++],l=xo[a&63],l|=_o[a>>>8&63],l|=fo[a>>>16&63],l|=uo[a>>>24&63],a=r^this.keys[u++],l|=go[a&63],l|=mo[a>>>8&63],l|=po[a>>>16&63],l|=ho[a>>>24&63],i^=l}for(i=i<<31|i>>>1,a=(r^i)&2863311530,r^=a,i^=a,r=r<<31|r>>>1,a=(r>>>8^i)&16711935,i^=a,r^=a<<8,a=(r>>>2^i)&858993459,i^=a,r^=a<<2,a=(i>>>16^r)&65535,r^=a,i^=a<<16,a=(i>>>4^r)&252645135,r^=a,i^=a<<4,a=[i,r],n=0;n<8;n++)t[n]=(a[n>>>2]>>>8*(3-n%4))%256,t[n]<0&&(t[n]+=256);return t}},bn=class e{constructor(){this._cipher=null}get algorithm(){return{name:"DES-ECB"}}static importKey(s,t,n,r){let i=new e;return i._importKey(s),i}_importKey(s,t,n){this._cipher=new gn(s)}encrypt(s,t){let n=new Uint8Array(t);if(n.length%8!==0||this._cipher===null)return null;let r=n.length/8;for(let i=0;i<r;i++)n.set(this._cipher.enc8(n.slice(i*8,i*8+8)),i*8);return n}},vn=class e{constructor(){this._cipher=null}get algorithm(){return{name:"DES-CBC"}}static importKey(s,t,n,r){let i=new e;return i._importKey(s),i}_importKey(s){this._cipher=new gn(s)}encrypt(s,t){let n=new Uint8Array(t),r=new Uint8Array(s.iv);if(n.length%8!==0||this._cipher===null)return null;let i=n.length/8;for(let a=0;a<i;a++){for(let o=0;o<8;o++)r[o]^=t[a*8+o];r=this._cipher.enc8(r),n.set(r,a*8)}return n}};function Qt(e,s,t){let n=1n;for(e=e%t;s>0n;)(s&1n)===1n&&(n=n*e%t),s=s>>1n,e=e*e%t;return n}function Ut(e,s=0){let t=e.toString(16);s===0&&(s=Math.ceil(t.length/2)),t=t.padStart(s*2,"0");let n=t.length/2,r=new Uint8Array(n);for(let i=0;i<n;i++)r[i]=parseInt(t.slice(i*2,i*2+2),16);return r}function ke(e){let s="0x";for(let t=0;t<e.length;t++)s+=e[t].toString(16).padStart(2,"0");return BigInt(s)}var yn=class e{constructor(){this._keyLength=0,this._keyBytes=0,this._n=null,this._e=null,this._d=null,this._nBigInt=null,this._eBigInt=null,this._dBigInt=null,this._extractable=!1}get algorithm(){return{name:"RSA-PKCS1-v1_5"}}_base64urlDecode(s){return s=s.replace(/-/g,"+").replace(/_/g,"/"),s=s.padEnd(Math.ceil(s.length/4)*4,"="),Ct.decode(s)}_padArray(s,t){let n=new Uint8Array(t);return n.set(s,t-s.length),n}static async generateKey(s,t,n){let r=new e;return await r._generateKey(s,t),{privateKey:r}}async _generateKey(s,t){this._keyLength=s.modulusLength,this._keyBytes=Math.ceil(this._keyLength/8);let n=await window.crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:s.modulusLength,publicExponent:s.publicExponent,hash:{name:"SHA-256"}},!0,["encrypt","decrypt"]),r=await window.crypto.subtle.exportKey("jwk",n.privateKey);this._n=this._padArray(this._base64urlDecode(r.n),this._keyBytes),this._nBigInt=ke(this._n),this._e=this._padArray(this._base64urlDecode(r.e),this._keyBytes),this._eBigInt=ke(this._e),this._d=this._padArray(this._base64urlDecode(r.d),this._keyBytes),this._dBigInt=ke(this._d),this._extractable=t}static async importKey(s,t,n,r){if(r.length!==1||r[0]!=="encrypt")throw new Error("only support importing RSA public key");let i=new e;return await i._importKey(s,n),i}async _importKey(s,t){let n=s.n,r=s.e;if(n.length!==r.length)throw new Error("the sizes of modulus and public exponent do not match");this._keyBytes=n.length,this._keyLength=this._keyBytes*8,this._n=new Uint8Array(this._keyBytes),this._e=new Uint8Array(this._keyBytes),this._n.set(n),this._e.set(r),this._nBigInt=ke(this._n),this._eBigInt=ke(this._e),this._extractable=t}async encrypt(s,t){if(t.length>this._keyBytes-11)return null;let n=new Uint8Array(this._keyBytes-t.length-3);window.crypto.getRandomValues(n);for(let o=0;o<n.length;o++)n[o]=Math.floor(n[o]*254/255+1);let r=new Uint8Array(this._keyBytes);r[1]=2,r.set(n,2),r.set(t,n.length+3);let i=ke(r),a=Qt(i,this._eBigInt,this._nBigInt);return Ut(a,this._keyBytes)}async decrypt(s,t){if(t.length!==this._keyBytes)return null;let n=ke(t),r=Qt(n,this._dBigInt,this._nBigInt),i=Ut(r,this._keyBytes);if(i[0]!==0||i[1]!==2)return null;let a=2;for(;a<i.length&&i[a]!==0;a++);return a===i.length?null:i.slice(a+1,i.length)}async exportKey(){if(!this._extractable)throw new Error("key is not extractable");return{n:this._n,e:this._e,d:this._d}}};var Or=class{constructor(s){this._key=s}get algorithm(){return{name:"DH"}}exportKey(){return this._key}},wn=class e{constructor(){this._g=null,this._p=null,this._gBigInt=null,this._pBigInt=null,this._privateKey=null}get algorithm(){return{name:"DH"}}static generateKey(s,t){let n=new e;return n._generateKey(s),{privateKey:n,publicKey:new Or(n._publicKey)}}_generateKey(s){let t=s.g,n=s.p;this._keyBytes=n.length,this._gBigInt=ke(t),this._pBigInt=ke(n),this._privateKey=window.crypto.getRandomValues(new Uint8Array(this._keyBytes)),this._privateKeyBigInt=ke(this._privateKey),this._publicKey=Ut(Qt(this._gBigInt,this._privateKeyBigInt,this._pBigInt),this._keyBytes)}deriveBits(s,t){let n=Math.ceil(t/8),r=new Uint8Array(s.public),i=n>this._keyBytes?n:this._keyBytes,a=Qt(ke(r),this._privateKeyBigInt,this._pBigInt);return Ut(a,i).slice(0,i)}};async function bo(e){let s="";for(let t=0;t<e.length;t++)s+=String.fromCharCode(e[t]);return bu(yu(wu(vu(s),8*s.length)))}function bu(e){let s=new Uint8Array(e.length);for(let t=0;t<e.length;t++)s[t]=e.charCodeAt(t);return s}function vu(e){let s=Array(e.length>>2);for(let t=0;t<s.length;t++)s[t]=0;for(let t=0;t<8*e.length;t+=8)s[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return s}function yu(e){let s="";for(let t=0;t<32*e.length;t+=8)s+=String.fromCharCode(e[t>>5]>>>t%32&255);return s}function wu(e,s){e[s>>5]|=128<<s%32,e[14+(s+64>>>9<<4)]=s;let t=1732584193,n=-271733879,r=-1732584194,i=271733878;for(let a=0;a<e.length;a+=16){let o=t,u=n,l=r,d=i;n=ge(n=ge(n=ge(n=ge(n=xe(n=xe(n=xe(n=xe(n=me(n=me(n=me(n=me(n=_e(n=_e(n=_e(n=_e(n,r=_e(r,i=_e(i,t=_e(t,n,r,i,e[a+0],7,-680876936),n,r,e[a+1],12,-389564586),t,n,e[a+2],17,606105819),i,t,e[a+3],22,-1044525330),r=_e(r,i=_e(i,t=_e(t,n,r,i,e[a+4],7,-176418897),n,r,e[a+5],12,1200080426),t,n,e[a+6],17,-1473231341),i,t,e[a+7],22,-45705983),r=_e(r,i=_e(i,t=_e(t,n,r,i,e[a+8],7,1770035416),n,r,e[a+9],12,-1958414417),t,n,e[a+10],17,-42063),i,t,e[a+11],22,-1990404162),r=_e(r,i=_e(i,t=_e(t,n,r,i,e[a+12],7,1804603682),n,r,e[a+13],12,-40341101),t,n,e[a+14],17,-1502002290),i,t,e[a+15],22,1236535329),r=me(r,i=me(i,t=me(t,n,r,i,e[a+1],5,-165796510),n,r,e[a+6],9,-1069501632),t,n,e[a+11],14,643717713),i,t,e[a+0],20,-373897302),r=me(r,i=me(i,t=me(t,n,r,i,e[a+5],5,-701558691),n,r,e[a+10],9,38016083),t,n,e[a+15],14,-660478335),i,t,e[a+4],20,-405537848),r=me(r,i=me(i,t=me(t,n,r,i,e[a+9],5,568446438),n,r,e[a+14],9,-1019803690),t,n,e[a+3],14,-187363961),i,t,e[a+8],20,1163531501),r=me(r,i=me(i,t=me(t,n,r,i,e[a+13],5,-1444681467),n,r,e[a+2],9,-51403784),t,n,e[a+7],14,1735328473),i,t,e[a+12],20,-1926607734),r=xe(r,i=xe(i,t=xe(t,n,r,i,e[a+5],4,-378558),n,r,e[a+8],11,-2022574463),t,n,e[a+11],16,1839030562),i,t,e[a+14],23,-35309556),r=xe(r,i=xe(i,t=xe(t,n,r,i,e[a+1],4,-1530992060),n,r,e[a+4],11,1272893353),t,n,e[a+7],16,-155497632),i,t,e[a+10],23,-1094730640),r=xe(r,i=xe(i,t=xe(t,n,r,i,e[a+13],4,681279174),n,r,e[a+0],11,-358537222),t,n,e[a+3],16,-722521979),i,t,e[a+6],23,76029189),r=xe(r,i=xe(i,t=xe(t,n,r,i,e[a+9],4,-640364487),n,r,e[a+12],11,-421815835),t,n,e[a+15],16,530742520),i,t,e[a+2],23,-995338651),r=ge(r,i=ge(i,t=ge(t,n,r,i,e[a+0],6,-198630844),n,r,e[a+7],10,1126891415),t,n,e[a+14],15,-1416354905),i,t,e[a+5],21,-57434055),r=ge(r,i=ge(i,t=ge(t,n,r,i,e[a+12],6,1700485571),n,r,e[a+3],10,-1894986606),t,n,e[a+10],15,-1051523),i,t,e[a+1],21,-2054922799),r=ge(r,i=ge(i,t=ge(t,n,r,i,e[a+8],6,1873313359),n,r,e[a+15],10,-30611744),t,n,e[a+6],15,-1560198380),i,t,e[a+13],21,1309151649),r=ge(r,i=ge(i,t=ge(t,n,r,i,e[a+4],6,-145523070),n,r,e[a+11],10,-1120210379),t,n,e[a+2],15,718787259),i,t,e[a+9],21,-343485551),t=$e(t,o),n=$e(n,u),r=$e(r,l),i=$e(i,d)}return Array(t,n,r,i)}function kn(e,s,t,n,r,i){return $e(ku($e($e(s,e),$e(n,i)),r),t)}function _e(e,s,t,n,r,i,a){return kn(s&t|~s&n,e,s,r,i,a)}function me(e,s,t,n,r,i,a){return kn(s&n|t&~n,e,s,r,i,a)}function xe(e,s,t,n,r,i,a){return kn(s^t^n,e,s,r,i,a)}function ge(e,s,t,n,r,i,a){return kn(t^(s|~n),e,s,r,i,a)}function $e(e,s){let t=(65535&e)+(65535&s);return(e>>16)+(s>>16)+(t>>16)<<16|65535&t}function ku(e,s){return e<<s|e>>>32-s}var Hr=class{constructor(){this._algorithms={"AES-ECB":mn,"AES-EAX":xn,"DES-ECB":bn,"DES-CBC":vn,"RSA-PKCS1-v1_5":yn,DH:wn,MD5:bo}}encrypt(s,t,n){if(t.algorithm.name!==s.name)throw new Error("algorithm does not match");if(typeof t.encrypt!="function")throw new Error("key does not support encryption");return t.encrypt(s,n)}decrypt(s,t,n){if(t.algorithm.name!==s.name)throw new Error("algorithm does not match");if(typeof t.decrypt!="function")throw new Error("key does not support encryption");return t.decrypt(s,n)}importKey(s,t,n,r,i){if(s!=="raw")throw new Error("key format is not supported");let a=this._algorithms[n.name];if(typeof a>"u"||typeof a.importKey!="function")throw new Error("algorithm is not supported");return a.importKey(t,n,r,i)}generateKey(s,t,n){let r=this._algorithms[s.name];if(typeof r>"u"||typeof r.generateKey!="function")throw new Error("algorithm is not supported");return r.generateKey(s,t,n)}exportKey(s,t){if(s!=="raw")throw new Error("key format is not supported");if(typeof t.exportKey!="function")throw new Error("key does not support exportKey");return t.exportKey()}digest(s,t){let n=this._algorithms[s];if(typeof n!="function")throw new Error("algorithm is not supported");return n(t)}deriveBits(s,t,n){if(t.algorithm.name!==s.name)throw new Error("algorithm does not match");if(typeof t.deriveBits!="function")throw new Error("key does not support deriveBits");return t.deriveBits(s,n)}},oe=new Hr;var En=class{constructor(){this._cipher=null,this._counter=new Uint8Array(16)}async setKey(s){this._cipher=await oe.importKey("raw",s,{name:"AES-EAX"},!1,["encrypt, decrypt"])}async makeMessage(s){let t=new Uint8Array([(s.length&65280)>>>8,s.length&255]),n=await oe.encrypt({name:"AES-EAX",iv:this._counter,additionalData:t},this._cipher,s);for(let i=0;i<16&&this._counter[i]++===255;i++);let r=new Uint8Array(s.length+2+16);return r.set(t),r.set(n,2),r}async receiveMessage(s,t){let n=new Uint8Array([(s&65280)>>>8,s&255]),r=await oe.decrypt({name:"AES-EAX",iv:this._counter,additionalData:n},this._cipher,t);for(let i=0;i<16&&this._counter[i]++===255;i++);return r}},gs=class extends ct{constructor(s,t){super(),this._hasStarted=!1,this._checkSock=null,this._checkCredentials=null,this._approveServerResolve=null,this._sockReject=null,this._credentialsReject=null,this._approveServerReject=null,this._sock=s,this._getCredentials=t}_waitSockAsync(s){return new Promise((t,n)=>{let r=()=>!this._sock.rQwait("RA2",s);r()?t():(this._checkSock=()=>{r()&&(t(),this._checkSock=null,this._sockReject=null)},this._sockReject=n)})}_waitApproveKeyAsync(){return new Promise((s,t)=>{this._approveServerResolve=s,this._approveServerReject=t})}_waitCredentialsAsync(s){let t=()=>s===1&&this._getCredentials().username!==void 0&&this._getCredentials().password!==void 0?!0:s===2&&this._getCredentials().password!==void 0;return new Promise((n,r)=>{t()?n():(this._checkCredentials=()=>{t()&&(n(),this._checkCredentials=null,this._credentialsReject=null)},this._credentialsReject=r)})}checkInternalEvents(){this._checkSock!==null&&this._checkSock(),this._checkCredentials!==null&&this._checkCredentials()}approveServer(){this._approveServerResolve!==null&&(this._approveServerResolve(),this._approveServerResolve=null)}disconnect(){this._sockReject!==null&&(this._sockReject(new Error("disconnect normally")),this._sockReject=null),this._credentialsReject!==null&&(this._credentialsReject(new Error("disconnect normally")),this._credentialsReject=null),this._approveServerReject!==null&&(this._approveServerReject(new Error("disconnect normally")),this._approveServerReject=null)}async negotiateRA2neAuthAsync(){this._hasStarted=!0,await this._waitSockAsync(4);let s=this._sock.rQpeekBytes(4),t=this._sock.rQshift32();if(t<1024)throw new Error("RA2: server public key is too short: "+t);if(t>8192)throw new Error("RA2: server public key is too long: "+t);let n=Math.ceil(t/8);await this._waitSockAsync(n*2);let r=this._sock.rQshiftBytes(n),i=this._sock.rQshiftBytes(n),a=await oe.importKey("raw",{n:r,e:i},{name:"RSA-PKCS1-v1_5"},!1,["encrypt"]),o=new Uint8Array(4+n*2);o.set(s),o.set(r,4),o.set(i,4+n);let u=this._waitApproveKeyAsync();this.dispatchEvent(new CustomEvent("serververification",{detail:{type:"RSA",publickey:o}})),await u;let l=2048,d=Math.ceil(l/8),h=(await oe.generateKey({name:"RSA-PKCS1-v1_5",modulusLength:l,publicExponent:new Uint8Array([1,0,1])},!0,["encrypt"])).privateKey,f=await oe.exportKey("raw",h),p=f.n,g=f.e,w=new Uint8Array(4+d*2);w[0]=(l&4278190080)>>>24,w[1]=(l&16711680)>>>16,w[2]=(l&65280)>>>8,w[3]=l&255,w.set(p,4),w.set(g,4+d),this._sock.sQpushBytes(w),this._sock.flush();let v=new Uint8Array(16);window.crypto.getRandomValues(v);let y=await oe.encrypt({name:"RSA-PKCS1-v1_5"},a,v),k=new Uint8Array(2+n);if(k[0]=(n&65280)>>>8,k[1]=n&255,k.set(y,2),this._sock.sQpushBytes(k),this._sock.flush(),await this._waitSockAsync(2),this._sock.rQshift16()!==d)throw new Error("RA2: wrong encrypted message length");let I=this._sock.rQshiftBytes(d),R=await oe.decrypt({name:"RSA-PKCS1-v1_5"},h,I);if(R===null||R.length!==16)throw new Error("RA2: corrupted server encrypted random");let L=new Uint8Array(32),M=new Uint8Array(32);L.set(R),L.set(v,16),M.set(v),M.set(R,16),L=await window.crypto.subtle.digest("SHA-1",L),L=new Uint8Array(L).slice(0,16),M=await window.crypto.subtle.digest("SHA-1",M),M=new Uint8Array(M).slice(0,16);let D=new En;await D.setKey(L);let U=new En;await U.setKey(M);let O=new Uint8Array(8+n*2+d*2),P=new Uint8Array(8+n*2+d*2);if(O.set(o),O.set(w,4+n*2),P.set(w),P.set(o,4+d*2),O=await window.crypto.subtle.digest("SHA-1",O),P=await window.crypto.subtle.digest("SHA-1",P),O=new Uint8Array(O),P=new Uint8Array(P),this._sock.sQpushBytes(await D.makeMessage(P)),this._sock.flush(),await this._waitSockAsync(38),this._sock.rQshift16()!==20)throw new Error("RA2: wrong server hash");let G=await U.receiveMessage(20,this._sock.rQshiftBytes(36));if(G===null)throw new Error("RA2: failed to authenticate the message");for(let Z=0;Z<20;Z++)if(G[Z]!==O[Z])throw new Error("RA2: wrong server hash");if(await this._waitSockAsync(19),this._sock.rQshift16()!==1)throw new Error("RA2: wrong subtype");let Y=await U.receiveMessage(1,this._sock.rQshiftBytes(17));if(Y===null)throw new Error("RA2: failed to authenticate the message");Y=Y[0];let se=this._waitCredentialsAsync(Y);if(Y===1)(this._getCredentials().username===void 0||this._getCredentials().password===void 0)&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}}));else if(Y===2)this._getCredentials().password===void 0&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}}));else throw new Error("RA2: wrong subtype");await se;let le;Y===1?le=Te(this._getCredentials().username).slice(0,255):le="";let j=Te(this._getCredentials().password).slice(0,255),Q=new Uint8Array(le.length+j.length+2);Q[0]=le.length,Q[le.length+1]=j.length;for(let Z=0;Z<le.length;Z++)Q[Z+1]=le.charCodeAt(Z);for(let Z=0;Z<j.length;Z++)Q[le.length+2+Z]=j.charCodeAt(Z);this._sock.sQpushBytes(await D.makeMessage(Q)),this._sock.flush()}get hasStarted(){return this._hasStarted}set hasStarted(s){this._hasStarted=s}};var bs=class{constructor(){this._lines=0}decodeRect(s,t,n,r,i,a,o){if(n===0||r===0)return!0;this._lines===0&&(this._lines=r);let u=o==8?1:4,l=n*u;for(;this._lines>0;){if(i.rQwait("RAW",l))return!1;let d=t+(r-this._lines),h=i.rQshiftBytes(l,!1);if(o==8){let f=new Uint8Array(n*4);for(let p=0;p<n;p++)f[p*4+0]=(h[p]>>0&3)*255/3,f[p*4+1]=(h[p]>>2&3)*255/3,f[p*4+2]=(h[p]>>4&3)*255/3,f[p*4+3]=255;h=f}for(let f=0;f<n;f++)h[f*4+3]=255;a.blitImage(s,d,n,1,h,0),this._lines--}return!0}};var vs=class{decodeRect(s,t,n,r,i,a,o){if(i.rQwait("COPYRECT",4))return!1;let u=i.rQshift16(),l=i.rQshift16();return n===0||r===0||a.copyImage(u,l,s,t,n,r),!0}};var ys=class{constructor(){this._subrects=0}decodeRect(s,t,n,r,i,a,o){if(this._subrects===0){if(i.rQwait("RRE",8))return!1;this._subrects=i.rQshift32();let u=i.rQshiftBytes(4);a.fillRect(s,t,n,r,u)}for(;this._subrects>0;){if(i.rQwait("RRE",12))return!1;let u=i.rQshiftBytes(4),l=i.rQshift16(),d=i.rQshift16(),h=i.rQshift16(),f=i.rQshift16();a.fillRect(s+l,t+d,h,f,u),this._subrects--}return!0}};var ws=class{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(s,t,n,r,i,a,o){for(this._tiles===0&&(this._tilesX=Math.ceil(n/16),this._tilesY=Math.ceil(r/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let u=1;if(i.rQwait("HEXTILE",u))return!1;let l=i.rQpeek8();if(l>30)throw new Error("Illegal hextile subencoding (subencoding: "+l+")");let d=this._totalTiles-this._tiles,h=d%this._tilesX,f=Math.floor(d/this._tilesX),p=s+h*16,g=t+f*16,w=Math.min(16,s+n-p),v=Math.min(16,t+r-g);if(l&1)u+=w*v*4;else if(l&2&&(u+=4),l&4&&(u+=4),l&8){if(u++,i.rQwait("HEXTILE",u))return!1;let y=i.rQpeekBytes(u).at(-1);l&16?u+=y*6:u+=y*2}if(i.rQwait("HEXTILE",u))return!1;if(i.rQshift8(),l===0)this._lastsubencoding&1?V(" Ignoring blank after RAW"):a.fillRect(p,g,w,v,this._background);else if(l&1){let y=w*v,k=i.rQshiftBytes(y*4,!1);for(let I=0;I<y;I++)k[I*4+3]=255;a.blitImage(p,g,w,v,k,0)}else{if(l&2&&(this._background=new Uint8Array(i.rQshiftBytes(4))),l&4&&(this._foreground=new Uint8Array(i.rQshiftBytes(4))),this._startTile(p,g,w,v,this._background),l&8){let y=i.rQshift8();for(let k=0;k<y;k++){let I;l&16?I=i.rQshiftBytes(4):I=this._foreground;let R=i.rQshift8(),L=R>>4,M=R&15,D=i.rQshift8(),U=(D>>4)+1,O=(D&15)+1;this._subTile(L,M,U,O,I)}}this._finishTile(a)}this._lastsubencoding=l,this._tiles--}return!0}_startTile(s,t,n,r,i){this._tileX=s,this._tileY=t,this._tileW=n,this._tileH=r;let a=i[0],o=i[1],u=i[2],l=this._tileBuffer;for(let d=0;d<n*r*4;d+=4)l[d]=a,l[d+1]=o,l[d+2]=u,l[d+3]=255}_subTile(s,t,n,r,i){let a=i[0],o=i[1],u=i[2],l=s+n,d=t+r,h=this._tileBuffer,f=this._tileW;for(let p=t;p<d;p++)for(let g=s;g<l;g++){let w=(g+p*f)*4;h[w]=a,h[w+1]=o,h[w+2]=u,h[w+3]=255}}_finishTile(s){s.blitImage(this._tileX,this._tileY,this._tileW,this._tileH,this._tileBuffer,0)}};var ks=class{constructor(){this._zlib=new Xe,this._length=0}decodeRect(s,t,n,r,i,a,o){if(n===0||r===0)return!0;if(this._length===0){if(i.rQwait("ZLIB",4))return!1;this._length=i.rQshift32()}if(i.rQwait("ZLIB",this._length))return!1;let u=new Uint8Array(i.rQshiftBytes(this._length,!1));this._length=0,this._zlib.setInput(u),u=this._zlib.inflate(n*r*4),this._zlib.setInput(null);for(let l=0;l<n*r;l++)u[l*4+3]=255;return a.blitImage(s,t,n,r,u,0),!0}};var gt=class{constructor(){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._zlibs=[];for(let s=0;s<4;s++)this._zlibs[s]=new Xe}decodeRect(s,t,n,r,i,a,o){if(this._ctl===null){if(i.rQwait("TIGHT compression-control",1))return!1;this._ctl=i.rQshift8();for(let l=0;l<4;l++)this._ctl>>l&1&&(this._zlibs[l].reset(),ue("Reset zlib stream "+l));this._ctl=this._ctl>>4}let u;if(this._ctl===8)u=this._fillRect(s,t,n,r,i,a,o);else if(this._ctl===9)u=this._jpegRect(s,t,n,r,i,a,o);else if(this._ctl===10)u=this._pngRect(s,t,n,r,i,a,o);else if((this._ctl&8)==0)u=this._basicRect(this._ctl,s,t,n,r,i,a,o);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null),u}_fillRect(s,t,n,r,i,a,o){if(i.rQwait("TIGHT",3))return!1;let u=i.rQshiftBytes(3);return a.fillRect(s,t,n,r,u,!1),!0}_jpegRect(s,t,n,r,i,a,o){let u=this._readData(i);return u===null?!1:(a.imageRect(s,t,n,r,"image/jpeg",u),!0)}_pngRect(s,t,n,r,i,a,o){throw new Error("PNG received in standard Tight rect")}_basicRect(s,t,n,r,i,a,o,u){if(this._filter===null)if(s&4){if(a.rQwait("TIGHT",1))return!1;this._filter=a.rQshift8()}else this._filter=0;let l=s&3,d;switch(this._filter){case 0:d=this._copyFilter(l,t,n,r,i,a,o,u);break;case 1:d=this._paletteFilter(l,t,n,r,i,a,o,u);break;case 2:d=this._gradientFilter(l,t,n,r,i,a,o,u);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return d&&(this._filter=null),d}_copyFilter(s,t,n,r,i,a,o,u){let l=r*i*3,d;if(l===0)return!0;if(l<12){if(a.rQwait("TIGHT",l))return!1;d=a.rQshiftBytes(l)}else{if(d=this._readData(a),d===null)return!1;this._zlibs[s].setInput(d),d=this._zlibs[s].inflate(l),this._zlibs[s].setInput(null)}let h=new Uint8Array(r*i*4);for(let f=0,p=0;f<r*i*4;f+=4,p+=3)h[f]=d[p],h[f+1]=d[p+1],h[f+2]=d[p+2],h[f+3]=255;return o.blitImage(t,n,r,i,h,0,!1),!0}_paletteFilter(s,t,n,r,i,a,o,u){if(this._numColors===0){if(a.rQwait("TIGHT palette",1))return!1;let p=a.rQpeek8()+1,g=p*3;if(a.rQwait("TIGHT palette",1+g))return!1;this._numColors=p,a.rQskipBytes(1),a.rQshiftTo(this._palette,g)}let l=this._numColors<=2?1:8,h=Math.floor((r*l+7)/8)*i,f;if(h===0)return!0;if(h<12){if(a.rQwait("TIGHT",h))return!1;f=a.rQshiftBytes(h)}else{if(f=this._readData(a),f===null)return!1;this._zlibs[s].setInput(f),f=this._zlibs[s].inflate(h),this._zlibs[s].setInput(null)}return this._numColors==2?this._monoRect(t,n,r,i,f,this._palette,o):this._paletteRect(t,n,r,i,f,this._palette,o),this._numColors=0,!0}_monoRect(s,t,n,r,i,a,o){let u=this._getScratchBuffer(n*r*4),l=Math.floor((n+7)/8),d=Math.floor(n/8);for(let h=0;h<r;h++){let f,p,g;for(g=0;g<d;g++)for(let w=7;w>=0;w--)f=(h*n+g*8+7-w)*4,p=(i[h*l+g]>>w&1)*3,u[f]=a[p],u[f+1]=a[p+1],u[f+2]=a[p+2],u[f+3]=255;for(let w=7;w>=8-n%8;w--)f=(h*n+g*8+7-w)*4,p=(i[h*l+g]>>w&1)*3,u[f]=a[p],u[f+1]=a[p+1],u[f+2]=a[p+2],u[f+3]=255}o.blitImage(s,t,n,r,u,0,!1)}_paletteRect(s,t,n,r,i,a,o){let u=this._getScratchBuffer(n*r*4),l=n*r*4;for(let d=0,h=0;d<l;d+=4,h++){let f=i[h]*3;u[d]=a[f],u[d+1]=a[f+1],u[d+2]=a[f+2],u[d+3]=255}o.blitImage(s,t,n,r,u,0,!1)}_gradientFilter(s,t,n,r,i,a,o,u){let l=r*i*3,d;if(l===0)return!0;if(l<12){if(a.rQwait("TIGHT",l))return!1;d=a.rQshiftBytes(l)}else{if(d=this._readData(a),d===null)return!1;this._zlibs[s].setInput(d),d=this._zlibs[s].inflate(l),this._zlibs[s].setInput(null)}let h=new Uint8Array(4*r*i),f=0,p=0,g=new Uint8Array(3);for(let k=0;k<r;k++){for(let I=0;I<3;I++){let R=g[I],L=d[p++]+R;h[f++]=L,g[I]=L}h[f++]=255}let w=0,v=new Uint8Array(3),y=new Uint8Array(3);for(let k=1;k<i;k++){g.fill(0),y.fill(0);for(let I=0;I<r;I++){for(let R=0;R<3;R++){v[R]=h[w++];let L=g[R]+v[R]-y[R];L<0?L=0:L>255&&(L=255);let M=d[p++]+L;h[f++]=M,y[R]=v[R],g[R]=M}h[f++]=255,w++}}return o.blitImage(t,n,r,i,h,0,!1),!0}_readData(s){if(this._len===0){if(s.rQwait("TIGHT",3))return null;let n;n=s.rQshift8(),this._len=n&127,n&128&&(n=s.rQshift8(),this._len|=(n&127)<<7,n&128&&(n=s.rQshift8(),this._len|=n<<14))}if(s.rQwait("TIGHT",this._len))return null;let t=s.rQshiftBytes(this._len,!1);return this._len=0,t}_getScratchBuffer(s){return(!this._scratchBuffer||this._scratchBuffer.length<s)&&(this._scratchBuffer=new Uint8Array(s)),this._scratchBuffer}};var Es=class extends gt{_pngRect(s,t,n,r,i,a,o){let u=this._readData(i);return u===null?!1:(a.imageRect(s,t,n,r,"image/png",u),!0)}_basicRect(s,t,n,r,i,a,o,u){throw new Error("BasicCompression received in TightPNG rect")}};var Sn=64,An=64,Ss=class{constructor(){this._length=0,this._inflator=new Xe,this._pixelBuffer=new Uint8Array(Sn*An*4),this._tileBuffer=new Uint8Array(Sn*An*4)}decodeRect(s,t,n,r,i,a,o){if(this._length===0){if(i.rQwait("ZLib data length",4))return!1;this._length=i.rQshift32()}if(i.rQwait("Zlib data",this._length))return!1;let u=i.rQshiftBytes(this._length,!1);this._inflator.setInput(u);for(let l=t;l<t+r;l+=An){let d=Math.min(An,t+r-l);for(let h=s;h<s+n;h+=Sn){let f=Math.min(Sn,s+n-h),p=f*d,g=this._inflator.inflate(1)[0];if(g===0){let w=this._readPixels(p);a.blitImage(h,l,f,d,w,0,!1)}else if(g===1){let w=this._readPixels(1);a.fillRect(h,l,f,d,[w[0],w[1],w[2]])}else if(g>=2&&g<=16){let w=this._decodePaletteTile(g,p,f,d);a.blitImage(h,l,f,d,w,0,!1)}else if(g===128){let w=this._decodeRLETile(p);a.blitImage(h,l,f,d,w,0,!1)}else if(g>=130&&g<=255){let w=this._decodeRLEPaletteTile(g-128,p);a.blitImage(h,l,f,d,w,0,!1)}else throw new Error("Unknown subencoding: "+g)}}return this._length=0,!0}_getBitsPerPixelInPalette(s){if(s<=2)return 1;if(s<=4)return 2;if(s<=16)return 4}_readPixels(s){let t=this._pixelBuffer,n=this._inflator.inflate(3*s);for(let r=0,i=0;r<s*4;r+=4,i+=3)t[r]=n[i],t[r+1]=n[i+1],t[r+2]=n[i+2],t[r+3]=255;return t}_decodePaletteTile(s,t,n,r){let i=this._tileBuffer,a=this._readPixels(s),o=this._getBitsPerPixelInPalette(s),u=(1<<o)-1,l=0,d=this._inflator.inflate(1)[0];for(let h=0;h<r;h++){let f=8-o;for(let p=0;p<n;p++){f<0&&(f=8-o,d=this._inflator.inflate(1)[0]);let g=d>>f&u;i[l]=a[g*4],i[l+1]=a[g*4+1],i[l+2]=a[g*4+2],i[l+3]=a[g*4+3],l+=4,f-=o}f<8-o&&h<r-1&&(d=this._inflator.inflate(1)[0])}return i}_decodeRLETile(s){let t=this._tileBuffer,n=0;for(;n<s;){let r=this._readPixels(1),i=this._readRLELength();for(let a=0;a<i;a++)t[n*4]=r[0],t[n*4+1]=r[1],t[n*4+2]=r[2],t[n*4+3]=r[3],n++}return t}_decodeRLEPaletteTile(s,t){let n=this._tileBuffer,r=this._readPixels(s),i=0;for(;i<t;){let a=this._inflator.inflate(1)[0],o=1;if(a>=128&&(a-=128,o=this._readRLELength()),a>s)throw new Error("Too big index in palette: "+a+", palette size: "+s);if(i+o>t)throw new Error("Too big rle length in palette mode: "+o+", allowed length is: "+(t-i));for(let u=0;u<o;u++)n[i*4]=r[a*4],n[i*4+1]=r[a*4+1],n[i*4+2]=r[a*4+2],n[i*4+3]=r[a*4+3],i++}return n}_readRLELength(){let s=0,t=0;do t=this._inflator.inflate(1)[0],s+=t;while(t===255);return s+1}};var As=class{constructor(){this._cachedQuantTables=[],this._cachedHuffmanTables=[],this._segments=[]}decodeRect(s,t,n,r,i,a,o){for(;;){let p=this._readSegment(i);if(p===null)return!1;if(this._segments.push(p),p[1]===217)break}let u=[],l=[];for(let p of this._segments){let g=p[1];g===196?u.push(p):g===219&&l.push(p)}let d=this._segments.findIndex(p=>p[1]==192||p[1]==194);if(d==-1)throw new Error("Illegal JPEG image without SOF");l.length===0&&this._segments.splice(d+1,0,...this._cachedQuantTables),u.length===0&&this._segments.splice(d+1,0,...this._cachedHuffmanTables);let h=0;for(let p of this._segments)h+=p.length;let f=new Uint8Array(h);h=0;for(let p of this._segments)f.set(p,h),h+=p.length;return a.imageRect(s,t,n,r,"image/jpeg",f),u.length!==0&&(this._cachedHuffmanTables=u),l.length!==0&&(this._cachedQuantTables=l),this._segments=[],!0}_readSegment(s){if(s.rQwait("JPEG",2))return null;let t=s.rQshift8();if(t!=255)throw new Error("Illegal JPEG marker received (byte: "+t+")");let n=s.rQshift8();if(n>=208&&n<=217||n==1)return new Uint8Array([t,n]);if(s.rQwait("JPEG",2,2))return null;let r=s.rQshift16();if(r<2)throw new Error("Illegal JPEG length received (length: "+r+")");if(s.rQwait("JPEG",r-2,4))return null;let i=0;if(n===218){if(s.rQwait("JPEG",r-2+2,4))return null;let o=s.rQlen(),u=s.rQpeekBytes(o,!1);for(;;){let l=u.indexOf(255,r-2+i);if(l===-1||l===o-1)return s.rQwait("JPEG",1/0,4),null;if(u.at(l+1)===0||u.at(l+1)>=208&&u.at(l+1)<=215){i=l+2-(r-2);continue}i=l-(r-2);break}}let a=new Uint8Array(2+r+i);return a[0]=t,a[1]=n,a[2]=r>>8,a[3]=r,a.set(s.rQshiftBytes(r-2+i,!1),4),a}};var Qr=class{constructor(s){this._data=s,this._index=0,this.profileIdc=null,this.constraintSet=null,this.levelIdc=null}_getStartSequenceLen(s){let t=this._data;return t[s+0]==0&&t[s+1]==0&&t[s+2]==0&&t[s+3]==1?4:t[s+0]==0&&t[s+1]==0&&t[s+2]==1?3:0}_indexOfNextNalUnit(s){let t=this._data;for(let n=s;n<t.length;++n)if(this._getStartSequenceLen(n)!=0)return n;return-1}_parseSps(s){this.profileIdc=this._data[s],this.constraintSet=this._data[s+1],this.levelIdc=this._data[s+2]}_parseNalUnit(s){let t=this._data[s];if(t&128)throw new Error("H264 parsing sanity check failed, forbidden zero bit is set");let n=t&31;switch(n){case 1:return{slice:!0};case 5:return{slice:!0,key:!0};case 6:return{};case 7:return this._parseSps(s+1),{};case 8:return{};default:he("Unhandled unit type: ",n);break}return{}}parse(){let s=this._index,t=!1;for(;this._index<this._data.length;){let n=this._getStartSequenceLen(this._index);if(n==0)throw new Error("Invalid start sequence in bit stream");let{slice:r,key:i}=this._parseNalUnit(this._index+n),a=this._indexOfNextNalUnit(this._index+n);if(a==-1?this._index=this._data.length:this._index=a,i&&(t=!0),r)break}return s===this._index?null:{frame:this._data.subarray(s,this._index),key:t}}},Ur=class{constructor(s,t){this.lastUsed=0,this._width=s,this._height=t,this._profileIdc=null,this._constraintSet=null,this._levelIdc=null,this._decoder=null,this._pendingFrames=[]}_handleFrame(s){let t=this._pendingFrames.shift();if(t===void 0)throw new Error("Pending frame queue empty when receiving frame from decoder");if(t.timestamp!=s.timestamp)throw new Error("Video frame timestamp mismatch. Expected "+s.timestamp+" but but got "+t.timestamp);t.frame=s,t.ready=!0,t.resolve(),t.keep||s.close()}_handleError(s){throw new Error("Failed to decode frame: "+s.message)}_configureDecoder(s,t,n){(this._decoder===null||this._decoder.state==="closed")&&(this._decoder=new VideoDecoder({output:i=>this._handleFrame(i),error:i=>this._handleError(i)}));let r="avc1."+s.toString(16).padStart(2,"0")+t.toString(16).padStart(2,"0")+n.toString(16).padStart(2,"0");this._decoder.configure({codec:r,codedWidth:this._width,codedHeight:this._height,optimizeForLatency:!0})}_preparePendingFrame(s){let t={timestamp:s,promise:null,resolve:null,frame:null,ready:!1,keep:!1};return t.promise=new Promise(n=>{t.resolve=n}),this._pendingFrames.push(t),t}decode(s){let t=new Qr(s),n=null,r=Math.round(window.performance.now()*1e3);for(;;){let i=t.parse();if(i===null)break;if(t.profileIdc!==null&&(self._profileIdc=t.profileIdc,self._constraintSet=t.constraintSet,self._levelIdc=t.levelIdc),this._decoder===null||this._decoder.state!=="configured"){if(!i.key){he("Missing key frame. Can't decode until one arrives");continue}if(self._profileIdc===null){he("Cannot config decoder. Have not received SPS and PPS yet.");continue}this._configureDecoder(self._profileIdc,self._constraintSet,self._levelIdc)}n=this._preparePendingFrame(r);let a=new EncodedVideoChunk({timestamp:r,type:i.key?"key":"delta",data:i.frame});try{this._decoder.decode(a)}catch(o){he("Failed to decode:",o)}}return n!==null&&(n.keep=!0),n}},Cs=class{constructor(){this._tick=0,this._contexts={}}_contextId(s,t,n,r){return[s,t,n,r].join(",")}_findOldestContextId(){let s=Number.MAX_VALUE,t;for(let[n,r]of Object.entries(this._contexts))r.lastUsed<s&&(s=r.lastUsed,t=n);return t}_createContext(s,t,n,r){if(Object.keys(this._contexts).length>=64){let o=this._findOldestContextId();delete this._contexts[o]}let a=new Ur(n,r);return this._contexts[this._contextId(s,t,n,r)]=a,a}_getContext(s,t,n,r){let i=this._contexts[this._contextId(s,t,n,r)];return i!==void 0?i:this._createContext(s,t,n,r)}_resetContext(s,t,n,r){delete this._contexts[this._contextId(s,t,n,r)]}_resetAllContexts(){this._contexts={}}decodeRect(s,t,n,r,i,a,o){if(i.rQwait("h264 header",8))return!1;let d=i.rQshift32(),h=i.rQshift32();if(i.rQwait("h264 payload",d,8))return!1;h&2?this._resetAllContexts():h&1&&this._resetContext(s,t,n,r);let f=this._getContext(s,t,n,r);if(f.lastUsed=this._tick++,d!==0){let p=i.rQshiftBytes(d,!1),g=f.decode(p);g!==null&&a.videoFrame(s,t,n,r,g)}return!0}};var Eu=3,Su="rgb(40, 40, 40)",vo=17,yo=50,wo=19,Ts=75,Ve=50,Au=1e3,Cu=50,ko=1,Cn=2,Eo=6,So=16,zr=19,Ao=22,Co=30,To=113,Xo=129,No=256,Re=1;var Fo=1<<24,Tn=1<<25,Ko=1<<26,Xs=1<<27,Xn=1<<28,ye=class e extends ct{constructor(s,t,n){if(!s)throw new Error("Must specify target");if(!t)throw new Error("Must specify URL, WebSocket or RTCDataChannel");window.isSecureContext||ne("noVNC requires a secure context (TLS). Expect crashes!"),super(),this._target=s,typeof t=="string"?this._url=t:(this._url=null,this._rawChannel=t),n=n||{},this._rfbCredentials=n.credentials||{},this._shared="shared"in n?!!n.shared:!0,this._repeaterID=n.repeaterID||"",this._wsProtocols=n.wsProtocols||[],this._rfbConnectionState="",this._rfbInitState="",this._rfbAuthScheme=-1,this._rfbCleanDisconnect=!0,this._rfbRSAAESAuthenticationState=null,this._rfbVersion=0,this._rfbMaxVersion=3.8,this._rfbTightVNC=!1,this._rfbVeNCryptState=0,this._rfbXvpVer=0,this._fbWidth=0,this._fbHeight=0,this._fbName="",this._capabilities={power:!1},this._supportsFence=!1,this._supportsContinuousUpdates=!1,this._enabledContinuousUpdates=!1,this._supportsSetDesktopSize=!1,this._screenID=0,this._screenFlags=0,this._pendingRemoteResize=!1,this._lastResize=0,this._qemuExtKeyEventSupported=!1,this._extendedPointerEventSupported=!1,this._clipboardText=null,this._clipboardServerCapabilitiesActions={},this._clipboardServerCapabilitiesFormats={},this._sock=null,this._display=null,this._flushing=!1,this._keyboard=null,this._gestures=null,this._resizeObserver=null,this._disconnTimer=null,this._resizeTimeout=null,this._mouseMoveTimer=null,this._decoders={},this._FBU={rects:0,x:0,y:0,width:0,height:0,encoding:null},this._mousePos={},this._mouseButtonMask=0,this._mouseLastMoveTime=0,this._viewportDragging=!1,this._viewportDragPos={},this._viewportHasMoved=!1,this._accumulatedWheelDeltaX=0,this._accumulatedWheelDeltaY=0,this._gestureLastTapTime=null,this._gestureFirstDoubleTapEv=null,this._gestureLastMagnitudeX=0,this._gestureLastMagnitudeY=0,this._eventHandlers={focusCanvas:this._focusCanvas.bind(this),handleResize:this._handleResize.bind(this),handleMouse:this._handleMouse.bind(this),handleWheel:this._handleWheel.bind(this),handleGesture:this._handleGesture.bind(this),handleRSAAESCredentialsRequired:this._handleRSAAESCredentialsRequired.bind(this),handleRSAAESServerVerification:this._handleRSAAESServerVerification.bind(this)},V(">> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=Su,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._screen.appendChild(this._canvas),this._cursor=new ms,this._cursorImage=e.cursors.none,this._decoders[W.encodingRaw]=new bs,this._decoders[W.encodingCopyRect]=new vs,this._decoders[W.encodingRRE]=new ys,this._decoders[W.encodingHextile]=new ws,this._decoders[W.encodingZlib]=new ks,this._decoders[W.encodingTight]=new gt,this._decoders[W.encodingTightPNG]=new Es,this._decoders[W.encodingZRLE]=new Ss,this._decoders[W.encodingJPEG]=new As,this._decoders[W.encodingH264]=new Cs;try{this._display=new Jt(this._canvas)}catch(r){throw ne("Display exception: "+r),r}this._keyboard=new fs(this._canvas),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._remoteCapsLock=null,this._remoteNumLock=null,this._gestures=new ps,this._sock=new xs,this._sock.on("open",this._socketOpen.bind(this)),this._sock.on("close",this._socketClose.bind(this)),this._sock.on("message",this._handleMessage.bind(this)),this._sock.on("error",this._socketError.bind(this)),this._expectedClientWidth=null,this._expectedClientHeight=null,this._resizeObserver=new ResizeObserver(this._eventHandlers.handleResize),this._updateConnectionState("connecting"),V("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this._viewOnly=!1,this._clipViewport=!1,this._clippingViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._showDotCursor=!1,this._qualityLevel=6,this._compressionLevel=2}get viewOnly(){return this._viewOnly}set viewOnly(s){this._viewOnly=s,(this._rfbConnectionState==="connecting"||this._rfbConnectionState==="connected")&&(s?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get clippingViewport(){return this._clippingViewport}_setClippingViewport(s){s!==this._clippingViewport&&(this._clippingViewport=s,this.dispatchEvent(new CustomEvent("clippingviewport",{detail:this._clippingViewport})))}get touchButton(){return 0}set touchButton(s){he("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(s){this._clipViewport=s,this._updateClip()}get scaleViewport(){return this._scaleViewport}set scaleViewport(s){this._scaleViewport=s,s&&this._clipViewport&&this._updateClip(),this._updateScale(),!s&&this._clipViewport&&this._updateClip()}get resizeSession(){return this._resizeSession}set resizeSession(s){this._resizeSession=s,s&&this._requestRemoteResize()}get showDotCursor(){return this._showDotCursor}set showDotCursor(s){this._showDotCursor=s,this._refreshCursor()}get background(){return this._screen.style.background}set background(s){this._screen.style.background=s}get qualityLevel(){return this._qualityLevel}set qualityLevel(s){if(!Number.isInteger(s)||s<0||s>9){ne("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==s&&(this._qualityLevel=s,this._rfbConnectionState==="connected"&&this._sendEncodings())}get compressionLevel(){return this._compressionLevel}set compressionLevel(s){if(!Number.isInteger(s)||s<0||s>9){ne("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==s&&(this._compressionLevel=s,this._rfbConnectionState==="connected"&&this._sendEncodings())}disconnect(){this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.disconnect()}approveServer(){this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.approveServer()}sendCredentials(s){this._rfbCredentials=s,this._resumeAuthentication()}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(ue("Sending Ctrl-Alt-Del"),this.sendKey(x.XK_Control_L,"ControlLeft",!0),this.sendKey(x.XK_Alt_L,"AltLeft",!0),this.sendKey(x.XK_Delete,"Delete",!0),this.sendKey(x.XK_Delete,"Delete",!1),this.sendKey(x.XK_Alt_L,"AltLeft",!1),this.sendKey(x.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(s,t,n){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(n===void 0){this.sendKey(s,t,!0),this.sendKey(s,t,!1);return}let r=lo[t];if(this._qemuExtKeyEventSupported&&r)s=s||0,ue("Sending key ("+(n?"down":"up")+"): keysym "+s+", scancode "+r),e.messages.QEMUExtendedKeyEvent(this._sock,s,n,r);else{if(!s)return;ue("Sending keysym ("+(n?"down":"up")+"): "+s),e.messages.keyEvent(this._sock,s,n?1:0)}}focus(s){this._canvas.focus(s)}blur(){this._canvas.blur()}clipboardPasteFrom(s){if(!(this._rfbConnectionState!=="connected"||this._viewOnly))if(this._clipboardServerCapabilitiesFormats[Re]&&this._clipboardServerCapabilitiesActions[Xs])this._clipboardText=s,e.messages.extendedClipboardNotify(this._sock,[Re]);else{let t,n,r;t=0;for(let i of s)t++;r=new Uint8Array(t),n=0;for(let i of s){let a=i.codePointAt(0);a>255&&(a=63),r[n++]=a}e.messages.clientCutText(this._sock,r)}}getImageData(){return this._display.getImageData()}toDataURL(s,t){return this._display.toDataURL(s,t)}toBlob(s,t,n){return this._display.toBlob(s,t,n)}_connect(){if(V(">> RFB.connect"),this._url)ue(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols);else{if(ue(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel),this._sock.readyState==="closed")throw Error("Cannot use already closed WebSocket/RTCDataChannel");this._sock.readyState==="open"&&this._socketOpen()}this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),this._resizeObserver.observe(this._screen),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),V("<< RFB.connect")}_disconnect(){V(">> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._resizeObserver.disconnect(),this._keyboard.ungrab(),this._gestures.detach(),this._sock.close();try{this._target.removeChild(this._screen)}catch(s){if(s.name!=="NotFoundError")throw s}clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),V("<< RFB.disconnect")}_socketOpen(){this._rfbConnectionState==="connecting"&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",V("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}_socketClose(s){V("WebSocket on-close event");let t="";switch(s.code&&(t="(code: "+s.code,s.reason&&(t+=", reason: "+s.reason),t+=")"),this._rfbConnectionState){case"connecting":this._fail("Connection closed "+t);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+t);break;default:this._fail("Unexpected server disconnect before connecting "+t);break}this._sock.off("close"),this._rawChannel=null}_socketError(s){he("WebSocket on-error event")}_focusCanvas(s){this.focusOnClick&&this.focus({preventScroll:!0})}_setDesktopName(s){this._fbName=s,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_saveExpectedClientSize(){this._expectedClientWidth=this._screen.clientWidth,this._expectedClientHeight=this._screen.clientHeight}_currentClientSize(){return[this._screen.clientWidth,this._screen.clientHeight]}_clientHasExpectedSize(){let[s,t]=this._currentClientSize();return s==this._expectedClientWidth&&t==this._expectedClientHeight}_handleResize(){this._clientHasExpectedSize()||(window.requestAnimationFrame(()=>{this._updateClip(),this._updateScale(),this._saveExpectedClientSize()}),this._requestRemoteResize())}_updateClip(){let s=this._display.clipViewport,t=this._clipViewport;if(this._scaleViewport&&(t=!1),s!==t&&(this._display.clipViewport=t),t){let n=this._screenSize();this._display.viewportChangeSize(n.w,n.h),this._fixScrollbars(),this._setClippingViewport(n.w<this._display.width||n.h<this._display.height)}else this._setClippingViewport(!1);s!==t&&this._saveExpectedClientSize()}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{let s=this._screenSize();this._display.autoscale(s.w,s.h)}this._fixScrollbars()}_requestRemoteResize(){if(!this._resizeSession||this._viewOnly||!this._supportsSetDesktopSize||this._pendingRemoteResize)return;if(Date.now()-this._lastResize<100){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),100-(Date.now()-this._lastResize));return}this._resizeTimeout=null;let s=this._screenSize();s.w===this._fbWidth&&s.h===this._fbHeight||(this._pendingRemoteResize=!0,this._lastResize=Date.now(),e.messages.setDesktopSize(this._sock,Math.floor(s.w),Math.floor(s.h),this._screenID,this._screenFlags),V("Requested new desktop size: "+s.w+"x"+s.h))}_screenSize(){let s=this._screen.getBoundingClientRect();return{w:s.width,h:s.height}}_fixScrollbars(){let s=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=s}_updateConnectionState(s){let t=this._rfbConnectionState;if(s===t){V("Already in state '"+s+"', ignoring");return}if(t==="disconnected"){ne("Tried changing state of a disconnected RFB object");return}switch(s){case"connected":if(t!=="connecting"){ne("Bad transition to connected state, previous connection state: "+t);return}break;case"disconnected":if(t!=="disconnecting"){ne("Bad transition to disconnected state, previous connection state: "+t);return}break;case"connecting":if(t!==""){ne("Bad transition to connecting state, previous connection state: "+t);return}break;case"disconnecting":if(t!=="connected"&&t!=="connecting"){ne("Bad transition to disconnecting state, previous connection state: "+t);return}break;default:ne("Unknown connection state: "+s);return}switch(this._rfbConnectionState=s,V("New state '"+s+"', was '"+t+"'."),this._disconnTimer&&s!=="disconnecting"&&(V("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._sock.off("close")),s){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._disconnect(),this._disconnTimer=setTimeout(()=>{ne("Disconnection timed out."),this._updateConnectionState("disconnected")},Eu*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect}}));break}}_fail(s){switch(this._rfbConnectionState){case"disconnecting":ne("Failed when disconnecting: "+s);break;case"connected":ne("Failed while connected: "+s);break;case"connecting":ne("Failed when connecting: "+s);break;default:ne("RFB failure: "+s);break}return this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(s,t){this._capabilities[s]=t,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_handleMessage(){if(this._sock.rQwait("message",1)){he("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":ne("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQwait("message",1)););break;case"connecting":for(;this._rfbConnectionState==="connecting"&&this._initMsg(););break;default:ne("Got data while in an invalid state");break}}_handleKeyEvent(s,t,n,r,i){t=="CapsLock"&&n&&(this._remoteCapsLock=null),this._remoteCapsLock!==null&&i!==null&&this._remoteCapsLock!==i&&n&&(V("Fixing remote caps lock"),this.sendKey(x.XK_Caps_Lock,"CapsLock",!0),this.sendKey(x.XK_Caps_Lock,"CapsLock",!1),this._remoteCapsLock=null),t=="NumLock"&&n&&(this._remoteNumLock=null),this._remoteNumLock!==null&&r!==null&&this._remoteNumLock!==r&&n&&(V("Fixing remote num lock"),this.sendKey(x.XK_Num_Lock,"NumLock",!0),this.sendKey(x.XK_Num_Lock,"NumLock",!1),this._remoteNumLock=null),this.sendKey(s,t,n)}static _convertButtonMask(s){let t={0:1,1:4,2:2,3:128,4:256},n=0;for(let r=0;r<5;r++)s&1<<r&&(n|=t[r]);return n}_handleMouse(s){if(s.type==="click"&&s.target!==this._canvas||(s.stopPropagation(),s.preventDefault(),s.type==="click"||s.type==="contextmenu"))return;let t=Nt(s.clientX,s.clientY,this._canvas),n=e._convertButtonMask(s.buttons),r=s.type=="mousedown";switch(s.type){case"mousedown":case"mouseup":if(this.dragViewport)if(r&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:t.x,y:t.y},this._viewportHasMoved=!1,this._flushMouseMoveTimer(t.x,t.y),this._mouseButtonMask=n;break}else{if(this._viewportDragging=!1,this._viewportHasMoved){this._mouseButtonMask=n;break}this._sendMouse(t.x,t.y,this._mouseButtonMask)}r&&Qi(this._canvas),this._handleMouseButton(t.x,t.y,n);break;case"mousemove":if(this._viewportDragging){let i=this._viewportDragPos.x-t.x,a=this._viewportDragPos.y-t.y;(this._viewportHasMoved||Math.abs(i)>Yt||Math.abs(a)>Yt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:t.x,y:t.y},this._display.viewportChangePos(i,a));break}this._handleMouseMove(t.x,t.y);break}}_handleMouseButton(s,t,n){this._flushMouseMoveTimer(s,t),this._mouseButtonMask=n,this._sendMouse(s,t,this._mouseButtonMask)}_handleMouseMove(s,t){if(this._mousePos={x:s,y:t},this._mouseMoveTimer==null){let n=Date.now()-this._mouseLastMoveTime;n>vo?(this._sendMouse(s,t,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},vo-n)}}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_sendMouse(s,t,n){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(n&32768)throw new Error("Illegal mouse button mask (mask: "+n+")");let r=n&32640;this._extendedPointerEventSupported&&r?e.messages.extendedPointerEvent(this._sock,this._display.absX(s),this._display.absY(t),n):e.messages.pointerEvent(this._sock,this._display.absX(s),this._display.absY(t),n)}_handleWheel(s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;s.stopPropagation(),s.preventDefault();let t=Nt(s.clientX,s.clientY,this._canvas),n=e._convertButtonMask(s.buttons),r=s.deltaX,i=s.deltaY;s.deltaMode!==0&&(r*=wo,i*=wo),this._accumulatedWheelDeltaX+=r,this._accumulatedWheelDeltaY+=i,Math.abs(this._accumulatedWheelDeltaX)>=yo&&(this._accumulatedWheelDeltaX<0?(this._handleMouseButton(t.x,t.y,n|32),this._handleMouseButton(t.x,t.y,n)):this._accumulatedWheelDeltaX>0&&(this._handleMouseButton(t.x,t.y,n|64),this._handleMouseButton(t.x,t.y,n)),this._accumulatedWheelDeltaX=0),Math.abs(this._accumulatedWheelDeltaY)>=yo&&(this._accumulatedWheelDeltaY<0?(this._handleMouseButton(t.x,t.y,n|8),this._handleMouseButton(t.x,t.y,n)):this._accumulatedWheelDeltaY>0&&(this._handleMouseButton(t.x,t.y,n|16),this._handleMouseButton(t.x,t.y,n)),this._accumulatedWheelDeltaY=0)}_fakeMouseMove(s,t,n){this._handleMouseMove(t,n),this._cursor.move(s.detail.clientX,s.detail.clientY)}_handleTapEvent(s,t){let n=Nt(s.detail.clientX,s.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTime<Au&&this._gestureFirstDoubleTapEv.detail.type===s.detail.type){let r=this._gestureFirstDoubleTapEv.detail.clientX-s.detail.clientX,i=this._gestureFirstDoubleTapEv.detail.clientY-s.detail.clientY;Math.hypot(r,i)<Cu?n=Nt(this._gestureFirstDoubleTapEv.detail.clientX,this._gestureFirstDoubleTapEv.detail.clientY,this._canvas):this._gestureFirstDoubleTapEv=s}else this._gestureFirstDoubleTapEv=s;this._gestureLastTapTime=Date.now(),this._fakeMouseMove(this._gestureFirstDoubleTapEv,n.x,n.y),this._handleMouseButton(n.x,n.y,t),this._handleMouseButton(n.x,n.y,0)}_handleGesture(s){let t,n=Nt(s.detail.clientX,s.detail.clientY,this._canvas);switch(s.type){case"gesturestart":switch(s.detail.type){case"onetap":this._handleTapEvent(s,1);break;case"twotap":this._handleTapEvent(s,4);break;case"threetap":this._handleTapEvent(s,2);break;case"drag":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragging=!0,this._viewportDragPos={x:n.x,y:n.y}):(this._fakeMouseMove(s,n.x,n.y),this._handleMouseButton(n.x,n.y,1));break;case"longpress":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragPos={x:n.x,y:n.y}):(this._fakeMouseMove(s,n.x,n.y),this._handleMouseButton(n.x,n.y,4));break;case"twodrag":this._gestureLastMagnitudeX=s.detail.magnitudeX,this._gestureLastMagnitudeY=s.detail.magnitudeY,this._fakeMouseMove(s,n.x,n.y);break;case"pinch":this._gestureLastMagnitudeX=Math.hypot(s.detail.magnitudeX,s.detail.magnitudeY),this._fakeMouseMove(s,n.x,n.y);break}break;case"gesturemove":switch(s.detail.type){case"onetap":case"twotap":case"threetap":break;case"drag":case"longpress":if(this.dragViewport){this._viewportDragging=!0;let r=this._viewportDragPos.x-n.x,i=this._viewportDragPos.y-n.y;(this._viewportHasMoved||Math.abs(r)>Yt||Math.abs(i)>Yt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:n.x,y:n.y},this._display.viewportChangePos(r,i))}else this._fakeMouseMove(s,n.x,n.y);break;case"twodrag":for(this._fakeMouseMove(s,n.x,n.y);s.detail.magnitudeY-this._gestureLastMagnitudeY>Ve;)this._handleMouseButton(n.x,n.y,8),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeY+=Ve;for(;s.detail.magnitudeY-this._gestureLastMagnitudeY<-Ve;)this._handleMouseButton(n.x,n.y,16),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeY-=Ve;for(;s.detail.magnitudeX-this._gestureLastMagnitudeX>Ve;)this._handleMouseButton(n.x,n.y,32),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeX+=Ve;for(;s.detail.magnitudeX-this._gestureLastMagnitudeX<-Ve;)this._handleMouseButton(n.x,n.y,64),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeX-=Ve;break;case"pinch":if(this._fakeMouseMove(s,n.x,n.y),t=Math.hypot(s.detail.magnitudeX,s.detail.magnitudeY),Math.abs(t-this._gestureLastMagnitudeX)>Ts){for(this._handleKeyEvent(x.XK_Control_L,"ControlLeft",!0);t-this._gestureLastMagnitudeX>Ts;)this._handleMouseButton(n.x,n.y,8),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeX+=Ts;for(;t-this._gestureLastMagnitudeX<-Ts;)this._handleMouseButton(n.x,n.y,16),this._handleMouseButton(n.x,n.y,0),this._gestureLastMagnitudeX-=Ts}this._handleKeyEvent(x.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(s.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this.dragViewport?this._viewportDragging=!1:(this._fakeMouseMove(s,n.x,n.y),this._handleMouseButton(n.x,n.y,0));break;case"longpress":if(this._viewportHasMoved)break;this.dragViewport&&!this._viewportHasMoved?(this._fakeMouseMove(s,n.x,n.y),this._handleMouseButton(n.x,n.y,4),this._handleMouseButton(n.x,n.y,0),this._viewportDragging=!1):(this._fakeMouseMove(s,n.x,n.y),this._handleMouseButton(n.x,n.y,0));break}break}}_flushMouseMoveTimer(s,t){this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(s,t,this._mouseButtonMask))}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;let s=this._sock.rQshiftStr(12).substr(4,7);ue("Server ProtocolVersion: "+s);let t=0;switch(s){case"000.000":t=1;break;case"003.003":case"003.006":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"003.889":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+s)}if(t){let r="ID:"+this._repeaterID;for(;r.length<250;)r+="\0";return this._sock.sQpushString(r),this._sock.flush(),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);let n="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sQpushString("RFB "+n+`
|
|
2
|
-
`),this._sock.flush(),V("Sent ProtocolVersion: "+n),this._rfbInitState="Security"}_isSupportedSecurityType(s){return[ko,Cn,Eo,So,zr,Ao,Co,To,No].includes(s)}_negotiateSecurity(){if(this._rfbVersion>=3.7){let s=this._sock.rQshift8();if(this._sock.rQwait("security type",s,1))return!1;if(s===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,!0;let t=this._sock.rQshiftBytes(s);V("Server security types: "+t),this._rfbAuthScheme=-1;for(let n of t)if(this._isSupportedSecurityType(n)){this._rfbAuthScheme=n;break}if(this._rfbAuthScheme===-1)return this._fail("Unsupported security types (types: "+t+")");this._sock.sQpush8(this._rfbAuthScheme),this._sock.flush()}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,!0}return this._rfbInitState="Authentication",V("Authenticating using scheme: "+this._rfbAuthScheme),!0}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;let s=this._sock.rQshift32(),t="";if(s>0){if(this._sock.rQwait("reason",s,4))return!1;t=this._sock.rQshiftStr(s)}return t!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:t}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+t+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1):(this._sock.sQpush8(this._rfbCredentials.username.length),this._sock.sQpush8(this._rfbCredentials.target.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.target),this._sock.flush(),this._rfbAuthScheme=Cn,this._negotiateAuthentication())}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;let s=this._sock.rQshift8(),t=this._sock.rQshift8();if(!(s==0&&t==2))return this._fail("Unsupported VeNCrypt version "+s+"."+t);this._sock.sQpush8(0),this._sock.sQpush8(2),this._sock.flush(),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;let s=this._sock.rQshift8();if(s!=0)return this._fail("VeNCrypt failure "+s);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;let s=this._sock.rQshift8();if(s<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=s,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;let s=[];for(let t=0;t<this._rfbVeNCryptSubtypesLength;t++)s.push(this._sock.rQshift32());this._rfbAuthScheme=-1;for(let t of s)if(t!==zr&&this._isSupportedSecurityType(t)){this._rfbAuthScheme=t;break}return this._rfbAuthScheme===-1?this._fail("Unsupported security types (types: "+s+")"):(this._sock.sQpush32(this._rfbAuthScheme),this._sock.flush(),this._rfbVeNCryptState=4,!0)}}_negotiatePlainAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let s=Te(this._rfbCredentials.username),t=Te(this._rfbCredentials.password);return this._sock.sQpush32(s.length),this._sock.sQpush32(t.length),this._sock.sQpushString(s),this._sock.sQpushString(t),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;if(this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}})),!1;let s=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),t=e.genDES(this._rfbCredentials.password,s);return this._sock.sQpushBytes(t),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateARDAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;if(this._rfbCredentials.ardPublicKey!=null&&this._rfbCredentials.ardCredentials!=null)return this._sock.sQpushBytes(this._rfbCredentials.ardCredentials),this._sock.sQpushBytes(this._rfbCredentials.ardPublicKey),this._sock.flush(),this._rfbCredentials.ardCredentials=null,this._rfbCredentials.ardPublicKey=null,this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("read ard",4))return!1;let s=this._sock.rQshiftBytes(2),t=this._sock.rQshift16();if(this._sock.rQwait("read ard keylength",t*2,4))return!1;let n=this._sock.rQshiftBytes(t),r=this._sock.rQshiftBytes(t),i=oe.generateKey({name:"DH",g:s,p:n},!1,["deriveBits"]);return this._negotiateARDAuthAsync(t,r,i),!1}async _negotiateARDAuthAsync(s,t,n){let r=oe.exportKey("raw",n.publicKey),i=oe.deriveBits({name:"DH",public:t},n.privateKey,s*8),a=Te(this._rfbCredentials.username).substring(0,63),o=Te(this._rfbCredentials.password).substring(0,63),u=window.crypto.getRandomValues(new Uint8Array(128));for(let f=0;f<a.length;f++)u[f]=a.charCodeAt(f);u[a.length]=0;for(let f=0;f<o.length;f++)u[64+f]=o.charCodeAt(f);u[64+o.length]=0;let l=await oe.digest("MD5",i),d=await oe.importKey("raw",l,{name:"AES-ECB"},!1,["encrypt"]),h=await oe.encrypt({name:"AES-ECB"},d,u);this._rfbCredentials.ardCredentials=h,this._rfbCredentials.ardPublicKey=r,this._resumeAuthentication()}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.sQpush32(this._rfbCredentials.username.length),this._sock.sQpush32(this._rfbCredentials.password.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.password),this._sock.flush(),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(s){let t={0:{vendor:"TGHT",signature:"NOTUNNEL"}},n={};for(let r=0;r<s;r++){let i=this._sock.rQshift32(),a=this._sock.rQshiftStr(4),o=this._sock.rQshiftStr(8);n[i]={vendor:a,signature:o}}return V("Server Tight tunnel types: "+n),n[1]&&n[1].vendor==="SICR"&&n[1].signature==="SCHANNEL"&&(V("Detected Siemens server. Assuming NOTUNNEL support."),n[0]={vendor:"TGHT",signature:"NOTUNNEL"}),n[0]?n[0].vendor!=t[0].vendor||n[0].signature!=t[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(V("Selected tunnel type: "+t[0]),this._sock.sQpush32(0),this._sock.flush(),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")}_negotiateTightAuth(){if(!this._rfbTightVNC){if(this._sock.rQwait("num tunnels",4))return!1;let r=this._sock.rQshift32();if(r>0&&this._sock.rQwait("tunnel capabilities",16*r,4))return!1;if(this._rfbTightVNC=!0,r>0)return this._negotiateTightTunnels(r),!1}if(this._sock.rQwait("sub auth count",4))return!1;let s=this._sock.rQshift32();if(s===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*s,4))return!1;let t={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},n=[];for(let r=0;r<s;r++){this._sock.rQshift32();let i=this._sock.rQshiftStr(12);n.push(i)}V("Server Tight authentication types: "+n);for(let r in t)if(n.indexOf(r)!=-1)switch(this._sock.sQpush32(t[r]),this._sock.flush(),V("Selected authentication type: "+r),r){case"STDVNOAUTH__":return this._rfbInitState="SecurityResult",!0;case"STDVVNCAUTH_":return this._rfbAuthScheme=Cn,!0;case"TGHTULGNAUTH":return this._rfbAuthScheme=Xo,!0;default:return this._fail("Unsupported tiny auth scheme (scheme: "+r+")")}return this._fail("No supported sub-auth types!")}_handleRSAAESCredentialsRequired(s){this.dispatchEvent(s)}_handleRSAAESServerVerification(s){this.dispatchEvent(s)}_negotiateRA2neAuth(){return this._rfbRSAAESAuthenticationState===null&&(this._rfbRSAAESAuthenticationState=new gs(this._sock,()=>this._rfbCredentials),this._rfbRSAAESAuthenticationState.addEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.addEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired)),this._rfbRSAAESAuthenticationState.checkInternalEvents(),this._rfbRSAAESAuthenticationState.hasStarted||this._rfbRSAAESAuthenticationState.negotiateRA2neAuthAsync().catch(s=>{s.message!=="disconnect normally"&&this._fail(s.message)}).then(()=>(this._rfbInitState="SecurityResult",!0)).finally(()=>{this._rfbRSAAESAuthenticationState.removeEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.removeEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired),this._rfbRSAAESAuthenticationState=null}),!1}_negotiateMSLogonIIAuth(){if(this._sock.rQwait("mslogonii dh param",24))return!1;if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let s=this._sock.rQshiftBytes(8),t=this._sock.rQshiftBytes(8),n=this._sock.rQshiftBytes(8),r=oe.generateKey({name:"DH",g:s,p:t},!0,["deriveBits"]),i=oe.exportKey("raw",r.publicKey),a=oe.deriveBits({name:"DH",public:n},r.privateKey,64),o=oe.importKey("raw",a,{name:"DES-CBC"},!1,["encrypt"]),u=Te(this._rfbCredentials.username).substring(0,255),l=Te(this._rfbCredentials.password).substring(0,63),d=new Uint8Array(256),h=new Uint8Array(64);window.crypto.getRandomValues(d),window.crypto.getRandomValues(h);for(let f=0;f<u.length;f++)d[f]=u.charCodeAt(f);d[u.length]=0;for(let f=0;f<l.length;f++)h[f]=l.charCodeAt(f);return h[l.length]=0,d=oe.encrypt({name:"DES-CBC",iv:a},o,d),h=oe.encrypt({name:"DES-CBC",iv:a},o,h),this._sock.sQpushBytes(i),this._sock.sQpushBytes(d),this._sock.sQpushBytes(h),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateAuthentication(){switch(this._rfbAuthScheme){case ko:return this._rfbVersion>=3.8?this._rfbInitState="SecurityResult":this._rfbInitState="ClientInitialisation",!0;case Ao:return this._negotiateXvpAuth();case Co:return this._negotiateARDAuth();case Cn:return this._negotiateStdVNCAuth();case So:return this._negotiateTightAuth();case zr:return this._negotiateVeNCryptAuth();case No:return this._negotiatePlainAuth();case Xo:return this._negotiateTightUnixAuth();case Eo:return this._negotiateRA2neAuth();case To:return this._negotiateMSLogonIIAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;let s=this._sock.rQshift32();return s===0?(this._rfbInitState="ClientInitialisation",V("Authentication OK"),!0):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=s,!0):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:s}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;let s=this._sock.rQshift16(),t=this._sock.rQshift16(),n=this._sock.rQshift8(),r=this._sock.rQshift8(),i=this._sock.rQshift8(),a=this._sock.rQshift8(),o=this._sock.rQshift16(),u=this._sock.rQshift16(),l=this._sock.rQshift16(),d=this._sock.rQshift8(),h=this._sock.rQshift8(),f=this._sock.rQshift8();this._sock.rQskipBytes(3);let p=this._sock.rQshift32();if(this._sock.rQwait("server init name",p,24))return!1;let g=this._sock.rQshiftStr(p);if(g=Js(g,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+p))return!1;let w=this._sock.rQshift16(),v=this._sock.rQshift16(),y=this._sock.rQshift16();this._sock.rQskipBytes(2);let k=(w+v+y)*16;if(this._sock.rQwait("TightVNC extended server init header",k,32+p))return!1;this._sock.rQskipBytes(16*w),this._sock.rQskipBytes(16*v),this._sock.rQskipBytes(16*y)}return ue("Screen: "+s+"x"+t+", bpp: "+n+", depth: "+r+", bigEndian: "+i+", trueColor: "+a+", redMax: "+o+", greenMax: "+u+", blueMax: "+l+", redShift: "+d+", greenShift: "+h+", blueShift: "+f),this._setDesktopName(g),this._resize(s,t),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(he("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),e.messages.pixelFormat(this._sock,this._fbDepth,!0),this._sendEncodings(),e.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),!0}_sendEncodings(){let s=[];s.push(W.encodingCopyRect),this._fbDepth==24&&(or&&s.push(W.encodingH264),s.push(W.encodingTight),s.push(W.encodingTightPNG),s.push(W.encodingZRLE),s.push(W.encodingJPEG),s.push(W.encodingHextile),s.push(W.encodingRRE),s.push(W.encodingZlib)),s.push(W.encodingRaw),s.push(W.pseudoEncodingQualityLevel0+this._qualityLevel),s.push(W.pseudoEncodingCompressLevel0+this._compressionLevel),s.push(W.pseudoEncodingDesktopSize),s.push(W.pseudoEncodingLastRect),s.push(W.pseudoEncodingQEMUExtendedKeyEvent),s.push(W.pseudoEncodingQEMULedEvent),s.push(W.pseudoEncodingExtendedDesktopSize),s.push(W.pseudoEncodingXvp),s.push(W.pseudoEncodingFence),s.push(W.pseudoEncodingContinuousUpdates),s.push(W.pseudoEncodingDesktopName),s.push(W.pseudoEncodingExtendedClipboard),s.push(W.pseudoEncodingExtendedMouseButtons),this._fbDepth==24&&(s.push(W.pseudoEncodingVMwareCursor),s.push(W.pseudoEncodingCursor)),e.messages.clientEncodings(this._sock,s)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.sQpush8(this._shared?1:0),this._sock.flush(),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_resumeAuthentication(){setTimeout(this._initMsg.bind(this),0)}_handleSetColourMapMsg(){return V("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(V("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let s=this._sock.rQshift32();if(s=Zt(s),this._sock.rQwait("ServerCutText content",Math.abs(s),8))return!1;if(s>=0){let t=this._sock.rQshiftStr(s);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:t}}))}else{s=Math.abs(s);let t=this._sock.rQshift32(),n=t&65535,r=t&4278190080;if(!!(r&Fo)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let o=0;o<=15;o++){let u=1<<o;n&u&&(this._clipboardServerCapabilitiesFormats[u]=!0,this._sock.rQshift32())}for(let o=24;o<=31;o++){let u=1<<o;this._clipboardServerCapabilitiesActions[u]=!!(r&u)}let a=[Fo,Tn,Ko,Xs,Xn];e.messages.extendedClipboardCaps(this._sock,a,{extendedClipboardFormatText:0})}else if(r===Tn){if(this._viewOnly)return!0;this._clipboardText!=null&&this._clipboardServerCapabilitiesActions[Xn]&&n&Re&&e.messages.extendedClipboardProvide(this._sock,[Re],[this._clipboardText])}else if(r===Ko){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[Xs]&&(this._clipboardText!=null?e.messages.extendedClipboardNotify(this._sock,[Re]):e.messages.extendedClipboardNotify(this._sock,[]))}else if(r===Xs){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[Tn]&&n&Re&&e.messages.extendedClipboardRequest(this._sock,[Re])}else if(r===Xn){if(this._viewOnly||!(n&Re))return!0;this._clipboardText=null;let a=this._sock.rQshiftBytes(s-4),o=new Xe,u=null;o.setInput(a);for(let l=0;l<=15;l++){let d=1<<l;if(n&d){let h=0,f=o.inflate(4);h|=f[0]<<24,h|=f[1]<<16,h|=f[2]<<8,h|=f[3];let p=o.inflate(h);d===Re&&(u=p)}}if(o.setInput(null),u!==null){let l="";for(let d=0;d<u.length;d++)l+=String.fromCharCode(u[d]);u=l,u=Js(u),u.length>0&&u.charAt(u.length-1)==="\0"&&(u=u.slice(0,-1)),u=u.replaceAll(`\r
|
|
1
|
+
var oc=Object.defineProperty;var lc=(e,n)=>{for(var t in n)oc(e,t,{get:n[t],enumerable:!0})};var St={};lc(St,{Activity:()=>dc,Children:()=>Hn,Component:()=>Zs,Fragment:()=>Ys,Profiler:()=>uc,PureComponent:()=>hc,StrictMode:()=>fc,Suspense:()=>pc,act:()=>_c,cache:()=>mc,cacheSignal:()=>xc,captureOwnerStack:()=>gc,cloneElement:()=>jt,createContext:()=>bc,createElement:()=>vc,createRef:()=>yc,default:()=>cc,forwardRef:()=>it,isValidElement:()=>Et,lazy:()=>wc,memo:()=>kc,startTransition:()=>Ec,unstable_useCacheRefresh:()=>Sc,use:()=>Ac,useActionState:()=>Cc,useCallback:()=>re,useContext:()=>Tc,useDebugValue:()=>Xc,useDeferredValue:()=>Nc,useEffect:()=>z,useEffectEvent:()=>Kc,useId:()=>Fc,useImperativeHandle:()=>Rc,useInsertionEffect:()=>Lc,useLayoutEffect:()=>Js,useMemo:()=>at,useOptimistic:()=>Ic,useReducer:()=>Dc,useRef:()=>ce,useState:()=>E,useSyncExternalStore:()=>Pc,useTransition:()=>Mc,version:()=>Bc});var qs=globalThis.__bbPluginRuntime;if(qs==null||qs.react==null)throw new Error('Cannot load "react": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var On=qs.react,cc="default"in On?On.default:On,{Activity:dc,Children:Hn,Component:Zs,Fragment:Ys,Profiler:uc,PureComponent:hc,StrictMode:fc,Suspense:pc,act:_c,cache:mc,cacheSignal:xc,captureOwnerStack:gc,cloneElement:jt,createContext:bc,createElement:vc,createRef:yc,forwardRef:it,isValidElement:Et,lazy:wc,memo:kc,startTransition:Ec,unstable_useCacheRefresh:Sc,use:Ac,useActionState:Cc,useCallback:re,useContext:Tc,useDebugValue:Xc,useDeferredValue:Nc,useEffect:z,useEffectEvent:Kc,useId:Fc,useImperativeHandle:Rc,useInsertionEffect:Lc,useLayoutEffect:Js,useMemo:at,useOptimistic:Ic,useReducer:Dc,useRef:ce,useState:E,useSyncExternalStore:Pc,useTransition:Mc,version:Bc}=On;function bi(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function Oc(...e){return n=>{let t=!1,s=e.map(r=>{let i=bi(r,n);return!t&&typeof i=="function"&&(t=!0),i});if(t)return()=>{for(let r=0;r<s.length;r++){let i=s[r];typeof i=="function"?i():bi(e[r],null)}}}}function vi(...e){return re(Oc(...e),e)}function Hc(e){let n=it((t,s)=>{let{children:r,...i}=t,a=null,o=!1,u=[];yi(r)&&typeof Qn=="function"&&(r=Qn(r._payload)),Hn.forEach(r,f=>{if(Vc(f)){o=!0;let p=f,x="child"in p.props?p.props.child:p.props.children;yi(x)&&typeof Qn=="function"&&(x=Qn(x._payload)),a=Uc(p,x),u.push(a?.props?.children)}else u.push(f)}),a?a=jt(a,void 0,u):!o&&Hn.count(r)===1&&Et(r)&&(a=r);let l=a?$c(a):void 0,d=vi(s,l);if(!a){if(r||r===0)throw new Error(o?qc(e):jc(e));return r}let h=zc(i,a.props??{});return a.type!==Ys&&(h.ref=s?d:l),jt(a,h)});return n.displayName=`${e}.Slot`,n}var wi=Hc("Slot"),Qc=Symbol.for("radix.slottable");var Uc=(e,n)=>{if("child"in e.props){let t=e.props.child;return Et(t)?jt(t,void 0,e.props.children(t.props.children)):null}return Et(n)?n:null};function zc(e,n){let t={...n};for(let s in n){let r=e[s],i=n[s];/^on[A-Z]/.test(s)?r&&i?t[s]=(...o)=>{let u=i(...o);return r(...o),u}:r&&(t[s]=r):s==="style"?t[s]={...r,...i}:s==="className"&&(t[s]=[r,i].filter(Boolean).join(" "))}return{...e,...t}}function $c(e){let n=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function Vc(e){return Et(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Qc}var Gc=Symbol.for("react.lazy");function yi(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Gc&&"_payload"in e&&Wc(e._payload)}function Wc(e){return typeof e=="object"&&e!==null&&"then"in e}var jc=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,qc=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Qn=St[" use ".trim().toString()];var er=globalThis.__bbPluginRuntime;if(er==null||er.classVarianceAuthority==null)throw new Error('Cannot load "class-variance-authority": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Un=er.classVarianceAuthority,Mh="default"in Un?Un.default:Un,{cva:ki,cx:Bh}=Un;var tr=globalThis.__bbPluginRuntime;if(tr==null||tr.clsx==null)throw new Error('Cannot load "clsx": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var zn=tr.clsx,Hh="default"in zn?zn.default:zn,{clsx:Ei}=zn;var nr=globalThis.__bbPluginRuntime;if(nr==null||nr.tailwindMerge==null)throw new Error('Cannot load "tailwind-merge": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var $n=nr.tailwindMerge,Uh="default"in $n?$n.default:$n,{createTailwindMerge:zh,extendTailwindMerge:$h,fromTheme:Vh,getDefaultConfig:Gh,mergeConfigs:Wh,twJoin:jh,twMerge:Si,validators:qh}=$n;function At(...e){return Si(Ei(e))}var Vn="transition-colors duration-150 hover:duration-0";var sr=globalThis.__bbPluginRuntime;if(sr==null||sr.jsxRuntime==null)throw new Error('Cannot load "react/jsx-runtime": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Gn=sr.jsxRuntime,n0="default"in Gn?Gn.default:Gn,{Fragment:Se,jsx:c,jsxs:_}=Gn;var Zc=ki(`inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ${Vn} focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_[data-icon-root]]:pointer-events-none [&_[data-icon-root]]:size-4 [&_[data-icon-root]]:shrink-0`,{variants:{variant:{default:"bg-foreground text-background hover:bg-foreground/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-transparent hover:bg-state-hover hover:text-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-state-hover hover:text-foreground aria-pressed:bg-state-active aria-pressed:text-foreground aria-pressed:hover:bg-state-active data-[state=open]:bg-state-active data-[state=open]:text-foreground data-[state=open]:hover:bg-state-active",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),F=it(({className:e,variant:n,size:t,asChild:s=!1,...r},i)=>c(s?wi:"button",{className:At(Zc({variant:n,size:t,className:e})),ref:i,...r}));F.displayName="Button";function Ai({interaction:e,submit:n}){let t=e.payload,[s,r]=E(""),[i,a]=E(!1),[o,u]=E("");async function l(d,h=!1){let f=d&&!h&&s?Date.parse(s):null;if(!(i||Date.now()>=t.deadline)){if(f!==null&&(!Number.isFinite(f)||f<=Date.now())){u("Choose a future end time, or leave it empty for no time limit.");return}a(!0);try{await n({approve:d,expiresAt:f,...h?{once:!0}:{}})}catch{u("Your answer did not go through. Try again."),a(!1)}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[_("p",{children:[t.operation&&`This operation: ${t.operation}. `,t.revoke?"Stop using these standing permissions for future work? Work already authorized may finish.":"Let me do these kinds of work without asking you each time? Anything outside these exact limits still asks."]}),t.lines.map((d,h)=>c("p",{children:d},h)),t.decisions.map(d=>c("p",{children:d.description},d.id)),!t.revoke&&_("label",{className:"block",children:["Permission ends (leave empty for no time limit)",c("input",{"aria-label":"Permission ends",className:"block rounded border p-1",type:"datetime-local",value:s,onChange:d=>r(d.target.value)})]}),c("p",{children:"You can list or take back any permission in Settings \u2192 Orbit \u2192 Approvals, or ask me to take one or all back. One original answer in Orbit is enough. A new answer for the same exact scope replaces its earlier decision. Messages and replies elsewhere cannot change these permissions. A summary of each day\u2019s use is available there without root access."}),c("p",{children:"Declining or leaving this unanswered changes nothing."}),o&&c("p",{role:"alert",children:o}),_("div",{className:"flex gap-2",children:[t.operation&&c(F,{disabled:i,onClick:()=>{l(!0,!0)},children:"Approve once"}),c(F,{disabled:i||Date.now()>=t.deadline,onClick:()=>{l(!0)},children:t.revoke?"Take these permissions back":"Allow these kinds of work"}),c(F,{variant:"outline",disabled:i,onClick:()=>{l(!1)},children:"Keep it as it is"})]})]})}var rr=globalThis.__bbPluginRuntime;if(rr==null||rr.pluginSdkApp==null)throw new Error('Cannot load "@get-bb/plugin-sdk/app": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).');var Wn=rr.pluginSdkApp,p0="default"in Wn?Wn.default:Wn,{Markdown:_0,ThreadChat:ir,ThreadTitle:m0,UrlLink:x0,definePluginApp:Ci,experimental_BranchPicker:g0,experimental_ComposerRoot:b0,experimental_DetailRow:v0,experimental_Diff:y0,experimental_FailedVoiceRecordings:w0,experimental_FileLink:k0,experimental_Icon:E0,experimental_ImageLightbox:S0,experimental_InfoList:A0,experimental_InfoListRow:C0,experimental_InfoSection:T0,experimental_NewThreadComposer:X0,experimental_PermissionModePicker:N0,experimental_PluginIcon:K0,experimental_PluginRpcCallError:F0,experimental_PromptMentionIcon:R0,experimental_ProviderIcon:L0,experimental_ProviderModelPicker:I0,experimental_ShortcutHint:D0,experimental_SidebarNavigationIcon:P0,experimental_SourceCode:M0,experimental_THREAD_ACTION_GROUPS:B0,experimental_THREAD_CONTEXT_SEGMENT_GROUPS:O0,experimental_THREAD_INFO_ROW_GROUPS:H0,experimental_THREAD_INFO_SECTION_GROUPS:Q0,experimental_ThreadActionsContextMenu:U0,experimental_ThreadActionsMenu:z0,experimental_ThreadStatusGlyph:Ti,experimental_ThreadTitleText:$0,experimental_VoiceInputButton:V0,experimental_VoiceInputTextarea:G0,experimental_VoiceRecordingBar:W0,experimental_copyToClipboard:j0,experimental_describePromptMention:q0,experimental_promptMentionClipboardAttributes:Z0,experimental_readPromptMentionClipboard:Y0,experimental_saveFile:J0,experimental_useAppPanel:Xi,experimental_useArchiveEnvironmentThreads:ef,experimental_useBranches:tf,experimental_useCheckoutState:nf,experimental_useCodeTheme:sf,experimental_useComposerCommandSearch:rf,experimental_useComposerContributions:af,experimental_useComposerMentionSearch:of,experimental_useComposerRenderer:lf,experimental_useExperiment:cf,experimental_useFixedTabTarget:df,experimental_usePluginId:uf,experimental_useProviders:hf,experimental_useQuestionFormHost:ff,experimental_useRpcKeyedQuery:pf,experimental_useRpcMutation:_f,experimental_useRpcQuery:mf,experimental_useRpcRefresh:xf,experimental_useSidebar:Ni,experimental_useSidebarNavigation:gf,experimental_useSidebarNavigationSplit:bf,experimental_useSidebarThreadActions:vf,experimental_useSidebarThreadSplit:yf,experimental_useSidebarThreads:wf,experimental_useThreadActionRegistrations:kf,experimental_useThreadActions:Ef,experimental_useThreadTitleDisplayText:Sf,useBbContext:Ki,useBbNavigate:jn,useComposer:Fi,useComposerView:Af,useComposers:Cf,useEnvironmentProviders:Tf,useRealtime:Ae,useRealtimeConnectionState:Ri,useRpc:q,useSdk:Li,useSettings:Xf,useSidebarSplitLayout:Nf,useSidebarThreadDraft:Kf,useSidebarThreadDraftIds:Ff,useSidebarThreadRowStatus:Rf,useSidebarThreadRowStatuses:Lf,useSidebarThreadShortcut:If,experimental_useSidebarThreadPullRequest:Df}=Wn;function qn({interaction:e,submit:n}){let t=e.payload,[s,r]=E(!1),[i,a]=E(null);async function o(u){if(!(s||Date.now()>=t.deadline)){r(!0);try{await n({approve:u})}catch{r(!1),a("Your answer did not go through. Try again.")}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[Object.entries(t.lines).map(([u,l])=>_("section",{children:[c("h3",{className:"font-medium",children:u}),c("p",{className:"whitespace-pre-line",children:l})]},u)),_("p",{children:["Declining or leaving this unanswered changes nothing. This question expires ",new Date(t.deadline).toLocaleDateString(),"."]}),i&&c("p",{role:"alert",children:i}),_("div",{className:"flex gap-2",children:[c(F,{disabled:s||Date.now()>=t.deadline,onClick:()=>{o(!0)},children:t.resume?"Resume this cleanup rule":t.enabled?"Switch these rules on":"Switch these rules off"}),c(F,{variant:"outline",disabled:s||Date.now()>=t.deadline,onClick:()=>{o(!1)},children:"Keep it as it is"})]})]})}function Yc({route:e,busy:n,answer:t,cancel:s,expiresAt:r}){return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:[e.what==="spawn"?"Start work":e.what==="tell"?"Send a message":e.what==="relay"?"Relay a message":"Schedule a check"," ",e.what==="relay"?"to":"on"," ",c("span",{className:"font-mono",children:e.station}),e.when&&_("span",{className:"font-normal text-muted-foreground",children:[" (",e.when,")"]})]}),(e.provider||e.model)&&_("div",{className:"mt-1 text-xs",children:["Runs on ",c("span",{className:"font-mono",children:e.provider??"the project's provider"}),e.model&&_(Se,{children:[" ","with ",c("span",{className:"font-mono",children:e.model})]}),e.provider==="codex"&&e.own&&" (Codex, under that machine's own Codex sign-in and settings; Orbit's station protections don't apply)","."]}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:["I\u2019m requesting this from ",e.from,".",e.what==="check"&&" The script runs as orbit on its station, outside Claude Code's sandbox, every time it's due.",e.own&&" I\u2019ll run as you on your machine, with access to your files and accounts.",e.what==="relay"&&" You set this to Ask in Settings \u2192 Orbit \u2192 Relay. The message goes as written below, marked as relayed from Orbit."]})]}),c("div",{className:"font-medium",children:e.title}),c("pre",{className:"max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 font-mono text-xs",children:e.brief}),r&&_("div",{className:"text-xs text-muted-foreground",children:["Expires at ",new Date(r).toLocaleTimeString(),"."]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:n,onClick:()=>t("once"),children:"Approve"}),c(F,{size:"sm",variant:"destructive",disabled:n,onClick:()=>t("deny"),children:"Decline"}),c(F,{size:"sm",variant:"ghost",disabled:n,onClick:()=>{s()},children:"Dismiss"})]})]})}var Jc=e=>({"orbit-keys.service":"Password service","orbit-relay.service":"Station connection","orbit-proton-bridge.service":"Mail connection",mail:"Mail connection",gate:"Station connection",plugin:"Orbit service",turn:"Starting work","mail-check":"Mail check",events:"Background work service"})[e]??e;function ed({switching:e,busy:n,answer:t,cancel:s,expiresAt:r}){let i=e.what==="activate";return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["Switch ",i?"on":"off"," on the station: ",e.piece]}),_("div",{className:"mt-1 text-xs",children:[e.words,"."]})]}),c("div",{className:"text-xs",children:i&&e.recovery?"Every health check still runs. This retry may keep only the known failures below. Another failure or an interrupted switch still undoes it.":i?"I\u2019ll switch this on and check the station\u2019s health. A failed check or interrupted switch restores the previous state.":"I\u2019ll switch this off now. The effect is described above."}),e.recovery&&_("div",{className:"space-y-2 rounded-md border p-2",children:[c("p",{className:"font-medium",children:"Retry and keep this switch if the same checks still fail?"}),c("ul",{className:"list-disc pl-5",children:e.recovery.failures.map(a=>c("li",{children:Jc(a)},a))}),c("p",{children:"Approve retries the same switch with the same settings and allows these known failures for this attempt. Services may remain unavailable until repaired. Other failures still undo the switch."})]}),_("div",{className:"text-xs text-muted-foreground",children:["This approves the switch described above.",r&&` Expires at ${new Date(r).toLocaleTimeString()}.`]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:n,onClick:()=>t("once"),children:"Approve"}),c(F,{size:"sm",variant:"destructive",disabled:n,onClick:()=>t("deny"),children:"Decline"}),c(F,{size:"sm",variant:"ghost",disabled:n,onClick:()=>{s()},children:"Dismiss"})]})]})}function td({login:e,offers:n,busy:t,answer:s,cancel:r,expiresAt:i}){let a=e.otp?"one-time codes":"sign-ins";return e.humanCheck?_("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[c("div",{className:"font-medium",children:"Proton wants a human check before Bridge signs in"}),c("div",{className:"mt-1 text-xs text-muted-foreground",children:"It's open in Chrome on Orbit's desktop: solve it there from the Desktop panel (Proton accepts it only from Orbit's own computer), then press Done. Bridge's sign-in is waiting and carries on from there. The link, in case the window closed:"})]}),c("a",{className:"break-all font-mono text-xs underline",href:e.humanCheck,target:"_blank",rel:"noreferrer noopener",children:e.humanCheck}),i&&_("div",{className:"text-xs text-muted-foreground",children:["Cancelled if unanswered by ",new Date(i).toLocaleTimeString(),"."]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:t,onClick:()=>s("once"),children:"Done"}),c(F,{size:"sm",variant:"destructive",disabled:t,onClick:()=>s("deny"),children:"Cancel"})]})]}):_("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[c("div",{children:e.bridge?_(Se,{children:[_("div",{className:"font-medium",children:["Sign Proton Mail Bridge in with ",c("span",{className:"font-mono",children:e.item})]}),c("div",{className:"mt-1 text-xs text-muted-foreground",children:"I\u2019ll sign Bridge in through the vault without seeing the password or code. Then I can read and send its mail through Bridge."})]}):_(Se,{children:[_("div",{className:"font-medium",children:["Sign Orbit in: fill ",e.otp?"the one-time code":"the username and password"," from ",c("span",{className:"font-mono",children:e.item})," into"," ",c("span",{className:"font-mono",children:e.unit}),"'s sign-in page, ",c("span",{className:"font-mono",children:e.url})]}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:[e.otp?"The broker fills it into the text field that has the focus on that page; Orbit never sees it.":"The broker fills them into that page's form (the password only into its password field) and signs in; Orbit never sees them."," ","You can see the sign-in form in the Desktop panel."]})]})}),_("ul",{className:"list-disc space-y-0.5 pl-5 text-xs text-muted-foreground",children:[n.includes("thread")&&_("li",{children:[c("b",{children:"For this conversation"}),": ",a," for ",c("span",{className:"font-mono",children:e.name})," asked as this conversation, until bb reloads Orbit."]}),n.includes("always")&&_("li",{children:[c("b",{children:"Always"}),": ",a," for ",c("span",{className:"font-mono",children:e.name})," from any of the station's conversations, from now on. Revoke it in Settings \u2192 Orbit."]}),i&&_("li",{children:["Expires at ",new Date(i).toLocaleTimeString(),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:t,onClick:()=>s("once"),children:"Approve"}),n.includes("thread")&&c(F,{size:"sm",variant:"secondary",disabled:t,onClick:()=>s("thread"),children:"For this conversation"}),n.includes("always")&&c(F,{size:"sm",variant:"secondary",disabled:t,onClick:()=>s("always"),children:"Always"}),c(F,{size:"sm",variant:"destructive",disabled:t,onClick:()=>s("deny"),children:"Decline"}),c(F,{size:"sm",variant:"ghost",disabled:t,onClick:()=>{r()},children:"Dismiss"})]})]})}function nd({change:e,busy:n,answer:t}){return _("div",{className:"space-y-3 p-3 text-sm",children:[_("p",{className:"font-medium",children:[e.mergeReasons?"Allow merging":e.checks?"Proceed with these checks for":"Approve change"," #",e.number," in ",e.repo,"?"]}),c("a",{className:"underline",href:`https://github.com/${e.repo}/pull/${e.number}/files/${e.head}`,target:"_blank",rel:"noreferrer noopener",children:"Read this version of the change"}),e.mergeReasons?_("p",{children:["Allow this reviewed version to be merged despite:"," ",e.mergeReasons.map(s=>({author:"the author restriction",protected_paths:"protected files",changes_requested:"a request for changes"})[s]).join(", "),". Every check must still pass, the review must match this commit, and the pull request must be ready and mergeable. This changes the default branch."]}):e.checks?_(Se,{children:[c("p",{children:"Allow merging this version despite the results below. Tests may be incomplete or the change may be broken. This also approves the change, including core files. It does not install anything."}),c("a",{className:"underline",href:`https://github.com/${e.repo}/pull/${e.number}/checks`,target:"_blank",rel:"noreferrer noopener",children:"Read the check details"}),c("ul",{className:"list-disc pl-5",children:e.checks.failures.map((s,r)=>c("li",{children:s},r))}),c("p",{className:"text-xs",children:"Only these exact check runs and this version are covered. A rerun, changed result, extra check or later push needs a new decision. Repository, identity and version checks still apply."})]}):c("p",{children:"This approves this whole version, including its core files. A later push needs approval of its own. Every other merge check still applies."}),c("p",{className:"text-xs",children:"This records your approval of the change. It does not install anything."}),c("pre",{className:"whitespace-pre-wrap break-all text-xs",children:e.head}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",disabled:n,onClick:()=>t("once"),children:"Approve"}),c(F,{size:"sm",variant:"destructive",disabled:n,onClick:()=>t("deny"),children:"Decline"})]})]})}function Zn({interaction:e,submit:n,cancel:t}){let s=e.payload,[r,i]=E(!1),a=u=>{i(!0),n({choice:u}).catch(()=>i(!1))};if(s.change)return c(nd,{change:s.change,busy:r,answer:a});if(s.switching)return c(ed,{switching:s.switching,busy:r,answer:a,cancel:()=>{t()},expiresAt:s.expiresAt});if(s.route)return c(Yc,{route:s.route,busy:r,answer:a,cancel:()=>{t()},expiresAt:s.expiresAt});if(s.login)return c(td,{login:s.login,offers:s.offers,busy:r,answer:a,cancel:()=>{t()},expiresAt:s.expiresAt});let o=new Set(s.offers);return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["I\u2019d like to ",s.level==="act"?"make a change":"look"," with ",c("span",{className:"font-mono",children:s.capability})]}),c("pre",{className:"mt-2 max-h-48 overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted p-2 font-mono text-xs",children:s.command})]}),_("ul",{className:"list-disc space-y-0.5 pl-5 text-xs text-muted-foreground",children:[o.has("thread")&&_("li",{children:[c("b",{children:"For this conversation"}),": any ",c("span",{className:"font-mono",children:s.rule})," command on ",s.capability,", until bb reloads Orbit."]}),o.has("always")&&_("li",{children:[c("b",{children:"Always"}),": this exact command, from now on. Revoke it in Settings \u2192 Orbit."]}),s.sensitive&&_("li",{children:["This command is on ",s.capability,"'s sensitive list, so it asks every time."]}),s.expiresAt&&_("li",{children:["Expires at ",new Date(s.expiresAt).toLocaleTimeString(),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:r,onClick:()=>a("once"),children:"Approve"}),o.has("thread")&&c(F,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a("thread"),children:"Allow for this conversation"}),o.has("always")&&c(F,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a("always"),children:"Always allow"}),c(F,{size:"sm",variant:"destructive",disabled:r,onClick:()=>a("deny"),children:"Decline"}),c(F,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function Yn({interaction:e,submit:n,cancel:t}){let s=e.payload,[r,i]=E(!1),a=o=>{i(!0),n({hostId:o}).catch(()=>i(!1))};return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[_("div",{className:"font-medium",children:["Which machine manages ",c("span",{className:"font-mono",children:s.station}),"?"]}),_("p",{className:"mt-1 text-xs text-muted-foreground",children:["Several machines have Orbit's station key and this station's VM. Orbit reaches the station only through the one you pick, which receives its credentials when they change. Change it later with ",c("span",{className:"font-mono",children:"bb orbit station manager"}),"."]})]}),_("div",{className:"flex flex-wrap gap-2",children:[s.machines.map(o=>c(F,{size:"sm",variant:"secondary",disabled:r,onClick:()=>a(o.id),children:o.name},o.id)),c(F,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function Ii({payload:e}){let n=e&&typeof e=="object"&&!Array.isArray(e)&&typeof e.proposal=="string"?e.proposal:"";return/^[a-f0-9]{32}$/.test(n)?c(ar,{id:n}):c("p",{children:"The settings result is unavailable."})}function ar({id:e}){let n=q(),[t,s]=E([]),[r,i]=E(!1);return z(()=>{let a=!0,o,u=async()=>{try{let l=e?await n.call("policy-proposals.result",{id:e}).then(d=>d?[d]:[]):await n.call("policy-proposals.history",null);a&&(s(l),i(!1))}catch{a&&i(!0)}a&&(o=setTimeout(()=>{u()},5e3))};return u(),()=>{a=!1,clearTimeout(o)}},[n,e]),!t.length&&!r?null:_("section",{className:"space-y-2 p-3 text-sm","aria-label":"Station settings results",children:[!e&&c("h2",{className:"font-medium",children:"Recent station settings requests"}),r&&c("p",{role:"alert",children:"The settings result could not be checked. Trying again."}),t.slice(0,e?1:10).map(a=>_("div",{className:"space-y-1 rounded border p-2",children:[c("p",{className:"font-medium",children:a.title}),c("p",{children:a.message})]},a.id))]})}function Jn({interaction:e,submit:n}){let t=e.payload,s=q(),[r,i]=E(!1),[a,o]=E(!1),[u,l]=E(null),[d,h]=E(null),f=Date.now()>=t.deadline;async function p(x){if(!(r||f||x&&t.explanation.extraConfirmation&&!a)){i(!0),h(null);try{await n({approve:x,acknowledgeRisk:a})}catch{h("Your answer did not go through. Try again."),i(!1)}}}return _("div",{className:"space-y-3 p-3 text-sm",children:[c("p",{className:"font-medium",children:"Change station permissions?"}),t.explanation.sections.map(x=>_("section",{className:"space-y-1",children:[c("h3",{className:"font-medium",children:x.heading}),x.sentences.map((w,b)=>c("p",{className:"whitespace-pre-wrap break-words",children:w},b))]},x.heading)),c("p",{children:"This answer covers only these settings and their application. Declining or leaving this unanswered changes nothing."}),_("p",{children:["Expires ",new Date(t.deadline).toLocaleString(),"."]}),_("details",{onToggle:x=>{x.currentTarget.open&&!u&&s.call("policy-proposals.text",{id:t.id}).then(l).catch(()=>h("The exact text could not be loaded. Try opening it again."))},children:[c("summary",{className:"cursor-pointer underline",children:"More details"}),_("p",{children:["Proposer's title: ",t.title]}),c("p",{children:"Proposer's own words (not verified):"}),c("p",{className:"whitespace-pre-wrap break-words",children:t.explanation.details.proposerWords}),t.explanation.details.unchanged.map((x,w)=>c("p",{children:x},w)),u?_("div",{className:"space-y-2",children:[c("p",{children:"Current settings"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.before}),c("p",{children:"Proposed settings"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.after}),c("p",{children:"Checked review"}),c("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all",children:u.preview})]}):c("p",{children:"Loading\u2026"})]}),t.explanation.extraConfirmation&&_("label",{className:"flex gap-2",children:[c("input",{type:"checkbox",checked:a,disabled:r||f,onChange:x=>o(x.target.checked)}),"I understand the extra access described above."]}),f&&c("p",{role:"alert",children:"This request has expired. Nothing was changed."}),d&&c("p",{role:"alert",children:d}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",disabled:r||f||t.explanation.extraConfirmation&&!a,onClick:()=>{p(!0)},children:"Approve"}),c(F,{size:"sm",variant:"destructive",disabled:r||f,onClick:()=>{p(!1)},children:"Decline"})]})]})}var sd=/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/;function qt({url:e,label:n,size:t=64}){let s={width:t,height:t};return!e||!sd.test(e)?c("span",{role:"img","aria-label":`${n}: none`,className:"inline-block shrink-0 rounded-full border border-dashed border-border bg-muted",style:s}):c("img",{src:e,alt:n,className:"shrink-0 rounded-full border border-border bg-muted object-cover",style:s})}function es({interaction:e,submit:n,cancel:t}){let s=e.payload,[r,i]=E(!1),a=o=>{i(!0),n({approve:o}).catch(()=>i(!1))};return _("div",{className:"flex flex-col gap-3 p-3 text-sm",children:[_("div",{children:[c("div",{className:"font-medium",children:"I\u2019d like to save these preferences"}),c("div",{className:"mt-1",children:s.summary}),_("div",{className:"mt-1 text-xs text-muted-foreground",children:["Requested from ",s.from,". These preferences apply to future work."]})]}),s.avatar&&_("div",{className:"flex items-end gap-4",children:[_("div",{className:"flex flex-col items-center gap-1",children:[c(qt,{url:s.avatar.now,label:"The avatar now"}),c("span",{className:"text-xs text-muted-foreground",children:"Now"})]}),_("div",{className:"flex flex-col items-center gap-1",children:[c(qt,{url:s.avatar.proposed,label:"The proposed avatar",size:96}),c("span",{className:"text-xs text-muted-foreground",children:"Proposed"})]})]}),_("div",{className:"grid gap-2 md:grid-cols-2",children:[_("div",{children:[c("div",{className:"mb-1 text-xs text-muted-foreground",children:"Now"}),c("pre",{className:"max-h-60 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs",children:s.before})]}),_("div",{children:[c("div",{className:"mb-1 text-xs text-muted-foreground",children:"After"}),c("pre",{className:"max-h-60 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs",children:s.after})]})]}),_("div",{className:"flex flex-wrap gap-2",children:[c(F,{size:"sm",disabled:r,onClick:()=>a(!0),children:"Approve"}),c(F,{size:"sm",variant:"destructive",disabled:r,onClick:()=>a(!1),children:"Decline"}),c(F,{size:"sm",variant:"ghost",disabled:r,onClick:()=>{t()},children:"Dismiss"})]})]})}function Di(e){return e>>>0}function Zt(e){return e|0}var Pi="warn",V=()=>{},ue=()=>{},he=()=>{},se=()=>{};function rd(e){if(typeof e>"u"?e=Pi:Pi=e,V=ue=he=se=()=>{},typeof window.console<"u")switch(e){case"debug":V=console.debug.bind(window.console);case"info":ue=console.info.bind(window.console);case"warn":he=console.warn.bind(window.console);case"error":se=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+e+"'")}}rd();function ts(e,n=!1){try{return decodeURIComponent(escape(e))}catch(t){if(t instanceof URIError&&n)return e;throw t}}function Te(e){return unescape(encodeURIComponent(e))}var Ct={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode(e){"use strict";let n="",t=e.length,s=t%3;for(let i=0;i<t-2;i+=3)n+=this.toBase64Table[e[i]>>2],n+=this.toBase64Table[((e[i]&3)<<4)+(e[i+1]>>4)],n+=this.toBase64Table[((e[i+1]&15)<<2)+(e[i+2]>>6)],n+=this.toBase64Table[e[i+2]&63];let r=t-s;return s===2?(n+=this.toBase64Table[e[r]>>2],n+=this.toBase64Table[((e[r]&3)<<4)+(e[r+1]>>4)],n+=this.toBase64Table[(e[r+1]&15)<<2],n+=this.toBase64Table[64]):s===1&&(n+=this.toBase64Table[e[r]>>2],n+=this.toBase64Table[(e[r]&3)<<4],n+=this.toBase64Table[64],n+=this.toBase64Table[64]),n},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(e,n=0){let t=e.indexOf("=")-n;t<0&&(t=e.length-n);let s=(t>>2)*3+Math.floor(t%4/1.5),r=new Array(s),i=0,a=0;for(let o=0,u=n;u<e.length;u++){let l=this.toBinaryTable[e.charCodeAt(u)&127],d=e.charAt(u)===this.base64Pad;if(l===-1){se("Illegal character code "+e.charCodeAt(u)+" at position "+u);continue}a=a<<6|l,i+=6,i>=8&&(i-=8,d||(r[o++]=a>>i&255),a&=(1<<i)-1)}if(i){let o=new Error("Corrupted base64 string");throw o.name="Base64-Error",o}return r}};var or="ontouchstart"in document.documentElement||document.ontouchstart!==void 0||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function e(){or=!0,window.removeEventListener("touchstart",e,!1)},!1);var Yt=10*(window.devicePixelRatio||1),Mi=!1;try{let e=document.createElement("canvas");e.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',e.style.cursor.indexOf("url")===0?(ue("Data URI scheme cursor supported"),Mi=!0):he("Data URI scheme cursor not supported")}catch(e){se("Data URI scheme cursor test exception: "+e)}var Bi=Mi,id=!0;try{let e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",document.body.appendChild(e);let n=document.createElement("div");e.appendChild(n);let t=e.offsetWidth-n.offsetWidth;e.parentNode.removeChild(e),id=t!=0}catch(e){se("Scrollbar test exception: "+e)}var lr=!1;async function ad(){if(!("VideoDecoder"in window))return!1;let e={codec:"avc1.42401f",codedWidth:1920,codedHeight:1080,optimizeForLatency:!0};if(!(await VideoDecoder.isConfigSupported(e)).supported)return!1;let t=new Uint8Array(Ct.decode("AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4HcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw==")),s=!1,r=null,i=new VideoDecoder({output:o=>{s=!0,o.close()},error:o=>{r=o}}),a=new EncodedVideoChunk({timestamp:0,type:"key",data:t});i.configure(e),i.decode(a);try{await i.flush()}catch(o){r=o}return!(!s||r!==null)}lr=await ad();function Qe(){return!!/mac/i.exec(navigator.platform)}function Tt(){return!!/win/i.exec(navigator.platform)}function Xt(){return!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform)}function Nt(e,n,t){let s=t.getBoundingClientRect(),r={x:0,y:0};return e<s.left?r.x=0:e>=s.right?r.x=s.width-1:r.x=e-s.left,n<s.top?r.y=0:n>=s.bottom?r.y=s.height-1:r.y=n-s.top,r}function lt(e){e.stopPropagation(),e.preventDefault()}var cr=!1,Hi=null;document.captureElement=null;function ot(e){if(cr)return;let n=new e.constructor(e.type,e);cr=!0,document.captureElement?document.captureElement.dispatchEvent(n):Hi.dispatchEvent(n),cr=!1,e.stopPropagation(),n.defaultPrevented&&e.preventDefault(),e.type==="mouseup"&&$i()}function Qi(){let e=document.getElementById("noVNC_mouse_capture_elem");e.style.cursor=window.getComputedStyle(document.captureElement).cursor}var Ui=new MutationObserver(Qi);function zi(e){if(e.setCapture)e.setCapture(),document.captureElement=e;else{$i();let n=document.getElementById("noVNC_mouse_capture_elem");n===null&&(n=document.createElement("div"),n.id="noVNC_mouse_capture_elem",n.style.position="fixed",n.style.top="0px",n.style.left="0px",n.style.width="100%",n.style.height="100%",n.style.zIndex=1e4,n.style.display="none",document.body.appendChild(n),n.addEventListener("contextmenu",ot),n.addEventListener("mousemove",ot),n.addEventListener("mouseup",ot)),document.captureElement=e,Ui.observe(e,{attributes:!0}),Qi(),n.style.display="",window.addEventListener("mousemove",ot),window.addEventListener("mouseup",ot)}}function $i(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;Hi=document.captureElement,document.captureElement=null,Ui.disconnect();let e=document.getElementById("noVNC_mouse_capture_elem");e.style.display="none",window.removeEventListener("mousemove",ot),window.removeEventListener("mouseup",ot)}}var ct=class{constructor(){this._listeners=new Map}addEventListener(n,t){this._listeners.has(n)||this._listeners.set(n,new Set),this._listeners.get(n).add(t)}removeEventListener(n,t){this._listeners.has(n)&&this._listeners.get(n).delete(t)}dispatchEvent(n){return this._listeners.has(n.type)?(this._listeners.get(n.type).forEach(t=>t.call(this,n)),!n.defaultPrevented):!0}};var Jt=class{constructor(n){if(this._drawCtx=null,this._renderQ=[],this._flushPromise=null,this._fbWidth=0,this._fbHeight=0,this._prevDrawStyle="",V(">> Display.constructor"),this._target=n,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d"),this._viewportLoc={x:0,y:0,w:this._target.width,h:this._target.height},this._backbuffer=document.createElement("canvas"),this._drawCtx=this._backbuffer.getContext("2d"),this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},V("User Agent: "+navigator.userAgent),V("<< Display.constructor"),this._scale=1,this._clipViewport=!1}get scale(){return this._scale}set scale(n){this._rescale(n)}get clipViewport(){return this._clipViewport}set clipViewport(n){this._clipViewport=n;let t=this._viewportLoc;this.viewportChangeSize(t.w,t.h),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}viewportChangePos(n,t){let s=this._viewportLoc;n=Math.floor(n),t=Math.floor(t),this._clipViewport||(n=-s.w,t=-s.h);let r=s.x+s.w-1,i=s.y+s.h-1;n<0&&s.x+n<0&&(n=-s.x),r+n>=this._fbWidth&&(n-=r+n-this._fbWidth+1),s.y+t<0&&(t=-s.y),i+t>=this._fbHeight&&(t-=i+t-this._fbHeight+1),!(n===0&&t===0)&&(V("viewportChange deltaX: "+n+", deltaY: "+t),s.x+=n,s.y+=t,this._damage(s.x,s.y,s.w,s.h),this.flip())}viewportChangeSize(n,t){(!this._clipViewport||typeof n>"u"||typeof t>"u")&&(V("Setting viewport to full display region"),n=this._fbWidth,t=this._fbHeight),n=Math.floor(n),t=Math.floor(t),n>this._fbWidth&&(n=this._fbWidth),t>this._fbHeight&&(t=this._fbHeight);let s=this._viewportLoc;if(s.w!==n||s.h!==t){s.w=n,s.h=t;let r=this._target;r.width=n,r.height=t,this.viewportChangePos(0,0),this._damage(s.x,s.y,s.w,s.h),this.flip(),this._rescale(this._scale)}}absX(n){return this._scale===0?0:Zt(n/this._scale+this._viewportLoc.x)}absY(n){return this._scale===0?0:Zt(n/this._scale+this._viewportLoc.y)}resize(n,t){this._prevDrawStyle="",this._fbWidth=n,this._fbHeight=t;let s=this._backbuffer;if(s.width!==n||s.height!==t){let i=null;s.width>0&&s.height>0&&(i=this._drawCtx.getImageData(0,0,s.width,s.height)),s.width!==n&&(s.width=n),s.height!==t&&(s.height=t),i&&this._drawCtx.putImageData(i,0,0)}let r=this._viewportLoc;this.viewportChangeSize(r.w,r.h),this.viewportChangePos(0,0)}getImageData(){return this._drawCtx.getImageData(0,0,this.width,this.height)}toDataURL(n,t){return this._backbuffer.toDataURL(n,t)}toBlob(n,t,s){return this._backbuffer.toBlob(n,t,s)}_damage(n,t,s,r){n<this._damageBounds.left&&(this._damageBounds.left=n),t<this._damageBounds.top&&(this._damageBounds.top=t),n+s>this._damageBounds.right&&(this._damageBounds.right=n+s),t+r>this._damageBounds.bottom&&(this._damageBounds.bottom=t+r)}flip(n){if(this._renderQ.length!==0&&!n)this._renderQPush({type:"flip"});else{let t=this._damageBounds.left,s=this._damageBounds.top,r=this._damageBounds.right-t,i=this._damageBounds.bottom-s,a=t-this._viewportLoc.x,o=s-this._viewportLoc.y;a<0&&(r+=a,t-=a,a=0),o<0&&(i+=o,s-=o,o=0),a+r>this._viewportLoc.w&&(r=this._viewportLoc.w-a),o+i>this._viewportLoc.h&&(i=this._viewportLoc.h-o),r>0&&i>0&&this._targetCtx.drawImage(this._backbuffer,t,s,r,i,a,o,r,i),this._damageBounds.left=this._damageBounds.top=65535,this._damageBounds.right=this._damageBounds.bottom=0}}pending(){return this._renderQ.length>0}flush(){return this._renderQ.length===0?Promise.resolve():(this._flushPromise===null&&(this._flushPromise=new Promise(n=>{this._flushResolve=n})),this._flushPromise)}fillRect(n,t,s,r,i,a){this._renderQ.length!==0&&!a?this._renderQPush({type:"fill",x:n,y:t,width:s,height:r,color:i}):(this._setFillColor(i),this._drawCtx.fillRect(n,t,s,r),this._damage(n,t,s,r))}copyImage(n,t,s,r,i,a,o){this._renderQ.length!==0&&!o?this._renderQPush({type:"copy",oldX:n,oldY:t,x:s,y:r,width:i,height:a}):(this._drawCtx.mozImageSmoothingEnabled=!1,this._drawCtx.webkitImageSmoothingEnabled=!1,this._drawCtx.msImageSmoothingEnabled=!1,this._drawCtx.imageSmoothingEnabled=!1,this._drawCtx.drawImage(this._backbuffer,n,t,i,a,s,r,i,a),this._damage(s,r,i,a))}imageRect(n,t,s,r,i,a){if(s===0||r===0)return;let o=new Image;o.src="data: "+i+";base64,"+Ct.encode(a),this._renderQPush({type:"img",img:o,x:n,y:t,width:s,height:r})}videoFrame(n,t,s,r,i){this._renderQPush({type:"frame",frame:i,x:n,y:t,width:s,height:r})}blitImage(n,t,s,r,i,a,o){if(this._renderQ.length!==0&&!o){let u=new Uint8Array(s*r*4);u.set(new Uint8Array(i.buffer,0,u.length)),this._renderQPush({type:"blit",data:u,x:n,y:t,width:s,height:r})}else{let u=new Uint8ClampedArray(i.buffer,i.byteOffset+a,s*r*4),l=new ImageData(u,s,r);this._drawCtx.putImageData(l,n,t),this._damage(n,t,s,r)}}drawImage(n,...t){if(this._drawCtx.drawImage(n,...t),t.length<=4){let[s,r]=t;this._damage(s,r,n.width,n.height)}else{let[,,s,r,i,a]=t;this._damage(i,a,s,r)}}autoscale(n,t){let s;if(n===0||t===0)s=0;else{let r=this._viewportLoc,i=n/t;r.w/r.h>=i?s=n/r.w:s=t/r.h}this._rescale(s)}_rescale(n){this._scale=n;let t=this._viewportLoc,s=n*t.w+"px",r=n*t.h+"px";(this._target.style.width!==s||this._target.style.height!==r)&&(this._target.style.width=s,this._target.style.height=r)}_setFillColor(n){let t="rgb("+n[0]+","+n[1]+","+n[2]+")";t!==this._prevDrawStyle&&(this._drawCtx.fillStyle=t,this._prevDrawStyle=t)}_renderQPush(n){this._renderQ.push(n),this._renderQ.length===1&&this._scanRenderQ()}_resumeRenderQ(){this.removeEventListener("load",this._noVNCDisplay._resumeRenderQ),this._noVNCDisplay._scanRenderQ()}_scanRenderQ(){let n=!0;for(;n&&this._renderQ.length>0;){let t=this._renderQ[0];switch(t.type){case"flip":this.flip(!0);break;case"copy":this.copyImage(t.oldX,t.oldY,t.x,t.y,t.width,t.height,!0);break;case"fill":this.fillRect(t.x,t.y,t.width,t.height,t.color,!0);break;case"blit":this.blitImage(t.x,t.y,t.width,t.height,t.data,0,!0);break;case"img":if(t.img.complete){if(t.img.width!==t.width||t.img.height!==t.height){se("Decoded image has incorrect dimensions. Got "+t.img.width+"x"+t.img.height+". Expected "+t.width+"x"+t.height+".");return}this.drawImage(t.img,t.x,t.y),t.img.src=""}else t.img._noVNCDisplay=this,t.img.addEventListener("load",this._resumeRenderQ),n=!1;break;case"frame":if(t.frame.ready){let s=t.frame.frame;(s.codedWidth<t.width||s.codedHeight<t.height)&&he("Decoded video frame does not cover its full rectangle area. Expecting at least "+t.width+"x"+t.height+" but got "+s.codedWidth+"x"+s.codedHeight);let r=0,i=0,a=t.width,o=t.height,u=t.x,l=t.y,d=a,h=o;this.drawImage(s,r,i,a,o,u,l,d,h),s.close()}else{let s=this;t.frame.promise.then(()=>{s._scanRenderQ()}),n=!1}break}n&&this._renderQ.shift()}this._renderQ.length===0&&this._flushPromise!==null&&(this._flushResolve(),this._flushPromise=null,this._flushResolve=null)}};function Ce(e,n,t,s,r){if(n.subarray&&e.subarray){e.set(n.subarray(t,t+s),r);return}for(var i=0;i<s;i++)e[r+i]=n[t+i]}var Kt=Uint8Array,ve=Uint16Array,en=Int32Array;function Ft(e,n,t,s){for(var r=e&65535|0,i=e>>>16&65535|0,a=0;t!==0;){a=t>2e3?2e3:t,t-=a;do r=r+n[s++]|0,i=i+r|0;while(--a);r%=65521,i%=65521}return r|i<<16|0}function de(){for(var e,n=[],t=0;t<256;t++){e=t;for(var s=0;s<8;s++)e=e&1?3988292384^e>>>1:e>>>1;n[t]=e}return n}var kp=de();var ss=30,od=12;function dr(e,n){var t,s,r,i,a,o,u,l,d,h,f,p,x,w,b,y,k,I,R,L,M,D,U,O,P;t=e.state,s=e.next_in,O=e.input,r=s+(e.avail_in-5),i=e.next_out,P=e.output,a=i-(n-e.avail_out),o=i+(e.avail_out-257),u=t.dmax,l=t.wsize,d=t.whave,h=t.wnext,f=t.window,p=t.hold,x=t.bits,w=t.lencode,b=t.distcode,y=(1<<t.lenbits)-1,k=(1<<t.distbits)-1;e:do{x<15&&(p+=O[s++]<<x,x+=8,p+=O[s++]<<x,x+=8),I=w[p&y];t:for(;;){if(R=I>>>24,p>>>=R,x-=R,R=I>>>16&255,R===0)P[i++]=I&65535;else if(R&16){L=I&65535,R&=15,R&&(x<R&&(p+=O[s++]<<x,x+=8),L+=p&(1<<R)-1,p>>>=R,x-=R),x<15&&(p+=O[s++]<<x,x+=8,p+=O[s++]<<x,x+=8),I=b[p&k];n:for(;;){if(R=I>>>24,p>>>=R,x-=R,R=I>>>16&255,R&16){if(M=I&65535,R&=15,x<R&&(p+=O[s++]<<x,x+=8,x<R&&(p+=O[s++]<<x,x+=8)),M+=p&(1<<R)-1,M>u){e.msg="invalid distance too far back",t.mode=ss;break e}if(p>>>=R,x-=R,R=i-a,M>R){if(R=M-R,R>d&&t.sane){e.msg="invalid distance too far back",t.mode=ss;break e}if(D=0,U=f,h===0){if(D+=l-R,R<L){L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}}else if(h<R){if(D+=l+h-R,R-=h,R<L){L-=R;do P[i++]=f[D++];while(--R);if(D=0,h<L){R=h,L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}}}else if(D+=h-R,R<L){L-=R;do P[i++]=f[D++];while(--R);D=i-M,U=P}for(;L>2;)P[i++]=U[D++],P[i++]=U[D++],P[i++]=U[D++],L-=3;L&&(P[i++]=U[D++],L>1&&(P[i++]=U[D++]))}else{D=i-M;do P[i++]=P[D++],P[i++]=P[D++],P[i++]=P[D++],L-=3;while(L>2);L&&(P[i++]=P[D++],L>1&&(P[i++]=P[D++]))}}else if((R&64)===0){I=b[(I&65535)+(p&(1<<R)-1)];continue n}else{e.msg="invalid distance code",t.mode=ss;break e}break}}else if((R&64)===0){I=w[(I&65535)+(p&(1<<R)-1)];continue t}else if(R&32){t.mode=od;break e}else{e.msg="invalid literal/length code",t.mode=ss;break e}break}}while(s<r&&i<o);L=x>>3,s-=L,x-=L<<3,p&=(1<<x)-1,e.next_in=s,e.next_out=i,e.avail_in=s<r?5+(r-s):5-(s-r),e.avail_out=i<o?257+(o-i):257-(i-o),t.hold=p,t.bits=x}var Rt=15,Vi=852,Gi=592,Wi=0,ur=1,ji=2,ld=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],cd=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],dd=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ud=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function dt(e,n,t,s,r,i,a,o){var u=o.bits,l=0,d=0,h=0,f=0,p=0,x=0,w=0,b=0,y=0,k=0,I,R,L,M,D,U=null,O=0,P,G=new ve(Rt+1),Y=new ve(Rt+1),ne=null,le=0,j,Q,Z;for(l=0;l<=Rt;l++)G[l]=0;for(d=0;d<s;d++)G[n[t+d]]++;for(p=u,f=Rt;f>=1&&G[f]===0;f--);if(p>f&&(p=f),f===0)return r[i++]=1<<24|64<<16|0,r[i++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<f&&G[h]===0;h++);for(p<h&&(p=h),b=1,l=1;l<=Rt;l++)if(b<<=1,b-=G[l],b<0)return-1;if(b>0&&(e===Wi||f!==1))return-1;for(Y[1]=0,l=1;l<Rt;l++)Y[l+1]=Y[l]+G[l];for(d=0;d<s;d++)n[t+d]!==0&&(a[Y[n[t+d]]++]=d);if(e===Wi?(U=ne=a,P=19):e===ur?(U=ld,O-=257,ne=cd,le-=257,P=256):(U=dd,ne=ud,P=-1),k=0,d=0,l=h,D=i,x=p,w=0,L=-1,y=1<<p,M=y-1,e===ur&&y>Vi||e===ji&&y>Gi)return 1;for(;;){j=l-w,a[d]<P?(Q=0,Z=a[d]):a[d]>P?(Q=ne[le+a[d]],Z=U[O+a[d]]):(Q=96,Z=0),I=1<<l-w,R=1<<x,h=R;do R-=I,r[D+(k>>w)+R]=j<<24|Q<<16|Z|0;while(R!==0);for(I=1<<l-1;k&I;)I>>=1;if(I!==0?(k&=I-1,k+=I):k=0,d++,--G[l]===0){if(l===f)break;l=n[t+a[d]]}if(l>p&&(k&M)!==L){for(w===0&&(w=p),D+=h,x=l-w,b=1<<x;x+w<f&&(b-=G[x+w],!(b<=0));)x++,b<<=1;if(y+=1<<x,e===ur&&y>Vi||e===ji&&y>Gi)return 1;L=k&M,r[L]=p<<24|x<<16|D-i|0}}return k!==0&&(r[D+k]=l-w<<24|64<<16|0),o.bits=p,0}var hd=0,Ea=1,Sa=2,qi=4,fd=5,rs=6,os=0,pd=1,_d=2,ut=-2,md=-3,Zi=-4,xd=-5,Yi=8,Aa=1,Ji=2,ea=3,ta=4,na=5,sa=6,ra=7,ia=8,aa=9,oa=10,la=11,Be=12,hr=13,ca=14,fr=15,da=16,ua=17,ha=18,fa=19,is=20,as=21,pa=22,_a=23,ma=24,xa=25,ga=26,pr=27,ba=28,va=29,ae=30,ya=31,gd=32,bd=852,vd=592,yd=15,wd=yd;function wa(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function kd(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new ve(320),this.work=new ve(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ed(e){var n;return!e||!e.state?ut:(n=e.state,e.total_in=e.total_out=n.total=0,e.msg="",n.wrap&&(e.adler=n.wrap&1),n.mode=Aa,n.last=0,n.havedict=0,n.dmax=32768,n.head=null,n.hold=0,n.bits=0,n.lencode=n.lendyn=new en(bd),n.distcode=n.distdyn=new en(vd),n.sane=1,n.back=-1,os)}function xr(e){var n;return!e||!e.state?ut:(n=e.state,n.wsize=0,n.whave=0,n.wnext=0,Ed(e))}function Sd(e,n){var t,s;return!e||!e.state||(s=e.state,n<0?(t=0,n=-n):(t=(n>>4)+1,n<48&&(n&=15)),n&&(n<8||n>15))?ut:(s.window!==null&&s.wbits!==n&&(s.window=null),s.wrap=t,s.wbits=n,xr(e))}function Ad(e,n){var t,s;return e?(s=new kd,e.state=s,s.window=null,t=Sd(e,n),t!==os&&(e.state=null),t):ut}function Ca(e){return Ad(e,wd)}var ka=!0,_r,mr;function Cd(e){if(ka){var n;for(_r=new en(512),mr=new en(32),n=0;n<144;)e.lens[n++]=8;for(;n<256;)e.lens[n++]=9;for(;n<280;)e.lens[n++]=7;for(;n<288;)e.lens[n++]=8;for(dt(Ea,e.lens,0,288,_r,0,e.work,{bits:9}),n=0;n<32;)e.lens[n++]=5;dt(Sa,e.lens,0,32,mr,0,e.work,{bits:5}),ka=!1}e.lencode=_r,e.lenbits=9,e.distcode=mr,e.distbits=5}function Td(e,n,t,s){var r,i=e.state;return i.window===null&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Kt(i.wsize)),s>=i.wsize?(Ce(i.window,n,t-i.wsize,i.wsize,0),i.wnext=0,i.whave=i.wsize):(r=i.wsize-i.wnext,r>s&&(r=s),Ce(i.window,n,t-s,r,i.wnext),s-=r,s?(Ce(i.window,n,t-s,s,0),i.wnext=s,i.whave=i.wsize):(i.wnext+=r,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=r))),0}function Ta(e,n){var t,s,r,i,a,o,u,l,d,h,f,p,x,w,b=0,y,k,I,R,L,M,D,U,O=new Kt(4),P,G,Y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return ut;t=e.state,t.mode===Be&&(t.mode=hr),a=e.next_out,r=e.output,u=e.avail_out,i=e.next_in,s=e.input,o=e.avail_in,l=t.hold,d=t.bits,h=o,f=u,U=os;e:for(;;)switch(t.mode){case Aa:if(t.wrap===0){t.mode=hr;break}for(;d<16;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(t.wrap&2&&l===35615){t.check=0,O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0),l=0,d=0,t.mode=Ji;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg="incorrect header check",t.mode=ae;break}if((l&15)!==Yi){e.msg="unknown compression method",t.mode=ae;break}if(l>>>=4,d-=4,D=(l&15)+8,t.wbits===0)t.wbits=D;else if(D>t.wbits){e.msg="invalid window size",t.mode=ae;break}t.dmax=1<<D,e.adler=t.check=1,t.mode=l&512?oa:Be,l=0,d=0;break;case Ji:for(;d<16;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(t.flags=l,(t.flags&255)!==Yi){e.msg="unknown compression method",t.mode=ae;break}if(t.flags&57344){e.msg="unknown header flags set",t.mode=ae;break}t.head&&(t.head.text=l>>8&1),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0,t.mode=ea;case ea:for(;d<32;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.head&&(t.head.time=l),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,O[2]=l>>>16&255,O[3]=l>>>24&255,t.check=de(t.check,O,4,0)),l=0,d=0,t.mode=ta;case ta:for(;d<16;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.head&&(t.head.xflags=l&255,t.head.os=l>>8),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0,t.mode=na;case na:if(t.flags&1024){for(;d<16;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.length=l,t.head&&(t.head.extra_len=l),t.flags&512&&(O[0]=l&255,O[1]=l>>>8&255,t.check=de(t.check,O,2,0)),l=0,d=0}else t.head&&(t.head.extra=null);t.mode=sa;case sa:if(t.flags&1024&&(p=t.length,p>o&&(p=o),p&&(t.head&&(D=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),Ce(t.head.extra,s,i,p,D)),t.flags&512&&(t.check=de(t.check,s,p,i)),o-=p,i+=p,t.length-=p),t.length))break e;t.length=0,t.mode=ra;case ra:if(t.flags&2048){if(o===0)break e;p=0;do D=s[i+p++],t.head&&D&&t.length<65536&&(t.head.name+=String.fromCharCode(D));while(D&&p<o);if(t.flags&512&&(t.check=de(t.check,s,p,i)),o-=p,i+=p,D)break e}else t.head&&(t.head.name=null);t.length=0,t.mode=ia;case ia:if(t.flags&4096){if(o===0)break e;p=0;do D=s[i+p++],t.head&&D&&t.length<65536&&(t.head.comment+=String.fromCharCode(D));while(D&&p<o);if(t.flags&512&&(t.check=de(t.check,s,p,i)),o-=p,i+=p,D)break e}else t.head&&(t.head.comment=null);t.mode=aa;case aa:if(t.flags&512){for(;d<16;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(l!==(t.check&65535)){e.msg="header crc mismatch",t.mode=ae;break}l=0,d=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=Be;break;case oa:for(;d<32;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}e.adler=t.check=wa(l),l=0,d=0,t.mode=la;case la:if(t.havedict===0)return e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,_d;e.adler=t.check=1,t.mode=Be;case Be:if(n===fd||n===rs)break e;case hr:if(t.last){l>>>=d&7,d-=d&7,t.mode=pr;break}for(;d<3;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}switch(t.last=l&1,l>>>=1,d-=1,l&3){case 0:t.mode=ca;break;case 1:if(Cd(t),t.mode=is,n===rs){l>>>=2,d-=2;break e}break;case 2:t.mode=ua;break;case 3:e.msg="invalid block type",t.mode=ae}l>>>=2,d-=2;break;case ca:for(l>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if((l&65535)!==(l>>>16^65535)){e.msg="invalid stored block lengths",t.mode=ae;break}if(t.length=l&65535,l=0,d=0,t.mode=fr,n===rs)break e;case fr:t.mode=da;case da:if(p=t.length,p){if(p>o&&(p=o),p>u&&(p=u),p===0)break e;Ce(r,s,i,p,a),o-=p,i+=p,u-=p,a+=p,t.length-=p;break}t.mode=Be;break;case ua:for(;d<14;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(t.nlen=(l&31)+257,l>>>=5,d-=5,t.ndist=(l&31)+1,l>>>=5,d-=5,t.ncode=(l&15)+4,l>>>=4,d-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=ae;break}t.have=0,t.mode=ha;case ha:for(;t.have<t.ncode;){for(;d<3;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.lens[Y[t.have++]]=l&7,l>>>=3,d-=3}for(;t.have<19;)t.lens[Y[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,P={bits:t.lenbits},U=dt(hd,t.lens,0,19,t.lencode,0,t.work,P),t.lenbits=P.bits,U){e.msg="invalid code lengths set",t.mode=ae;break}t.have=0,t.mode=fa;case fa:for(;t.have<t.nlen+t.ndist;){for(;b=t.lencode[l&(1<<t.lenbits)-1],y=b>>>24,k=b>>>16&255,I=b&65535,!(y<=d);){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(I<16)l>>>=y,d-=y,t.lens[t.have++]=I;else{if(I===16){for(G=y+2;d<G;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(l>>>=y,d-=y,t.have===0){e.msg="invalid bit length repeat",t.mode=ae;break}D=t.lens[t.have-1],p=3+(l&3),l>>>=2,d-=2}else if(I===17){for(G=y+3;d<G;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}l>>>=y,d-=y,D=0,p=3+(l&7),l>>>=3,d-=3}else{for(G=y+7;d<G;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}l>>>=y,d-=y,D=0,p=11+(l&127),l>>>=7,d-=7}if(t.have+p>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=ae;break}for(;p--;)t.lens[t.have++]=D}}if(t.mode===ae)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=ae;break}if(t.lenbits=9,P={bits:t.lenbits},U=dt(Ea,t.lens,0,t.nlen,t.lencode,0,t.work,P),t.lenbits=P.bits,U){e.msg="invalid literal/lengths set",t.mode=ae;break}if(t.distbits=6,t.distcode=t.distdyn,P={bits:t.distbits},U=dt(Sa,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,P),t.distbits=P.bits,U){e.msg="invalid distances set",t.mode=ae;break}if(t.mode=is,n===rs)break e;case is:t.mode=as;case as:if(o>=6&&u>=258){e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,dr(e,f),a=e.next_out,r=e.output,u=e.avail_out,i=e.next_in,s=e.input,o=e.avail_in,l=t.hold,d=t.bits,t.mode===Be&&(t.back=-1);break}for(t.back=0;b=t.lencode[l&(1<<t.lenbits)-1],y=b>>>24,k=b>>>16&255,I=b&65535,!(y<=d);){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(k&&(k&240)===0){for(R=y,L=k,M=I;b=t.lencode[M+((l&(1<<R+L)-1)>>R)],y=b>>>24,k=b>>>16&255,I=b&65535,!(R+y<=d);){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}l>>>=R,d-=R,t.back+=R}if(l>>>=y,d-=y,t.back+=y,t.length=I,k===0){t.mode=ga;break}if(k&32){t.back=-1,t.mode=Be;break}if(k&64){e.msg="invalid literal/length code",t.mode=ae;break}t.extra=k&15,t.mode=pa;case pa:if(t.extra){for(G=t.extra;d<G;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.length+=l&(1<<t.extra)-1,l>>>=t.extra,d-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=_a;case _a:for(;b=t.distcode[l&(1<<t.distbits)-1],y=b>>>24,k=b>>>16&255,I=b&65535,!(y<=d);){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if((k&240)===0){for(R=y,L=k,M=I;b=t.distcode[M+((l&(1<<R+L)-1)>>R)],y=b>>>24,k=b>>>16&255,I=b&65535,!(R+y<=d);){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}l>>>=R,d-=R,t.back+=R}if(l>>>=y,d-=y,t.back+=y,k&64){e.msg="invalid distance code",t.mode=ae;break}t.offset=I,t.extra=k&15,t.mode=ma;case ma:if(t.extra){for(G=t.extra;d<G;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}t.offset+=l&(1<<t.extra)-1,l>>>=t.extra,d-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=ae;break}t.mode=xa;case xa:if(u===0)break e;if(p=f-u,t.offset>p){if(p=t.offset-p,p>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=ae;break}p>t.wnext?(p-=t.wnext,x=t.wsize-p):x=t.wnext-p,p>t.length&&(p=t.length),w=t.window}else w=r,x=a-t.offset,p=t.length;p>u&&(p=u),u-=p,t.length-=p;do r[a++]=w[x++];while(--p);t.length===0&&(t.mode=as);break;case ga:if(u===0)break e;r[a++]=t.length,u--,t.mode=as;break;case pr:if(t.wrap){for(;d<32;){if(o===0)break e;o--,l|=s[i++]<<d,d+=8}if(f-=u,e.total_out+=f,t.total+=f,f&&(e.adler=t.check=t.flags?de(t.check,r,f,a-f):Ft(t.check,r,f,a-f)),f=u,(t.flags?l:wa(l))!==t.check){e.msg="incorrect data check",t.mode=ae;break}l=0,d=0}t.mode=ba;case ba:if(t.wrap&&t.flags){for(;d<32;){if(o===0)break e;o--,l+=s[i++]<<d,d+=8}if(l!==(t.total&4294967295)){e.msg="incorrect length check",t.mode=ae;break}l=0,d=0}t.mode=va;case va:U=pd;break e;case ae:U=md;break e;case ya:return Zi;case gd:default:return ut}return e.next_out=a,e.avail_out=u,e.next_in=i,e.avail_in=o,t.hold=l,t.bits=d,(t.wsize||f!==e.avail_out&&t.mode<ae&&(t.mode<pr||n!==qi))&&Td(e,e.output,e.next_out,f-e.avail_out)?(t.mode=ya,Zi):(h-=e.avail_in,f-=e.avail_out,e.total_in+=h,e.total_out+=f,t.total+=f,t.wrap&&f&&(e.adler=t.check=t.flags?de(t.check,r,f,e.next_out-f):Ft(t.check,r,f,e.next_out-f)),e.data_type=t.bits+(t.last?64:0)+(t.mode===Be?128:0)+(t.mode===is||t.mode===fr?256:0),(h===0&&f===0||n===qi)&&U===os&&(U=xd),U)}function tn(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Xe=class{constructor(){this.strm=new tn,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),Ca(this.strm)}setInput(n){n?(this.strm.input=n,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(n){if(n>this.chunkSize&&(this.chunkSize=n,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=n,Ta(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=n)throw new Error("Incomplete zlib block");return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){xr(this.strm)}};var Xd=4,Xa=0,Na=1,Nd=2;function It(e){for(var n=e.length;--n>=0;)e[n]=0}var Kd=0,Da=1,Fd=2,Rd=3,Ld=258,Er=29,ln=256,sn=ln+1+Er,Lt=30,Sr=19,Pa=2*sn+1,ht=15,gr=16,Id=7,Ar=256,Ma=16,Ba=17,Oa=18,wr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ls=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Dd=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Ha=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Pd=512,Oe=new Array((sn+2)*2);It(Oe);var nn=new Array(Lt*2);It(nn);var rn=new Array(Pd);It(rn);var an=new Array(Ld-Rd+1);It(an);var Cr=new Array(Er);It(Cr);var cs=new Array(Lt);It(cs);function br(e,n,t,s,r){this.static_tree=e,this.extra_bits=n,this.extra_base=t,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}var Qa,Ua,za;function vr(e,n){this.dyn_tree=e,this.max_code=0,this.stat_desc=n}function $a(e){return e<256?rn[e]:rn[256+(e>>>7)]}function on(e,n){e.pending_buf[e.pending++]=n&255,e.pending_buf[e.pending++]=n>>>8&255}function we(e,n,t){e.bi_valid>gr-t?(e.bi_buf|=n<<e.bi_valid&65535,on(e,e.bi_buf),e.bi_buf=n>>gr-e.bi_valid,e.bi_valid+=t-gr):(e.bi_buf|=n<<e.bi_valid&65535,e.bi_valid+=t)}function Ke(e,n,t){we(e,t[n*2],t[n*2+1])}function Va(e,n){var t=0;do t|=e&1,e>>>=1,t<<=1;while(--n>0);return t>>>1}function Md(e){e.bi_valid===16?(on(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function Bd(e,n){var t=n.dyn_tree,s=n.max_code,r=n.stat_desc.static_tree,i=n.stat_desc.has_stree,a=n.stat_desc.extra_bits,o=n.stat_desc.extra_base,u=n.stat_desc.max_length,l,d,h,f,p,x,w=0;for(f=0;f<=ht;f++)e.bl_count[f]=0;for(t[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<Pa;l++)d=e.heap[l],f=t[t[d*2+1]*2+1]+1,f>u&&(f=u,w++),t[d*2+1]=f,!(d>s)&&(e.bl_count[f]++,p=0,d>=o&&(p=a[d-o]),x=t[d*2],e.opt_len+=x*(f+p),i&&(e.static_len+=x*(r[d*2+1]+p)));if(w!==0){do{for(f=u-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[u]--,w-=2}while(w>0);for(f=u;f!==0;f--)for(d=e.bl_count[f];d!==0;)h=e.heap[--l],!(h>s)&&(t[h*2+1]!==f&&(e.opt_len+=(f-t[h*2+1])*t[h*2],t[h*2+1]=f),d--)}}function Ga(e,n,t){var s=new Array(ht+1),r=0,i,a;for(i=1;i<=ht;i++)s[i]=r=r+t[i-1]<<1;for(a=0;a<=n;a++){var o=e[a*2+1];o!==0&&(e[a*2]=Va(s[o]++,o))}}function Od(){var e,n,t,s,r,i=new Array(ht+1);for(t=0,s=0;s<Er-1;s++)for(Cr[s]=t,e=0;e<1<<wr[s];e++)an[t++]=s;for(an[t-1]=s,r=0,s=0;s<16;s++)for(cs[s]=r,e=0;e<1<<ls[s];e++)rn[r++]=s;for(r>>=7;s<Lt;s++)for(cs[s]=r<<7,e=0;e<1<<ls[s]-7;e++)rn[256+r++]=s;for(n=0;n<=ht;n++)i[n]=0;for(e=0;e<=143;)Oe[e*2+1]=8,e++,i[8]++;for(;e<=255;)Oe[e*2+1]=9,e++,i[9]++;for(;e<=279;)Oe[e*2+1]=7,e++,i[7]++;for(;e<=287;)Oe[e*2+1]=8,e++,i[8]++;for(Ga(Oe,sn+1,i),e=0;e<Lt;e++)nn[e*2+1]=5,nn[e*2]=Va(e,5);Qa=new br(Oe,wr,ln+1,sn,ht),Ua=new br(nn,ls,0,Lt,ht),za=new br(new Array(0),Dd,0,Sr,Id)}function Wa(e){var n;for(n=0;n<sn;n++)e.dyn_ltree[n*2]=0;for(n=0;n<Lt;n++)e.dyn_dtree[n*2]=0;for(n=0;n<Sr;n++)e.bl_tree[n*2]=0;e.dyn_ltree[Ar*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function ja(e){e.bi_valid>8?on(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Hd(e,n,t,s){ja(e),s&&(on(e,t),on(e,~t)),Ce(e.pending_buf,e.window,n,t,e.pending),e.pending+=t}function Ka(e,n,t,s){var r=n*2,i=t*2;return e[r]<e[i]||e[r]===e[i]&&s[n]<=s[t]}function yr(e,n,t){for(var s=e.heap[t],r=t<<1;r<=e.heap_len&&(r<e.heap_len&&Ka(n,e.heap[r+1],e.heap[r],e.depth)&&r++,!Ka(n,s,e.heap[r],e.depth));)e.heap[t]=e.heap[r],t=r,r<<=1;e.heap[t]=s}function Fa(e,n,t){var s,r,i=0,a,o;if(e.last_lit!==0)do s=e.pending_buf[e.d_buf+i*2]<<8|e.pending_buf[e.d_buf+i*2+1],r=e.pending_buf[e.l_buf+i],i++,s===0?Ke(e,r,n):(a=an[r],Ke(e,a+ln+1,n),o=wr[a],o!==0&&(r-=Cr[a],we(e,r,o)),s--,a=$a(s),Ke(e,a,t),o=ls[a],o!==0&&(s-=cs[a],we(e,s,o)));while(i<e.last_lit);Ke(e,Ar,n)}function kr(e,n){var t=n.dyn_tree,s=n.stat_desc.static_tree,r=n.stat_desc.has_stree,i=n.stat_desc.elems,a,o,u=-1,l;for(e.heap_len=0,e.heap_max=Pa,a=0;a<i;a++)t[a*2]!==0?(e.heap[++e.heap_len]=u=a,e.depth[a]=0):t[a*2+1]=0;for(;e.heap_len<2;)l=e.heap[++e.heap_len]=u<2?++u:0,t[l*2]=1,e.depth[l]=0,e.opt_len--,r&&(e.static_len-=s[l*2+1]);for(n.max_code=u,a=e.heap_len>>1;a>=1;a--)yr(e,t,a);l=i;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],yr(e,t,1),o=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=o,t[l*2]=t[a*2]+t[o*2],e.depth[l]=(e.depth[a]>=e.depth[o]?e.depth[a]:e.depth[o])+1,t[a*2+1]=t[o*2+1]=l,e.heap[1]=l++,yr(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Bd(e,n),Ga(t,u,e.bl_count)}function Ra(e,n,t){var s,r=-1,i,a=n[1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),n[(t+1)*2+1]=65535,s=0;s<=t;s++)i=a,a=n[(s+1)*2+1],!(++o<u&&i===a)&&(o<l?e.bl_tree[i*2]+=o:i!==0?(i!==r&&e.bl_tree[i*2]++,e.bl_tree[Ma*2]++):o<=10?e.bl_tree[Ba*2]++:e.bl_tree[Oa*2]++,o=0,r=i,a===0?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function La(e,n,t){var s,r=-1,i,a=n[1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),s=0;s<=t;s++)if(i=a,a=n[(s+1)*2+1],!(++o<u&&i===a)){if(o<l)do Ke(e,i,e.bl_tree);while(--o!==0);else i!==0?(i!==r&&(Ke(e,i,e.bl_tree),o--),Ke(e,Ma,e.bl_tree),we(e,o-3,2)):o<=10?(Ke(e,Ba,e.bl_tree),we(e,o-3,3)):(Ke(e,Oa,e.bl_tree),we(e,o-11,7));o=0,r=i,a===0?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4)}}function Qd(e){var n;for(Ra(e,e.dyn_ltree,e.l_desc.max_code),Ra(e,e.dyn_dtree,e.d_desc.max_code),kr(e,e.bl_desc),n=Sr-1;n>=3&&e.bl_tree[Ha[n]*2+1]===0;n--);return e.opt_len+=3*(n+1)+5+5+4,n}function Ud(e,n,t,s){var r;for(we(e,n-257,5),we(e,t-1,5),we(e,s-4,4),r=0;r<s;r++)we(e,e.bl_tree[Ha[r]*2+1],3);La(e,e.dyn_ltree,n-1),La(e,e.dyn_dtree,t-1)}function zd(e){var n=4093624447,t;for(t=0;t<=31;t++,n>>>=1)if(n&1&&e.dyn_ltree[t*2]!==0)return Xa;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Na;for(t=32;t<ln;t++)if(e.dyn_ltree[t*2]!==0)return Na;return Xa}var Ia=!1;function qa(e){Ia||(Od(),Ia=!0),e.l_desc=new vr(e.dyn_ltree,Qa),e.d_desc=new vr(e.dyn_dtree,Ua),e.bl_desc=new vr(e.bl_tree,za),e.bi_buf=0,e.bi_valid=0,Wa(e)}function Tr(e,n,t,s){we(e,(Kd<<1)+(s?1:0),3),Hd(e,n,t,!0)}function Za(e){we(e,Da<<1,3),Ke(e,Ar,Oe),Md(e)}function Ya(e,n,t,s){var r,i,a=0;e.level>0?(e.strm.data_type===Nd&&(e.strm.data_type=zd(e)),kr(e,e.l_desc),kr(e,e.d_desc),a=Qd(e),r=e.opt_len+3+7>>>3,i=e.static_len+3+7>>>3,i<=r&&(r=i)):r=i=t+5,t+4<=r&&n!==-1?Tr(e,n,t,s):e.strategy===Xd||i===r?(we(e,(Da<<1)+(s?1:0),3),Fa(e,Oe,nn)):(we(e,(Fd<<1)+(s?1:0),3),Ud(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Fa(e,e.dyn_ltree,e.dyn_dtree)),Wa(e),s&&ja(e)}function He(e,n,t){return e.pending_buf[e.d_buf+e.last_lit*2]=n>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=n&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,n===0?e.dyn_ltree[t*2]++:(e.matches++,n--,e.dyn_ltree[(an[t]+ln+1)*2]++,e.dyn_dtree[$a(n)*2]++),e.last_lit===e.lit_bufsize-1}var Ja={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};var mt=0,Vd=1,hs=3,$e=4,eo=5,ft=0,to=1,Bt=-2;var Xr=-5,Ir=-1,Gd=1,ds=2,Wd=3,jd=4,qd=0,Zd=2,fs=8,Yd=9,Jd=15,eu=8,tu=29,nu=256,Lr=nu+1+tu,su=30,ru=19,iu=2*Lr+1,au=15,ee=3,ze=258,Ne=ze+ee+1,ou=32,ro=42,no=69,Nr=73,Kr=91,Fr=103,dn=113,us=666,fe=1,un=2,_t=3,Ot=4,lu=3;function Pt(e,n){return e.msg=Ja[n],n}function so(e){return(e<<1)-(e>4?9:0)}function pt(e){for(var n=e.length;--n>=0;)e[n]=0}function Ue(e){var n=e.state,t=n.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(Ce(e.output,n.pending_buf,n.pending_out,t,e.next_out),e.next_out+=t,n.pending_out+=t,e.total_out+=t,e.avail_out-=t,n.pending-=t,n.pending===0&&(n.pending_out=0))}function pe(e,n){Ya(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,n),e.block_start=e.strstart,Ue(e.strm)}function J(e,n){e.pending_buf[e.pending++]=n}function cn(e,n){e.pending_buf[e.pending++]=n>>>8&255,e.pending_buf[e.pending++]=n&255}function cu(e,n,t,s){var r=e.avail_in;return r>s&&(r=s),r===0?0:(e.avail_in-=r,Ce(n,e.input,e.next_in,r,t),e.state.wrap===1?e.adler=Ft(e.adler,n,r,t):e.state.wrap===2&&(e.adler=de(e.adler,n,r,t)),e.next_in+=r,e.total_in+=r,r)}function io(e,n){var t=e.max_chain_length,s=e.strstart,r,i,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-Ne?e.strstart-(e.w_size-Ne):0,l=e.window,d=e.w_mask,h=e.prev,f=e.strstart+ze,p=l[s+a-1],x=l[s+a];e.prev_length>=e.good_match&&(t>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=n,!(l[r+a]!==x||l[r+a-1]!==p||l[r]!==l[s]||l[++r]!==l[s+1])){s+=2,r++;do;while(l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&s<f);if(i=ze-(f-s),s=f-ze,i>a){if(e.match_start=n,a=i,i>=o)break;p=l[s+a-1],x=l[s+a]}}while((n=h[n&d])>u&&--t!==0);return a<=e.lookahead?a:e.lookahead}function hn(e){var n=e.w_size,t,s,r,i,a;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=n+(n-Ne)){Ce(e.window,e.window,n,n,0),e.match_start-=n,e.strstart-=n,e.block_start-=n,s=e.hash_size,t=s;do r=e.head[--t],e.head[t]=r>=n?r-n:0;while(--s);s=n,t=s;do r=e.prev[--t],e.prev[t]=r>=n?r-n:0;while(--s);i+=n}if(e.strm.avail_in===0)break;if(s=cu(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=s,e.lookahead+e.insert>=ee)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+ee-1])&e.hash_mask,e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<ee)););}while(e.lookahead<Ne&&e.strm.avail_in!==0)}function du(e,n){var t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(hn(e),e.lookahead===0&&n===mt)return fe;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var s=e.block_start+t;if((e.strstart===0||e.strstart>=s)&&(e.lookahead=e.strstart-s,e.strstart=s,pe(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-Ne&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,n===$e?(pe(e,!0),e.strm.avail_out===0?_t:Ot):(e.strstart>e.block_start&&(pe(e,!1),e.strm.avail_out===0),fe)}function Rr(e,n){for(var t,s;;){if(e.lookahead<Ne){if(hn(e),e.lookahead<Ne&&n===mt)return fe;if(e.lookahead===0)break}if(t=0,e.lookahead>=ee&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-Ne&&(e.match_length=io(e,t)),e.match_length>=ee)if(s=He(e,e.strstart-e.match_start,e.match_length-ee),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ee){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else s=He(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(s&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=e.strstart<ee-1?e.strstart:ee-1,n===$e?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:un}function Dt(e,n){for(var t,s,r;;){if(e.lookahead<Ne){if(hn(e),e.lookahead<Ne&&n===mt)return fe;if(e.lookahead===0)break}if(t=0,e.lookahead>=ee&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=ee-1,t!==0&&e.prev_length<e.max_lazy_match&&e.strstart-t<=e.w_size-Ne&&(e.match_length=io(e,t),e.match_length<=5&&(e.strategy===Gd||e.match_length===ee&&e.strstart-e.match_start>4096)&&(e.match_length=ee-1)),e.prev_length>=ee&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-ee,s=He(e,e.strstart-1-e.prev_match,e.prev_length-ee),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+ee-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=ee-1,e.strstart++,s&&(pe(e,!1),e.strm.avail_out===0))return fe}else if(e.match_available){if(s=He(e,0,e.window[e.strstart-1]),s&&pe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return fe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(s=He(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<ee-1?e.strstart:ee-1,n===$e?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:un}function uu(e,n){for(var t,s,r,i,a=e.window;;){if(e.lookahead<=ze){if(hn(e),e.lookahead<=ze&&n===mt)return fe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ee&&e.strstart>0&&(r=e.strstart-1,s=a[r],s===a[++r]&&s===a[++r]&&s===a[++r])){i=e.strstart+ze;do;while(s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&r<i);e.match_length=ze-(i-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ee?(t=He(e,1,e.match_length-ee),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=He(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,n===$e?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:un}function hu(e,n){for(var t;;){if(e.lookahead===0&&(hn(e),e.lookahead===0)){if(n===mt)return fe;break}if(e.match_length=0,t=He(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(pe(e,!1),e.strm.avail_out===0))return fe}return e.insert=0,n===$e?(pe(e,!0),e.strm.avail_out===0?_t:Ot):e.last_lit&&(pe(e,!1),e.strm.avail_out===0)?fe:un}function Fe(e,n,t,s,r){this.good_length=e,this.max_lazy=n,this.nice_length=t,this.max_chain=s,this.func=r}var Mt;Mt=[new Fe(0,0,0,0,du),new Fe(4,4,8,4,Rr),new Fe(4,5,16,8,Rr),new Fe(4,6,32,32,Rr),new Fe(4,4,16,16,Dt),new Fe(8,16,32,32,Dt),new Fe(8,16,128,128,Dt),new Fe(8,32,128,256,Dt),new Fe(32,128,258,1024,Dt),new Fe(32,258,258,4096,Dt)];function fu(e){e.window_size=2*e.w_size,pt(e.head),e.max_lazy_match=Mt[e.level].max_lazy,e.good_match=Mt[e.level].good_length,e.nice_match=Mt[e.level].nice_length,e.max_chain_length=Mt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ee-1,e.match_available=0,e.ins_h=0}function pu(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=fs,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new ve(iu*2),this.dyn_dtree=new ve((2*su+1)*2),this.bl_tree=new ve((2*ru+1)*2),pt(this.dyn_ltree),pt(this.dyn_dtree),pt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new ve(au+1),this.heap=new ve(2*Lr+1),pt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new ve(2*Lr+1),pt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function _u(e){var n;return!e||!e.state?Pt(e,Bt):(e.total_in=e.total_out=0,e.data_type=Zd,n=e.state,n.pending=0,n.pending_out=0,n.wrap<0&&(n.wrap=-n.wrap),n.status=n.wrap?ro:dn,e.adler=n.wrap===2?0:1,n.last_flush=mt,qa(n),ft)}function mu(e){var n=_u(e);return n===ft&&fu(e.state),n}function xu(e,n,t,s,r,i){if(!e)return Bt;var a=1;if(n===Ir&&(n=6),s<0?(a=0,s=-s):s>15&&(a=2,s-=16),r<1||r>Yd||t!==fs||s<8||s>15||n<0||n>9||i<0||i>jd)return Pt(e,Bt);s===8&&(s=9);var o=new pu;return e.state=o,o.strm=e,o.wrap=a,o.gzhead=null,o.w_bits=s,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+ee-1)/ee),o.window=new Kt(o.w_size*2),o.head=new ve(o.hash_size),o.prev=new ve(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Kt(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=n,o.strategy=i,o.method=t,mu(e)}function ao(e,n){return xu(e,n,fs,Jd,eu,qd)}function Dr(e,n){var t,s,r,i;if(!e||!e.state||n>eo||n<0)return e?Pt(e,Bt):Bt;if(s=e.state,!e.output||!e.input&&e.avail_in!==0||s.status===us&&n!==$e)return Pt(e,e.avail_out===0?Xr:Bt);if(s.strm=e,t=s.last_flush,s.last_flush=n,s.status===ro)if(s.wrap===2)e.adler=0,J(s,31),J(s,139),J(s,8),s.gzhead?(J(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),J(s,s.gzhead.time&255),J(s,s.gzhead.time>>8&255),J(s,s.gzhead.time>>16&255),J(s,s.gzhead.time>>24&255),J(s,s.level===9?2:s.strategy>=ds||s.level<2?4:0),J(s,s.gzhead.os&255),s.gzhead.extra&&s.gzhead.extra.length&&(J(s,s.gzhead.extra.length&255),J(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=de(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=no):(J(s,0),J(s,0),J(s,0),J(s,0),J(s,0),J(s,s.level===9?2:s.strategy>=ds||s.level<2?4:0),J(s,lu),s.status=dn);else{var a=fs+(s.w_bits-8<<4)<<8,o=-1;s.strategy>=ds||s.level<2?o=0:s.level<6?o=1:s.level===6?o=2:o=3,a|=o<<6,s.strstart!==0&&(a|=ou),a+=31-a%31,s.status=dn,cn(s,a),s.strstart!==0&&(cn(s,e.adler>>>16),cn(s,e.adler&65535)),e.adler=1}if(s.status===no)if(s.gzhead.extra){for(r=s.pending;s.gzindex<(s.gzhead.extra.length&65535)&&!(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),Ue(e),r=s.pending,s.pending===s.pending_buf_size));)J(s,s.gzhead.extra[s.gzindex]&255),s.gzindex++;s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=Nr)}else s.status=Nr;if(s.status===Nr)if(s.gzhead.name){r=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),Ue(e),r=s.pending,s.pending===s.pending_buf_size)){i=1;break}s.gzindex<s.gzhead.name.length?i=s.gzhead.name.charCodeAt(s.gzindex++)&255:i=0,J(s,i)}while(i!==0);s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),i===0&&(s.gzindex=0,s.status=Kr)}else s.status=Kr;if(s.status===Kr)if(s.gzhead.comment){r=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),Ue(e),r=s.pending,s.pending===s.pending_buf_size)){i=1;break}s.gzindex<s.gzhead.comment.length?i=s.gzhead.comment.charCodeAt(s.gzindex++)&255:i=0,J(s,i)}while(i!==0);s.gzhead.hcrc&&s.pending>r&&(e.adler=de(e.adler,s.pending_buf,s.pending-r,r)),i===0&&(s.status=Fr)}else s.status=Fr;if(s.status===Fr&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Ue(e),s.pending+2<=s.pending_buf_size&&(J(s,e.adler&255),J(s,e.adler>>8&255),e.adler=0,s.status=dn)):s.status=dn),s.pending!==0){if(Ue(e),e.avail_out===0)return s.last_flush=-1,ft}else if(e.avail_in===0&&so(n)<=so(t)&&n!==$e)return Pt(e,Xr);if(s.status===us&&e.avail_in!==0)return Pt(e,Xr);if(e.avail_in!==0||s.lookahead!==0||n!==mt&&s.status!==us){var u=s.strategy===ds?hu(s,n):s.strategy===Wd?uu(s,n):Mt[s.level].func(s,n);if((u===_t||u===Ot)&&(s.status=us),u===fe||u===_t)return e.avail_out===0&&(s.last_flush=-1),ft;if(u===un&&(n===Vd?Za(s):n!==eo&&(Tr(s,0,0,!1),n===hs&&(pt(s.head),s.lookahead===0&&(s.strstart=0,s.block_start=0,s.insert=0))),Ue(e),e.avail_out===0))return s.last_flush=-1,ft}return n!==$e?ft:s.wrap<=0?to:(s.wrap===2?(J(s,e.adler&255),J(s,e.adler>>8&255),J(s,e.adler>>16&255),J(s,e.adler>>24&255),J(s,e.total_in&255),J(s,e.total_in>>8&255),J(s,e.total_in>>16&255),J(s,e.total_in>>24&255)):(cn(s,e.adler>>>16),cn(s,e.adler&65535)),Ue(e),s.wrap>0&&(s.wrap=-s.wrap),s.pending!==0?ft:to)}var fn=class{constructor(){this.strm=new tn,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),ao(this.strm,Ir)}deflate(n){this.strm.input=n,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let t=Dr(this.strm,hs),s=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(t<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let r=[s],i=s.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,t=Dr(this.strm,hs),t<0)throw new Error("zlib deflate failed");let u=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);i+=u.length,r.push(u)}while(this.strm.avail_in>0);let a=new Uint8Array(i),o=0;for(let u=0;u<r.length;u++)a.set(r[u],o),o+=r[u].length;s=a}return this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0,s}};var g={XK_VoidSymbol:16777215,XK_BackSpace:65288,XK_Tab:65289,XK_Linefeed:65290,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Sys_Req:65301,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan_Mode:65315,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Touroku:65323,XK_Massyo:65324,XK_Kana_Lock:65325,XK_Kana_Shift:65326,XK_Eisu_Shift:65327,XK_Eisu_toggle:65328,XK_Kanji_Bangou:65335,XK_Zen_Koho:65341,XK_Mae_Koho:65342,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Page_Up:65365,XK_Next:65366,XK_Page_Down:65366,XK_End:65367,XK_Begin:65368,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Break:65387,XK_Mode_switch:65406,XK_script_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Tab:65417,XK_KP_Enter:65421,XK_KP_F1:65425,XK_KP_F2:65426,XK_KP_F3:65427,XK_KP_F4:65428,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Page_Up:65434,XK_KP_Next:65435,XK_KP_Page_Down:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_L1:65480,XK_F12:65481,XK_L2:65481,XK_F13:65482,XK_L3:65482,XK_F14:65483,XK_L4:65483,XK_F15:65484,XK_L5:65484,XK_F16:65485,XK_L6:65485,XK_F17:65486,XK_L7:65486,XK_F18:65487,XK_L8:65487,XK_F19:65488,XK_L9:65488,XK_F20:65489,XK_L10:65489,XK_F21:65490,XK_R1:65490,XK_F22:65491,XK_R2:65491,XK_F23:65492,XK_R3:65492,XK_F24:65493,XK_R4:65493,XK_F25:65494,XK_R5:65494,XK_F26:65495,XK_R6:65495,XK_F27:65496,XK_R7:65496,XK_F28:65497,XK_R8:65497,XK_F29:65498,XK_R9:65498,XK_F30:65499,XK_R10:65499,XK_F31:65500,XK_R11:65500,XK_F32:65501,XK_R12:65501,XK_F33:65502,XK_R13:65502,XK_F34:65503,XK_R14:65503,XK_F35:65504,XK_R15:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Shift_Lock:65510,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_Hyper_L:65517,XK_Hyper_R:65518,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_exclam:33,XK_quotedbl:34,XK_numbersign:35,XK_dollar:36,XK_percent:37,XK_ampersand:38,XK_apostrophe:39,XK_quoteright:39,XK_parenleft:40,XK_parenright:41,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_colon:58,XK_semicolon:59,XK_less:60,XK_equal:61,XK_greater:62,XK_question:63,XK_at:64,XK_A:65,XK_B:66,XK_C:67,XK_D:68,XK_E:69,XK_F:70,XK_G:71,XK_H:72,XK_I:73,XK_J:74,XK_K:75,XK_L:76,XK_M:77,XK_N:78,XK_O:79,XK_P:80,XK_Q:81,XK_R:82,XK_S:83,XK_T:84,XK_U:85,XK_V:86,XK_W:87,XK_X:88,XK_Y:89,XK_Z:90,XK_bracketleft:91,XK_backslash:92,XK_bracketright:93,XK_asciicircum:94,XK_underscore:95,XK_grave:96,XK_quoteleft:96,XK_a:97,XK_b:98,XK_c:99,XK_d:100,XK_e:101,XK_f:102,XK_g:103,XK_h:104,XK_i:105,XK_j:106,XK_k:107,XK_l:108,XK_m:109,XK_n:110,XK_o:111,XK_p:112,XK_q:113,XK_r:114,XK_s:115,XK_t:116,XK_u:117,XK_v:118,XK_w:119,XK_x:120,XK_y:121,XK_z:122,XK_braceleft:123,XK_bar:124,XK_braceright:125,XK_asciitilde:126,XK_nobreakspace:160,XK_exclamdown:161,XK_cent:162,XK_sterling:163,XK_currency:164,XK_yen:165,XK_brokenbar:166,XK_section:167,XK_diaeresis:168,XK_copyright:169,XK_ordfeminine:170,XK_guillemotleft:171,XK_notsign:172,XK_hyphen:173,XK_registered:174,XK_macron:175,XK_degree:176,XK_plusminus:177,XK_twosuperior:178,XK_threesuperior:179,XK_acute:180,XK_mu:181,XK_paragraph:182,XK_periodcentered:183,XK_cedilla:184,XK_onesuperior:185,XK_masculine:186,XK_guillemotright:187,XK_onequarter:188,XK_onehalf:189,XK_threequarters:190,XK_questiondown:191,XK_Agrave:192,XK_Aacute:193,XK_Acircumflex:194,XK_Atilde:195,XK_Adiaeresis:196,XK_Aring:197,XK_AE:198,XK_Ccedilla:199,XK_Egrave:200,XK_Eacute:201,XK_Ecircumflex:202,XK_Ediaeresis:203,XK_Igrave:204,XK_Iacute:205,XK_Icircumflex:206,XK_Idiaeresis:207,XK_ETH:208,XK_Eth:208,XK_Ntilde:209,XK_Ograve:210,XK_Oacute:211,XK_Ocircumflex:212,XK_Otilde:213,XK_Odiaeresis:214,XK_multiply:215,XK_Oslash:216,XK_Ooblique:216,XK_Ugrave:217,XK_Uacute:218,XK_Ucircumflex:219,XK_Udiaeresis:220,XK_Yacute:221,XK_THORN:222,XK_Thorn:222,XK_ssharp:223,XK_agrave:224,XK_aacute:225,XK_acircumflex:226,XK_atilde:227,XK_adiaeresis:228,XK_aring:229,XK_ae:230,XK_ccedilla:231,XK_egrave:232,XK_eacute:233,XK_ecircumflex:234,XK_ediaeresis:235,XK_igrave:236,XK_iacute:237,XK_icircumflex:238,XK_idiaeresis:239,XK_eth:240,XK_ntilde:241,XK_ograve:242,XK_oacute:243,XK_ocircumflex:244,XK_otilde:245,XK_odiaeresis:246,XK_division:247,XK_oslash:248,XK_ooblique:248,XK_ugrave:249,XK_uacute:250,XK_ucircumflex:251,XK_udiaeresis:252,XK_yacute:253,XK_thorn:254,XK_ydiaeresis:255,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_ModeLock:269025025,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_KbdLightOnOff:269025028,XF86XK_KbdBrightnessUp:269025029,XF86XK_KbdBrightnessDown:269025030,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Start:269025050,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Memo:269025054,XF86XK_ToDoList:269025055,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_ContrastAdjust:269025058,XF86XK_RockerUp:269025059,XF86XK_RockerDown:269025060,XF86XK_RockerEnter:269025061,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Sleep:269025071,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_VendorHome:269025076,XF86XK_LightBulb:269025077,XF86XK_Shop:269025078,XF86XK_History:269025079,XF86XK_OpenURL:269025080,XF86XK_AddFavorite:269025081,XF86XK_HotLinks:269025082,XF86XK_BrightnessAdjust:269025083,XF86XK_Finance:269025084,XF86XK_Community:269025085,XF86XK_AudioRewind:269025086,XF86XK_BackForward:269025087,XF86XK_Launch0:269025088,XF86XK_Launch1:269025089,XF86XK_Launch2:269025090,XF86XK_Launch3:269025091,XF86XK_Launch4:269025092,XF86XK_Launch5:269025093,XF86XK_Launch6:269025094,XF86XK_Launch7:269025095,XF86XK_Launch8:269025096,XF86XK_Launch9:269025097,XF86XK_LaunchA:269025098,XF86XK_LaunchB:269025099,XF86XK_LaunchC:269025100,XF86XK_LaunchD:269025101,XF86XK_LaunchE:269025102,XF86XK_LaunchF:269025103,XF86XK_ApplicationLeft:269025104,XF86XK_ApplicationRight:269025105,XF86XK_Book:269025106,XF86XK_CD:269025107,XF86XK_Calculater:269025108,XF86XK_Clear:269025109,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Display:269025113,XF86XK_DOS:269025114,XF86XK_Documents:269025115,XF86XK_Excel:269025116,XF86XK_Explorer:269025117,XF86XK_Game:269025118,XF86XK_Go:269025119,XF86XK_iTouch:269025120,XF86XK_LogOff:269025121,XF86XK_Market:269025122,XF86XK_Meeting:269025123,XF86XK_MenuKB:269025125,XF86XK_MenuPB:269025126,XF86XK_MySites:269025127,XF86XK_New:269025128,XF86XK_News:269025129,XF86XK_OfficeHome:269025130,XF86XK_Open:269025131,XF86XK_Option:269025132,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Q:269025136,XF86XK_Reply:269025138,XF86XK_Reload:269025139,XF86XK_RotateWindows:269025140,XF86XK_RotationPB:269025141,XF86XK_RotationKB:269025142,XF86XK_Save:269025143,XF86XK_ScrollUp:269025144,XF86XK_ScrollDown:269025145,XF86XK_ScrollClick:269025146,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Support:269025150,XF86XK_TaskPane:269025151,XF86XK_Terminal:269025152,XF86XK_Tools:269025153,XF86XK_Travel:269025154,XF86XK_UserPB:269025156,XF86XK_User1KB:269025157,XF86XK_User2KB:269025158,XF86XK_Video:269025159,XF86XK_WheelButton:269025160,XF86XK_Word:269025161,XF86XK_Xfer:269025162,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_Away:269025165,XF86XK_Messenger:269025166,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Pictures:269025169,XF86XK_Music:269025170,XF86XK_Battery:269025171,XF86XK_Bluetooth:269025172,XF86XK_WLAN:269025173,XF86XK_UWB:269025174,XF86XK_AudioForward:269025175,XF86XK_AudioRepeat:269025176,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_CycleAngle:269025180,XF86XK_FrameBack:269025181,XF86XK_FrameForward:269025182,XF86XK_Time:269025183,XF86XK_Select:269025184,XF86XK_View:269025185,XF86XK_TopMenu:269025186,XF86XK_Red:269025187,XF86XK_Green:269025188,XF86XK_Yellow:269025189,XF86XK_Blue:269025190,XF86XK_Suspend:269025191,XF86XK_Hibernate:269025192,XF86XK_TouchpadToggle:269025193,XF86XK_TouchpadOn:269025200,XF86XK_TouchpadOff:269025201,XF86XK_AudioMicMute:269025202,XF86XK_Switch_VT_1:269024769,XF86XK_Switch_VT_2:269024770,XF86XK_Switch_VT_3:269024771,XF86XK_Switch_VT_4:269024772,XF86XK_Switch_VT_5:269024773,XF86XK_Switch_VT_6:269024774,XF86XK_Switch_VT_7:269024775,XF86XK_Switch_VT_8:269024776,XF86XK_Switch_VT_9:269024777,XF86XK_Switch_VT_10:269024778,XF86XK_Switch_VT_11:269024779,XF86XK_Switch_VT_12:269024780,XF86XK_Ungrab:269024800,XF86XK_ClearGrab:269024801,XF86XK_Next_VMode:269024802,XF86XK_Prev_VMode:269024803,XF86XK_LogWindowTree:269024804,XF86XK_LogGrabInfo:269024805};var gu={256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,402:2294,466:16777681,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8361:3839,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8711:2245,8728:3018,8730:2262,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8756:2240,8764:2248,8771:2249,8773:16785992,8800:2237,8801:2255,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200},oo={lookup(e){if(e>=32&&e<=255)return e;let n=gu[e];return n!==void 0?n:16777216|e}};var Pr={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"};var Mr={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"};var xt={};function X(e,n){if(n===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[n,n,n,n]}function ps(e,n,t){if(n===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[n,n,t,n]}function te(e,n,t){if(n===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(t===void 0)throw new Error('Undefined keysym for key "'+e+'"');if(e in xt)throw new Error('Duplicate entry for key "'+e+'"');xt[e]=[n,n,n,t]}ps("Alt",g.XK_Alt_L,g.XK_Alt_R);X("AltGraph",g.XK_ISO_Level3_Shift);X("CapsLock",g.XK_Caps_Lock);ps("Control",g.XK_Control_L,g.XK_Control_R);ps("Meta",g.XK_Super_L,g.XK_Super_R);X("NumLock",g.XK_Num_Lock);X("ScrollLock",g.XK_Scroll_Lock);ps("Shift",g.XK_Shift_L,g.XK_Shift_R);te("Enter",g.XK_Return,g.XK_KP_Enter);X("Tab",g.XK_Tab);te(" ",g.XK_space,g.XK_KP_Space);te("ArrowDown",g.XK_Down,g.XK_KP_Down);te("ArrowLeft",g.XK_Left,g.XK_KP_Left);te("ArrowRight",g.XK_Right,g.XK_KP_Right);te("ArrowUp",g.XK_Up,g.XK_KP_Up);te("End",g.XK_End,g.XK_KP_End);te("Home",g.XK_Home,g.XK_KP_Home);te("PageDown",g.XK_Next,g.XK_KP_Next);te("PageUp",g.XK_Prior,g.XK_KP_Prior);X("Backspace",g.XK_BackSpace);te("Clear",g.XK_Clear,g.XK_KP_Begin);X("Copy",g.XF86XK_Copy);X("Cut",g.XF86XK_Cut);te("Delete",g.XK_Delete,g.XK_KP_Delete);te("Insert",g.XK_Insert,g.XK_KP_Insert);X("Paste",g.XF86XK_Paste);X("Redo",g.XK_Redo);X("Undo",g.XK_Undo);X("Cancel",g.XK_Cancel);X("ContextMenu",g.XK_Menu);X("Escape",g.XK_Escape);X("Execute",g.XK_Execute);X("Find",g.XK_Find);X("Help",g.XK_Help);X("Pause",g.XK_Pause);X("Select",g.XK_Select);X("ZoomIn",g.XF86XK_ZoomIn);X("ZoomOut",g.XF86XK_ZoomOut);X("BrightnessDown",g.XF86XK_MonBrightnessDown);X("BrightnessUp",g.XF86XK_MonBrightnessUp);X("Eject",g.XF86XK_Eject);X("LogOff",g.XF86XK_LogOff);X("Power",g.XF86XK_PowerOff);X("PowerOff",g.XF86XK_PowerDown);X("PrintScreen",g.XK_Print);X("Hibernate",g.XF86XK_Hibernate);X("Standby",g.XF86XK_Standby);X("WakeUp",g.XF86XK_WakeUp);X("AllCandidates",g.XK_MultipleCandidate);X("Alphanumeric",g.XK_Eisu_toggle);X("CodeInput",g.XK_Codeinput);X("Compose",g.XK_Multi_key);X("Convert",g.XK_Henkan);X("GroupFirst",g.XK_ISO_First_Group);X("GroupLast",g.XK_ISO_Last_Group);X("GroupNext",g.XK_ISO_Next_Group);X("GroupPrevious",g.XK_ISO_Prev_Group);X("NonConvert",g.XK_Muhenkan);X("PreviousCandidate",g.XK_PreviousCandidate);X("SingleCandidate",g.XK_SingleCandidate);X("HangulMode",g.XK_Hangul);X("HanjaMode",g.XK_Hangul_Hanja);X("JunjaMode",g.XK_Hangul_Jeonja);X("Eisu",g.XK_Eisu_toggle);X("Hankaku",g.XK_Hankaku);X("Hiragana",g.XK_Hiragana);X("HiraganaKatakana",g.XK_Hiragana_Katakana);X("KanaMode",g.XK_Kana_Shift);X("KanjiMode",g.XK_Kanji);X("Katakana",g.XK_Katakana);X("Romaji",g.XK_Romaji);X("Zenkaku",g.XK_Zenkaku);X("ZenkakuHankaku",g.XK_Zenkaku_Hankaku);X("F1",g.XK_F1);X("F2",g.XK_F2);X("F3",g.XK_F3);X("F4",g.XK_F4);X("F5",g.XK_F5);X("F6",g.XK_F6);X("F7",g.XK_F7);X("F8",g.XK_F8);X("F9",g.XK_F9);X("F10",g.XK_F10);X("F11",g.XK_F11);X("F12",g.XK_F12);X("F13",g.XK_F13);X("F14",g.XK_F14);X("F15",g.XK_F15);X("F16",g.XK_F16);X("F17",g.XK_F17);X("F18",g.XK_F18);X("F19",g.XK_F19);X("F20",g.XK_F20);X("F21",g.XK_F21);X("F22",g.XK_F22);X("F23",g.XK_F23);X("F24",g.XK_F24);X("F25",g.XK_F25);X("F26",g.XK_F26);X("F27",g.XK_F27);X("F28",g.XK_F28);X("F29",g.XK_F29);X("F30",g.XK_F30);X("F31",g.XK_F31);X("F32",g.XK_F32);X("F33",g.XK_F33);X("F34",g.XK_F34);X("F35",g.XK_F35);X("Close",g.XF86XK_Close);X("MailForward",g.XF86XK_MailForward);X("MailReply",g.XF86XK_Reply);X("MailSend",g.XF86XK_Send);X("MediaFastForward",g.XF86XK_AudioForward);X("MediaPause",g.XF86XK_AudioPause);X("MediaPlay",g.XF86XK_AudioPlay);X("MediaRecord",g.XF86XK_AudioRecord);X("MediaRewind",g.XF86XK_AudioRewind);X("MediaStop",g.XF86XK_AudioStop);X("MediaTrackNext",g.XF86XK_AudioNext);X("MediaTrackPrevious",g.XF86XK_AudioPrev);X("New",g.XF86XK_New);X("Open",g.XF86XK_Open);X("Print",g.XK_Print);X("Save",g.XF86XK_Save);X("SpellCheck",g.XF86XK_Spell);X("AudioVolumeDown",g.XF86XK_AudioLowerVolume);X("AudioVolumeUp",g.XF86XK_AudioRaiseVolume);X("AudioVolumeMute",g.XF86XK_AudioMute);X("MicrophoneVolumeMute",g.XF86XK_AudioMicMute);X("LaunchApplication1",g.XF86XK_MyComputer);X("LaunchApplication2",g.XF86XK_Calculator);X("LaunchCalendar",g.XF86XK_Calendar);X("LaunchMail",g.XF86XK_Mail);X("LaunchMediaPlayer",g.XF86XK_AudioMedia);X("LaunchMusicPlayer",g.XF86XK_Music);X("LaunchPhone",g.XF86XK_Phone);X("LaunchScreenSaver",g.XF86XK_ScreenSaver);X("LaunchSpreadsheet",g.XF86XK_Excel);X("LaunchWebBrowser",g.XF86XK_WWW);X("LaunchWebCam",g.XF86XK_WebCam);X("LaunchWordProcessor",g.XF86XK_Word);X("BrowserBack",g.XF86XK_Back);X("BrowserFavorites",g.XF86XK_Favorites);X("BrowserForward",g.XF86XK_Forward);X("BrowserHome",g.XF86XK_HomePage);X("BrowserRefresh",g.XF86XK_Refresh);X("BrowserSearch",g.XF86XK_Search);X("BrowserStop",g.XF86XK_Stop);X("Dimmer",g.XF86XK_BrightnessAdjust);X("MediaAudioTrack",g.XF86XK_AudioCycleTrack);X("RandomToggle",g.XF86XK_AudioRandomPlay);X("SplitScreenToggle",g.XF86XK_SplitScreen);X("Subtitle",g.XF86XK_Subtitle);X("VideoModeNext",g.XF86XK_Next_VMode);te("=",g.XK_equal,g.XK_KP_Equal);te("+",g.XK_plus,g.XK_KP_Add);te("-",g.XK_minus,g.XK_KP_Subtract);te("*",g.XK_asterisk,g.XK_KP_Multiply);te("/",g.XK_slash,g.XK_KP_Divide);te(".",g.XK_period,g.XK_KP_Decimal);te(",",g.XK_comma,g.XK_KP_Separator);te("0",g.XK_0,g.XK_KP_0);te("1",g.XK_1,g.XK_KP_1);te("2",g.XK_2,g.XK_KP_2);te("3",g.XK_3,g.XK_KP_3);te("4",g.XK_4,g.XK_KP_4);te("5",g.XK_5,g.XK_KP_5);te("6",g.XK_6,g.XK_KP_6);te("7",g.XK_7,g.XK_KP_7);te("8",g.XK_8,g.XK_KP_8);te("9",g.XK_9,g.XK_KP_9);var Br=xt;function Ht(e){if(e.code){switch(e.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return e.code}if(e.keyCode in Pr){let n=Pr[e.keyCode];if(Qe()&&n==="ContextMenu"&&(n="MetaRight"),e.location===2)switch(n){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(e.location===3)switch(n){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return n}return"Unidentified"}function bu(e){if(e.key!==void 0&&e.key!=="Unidentified"){switch(e.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(e.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return e.key==="\0"&&e.code==="NumpadDecimal"?"Delete":e.key}let n=Ht(e);return n in Mr?Mr[n]:e.charCode?String.fromCharCode(e.charCode):"Unidentified"}function lo(e){let n=bu(e);if(n==="Unidentified")return null;if(n in Br){let s=e.location;if(n==="Meta"&&s===0&&(s=2),n==="Clear"&&s===3&&Ht(e)==="NumLock"&&(s=0),(s===void 0||s>3)&&(s=0),n==="Meta"){let r=Ht(e);if(r==="AltLeft")return g.XK_Meta_L;if(r==="AltRight")return g.XK_Meta_R}if(n==="Clear"&&Ht(e)==="NumLock")return g.XK_Num_Lock;if(Tt())switch(n){case"Zenkaku":case"Hankaku":return g.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return g.XK_Romaji}return Br[n][s]}if(n.length!==1)return null;let t=n.charCodeAt();return t?oo.lookup(t):null}var pn=class{constructor(n){this._target=n||null,this._keyDownList={},this._altGrArmed=!1,this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this)},this.onkeyevent=()=>{}}_sendKeyEvent(n,t,s,r=null,i=null){if(s)this._keyDownList[t]=n;else{if(!(t in this._keyDownList))return;delete this._keyDownList[t]}V("onkeyevent "+(s?"down":"up")+", keysym: "+n,", code: "+t+", numlock: "+r+", capslock: "+i),this.onkeyevent(n,t,s,r,i)}_getKeyCode(n){let t=Ht(n);if(t!=="Unidentified")return t;if(n.keyCode&&n.keyCode!==229)return"Platform"+n.keyCode;if(n.keyIdentifier){if(n.keyIdentifier.substr(0,2)!=="U+")return n.keyIdentifier;let s=parseInt(n.keyIdentifier.substr(2),16);return"Platform"+String.fromCharCode(s).toUpperCase().charCodeAt()}return"Unidentified"}_handleKeyDown(n){let t=this._getKeyCode(n),s=lo(n),r=n.getModifierState("NumLock"),i=n.getModifierState("CapsLock");if((Qe()||Xt())&&(r=null),this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),t==="AltRight"&&n.timeStamp-this._altGrCtrlTime<50?s=g.XK_ISO_Level3_Shift:this._sendKeyEvent(g.XK_Control_L,"ControlLeft",!0,r,i)),t==="Unidentified"){s&&(this._sendKeyEvent(s,t,!0,r,i),this._sendKeyEvent(s,t,!1,r,i)),lt(n);return}if(Qe()||Xt())switch(s){case g.XK_Super_L:s=g.XK_Alt_L;break;case g.XK_Super_R:s=g.XK_Super_L;break;case g.XK_Alt_L:s=g.XK_Mode_switch;break;case g.XK_Alt_R:s=g.XK_ISO_Level3_Shift;break}if(t in this._keyDownList&&(s=this._keyDownList[t]),(Qe()||Xt())&&n.metaKey&&t!=="MetaLeft"&&t!=="MetaRight"){this._sendKeyEvent(s,t,!0,r,i),this._sendKeyEvent(s,t,!1,r,i),lt(n);return}if((Qe()||Xt())&&t==="CapsLock"){this._sendKeyEvent(g.XK_Caps_Lock,"CapsLock",!0,r,i),this._sendKeyEvent(g.XK_Caps_Lock,"CapsLock",!1,r,i),lt(n);return}let a=[g.XK_Zenkaku_Hankaku,g.XK_Eisu_toggle,g.XK_Katakana,g.XK_Hiragana,g.XK_Romaji];if(Tt()&&a.includes(s)){this._sendKeyEvent(s,t,!0,r,i),this._sendKeyEvent(s,t,!1,r,i),lt(n);return}if(lt(n),t==="ControlLeft"&&Tt()&&!("ControlLeft"in this._keyDownList)){this._altGrArmed=!0,this._altGrTimeout=setTimeout(this._interruptAltGrSequence.bind(this),100),this._altGrCtrlTime=n.timeStamp;return}this._sendKeyEvent(s,t,!0,r,i)}_handleKeyUp(n){lt(n);let t=this._getKeyCode(n);if(this._interruptAltGrSequence(),(Qe()||Xt())&&t==="CapsLock"){this._sendKeyEvent(g.XK_Caps_Lock,"CapsLock",!0),this._sendKeyEvent(g.XK_Caps_Lock,"CapsLock",!1);return}this._sendKeyEvent(this._keyDownList[t],t,!1),Tt()&&(t==="ShiftLeft"||t==="ShiftRight")&&("ShiftRight"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftRight,"ShiftRight",!1),"ShiftLeft"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftLeft,"ShiftLeft",!1))}_interruptAltGrSequence(){this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),this._sendKeyEvent(g.XK_Control_L,"ControlLeft",!0))}_allKeysUp(){V(">> Keyboard.allKeysUp"),this._interruptAltGrSequence();for(let n in this._keyDownList)this._sendKeyEvent(this._keyDownList[n],n,!1);V("<< Keyboard.allKeysUp")}grab(){this._target.addEventListener("keydown",this._eventHandlers.keydown),this._target.addEventListener("keyup",this._eventHandlers.keyup),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._target.removeEventListener("keydown",this._eventHandlers.keydown),this._target.removeEventListener("keyup",this._eventHandlers.keyup),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}};var _n=class{constructor(){this._target=null,this._state=127,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(n){this.detach(),this._target=n,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(n){let t;switch(n.stopPropagation(),n.preventDefault(),n.type){case"touchstart":t=this._touchStart;break;case"touchmove":t=this._touchMove;break;case"touchend":case"touchcancel":t=this._touchEnd;break}for(let s=0;s<n.changedTouches.length;s++){let r=n.changedTouches[s];t.call(this,r.identifier,r.clientX,r.clientY)}}_touchStart(n,t,s){if(this._hasDetectedGesture()||this._state===0){this._ignored.push(n);return}if(this._tracked.length>0&&Date.now()-this._tracked[0].started>250){this._state=0,this._ignored.push(n);return}if(this._waitingRelease){this._state=0,this._ignored.push(n);return}switch(this._tracked.push({id:n,started:Date.now(),active:!0,firstX:t,firstY:s,lastX:t,lastY:s,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=0}}_touchMove(n,t,s){let r=this._tracked.find(o=>o.id===n);if(r===void 0)return;r.lastX=t,r.lastY=s;let i=t-r.firstX,a=s-r.firstY;if((r.firstX!==r.lastX||r.firstY!==r.lastY)&&(r.angle=Math.atan2(a,i)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(i,a)<50)return;if(this._state&=-24,this._stopLongpressTimeout(),this._tracked.length!==1&&(this._state&=-9),this._tracked.length!==2&&(this._state&=-97),this._tracked.length===2){let o=this._tracked.find(l=>l.id!==n);if(Math.hypot(o.firstX-o.lastX,o.firstY-o.lastY)>50){let l=Math.abs(r.angle-o.angle);l=Math.abs((l+180)%360-180),l>90?this._state&=-33:this._state&=-65,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(n,t,s){if(this._ignored.indexOf(n)!==-1){this._ignored.splice(this._ignored.indexOf(n),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=127,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=0),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=-17,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>250&&(this._state=0),this._tracked.some(i=>Date.now()-i.started>1e3)&&(this._state=0);let r=this._tracked.find(i=>i.id===n);if(r.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==0)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let r=0;r<this._tracked.length;r++)this._tracked[r].active&&this._ignored.push(this._tracked[r].id);this._tracked=[],this._state=0,this._ignored.indexOf(n)!==-1&&this._ignored.splice(this._ignored.indexOf(n),1),this._ignored.length===0&&(this._state=127,this._waitingRelease=!1)}_hasDetectedGesture(){return!(this._state===0||this._state&this._state-1||this._state&7&&this._tracked.some(n=>n.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),1e3)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=16,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),50)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let n=this._getAverageMovement(),t=Math.abs(n.x),s=Math.abs(n.y),r=this._getAverageDistance(),i=Math.abs(Math.hypot(r.first.x,r.first.y)-Math.hypot(r.last.x,r.last.y));s<i&&t<i?this._state=64:this._state=32,this._pushEvent("gesturestart"),this._pushEvent("gesturemove")}_pushEvent(n){let t={type:this._stateToGesture(this._state)},s=this._getPosition(),r=s.last;switch(n==="gesturestart"&&(r=s.first),this._state){case 32:case 64:r=s.first;break}if(t.clientX=r.x,t.clientY=r.y,this._state===64){let a=this._getAverageDistance();n==="gesturestart"?(t.magnitudeX=a.first.x,t.magnitudeY=a.first.y):(t.magnitudeX=a.last.x,t.magnitudeY=a.last.y)}else if(this._state===32)if(n==="gesturestart")t.magnitudeX=0,t.magnitudeY=0;else{let a=this._getAverageMovement();t.magnitudeX=a.x,t.magnitudeY=a.y}let i=new CustomEvent(n,{detail:t});this._target.dispatchEvent(i)}_stateToGesture(n){switch(n){case 1:return"onetap";case 2:return"twotap";case 4:return"threetap";case 8:return"drag";case 16:return"longpress";case 32:return"twodrag";case 64:return"pinch"}throw new Error("Unknown gesture state: "+n)}_getPosition(){if(this._tracked.length===0)throw new Error("Failed to get gesture position, no tracked touches");let n=this._tracked.length,t=0,s=0,r=0,i=0;for(let a=0;a<this._tracked.length;a++)t+=this._tracked[a].firstX,s+=this._tracked[a].firstY,r+=this._tracked[a].lastX,i+=this._tracked[a].lastY;return{first:{x:t/n,y:s/n},last:{x:r/n,y:i/n}}}_getAverageMovement(){if(this._tracked.length===0)throw new Error("Failed to get gesture movement, no tracked touches");let n,t;n=t=0;let s=this._tracked.length;for(let r=0;r<this._tracked.length;r++)n+=this._tracked[r].lastX-this._tracked[r].firstX,t+=this._tracked[r].lastY-this._tracked[r].firstY;return{x:n/s,y:t/s}}_getAverageDistance(){if(this._tracked.length===0)throw new Error("Failed to get gesture distance, no tracked touches");let n=this._tracked[0],t=this._tracked[this._tracked.length-1],s=Math.abs(t.firstX-n.firstX),r=Math.abs(t.firstY-n.firstY),i=Math.abs(t.lastX-n.lastX),a=Math.abs(t.lastY-n.lastY);return{first:{x:s,y:r},last:{x:i,y:a}}}};var mn=!Bi||or,xn=class{constructor(){this._target=null,this._canvas=document.createElement("canvas"),mn&&(this._canvas.style.position="fixed",this._canvas.style.zIndex="65535",this._canvas.style.pointerEvents="none",this._canvas.style.userSelect="none",this._canvas.style.WebkitUserSelect="none",this._canvas.style.visibility="hidden"),this._position={x:0,y:0},this._hotSpot={x:0,y:0},this._eventHandlers={mouseover:this._handleMouseOver.bind(this),mouseleave:this._handleMouseLeave.bind(this),mousemove:this._handleMouseMove.bind(this),mouseup:this._handleMouseUp.bind(this)}}attach(n){if(this._target&&this.detach(),this._target=n,mn){document.body.appendChild(this._canvas);let t={capture:!0,passive:!0};this._target.addEventListener("mouseover",this._eventHandlers.mouseover,t),this._target.addEventListener("mouseleave",this._eventHandlers.mouseleave,t),this._target.addEventListener("mousemove",this._eventHandlers.mousemove,t),this._target.addEventListener("mouseup",this._eventHandlers.mouseup,t)}this.clear()}detach(){if(this._target){if(mn){let n={capture:!0,passive:!0};this._target.removeEventListener("mouseover",this._eventHandlers.mouseover,n),this._target.removeEventListener("mouseleave",this._eventHandlers.mouseleave,n),this._target.removeEventListener("mousemove",this._eventHandlers.mousemove,n),this._target.removeEventListener("mouseup",this._eventHandlers.mouseup,n),document.contains(this._canvas)&&document.body.removeChild(this._canvas)}this._target=null}}change(n,t,s,r,i){if(r===0||i===0){this.clear();return}this._position.x=this._position.x+this._hotSpot.x-t,this._position.y=this._position.y+this._hotSpot.y-s,this._hotSpot.x=t,this._hotSpot.y=s;let a=this._canvas.getContext("2d");this._canvas.width=r,this._canvas.height=i;let o=new ImageData(new Uint8ClampedArray(n),r,i);if(a.clearRect(0,0,r,i),a.putImageData(o,0,0),mn)this._updatePosition();else{let u=this._canvas.toDataURL();this._target.style.cursor="url("+u+")"+t+" "+s+", default"}}clear(){this._target.style.cursor="none",this._canvas.width=0,this._canvas.height=0,this._position.x=this._position.x+this._hotSpot.x,this._position.y=this._position.y+this._hotSpot.y,this._hotSpot.x=0,this._hotSpot.y=0}move(n,t){if(!mn)return;window.visualViewport?(this._position.x=n+window.visualViewport.offsetLeft,this._position.y=t+window.visualViewport.offsetTop):(this._position.x=n,this._position.y=t),this._updatePosition();let s=document.elementFromPoint(n,t);this._updateVisibility(s)}_handleMouseOver(n){this._handleMouseMove(n)}_handleMouseLeave(n){this._updateVisibility(n.relatedTarget)}_handleMouseMove(n){this._updateVisibility(n.target),this._position.x=n.clientX-this._hotSpot.x,this._position.y=n.clientY-this._hotSpot.y,this._updatePosition()}_handleMouseUp(n){let t=document.elementFromPoint(n.clientX,n.clientY);this._updateVisibility(t),this._captureIsActive()&&window.setTimeout(()=>{this._target&&(t=document.elementFromPoint(n.clientX,n.clientY),this._updateVisibility(t))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(n){return n?n===this._target?!0:!(!this._target.contains(n)||window.getComputedStyle(n).cursor!=="none"):!1}_updateVisibility(n){this._captureIsActive()&&(n=document.captureElement),this._shouldShowCursor(n)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}};var Or=40*1024*1024,_s={CONNECTING:"connecting",OPEN:"open",CLOSING:"closing",CLOSED:"closed"},ms={CONNECTING:[WebSocket.CONNECTING,_s.CONNECTING],OPEN:[WebSocket.OPEN,_s.OPEN],CLOSING:[WebSocket.CLOSING,_s.CLOSING],CLOSED:[WebSocket.CLOSED,_s.CLOSED]},co=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"],gn=class{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get readyState(){let n;return this._websocket===null?"unused":(n=this._websocket.readyState,ms.CONNECTING.includes(n)?"connecting":ms.OPEN.includes(n)?"open":ms.CLOSING.includes(n)?"closing":ms.CLOSED.includes(n)?"closed":"unknown")}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(n){this._rQi+=n}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(n){let t=0;for(let s=n-1;s>=0;s--)t+=this._rQ[this._rQi++]<<s*8;return t>>>0}rQlen(){return this._rQlen-this._rQi}rQshiftStr(n){let t="";for(let s=0;s<n;s+=4096){let r=this.rQshiftBytes(Math.min(4096,n-s),!1);t+=String.fromCharCode.apply(null,r)}return t}rQshiftBytes(n,t=!0){return this._rQi+=n,t?this._rQ.slice(this._rQi-n,this._rQi):this._rQ.subarray(this._rQi-n,this._rQi)}rQshiftTo(n,t){n.set(new Uint8Array(this._rQ.buffer,this._rQi,t)),this._rQi+=t}rQpeekBytes(n,t=!0){return t?this._rQ.slice(this._rQi,this._rQi+n):this._rQ.subarray(this._rQi,this._rQi+n)}rQwait(n,t,s){if(this._rQlen-this._rQi<t){if(s){if(this._rQi<s)throw new Error("rQwait cannot backup "+s+" bytes");this._rQi-=s}return!0}return!1}sQpush8(n){this._sQensureSpace(1),this._sQ[this._sQlen++]=n}sQpush16(n){this._sQensureSpace(2),this._sQ[this._sQlen++]=n>>8&255,this._sQ[this._sQlen++]=n>>0&255}sQpush32(n){this._sQensureSpace(4),this._sQ[this._sQlen++]=n>>24&255,this._sQ[this._sQlen++]=n>>16&255,this._sQ[this._sQlen++]=n>>8&255,this._sQ[this._sQlen++]=n>>0&255}sQpushString(n){let t=n.split("").map(s=>s.charCodeAt(0));this.sQpushBytes(new Uint8Array(t))}sQpushBytes(n){for(let t=0;t<n.length;){this._sQensureSpace(1);let s=this._sQbufferSize-this._sQlen;s>n.length-t&&(s=n.length-t),this._sQ.set(n.subarray(t,t+s),this._sQlen),this._sQlen+=s,t+=s}}flush(){this._sQlen>0&&this.readyState==="open"&&(this._websocket.send(new Uint8Array(this._sQ.buffer,0,this._sQlen)),this._sQlen=0)}_sQensureSpace(n){this._sQbufferSize-this._sQlen<n&&this.flush()}off(n){this._eventHandlers[n]=()=>{}}on(n,t){this._eventHandlers[n]=t}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(n,t){this.attach(new WebSocket(n,t))}attach(n){this.init();let t=[...Object.keys(n),...Object.getOwnPropertyNames(Object.getPrototypeOf(n))];for(let s=0;s<co.length;s++){let r=co[s];if(t.indexOf(r)<0)throw new Error("Raw channel missing property: "+r)}this._websocket=n,this._websocket.binaryType="arraybuffer",this._websocket.onmessage=this._recvMessage.bind(this),this._websocket.onopen=()=>{V(">> WebSock.onopen"),this._websocket.protocol&&ue("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),V("<< WebSock.onopen")},this._websocket.onclose=s=>{V(">> WebSock.onclose"),this._eventHandlers.close(s),V("<< WebSock.onclose")},this._websocket.onerror=s=>{V(">> WebSock.onerror: "+s),this._eventHandlers.error(s),V("<< WebSock.onerror: "+s)}}close(){this._websocket&&((this.readyState==="connecting"||this.readyState==="open")&&(ue("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_expandCompactRQ(n){let t=(this._rQlen-this._rQi+n)*8,s=this._rQbufferSize<t;if(s&&(this._rQbufferSize=Math.max(this._rQbufferSize*2,t)),this._rQbufferSize>Or&&(this._rQbufferSize=Or,this._rQbufferSize-(this._rQlen-this._rQi)<n))throw new Error("Receive queue buffer exceeded "+Or+" bytes, and the new message could not fit");if(s){let r=this._rQ.buffer;this._rQ=new Uint8Array(this._rQbufferSize),this._rQ.set(new Uint8Array(r,this._rQi,this._rQlen-this._rQi))}else this._rQ.copyWithin(0,this._rQi,this._rQlen);this._rQlen=this._rQlen-this._rQi,this._rQi=0}_recvMessage(n){this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0);let t=new Uint8Array(n.data);t.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(t.length),this._rQ.set(t,this._rQlen),this._rQlen+=t.length,this._rQlen-this._rQi>0?this._eventHandlers.message():V("Ignoring empty message")}};var uo={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443};var W={encodingRaw:0,encodingCopyRect:1,encodingRRE:2,encodingHextile:5,encodingZlib:6,encodingTight:7,encodingZRLE:16,encodingTightPNG:-260,encodingJPEG:21,encodingH264:50,pseudoEncodingQualityLevel9:-23,pseudoEncodingQualityLevel0:-32,pseudoEncodingDesktopSize:-223,pseudoEncodingLastRect:-224,pseudoEncodingCursor:-239,pseudoEncodingQEMUExtendedKeyEvent:-258,pseudoEncodingQEMULedEvent:-261,pseudoEncodingDesktopName:-307,pseudoEncodingExtendedDesktopSize:-308,pseudoEncodingXvp:-309,pseudoEncodingFence:-312,pseudoEncodingContinuousUpdates:-313,pseudoEncodingExtendedMouseButtons:-316,pseudoEncodingCompressLevel9:-247,pseudoEncodingCompressLevel0:-256,pseudoEncodingVMwareCursor:1464686180,pseudoEncodingExtendedClipboard:3231835598};var xs=class e{constructor(){this._key=null}get algorithm(){return{name:"AES-ECB"}}static async importKey(n,t,s,r){let i=new e;return await i._importKey(n,s,r),i}async _importKey(n,t,s){this._key=await window.crypto.subtle.importKey("raw",n,{name:"AES-CBC"},t,s)}async encrypt(n,t){let s=new Uint8Array(t);if(s.length%16!==0||this._key===null)return null;let r=s.length/16;for(let i=0;i<r;i++){let a=new Uint8Array(await window.crypto.subtle.encrypt({name:"AES-CBC",iv:new Uint8Array(16)},this._key,s.slice(i*16,i*16+16))).slice(0,16);s.set(a,i*16)}return s}},gs=class e{constructor(){this._rawKey=null,this._ctrKey=null,this._cbcKey=null,this._zeroBlock=new Uint8Array(16),this._prefixBlock0=this._zeroBlock,this._prefixBlock1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),this._prefixBlock2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2])}get algorithm(){return{name:"AES-EAX"}}async _encryptBlock(n){let t=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,n);return new Uint8Array(t).slice(0,16)}async _initCMAC(){let n=await this._encryptBlock(this._zeroBlock),t=new Uint8Array(16),s=n[0]>>>6;for(let i=0;i<15;i++)t[i]=n[i+1]>>6|n[i]<<2,n[i]=n[i+1]>>7|n[i]<<1;let r=[0,135,14,137];t[14]^=s>>>1,t[15]=n[15]<<2^r[s],n[15]=n[15]<<1^r[s>>1],this._k1=n,this._k2=t}async _encryptCTR(n,t){let s=await window.crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this._ctrKey,n);return new Uint8Array(s)}async _decryptCTR(n,t){let s=await window.crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this._ctrKey,n);return new Uint8Array(s)}async _computeCMAC(n,t){if(t.length!==16)return null;let s=Math.floor(n.length/16),r=Math.ceil(n.length/16),i=n.length-s*16,a=new Uint8Array((r+1)*16);if(a.set(t),a.set(n,16),i===0)for(let l=0;l<16;l++)a[s*16+l]^=this._k1[l];else{a[(s+1)*16+i]=128;for(let l=0;l<16;l++)a[(s+1)*16+l]^=this._k2[l]}let o=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,a);return o=new Uint8Array(o),o.slice(o.length-32,o.length-16)}static async importKey(n,t,s,r){let i=new e;return await i._importKey(n),i}async _importKey(n){this._rawKey=n,this._ctrKey=await window.crypto.subtle.importKey("raw",n,{name:"AES-CTR"},!1,["encrypt","decrypt"]),this._cbcKey=await window.crypto.subtle.importKey("raw",n,{name:"AES-CBC"},!1,["encrypt"]),await this._initCMAC()}async encrypt(n,t){let s=n.additionalData,r=n.iv,i=await this._computeCMAC(r,this._prefixBlock0),a=await this._encryptCTR(t,i),o=await this._computeCMAC(s,this._prefixBlock1),u=await this._computeCMAC(a,this._prefixBlock2);for(let d=0;d<16;d++)u[d]^=i[d]^o[d];let l=new Uint8Array(16+a.length);return l.set(a),l.set(u,a.length),l}async decrypt(n,t){let s=t.slice(0,t.length-16),r=n.additionalData,i=n.iv,a=t.slice(t.length-16),o=await this._computeCMAC(i,this._prefixBlock0),u=await this._computeCMAC(r,this._prefixBlock1),l=await this._computeCMAC(s,this._prefixBlock2);for(let h=0;h<16;h++)l[h]^=o[h]^u[h];if(l.length!==a.length)return null;for(let h=0;h<a.length;h++)if(l[h]!==a[h])return null;return await this._decryptCTR(s,o)}};var ho=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],yu=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],m=0,S,A,N,C,T,K;S=65536;A=1<<24;N=S|A;C=4;T=1024;K=C|T;var fo=[N|T,m|m,S|m,N|K,N|C,S|K,m|C,S|m,m|T,N|T,N|K,m|T,A|K,N|C,A|m,m|C,m|K,A|T,A|T,S|T,S|T,N|m,N|m,A|K,S|C,A|C,A|C,S|C,m|m,m|K,S|K,A|m,S|m,N|K,m|C,N|m,N|T,A|m,A|m,m|T,N|C,S|m,S|T,A|C,m|T,m|C,A|K,S|K,N|K,S|C,N|m,A|K,A|C,m|K,S|K,N|T,m|K,A|T,A|T,m|m,S|C,S|T,m|m,N|C];S=1<<20;A=1<<31;N=S|A;C=32;T=32768;K=C|T;var po=[N|K,A|T,m|T,S|K,S|m,m|C,N|C,A|K,A|C,N|K,N|T,A|m,A|T,S|m,m|C,N|C,S|T,S|C,A|K,m|m,A|m,m|T,S|K,N|m,S|C,A|C,m|m,S|T,m|K,N|T,N|m,m|K,m|m,S|K,N|C,S|m,A|K,N|m,N|T,m|T,N|m,A|T,m|C,N|K,S|K,m|C,m|T,A|m,m|K,N|T,S|m,A|C,S|C,A|K,A|C,S|C,S|T,m|m,A|T,m|K,A|m,N|C,N|K,S|T];S=1<<17;A=1<<27;N=S|A;C=8;T=512;K=C|T;var _o=[m|K,N|T,m|m,N|C,A|T,m|m,S|K,A|T,S|C,A|C,A|C,S|m,N|K,S|C,N|m,m|K,A|m,m|C,N|T,m|T,S|T,N|m,N|C,S|K,A|K,S|T,S|m,A|K,m|C,N|K,m|T,A|m,N|T,A|m,S|C,m|K,S|m,N|T,A|T,m|m,m|T,S|C,N|K,A|T,A|C,m|T,m|m,N|C,A|K,S|m,A|m,N|K,m|C,S|K,S|T,A|C,N|m,A|K,m|K,N|m,S|K,m|C,N|C,S|T];S=8192;A=1<<23;N=S|A;C=1;T=128;K=C|T;var mo=[N|C,S|K,S|K,m|T,N|T,A|K,A|C,S|C,m|m,N|m,N|m,N|K,m|K,m|m,A|T,A|C,m|C,S|m,A|m,N|C,m|T,A|m,S|C,S|T,A|K,m|C,S|T,A|T,S|m,N|T,N|K,m|K,A|T,A|C,N|m,N|K,m|K,m|m,m|m,N|m,S|T,A|T,A|K,m|C,N|C,S|K,S|K,m|T,N|K,m|K,m|C,S|m,A|C,S|C,N|T,A|K,S|C,S|T,A|m,N|C,m|T,A|m,S|m,N|T];S=1<<25;A=1<<30;N=S|A;C=256;T=1<<19;K=C|T;var xo=[m|C,S|K,S|T,N|C,m|T,m|C,A|m,S|T,A|K,m|T,S|C,A|K,N|C,N|T,m|K,A|m,S|m,A|T,A|T,m|m,A|C,N|K,N|K,S|C,N|T,A|C,m|m,N|m,S|K,S|m,N|m,m|K,m|T,N|C,m|C,S|m,A|m,S|T,N|C,A|K,S|C,A|m,N|T,S|K,A|K,m|C,S|m,N|T,N|K,m|K,N|m,N|K,S|T,m|m,A|T,N|m,m|K,S|C,A|C,m|T,m|m,A|T,S|K,A|C];S=1<<22;A=1<<29;N=S|A;C=16;T=16384;K=C|T;var go=[A|C,N|m,m|T,N|K,N|m,m|C,N|K,S|m,A|T,S|K,S|m,A|C,S|C,A|T,A|m,m|K,m|m,S|C,A|K,m|T,S|T,A|K,m|C,N|C,N|C,m|m,S|K,N|T,m|K,S|T,N|T,A|m,A|T,m|C,N|C,S|T,N|K,S|m,m|K,A|C,S|m,A|T,A|m,m|K,A|C,N|K,S|T,N|m,S|K,N|T,m|m,N|C,m|C,m|T,N|m,S|K,m|T,S|C,A|K,m|m,N|T,A|m,S|C,A|K];S=1<<21;A=1<<26;N=S|A;C=2;T=2048;K=C|T;var bo=[S|m,N|C,A|K,m|m,m|T,A|K,S|K,N|T,N|K,S|m,m|m,A|C,m|C,A|m,N|C,m|K,A|T,S|K,S|C,A|T,A|C,N|m,N|T,S|C,N|m,m|T,m|K,N|K,S|T,m|C,A|m,S|T,A|m,S|T,S|m,A|K,A|K,N|C,N|C,m|C,S|C,A|m,A|T,S|m,N|T,m|K,S|K,N|T,m|K,A|C,N|K,N|m,S|T,m|m,m|C,N|K,m|m,S|K,N|m,m|T,A|C,A|T,m|T,S|C];S=1<<18;A=1<<28;N=S|A;C=64;T=4096;K=C|T;var vo=[A|K,m|T,S|m,N|K,A|m,A|K,m|C,A|m,S|C,N|m,N|K,S|T,N|T,S|K,m|T,m|C,N|m,A|C,A|T,m|K,S|T,S|C,N|C,N|T,m|K,m|m,m|m,N|C,A|C,A|T,S|K,S|m,S|K,S|m,N|T,m|T,m|C,N|C,m|T,S|K,A|T,m|C,A|C,N|m,N|C,A|m,S|m,A|K,m|m,N|K,S|C,A|C,N|m,A|T,A|K,m|m,N|K,S|T,S|T,m|K,m|K,S|C,A|m,N|T],bs=class{constructor(n){this.keys=[];let t=[],s=[],r=[];for(let i=0,a=56;i<56;++i,a-=8){a+=a<-5?65:a<-3?31:a<-1?63:a===27?35:0;let o=a&7;t[i]=(n[a>>>3]&1<<o)!==0?1:0}for(let i=0;i<16;++i){let a=i<<1,o=a+1;r[a]=r[o]=0;for(let u=28;u<59;u+=28)for(let l=u-28;l<u;++l){let d=l+yu[i];s[l]=d<u?t[d]:t[d-28]}for(let u=0;u<24;++u)s[ho[u]]!==0&&(r[a]|=1<<23-u),s[ho[u+24]]!==0&&(r[o]|=1<<23-u)}for(let i=0,a=0,o=0;i<16;++i){let u=r[a++],l=r[a++];this.keys[o]=(u&16515072)<<6,this.keys[o]|=(u&4032)<<10,this.keys[o]|=(l&16515072)>>>10,this.keys[o]|=(l&4032)>>>6,++o,this.keys[o]=(u&258048)<<12,this.keys[o]|=(u&63)<<16,this.keys[o]|=(l&258048)>>>4,this.keys[o]|=l&63,++o}}enc8(n){let t=n.slice(),s=0,r,i,a;r=t[s++]<<24|t[s++]<<16|t[s++]<<8|t[s++],i=t[s++]<<24|t[s++]<<16|t[s++]<<8|t[s++],a=(r>>>4^i)&252645135,i^=a,r^=a<<4,a=(r>>>16^i)&65535,i^=a,r^=a<<16,a=(i>>>2^r)&858993459,r^=a,i^=a<<2,a=(i>>>8^r)&16711935,r^=a,i^=a<<8,i=i<<1|i>>>31&1,a=(r^i)&2863311530,r^=a,i^=a,r=r<<1|r>>>31&1;for(let o=0,u=0;o<8;++o){a=i<<28|i>>>4,a^=this.keys[u++];let l=bo[a&63];l|=xo[a>>>8&63],l|=_o[a>>>16&63],l|=fo[a>>>24&63],a=i^this.keys[u++],l|=vo[a&63],l|=go[a>>>8&63],l|=mo[a>>>16&63],l|=po[a>>>24&63],r^=l,a=r<<28|r>>>4,a^=this.keys[u++],l=bo[a&63],l|=xo[a>>>8&63],l|=_o[a>>>16&63],l|=fo[a>>>24&63],a=r^this.keys[u++],l|=vo[a&63],l|=go[a>>>8&63],l|=mo[a>>>16&63],l|=po[a>>>24&63],i^=l}for(i=i<<31|i>>>1,a=(r^i)&2863311530,r^=a,i^=a,r=r<<31|r>>>1,a=(r>>>8^i)&16711935,i^=a,r^=a<<8,a=(r>>>2^i)&858993459,i^=a,r^=a<<2,a=(i>>>16^r)&65535,r^=a,i^=a<<16,a=(i>>>4^r)&252645135,r^=a,i^=a<<4,a=[i,r],s=0;s<8;s++)t[s]=(a[s>>>2]>>>8*(3-s%4))%256,t[s]<0&&(t[s]+=256);return t}},vs=class e{constructor(){this._cipher=null}get algorithm(){return{name:"DES-ECB"}}static importKey(n,t,s,r){let i=new e;return i._importKey(n),i}_importKey(n,t,s){this._cipher=new bs(n)}encrypt(n,t){let s=new Uint8Array(t);if(s.length%8!==0||this._cipher===null)return null;let r=s.length/8;for(let i=0;i<r;i++)s.set(this._cipher.enc8(s.slice(i*8,i*8+8)),i*8);return s}},ys=class e{constructor(){this._cipher=null}get algorithm(){return{name:"DES-CBC"}}static importKey(n,t,s,r){let i=new e;return i._importKey(n),i}_importKey(n){this._cipher=new bs(n)}encrypt(n,t){let s=new Uint8Array(t),r=new Uint8Array(n.iv);if(s.length%8!==0||this._cipher===null)return null;let i=s.length/8;for(let a=0;a<i;a++){for(let o=0;o<8;o++)r[o]^=t[a*8+o];r=this._cipher.enc8(r),s.set(r,a*8)}return s}};function Qt(e,n,t){let s=1n;for(e=e%t;n>0n;)(n&1n)===1n&&(s=s*e%t),n=n>>1n,e=e*e%t;return s}function Ut(e,n=0){let t=e.toString(16);n===0&&(n=Math.ceil(t.length/2)),t=t.padStart(n*2,"0");let s=t.length/2,r=new Uint8Array(s);for(let i=0;i<s;i++)r[i]=parseInt(t.slice(i*2,i*2+2),16);return r}function ke(e){let n="0x";for(let t=0;t<e.length;t++)n+=e[t].toString(16).padStart(2,"0");return BigInt(n)}var ws=class e{constructor(){this._keyLength=0,this._keyBytes=0,this._n=null,this._e=null,this._d=null,this._nBigInt=null,this._eBigInt=null,this._dBigInt=null,this._extractable=!1}get algorithm(){return{name:"RSA-PKCS1-v1_5"}}_base64urlDecode(n){return n=n.replace(/-/g,"+").replace(/_/g,"/"),n=n.padEnd(Math.ceil(n.length/4)*4,"="),Ct.decode(n)}_padArray(n,t){let s=new Uint8Array(t);return s.set(n,t-n.length),s}static async generateKey(n,t,s){let r=new e;return await r._generateKey(n,t),{privateKey:r}}async _generateKey(n,t){this._keyLength=n.modulusLength,this._keyBytes=Math.ceil(this._keyLength/8);let s=await window.crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:n.modulusLength,publicExponent:n.publicExponent,hash:{name:"SHA-256"}},!0,["encrypt","decrypt"]),r=await window.crypto.subtle.exportKey("jwk",s.privateKey);this._n=this._padArray(this._base64urlDecode(r.n),this._keyBytes),this._nBigInt=ke(this._n),this._e=this._padArray(this._base64urlDecode(r.e),this._keyBytes),this._eBigInt=ke(this._e),this._d=this._padArray(this._base64urlDecode(r.d),this._keyBytes),this._dBigInt=ke(this._d),this._extractable=t}static async importKey(n,t,s,r){if(r.length!==1||r[0]!=="encrypt")throw new Error("only support importing RSA public key");let i=new e;return await i._importKey(n,s),i}async _importKey(n,t){let s=n.n,r=n.e;if(s.length!==r.length)throw new Error("the sizes of modulus and public exponent do not match");this._keyBytes=s.length,this._keyLength=this._keyBytes*8,this._n=new Uint8Array(this._keyBytes),this._e=new Uint8Array(this._keyBytes),this._n.set(s),this._e.set(r),this._nBigInt=ke(this._n),this._eBigInt=ke(this._e),this._extractable=t}async encrypt(n,t){if(t.length>this._keyBytes-11)return null;let s=new Uint8Array(this._keyBytes-t.length-3);window.crypto.getRandomValues(s);for(let o=0;o<s.length;o++)s[o]=Math.floor(s[o]*254/255+1);let r=new Uint8Array(this._keyBytes);r[1]=2,r.set(s,2),r.set(t,s.length+3);let i=ke(r),a=Qt(i,this._eBigInt,this._nBigInt);return Ut(a,this._keyBytes)}async decrypt(n,t){if(t.length!==this._keyBytes)return null;let s=ke(t),r=Qt(s,this._dBigInt,this._nBigInt),i=Ut(r,this._keyBytes);if(i[0]!==0||i[1]!==2)return null;let a=2;for(;a<i.length&&i[a]!==0;a++);return a===i.length?null:i.slice(a+1,i.length)}async exportKey(){if(!this._extractable)throw new Error("key is not extractable");return{n:this._n,e:this._e,d:this._d}}};var Hr=class{constructor(n){this._key=n}get algorithm(){return{name:"DH"}}exportKey(){return this._key}},ks=class e{constructor(){this._g=null,this._p=null,this._gBigInt=null,this._pBigInt=null,this._privateKey=null}get algorithm(){return{name:"DH"}}static generateKey(n,t){let s=new e;return s._generateKey(n),{privateKey:s,publicKey:new Hr(s._publicKey)}}_generateKey(n){let t=n.g,s=n.p;this._keyBytes=s.length,this._gBigInt=ke(t),this._pBigInt=ke(s),this._privateKey=window.crypto.getRandomValues(new Uint8Array(this._keyBytes)),this._privateKeyBigInt=ke(this._privateKey),this._publicKey=Ut(Qt(this._gBigInt,this._privateKeyBigInt,this._pBigInt),this._keyBytes)}deriveBits(n,t){let s=Math.ceil(t/8),r=new Uint8Array(n.public),i=s>this._keyBytes?s:this._keyBytes,a=Qt(ke(r),this._privateKeyBigInt,this._pBigInt);return Ut(a,i).slice(0,i)}};async function yo(e){let n="";for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return wu(Eu(Su(ku(n),8*n.length)))}function wu(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t);return n}function ku(e){let n=Array(e.length>>2);for(let t=0;t<n.length;t++)n[t]=0;for(let t=0;t<8*e.length;t+=8)n[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return n}function Eu(e){let n="";for(let t=0;t<32*e.length;t+=8)n+=String.fromCharCode(e[t>>5]>>>t%32&255);return n}function Su(e,n){e[n>>5]|=128<<n%32,e[14+(n+64>>>9<<4)]=n;let t=1732584193,s=-271733879,r=-1732584194,i=271733878;for(let a=0;a<e.length;a+=16){let o=t,u=s,l=r,d=i;s=ge(s=ge(s=ge(s=ge(s=xe(s=xe(s=xe(s=xe(s=me(s=me(s=me(s=me(s=_e(s=_e(s=_e(s=_e(s,r=_e(r,i=_e(i,t=_e(t,s,r,i,e[a+0],7,-680876936),s,r,e[a+1],12,-389564586),t,s,e[a+2],17,606105819),i,t,e[a+3],22,-1044525330),r=_e(r,i=_e(i,t=_e(t,s,r,i,e[a+4],7,-176418897),s,r,e[a+5],12,1200080426),t,s,e[a+6],17,-1473231341),i,t,e[a+7],22,-45705983),r=_e(r,i=_e(i,t=_e(t,s,r,i,e[a+8],7,1770035416),s,r,e[a+9],12,-1958414417),t,s,e[a+10],17,-42063),i,t,e[a+11],22,-1990404162),r=_e(r,i=_e(i,t=_e(t,s,r,i,e[a+12],7,1804603682),s,r,e[a+13],12,-40341101),t,s,e[a+14],17,-1502002290),i,t,e[a+15],22,1236535329),r=me(r,i=me(i,t=me(t,s,r,i,e[a+1],5,-165796510),s,r,e[a+6],9,-1069501632),t,s,e[a+11],14,643717713),i,t,e[a+0],20,-373897302),r=me(r,i=me(i,t=me(t,s,r,i,e[a+5],5,-701558691),s,r,e[a+10],9,38016083),t,s,e[a+15],14,-660478335),i,t,e[a+4],20,-405537848),r=me(r,i=me(i,t=me(t,s,r,i,e[a+9],5,568446438),s,r,e[a+14],9,-1019803690),t,s,e[a+3],14,-187363961),i,t,e[a+8],20,1163531501),r=me(r,i=me(i,t=me(t,s,r,i,e[a+13],5,-1444681467),s,r,e[a+2],9,-51403784),t,s,e[a+7],14,1735328473),i,t,e[a+12],20,-1926607734),r=xe(r,i=xe(i,t=xe(t,s,r,i,e[a+5],4,-378558),s,r,e[a+8],11,-2022574463),t,s,e[a+11],16,1839030562),i,t,e[a+14],23,-35309556),r=xe(r,i=xe(i,t=xe(t,s,r,i,e[a+1],4,-1530992060),s,r,e[a+4],11,1272893353),t,s,e[a+7],16,-155497632),i,t,e[a+10],23,-1094730640),r=xe(r,i=xe(i,t=xe(t,s,r,i,e[a+13],4,681279174),s,r,e[a+0],11,-358537222),t,s,e[a+3],16,-722521979),i,t,e[a+6],23,76029189),r=xe(r,i=xe(i,t=xe(t,s,r,i,e[a+9],4,-640364487),s,r,e[a+12],11,-421815835),t,s,e[a+15],16,530742520),i,t,e[a+2],23,-995338651),r=ge(r,i=ge(i,t=ge(t,s,r,i,e[a+0],6,-198630844),s,r,e[a+7],10,1126891415),t,s,e[a+14],15,-1416354905),i,t,e[a+5],21,-57434055),r=ge(r,i=ge(i,t=ge(t,s,r,i,e[a+12],6,1700485571),s,r,e[a+3],10,-1894986606),t,s,e[a+10],15,-1051523),i,t,e[a+1],21,-2054922799),r=ge(r,i=ge(i,t=ge(t,s,r,i,e[a+8],6,1873313359),s,r,e[a+15],10,-30611744),t,s,e[a+6],15,-1560198380),i,t,e[a+13],21,1309151649),r=ge(r,i=ge(i,t=ge(t,s,r,i,e[a+4],6,-145523070),s,r,e[a+11],10,-1120210379),t,s,e[a+2],15,718787259),i,t,e[a+9],21,-343485551),t=Ve(t,o),s=Ve(s,u),r=Ve(r,l),i=Ve(i,d)}return Array(t,s,r,i)}function Es(e,n,t,s,r,i){return Ve(Au(Ve(Ve(n,e),Ve(s,i)),r),t)}function _e(e,n,t,s,r,i,a){return Es(n&t|~n&s,e,n,r,i,a)}function me(e,n,t,s,r,i,a){return Es(n&s|t&~s,e,n,r,i,a)}function xe(e,n,t,s,r,i,a){return Es(n^t^s,e,n,r,i,a)}function ge(e,n,t,s,r,i,a){return Es(t^(n|~s),e,n,r,i,a)}function Ve(e,n){let t=(65535&e)+(65535&n);return(e>>16)+(n>>16)+(t>>16)<<16|65535&t}function Au(e,n){return e<<n|e>>>32-n}var Qr=class{constructor(){this._algorithms={"AES-ECB":xs,"AES-EAX":gs,"DES-ECB":vs,"DES-CBC":ys,"RSA-PKCS1-v1_5":ws,DH:ks,MD5:yo}}encrypt(n,t,s){if(t.algorithm.name!==n.name)throw new Error("algorithm does not match");if(typeof t.encrypt!="function")throw new Error("key does not support encryption");return t.encrypt(n,s)}decrypt(n,t,s){if(t.algorithm.name!==n.name)throw new Error("algorithm does not match");if(typeof t.decrypt!="function")throw new Error("key does not support encryption");return t.decrypt(n,s)}importKey(n,t,s,r,i){if(n!=="raw")throw new Error("key format is not supported");let a=this._algorithms[s.name];if(typeof a>"u"||typeof a.importKey!="function")throw new Error("algorithm is not supported");return a.importKey(t,s,r,i)}generateKey(n,t,s){let r=this._algorithms[n.name];if(typeof r>"u"||typeof r.generateKey!="function")throw new Error("algorithm is not supported");return r.generateKey(n,t,s)}exportKey(n,t){if(n!=="raw")throw new Error("key format is not supported");if(typeof t.exportKey!="function")throw new Error("key does not support exportKey");return t.exportKey()}digest(n,t){let s=this._algorithms[n];if(typeof s!="function")throw new Error("algorithm is not supported");return s(t)}deriveBits(n,t,s){if(t.algorithm.name!==n.name)throw new Error("algorithm does not match");if(typeof t.deriveBits!="function")throw new Error("key does not support deriveBits");return t.deriveBits(n,s)}},oe=new Qr;var Ss=class{constructor(){this._cipher=null,this._counter=new Uint8Array(16)}async setKey(n){this._cipher=await oe.importKey("raw",n,{name:"AES-EAX"},!1,["encrypt, decrypt"])}async makeMessage(n){let t=new Uint8Array([(n.length&65280)>>>8,n.length&255]),s=await oe.encrypt({name:"AES-EAX",iv:this._counter,additionalData:t},this._cipher,n);for(let i=0;i<16&&this._counter[i]++===255;i++);let r=new Uint8Array(n.length+2+16);return r.set(t),r.set(s,2),r}async receiveMessage(n,t){let s=new Uint8Array([(n&65280)>>>8,n&255]),r=await oe.decrypt({name:"AES-EAX",iv:this._counter,additionalData:s},this._cipher,t);for(let i=0;i<16&&this._counter[i]++===255;i++);return r}},bn=class extends ct{constructor(n,t){super(),this._hasStarted=!1,this._checkSock=null,this._checkCredentials=null,this._approveServerResolve=null,this._sockReject=null,this._credentialsReject=null,this._approveServerReject=null,this._sock=n,this._getCredentials=t}_waitSockAsync(n){return new Promise((t,s)=>{let r=()=>!this._sock.rQwait("RA2",n);r()?t():(this._checkSock=()=>{r()&&(t(),this._checkSock=null,this._sockReject=null)},this._sockReject=s)})}_waitApproveKeyAsync(){return new Promise((n,t)=>{this._approveServerResolve=n,this._approveServerReject=t})}_waitCredentialsAsync(n){let t=()=>n===1&&this._getCredentials().username!==void 0&&this._getCredentials().password!==void 0?!0:n===2&&this._getCredentials().password!==void 0;return new Promise((s,r)=>{t()?s():(this._checkCredentials=()=>{t()&&(s(),this._checkCredentials=null,this._credentialsReject=null)},this._credentialsReject=r)})}checkInternalEvents(){this._checkSock!==null&&this._checkSock(),this._checkCredentials!==null&&this._checkCredentials()}approveServer(){this._approveServerResolve!==null&&(this._approveServerResolve(),this._approveServerResolve=null)}disconnect(){this._sockReject!==null&&(this._sockReject(new Error("disconnect normally")),this._sockReject=null),this._credentialsReject!==null&&(this._credentialsReject(new Error("disconnect normally")),this._credentialsReject=null),this._approveServerReject!==null&&(this._approveServerReject(new Error("disconnect normally")),this._approveServerReject=null)}async negotiateRA2neAuthAsync(){this._hasStarted=!0,await this._waitSockAsync(4);let n=this._sock.rQpeekBytes(4),t=this._sock.rQshift32();if(t<1024)throw new Error("RA2: server public key is too short: "+t);if(t>8192)throw new Error("RA2: server public key is too long: "+t);let s=Math.ceil(t/8);await this._waitSockAsync(s*2);let r=this._sock.rQshiftBytes(s),i=this._sock.rQshiftBytes(s),a=await oe.importKey("raw",{n:r,e:i},{name:"RSA-PKCS1-v1_5"},!1,["encrypt"]),o=new Uint8Array(4+s*2);o.set(n),o.set(r,4),o.set(i,4+s);let u=this._waitApproveKeyAsync();this.dispatchEvent(new CustomEvent("serververification",{detail:{type:"RSA",publickey:o}})),await u;let l=2048,d=Math.ceil(l/8),h=(await oe.generateKey({name:"RSA-PKCS1-v1_5",modulusLength:l,publicExponent:new Uint8Array([1,0,1])},!0,["encrypt"])).privateKey,f=await oe.exportKey("raw",h),p=f.n,x=f.e,w=new Uint8Array(4+d*2);w[0]=(l&4278190080)>>>24,w[1]=(l&16711680)>>>16,w[2]=(l&65280)>>>8,w[3]=l&255,w.set(p,4),w.set(x,4+d),this._sock.sQpushBytes(w),this._sock.flush();let b=new Uint8Array(16);window.crypto.getRandomValues(b);let y=await oe.encrypt({name:"RSA-PKCS1-v1_5"},a,b),k=new Uint8Array(2+s);if(k[0]=(s&65280)>>>8,k[1]=s&255,k.set(y,2),this._sock.sQpushBytes(k),this._sock.flush(),await this._waitSockAsync(2),this._sock.rQshift16()!==d)throw new Error("RA2: wrong encrypted message length");let I=this._sock.rQshiftBytes(d),R=await oe.decrypt({name:"RSA-PKCS1-v1_5"},h,I);if(R===null||R.length!==16)throw new Error("RA2: corrupted server encrypted random");let L=new Uint8Array(32),M=new Uint8Array(32);L.set(R),L.set(b,16),M.set(b),M.set(R,16),L=await window.crypto.subtle.digest("SHA-1",L),L=new Uint8Array(L).slice(0,16),M=await window.crypto.subtle.digest("SHA-1",M),M=new Uint8Array(M).slice(0,16);let D=new Ss;await D.setKey(L);let U=new Ss;await U.setKey(M);let O=new Uint8Array(8+s*2+d*2),P=new Uint8Array(8+s*2+d*2);if(O.set(o),O.set(w,4+s*2),P.set(w),P.set(o,4+d*2),O=await window.crypto.subtle.digest("SHA-1",O),P=await window.crypto.subtle.digest("SHA-1",P),O=new Uint8Array(O),P=new Uint8Array(P),this._sock.sQpushBytes(await D.makeMessage(P)),this._sock.flush(),await this._waitSockAsync(38),this._sock.rQshift16()!==20)throw new Error("RA2: wrong server hash");let G=await U.receiveMessage(20,this._sock.rQshiftBytes(36));if(G===null)throw new Error("RA2: failed to authenticate the message");for(let Z=0;Z<20;Z++)if(G[Z]!==O[Z])throw new Error("RA2: wrong server hash");if(await this._waitSockAsync(19),this._sock.rQshift16()!==1)throw new Error("RA2: wrong subtype");let Y=await U.receiveMessage(1,this._sock.rQshiftBytes(17));if(Y===null)throw new Error("RA2: failed to authenticate the message");Y=Y[0];let ne=this._waitCredentialsAsync(Y);if(Y===1)(this._getCredentials().username===void 0||this._getCredentials().password===void 0)&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}}));else if(Y===2)this._getCredentials().password===void 0&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}}));else throw new Error("RA2: wrong subtype");await ne;let le;Y===1?le=Te(this._getCredentials().username).slice(0,255):le="";let j=Te(this._getCredentials().password).slice(0,255),Q=new Uint8Array(le.length+j.length+2);Q[0]=le.length,Q[le.length+1]=j.length;for(let Z=0;Z<le.length;Z++)Q[Z+1]=le.charCodeAt(Z);for(let Z=0;Z<j.length;Z++)Q[le.length+2+Z]=j.charCodeAt(Z);this._sock.sQpushBytes(await D.makeMessage(Q)),this._sock.flush()}get hasStarted(){return this._hasStarted}set hasStarted(n){this._hasStarted=n}};var vn=class{constructor(){this._lines=0}decodeRect(n,t,s,r,i,a,o){if(s===0||r===0)return!0;this._lines===0&&(this._lines=r);let u=o==8?1:4,l=s*u;for(;this._lines>0;){if(i.rQwait("RAW",l))return!1;let d=t+(r-this._lines),h=i.rQshiftBytes(l,!1);if(o==8){let f=new Uint8Array(s*4);for(let p=0;p<s;p++)f[p*4+0]=(h[p]>>0&3)*255/3,f[p*4+1]=(h[p]>>2&3)*255/3,f[p*4+2]=(h[p]>>4&3)*255/3,f[p*4+3]=255;h=f}for(let f=0;f<s;f++)h[f*4+3]=255;a.blitImage(n,d,s,1,h,0),this._lines--}return!0}};var yn=class{decodeRect(n,t,s,r,i,a,o){if(i.rQwait("COPYRECT",4))return!1;let u=i.rQshift16(),l=i.rQshift16();return s===0||r===0||a.copyImage(u,l,n,t,s,r),!0}};var wn=class{constructor(){this._subrects=0}decodeRect(n,t,s,r,i,a,o){if(this._subrects===0){if(i.rQwait("RRE",8))return!1;this._subrects=i.rQshift32();let u=i.rQshiftBytes(4);a.fillRect(n,t,s,r,u)}for(;this._subrects>0;){if(i.rQwait("RRE",12))return!1;let u=i.rQshiftBytes(4),l=i.rQshift16(),d=i.rQshift16(),h=i.rQshift16(),f=i.rQshift16();a.fillRect(n+l,t+d,h,f,u),this._subrects--}return!0}};var kn=class{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(n,t,s,r,i,a,o){for(this._tiles===0&&(this._tilesX=Math.ceil(s/16),this._tilesY=Math.ceil(r/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let u=1;if(i.rQwait("HEXTILE",u))return!1;let l=i.rQpeek8();if(l>30)throw new Error("Illegal hextile subencoding (subencoding: "+l+")");let d=this._totalTiles-this._tiles,h=d%this._tilesX,f=Math.floor(d/this._tilesX),p=n+h*16,x=t+f*16,w=Math.min(16,n+s-p),b=Math.min(16,t+r-x);if(l&1)u+=w*b*4;else if(l&2&&(u+=4),l&4&&(u+=4),l&8){if(u++,i.rQwait("HEXTILE",u))return!1;let y=i.rQpeekBytes(u).at(-1);l&16?u+=y*6:u+=y*2}if(i.rQwait("HEXTILE",u))return!1;if(i.rQshift8(),l===0)this._lastsubencoding&1?V(" Ignoring blank after RAW"):a.fillRect(p,x,w,b,this._background);else if(l&1){let y=w*b,k=i.rQshiftBytes(y*4,!1);for(let I=0;I<y;I++)k[I*4+3]=255;a.blitImage(p,x,w,b,k,0)}else{if(l&2&&(this._background=new Uint8Array(i.rQshiftBytes(4))),l&4&&(this._foreground=new Uint8Array(i.rQshiftBytes(4))),this._startTile(p,x,w,b,this._background),l&8){let y=i.rQshift8();for(let k=0;k<y;k++){let I;l&16?I=i.rQshiftBytes(4):I=this._foreground;let R=i.rQshift8(),L=R>>4,M=R&15,D=i.rQshift8(),U=(D>>4)+1,O=(D&15)+1;this._subTile(L,M,U,O,I)}}this._finishTile(a)}this._lastsubencoding=l,this._tiles--}return!0}_startTile(n,t,s,r,i){this._tileX=n,this._tileY=t,this._tileW=s,this._tileH=r;let a=i[0],o=i[1],u=i[2],l=this._tileBuffer;for(let d=0;d<s*r*4;d+=4)l[d]=a,l[d+1]=o,l[d+2]=u,l[d+3]=255}_subTile(n,t,s,r,i){let a=i[0],o=i[1],u=i[2],l=n+s,d=t+r,h=this._tileBuffer,f=this._tileW;for(let p=t;p<d;p++)for(let x=n;x<l;x++){let w=(x+p*f)*4;h[w]=a,h[w+1]=o,h[w+2]=u,h[w+3]=255}}_finishTile(n){n.blitImage(this._tileX,this._tileY,this._tileW,this._tileH,this._tileBuffer,0)}};var En=class{constructor(){this._zlib=new Xe,this._length=0}decodeRect(n,t,s,r,i,a,o){if(s===0||r===0)return!0;if(this._length===0){if(i.rQwait("ZLIB",4))return!1;this._length=i.rQshift32()}if(i.rQwait("ZLIB",this._length))return!1;let u=new Uint8Array(i.rQshiftBytes(this._length,!1));this._length=0,this._zlib.setInput(u),u=this._zlib.inflate(s*r*4),this._zlib.setInput(null);for(let l=0;l<s*r;l++)u[l*4+3]=255;return a.blitImage(n,t,s,r,u,0),!0}};var gt=class{constructor(){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._zlibs=[];for(let n=0;n<4;n++)this._zlibs[n]=new Xe}decodeRect(n,t,s,r,i,a,o){if(this._ctl===null){if(i.rQwait("TIGHT compression-control",1))return!1;this._ctl=i.rQshift8();for(let l=0;l<4;l++)this._ctl>>l&1&&(this._zlibs[l].reset(),ue("Reset zlib stream "+l));this._ctl=this._ctl>>4}let u;if(this._ctl===8)u=this._fillRect(n,t,s,r,i,a,o);else if(this._ctl===9)u=this._jpegRect(n,t,s,r,i,a,o);else if(this._ctl===10)u=this._pngRect(n,t,s,r,i,a,o);else if((this._ctl&8)==0)u=this._basicRect(this._ctl,n,t,s,r,i,a,o);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return u&&(this._ctl=null),u}_fillRect(n,t,s,r,i,a,o){if(i.rQwait("TIGHT",3))return!1;let u=i.rQshiftBytes(3);return a.fillRect(n,t,s,r,u,!1),!0}_jpegRect(n,t,s,r,i,a,o){let u=this._readData(i);return u===null?!1:(a.imageRect(n,t,s,r,"image/jpeg",u),!0)}_pngRect(n,t,s,r,i,a,o){throw new Error("PNG received in standard Tight rect")}_basicRect(n,t,s,r,i,a,o,u){if(this._filter===null)if(n&4){if(a.rQwait("TIGHT",1))return!1;this._filter=a.rQshift8()}else this._filter=0;let l=n&3,d;switch(this._filter){case 0:d=this._copyFilter(l,t,s,r,i,a,o,u);break;case 1:d=this._paletteFilter(l,t,s,r,i,a,o,u);break;case 2:d=this._gradientFilter(l,t,s,r,i,a,o,u);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return d&&(this._filter=null),d}_copyFilter(n,t,s,r,i,a,o,u){let l=r*i*3,d;if(l===0)return!0;if(l<12){if(a.rQwait("TIGHT",l))return!1;d=a.rQshiftBytes(l)}else{if(d=this._readData(a),d===null)return!1;this._zlibs[n].setInput(d),d=this._zlibs[n].inflate(l),this._zlibs[n].setInput(null)}let h=new Uint8Array(r*i*4);for(let f=0,p=0;f<r*i*4;f+=4,p+=3)h[f]=d[p],h[f+1]=d[p+1],h[f+2]=d[p+2],h[f+3]=255;return o.blitImage(t,s,r,i,h,0,!1),!0}_paletteFilter(n,t,s,r,i,a,o,u){if(this._numColors===0){if(a.rQwait("TIGHT palette",1))return!1;let p=a.rQpeek8()+1,x=p*3;if(a.rQwait("TIGHT palette",1+x))return!1;this._numColors=p,a.rQskipBytes(1),a.rQshiftTo(this._palette,x)}let l=this._numColors<=2?1:8,h=Math.floor((r*l+7)/8)*i,f;if(h===0)return!0;if(h<12){if(a.rQwait("TIGHT",h))return!1;f=a.rQshiftBytes(h)}else{if(f=this._readData(a),f===null)return!1;this._zlibs[n].setInput(f),f=this._zlibs[n].inflate(h),this._zlibs[n].setInput(null)}return this._numColors==2?this._monoRect(t,s,r,i,f,this._palette,o):this._paletteRect(t,s,r,i,f,this._palette,o),this._numColors=0,!0}_monoRect(n,t,s,r,i,a,o){let u=this._getScratchBuffer(s*r*4),l=Math.floor((s+7)/8),d=Math.floor(s/8);for(let h=0;h<r;h++){let f,p,x;for(x=0;x<d;x++)for(let w=7;w>=0;w--)f=(h*s+x*8+7-w)*4,p=(i[h*l+x]>>w&1)*3,u[f]=a[p],u[f+1]=a[p+1],u[f+2]=a[p+2],u[f+3]=255;for(let w=7;w>=8-s%8;w--)f=(h*s+x*8+7-w)*4,p=(i[h*l+x]>>w&1)*3,u[f]=a[p],u[f+1]=a[p+1],u[f+2]=a[p+2],u[f+3]=255}o.blitImage(n,t,s,r,u,0,!1)}_paletteRect(n,t,s,r,i,a,o){let u=this._getScratchBuffer(s*r*4),l=s*r*4;for(let d=0,h=0;d<l;d+=4,h++){let f=i[h]*3;u[d]=a[f],u[d+1]=a[f+1],u[d+2]=a[f+2],u[d+3]=255}o.blitImage(n,t,s,r,u,0,!1)}_gradientFilter(n,t,s,r,i,a,o,u){let l=r*i*3,d;if(l===0)return!0;if(l<12){if(a.rQwait("TIGHT",l))return!1;d=a.rQshiftBytes(l)}else{if(d=this._readData(a),d===null)return!1;this._zlibs[n].setInput(d),d=this._zlibs[n].inflate(l),this._zlibs[n].setInput(null)}let h=new Uint8Array(4*r*i),f=0,p=0,x=new Uint8Array(3);for(let k=0;k<r;k++){for(let I=0;I<3;I++){let R=x[I],L=d[p++]+R;h[f++]=L,x[I]=L}h[f++]=255}let w=0,b=new Uint8Array(3),y=new Uint8Array(3);for(let k=1;k<i;k++){x.fill(0),y.fill(0);for(let I=0;I<r;I++){for(let R=0;R<3;R++){b[R]=h[w++];let L=x[R]+b[R]-y[R];L<0?L=0:L>255&&(L=255);let M=d[p++]+L;h[f++]=M,y[R]=b[R],x[R]=M}h[f++]=255,w++}}return o.blitImage(t,s,r,i,h,0,!1),!0}_readData(n){if(this._len===0){if(n.rQwait("TIGHT",3))return null;let s;s=n.rQshift8(),this._len=s&127,s&128&&(s=n.rQshift8(),this._len|=(s&127)<<7,s&128&&(s=n.rQshift8(),this._len|=s<<14))}if(n.rQwait("TIGHT",this._len))return null;let t=n.rQshiftBytes(this._len,!1);return this._len=0,t}_getScratchBuffer(n){return(!this._scratchBuffer||this._scratchBuffer.length<n)&&(this._scratchBuffer=new Uint8Array(n)),this._scratchBuffer}};var Sn=class extends gt{_pngRect(n,t,s,r,i,a,o){let u=this._readData(i);return u===null?!1:(a.imageRect(n,t,s,r,"image/png",u),!0)}_basicRect(n,t,s,r,i,a,o,u){throw new Error("BasicCompression received in TightPNG rect")}};var As=64,Cs=64,An=class{constructor(){this._length=0,this._inflator=new Xe,this._pixelBuffer=new Uint8Array(As*Cs*4),this._tileBuffer=new Uint8Array(As*Cs*4)}decodeRect(n,t,s,r,i,a,o){if(this._length===0){if(i.rQwait("ZLib data length",4))return!1;this._length=i.rQshift32()}if(i.rQwait("Zlib data",this._length))return!1;let u=i.rQshiftBytes(this._length,!1);this._inflator.setInput(u);for(let l=t;l<t+r;l+=Cs){let d=Math.min(Cs,t+r-l);for(let h=n;h<n+s;h+=As){let f=Math.min(As,n+s-h),p=f*d,x=this._inflator.inflate(1)[0];if(x===0){let w=this._readPixels(p);a.blitImage(h,l,f,d,w,0,!1)}else if(x===1){let w=this._readPixels(1);a.fillRect(h,l,f,d,[w[0],w[1],w[2]])}else if(x>=2&&x<=16){let w=this._decodePaletteTile(x,p,f,d);a.blitImage(h,l,f,d,w,0,!1)}else if(x===128){let w=this._decodeRLETile(p);a.blitImage(h,l,f,d,w,0,!1)}else if(x>=130&&x<=255){let w=this._decodeRLEPaletteTile(x-128,p);a.blitImage(h,l,f,d,w,0,!1)}else throw new Error("Unknown subencoding: "+x)}}return this._length=0,!0}_getBitsPerPixelInPalette(n){if(n<=2)return 1;if(n<=4)return 2;if(n<=16)return 4}_readPixels(n){let t=this._pixelBuffer,s=this._inflator.inflate(3*n);for(let r=0,i=0;r<n*4;r+=4,i+=3)t[r]=s[i],t[r+1]=s[i+1],t[r+2]=s[i+2],t[r+3]=255;return t}_decodePaletteTile(n,t,s,r){let i=this._tileBuffer,a=this._readPixels(n),o=this._getBitsPerPixelInPalette(n),u=(1<<o)-1,l=0,d=this._inflator.inflate(1)[0];for(let h=0;h<r;h++){let f=8-o;for(let p=0;p<s;p++){f<0&&(f=8-o,d=this._inflator.inflate(1)[0]);let x=d>>f&u;i[l]=a[x*4],i[l+1]=a[x*4+1],i[l+2]=a[x*4+2],i[l+3]=a[x*4+3],l+=4,f-=o}f<8-o&&h<r-1&&(d=this._inflator.inflate(1)[0])}return i}_decodeRLETile(n){let t=this._tileBuffer,s=0;for(;s<n;){let r=this._readPixels(1),i=this._readRLELength();for(let a=0;a<i;a++)t[s*4]=r[0],t[s*4+1]=r[1],t[s*4+2]=r[2],t[s*4+3]=r[3],s++}return t}_decodeRLEPaletteTile(n,t){let s=this._tileBuffer,r=this._readPixels(n),i=0;for(;i<t;){let a=this._inflator.inflate(1)[0],o=1;if(a>=128&&(a-=128,o=this._readRLELength()),a>n)throw new Error("Too big index in palette: "+a+", palette size: "+n);if(i+o>t)throw new Error("Too big rle length in palette mode: "+o+", allowed length is: "+(t-i));for(let u=0;u<o;u++)s[i*4]=r[a*4],s[i*4+1]=r[a*4+1],s[i*4+2]=r[a*4+2],s[i*4+3]=r[a*4+3],i++}return s}_readRLELength(){let n=0,t=0;do t=this._inflator.inflate(1)[0],n+=t;while(t===255);return n+1}};var Cn=class{constructor(){this._cachedQuantTables=[],this._cachedHuffmanTables=[],this._segments=[]}decodeRect(n,t,s,r,i,a,o){for(;;){let p=this._readSegment(i);if(p===null)return!1;if(this._segments.push(p),p[1]===217)break}let u=[],l=[];for(let p of this._segments){let x=p[1];x===196?u.push(p):x===219&&l.push(p)}let d=this._segments.findIndex(p=>p[1]==192||p[1]==194);if(d==-1)throw new Error("Illegal JPEG image without SOF");l.length===0&&this._segments.splice(d+1,0,...this._cachedQuantTables),u.length===0&&this._segments.splice(d+1,0,...this._cachedHuffmanTables);let h=0;for(let p of this._segments)h+=p.length;let f=new Uint8Array(h);h=0;for(let p of this._segments)f.set(p,h),h+=p.length;return a.imageRect(n,t,s,r,"image/jpeg",f),u.length!==0&&(this._cachedHuffmanTables=u),l.length!==0&&(this._cachedQuantTables=l),this._segments=[],!0}_readSegment(n){if(n.rQwait("JPEG",2))return null;let t=n.rQshift8();if(t!=255)throw new Error("Illegal JPEG marker received (byte: "+t+")");let s=n.rQshift8();if(s>=208&&s<=217||s==1)return new Uint8Array([t,s]);if(n.rQwait("JPEG",2,2))return null;let r=n.rQshift16();if(r<2)throw new Error("Illegal JPEG length received (length: "+r+")");if(n.rQwait("JPEG",r-2,4))return null;let i=0;if(s===218){if(n.rQwait("JPEG",r-2+2,4))return null;let o=n.rQlen(),u=n.rQpeekBytes(o,!1);for(;;){let l=u.indexOf(255,r-2+i);if(l===-1||l===o-1)return n.rQwait("JPEG",1/0,4),null;if(u.at(l+1)===0||u.at(l+1)>=208&&u.at(l+1)<=215){i=l+2-(r-2);continue}i=l-(r-2);break}}let a=new Uint8Array(2+r+i);return a[0]=t,a[1]=s,a[2]=r>>8,a[3]=r,a.set(n.rQshiftBytes(r-2+i,!1),4),a}};var Ur=class{constructor(n){this._data=n,this._index=0,this.profileIdc=null,this.constraintSet=null,this.levelIdc=null}_getStartSequenceLen(n){let t=this._data;return t[n+0]==0&&t[n+1]==0&&t[n+2]==0&&t[n+3]==1?4:t[n+0]==0&&t[n+1]==0&&t[n+2]==1?3:0}_indexOfNextNalUnit(n){let t=this._data;for(let s=n;s<t.length;++s)if(this._getStartSequenceLen(s)!=0)return s;return-1}_parseSps(n){this.profileIdc=this._data[n],this.constraintSet=this._data[n+1],this.levelIdc=this._data[n+2]}_parseNalUnit(n){let t=this._data[n];if(t&128)throw new Error("H264 parsing sanity check failed, forbidden zero bit is set");let s=t&31;switch(s){case 1:return{slice:!0};case 5:return{slice:!0,key:!0};case 6:return{};case 7:return this._parseSps(n+1),{};case 8:return{};default:he("Unhandled unit type: ",s);break}return{}}parse(){let n=this._index,t=!1;for(;this._index<this._data.length;){let s=this._getStartSequenceLen(this._index);if(s==0)throw new Error("Invalid start sequence in bit stream");let{slice:r,key:i}=this._parseNalUnit(this._index+s),a=this._indexOfNextNalUnit(this._index+s);if(a==-1?this._index=this._data.length:this._index=a,i&&(t=!0),r)break}return n===this._index?null:{frame:this._data.subarray(n,this._index),key:t}}},zr=class{constructor(n,t){this.lastUsed=0,this._width=n,this._height=t,this._profileIdc=null,this._constraintSet=null,this._levelIdc=null,this._decoder=null,this._pendingFrames=[]}_handleFrame(n){let t=this._pendingFrames.shift();if(t===void 0)throw new Error("Pending frame queue empty when receiving frame from decoder");if(t.timestamp!=n.timestamp)throw new Error("Video frame timestamp mismatch. Expected "+n.timestamp+" but but got "+t.timestamp);t.frame=n,t.ready=!0,t.resolve(),t.keep||n.close()}_handleError(n){throw new Error("Failed to decode frame: "+n.message)}_configureDecoder(n,t,s){(this._decoder===null||this._decoder.state==="closed")&&(this._decoder=new VideoDecoder({output:i=>this._handleFrame(i),error:i=>this._handleError(i)}));let r="avc1."+n.toString(16).padStart(2,"0")+t.toString(16).padStart(2,"0")+s.toString(16).padStart(2,"0");this._decoder.configure({codec:r,codedWidth:this._width,codedHeight:this._height,optimizeForLatency:!0})}_preparePendingFrame(n){let t={timestamp:n,promise:null,resolve:null,frame:null,ready:!1,keep:!1};return t.promise=new Promise(s=>{t.resolve=s}),this._pendingFrames.push(t),t}decode(n){let t=new Ur(n),s=null,r=Math.round(window.performance.now()*1e3);for(;;){let i=t.parse();if(i===null)break;if(t.profileIdc!==null&&(self._profileIdc=t.profileIdc,self._constraintSet=t.constraintSet,self._levelIdc=t.levelIdc),this._decoder===null||this._decoder.state!=="configured"){if(!i.key){he("Missing key frame. Can't decode until one arrives");continue}if(self._profileIdc===null){he("Cannot config decoder. Have not received SPS and PPS yet.");continue}this._configureDecoder(self._profileIdc,self._constraintSet,self._levelIdc)}s=this._preparePendingFrame(r);let a=new EncodedVideoChunk({timestamp:r,type:i.key?"key":"delta",data:i.frame});try{this._decoder.decode(a)}catch(o){he("Failed to decode:",o)}}return s!==null&&(s.keep=!0),s}},Tn=class{constructor(){this._tick=0,this._contexts={}}_contextId(n,t,s,r){return[n,t,s,r].join(",")}_findOldestContextId(){let n=Number.MAX_VALUE,t;for(let[s,r]of Object.entries(this._contexts))r.lastUsed<n&&(n=r.lastUsed,t=s);return t}_createContext(n,t,s,r){if(Object.keys(this._contexts).length>=64){let o=this._findOldestContextId();delete this._contexts[o]}let a=new zr(s,r);return this._contexts[this._contextId(n,t,s,r)]=a,a}_getContext(n,t,s,r){let i=this._contexts[this._contextId(n,t,s,r)];return i!==void 0?i:this._createContext(n,t,s,r)}_resetContext(n,t,s,r){delete this._contexts[this._contextId(n,t,s,r)]}_resetAllContexts(){this._contexts={}}decodeRect(n,t,s,r,i,a,o){if(i.rQwait("h264 header",8))return!1;let d=i.rQshift32(),h=i.rQshift32();if(i.rQwait("h264 payload",d,8))return!1;h&2?this._resetAllContexts():h&1&&this._resetContext(n,t,s,r);let f=this._getContext(n,t,s,r);if(f.lastUsed=this._tick++,d!==0){let p=i.rQshiftBytes(d,!1),x=f.decode(p);x!==null&&a.videoFrame(n,t,s,r,x)}return!0}};var Cu=3,Tu="rgb(40, 40, 40)",wo=17,ko=50,Eo=19,Xn=75,Ge=50,Xu=1e3,Nu=50,So=1,Ts=2,Ao=6,Co=16,$r=19,To=22,Xo=30,No=113,Ko=129,Fo=256,Re=1;var Ro=1<<24,Xs=1<<25,Lo=1<<26,Nn=1<<27,Ns=1<<28,ye=class e extends ct{constructor(n,t,s){if(!n)throw new Error("Must specify target");if(!t)throw new Error("Must specify URL, WebSocket or RTCDataChannel");window.isSecureContext||se("noVNC requires a secure context (TLS). Expect crashes!"),super(),this._target=n,typeof t=="string"?this._url=t:(this._url=null,this._rawChannel=t),s=s||{},this._rfbCredentials=s.credentials||{},this._shared="shared"in s?!!s.shared:!0,this._repeaterID=s.repeaterID||"",this._wsProtocols=s.wsProtocols||[],this._rfbConnectionState="",this._rfbInitState="",this._rfbAuthScheme=-1,this._rfbCleanDisconnect=!0,this._rfbRSAAESAuthenticationState=null,this._rfbVersion=0,this._rfbMaxVersion=3.8,this._rfbTightVNC=!1,this._rfbVeNCryptState=0,this._rfbXvpVer=0,this._fbWidth=0,this._fbHeight=0,this._fbName="",this._capabilities={power:!1},this._supportsFence=!1,this._supportsContinuousUpdates=!1,this._enabledContinuousUpdates=!1,this._supportsSetDesktopSize=!1,this._screenID=0,this._screenFlags=0,this._pendingRemoteResize=!1,this._lastResize=0,this._qemuExtKeyEventSupported=!1,this._extendedPointerEventSupported=!1,this._clipboardText=null,this._clipboardServerCapabilitiesActions={},this._clipboardServerCapabilitiesFormats={},this._sock=null,this._display=null,this._flushing=!1,this._keyboard=null,this._gestures=null,this._resizeObserver=null,this._disconnTimer=null,this._resizeTimeout=null,this._mouseMoveTimer=null,this._decoders={},this._FBU={rects:0,x:0,y:0,width:0,height:0,encoding:null},this._mousePos={},this._mouseButtonMask=0,this._mouseLastMoveTime=0,this._viewportDragging=!1,this._viewportDragPos={},this._viewportHasMoved=!1,this._accumulatedWheelDeltaX=0,this._accumulatedWheelDeltaY=0,this._gestureLastTapTime=null,this._gestureFirstDoubleTapEv=null,this._gestureLastMagnitudeX=0,this._gestureLastMagnitudeY=0,this._eventHandlers={focusCanvas:this._focusCanvas.bind(this),handleResize:this._handleResize.bind(this),handleMouse:this._handleMouse.bind(this),handleWheel:this._handleWheel.bind(this),handleGesture:this._handleGesture.bind(this),handleRSAAESCredentialsRequired:this._handleRSAAESCredentialsRequired.bind(this),handleRSAAESServerVerification:this._handleRSAAESServerVerification.bind(this)},V(">> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=Tu,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._screen.appendChild(this._canvas),this._cursor=new xn,this._cursorImage=e.cursors.none,this._decoders[W.encodingRaw]=new vn,this._decoders[W.encodingCopyRect]=new yn,this._decoders[W.encodingRRE]=new wn,this._decoders[W.encodingHextile]=new kn,this._decoders[W.encodingZlib]=new En,this._decoders[W.encodingTight]=new gt,this._decoders[W.encodingTightPNG]=new Sn,this._decoders[W.encodingZRLE]=new An,this._decoders[W.encodingJPEG]=new Cn,this._decoders[W.encodingH264]=new Tn;try{this._display=new Jt(this._canvas)}catch(r){throw se("Display exception: "+r),r}this._keyboard=new pn(this._canvas),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._remoteCapsLock=null,this._remoteNumLock=null,this._gestures=new _n,this._sock=new gn,this._sock.on("open",this._socketOpen.bind(this)),this._sock.on("close",this._socketClose.bind(this)),this._sock.on("message",this._handleMessage.bind(this)),this._sock.on("error",this._socketError.bind(this)),this._expectedClientWidth=null,this._expectedClientHeight=null,this._resizeObserver=new ResizeObserver(this._eventHandlers.handleResize),this._updateConnectionState("connecting"),V("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this._viewOnly=!1,this._clipViewport=!1,this._clippingViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._showDotCursor=!1,this._qualityLevel=6,this._compressionLevel=2}get viewOnly(){return this._viewOnly}set viewOnly(n){this._viewOnly=n,(this._rfbConnectionState==="connecting"||this._rfbConnectionState==="connected")&&(n?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get clippingViewport(){return this._clippingViewport}_setClippingViewport(n){n!==this._clippingViewport&&(this._clippingViewport=n,this.dispatchEvent(new CustomEvent("clippingviewport",{detail:this._clippingViewport})))}get touchButton(){return 0}set touchButton(n){he("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(n){this._clipViewport=n,this._updateClip()}get scaleViewport(){return this._scaleViewport}set scaleViewport(n){this._scaleViewport=n,n&&this._clipViewport&&this._updateClip(),this._updateScale(),!n&&this._clipViewport&&this._updateClip()}get resizeSession(){return this._resizeSession}set resizeSession(n){this._resizeSession=n,n&&this._requestRemoteResize()}get showDotCursor(){return this._showDotCursor}set showDotCursor(n){this._showDotCursor=n,this._refreshCursor()}get background(){return this._screen.style.background}set background(n){this._screen.style.background=n}get qualityLevel(){return this._qualityLevel}set qualityLevel(n){if(!Number.isInteger(n)||n<0||n>9){se("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==n&&(this._qualityLevel=n,this._rfbConnectionState==="connected"&&this._sendEncodings())}get compressionLevel(){return this._compressionLevel}set compressionLevel(n){if(!Number.isInteger(n)||n<0||n>9){se("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==n&&(this._compressionLevel=n,this._rfbConnectionState==="connected"&&this._sendEncodings())}disconnect(){this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.disconnect()}approveServer(){this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.approveServer()}sendCredentials(n){this._rfbCredentials=n,this._resumeAuthentication()}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(ue("Sending Ctrl-Alt-Del"),this.sendKey(g.XK_Control_L,"ControlLeft",!0),this.sendKey(g.XK_Alt_L,"AltLeft",!0),this.sendKey(g.XK_Delete,"Delete",!0),this.sendKey(g.XK_Delete,"Delete",!1),this.sendKey(g.XK_Alt_L,"AltLeft",!1),this.sendKey(g.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(n,t,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s===void 0){this.sendKey(n,t,!0),this.sendKey(n,t,!1);return}let r=uo[t];if(this._qemuExtKeyEventSupported&&r)n=n||0,ue("Sending key ("+(s?"down":"up")+"): keysym "+n+", scancode "+r),e.messages.QEMUExtendedKeyEvent(this._sock,n,s,r);else{if(!n)return;ue("Sending keysym ("+(s?"down":"up")+"): "+n),e.messages.keyEvent(this._sock,n,s?1:0)}}focus(n){this._canvas.focus(n)}blur(){this._canvas.blur()}clipboardPasteFrom(n){if(!(this._rfbConnectionState!=="connected"||this._viewOnly))if(this._clipboardServerCapabilitiesFormats[Re]&&this._clipboardServerCapabilitiesActions[Nn])this._clipboardText=n,e.messages.extendedClipboardNotify(this._sock,[Re]);else{let t,s,r;t=0;for(let i of n)t++;r=new Uint8Array(t),s=0;for(let i of n){let a=i.codePointAt(0);a>255&&(a=63),r[s++]=a}e.messages.clientCutText(this._sock,r)}}getImageData(){return this._display.getImageData()}toDataURL(n,t){return this._display.toDataURL(n,t)}toBlob(n,t,s){return this._display.toBlob(n,t,s)}_connect(){if(V(">> RFB.connect"),this._url)ue(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols);else{if(ue(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel),this._sock.readyState==="closed")throw Error("Cannot use already closed WebSocket/RTCDataChannel");this._sock.readyState==="open"&&this._socketOpen()}this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),this._resizeObserver.observe(this._screen),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),V("<< RFB.connect")}_disconnect(){V(">> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._resizeObserver.disconnect(),this._keyboard.ungrab(),this._gestures.detach(),this._sock.close();try{this._target.removeChild(this._screen)}catch(n){if(n.name!=="NotFoundError")throw n}clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),V("<< RFB.disconnect")}_socketOpen(){this._rfbConnectionState==="connecting"&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",V("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}_socketClose(n){V("WebSocket on-close event");let t="";switch(n.code&&(t="(code: "+n.code,n.reason&&(t+=", reason: "+n.reason),t+=")"),this._rfbConnectionState){case"connecting":this._fail("Connection closed "+t);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+t);break;default:this._fail("Unexpected server disconnect before connecting "+t);break}this._sock.off("close"),this._rawChannel=null}_socketError(n){he("WebSocket on-error event")}_focusCanvas(n){this.focusOnClick&&this.focus({preventScroll:!0})}_setDesktopName(n){this._fbName=n,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_saveExpectedClientSize(){this._expectedClientWidth=this._screen.clientWidth,this._expectedClientHeight=this._screen.clientHeight}_currentClientSize(){return[this._screen.clientWidth,this._screen.clientHeight]}_clientHasExpectedSize(){let[n,t]=this._currentClientSize();return n==this._expectedClientWidth&&t==this._expectedClientHeight}_handleResize(){this._clientHasExpectedSize()||(window.requestAnimationFrame(()=>{this._updateClip(),this._updateScale(),this._saveExpectedClientSize()}),this._requestRemoteResize())}_updateClip(){let n=this._display.clipViewport,t=this._clipViewport;if(this._scaleViewport&&(t=!1),n!==t&&(this._display.clipViewport=t),t){let s=this._screenSize();this._display.viewportChangeSize(s.w,s.h),this._fixScrollbars(),this._setClippingViewport(s.w<this._display.width||s.h<this._display.height)}else this._setClippingViewport(!1);n!==t&&this._saveExpectedClientSize()}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{let n=this._screenSize();this._display.autoscale(n.w,n.h)}this._fixScrollbars()}_requestRemoteResize(){if(!this._resizeSession||this._viewOnly||!this._supportsSetDesktopSize||this._pendingRemoteResize)return;if(Date.now()-this._lastResize<100){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),100-(Date.now()-this._lastResize));return}this._resizeTimeout=null;let n=this._screenSize();n.w===this._fbWidth&&n.h===this._fbHeight||(this._pendingRemoteResize=!0,this._lastResize=Date.now(),e.messages.setDesktopSize(this._sock,Math.floor(n.w),Math.floor(n.h),this._screenID,this._screenFlags),V("Requested new desktop size: "+n.w+"x"+n.h))}_screenSize(){let n=this._screen.getBoundingClientRect();return{w:n.width,h:n.height}}_fixScrollbars(){let n=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=n}_updateConnectionState(n){let t=this._rfbConnectionState;if(n===t){V("Already in state '"+n+"', ignoring");return}if(t==="disconnected"){se("Tried changing state of a disconnected RFB object");return}switch(n){case"connected":if(t!=="connecting"){se("Bad transition to connected state, previous connection state: "+t);return}break;case"disconnected":if(t!=="disconnecting"){se("Bad transition to disconnected state, previous connection state: "+t);return}break;case"connecting":if(t!==""){se("Bad transition to connecting state, previous connection state: "+t);return}break;case"disconnecting":if(t!=="connected"&&t!=="connecting"){se("Bad transition to disconnecting state, previous connection state: "+t);return}break;default:se("Unknown connection state: "+n);return}switch(this._rfbConnectionState=n,V("New state '"+n+"', was '"+t+"'."),this._disconnTimer&&n!=="disconnecting"&&(V("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._sock.off("close")),n){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._disconnect(),this._disconnTimer=setTimeout(()=>{se("Disconnection timed out."),this._updateConnectionState("disconnected")},Cu*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect}}));break}}_fail(n){switch(this._rfbConnectionState){case"disconnecting":se("Failed when disconnecting: "+n);break;case"connected":se("Failed while connected: "+n);break;case"connecting":se("Failed when connecting: "+n);break;default:se("RFB failure: "+n);break}return this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(n,t){this._capabilities[n]=t,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_handleMessage(){if(this._sock.rQwait("message",1)){he("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":se("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQwait("message",1)););break;case"connecting":for(;this._rfbConnectionState==="connecting"&&this._initMsg(););break;default:se("Got data while in an invalid state");break}}_handleKeyEvent(n,t,s,r,i){t=="CapsLock"&&s&&(this._remoteCapsLock=null),this._remoteCapsLock!==null&&i!==null&&this._remoteCapsLock!==i&&s&&(V("Fixing remote caps lock"),this.sendKey(g.XK_Caps_Lock,"CapsLock",!0),this.sendKey(g.XK_Caps_Lock,"CapsLock",!1),this._remoteCapsLock=null),t=="NumLock"&&s&&(this._remoteNumLock=null),this._remoteNumLock!==null&&r!==null&&this._remoteNumLock!==r&&s&&(V("Fixing remote num lock"),this.sendKey(g.XK_Num_Lock,"NumLock",!0),this.sendKey(g.XK_Num_Lock,"NumLock",!1),this._remoteNumLock=null),this.sendKey(n,t,s)}static _convertButtonMask(n){let t={0:1,1:4,2:2,3:128,4:256},s=0;for(let r=0;r<5;r++)n&1<<r&&(s|=t[r]);return s}_handleMouse(n){if(n.type==="click"&&n.target!==this._canvas||(n.stopPropagation(),n.preventDefault(),n.type==="click"||n.type==="contextmenu"))return;let t=Nt(n.clientX,n.clientY,this._canvas),s=e._convertButtonMask(n.buttons),r=n.type=="mousedown";switch(n.type){case"mousedown":case"mouseup":if(this.dragViewport)if(r&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:t.x,y:t.y},this._viewportHasMoved=!1,this._flushMouseMoveTimer(t.x,t.y),this._mouseButtonMask=s;break}else{if(this._viewportDragging=!1,this._viewportHasMoved){this._mouseButtonMask=s;break}this._sendMouse(t.x,t.y,this._mouseButtonMask)}r&&zi(this._canvas),this._handleMouseButton(t.x,t.y,s);break;case"mousemove":if(this._viewportDragging){let i=this._viewportDragPos.x-t.x,a=this._viewportDragPos.y-t.y;(this._viewportHasMoved||Math.abs(i)>Yt||Math.abs(a)>Yt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:t.x,y:t.y},this._display.viewportChangePos(i,a));break}this._handleMouseMove(t.x,t.y);break}}_handleMouseButton(n,t,s){this._flushMouseMoveTimer(n,t),this._mouseButtonMask=s,this._sendMouse(n,t,this._mouseButtonMask)}_handleMouseMove(n,t){if(this._mousePos={x:n,y:t},this._mouseMoveTimer==null){let s=Date.now()-this._mouseLastMoveTime;s>wo?(this._sendMouse(n,t,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},wo-s)}}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_sendMouse(n,t,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s&32768)throw new Error("Illegal mouse button mask (mask: "+s+")");let r=s&32640;this._extendedPointerEventSupported&&r?e.messages.extendedPointerEvent(this._sock,this._display.absX(n),this._display.absY(t),s):e.messages.pointerEvent(this._sock,this._display.absX(n),this._display.absY(t),s)}_handleWheel(n){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;n.stopPropagation(),n.preventDefault();let t=Nt(n.clientX,n.clientY,this._canvas),s=e._convertButtonMask(n.buttons),r=n.deltaX,i=n.deltaY;n.deltaMode!==0&&(r*=Eo,i*=Eo),this._accumulatedWheelDeltaX+=r,this._accumulatedWheelDeltaY+=i,Math.abs(this._accumulatedWheelDeltaX)>=ko&&(this._accumulatedWheelDeltaX<0?(this._handleMouseButton(t.x,t.y,s|32),this._handleMouseButton(t.x,t.y,s)):this._accumulatedWheelDeltaX>0&&(this._handleMouseButton(t.x,t.y,s|64),this._handleMouseButton(t.x,t.y,s)),this._accumulatedWheelDeltaX=0),Math.abs(this._accumulatedWheelDeltaY)>=ko&&(this._accumulatedWheelDeltaY<0?(this._handleMouseButton(t.x,t.y,s|8),this._handleMouseButton(t.x,t.y,s)):this._accumulatedWheelDeltaY>0&&(this._handleMouseButton(t.x,t.y,s|16),this._handleMouseButton(t.x,t.y,s)),this._accumulatedWheelDeltaY=0)}_fakeMouseMove(n,t,s){this._handleMouseMove(t,s),this._cursor.move(n.detail.clientX,n.detail.clientY)}_handleTapEvent(n,t){let s=Nt(n.detail.clientX,n.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTime<Xu&&this._gestureFirstDoubleTapEv.detail.type===n.detail.type){let r=this._gestureFirstDoubleTapEv.detail.clientX-n.detail.clientX,i=this._gestureFirstDoubleTapEv.detail.clientY-n.detail.clientY;Math.hypot(r,i)<Nu?s=Nt(this._gestureFirstDoubleTapEv.detail.clientX,this._gestureFirstDoubleTapEv.detail.clientY,this._canvas):this._gestureFirstDoubleTapEv=n}else this._gestureFirstDoubleTapEv=n;this._gestureLastTapTime=Date.now(),this._fakeMouseMove(this._gestureFirstDoubleTapEv,s.x,s.y),this._handleMouseButton(s.x,s.y,t),this._handleMouseButton(s.x,s.y,0)}_handleGesture(n){let t,s=Nt(n.detail.clientX,n.detail.clientY,this._canvas);switch(n.type){case"gesturestart":switch(n.detail.type){case"onetap":this._handleTapEvent(n,1);break;case"twotap":this._handleTapEvent(n,4);break;case"threetap":this._handleTapEvent(n,2);break;case"drag":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragging=!0,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(n,s.x,s.y),this._handleMouseButton(s.x,s.y,1));break;case"longpress":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(n,s.x,s.y),this._handleMouseButton(s.x,s.y,4));break;case"twodrag":this._gestureLastMagnitudeX=n.detail.magnitudeX,this._gestureLastMagnitudeY=n.detail.magnitudeY,this._fakeMouseMove(n,s.x,s.y);break;case"pinch":this._gestureLastMagnitudeX=Math.hypot(n.detail.magnitudeX,n.detail.magnitudeY),this._fakeMouseMove(n,s.x,s.y);break}break;case"gesturemove":switch(n.detail.type){case"onetap":case"twotap":case"threetap":break;case"drag":case"longpress":if(this.dragViewport){this._viewportDragging=!0;let r=this._viewportDragPos.x-s.x,i=this._viewportDragPos.y-s.y;(this._viewportHasMoved||Math.abs(r)>Yt||Math.abs(i)>Yt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:s.x,y:s.y},this._display.viewportChangePos(r,i))}else this._fakeMouseMove(n,s.x,s.y);break;case"twodrag":for(this._fakeMouseMove(n,s.x,s.y);n.detail.magnitudeY-this._gestureLastMagnitudeY>Ge;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY+=Ge;for(;n.detail.magnitudeY-this._gestureLastMagnitudeY<-Ge;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY-=Ge;for(;n.detail.magnitudeX-this._gestureLastMagnitudeX>Ge;)this._handleMouseButton(s.x,s.y,32),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Ge;for(;n.detail.magnitudeX-this._gestureLastMagnitudeX<-Ge;)this._handleMouseButton(s.x,s.y,64),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Ge;break;case"pinch":if(this._fakeMouseMove(n,s.x,s.y),t=Math.hypot(n.detail.magnitudeX,n.detail.magnitudeY),Math.abs(t-this._gestureLastMagnitudeX)>Xn){for(this._handleKeyEvent(g.XK_Control_L,"ControlLeft",!0);t-this._gestureLastMagnitudeX>Xn;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Xn;for(;t-this._gestureLastMagnitudeX<-Xn;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Xn}this._handleKeyEvent(g.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(n.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this.dragViewport?this._viewportDragging=!1:(this._fakeMouseMove(n,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break;case"longpress":if(this._viewportHasMoved)break;this.dragViewport&&!this._viewportHasMoved?(this._fakeMouseMove(n,s.x,s.y),this._handleMouseButton(s.x,s.y,4),this._handleMouseButton(s.x,s.y,0),this._viewportDragging=!1):(this._fakeMouseMove(n,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break}break}}_flushMouseMoveTimer(n,t){this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(n,t,this._mouseButtonMask))}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;let n=this._sock.rQshiftStr(12).substr(4,7);ue("Server ProtocolVersion: "+n);let t=0;switch(n){case"000.000":t=1;break;case"003.003":case"003.006":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"003.889":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+n)}if(t){let r="ID:"+this._repeaterID;for(;r.length<250;)r+="\0";return this._sock.sQpushString(r),this._sock.flush(),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);let s="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sQpushString("RFB "+s+`
|
|
2
|
+
`),this._sock.flush(),V("Sent ProtocolVersion: "+s),this._rfbInitState="Security"}_isSupportedSecurityType(n){return[So,Ts,Ao,Co,$r,To,Xo,No,Fo].includes(n)}_negotiateSecurity(){if(this._rfbVersion>=3.7){let n=this._sock.rQshift8();if(this._sock.rQwait("security type",n,1))return!1;if(n===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,!0;let t=this._sock.rQshiftBytes(n);V("Server security types: "+t),this._rfbAuthScheme=-1;for(let s of t)if(this._isSupportedSecurityType(s)){this._rfbAuthScheme=s;break}if(this._rfbAuthScheme===-1)return this._fail("Unsupported security types (types: "+t+")");this._sock.sQpush8(this._rfbAuthScheme),this._sock.flush()}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,!0}return this._rfbInitState="Authentication",V("Authenticating using scheme: "+this._rfbAuthScheme),!0}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;let n=this._sock.rQshift32(),t="";if(n>0){if(this._sock.rQwait("reason",n,4))return!1;t=this._sock.rQshiftStr(n)}return t!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:t}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+t+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1):(this._sock.sQpush8(this._rfbCredentials.username.length),this._sock.sQpush8(this._rfbCredentials.target.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.target),this._sock.flush(),this._rfbAuthScheme=Ts,this._negotiateAuthentication())}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;let n=this._sock.rQshift8(),t=this._sock.rQshift8();if(!(n==0&&t==2))return this._fail("Unsupported VeNCrypt version "+n+"."+t);this._sock.sQpush8(0),this._sock.sQpush8(2),this._sock.flush(),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;let n=this._sock.rQshift8();if(n!=0)return this._fail("VeNCrypt failure "+n);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;let n=this._sock.rQshift8();if(n<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=n,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;let n=[];for(let t=0;t<this._rfbVeNCryptSubtypesLength;t++)n.push(this._sock.rQshift32());this._rfbAuthScheme=-1;for(let t of n)if(t!==$r&&this._isSupportedSecurityType(t)){this._rfbAuthScheme=t;break}return this._rfbAuthScheme===-1?this._fail("Unsupported security types (types: "+n+")"):(this._sock.sQpush32(this._rfbAuthScheme),this._sock.flush(),this._rfbVeNCryptState=4,!0)}}_negotiatePlainAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let n=Te(this._rfbCredentials.username),t=Te(this._rfbCredentials.password);return this._sock.sQpush32(n.length),this._sock.sQpush32(t.length),this._sock.sQpushString(n),this._sock.sQpushString(t),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;if(this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}})),!1;let n=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),t=e.genDES(this._rfbCredentials.password,n);return this._sock.sQpushBytes(t),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateARDAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;if(this._rfbCredentials.ardPublicKey!=null&&this._rfbCredentials.ardCredentials!=null)return this._sock.sQpushBytes(this._rfbCredentials.ardCredentials),this._sock.sQpushBytes(this._rfbCredentials.ardPublicKey),this._sock.flush(),this._rfbCredentials.ardCredentials=null,this._rfbCredentials.ardPublicKey=null,this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("read ard",4))return!1;let n=this._sock.rQshiftBytes(2),t=this._sock.rQshift16();if(this._sock.rQwait("read ard keylength",t*2,4))return!1;let s=this._sock.rQshiftBytes(t),r=this._sock.rQshiftBytes(t),i=oe.generateKey({name:"DH",g:n,p:s},!1,["deriveBits"]);return this._negotiateARDAuthAsync(t,r,i),!1}async _negotiateARDAuthAsync(n,t,s){let r=oe.exportKey("raw",s.publicKey),i=oe.deriveBits({name:"DH",public:t},s.privateKey,n*8),a=Te(this._rfbCredentials.username).substring(0,63),o=Te(this._rfbCredentials.password).substring(0,63),u=window.crypto.getRandomValues(new Uint8Array(128));for(let f=0;f<a.length;f++)u[f]=a.charCodeAt(f);u[a.length]=0;for(let f=0;f<o.length;f++)u[64+f]=o.charCodeAt(f);u[64+o.length]=0;let l=await oe.digest("MD5",i),d=await oe.importKey("raw",l,{name:"AES-ECB"},!1,["encrypt"]),h=await oe.encrypt({name:"AES-ECB"},d,u);this._rfbCredentials.ardCredentials=h,this._rfbCredentials.ardPublicKey=r,this._resumeAuthentication()}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.sQpush32(this._rfbCredentials.username.length),this._sock.sQpush32(this._rfbCredentials.password.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.password),this._sock.flush(),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(n){let t={0:{vendor:"TGHT",signature:"NOTUNNEL"}},s={};for(let r=0;r<n;r++){let i=this._sock.rQshift32(),a=this._sock.rQshiftStr(4),o=this._sock.rQshiftStr(8);s[i]={vendor:a,signature:o}}return V("Server Tight tunnel types: "+s),s[1]&&s[1].vendor==="SICR"&&s[1].signature==="SCHANNEL"&&(V("Detected Siemens server. Assuming NOTUNNEL support."),s[0]={vendor:"TGHT",signature:"NOTUNNEL"}),s[0]?s[0].vendor!=t[0].vendor||s[0].signature!=t[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(V("Selected tunnel type: "+t[0]),this._sock.sQpush32(0),this._sock.flush(),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")}_negotiateTightAuth(){if(!this._rfbTightVNC){if(this._sock.rQwait("num tunnels",4))return!1;let r=this._sock.rQshift32();if(r>0&&this._sock.rQwait("tunnel capabilities",16*r,4))return!1;if(this._rfbTightVNC=!0,r>0)return this._negotiateTightTunnels(r),!1}if(this._sock.rQwait("sub auth count",4))return!1;let n=this._sock.rQshift32();if(n===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*n,4))return!1;let t={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},s=[];for(let r=0;r<n;r++){this._sock.rQshift32();let i=this._sock.rQshiftStr(12);s.push(i)}V("Server Tight authentication types: "+s);for(let r in t)if(s.indexOf(r)!=-1)switch(this._sock.sQpush32(t[r]),this._sock.flush(),V("Selected authentication type: "+r),r){case"STDVNOAUTH__":return this._rfbInitState="SecurityResult",!0;case"STDVVNCAUTH_":return this._rfbAuthScheme=Ts,!0;case"TGHTULGNAUTH":return this._rfbAuthScheme=Ko,!0;default:return this._fail("Unsupported tiny auth scheme (scheme: "+r+")")}return this._fail("No supported sub-auth types!")}_handleRSAAESCredentialsRequired(n){this.dispatchEvent(n)}_handleRSAAESServerVerification(n){this.dispatchEvent(n)}_negotiateRA2neAuth(){return this._rfbRSAAESAuthenticationState===null&&(this._rfbRSAAESAuthenticationState=new bn(this._sock,()=>this._rfbCredentials),this._rfbRSAAESAuthenticationState.addEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.addEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired)),this._rfbRSAAESAuthenticationState.checkInternalEvents(),this._rfbRSAAESAuthenticationState.hasStarted||this._rfbRSAAESAuthenticationState.negotiateRA2neAuthAsync().catch(n=>{n.message!=="disconnect normally"&&this._fail(n.message)}).then(()=>(this._rfbInitState="SecurityResult",!0)).finally(()=>{this._rfbRSAAESAuthenticationState.removeEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.removeEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired),this._rfbRSAAESAuthenticationState=null}),!1}_negotiateMSLogonIIAuth(){if(this._sock.rQwait("mslogonii dh param",24))return!1;if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;let n=this._sock.rQshiftBytes(8),t=this._sock.rQshiftBytes(8),s=this._sock.rQshiftBytes(8),r=oe.generateKey({name:"DH",g:n,p:t},!0,["deriveBits"]),i=oe.exportKey("raw",r.publicKey),a=oe.deriveBits({name:"DH",public:s},r.privateKey,64),o=oe.importKey("raw",a,{name:"DES-CBC"},!1,["encrypt"]),u=Te(this._rfbCredentials.username).substring(0,255),l=Te(this._rfbCredentials.password).substring(0,63),d=new Uint8Array(256),h=new Uint8Array(64);window.crypto.getRandomValues(d),window.crypto.getRandomValues(h);for(let f=0;f<u.length;f++)d[f]=u.charCodeAt(f);d[u.length]=0;for(let f=0;f<l.length;f++)h[f]=l.charCodeAt(f);return h[l.length]=0,d=oe.encrypt({name:"DES-CBC",iv:a},o,d),h=oe.encrypt({name:"DES-CBC",iv:a},o,h),this._sock.sQpushBytes(i),this._sock.sQpushBytes(d),this._sock.sQpushBytes(h),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateAuthentication(){switch(this._rfbAuthScheme){case So:return this._rfbVersion>=3.8?this._rfbInitState="SecurityResult":this._rfbInitState="ClientInitialisation",!0;case To:return this._negotiateXvpAuth();case Xo:return this._negotiateARDAuth();case Ts:return this._negotiateStdVNCAuth();case Co:return this._negotiateTightAuth();case $r:return this._negotiateVeNCryptAuth();case Fo:return this._negotiatePlainAuth();case Ko:return this._negotiateTightUnixAuth();case Ao:return this._negotiateRA2neAuth();case No:return this._negotiateMSLogonIIAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;let n=this._sock.rQshift32();return n===0?(this._rfbInitState="ClientInitialisation",V("Authentication OK"),!0):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=n,!0):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:n}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;let n=this._sock.rQshift16(),t=this._sock.rQshift16(),s=this._sock.rQshift8(),r=this._sock.rQshift8(),i=this._sock.rQshift8(),a=this._sock.rQshift8(),o=this._sock.rQshift16(),u=this._sock.rQshift16(),l=this._sock.rQshift16(),d=this._sock.rQshift8(),h=this._sock.rQshift8(),f=this._sock.rQshift8();this._sock.rQskipBytes(3);let p=this._sock.rQshift32();if(this._sock.rQwait("server init name",p,24))return!1;let x=this._sock.rQshiftStr(p);if(x=ts(x,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+p))return!1;let w=this._sock.rQshift16(),b=this._sock.rQshift16(),y=this._sock.rQshift16();this._sock.rQskipBytes(2);let k=(w+b+y)*16;if(this._sock.rQwait("TightVNC extended server init header",k,32+p))return!1;this._sock.rQskipBytes(16*w),this._sock.rQskipBytes(16*b),this._sock.rQskipBytes(16*y)}return ue("Screen: "+n+"x"+t+", bpp: "+s+", depth: "+r+", bigEndian: "+i+", trueColor: "+a+", redMax: "+o+", greenMax: "+u+", blueMax: "+l+", redShift: "+d+", greenShift: "+h+", blueShift: "+f),this._setDesktopName(x),this._resize(n,t),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(he("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),e.messages.pixelFormat(this._sock,this._fbDepth,!0),this._sendEncodings(),e.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),!0}_sendEncodings(){let n=[];n.push(W.encodingCopyRect),this._fbDepth==24&&(lr&&n.push(W.encodingH264),n.push(W.encodingTight),n.push(W.encodingTightPNG),n.push(W.encodingZRLE),n.push(W.encodingJPEG),n.push(W.encodingHextile),n.push(W.encodingRRE),n.push(W.encodingZlib)),n.push(W.encodingRaw),n.push(W.pseudoEncodingQualityLevel0+this._qualityLevel),n.push(W.pseudoEncodingCompressLevel0+this._compressionLevel),n.push(W.pseudoEncodingDesktopSize),n.push(W.pseudoEncodingLastRect),n.push(W.pseudoEncodingQEMUExtendedKeyEvent),n.push(W.pseudoEncodingQEMULedEvent),n.push(W.pseudoEncodingExtendedDesktopSize),n.push(W.pseudoEncodingXvp),n.push(W.pseudoEncodingFence),n.push(W.pseudoEncodingContinuousUpdates),n.push(W.pseudoEncodingDesktopName),n.push(W.pseudoEncodingExtendedClipboard),n.push(W.pseudoEncodingExtendedMouseButtons),this._fbDepth==24&&(n.push(W.pseudoEncodingVMwareCursor),n.push(W.pseudoEncodingCursor)),e.messages.clientEncodings(this._sock,n)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.sQpush8(this._shared?1:0),this._sock.flush(),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_resumeAuthentication(){setTimeout(this._initMsg.bind(this),0)}_handleSetColourMapMsg(){return V("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(V("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let n=this._sock.rQshift32();if(n=Zt(n),this._sock.rQwait("ServerCutText content",Math.abs(n),8))return!1;if(n>=0){let t=this._sock.rQshiftStr(n);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:t}}))}else{n=Math.abs(n);let t=this._sock.rQshift32(),s=t&65535,r=t&4278190080;if(!!(r&Ro)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let o=0;o<=15;o++){let u=1<<o;s&u&&(this._clipboardServerCapabilitiesFormats[u]=!0,this._sock.rQshift32())}for(let o=24;o<=31;o++){let u=1<<o;this._clipboardServerCapabilitiesActions[u]=!!(r&u)}let a=[Ro,Xs,Lo,Nn,Ns];e.messages.extendedClipboardCaps(this._sock,a,{extendedClipboardFormatText:0})}else if(r===Xs){if(this._viewOnly)return!0;this._clipboardText!=null&&this._clipboardServerCapabilitiesActions[Ns]&&s&Re&&e.messages.extendedClipboardProvide(this._sock,[Re],[this._clipboardText])}else if(r===Lo){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[Nn]&&(this._clipboardText!=null?e.messages.extendedClipboardNotify(this._sock,[Re]):e.messages.extendedClipboardNotify(this._sock,[]))}else if(r===Nn){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[Xs]&&s&Re&&e.messages.extendedClipboardRequest(this._sock,[Re])}else if(r===Ns){if(this._viewOnly||!(s&Re))return!0;this._clipboardText=null;let a=this._sock.rQshiftBytes(n-4),o=new Xe,u=null;o.setInput(a);for(let l=0;l<=15;l++){let d=1<<l;if(s&d){let h=0,f=o.inflate(4);h|=f[0]<<24,h|=f[1]<<16,h|=f[2]<<8,h|=f[3];let p=o.inflate(h);d===Re&&(u=p)}}if(o.setInput(null),u!==null){let l="";for(let d=0;d<u.length;d++)l+=String.fromCharCode(u[d]);u=l,u=ts(u),u.length>0&&u.charAt(u.length-1)==="\0"&&(u=u.slice(0,-1)),u=u.replaceAll(`\r
|
|
3
3
|
`,`
|
|
4
|
-
`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:u}}))}}else return this._fail("Unexpected action in extended clipboard message: "+r)}return!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let
|
|
5
|
-
`);let u=Te(t[o]+"\0");r.push(u.length>>24&255,u.length>>16&255,u.length>>8&255,u.length&255);for(let l=0;l<u.length;l++)r.push(u.charCodeAt(l))}let i=
|
|
4
|
+
`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:u}}))}}else return this._fail("Unexpected action in extended clipboard message: "+r)}return!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let n=this._sock.rQshift32(),t=this._sock.rQshift8();if(this._sock.rQwait("ServerFence payload",t,9))return!1;t>64&&(he("Bad payload length ("+t+") in fence response"),t=64);let s=this._sock.rQshiftStr(t);return this._supportsFence=!0,n&1<<31?(n&=3,e.messages.clientFence(this._sock,n,s),!0):this._fail("Unexpected fence response")}_handleXvpMsg(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskipBytes(1);let n=this._sock.rQshift8(),t=this._sock.rQshift8();switch(t){case 0:se("XVP operation failed");break;case 1:this._rfbXvpVer=n,ue("XVP extensions enabled (version "+this._rfbXvpVer+")"),this._setCapability("power",!0);break;default:this._fail("Illegal server XVP message (msg: "+t+")");break}return!0}_normalMsg(){let n;this._FBU.rects>0?n=0:n=this._sock.rQshift8();let t,s;switch(n){case 0:return s=this._framebufferUpdate(),s&&!this._enabledContinuousUpdates&&e.messages.fbUpdateRequest(this._sock,!0,0,0,this._fbWidth,this._fbHeight),s;case 1:return this._handleSetColourMapMsg();case 2:return V("Bell"),this.dispatchEvent(new CustomEvent("bell",{detail:{}})),!0;case 3:return this._handleServerCutText();case 150:return t=!this._supportsContinuousUpdates,this._supportsContinuousUpdates=!0,this._enabledContinuousUpdates=!1,t&&(this._enabledContinuousUpdates=!0,this._updateContinuousUpdates(),ue("Enabling continuous updates.")),!0;case 248:return this._handleServerFenceMsg();case 250:return this._handleXvpMsg();default:return this._fail("Unexpected server message (type "+n+")"),V("sock.rQpeekBytes(30): "+this._sock.rQpeekBytes(30)),!0}}_framebufferUpdate(){if(this._FBU.rects===0){if(this._sock.rQwait("FBU header",3,1))return!1;if(this._sock.rQskipBytes(1),this._FBU.rects=this._sock.rQshift16(),this._display.pending())return this._flushing=!0,this._display.flush().then(()=>{this._flushing=!1,this._sock.rQwait("message",1)||this._handleMessage()}),!1}for(;this._FBU.rects>0;){if(this._FBU.encoding===null){if(this._sock.rQwait("rect header",12))return!1;this._FBU.x=this._sock.rQshift16(),this._FBU.y=this._sock.rQshift16(),this._FBU.width=this._sock.rQshift16(),this._FBU.height=this._sock.rQshift16(),this._FBU.encoding=this._sock.rQshift32(),this._FBU.encoding>>=0}if(!this._handleRect())return!1;this._FBU.rects--,this._FBU.encoding=null}return this._display.flip(),!0}_handleRect(){switch(this._FBU.encoding){case W.pseudoEncodingLastRect:return this._FBU.rects=1,!0;case W.pseudoEncodingVMwareCursor:return this._handleVMwareCursor();case W.pseudoEncodingCursor:return this._handleCursor();case W.pseudoEncodingQEMUExtendedKeyEvent:return this._qemuExtKeyEventSupported=!0,!0;case W.pseudoEncodingDesktopName:return this._handleDesktopName();case W.pseudoEncodingDesktopSize:return this._resize(this._FBU.width,this._FBU.height),!0;case W.pseudoEncodingExtendedDesktopSize:return this._handleExtendedDesktopSize();case W.pseudoEncodingExtendedMouseButtons:return this._extendedPointerEventSupported=!0,!0;case W.pseudoEncodingQEMULedEvent:return this._handleLedEvent();default:return this._handleDataRect()}}_handleVMwareCursor(){let n=this._FBU.x,t=this._FBU.y,s=this._FBU.width,r=this._FBU.height;if(this._sock.rQwait("VMware cursor encoding",1))return!1;let i=this._sock.rQshift8();this._sock.rQshift8();let a,o=4;if(i==0){if(a=new Array(s*r*o),this._sock.rQwait("VMware cursor classic encoding",s*r*o*2,2))return!1;let l=new Array(s*r);for(let h=0;h<s*r;h++)l[h]=this._sock.rQshift32();let d=new Array(s*r);for(let h=0;h<s*r;h++)d[h]=this._sock.rQshift32();for(let h=0;h<s*r;h++)if(l[h]==0){let f=d[h],p=f>>8&255,x=f>>16&255,w=f>>24&255;a[h*o]=p,a[h*o+1]=x,a[h*o+2]=w,a[h*o+3]=255}else(l[h]&-256)==-256?d[h]==0?(a[h*o]=0,a[h*o+1]=0,a[h*o+2]=0,a[h*o+3]=0):(d[h]&-256,a[h*o]=0,a[h*o+1]=0,a[h*o+2]=0,a[h*o+3]=255):(a[h*o]=0,a[h*o+1]=0,a[h*o+2]=0,a[h*o+3]=255)}else if(i==1){if(this._sock.rQwait("VMware cursor alpha encoding",s*r*4,2))return!1;a=new Array(s*r*o);for(let u=0;u<s*r;u++){let l=this._sock.rQshift32();a[u*4]=l>>24&255,a[u*4+1]=l>>16&255,a[u*4+2]=l>>8&255,a[u*4+3]=l&255}}else return he("The given cursor type is not supported: "+i+" given."),!1;return this._updateCursor(a,n,t,s,r),!0}_handleCursor(){let n=this._FBU.x,t=this._FBU.y,s=this._FBU.width,r=this._FBU.height,i=s*r*4,a=Math.ceil(s/8)*r,o=i+a;if(this._sock.rQwait("cursor encoding",o))return!1;let u=this._sock.rQshiftBytes(i),l=this._sock.rQshiftBytes(a),d=new Uint8Array(s*r*4),h=0;for(let f=0;f<r;f++)for(let p=0;p<s;p++){let x=f*Math.ceil(s/8)+Math.floor(p/8),w=l[x]<<p%8&128?255:0;d[h]=u[h+2],d[h+1]=u[h+1],d[h+2]=u[h],d[h+3]=w,h+=4}return this._updateCursor(d,n,t,s,r),!0}_handleDesktopName(){if(this._sock.rQwait("DesktopName",4))return!1;let n=this._sock.rQshift32();if(this._sock.rQwait("DesktopName",n,4))return!1;let t=this._sock.rQshiftStr(n);return t=ts(t,!0),this._setDesktopName(t),!0}_handleLedEvent(){if(this._sock.rQwait("LED status",1))return!1;let n=this._sock.rQshift8(),t=!!(n&2),s=!!(n&4);return this._remoteCapsLock=s,this._remoteNumLock=t,!0}_handleExtendedDesktopSize(){if(this._sock.rQwait("ExtendedDesktopSize",4))return!1;let n=this._sock.rQpeek8(),t=4+n*16;if(this._sock.rQwait("ExtendedDesktopSize",t))return!1;let s=!this._supportsSetDesktopSize;this._supportsSetDesktopSize=!0,this._sock.rQskipBytes(1),this._sock.rQskipBytes(3);for(let r=0;r<n;r+=1)r===0?(this._screenID=this._sock.rQshift32(),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._screenFlags=this._sock.rQshift32()):this._sock.rQskipBytes(16);if(this._FBU.x===1&&(this._pendingRemoteResize=!1),this._FBU.x===1&&this._FBU.y!==0){let r="";switch(this._FBU.y){case 1:r="Resize is administratively prohibited";break;case 2:r="Out of resources";break;case 3:r="Invalid screen layout";break;default:r="Unknown reason";break}he("Server did not accept the resize request: "+r)}else this._resize(this._FBU.width,this._FBU.height);return s&&this._requestRemoteResize(),this._FBU.x===1&&this._FBU.y===0&&this._requestRemoteResize(),!0}_handleDataRect(){let n=this._decoders[this._FBU.encoding];if(!n)return this._fail("Unsupported encoding (encoding: "+this._FBU.encoding+")"),!1;try{return n.decodeRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,this._sock,this._display,this._fbDepth)}catch(t){return this._fail("Error decoding rect: "+t),!1}}_updateContinuousUpdates(){this._enabledContinuousUpdates&&e.messages.enableContinuousUpdates(this._sock,!0,0,0,this._fbWidth,this._fbHeight)}_resize(n,t){this._fbWidth=n,this._fbHeight=t,this._display.resize(this._fbWidth,this._fbHeight),this._updateClip(),this._updateScale(),this._updateContinuousUpdates(),this._saveExpectedClientSize()}_xvpOp(n,t){this._rfbXvpVer<n||(ue("Sending XVP operation "+t+" (version "+n+")"),e.messages.xvpOp(this._sock,n,t))}_updateCursor(n,t,s,r,i){this._cursorImage={rgbaPixels:n,hotx:t,hoty:s,w:r,h:i},this._refreshCursor()}_shouldShowDotCursor(){if(!this._showDotCursor)return!1;for(let n=3;n<this._cursorImage.rgbaPixels.length;n+=4)if(this._cursorImage.rgbaPixels[n])return!1;return!0}_refreshCursor(){if(this._rfbConnectionState!=="connecting"&&this._rfbConnectionState!=="connected")return;let n=this._shouldShowDotCursor()?e.cursors.dot:this._cursorImage;this._cursor.change(n.rgbaPixels,n.hotx,n.hoty,n.w,n.h)}static genDES(n,t){let s=n.split("").map(i=>i.charCodeAt(0)),r=oe.importKey("raw",s,{name:"DES-ECB"},!1,["encrypt"]);return oe.encrypt({name:"DES-ECB"},r,t)}};ye.messages={keyEvent(e,n,t){e.sQpush8(4),e.sQpush8(t),e.sQpush16(0),e.sQpush32(n),e.flush()},QEMUExtendedKeyEvent(e,n,t,s){function r(a){let o=s>>8,u=s&255;return o===224&&u<127?u|128:a}e.sQpush8(255),e.sQpush8(0),e.sQpush16(t),e.sQpush32(n);let i=r(s);e.sQpush32(i),e.flush()},pointerEvent(e,n,t,s){e.sQpush8(5),s=s&127,e.sQpush8(s),e.sQpush16(n),e.sQpush16(t),e.flush()},extendedPointerEvent(e,n,t,s){e.sQpush8(5);let r=s>>7&255;if(r&252)throw new Error("Invalid mouse button mask: "+s);let i=s&127;i|=128,e.sQpush8(i),e.sQpush16(n),e.sQpush16(t),e.sQpush8(r),e.flush()},_buildExtendedClipboardFlags(e,n){let t=new Uint8Array(4),s=0,r=0;for(let i=0;i<e.length;i++)r|=e[i];for(let i=0;i<n.length;i++)s|=n[i];return t[0]=r>>24,t[1]=0,t[2]=0,t[3]=s,t},extendedClipboardProvide(e,n,t){let s=new fn,r=[];for(let o=0;o<n.length;o++){if(n[o]!=Re)throw new Error("Unsupported extended clipboard format for Provide message.");t[o]=t[o].replace(/\r\n|\r|\n/gm,`\r
|
|
5
|
+
`);let u=Te(t[o]+"\0");r.push(u.length>>24&255,u.length>>16&255,u.length>>8&255,u.length&255);for(let l=0;l<u.length;l++)r.push(u.charCodeAt(l))}let i=s.deflate(new Uint8Array(r)),a=new Uint8Array(4+i.length);a.set(ye.messages._buildExtendedClipboardFlags([Ns],n)),a.set(i,4),ye.messages.clientCutText(e,a,!0)},extendedClipboardNotify(e,n){let t=ye.messages._buildExtendedClipboardFlags([Nn],n);ye.messages.clientCutText(e,t,!0)},extendedClipboardRequest(e,n){let t=ye.messages._buildExtendedClipboardFlags([Xs],n);ye.messages.clientCutText(e,t,!0)},extendedClipboardCaps(e,n,t){let s=Object.keys(t),r=new Uint8Array(4+4*s.length);s.map(a=>parseInt(a)),s.sort((a,o)=>a-o),r.set(ye.messages._buildExtendedClipboardFlags(n,[]));let i=4;for(let a=0;a<s.length;a++)r[i]=t[s[a]]>>24,r[i+1]=t[s[a]]>>16,r[i+2]=t[s[a]]>>8,r[i+3]=t[s[a]]>>0,i+=4,r[3]|=1<<s[a];ye.messages.clientCutText(e,r,!0)},clientCutText(e,n,t=!1){e.sQpush8(6),e.sQpush8(0),e.sQpush8(0),e.sQpush8(0);let s;t?s=Di(-n.length):s=n.length,e.sQpush32(s),e.sQpushBytes(n),e.flush()},setDesktopSize(e,n,t,s,r){e.sQpush8(251),e.sQpush8(0),e.sQpush16(n),e.sQpush16(t),e.sQpush8(1),e.sQpush8(0),e.sQpush32(s),e.sQpush16(0),e.sQpush16(0),e.sQpush16(n),e.sQpush16(t),e.sQpush32(r),e.flush()},clientFence(e,n,t){e.sQpush8(248),e.sQpush8(0),e.sQpush8(0),e.sQpush8(0),e.sQpush32(n),e.sQpush8(t.length),e.sQpushString(t),e.flush()},enableContinuousUpdates(e,n,t,s,r,i){e.sQpush8(150),e.sQpush8(n),e.sQpush16(t),e.sQpush16(s),e.sQpush16(r),e.sQpush16(i),e.flush()},pixelFormat(e,n,t){let s;n>16?s=32:n>8?s=16:s=8;let r=Math.floor(n/3);e.sQpush8(0),e.sQpush8(0),e.sQpush8(0),e.sQpush8(0),e.sQpush8(s),e.sQpush8(n),e.sQpush8(0),e.sQpush8(t?1:0),e.sQpush16((1<<r)-1),e.sQpush16((1<<r)-1),e.sQpush16((1<<r)-1),e.sQpush8(r*0),e.sQpush8(r*1),e.sQpush8(r*2),e.sQpush8(0),e.sQpush8(0),e.sQpush8(0),e.flush()},clientEncodings(e,n){e.sQpush8(2),e.sQpush8(0),e.sQpush16(n.length);for(let t=0;t<n.length;t++)e.sQpush32(n[t]);e.flush()},fbUpdateRequest(e,n,t,s,r,i){typeof t>"u"&&(t=0),typeof s>"u"&&(s=0),e.sQpush8(3),e.sQpush8(n?1:0),e.sQpush16(t),e.sQpush16(s),e.sQpush16(r),e.sQpush16(i),e.flush()},xvpOp(e,n,t){e.sQpush8(250),e.sQpush8(0),e.sQpush8(n),e.sQpush8(t),e.flush()}};ye.cursors={none:{rgbaPixels:new Uint8Array,w:0,h:0,hotx:0,hoty:0},dot:{rgbaPixels:new Uint8Array([255,255,255,255,0,0,0,255,255,255,255,255,0,0,0,255,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,255,255,255,255,255]),w:3,h:3,hotx:1,hoty:1}};var Le="home",Kn="thread",Fn="desktop";function Io(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return Object.keys(n).length===3&&typeof n.threadId=="string"&&/^thr_[a-z0-9]+$/.test(n.threadId)&&typeof n.rootSeq=="number"&&Number.isInteger(n.rootSeq)&&n.rootSeq>=0&&typeof n.rootText=="string"&&n.rootText.length<=600}function Vr(e){return e.experimental_messageSeq}function Ku(e,n){let t=Math.floor(Math.max(0,n-e)/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);return s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`}function Gr(e,n){let t=e.replies===1?"1 reply":`${e.replies} replies`;return e.replies===0?"Thread started":`${t} \xB7 last ${Ku(e.lastActivityAt,n)}`}function Do(e,n){let t=new Set(n.filter(r=>r.running).map(r=>r.threadId));return e===null?{open:t.size>0,running:t}:{open:[...t].some(r=>!e.has(r))?!0:null,running:t}}function Po(e,n){let t=e.outcomes.at(-1);return t?`\u21B3 ${t.text}`:Gr(e,n)}var Wr=null,Rn=null;function Mo(e){return Rn?(Rn(e),!0):(Wr=e,!1)}function Bo(e){Rn=e;let n=Wr;return Wr=null,n&&e(n),()=>{Rn===e&&(Rn=null)}}var Fu={id:Kn,context:{kind:"nav-panel",panelId:Le},availability:"action"},Ru={id:Fn,context:{kind:"nav-panel",panelId:Le},availability:"action"};function Lu(e){let n=e.replace(/\s+/g," ").trim();return n.length>32?`${n.slice(0,31)}\u2026`:n||"Thread"}function Ho(){let e=q(),[n,t]=E(void 0),[s,r]=E(0);return Ae("config",re(()=>r(i=>i+1),[])),z(()=>{let i=!0;return e.call("threads.home",null).then(({orbitThread:a})=>{i&&t(a)},()=>{i&&t(a=>a??null)}),()=>{i=!1}},[e,s]),n}function jr(){let e=q(),[n,t]=E(void 0),[s,r]=E(null),[i,a]=E(0),o=re(()=>a(u=>u+1),[]);return Ae("threads",o),Ae("config",o),z(()=>{let u=!0;return(async()=>{try{let{orbitThread:l}=await e.call("threads.home",null);if(!u)return;if(t(l),!l)return r([]);let d=await e.call("threads.list",{orbitThread:l});u&&r(d.threads)}catch{u&&(t(l=>l??null),r(l=>l??[]))}})(),()=>{u=!1}},[e,i]),{orbit:n,threads:s}}function Iu({thread:e,now:n,onOpen:t}){let s=e.outcomes.slice(-3);return _("div",{className:"flex min-w-0 flex-col gap-0.5 text-sm",children:[s.map(r=>_("button",{type:"button",onClick:t,className:"min-w-0 truncate text-left text-foreground",children:["\u21B3 ",r.text]},r.at)),c("button",{type:"button",onClick:t,className:"text-left text-muted-foreground hover:text-foreground",children:Gr(e,n)})]})}function Du(e){let n=Ni(),t=ce(null),{setOpen:s,isCompactViewport:r}=n;z(()=>{if(e===null)return;let{open:i,running:a}=Do(t.current,e);t.current=a,i!==null&&!r&&s(i)},[r,s,e])}function Qo(e){let n=q(),t=Xi(),{orbit:s,threads:r}=jr(),i=at(()=>r??[],[r]);Du(r);let[a,o]=E(()=>Date.now());z(()=>{let x=setInterval(()=>o(Date.now()),6e4);return()=>clearInterval(x)},[]);let u=at(()=>new Map(i.map(x=>[x.rootSeq,x])),[i]),l=re((x,w,b)=>t.experimental_openTab({surface:{kind:"current"},tab:Fu,params:{threadId:x,rootSeq:w,rootText:b.slice(0,600)},title:Lu(b)}),[t]);z(()=>Bo(x=>l(x.threadId,x.rootSeq,x.rootText)),[l]);let d=re(()=>t.experimental_openTab({surface:{kind:"current"},tab:Ru}),[t]),h=re(async x=>{if(!s)return;let w=Vr(x),{threadId:b}=await n.call("threads.open",{orbitThread:s,rootSeq:w,forkAt:x.sourceSeqEnd,rootText:x.text});l(b,w,x.text)},[s,n,l]),f=at(()=>[{id:"reply-in-thread",title:"Reply in thread",icon:"MessageCirclePlus",run:h}],[h]),p=re(x=>{let w=Vr(x),b=u.get(w);return b?c(Iu,{thread:b,now:a,onOpen:()=>l(b.threadId,w,x.text)}):null},[u,a,l]);return s===void 0?null:s===null?c("div",{className:"mx-auto max-w-[560px] p-8 text-sm text-muted-foreground",children:"There's no Orbit conversation yet. It starts once a station is up and Orbit is set up (the Orbit page says what's missing)."}):_("div",{className:"relative h-full min-h-0",children:[c(ir,{threadId:s,variant:"full",messageActions:f,experimental_messageFooter:p}),c(F,{type:"button",size:"sm",variant:"outline",className:"absolute right-3 top-3 z-10 bg-background",onClick:d,children:"Desktop"})]})}function Uo({params:e}){if(!Io(e))return c("div",{className:"p-4 text-sm text-muted-foreground",children:"This thread can't be shown. Open it again from its message."});let{threadId:n,rootText:t}=e;return c(ir,{threadId:n,variant:"compact",leadingContent:c("blockquote",{className:"mx-3 mb-2 border-l-2 border-border pl-3 text-sm text-muted-foreground",children:t.length>=600?`${t}\u2026`:t})},n)}function qr({threadId:e}){let n=q(),t=ce(null),s=ce(null),[r,i]=E(null),[a,o]=E("Connecting\u2026"),[u,l]=E(!1),[d,h]=E(0);return z(()=>{n.call("desktop.station",{threadId:e}).then(i,f=>o(f instanceof Error?f.message:String(f)))},[n,e,d]),z(()=>{if(!r?.station||!t.current)return;let f=`${location.origin.replace(/^http/,"ws")}/api/v1/plugins/orbit/http/desktop?station=${encodeURIComponent(r.station)}`,p=new ye(t.current,f,{shared:!0});return p.viewOnly=!0,p.scaleViewport=!0,p.resizeSession=!1,p.background="transparent",p.addEventListener("connect",()=>o("")),p.addEventListener("disconnect",x=>{let w=x.detail?.clean;o(w?"Disconnected.":`Couldn't reach ${r.station}'s desktop.`)}),s.current=p,l(!1),()=>{p.disconnect(),s.current=null}},[r,d]),z(()=>{s.current&&(s.current.viewOnly=!u)},[u]),r&&!r.station?c("p",{className:"p-3 text-sm text-muted-foreground",children:"The desktop is for Orbit's conversations: the Orbit conversation, and the assistants and chats it runs on a station."}):_("div",{className:"flex h-full flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-xs",children:[c("span",{className:"font-medium",children:r?.station??"\u2026"}),c("span",{className:"flex-1 text-muted-foreground",children:a||(u?"You're in control: clicks and keys go to the desktop.":"Watching.")}),a?c(F,{size:"sm",variant:"secondary",onClick:()=>h(f=>f+1),children:"Retry"}):c(F,{size:"sm",variant:u?"destructive":"default",onClick:()=>l(f=>!f),children:u?"Give back control":"Take control"})]}),c("div",{ref:t,className:"min-h-0 flex-1 bg-black"})]})}function zo(e){let n=Ho();return n===void 0?null:n===null?c("p",{className:"p-3 text-sm text-muted-foreground",children:"There's no Orbit conversation yet, so there's no desktop to show."}):c(qr,{threadId:n},n)}var Zr="default-src 'none'; script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' blob: data: https://cdn.jsdelivr.net https://esm.sh https://unpkg.com; style-src 'unsafe-inline' blob: data: https://cdn.jsdelivr.net https://esm.sh https://unpkg.com; img-src data:; font-src data:; connect-src 'none'; frame-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'",bt=`<!doctype html><html><head><meta charset="utf-8"><meta name="referrer" content="no-referrer"><meta http-equiv="Content-Security-Policy" content="${Zr}">`,Pu=["<meta","<link","<base","<iframe","<frame","<object","<embed","<form","<portal"];function $o(e,n){if(new TextEncoder().encode(n).length>524288)return`a page is at most ${524288/1024} KiB`;if(e==="html"){if(!n.startsWith(bt))return"this HTML page doesn't start with the Content Security Policy every page starts with, so it isn't shown";let t=n.slice(bt.length).toLowerCase(),s=Pu.find(r=>t.includes(r));return s?`this HTML page has a ${s}\u2026> tag after its head, so it isn't shown`:null}return n.includes("![")?"this Markdown page has an image, so it isn't shown":/<[A-Za-z/!?]/.test(n)?"this Markdown page has raw HTML, so it isn't shown":null}var Mu=500,Dm=`set -u
|
|
6
6
|
dir=$1
|
|
7
7
|
thread=\${dir%/pages}
|
|
8
8
|
if [ ! -e "$dir" ] && [ -d "$thread" ] && [ ! -L "$thread" ]; then printf 'DIR %s\\nEND-PAGES\\n' "$dir"; exit 0; fi
|
|
@@ -15,10 +15,10 @@ for f in *; do
|
|
|
15
15
|
{ [ -f "$f" ] && [ ! -L "$f" ]; } || continue
|
|
16
16
|
s=$(stat -c '%h %s %Y' -- "$f" 2>/dev/null || stat -f '%l %z %m' -- "$f" 2>/dev/null) || continue
|
|
17
17
|
printf 'PAGE %s %s\\n' "$s" "$f"
|
|
18
|
-
n=$((n + 1)); [ "$n" -lt ${
|
|
18
|
+
n=$((n + 1)); [ "$n" -lt ${Mu} ] || break
|
|
19
19
|
done
|
|
20
20
|
echo END-PAGES
|
|
21
|
-
`;var
|
|
21
|
+
`;var Vo="orbit-artifact-link",Yr=500,Bu=`(() => {
|
|
22
22
|
const XLINK = "http://www.w3.org/1999/xlink";
|
|
23
23
|
const hrefOf = (a) => a.getAttribute("href") ?? a.getAttributeNS(XLINK, "href");
|
|
24
24
|
const scroll = (fragment) => {
|
|
@@ -40,48 +40,48 @@ echo END-PAGES
|
|
|
40
40
|
if (kept) return;
|
|
41
41
|
const h = href.trim();
|
|
42
42
|
if (h.startsWith("#")) scroll(h.slice(1));
|
|
43
|
-
else parent.postMessage({ type: "${
|
|
43
|
+
else parent.postMessage({ type: "${Vo}", href: h.slice(0, ${Yr+1}) }, "*");
|
|
44
44
|
}, 0);
|
|
45
45
|
}, true);
|
|
46
|
-
})();`;function
|
|
46
|
+
})();`;function Go(e){return e.startsWith(bt)?`${bt}<script>${Bu}<\/script>${e.slice(bt.length)}`:e}function Wo(e,n){if(!n.ownFrame||!n.activated||typeof e!="object"||e===null)return null;let t=Object.keys(e);if(t.length!==2||!t.includes("type")||!t.includes("href"))return null;let{type:s,href:r}=e;return s!==Vo||typeof r!="string"||!r||r.length>Yr?null:r}function Ln(e){let n=e.trim();if(!n||n.length>Yr)return{kind:"refused",reason:"the link's address is empty or too long"};if(/[\u0000-\u001f\u007f\\]/.test(n))return{kind:"refused",reason:"the link's address has a backslash or a control character"};if(n.startsWith("#"))return{kind:"anchor"};if(n.startsWith("//"))return{kind:"refused",reason:"the link leaves out its scheme (//\u2026), so where it goes isn't clear"};let t=/^([A-Za-z][A-Za-z0-9+.-]*):/.exec(n)?.[1]?.toLowerCase();if(t===void 0)return{kind:"page",href:n};if(t!=="https"&&t!=="http"&&t!=="mailto")return{kind:"refused",reason:`links to ${t}: addresses aren't followed`};let s;try{s=new URL(n)}catch{return{kind:"refused",reason:"the link's address isn't a valid one"}}return t!=="mailto"&&!s.hostname?{kind:"refused",reason:"the link's address has no site"}:s.username||s.password?{kind:"refused",reason:"the link's address has a user name or password in it"}:{kind:"outside",url:s.href}}function jo(e){switch(e.kind){case"anchor":case"outside":return null;case"page":return`This page links to another page (${e.href}). Links between pages aren't followed yet.`;case"refused":return`The link wasn't followed: ${e.reason}.`}}function qo(e,n){let t=n.replace(/\r\n?/g,`
|
|
47
47
|
`);return(e==="html"?t.replace(/>(?=<)/g,`>
|
|
48
48
|
`):t).split(`
|
|
49
|
-
`)}function
|
|
49
|
+
`)}function Ou(e,n){let t=0;for(;t<e.length&&t<n.length&&e[t]===n[t];)t++;let s=e.length,r=n.length;for(;s>t&&r>t&&e[s-1]===n[r-1];)s--,r--;let i=s-t,a=r-t;if(i*a>4e6)return null;let o=a+1,u=new Uint32Array((i+1)*o);for(let f=i-1;f>=0;f--)for(let p=a-1;p>=0;p--)u[f*o+p]=e[t+f]===n[t+p]?u[(f+1)*o+p+1]+1:Math.max(u[(f+1)*o+p],u[f*o+p+1]);let l=[];for(let f=0;f<t;f++)l.push({t:"same",text:e[f],a:f+1,b:f+1});let d=0,h=0;for(;d<i||h<a;)d<i&&h<a&&e[t+d]===n[t+h]?(l.push({t:"same",text:e[t+d],a:t+d+1,b:t+h+1}),d++,h++):d<i&&(h===a||u[(d+1)*o+h]>=u[d*o+h+1])?(l.push({t:"del",text:e[t+d],a:t+d+1}),d++):(l.push({t:"add",text:n[t+h],b:t+h+1}),h++);for(let f=0;f<e.length-s;f++)l.push({t:"same",text:e[s+f],a:s+f+1,b:r+f+1});return l}function Zo(e,n,t){let s=qo(e,n),r=qo(e,t),i=Ou(s,r);if(!i)return{state:"too-big",lines:[s.length,r.length]};let a=[],o=0,u=0,l=-1;for(let d=0;d<i.length;d++){let h=i[d];if(h.t==="same")continue;h.t==="add"?o++:u++;let f=Math.max(d-3,l+1),p=a.at(-1);if(p&&f<=l+1&&l>=0)for(let w=l+1;w<=d;w++)p.lines.push(i[w]);else a.push({lines:i.slice(f,d+1),skippedBefore:f-(l+1)});l=d;let x=d+1;for(;x<i.length&&x<=d+3&&i[x].t==="same";)a.at(-1).lines.push(i[x]),l=x,x++}return{state:"ok",hunks:a,added:o,removed:u,skippedAfter:i.length-(l+1)}}var Hu=/^[a-z0-9_-][a-z0-9._-]{0,63}$/;function Ks(e){if(!e||e.length>240)return"a path is 1 to 240 characters";let n=e.split("/");if(n.length>8)return"a path has at most 8 parts";let t=n.find(s=>!Hu.test(s));return t!==void 0?`"${t.slice(0,64)}" isn't a path's part: lower-case letters, digits, . _ - (not starting with a dot), at most 64`:null}function Yo(e){return e.replace(/^---[ \t]*\r?\n[^]{0,1000}?\r?\n---[ \t]*(\r?\n|$)/,"")}function Qu(e){let n=e.trim();return/^(https?:\/\/|mailto:)[^\s"'<>\\]+$/i.test(n)?n:null}function Jo(e){let n=/^ {0,3}(#{1,6})(?=[ \t]|$)/.exec(e);if(!n)return null;let t=e.slice(n[0].length).trim(),s=t.length;for(;s>0&&t[s-1]==="#";)s--;return(s===0||t[s-1]===" "||t[s-1]===" ")&&(t=t.slice(0,s).trimEnd()),{level:n[1].length,text:t}}function We(e){let n=[],t="",s=()=>{t&&n.push({t:"text",v:t}),t=""},r=0;for(;r<e.length;){let i=e.slice(r),a;if(i[0]==="\\"&&i.length>1&&/[\\`*_[\]()#+\-.!|~]/.test(i[1]))t+=i[1],r+=2;else if(a=/^(`+)([^]*?[^`])\1(?!`)/.exec(i))s(),n.push({t:"code",v:a[2].trim()||a[2]}),r+=a[0].length;else if(a=/^\[([^\]]*)\]\(([^()\s]*)\)/.exec(i)){s();let o=Qu(a[2])??(Ln(a[2]).kind==="page"?a[2].trim():null),u=We(a[1]);o?n.push({t:"link",href:o,c:u}):n.push(...u),r+=a[0].length}else(a=/^(\*\*|__)(?=\S)([^]*?\S)\1/.exec(i))?(s(),n.push({t:"strong",c:We(a[2])}),r+=a[0].length):(a=/^(\*|_)(?=\S)([^]*?\S)\1(?![*_])/.exec(i))&&(a[1]==="*"||!/\w/.test(e[r-1]??""))?(s(),n.push({t:"em",c:We(a[2])}),r+=a[0].length):(t+=i[0],r+=1)}return s(),n}var Jr=e=>{let n=e.trim();return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&!n.endsWith("\\|")&&(n=n.slice(0,-1)),n.split(/(?<!\\)\|/).map(t=>t.trim().replace(/\\\|/g,"|"))},el=/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/;function ei(e){let n=e.replace(/\r\n?/g,`
|
|
50
50
|
`).split(`
|
|
51
|
-
`),t=[],
|
|
52
|
-
`)})}else if(
|
|
53
|
-
`))})}else if(a=/^\s{0,3}([-*+]|\d{1,9}[.)])\s+/.exec(i)){let o=/\d/.test(a[1]),u=o?/^\s{0,3}\d{1,9}[.)]\s+(.*)$/:/^\s{0,3}[-*+]\s+(.*)$/,l=[];for(;n<s.length&&s[n].trim();){let d=u.exec(s[n]);if(d)l.push(d[1]);else if(l.length&&!r(s[n]))l[l.length-1]+=` ${s[n].trim().replace(/^([-*+]|\d{1,9}[.)])\s+/,"")}`;else break;n++}t.push({t:o?"ol":"ul",items:l.map(Ge)})}else if(i.includes("|")&&n+1<s.length&&Uo.test(s[n+1])){let o=Gr(i),u=Gr(s[n+1]).map(d=>d.startsWith(":")&&d.endsWith(":")?"center":d.endsWith(":")?"right":d.startsWith(":")?"left":null);n+=2;let l=[];for(;n<s.length&&s[n].trim()&&s[n].includes("|");){let d=Gr(s[n++]);l.push(o.map((h,f)=>Ge(d[f]??"")))}t.push({t:"table",align:o.map((d,h)=>u[h]??null),head:o.map(Ge),rows:l})}else{let o=[];for(;n<s.length&&s[n].trim()&&!r(s[n])&&!(s[n].includes("|")&&n+1<s.length&&Uo.test(s[n+1]));)o.push(s[n++].trim());o.length||o.push(s[n++].trim()),t.push({t:"p",c:Ge(o.join(" "))})}}return t}function zt(e){switch(e.state){case"offline":return`${e.machine??"This conversation's machine"} is offline, so this conversation's artifacts can't be read. Refresh once it's back.`;case"refused":return`Couldn't list the artifacts: ${e.reason}.`;case"ok":return e.artifacts.length?null:"This conversation has no artifacts yet. When it shows a page in its chat, the page appears here too."}}function Fs(e){let s=Lo(e.kind,e.content);return s?{kind:"refused",reason:s}:e.kind==="md"?{kind:"markdown",blocks:Wr(Ho(e.content))}:e.previewUrl?{kind:"frame",src:e.previewUrl}:{kind:"frame",srcDoc:Do(e.content)}}function Fn(e){return e.state==="ok"?Fs(e.page):{kind:"refused",reason:e.state==="refused"?e.reason:zt(e)??""}}function $t(e){return{kind:"refused",reason:`Couldn't open the page: ${e instanceof Error?e.message:String(e)}`}}function zo(e){let s={title:"Page",sandbox:"allow-scripts",referrerPolicy:"no-referrer",allow:""};return"src"in e?{...s,src:e.src}:{...s,csp:$r,srcDoc:e.srcDoc}}function Ks(e,s,t=Date.now()){return`${e<1024?`${e} B`:`${Math.round(e/1024)} KB`} \xB7 ${vt(s,t)}`}function vt(e,s=Date.now()){let t=Math.max(0,Math.round((s-e)/6e4));return t<1?"just now":t<60?`${t} min ago`:t<2880?`${Math.round(t/60)} h ago`:new Date(e).toLocaleDateString()}function $o(e,s){let t=s.trim().toLowerCase();return t?e.filter(n=>n.title.toLowerCase().includes(t)||n.names.some(r=>r.toLowerCase().includes(t))):e}function Vo(e,s){let t=s.trim().toLowerCase();return t?e.filter(n=>n.name.toLowerCase().includes(t)):e}function Go(e){let s=[];e.threads.length||s.push("No conversation in this project has artifacts yet.");for(let t of e.offline)s.push(`${t.machine} is offline: ${t.threads} conversation${t.threads===1?"":"s"} there not looked at. Refresh once it's back.`);return e.unlisted&&s.push(`${e.unlisted} conversation${e.unlisted===1?"'s":"s'"} artifacts couldn't be listed.`),e.truncated&&s.push("Only the most recently updated conversations were looked at."),s}function Wo(e,s){let t=e.by==="owner"?"you":e.by===s?"this conversation":e.by,n=e.source==="restore"?`${t}, restored v${e.restoredFrom}`:t,r=new Date(e.at).toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"});return`v${e.n} \xB7 ${r} \xB7 ${n} \xB7 ${Ks(e.size,e.at).split(" \xB7 ")[0]}`}function Kn(e){return e.versionsError?`Versions aren't available (${e.versionsError}): this is the conversation's file as it is now.`:e.pinned!==void 0?`Pinned to v${e.pinned}: shown until it's unpinned (History), whatever the conversation writes next.${e.gone?" The conversation's file is gone.":""}`:e.gone?`The conversation's file is gone; this is the last version kept${e.version?` (v${e.version})`:""}.`:e.restoredFrom!==void 0?`v${e.version}, restored from v${e.restoredFrom}. The conversation's own file is unchanged.`:e.version?`v${e.version}`:null}function jo(e,s){let t={kind:"folder",path:"",label:"",children:[]},n=new Map([["",t]]),r=new Map(s.filter(o=>o.threadTitle).map(o=>[`threads/${o.threadId}`,o.threadTitle])),i=o=>{let u=n.get(o);if(u)return u;let l=o.lastIndexOf("/"),d=i(l<0?"":o.slice(0,l)),h=o.slice(l+1),f={kind:"folder",path:o,label:r.get(o)??h,children:[]};return d.children.push(f),n.set(o,f),f};for(let o of e)i(o);for(let o of s){let u=o.path.lastIndexOf("/");i(u<0?"":o.path.slice(0,u)).children.push({kind:"page",path:o.path,label:o.path.slice(u+1),page:o})}let a=o=>{o.sort((u,l)=>u.kind===l.kind?u.label.localeCompare(l.label):u.kind==="folder"?-1:1);for(let u of o)u.kind==="folder"&&a(u.children)};return a(t.children),t.children}function jr(e,s){return["",...e.filter(t=>t!=="threads"&&!t.startsWith("threads/"))]}function qo(e){switch(e.state){case"page":return null;case"deleted":return`That page (${e.path}) was deleted from the tree on ${new Date(e.at).toLocaleDateString()}. The Tree view's Deleted list can restore it.`;case"missing":return`There's no page at ${e.path} in this project's tree.`;case"refused":return`The link wasn't followed: ${e.reason}.`}}function Rn(e,s,t,n){try{let r=e?.getItem(s);return r&&t.includes(r)?r:n}catch{return n}}function Ln(e,s,t){try{e?.setItem(s,t)}catch{}}function Zo(e,s){let t=new Set(s.pages.map(r=>`${r.threadId}/${r.name}`)),n=new Set(s.deleted.map(r=>r.name));return e.filter(r=>!t.has(`${r.threadId}/${r.name}`)&&!n.has(r.name))}function Vt(){try{return globalThis.localStorage??null}catch{return null}}function Dn({threadId:e,name:s,shown:t,about:n,onChanged:r,onNavigate:i,onBack:a}){let o=q(),[u,l]=E("page");z(()=>l("page"),[e,s]);let d=ce(0);z(()=>{d.current++},[e,s]);let h=ie(async p=>{let g=++d.current,w=await o.call("artifacts.follow",{threadId:e,name:s,href:p});return g!==d.current?null:(w.state==="page"&&i(w.threadId,w.name),qo(w))},[o,e,s,i]),f=p=>l(g=>g===p?"page":p);return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs text-muted-foreground",children:[a?c(K,{size:"sm",variant:"secondary",onClick:a,children:"Back"}):null,c("span",{className:"min-w-0 flex-1 truncate",children:u==="history"?`History of ${s}`:u==="links"?`Links of ${s}`:n??""}),c(K,{size:"sm",variant:u==="links"?"default":"secondary",onClick:()=>f("links"),children:u==="links"?"Back to the page":"Links"}),c(K,{size:"sm",variant:u==="history"?"default":"secondary",onClick:()=>f("history"),children:u==="history"?"Back to the page":"History"})]}),u==="history"?c(Du,{threadId:e,name:s,onRestored:()=>{l("page"),r()}}):u==="links"?c(Iu,{threadId:e,name:s,onNavigate:i}):c(In,{shown:t,onPageLink:h})]})}var Lu={page:"",deleted:"deleted",missing:"broken: no such page",refused:"not followed",outside:"outside Orbit"};function Iu({threadId:e,name:s,onNavigate:t}){let n=q(),[r,i]=E(null),[a,o]=E("");if(z(()=>{let l=!0;return i(null),n.call("artifacts.links",{threadId:e,name:s}).then(d=>l&&i(d),d=>l&&o(d instanceof Error?d.message:String(d))),()=>{l=!1}},[n,e,s]),!r)return c("p",{className:`p-3 text-sm ${a?"text-destructive":"text-muted-foreground"}`,children:a||"Reading its links\u2026"});let u=r.out.filter(l=>l.state==="missing"||l.state==="deleted").length;return _("div",{className:"min-h-0 flex-1 overflow-auto p-3 text-sm",children:[r.path?c("p",{className:"mb-2 text-xs text-muted-foreground",children:r.path}):c("p",{className:"mb-2 text-xs text-muted-foreground",children:"Not in a project's tree yet."}),_("h3",{className:"mb-1 font-medium",children:["Linked from (",r.from.length,")"]}),r.from.length?c("ul",{className:"mb-3",children:r.from.map(l=>c("li",{children:c("button",{type:"button",className:"underline",onClick:()=>t(l.threadId,l.name),children:l.path})},l.path))}):c("p",{className:"mb-3 text-xs text-muted-foreground",children:"No page in this project links here."}),_("h3",{className:"mb-1 font-medium",children:["Links on this page (",r.out.length,")",u?`, ${u} broken`:""]}),r.out.length?c("ul",{children:r.out.map(l=>_("li",{className:"flex gap-2 text-xs",children:[_("span",{className:"min-w-0 flex-1 truncate",children:[l.href,l.path&&l.path!==l.href?` \u2192 ${l.path}`:""]}),c("span",{className:l.state==="missing"||l.state==="deleted"?"text-destructive":"text-muted-foreground",children:Lu[l.state]})]},l.href))}):c("p",{className:"text-xs text-muted-foreground",children:"This page has no links."}),u?c("p",{className:"mt-2 text-xs text-muted-foreground",children:"Only the page's conversation can fix a broken link (by rewriting the page)."}):null]})}function Du({threadId:e,name:s,onRestored:t}){let n=q(),[r,i]=E(null),[a,o]=E(""),[u,l]=E(null),[d,h]=E("page"),[f,p]=E(null),[g,w]=E(null),[v,y]=E(null),[k,I]=E(!1),[R,L]=E(null),[M,D]=E(0),U=j=>o(j instanceof Error?j.message:String(j));z(()=>o(""),[e,s]),z(()=>{let j=!0;return n.call("artifacts.history",{threadId:e,name:s}).then(Q=>{if(j){if(Q.state==="refused")return o(Q.reason);i(Q),l(Z=>Z!==null&&Q.versions.some(tt=>tt.n===Z)?Z:Q.versions[0]?.n??null)}},Q=>j&&U(Q)),()=>{j=!1}},[n,e,s,M]);let O=r?.versions[0]?.n??null,P=ie(async j=>{let Q=await n.call("artifacts.version",{threadId:e,name:s,n:j});if(Q.state==="refused")throw new Error(Q.reason);return Q.page},[n,e,s]),G=d==="compare"&&u!==O;z(()=>{let j=!0;return p(null),w(null),y(null),u!==null&&!G?P(u).then(Q=>j&&p(Fs({kind:Q.kind,content:Q.content})),Q=>j&&p($t(Q))):u!==null&&O!==null&&Promise.all([P(u),P(O)]).then(([Q,Z])=>{j&&(w(Oo(Q.kind,Q.content,Z.content)),y([Fs({kind:Q.kind,content:Q.content}),Fs({kind:Z.kind,content:Z.content})]))},Q=>j&&U(Q)),()=>{j=!1}},[u,G,O,P]);let Y=async j=>{if(O===null)return;let Q=await n.call("artifacts.pin",{threadId:e,name:s,n:j,latest:O});Q.state==="refused"?(o(Q.reason),D(Z=>Z+1)):t()},se=async()=>{if(!R||O===null)return;let j=R.what==="restore"?await n.call("artifacts.restore",{threadId:e,name:s,n:R.n,latest:O}):await n.call("artifacts.forget",{threadId:e,name:s,n:R.n,latest:O});L(null),j.state==="refused"?(o(j.reason),D(Q=>Q+1)):R.what==="restore"?t():D(Q=>Q+1)};if(!r)return c("p",{className:`p-3 text-sm ${a?"text-destructive":"text-muted-foreground"}`,children:a||"Loading the history\u2026"});let le=u===O;return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[c("ul",{className:"max-h-[40%] shrink-0 overflow-auto border-b",children:r.versions.map(j=>c("li",{children:_("button",{type:"button","aria-pressed":j.n===u,className:`flex w-full items-baseline gap-2 px-3 py-1.5 text-left text-xs hover:bg-muted ${j.n===u?"bg-muted font-medium":""}`,onClick:()=>l(j.n),children:[c("span",{className:"min-w-0 flex-1 truncate",children:Wo(j,e)}),j.n===r.pinned?c("span",{className:"shrink-0 font-medium",children:"pinned"}):null,j.n===O?c("span",{className:"shrink-0 text-muted-foreground",children:"latest"}):null,j.n===r.fileVersion&&!r.fileGone?c("span",{className:"shrink-0 text-muted-foreground",children:"the file now"}):null]})},j.n))}),a?c("p",{className:"px-3 py-1.5 text-xs text-destructive",children:a}):null,R?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[c("span",{children:R.what==="restore"?`Restore v${R.n}? It becomes v${(O??0)+1}, the latest, with v${R.n}'s content. The conversation's own file isn't changed, and every version stays.`:`Delete v${R.n} for good? Its content can't be brought back.`}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>L(null),children:"Cancel"}),c(K,{size:"sm",variant:R.what==="forget"?"destructive":"default",onClick:()=>{se().catch(U)},children:R.what==="restore"?"Restore":"Delete"})]})]}):u!==null?_("div",{className:"flex flex-wrap items-center gap-2 border-b px-3 py-1.5 text-xs",children:[c(K,{size:"sm",variant:G?"secondary":"default",onClick:()=>h("page"),children:"View"}),c(K,{size:"sm",variant:G?"default":"secondary",disabled:le,onClick:()=>h("compare"),children:"Compare with latest"}),c("span",{className:"flex-1"}),r.pinned!==null?_(K,{size:"sm",variant:"secondary",onClick:()=>{Y(null).catch(U)},children:["Unpin v",r.pinned]}):null,r.pinned!==u?c(K,{size:"sm",variant:"secondary",onClick:()=>{Y(u).catch(U)},children:"Pin this version"}):null,c(K,{size:"sm",variant:"secondary",disabled:le,onClick:()=>L({what:"restore",n:u}),children:"Restore\u2026"}),c(K,{size:"sm",variant:"secondary",disabled:le||u===r.pinned,onClick:()=>L({what:"forget",n:u}),children:"Delete\u2026"})]}):null,G?_("div",{className:"flex min-h-0 flex-1 flex-col",children:[_("div",{className:"flex gap-2 border-b px-3 py-1.5 text-xs",children:[c(K,{size:"sm",variant:k?"default":"secondary",onClick:()=>I(!0),children:"Drawn"}),c(K,{size:"sm",variant:k?"secondary":"default",onClick:()=>I(!1),children:"Source"})]}),k?c("div",{className:"flex min-h-0 flex-1",children:v?v.map((j,Q)=>_("div",{className:"flex min-w-0 flex-1 flex-col border-r",children:[_("p",{className:"border-b px-3 py-1 text-xs text-muted-foreground",children:["v",Q===0?u:O]}),c(In,{shown:j})]},Q)):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Comparing\u2026"})}):c(Bu,{diff:g,older:u,newer:O})]}):c(In,{shown:f})]})}var Pu={same:" ",add:"+",del:"-"},Mu={same:"",add:"bg-green-500/15",del:"bg-red-500/15"};function Bu({diff:e,older:s,newer:t}){return e?e.state==="too-big"?_("p",{className:"p-3 text-sm text-muted-foreground",children:["These versions differ too much to compare line by line (",e.lines[0]," and ",e.lines[1]," lines). View each instead."]}):_("div",{className:"min-h-0 flex-1 overflow-auto font-mono text-xs",children:[_("p",{className:"px-3 py-1.5 font-sans text-muted-foreground",children:["v",s," \u2192 v",t,": ",e.added," line",e.added===1?"":"s"," added, ",e.removed," removed",e.hunks.length?"":" (the same source)"]}),e.hunks.map((n,r)=>_("div",{children:[n.skippedBefore?_("p",{className:"px-3 py-0.5 font-sans text-muted-foreground",children:["\u2026 ",n.skippedBefore," unchanged lines"]}):null,n.lines.map((i,a)=>_("pre",{className:`whitespace-pre-wrap break-all px-3 ${Mu[i.t]}`,children:[Pu[i.t]," ",i.text]},a))]},r)),e.skippedAfter&&e.hunks.length?_("p",{className:"px-3 py-0.5 font-sans text-muted-foreground",children:["\u2026 ",e.skippedAfter," unchanged lines"]}):null]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Comparing\u2026"})}var Rs=e=>e?`${e}/`:"the project's root";function qr(e,s,t){let n=l=>({kind:"no",label:`Can't move here: ${l}`,reason:l}),r=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"";if(s===r)return n("it's already here");if(!jr(t.folders,e).includes(s))return n(s==="threads"||s.startsWith("threads/")?"that's an old thread folder, not one you made":"that isn't a folder");let i=e.path.slice(e.path.lastIndexOf("/")+1),a=new Set([...t.pages,...t.folders,...t.held.filter(l=>l.to!==e.path).map(l=>l.path)]),o=l=>s?`${s}/${l}`:l,u=o(i);if(a.has(u)){let l=2,d=h=>o(`${i.slice(0,Math.min(64,240-s.length-1)-`-${h}`.length)}-${h}`);for(;a.has(d(l));)l++;return u=d(l),Nn(u)?n("a page there already has this name, and no other name fits"):{kind:"ask",to:u,clash:!0,label:`Move to ${Rs(s)}: asks first`,question:`${Rs(s)} already has ${i} (a page, or an old path kept for links). Keep both, with this one as ${u.slice(u.lastIndexOf("/")+1)}?`}}return{kind:"ok",to:u,label:`Move to ${Rs(s)}`}}var Hu=6,Yo=400,Qu=700;function Jo(e,s){let t=e.ownerDocument,n=t.defaultView,r=s.at??((L,M)=>t.elementFromPoint(L,M)),i=null,a=!1,o=null,u=null,l=null,d=null,h=()=>{u?.removeAttribute("data-drop"),u=null},f=()=>{i=null,a=!1,o?.remove(),o=null,h(),l?.timer&&clearTimeout(l.timer),l=null,d=null,e.removeAttribute("data-dragging")},p=L=>{for(let M=L;M&&e.contains(M);M=M.parentElement){let D=s.folderOf(M);if(D!==null)return{el:M,folder:D}}return null},g=L=>{if(i&&f(),!(L.button!==0||!(L.target instanceof n.Element)))for(let M=L.target;M&&e.contains(M);M=M.parentElement){let D=s.pageOf(M);if(D!==null){i={page:D,x:L.clientX,y:L.clientY,id:L.pointerId,touch:L.pointerType==="touch",at:Date.now()};return}}},w=L=>{if(!i||L.pointerId!==i.id)return;if(L.buttons===0)return f();if(!a){if(Math.hypot(L.clientX-i.x,L.clientY-i.y)<Hu)return;if(i.touch&&Date.now()-i.at<Yo)return void(i=null);a=!0;try{e.setPointerCapture?.(i.id)}catch{}e.setAttribute("data-dragging","true"),o=t.createElement("div"),o.setAttribute("data-drag-label",""),o.setAttribute("role","status"),o.style.cssText="position:fixed;pointer-events:none;z-index:50;padding:2px 8px;border-radius:6px;font-size:12px;background:var(--foreground,#111);color:var(--background,#fff)",t.body.append(o)}L.preventDefault(),o.style.left=`${L.clientX+12}px`,o.style.top=`${L.clientY+12}px`;let M=p(r(L.clientX,L.clientY));if(!M){h(),d=null,o.textContent="Not a folder: dropping here moves nothing",l?.timer&&clearTimeout(l.timer),l=null;return}let D=s.verdict(i.page,M.folder);if(d={folder:M.folder,verdict:D},o.textContent=D.label,u!==M.el&&h(),u=M.el,u.setAttribute("data-drop",D.kind),l?.folder!==M.folder){l?.timer&&clearTimeout(l.timer);let U=M.folder;l={folder:U,since:Date.now(),timer:s.closed(U)?setTimeout(()=>s.open(U),Qu):null}}},v=L=>{if(!i||L.pointerId!==i.id)return;let M=a?{page:i.page,current:d}:null;if(f(),!M)return;let D=U=>(U.stopPropagation(),U.preventDefault());e.addEventListener("click",D,{capture:!0,once:!0}),setTimeout(()=>e.removeEventListener("click",D,{capture:!0}),0),M.current&&M.current.verdict.kind!=="no"&&s.drop(M.page,M.current.folder,M.current.verdict)},y=L=>{L.key==="Escape"&&i&&(f(),L.preventDefault())},k=L=>i&&L.pointerId===i.id&&f(),I=()=>i&&f(),R=L=>i?.touch&&Date.now()-i.at>=Yo&&L.preventDefault();return e.addEventListener("pointerdown",g),n.addEventListener("pointermove",w),n.addEventListener("pointerup",v),n.addEventListener("pointercancel",k),n.addEventListener("keydown",y),n.addEventListener("blur",I),e.addEventListener("lostpointercapture",I),e.addEventListener("touchmove",R,{passive:!1}),()=>{n.removeEventListener("blur",I),e.removeEventListener("lostpointercapture",I),e.removeEventListener("touchmove",R),f(),e.removeEventListener("pointerdown",g),n.removeEventListener("pointermove",w),n.removeEventListener("pointerup",v),n.removeEventListener("pointercancel",k),n.removeEventListener("keydown",y)}}function el(e,s,t){let n=l=>({kind:"no",label:`Can't move here: ${l}`,reason:l}),r=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";if(s===r)return n("it's already here");if(s===e||s.startsWith(`${e}/`))return n("a folder can't go inside itself");if(s==="threads"||s.startsWith("threads/"))return n("that's an old thread folder, not one you made");if(s&&!t.folders.includes(s))return n("that isn't a folder");let i=e.slice(e.lastIndexOf("/")+1),a=s?`${s}/${i}`:i;if([...t.pages,...t.folders,...t.held.map(l=>l.path)].some(l=>l===a||l.startsWith(`${a}/`)))return n(`${a} is already taken`);if(Nn(a))return n(`${a} isn't a path that fits`);let u=t.pages.filter(l=>l.startsWith(`${e}/`)).length;return{kind:"ask",to:a,clash:!1,label:`Move to ${Rs(s)}: asks first`,question:`Move the folder ${e} and the ${u} page${u===1?"":"s"} in it into ${Rs(s)}? Their old paths will lead to them.`}}function tl(e,s){return jr(s.folders,e).map(t=>{let n=qr(e,t,s);return n.kind==="ok"?{folder:t,mark:"allowed"}:n.kind==="ask"?{folder:t,mark:"asks first"}:n.reason==="it's already here"?{folder:t,mark:"here now"}:{folder:t,mark:"not allowed",reason:n.reason}})}var sl="text-sm max-md:pointer-coarse:text-base";var nl="h-[28px] w-[28px] rounded-md p-0 max-md:pointer-coarse:h-[36px] max-md:pointer-coarse:w-[36px]",Wm=`${nl} [&_[data-icon-root]]:size-[16px] max-md:pointer-coarse:[&_[data-icon-root]]:size-[20px]`,jm=`${nl} [&_[data-icon-root]]:size-[13px] max-md:pointer-coarse:[&_[data-icon-root]]:size-[16px]`;var rl="h-9 max-md:pointer-coarse:h-10";var re=it(({className:e,type:s,...t},n)=>c("input",{type:s,autoComplete:"off",className:At(`flex w-full rounded-md border border-input bg-transparent pl-3 pr-3 py-1 ${zs} file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,rl,sl,e),ref:n,...t}));re.displayName="Input";var Pn=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",Zr=e=>e!=="threads"&&!e.startsWith("threads/"),We="folder:",Uu=8e3,Yr="data-[drop=ok]:outline data-[drop=ok]:outline-2 data-[drop=ok]:outline-green-600 data-[drop=ask]:outline data-[drop=ask]:outline-2 data-[drop=ask]:outline-amber-500 data-[drop=no]:outline data-[drop=no]:outline-2 data-[drop=no]:outline-red-600";function Jr({projectId:e,attempt:s,open:t,onOpen:n,onClose:r}){let i=q(),a=q(),[o,u]=E(!1),[l,d]=E([]),[h,f]=E(null),[p,g]=E(""),[w,v]=E(new Set),[y,k]=E(null),[I,R]=E(0),[L,M]=E(null),[D,U]=E(null),[O,P]=E(null),[G,Y]=E(null),[se,le]=E(null),[j,Q]=E(""),[Z,tt]=E(""),st=ce(null),Ee=ce(null);Ee.current=h,z(()=>{let b=!0;return f(B=>B?.projectId===e?B:null),i.call("artifacts.tree",{projectId:e}).then(B=>b&&(B.state==="ok"?f({...B,projectId:e}):g(B.reason)),B=>b&&g(B instanceof Error?B.message:String(B))),()=>{b=!1}},[i,e,s,I]),z(()=>{let b=!0;return u(!0),d([]),a.call("artifacts.sync",{projectId:e}).then(B=>{b&&(u(!1),B.state==="ok"&&d(B.listed),R($=>$+1))},()=>b&&u(!1)),()=>{b=!1}},[a,e,s]);let Vn=async()=>{if(y===null||!h)return;let b=await i.call("artifacts.mkdir",{projectId:h.projectId,path:y.trim(),seq:h.seq});if(b.state==="refused")return g(`Couldn't make the folder: ${b.reason}.`),R(B=>B+1);k(null),R(B=>B+1)};z(()=>g(""),[e,s]);let nt=(b,B)=>(B.state==="refused"?g(`Couldn't ${b}: ${B.reason}.`):g(""),M(null),R($=>$+1),B.state==="ok"),H=h?.pages.find(b=>b.path===t)??null,Ie=async b=>{if(!h||!H)return;let B=b.folder?`${b.folder}/${b.name.trim()}`:b.name.trim(),$=await i.call("artifacts.move",{projectId:h.projectId,from:b.from,to:B,seq:b.seq});nt("move it",$)&&n({...H,path:B})},wt=async b=>{h&&nt("delete it",await i.call("artifacts.remove",{projectId:h.projectId,path:b.from,seq:b.seq}))&&r()},rt=async b=>{if(!h)return;let B=Pn(b.path),$=B?`${B}/${b.name.trim()}`:b.name.trim();nt("rename the folder",await i.call("artifacts.move-folder",{projectId:h.projectId,from:b.path,to:$,seq:b.seq}))&&U(null)},Yl=async b=>{h&&nt("delete the folder",await i.call("artifacts.remove-folder",{projectId:h.projectId,path:b.path,seq:b.seq}))&&U(null)},Jl=async b=>{h&&nt("restore it",await i.call("artifacts.undelete",{projectId:h.projectId,path:b,seq:h.seq}))};z(()=>M(null),[t]),z(()=>{Y(null),P(null),le(null)},[e]),z(()=>{if(!se)return;let b=setTimeout(()=>le(null),Uu);return()=>clearTimeout(b)},[se]);let Gn=b=>({folders:b.folders,pages:b.pages.map(B=>B.path),held:[...b.moved.map(B=>({path:B.path,to:B.to})),...b.deleted.map(B=>({path:B.path}))]}),di=(b,B)=>{let $=Ee.current;if(!$)return{kind:"no",label:"Can't move here: the tree changed; look again",reason:"the tree changed"};if(b.startsWith(We))return el(b.slice(We.length),B,Gn($));let be=$.pages.find(kt=>kt.path===b);return be?qr(be,B,Gn($)):{kind:"no",label:"Can't move here: the tree changed; look again",reason:"the tree changed"}},ui=async(b,B,$)=>{let be=Ee.current;if(!be)return;if(b.startsWith(We)){let De=b.slice(We.length),Gt=await i.call("artifacts.move-folder",{projectId:be.projectId,from:De,to:B,seq:$});if(P(null),Y(null),Gt.state==="refused")Q(`Not moved: ${Gt.reason}.`),g(`Couldn't move it: ${Gt.reason}.`);else{Q(`Moved the folder ${De} to ${B}.`);let Wt=t?.startsWith(`${De}/`)?be.pages.find(nc=>nc.path===t):void 0;Wt&&n({...Wt,path:`${B}${Wt.path.slice(De.length)}`})}return R(Wt=>Wt+1)}let kt=await i.call("artifacts.move",{projectId:be.projectId,from:b,to:B,seq:$});if(P(null),Y(null),kt.state==="refused")Q(`Not moved: ${kt.reason}.`),g(`Couldn't move it: ${kt.reason}.`);else{Q(`Moved ${b} to ${B}.`),le({from:B,to:b,seq:kt.seq});let De=be.pages.find(Gt=>Gt.path===b);De&&t===b&&n({...De,path:B})}R(De=>De+1)},Wn=(b,B)=>{let $=Ee.current?.seq??0;B.kind==="ok"?ui(b,B.to,$).catch(be=>g(String(be))):B.kind==="ask"?P({from:b,to:B.to,question:B.question,seq:$}):Q(B.label)},ec=async()=>{let b=Ee.current;if(!b||!se)return;let B=await i.call("artifacts.undo-move",{projectId:b.projectId,from:se.from,to:se.to,seq:se.seq});if(le(null),B.state==="refused")g(`Couldn't undo it: ${B.reason}.`);else{Q(`Moved back to ${se.to}.`);let $=b.pages.find(be=>be.path===se.from);$&&t===se.from&&n({...$,path:se.to})}R($=>$+1)},hi=ce(Wn);hi.current=Wn;let fi=ce(w);fi.current=w;let tc=!!h&&h.pages.length+h.folders.length>0;z(()=>{if(st.current)return Jo(st.current,{pageOf:b=>b.getAttribute("data-page"),folderOf:b=>b.getAttribute("data-folder"),verdict:di,closed:b=>fi.current.has(b),open:b=>v(B=>{let $=new Set(B);return $.delete(b),$}),drop:(b,B,$)=>hi.current(b,$)})},[tc]);let pi=(b,B,$)=>{let be=b.ctrlKey||b.metaKey;be&&b.key.toLowerCase()==="x"&&B?(b.preventDefault(),Y(B),Q(`Cut ${B}. Focus a folder and press Ctrl+V (\u2318V on a Mac) to move it there, or Escape.`)):be&&b.key.toLowerCase()==="v"&&G?(b.preventDefault(),Wn(G,di(G,$))):b.key==="Escape"&&G&&(Y(null),Q("Nothing cut."))},sc=b=>v(B=>{let $=new Set(B);return $.delete(b)||$.add(b),$}),_i=(b,B)=>b.kind==="folder"?_("li",{children:[_("button",{type:"button","aria-expanded":!w.has(b.path),"data-folder":b.path,...Zr(b.path)?{"data-page":`${We}${b.path}`}:{},className:`flex w-full items-baseline gap-1 py-1 pr-3 text-left text-sm hover:bg-muted ${G===`${We}${b.path}`?"opacity-60":""} ${Yr}`,style:{paddingLeft:12+B*14},onClick:()=>sc(b.path),onKeyDown:$=>pi($,Zr(b.path)?`${We}${b.path}`:null,b.path),children:[c("span",{className:"w-3 shrink-0 text-xs text-muted-foreground",children:w.has(b.path)?"\u25B8":"\u25BE"}),c("span",{className:"min-w-0 flex-1 truncate font-medium",children:b.label}),Zr(b.path)?c("span",{role:"button",tabIndex:0,"aria-label":`Rename or delete ${b.path}`,className:"shrink-0 px-1 text-muted-foreground hover:text-foreground",onClick:$=>($.stopPropagation(),U(D?.path===b.path?null:{path:b.path,name:b.label,seq:h?.seq??0})),onKeyDown:$=>$.key==="Enter"&&($.stopPropagation(),U({path:b.path,name:b.label,seq:h?.seq??0})),children:"\u22EF"}):null]}),D?.path===b.path?_("div",{className:"flex items-center gap-2 border-y bg-muted px-3 py-1.5 text-xs",style:{paddingLeft:12+B*14},children:[c(re,{"aria-label":"Folder name",className:"h-7",value:D.name,onChange:$=>U({...D,name:$.target.value})}),c(K,{size:"sm",disabled:!D.name.trim()||D.name.includes("/"),onClick:()=>{rt(D).catch($=>g(String($)))},children:"Rename"}),c(K,{size:"sm",variant:"secondary",disabled:b.children.length>0,...b.children.length?{title:"Only an empty folder can be deleted"}:{},onClick:()=>{Yl(D).catch($=>g(String($)))},children:"Delete"})]}):null,w.has(b.path)?null:c("ul",{children:b.children.map($=>_i($,B+1))})]},b.path):c("li",{children:_("button",{type:"button",title:b.path,"data-page":b.path,"data-folder":Pn(b.path),className:`flex w-full touch-pan-y select-none items-baseline gap-2 py-1 pr-3 text-left text-sm hover:bg-muted ${t===b.path?"bg-muted":""} ${G===b.path||G===`${We}${b.path}`?"opacity-60":""} ${Yr}`,style:{paddingLeft:26+B*14},onClick:()=>n(b.page),onKeyDown:$=>pi($,b.path,Pn(b.path)),children:[c("span",{className:`min-w-0 flex-1 truncate ${b.page.fileGone||b.page.threadGone?"text-muted-foreground":""}`,children:b.label}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[b.page.threadTitle?`${b.page.threadTitle} \xB7 `:"",b.page.pinned?`pinned v${b.page.pinned} \xB7 `:"",b.page.threadGone?"conversation deleted \xB7 ":b.page.fileGone?"file gone \xB7 ":"",vt(b.page.at)]})]})},b.path);if(!h)return c("p",{className:`p-3 text-sm ${p?"text-destructive":"text-muted-foreground"}`,children:p||"Loading the tree\u2026"});let mi=jo(h.folders,h.pages);return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[c("div",{className:"border-b px-3 py-1.5",children:c(re,{className:"h-8",type:"search","aria-label":"Search the project's artifacts",placeholder:"\u2315 Search the project",value:Z,onChange:b=>tt(b.target.value)})}),c("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:y===null?c(K,{size:"sm",variant:"secondary",onClick:()=>k(""),children:"New folder"}):_(Se,{children:[c(re,{className:"h-8",placeholder:"design/notes",value:y,onChange:b=>k(b.target.value)}),c(K,{size:"sm",onClick:()=>{Vn().catch(b=>g(String(b)))},children:"Make"}),c(K,{size:"sm",variant:"secondary",onClick:()=>k(null),children:"Cancel"})]})}),H&&h?L?.what==="move"?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"dialog","aria-label":"Move or rename",children:[_("span",{className:"font-medium",children:["Move or rename ",H.path]}),c("ul",{"aria-label":"Folder",className:"max-h-48 overflow-auto rounded border bg-background",children:tl(H,Gn(h)).map(b=>c("li",{children:_("button",{type:"button","aria-pressed":b.folder===L.folder,disabled:b.mark==="not allowed",title:b.reason,className:`flex w-full gap-2 px-2 py-1 text-left disabled:opacity-50 ${b.folder===L.folder?"bg-muted font-medium":"hover:bg-muted"}`,onClick:()=>M({...L,folder:b.folder}),children:[c("span",{className:"min-w-0 flex-1 truncate",children:b.folder||"(the project's root)"}),c("span",{className:"shrink-0 text-muted-foreground",children:b.mark==="not allowed"?`not allowed: ${b.reason}`:b.mark})]})},b.folder))}),c(re,{"aria-label":"Name",className:"h-8",value:L.name,onChange:b=>M({...L,name:b.target.value})}),c("span",{className:"text-muted-foreground",children:L.name.includes("/")?"A name has no /: pick the folder above.":`New path: ${L.folder?`${L.folder}/`:""}${L.name.trim()}. Links keep working: ${L.from} will lead here. The page's file isn't moved.`}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>M(null),children:"Cancel"}),c(K,{size:"sm",disabled:!L.name.trim()||L.name.includes("/"),onClick:()=>{Ie(L).catch(b=>g(String(b)))},children:"Move"})]})]}):L?.what==="delete"?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[_("span",{children:["Delete ",L.from," from the tree? Its path is held, links to it say it was deleted, and you can restore it. Its versions and the conversation's file stay."]}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>M(null),children:"Cancel"}),c(K,{size:"sm",variant:"destructive",onClick:()=>{wt(L).catch(b=>g(String(b)))},children:"Delete"})]})]}):_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:[c("span",{className:"min-w-0 flex-1 truncate text-muted-foreground",children:H.path}),c(K,{size:"sm",variant:"secondary",onClick:()=>M({what:"move",from:H.path,seq:h.seq,folder:Pn(H.path),name:H.path.slice(H.path.lastIndexOf("/")+1)}),children:"Move or rename\u2026"}),c(K,{size:"sm",variant:"secondary",onClick:()=>M({what:"delete",from:H.path,seq:h.seq}),children:"Delete\u2026"})]}):null,O?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[c("span",{children:O.question}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>(P(null),Q("Not moved.")),children:"Cancel"}),c(K,{size:"sm",onClick:()=>{ui(O.from,O.to,O.seq).catch(b=>g(String(b)))},children:"Move"})]})]}):null,se?_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:[_("span",{className:"min-w-0 flex-1 truncate",children:["Moved to ",se.from,"."]}),c(K,{size:"sm",variant:"secondary",onClick:()=>{ec().catch(b=>g(String(b)))},children:"Undo"})]}):null,c("p",{className:"sr-only","aria-live":"polite",children:j}),p?c("p",{className:"px-3 py-1.5 text-xs text-destructive",children:p}):null,Z.trim()?c(zu,{projectId:e,q:Z.trim(),onOpen:b=>n(h.pages.find(B=>B.threadId===b.threadId&&B.name===b.name)??{...b,size:0,fileGone:!1,threadGone:!1})}):mi.length?_("div",{className:"min-h-0 flex-1 overflow-auto py-1",children:[_("ul",{ref:st,children:[c("li",{"data-folder":"",className:`px-3 py-0.5 text-xs text-muted-foreground ${Yr}`,children:h.pages.some(b=>b.path.includes("/"))||h.folders.length?"Project root":null}),mi.map(b=>_i(b,0))]}),h.moved.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Redirects (",h.moved.length,")"]}),c("ul",{children:h.moved.map(b=>_("li",{className:"truncate",children:[b.path," \u2192 ",b.to]},b.path))})]}):null,(()=>{let b=Zo(l,h);return b.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Not in the tree (",b.length,")"]}),c("p",{className:"py-0.5",children:"These pages are in their conversations' folders but can't be shown or kept as versions, usually because they break the page rules. By conversation opens them and says why."}),c("ul",{children:b.map(B=>_("li",{className:"truncate",children:[B.title," / ",B.name]},`${B.threadId}/${B.name}`))})]}):null})(),h.deleted.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Deleted (",h.deleted.length,")"]}),c("ul",{children:h.deleted.map(b=>_("li",{className:"flex items-center gap-2 py-0.5",children:[_("span",{className:"min-w-0 flex-1 truncate",children:[b.path," \xB7 ",vt(b.at)]}),c(K,{size:"sm",variant:"secondary",onClick:()=>{Jl(b.path).catch(B=>g(String(B)))},children:"Restore"})]},b.path))})]}):null]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:o?"Bringing the project's tree up to date\u2026":"No pages in this project yet. A conversation's pages appear here, under the conversation's title, once it writes one."})]})}function zu({projectId:e,q:s,onOpen:t}){let n=q(),[r,i]=E("all"),[a,o]=E(!1),[u,l]=E(null),[d,h]=E("");return z(()=>{let f=!0;l(null),h("");let p=setTimeout(()=>{n.call("artifacts.search",{projectId:e,q:s.slice(0,200),scope:r,versions:a}).then(g=>f&&l(g.results),g=>f&&h(g instanceof Error?g.message:String(g)))},250);return()=>{f=!1,clearTimeout(p)}},[n,e,s,r,a]),_("div",{className:"min-h-0 flex-1 overflow-auto text-sm",children:[_("div",{className:"flex flex-wrap items-center gap-2 border-b px-3 py-1.5 text-xs",children:[["all","shared","drafts"].map(f=>c(K,{size:"sm",variant:r===f?"default":"secondary",onClick:()=>i(f),children:f==="all"?"All":f==="shared"?"In folders":"Not in a folder"},f)),_("label",{className:"flex items-center gap-1",children:[c("input",{type:"checkbox",checked:a,onChange:f=>o(f.target.checked)}),"Include old versions"]})]}),d?c("p",{className:"p-3 text-destructive",children:d}):null,u?u.length?c("ul",{children:u.map(f=>f.kind==="moved"?_("li",{className:"px-3 py-1.5 text-xs text-muted-foreground",children:[f.path," \u2192 ",f.to," ",c("span",{className:"ml-1",children:"moved"})]},`m:${f.path}`):c("li",{children:_("button",{type:"button",className:"w-full px-3 py-1.5 text-left hover:bg-muted",onClick:()=>t(f),children:[_("span",{className:"block truncate font-medium",children:[f.title,null,f.version?_("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:["only in v",f.version," (History shows it)"]}):null]}),_("span",{className:"block truncate text-xs text-muted-foreground",children:[f.path," \xB7 ",f.threadTitle??f.threadId," \xB7 ",vt(f.at)]}),f.snippet?c("span",{className:"block text-xs text-muted-foreground",children:f.snippet}):null]})},f.path))}):_("p",{className:"p-3 text-muted-foreground",children:[`Nothing in this project's tree has "`,s,'".']}):c("p",{className:"p-3 text-muted-foreground",children:"Searching\u2026"})]})}function il({projects:e,attempt:s,open:t,onOpen:n,onClose:r}){let i=q(),[a,o]=E(new Map),[u,l]=E(new Set);if(z(()=>{let f=!0;return i.call("artifacts.tree-projects",{}).then(p=>f&&o(new Map(p.projects.map(g=>[g.projectId,g.pages]))),()=>{}),()=>{f=!1}},[i,s]),!e.length)return c("p",{className:"p-3 text-sm text-muted-foreground",children:"Loading the projects\u2026"});let d=f=>c(Jr,{projectId:f,attempt:s,open:t,onOpen:n,onClose:r});if(e.length===1)return d(e[0].id);let h=[...e].sort((f,p)=>(a.get(p.id)??0)-(a.get(f.id)??0)||f.name.localeCompare(p.name));return c("ul",{className:"min-h-0 flex-1 overflow-auto py-1",children:h.map(f=>_("li",{className:"flex flex-col",children:[_("button",{type:"button","aria-expanded":u.has(f.id),className:"flex w-full items-baseline gap-1 px-3 py-1 text-left text-sm hover:bg-muted",onClick:()=>l(p=>{let g=new Set(p);return g.delete(f.id)||g.add(f.id),g}),children:[c("span",{className:"w-3 shrink-0 text-xs text-muted-foreground",children:u.has(f.id)?"\u25BE":"\u25B8"}),c("span",{className:"min-w-0 flex-1 truncate font-medium",children:f.name}),c("span",{className:"shrink-0 text-xs text-muted-foreground",children:a.has(f.id)?`${a.get(f.id)} page${a.get(f.id)===1?"":"s"}`:""})]}),u.has(f.id)?c("div",{className:"ml-3 flex max-h-[70vh] min-h-48 flex-col border-l",children:d(f.id)}):null]},f.id))})}var al="orbit.artifacts.panelView";function ol({threadId:e}){let s=q(),[t,n]=E(null),[r,i]=E(""),[a,o]=E(null),[u,l]=E(e),[d,h]=E([]),[f,p]=E(null),[g,w]=E(null),[v,y]=E(0),[k,I]=E(()=>Rn(Vt(),al,["thread","folders"],"thread")),R=P=>{I(P),Ln(Vt(),al,P)},L=P=>i(P instanceof Error?P.message:String(P));z(()=>{i(""),s.call("artifacts.list",{threadId:e}).then(n,L)},[s,e,v]);let M=ce(0),D=ie((P,G=e)=>{let Y=++M.current;o(P),l(G),p(null),w(null),s.call("artifacts.read",{threadId:G,name:P}).then(se=>Y===M.current&&(p(Fn(se)),w(se.state==="ok"?Kn(se.page):null)),se=>Y===M.current&&p($t(se)))},[s,e]);z(()=>{a&&u===e&&t?.state==="ok"&&t.artifacts.some(P=>P.name===a)&&D(a)},[t]);let U=r?`Couldn't reach the artifacts: ${r}`:t?zt(t):"Loading\u2026",O=t?.state==="ok"?t.artifacts:[];return _("div",{className:"flex h-full flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-xs",children:[a?c(K,{size:"sm",variant:"secondary",onClick:()=>(o(null),p(null),h([])),children:"All artifacts"}):null,a?c("span",{className:"min-w-0 flex-1 truncate font-medium",children:`${a}${u===e?"":" (another conversation's)"}`}):_(Se,{children:[c(K,{size:"sm",variant:k==="thread"?"default":"secondary",onClick:()=>R("thread"),children:"This conversation"}),c(K,{size:"sm",variant:k==="folders"?"default":"secondary",onClick:()=>R("folders"),children:"By folder"}),c("span",{className:"flex-1"})]}),c(K,{size:"sm",variant:"secondary",onClick:()=>y(P=>P+1),children:"Refresh"})]}),a?c(Dn,{threadId:u,name:a,shown:f,about:g,onChanged:()=>D(a,u),onNavigate:(P,G)=>{h(Y=>[...Y,{threadId:u,name:a}]),D(G,P)},onBack:d.length?()=>{let P=d.at(-1);h(G=>G.slice(0,-1)),D(P.name,P.threadId)}:null}):k==="folders"?t?.state==="ok"&&t.projectId?c(Jr,{projectId:t.projectId,attempt:v,open:null,onOpen:P=>(h([]),D(P.name,P.threadId)),onClose:()=>(o(null),p(null))}):c("p",{className:"p-3 text-sm text-muted-foreground",children:U??(t?"bb doesn't say which project this conversation is in, so there's no tree to show.":"Loading\u2026")}):U?c("p",{className:"p-3 text-sm text-muted-foreground",children:U}):c("ul",{className:"min-h-0 flex-1 overflow-auto",children:O.map(P=>c("li",{children:_("button",{type:"button",className:"flex w-full items-baseline gap-2 px-3 py-2 text-left text-sm hover:bg-muted",onClick:()=>(h([]),D(P.name)),children:[c("span",{className:`min-w-0 flex-1 truncate ${P.gone?"text-muted-foreground":""}`,children:P.name}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[P.gone?"file gone \xB7 ":"",Ks(P.size,P.modifiedAt)]})]})},P.name))})]})}function In({shown:e,onPageLink:s}){let[t,n]=E(null),[r,i]=E(null);z(()=>{n(null),i(null)},[e]);let a=ie(l=>{let d=Ns(l);n(d.kind==="outside"?d.url:null),d.kind==="page"&&s?(i(null),s(l).then(i,h=>i(`The link wasn't followed: ${h instanceof Error?h.message:String(h)}.`))):i(Mo(d))},[s]);if(!e)return c("p",{className:"p-3 text-sm text-muted-foreground",children:"Opening the page\u2026"});if(e.kind==="refused")return c("p",{className:"p-3 text-sm text-destructive",children:e.reason});let o=t?c($u,{url:t,onClose:()=>n(null)}):r?_("div",{className:"flex items-center gap-2 border-b bg-muted px-3 py-2 text-xs",role:"status",children:[c("span",{className:"min-w-0 flex-1",children:r}),c(K,{size:"sm",variant:"secondary",onClick:()=>i(null),children:"OK"})]}):null;if(e.kind==="markdown")return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,c("div",{className:"min-h-0 flex-1 overflow-auto p-4 text-sm leading-relaxed",children:e.blocks.map((l,d)=>ll(l,d,a))})]});let u="src"in e?e.src:e.srcDoc;return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,c(Gu,{frame:e,onLink:a},u)]})}function $u({url:e,onClose:s}){let[t,n]=E(!1);return _("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog","aria-label":"Open a link outside Orbit?",children:[c("span",{className:"font-medium",children:"Open a link outside Orbit?"}),c("code",{className:"break-all rounded bg-background px-1 py-0.5",children:e}),c("span",{className:"text-muted-foreground",children:"It opens in a new tab, with no referrer. The page can't see whether you open it."}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:s,children:"Cancel"}),c(K,{size:"sm",variant:"secondary",onClick:()=>{navigator.clipboard?.writeText(e).then(()=>n(!0),()=>{})},children:t?"Copied":"Copy address"}),c(K,{size:"sm",onClick:()=>(window.open(e,"_blank","noopener,noreferrer"),s()),children:"Open in new tab"})]})]})}var Vu=15e3;function Gu({frame:e,onLink:s}){let[t,n]=E(!1),[r,i]=E(!1),a=ce(null);return z(()=>{let o=setTimeout(()=>i(!0),Vu);return()=>clearTimeout(o)},[]),z(()=>{let o=u=>{let l=!!a.current?.contentWindow&&u.source===a.current.contentWindow,d=navigator.userActivation?.isActive??!0,h=Po(u.data,{ownFrame:l,activated:d});h!==null&&s(h)};return window.addEventListener("message",o),()=>window.removeEventListener("message",o)},[s]),_("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[c("iframe",{ref:a,className:"min-h-0 w-full flex-1 border-0 bg-white",style:{colorScheme:"light"},onLoad:()=>n(!0),...zo(e)}),t?null:c("p",{className:`absolute inset-x-0 top-0 bg-background p-3 text-sm ${r?"text-destructive":"text-muted-foreground"}`,children:r?"The page hasn't loaded. Refresh to try again.":"Loading the page\u2026"})]})}var Wu=["","text-xl","text-lg","text-base","text-sm","text-sm","text-sm"];function ll(e,s,t){switch(e.t){case"h":{let n=`h${e.level}`;return c(n,{className:`mb-2 mt-4 font-semibold first:mt-0 ${Wu[e.level]}`,children:je(e.c,t)},s)}case"p":return c("p",{className:"my-2",children:je(e.c,t)},s);case"ul":case"ol":{let n=e.t;return c(n,{className:`my-2 pl-5 ${e.t==="ul"?"list-disc":"list-decimal"}`,children:e.items.map((r,i)=>c("li",{children:je(r,t)},i))},s)}case"code":return c("pre",{className:"my-2 overflow-auto rounded bg-muted p-2 text-xs",children:c("code",{children:e.v})},s);case"quote":return c("blockquote",{className:"my-2 border-l-2 pl-3 text-muted-foreground",children:e.blocks.map((n,r)=>ll(n,r,t))},s);case"hr":return c("hr",{className:"my-4"},s);case"table":return c("div",{className:"my-2 overflow-auto",children:_("table",{className:"border-collapse text-xs",children:[c("thead",{children:c("tr",{children:e.head.map((n,r)=>c("th",{className:"border px-2 py-1 font-semibold",style:{textAlign:e.align[r]??"left"},children:je(n,t)},r))})}),c("tbody",{children:e.rows.map((n,r)=>c("tr",{children:n.map((i,a)=>c("td",{className:"border px-2 py-1",style:{textAlign:e.align[a]??"left"},children:je(i,t)},a))},r))})]})},s)}}function je(e,s){return e.map((t,n)=>{switch(t.t){case"text":return t.v;case"code":return c("code",{className:"rounded bg-muted px-1 text-xs",children:t.v},n);case"strong":return c("strong",{children:je(t.c,s)},n);case"em":return c("em",{children:je(t.c,s)},n);case"link":return c("a",{...Ns(t.href).kind==="outside"?{href:t.href,target:"_blank",rel:"noopener noreferrer"}:{role:"link",tabIndex:0},className:"cursor-pointer underline",onClick:r=>(r.preventDefault(),s(t.href)),onAuxClick:r=>(r.preventDefault(),s(t.href)),onKeyDown:r=>r.key==="Enter"&&(r.preventDefault(),s(t.href)),children:je(t.c,s)},n)}})}var cl="orbit.artifacts.view";function dl(e){let s=q(),t=q(),[n,r]=E(null),[i,a]=E(""),[o,u]=E(null),[l,d]=E(null),[h,f]=E(null),[p,g]=E(null),[w,v]=E(null),[y,k]=E(()=>Rn(Vt(),cl,["tree","threads"],"tree")),I=H=>{k(H),Ln(Vt(),cl,H)},[R,L]=E([]),[M,D]=E(null),[U,O]=E(null),[P,G]=E(null),[Y,se]=E(""),[le,j]=E(""),[Q,Z]=E(0),tt=H=>j(H instanceof Error?H.message:String(H));z(()=>{s.call("artifacts.projects",{}).then(H=>r(H.projects),tt)},[s,Q]),z(()=>{u(null),i&&(j(""),s.call("artifacts.threads",{projectId:i}).then(u,tt))},[s,i,Q]),z(()=>{f(null),l&&t.call("artifacts.list",{threadId:l.threadId}).then(f,tt)},[t,l,Q]);let st=ce(0),Ee=ie((H,Ie=l?.threadId)=>{if(!Ie)return;let wt=++st.current;g(H),v(Ie),O(null),G(null),t.call("artifacts.read",{threadId:Ie,name:H}).then(rt=>wt===st.current&&(O(Fn(rt)),G(rt.state==="ok"?Kn(rt.page):null)),rt=>wt===st.current&&O($t(rt)))},[t,l]);z(()=>{y==="threads"&&p&&w===l?.threadId&&h?.state==="ok"&&h.artifacts.some(H=>H.name===p)&&Ee(p)},[h]);let Vn=o?.state==="ok"?$o(o.threads,Y):[],nt=h?.state==="ok"?Vo(h.artifacts,Y):[];return _("div",{className:"flex h-full flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-sm",children:[c("span",{className:"font-medium",children:"Artifacts"}),y==="threads"?_("select",{"aria-label":"Project",className:"h-8 rounded border bg-background px-2 text-sm",value:i,onChange:H=>(a(H.target.value),d(null),g(null),O(null),L([])),children:[c("option",{value:"",children:n?"Choose a project":"Loading\u2026"}),n?.map(H=>c("option",{value:H.id,children:H.name},H.id))]}):null,c(K,{size:"sm",variant:y==="tree"?"default":"secondary",onClick:()=>(I("tree"),g(null),O(null),L([])),children:"By folder"}),c(K,{size:"sm",variant:y==="threads"?"default":"secondary",onClick:()=>(I("threads"),g(null),O(null),L([])),children:"By conversation"}),y==="threads"?c(re,{className:"h-8 max-w-64",placeholder:"Search by name",value:Y,onChange:H=>se(H.target.value)}):null,c("span",{className:"flex-1"}),c(K,{size:"sm",variant:"secondary",onClick:()=>Z(H=>H+1),children:"Refresh"})]}),le?_("p",{className:"px-3 py-2 text-sm text-destructive",children:["Couldn't reach the artifacts: ",le]}):null,_("div",{className:"flex min-h-0 flex-1",children:[y==="tree"?c("div",{className:"flex w-96 shrink-0 flex-col border-r",children:c(il,{projects:n??[],attempt:Q,open:M,onOpen:H=>{D(H.path),L([]),Ee(H.name,H.threadId)},onClose:()=>(D(null),g(null),O(null))})}):_(Se,{children:[c("div",{className:"flex w-80 shrink-0 flex-col overflow-auto border-r",children:i?o?o.state==="refused"?c("p",{className:"p-3 text-sm text-destructive",children:o.reason}):_(Se,{children:[c("ul",{children:Vn.map(H=>c("li",{children:_("button",{type:"button",className:`w-full px-3 py-2 text-left text-sm hover:bg-muted ${l?.threadId===H.threadId?"bg-muted":""}`,onClick:()=>(d(H),g(null),O(null),L([])),children:[c("span",{className:"block truncate font-medium",children:H.title}),_("span",{className:"block truncate text-xs text-muted-foreground",children:[H.status," \xB7 ",H.machine," \xB7 ",H.count," artifact",H.count===1?"":"s"," \xB7 newest ",vt(H.newestAt)]})]})},H.threadId))}),Go(o).map(H=>c("p",{className:"px-3 py-1 text-xs text-muted-foreground",children:H},H))]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Looking at the project's conversations\u2026"}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Choose a project to see its conversations that have artifacts."})}),c("div",{className:"flex w-72 shrink-0 flex-col overflow-auto border-r",children:l?h?zt(h)?c("p",{className:"p-3 text-sm text-muted-foreground",children:zt(h)}):c("ul",{children:nt.map(H=>c("li",{children:_("button",{type:"button",className:`flex w-full items-baseline gap-2 px-3 py-2 text-left text-sm hover:bg-muted ${p===H.name?"bg-muted":""}`,onClick:()=>(L([]),Ee(H.name)),children:[c("span",{className:`min-w-0 flex-1 truncate ${H.gone?"text-muted-foreground":""}`,children:H.name}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[H.gone?"file gone \xB7 ":"",Ks(H.size,H.modifiedAt)]})]})},H.name))}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Loading\u2026"}):null})]}),c("div",{className:"flex min-w-0 flex-1 flex-col",children:p&&w?c(Dn,{threadId:w,name:p,shown:U,about:P,onChanged:()=>Ee(p,w),onNavigate:(H,Ie)=>{L(wt=>[...wt,{threadId:w,name:p,path:M}]),D(null),Ee(Ie,H)},onBack:R.length?()=>{let H=R.at(-1);L(Ie=>Ie.slice(0,-1)),D(H.path),Ee(H.name,H.threadId)}:null}):null})]})]})}var ju=[{id:"never-ask",label:"Never ask",hint:"Runs everything policy.toml allows."},{id:"ask-changes",label:"Ask before changes",hint:"Reads run; changes ask."},{id:"always-ask",label:"Always ask",hint:"Reads ask too."},{id:"read-only",label:"Read only",hint:"Changes are refused."}],qu=[{minutes:null,label:"Wait for an answer"},{minutes:15,label:"Refuse after 15 minutes"},{minutes:60,label:"Refuse after 1 hour"},{minutes:1440,label:"Refuse after 1 day"}];function Zu(){let e=q(),[s,t]=E(null),[n,r]=E(null),i=ie(()=>{e.call("approvals.state",null).then(a=>{t(a),r(null)},a=>r(a instanceof Error?a.message:String(a)))},[e]);return z(i,[i]),Ce("approvals",i),{rpc:e,state:s,error:n,refetch:i}}function Yu({name:e,kind:s,settings:t,save:n}){let[r,i]=E(t.sensitive.join(", "));z(()=>i(t.sensitive.join(", ")),[t.sensitive]);let a=o=>{n({...t,...o})};return _("div",{className:"flex flex-col gap-2 border-b py-3 last:border-b-0",children:[_("div",{className:"flex items-baseline gap-2",children:[c("span",{className:"font-mono font-medium",children:e}),c("span",{className:"text-xs text-muted-foreground",children:s})]}),_("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[c("select",{className:"rounded-md border bg-background px-2 py-1",value:t.level,onChange:o=>a({level:o.target.value}),"aria-label":`${e}: when to ask`,children:ju.map(o=>_("option",{value:o.id,children:[o.label,": ",o.hint]},o.id))}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:t.expireMinutes??"",onChange:o=>a({expireMinutes:o.target.value?Number(o.target.value):null}),"aria-label":`${e}: unanswered approvals`,children:qu.map(o=>c("option",{value:o.minutes??"",children:o.label},o.label))})]}),_("form",{className:"flex items-center gap-2",onSubmit:o=>{o.preventDefault(),a({sensitive:r.split(",").map(u=>u.trim()).filter(Boolean)})},children:[c(re,{value:r,onChange:o=>i(o.target.value),placeholder:"Sensitive: ask every time, e.g. sudo, delete namespace","aria-label":`${e}: sensitive commands`}),c(K,{size:"sm",type:"submit",variant:"secondary",children:"Save"})]})]})}function ul(){let{rpc:e,state:s,error:t,refetch:n}=Zu(),[r,i]=E(null);return t?c("p",{className:"text-sm text-destructive",children:t}):s?_("div",{className:"flex flex-col gap-6 text-sm",children:[_("section",{children:[c("h3",{className:"font-medium",children:"Standing decisions"}),c("p",{children:"Permissions you gave once in Orbit. Taking one back stops future uses. Work already authorized may finish."}),r&&c("p",{role:"alert",children:r}),s.standing.map(a=>_("div",{className:"space-y-2 border-b py-3",children:[c("p",{children:a.description}),_("p",{children:[a.station," \xB7"," ",a.revoked?"Taken back":a.expired?"Expired":a.expiresAt?`Until ${new Date(a.expiresAt).toLocaleString()}`:"No time limit"]}),!a.revoked&&c(K,{variant:"outline",onClick:()=>{e.call("approvals.requestStandingRevoke",{id:a.id}).then(o=>{i(o.decision==="deny"?o.reason??"The question could not be opened.":null),n()}).catch(()=>i("The question could not be opened. Try again."))},children:"Take this permission back"})]},a.id)),c("pre",{className:"whitespace-pre-wrap",children:s.standingSummary})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"When Orbit asks"}),_("p",{className:"mb-2 text-xs text-muted-foreground",children:["For each capability in policy.toml. Commands policy.toml calls ",c("i",{children:"never"})," are refused whatever the level, and so is anything that would show a credential."]}),s.capabilities.length===0&&c("p",{className:"text-muted-foreground",children:"No capabilities in policy.toml."}),s.capabilities.map(a=>c(Yu,{name:a.name,kind:a.kind,settings:a.settings,save:async o=>{await e.call("approvals.setCapability",{name:a.name,settings:o}),n()}},a.name))]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Always allowed"}),s.grants.length===0?c("p",{className:"text-muted-foreground",children:'Nothing yet. "Always allow" on an approval adds the exact command here.'}):c("ul",{className:"divide-y",children:s.grants.map(a=>_("li",{className:"flex items-center gap-2 py-2",children:[c("span",{className:"font-mono text-xs",children:a.capability}),c("code",{className:"flex-1 break-all text-xs",children:a.command}),c(K,{size:"sm",variant:"ghost",onClick:()=>{e.call("approvals.revokeGrant",{id:a.id}).then(n)},children:"Revoke"})]},a.id))})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Recent activity"}),s.log.length===0?c("p",{className:"text-muted-foreground",children:"No requests yet."}):c("ul",{className:"divide-y text-xs",children:s.log.map((a,o)=>_("li",{className:"flex gap-2 py-1.5",children:[c("span",{className:"w-32 shrink-0 text-muted-foreground",children:new Date(a.at).toLocaleString()}),c("span",{className:a.decision==="allow"?"w-12 shrink-0":"w-12 shrink-0 text-destructive",children:a.decision}),c("span",{className:"w-12 shrink-0 font-mono",children:a.capability}),c("code",{className:"flex-1 break-all",children:a.command}),c("span",{className:"shrink-0 text-muted-foreground",children:a.how})]},o))})]})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}var hl=/[A-Za-z0-9_-]/,ei=/[A-Za-z0-9_+\-.:]/,Ju=/^\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|x[0-9A-Fa-f]{2}|[btnfre"\\])/,eh=/^\\[ \t]*(?:\r?\n)/,th=/^[+-]?(?:inf|nan|0x[0-9A-Fa-f_]+|0o[0-7_]+|0b[01_]+|\d[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?[\d_]+)?)$/,sh=/^(?:\d{4}-\d{2}-\d{2}(?:[Tt ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)?|\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)(?:[Zz]|[+-]\d{2}:\d{2})?$/;function fl(e){let s=[],t=(d,h)=>{if(!h)return;let f=s[s.length-1];f&&f.kind===d&&d!=="punctuation"?f.text+=h:s.push({kind:d,text:h})},n="key",r=[],i=0,a=d=>{let h=e[i],f=e.startsWith(h.repeat(3),i),p=f?h.repeat(3):h,g=h==='"',w=i+p.length,v=i;for(;w<e.length&&!(!f&&(e[w]===`
|
|
54
|
-
`||e[w]==="\r"));){if(
|
|
51
|
+
`),t=[],s=0,r=i=>/^\s{0,3}(#{1,6}\s|```|~~~|>|([-*+]|\d{1,9}[.)])\s|(\*\s*){3,}$|(-\s*){3,}$|(_\s*){3,}$)/.test(i);for(;s<n.length;){let i=n[s],a;if(!i.trim())s++;else if(a=/^\s{0,3}(```|~~~)/.exec(i)){let o=a[1],u=[];for(s++;s<n.length&&!n[s].trimStart().startsWith(o);)u.push(n[s++]);s++,t.push({t:"code",v:u.join(`
|
|
52
|
+
`)})}else if(Jo(i)){let o=Jo(i);t.push({t:"h",level:o.level,c:We(o.text)}),s++}else if(/^\s{0,3}((\*\s*){3,}|(-\s*){3,}|(_\s*){3,})$/.test(i))t.push({t:"hr"}),s++;else if(/^\s{0,3}>/.test(i)){let o=[];for(;s<n.length&&/^\s{0,3}>/.test(n[s]);)o.push(n[s++].replace(/^\s{0,3}>\s?/,""));t.push({t:"quote",blocks:ei(o.join(`
|
|
53
|
+
`))})}else if(a=/^\s{0,3}([-*+]|\d{1,9}[.)])\s+/.exec(i)){let o=/\d/.test(a[1]),u=o?/^\s{0,3}\d{1,9}[.)]\s+(.*)$/:/^\s{0,3}[-*+]\s+(.*)$/,l=[];for(;s<n.length&&n[s].trim();){let d=u.exec(n[s]);if(d)l.push(d[1]);else if(l.length&&!r(n[s]))l[l.length-1]+=` ${n[s].trim().replace(/^([-*+]|\d{1,9}[.)])\s+/,"")}`;else break;s++}t.push({t:o?"ol":"ul",items:l.map(We)})}else if(i.includes("|")&&s+1<n.length&&el.test(n[s+1])){let o=Jr(i),u=Jr(n[s+1]).map(d=>d.startsWith(":")&&d.endsWith(":")?"center":d.endsWith(":")?"right":d.startsWith(":")?"left":null);s+=2;let l=[];for(;s<n.length&&n[s].trim()&&n[s].includes("|");){let d=Jr(n[s++]);l.push(o.map((h,f)=>We(d[f]??"")))}t.push({t:"table",align:o.map((d,h)=>u[h]??null),head:o.map(We),rows:l})}else{let o=[];for(;s<n.length&&n[s].trim()&&!r(n[s])&&!(n[s].includes("|")&&s+1<n.length&&el.test(n[s+1]));)o.push(n[s++].trim());o.length||o.push(n[s++].trim()),t.push({t:"p",c:We(o.join(" "))})}}return t}function zt(e){switch(e.state){case"offline":return`${e.machine??"This conversation's machine"} is offline, so this conversation's artifacts can't be read. Refresh once it's back.`;case"refused":return`Couldn't list the artifacts: ${e.reason}.`;case"ok":return e.artifacts.length?null:"This conversation has no artifacts yet. When it shows a page in its chat, the page appears here too."}}function In(e){let n=$o(e.kind,e.content);return n?{kind:"refused",reason:n}:e.kind==="md"?{kind:"markdown",blocks:ei(Yo(e.content))}:e.previewUrl?{kind:"frame",src:e.previewUrl}:{kind:"frame",srcDoc:Go(e.content)}}function Fs(e){return e.state==="ok"?In(e.page):{kind:"refused",reason:e.state==="refused"?e.reason:zt(e)??""}}function $t(e){return{kind:"refused",reason:`Couldn't open the page: ${e instanceof Error?e.message:String(e)}`}}function tl(e){let n={title:"Page",sandbox:"allow-scripts",referrerPolicy:"no-referrer",allow:""};return"src"in e?{...n,src:e.src}:{...n,csp:Zr,srcDoc:e.srcDoc}}function Dn(e,n,t=Date.now()){return`${e<1024?`${e} B`:`${Math.round(e/1024)} KB`} \xB7 ${vt(n,t)}`}function vt(e,n=Date.now()){let t=Math.max(0,Math.round((n-e)/6e4));return t<1?"just now":t<60?`${t} min ago`:t<2880?`${Math.round(t/60)} h ago`:new Date(e).toLocaleDateString()}function nl(e,n){let t=n.trim().toLowerCase();return t?e.filter(s=>s.title.toLowerCase().includes(t)||s.names.some(r=>r.toLowerCase().includes(t))):e}function sl(e,n){let t=n.trim().toLowerCase();return t?e.filter(s=>s.name.toLowerCase().includes(t)):e}function rl(e){let n=[];e.threads.length||n.push("No conversation in this project has artifacts yet.");for(let t of e.offline)n.push(`${t.machine} is offline: ${t.threads} conversation${t.threads===1?"":"s"} there not looked at. Refresh once it's back.`);return e.unlisted&&n.push(`${e.unlisted} conversation${e.unlisted===1?"'s":"s'"} artifacts couldn't be listed.`),e.truncated&&n.push("Only the most recently updated conversations were looked at."),n}function il(e,n){let t=e.by==="owner"?"you":e.by===n?"this conversation":e.by,s=e.source==="restore"?`${t}, restored v${e.restoredFrom}`:t,r=new Date(e.at).toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"});return`v${e.n} \xB7 ${r} \xB7 ${s} \xB7 ${Dn(e.size,e.at).split(" \xB7 ")[0]}`}function Rs(e){return e.versionsError?`Versions aren't available (${e.versionsError}): this is the conversation's file as it is now.`:e.pinned!==void 0?`Pinned to v${e.pinned}: shown until it's unpinned (History), whatever the conversation writes next.${e.gone?" The conversation's file is gone.":""}`:e.gone?`The conversation's file is gone; this is the last version kept${e.version?` (v${e.version})`:""}.`:e.restoredFrom!==void 0?`v${e.version}, restored from v${e.restoredFrom}. The conversation's own file is unchanged.`:e.version?`v${e.version}`:null}function al(e,n){let t={kind:"folder",path:"",label:"",children:[]},s=new Map([["",t]]),r=new Map(n.filter(o=>o.threadTitle).map(o=>[`threads/${o.threadId}`,o.threadTitle])),i=o=>{let u=s.get(o);if(u)return u;let l=o.lastIndexOf("/"),d=i(l<0?"":o.slice(0,l)),h=o.slice(l+1),f={kind:"folder",path:o,label:r.get(o)??h,children:[]};return d.children.push(f),s.set(o,f),f};for(let o of e)i(o);for(let o of n){let u=o.path.lastIndexOf("/");i(u<0?"":o.path.slice(0,u)).children.push({kind:"page",path:o.path,label:o.path.slice(u+1),page:o})}let a=o=>{o.sort((u,l)=>u.kind===l.kind?u.label.localeCompare(l.label):u.kind==="folder"?-1:1);for(let u of o)u.kind==="folder"&&a(u.children)};return a(t.children),t.children}function ti(e,n){return["",...e.filter(t=>t!=="threads"&&!t.startsWith("threads/"))]}function ol(e){switch(e.state){case"page":return null;case"deleted":return`That page (${e.path}) was deleted from the tree on ${new Date(e.at).toLocaleDateString()}. The Tree view's Deleted list can restore it.`;case"missing":return`There's no page at ${e.path} in this project's tree.`;case"refused":return`The link wasn't followed: ${e.reason}.`}}function Ls(e,n,t,s){try{let r=e?.getItem(n);return r&&t.includes(r)?r:s}catch{return s}}function Is(e,n,t){try{e?.setItem(n,t)}catch{}}function ll(e,n){let t=new Set(n.pages.map(r=>`${r.threadId}/${r.name}`)),s=new Set(n.deleted.map(r=>r.name));return e.filter(r=>!t.has(`${r.threadId}/${r.name}`)&&!s.has(r.name))}function Vt(){try{return globalThis.localStorage??null}catch{return null}}function Ps({threadId:e,name:n,shown:t,about:s,onChanged:r,onNavigate:i,onBack:a}){let o=q(),[u,l]=E("page");z(()=>l("page"),[e,n]);let d=ce(0);z(()=>{d.current++},[e,n]);let h=re(async p=>{let x=++d.current,w=await o.call("artifacts.follow",{threadId:e,name:n,href:p});return x!==d.current?null:(w.state==="page"&&i(w.threadId,w.name),ol(w))},[o,e,n,i]),f=p=>l(x=>x===p?"page":p);return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs text-muted-foreground",children:[a?c(F,{size:"sm",variant:"secondary",onClick:a,children:"Back"}):null,c("span",{className:"min-w-0 flex-1 truncate",children:u==="history"?`History of ${n}`:u==="links"?`Links of ${n}`:s??""}),c(F,{size:"sm",variant:u==="links"?"default":"secondary",onClick:()=>f("links"),children:u==="links"?"Back to the page":"Links"}),c(F,{size:"sm",variant:u==="history"?"default":"secondary",onClick:()=>f("history"),children:u==="history"?"Back to the page":"History"})]}),u==="history"?c($u,{threadId:e,name:n,onRestored:()=>{l("page"),r()}}):u==="links"?c(zu,{threadId:e,name:n,onNavigate:i}):c(Ds,{shown:t,onPageLink:h})]})}var Uu={page:"",deleted:"deleted",missing:"broken: no such page",refused:"not followed",outside:"outside Orbit"};function zu({threadId:e,name:n,onNavigate:t}){let s=q(),[r,i]=E(null),[a,o]=E("");if(z(()=>{let l=!0;return i(null),s.call("artifacts.links",{threadId:e,name:n}).then(d=>l&&i(d),d=>l&&o(d instanceof Error?d.message:String(d))),()=>{l=!1}},[s,e,n]),!r)return c("p",{className:`p-3 text-sm ${a?"text-destructive":"text-muted-foreground"}`,children:a||"Reading its links\u2026"});let u=r.out.filter(l=>l.state==="missing"||l.state==="deleted").length;return _("div",{className:"min-h-0 flex-1 overflow-auto p-3 text-sm",children:[r.path?c("p",{className:"mb-2 text-xs text-muted-foreground",children:r.path}):c("p",{className:"mb-2 text-xs text-muted-foreground",children:"Not in a project's tree yet."}),_("h3",{className:"mb-1 font-medium",children:["Linked from (",r.from.length,")"]}),r.from.length?c("ul",{className:"mb-3",children:r.from.map(l=>c("li",{children:c("button",{type:"button",className:"underline",onClick:()=>t(l.threadId,l.name),children:l.path})},l.path))}):c("p",{className:"mb-3 text-xs text-muted-foreground",children:"No page in this project links here."}),_("h3",{className:"mb-1 font-medium",children:["Links on this page (",r.out.length,")",u?`, ${u} broken`:""]}),r.out.length?c("ul",{children:r.out.map(l=>_("li",{className:"flex gap-2 text-xs",children:[_("span",{className:"min-w-0 flex-1 truncate",children:[l.href,l.path&&l.path!==l.href?` \u2192 ${l.path}`:""]}),c("span",{className:l.state==="missing"||l.state==="deleted"?"text-destructive":"text-muted-foreground",children:Uu[l.state]})]},l.href))}):c("p",{className:"text-xs text-muted-foreground",children:"This page has no links."}),u?c("p",{className:"mt-2 text-xs text-muted-foreground",children:"Only the page's conversation can fix a broken link (by rewriting the page)."}):null]})}function $u({threadId:e,name:n,onRestored:t}){let s=q(),[r,i]=E(null),[a,o]=E(""),[u,l]=E(null),[d,h]=E("page"),[f,p]=E(null),[x,w]=E(null),[b,y]=E(null),[k,I]=E(!1),[R,L]=E(null),[M,D]=E(0),U=j=>o(j instanceof Error?j.message:String(j));z(()=>o(""),[e,n]),z(()=>{let j=!0;return s.call("artifacts.history",{threadId:e,name:n}).then(Q=>{if(j){if(Q.state==="refused")return o(Q.reason);i(Q),l(Z=>Z!==null&&Q.versions.some(tt=>tt.n===Z)?Z:Q.versions[0]?.n??null)}},Q=>j&&U(Q)),()=>{j=!1}},[s,e,n,M]);let O=r?.versions[0]?.n??null,P=re(async j=>{let Q=await s.call("artifacts.version",{threadId:e,name:n,n:j});if(Q.state==="refused")throw new Error(Q.reason);return Q.page},[s,e,n]),G=d==="compare"&&u!==O;z(()=>{let j=!0;return p(null),w(null),y(null),u!==null&&!G?P(u).then(Q=>j&&p(In({kind:Q.kind,content:Q.content})),Q=>j&&p($t(Q))):u!==null&&O!==null&&Promise.all([P(u),P(O)]).then(([Q,Z])=>{j&&(w(Zo(Q.kind,Q.content,Z.content)),y([In({kind:Q.kind,content:Q.content}),In({kind:Z.kind,content:Z.content})]))},Q=>j&&U(Q)),()=>{j=!1}},[u,G,O,P]);let Y=async j=>{if(O===null)return;let Q=await s.call("artifacts.pin",{threadId:e,name:n,n:j,latest:O});Q.state==="refused"?(o(Q.reason),D(Z=>Z+1)):t()},ne=async()=>{if(!R||O===null)return;let j=R.what==="restore"?await s.call("artifacts.restore",{threadId:e,name:n,n:R.n,latest:O}):await s.call("artifacts.forget",{threadId:e,name:n,n:R.n,latest:O});L(null),j.state==="refused"?(o(j.reason),D(Q=>Q+1)):R.what==="restore"?t():D(Q=>Q+1)};if(!r)return c("p",{className:`p-3 text-sm ${a?"text-destructive":"text-muted-foreground"}`,children:a||"Loading the history\u2026"});let le=u===O;return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[c("ul",{className:"max-h-[40%] shrink-0 overflow-auto border-b",children:r.versions.map(j=>c("li",{children:_("button",{type:"button","aria-pressed":j.n===u,className:`flex w-full items-baseline gap-2 px-3 py-1.5 text-left text-xs hover:bg-muted ${j.n===u?"bg-muted font-medium":""}`,onClick:()=>l(j.n),children:[c("span",{className:"min-w-0 flex-1 truncate",children:il(j,e)}),j.n===r.pinned?c("span",{className:"shrink-0 font-medium",children:"pinned"}):null,j.n===O?c("span",{className:"shrink-0 text-muted-foreground",children:"latest"}):null,j.n===r.fileVersion&&!r.fileGone?c("span",{className:"shrink-0 text-muted-foreground",children:"the file now"}):null]})},j.n))}),a?c("p",{className:"px-3 py-1.5 text-xs text-destructive",children:a}):null,R?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[c("span",{children:R.what==="restore"?`Restore v${R.n}? It becomes v${(O??0)+1}, the latest, with v${R.n}'s content. The conversation's own file isn't changed, and every version stays.`:`Delete v${R.n} for good? Its content can't be brought back.`}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>L(null),children:"Cancel"}),c(F,{size:"sm",variant:R.what==="forget"?"destructive":"default",onClick:()=>{ne().catch(U)},children:R.what==="restore"?"Restore":"Delete"})]})]}):u!==null?_("div",{className:"flex flex-wrap items-center gap-2 border-b px-3 py-1.5 text-xs",children:[c(F,{size:"sm",variant:G?"secondary":"default",onClick:()=>h("page"),children:"View"}),c(F,{size:"sm",variant:G?"default":"secondary",disabled:le,onClick:()=>h("compare"),children:"Compare with latest"}),c("span",{className:"flex-1"}),r.pinned!==null?_(F,{size:"sm",variant:"secondary",onClick:()=>{Y(null).catch(U)},children:["Unpin v",r.pinned]}):null,r.pinned!==u?c(F,{size:"sm",variant:"secondary",onClick:()=>{Y(u).catch(U)},children:"Pin this version"}):null,c(F,{size:"sm",variant:"secondary",disabled:le,onClick:()=>L({what:"restore",n:u}),children:"Restore\u2026"}),c(F,{size:"sm",variant:"secondary",disabled:le||u===r.pinned,onClick:()=>L({what:"forget",n:u}),children:"Delete\u2026"})]}):null,G?_("div",{className:"flex min-h-0 flex-1 flex-col",children:[_("div",{className:"flex gap-2 border-b px-3 py-1.5 text-xs",children:[c(F,{size:"sm",variant:k?"default":"secondary",onClick:()=>I(!0),children:"Drawn"}),c(F,{size:"sm",variant:k?"secondary":"default",onClick:()=>I(!1),children:"Source"})]}),k?c("div",{className:"flex min-h-0 flex-1",children:b?b.map((j,Q)=>_("div",{className:"flex min-w-0 flex-1 flex-col border-r",children:[_("p",{className:"border-b px-3 py-1 text-xs text-muted-foreground",children:["v",Q===0?u:O]}),c(Ds,{shown:j})]},Q)):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Comparing\u2026"})}):c(Wu,{diff:x,older:u,newer:O})]}):c(Ds,{shown:f})]})}var Vu={same:" ",add:"+",del:"-"},Gu={same:"",add:"bg-green-500/15",del:"bg-red-500/15"};function Wu({diff:e,older:n,newer:t}){return e?e.state==="too-big"?_("p",{className:"p-3 text-sm text-muted-foreground",children:["These versions differ too much to compare line by line (",e.lines[0]," and ",e.lines[1]," lines). View each instead."]}):_("div",{className:"min-h-0 flex-1 overflow-auto font-mono text-xs",children:[_("p",{className:"px-3 py-1.5 font-sans text-muted-foreground",children:["v",n," \u2192 v",t,": ",e.added," line",e.added===1?"":"s"," added, ",e.removed," removed",e.hunks.length?"":" (the same source)"]}),e.hunks.map((s,r)=>_("div",{children:[s.skippedBefore?_("p",{className:"px-3 py-0.5 font-sans text-muted-foreground",children:["\u2026 ",s.skippedBefore," unchanged lines"]}):null,s.lines.map((i,a)=>_("pre",{className:`whitespace-pre-wrap break-all px-3 ${Gu[i.t]}`,children:[Vu[i.t]," ",i.text]},a))]},r)),e.skippedAfter&&e.hunks.length?_("p",{className:"px-3 py-0.5 font-sans text-muted-foreground",children:["\u2026 ",e.skippedAfter," unchanged lines"]}):null]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Comparing\u2026"})}var Pn=e=>e?`${e}/`:"the project's root";function ni(e,n,t){let s=l=>({kind:"no",label:`Can't move here: ${l}`,reason:l}),r=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"";if(n===r)return s("it's already here");if(!ti(t.folders,e).includes(n))return s(n==="threads"||n.startsWith("threads/")?"that's an old thread folder, not one you made":"that isn't a folder");let i=e.path.slice(e.path.lastIndexOf("/")+1),a=new Set([...t.pages,...t.folders,...t.held.filter(l=>l.to!==e.path).map(l=>l.path)]),o=l=>n?`${n}/${l}`:l,u=o(i);if(a.has(u)){let l=2,d=h=>o(`${i.slice(0,Math.min(64,240-n.length-1)-`-${h}`.length)}-${h}`);for(;a.has(d(l));)l++;return u=d(l),Ks(u)?s("a page there already has this name, and no other name fits"):{kind:"ask",to:u,clash:!0,label:`Move to ${Pn(n)}: asks first`,question:`${Pn(n)} already has ${i} (a page, or an old path kept for links). Keep both, with this one as ${u.slice(u.lastIndexOf("/")+1)}?`}}return{kind:"ok",to:u,label:`Move to ${Pn(n)}`}}var qu=6,cl=400,Zu=700;function dl(e,n){let t=e.ownerDocument,s=t.defaultView,r=n.at??((L,M)=>t.elementFromPoint(L,M)),i=null,a=!1,o=null,u=null,l=null,d=null,h=()=>{u?.removeAttribute("data-drop"),u=null},f=()=>{i=null,a=!1,o?.remove(),o=null,h(),l?.timer&&clearTimeout(l.timer),l=null,d=null,e.removeAttribute("data-dragging")},p=L=>{for(let M=L;M&&e.contains(M);M=M.parentElement){let D=n.folderOf(M);if(D!==null)return{el:M,folder:D}}return null},x=L=>{if(i&&f(),!(L.button!==0||!(L.target instanceof s.Element)))for(let M=L.target;M&&e.contains(M);M=M.parentElement){let D=n.pageOf(M);if(D!==null){i={page:D,x:L.clientX,y:L.clientY,id:L.pointerId,touch:L.pointerType==="touch",at:Date.now()};return}}},w=L=>{if(!i||L.pointerId!==i.id)return;if(L.buttons===0)return f();if(!a){if(Math.hypot(L.clientX-i.x,L.clientY-i.y)<qu)return;if(i.touch&&Date.now()-i.at<cl)return void(i=null);a=!0;try{e.setPointerCapture?.(i.id)}catch{}e.setAttribute("data-dragging","true"),o=t.createElement("div"),o.setAttribute("data-drag-label",""),o.setAttribute("role","status"),o.style.cssText="position:fixed;pointer-events:none;z-index:50;padding:2px 8px;border-radius:6px;font-size:12px;background:var(--foreground,#111);color:var(--background,#fff)",t.body.append(o)}L.preventDefault(),o.style.left=`${L.clientX+12}px`,o.style.top=`${L.clientY+12}px`;let M=p(r(L.clientX,L.clientY));if(!M){h(),d=null,o.textContent="Not a folder: dropping here moves nothing",l?.timer&&clearTimeout(l.timer),l=null;return}let D=n.verdict(i.page,M.folder);if(d={folder:M.folder,verdict:D},o.textContent=D.label,u!==M.el&&h(),u=M.el,u.setAttribute("data-drop",D.kind),l?.folder!==M.folder){l?.timer&&clearTimeout(l.timer);let U=M.folder;l={folder:U,since:Date.now(),timer:n.closed(U)?setTimeout(()=>n.open(U),Zu):null}}},b=L=>{if(!i||L.pointerId!==i.id)return;let M=a?{page:i.page,current:d}:null;if(f(),!M)return;let D=U=>(U.stopPropagation(),U.preventDefault());e.addEventListener("click",D,{capture:!0,once:!0}),setTimeout(()=>e.removeEventListener("click",D,{capture:!0}),0),M.current&&M.current.verdict.kind!=="no"&&n.drop(M.page,M.current.folder,M.current.verdict)},y=L=>{L.key==="Escape"&&i&&(f(),L.preventDefault())},k=L=>i&&L.pointerId===i.id&&f(),I=()=>i&&f(),R=L=>i?.touch&&Date.now()-i.at>=cl&&L.preventDefault();return e.addEventListener("pointerdown",x),s.addEventListener("pointermove",w),s.addEventListener("pointerup",b),s.addEventListener("pointercancel",k),s.addEventListener("keydown",y),s.addEventListener("blur",I),e.addEventListener("lostpointercapture",I),e.addEventListener("touchmove",R,{passive:!1}),()=>{s.removeEventListener("blur",I),e.removeEventListener("lostpointercapture",I),e.removeEventListener("touchmove",R),f(),e.removeEventListener("pointerdown",x),s.removeEventListener("pointermove",w),s.removeEventListener("pointerup",b),s.removeEventListener("pointercancel",k),s.removeEventListener("keydown",y)}}function ul(e,n,t){let s=l=>({kind:"no",label:`Can't move here: ${l}`,reason:l}),r=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";if(n===r)return s("it's already here");if(n===e||n.startsWith(`${e}/`))return s("a folder can't go inside itself");if(n==="threads"||n.startsWith("threads/"))return s("that's an old thread folder, not one you made");if(n&&!t.folders.includes(n))return s("that isn't a folder");let i=e.slice(e.lastIndexOf("/")+1),a=n?`${n}/${i}`:i;if([...t.pages,...t.folders,...t.held.map(l=>l.path)].some(l=>l===a||l.startsWith(`${a}/`)))return s(`${a} is already taken`);if(Ks(a))return s(`${a} isn't a path that fits`);let u=t.pages.filter(l=>l.startsWith(`${e}/`)).length;return{kind:"ask",to:a,clash:!1,label:`Move to ${Pn(n)}: asks first`,question:`Move the folder ${e} and the ${u} page${u===1?"":"s"} in it into ${Pn(n)}? Their old paths will lead to them.`}}function hl(e,n){return ti(n.folders,e).map(t=>{let s=ni(e,t,n);return s.kind==="ok"?{folder:t,mark:"allowed"}:s.kind==="ask"?{folder:t,mark:"asks first"}:s.reason==="it's already here"?{folder:t,mark:"here now"}:{folder:t,mark:"not allowed",reason:s.reason}})}var fl="text-sm max-md:pointer-coarse:text-base";var pl="h-[28px] w-[28px] rounded-md p-0 max-md:pointer-coarse:h-[36px] max-md:pointer-coarse:w-[36px]",cx=`${pl} [&_[data-icon-root]]:size-[16px] max-md:pointer-coarse:[&_[data-icon-root]]:size-[20px]`,dx=`${pl} [&_[data-icon-root]]:size-[13px] max-md:pointer-coarse:[&_[data-icon-root]]:size-[16px]`;var _l="h-9 max-md:pointer-coarse:h-10";var ie=it(({className:e,type:n,...t},s)=>c("input",{type:n,autoComplete:"off",className:At(`flex w-full rounded-md border border-input bg-transparent pl-3 pr-3 py-1 ${Vn} file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,_l,fl,e),ref:s,...t}));ie.displayName="Input";var Ms=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",si=e=>e!=="threads"&&!e.startsWith("threads/"),je="folder:",Yu=8e3,ri="data-[drop=ok]:outline data-[drop=ok]:outline-2 data-[drop=ok]:outline-green-600 data-[drop=ask]:outline data-[drop=ask]:outline-2 data-[drop=ask]:outline-amber-500 data-[drop=no]:outline data-[drop=no]:outline-2 data-[drop=no]:outline-red-600";function ii({projectId:e,attempt:n,open:t,onOpen:s,onClose:r}){let i=q(),a=q(),[o,u]=E(!1),[l,d]=E([]),[h,f]=E(null),[p,x]=E(""),[w,b]=E(new Set),[y,k]=E(null),[I,R]=E(0),[L,M]=E(null),[D,U]=E(null),[O,P]=E(null),[G,Y]=E(null),[ne,le]=E(null),[j,Q]=E(""),[Z,tt]=E(""),nt=ce(null),Ee=ce(null);Ee.current=h,z(()=>{let v=!0;return f(B=>B?.projectId===e?B:null),i.call("artifacts.tree",{projectId:e}).then(B=>v&&(B.state==="ok"?f({...B,projectId:e}):x(B.reason)),B=>v&&x(B instanceof Error?B.message:String(B))),()=>{v=!1}},[i,e,n,I]),z(()=>{let v=!0;return u(!0),d([]),a.call("artifacts.sync",{projectId:e}).then(B=>{v&&(u(!1),B.state==="ok"&&d(B.listed),R($=>$+1))},()=>v&&u(!1)),()=>{v=!1}},[a,e,n]);let Gs=async()=>{if(y===null||!h)return;let v=await i.call("artifacts.mkdir",{projectId:h.projectId,path:y.trim(),seq:h.seq});if(v.state==="refused")return x(`Couldn't make the folder: ${v.reason}.`),R(B=>B+1);k(null),R(B=>B+1)};z(()=>x(""),[e,n]);let st=(v,B)=>(B.state==="refused"?x(`Couldn't ${v}: ${B.reason}.`):x(""),M(null),R($=>$+1),B.state==="ok"),H=h?.pages.find(v=>v.path===t)??null,De=async v=>{if(!h||!H)return;let B=v.folder?`${v.folder}/${v.name.trim()}`:v.name.trim(),$=await i.call("artifacts.move",{projectId:h.projectId,from:v.from,to:B,seq:v.seq});st("move it",$)&&s({...H,path:B})},wt=async v=>{h&&st("delete it",await i.call("artifacts.remove",{projectId:h.projectId,path:v.from,seq:v.seq}))&&r()},rt=async v=>{if(!h)return;let B=Ms(v.path),$=B?`${B}/${v.name.trim()}`:v.name.trim();st("rename the folder",await i.call("artifacts.move-folder",{projectId:h.projectId,from:v.path,to:$,seq:v.seq}))&&U(null)},tc=async v=>{h&&st("delete the folder",await i.call("artifacts.remove-folder",{projectId:h.projectId,path:v.path,seq:v.seq}))&&U(null)},nc=async v=>{h&&st("restore it",await i.call("artifacts.undelete",{projectId:h.projectId,path:v,seq:h.seq}))};z(()=>M(null),[t]),z(()=>{Y(null),P(null),le(null)},[e]),z(()=>{if(!ne)return;let v=setTimeout(()=>le(null),Yu);return()=>clearTimeout(v)},[ne]);let Ws=v=>({folders:v.folders,pages:v.pages.map(B=>B.path),held:[...v.moved.map(B=>({path:B.path,to:B.to})),...v.deleted.map(B=>({path:B.path}))]}),hi=(v,B)=>{let $=Ee.current;if(!$)return{kind:"no",label:"Can't move here: the tree changed; look again",reason:"the tree changed"};if(v.startsWith(je))return ul(v.slice(je.length),B,Ws($));let be=$.pages.find(kt=>kt.path===v);return be?ni(be,B,Ws($)):{kind:"no",label:"Can't move here: the tree changed; look again",reason:"the tree changed"}},fi=async(v,B,$)=>{let be=Ee.current;if(!be)return;if(v.startsWith(je)){let Pe=v.slice(je.length),Gt=await i.call("artifacts.move-folder",{projectId:be.projectId,from:Pe,to:B,seq:$});if(P(null),Y(null),Gt.state==="refused")Q(`Not moved: ${Gt.reason}.`),x(`Couldn't move it: ${Gt.reason}.`);else{Q(`Moved the folder ${Pe} to ${B}.`);let Wt=t?.startsWith(`${Pe}/`)?be.pages.find(ac=>ac.path===t):void 0;Wt&&s({...Wt,path:`${B}${Wt.path.slice(Pe.length)}`})}return R(Wt=>Wt+1)}let kt=await i.call("artifacts.move",{projectId:be.projectId,from:v,to:B,seq:$});if(P(null),Y(null),kt.state==="refused")Q(`Not moved: ${kt.reason}.`),x(`Couldn't move it: ${kt.reason}.`);else{Q(`Moved ${v} to ${B}.`),le({from:B,to:v,seq:kt.seq});let Pe=be.pages.find(Gt=>Gt.path===v);Pe&&t===v&&s({...Pe,path:B})}R(Pe=>Pe+1)},js=(v,B)=>{let $=Ee.current?.seq??0;B.kind==="ok"?fi(v,B.to,$).catch(be=>x(String(be))):B.kind==="ask"?P({from:v,to:B.to,question:B.question,seq:$}):Q(B.label)},sc=async()=>{let v=Ee.current;if(!v||!ne)return;let B=await i.call("artifacts.undo-move",{projectId:v.projectId,from:ne.from,to:ne.to,seq:ne.seq});if(le(null),B.state==="refused")x(`Couldn't undo it: ${B.reason}.`);else{Q(`Moved back to ${ne.to}.`);let $=v.pages.find(be=>be.path===ne.from);$&&t===ne.from&&s({...$,path:ne.to})}R($=>$+1)},pi=ce(js);pi.current=js;let _i=ce(w);_i.current=w;let rc=!!h&&h.pages.length+h.folders.length>0;z(()=>{if(nt.current)return dl(nt.current,{pageOf:v=>v.getAttribute("data-page"),folderOf:v=>v.getAttribute("data-folder"),verdict:hi,closed:v=>_i.current.has(v),open:v=>b(B=>{let $=new Set(B);return $.delete(v),$}),drop:(v,B,$)=>pi.current(v,$)})},[rc]);let mi=(v,B,$)=>{let be=v.ctrlKey||v.metaKey;be&&v.key.toLowerCase()==="x"&&B?(v.preventDefault(),Y(B),Q(`Cut ${B}. Focus a folder and press Ctrl+V (\u2318V on a Mac) to move it there, or Escape.`)):be&&v.key.toLowerCase()==="v"&&G?(v.preventDefault(),js(G,hi(G,$))):v.key==="Escape"&&G&&(Y(null),Q("Nothing cut."))},ic=v=>b(B=>{let $=new Set(B);return $.delete(v)||$.add(v),$}),xi=(v,B)=>v.kind==="folder"?_("li",{children:[_("button",{type:"button","aria-expanded":!w.has(v.path),"data-folder":v.path,...si(v.path)?{"data-page":`${je}${v.path}`}:{},className:`flex w-full items-baseline gap-1 py-1 pr-3 text-left text-sm hover:bg-muted ${G===`${je}${v.path}`?"opacity-60":""} ${ri}`,style:{paddingLeft:12+B*14},onClick:()=>ic(v.path),onKeyDown:$=>mi($,si(v.path)?`${je}${v.path}`:null,v.path),children:[c("span",{className:"w-3 shrink-0 text-xs text-muted-foreground",children:w.has(v.path)?"\u25B8":"\u25BE"}),c("span",{className:"min-w-0 flex-1 truncate font-medium",children:v.label}),si(v.path)?c("span",{role:"button",tabIndex:0,"aria-label":`Rename or delete ${v.path}`,className:"shrink-0 px-1 text-muted-foreground hover:text-foreground",onClick:$=>($.stopPropagation(),U(D?.path===v.path?null:{path:v.path,name:v.label,seq:h?.seq??0})),onKeyDown:$=>$.key==="Enter"&&($.stopPropagation(),U({path:v.path,name:v.label,seq:h?.seq??0})),children:"\u22EF"}):null]}),D?.path===v.path?_("div",{className:"flex items-center gap-2 border-y bg-muted px-3 py-1.5 text-xs",style:{paddingLeft:12+B*14},children:[c(ie,{"aria-label":"Folder name",className:"h-7",value:D.name,onChange:$=>U({...D,name:$.target.value})}),c(F,{size:"sm",disabled:!D.name.trim()||D.name.includes("/"),onClick:()=>{rt(D).catch($=>x(String($)))},children:"Rename"}),c(F,{size:"sm",variant:"secondary",disabled:v.children.length>0,...v.children.length?{title:"Only an empty folder can be deleted"}:{},onClick:()=>{tc(D).catch($=>x(String($)))},children:"Delete"})]}):null,w.has(v.path)?null:c("ul",{children:v.children.map($=>xi($,B+1))})]},v.path):c("li",{children:_("button",{type:"button",title:v.path,"data-page":v.path,"data-folder":Ms(v.path),className:`flex w-full touch-pan-y select-none items-baseline gap-2 py-1 pr-3 text-left text-sm hover:bg-muted ${t===v.path?"bg-muted":""} ${G===v.path||G===`${je}${v.path}`?"opacity-60":""} ${ri}`,style:{paddingLeft:26+B*14},onClick:()=>s(v.page),onKeyDown:$=>mi($,v.path,Ms(v.path)),children:[c("span",{className:`min-w-0 flex-1 truncate ${v.page.fileGone||v.page.threadGone?"text-muted-foreground":""}`,children:v.label}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[v.page.threadTitle?`${v.page.threadTitle} \xB7 `:"",v.page.pinned?`pinned v${v.page.pinned} \xB7 `:"",v.page.threadGone?"conversation deleted \xB7 ":v.page.fileGone?"file gone \xB7 ":"",vt(v.page.at)]})]})},v.path);if(!h)return c("p",{className:`p-3 text-sm ${p?"text-destructive":"text-muted-foreground"}`,children:p||"Loading the tree\u2026"});let gi=al(h.folders,h.pages);return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[c("div",{className:"border-b px-3 py-1.5",children:c(ie,{className:"h-8",type:"search","aria-label":"Search the project's artifacts",placeholder:"\u2315 Search the project",value:Z,onChange:v=>tt(v.target.value)})}),c("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:y===null?c(F,{size:"sm",variant:"secondary",onClick:()=>k(""),children:"New folder"}):_(Se,{children:[c(ie,{className:"h-8",placeholder:"design/notes",value:y,onChange:v=>k(v.target.value)}),c(F,{size:"sm",onClick:()=>{Gs().catch(v=>x(String(v)))},children:"Make"}),c(F,{size:"sm",variant:"secondary",onClick:()=>k(null),children:"Cancel"})]})}),H&&h?L?.what==="move"?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"dialog","aria-label":"Move or rename",children:[_("span",{className:"font-medium",children:["Move or rename ",H.path]}),c("ul",{"aria-label":"Folder",className:"max-h-48 overflow-auto rounded border bg-background",children:hl(H,Ws(h)).map(v=>c("li",{children:_("button",{type:"button","aria-pressed":v.folder===L.folder,disabled:v.mark==="not allowed",title:v.reason,className:`flex w-full gap-2 px-2 py-1 text-left disabled:opacity-50 ${v.folder===L.folder?"bg-muted font-medium":"hover:bg-muted"}`,onClick:()=>M({...L,folder:v.folder}),children:[c("span",{className:"min-w-0 flex-1 truncate",children:v.folder||"(the project's root)"}),c("span",{className:"shrink-0 text-muted-foreground",children:v.mark==="not allowed"?`not allowed: ${v.reason}`:v.mark})]})},v.folder))}),c(ie,{"aria-label":"Name",className:"h-8",value:L.name,onChange:v=>M({...L,name:v.target.value})}),c("span",{className:"text-muted-foreground",children:L.name.includes("/")?"A name has no /: pick the folder above.":`New path: ${L.folder?`${L.folder}/`:""}${L.name.trim()}. Links keep working: ${L.from} will lead here. The page's file isn't moved.`}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>M(null),children:"Cancel"}),c(F,{size:"sm",disabled:!L.name.trim()||L.name.includes("/"),onClick:()=>{De(L).catch(v=>x(String(v)))},children:"Move"})]})]}):L?.what==="delete"?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[_("span",{children:["Delete ",L.from," from the tree? Its path is held, links to it say it was deleted, and you can restore it. Its versions and the conversation's file stay."]}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>M(null),children:"Cancel"}),c(F,{size:"sm",variant:"destructive",onClick:()=>{wt(L).catch(v=>x(String(v)))},children:"Delete"})]})]}):_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:[c("span",{className:"min-w-0 flex-1 truncate text-muted-foreground",children:H.path}),c(F,{size:"sm",variant:"secondary",onClick:()=>M({what:"move",from:H.path,seq:h.seq,folder:Ms(H.path),name:H.path.slice(H.path.lastIndexOf("/")+1)}),children:"Move or rename\u2026"}),c(F,{size:"sm",variant:"secondary",onClick:()=>M({what:"delete",from:H.path,seq:h.seq}),children:"Delete\u2026"})]}):null,O?_("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog",children:[c("span",{children:O.question}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>(P(null),Q("Not moved.")),children:"Cancel"}),c(F,{size:"sm",onClick:()=>{fi(O.from,O.to,O.seq).catch(v=>x(String(v)))},children:"Move"})]})]}):null,ne?_("div",{className:"flex items-center gap-2 border-b px-3 py-1.5 text-xs",children:[_("span",{className:"min-w-0 flex-1 truncate",children:["Moved to ",ne.from,"."]}),c(F,{size:"sm",variant:"secondary",onClick:()=>{sc().catch(v=>x(String(v)))},children:"Undo"})]}):null,c("p",{className:"sr-only","aria-live":"polite",children:j}),p?c("p",{className:"px-3 py-1.5 text-xs text-destructive",children:p}):null,Z.trim()?c(Ju,{projectId:e,q:Z.trim(),onOpen:v=>s(h.pages.find(B=>B.threadId===v.threadId&&B.name===v.name)??{...v,size:0,fileGone:!1,threadGone:!1})}):gi.length?_("div",{className:"min-h-0 flex-1 overflow-auto py-1",children:[_("ul",{ref:nt,children:[c("li",{"data-folder":"",className:`px-3 py-0.5 text-xs text-muted-foreground ${ri}`,children:h.pages.some(v=>v.path.includes("/"))||h.folders.length?"Project root":null}),gi.map(v=>xi(v,0))]}),h.moved.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Redirects (",h.moved.length,")"]}),c("ul",{children:h.moved.map(v=>_("li",{className:"truncate",children:[v.path," \u2192 ",v.to]},v.path))})]}):null,(()=>{let v=ll(l,h);return v.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Not in the tree (",v.length,")"]}),c("p",{className:"py-0.5",children:"These pages are in their conversations' folders but can't be shown or kept as versions, usually because they break the page rules. By conversation opens them and says why."}),c("ul",{children:v.map(B=>_("li",{className:"truncate",children:[B.title," / ",B.name]},`${B.threadId}/${B.name}`))})]}):null})(),h.deleted.length?_("details",{className:"px-3 py-1 text-xs text-muted-foreground",children:[_("summary",{children:["Deleted (",h.deleted.length,")"]}),c("ul",{children:h.deleted.map(v=>_("li",{className:"flex items-center gap-2 py-0.5",children:[_("span",{className:"min-w-0 flex-1 truncate",children:[v.path," \xB7 ",vt(v.at)]}),c(F,{size:"sm",variant:"secondary",onClick:()=>{nc(v.path).catch(B=>x(String(B)))},children:"Restore"})]},v.path))})]}):null]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:o?"Bringing the project's tree up to date\u2026":"No pages in this project yet. A conversation's pages appear here, under the conversation's title, once it writes one."})]})}function Ju({projectId:e,q:n,onOpen:t}){let s=q(),[r,i]=E("all"),[a,o]=E(!1),[u,l]=E(null),[d,h]=E("");return z(()=>{let f=!0;l(null),h("");let p=setTimeout(()=>{s.call("artifacts.search",{projectId:e,q:n.slice(0,200),scope:r,versions:a}).then(x=>f&&l(x.results),x=>f&&h(x instanceof Error?x.message:String(x)))},250);return()=>{f=!1,clearTimeout(p)}},[s,e,n,r,a]),_("div",{className:"min-h-0 flex-1 overflow-auto text-sm",children:[_("div",{className:"flex flex-wrap items-center gap-2 border-b px-3 py-1.5 text-xs",children:[["all","shared","drafts"].map(f=>c(F,{size:"sm",variant:r===f?"default":"secondary",onClick:()=>i(f),children:f==="all"?"All":f==="shared"?"In folders":"Not in a folder"},f)),_("label",{className:"flex items-center gap-1",children:[c("input",{type:"checkbox",checked:a,onChange:f=>o(f.target.checked)}),"Include old versions"]})]}),d?c("p",{className:"p-3 text-destructive",children:d}):null,u?u.length?c("ul",{children:u.map(f=>f.kind==="moved"?_("li",{className:"px-3 py-1.5 text-xs text-muted-foreground",children:[f.path," \u2192 ",f.to," ",c("span",{className:"ml-1",children:"moved"})]},`m:${f.path}`):c("li",{children:_("button",{type:"button",className:"w-full px-3 py-1.5 text-left hover:bg-muted",onClick:()=>t(f),children:[_("span",{className:"block truncate font-medium",children:[f.title,null,f.version?_("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:["only in v",f.version," (History shows it)"]}):null]}),_("span",{className:"block truncate text-xs text-muted-foreground",children:[f.path," \xB7 ",f.threadTitle??f.threadId," \xB7 ",vt(f.at)]}),f.snippet?c("span",{className:"block text-xs text-muted-foreground",children:f.snippet}):null]})},f.path))}):_("p",{className:"p-3 text-muted-foreground",children:[`Nothing in this project's tree has "`,n,'".']}):c("p",{className:"p-3 text-muted-foreground",children:"Searching\u2026"})]})}function ml({projects:e,attempt:n,open:t,onOpen:s,onClose:r}){let i=q(),[a,o]=E(new Map),[u,l]=E(new Set);if(z(()=>{let f=!0;return i.call("artifacts.tree-projects",{}).then(p=>f&&o(new Map(p.projects.map(x=>[x.projectId,x.pages]))),()=>{}),()=>{f=!1}},[i,n]),!e.length)return c("p",{className:"p-3 text-sm text-muted-foreground",children:"Loading the projects\u2026"});let d=f=>c(ii,{projectId:f,attempt:n,open:t,onOpen:s,onClose:r});if(e.length===1)return d(e[0].id);let h=[...e].sort((f,p)=>(a.get(p.id)??0)-(a.get(f.id)??0)||f.name.localeCompare(p.name));return c("ul",{className:"min-h-0 flex-1 overflow-auto py-1",children:h.map(f=>_("li",{className:"flex flex-col",children:[_("button",{type:"button","aria-expanded":u.has(f.id),className:"flex w-full items-baseline gap-1 px-3 py-1 text-left text-sm hover:bg-muted",onClick:()=>l(p=>{let x=new Set(p);return x.delete(f.id)||x.add(f.id),x}),children:[c("span",{className:"w-3 shrink-0 text-xs text-muted-foreground",children:u.has(f.id)?"\u25BE":"\u25B8"}),c("span",{className:"min-w-0 flex-1 truncate font-medium",children:f.name}),c("span",{className:"shrink-0 text-xs text-muted-foreground",children:a.has(f.id)?`${a.get(f.id)} page${a.get(f.id)===1?"":"s"}`:""})]}),u.has(f.id)?c("div",{className:"ml-3 flex max-h-[70vh] min-h-48 flex-col border-l",children:d(f.id)}):null]},f.id))})}var xl="orbit.artifacts.panelView";function gl({threadId:e}){let n=q(),[t,s]=E(null),[r,i]=E(""),[a,o]=E(null),[u,l]=E(e),[d,h]=E([]),[f,p]=E(null),[x,w]=E(null),[b,y]=E(0),[k,I]=E(()=>Ls(Vt(),xl,["thread","folders"],"thread")),R=P=>{I(P),Is(Vt(),xl,P)},L=P=>i(P instanceof Error?P.message:String(P));z(()=>{i(""),n.call("artifacts.list",{threadId:e}).then(s,L)},[n,e,b]);let M=ce(0),D=re((P,G=e)=>{let Y=++M.current;o(P),l(G),p(null),w(null),n.call("artifacts.read",{threadId:G,name:P}).then(ne=>Y===M.current&&(p(Fs(ne)),w(ne.state==="ok"?Rs(ne.page):null)),ne=>Y===M.current&&p($t(ne)))},[n,e]);z(()=>{a&&u===e&&t?.state==="ok"&&t.artifacts.some(P=>P.name===a)&&D(a)},[t]);let U=r?`Couldn't reach the artifacts: ${r}`:t?zt(t):"Loading\u2026",O=t?.state==="ok"?t.artifacts:[];return _("div",{className:"flex h-full flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-xs",children:[a?c(F,{size:"sm",variant:"secondary",onClick:()=>(o(null),p(null),h([])),children:"All artifacts"}):null,a?c("span",{className:"min-w-0 flex-1 truncate font-medium",children:`${a}${u===e?"":" (another conversation's)"}`}):_(Se,{children:[c(F,{size:"sm",variant:k==="thread"?"default":"secondary",onClick:()=>R("thread"),children:"This conversation"}),c(F,{size:"sm",variant:k==="folders"?"default":"secondary",onClick:()=>R("folders"),children:"By folder"}),c("span",{className:"flex-1"})]}),c(F,{size:"sm",variant:"secondary",onClick:()=>y(P=>P+1),children:"Refresh"})]}),a?c(Ps,{threadId:u,name:a,shown:f,about:x,onChanged:()=>D(a,u),onNavigate:(P,G)=>{h(Y=>[...Y,{threadId:u,name:a}]),D(G,P)},onBack:d.length?()=>{let P=d.at(-1);h(G=>G.slice(0,-1)),D(P.name,P.threadId)}:null}):k==="folders"?t?.state==="ok"&&t.projectId?c(ii,{projectId:t.projectId,attempt:b,open:null,onOpen:P=>(h([]),D(P.name,P.threadId)),onClose:()=>(o(null),p(null))}):c("p",{className:"p-3 text-sm text-muted-foreground",children:U??(t?"bb doesn't say which project this conversation is in, so there's no tree to show.":"Loading\u2026")}):U?c("p",{className:"p-3 text-sm text-muted-foreground",children:U}):c("ul",{className:"min-h-0 flex-1 overflow-auto",children:O.map(P=>c("li",{children:_("button",{type:"button",className:"flex w-full items-baseline gap-2 px-3 py-2 text-left text-sm hover:bg-muted",onClick:()=>(h([]),D(P.name)),children:[c("span",{className:`min-w-0 flex-1 truncate ${P.gone?"text-muted-foreground":""}`,children:P.name}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[P.gone?"file gone \xB7 ":"",Dn(P.size,P.modifiedAt)]})]})},P.name))})]})}function Ds({shown:e,onPageLink:n}){let[t,s]=E(null),[r,i]=E(null);z(()=>{s(null),i(null)},[e]);let a=re(l=>{let d=Ln(l);s(d.kind==="outside"?d.url:null),d.kind==="page"&&n?(i(null),n(l).then(i,h=>i(`The link wasn't followed: ${h instanceof Error?h.message:String(h)}.`))):i(jo(d))},[n]);if(!e)return c("p",{className:"p-3 text-sm text-muted-foreground",children:"Opening the page\u2026"});if(e.kind==="refused")return c("p",{className:"p-3 text-sm text-destructive",children:e.reason});let o=t?c(eh,{url:t,onClose:()=>s(null)}):r?_("div",{className:"flex items-center gap-2 border-b bg-muted px-3 py-2 text-xs",role:"status",children:[c("span",{className:"min-w-0 flex-1",children:r}),c(F,{size:"sm",variant:"secondary",onClick:()=>i(null),children:"OK"})]}):null;if(e.kind==="markdown")return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,c("div",{className:"min-h-0 flex-1 overflow-auto p-4 text-sm leading-relaxed",children:e.blocks.map((l,d)=>bl(l,d,a))})]});let u="src"in e?e.src:e.srcDoc;return _("div",{className:"flex min-h-0 flex-1 flex-col",children:[o,c(nh,{frame:e,onLink:a},u)]})}function eh({url:e,onClose:n}){let[t,s]=E(!1);return _("div",{className:"flex flex-col gap-2 border-b bg-muted px-3 py-2 text-xs",role:"alertdialog","aria-label":"Open a link outside Orbit?",children:[c("span",{className:"font-medium",children:"Open a link outside Orbit?"}),c("code",{className:"break-all rounded bg-background px-1 py-0.5",children:e}),c("span",{className:"text-muted-foreground",children:"It opens in a new tab, with no referrer. The page can't see whether you open it."}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:n,children:"Cancel"}),c(F,{size:"sm",variant:"secondary",onClick:()=>{navigator.clipboard?.writeText(e).then(()=>s(!0),()=>{})},children:t?"Copied":"Copy address"}),c(F,{size:"sm",onClick:()=>(window.open(e,"_blank","noopener,noreferrer"),n()),children:"Open in new tab"})]})]})}var th=15e3;function nh({frame:e,onLink:n}){let[t,s]=E(!1),[r,i]=E(!1),a=ce(null);return z(()=>{let o=setTimeout(()=>i(!0),th);return()=>clearTimeout(o)},[]),z(()=>{let o=u=>{let l=!!a.current?.contentWindow&&u.source===a.current.contentWindow,d=navigator.userActivation?.isActive??!0,h=Wo(u.data,{ownFrame:l,activated:d});h!==null&&n(h)};return window.addEventListener("message",o),()=>window.removeEventListener("message",o)},[n]),_("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[c("iframe",{ref:a,className:"min-h-0 w-full flex-1 border-0 bg-white",style:{colorScheme:"light"},onLoad:()=>s(!0),...tl(e)}),t?null:c("p",{className:`absolute inset-x-0 top-0 bg-background p-3 text-sm ${r?"text-destructive":"text-muted-foreground"}`,children:r?"The page hasn't loaded. Refresh to try again.":"Loading the page\u2026"})]})}var sh=["","text-xl","text-lg","text-base","text-sm","text-sm","text-sm"];function bl(e,n,t){switch(e.t){case"h":{let s=`h${e.level}`;return c(s,{className:`mb-2 mt-4 font-semibold first:mt-0 ${sh[e.level]}`,children:qe(e.c,t)},n)}case"p":return c("p",{className:"my-2",children:qe(e.c,t)},n);case"ul":case"ol":{let s=e.t;return c(s,{className:`my-2 pl-5 ${e.t==="ul"?"list-disc":"list-decimal"}`,children:e.items.map((r,i)=>c("li",{children:qe(r,t)},i))},n)}case"code":return c("pre",{className:"my-2 overflow-auto rounded bg-muted p-2 text-xs",children:c("code",{children:e.v})},n);case"quote":return c("blockquote",{className:"my-2 border-l-2 pl-3 text-muted-foreground",children:e.blocks.map((s,r)=>bl(s,r,t))},n);case"hr":return c("hr",{className:"my-4"},n);case"table":return c("div",{className:"my-2 overflow-auto",children:_("table",{className:"border-collapse text-xs",children:[c("thead",{children:c("tr",{children:e.head.map((s,r)=>c("th",{className:"border px-2 py-1 font-semibold",style:{textAlign:e.align[r]??"left"},children:qe(s,t)},r))})}),c("tbody",{children:e.rows.map((s,r)=>c("tr",{children:s.map((i,a)=>c("td",{className:"border px-2 py-1",style:{textAlign:e.align[a]??"left"},children:qe(i,t)},a))},r))})]})},n)}}function qe(e,n){return e.map((t,s)=>{switch(t.t){case"text":return t.v;case"code":return c("code",{className:"rounded bg-muted px-1 text-xs",children:t.v},s);case"strong":return c("strong",{children:qe(t.c,n)},s);case"em":return c("em",{children:qe(t.c,n)},s);case"link":return c("a",{...Ln(t.href).kind==="outside"?{href:t.href,target:"_blank",rel:"noopener noreferrer"}:{role:"link",tabIndex:0},className:"cursor-pointer underline",onClick:r=>(r.preventDefault(),n(t.href)),onAuxClick:r=>(r.preventDefault(),n(t.href)),onKeyDown:r=>r.key==="Enter"&&(r.preventDefault(),n(t.href)),children:qe(t.c,n)},s)}})}var vl="orbit.artifacts.view";function yl(e){let n=q(),t=q(),[s,r]=E(null),[i,a]=E(""),[o,u]=E(null),[l,d]=E(null),[h,f]=E(null),[p,x]=E(null),[w,b]=E(null),[y,k]=E(()=>Ls(Vt(),vl,["tree","threads"],"tree")),I=H=>{k(H),Is(Vt(),vl,H)},[R,L]=E([]),[M,D]=E(null),[U,O]=E(null),[P,G]=E(null),[Y,ne]=E(""),[le,j]=E(""),[Q,Z]=E(0),tt=H=>j(H instanceof Error?H.message:String(H));z(()=>{n.call("artifacts.projects",{}).then(H=>r(H.projects),tt)},[n,Q]),z(()=>{u(null),i&&(j(""),n.call("artifacts.threads",{projectId:i}).then(u,tt))},[n,i,Q]),z(()=>{f(null),l&&t.call("artifacts.list",{threadId:l.threadId}).then(f,tt)},[t,l,Q]);let nt=ce(0),Ee=re((H,De=l?.threadId)=>{if(!De)return;let wt=++nt.current;x(H),b(De),O(null),G(null),t.call("artifacts.read",{threadId:De,name:H}).then(rt=>wt===nt.current&&(O(Fs(rt)),G(rt.state==="ok"?Rs(rt.page):null)),rt=>wt===nt.current&&O($t(rt)))},[t,l]);z(()=>{y==="threads"&&p&&w===l?.threadId&&h?.state==="ok"&&h.artifacts.some(H=>H.name===p)&&Ee(p)},[h]);let Gs=o?.state==="ok"?nl(o.threads,Y):[],st=h?.state==="ok"?sl(h.artifacts,Y):[];return _("div",{className:"flex h-full flex-col",children:[_("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-sm",children:[c("span",{className:"font-medium",children:"Artifacts"}),y==="threads"?_("select",{"aria-label":"Project",className:"h-8 rounded border bg-background px-2 text-sm",value:i,onChange:H=>(a(H.target.value),d(null),x(null),O(null),L([])),children:[c("option",{value:"",children:s?"Choose a project":"Loading\u2026"}),s?.map(H=>c("option",{value:H.id,children:H.name},H.id))]}):null,c(F,{size:"sm",variant:y==="tree"?"default":"secondary",onClick:()=>(I("tree"),x(null),O(null),L([])),children:"By folder"}),c(F,{size:"sm",variant:y==="threads"?"default":"secondary",onClick:()=>(I("threads"),x(null),O(null),L([])),children:"By conversation"}),y==="threads"?c(ie,{className:"h-8 max-w-64",placeholder:"Search by name",value:Y,onChange:H=>ne(H.target.value)}):null,c("span",{className:"flex-1"}),c(F,{size:"sm",variant:"secondary",onClick:()=>Z(H=>H+1),children:"Refresh"})]}),le?_("p",{className:"px-3 py-2 text-sm text-destructive",children:["Couldn't reach the artifacts: ",le]}):null,_("div",{className:"flex min-h-0 flex-1",children:[y==="tree"?c("div",{className:"flex w-96 shrink-0 flex-col border-r",children:c(ml,{projects:s??[],attempt:Q,open:M,onOpen:H=>{D(H.path),L([]),Ee(H.name,H.threadId)},onClose:()=>(D(null),x(null),O(null))})}):_(Se,{children:[c("div",{className:"flex w-80 shrink-0 flex-col overflow-auto border-r",children:i?o?o.state==="refused"?c("p",{className:"p-3 text-sm text-destructive",children:o.reason}):_(Se,{children:[c("ul",{children:Gs.map(H=>c("li",{children:_("button",{type:"button",className:`w-full px-3 py-2 text-left text-sm hover:bg-muted ${l?.threadId===H.threadId?"bg-muted":""}`,onClick:()=>(d(H),x(null),O(null),L([])),children:[c("span",{className:"block truncate font-medium",children:H.title}),_("span",{className:"block truncate text-xs text-muted-foreground",children:[H.status," \xB7 ",H.machine," \xB7 ",H.count," artifact",H.count===1?"":"s"," \xB7 newest ",vt(H.newestAt)]})]})},H.threadId))}),rl(o).map(H=>c("p",{className:"px-3 py-1 text-xs text-muted-foreground",children:H},H))]}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Looking at the project's conversations\u2026"}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Choose a project to see its conversations that have artifacts."})}),c("div",{className:"flex w-72 shrink-0 flex-col overflow-auto border-r",children:l?h?zt(h)?c("p",{className:"p-3 text-sm text-muted-foreground",children:zt(h)}):c("ul",{children:st.map(H=>c("li",{children:_("button",{type:"button",className:`flex w-full items-baseline gap-2 px-3 py-2 text-left text-sm hover:bg-muted ${p===H.name?"bg-muted":""}`,onClick:()=>(L([]),Ee(H.name)),children:[c("span",{className:`min-w-0 flex-1 truncate ${H.gone?"text-muted-foreground":""}`,children:H.name}),_("span",{className:"shrink-0 text-xs text-muted-foreground",children:[H.gone?"file gone \xB7 ":"",Dn(H.size,H.modifiedAt)]})]})},H.name))}):c("p",{className:"p-3 text-sm text-muted-foreground",children:"Loading\u2026"}):null})]}),c("div",{className:"flex min-w-0 flex-1 flex-col",children:p&&w?c(Ps,{threadId:w,name:p,shown:U,about:P,onChanged:()=>Ee(p,w),onNavigate:(H,De)=>{L(wt=>[...wt,{threadId:w,name:p,path:M}]),D(null),Ee(De,H)},onBack:R.length?()=>{let H=R.at(-1);L(De=>De.slice(0,-1)),D(H.path),Ee(H.name,H.threadId)}:null}):null})]})]})}var rh=[{id:"never-ask",label:"Never ask",hint:"Runs everything policy.toml allows."},{id:"ask-changes",label:"Ask before changes",hint:"Reads run; changes ask."},{id:"always-ask",label:"Always ask",hint:"Reads ask too."},{id:"read-only",label:"Read only",hint:"Changes are refused."}],ih=[{minutes:null,label:"Wait for an answer"},{minutes:15,label:"Refuse after 15 minutes"},{minutes:60,label:"Refuse after 1 hour"},{minutes:1440,label:"Refuse after 1 day"}];function ah(){let e=q(),[n,t]=E(null),[s,r]=E(null),i=re(()=>{e.call("approvals.state",null).then(a=>{t(a),r(null)},a=>r(a instanceof Error?a.message:String(a)))},[e]);return z(i,[i]),Ae("approvals",i),{rpc:e,state:n,error:s,refetch:i}}function oh({name:e,kind:n,settings:t,save:s}){let[r,i]=E(t.sensitive.join(", "));z(()=>i(t.sensitive.join(", ")),[t.sensitive]);let a=o=>{s({...t,...o})};return _("div",{className:"flex flex-col gap-2 border-b py-3 last:border-b-0",children:[_("div",{className:"flex items-baseline gap-2",children:[c("span",{className:"font-mono font-medium",children:e}),c("span",{className:"text-xs text-muted-foreground",children:n})]}),_("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[c("select",{className:"rounded-md border bg-background px-2 py-1",value:t.level,onChange:o=>a({level:o.target.value}),"aria-label":`${e}: when to ask`,children:rh.map(o=>_("option",{value:o.id,children:[o.label,": ",o.hint]},o.id))}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:t.expireMinutes??"",onChange:o=>a({expireMinutes:o.target.value?Number(o.target.value):null}),"aria-label":`${e}: unanswered approvals`,children:ih.map(o=>c("option",{value:o.minutes??"",children:o.label},o.label))})]}),_("form",{className:"flex items-center gap-2",onSubmit:o=>{o.preventDefault(),a({sensitive:r.split(",").map(u=>u.trim()).filter(Boolean)})},children:[c(ie,{value:r,onChange:o=>i(o.target.value),placeholder:"Sensitive: ask every time, e.g. sudo, delete namespace","aria-label":`${e}: sensitive commands`}),c(F,{size:"sm",type:"submit",variant:"secondary",children:"Save"})]})]})}function wl(){let{rpc:e,state:n,error:t,refetch:s}=ah(),[r,i]=E(null);return t?c("p",{className:"text-sm text-destructive",children:t}):n?_("div",{className:"flex flex-col gap-6 text-sm",children:[_("section",{children:[c("h3",{className:"font-medium",children:"Standing decisions"}),c("p",{children:"Permissions you gave once in Orbit. Taking one back stops future uses. Work already authorized may finish."}),r&&c("p",{role:"alert",children:r}),n.standing.map(a=>_("div",{className:"space-y-2 border-b py-3",children:[c("p",{children:a.description}),_("p",{children:[a.station," \xB7"," ",a.revoked?"Taken back":a.expired?"Expired":a.expiresAt?`Until ${new Date(a.expiresAt).toLocaleString()}`:"No time limit"]}),!a.revoked&&c(F,{variant:"outline",onClick:()=>{e.call("approvals.requestStandingRevoke",{id:a.id}).then(o=>{i(o.decision==="deny"?o.reason??"The question could not be opened.":null),s()}).catch(()=>i("The question could not be opened. Try again."))},children:"Take this permission back"})]},a.id)),c("pre",{className:"whitespace-pre-wrap",children:n.standingSummary})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"When Orbit asks"}),_("p",{className:"mb-2 text-xs text-muted-foreground",children:["For each capability in policy.toml. Commands policy.toml calls ",c("i",{children:"never"})," are refused whatever the level, and so is anything that would show a credential."]}),n.capabilities.length===0&&c("p",{className:"text-muted-foreground",children:"No capabilities in policy.toml."}),n.capabilities.map(a=>c(oh,{name:a.name,kind:a.kind,settings:a.settings,save:async o=>{await e.call("approvals.setCapability",{name:a.name,settings:o}),s()}},a.name))]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Always allowed"}),n.grants.length===0?c("p",{className:"text-muted-foreground",children:'Nothing yet. "Always allow" on an approval adds the exact command here.'}):c("ul",{className:"divide-y",children:n.grants.map(a=>_("li",{className:"flex items-center gap-2 py-2",children:[c("span",{className:"font-mono text-xs",children:a.capability}),c("code",{className:"flex-1 break-all text-xs",children:a.command}),c(F,{size:"sm",variant:"ghost",onClick:()=>{e.call("approvals.revokeGrant",{id:a.id}).then(s)},children:"Revoke"})]},a.id))})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Recent activity"}),n.log.length===0?c("p",{className:"text-muted-foreground",children:"No requests yet."}):c("ul",{className:"divide-y text-xs",children:n.log.map((a,o)=>_("li",{className:"flex gap-2 py-1.5",children:[c("span",{className:"w-32 shrink-0 text-muted-foreground",children:new Date(a.at).toLocaleString()}),c("span",{className:a.decision==="allow"?"w-12 shrink-0":"w-12 shrink-0 text-destructive",children:a.decision}),c("span",{className:"w-12 shrink-0 font-mono",children:a.capability}),c("code",{className:"flex-1 break-all",children:a.command}),c("span",{className:"shrink-0 text-muted-foreground",children:a.how})]},o))})]})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}var kl=/[A-Za-z0-9_-]/,ai=/[A-Za-z0-9_+\-.:]/,lh=/^\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|x[0-9A-Fa-f]{2}|[btnfre"\\])/,ch=/^\\[ \t]*(?:\r?\n)/,dh=/^[+-]?(?:inf|nan|0x[0-9A-Fa-f_]+|0o[0-7_]+|0b[01_]+|\d[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?[\d_]+)?)$/,uh=/^(?:\d{4}-\d{2}-\d{2}(?:[Tt ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)?|\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)(?:[Zz]|[+-]\d{2}:\d{2})?$/;function El(e){let n=[],t=(d,h)=>{if(!h)return;let f=n[n.length-1];f&&f.kind===d&&d!=="punctuation"?f.text+=h:n.push({kind:d,text:h})},s="key",r=[],i=0,a=d=>{let h=e[i],f=e.startsWith(h.repeat(3),i),p=f?h.repeat(3):h,x=h==='"',w=i+p.length,b=i;for(;w<e.length&&!(!f&&(e[w]===`
|
|
54
|
+
`||e[w]==="\r"));){if(x&&e[w]==="\\"){let y=e.slice(w,w+12),k=f&&ch.exec(y)||lh.exec(y),I=k?k[0].length:1;d==="string"&&k&&(t(d,e.slice(b,w)),t("escape",e.slice(w,w+I)),b=w+I),w+=I;continue}if(e.startsWith(p,w)){w+=p.length;for(let y=0;f&&y<2&&e[w]===h;y++)w++;break}w++}t(d,e.slice(b,w)),i=w},o=()=>{let d=e[i+1]==="[",h=i+(d?2:1);for(;h<e.length&&e[h]!==`
|
|
55
55
|
`&&e[h]!=="#";){let f=e[h];if(f==='"'||f==="'"){for(h++;h<e.length&&e[h]!==f&&e[h]!==`
|
|
56
|
-
`;)h+=e[h]==="\\"&&f==='"'?2:1;e[h]===f&&h++;continue}if(f==="]"){h+=d&&e[h+1]==="]"?2:1;break}h++}t(d?"array-table":"table",e.slice(i,h)),i=h,
|
|
57
|
-
`){t("text",d),i++,r.length===0&&(
|
|
58
|
-
`,i);h<0&&(h=e.length),e[h-1]==="\r"&&h--,t("comment",e.slice(i,h)),i=h;continue}if(
|
|
59
|
-
`]}),c("textarea",{"aria-label":"policy.toml",className:`absolute inset-0 h-full w-full resize-none overflow-auto bg-transparent text-transparent caret-foreground outline-none forced-colors:text-[CanvasText] ${_l}`,spellCheck:!1,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",wrap:"off",value:e,onChange:i=>s(i.target.value),onScroll:i=>{t.current&&(t.current.scrollTop=i.currentTarget.scrollTop,t.current.scrollLeft=i.currentTarget.scrollLeft)}})]})}):r}function qe(){let e=q(),[s,t]=E(null),[n,r]=E(null),i=ie(()=>{e.call("config.state",null).then(a=>{t(a),r(null)},a=>r(a instanceof Error?a.message:String(a)))},[e]);return z(i,[i]),Ce("config",i),{rpc:e,state:s,error:n,refetch:i}}function Mn(e,s){let t=URL.createObjectURL(new Blob([s],{type:"application/toml"})),n=document.createElement("a");n.href=t,n.download=e,n.click(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}function Bn(e){let s=document.createElement("input");s.type="file",s.accept=".toml,text/plain",s.onchange=()=>{s.files?.[0]?.text().then(e)},s.click()}function xl(e){let s=document.createElement("input");s.type="file",s.accept="image/png,image/jpeg,image/webp,image/svg+xml,.png,.jpg,.jpeg,.webp,.svg",s.onchange=()=>{let t=s.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>e({name:t.name,base64:String(n.result).replace(/^data:[^,]*,/,"")}),n.readAsDataURL(t)},s.click()}function On({at:e,by:s}){return e?_("span",{className:"text-xs text-muted-foreground",children:["Last changed ",new Date(e).toLocaleString(),s?` by ${s}`:""]}):null}function Hn({rows:e,load:s,label:t}){return e.length===0?null:_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"History"}),c("ul",{className:"divide-y text-xs",children:e.map(n=>_("li",{className:"flex items-center gap-2 py-1.5",children:[c("span",{className:"w-40 shrink-0 text-muted-foreground",children:new Date(n.at).toLocaleString()}),c("span",{className:"flex-1",children:n.by}),c(K,{size:"sm",variant:"ghost",onClick:()=>s(n.id),children:t})]},n.id))})]})}function gl(){let{rpc:e,state:s,error:t,refetch:n}=qe(),[r,i]=E(null),[a,o]=E(null),[u,l]=E(!1),[d,h]=E(null),[f,p]=E(null),g=r??s?.policy.text??"",w=s!==null&&r!==null&&r!==s.policy.text;if(z(()=>{if(r===null)return o(null);let k=setTimeout(()=>{e.call("config.checkPolicy",{text:r}).then(I=>o(I.error))},300);return()=>clearTimeout(k)},[r,e]),t)return c("p",{className:"text-sm text-destructive",children:t});if(!s)return c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let v=f??s.stations.map(k=>k.name),y=async k=>{l(!0),h(null);try{await e.call("config.applyPolicy",{stations:v,dryRun:k}),n()}catch(I){h(I instanceof Error?I.message:String(I))}finally{l(!1)}};return _("div",{className:"flex flex-col gap-4 text-sm",children:[c("p",{className:"text-xs text-muted-foreground",children:"What constrains Orbit: the network its stations reach and the capabilities its broker runs. Orbit can't change this. Saving checks it; it reaches stations when you apply it."}),c(ml,{value:g,onChange:i}),a&&c("p",{className:"whitespace-pre-wrap text-xs text-destructive",children:a}),_("div",{className:"flex flex-wrap items-center gap-2",children:[c(K,{size:"sm",disabled:!w||!!a||u,onClick:()=>{l(!0),e.call("config.savePolicy",{text:g}).then(()=>{i(null),h("Saved. Apply it to the stations below when you're ready."),n()},k=>h(k instanceof Error?k.message:String(k))).finally(()=>l(!1))},children:"Save"}),c(K,{size:"sm",variant:"ghost",disabled:!w,onClick:()=>i(null),children:"Revert"}),c(K,{size:"sm",variant:"secondary",onClick:()=>Mn("policy.toml",s.policy.text),children:"Export"}),c(K,{size:"sm",variant:"secondary",onClick:()=>Bn(k=>i(k)),children:"Import\u2026"}),c(On,{at:s.policy.updatedAt,by:s.policy.updatedBy})]}),d&&c("p",{className:"text-xs",children:d}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Apply to stations"}),c("p",{className:"mb-2 text-xs text-muted-foreground",children:"This policy reaches a station through the station deploy, which runs on the machine that manages it, so that machine must be on. This button runs it there (it installs the station's bundle too). Review shows what would change without changing anything."}),c("div",{className:"mb-2 flex flex-wrap gap-3",children:s.stations.map(k=>_("label",{className:"flex items-center gap-1.5 text-xs",children:[c("input",{type:"checkbox",checked:v.includes(k.name),onChange:I=>p(I.target.checked?[...v,k.name]:v.filter(R=>R!==k.name))}),c("span",{className:"font-mono",children:k.name}),_("span",{className:"text-muted-foreground",children:["(",k.os,k.connected?"":", offline",")"]})]},k.name))}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",disabled:u||w||v.length===0,onClick:()=>{y(!0)},children:"Review"}),c(K,{size:"sm",disabled:u||w||v.length===0,onClick:()=>{y(!1)},children:"Apply"}),w&&c("span",{className:"text-xs text-muted-foreground",children:"Save first."})]}),s.jobs.length>0&&c("ul",{className:"mt-3 flex flex-col gap-2",children:s.jobs.map(k=>_("li",{children:[_("div",{className:"text-xs",children:[c("span",{className:"font-mono",children:k.station}),": ",k.dryRun?"review ":"",c("span",{className:k.status==="failed"?"text-destructive":"",children:k.status}),k.code!==null&&k.status!=="done"?` (exit ${k.code})`:""]}),k.output&&c("pre",{className:"mt-1 max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-muted p-2 text-xs",children:k.output})]},k.station))})]}),c(Hn,{rows:s.history.policy,load:k=>{e.call("config.historyText",{id:k}).then(I=>i(I.text))},label:"Load into the editor"})]})}var bl=["claude-code","codex"],ih=["claude-code"],vl="claude-code";function Qn(e,s){return`${e} ${s}`}function yl(e){let s=e.indexOf(" ");return{provider:e.slice(0,s),model:e.slice(s+1)}}function ah(e,s,t=!1){return s==="orbit"?ih.includes(e)?null:"the Orbit conversation needs Claude Code: the station's managed settings, command filter and guide are Claude Code's":s==="station"?e===vl?null:e!=="codex"?"station work runs on Claude Code or Codex":t?null:"station work on Codex needs Codex installed on a station":bl.includes(e)?null:`Orbit starts assistants only on ${bl.join(" or ")}`}function wl(e,s,t,n=!1){let r=e.providers.map(a=>{let o=ah(a.provider,s,n),u=s==="agents"&&a.provider!==vl&&!o?`${a.hosts.join(", ")}; your listed machines only`:a.hosts.join(", ");return{label:`${a.name} (on ${u})${o?`: ${o}`:""}`,disabled:o,options:a.models.map(l=>({value:Qn(a.provider,l.id),label:`${l.name} (${l.id})${l.isDefault?`, ${a.name}'s default`:""}`}))}}),i=e.providers.some(a=>a.provider===t.provider&&a.models.some(o=>o.id===t.model));return t.model&&!i&&r.unshift({label:"Saved",disabled:null,options:[{value:Qn(t.provider,t.model),label:`${t.model} on ${t.provider} (not offered now)`}]}),r}var oh=[["name","Name","Formal: commits' author and mail's display name."],["nickname","Nickname","What it's called day to day (empty: the name)."],["email","Email address","Where it commits and sends mail from."],["github","GitHub username","Its GitHub account."],["bio","Bio","One or two plain sentences, for introductions."],["pronouns","Pronouns","A note (optional)."],["signature","Signature","How it signs mail, one line under the sign-off (optional; the nickname, else the name)."],["owner","Owner",'Who it works for, by name (empty: "your owner"). Only you can change it here.']],lh=[["orbit","In the Orbit conversation"],["work","On the conversations it starts"]];function ch(e,s,t){let n={...e};return t.trim()||s==="name"?n[s]=t:delete n[s],n}function dh(){let e=q(),[s,t]=E(null);return z(()=>{e.call("config.models",null).then(t,n=>t({providers:[],error:n instanceof Error?n.message:String(n)}))},[e]),s}function si({label:e,which:s,list:t,value:n,onChange:r,hasCodex:i=!1}){return _("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:e}),t&&t.providers.some(a=>a.models.length>0)?c("select",{className:"h-9 rounded-md border border-input bg-background px-2 text-sm",value:Qn(n.provider,n.model),onChange:a=>r(yl(a.target.value)),children:wl(t,s,n,i).map(a=>c("optgroup",{label:a.label,disabled:a.disabled!==null,children:a.options.map(o=>c("option",{value:o.value,children:o.label},o.value))},a.label))}):c(re,{value:n.model,disabled:!t,onChange:a=>r({provider:n.provider,model:a.target.value})})]})}function uh({list:e,codexStations:s}){if(!e)return c("span",{className:"text-xs text-muted-foreground",children:"Loading the models bb offers\u2026"});let t=e.providers.filter(n=>n.error);return e.providers.some(n=>n.models.length>0)?_("span",{className:"text-xs text-muted-foreground",children:["The models of each provider bb has on your connected stations and listed machines. The Orbit conversation runs on Claude Code. Work on a station runs on Claude Code, or on Codex",s.length?` (on ${s.join(", ")})`:" once a station has it installed",". On your listed machines assistants and chats can also run on Codex.",t.length>0&&` Not listed: ${t.map(n=>`${n.name} (${n.error})`).join("; ")}.`]}):_("span",{className:"text-xs text-muted-foreground",children:["bb couldn't list its models",e.error?` (${e.error})`:t.length?` (${t.map(n=>`${n.name}: ${n.error}`).join("; ")})`:"","; type a model id, like claude-sonnet-5-5."]})}var Un=e=>typeof e=="string"?e:e.text;function hh(e,s){return new Date(e).toLocaleString("en-US",{timeZone:s,weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"})}function fh({r:e,n:s,zone:t,onChange:n,onRemove:r}){let i=q(),[a,o]=E(!1),[u,l]=E(""),[d,h]=E(null),f=typeof e=="string"?null:e.until,p=f!==null&&Date.parse(f)<=Date.now();return _("li",{className:"flex flex-col gap-1 text-xs",children:[_("div",{className:"flex items-center gap-2",children:[_("span",{className:"w-5 text-muted-foreground",children:[s,"."]}),c("span",{className:`flex-1 ${p?"text-muted-foreground line-through":""}`,children:Un(e)}),f!==null&&c("span",{className:p?"text-destructive":"text-muted-foreground",children:`${p?"Lapsed":"Until"} ${hh(f,t)}`}),f!==null&&c(K,{size:"sm",variant:p?"secondary":"ghost",onClick:()=>o(!a),children:"Renew"}),c(K,{size:"sm",variant:"ghost",onClick:r,children:"Remove"})]}),a&&_("div",{className:"ml-7 flex flex-wrap items-center gap-2",children:[c(re,{type:"datetime-local",className:"w-56",value:u,onChange:g=>l(g.target.value)}),_("span",{className:"text-muted-foreground",children:["in ",t]}),c(K,{size:"sm",variant:"secondary",disabled:!u,onClick:()=>{i.call("config.untilInstant",{at:u}).then(g=>{if(g.until===null)return h(g.problem);h(null),o(!1),n({text:Un(e),until:g.until})},g=>h(g instanceof Error?g.message:String(g)))},children:"Until then"}),c(K,{size:"sm",variant:"ghost",onClick:()=>{o(!1),n(Un(e))},children:"No end"}),d&&c("span",{className:"text-destructive",children:d})]})]})}function kl(){let{rpc:e,state:s,error:t,refetch:n}=qe(),[r,i]=E(null),[a,o]=E(""),[u,l]=E(null),[d,h]=E(!1),f=dh();if(t)return c("p",{className:"text-sm text-destructive",children:t});if(!s)return c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let p=r??s.prefs,g=r!==null&&JSON.stringify(r)!==JSON.stringify(s.prefs),w=v=>{e.call("config.savePrefs",{prefs:v}).then(()=>{i(null),l("Saved. I will use these settings now or at my next check."),n()},y=>l(y instanceof Error?y.message:String(y)))};return _("div",{className:"flex flex-col gap-4 text-sm",children:[c("p",{className:"text-xs text-muted-foreground",children:"How Orbit works with you. Orbit can propose changes; you approve them when asked. Facts about people and accounts live in bb memory."}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Identity"}),c("div",{className:"flex flex-wrap gap-4",children:oh.map(([v,y,k])=>_("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:y}),c(re,{value:p.identity[v]??"",onChange:I=>i({...p,identity:ch(p.identity,v,I.target.value)})}),c("span",{className:"text-xs text-muted-foreground",children:k})]},v))}),c("p",{className:"text-xs text-muted-foreground",children:"The station gets these as /usr/local/orbit/etc/identity.json, for commits, mail and introductions. The email address and GitHub username must be the assistant's real accounts: changing them here doesn't change the accounts, so change the account first. With no email address, assistants don't commit or send mail. Old commits, sent mail and the journal keep the name they were written with. No passwords or tokens here."})]}),_("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:"Tone and persona"}),c("textarea",{className:"h-24 w-full rounded-md border bg-background p-2 text-xs",value:p.tone,onChange:v=>i({...p,tone:v.target.value})})]}),_("section",{className:"flex flex-col gap-2",children:[_("div",{className:"flex flex-wrap gap-4",children:[c(si,{label:"Orbit conversation's model",which:"orbit",list:f,value:{provider:p.models.orbit_provider,model:p.models.orbit},onChange:v=>i({...p,models:{...p.models,orbit:v.model,orbit_provider:v.provider}})}),c(si,{label:"Assistants' and chats' model (your listed machines)",which:"agents",list:f,value:{provider:p.models.agents_provider,model:p.models.agents},onChange:v=>i({...p,models:{...p.models,agents:v.model,agents_provider:v.provider}})}),c(si,{label:"Station work's model",which:"station",list:f,hasCodex:s.codexStations.length>0,value:{provider:p.models.station_provider,model:p.models.station},onChange:v=>i({...p,models:{...p.models,station:v.model,station_provider:v.provider}})})]}),c(uh,{list:f,codexStations:s.codexStations})]}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Avatar in chat"}),c("div",{className:"flex flex-wrap gap-6",children:lh.map(([v,y])=>_("div",{className:"flex items-center gap-3",children:[c(qt,{url:p.avatar[v],label:y,size:48}),_("div",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:y}),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>xl(k=>{e.call("config.avatarFromUpload",k).then(I=>I.url?i({...p,avatar:{...p.avatar,[v]:I.url}}):l(I.problem),I=>l(I instanceof Error?I.message:String(I)))}),children:p.avatar[v]?"Replace\u2026":"Choose\u2026"}),c(K,{size:"sm",variant:"ghost",disabled:!p.avatar[v],onClick:()=>{let{[v]:k,...I}=p.avatar;i({...p,avatar:I})},children:"Clear"})]})]})]},v))}),c("p",{className:"text-xs text-muted-foreground",children:"Shown beside the assistant's replies in bb's chat: a PNG, JPEG, WebP or SVG of at most 128 KB. Orbit can propose one; you approve it when asked. Save to apply a change here."})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Standing instructions"}),p.instructions.length===0&&c("p",{className:"text-xs text-muted-foreground",children:"None yet."}),[p.tone,...p.instructions.map(Un)].some(v=>v.includes("{{owner}}"))&&_("p",{className:"mb-1 text-xs text-muted-foreground",children:["{{owner}}"," here and in the tone stands for the owner's name in the identity."]}),c("ol",{className:"flex flex-col gap-1",children:p.instructions.map((v,y)=>c(fh,{r:v,n:y+1,zone:s.zone,onChange:k=>i({...p,instructions:p.instructions.map((I,R)=>R===y?k:I)}),onRemove:()=>i({...p,instructions:p.instructions.filter((k,I)=>I!==y)})},y))}),_("div",{className:"mt-2 flex gap-2",children:[c(re,{placeholder:"e.g. Never book anything before 9am",value:a,onChange:v=>o(v.target.value)}),c(K,{size:"sm",variant:"secondary",disabled:!a.trim(),onClick:()=>{i({...p,instructions:[...p.instructions,a.trim()]}),o("")},children:"Add"})]})]}),_("div",{className:"flex flex-wrap items-center gap-2",children:[c(K,{size:"sm",disabled:!g,onClick:()=>w(p),children:"Save"}),c(K,{size:"sm",variant:"ghost",disabled:!g,onClick:()=>i(null),children:"Revert"}),c(K,{size:"sm",variant:"secondary",onClick:()=>{e.call("config.exportPrefs",null).then(v=>Mn("prefs.toml",v.text))},children:"Export"}),c(K,{size:"sm",variant:"secondary",onClick:()=>Bn(v=>{e.call("config.importPrefs",{text:v}).then(()=>{i(null),l("Imported and saved."),n()},y=>l(y instanceof Error?y.message:String(y)))}),children:"Import\u2026"}),c(K,{size:"sm",variant:"secondary",disabled:d,onClick:()=>h(!0),children:"Reset to defaults\u2026"}),c(On,{at:s.prefsUpdatedAt})]}),d&&_("div",{className:"flex flex-wrap items-center gap-2 rounded-md border p-2 text-xs",children:[_("span",{className:"flex-1",children:["Replace the tone and every standing instruction with a new install's defaults? The identity and models stay as they are, and the current ones stay in the history below.",g?" Unsaved changes here are dropped.":""]}),c(K,{size:"sm",variant:"destructive",onClick:()=>{e.call("config.resetPrefs",null).then(()=>{h(!1),i(null),l("The tone and standing instructions are back to the defaults."),n()},v=>{h(!1),l(v instanceof Error?v.message:String(v))})},children:"Reset"}),c(K,{size:"sm",variant:"ghost",onClick:()=>h(!1),children:"Cancel"})]}),u&&c("p",{className:"text-xs",children:u}),c(Hn,{rows:s.history.prefs,label:"View",load:v=>{e.call("config.historyText",{id:v}).then(y=>l(y.text))}})]})}function El(){let e=q(),[s,t]=E(""),[n,r]=E(""),[i,a]=E(""),[o,u]=E(!1),[l,d]=E("");return _("form",{className:"flex max-w-xl flex-col gap-3",onSubmit:async h=>{h.preventDefault(),u(!0);try{let f=await e.call("reviews.skip",{repository:s,number:Number(n),head:i});d(f.message)}catch(f){d(f instanceof Error?f.message:String(f))}finally{u(!1)}},children:[c("h3",{className:"font-medium",children:"Record a manual review"}),c("p",{className:"text-sm",children:"Mark one pull request commit as already reviewed. This prevents another automatic review of that commit and settles its queued notice. A later commit can still be reviewed. It posts nothing on GitHub and cannot cancel a review that has started."}),_("label",{children:["Repository",c(re,{required:!0,value:s,onChange:h=>t(h.target.value),placeholder:"owner/repository"})]}),_("label",{children:["Pull request number",c(re,{required:!0,type:"number",min:"1",max:"999999999",value:n,onChange:h=>r(h.target.value)})]}),_("label",{children:["Full commit",c(re,{required:!0,pattern:"[a-f0-9]{40}",value:i,onChange:h=>a(h.target.value)})]}),c(K,{type:"submit",disabled:o,children:"Mark as manually reviewed"}),l&&c("p",{role:"status",className:"text-sm",children:l})]})}var Sl=[{id:"ask",label:"Ask: a question before each message"},{id:"allow",label:"Allow: no question"}];function Al(){let e=q(),[s,t]=E(null),[n,r]=E(null),[i,a]=E(null),[o,u]=E(null),l=ie(()=>{e.call("relay.state",null).then(v=>{t(v),u(null)},v=>u(v instanceof Error?v.message:String(v)))},[e]);if(z(l,[l]),Ce("relay",l),!s)return o?c("p",{className:"text-sm text-destructive",children:o}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let d=n??s.targets,h=(v,y)=>r(d.map((k,I)=>I===v?{...k,...y}:k)),f=()=>{e.call("relay.save",{targets:d}).then(()=>{r(null),u(null),l()},v=>u(v instanceof Error?v.message:String(v)))},p=i??s.hosts,g=(v,y)=>a(p.map((k,I)=>I===v?{...k,...y}:k)),w=()=>{e.call("relay.saveHosts",{hosts:p}).then(()=>{a(null),u(null),l()},v=>u(v instanceof Error?v.message:String(v)))};return _("div",{className:"flex flex-col gap-6 text-sm",children:[_("section",{className:"flex flex-col gap-2",children:[_("p",{className:"text-xs text-muted-foreground",children:["Conversations the Orbit conversation may send a short message to with ",c("code",{children:"bb orbit relay"}),", such as your own assistant on your own machine: plain text, up to ",s.maxChars," characters, at most ",s.perHour," to a conversation an hour, each marked as relayed from Orbit. Ask puts a question on the Orbit conversation before each message; Allow sends it. An empty list relays nothing. Only you change this list, here."]}),d.length===0&&c("p",{className:"text-muted-foreground",children:"No conversations: nothing can be relayed."}),d.map((v,y)=>_("div",{className:"flex flex-wrap items-center gap-2",children:[c(re,{className:"w-48",value:v.threadId,placeholder:"thr_\u2026","aria-label":"Conversation id",onChange:k=>h(y,{threadId:k.target.value})}),c(re,{className:"w-56",value:v.label,placeholder:"Label, e.g. Claude on my Mac","aria-label":"Label",onChange:k=>h(y,{label:k.target.value})}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:v.mode,"aria-label":`${v.label||v.threadId}: mode`,onChange:k=>h(y,{mode:k.target.value}),children:Sl.map(k=>c("option",{value:k.id,children:k.label},k.id))}),c(K,{size:"sm",variant:"ghost",onClick:()=>r(d.filter((k,I)=>I!==y)),children:"Remove"})]},y)),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>r([...d,{threadId:"",label:"",mode:"ask"}]),children:"Add a conversation"}),c(K,{size:"sm",disabled:n===null,onClick:f,children:"Save"}),n!==null&&c(K,{size:"sm",variant:"ghost",onClick:()=>r(null),children:"Discard"})]}),o&&c("p",{className:"text-xs text-destructive",children:o})]}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Hosts"}),_("p",{className:"text-xs text-muted-foreground",children:["Your machines with no assistant conversation kept on them: ",c("code",{children:"bb orbit relay --host <name or role>"})," leaves the message as a small new file in the folder you give here (written by bb's daemon there, never over a file or outside the folder; no assistant is started), for the next Claude session on that machine to read. The machine must be online. Same limits and marking as above. Only you change this list, here."]}),p.length===0&&c("p",{className:"text-muted-foreground",children:"No hosts: nothing can be left."}),p.map((v,y)=>_("div",{className:"flex flex-wrap items-center gap-2",children:[c(re,{className:"w-40",value:v.host,placeholder:"bb machine id or name","aria-label":"Host",onChange:k=>g(y,{host:k.target.value})}),c(re,{className:"w-28",value:v.role,placeholder:"Role, e.g. laptop","aria-label":"Role",onChange:k=>g(y,{role:k.target.value})}),c(re,{className:"w-64",value:v.folder,placeholder:"/Users/you/Orbit/inbox","aria-label":"Folder",onChange:k=>g(y,{folder:k.target.value})}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:v.mode,"aria-label":`${v.host||"host"}: mode`,onChange:k=>g(y,{mode:k.target.value}),children:Sl.map(k=>c("option",{value:k.id,children:k.label},k.id))}),c(K,{size:"sm",variant:"ghost",onClick:()=>a(p.filter((k,I)=>I!==y)),children:"Remove"})]},y)),_("div",{className:"flex gap-2",children:[c(K,{size:"sm",variant:"secondary",onClick:()=>a([...p,{host:"",role:"",folder:"",mode:"ask"}]),children:"Add a host"}),c(K,{size:"sm",disabled:i===null,onClick:w,children:"Save"}),i!==null&&c(K,{size:"sm",variant:"ghost",onClick:()=>a(null),children:"Discard"})]})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Relayed messages"}),s.log.length===0?c("p",{className:"text-muted-foreground",children:"None yet."}):c("ul",{className:"divide-y text-xs",children:s.log.map((v,y)=>_("li",{className:"flex flex-col gap-1 py-2",children:[_("div",{className:"flex gap-2",children:[c("span",{className:"w-32 shrink-0 text-muted-foreground",children:new Date(v.at).toLocaleString()}),c("span",{className:v.outcome==="sent"?"w-14 shrink-0":"w-14 shrink-0 text-destructive",children:v.outcome}),_("span",{className:"flex-1",children:[v.label??"(not listed)"," ",c("span",{className:"font-mono text-muted-foreground",children:v.host!==null?`host ${v.host}`:v.threadId}),v.mode&&_("span",{className:"text-muted-foreground",children:[", ",v.mode]})]}),c("span",{className:"shrink-0 text-muted-foreground",children:v.how})]}),c("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 font-mono",children:v.text})]},y))})]})]})}function Cl(){let{rpc:e,state:s,error:t,refetch:n}=qe();return t?c("p",{className:"text-sm text-destructive",children:t}):s?_("div",{className:"flex flex-col gap-3 text-sm",children:[_("p",{className:"text-xs text-muted-foreground",children:["What Orbit does without being asked: reminders, routines and checks it set, in ",s.zone," (the plugin's time zone setting). Orbit adds them; you can cancel any."]}),s.schedules.length===0?c("p",{className:"text-muted-foreground",children:"Nothing scheduled."}):c("ul",{className:"divide-y text-xs",children:s.schedules.map(r=>_("li",{className:"flex items-center gap-2 py-2",children:[c("span",{className:"w-16 shrink-0 text-muted-foreground",children:r.kind}),c("span",{className:"flex-1",children:r.title}),c("span",{className:"w-56 shrink-0 text-muted-foreground",children:r.nextRun?`next ${new Date(r.nextRun).toLocaleString(void 0,{timeZone:s.zone})}`:r.when}),c("span",{className:"w-28 shrink-0 text-muted-foreground",children:r.lastStatus??""}),c(K,{size:"sm",variant:"ghost",onClick:()=>{e.call("schedule.cancel",{id:r.id}).then(n)},children:"Cancel"})]},r.id))})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}function Tl(){let{state:e,error:s}=qe();return s?c("p",{className:"text-sm text-destructive",children:s}):e?_("div",{className:"flex flex-col gap-3 text-sm",children:[_("p",{className:"text-xs text-muted-foreground",children:["What Orbit knows about each station and server: how its machine runs and how it reaches bb. Change them with"," ",c("code",{children:"bb orbit station set <name> --set key=value"})," (",c("code",{children:"--server"})," for a server), or bring in a checkout's files with"," ",c("code",{children:"bb orbit station import"}),"."]}),e.records.length===0?c("p",{className:"text-muted-foreground",children:"No station records yet."}):c("ul",{className:"divide-y text-xs",children:e.records.map(t=>_("li",{className:"flex flex-col gap-1 py-2",children:[_("div",{className:"flex items-center gap-2",children:[c("span",{className:"w-16 shrink-0 text-muted-foreground",children:t.kind}),c("span",{className:"flex-1 font-medium",children:t.name}),_("span",{className:"text-muted-foreground",children:[t.updatedBy,", ",new Date(t.updatedAt).toLocaleString()]})]}),c("pre",{className:"overflow-x-auto rounded bg-muted p-2 font-mono",children:t.toml.trimEnd()})]},`${t.kind}:${t.name}`))})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}var Xl=[{id:"reviews",title:"Reviews",description:"Record a manual review so it is not repeated automatically.",component:El},{id:"policy",title:"Policy",description:"What constrains Orbit: network and capabilities.",component:gl},{id:"preferences",title:"Preferences",description:"Identity, tone, models and standing instructions.",component:kl},{id:"schedule",title:"Schedule",description:"Orbit's reminders, routines and checks.",component:Cl},{id:"stations",title:"Stations",description:"Orbit's stations and servers: how each one runs and reaches bb.",component:Tl},{id:"approvals",title:"Approvals",description:"What station's capabilities may do without asking you.",component:ul},{id:"relay",title:"Relay",description:"The conversations and hosts Orbit may send a short message to, and what it sent.",component:Al}];function Nl(){let[e,s]=E("policy");return _("div",{className:"flex flex-col gap-4",children:[c("div",{role:"tablist","aria-label":"Orbit settings",className:"flex gap-1 border-b",children:Xl.map(t=>c("button",{id:`orbit-tab-${t.id}`,role:"tab",type:"button","aria-selected":e===t.id,"aria-controls":`orbit-panel-${t.id}`,className:At("-mb-px cursor-pointer border-b-2 px-3 py-2 text-sm font-medium",e===t.id?"border-foreground text-foreground":"border-transparent text-muted-foreground hover:text-foreground"),onClick:()=>s(t.id),children:t.title},t.id))}),Xl.map(({id:t,description:n,component:r})=>_("div",{id:`orbit-panel-${t}`,role:"tabpanel","aria-labelledby":`orbit-tab-${t}`,hidden:e!==t,className:"flex flex-col gap-3",children:[c("p",{className:"text-sm text-muted-foreground",children:n}),c(r,{})]},t))]})}async function Fl(e,s){let t=[s.orbit,s.background,...s.policyJobs??[]].filter(d=>!!d);if(!t.length)return{jobs:[],errors:[]};let r=(await e.threadSections.list()).find(d=>d.name==="Orbit"),i=[];if(r)for(let d=0;;d+=100){let h=await e.threads.list({sectionId:r.id,includeHidden:!0,limit:100,offset:d});if(i.push(...h.map(f=>f.id)),h.length<100)break}let a=await e.threads.experimental_listDescendants({threadIds:[...new Set([...t,...i])],includeHidden:!0,includeArchived:!1}),o=[...new Set([...t,...i,...a.threads.flatMap(d=>d.descendantIds)])],u=[],l=[];for(let d=0;d<o.length;d+=8)await Promise.all(o.slice(d,d+8).map(async h=>{try{let[f,p]=await Promise.all([e.threads.get({threadId:h}),e.threads.interactions.list({threadId:h})]);for(let g of p)g.status==="pending"&&u.push({title:f.title||"Untitled work",interaction:g})}catch{l.push(h)}}));return u.sort((d,h)=>d.interaction.createdAt-h.interaction.createdAt||d.interaction.id.localeCompare(h.interaction.id)),{jobs:u,errors:l}}function ni(e,s){return e.length>0&&e.every(t=>{let n=s[t.id];return!n||!t.multiSelect&&n.selected.length+(n.freeText?.trim()?1:0)>1||n.selected.some(r=>!t.options?.some(i=>i.value===r))||n.freeText?.trim()&&!t.allowFreeText?!1:n.selected.length>0||t.allowFreeText&&!!n.freeText?.trim()})}function Kl(e){let s=e.subject;switch(s.kind){case"command":return{title:"Approve running this command?",detail:s.cwd?`${s.command}
|
|
60
|
-
Working folder: ${
|
|
61
|
-
`)||"No additional access requested"}}}function
|
|
62
|
-
:root[${
|
|
56
|
+
`;)h+=e[h]==="\\"&&f==='"'?2:1;e[h]===f&&h++;continue}if(f==="]"){h+=d&&e[h+1]==="]"?2:1;break}h++}t(d?"array-table":"table",e.slice(i,h)),i=h,s="after"};for(;i<e.length;){let d=e[i];if(d===`
|
|
57
|
+
`){t("text",d),i++,r.length===0&&(s="key");continue}if(d===" "||d===" "||d==="\r"){t("text",d),i++;continue}if(d==="#"){let h=e.indexOf(`
|
|
58
|
+
`,i);h<0&&(h=e.length),e[h-1]==="\r"&&h--,t("comment",e.slice(i,h)),i=h;continue}if(s==="after"){t("text",d),i++;continue}if(s==="key"){if(d==="["&&r.length===0)o();else if(d==='"'||d==="'")a("key");else if(kl.test(d)){let h=i;for(;h<e.length&&kl.test(e[h]);)h++;t("key",e.slice(i,h)),i=h}else d==="."||d===","?(t("punctuation",d),i++):d==="="?(t("punctuation",d),i++,s="value"):d==="}"&&r[r.length-1]==="{"?(t("punctuation",d),i++,l()):(t("text",d),i++);continue}if(d==='"'||d==="'")a("string"),u();else if(d==="["||d==="{")t("punctuation",d),i++,r.push(d),s=d==="{"?"key":"value";else if(d==="]"&&r[r.length-1]==="["||d==="}"&&r[r.length-1]==="{")t("punctuation",d),i++,l();else if(d===",")t("punctuation",d),i++,s=r[r.length-1]==="{"?"key":"value";else if(ai.test(d)){let h=i;for(;h<e.length&&ai.test(e[h]);)h++;if(/^\d{4}-\d{2}-\d{2}$/.test(e.slice(i,h))&&/^ \d{2}:/.test(e.slice(h,h+4)))for(h++;h<e.length&&ai.test(e[h]);)h++;let f=e.slice(i,h);t(f==="true"||f==="false"?"boolean":dh.test(f)?"number":uh.test(f)?"datetime":"text",f),i=h,u()}else t("text",d),i++}return n;function u(){r.length===0&&(s="after")}function l(){r.pop(),s=r.length===0?"after":r[r.length-1]==="["?"value":"key"}}var Sl={table:"rounded-sm bg-muted text-timeline-accent","array-table":"rounded-sm bg-muted text-timeline-accent",key:"text-file-accent",string:"text-foreground",escape:"text-warning-text",number:"text-warning-text",datetime:"text-warning-text",boolean:"text-warning-text",comment:"text-muted-foreground",punctuation:"text-muted-foreground",text:""},hh=2e5,Al="m-0 border-0 p-2 font-mono text-xs leading-5 whitespace-pre [tab-size:4] [scrollbar-gutter:stable]",oi=class extends Zs{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.plain:this.props.children}};function fh(e){if(e.length>hh)return null;try{let n=El(e);return n.map(t=>t.text).join("")===e?n:null}catch{return null}}function Cl({value:e,onChange:n}){let t=ce(null),s=at(()=>fh(e),[e]),r=c("textarea",{"aria-label":"policy.toml",className:"h-96 w-full rounded-md border bg-background p-2 font-mono text-xs",spellCheck:!1,value:e,onChange:i=>n(i.target.value)});return s?c(oi,{plain:r,children:_("div",{className:"relative h-96 w-full resize-y overflow-hidden rounded-md border bg-background focus-within:ring-1 focus-within:ring-ring",children:[_("pre",{ref:t,"aria-hidden":!0,className:`pointer-events-none absolute inset-0 overflow-hidden text-foreground forced-colors:hidden ${Al}`,children:[s.map((i,a)=>Sl[i.kind]?c("span",{className:Sl[i.kind],children:i.text},a):i.text),`
|
|
59
|
+
`]}),c("textarea",{"aria-label":"policy.toml",className:`absolute inset-0 h-full w-full resize-none overflow-auto bg-transparent text-transparent caret-foreground outline-none forced-colors:text-[CanvasText] ${Al}`,spellCheck:!1,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",wrap:"off",value:e,onChange:i=>n(i.target.value),onScroll:i=>{t.current&&(t.current.scrollTop=i.currentTarget.scrollTop,t.current.scrollLeft=i.currentTarget.scrollLeft)}})]})}):r}function Ze(){let e=q(),[n,t]=E(null),[s,r]=E(null),i=re(()=>{e.call("config.state",null).then(a=>{t(a),r(null)},a=>r(a instanceof Error?a.message:String(a)))},[e]);return z(i,[i]),Ae("config",i),{rpc:e,state:n,error:s,refetch:i}}function Bs(e,n){let t=URL.createObjectURL(new Blob([n],{type:"application/toml"})),s=document.createElement("a");s.href=t,s.download=e,s.click(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}function Os(e){let n=document.createElement("input");n.type="file",n.accept=".toml,text/plain",n.onchange=()=>{n.files?.[0]?.text().then(e)},n.click()}function Tl(e){let n=document.createElement("input");n.type="file",n.accept="image/png,image/jpeg,image/webp,image/svg+xml,.png,.jpg,.jpeg,.webp,.svg",n.onchange=()=>{let t=n.files?.[0];if(!t)return;let s=new FileReader;s.onload=()=>e({name:t.name,base64:String(s.result).replace(/^data:[^,]*,/,"")}),s.readAsDataURL(t)},n.click()}function Hs({at:e,by:n}){return e?_("span",{className:"text-xs text-muted-foreground",children:["Last changed ",new Date(e).toLocaleString(),n?` by ${n}`:""]}):null}function Qs({rows:e,load:n,label:t}){return e.length===0?null:_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"History"}),c("ul",{className:"divide-y text-xs",children:e.map(s=>_("li",{className:"flex items-center gap-2 py-1.5",children:[c("span",{className:"w-40 shrink-0 text-muted-foreground",children:new Date(s.at).toLocaleString()}),c("span",{className:"flex-1",children:s.by}),c(F,{size:"sm",variant:"ghost",onClick:()=>n(s.id),children:t})]},s.id))})]})}function Xl(){let{rpc:e,state:n,error:t,refetch:s}=Ze(),[r,i]=E(null),[a,o]=E(null),[u,l]=E(!1),[d,h]=E(null),[f,p]=E(null),x=r??n?.policy.text??"",w=n!==null&&r!==null&&r!==n.policy.text;if(z(()=>{if(r===null)return o(null);let k=setTimeout(()=>{e.call("config.checkPolicy",{text:r}).then(I=>o(I.error))},300);return()=>clearTimeout(k)},[r,e]),t)return c("p",{className:"text-sm text-destructive",children:t});if(!n)return c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let b=f??n.stations.map(k=>k.name),y=async k=>{l(!0),h(null);try{await e.call("config.applyPolicy",{stations:b,dryRun:k}),s()}catch(I){h(I instanceof Error?I.message:String(I))}finally{l(!1)}};return _("div",{className:"flex flex-col gap-4 text-sm",children:[c("p",{className:"text-xs text-muted-foreground",children:"What constrains Orbit: the network its stations reach and the capabilities its broker runs. Orbit can't change this. Saving checks it; it reaches stations when you apply it."}),c(Cl,{value:x,onChange:i}),a&&c("p",{className:"whitespace-pre-wrap text-xs text-destructive",children:a}),_("div",{className:"flex flex-wrap items-center gap-2",children:[c(F,{size:"sm",disabled:!w||!!a||u,onClick:()=>{l(!0),e.call("config.savePolicy",{text:x}).then(()=>{i(null),h("Saved. Apply it to the stations below when you're ready."),s()},k=>h(k instanceof Error?k.message:String(k))).finally(()=>l(!1))},children:"Save"}),c(F,{size:"sm",variant:"ghost",disabled:!w,onClick:()=>i(null),children:"Revert"}),c(F,{size:"sm",variant:"secondary",onClick:()=>Bs("policy.toml",n.policy.text),children:"Export"}),c(F,{size:"sm",variant:"secondary",onClick:()=>Os(k=>i(k)),children:"Import\u2026"}),c(Hs,{at:n.policy.updatedAt,by:n.policy.updatedBy})]}),d&&c("p",{className:"text-xs",children:d}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Apply to stations"}),c("p",{className:"mb-2 text-xs text-muted-foreground",children:"This policy reaches a station through the station deploy, which runs on the machine that manages it, so that machine must be on. This button runs it there (it installs the station's bundle too). Review shows what would change without changing anything."}),c("div",{className:"mb-2 flex flex-wrap gap-3",children:n.stations.map(k=>_("label",{className:"flex items-center gap-1.5 text-xs",children:[c("input",{type:"checkbox",checked:b.includes(k.name),onChange:I=>p(I.target.checked?[...b,k.name]:b.filter(R=>R!==k.name))}),c("span",{className:"font-mono",children:k.name}),_("span",{className:"text-muted-foreground",children:["(",k.os,k.connected?"":", offline",")"]})]},k.name))}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",disabled:u||w||b.length===0,onClick:()=>{y(!0)},children:"Review"}),c(F,{size:"sm",disabled:u||w||b.length===0,onClick:()=>{y(!1)},children:"Apply"}),w&&c("span",{className:"text-xs text-muted-foreground",children:"Save first."})]}),n.jobs.length>0&&c("ul",{className:"mt-3 flex flex-col gap-2",children:n.jobs.map(k=>_("li",{children:[_("div",{className:"text-xs",children:[c("span",{className:"font-mono",children:k.station}),": ",k.dryRun?"review ":"",c("span",{className:k.status==="failed"?"text-destructive":"",children:k.status}),k.code!==null&&k.status!=="done"?` (exit ${k.code})`:""]}),k.output&&c("pre",{className:"mt-1 max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-muted p-2 text-xs",children:k.output})]},k.station))})]}),c(Qs,{rows:n.history.policy,load:k=>{e.call("config.historyText",{id:k}).then(I=>i(I.text))},label:"Load into the editor"})]})}var Nl=["claude-code","codex"],ph=["claude-code"],Kl="claude-code";function Us(e,n){return`${e} ${n}`}function Fl(e){let n=e.indexOf(" ");return{provider:e.slice(0,n),model:e.slice(n+1)}}function _h(e,n,t=!1){return n==="orbit"?ph.includes(e)?null:"the Orbit conversation needs Claude Code: the station's managed settings, command filter and guide are Claude Code's":n==="station"?e===Kl?null:e!=="codex"?"station work runs on Claude Code or Codex":t?null:"station work on Codex needs Codex installed on a station":Nl.includes(e)?null:`Orbit starts assistants only on ${Nl.join(" or ")}`}function Rl(e,n,t,s=!1){let r=e.providers.map(a=>{let o=_h(a.provider,n,s),u=n==="agents"&&a.provider!==Kl&&!o?`${a.hosts.join(", ")}; your listed machines only`:a.hosts.join(", ");return{label:`${a.name} (on ${u})${o?`: ${o}`:""}`,disabled:o,options:a.models.map(l=>({value:Us(a.provider,l.id),label:`${l.name} (${l.id})${l.isDefault?`, ${a.name}'s default`:""}`}))}}),i=e.providers.some(a=>a.provider===t.provider&&a.models.some(o=>o.id===t.model));return t.model&&!i&&r.unshift({label:"Saved",disabled:null,options:[{value:Us(t.provider,t.model),label:`${t.model} on ${t.provider} (not offered now)`}]}),r}var mh=[["name","Name","Formal: commits' author and mail's display name."],["nickname","Nickname","What it's called day to day (empty: the name)."],["email","Email address","Where it commits and sends mail from."],["github","GitHub username","Its GitHub account."],["bio","Bio","One or two plain sentences, for introductions."],["pronouns","Pronouns","A note (optional)."],["signature","Signature","How it signs mail, one line under the sign-off (optional; the nickname, else the name)."],["owner","Owner",'Who it works for, by name (empty: "your owner"). Only you can change it here.']],xh=[["orbit","In the Orbit conversation"],["work","On the conversations it starts"]];function gh(e,n,t){let s={...e};return t.trim()||n==="name"?s[n]=t:delete s[n],s}function bh(){let e=q(),[n,t]=E(null);return z(()=>{e.call("config.models",null).then(t,s=>t({providers:[],error:s instanceof Error?s.message:String(s)}))},[e]),n}function li({label:e,which:n,list:t,value:s,onChange:r,hasCodex:i=!1}){return _("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:e}),t&&t.providers.some(a=>a.models.length>0)?c("select",{className:"h-9 rounded-md border border-input bg-background px-2 text-sm",value:Us(s.provider,s.model),onChange:a=>r(Fl(a.target.value)),children:Rl(t,n,s,i).map(a=>c("optgroup",{label:a.label,disabled:a.disabled!==null,children:a.options.map(o=>c("option",{value:o.value,children:o.label},o.value))},a.label))}):c(ie,{value:s.model,disabled:!t,onChange:a=>r({provider:s.provider,model:a.target.value})})]})}function vh({list:e,codexStations:n}){if(!e)return c("span",{className:"text-xs text-muted-foreground",children:"Loading the models bb offers\u2026"});let t=e.providers.filter(s=>s.error);return e.providers.some(s=>s.models.length>0)?_("span",{className:"text-xs text-muted-foreground",children:["The models of each provider bb has on your connected stations and listed machines. The Orbit conversation runs on Claude Code. Work on a station runs on Claude Code, or on Codex",n.length?` (on ${n.join(", ")})`:" once a station has it installed",". On your listed machines assistants and chats can also run on Codex.",t.length>0&&` Not listed: ${t.map(s=>`${s.name} (${s.error})`).join("; ")}.`]}):_("span",{className:"text-xs text-muted-foreground",children:["bb couldn't list its models",e.error?` (${e.error})`:t.length?` (${t.map(s=>`${s.name}: ${s.error}`).join("; ")})`:"","; type a model id, like claude-sonnet-5-5."]})}var zs=e=>typeof e=="string"?e:e.text;function yh(e,n){return new Date(e).toLocaleString("en-US",{timeZone:n,weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"})}function wh({r:e,n,zone:t,onChange:s,onRemove:r}){let i=q(),[a,o]=E(!1),[u,l]=E(""),[d,h]=E(null),f=typeof e=="string"?null:e.until,p=f!==null&&Date.parse(f)<=Date.now();return _("li",{className:"flex flex-col gap-1 text-xs",children:[_("div",{className:"flex items-center gap-2",children:[_("span",{className:"w-5 text-muted-foreground",children:[n,"."]}),c("span",{className:`flex-1 ${p?"text-muted-foreground line-through":""}`,children:zs(e)}),f!==null&&c("span",{className:p?"text-destructive":"text-muted-foreground",children:`${p?"Lapsed":"Until"} ${yh(f,t)}`}),f!==null&&c(F,{size:"sm",variant:p?"secondary":"ghost",onClick:()=>o(!a),children:"Renew"}),c(F,{size:"sm",variant:"ghost",onClick:r,children:"Remove"})]}),a&&_("div",{className:"ml-7 flex flex-wrap items-center gap-2",children:[c(ie,{type:"datetime-local",className:"w-56",value:u,onChange:x=>l(x.target.value)}),_("span",{className:"text-muted-foreground",children:["in ",t]}),c(F,{size:"sm",variant:"secondary",disabled:!u,onClick:()=>{i.call("config.untilInstant",{at:u}).then(x=>{if(x.until===null)return h(x.problem);h(null),o(!1),s({text:zs(e),until:x.until})},x=>h(x instanceof Error?x.message:String(x)))},children:"Until then"}),c(F,{size:"sm",variant:"ghost",onClick:()=>{o(!1),s(zs(e))},children:"No end"}),d&&c("span",{className:"text-destructive",children:d})]})]})}function Ll(){let{rpc:e,state:n,error:t,refetch:s}=Ze(),[r,i]=E(null),[a,o]=E(""),[u,l]=E(null),[d,h]=E(!1),f=bh();if(t)return c("p",{className:"text-sm text-destructive",children:t});if(!n)return c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let p=r??n.prefs,x=r!==null&&JSON.stringify(r)!==JSON.stringify(n.prefs),w=b=>{e.call("config.savePrefs",{prefs:b}).then(()=>{i(null),l("Saved. I will use these settings now or at my next check."),s()},y=>l(y instanceof Error?y.message:String(y)))};return _("div",{className:"flex flex-col gap-4 text-sm",children:[c("p",{className:"text-xs text-muted-foreground",children:"How Orbit works with you. Orbit can propose changes; you approve them when asked. Facts about people and accounts live in bb memory."}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Identity"}),c("div",{className:"flex flex-wrap gap-4",children:mh.map(([b,y,k])=>_("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:y}),c(ie,{value:p.identity[b]??"",onChange:I=>i({...p,identity:gh(p.identity,b,I.target.value)})}),c("span",{className:"text-xs text-muted-foreground",children:k})]},b))}),c("p",{className:"text-xs text-muted-foreground",children:"The station gets these as /usr/local/orbit/etc/identity.json, for commits, mail and introductions. The email address and GitHub username must be the assistant's real accounts: changing them here doesn't change the accounts, so change the account first. With no email address, assistants don't commit or send mail. Old commits, sent mail and the journal keep the name they were written with. No passwords or tokens here."})]}),_("label",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:"Tone and persona"}),c("textarea",{className:"h-24 w-full rounded-md border bg-background p-2 text-xs",value:p.tone,onChange:b=>i({...p,tone:b.target.value})})]}),_("section",{className:"flex flex-col gap-2",children:[_("div",{className:"flex flex-wrap gap-4",children:[c(li,{label:"Orbit conversation's model",which:"orbit",list:f,value:{provider:p.models.orbit_provider,model:p.models.orbit},onChange:b=>i({...p,models:{...p.models,orbit:b.model,orbit_provider:b.provider}})}),c(li,{label:"Assistants' and chats' model (your listed machines)",which:"agents",list:f,value:{provider:p.models.agents_provider,model:p.models.agents},onChange:b=>i({...p,models:{...p.models,agents:b.model,agents_provider:b.provider}})}),c(li,{label:"Station work's model",which:"station",list:f,hasCodex:n.codexStations.length>0,value:{provider:p.models.station_provider,model:p.models.station},onChange:b=>i({...p,models:{...p.models,station:b.model,station_provider:b.provider}})})]}),c(vh,{list:f,codexStations:n.codexStations})]}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Avatar in chat"}),c("div",{className:"flex flex-wrap gap-6",children:xh.map(([b,y])=>_("div",{className:"flex items-center gap-3",children:[c(qt,{url:p.avatar[b],label:y,size:48}),_("div",{className:"flex flex-col gap-1",children:[c("span",{className:"font-medium",children:y}),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>Tl(k=>{e.call("config.avatarFromUpload",k).then(I=>I.url?i({...p,avatar:{...p.avatar,[b]:I.url}}):l(I.problem),I=>l(I instanceof Error?I.message:String(I)))}),children:p.avatar[b]?"Replace\u2026":"Choose\u2026"}),c(F,{size:"sm",variant:"ghost",disabled:!p.avatar[b],onClick:()=>{let{[b]:k,...I}=p.avatar;i({...p,avatar:I})},children:"Clear"})]})]})]},b))}),c("p",{className:"text-xs text-muted-foreground",children:"Shown beside the assistant's replies in bb's chat: a PNG, JPEG, WebP or SVG of at most 128 KB. Orbit can propose one; you approve it when asked. Save to apply a change here."})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Standing instructions"}),p.instructions.length===0&&c("p",{className:"text-xs text-muted-foreground",children:"None yet."}),[p.tone,...p.instructions.map(zs)].some(b=>b.includes("{{owner}}"))&&_("p",{className:"mb-1 text-xs text-muted-foreground",children:["{{owner}}"," here and in the tone stands for the owner's name in the identity."]}),c("ol",{className:"flex flex-col gap-1",children:p.instructions.map((b,y)=>c(wh,{r:b,n:y+1,zone:n.zone,onChange:k=>i({...p,instructions:p.instructions.map((I,R)=>R===y?k:I)}),onRemove:()=>i({...p,instructions:p.instructions.filter((k,I)=>I!==y)})},y))}),_("div",{className:"mt-2 flex gap-2",children:[c(ie,{placeholder:"e.g. Never book anything before 9am",value:a,onChange:b=>o(b.target.value)}),c(F,{size:"sm",variant:"secondary",disabled:!a.trim(),onClick:()=>{i({...p,instructions:[...p.instructions,a.trim()]}),o("")},children:"Add"})]})]}),_("div",{className:"flex flex-wrap items-center gap-2",children:[c(F,{size:"sm",disabled:!x,onClick:()=>w(p),children:"Save"}),c(F,{size:"sm",variant:"ghost",disabled:!x,onClick:()=>i(null),children:"Revert"}),c(F,{size:"sm",variant:"secondary",onClick:()=>{e.call("config.exportPrefs",null).then(b=>Bs("prefs.toml",b.text))},children:"Export"}),c(F,{size:"sm",variant:"secondary",onClick:()=>Os(b=>{e.call("config.importPrefs",{text:b}).then(()=>{i(null),l("Imported and saved."),s()},y=>l(y instanceof Error?y.message:String(y)))}),children:"Import\u2026"}),c(F,{size:"sm",variant:"secondary",disabled:d,onClick:()=>h(!0),children:"Reset to defaults\u2026"}),c(Hs,{at:n.prefsUpdatedAt})]}),d&&_("div",{className:"flex flex-wrap items-center gap-2 rounded-md border p-2 text-xs",children:[_("span",{className:"flex-1",children:["Replace the tone and every standing instruction with a new install's defaults? The identity and models stay as they are, and the current ones stay in the history below.",x?" Unsaved changes here are dropped.":""]}),c(F,{size:"sm",variant:"destructive",onClick:()=>{e.call("config.resetPrefs",null).then(()=>{h(!1),i(null),l("The tone and standing instructions are back to the defaults."),s()},b=>{h(!1),l(b instanceof Error?b.message:String(b))})},children:"Reset"}),c(F,{size:"sm",variant:"ghost",onClick:()=>h(!1),children:"Cancel"})]}),u&&c("p",{className:"text-xs",children:u}),c(Qs,{rows:n.history.prefs,label:"View",load:b=>{e.call("config.historyText",{id:b}).then(y=>l(y.text))}})]})}function Il(){let e=q(),[n,t]=E(""),[s,r]=E(""),[i,a]=E(""),[o,u]=E(!1),[l,d]=E("");return _("form",{className:"flex max-w-xl flex-col gap-3",onSubmit:async h=>{h.preventDefault(),u(!0);try{let f=await e.call("reviews.skip",{repository:n,number:Number(s),head:i});d(f.message)}catch(f){d(f instanceof Error?f.message:String(f))}finally{u(!1)}},children:[c("h3",{className:"font-medium",children:"Record a manual review"}),c("p",{className:"text-sm",children:"Mark one pull request commit as already reviewed. This prevents another automatic review of that commit and settles its queued notice. A later commit can still be reviewed. It posts nothing on GitHub and cannot cancel a review that has started."}),_("label",{children:["Repository",c(ie,{required:!0,value:n,onChange:h=>t(h.target.value),placeholder:"owner/repository"})]}),_("label",{children:["Pull request number",c(ie,{required:!0,type:"number",min:"1",max:"999999999",value:s,onChange:h=>r(h.target.value)})]}),_("label",{children:["Full commit",c(ie,{required:!0,pattern:"[a-f0-9]{40}",value:i,onChange:h=>a(h.target.value)})]}),c(F,{type:"submit",disabled:o,children:"Mark as manually reviewed"}),l&&c("p",{role:"status",className:"text-sm",children:l})]})}var Dl=[{id:"ask",label:"Ask: a question before each message"},{id:"allow",label:"Allow: no question"}];function Pl(){let e=q(),[n,t]=E(null),[s,r]=E(null),[i,a]=E(null),[o,u]=E(null),l=re(()=>{e.call("relay.state",null).then(b=>{t(b),u(null)},b=>u(b instanceof Error?b.message:String(b)))},[e]);if(z(l,[l]),Ae("relay",l),!n)return o?c("p",{className:"text-sm text-destructive",children:o}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"});let d=s??n.targets,h=(b,y)=>r(d.map((k,I)=>I===b?{...k,...y}:k)),f=()=>{e.call("relay.save",{targets:d}).then(()=>{r(null),u(null),l()},b=>u(b instanceof Error?b.message:String(b)))},p=i??n.hosts,x=(b,y)=>a(p.map((k,I)=>I===b?{...k,...y}:k)),w=()=>{e.call("relay.saveHosts",{hosts:p}).then(()=>{a(null),u(null),l()},b=>u(b instanceof Error?b.message:String(b)))};return _("div",{className:"flex flex-col gap-6 text-sm",children:[_("section",{className:"flex flex-col gap-2",children:[_("p",{className:"text-xs text-muted-foreground",children:["Conversations the Orbit conversation may send a short message to with ",c("code",{children:"bb orbit relay"}),", such as your own assistant on your own machine: plain text, up to ",n.maxChars," characters, at most ",n.perHour," to a conversation an hour, each marked as relayed from Orbit. Ask puts a question on the Orbit conversation before each message; Allow sends it. An empty list relays nothing. Only you change this list, here."]}),d.length===0&&c("p",{className:"text-muted-foreground",children:"No conversations: nothing can be relayed."}),d.map((b,y)=>_("div",{className:"flex flex-wrap items-center gap-2",children:[c(ie,{className:"w-48",value:b.threadId,placeholder:"thr_\u2026","aria-label":"Conversation id",onChange:k=>h(y,{threadId:k.target.value})}),c(ie,{className:"w-56",value:b.label,placeholder:"Label, e.g. Claude on my Mac","aria-label":"Label",onChange:k=>h(y,{label:k.target.value})}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:b.mode,"aria-label":`${b.label||b.threadId}: mode`,onChange:k=>h(y,{mode:k.target.value}),children:Dl.map(k=>c("option",{value:k.id,children:k.label},k.id))}),c(F,{size:"sm",variant:"ghost",onClick:()=>r(d.filter((k,I)=>I!==y)),children:"Remove"})]},y)),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>r([...d,{threadId:"",label:"",mode:"ask"}]),children:"Add a conversation"}),c(F,{size:"sm",disabled:s===null,onClick:f,children:"Save"}),s!==null&&c(F,{size:"sm",variant:"ghost",onClick:()=>r(null),children:"Discard"})]}),o&&c("p",{className:"text-xs text-destructive",children:o})]}),_("section",{className:"flex flex-col gap-2",children:[c("h3",{className:"font-medium",children:"Hosts"}),_("p",{className:"text-xs text-muted-foreground",children:["Your machines with no assistant conversation kept on them: ",c("code",{children:"bb orbit relay --host <name or role>"})," leaves the message as a small new file in the folder you give here (written by bb's daemon there, never over a file or outside the folder; no assistant is started), for the next Claude session on that machine to read. The machine must be online. Same limits and marking as above. Only you change this list, here."]}),p.length===0&&c("p",{className:"text-muted-foreground",children:"No hosts: nothing can be left."}),p.map((b,y)=>_("div",{className:"flex flex-wrap items-center gap-2",children:[c(ie,{className:"w-40",value:b.host,placeholder:"bb machine id or name","aria-label":"Host",onChange:k=>x(y,{host:k.target.value})}),c(ie,{className:"w-28",value:b.role,placeholder:"Role, e.g. laptop","aria-label":"Role",onChange:k=>x(y,{role:k.target.value})}),c(ie,{className:"w-64",value:b.folder,placeholder:"/Users/you/Orbit/inbox","aria-label":"Folder",onChange:k=>x(y,{folder:k.target.value})}),c("select",{className:"rounded-md border bg-background px-2 py-1",value:b.mode,"aria-label":`${b.host||"host"}: mode`,onChange:k=>x(y,{mode:k.target.value}),children:Dl.map(k=>c("option",{value:k.id,children:k.label},k.id))}),c(F,{size:"sm",variant:"ghost",onClick:()=>a(p.filter((k,I)=>I!==y)),children:"Remove"})]},y)),_("div",{className:"flex gap-2",children:[c(F,{size:"sm",variant:"secondary",onClick:()=>a([...p,{host:"",role:"",folder:"",mode:"ask"}]),children:"Add a host"}),c(F,{size:"sm",disabled:i===null,onClick:w,children:"Save"}),i!==null&&c(F,{size:"sm",variant:"ghost",onClick:()=>a(null),children:"Discard"})]})]}),_("section",{children:[c("h3",{className:"mb-1 font-medium",children:"Relayed messages"}),n.log.length===0?c("p",{className:"text-muted-foreground",children:"None yet."}):c("ul",{className:"divide-y text-xs",children:n.log.map((b,y)=>_("li",{className:"flex flex-col gap-1 py-2",children:[_("div",{className:"flex gap-2",children:[c("span",{className:"w-32 shrink-0 text-muted-foreground",children:new Date(b.at).toLocaleString()}),c("span",{className:b.outcome==="sent"?"w-14 shrink-0":"w-14 shrink-0 text-destructive",children:b.outcome}),_("span",{className:"flex-1",children:[b.label??"(not listed)"," ",c("span",{className:"font-mono text-muted-foreground",children:b.host!==null?`host ${b.host}`:b.threadId}),b.mode&&_("span",{className:"text-muted-foreground",children:[", ",b.mode]})]}),c("span",{className:"shrink-0 text-muted-foreground",children:b.how})]}),c("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap break-words rounded-md bg-muted p-2 font-mono",children:b.text})]},y))})]})]})}function Ml(){let{rpc:e,state:n,error:t,refetch:s}=Ze();return t?c("p",{className:"text-sm text-destructive",children:t}):n?_("div",{className:"flex flex-col gap-3 text-sm",children:[_("p",{className:"text-xs text-muted-foreground",children:["What Orbit does without being asked: reminders, routines and checks it set, in ",n.zone," (the plugin's time zone setting). Orbit adds them; you can cancel any."]}),n.schedules.length===0?c("p",{className:"text-muted-foreground",children:"Nothing scheduled."}):c("ul",{className:"divide-y text-xs",children:n.schedules.map(r=>_("li",{className:"flex items-center gap-2 py-2",children:[c("span",{className:"w-16 shrink-0 text-muted-foreground",children:r.kind}),c("span",{className:"flex-1",children:r.title}),c("span",{className:"w-56 shrink-0 text-muted-foreground",children:r.nextRun?`next ${new Date(r.nextRun).toLocaleString(void 0,{timeZone:n.zone})}`:r.when}),c("span",{className:"w-28 shrink-0 text-muted-foreground",children:r.lastStatus??""}),c(F,{size:"sm",variant:"ghost",onClick:()=>{e.call("schedule.cancel",{id:r.id}).then(s)},children:"Cancel"})]},r.id))})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}function Bl(){let{state:e,error:n}=Ze();return n?c("p",{className:"text-sm text-destructive",children:n}):e?_("div",{className:"flex flex-col gap-3 text-sm",children:[_("p",{className:"text-xs text-muted-foreground",children:["What Orbit knows about each station and server: how its machine runs and how it reaches bb. Change them with"," ",c("code",{children:"bb orbit station set <name> --set key=value"})," (",c("code",{children:"--server"})," for a server), or bring in a checkout's files with"," ",c("code",{children:"bb orbit station import"}),"."]}),e.records.length===0?c("p",{className:"text-muted-foreground",children:"No station records yet."}):c("ul",{className:"divide-y text-xs",children:e.records.map(t=>_("li",{className:"flex flex-col gap-1 py-2",children:[_("div",{className:"flex items-center gap-2",children:[c("span",{className:"w-16 shrink-0 text-muted-foreground",children:t.kind}),c("span",{className:"flex-1 font-medium",children:t.name}),_("span",{className:"text-muted-foreground",children:[t.updatedBy,", ",new Date(t.updatedAt).toLocaleString()]})]}),c("pre",{className:"overflow-x-auto rounded bg-muted p-2 font-mono",children:t.toml.trimEnd()})]},`${t.kind}:${t.name}`))})]}):c("p",{className:"text-sm text-muted-foreground",children:"Loading\u2026"})}var Ol=[{id:"reviews",title:"Reviews",description:"Record a manual review so it is not repeated automatically.",component:Il},{id:"policy",title:"Policy",description:"What constrains Orbit: network and capabilities.",component:Xl},{id:"preferences",title:"Preferences",description:"Identity, tone, models and standing instructions.",component:Ll},{id:"schedule",title:"Schedule",description:"Orbit's reminders, routines and checks.",component:Ml},{id:"stations",title:"Stations",description:"Orbit's stations and servers: how each one runs and reaches bb.",component:Bl},{id:"approvals",title:"Approvals",description:"What station's capabilities may do without asking you.",component:wl},{id:"relay",title:"Relay",description:"The conversations and hosts Orbit may send a short message to, and what it sent.",component:Pl}];function Hl(){let[e,n]=E("policy");return _("div",{className:"flex flex-col gap-4",children:[c("div",{role:"tablist","aria-label":"Orbit settings",className:"flex gap-1 border-b",children:Ol.map(t=>c("button",{id:`orbit-tab-${t.id}`,role:"tab",type:"button","aria-selected":e===t.id,"aria-controls":`orbit-panel-${t.id}`,className:At("-mb-px cursor-pointer border-b-2 px-3 py-2 text-sm font-medium",e===t.id?"border-foreground text-foreground":"border-transparent text-muted-foreground hover:text-foreground"),onClick:()=>n(t.id),children:t.title},t.id))}),Ol.map(({id:t,description:s,component:r})=>_("div",{id:`orbit-panel-${t}`,role:"tabpanel","aria-labelledby":`orbit-tab-${t}`,hidden:e!==t,className:"flex flex-col gap-3",children:[c("p",{className:"text-sm text-muted-foreground",children:s}),c(r,{})]},t))]})}async function Ql(e,n){let t=[n.orbit,n.background,...n.policyJobs??[]].filter(d=>!!d);if(!t.length)return{jobs:[],errors:[]};let r=(await e.threadSections.list()).find(d=>d.name==="Orbit"),i=[];if(r)for(let d=0;;d+=100){let h=await e.threads.list({sectionId:r.id,includeHidden:!0,limit:100,offset:d});if(i.push(...h.map(f=>f.id)),h.length<100)break}let a=await e.threads.experimental_listDescendants({threadIds:[...new Set([...t,...i])],includeHidden:!0,includeArchived:!1}),o=[...new Set([...t,...i,...a.threads.flatMap(d=>d.descendantIds)])],u=[],l=[];for(let d=0;d<o.length;d+=8)await Promise.all(o.slice(d,d+8).map(async h=>{try{let[f,p]=await Promise.all([e.threads.get({threadId:h}),e.threads.interactions.list({threadId:h})]);for(let x of p)x.status==="pending"&&u.push({title:f.title||"Untitled work",interaction:x})}catch{l.push(h)}}));return u.sort((d,h)=>d.interaction.createdAt-h.interaction.createdAt||d.interaction.id.localeCompare(h.interaction.id)),{jobs:u,errors:l}}function ci(e,n){return e.length>0&&e.every(t=>{let s=n[t.id];return!s||!t.multiSelect&&s.selected.length+(s.freeText?.trim()?1:0)>1||s.selected.some(r=>!t.options?.some(i=>i.value===r))||s.freeText?.trim()&&!t.allowFreeText?!1:s.selected.length>0||t.allowFreeText&&!!s.freeText?.trim()})}function Ul(e){let n=e.subject;switch(n.kind){case"command":return{title:"Approve running this command?",detail:n.cwd?`${n.command}
|
|
60
|
+
Working folder: ${n.cwd}`:n.command};case"file_change":return{title:"Approve changing files?",detail:n.writeScope??"Files shown in the work"};case"plan":return{title:"Approve this plan?",detail:n.plan};case"tool_use":return{title:n.presentation.title??`Approve using ${n.tool}?`,detail:n.presentation.detail??n.tool};case"permission_grant":return{title:"Approve this access?",detail:[...(n.permissions.fileSystem?.read??[]).map(t=>`Read files: ${t}`),...(n.permissions.fileSystem?.write??[]).map(t=>`Change files: ${t}`),...n.permissions.network?.enabled?["Use the network"]:[]].join(`
|
|
61
|
+
`)||"No additional access requested"}}}function zl(){let{scope:e}=Fi();return c($l,{onlyThread:e.kind==="thread"?e.threadId:""})}function $l({onlyThread:e}){let n=q(),t=Li(),[s,r]=E(null),[i,a]=E(null),o=ce(()=>{});if(z(()=>{let d=!0,h=!1,f=!1,p,x=async()=>{if(h){f=!0;return}clearTimeout(p),h=!0;do{f=!1;try{let y=await n.call("work.parents",null);if(e!==void 0&&e!==y.orbit)d&&!f&&(r({orbit:y.orbit,jobs:[],warning:null}),a(null));else{let{jobs:k,errors:I}=await Ql(t,y);d&&!f&&(r(R=>({orbit:y.orbit,jobs:[...k,...R?.jobs.filter(L=>I.includes(L.interaction.threadId))??[]],warning:I.length?"Some work could not be checked. Trying again.":null})),a(null))}}catch{d&&!f&&a("Could not check waiting work. Trying again.")}}while(d&&f);h=!1,d&&(p=setTimeout(()=>{x()},5e3))};o.current=()=>{x()};let w=t.subscribe({event:"thread:changed",callback:y=>{y.changes.some(k=>["interactions-changed","thread-created","thread-deleted","parent-changed","archived-changed"].includes(k))&&x()}}),b=t.subscribe({event:"realtime:connection",callback:y=>{y.state==="connected"&&x()}});return x(),()=>{d=!1,o.current=()=>{},clearTimeout(p),w(),b()}},[n,t,e]),e!==void 0&&s&&s.orbit!==e)return null;let u=s?.jobs.filter(d=>d.interaction.threadId!==e)??[],l=i||s?.warning;return e!==void 0&&!u.length?l?c("p",{role:"alert",className:"text-sm",children:l}):null:_("section",{"aria-label":"Waiting for you",className:"max-h-[50vh] space-y-3 overflow-auto rounded-md border p-3 text-sm",children:[c("h2",{className:"font-medium",children:"Waiting for you"}),(i||s?.warning)&&c("p",{role:"alert",children:i||s?.warning}),!s&&!i&&c("p",{children:"Checking work\u2026"}),s&&!u.length&&!i&&!s.warning&&c("p",{children:"No questions or approvals waiting."}),u.map(d=>c(kh,{job:d,sdk:t,done:()=>{r(h=>h&&{...h,jobs:h.jobs.filter(f=>f.interaction.id!==d.interaction.id)}),o.current()}},d.interaction.id))]})}function kh({job:e,sdk:n,done:t}){let{interaction:s}=e,r=jn(),[i,a]=E(!1),o=ce(!1),[u,l]=E(null),[d,h]=E({}),f=s.payload,p=async y=>{if(o.current)return!1;o.current=!0,a(!0),l(null);try{let k=await n.threads.interactions.get({threadId:s.threadId,interactionId:s.id});return k.status!=="pending"||k.expiresAt!=null&&k.expiresAt<=Date.now()?(t(),!0):(await y(k),t(),!0)}catch{return l("The answer did not go through. Check the work and try again."),!1}finally{o.current=!1,a(!1)}},x={threadId:s.threadId,interactionId:s.id},w=y=>p(()=>n.threads.interactions.resolve({...x,resolution:y})),b;if(f.kind==="approval"){let y=Ul(f);b=_("div",{className:"space-y-2",children:[c("p",{children:y.title}),f.reason&&c("p",{children:f.reason}),c("pre",{className:"max-h-60 overflow-auto whitespace-pre-wrap break-words",children:y.detail}),_("div",{className:"flex gap-2",children:[c(F,{disabled:i||!f.availableDecisions.includes("allow_once"),onClick:()=>{w({decision:"allow_once",grantedPermissions:f.subject.kind==="permission_grant"?f.subject.permissions:null})},children:"Approve"}),c(F,{variant:"destructive",disabled:i||!f.availableDecisions.includes("deny"),onClick:()=>{w({decision:"deny"})},children:"Decline"})]})]})}else if(f.kind==="user_question")b=_("form",{className:"space-y-3",onSubmit:y=>{y.preventDefault(),ci(f.questions,d)&&w({kind:"user_answer",answers:d})},children:[f.questions.map(y=>_("fieldset",{disabled:i,className:"space-y-2",children:[c("legend",{children:y.prompt}),y.options?.map(k=>_("label",{className:"block",children:[c("input",{type:y.multiSelect?"checkbox":"radio",name:`${s.id}-${y.id}`,checked:d[y.id]?.selected.includes(k.value)??!1,onChange:I=>h(R=>({...R,[y.id]:{...y.multiSelect?R[y.id]:{},selected:y.multiSelect?I.target.checked?[...R[y.id]?.selected??[],k.value]:(R[y.id]?.selected??[]).filter(L=>L!==k.value):[k.value]}}))})," ",k.label,k.description&&c("span",{className:"block text-xs text-muted-foreground",children:k.description})]},k.value)),y.allowFreeText&&_("label",{className:"block",children:["Your answer",c("textarea",{className:"block w-full rounded border bg-background p-2",value:d[y.id]?.freeText??"",onChange:k=>h(I=>({...I,[y.id]:{selected:y.multiSelect?I[y.id]?.selected??[]:[],freeText:k.target.value}}))})]})]},y.id)),_("div",{className:"flex gap-2",children:[c(F,{type:"submit",disabled:i||!ci(f.questions,d),children:"Send answer"}),c(F,{type:"button",variant:"destructive",disabled:i,onClick:()=>{p(()=>n.threads.stop({threadId:s.threadId}))},children:"Stop work"})]}),c("p",{className:"text-xs text-muted-foreground",children:"Stop work stops this work, including the question it is waiting on."})]});else if(f.kind==="plugin"&&s.origin?.kind==="plugin"&&s.origin.pluginId==="orbit"){let y={interaction:{id:s.id,threadId:s.threadId,title:f.title,payload:f.data,createdAt:s.createdAt,expiresAt:s.expiresAt??null},submit:async k=>{if(!await p(()=>n.threads.interactions.respond({...x,value:k})))throw new Error("Answer failed")},cancel:async()=>{if(!await p(()=>n.threads.interactions.cancel(x)))throw new Error("Answer failed")}};b=s.origin.rendererId==="approval"?c(Zn,{...y}):s.origin.rendererId==="event-rule-consent"?c(qn,{...y}):s.origin.rendererId==="policy-proposal"?c(Jn,{...y}):s.origin.rendererId==="prefs-proposal"?c(es,{...y}):s.origin.rendererId==="station-manager"?c(Yn,{...y}):c("p",{children:"Open the work to answer this request."})}else b=c("p",{children:"Open the work to answer this request."});return _("article",{className:"space-y-2 rounded border p-3","aria-busy":i,children:[c("h3",{className:"font-medium",children:e.title}),c("fieldset",{disabled:i,children:b}),c(F,{variant:"ghost",onClick:()=>r.toThread(s.threadId),children:"Open work"}),u&&c("p",{role:"alert",children:u})]})}function Vl(){return _("main",{className:"mx-auto max-w-3xl p-4",children:[c("h1",{className:"mb-4 text-lg font-medium",children:"Orbit"}),c($l,{}),c(ar,{})]})}var Ye="data-orbit-avatar",ui="--orbit-avatar-image",Ie="data-orbit-avatar-start",Eh="orbit-chat-avatar",Je='#thread-detail-timeline-panel [data-timeline-row-list="top-level"]',yt="[data-timeline-row-id]",et="[data-timeline-items]",Gl=`${Je} > ${et} > ${yt}`,$s='[data-timeline-row-id*=":user"]',Vs='[data-timeline-row-id*=":assistant:"]',Bn=48,Wl=960,Sh=Bn+14,Ah=Bn+10,Ch=`
|
|
62
|
+
:root[${Ye}] ${Je} > ${et} > ${yt}:not(${$s}) {
|
|
63
63
|
position: relative;
|
|
64
|
-
padding-inline-start: ${
|
|
64
|
+
padding-inline-start: ${Sh}px;
|
|
65
65
|
}
|
|
66
|
-
:root[${
|
|
66
|
+
:root[${Ye}] ${Je} > ${et} > ${Vs}[${Ie}]::before {
|
|
67
67
|
content: "";
|
|
68
68
|
position: absolute;
|
|
69
69
|
inset-inline-start: 0;
|
|
70
70
|
top: 0;
|
|
71
|
-
width: ${
|
|
72
|
-
height: ${
|
|
71
|
+
width: ${Bn}px;
|
|
72
|
+
height: ${Bn}px;
|
|
73
73
|
border-radius: 9999px;
|
|
74
|
-
background: var(${
|
|
74
|
+
background: var(${ui}) center / cover no-repeat, color-mix(in oklch, var(--ink, currentColor) 6%, var(--canvas, transparent));
|
|
75
75
|
box-shadow: 0 0 0 1px color-mix(in oklch, var(--ink, currentColor) 14%, transparent);
|
|
76
76
|
pointer-events: none;
|
|
77
77
|
}
|
|
78
|
-
:root[${
|
|
79
|
-
min-height: ${
|
|
78
|
+
:root[${Ye}] ${Je} > ${et} > ${Vs}[${Ie}] {
|
|
79
|
+
min-height: ${Bn}px;
|
|
80
80
|
}
|
|
81
81
|
@container thread-pane (max-width: 480px) {
|
|
82
|
-
:root[${
|
|
83
|
-
padding-inline-start: ${
|
|
82
|
+
:root[${Ye}] ${Je} > ${et} > ${yt}:not(${$s}) {
|
|
83
|
+
padding-inline-start: ${Ah}px;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
`,
|
|
87
|
-
`),
|
|
86
|
+
`,fb={gutter:`:root[${Ye}] ${Je} > ${et} > ${yt}:not(${$s})`,avatar:`:root[${Ye}] ${Je} > ${et} > ${Vs}[${Ie}]`};function Th(e){let n=0,t=e.querySelectorAll(`${Je} > ${et}`);for(let s of e.querySelectorAll(`[${Ie}]`))(!s.parentElement||![...t].includes(s.parentElement))&&s.removeAttribute(Ie);for(let s of t){let r=!0;for(let i of s.children){if(!i.matches(yt))continue;if(i.matches($s)){r=!0,i.removeAttribute(Ie);continue}let a=r&&i.matches(Vs);a&&(r=!1,n+=1),a!==i.hasAttribute(Ie)&&i.toggleAttribute(Ie,a)}}return n}function Xh(e){return!e||!/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/.test(e)?null:`url("${e}")`}function jl(e,n){let t=Xh(n);if(!t)return()=>{};let s=e.documentElement,r=e.createElement("style");r.id=Eh,r.textContent=Ch,e.head.append(r),s.style.setProperty(ui,t),s.setAttribute(Ye,"");let i=e.defaultView,a=i?new i.Image:null,o=x=>console.warn(`[Orbit avatar] ${x}`);a&&(a.onerror=()=>o("The saved avatar could not be loaded. Check the page image policy and the saved picture."),a.src=n);let u=!1,l=null,d=()=>{Th(e);let x=e.querySelector(`#thread-detail-timeline-panel ${yt}`),w=e.querySelector(Gl);x&&!w&&!u&&l===null&&(l=setTimeout(()=>{l=null,e.querySelector(`#thread-detail-timeline-panel ${yt}`)&&!e.querySelector(Gl)&&(u=!0,o("Chat rows no longer match bb's avatar layout. Update the chat avatar selectors for this bb version."))},2e3))};d();let h=x=>{let w=x.effectiveDirective;(w==="img-src"||w==="style-src-elem"||w==="style-src-attr")&&o("The page policy blocked an image or style while the chat avatar was active. Check the browser policy report.")};e.addEventListener("securitypolicyviolation",h),r.sheet||o("The avatar stylesheet was not applied. Check the page style policy.");let f=null,p=new(i?.MutationObserver??MutationObserver)(()=>{if(f)return;let x=()=>{f=null,d()};if(i?.requestAnimationFrame){let w=i.requestAnimationFrame(x);f=()=>i.cancelAnimationFrame(w)}else{let w=setTimeout(x,16);f=()=>clearTimeout(w)}});return p.observe(e.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-timeline-row-id"]}),()=>{p.disconnect(),e.removeEventListener("securitypolicyviolation",h),f?.(),l!==null&&clearTimeout(l),a&&(a.onerror=null),r.remove(),s.removeAttribute(Ye),s.style.removeProperty(ui);for(let x of e.querySelectorAll(`[${Ie}]`))x.removeAttribute(Ie)}}var Mn="data-orbit-chat-width",Nh="orbit-chat-width",ql="#thread-detail-timeline-panel > div > [data-thread-window]",Zl=["> div > div > [data-page-scroll-viewport] > div > .max-w-\\[760px\\]","> div > div > [data-page-scroll-viewport] > div > [data-scroll-footer] > div > .max-w-\\[760px\\]"],Kh=Zl.map(e=>`${ql}[${Mn}] ${e}`).join(`,
|
|
87
|
+
`),Fh=`${Kh} { max-width: ${Wl}px; }`,di=new WeakSet;function Yl(e,n){if(!n)return()=>{};let t=e.createElement("style");t.id=Nh,t.textContent=Fh,e.head.append(t);let s=null,r=null,i=()=>{let l=e.querySelector(ql);l!==s&&(s?.removeAttribute(Mn),s=l);let d=!!(s&&Zl.every(h=>s.querySelector(`:scope ${h}`)));return s?.hasAttribute(Mn)!==d&&s?.toggleAttribute(Mn,d),d},a=()=>{i()?(r!==null&&clearTimeout(r),r=null):!di.has(e)&&r===null&&(r=setTimeout(()=>{r=null,!i()&&!di.has(e)&&(di.add(e),console.warn(`[Orbit chat width] The chat column no longer matches this bb version. The ${Wl}px width could not be applied. Update the column selector in chat-avatar-style.ts.`))},2e3))};a();let o=e.defaultView,u=new(o?.MutationObserver??MutationObserver)(a);return u.observe(e.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","data-page-scroll-viewport","data-thread-window"]}),()=>{u.disconnect(),r!==null&&clearTimeout(r),s?.removeAttribute(Mn),t.remove()}}function Jl(){let{threadId:e}=Ki(),n=q(),[t,s]=E({threadId:null,url:null,isOrbitThread:!1}),r=t.threadId===e?t.url:null,i=Ri(),[a,o]=E(0),u=re(()=>o(d=>d+1),[]);Ae("config",u),z(()=>{if(!e){s({threadId:null,url:null,isOrbitThread:!1});return}let d=!0;return s({threadId:e,url:null,isOrbitThread:!1}),n.call("avatar.forThread",{threadId:e}).then(h=>{d&&s({threadId:e,url:h.url,isOrbitThread:h.isOrbitThread})},()=>{d&&(s({threadId:e,url:null,isOrbitThread:!1}),console.warn("[Orbit avatar] Could not read the avatar for this conversation. It will be checked again after reconnecting or saving preferences."))}),()=>{d=!1}},[n,e,a,i]);let l=t.threadId===e&&t.isOrbitThread;return Js(()=>{let d=jl(document,r),h=Yl(document,l);return()=>{d(),h()}},[e,r,l]),null}var Rh=(e,n)=>n.lastActivityAt-e.lastActivityAt;function ec({onNavigate:e}){let n=jn(),{orbit:t,threads:s}=jr(),[r,i]=E(()=>Date.now());if(z(()=>{let o=setInterval(()=>i(Date.now()),6e4);return()=>clearInterval(o)},[]),t===void 0||s===null)return null;let a=o=>{let u={threadId:o.threadId,rootSeq:o.rootSeq,rootText:o.rootPreview};Mo(u),n.experimental_toHome(),e()};return _("div",{className:"flex flex-col gap-0.5 px-2 py-1",children:[c("div",{className:"px-2 pb-1 pt-2 text-xs font-medium text-muted-foreground",children:"Threads"}),s.length===0?c("p",{className:"px-2 py-1 text-xs text-muted-foreground",children:t===null?"No Orbit conversation yet.":"Reply in thread on any message to start one."}):[...s].sort(Rh).map(o=>_("button",{type:"button",onClick:()=>a(o),className:"flex w-full min-w-0 items-start gap-2 rounded-md px-2 py-1.5 text-left text-sm text-sidebar-foreground transition-colors hover:bg-state-hover active:bg-state-active",children:[_("span",{className:"flex min-w-0 flex-1 flex-col",children:[c("span",{className:"truncate",children:o.rootPreview.trim()||"A message"}),c("span",{className:"truncate text-xs text-muted-foreground",children:Po(o,r)})]}),o.running?c("span",{className:"mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center",children:c(Ti,{indicator:"runtime",size:"compact"})}):null]},o.threadId))]})}var Qb=Ci(e=>{e.slots.pendingInteraction({id:"standing-decisions",component:Ai}),e.slots.pendingInteraction({id:"event-rule-consent",component:qn}),e.slots.pendingInteraction({id:"approval",component:Zn}),e.slots.pendingInteraction({id:"policy-proposal",component:Jn}),e.slots.experimental_timelineRenderer({kind:"orbit/policy-proposal",component:Ii}),e.slots.pendingInteraction({id:"station-manager",component:Yn}),e.slots.pendingInteraction({id:"prefs-proposal",component:es}),e.slots.experimental_tab({id:"desktop",title:"Desktop",icon:"Monitor",context:{kind:"thread"},availability:"action",component:qr,layout:"flush"}),e.slots.experimental_tab({id:"artifacts",title:"Artifacts",icon:"FileText",context:{kind:"thread"},availability:"action",component:gl,layout:"flush"}),e.slots.navPanel({id:"artifacts",title:"Artifacts",icon:"FileText",path:"artifacts",component:yl}),e.slots.navPanel({id:"orbit",title:"Orbit",icon:"Orbit",path:"orbit",component:Vl}),e.slots.navPanel({id:Le,title:"Chat",icon:"MessageSquare",path:Le,component:Qo}),e.slots.experimental_home({id:"home",title:"Orbit chat",description:"One conversation with Orbit, with threads.",panelPath:Le,conversations:"hidden"}),e.slots.experimental_threadList({id:"threads",title:"Orbit threads",description:"The threads on the Orbit conversation.",component:ec}),e.slots.experimental_tab({id:Kn,title:"Thread",icon:"MessageSquare",layout:"flush",context:{kind:"nav-panel",panelId:Le},availability:"action",component:Uo}),e.slots.experimental_tab({id:Fn,title:"Desktop",icon:"Monitor",layout:"flush",context:{kind:"nav-panel",panelId:Le},availability:"action",component:zo}),e.composer.customize({id:"pending-work",scopes:["thread"],banners:[{id:"pending-work",chrome:"bare",component:zl}]}),e.slots.settingsSection({id:"orbit",component:Hl}),e.slots.experimental_appOverlay({id:"chat-avatar",component:Jl})});export{Qb as default};
|