From b6c65d2622a209b7b73a1645f720aa954521212d Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 6 Sep 2026 20:01:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 43 + .../2026-09-04T01_11_05_158Z-debug-0.log | 18 + .../v22.19.0-x64-9de703df/02a7889d | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/04eb6259 | Bin 0 -> 988 bytes .../v22.19.0-x64-9de703df/05504675 | Bin 0 -> 964 bytes .../v22.19.0-x64-9de703df/11ed145c | Bin 0 -> 1204 bytes .../v22.19.0-x64-9de703df/120c9b2a | Bin 0 -> 852 bytes .../v22.19.0-x64-9de703df/13913c6c | Bin 0 -> 1468 bytes .../v22.19.0-x64-9de703df/13dedc27 | Bin 0 -> 12332 bytes .../v22.19.0-x64-9de703df/14ebc012 | Bin 0 -> 964 bytes .../v22.19.0-x64-9de703df/16c61a2b | Bin 0 -> 2772 bytes .../v22.19.0-x64-9de703df/189f57e2 | Bin 0 -> 868 bytes .../v22.19.0-x64-9de703df/19f69652 | Bin 0 -> 876 bytes .../v22.19.0-x64-9de703df/1d496004 | Bin 0 -> 8220 bytes .../v22.19.0-x64-9de703df/22a1c90d | Bin 0 -> 1780 bytes .../v22.19.0-x64-9de703df/241c72c4 | Bin 0 -> 2332 bytes .../v22.19.0-x64-9de703df/3534d442 | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/3a8466ce | Bin 0 -> 2116 bytes .../v22.19.0-x64-9de703df/3c0ea57e | Bin 0 -> 1300 bytes .../v22.19.0-x64-9de703df/3e84d970 | Bin 0 -> 1084 bytes .../v22.19.0-x64-9de703df/3ff1ca18 | Bin 0 -> 5524 bytes .../v22.19.0-x64-9de703df/433aea0f | Bin 0 -> 1212 bytes .../v22.19.0-x64-9de703df/45925937 | Bin 0 -> 940 bytes .../v22.19.0-x64-9de703df/49799a45 | Bin 0 -> 3620 bytes .../v22.19.0-x64-9de703df/499ced9c | Bin 0 -> 3508 bytes .../v22.19.0-x64-9de703df/4bd941b8 | Bin 0 -> 6796 bytes .../v22.19.0-x64-9de703df/4fb92bcf | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/5a29e12b | Bin 0 -> 1924 bytes .../v22.19.0-x64-9de703df/5ff32481 | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/631485a5 | Bin 0 -> 868 bytes .../v22.19.0-x64-9de703df/63434afb | Bin 0 -> 71780 bytes .../v22.19.0-x64-9de703df/6375061e | Bin 0 -> 1892 bytes .../v22.19.0-x64-9de703df/6460a1b0 | Bin 0 -> 924 bytes .../v22.19.0-x64-9de703df/64f0db90 | Bin 0 -> 4276 bytes .../v22.19.0-x64-9de703df/6756e702 | Bin 0 -> 1516 bytes .../v22.19.0-x64-9de703df/67e0f78e | Bin 0 -> 1100 bytes .../v22.19.0-x64-9de703df/69711141 | Bin 0 -> 2436 bytes .../v22.19.0-x64-9de703df/70bfcb54 | Bin 0 -> 996 bytes .../v22.19.0-x64-9de703df/7393a08d | Bin 0 -> 2772 bytes .../v22.19.0-x64-9de703df/7577b98c | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/75a3d7f2 | Bin 0 -> 2876 bytes .../v22.19.0-x64-9de703df/77174454 | Bin 0 -> 2548 bytes .../v22.19.0-x64-9de703df/7887cef1 | Bin 0 -> 996 bytes .../v22.19.0-x64-9de703df/7d7ab50d | Bin 0 -> 1188 bytes .../v22.19.0-x64-9de703df/82789055 | Bin 0 -> 1036 bytes .../v22.19.0-x64-9de703df/83d96037 | Bin 0 -> 1076 bytes .../v22.19.0-x64-9de703df/8c6c9d3a | Bin 0 -> 1292 bytes .../v22.19.0-x64-9de703df/8c90a1b9 | Bin 0 -> 1292 bytes .../v22.19.0-x64-9de703df/8ca4db1b | Bin 0 -> 1468 bytes .../v22.19.0-x64-9de703df/90c0fb70 | Bin 0 -> 908 bytes .../v22.19.0-x64-9de703df/95a16ac5 | Bin 0 -> 2516 bytes .../v22.19.0-x64-9de703df/968cfcf8 | Bin 0 -> 7468 bytes .../v22.19.0-x64-9de703df/98a622b7 | Bin 0 -> 900 bytes .../v22.19.0-x64-9de703df/99020c44 | Bin 0 -> 892 bytes .../v22.19.0-x64-9de703df/9b8ab0d0 | Bin 0 -> 940 bytes .../v22.19.0-x64-9de703df/9d86925a | Bin 0 -> 2244 bytes .../v22.19.0-x64-9de703df/9f737c5f | Bin 0 -> 1108 bytes .../v22.19.0-x64-9de703df/9fbafbe8 | Bin 0 -> 8460 bytes .../v22.19.0-x64-9de703df/a266dc17 | Bin 0 -> 1236 bytes .../v22.19.0-x64-9de703df/a4876d82 | Bin 0 -> 2260 bytes .../v22.19.0-x64-9de703df/a492c40a | Bin 0 -> 1260 bytes .../v22.19.0-x64-9de703df/a5a00af0 | Bin 0 -> 1100 bytes .../v22.19.0-x64-9de703df/a5ed4745 | Bin 0 -> 4452 bytes .../v22.19.0-x64-9de703df/a9090719 | Bin 0 -> 2892 bytes .../v22.19.0-x64-9de703df/ab66c0a0 | Bin 0 -> 1028 bytes .../v22.19.0-x64-9de703df/abb43a8a | Bin 0 -> 1404 bytes .../v22.19.0-x64-9de703df/abd0ed17 | Bin 0 -> 5428 bytes .../v22.19.0-x64-9de703df/ac04a207 | Bin 0 -> 1044 bytes .../v22.19.0-x64-9de703df/ada12162 | Bin 0 -> 3444 bytes .../v22.19.0-x64-9de703df/aec18340 | Bin 0 -> 1324 bytes .../v22.19.0-x64-9de703df/aef55e88 | Bin 0 -> 1628 bytes .../v22.19.0-x64-9de703df/b30ae0b8 | Bin 0 -> 1044 bytes .../v22.19.0-x64-9de703df/b3607456 | Bin 0 -> 2148 bytes .../v22.19.0-x64-9de703df/b5e88655 | Bin 0 -> 900 bytes .../v22.19.0-x64-9de703df/b5ecd5cb | Bin 0 -> 1476 bytes .../v22.19.0-x64-9de703df/b7a9f98f | Bin 0 -> 1452 bytes .../v22.19.0-x64-9de703df/bd724e19 | Bin 0 -> 1460 bytes .../v22.19.0-x64-9de703df/bf057daf | Bin 0 -> 2420 bytes .../v22.19.0-x64-9de703df/bf147981 | Bin 0 -> 8076 bytes .../v22.19.0-x64-9de703df/bf80f187 | Bin 0 -> 972 bytes .../v22.19.0-x64-9de703df/c5ef00cf | Bin 0 -> 1322036 bytes .../v22.19.0-x64-9de703df/ccc11f11 | Bin 0 -> 868 bytes .../v22.19.0-x64-9de703df/cf082ae5 | Bin 0 -> 1604 bytes .../v22.19.0-x64-9de703df/cf206aa7 | Bin 0 -> 4756 bytes .../v22.19.0-x64-9de703df/cfa30618 | Bin 0 -> 916 bytes .../v22.19.0-x64-9de703df/cff15981 | Bin 0 -> 892 bytes .../v22.19.0-x64-9de703df/d0c03d83 | Bin 0 -> 2244 bytes .../v22.19.0-x64-9de703df/d310df37 | Bin 0 -> 1084 bytes .../v22.19.0-x64-9de703df/d96819b4 | Bin 0 -> 4068 bytes .../v22.19.0-x64-9de703df/de56cd6a | Bin 0 -> 2460 bytes .../v22.19.0-x64-9de703df/e63b753e | Bin 0 -> 2236 bytes .../v22.19.0-x64-9de703df/e7febbda | Bin 0 -> 1452 bytes .../v22.19.0-x64-9de703df/f23af879 | Bin 0 -> 1244 bytes .../v22.19.0-x64-9de703df/f5f9a09d | Bin 0 -> 916 bytes .../v22.19.0-x64-9de703df/f648a57d | Bin 0 -> 3332 bytes .../v22.19.0-x64-9de703df/f946cc88 | Bin 0 -> 1060 bytes .../v22.19.0-x64-9de703df/fa23b8b1 | Bin 0 -> 2228 bytes .../v22.19.0-x64-9de703df/fb96c6b8 | Bin 0 -> 1340 bytes AGENTS.md | 234 + CONTEXT.md | 17 + LICENSE | 21 + README.ja.md | 134 + README.md | 159 + README.ru.md | 134 + README.zh-CN.md | 136 + app/api/agent/[id]/bash-output/route.ts | 67 + app/api/agent/[id]/events/route.ts | 39 + app/api/agent/[id]/route.ts | 90 + app/api/agent/events-route.test.mjs | 20 + app/api/agent/new/route.ts | 107 + app/api/agent/running/route.ts | 18 + app/api/app-update/route.ts | 86 + app/api/auth/api-key/[provider]/route.ts | 67 + app/api/auth/login/[provider]/route.ts | 192 + app/api/auth/logout/[provider]/route.ts | 22 + app/api/auth/providers/route.ts | 15 + app/api/cwd/browse/route.ts | 50 + app/api/cwd/validate/route.test.mjs | 33 + app/api/cwd/validate/route.ts | 49 + app/api/default-cwd/route.ts | 19 + app/api/file-index/route.ts | 169 + app/api/files/[...path]/route.ts | 651 + app/api/files/stream-route.test.mjs | 31 + app/api/files/watch-route.test.mjs | 31 + app/api/git/diff/route.ts | 31 + app/api/git/status/route.ts | 35 + app/api/home/route.ts | 6 + app/api/models-config/catalog/route.ts | 78 + app/api/models-config/discover/route.ts | 88 + app/api/models-config/route.ts | 18 + app/api/models-config/test/route.ts | 121 + app/api/models/route.ts | 123 + app/api/plugins/route.ts | 364 + app/api/project-trust/route.ts | 66 + app/api/push/config/route.ts | 12 + app/api/push/subscribe/route.ts | 40 + app/api/sessions/[id]/auto-name/route.ts | 45 + app/api/sessions/[id]/context/route.ts | 45 + .../[id]/entries/[entryId]/thinking/route.ts | 34 + .../[entryId]/tool-result-image/route.ts | 86 + app/api/sessions/[id]/export/route.ts | 282 + app/api/sessions/[id]/route.ts | 213 + app/api/sessions/[id]/state/route.ts | 24 + app/api/sessions/context-route.test.mjs | 46 + app/api/sessions/detail-route.test.mjs | 54 + app/api/sessions/route.ts | 37 + app/api/sessions/runtime-route.test.mjs | 161 + app/api/skills/check/route.ts | 51 + app/api/skills/install/route.ts | 60 + app/api/skills/route.ts | 57 + app/api/skills/search/route.ts | 116 + app/api/skills/update/route.ts | 64 + app/api/subagents/[id]/route.ts | 42 + app/api/subagents/profiles/route.test.mjs | 179 + app/api/subagents/profiles/route.ts | 100 + app/api/subagents/runtime-route.test.mjs | 117 + app/api/subagents/settings/route.test.mjs | 58 + app/api/subagents/settings/route.ts | 43 + app/api/tools/settings/route.ts | 50 + app/api/worktrees/route.ts | 102 + app/favicon.ico | Bin 0 -> 22542 bytes app/globals.css | 1423 ++ app/layout.tsx | 77 + app/manifest.ts | 31 + app/page.tsx | 13 + app/settings.css | 1151 ++ bin/node-version.js | 35 + bin/pi-web-options.js | 87 + bin/pi-web.js | 132 + bin/process-lifecycle.js | 81 + components/AgentSessionPanel.test.mjs | 35 + components/AgentSessionPanel.tsx | 240 + components/AgentsConfig.test.mjs | 144 + components/AgentsConfig.tsx | 622 + components/AnsiText.test.mjs | 62 + components/AnsiText.tsx | 20 + components/AppShell.auto-name.test.mjs | 24 + .../AppShell.file-viewer-state.test.mjs | 31 + components/AppShell.mobile-toolbar.test.mjs | 94 + components/AppShell.tsx | 2455 +++ components/AppShell.workspace-memory.test.mjs | 42 + components/BranchNavigator.test.mjs | 165 + components/BranchNavigator.tsx | 436 + components/ChatInput.dormancy.test.mjs | 41 + .../ChatInput.mobile-thinking-menu.test.mjs | 12 + components/ChatInput.test.mjs | 389 + components/ChatInput.tsx | 2560 +++ components/ChatMinimap.module.css | 232 + components/ChatMinimap.test.mjs | 39 + components/ChatMinimap.tsx | 752 + components/ChatWindow.notices.test.mjs | 30 + .../ChatWindow.process-details.test.mjs | 13 + components/ChatWindow.tsx | 1402 ++ components/DirectoryPicker.tsx | 229 + components/ExtensionStatusBar.test.mjs | 93 + components/ExtensionStatusBar.tsx | 55 + components/ExtensionWidgets.test.mjs | 159 + components/ExtensionWidgets.tsx | 208 + components/FileExplorer.tsx | 1054 ++ components/FileIcons.tsx | 126 + components/FileViewer.state.test.mjs | 73 + components/FileViewer.test.mjs | 22 + components/FileViewer.tsx | 1578 ++ components/FrontmatterCard.tsx | 70 + components/ImagePreview.test.mjs | 46 + components/ImagePreview.tsx | 107 + components/MarkdownBody.test.mjs | 108 + components/MarkdownBody.tsx | 102 + components/MermaidBlock.test.mjs | 94 + components/MermaidBlock.tsx | 300 + components/MessageView.test.mjs | 204 + components/MessageView.tsx | 1820 +++ components/MobilePwaLayout.test.mjs | 58 + components/ModelSelector.tsx | 331 + components/ModelsConfig.test.mjs | 188 + components/ModelsConfig.tsx | 2173 +++ components/PluginsConfig.tsx | 832 + components/ProjectTrustDialog.tsx | 146 + components/ProviderIcon.tsx | 90 + components/PwaRegistration.tsx | 33 + .../SessionSidebar.file-search.test.mjs | 32 + .../SessionSidebar.project-identity.test.mjs | 24 + components/SessionSidebar.test.mjs | 102 + components/SessionSidebar.tsx | 2254 +++ components/SessionSidebar.worktree.test.mjs | 15 + components/SettingsPanel.test.mjs | 105 + components/SettingsPanel.tsx | 281 + components/SettingsUi.test.mjs | 178 + components/SettingsUi.tsx | 256 + components/SkillsConfig.dormancy.test.mjs | 30 + components/SkillsConfig.tsx | 942 ++ components/SystemPromptPanel.tsx | 58 + components/TabBar.tsx | 118 + components/ToolDefinitionsPanel.test.mjs | 41 + components/ToolDefinitionsPanel.tsx | 375 + components/TurnWrittenFiles.test.mjs | 34 + components/TurnWrittenFiles.tsx | 52 + components/file-tab-state.test.mjs | 98 + components/file-tab-state.ts | 69 + components/models-config-helpers.ts | 72 + ...01-isolate-project-command-environments.md | 3 + docs/adr/0002-chat-only-tool-selection.md | 55 + docs/adr/0003-built-in-subagent-toggle.md | 23 + docs/i18n.md | 179 + docs/release.md | 177 + docs/screenshot2.png | Bin 0 -> 2101734 bytes .../extension-widget-nano-context.png | Bin 0 -> 6032 bytes .../extension-widget-rpiv-todo.png | Bin 0 -> 9900 bytes docs/worktrees.md | 87 + docs/worktrees.zh-CN.md | 87 + eslint.config.mjs | 16 + hooks/model-scope-startup.test.mjs | 50 + hooks/model-switching.test.mjs | 37 + hooks/useAgentSession.test.mjs | 512 + hooks/useAgentSession.ts | 2049 +++ hooks/useAudio.ts | 82 + hooks/useDragDrop.ts | 40 + hooks/useI18n.tsx | 84 + hooks/useIsMobile.ts | 43 + hooks/useKeyboardShortcuts.ts | 73 + hooks/useResizablePanel.ts | 285 + hooks/useTheme.ts | 180 + hooks/useViewportHeight.test.mjs | 51 + hooks/useViewportHeight.ts | 94 + instrumentation.ts | 6 + lib/agent-client.test.mjs | 64 + lib/agent-client.ts | 53 + lib/agent-event-connection.test.mjs | 193 + lib/agent-event-connection.ts | 208 + lib/agent-event-stream.test.mjs | 155 + lib/agent-event-stream.ts | 132 + lib/agent-event-wire.test.mjs | 278 + lib/agent-event-wire.ts | 107 + lib/allowed-roots.ts | 31 + lib/ansi.test.mjs | 34 + lib/ansi.ts | 86 + lib/api-types.ts | 130 + lib/app-update.test.mjs | 27 + lib/app-update.ts | 28 + lib/atomic-file.test.mjs | 37 + lib/atomic-file.ts | 34 + lib/bash-output.test.mjs | 63 + lib/bash-output.ts | 53 + lib/bounded-form-data.test.mjs | 54 + lib/bounded-form-data.ts | 49 + lib/browser-notifications.test.mjs | 167 + lib/browser-notifications.ts | 104 + lib/chat-lazy-load.test.mjs | 140 + lib/chat-lazy-load.ts | 64 + lib/chat-only.test.mjs | 27 + lib/chat-only.ts | 23 + lib/clipboard.ts | 18 + lib/compaction-summary.test.mjs | 44 + lib/compaction-summary.ts | 34 + lib/custom-ui-terminal.test.mjs | 32 + lib/custom-ui-terminal.ts | 27 + lib/directory-browser.test.mjs | 60 + lib/directory-browser.ts | 83 + lib/draft-store.ts | 105 + lib/file-access.test.mjs | 31 + lib/file-access.ts | 59 + lib/file-dirent.test.mjs | 56 + lib/file-dirent.ts | 17 + lib/file-explorer-state.test.mjs | 63 + lib/file-explorer-state.ts | 36 + lib/file-fuzzy.test.mjs | 29 + lib/file-fuzzy.ts | 189 + lib/file-links.test.mjs | 92 + lib/file-links.ts | 148 + lib/file-paths.ts | 43 + lib/file-types.test.mjs | 34 + lib/file-types.ts | 73 + lib/file-upload.test.mjs | 70 + lib/file-upload.ts | 59 + lib/file-viewer-state.test.mjs | 20 + lib/file-viewer-state.ts | 15 + lib/frontmatter.test.mjs | 55 + lib/frontmatter.ts | 87 + lib/git-changes.test.mjs | 52 + lib/git-changes.ts | 232 + lib/git-status.ts | 47 + lib/git-types.ts | 29 + lib/http-dispatcher.test.mjs | 83 + lib/http-dispatcher.ts | 86 + lib/i18n/format.test.mjs | 20 + lib/i18n/format.ts | 60 + lib/i18n/messages/en.ts | 589 + lib/i18n/messages/zh-CN.ts | 589 + lib/i18n/messages/zh-TW.ts | 589 + lib/i18n/registry.test.mjs | 55 + lib/i18n/registry.ts | 41 + lib/i18n/types.ts | 15 + lib/image-attachments.test.mjs | 27 + lib/image-attachments.ts | 56 + lib/initial-navigation.test.mjs | 46 + lib/initial-navigation.ts | 13 + lib/markdown.test.mjs | 128 + lib/markdown.ts | 364 + lib/message-display.test.mjs | 130 + lib/message-display.ts | 47 + lib/model-catalog.test.mjs | 327 + lib/model-catalog.ts | 414 + lib/model-discovery-auth.ts | 58 + lib/model-discovery.test.mjs | 50 + lib/model-discovery.ts | 75 + lib/model-scope.test.mjs | 193 + lib/model-scope.ts | 198 + lib/models-cache.test.mjs | 122 + lib/models-cache.ts | 90 + lib/models-config-store.test.mjs | 200 + lib/models-config-store.ts | 84 + lib/next-config-esm.test.mjs | 14 + lib/next-config.test.mjs | 13 + lib/node-version.test.mjs | 33 + lib/normalize.test.mjs | 54 + lib/normalize.ts | 63 + lib/npx.ts | 62 + lib/panel-layout.test.mjs | 56 + lib/panel-layout.ts | 52 + lib/patch.test.mjs | 110 + lib/patch.ts | 134 + lib/path-security.ts | 42 + lib/paths.test.mjs | 58 + lib/paths.ts | 71 + lib/pi-types.ts | 205 + lib/pi-web-options.test.mjs | 103 + lib/powershell-settings.test.mjs | 73 + lib/powershell-settings.ts | 106 + lib/process-lifecycle.test.mjs | 153 + lib/project-command-env.test.mjs | 298 + lib/project-command-env.ts | 129 + lib/project-groups.test.mjs | 60 + lib/project-groups.ts | 53 + lib/project-identity.test.mjs | 37 + lib/project-identity.ts | 26 + lib/project-tree.test.mjs | 115 + lib/project-tree.ts | 176 + lib/project-trust.test.mjs | 117 + lib/project-trust.ts | 48 + lib/prompt-recovery.test.mjs | 33 + lib/prompt-recovery.ts | 47 + lib/provider-api-key-route.test.mjs | 12 + lib/provider-credential-store.test.mjs | 126 + lib/provider-credential-store.ts | 114 + lib/provider-listing-runtime.ts | 37 + lib/provider-listing.test.mjs | 114 + lib/provider-listing.ts | 118 + lib/push-client.ts | 64 + lib/request-security.test.mjs | 270 + lib/request-security.ts | 161 + lib/rpc-manager-shutdown.test.mjs | 580 + lib/rpc-manager-widgets.test.mjs | 345 + lib/rpc-manager.test.mjs | 440 + lib/rpc-manager.ts | 2043 +++ lib/rpc-session-info.test.mjs | 93 + lib/search-tree.test.mjs | 91 + lib/search-tree.ts | 39 + lib/session-family.test.mjs | 49 + lib/session-family.ts | 80 + lib/session-file-references-core.ts | 82 + lib/session-file-references.test.mjs | 91 + lib/session-file-references.ts | 29 + lib/session-path.test.mjs | 24 + lib/session-path.ts | 11 + lib/session-reader.pagination.test.mjs | 180 + lib/session-reader.test.mjs | 770 + lib/session-reader.ts | 652 + lib/session-row-context-menu.test.mjs | 46 + lib/session-row-context-menu.ts | 29 + lib/session-stats.test.mjs | 191 + lib/session-stats.ts | 123 + lib/session-timing.test.mjs | 107 + lib/session-timing.ts | 45 + lib/session-title.test.mjs | 284 + lib/session-title.ts | 255 + lib/session-tool-selection.test.mjs | 57 + lib/session-tool-selection.ts | 52 + lib/session-tree.test.mjs | 76 + lib/session-tree.ts | 49 + lib/settings-navigation.test.mjs | 73 + lib/settings-navigation.ts | 124 + lib/skill-frontmatter.test.mjs | 104 + lib/skill-frontmatter.ts | 45 + lib/skill-lock.test.mjs | 182 + lib/skill-lock.ts | 146 + lib/skill-updates.test.mjs | 182 + lib/skill-updates.ts | 263 + lib/skills-service.ts | 16 + lib/slash-display.test.mjs | 65 + lib/slash-display.ts | 22 + lib/startup-preferences.test.mjs | 113 + lib/startup-preferences.ts | 55 + lib/streaming-message.test.mjs | 179 + lib/streaming-message.ts | 144 + lib/subagent-extension.test.mjs | 401 + lib/subagent-extension.ts | 272 + lib/subagent-input.test.mjs | 63 + lib/subagent-input.ts | 71 + lib/subagent-profile-precedence.ts | 20 + lib/subagent-prompt.test.mjs | 53 + lib/subagent-prompt.ts | 29 + lib/subagent-runtime.test.mjs | 81 + lib/subagent-runtime.ts | 411 + lib/subagent-settings.test.mjs | 50 + lib/subagent-settings.ts | 51 + lib/subagents.test.mjs | 455 + lib/subagents.ts | 417 + lib/terminal-input.test.mjs | 46 + lib/terminal-input.ts | 63 + lib/tool-execution-progress.test.mjs | 32 + lib/tool-execution-progress.ts | 29 + lib/tool-names.ts | 25 + lib/tool-preset-preference.test.mjs | 72 + lib/tool-preset-preference.ts | 41 + lib/tool-presets.test.mjs | 67 + lib/tool-presets.ts | 48 + lib/tool-result-images.ts | 10 + lib/turn-written-files.test.mjs | 137 + lib/turn-written-files.ts | 60 + lib/types.ts | 356 + lib/web-auth.test.mjs | 50 + lib/web-auth.ts | 45 + lib/web-push.test.mjs | 149 + lib/web-push.ts | 181 + lib/workspace-memory.test.mjs | 129 + lib/workspace-memory.ts | 98 + lib/worktree.test.mjs | 50 + lib/worktree.ts | 250 + next.config.ts | 78 + package-lock.json | 13482 +++++++++++++++ package-lock.json.bak | 13564 ++++++++++++++++ package.json | 81 + postcss.config.mjs | 8 + proxy.ts | 42 + public/icons/apple-touch-icon.png | Bin 0 -> 8790 bytes public/icons/catppuccin/LICENSE | 22 + public/icons/catppuccin/README.md | 10 + public/icons/catppuccin/latte/_file.svg | 3 + public/icons/catppuccin/latte/_folder.svg | 3 + .../icons/catppuccin/latte/_folder_open.svg | 3 + public/icons/catppuccin/latte/bash.svg | 7 + public/icons/catppuccin/latte/bun-lock.svg | 8 + public/icons/catppuccin/latte/config.svg | 3 + public/icons/catppuccin/latte/css.svg | 6 + public/icons/catppuccin/latte/database.svg | 3 + public/icons/catppuccin/latte/docker.svg | 3 + public/icons/catppuccin/latte/env.svg | 3 + public/icons/catppuccin/latte/eslint.svg | 6 + public/icons/catppuccin/latte/git.svg | 6 + public/icons/catppuccin/latte/go.svg | 3 + public/icons/catppuccin/latte/graphql.svg | 3 + public/icons/catppuccin/latte/html.svg | 6 + .../catppuccin/latte/javascript-react.svg | 8 + public/icons/catppuccin/latte/javascript.svg | 6 + public/icons/catppuccin/latte/json.svg | 3 + public/icons/catppuccin/latte/lock.svg | 3 + public/icons/catppuccin/latte/markdown.svg | 3 + public/icons/catppuccin/latte/ms-word.svg | 6 + public/icons/catppuccin/latte/next.svg | 6 + public/icons/catppuccin/latte/npm-lock.svg | 7 + public/icons/catppuccin/latte/pdf.svg | 3 + public/icons/catppuccin/latte/python.svg | 8 + public/icons/catppuccin/latte/rust.svg | 6 + public/icons/catppuccin/latte/sass.svg | 3 + public/icons/catppuccin/latte/terraform.svg | 3 + public/icons/catppuccin/latte/toml.svg | 3 + .../catppuccin/latte/typescript-react.svg | 8 + public/icons/catppuccin/latte/typescript.svg | 6 + public/icons/catppuccin/latte/yaml.svg | 3 + public/icons/catppuccin/mocha/_file.svg | 3 + public/icons/catppuccin/mocha/_folder.svg | 3 + .../icons/catppuccin/mocha/_folder_open.svg | 3 + public/icons/catppuccin/mocha/bash.svg | 7 + public/icons/catppuccin/mocha/bun-lock.svg | 8 + public/icons/catppuccin/mocha/config.svg | 3 + public/icons/catppuccin/mocha/css.svg | 6 + public/icons/catppuccin/mocha/database.svg | 3 + public/icons/catppuccin/mocha/docker.svg | 3 + public/icons/catppuccin/mocha/env.svg | 3 + public/icons/catppuccin/mocha/eslint.svg | 6 + public/icons/catppuccin/mocha/git.svg | 6 + public/icons/catppuccin/mocha/go.svg | 3 + public/icons/catppuccin/mocha/graphql.svg | 3 + public/icons/catppuccin/mocha/html.svg | 6 + .../catppuccin/mocha/javascript-react.svg | 8 + public/icons/catppuccin/mocha/javascript.svg | 6 + public/icons/catppuccin/mocha/json.svg | 3 + public/icons/catppuccin/mocha/lock.svg | 3 + public/icons/catppuccin/mocha/markdown.svg | 3 + public/icons/catppuccin/mocha/ms-word.svg | 6 + public/icons/catppuccin/mocha/next.svg | 6 + public/icons/catppuccin/mocha/npm-lock.svg | 7 + public/icons/catppuccin/mocha/pdf.svg | 3 + public/icons/catppuccin/mocha/python.svg | 8 + public/icons/catppuccin/mocha/rust.svg | 6 + public/icons/catppuccin/mocha/sass.svg | 3 + public/icons/catppuccin/mocha/terraform.svg | 3 + public/icons/catppuccin/mocha/toml.svg | 3 + .../catppuccin/mocha/typescript-react.svg | 8 + public/icons/catppuccin/mocha/typescript.svg | 6 + public/icons/catppuccin/mocha/yaml.svg | 3 + public/icons/icon-192.png | Bin 0 -> 9625 bytes public/icons/icon-512.png | Bin 0 -> 23387 bytes public/offline.html | 83 + public/provider-icons.svg | 54 + public/sw.js | 143 + public/sw.test.mjs | 148 + start.ps1 | 2 + tailwind.config.ts | 15 + tsconfig.json | 41 + 550 files changed, 91817 insertions(+) create mode 100644 .gitignore create mode 100644 .localappdata/npm-cache/_logs/2026-09-04T01_11_05_158Z-debug-0.log create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/02a7889d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/04eb6259 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/05504675 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/11ed145c create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/120c9b2a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/13913c6c create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/13dedc27 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/14ebc012 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/16c61a2b create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/189f57e2 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/19f69652 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/1d496004 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/22a1c90d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/241c72c4 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/3534d442 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/3a8466ce create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/3c0ea57e create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/3e84d970 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/3ff1ca18 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/433aea0f create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/45925937 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/49799a45 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/499ced9c create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/4bd941b8 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/4fb92bcf create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/5a29e12b create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/5ff32481 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/631485a5 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/63434afb create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/6375061e create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/6460a1b0 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/64f0db90 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/6756e702 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/67e0f78e create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/69711141 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/70bfcb54 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/7393a08d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/7577b98c create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/75a3d7f2 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/77174454 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/7887cef1 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/7d7ab50d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/82789055 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/83d96037 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/8c6c9d3a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/8c90a1b9 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/8ca4db1b create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/90c0fb70 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/95a16ac5 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/968cfcf8 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/98a622b7 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/99020c44 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/9b8ab0d0 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/9d86925a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/9f737c5f create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/9fbafbe8 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a266dc17 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a4876d82 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a492c40a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a5a00af0 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a5ed4745 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/a9090719 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/ab66c0a0 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/abb43a8a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/abd0ed17 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/ac04a207 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/ada12162 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/aec18340 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/aef55e88 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/b30ae0b8 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/b3607456 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/b5e88655 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/b5ecd5cb create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/b7a9f98f create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/bd724e19 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/bf057daf create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/bf147981 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/bf80f187 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/c5ef00cf create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/ccc11f11 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/cf082ae5 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/cf206aa7 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/cfa30618 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/cff15981 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/d0c03d83 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/d310df37 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/d96819b4 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/de56cd6a create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/e63b753e create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/e7febbda create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/f23af879 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/f5f9a09d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/f648a57d create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/f946cc88 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/fa23b8b1 create mode 100644 .temp/node-compile-cache/v22.19.0-x64-9de703df/fb96c6b8 create mode 100644 AGENTS.md create mode 100644 CONTEXT.md create mode 100644 LICENSE create mode 100644 README.ja.md create mode 100644 README.md create mode 100644 README.ru.md create mode 100644 README.zh-CN.md create mode 100644 app/api/agent/[id]/bash-output/route.ts create mode 100644 app/api/agent/[id]/events/route.ts create mode 100644 app/api/agent/[id]/route.ts create mode 100644 app/api/agent/events-route.test.mjs create mode 100644 app/api/agent/new/route.ts create mode 100644 app/api/agent/running/route.ts create mode 100644 app/api/app-update/route.ts create mode 100644 app/api/auth/api-key/[provider]/route.ts create mode 100644 app/api/auth/login/[provider]/route.ts create mode 100644 app/api/auth/logout/[provider]/route.ts create mode 100644 app/api/auth/providers/route.ts create mode 100644 app/api/cwd/browse/route.ts create mode 100644 app/api/cwd/validate/route.test.mjs create mode 100644 app/api/cwd/validate/route.ts create mode 100644 app/api/default-cwd/route.ts create mode 100644 app/api/file-index/route.ts create mode 100644 app/api/files/[...path]/route.ts create mode 100644 app/api/files/stream-route.test.mjs create mode 100644 app/api/files/watch-route.test.mjs create mode 100644 app/api/git/diff/route.ts create mode 100644 app/api/git/status/route.ts create mode 100644 app/api/home/route.ts create mode 100644 app/api/models-config/catalog/route.ts create mode 100644 app/api/models-config/discover/route.ts create mode 100644 app/api/models-config/route.ts create mode 100644 app/api/models-config/test/route.ts create mode 100644 app/api/models/route.ts create mode 100644 app/api/plugins/route.ts create mode 100644 app/api/project-trust/route.ts create mode 100644 app/api/push/config/route.ts create mode 100644 app/api/push/subscribe/route.ts create mode 100644 app/api/sessions/[id]/auto-name/route.ts create mode 100644 app/api/sessions/[id]/context/route.ts create mode 100644 app/api/sessions/[id]/entries/[entryId]/thinking/route.ts create mode 100644 app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts create mode 100644 app/api/sessions/[id]/export/route.ts create mode 100644 app/api/sessions/[id]/route.ts create mode 100644 app/api/sessions/[id]/state/route.ts create mode 100644 app/api/sessions/context-route.test.mjs create mode 100644 app/api/sessions/detail-route.test.mjs create mode 100644 app/api/sessions/route.ts create mode 100644 app/api/sessions/runtime-route.test.mjs create mode 100644 app/api/skills/check/route.ts create mode 100644 app/api/skills/install/route.ts create mode 100644 app/api/skills/route.ts create mode 100644 app/api/skills/search/route.ts create mode 100644 app/api/skills/update/route.ts create mode 100644 app/api/subagents/[id]/route.ts create mode 100644 app/api/subagents/profiles/route.test.mjs create mode 100644 app/api/subagents/profiles/route.ts create mode 100644 app/api/subagents/runtime-route.test.mjs create mode 100644 app/api/subagents/settings/route.test.mjs create mode 100644 app/api/subagents/settings/route.ts create mode 100644 app/api/tools/settings/route.ts create mode 100644 app/api/worktrees/route.ts create mode 100644 app/favicon.ico create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/manifest.ts create mode 100644 app/page.tsx create mode 100644 app/settings.css create mode 100644 bin/node-version.js create mode 100644 bin/pi-web-options.js create mode 100644 bin/pi-web.js create mode 100644 bin/process-lifecycle.js create mode 100644 components/AgentSessionPanel.test.mjs create mode 100644 components/AgentSessionPanel.tsx create mode 100644 components/AgentsConfig.test.mjs create mode 100644 components/AgentsConfig.tsx create mode 100644 components/AnsiText.test.mjs create mode 100644 components/AnsiText.tsx create mode 100644 components/AppShell.auto-name.test.mjs create mode 100644 components/AppShell.file-viewer-state.test.mjs create mode 100644 components/AppShell.mobile-toolbar.test.mjs create mode 100644 components/AppShell.tsx create mode 100644 components/AppShell.workspace-memory.test.mjs create mode 100644 components/BranchNavigator.test.mjs create mode 100644 components/BranchNavigator.tsx create mode 100644 components/ChatInput.dormancy.test.mjs create mode 100644 components/ChatInput.mobile-thinking-menu.test.mjs create mode 100644 components/ChatInput.test.mjs create mode 100644 components/ChatInput.tsx create mode 100644 components/ChatMinimap.module.css create mode 100644 components/ChatMinimap.test.mjs create mode 100644 components/ChatMinimap.tsx create mode 100644 components/ChatWindow.notices.test.mjs create mode 100644 components/ChatWindow.process-details.test.mjs create mode 100644 components/ChatWindow.tsx create mode 100644 components/DirectoryPicker.tsx create mode 100644 components/ExtensionStatusBar.test.mjs create mode 100644 components/ExtensionStatusBar.tsx create mode 100644 components/ExtensionWidgets.test.mjs create mode 100644 components/ExtensionWidgets.tsx create mode 100644 components/FileExplorer.tsx create mode 100644 components/FileIcons.tsx create mode 100644 components/FileViewer.state.test.mjs create mode 100644 components/FileViewer.test.mjs create mode 100644 components/FileViewer.tsx create mode 100644 components/FrontmatterCard.tsx create mode 100644 components/ImagePreview.test.mjs create mode 100644 components/ImagePreview.tsx create mode 100644 components/MarkdownBody.test.mjs create mode 100644 components/MarkdownBody.tsx create mode 100644 components/MermaidBlock.test.mjs create mode 100644 components/MermaidBlock.tsx create mode 100644 components/MessageView.test.mjs create mode 100644 components/MessageView.tsx create mode 100644 components/MobilePwaLayout.test.mjs create mode 100644 components/ModelSelector.tsx create mode 100644 components/ModelsConfig.test.mjs create mode 100644 components/ModelsConfig.tsx create mode 100644 components/PluginsConfig.tsx create mode 100644 components/ProjectTrustDialog.tsx create mode 100644 components/ProviderIcon.tsx create mode 100644 components/PwaRegistration.tsx create mode 100644 components/SessionSidebar.file-search.test.mjs create mode 100644 components/SessionSidebar.project-identity.test.mjs create mode 100644 components/SessionSidebar.test.mjs create mode 100644 components/SessionSidebar.tsx create mode 100644 components/SessionSidebar.worktree.test.mjs create mode 100644 components/SettingsPanel.test.mjs create mode 100644 components/SettingsPanel.tsx create mode 100644 components/SettingsUi.test.mjs create mode 100644 components/SettingsUi.tsx create mode 100644 components/SkillsConfig.dormancy.test.mjs create mode 100644 components/SkillsConfig.tsx create mode 100644 components/SystemPromptPanel.tsx create mode 100644 components/TabBar.tsx create mode 100644 components/ToolDefinitionsPanel.test.mjs create mode 100644 components/ToolDefinitionsPanel.tsx create mode 100644 components/TurnWrittenFiles.test.mjs create mode 100644 components/TurnWrittenFiles.tsx create mode 100644 components/file-tab-state.test.mjs create mode 100644 components/file-tab-state.ts create mode 100644 components/models-config-helpers.ts create mode 100644 docs/adr/0001-isolate-project-command-environments.md create mode 100644 docs/adr/0002-chat-only-tool-selection.md create mode 100644 docs/adr/0003-built-in-subagent-toggle.md create mode 100644 docs/i18n.md create mode 100644 docs/release.md create mode 100644 docs/screenshot2.png create mode 100644 docs/screenshots/extension-widget-nano-context.png create mode 100644 docs/screenshots/extension-widget-rpiv-todo.png create mode 100644 docs/worktrees.md create mode 100644 docs/worktrees.zh-CN.md create mode 100644 eslint.config.mjs create mode 100644 hooks/model-scope-startup.test.mjs create mode 100644 hooks/model-switching.test.mjs create mode 100644 hooks/useAgentSession.test.mjs create mode 100644 hooks/useAgentSession.ts create mode 100644 hooks/useAudio.ts create mode 100644 hooks/useDragDrop.ts create mode 100644 hooks/useI18n.tsx create mode 100644 hooks/useIsMobile.ts create mode 100644 hooks/useKeyboardShortcuts.ts create mode 100644 hooks/useResizablePanel.ts create mode 100644 hooks/useTheme.ts create mode 100644 hooks/useViewportHeight.test.mjs create mode 100644 hooks/useViewportHeight.ts create mode 100644 instrumentation.ts create mode 100644 lib/agent-client.test.mjs create mode 100644 lib/agent-client.ts create mode 100644 lib/agent-event-connection.test.mjs create mode 100644 lib/agent-event-connection.ts create mode 100644 lib/agent-event-stream.test.mjs create mode 100644 lib/agent-event-stream.ts create mode 100644 lib/agent-event-wire.test.mjs create mode 100644 lib/agent-event-wire.ts create mode 100644 lib/allowed-roots.ts create mode 100644 lib/ansi.test.mjs create mode 100644 lib/ansi.ts create mode 100644 lib/api-types.ts create mode 100644 lib/app-update.test.mjs create mode 100644 lib/app-update.ts create mode 100644 lib/atomic-file.test.mjs create mode 100644 lib/atomic-file.ts create mode 100644 lib/bash-output.test.mjs create mode 100644 lib/bash-output.ts create mode 100644 lib/bounded-form-data.test.mjs create mode 100644 lib/bounded-form-data.ts create mode 100644 lib/browser-notifications.test.mjs create mode 100644 lib/browser-notifications.ts create mode 100644 lib/chat-lazy-load.test.mjs create mode 100644 lib/chat-lazy-load.ts create mode 100644 lib/chat-only.test.mjs create mode 100644 lib/chat-only.ts create mode 100644 lib/clipboard.ts create mode 100644 lib/compaction-summary.test.mjs create mode 100644 lib/compaction-summary.ts create mode 100644 lib/custom-ui-terminal.test.mjs create mode 100644 lib/custom-ui-terminal.ts create mode 100644 lib/directory-browser.test.mjs create mode 100644 lib/directory-browser.ts create mode 100644 lib/draft-store.ts create mode 100644 lib/file-access.test.mjs create mode 100644 lib/file-access.ts create mode 100644 lib/file-dirent.test.mjs create mode 100644 lib/file-dirent.ts create mode 100644 lib/file-explorer-state.test.mjs create mode 100644 lib/file-explorer-state.ts create mode 100644 lib/file-fuzzy.test.mjs create mode 100644 lib/file-fuzzy.ts create mode 100644 lib/file-links.test.mjs create mode 100644 lib/file-links.ts create mode 100644 lib/file-paths.ts create mode 100644 lib/file-types.test.mjs create mode 100644 lib/file-types.ts create mode 100644 lib/file-upload.test.mjs create mode 100644 lib/file-upload.ts create mode 100644 lib/file-viewer-state.test.mjs create mode 100644 lib/file-viewer-state.ts create mode 100644 lib/frontmatter.test.mjs create mode 100644 lib/frontmatter.ts create mode 100644 lib/git-changes.test.mjs create mode 100644 lib/git-changes.ts create mode 100644 lib/git-status.ts create mode 100644 lib/git-types.ts create mode 100644 lib/http-dispatcher.test.mjs create mode 100644 lib/http-dispatcher.ts create mode 100644 lib/i18n/format.test.mjs create mode 100644 lib/i18n/format.ts create mode 100644 lib/i18n/messages/en.ts create mode 100644 lib/i18n/messages/zh-CN.ts create mode 100644 lib/i18n/messages/zh-TW.ts create mode 100644 lib/i18n/registry.test.mjs create mode 100644 lib/i18n/registry.ts create mode 100644 lib/i18n/types.ts create mode 100644 lib/image-attachments.test.mjs create mode 100644 lib/image-attachments.ts create mode 100644 lib/initial-navigation.test.mjs create mode 100644 lib/initial-navigation.ts create mode 100644 lib/markdown.test.mjs create mode 100644 lib/markdown.ts create mode 100644 lib/message-display.test.mjs create mode 100644 lib/message-display.ts create mode 100644 lib/model-catalog.test.mjs create mode 100644 lib/model-catalog.ts create mode 100644 lib/model-discovery-auth.ts create mode 100644 lib/model-discovery.test.mjs create mode 100644 lib/model-discovery.ts create mode 100644 lib/model-scope.test.mjs create mode 100644 lib/model-scope.ts create mode 100644 lib/models-cache.test.mjs create mode 100644 lib/models-cache.ts create mode 100644 lib/models-config-store.test.mjs create mode 100644 lib/models-config-store.ts create mode 100644 lib/next-config-esm.test.mjs create mode 100644 lib/next-config.test.mjs create mode 100644 lib/node-version.test.mjs create mode 100644 lib/normalize.test.mjs create mode 100644 lib/normalize.ts create mode 100644 lib/npx.ts create mode 100644 lib/panel-layout.test.mjs create mode 100644 lib/panel-layout.ts create mode 100644 lib/patch.test.mjs create mode 100644 lib/patch.ts create mode 100644 lib/path-security.ts create mode 100644 lib/paths.test.mjs create mode 100644 lib/paths.ts create mode 100644 lib/pi-types.ts create mode 100644 lib/pi-web-options.test.mjs create mode 100644 lib/powershell-settings.test.mjs create mode 100644 lib/powershell-settings.ts create mode 100644 lib/process-lifecycle.test.mjs create mode 100644 lib/project-command-env.test.mjs create mode 100644 lib/project-command-env.ts create mode 100644 lib/project-groups.test.mjs create mode 100644 lib/project-groups.ts create mode 100644 lib/project-identity.test.mjs create mode 100644 lib/project-identity.ts create mode 100644 lib/project-tree.test.mjs create mode 100644 lib/project-tree.ts create mode 100644 lib/project-trust.test.mjs create mode 100644 lib/project-trust.ts create mode 100644 lib/prompt-recovery.test.mjs create mode 100644 lib/prompt-recovery.ts create mode 100644 lib/provider-api-key-route.test.mjs create mode 100644 lib/provider-credential-store.test.mjs create mode 100644 lib/provider-credential-store.ts create mode 100644 lib/provider-listing-runtime.ts create mode 100644 lib/provider-listing.test.mjs create mode 100644 lib/provider-listing.ts create mode 100644 lib/push-client.ts create mode 100644 lib/request-security.test.mjs create mode 100644 lib/request-security.ts create mode 100644 lib/rpc-manager-shutdown.test.mjs create mode 100644 lib/rpc-manager-widgets.test.mjs create mode 100644 lib/rpc-manager.test.mjs create mode 100644 lib/rpc-manager.ts create mode 100644 lib/rpc-session-info.test.mjs create mode 100644 lib/search-tree.test.mjs create mode 100644 lib/search-tree.ts create mode 100644 lib/session-family.test.mjs create mode 100644 lib/session-family.ts create mode 100644 lib/session-file-references-core.ts create mode 100644 lib/session-file-references.test.mjs create mode 100644 lib/session-file-references.ts create mode 100644 lib/session-path.test.mjs create mode 100644 lib/session-path.ts create mode 100644 lib/session-reader.pagination.test.mjs create mode 100644 lib/session-reader.test.mjs create mode 100644 lib/session-reader.ts create mode 100644 lib/session-row-context-menu.test.mjs create mode 100644 lib/session-row-context-menu.ts create mode 100644 lib/session-stats.test.mjs create mode 100644 lib/session-stats.ts create mode 100644 lib/session-timing.test.mjs create mode 100644 lib/session-timing.ts create mode 100644 lib/session-title.test.mjs create mode 100644 lib/session-title.ts create mode 100644 lib/session-tool-selection.test.mjs create mode 100644 lib/session-tool-selection.ts create mode 100644 lib/session-tree.test.mjs create mode 100644 lib/session-tree.ts create mode 100644 lib/settings-navigation.test.mjs create mode 100644 lib/settings-navigation.ts create mode 100644 lib/skill-frontmatter.test.mjs create mode 100644 lib/skill-frontmatter.ts create mode 100644 lib/skill-lock.test.mjs create mode 100644 lib/skill-lock.ts create mode 100644 lib/skill-updates.test.mjs create mode 100644 lib/skill-updates.ts create mode 100644 lib/skills-service.ts create mode 100644 lib/slash-display.test.mjs create mode 100644 lib/slash-display.ts create mode 100644 lib/startup-preferences.test.mjs create mode 100644 lib/startup-preferences.ts create mode 100644 lib/streaming-message.test.mjs create mode 100644 lib/streaming-message.ts create mode 100644 lib/subagent-extension.test.mjs create mode 100644 lib/subagent-extension.ts create mode 100644 lib/subagent-input.test.mjs create mode 100644 lib/subagent-input.ts create mode 100644 lib/subagent-profile-precedence.ts create mode 100644 lib/subagent-prompt.test.mjs create mode 100644 lib/subagent-prompt.ts create mode 100644 lib/subagent-runtime.test.mjs create mode 100644 lib/subagent-runtime.ts create mode 100644 lib/subagent-settings.test.mjs create mode 100644 lib/subagent-settings.ts create mode 100644 lib/subagents.test.mjs create mode 100644 lib/subagents.ts create mode 100644 lib/terminal-input.test.mjs create mode 100644 lib/terminal-input.ts create mode 100644 lib/tool-execution-progress.test.mjs create mode 100644 lib/tool-execution-progress.ts create mode 100644 lib/tool-names.ts create mode 100644 lib/tool-preset-preference.test.mjs create mode 100644 lib/tool-preset-preference.ts create mode 100644 lib/tool-presets.test.mjs create mode 100644 lib/tool-presets.ts create mode 100644 lib/tool-result-images.ts create mode 100644 lib/turn-written-files.test.mjs create mode 100644 lib/turn-written-files.ts create mode 100644 lib/types.ts create mode 100644 lib/web-auth.test.mjs create mode 100644 lib/web-auth.ts create mode 100644 lib/web-push.test.mjs create mode 100644 lib/web-push.ts create mode 100644 lib/workspace-memory.test.mjs create mode 100644 lib/workspace-memory.ts create mode 100644 lib/worktree.test.mjs create mode 100644 lib/worktree.ts create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package-lock.json.bak create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 proxy.ts create mode 100644 public/icons/apple-touch-icon.png create mode 100644 public/icons/catppuccin/LICENSE create mode 100644 public/icons/catppuccin/README.md create mode 100644 public/icons/catppuccin/latte/_file.svg create mode 100644 public/icons/catppuccin/latte/_folder.svg create mode 100644 public/icons/catppuccin/latte/_folder_open.svg create mode 100644 public/icons/catppuccin/latte/bash.svg create mode 100644 public/icons/catppuccin/latte/bun-lock.svg create mode 100644 public/icons/catppuccin/latte/config.svg create mode 100644 public/icons/catppuccin/latte/css.svg create mode 100644 public/icons/catppuccin/latte/database.svg create mode 100644 public/icons/catppuccin/latte/docker.svg create mode 100644 public/icons/catppuccin/latte/env.svg create mode 100644 public/icons/catppuccin/latte/eslint.svg create mode 100644 public/icons/catppuccin/latte/git.svg create mode 100644 public/icons/catppuccin/latte/go.svg create mode 100644 public/icons/catppuccin/latte/graphql.svg create mode 100644 public/icons/catppuccin/latte/html.svg create mode 100644 public/icons/catppuccin/latte/javascript-react.svg create mode 100644 public/icons/catppuccin/latte/javascript.svg create mode 100644 public/icons/catppuccin/latte/json.svg create mode 100644 public/icons/catppuccin/latte/lock.svg create mode 100644 public/icons/catppuccin/latte/markdown.svg create mode 100644 public/icons/catppuccin/latte/ms-word.svg create mode 100644 public/icons/catppuccin/latte/next.svg create mode 100644 public/icons/catppuccin/latte/npm-lock.svg create mode 100644 public/icons/catppuccin/latte/pdf.svg create mode 100644 public/icons/catppuccin/latte/python.svg create mode 100644 public/icons/catppuccin/latte/rust.svg create mode 100644 public/icons/catppuccin/latte/sass.svg create mode 100644 public/icons/catppuccin/latte/terraform.svg create mode 100644 public/icons/catppuccin/latte/toml.svg create mode 100644 public/icons/catppuccin/latte/typescript-react.svg create mode 100644 public/icons/catppuccin/latte/typescript.svg create mode 100644 public/icons/catppuccin/latte/yaml.svg create mode 100644 public/icons/catppuccin/mocha/_file.svg create mode 100644 public/icons/catppuccin/mocha/_folder.svg create mode 100644 public/icons/catppuccin/mocha/_folder_open.svg create mode 100644 public/icons/catppuccin/mocha/bash.svg create mode 100644 public/icons/catppuccin/mocha/bun-lock.svg create mode 100644 public/icons/catppuccin/mocha/config.svg create mode 100644 public/icons/catppuccin/mocha/css.svg create mode 100644 public/icons/catppuccin/mocha/database.svg create mode 100644 public/icons/catppuccin/mocha/docker.svg create mode 100644 public/icons/catppuccin/mocha/env.svg create mode 100644 public/icons/catppuccin/mocha/eslint.svg create mode 100644 public/icons/catppuccin/mocha/git.svg create mode 100644 public/icons/catppuccin/mocha/go.svg create mode 100644 public/icons/catppuccin/mocha/graphql.svg create mode 100644 public/icons/catppuccin/mocha/html.svg create mode 100644 public/icons/catppuccin/mocha/javascript-react.svg create mode 100644 public/icons/catppuccin/mocha/javascript.svg create mode 100644 public/icons/catppuccin/mocha/json.svg create mode 100644 public/icons/catppuccin/mocha/lock.svg create mode 100644 public/icons/catppuccin/mocha/markdown.svg create mode 100644 public/icons/catppuccin/mocha/ms-word.svg create mode 100644 public/icons/catppuccin/mocha/next.svg create mode 100644 public/icons/catppuccin/mocha/npm-lock.svg create mode 100644 public/icons/catppuccin/mocha/pdf.svg create mode 100644 public/icons/catppuccin/mocha/python.svg create mode 100644 public/icons/catppuccin/mocha/rust.svg create mode 100644 public/icons/catppuccin/mocha/sass.svg create mode 100644 public/icons/catppuccin/mocha/terraform.svg create mode 100644 public/icons/catppuccin/mocha/toml.svg create mode 100644 public/icons/catppuccin/mocha/typescript-react.svg create mode 100644 public/icons/catppuccin/mocha/typescript.svg create mode 100644 public/icons/catppuccin/mocha/yaml.svg create mode 100644 public/icons/icon-192.png create mode 100644 public/icons/icon-512.png create mode 100644 public/offline.html create mode 100644 public/provider-icons.svg create mode 100644 public/sw.js create mode 100644 public/sw.test.mjs create mode 100644 start.ps1 create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..fac05ef7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts +.factory +e2e_*.mjs diff --git a/.localappdata/npm-cache/_logs/2026-09-04T01_11_05_158Z-debug-0.log b/.localappdata/npm-cache/_logs/2026-09-04T01_11_05_158Z-debug-0.log new file mode 100644 index 000000000..f5b25813f --- /dev/null +++ b/.localappdata/npm-cache/_logs/2026-09-04T01_11_05_158Z-debug-0.log @@ -0,0 +1,18 @@ +0 verbose cli D:\softwareDev\nodejs\node.exe D:\softwareDev\nodejs\node_modules\npm\bin\npm-cli.js +1 info using npm@10.9.3 +2 info using node@v22.19.0 +3 silly config load:file:D:\softwareDev\nodejs\node_modules\npm\npmrc +4 silly config load:file:D:\softwareDev\pi_web\pi-web-main\.npmrc +5 silly config load:file:C:\Users\Administrator\.npmrc +6 silly config load:file:D:\phpstudy_pro\ai模型中转站\sub2api-main\tools\npm-global\etc\npmrc +7 verbose title npm run build +8 verbose argv "run" "build" +9 verbose logfile logs-max:10 dir:D:\softwareDev\pi_web\pi-web-main\.localappdata\npm-cache\_logs\2026-09-04T01_11_05_158Z- +10 verbose logfile D:\softwareDev\pi_web\pi-web-main\.localappdata\npm-cache\_logs\2026-09-04T01_11_05_158Z-debug-0.log +11 silly logfile done cleaning log files +12 verbose cwd D:\softwareDev\pi_web\pi-web-main +13 verbose os Windows_NT 10.0.17763 +14 verbose node v22.19.0 +15 verbose npm v10.9.3 +16 verbose exit 1 +17 verbose code 1 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/02a7889d b/.temp/node-compile-cache/v22.19.0-x64-9de703df/02a7889d new file mode 100644 index 0000000000000000000000000000000000000000..ffd70cfed68c94f33967bc8987cb6482557f4e69 GIT binary patch literal 908 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/13dedc27 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/13dedc27 new file mode 100644 index 0000000000000000000000000000000000000000..53ca6b66c776d28b789e504644a9778b90e0d1ca GIT binary patch literal 12332 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/14ebc012 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/14ebc012 new file mode 100644 index 0000000000000000000000000000000000000000..2f9fb16d41acda881e53b200b08a808df5e66b45 GIT binary patch literal 964 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 mU|V45p<68H z>z;4UoPE~*t>0dI?X}n5d*<0cy>;K!R}hk2O33`nKYg^ZCUj_G)|)S-zB+vy%6CS# zR{bdJ-JS1ULWVD?bg6v5r0ff#)@7{OdgdsNFL%^ zW3VDO7KfJX4{*AIeaFNYpUO_qCe~CKG`wTsg)?_+$Hi&lCoL~f;r>{wCUX?Em%IdTEYi$@NYsicuHzh zOYJAuoX&yriWRNVL|3RYV%AIUrqG_Jj=!M5dm^&BCz^;5WxET-D_1Um48@j$gUsDX zv10B&j(?H`74zaJO53UBXmf-Kn)Poz3RU9BdUa)6=A`nR9` zH&j^|Z*PdkBD~pz@!K!ayrt33NCM!9`}x^zQxR7mO?JmZw}E>O?vWj&rzw z3pL_BsqUVX&{$LQN|1r<+WAZ8z=Inz>)`&qXnZ09B;iP7S6dvbcnix;SKKT^xqB6O z1TF{J@i!TJym{06ZRq)x$#~cNL?WKx)q-$G?Z)v)C>l=J-hvpf7)i3kRCxL8*}U}s z;n^5OQ@@6*KE#bSzibp2#NzFhZ4h)OgdpaFo$US* z8JHB0K??zW2h6tpm$m0-U|K~?4udcvuU>kpJ{vI5t8gVWl#W-nfGx!SADr}IU#52w zk=9TcV;Aa9*Y|#m-W4*K8&Jjz>yB?*_HZ7QtEvLsq3|lv#W+khu(Y2X940pCx z#-hoTWtxa-048qxc#aQAOm~U+t&CuJBbY5`&C&*ukxFTu8OWdj7aEOSypQJfV;BA5 zcxNX}Y?OWbqwR0vMD!F1ag{Gmkqnt8EEs0&`; zLXNY~Y@5k>VGNt%@f6B#&MTS0Wu~uD_UzWj4{#Z{7jp;7KKR446w`!Xj2q`Wc;%S~ zFthn%@er8AWoJ6(j^?t+t&uRwa6lIPW1Aasn5ANo;mM43`Qc?HI3WJ^NNTvkC z6^_r)_iG?&!?HlQN;!BLRMrYpFuyh+*7;Q7H}C}l6ut@Jge%dDaADT|PQ5aM-X#50 zLc9IM&nwXGtuBF`%q2vEhl89sAq(kvA;qCp7H0`rjgVp2vFSaxyw`{2o-Pp&0yI~E z(0&A6y~2M2LAb^xJ1qOE1PINbz%Gt_+O*@`_e zC#K0znMQgz61p&V%3W6>9j@5dcc)kLAjnAhjI;($`UXfJ|4l{J$aEDZBi?MocPHF{ zzJd8TFCL301aedwiOy<3&uyz6SdG?p#W`?ZM<})mUQI)J$OxxkD(2k1-}DF3ePI(C zgfc0=EX|DxnIj9Id+KS+3Iq$}oHP;>WP`FhOH_|dGIDC8Ot2f01X3XV-O6-uOFc!N+T<)hO`Ov~Jg zs?GcR%#L7sO9~_mofR>-HRQ;qJ0^2ZaQq@%iUkt-X(3?@1d=vAREMpbsntYIN+XLb zR&B)nXe$Lo9pnYHGkyz|z2718*a-yTXlgPgn(M z8R2jR@vD4(S_70p14f2^TryJl8>|8afrQbuxJwZUbKrAXRKZADRWOf5vuhl)I@8V0 zjhgG4+3b|G#yGA4&2IcKX2vTt3krf8I4o|zh3r-Pn`L-uFS-htVGbN%q5@`FI!BM^RhWFixU*ZfjK(If>+XbaNX?5|4z#1bV$<+hMJF!93W>&1SU1NJ%8tgqOceI_&CK*SX4OAJr*U=p z-Ual0dgy@GCxXUDtZx(dlBIyF&V3gsY;FwB1n3=;0siSjoA?Nz9Y~KW&%fKz4+FBi z0?>y5jU#|Yp!K-w@Iw|n*O|@%_8EZH0)RgXcDQ7(fe6mHAURve0*0%*Wx@>p?*3u~{PCkY(=7vZsXjThm8v_T%W^ZXJxP9RUg z;xML6FWh3hF5FXQ@L|qCf8$!+XXpDfaCxSt`)AD$YsZs z^ZjTBkL7R3T4bA@rx`e&ya*4R$J_C|d=Z{WAbY~j^E_~Tk-=m2%i8s3@L2tt46^Ur zc|6kysfODce~ZW36JLa<9ArPR^V9)HR|d~;T$?-Q3?3^lR)B1~oyP!<=Q4P(9>+g( zKW&?5l>m9v&T|Yn1~Yi9Je0Z1HhEAL;|CA4KeY3B;J`csZp%NGJ(+uNn>~<4Nxz-v zdf@mdg9n2o-7hilCJ&x2(Vl8}K4#~UFDGO!+?GA*I28MI(6Q#L6^D=k$qqZuBH-AJ zJnqFIoM*TIqdlzx*y`K*12d8Avh$Py$C3=5 z3;JW87)&0kKM?g~x1A>h96OQ6)*n0`*!lxeLH5}7_kr%08FpBC&^k1Lj>Ush1jh$P zlRR$cal;0=5^l>c);!=pzaj}-rajg?08f&=89Z{gxwYN~6=G|BQVv3yUnO!WY^~d{ zi~%cc@X=SD?wE6C{=)pdQcl=Y;Ucc7V_5OMQo-_q`uwH&3-d@(ERPiS^}|4mE%;Px z3yyukGr%V=47t(2Jza1}T4etCjCJtyXzkDAjrmyD-5N?ou8XIlZP9QDe;xrLTzIY+ zx8&(w-09*km?%@WJK&e^DE=w2oc}3tw&M0X5%8_5+M5snC&zLLHM731z5xRe5)R4< zo5|{WFm+=1S=TyJLy44ELnV2gqlVHfA3c^got`JzKKa;K*?BlNc%HZq2L@U0k>Jpv zdL%I9$UnL^t3V=$y~;q#XG4SMMk3zlW5>MNSQ_PX99uUUOU1q{K~~~ZM4{A|eQe~{ zxzdkwj>bMaPsSmt%$EbQJn6?yE*p=siMh`R3#EzTsB&iYYRlx|C+zKm_>%tn;0zU& z{I|(INmF*UVs6H3i}O0m_b1c9ODpDEpAI^OQMcHbQ2TWHwD^b7Xd{%x;ufL}sgHwpM1} zli608Jtngs$?O+08<5!;nVpc8lQ}T-5>tDmLXRXP}O~^uBrMcpM1nC z9gYkQ5{L#$bru+sneGS-u`E3cD;-#wtt(j0!m?9`a5~~uu3LYr!*a2%Vp+v<36PB_)kg$|^2h1wg?ar0@DVQ#Z`lBR#7mY}AApZ| zQM}^^;3HnLy%PrDBVKZhiG=D-W0FL5moXWf?Ka9~3gh&OQNie8Z^?jB>7WOVsx11l z5m4w$Ms+rQ(U_7$Uob9p(gVh2F8aJN)lGk8O!LrR8a268d*8S`k81B3(^abd&A4I& z)&6SK=2Pu2#tbjj-Zf?xQ0>pgl_RNk#+X$|wReo!KB~QK)M-?E%a}8YYHu2Ii>UTr z#=Ox~d&8(NrrMv3`D3Vd+Gr@D+Uv$umr(6BV?im^P8p43srETy&%XYhW|D%9(0r?ky#kkX)!!D=O`9D)*Sa$#b literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/22a1c90d b/.temp/node-compile-cache/v22.19.0-x64-9de703df/22a1c90d new file mode 100644 index 0000000000000000000000000000000000000000..8f2964247e956c997c96b9a5132031cce156fdf2 GIT binary patch literal 1780 zcmcIlZ)hAv6rb6hy}dts=aNM4C?yo?NYOS|q=Ftn6MBg~8*6$|O6Bx+?`|*I_HuXG z-D|3dRPA96BDJ-t6!SqFM6i}10l!E{jkZBV1^u8^v=znrL6CwqMX|m&duJ;2s}E-8 z&F}r@&AvBpX5anh`>9@?kP87qUVm@b&u1^?&TI&Lx9I(S{t3iSTE}|c3H*3+5$tWD z>mHW(tMdlV=b%wdoe480=7@F6Ths>Ki)t1cWiom6TO~?DggqttIVy(t{oyYdA`e9q znoyG3yc8wuFjW$2oE?&3(MkZigZE&!KGYjN96`^pjrzOREvMB9YT)!HX!OOA0_q=3 zP#lONdP1TwQY~w~`S!;PD(H?i(Xbs$U{62(>kI~0v@_Lm&F7_zol6p6qaJi1xb}eu z7uU$3k9wBC6!OEUjD}CI{`3d~$n{J?r+T&!_~p`42(U@V_N+m>;x8dYor&O*9g1@S zzb)OL8QKjaVovPDm-rpK1_rhxh;F8WBNs8Qis^b=$E@OBt0bJE?MnaF1x-n~aoZ7O!ADHP>&aIWbNz<{?*1jA%+T)5LKVB;}Di%!Y z~Y0@g#0Ich^0k^V|89HU%`Z~9WoHZ%2LQ1l(7Wndg`rL zKf%KCxAo&+=(vAv7_fZ448>VB$3^yhTk7)m^B8+RU$UK56EOf2LN}|ssevlGh~sl` zYwJ0{t^McVpaH6oZdrrpK*SLQ0H1^4Z_iNw`fBa#OTom5hz(h7X@YVZ8eQk#?EcMd z%j%dBtFYKsF+xPC1=U#tLE*gwJX9n?bRsrc!de1}AB(db2I8M>uQ3QWeF&n1vprs5 zt#?ElmI%H8XIrb%{)(4bpD_yDC*j7ua`bqC3KAhm$9$Y?(GRrwR99c1271Cf%IZ|x zY2pk&smI!1uQ{G;d=0h~lxRkHgii*Ed`<;vx%~lY17SRc1L?=ou=6SpwU1gn_8OaI zr$k9iCIG)ahlfaX&D99wlFntFGo33s59nOgc~IveoriTE(YdDcsLo??X}Oc0vsV5f zTt;0&UE&ON8Fj`L)EVjl9zb0|J-D1)352NS4&itB Nr~P3o36XGH{sH{YT9N<& literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/241c72c4 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/241c72c4 new file mode 100644 index 0000000000000000000000000000000000000000..e5874c104eed10b3093f2a3ffeb7516e22bf37cb GIT binary patch literal 2332 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 p$&!*bN-j{_IY0iM5eSy)%p0JT3H9s+}e z@FnR7?jc`PB8nm+FbKrG1Vs-$hJjJ^2b9&S7ww$yw$z6XeDC>r&-Z-J_w($-$Egwn z2yuYb#paWdm%r9S_SNOW`pOlG&x^b5kL_RP9hk2P3!G7pYR?VwyYMi#HtXbE`V{l4 zK5dkx$lQ&GaTS^;m<#wlRtNlr!&zjF=jvni*d~UEXj#KDjESAls#86(UcqW$`O$&5}Gus1skr@+K%*+;ql})5$=H~eALt7DG z|9_&(ozM=p$|O3h^^`#|+LI0D7$-pYAH7-9Fkp$1QPUC<!XmZKh z+v>zvJU(cqMK+NU=%7%pd#!J!4()h6W#XW<6c|)M!hG6!W{^b$X(4K~RjEP4RH#uI zj*9%M8>u1pPoohv9M>DF6mZulfUCxK5-q(*O$g}|JSAAP`yg%g36=H6tnezG?XZv2Ys9j~7;`-B7wsTjx)27)QaHZ3Tbs<6R d>8kvpWpJV9p`;CnEeag>GP$mA)gfI@l)tHZy;%SN literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/3ff1ca18 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/3ff1ca18 new file mode 100644 index 0000000000000000000000000000000000000000..22c3912d4a7b237db7abd075d0b093709d4584ae GIT binary patch literal 5524 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/45925937 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/45925937 new file mode 100644 index 0000000000000000000000000000000000000000..727757af2a32e8f8faa2833b8e05a58cc7eda7c5 GIT binary patch literal 940 zcmY*XO=uHA6n?Wi$tIhn#u}_h2{~BkAtXigQUnzjv_wUt2tp*gNhY#2Kh17Z+nbj{ zDPB~BUKDBlsfr%NqZGXeiU-fFR4fX56%+-vzBjwk^ue2X^Ua%?_rCd_tiGR98Nj>> zu$ujH=w0>ro#F7>^Y)*WX~Gx9^~|I2$Hgh!?;1;;R!6j_7Oj)$%+PM=oXfSu)P&Yy zWeOAMjH?iz(jW@_8Ph-W&^~=crfJ`dq`E_EF^iTQouyBeC|+;j(`X?%B91dN@^;_s z@7;vu?Z$b5vxN>XHul4qj5g3ro3O4?3oM>5o%yx4HI85=lP%Y5&l6tOr8}?{tUel} zoSV0{KZs(EXSW@%>Ig5m#5#t-Cv-l{6YPlgL5~32lfST#t4^Fm*c>f*&1(Ci?Fv&& z78=cp8298Z@bA&gc=z2+jZiJ7R2oSmaybG? zDFve|1^hIWgX}g!rvjV7`7t_6`6@XmWfW`%)0jL(Lg>Y%3?kZXi$HmM8uKVn0OBAY zxwnNjv4<-IJY`xG5-XR?b7o1E>IBHWWpo1W2f31KkwT=mlv!Xqf5eBBZS1As-(g6Z tQ9yYW`?)uyDt*`hs>rx%OTFVsp2h*~S}6qdH3}T)XR@}X;FXx}+g|}ApeO(U literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/49799a45 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/49799a45 new file mode 100644 index 0000000000000000000000000000000000000000..5949c51c9e1194df7ffaed0367f0717a4bda6365 GIT binary patch literal 3620 zcmbsreQXog{k^+)K7S@h&UQkY2D5N$szO3hSu4Z@ZJp3S5c#SIQ&7%M&cvBxC$`fs zX$ZEuL)}EfXb_dCL?O#kZDT-FU|ZJ$om-1VC}=B78QLi7q-m?Fj*$efTf5)y-I;ty z`>RiPzW4k7z2DdK=|BDD#p(bdN)aK;&VKgobGa+eSKI!4KK;eDXAytg7_Rxb?c?L0 zdC1*G18w4zJgy@mP6?rI`Bf)l97bHFSS=6I9^7t#mokxTTqzR=VK=BuTnSH^XN7wT zwt)Ge`58yTGWRF=+3vng9pt8XeU?h=ohwPDJngO&$K(O3qsnSj8EXyW{^9_bhb8e} z0t(Tame6Ubv|E6EB4rXJ^4NX>3BA4TugQSxjwa)wK7%ulPCodg9dO}L%0MJlTEcH9 zAKvc-TqLzM8jm)GQkEjr@r{m`-a+M&yUH()iqzZE^<1l5vjho=WM3$~J(}*>)}M|h z;uaq_c6HOlBs$O^>i(9IOb{NW3twWK2>B}C1|2ng2`d=FU14Do(d#o)$|xF+C%TPw z5EndU{pWRM7&4CQ52d*?0P}FM3Kl@7Gyfdub^$VyTGa=!=r6qsRc>8C?UBWOI;fqwU<_@}ck(LES50O;@Qh(*I4 zgXw52)d6-_MWQjIrk5vSL1aK53Gy<+Y|dY&0H76(I^wXjByx;0bba)vm)^!8CXIo? zXwod77sn1y*Z^lb0D@RPC7UX+d^$VPIIlE-Oxn6zTdrZyJ39+S$Vo&uKfu%|@1PvQ zVk*UMTVZt@I%9U*Gn@fH=r%WW8$TIF6}!!Tbgy7`jl0k_5K_VjKP_?9ZJSyl+&D=6Fur-ZS7Y@F2-#YHHc`cwK9&X=B~K%vzjxRhT_+ z?D524JPk0~KQ?v!D9lPyl}@BXu{k21<lp_f>!EH~4!9}A8(@B1bnMhZZZ@Ge0qa#zI80ZYV<0>*0E}}B zGblgk&=K={CFZIUT?=VuA~6AED)Wm!Jv0 zyg+h$$RolXLVbCWT{Lxp!gWN*TZQ21 z0PsrK6Wkf(=|+SL$^(yk(qdyrXh8n4Q%4#$2yK%kmu}--4wz{w9}qaP7VOLab;++- zAT*tvcge#hxB+Bk$j*mm#r_?d9iZ2pA=Ep696cYDmk2xIFArFec#E4>hFzSs7x`gP zc-h}fl$8$ba(3H9;Rz6gmro26iy+6Kak!B--y6nZQy2+45+49Z!L#p}C&tlIKfIG2 zW=Giw8)H9XC)qeV$KGP+*;2|T*ec4_Qua;C>L?pxH`pia4x^NLDBDWq4;=gtlXAWt z)T~DB*4jrL<#!ZKP&84|n4(FFW>Yj-(d>%mP&B7X-!s?@(F9e%jqrZ$tjIL6c9z*R zRy!-%HA%H0#i`j;88>cCR_(Yc0$xyISDgrz0Oay&j*OcKn)3xu`K(%;?KwoJsaB#Y zS$KMe5fIcRS$Ir9R7^8F(3DK2Bxp;NcQeau!h32_HWQGAi<#wi z;X>wX4&i*J$|=0Fbmn%?17upxtZ)h0;@|dsPNoITmC@Y7+L^EW@0ndXlXvCUO81pv xlfZvyuRPLK4&ldX!;~f>c{lPe^Pc4Oj+udOk@#%_-8B7;VLzhq;Vlpma7C2izdWuI06a6Bn=23JG(RX4(!e>Gds2s zg&1QHv5*D99E}=E08t=eLo7s&BDWv~wG%TEPABk&^v{S!gFAwG&} zm%LH9UxHZZKgFZu38CdulxCuk9%yG1LJLMf;vSm$k9o=TWgIni+50R*@W@LQX zT6^SCh5lo114(+a+4OURz!z8J3Ejtf#4np+JZ{j7hE!S=t8Kl|foxI4>7<@9ER#uW zYyB$o5%?6h%zC52(;M3yp9xIUH8)L)p`$x`bYuZzXT(#MjTkuUY>g#jZ zi8s|5$g*ZQnQ%sJ0AG8}KW8(a6@L&z;qk#H+p^*r%l7mQ9WZAr_;fFP5n7N3@zsGL zLy#)HIh|AulTA-~TKg)8S+>ru_I3?UAl!Px)WV2>jd`k{TJ&WbRM)$vMjsK{%&HG= zzO)-~LQkdvBjWQl9se!zv9P17c02(Rn=L%hv6%TSYgrEKS<|)#m|=3!m~YbbV>NKk zFrAE=OtRjpv#Vbj(2s@VMmVE88Kzyj(fJy6QjXsv&^#y}e@#XXE(Y`tl$Uhz0JgJa zNfFv0X*Ez*JO{f&=WZaagjp{25cp!1A0A@ahw@R`@;4ca#j>gPG{Dz;XW}`Ojs!I- zv<9qCY`+W}R+C9h>hZNsob@RJPOI?;NjSRTjWLWFCM$&Ok1su43mfTW{WgBEaLhpX zN6l1kG$X*)dmP}I@hzXgP}+7)^cWPpRoPjAET-L9(r^-tojA4Y58zww>h=nsZ)fY8 zQ{c1pm}?|8=4&_a-GD>3p0?=2SkDKM;T|7V#iq=|$px=`&U}`ICCAmsK2~!LjYO`5 zow#kJnd0fVySB6n{7%eDfj=lJ7t5g!^U*mwKbU#}a!$fF%wgKIPEbs=k0e0ry$v?|sxjmq&yX(3qYk6HteC@H9<^#*(u(r>pE8z4 zlXycC zXrK=vv2Ww`5=f|SCV_22c^~MtRhJh)cfv}M2ZUAwt$6*wN$?tu<6`YAQ-k8#9a$M7 zfjVy8%CVVADj;c)STuX_TpM6pPg#v*@GbCm zy?XdQR+Y`^Com{ZOp=)N)NdANL2~{5mchU;e!rjjIbPCzI`oOG?1HLMB?GsBl=S&| z)ziwDC@XD25gRXU2G{D6)J|}Dy9_DV1oZqsc@`E~+=rEoKxf|k>vZtCeqNOliIj#V zWj1|&NdMHd;OqVDdIk6#PNUz=toB0waj4DE28BW1tfgeNLe_7zK;)w%V9_+sh%%4V zPL}+1_x$|wc2H>zL0%}A(QK3SxBrC;Lp-UgX1Ko@mFd#ps`&YZk5v!)f9iw1P>4-b zvS%d!ROoK}9UEv$U>hI<3HaSJ_huKT(m$n@PEN)SUx3u@VU>f)U&u__KP39GXEzmPT&La?Aslyy?!T<&IQ(aYt?}U zEJXvHbXs&G?H8w>S%S3t2@iAnX}%4__SYAlVWKDT5RtMmbk*!3ywZ|7S6OL>NUY-I zUcMCghrEBV2xSp+^-{^RpTh+=-C(PlE~xnc-}=?wVqRQYnm3N^0PjxOa?NWKZy8aW z5Zahp*$LG7R#V#>R%C#>wpRr1|50C$7zxm7;B8eXd!Zov;y>QO7NTle7}qOh0^LpN zmR3Lq=I$GE6uY5J2QJT)!P4x|)xvxsjjc*_kIBoQMv{?=YR9V2G^w^8(HpBxOVgJ+ z{HaS>nw!*Vl1^18jaaptF_KPoJf(%{l*)`-%GvnVEs^wzNDOcE(8J>}O{B7UQD7)A zIV35FVBdSEx{*X%U+x;X;1Jfnf5&NL&~tzUsTAFVW|iU0sjI6ulDesS8=^<6xHb0@ z%2ZdU8FoKOL|4G%4rqWDFPhvEMIgnxgBGv59Ep2q>MQF1X|;5jt-h6{XtTg<

OYZrks-^ktim}OiQFD5|jMQ7oGL~4*A^DSpNV*UNO*181P&fJwqv* z!96l#ODBK1K1)Xv@nP>b2zkWq((*uQxm;SVJSv^kl|E4(SRDwIm&>B}!D>U$((u?6 U3ktYNG1D#yj`#g2iVAuB58?Fp3;+NC literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/4bd941b8 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/4bd941b8 new file mode 100644 index 0000000000000000000000000000000000000000..dd3a2737e7108d2f811390a66e2354de6bdfacf4 GIT binary patch literal 6796 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/4fb92bcf b/.temp/node-compile-cache/v22.19.0-x64-9de703df/4fb92bcf new file mode 100644 index 0000000000000000000000000000000000000000..40407a8da00bb8294c7ee8af8e42f8b4764ae772 GIT binary patch literal 908 zcmY*X&1(};5TDt7$tIhnh8nGC2syN+hZ1w~QVLpF&{|K?gF+;mj~7VD_eZN2DQZEA zCqKZ87po$O9;C!u(Tk!8>d^{nO8o}}MK9Kww;N0c-pZfD1an z`(FRk_XkU_r~F@DbpCE$WPDBDPCW5%ubrj(z%YJBPa5kE=P_Dn8Fx(~RIV^RVstUj z;XYa@bOVo$6HNg2R`*BoV@W-b2xpu za}?%Pv_ocR85lN*dMOKwDN9 zWh-6m*7BWFz1B|4W}@77@7qP3AzQW1l!omxB^W*BFvjEX!95hr|Ka1e8wLR_+3c36 zL&jDg-FfFH%q8T`Vq^4p)FdpEDV8d-maTfj;5p6wSlHw_Wio|Q>wgIx!jxgeIEN00 ztp6A*Kkg~dWL)K4a=a;~Tco_|jH$8mf$PFk+8QX0R1%=N4e%+?R>(i4g>m;0%q6|T zkegShSok3jlaIS#zfS1IOM4;+vn|^t{xx2!UyCN zu;uMlvzBo}hN)ZwJor02q3y+2Qv8AmZAAm^P3X@NpRSEi1N3^Vn_2ao>7nw)g+dRw}9y}jOD zX@RKxK@&oVXep)fD~&XyMyUxw|03AZiui%?FB8CMB$}9LjJAh-#E9?B-leU7`;y&x z^LuaJym{|8bMD3uM@RjHWMo2W(w)xQPkyE=Jl~J!|GB;&@zd7HHD^6PosNLLB($zY zd`muW;(P`^>X+YE7~^xqYQ;@*H%*~x!bh1%b{wNJQC}=;^bZT5yi!(GwptA+7pSjp zLA|`4eOI=iMUVKF2U~(Qi;4a#RS7#LRwjdOp!`jJgbj%B8>)fdxJUU#SB7=zF>k%J zT4|`2Z~1G*jNCAQJx*qQFS~(fGRSO%EYv=d4}}F)fD2(+W96T5@;jXFbn=O8*2$vn+UMNp3QTcjsJ=JkMqg@F*chR>OM#~&Vv?z$P-qDbrn7u+lI%= z70ZX%?;GzdMl1t);{sk!Rws8cv?^DRtJsN*le2qaMC?GceLK=ElXcpxT#jSQng%v| z5lhAM?M}86{oWY4X5-o(JH37#jI!mG$kJ7`St2)AQHdm;6VdJ7qQT3Uz=~LGB@8@V zwSMBN2zso3EkYdgY(2FevE8vX9Fwnkf$2bQpUN7{8v;ZC^8gFbr{o_MFQKcW_SXsL z;~n4~-Wd(9Ub}#`R67A3xQ7; zE1s;u%h1}|Zl|ntyc2H$2--GJKYbm!+}fJ7v$G~*q5}$DAwN$|)UYE#d=Bc1&jBXm zJ_pB4P`T8Kes~V}$uKp14!pw_aj&hvbZzmXGQv-bQA^SX${2jK&b`r14JFI$*vwZU zFK01Akd@RckC+JZ=pEpPia?0QQzxN?XoNEi2APQmal74UZiP;dLD5dIz-tMCAT0<{ zzoA@PS6mf#SM;+@=4J3b45vFeFy9^PvA(nkkKd1!jJ|o`OEhr`z-SJ_+IvuRb^!vo zyAa}!2m~9~_@4mKqen+4&SH;vfH{wqsXern!z+f(hQGg$eQ8R44-BwnxX1+ z(qc1YDpa6?A%qG7GeliP%mWzn8Z1^TO*L3&`h z`qzfr!pd?aBD?^!N*+l*0vfiE1tR>D0w$5dVx2T4EMpo`4*}89n{^~4-bJWvh0DK& KVtrM`m45+XOnXKE literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/5ff32481 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/5ff32481 new file mode 100644 index 0000000000000000000000000000000000000000..31d8239c0802784e8b5255f48c93bf0fe9431ef1 GIT binary patch literal 908 zcmY*XOK1~e5T4onlT9{Di8az9A>`0%4<+UzXc2s{pe3H72ZcyBk3W!*O`2C#@X&*W zl7om3@Z!aYh@upcdMkPn6c2i>s3_h%S@3nS&iuQu{$Dt@-cqWVTjuifIBFd|GkH=*9`*Nvem0n zg^cy@-+B`y%p>IWVtxF0+$1cYuT<-@QE>fcaG&NjGaKBee7;<5|4)HKm=cT`XVGDo zTQ$LxpYkWqWW33Hhl3)-Xfm> z&EKnfEt776m1G5mtA0lc{XjWRu-Z)teVD z#e)ih7caKdis(VScrb`~P!aT8p(1+lT=3vU{eLE_$%jAt|9dn0-=9CvK7U#L#t1p9 z5%T6O+i9J+{BbtF{VM&vbq(<~ad-Yn{`*=D_{?bayf$k*=a}yTr6H5U;g72~IcTY8jZngfSF!cQiOv{d)EYmW}^0c^z!gQk~?GuQnGd11A&=PN!{^vf)fOMQZWyQT8idB`wK4bl{WwY literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/63434afb b/.temp/node-compile-cache/v22.19.0-x64-9de703df/63434afb new file mode 100644 index 0000000000000000000000000000000000000000..a07317f2a7b374fde715072a551f067112654cdb GIT binary patch literal 71780 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/6375061e b/.temp/node-compile-cache/v22.19.0-x64-9de703df/6375061e new file mode 100644 index 0000000000000000000000000000000000000000..b27d7f93275985e278ff0b0bf202ef724b38f4c9 GIT binary patch literal 1892 zcmY*Z4QN|c6u$Spm%QZVr%7MhbX%8Z+HP~yHjGYm4D8P<+hbcAvJ^IKNz(R}WwuG1 zv{h@7Y^jgq-P>iaY1(Q0?OM;HJFg&qSsSbP#Q6JVAH;J)y&?Xh zcr}9lJS=JzFG+&He8fEbvtlppK=TDyRN#p(O+_M2P_x%uB7iD(@3TzM0wT{+>1*Cx zW%9CBZaPpvq!r0_JkKiM8yjhat+zu1r>k=#&>DL>7H>~9#o}$+%M~Y5c;bfZA)v6aacHiSPr;_ehaw2! zC=Em(;Rhf6IEkZ4YTdoDqy|g~Mu$Eezi9+4dlBp}*fN>FzgPk+9Bz+wXz^&L1`Y_u z_Rb%?V+K1MZi^+?LL`C-D6~pEMk8p!{D>RbSE{oQFOy|oC;}!E4{rtbvCi;n$Uam0 zn9dSwjwQ$ofv|4zy>l`M2J6;tucf$!(zL>E;5e^Fo`flRkeQC*RT_>ue|18+3$E{7SsHrvdRU^`Nm)DR z^m=JUiQu_-m$cHXuqN`s!9;waF+EX8v-hrWOLjmjD*Lo}TOyePE+*n|K7NwH_BwpD zu4JNBOQncVB>p3cKN&E#d&j8~oMKqtMvKJHTEJ&>LXERV!6fm0uFgPCDZJ1zEMDMn zf9-z{XYl)vrQjRJlo_LeaCN-UgVC=>UVVTAuTwDw(MBV}?On5OtXJEp9#X=pf(<+h zTz6PkF@NLX+Im(HW63|=llXphYPcp4fDK@yU`)zueuxZ)Sgzb^Y;OBLbKd%xUKa20 z=0LI^hXVWjHHYg7bp=~r8yg7}BG%v!ss6@>#v@_XAFAIUtO=8#2 zXBWX*x8(jmvO~x=>Np*MjP)dcod}yBSoku|QN|Af3Cn~*j&fxNnV-^xMe@Toft#*e zG6-e-HluN>a#1u*ySW>(>H0~t^wf8i%aY~WK?}!Si_S0qYkOwFnipPL6r65uI&aUC zP0nh2L00FvE0-OcrU#uocO$yAe18kTZXSx}Z=I6muEmn0?=&;t<;{ecQSe0Opq`Pb zWkz9X<~e4#w`Y9JDB79X!HiA2G9G4ZF3%J&V@pNG>gM18n=ixX5A0bg-fhRv9R&Vo zi^U183Qb%^0b+FdENNmiMNS$D-zA*nEesHYOJC)<3G#d`27*)ONOeAC930i@Zjp5P E9}l2y@c;k- literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/6460a1b0 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/6460a1b0 new file mode 100644 index 0000000000000000000000000000000000000000..4d07c4cb1a40c44675e1abf123d29decb7bab9f9 GIT binary patch literal 924 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 Us)z)e04f3(^tcgMlU5YvKT=CT>;M1& literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/67e0f78e b/.temp/node-compile-cache/v22.19.0-x64-9de703df/67e0f78e new file mode 100644 index 0000000000000000000000000000000000000000..7786e92b97c2e3809213975781f4129ed8122ef8 GIT binary patch literal 1100 zcmZuvUr19?82`?_=kCsJ#?XNhHdbumL)#3DM1m5os1zYfqF}MRKX-N4Hs}5rJ|%$= zK2}OEf~LeE`a|?A6_q3rzWRqE=usj9o4sh?cebTM2hREao^yWR_x)b3f1R{h0J=DU zG;_Q(w{r4lyXDL4;?CL_`R9$Pz*Ecj`BseA7xN6sn)*s7yB9Zes53Usg-t%U+^UvX zf>aM~#$`A*%T%!6ZuB;K9c85v?7+vZwiid0Gq!fOy5(@o?dk~AF&nJ7nRY2g`r8pk z0u*rq5D0a~&K#j=Ds^Q}MKfXMv(bzJ%o&P}KEFTPKt3aFX3V0IuU(_qMR|4Ej&^o9 zVf2mV2BXCrA{wXj&F)!Y{7(+(6xzk5MMYBWpzaWmAE&pE5UyP9#cAHk+n6g9-|1T@ zH)9|W2&T!3bZN$zsh-#9Xv0kdCU=#;?hWbH&hlOuq*}RjxSikzs zW(C$6y1D%M-o|Cj)4Icj;bievG;e6eXqetk6@-Xnh7+ZCm zsi1GN{O}X@3aY^HB2Htmsjtn3zDOi#rVTMbw5qZ0U+33oijhctwju<2RbY}=y;|i8 zebqvA^w#J|V5)Qs|4Vnv4y2=~jPi+&)^Z0_Y3HcZ4*QMt64ep|>uUm)XSkWC%E+FM zdSp)yh+D*vJs*JJhgDtB$thm%!aPzW0H>fithy+OH9TnHC+=vPP6qX5T)U>lWWjd; z`wF8wuwKg+-A=WmXFr&`zz=UbeUj5BJAK^gQ<~Waga3x5U`3LAQm`U(pB$`ki;uTR zOU=srWJTSw`jiO^NFVKgPARJG5LJqNb4*1Ys0q-nK~S6?n2sqxLqr@+)yP^6jonsX Fe*v#J%Od~) literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/69711141 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/69711141 new file mode 100644 index 0000000000000000000000000000000000000000..d1eb3344497a0b7cb1710cb75956d4d44357b280 GIT binary patch literal 2436 zcmZ8jeQXp(6rY)$yS?rm?NO=)B=s~9NE&EOw9$r0)uUQPLqCj~wCV2ME#;v1(Yq@} z6Js?TF~mOv0VPpmpb(6q0-_>95XS>vLD~2Spc=-L2~TY64qp5 zc8eseY|tQx2P{vwoeTR&PiIomh25zx#lq*b#sCVj24`<5MKa%=KR_h1f`{~-hKZ#B z4Q}clzp1NmK)Q7B^#WljIruWxfzV%8`8`W8oBqLE6;J71!}e|h1a{;^>ZB`e;K z2U{YKE^oMR8m-6dY%~*(*w1IJE}L|d2CJq-(W|dIE)gwjTo=}-iw?dPo|Q1?^x)YR zzoK77n?cAUR&cMH_<3NHiFHY%(ZjCTnn^QOO}K&yhth~VUfn*w95iVwVxBb zj^=EfnFEH$B#0E?`+u0|FQd5vhwU{>lU?zoopr%MKpDf<0Kc(u-%cbqYv*1_Wmad? zR+OLxX6#Qw{j)ICZ_lPy~ z6}hA0r1x)2SQQJ3qgc+7!sjeAv4*qquEdO1(eK^i>dG>OM*)$$#WCiNCdzj#>{zE2-8 zv8dR)35SVbEXdR*dn#b07&apc_lW&u@1z9qismS)3O%aJ&V{BHAzqZBt%|gq=BIw< zs%PzWN&CZ<(sX#=Z8A?&x<_$w0?ig!u|HUm;I|zTBz>4ja9H~ao+-cReS>b=VpLPG zIfD0b%_qG|=i;d(b9r#j!GnU^Kb7ZM;&`Qq2e$w`g?c8nz(Xj-16Mzr%Cmv2Lq$Ar z9z3e3X%2Dy!4~ibkONbBej<)O>ZfwKLJL)KBZS6VpHD@fB&1ED%QiwI-RKrT!`CmS zqQ56({oRCq(e;Gp?8j!I`uCSEdVToz8MTpp5n6q_iw6YwyXf~|5xZ9F-uDn0ocr$K zCe4);eF`gSfnVd|k}!62V;wgx3nOQkfq^0JehNc{0>G)G{I0+Dehp&pEAC0KRkTD$ zE^gWi%6L~Ym9d)=>F#(mKH0t4X6ovyf6K5c=;BH$ucLcCy-sjJGa<|BgyyA(^wGm( zln(L*PK90RK@+@FKgJnS|CO7<@Q@)j8tr6TfPzcYW%@Cj#K{@*yS$f+<9S_(V|kw@j^<0G_$F_7#8BSv z6-V*`T^!C&^NFwXr6uCftg+FR)$B$fUuKAJ&CxM=&-kpd3ID`Ho}jms`V##qKN4WYgWG#3a%pA>>fSgRMd8r3hMF(b$TZ20@5qH_4==CQY+Rl%5Pi zK#CVDViCMpDWbG!@!+Wx4~o@8p%tNmB6wF6|3Iwo%_f*Un3?y!_h#PDe9P}X%)C(n z)+K<2$ESxMEMKngb-iD${@t1;e4gJNSaf}we}w*)ut-9RDo+fuBe3n+CSfh17O-6AQ@mQtpu8J|^eTTcJJ6taSJ|vr zbHJi^eJ8p=t>Z?*g10h$TZLEZXVrmaY1h0I!x~3y2i3Ia>F8Uksldn0%rt-;WG9r5 zsvFo~{DMD_{dNYO`cSe`%2h9!7T5X3;%RwGsAPWLVvE3 zv>)%Uh`uWW6BRo@bTmttF6M`|c1RK}78*4Oq&Yj`E|aPFg@*^bws=JkiI!c^1NgE}j-$=<8$<-MZ;kQyO?K;bIY+NyE{m zqwR=^TSS&N5Cm1+$~}WX@p=^FNO1u8KqQHI$%#E&?~y}Sblo6>=2F+s>uH9OK0=UM zcn3zB(KP7pQ@2AjRQm_9^j`4?Jc3wziC2N``qjXfUIrY`x%>lO?Efh_c007+2c5Fq hy@c%Y%$oF)C^1O)0dAz7Kp194%97_~GqOUvfsSN-C literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/7393a08d b/.temp/node-compile-cache/v22.19.0-x64-9de703df/7393a08d new file mode 100644 index 0000000000000000000000000000000000000000..3edcff1021ee8477d4b165a773ff87c323820861 GIT binary patch literal 2772 zcmcImeQZ-z6u}nV{~&HDy(C#r4Q&B?Pv>> zzyc`cW1tyi14Kv+0|O#r2r-5bvH`LQ1TfJ=Mxsav8ls6HjFG5#&U>Bv2>*JLd*8k1 z{LVS|o^$SLPv8Ej>83$|Hceh9D6ggD?!?G?TQ-B&*_!@Ag`xII+{FZcSc z_XXg2+;5i_d)$Od75=>r?IqMv+=X)%lvdRalszh&c_MXyY@n@a&k9fB=?co`!)(~^ z-u8MU`YbG~m_H}!v+2|?K0KRyetFeG#DULOGhSH+i69F+?sv-FZ&bOJ+N!d7ZV#Tj z;H}Lf+E}i|gG<*LcJH^HoMr)DG!_XqfJ3y=JtOiQ&%M&OLM!)0qFTTmiG(A%{Sx!1 zS(w}gYjYx?V{%tmiwaSMcc64AlEimekWR z9nbSYM9Ba3ZGVCNVii3;2U2{v>LV<1VXT!W1wIo7^h))C0~pX?D4>O6MnJ#ZH@z7P zA*8LX4~8@-o(m#H@P(@#-5dy9E|`FjmvvNmgy6;A)rIcDLPAGY1bQByeLhy_MRTjy zSJz}`=g;&;^1Y#)i8x*cLw#FL@2ei7V{;6FV4y>-%VAHU2FryAKKUvT7 zWNnQWn(WtNF)cD#!}^MP>w|tT#xkB)7bRp+=)oUR^jC>797s1{Lo-WN|M!;BdR1Vt##^TXz5VoBH5E)CXeA>T?3Hb5ww`Dk7@ zmThfqAQaf{a+P6}p z3EBIa5Cst<`fU-_M+sPb4uiUk{xoN5pQQg=tZQNE_VWnA!lf4Bh>A?zdK_@L;0Te3 z?qrh_g>Z*G8LR;>VpPE_)yfFTgRze}Tl^F?facw#1bftbeOkK0UN&1T0qAEib~m^9 zIk-k28dqC}pcVBZuqBA_o*`%qUScr1SoHvK5u}P00h&Rk?SQ)cy@_B-w+=-I0oekB z+TZlyQSp|`w3rLi2>N(`Ol{}4lwg@`8>-(1y2pp;NBi|L5~%+T=%eZFL-o5r_fHrq z2z5$29R-`tG(&mEU?oL4{k&oERm)m@N$)h#(5u__1@-IziB|U z!3x!4#HdRNksq9PU#x=E=~2Gt5y&AUk$JHyVgOVlMCwW+|?qfe^@UR2G=8wgLR zu$$9`Q=m$PzeVB0H3!g6p4Po%Vgltow zecoAuTL|F`3Gq7>YA+q+U^s9E*~+f5@7Nul+zpu6Z|pJqOYd>4i1CySryGj^HFbd1 z?Zh$qnIv_uB2$O7Xw7}J5q0tKAl`V}nkt4D-AreluCG3=w#Y76n z$@WC5iIY>tN%pT3X$(9#IupZq?ouM%%v}U09aA1UQ`cTd3>UbLQN2COCz7Xv*dwPV zMp!u6k;t%evXmiB=SRZam61BVchoRgBu3ll^xiSfRP2ZF>m&(B{3BqAWp8%QChXd4 f6U@#ph&TzvaX+tj2#(AiM)j_@Ia!IK&1U--nT`Ri literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/7577b98c b/.temp/node-compile-cache/v22.19.0-x64-9de703df/7577b98c new file mode 100644 index 0000000000000000000000000000000000000000..cd630ee23d8314aae4fdebd05c6744c611ecd038 GIT binary patch literal 908 zcmY*X&1(};5TDt7$tIg6h8n4q5Q4PQLy5WcQUon7XsxH{K_Rl6j}2taNAuO{t$`M_ zM?b)eh*m`K0};_%trtP@px~*3qVz8i6g}8D^LB&jz}uPm&3pTPGr#xj^VhW=09;f7 zUb(lAO^s9Di>jI|#@x;pDZCip}Zk z{t=jyQJ>7rGd8du1sKZ~qAy<@3{#vwRBY51@-4^TK+K73ID$qtf8bMeNg=%2@rw2= zd6$+L7jZnHebYmLnXK#Hd3xa_!RAb^-6(gK=x?U8n5#ERj@y>bsx?a8szb>_Z8y+% zYKu-QSMJt}ol2wL&Q&{Ux9#1xi#S83Y@I0$+Z9SMamr?l#}Rd%SFv}`es!ly$^M}E6n)xxm#dET(Ql<631U6yPFs_|L zn?u%rl$9U%m1i=Z@*X+flvE8;UUtURSozS3@Rc?ON+Xp7$ZkV?%C}YWPiSGvdjzu? zzcA$HB4mButw_p31U$-Ylr{@d3<# zKt2I|f3KXilOkl8%4NW@-?0g0FTQcaFPKnP6;R$r{!9l{B}xs@>oKn7<#VQ!Vv0Uw V*9!q)X%sj*f|A>ge@jI7?H^Vol%D_q literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/75a3d7f2 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/75a3d7f2 new file mode 100644 index 0000000000000000000000000000000000000000..45c3f450de995de304adaef3108c5a80f8c98a3d GIT binary patch literal 2876 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/82789055 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/82789055 new file mode 100644 index 0000000000000000000000000000000000000000..a4fd7da33f1b7615322ce3a556e1c0904af5a3f0 GIT binary patch literal 1036 zcmY*YOK1~O6uoagdHIYslxmBH5K99UGzQUypi5cL9q%2 zDXzqd8#lIypjHvrMZs!YT)32qt%|sFq0o<;)_dPH)?Rpd=YC%9@63x&OJf%qz?urM zy7>8O>{|Cyr)Tk1eSKk=>=R-<_SExz;v@PS!XhcPo4>S3KaPhP{Jvk)q)xW5+QtW2 zj$i~2(^S~~M)8GqL13>o%Y30G0+Y=DMbo?dU17d#gw+VIFbku>Lr;#J%@Y1r!4gn( z`3s=n&4S5n`>$tn0mKEzsfjb?dfq9?2=c9;Yft!46UB0U7=1PA0kG+Qy+H-Lcdtcg z1I3g+(nzRn{*&vFJ*=`e{#;fuVTz%2$;pX*L z^V1v+RZ$ttR|W1lX^%a+_ntQ77Uphay16IhM_VS-pD&1#T@+5>^f5mh6m5BW`(b1;FKy(clnmNdws} zEvg}-2&V9`h)b^%@rGyX?v<~I6%N^+fGjh{ZTdi{LQhNFH!`Bb-K;J@E(N-qne@zURuS+^ F`3vlJyvzUq literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/83d96037 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/83d96037 new file mode 100644 index 0000000000000000000000000000000000000000..6aa99c108b0d414e0a6304a717ebb0e8770d2272 GIT binary patch literal 1076 zcmY*YO=uHQ5T3U`+5FYUBD6vYs{{-vZ7-q}1#7p|(4r;PgRr`rm{(27Pn)0mLxrIB z(u?*WdWaru5mEFYo{Ohir3dvQw$h?_^iUQ1gP_j5&C)n9`)0oHz1^Al-acPinfwg^ zx&pAeC%QWRK7KIjS$gY_7E;Uw}Pj86&^gw9mcwh&uf$qo+Sv};}!`iQ4SdMC=%*Nf|r6a+3;!1p| zTf=yykUz(ZMF*SuY08N4+!#J_Unrhjw!ZiHF+P66=&_8Rqo;ZWCAhQYyU)438aOnM#I+^=el+h|l+MZ_7_mrbvU2F=Oq*yH)lqET4L_fxMwjJfTUw5`eUD<^Y z-jxIubdwQ96cJs9m}EZ^^n0Nume55v1(}j{p}p^Sww%3i_WnKR``+*Qp0kG^KMhtJ z2wCC@*?e->5szbF$2QaKXl{A>EY^pW%iepYFT<12FBz>n%C!rR!k8a}hf2bAk>^>C zwOX!D$kT2N8{nZlM_d7cSO`B!nft7}ui(TPDt-_wE~~4u(b8etB978pVNt5(8ihU@ z#wDz{L~CaRwg_v2}sofhGM%6r;k}W7%PjNp6f@^}Cu~_k-W3fHc7Qp@^f$c;{_$LJKfmFVg zchZBxoMr6aEVY0g}T**l9H1OBw)x%%lu)+NhlOkv#Tu7vgx3XT#=ggxmPb z?l#!noZZbk=(xf!61Tx&z`)?<92^Ebw0I0mF9%?d7n@Dyr}YbhIDXzNZ6CA#Zko5) zB8v-4^OZY|;<^eT4-{;_6v0o6(O~xxz9vA1sDb@=4MmIur*}x?QSA$5z7Y&!nlG3e*gq59L_iAhV%h_Ek=)oQq z!iOMCiKv$}Golcw9(s^cGK}6LC<~?N4~U@6Lb7x2&SoCCbI<+GIWy;e=bQPD>tk(< zkPTRKPjl-%6Ro9nrnTppKdToJpW+jZ4^3aE-h*E>>OL)ZsgE^0`(aVLdfUpFI3rdg zSE^YWLDvn7GMTh|v#7*&!2XG<#6sAntK^KM)=}pew9e8R^@qJiZc&G+2HC`pCB9Q( z^cROIZbT7JLa+&H_lMRl-DGC)bsmZwj>b53`omZ2$K4jdQXxIfkDWSs!l=Rg#Nxgs zti^nU74l_J?nm#%RvT{r_P53v_f8EXTVTErdPPHCfCIR;#n!3KK#O4sdUG=uJ*s}T znh9<3$NV3bA_1uIwFc73fz0`k&V76&kVr=OP+DxkcrucWaX6&nJArmU`eV^RD%5{2 zG|0U}>0}}hi-rT(zt=z;htk;4j?NJ93Fe@o9rg}Rw7N?}5ZP479m*S&^tDJej#&RwLU%K;mZD8Vbm~xtA1#VlN5>cn3j<+oBeVmILPz zEb1<3=+ORRWP9%vRXEvgj1VzbvpTIIDBj)xdFV)lIEnbkT^9!74%aGJEndV>K^9V~ zWJ6iZH6Er=RDzkMgaA%vi-n?QqEovCC`Ba!fzL*t^x7Z^=i6NvI+l{j!h5Q~b@WI= z{`Zad_%uwwiH!RCeByH$!8B-v+%wYHS(Xxi$I8nw{K7!GDWxal(KHw8A*_;C`Xj%U zzWF^6MWKPd;0N;Z5uWgdc_zbkFW2>?j`_4sodZe;L3NG1pgnx6~cCJI6acnBjhtX3$^d5gvNt2uAA+42V!n`0M_8*Gv~)#)&jj%_hlI~k{@%69P4SVLG5eFHsZ Ng|W^UB-yOO{sM!o>D2%L literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/8ca4db1b b/.temp/node-compile-cache/v22.19.0-x64-9de703df/8ca4db1b new file mode 100644 index 0000000000000000000000000000000000000000..f69ff36f63fb7015b4c69c10d8168c3ef29ef265 GIT binary patch literal 1468 zcmbtTU1(HC6h3qB+`YS-UAc_`Ly;v94g}Feu!a&M#&*Rl##Of~q;<>QyY5Zgus_NE zX#3`aD;h+D#vh_SXf`pm)D|P?gNW^mqM|8?NCZnuY5Q0T;t#=i&fML^_}T+AbIvzs z&YUyfoU6}%8~Vx(FsT8YO)Ra%?*4S3+4cN(@$JmFgpb)LTYhl;Id%y5Yr>kM>URB_ zNj6Q)r=Rz7PO6lExpvn;Ij;;5$5S|-w2@g z*zW@}uF?mYNufLxD*Z)*^j`)UEl^8J?)f6t!|7++FlpGG%VexKY90%Pff&s0;N_ zIJhYsb+CK8Mn?%tWs`Qch#1EB*+bLMa~o*+Uu(#u2y-Ywi?o^$wUoeL(YPsx`8!E_DuX8YFm$Jusv4D^%nP8c{^zDjb(F5yT2fp zcqW%DrEN3@GO=_j5i1o_X=$x4QME1oRPUm^(1xI-SRwU2`4M%tyxSy*XxHE(OPulVj5iFOG*0OfHVcKQVtrcmO#&f!*uj91gG^H${@4=@7@ literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/90c0fb70 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/90c0fb70 new file mode 100644 index 0000000000000000000000000000000000000000..07c8788a6ecbe1a09533ccd609b4cb3228a1eace GIT binary patch literal 908 zcmY*X&1(};5TDt7$tIhnh8k&+5OQdxNJ(>04@J8E{1odJ?1V0W^)Kk%mSn;6O3X0-iP;AkQ?aa%DrUUb4<~Q%-H#6_mw;xL#0Jx?D zOxsh>KfYbRKj#1buJwQ8I^!$yZsLXi_sT`e_XOh?^rW%sa2z8=%XnxCp<;#U5u=R- zb`O!F&>_5l1_VJYqPdE`ljbntF=NY$>BB}H9g0AZ;`sSI`@ibQ27GEIoUHLxb2xmz za|&jZw?ks*80!f$#&9}6@aFZAAo+=jLd~7aHKezJm=oDx2(5JP#N}g>i>k`H$~x0z zTv9P2B6!yLX$An3>B`Xuw{D~ewkI>qTB&uFZnNclrdlh?N>iDvTPwC_B?WWtexNDc zdD+O6+SNjb-r$8L?IAno901H_655IfoH$hYud1VE#{@eOfaJXvliI zOcgS=^z`0mKVe-$-CnE>o{5@-WwWL7tgPl-uNmB@$<5RT_bHn#mK%F1a0pX^5#tg% z>~gDyc=99Og*R!dH)*7l099>(PkGWI`;rvn-A^!; z^b&n$MxElp_kqACF{v6;W)o^=AL~Vy%?#hCF#m?*M^8uv3 zAfJG3Z?EdLj1$sNWfAc3-|(n*5I;z<4Wn8|18qI@@3>Fb2B-k~J=UF^`p$GxjMGB0 Voc95bMuXFXsJLx;uY^obb^$0El`;ST literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/95a16ac5 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/95a16ac5 new file mode 100644 index 0000000000000000000000000000000000000000..30cf3cb567eabc6ccec9f66155da68d593fa3780 GIT binary patch literal 2516 zcmaJ@Z)_Ar6rb7KyS=-;D_1DAg<6X#rV_R-pp79h0zH&Q{*=?i5Gvi>ySaADcDLQV z18dZjCMD7s75Qf{CP*7JAZUn*#zd%XNl=MV$!Jp7`jq?K98cX=n&s8PEJPJ%I61cDV6O;Ogjc=r0(p zd(NjypQ_j%fQLq;_rjvc+Ze0$)k#^JMz;wbD*8yQT_PbOUYZvk42NpUNmPAMEE}IM zUoNlRD38;Hk4D!=f&9`Kzg(K$cOJ-4nWLH&|91H^PjE> zL#(qiZJ5l`dKompaNX8iduAGy(b<_Yod3FriU2fPC2glFdLlfPD4qJebTAoDI_)aB z+-iLhkPfd5Q$y(l-)hZEB2th9Zo5c$wXlD)HVocbcxaucmUYduU9(ObAB94g4S~aD z5R}GL4084rfI~+hBu4loo6E5iYB*3S)?p!@Fk;evs)7he9X!&X5{(_<&BfS^1`5q; zX!^;}YF{BR9|CU`8b}TMvH^Ox=}3lRZgjhCC)2H2sl1qbp{EU&u}!Qvs0##ffc&0v zuRWh$T*WBv*I@jGxbAg&FsOxW&BKoJWcZw7H?5OC;p>8Xgoa2oEF8BvvFPP2Qr?ph z^d02m5L;|~9LUL%&o!bC8rHIA#=S58xW`qWCt8qy7r2&B{V|F@vwG|SMIV6W-yc>H zgxS)_X71yjp^$6C?`}o3qUbDbI}FNID2*KAAU+`G4e+%W>0Ed5TgDhmoM? zNNgBSh-;XpcgZHSm%h9n!x)@bmVtLk0zX-Q$LA;ds*)ui&O;trT^fRE3~k@J3oisn zgIO@AI8$=cBjTl!eMgb&N^kSGsIU}slkl3Ge)0Z+;#RSVnkZlt1<{VthnG4Zlh95b zm_C6#-OTKRS7{!Yvt>*7DDH!zWL>Sx+lMz+X13rmns!pdU7nNmJ$dY_y0!!lqoP>0 z(q-B@AAz!1zjE%%6%T}o{~8qrJpsbN0p{WYjO@F-6eVQY@B>zAVsQh-Q#aDzGKrUK zpY0@>sTo*5TB%_;=GFI4jd}U@X^zV@-DLSO3GG~e%>_)!VOq+zOgKSB3NB6`cpmXa(W3JVP^S1$FGOu6(RC&&kAv9p145wBcqPj|OT;XzA~K`1vHp9_Ri%6^Z0D zIaXfq?t`IWsmLba{II-QykmQh_BOT@BY9F(NH01*cK19idC&*L+gRow+|lT zU%>vg5HJ2fyhiBao3UlW0y@RS99bp|3q<&OsZW?}x-N=SmBNIUyM8S&)s*uGFAfK& zFu7L>2PgC!5S1_O4Mrmun`S~~lhrqJyUKDxb?(;QaO{z(rWv`sB_}Va6k2kTh4Sr| zT(nZY)shQU%elw=WlPG=LLO-FAEH7UOFjTDYDBDRhfs4!UDPZO(m>T9#j6eCD|A1> S6A2*rhG1|@{!W*}p8X3PoVTI? literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/968cfcf8 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/968cfcf8 new file mode 100644 index 0000000000000000000000000000000000000000..9183bd9b234a115748dc8fadd844cdc451d5c1e4 GIT binary patch literal 7468 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 VA1VdOilY3_rtkazXsOe}^)KrbaA*Jk literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/98a622b7 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/98a622b7 new file mode 100644 index 0000000000000000000000000000000000000000..d35ef3d86bf1a69fd872f4d78f0a2919d36b20e9 GIT binary patch literal 900 zcmY*X&ubGw6n?Win@u*0#2RQVA>`0P4<+W}r3hA7&{747UJ8-jO*4@VNjBL{qTYHb zl-{feqWA+VB8np7!Bf$TsCe)k!D{g@5Gs0UeQ&bC^uf%0?|bv(d;9IHuiNWy0HCD; zWbSC*ZU5zmnb^0toxT1w;y1<3{PWn)>3v2FqPk3;Jt^@+=N!>URy!WiB~2t#{cn z!88uWRY+acApv}i87r!G!pKoAtM8gwbwY15hfOj?bDL?{|P5tORk z=5ojLn_)>lmam0)-vPmxgC(0*2#&-9#4K~xA&TT`@Q`uR|M=ObE$S^0?XDMKZ`9M1 zTc2ad4FuuARI$7@b~yyHDHr}Qq#&2_FnMcFs-aApnOdJJ+7(BA#4Eu9&^K$KQf-=vp8YgC~H90 QC@??9q_(5cD@jAfKa@h2Hvj+t literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/99020c44 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/99020c44 new file mode 100644 index 0000000000000000000000000000000000000000..8bfff00ae6fbff9e97522a3cabe88bf727f37573 GIT binary patch literal 892 zcmY*XL1+_E5dD+gWYf*I#u9CyA>`157A+psLj|k2V1u609u!t~|27-lG|4u*iQ-KU zf)o#mie9`}kz%!o2wtQVFQVwxLj^_XMUR3MFY3(y8%zi0|Cu-c&!3t1Uwr<$SRZ2S zg2LG7k5?a$exKUCC-r5$^Jn8S;Y;4#iD#+JrD=@!1WL2YKJBGLejXJJ?SZbU!Y8b# zWVJ51WDcT&sxbXVxZ}*=sBTeM`(+fByw(N>J*J{!Moco0DLW=GHihp(w&ISzJ~E!c z=mMXc=jXkdAnc&Wm<7|?H$BbZU}e6>*RRhaW=>jBQ0rXcp=Wv*tyWO=>XF#&W>D=m zJaiVC+ks<<%r$%~&cDAN1ud)LyO=5LOw=QKi__9Crsylt525`D6$+;vf|EiYf(k~3 zKVEsirXdh|?XDksII9X@T)zJyg_tZ%_PREFvY;bo+cm%8wRqD*2ZiP^`SaAq0NS=) z^~3)m=FkBW$Z2QgFo~rR;%6-8hl-K>m=2mkii&~!h|Z`q;wQZv#k?3jUXTdnMs%B& z_r!V)*Hu&~&4}3X0|MT*lttt(Nl8FES literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/9b8ab0d0 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/9b8ab0d0 new file mode 100644 index 0000000000000000000000000000000000000000..fe4425a6b89aa37b7edf2ff8c30ada4e942df519 GIT binary patch literal 940 zcmY*YO=}ZT6uoa|l9!Jm#5T|(VLFQzT-4Y_-2}l30~+ndv@V3m%p`e{srhIoNm~WM zg%#~q14VGtiU?u_>AI+!in!=bjGzep1%g;N)_Y$P(jK^(Gw0s-aqpbG{q|$+D+5?p z0p7Hip7P-b_fG}Czia;M+$Mcfv{SEx`J;C0=-tF%I)4_?GzY1Kp(c2X z6^IXEFinN{42S5LzRknuB6~qu1qT1E8)}l*nL|PVgH6umiGQf$(FoEA^v3k8TfH;B zOBcD8oh2C@`gwnN9x{?0A}p7*KBxs+*inL)Lnu~jMUig#Wo;Cjzhc=C2 zQ0>~w_0M$0O0C!`3(~H-l&AG6v9eh6n++$38-KybXbEx~3Uj!PkW1RKa%a@HYB#USBJ3|+f5marv4cHncG2?(sqW-uQG#D*4l$b12zg_?=M6f#>y3E_sf3~G=ndHiU4*<5 z+K=_Tp!dCig9Qy_Z#4BjR*`IBFtclu3se2f;F*!D$O!`tK>8rWpF1SV-KVjRhyoCo zpB9W0l*Aq$k7%al5T&Wyvu;>Yitx%6h3$M?#^~!OuNgr3r$^xMVnx^rcDzY2sOJwP=ea_2P9N>x;vGYrMu2- zOCcCrL;nyHp|nZ@7y@XFkw@gCfz}vrX6C%U zbMCq4+%sps{c+Fa0)W$QfW={D1Jg%G9&`P0u`u(^4%81H(9vjz)Qa^%46FzKmCc3iaSV5cDthZE^rl`fDSZ$d*XnH{@6m zXhvy6WK$&T+vQy0`fZc9F_`x&l@NTj@;esHR|t0T>yoF9B4T*C=&N(&<(HXC;v)Ls zT7@rWhRIZT*QOZe)hSVK?dsdl6&qxk^lc>F17DGy2OP)LT z-Nt+YwEjV1V@iAX`)w^>1W@Y1P^)u#T1(`zIURRG+an!cU-p~$xh7$Iapk35*vz7-GrRQMbuu@ zU{)(%O_735$3p7_PiJF_Jn5n2dvYhf_o1Rcm(g1DdM>RQ28z&?qHhRartG7tT)3vZ zOZ61MoM8c)9{>i~Yp>9K5r9HrhZ*5{)O4|^xii&T{@s~E0@y0-lc^_O{?f@p?djHm zg{?sp)4GP$>X=^{)Ti(TZ1Fr_p6Z%+xTyTACrL@4aaLytjQNVSUt9s&j+R}q<)#P? zNLh43c}_o= zNV1!Vou6&Fh)gnNOKhpUkqL>4Sv^rQ(qxg#oNvs-`d+vm}(16Eh+ySy$g}gV)J;jKs)ZEF$(-`p_BK6>j+(lW5rVz zyw(a%7rSJ`Qz(eO4kx>kn1cfpR8Yp$m%A2>@8t*h5msYP0PV-$6Xhb7mR&Y-5|#A` zHBJgrKE#*O1z*49UY|L1WH_%}%axB`7g7U_l=+;|bgP#_^5xZ!v9Z zcDuSmHj<`orE@;N-X<`HZlsC+&}>!LCOnVTBoJdbj&QlYQ{vAxrIU}u%j%y zb7&Rz7kZ7(&W%VDe3;_w*?rSZae56^j3~d(ul`@C@dUr799d%pE?e_^whSyXQ;JB% zt)7zf`6zZN=1^i>i8)6l1~J#DLxPw*${i4M2c1)qnc|i{R+7BsbLFxF&f{lltGCSF zaY^7Uec&yfY?^^n?x}dG0%AN6bA}yLLC>UCDoO{J5$`3QA6!Jdk9gO?0P%j}-G|)1 znDfdTPX?}#E9>G*pXsL%A29tYiB}HEeuj=CRaNyNGwvC_D(l5@ZLR% zr2`&iHS+PyqsUTEoJt#T>ovk{;8QNbesH;m>9*stMxCbMDTPr-p;$#<0Ix@^e*jzA B;AQ{- literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/9f737c5f b/.temp/node-compile-cache/v22.19.0-x64-9de703df/9f737c5f new file mode 100644 index 0000000000000000000000000000000000000000..ab39fbfd7787651fa1c80aed30e54aa48637c269 GIT binary patch literal 1108 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 A6951J literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/a266dc17 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/a266dc17 new file mode 100644 index 0000000000000000000000000000000000000000..ec4c76774a51c755921e76217c26060a179e39a6 GIT binary patch literal 1236 zcmY*YT}TvB6ux(UcGlgc7Fk@8O*U{N1g(d*M1(Yk%Cr~r#aP*y-MQATyEEhdXhMWU zLJ9py3cUoC6++ZQ^w5)NK~fYL^<K@ojM1$R8i}FIl`(ZfLqug~#62GIa zR;*U?)If0$94d*VO7#;rk$%V(M4EQHUN*=%XOrCG>PC0vkEd3wQwFF8H=@9yht9-M zelJD0FbJq1OS`#^l<+_C$+dHi6R8QfA+qQ!x%QkQ4Q3$(jT>*5|sXWwB$zN{;KNJK)yo4vYj-Uea-}XyQ zBPzDS@qm~c`=0Er1Y2QSWsu@A+7WnX89I`#NWRG!<)9|Sy+HX&ZWW(aHT1?=kEp$B znH$8Dn?*P2B96Xhxn~|n-)~w&W(ONC{b_u^=YwF`+5S}`)co~^1aC;(OUe8tK?uEZ zucg*jsTdMQMIwa6QHcs~{X%$Mmfh=N*`e%$VUAPJgpO&j07s`FwE~}v$$XulgRXH* LH;SdXU0d`YQ!VPW literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/a4876d82 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/a4876d82 new file mode 100644 index 0000000000000000000000000000000000000000..bf85acd6d0b02697f069ee24bfcb73bb82fed6b9 GIT binary patch literal 2260 zcmaJ>Z)_A*5TCdE?)G~B*m9-qK~qlgkS5rxp*FE8q2?|KhM<<3KtkcRcU#(W+@800 zr69(`(3lVt`BRhxGz8EXBVY<8M!yu0qA|)BJ`n$+7>pkb3iPBOD9*gy1xk#Q-F@@t zH}mGryxEcOf8Kd<2EdpHpyQ2^SL%NsyS~8v(^z5ZyDg|M9ntqS9&`V8UL^Wc|cGhcDwbpg{w8_J;y<{A*?4i9lUA9qtY1{DX2^ zuo2DM3grT7C4^q9{DFmX6@s1frsQp>h!|d(@Yl;Z%?U*|1;IF%MG=MYqdc|HH{e$cBZbIHgqSYa4 zFsoB8B}qZ2V^u2zPiJGQa^6eH_ZY{1^rIqcr1jQZ-bm@Di6V3*>05;_Q+HEUPG43( zpn3|RVcLM^`+x!V`m1zb1fWpZVnuiXHC-%X?M$^+{&XdA0c;ia$hI{YFKET&~zpC2o1A?6NW8Qe(`#MwY|7WQrA7T0Zl!98ND?Y zizQlPrqNT_tmXBDJ`khE^_yZ@zsX1!Gdc>nP16;rUM;f`-HJE^u>n1sHu5p&{yveS zp@{Wm)B0dzzlrnz5GA@v;pFQW&mxmZIucu;tYJc;%T&Yhsj9g@;-gsFlN?8NA&>AK z7>_|U;@T^jh%3|GL9#sdEl+-nSPgGKZ+d4}H(_efN@!{ke;B$MfM86V`2(T!g@?@qrpg;qCc#;;wkYp6g>*06M@69{d4?z(UL zP!_FQ+@obo@%s@!FYn^3pWnA-@y~^SJR}z!zA4dW`Sj>fnrY#TQE9W|ZSFWFW(6$d zi&i{gTiG5gMo9uS7g3KO zYFHj`=k4#MKAVX zgb&dVK?J>IL=YuNnDihC)F0`^uZ8jb{xbJ{L{l-l% zV`7h3g<56gXb-A;VNj-$VB8=Dgk}FZ4^i)2saEGLMNjyQvFfi-_Za=u!EFHy+SVFH z{cS(Rg=k_XM2D67TOt#6JGUvI^L}YS>_Epp4vCPY3nEtQoOp`7p6mwi=<(??<(xG~i0%77Ki6 z8=rso1rzK{^ohuvSy)y8Va=?VHW+Wb9zttcdW$C4E;fP5t_@{U-PyrNn%jIJluUK; z-i%nniBwlE&SBG+*bHQNVt}VZ-MM6EHkL|eLU35HHzUs5R1`#Pap!ms`Em|6wEUQZ z7^b3;Ta;n^ckVr(G5|>P{#-20MNLQUUZ2G#kpY3D*%F;9I#TWhEFA8R#d$K4;IIKf zTkW@|1#Gx*xGR?4FcAj{D74sUrw(dZsuFw>Rqm6(VC0iH?SLwzLiNLw5Sd|U_#`}w z+uauTueUe_6C)y9kMtAsFw75N&`R0;hiU}8X=)T+*i`wjXep0z+d)u#y$yJ%D1?|q z9I~_pjgZ6T64qclsA5%y>{E7>xi75g1w{|C;&Mf;6P1AEhjM}FWj{?zF)h`!m}zOI zrJI%!pfj9(CzcXWP*E&3prXPo7GS98mKM-Z@mP95N5yLy!v;~F`F`!!JpMvV9t672 jyb>)0O{8Mh69&U4Y=m5mYT`ejkoqDj7|U+7KChI&tmffX literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/a5a00af0 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/a5a00af0 new file mode 100644 index 0000000000000000000000000000000000000000..b899a6aa271296ac606f6bd1ffa003ca18e55759 GIT binary patch literal 1100 zcmY*XO=uHQ5T3XDl1;LSh8k>;QgSdQLjMpg(o3sZ(W-}1dr%t5Ce6ksq}gJ3UaGEj=iUpRZqI;gieb1?ayQED$_Ufxii@rsIUgr^ zbp-tgoA?7rLS9{xnY%Bx+7sTgqrof|a>W8bjDnu;bkQNs9-X8egeH8X5r`KhIMe?@ zbD*BH%)yq7dD#Y-nfs9*GIFZS+ZUhjyw#*)NcoMEmStL$0rW8b=CC*(;y!j-`RsB4 z3-t{(y`P=wMwiwZ$(zZ-)tF^y#+69cOc?3BIHJR5qL?vI$qh#`sd%JVNM-Vo@&hdf zz0jJ@|5q>O15NaU`0vJ3R9M3~oov)28_Y9K)RrE+T~W|r86(A%WeB?C_h;6rU*!Vu zBJx|QJJmo9k4BTJjFF8E8>k@2*ZJe@rW568G?B7uF3>4}zyiuerjtZz>uD_xR@Q=w zDX&GZj-o)L?8dba%&0V43&(eVW&G~y__3$JL9nISR56CaBm7vPycx&atDf4~BW}^W zYqrX?9m=9kMv=W4<4BMIydWMKtRp9Kn5gFgBJytmChmMoQWMg7Gg})!F2FKo_<|XD zj{BzK65viD)OSos$x6aeP1DIvJs#CAX>lfYxEzSL!KeiCA?)U3ER5KfL2d$7$V1`j z@Z_|ZZ#smA-SlsQbl|5qD0zeOKDK7?61-~LmZYH6wk`9ZJjOwKGiGDb>+5#=p*8h) zM@doCUmYcfQ!O2}In_PXSj27SRTkqOl;~;h>xD^XuT}%RIc^h!Mkf|c4NO#uS6u>s E0gy$zR{#J2 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/a5ed4745 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/a5ed4745 new file mode 100644 index 0000000000000000000000000000000000000000..e0a1de40a629935d0c74b7e486b617fd03cee917 GIT binary patch literal 4452 zcmb_feQaA-6~FiS+Ap!4#7>&8Hc6AU>BrbYU|H#gCe}F}gr(ZnR)|P}Jg0tHT@pKS z>~=#MO2jO!W1He6P6{d@Sg80=+X)S+LTD;2>`Q=z#2;u3#s)(mt$<*x9k7kx?>;{} zwv5Cgj(mOZx#zxfe)rsS?#Fk3_3|S>trOy&un-?P(rlfN`Cr}T`_0AlJ1;)K{wM5w z-&x=9pXi6&CE0!0vur+Pk^dcv44Pl|E2Vk%b$JHNjQk9nhf$<51{#Dv)-YW=7+5yL zk9xun@z?pVCvd7he9Z{IVT4~d*ud|vZsUT{`6DCnunNBv==`G*IOPqW4uqdHdX{4T zmnNyZ%lt>M%k!K$BQ3K1C}wA^3>_T5^PazV0K1q@C6C-VnY^!W%1%eY%f0540crbdr>$0WLKCu7rK8hmjyfhSf*#{<>Nl$0e==6$9XFT{Hf5#IsulORW zL*Bls^#=J7h{H*)-mlbr?+p8f_kUvl@FDH7lYWaM3>4XRK(}exd{CLU`OFb7E#G!OCH= zY6CK4o|KjcL%L9?_K|O%`Uw$EC1aUM8-1Y#EpJ1gS?6=vR`g}b-3PyGe zTkNB|oe9DzXTI~o(~Ghf!2YZg1T_87*oVF(e@u_csPAc7`06 zWKl0kBRIVz4$BR`;1DN&8RLE2J&S9ARd^h8`~?bEq1-likM=U#*cTkt?GRzU4$}l? z*=2~K%xC}|+Grw~jvsL{%X%FKZ^GQTQGGW5mj#+~V8%rfn^{Qu0x6B9{o6lT|8@=x0At8Z1BCC-lOW;a7r zoGoLlI9o12*=(6^dbY>y)Od2%1}iKBPX0Iweg5gQ#(6r{l~+ujfznwW#YTL7G@YI% z1dwF`!8Zyh8sGgYBTu;U3KWc-uIeZl_eEbY>G)JUaUVelYcmi;3n=PS-yQ}i;mRveaQo`6j$$Len2u(g zr~r!lf#6&L#T^$8{Fc6Oi=>h(RUE3L!!7Mj?*x|GNG2Jknh8=)$ZjX7mGHD zf7ry^Wi_%8$wd|;OA+;ks*^yac1t}(?L$pqBa+xM8eUE#JgY%IuW`OcsQT?D`wM7^ zjzsU1s=6ZNxPtCQd?HFP-R?YGU;2(R62D(q$mNJsNn=6v7&-k;lzW{IT(@v5An}70 z8CbB;SYtFVkY4 zKs`b{*Cd~{uU$2spEp$S*}z+Su6n%l$_ze(Q_a}(rmrSzO4K#}Y^{OXAIt_ksDt%^ zH}_nv3(eOzVrYZnkfvO7tdg{)GLI3^K_VN x_J`5SjP`~4+pP~?6v6(BxIOsV=1OHpsZR>*n5_4Fi7Ce*iJEu+9Jg literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/a9090719 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/a9090719 new file mode 100644 index 0000000000000000000000000000000000000000..562232b055693d8dda3747b45be22da2fa043e5d GIT binary patch literal 2892 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 BwAKIs literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/abb43a8a b/.temp/node-compile-cache/v22.19.0-x64-9de703df/abb43a8a new file mode 100644 index 0000000000000000000000000000000000000000..d4827317ef24dee7110800aba0bb126faade330b GIT binary patch literal 1404 zcmY*ZU1%It6ux)oZ!@!#tVu&!2_cmfTM26rx@ZyYx--o#PIk958)+muGn-7vF8hN$6IG&ykQo}cfW zIrp4PNbm~=(ka>ZSPrI*;7GIx~_liGWX#IWtS+t+=-b}nN{(2?@{*dT!ku#)^ z9n_1!G$y?(^E}hhHpC4}OLPv!`+zAQSrx=(dAVz__X01j2*PNzC9iTlN7RSaWp!RH zsu}fLPChMS1cXbsV?*47(js+GjRDh`={~*t#XJ`AKw>O02CK9o3FMv}N262DKa3tt zLnSZE4me2!n2t;^Swa~y^zPdC4Q8mhm4@H3UEO?gZxrMO-(zOP-FRu>6NW3-|HG9Y zitZ0_Xhz)G!-?aFTX0)5^PPN;y#3p29UL>$xLLX~dhU`O{KNOEp4;?50ip%z!x9Q{ z`~YDf60R61uiyLu11C~PY(vkD7c=N3Bu#gkvp2d={=5qmbXuuHx}DBX6!JMeSKNjL z@D6jv-~6iCzZLx0WY*CB2c}so)A-Y4SNr=_fSS6Yr!3trP8D>E{S@-7U$*}01I5xO zp3qI(D(Gn&1S^}*ffXwQP-X48wE<8L8L4qQn@by$nr;_Ny_1nRh@{ByyBB`HHG_L( zU?ZQmbo7z{gj3`-KEoS)fiDW=J<3-Pf(_>%QXjcYR6@VpP08o?-;6}w;rqBtYJ6R} zlM(qZj`6~ti_Z(_8rxkv8Ng zp<`y{?u#3X1%PM=rkjnq)-$f}Y2MN4dSlkBG}&U;8na7P50r)4c0<#v9rgU_a=qpG zb+w1dsXlk*Jl+`JTU;vp9=kcG zR!@J8w=*aR_h^>R_l^(Z;B0%YT=nX1Ej-oWJJ5dodKdG}mZ8AV6$};Z*rX}ypoDb| z;EOWSc~P*K;6-`G0g=%V7lRjt?TlS!o+HtZFrL~`Xn$;lnw_2 zO>I3rU`NWbC>&^@2VXYMsI=ms%CgS`4h5(>9$eS&de8}bcuR9|#g?4Vp3+JJ!Hz}9 O!CuNju62Nl9MZpc#TT^z literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/abd0ed17 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/abd0ed17 new file mode 100644 index 0000000000000000000000000000000000000000..6e00af31f2f85cf69c9439bb0cff16e67b542c48 GIT binary patch literal 5428 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/ac04a207 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/ac04a207 new file mode 100644 index 0000000000000000000000000000000000000000..c82029140beb3e0e7ce8525e30826a1d5d110946 GIT binary patch literal 1044 zcmZ8fT}TvB6h3$6&dmNHs~Hx^veFU-ve`o*vINzLEk)U8P%tqw>(187uKTamQ!f$< z5hhV!Qe;FFNrVs5gG50@^bquB(GLjq7)6jT**SM+Q~TiDIp;fP?)ke<-hY~S3J4Bx z`|C_%^wRRX9qPwtwLeSeiJx_@#UH85v!7)Oa>1elazdN8$l8sP2F^M++u+R%mxwdS12OKv@)~M0u68!Ailv&7&!vrwldhkM4^{CV8)XCZG?~%{ z4qzH>)_&L`S`l)Gaq8sW!`F*6zlu|?=PC~HE}GV2OJ6%p#5A+HyfbVUutx&l?VnP+`#))+DiD!FxPQ@ySSpvn_f7Hk9ct{G zVJrvH8x6UEF;wPISoFB??dxiI*1k#MSw*aI0Q6j$PrGXoDQ@q^I8r2lu-GK5hRKON zOt$eDH6oq^@3bBxxqy;1ro5j3f^Qkn8<3juKugdsb9m6HS4@V(uiKm)(3c@&=L? pX*3DlZgBJ!vj|E3(p@7#Mne9t@g`t5)I>*&S;j`Nu~?pe9;_b30Ms5brOnb@66KSumzb<**g z{?nJ6L7pM9&Z9eTnD*hkn{XU48h%qmDVrl!p>rD!ks)LcLnAb=O&`(+^|9jGLSNah zb!<4D9!^mO z{fMdGB%3---|CAl7{Cp~En|i5l;I%pp)0lMic#{+f{Q9@wfN9(mQzL_%K+IC0 z`q)h;4`4(c?)Ueq1L|N5W?Dn+dnD2A5^^@z?#tRrf@F-8S!$P0reet#KKAqgG-&@qc}s5?&Cf4UN8X zaPOO?3yiwDJuOO$=yHn^SS96>D*fT&$CYWD+x^jSuN zY@Omg@^F1^+}5;ScF4gR*zS8^9Qb&UsdMD3%q7XC=N7P`r*B?`XM-ten zod_IzZY|8RKT0}N6wI0qsr3n$r?msl4(bAwfxZ4q2Qr@6(++23xQ@pdi%pNMD6d5$^GGgJm8P@hSW&ZaUcpxf&A$q z+q+r9=VbxL9fzKjxA|~_)g_<%9idneUiss>GguKK>cKTZc3r~bQIudfk`-}2z!;HQ!+zpJ7MHEU0&Ud_G&++m z(69P{WmKUvLV;$Hp=*TdxPr4Ttza561rsVeM>!TPmbeU!1M@mGvaXBCT=f}Ac5G#m zZ-KHH$KicK3JfQG2r})@z&d2|IL^%KC>JoJ5Mr2IMTaqvMH#gYWLUyZ9Gkz0CG75u z>JmMQ(9yB0RfIM7%A_4o*GHg1CQSthS_k6)PFP7-GafMGFB0={mdfR@1P$*zw_{`l z@OK-|7)3SrG<+S5u7MMoSY#LPnZDe1@w34k*x`BSHdZD{+$*(uL`4$!bcb^Bn#>d~0n z>t2v7m^MLe*#ueYbub}JVkO+!_R>}K?K`zJo4o82q%*`e1z$(*=f(>Hs)KC&`Y)3o zmE}^GPDwAlu%sG+UZMY)y!SF1f|r9pO@yu|WJG%h;gKR`UWWLy;SuL;;@-hy^z84% zG<{s$hpXT+!E$)Ve)1wNWWsK#jXjVqPwsPK;bLH?%hQ6(ftc{zJbe_^W#2_imKJ_^ z6YBV!l3dr!f8k87-_GB1CM(_iyfay~gTLua zT3h%zXYzra{0(Qax{aT8CLe6)uRD{rPX3xRX_xq`&g4TLKDjx+=7-DJb!1InNADfP z3nhICr+;ydYxNJ!&dUG* literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/aec18340 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/aec18340 new file mode 100644 index 0000000000000000000000000000000000000000..79216b4b9e0f96dcf96bc19f3602a5b10846c77c GIT binary patch literal 1324 zcmaJ>Ur1A76hGg+-`$XQ{JxGw!#7v(oB4M$+xvR|PHaBNk5fTi< zm;93{K`*)@h$Nzi9z-m9DWW2Zz@i9xj2;4M^^l$O-7T9B9r(WQeCPbmw{w2y+}(fw zX=<|+pjrV~y^&DdDCId0ize|47UZ6||Kv}wJerH;X_a>S*A z!{(8AY#=g-uCyt9FV-*gmF0cy$z*Wca*6ks-p(AOw^HV4M{Eorj5<8pqN4wQb{T}& zLh%JjD+p1F^dVyc3>^NXTDubNWB>0YxSq%1EXhyNz-SJ z`D5|0Ig}DdU^pI5M@_sWhKmhtXz7ne{QaUze>4*EWAaT%P^x(-Wu;M+5t)2~WXz*T zZsLu(dkiuX;R-A`9clgEy-|XCAP|luw_RWmfP^)weas+@U{y48wfUK|x=%BAN&pDtkzF`*qB2U2 zX3qX5o}VdKVWyC7;2^4{@hV6Ll@(m9#u~Tw{RPkV*(IW=quVwB(NDXYHOMGlZ$TU> z5`ZRV80vPB6Kj~M;*C^@)qS_ofS3=suJOvb5Tghb=PL#>o(=gZpA|9BYm6Ks0_dAw zm2g!t^0O6lV<8>ceA^R z20X;#Na;b=n5MZ1(gq0?wTg#=P*jlg@8HEt3yLKNFJ44hi(vh}H?!Srj(+gI`TqC& z-LLNca_+r2A!9lro94#C(e${U(SQE7{_mYdlwWes@B2*Ox|9KZ3uxbzn&n>$Qg zoPQK$O!6p8s~J8|XOKJyk1~}EPjM1^I=)3Cg#E?@IlJd8vT(_j7@Xh75oKkH#nS$wRmHB3*Th`MS5@ zQggC!>`VVv3}o(Gm15p29V5iNQiLUnADMf4)Q!AyA~rcabuj z|0kc`yv9LLb?4^2sw;Qm+{W5%T;d>spww$!FZ4!1mdj0hMYoin4F`{H82;nMJJ^O? z&he^k6%inlK%e2qgO!BFkrZAK~b2&Q9jKr0PqcZA1*=XWHt zUkETAgF&t~&UaYj2^Lz>1uz8tm+TXrL7{Mx4b9jRJIfkujeX2EXog=YpjYevGw5OP zSH*fqS^p>-99_N8&oVz31VeY->{LYzk&pG$^^7FTunjiph zfR(p*-L0j0XbXIORoPm*L-?GSjlBr`ocpd~j4v#5S?$%A95TCcF-w19a4v1aTGb|f zjAckYfQxYz_D|R9U{08kns(z0GsB@;Zijk}zcC8ee_O3;n?A}Mw1A3XotM(2zZqq8 zfF^eU1y5!r+^z+$qN6VI!(LvLB^KE3xI#tdi#ZwX(*An;lr-oZa7f)ov87KsaHBR^ zLt@ZKi((zxu~;0xqC0rg9Tu^Xav@)h&)qEXBxvtBwmnDvt5Zr01V z6>;1j74%Zj|4las;}=uny zN@-OsB%ADm3L&xum->8CSv#a+=;9!Iqbcvm6e^3jSft9g(;YjW-E%DQ^JuNa$*k;8+rSrZ98PpTqf=7c3J^?bA05FO!E4eA1!BlBZ8j2 z#Y}_Jycv!v;iy{ARs>&%)%b>@ti;z<9#!HSJn*hwTQ&booZJXT)u{lm6Pg~{w}|Yq g9=RrFlSMXM0IiR~Y+3_iAl8bEC(lv;cGED7e>`rmfB*mh literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/b3607456 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/b3607456 new file mode 100644 index 0000000000000000000000000000000000000000..6e88c31d88ce8f244808f1f0e77d6ac6a4123c60 GIT binary patch literal 2148 zcmb7FZ%kWN6uI1}l<9F|Ce9LMF__KTKX9eL%6$(iRN+ zU^=yPSu|mhvMt7hY^WGF#YL0NxMeP4wmB2x5LUvdPncDUI;nN>q_STsf&!%o%8Abh3BfI6e`RAivuosEe z>=e_|CmPD9U{JgCwv90^qs}8XNW=66WS@jVnMihTlZchDS1F%nV6sh7P)rK&`O*fT z1r(2=c=A`F9KkcFNk3lxw4>Hh2fqeK)bWvEON+QLkVnedJz`WEq8f^uV9?h)bmY$s zQJjd0e+hBGOzrKV6Tf}lX9hl`>j`57?Juv0CZc;qv^K@RZIZy+YovCL#tlN1cKxnr z-&nPRE|Nr5z~})U32p6f?YL+IzAv=iNL}sSpIIi}sRUa%W+dBUsg}@)v2Fp}??(2e zFhQ$`|* z(d=D(@R%KJ2_qScju;(%u|x_)62;FKHy^?2f6tc-ex-BidT0-7xWi4LKnS@aVHrWm zP(^acL2XeWqy_E(#D8?W7o<5kYX|);!t8kNU$8LH494R89Lz;qq#tY+LhIWj!ot;i zTEG}+>P*IZQZI%Qa5p2JgR!vDpX5{5KrB2QH9&|Dlqg`q&S*pjZ9KIZm@WOubpc}- z0bWOIV?ym=7__=oLmqF=M2=8~!M^*!#WQ$W31etDl7P|y-TvuAm$2CKf#gf(Oy%}! zESavZo=DUf3=J3{0O18TU3=mRmReU=IFk6!L^K2-QB8V=YRGMb;l?(sEwmv9lW)Vg z1}rC!XooiBC&T8&HndECE#}+CUThm|6b6L{w5G*L2ILQ6(3*TlJ?aIago4})FMO?m zU$;e?(oo4)Zv`AO0wGF%li#t3f!qi16cD&o=3S`aw)muQiMig?1(I)fd5)q#$rU}h z-#Dw*z5%TTOcUAlX!KhuLDy&=KsLiTSc1k%TP{J@YEJ?36&PbBXiWF@5_Fw53CK$@ z4wRs=2v&+{wk?o9^LS8u4lHdh$bWs7wdxd(S`JWBLE!l#m68w*5oDR!hMh< zK(Ea|daafO1snVX(4|H=MI+$xmasZ894AbF7x3voKtnYae>$)$z)y?YBM>|1j{=a* zu#@a8n`2ejLr129V`$y7HEig^y}VC$pMLl?nd?&UBySEIJxP#Y|9xzX9b%JgTDrrE z&hzijN6fWyIf{eE*f0DQ7_9>YB<>dNBaYja6;)7FQBj$qniSQnsFI>uGLWS68G#C_H6sdw zYRfQDP-R86E2<-7VuD)cG|w6=M^wQnAtR`w(}E1Ukg=Ksm1S&ZK{aJ$Nl?uhyG2l? zjKeCZmOIPLUpdQXjisDLwPzHYpgQ(c*zTQ`ulsV9vfJv*IUR1l$HAs9xrBE*j3$W4FY*%aTvKf# zUhkcPS&8;AOozB(kY;8So&3rJS3{gX+IIXv0BS~=@dVX&S8rA5 z<2=RAYTxu2utKqZfAjdld8EzhQqZb)uRFdl#eB(YRYX0IlhtfhdJTa|ySbkTL~~yF zrE1SBcWW&#D9Ow6^#IS?Cm3@uWz!15k=R1aGUsffNNxny7$^M?AHUzA-h9#N)qLy? zx#dT9H>1c61mVVH(cKt3lhKj0tZJyU6en5~STRZQUkPo<51|2q*wake95{Bg9DGPVAB;P0 T1jrf%X2zJ*)(>w<=raBR^O%@` literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/b5ecd5cb b/.temp/node-compile-cache/v22.19.0-x64-9de703df/b5ecd5cb new file mode 100644 index 0000000000000000000000000000000000000000..acba2639031250ce83dec796963fff68d6ad4f48 GIT binary patch literal 1476 zcmZ8hU1%It6h8OPow>U^yUnDgY${7wVMii_wh!roeW?eD}j25&_wMIb-@Mar{Bp7W@cJ8spLG{@d}6GfJ&p0eSn`mT zlb<^@KZ1=#<+~9f)SR$BEhQUlg4{GVCNvlw2kydUk;hUE-%a2ME$jU75zApi0VqXB|T8Op!BTVv6Y{8vw> z83AtjaHZ(tB5R~@_tNCW7-F^Ql2$@O+bH{}3S4^h48a zq972b!b^1uk1pdE-l&7FvOX<}g{Ly32c^OboxjEWLW%~3M5QA@WlOBUTIgKB#*%)G z?cWtd*2f{Wie7LX15oc5lII)()$W7HBZmW6pboiVQ4n*Or7YA_i(Y3hBD1K#g6Nqm zFwhjm{GQQ5_`S2_Xf`ee{8jU$e03@OB&l3<{rYwyQGiSwlWHz*+=brfW^k}Nc3vc% zQKWu{ZC0`AB$OA=qXMlF#rGn literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/b7a9f98f b/.temp/node-compile-cache/v22.19.0-x64-9de703df/b7a9f98f new file mode 100644 index 0000000000000000000000000000000000000000..dbf161d116bf82d95592cbdae6b08fb4d236a70b GIT binary patch literal 1452 zcmZuwU2GIp6h8OPoxL-=+p?uiil){TS%WWaH9!aw`{Ni&07DiMm8|aUZfCPwcDwD) zR?35kB(5>F!PuX`i;0m+NQ{k9NeB<%PfJ97PRXKoJ$%O0HyI^V&2tk%cUm!=T#B}9+vNzeDP#kMwDx5Q|2e|wf*?78m_?JBFi%iW57)V<6`vDk{_R~lV7SD zx$ovx3V_}qKjS;7&gU0i(?&wnCPmeQEJwzeyC*e za|#b@+ieq1z0l!PCaCC>pZ|1DqM+)Gj25eoYR>qnho7T8mu^tT7asSrX5fn!5khI_qM;cE6}XmJCzqL-HHr=R*o5R)+V8f-j8+! zI6zFT6m&O{5^I=g6+Kjlw*{N*uQh% zbu7ytu%?}S=^^V4_5rlqg4xYHWQ}65d~3@_253YUE$&=rs1QXa*p!ZPW|$1#uGx!{PUNP;&T1R4@r-2{Fya+^%*Va9)q{7-iE2Z|RV+bREbv-1AY4`@H<9P7F&KRdS<{0*YXoS0K?Sg6~u zsHU7$8RI(II>eMxr6VYQ1B)_|bmihCLD*p`5_W*bfyIGc5rMsAz-DFjt@OpVmSl_B z@{{_2Vr+-QRo{30ku5>F7$Tmw zWs85`%B2^Byvz1Wo)d%_KdjiE=aditgz+=!J^$$-50``Q?V#k82Hg?g_CoZ{UB2@W z_m1KtMRvaHri1vJcY0CrLv*zSs{o7Y1D|9qYu`^F+K5#e%&gCB&Ve6nJ9oZZu0*!n zy6gafzQQK)1WQ?apuTruO|drGuRK*_gr>9Jh7-F<9sxC1*6` zpP{jGsp>hPjE^-N)`F$zxp`>Ks<0Ti9G>jt#S?e20MP}b*37l8U#fy_XlU5= z9N!+}J&An1|89H~=f08~d~y*BY@BFH*-kAK@u+ru6sh{7z{^CB!m~i+)FEo{D0pUw z$43#nvAjOyT4TtezcXDh9J0PO|W z&r{84xB@xbj8>j9YXd+T_@)6)`Orq2WA$e0aMQFvBiN+9<_@z72d9zKbsXEz4zr`Q zQ@IZJBm^6cg!e?kG^hJms*ff6rjJbVLGhDdTv*2gME>%vZV0*|>ITydNjGHOP?k~h zyZ7cD5e%W#5PuYyVX&GAs#IfCFyxvf2!>LVMd6QqiuCnwiFZBoF}YppnUBZXSe_3jl~_sx0%z}8=ocmj}LYt*V!^(+%Ar~d(&3kb{r literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/bf057daf b/.temp/node-compile-cache/v22.19.0-x64-9de703df/bf057daf new file mode 100644 index 0000000000000000000000000000000000000000..4c65194a9ec4aac5cc586905fe9b0a8e23fc4ce9 GIT binary patch literal 2420 zcmaJ?Yiv|S6rQblUMxp{sA?E9?VS?{?n?yDhxUU*r( zzD<5;LjQtZ?vrnLgitzcrFx0%;ug9O(#wU;9+)AS=Or##0TTzQ@jhA@^qu1dJH*$= zU#m9ed#12bIqWOdw6Bg}xtdJa$CnNQd1xus#k!1_(NN)!C*l0DHe{CZsJfkGxM)dN6f?(j* zwsi}(q&qWowc$uhEXxvsljQVq7daRi6n{)+n*(0eFT4bCefBitx~JpyYs^1 zSY>%vswI(1bjGb1X@sW?wqDx*33imm7~`>hYcKuS?}2Y!I+3v!*^@YN&vv}H+y@`c zW7RgMVo57aDwDq%akT$eRrm-0qv|{0B-uh`50}w^vRhNm z3M!BM%PU`ZR4Ss(d1bGyR#U7bYJOj!z<&^DNPEZAh;hfxwyMA}ki z+kSBOmq^N900k0NkB)z$1ayo>!S_^S8#qq_U)7Z*=RxCWG?qx;b}Oad zD#XVOe)8-K2xK$!Au6CdVs0Yn5x^UIY&0nP?HR6UJL^t#A0dZ;HXSs03pCn_JJF+r zjMA)%*eXC%`;7pUy7JC|B!R1GC=nwxrv;5^5j!TY)REO{-*T=2S!a|RpSjIO6RC)r?D zV;VGH5m?yG{c?X(5%o}%!Z{}05T_Y_hY-p=Pq1^xIK%mR$jLoy0sza#@XD~-8Jr#L z40dRS0~594u=rT?i$QT(T$E=E)WLqvB*<9aZ)0NeHGfF+hjf2P_(Mj3pRmL*`#hkb zrF;WAI^tx-h;W7UiV?#d5&>7p*eWNF1PTV?yZ8_fxdWa7dg8rMw19Vj9$V1^z5#k{ zMFa{5=&=2mCwT4|nRNBK_xfC8qFq!fT<}(1Q4Qg*VMg$@~ literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/bf147981 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/bf147981 new file mode 100644 index 0000000000000000000000000000000000000000..64fbeed7b8ca6f702125860109504e1bb3de42db GIT binary patch literal 8076 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/c5ef00cf b/.temp/node-compile-cache/v22.19.0-x64-9de703df/c5ef00cf new file mode 100644 index 0000000000000000000000000000000000000000..bebe0a09d46ecdb466780e8c6d725f0a533f80c4 GIT binary patch literal 1322036 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

p z9jZoNniBB86QzX;P6;!R+!lg^=P4CRZ+pIL7pu-{H0_8goN<-r99)u zYOc+iLBNSGOdi=11;M?oQ5qD{c?H3d7fL)vS)f+2DI!_MCRINQR@;UgZHBTdQkBg9qM2PS=qRYKj!)uDB-~9iWFx7H#rFB@bMJ7rP90n@YWBg9ZRu44SO6;WZ6dq z&d19Y-~v7k07Una!($Rj8`F*4mE^TGv3ngiviAU9cDQT+ftk52)>VWr@pAZxn&4eF z?#F|i9q6?gM%mmt?j}InDWSk_D-Z8CC!iYbkhU4DM1bBTrqS%Gac{R*;~s*}y*-z# zZ!0JPUdK5N;MIpG-9Z%`I0Ek9JMY$fIsPCyRv*qgEbhp%}BHJCHS>P*2G#Prs2sRuc+k!sizE#4{r zTmk`kl^rg6$~etDhQ7iCh~i;12&^*s(BWU_C}H~JrYqOQOj|X~6Eq6`E2yXeh_#k~ zy_X_9MVOx+R4#q;;7f&@5=&hNzlAp8jp1N+*6H{_MH_qqo{2K(c#a;s-Ej4JhpeLN z5oJk-k5Rz;T{xAMc~hKxCI@n4@f{o7Ny9@IH8@2@^utAzmle>$ZD2s@nxfV6KKB|T zT_>DASOZIR@0fhtm`-G@o9_X0E|BoZ z+IW#N0OaejykirU%bcQV#jZw^K|Wx--!m^HGe0jngf0o6Bo@3Nz~{5qs4=l)(p9t| zfZo&3usozp1;h==+jmTCZQD7IxdaWxrOuZCu813&m-YfDhrf4@^mkC~cGI?kUkYUd z8Uq*Uc}w~e7p0aK_Vj&e{D_ys$84`tJ@dZ4%ch`s86jYhHQ4tZ3HUKn5;+}@jc<$M zIt5+6Moc_!wG&gmhIocKU~+U3c#7mzNrrzWiNiWQoMvJ2(#GXzL&2tY?A4p-%tL@< zlu^`>)KClB^P7Nks2tQb>#N>P38vfdGMl5GHUC%~NCT{tebs)p2n}7)+BPrutYVKR zOBW)jjT~Nn!c8hB6F@3o>=_h^N)Vs~{6J)`{_4IaG=}ViDC;YY zWcgO70N)E_V*aDf4INt@CJSV_JFxs1+x%Ad9Q?p2x#J!CExi_h z!ygSNl-%?l%|q&V*;1y0$F?~_A(@SXx`LV6f<6iD=x#C|(0U|q>^MsMj2uimfbq(a z-tfgc_%5{7h<~i(-Kec?-8%hIs{@~x`oqxg2d#U+SvM|O{ ztK$5RuSU&TI%kQHXd-fU>E0F?GwHvZ;ZoW6q!1XqcBk*MxU|x1x_t4Jt*qkOUfz6^ z!rz%Xs?+JE&y2x+*7hfpj`4aR1cD2!Q@^6uNL%%hlDf?ru^<3UAgTLlA{iZv?{x5J zJ9O-S@q)VrFNI%;Lt%)9_#;~e(dkSVg>9pABXv-idw28;A|#jFL{jKgq5@>CUvb4M zm8%IjGyrR%K)rPWG#8Xoz0>K)pZ-k=f{uBK6~H^3*gkWvWJfUME}dqsA+RpD0(&PA zRK$VQ9j6)q{qA1z;+r(uaoW>2hZ0IlirtWY{Kl8VM;4g}g?dyxebD#6`Kp-Kdmk?$ zq!k(sCQ@o79=YWMBOZGq#zZ(GyL+O4KaSwF3mGtF*3jBW^N}8N$oQ>sn4*nX(I;p89T5~T0-xHw1lyJlT!vJ zq~T{R^oY^}!_GO9dz*2rH*E2=1Fv*aOV>WJ8K2)NM;IewJK>)FY&{a-GIj_x7v(n; zvk!+9f8Xru?=jufPQ8Y(BN9vt2{k^0iK|RRxKrm!^qY)4ts=EC9XnLHg_L7i+2yB$MLiL~=y4IO8|I96lB)*HWeBPm;UE zd7r0AXxZ--uvCDOvo_|xw40UzkegPlsbDlfBWnC=qm)A9FhXz^>aOh6V=?7A{AP&c zfW>b9dI7sGP6=0)-{LL~6F#e4Nrl9`o+lkF zlAY}I%M{9NKQa`l=eu=Ppr<(>(87_5Nk6m%klK7P;bF!?HKc7A?+JlAm#=(^<}SUD znA=E~CK0XJ{+yVXf$tr>L+!!XWWBm8I-Ke6Tl%`t96e%P5#HhBS)zc2j-EG)YZJ1G zWEpUi5!5t=>S5^0uZ;^XEuu5aBAIRJWp(ex41eg2M=HzyhBx( z#YE?!PQN@r$*sqF6A`O`+h1HccLw*P0o1r)*+mpDuxxng)d0!9j?WI>p-eLkIu-0V zkIkyrxYSK_sD>iGckm9KH0J73kUvUA2kecQW zvE_<>zt9A-0I<-#;K#Gckzg_mJCFrhqn))ocgF!35ke^A6wJt;iLUvHa zOa0cZrbHcD=&>UDAKJyTRfR1ki}&%OaU2%PFyKxrn(Y_S3(Hey$WTp7LLj^xJ|<%3 zgV3mZK*0;2>P%JqWoSGi>-<4e38KGF@NIY+;d>qLT=m02|EMu{ADHQ`x;sqFl;q&3mZUfrX-img702^}L(-$ZO;{2QZ;iMuhzp<&UGh zT;tUji;5_J#LMBME}0TFPds|~1*$3R`D4k4^<=T1gFYCaCWSsUD|KSQb<2r5u}5$U zi%J$BwdR|w&qI%n`M3qX1P7-@JJZp0dh zh&xkp7&i!X4qF7!^rIh2A|H_~tlV7o4uLnAM47ST`EuIbZe}+(HVnswi@g zV8vIzQdU(LJ}zzrxEwXB*ezf2`d6xRVh$fE1>P|gSY9yu9nNstU>coA!K3~We67Gg zv$s%C%L;CIvn{^#*6F_95D#WpP8smjhn!c_!u?5WOp}TgDY8W!6Wvdp9~AK0Y<5;0 zoi+M2ecAOot?@}P0!%}6XwBu=JAsRKoD42S8mNi5G(zCtqPY1>4}01Dmfu1=;i8qdn%@R zNwJ1FIQT8}iGrg`l?A&$W|tszxufj4S!7C5s=%Kl=iY2_BgK1yv6O%76n>MS#cMd) z?n`esl1|a_Jy1=`*ZsPydp!>gT-VSA@ndeI)k2L-;MaZe&41H!f-5!yQJxtwUh_Pt zJu}%}oNx}Y6{TvDB{vibK1=_<)&64&wR^FGM+jy3%zhz1cUJ76hbJl~x2J&uwJmjc z*)Hj#HW`7Rwbsd~mBZ@x;^T>2H)pAT%ZvXNZ2G$#S}5$HvS;V{@3%%V&gKLX42BBA zSJCZ2ZU@z$Y*LGFL03TuOymKbZ_B;{U#ld+DyYyEO=1yaG6h75`;%ME8K#+%I`2(U zFSXn)s>_wImsH-}oz%9OeT7^-;PRWMkO$yPrkUDb;@SJd!uI@R+?_&NA#?=!NK<0PO&#g-^0&@cPKY`)hOZL3p_dTg9N4tSv5Z zn3E4=NiXbOOXW=LTEzF`uznY>U?kub(=PwTlMhgkXB5)M1@9kMaM)#Y2-^{sI`|EY z6nU{K@oapP8!0ZGkZAe92IC9X5&8PN$!e+r1w1PJ|Lna9d{jl&KHNz+BnE=)2&0HV z0FfP81VPyivM8I&DBch{5Fnk9PQoIKqM#xoYfw~1Q9)7m)rg?Xh>i=RsEnX8h=R(< zzR2$PJm*y1?!M^E_x;}gGVk~1=GV77_dZp1>eQ)Ir%r7!C1^%Fc<(!*GK)ASjCh-i zP9WNH1hpoy84sA(2_wd}pkqQOz1U_}raZwxVaVR-w@Pg4&+qi6C7U5U$62x29BYGd zAX`uy_~j@BtuC{EK0SfCbp6N1sqf&KuN7j&p|b7#@*iQ$RN;un&hR(t2Is?f9g#gs z#u^0F0YOOh{066GlOfp1*6j=JrKTgtIL2FKXIr|H>=Qo&70M-6LLVBQdD*XtLWQ6-@j8VtkN7~-rwGGW5? zj5xsfdKf)+ph2AyzuT3F^7l)i3#Mf`(BSC+OC99Vo!Uv~XPQk^en5sH93bfI&jruc zP?++^wb#NFRPkC;QA*qgmreRDng z9>OUeQEu#6fn8w1fsmwwPyB(L$=CV6UHWnvQ^cFi@fW-`WpIOia#=5^I-QRX51yR zMJ$B^Z^sfKxZ$c*1Va=l?8;ttrp$ab0Z%l>RGovR4qOB9zYq*-u>ob+a4QJY^{DL| zmhM*rkCC4!lS`&@#5hJAV0;bzN?^yO!;7ed*>6JooPiYtQLU;;&88p7}CV`6AnWvKk#@7beH<9_~(yCeFnAM^oeaEPdxeg2Ql;r41H0mooGV}aB$}iW)_7c zb>FR%1mSXc`==%h_=JPEEi~>1tQnvdlismPH$12UuLugj8^EV7{i!WuHxs33>tn{N zJ5NgC-PITbS7sf&{inJDkBD$;2#Xjfp|sO(!B|!vwtt6?=eALj+Bc9^-JoJg*2|wV z!|;shNgrnHS747(MS`Sd4LkoV&aJS~QaXbXW}ogVA>emdT_9e|vc^56F|xKqwi6K0 zYUK(n!(|P_jhY}~*k@3=@HApq7OXqOP^oKJ_U1}E>`eiwh?qkXO}ZMGNNsD@6E9OI zvA)^8mGG}-a~es4me_jmy0Nr&*v_eO}VDv#U!q^-LE4Y-PH#GZjoNQluR+-Dd53WqhM}b9j~E&b6P`q+gYwzC^ydYXFo+DcFbIywFsBmOHbuZ!fM={m`?Ds$ zSQFrMofUv;7dbpw8$3!T69x#E!`m%vF%WoJ!HZ_M$yqwJL;GJ)rTNN%I?DS`?3OYI3?X(bv%i-;HBc$=6Pw$SY5gfzXwjumB71`nWx!wgZ86^6DDD+j zX&HTW4;3)5CZYLJn~DLA{~My&cyvGIfs&8w5(u)5lUTGAzN?Bxe%;VvV-zq{?f2YSe&MX zim)s+`$^jG7(I(@8muHnS`C|Kype!a%O1Uv5+Gh=Y3YsaADu=CRyDFU^hmo3cmcM0 zZEJx$y#HkC<+4Lfm)5}lEQ3gQ!f4stNRPq+##hb++7wEEjtvyHoxx=MzF7J*^v<3= z7#?k(bYW!WxMqD9D;&t$vaD7M79cIIs97#zCNpw}w``=Krsa-C&S@$P5azlXIDTdt z2~35`7Y<9X>R_*$YI~OrAFl)T+WK6&RUeZvsg(d}2nKmQbZC5lb;d|QPvbmLqPE}# zOa54+uV&Z5Zwx$#F&Zwdr5=&&w$7<`6w94L{0rq5DI7c0Wh7HTCGI>Xl$NDi5E?>8 z`2m7(oISK=xEagioIAGxktWVN#L%6Apyn=yMo&RTeBm+N8q>shf;5Bc7Y_}dqivG% z!|i9`Juip1GAts{cy?LN9(J?AbM_1EMmh>w%;XSb$>q1*MDdC&mUhWxTnb)-0wK7} z;g$EWX5k1puqG2H&Kpn*ydaAzXEzIxMX{~V z@0`Z)1qBvl#4lfb7xe)$W<0c1@vP^V@r-da2k(5n*(C%S)w5@Ptv=$^5KS-4u8<|3 z0(#eQq59z`bE&)3H56%9ZIdD3#jboc%D%yD2V{j=HH5(SQ6D1VW{quU44 z@cKq(+b=&O+ol@Zo+uf5c(Xneb0YlnBjBk3_@l>#@^KuXF!ngSugus~)=j$9OwfhDVfgmTPi z{9__v_uU8QEvmZcDH|Juu&^@@pYCnyni%NZ@L-MvOl1dADyB+GhduvB{I^0&0>0O4|YyB0iWcGoq|mUT6{DIwH}X$B>)7Tg8u zP)Xd<_-sWsYj(OlwXAq@qgoS2@9?&sGLAI19 zJB~rq7{fLzoQR*!X4>{KC554e`d!OE`IssPlZ9aOkD{ds4VNbq;qX{v?uj2HXZP~Y z-mQV(;n?X*=uKkXB~F434bhoQ4luqthMc|G)u%AS?j##C5!ei$YYN$FyF-i*EN?o4 z#;JE~(!n#|r&^cT+&A9wOkF&&v#?pABC@+}UkW1~+Si5b~y$0^+WDq)A)V@(>6Nu4BOj%}&fr*O4cIzeBpwUesxl zT@gQNJmPR3(~o!&Y=gwZJJaaM&b^KBTDcwF#JbDMqWNSU4NB4jWGsrTQO>w~Ikp8) zgY46yoigYRtOL>=!0-~6!`li3QXN|P$fvS_B+M_c1!Hqj4GxVsfj z-6=CSo#$tYJtF&zGg<+!GT^R9_J2t3XMoi#${yLHf;izhtec6OmF{d@l#o76K75#P zSeQD(i8798Ju{E-UTw^f-Md%xZf6W^mSz9k5d$zQ97|(@=w)zfYZq=vVMt1*B1WCK z`^cY1UxSB`P<55j9?)GHXro5lXAFtU;Vo=hhCw-lni?w%B@Ow-&c9|HOU97|JjJN| zj3X8EXbk3{v^fr{>q1S8B?$sMhc%g;rSgfrNU(v&2rQnXac&D(V*Hs}0<~*UPNG?` zgaXy>xilmKdK9t*HX@5-bFNHFLBiY#gPtr``FF6(LZajvI0>F_s{Mo&RaWWvXsRsZ z!|`o67;<CdO=5Zmh(fb!6gS zZ`2t3LhFoxX9F%UnQVx`*h^-B!aJ&3eoQR0l!ErmIEt?@=hJ)D{GulHAd#4ZkM9I2 zfV|GnS+-7lcAln*VdQpiU>U7jvF$ZTDG}4+JqY0)67@Ga|a*a4r&Ety7H0S zDc9itL7b%Y+g?lCePu8W{FBMWsho}PPz=-Pgh|yi6Z>TwP$Rrx3TK-np5w2PNoH0YfDmNXlx;`GF!beg2uPq5Tl5va#dZ*ga zbC1(v!8A3QFzgV~93Q@{-t-o3FM@d}?9P~ZFmLcBgsbMt*|M@YGu&ZBW}0+(VuaZN z&Ns*pFodg4)5Eh^ES!uV&LgK}{)lF1Gq?cZLY!lpG*}@5D_&`7GTd2ejLzY0h$-r7 zN6X&AZXR0?yRkqR|2z2j9x!#b<gV2g$KW}L`U*P|_`uv-Bt>0^!}0uOOHyiN97a7JfJ zmTQ|zqag=o5~kqkG&aH0UL*JIqr!&;5Vau9fW9|b>UDJHw*;xE%iJLHNMi~>Q&9Z+ zj6CrQJEX>=;|>*KO1!u$Wcph(6Q~jcA!8knwj0Qdq5RWn7h|uT=-ED+!a^-tq%mk^ z!?JWJr(*}m+<&)xs3(gU0+`YC*6%2Qxw?Ww<3zI{RA(Gbd__Du!CYB1l!0RdvCV8Q zHW-NPxeTm>kMED*hn8M$(+8`N?sS=+9zAwUoPpO-IOrZbvej<36evHol{6pKMd^B_ zB$TF-#QF>c({beP{1iNQ6>n6(_P1s@IgFzra;hXwIht6PB#yw=NH}9YFPIr(sGez~ zi8CaQ!4HbTl%`4VqDbIZ%^H*~>$M3npxJJ=XN~+rH?={b@6dE%o~{{`j_PffCH;uA z@aP|nna~UCkkNL~jcMbo2Kj>x3fRJxtxl?=1sw`5=rCP0hv`>061b@8=&Gbo4rUu2 zG28_75neE+MMrD?sQN)BTi_rYHB1CF7`h6K0bf^*3|&FKhA(Y)l*3Wg%T)zGQPoko z933@|s=!nQ9;Z#N+PRBiNoxxA1_&xT8egAAhk|LA=HfrY)%Ey6ayB*n{+Vm=8&v?y zNo_Uw9h1@qKB`56;9HO0SFn5LLIm#E^tS3h)muhqr0efH1D=H@p1$Yw>?>kb8EqFVhc`>akH+hXVNb zXb!ovkS|?i))wqk&s2Qwv317$(Eey-s;1Oh2TAyL8%}j>_Q0=FrMdSDggZSiYD+fY z1e^p;p<+Q=y02;?Lyx+yuupIlkIVK9r80U6cD-Lt&qH+%9UH!;HXcVE#7L#wF(2#l zqRkVlsU>&~l(<&sf>kfpHdYsSir=s8)FNe1( zWHrDOj=f)w)kVug)mgM9Dd2h_0M<7Id3v+*Z;C!q-;9U@qZ3#)6=X~WDr~l{dow%+ z3C7J5>Flefwl2{~TIxb)WG1@$;9A1Wc!v)lY=-d*SIzBO1OFjvx2Nq6t#aa%S!C}3 z<9m@TL1`^&mOYeqL=die*@z}p=09-)Qs>|Z>@^cDtWN-_A_ z4F)jAExEl1vwha)(4GISO#cSSswUc=`vG^((iM8BGbT?8+kqD+A8sq)s5uTXJ8ODHrgyFsxE@f+3XIT(0>7c)K(i%s$Ycl}$LLKa%#3kmMPnoS z2XcQ-)EaL#YwSA)yJTc(CAKlIH0t3{vlm`4l}fdUh(7owL>Mx@P&EgEJG<&^$c!>c zM@pQxG+$xzMjn`8t5IsEb9+4ROE!TJgVKGjq94NPX*n3b)?uya zp)Lk7anB?pL0H$-mAKHqbkfC9^6~RgJruZKs)A!~h!mD5GBP4)1l09AUIkC0Yd5_--7AIK?uC z6b)Ma@$>8)dJZe?(6h4!)Ok84g%6kl0%aU;HJ<{myX?3YUGH4G$Fea>9bkMvG7z-L zu+`PB*DOcOZRqYi0S#wa02Eq%Ocru;#Ub2-X(LQqD4 zN46PwQP5b!l_||n`D*}#7>B5FkcxF8bgJ|WkbZ2mg^7{b z(dVd07%iVNY;jPCOPas1k$opIwp0^RmQ0c5amjO3ZOJ66jS{E|9xv^`Bp(C2p-{QDQg>5!;e6r1mJOD7XvZB+wo|0zn~s zu)5D^WXp%HNTfq>C7!72-5#!*!ZOyzPpt##v|Al#EG&uh9DvN~_T!}wvSzqLF)}I+ z5~6EHIWiLhu`B$-2nqxi3sRqp6ByRIW^IpY0Jn#eS5dg3WcqV54K)#Fa$$^@s|jQi zIusrjLPV3Z*c8{^@HbgxCj6ATC9;~|5t9$^csacBoK%vvfAtHe*e=s0X{L|xwSv~* z2RVMAdFjL&_&qF)lXp1U_dDyp9bkM5$Z>FI@9MgDiQX_P&Liy^Q6_~7lv{xJuYR%} zTQQ7-g~es9b(&@r8#5(mF{K85#)Zez*ERxJ3rnW$VIAA0t}3rz+d&v#4sxsH-L;3d zk)+6h60GB(>a;^10=`J{pmfeQzv>{%g)ZQj19R!v!s-t_J&Ke7gv;S=kEs#yYxZ=M z8sVNz2@?WBVmI;^aBstiRjZFrAz6Abs8#}c#lo`S(8T-?<^e*Tl=u4G2#3wSM-1C^xrmH%Gt+e3~w5%Kj*!*meFHxaa}xmGeW$Rfj>ZH3Hs}=d1RP&TJ7OFy2+D(t}`07(TSS^ z+IcajrFg1{fPX**Q94_$xv-KvK@nj0#mHJrfsHif*7C%nAf-K&4VNNxE0(-aHn432 z9^!I%d()`B_9wQ>w1D68zUYnuM4Lb(83)nl zUIt!k&t>3=FJ!&{Z>?4oMj;Ab4sSOinD&oCc|T7yy|73QB36gO2T^PxBe`onIY}@) z=wY}td!`M;C`l$Z_GX;89Nzr+5L|HmC-X zZ1s>i!Zafq_no8`LNWhD>i%mG2#pXGBDU1#2DR3+M3v0Pp50(JAs1TSi}EUo(}DY= z!vY!pJ8gxgS%_fd(2~3lA7g%GI2q^Y+H)WsJoEL!M?fcb9AxFjY&CbDB;Px{JxMd&54i?=2;9QdqpDj) zm&%|f9HUIh1e-@;K$f?yS-y#lXO_;uC20sqJ4m*YSN`k+fVtUzV%RG+@LSuASfLHW zNrp^;RUx(09;U`b@$AUkkwx8u^|85dqPcU<96a;Q#YaFVzF)yIj0{xrt)cY@V`B1o zE8o!0B*}zRB^^X&cQpRgj$`nI`&lT>Ls?7+v?I^|Ex8giBUf}3SD4uDnhA8ZsdU@& zp1hM~8yqcLY|6?Y%7BAszIjFf4xDIGo*q1iRAdVY{O{o7J4yjS?hl=)*qR+O?iqK< zhKDl^=vZD?vvnAR7mHrm-m;aKnBKRb>-TIRi(sy%>r68IgUjLVDvAz@^K4#|wruc1 z2n}N$y8;isbREe_=2BR*=CI7y)fH#xValvnGnj&1W3@Onh5i&61lpC?x)B3mVBIx) zD8|N{j|`~O#{tGyo`IkVSFM>ov?2aiT@q_siG)TCXUki&*v&y0-w3uD&@FpUj9*IK zViZ!4M{cN@ih{SD726F3&cVmm&$O{+^3zLE&e6J}b}O+_DpsyylI3J4@hPd7D*18x?6%Q>K(i0kD{4=Ix zB&8`v0z0nVKh-!D;Ga=8War9Yx9hA&{F>6+eod+4+RjsqQwLrvv|q9Z2NLRsX_j^a zHXA65l@(>wb?wiEtQZ-X{0WR0?c7N=#$;b+gr)n*{1$8nSc^0_SpC3lOrm#ic-b_k zeb(+-uBIsBiaI;OK?J@#sk)GSpS8J(W{gS6#SEr24DSXxD+BWd1-#iLfA`5Av&0O8 zjh838m`1D^Mk?UG$QT3xmi&PH2l}A;W7HxKQwB^g`BgkoIT^P0M4D7si47AAxKn}- zs?#M&P9UV|Odc?LB(!$2k0Pz@R>Yxem)HpjS>S-KrEk`vTP0KmAC(pwcssbMlvXlv zPF=fu4ztAx<6)c(fH|L-PpJIGV+CJ9F!bj17TxNr*+Wj*+HF8TQc%IwS@~V(m|Dt| zQ9tc=(Yk8VVYDx~m3qp_SqE7N?wB-1GHRGy;E#a-ZBLi9Xn#iyz@Y=sO)JRE&Zn;j zJFR0J2wOu0ZL=)F>Y+F^*t)ep*3brrHP;p6Xk~*)O->e@oD{8{`--R#yLvWihX*#> z4nwRVZ%{vr@<&Z%3Lwl?maL&>@HN%|%0jt75THM|p3Lb_{fRb~6Yos({hO27nVO~< zulfee-j@I7WvoF~B`L9s-q=*N}bW1f(2lvE)^n?C3o6JWdrMujZe_`U&u{{EXc!bx((>C#DvN zG&^|b3j>Ve1D7tYT~)Upo+v4(9dck?Bpo2g4mi5vU$!7Qm zm&03;3L;=-PJM6>O(Jv*WZfOaTb8>B>}~2sRO|9BE8dSB1BCr4(A3Gxd+>k>m2Wxg zX3^uEe`$3X-U(>07CGXmUhrNVa;By+yr}ZJJ07TNsB@}kQ}z19>K<)|vbYX*-6A~ICtso3QTn=wb{8|oeT0XgzY6^iPQV4nk)CRfGgV+WZgyl>= zcyu`%)jb~3?rkFQo}?aSJMh$sVT@DyT0yjFVuPAE??!Q=&Hz@>^4Y6ZLq;0=?tKj` z0Q$7nPdL@)Yw|x`=NCus?!+SC*jtqRnBYCNI)MLETULEvJwet9q`tT)_9Jo=?C++v zn_4j84T=a^%6U`JlNtVfRbu50i|RY)=0Sa^JFCaq6EI?ths@8oxol#j|%T8C2u3RFQ!wg2tF zd)e?J#bYf$=_~RbVolesm)&X%^`7K1Zp~dyYPaKG zjcdN&`h*(&a%UrBuj`@37-EFg1$zSf_vMGMJEqnZiF>(Hj9SoU)X;~oL2RrA-nk@P z>1HRBXmzxynl`olF9V-oRY$jqt{8Vgf~4`a(U~1vUA%{xghxItD@w`*G>l~p#O8AzDTRAF&|qsHeTSvg~bb4shx ze(hml1TMlGP3{^a0aJguLe5&_uI3%MU`SUuD`*MmAiJlJ`fQ!)Frc|+hk+H`9WhpL zMbM_U;QU_>e^DDjRRIrz=MqW~Z3$dmAOrTV*(Kc0q7tf`n*7gS-@!pl%2QX5m{R%z zZ`77uv_9!$+A7MXh;xTM3_Mnn`XiGHU$(wL4}X)b(`BBl-2z3_s>3kbC$C147y}g|SZ;%bi6zw75_6a`CgkiFHLKHQJqDQZw2=}C zbb+M@az0qU;jb(fW3i!<>9}avm}~;>LD_?T+qVAKGj#!mgm~9c+u>B1=@zq&I^Ecx zn_7)u%fRWnQiVLS(*`5ik_BZUbXQG3J&t)p;qCfm)iE^!?YM&KcOh@Pv9Nak@=hny zU!?u4hAN!++|4*UWLp`-fRTm)ds}U+AEhkO3CCRgC<{tb=uI$Kyua1QRoE_|631-T zD1O$S2#KnL*UI8Q8LsVa_2$-^c!-Q!Pa-le-7T*(kzqA(S%@}j0@EC|Yb3qF87OeG z9uTz$+Sap#&SBVj;1}vNf^BJa{4|*nrItu#J{CQ(MhA1FyKGz(q4ln0>x~tRNh?k! zoPDZ#lCk4*ctMI#uX8&40O67Kie}t1n&zi9b{Hv*HvDC3BfvGQ5yc6$*LNuLiuDTIVhnNM^gDMd zrb*Q?rPOS6Vg=K7V}Ct}3_K>%7sKKdNRrH$h_osu@LsE>QaltmXdMaQ=WE zTI+I{hdn;X0iC{2lyr1lJC1%}1ej^7pYp90NkZN1I{KfBSr(YYVJYaH5fNhrze6xe zqI>IhSz1HPfGvEp+`G|11ilYU3)8)IVr@u>dy02V(|&?6L2~+>e(7-vT$W6+v)dJF z^V=a0uFgT&q68rwV0_$?hN_{_hN(A@ebTZTvHsl+Wq@<=@m-FrGoyEJ_$7no9ikMa zg*tLwGf(;Cq6A(JZ^v271^kmt=8K+I8{JD2aCtwsj^5J3FaLE#a1FX;tr0_+KOZq> z0l?+(b{;{=&|$6D^UMfCgvGT9@!jt+V>6>Gh&w2O3-2MdQBI+)6hD0!{zVjs9)@P zQx1`{X#AjD$8LC3jwQfk`+rp{G=uewFihC+dRT3DwFKNbHfB|j6-P z-VipkjY(a#TJO!VWoydDiCBn1DOn2ZXa z()yu)&|c&QC{%5Oqn0YT_TnM~F5IwgR0V<~^A9r7`pTkdH|7SWv7XfW{&I|2q}ogh zrlHHm*Nyp*X`>dLzPSu*AO&X7Fhpt8g~MpuGI`{B!RcS;C~IirXIPnJr&>p#z6ZK(x>%#3c-!KItvSJWzMyKw5BLe|=FKH}v+v8oM3p35I zjNM{`{hri}RGC_;JA&9?0mGBsr(3;e^aSUhy6$X=`zz3|t?&NRcebRwu|(a*G|E3D z@C_&wg&%5N)PQhE9F1bE#Gu!W_`$&pJQw&p$}*(o*yzQ>C@ol(hqLeKrwXYVbIIB+ zfN(jyHVkNBDtVBAzaSt!;Qj~mS*jTm)Znw+|B?*;^ zfjN5|wq-C}4sWd~ZYY_gGf)4GEs&_*%powg*cFjNDbP(Or4OKi#<3AWpfYE+J<1lC z)+0)h2vkyaL`GO*QkvuDtMUz3KA{FM>o+$L!kB^SpOPkrw;zr2sQkwJ-%@JR1{ZLv zxxpR6V?ya@A%nTv7Z>m&rqWb9bN^zBBgcV^Q2+stl%{~+0a!U!|4eq3Is&J5>4D|8 zBaq`@E^_RS_Cz;W68sw$E=0f48&9=U!HH-KF-p~4sJS?zg2SQNF)7ooWm@izBoT=h z7aAA{BU7e}UgEY3k>QA>%^ByrCWu7MuC8I}p>W{=XSE;#*Q%En+=fSA3E^iEkc77% zGyE!Y6h$qAoZb7z+QtGNNA{zLTi)>DXmxa^4W`AZ7Czl=Zd!=Sl-UZm#&#cb>YTP= z5$n(DnM*d(eFpl0g!LNp&>v_kz-ouH#mr;L=7MfXLOFV^VSleP3D?q6i)P*u8O`b38pa-f&L~Y*pQ4rl z%>&O2n@ch! zy%t)=FvnTo5qZ@}29R%HZov%|5726Z)3AT4I5C3w&k$CCA7pO(F&}1Ag=fmihDJO& zRBX&_of2dMeWuzO!6x0XQaacmkbNUEK&!o(y=x2HLDarnBS%xleE2K{JXhWK)&=NJ zxDxOJQzk9nxN#E8M8?(JAytmw;~_4Gw|XpX@N3cyquMpV|E`EI{itDH>;v%|ogNd( zgNy`unsr0PZ*{H_L(6z?pI}hTh-jl)Q@#i$Ls>!6rkrW>r3!rCOu7tQT1g--hqwDw z4p1tKZs@*NJzHpOqI96Z-lmM9fm(ECTASJkrurn}wuCB4)tNhy-8&h*1U>^c>k!12 z8y=oo50BZ~!@&VOyMn7Q(DCXmUIo{gg|?3xR)XJ!!quVK9XCAo33H^WgL9nYDULim z#O3hzqPB0~+uk!R#*uFdk5pt33&Sq5^`->l1Y|OM?;CID8@DpKE&Go~`2l3SkjY4( zx~5$_aAuNByNB7HFPmFnDG1n&z2EwU;h@AMNCq*1Ixr9ze(21Qeyj%Eq7Z9d*``H6 zf1}m{=-8O?Ul5e5Od>K01d&7~Ce>rU=}`kOAofuvFsr6r1}(Ej!VUwEQmqRSi7zVk zckx|eKw8!U2Rn>{B9-O@od?b2RFlb)XY&%N*_EArdDb@MM9d^i;)tkSN#m%N0z{_# z*sf_2k?EQ_8s3Vb`Jv%`x&H%H6-PAb>ScM8IthLVKPbcH+jM)91VRfKmp+c`l|HX7 z))MeRqv5NyN$<#-8M{`+)_4;$x}3t;>SM2bm0cUSLpWV08=bu1X#6iR?q`-kd*z}N z)lvvT|HmCviL~@G*~is=Ht=AifKox>RUbR)5G~@tXc5p7Vm=*`g6ftuT4~Kg;WaC& zQ%~DI*EWm@tC=~6STtCkX?&U$?HwKwZf|KoPYP2_pdyrp&ZO;H)ZlWRsRe(gS}svK zBw~&TiEo2M)g^t-Rz0V7(r==bw35%6+&yOJV?4CanK^iRfYoV#*ZJE;~>H!3B7 zCbhYEg1Q++#z`i2k9q|?jhM74pIUTtbCwc}I2gRz&yJpkCUL&Tb_`9^^s^^UUJGy# zZdkTnsc?O;eTCjaPj4u8&mW638gay;y4qsrpdW=~kg(}vmmXt3G6(FVamcn7|0-cg z@K~z&EI9js?3ZoE{i0-uU<1Fvnu$8Uuubn;YLM7EAE^y4_)D#1fG-(a`EfO?U7H*Y z7>`yq-n*d6T>;Q)nkt-*tuYj$OCYSdo!`xmrTn@~I6 z))^+r|3G;H%{AXlykFFw7!jV9$ZMUgV+{lI>b&{jQ!H4w^dsm0;Hk;rI*_5Ypi$eB zABkjzsHnrbc^+jux+7G9VhDnowJqvGUoKj0+Xv8U3?HVu%-W{$9>j4{=Y*zy2Ty!A z;zRN}-rq_#Amr+Te%Stq_N}z`oB;}qgOBfRt)xitR8i4&GO_?u&fWhC#w`A`6Nwo> zgO%4-73Rf&ws#zE!f*^C1#vU9}S#@L|22~#qEA{Z$yY5T~Q>+sM!9|gT_PVJ@us169b z`i^mEB<~ybzwpgzzp9n%QRSxB=P*PK)#wn+qBn1zrFOd-|6O@HAun`dZk#M)*HCSM?zlusL&E zsPD_>J`@~*#~SDLrowJJ_lWF{mM!Ga!IvIczS^BJg6g6-&$m^oInXsU$R+tvb|R;s zz&6$K4>yISsKDrTpn~mvb9YrC2qSRZ@j4rB8SCA1;j>xa(TwkH+m~CW`J@945q609 zh%XV-f&1gSQz)>!0ZX{xZ|1rInyww9gkn4Z)Eo!S{ZyazBS+6Sb!%#BWS>{OH7WF^ zBq7kTH>=%dY9cChf7z(C1CL0Rv1wzZ*+2nP6HnbgVYGUyBAlRVqE4{;Mulyl?-59A z;{N;hhp1UmPfS0WHmt3OhOnDWlNo=$^mg#RsOL3YH`Bd`8a+z9r z#I6DvU?(g$xWo{JiTM~y7ebY^@nAP%i%I7f3^C>|XBK85bc97f3cRBc+-f&ATS^BH^@iDk z4=u=Wv%{1DA67*Mx+|Z5GL3DGS4lur}xSZDJO|5$Z5^c7sFYqXdDF_8X^uVp??>=%5#$4%kR{ zo@kTR?k@YfZ@lL&C~Vom8K=`@3`bB(ZxMd0;W}X4v)@wXK<=c&LONVoZjM@`vOMs7 z$2%x-rjN?>rFo2*llvKzC*ZUb&R_nVcI;zqGzU@mJ_Ls~@!az{hZSZj2r44Iegd1x zB1ZlTZY;QxwNLwW{X;Nlp%rpj5)l_A-bNP<#qnCK2Xz@?mnm$)3>av-0& zGv28ib7fl*)Fde>Gg%tumf3!fa9j>=uey}SkMGvmbW=^&GiovNen3UrzI8l_ItC`5 zJMbP=tQzO7$R^4a8le1zyULU2fOCbWATbnfH%LmVR+m`cf`HoiZC$N-;n6PA&*f55)F@f;<7x}jl)RuC3)Ar%wY#!z zQ>4NzIMCN+wF;(V7d~mpBj)B{ws?JX>*a{NA)KUM2B}Yz?Drb~VH_n?3lLn5@;c+O z!XH;n0d5T#fB$M#;C)AB!cpwfNh~ghw_m_qGT`nDqlZvgnX<~Y3R6Ja@PZO_ce}r( zQi4MNZ-&=%AqtFn(D;JORfI*ynz=P5`4^Eq^cvzG_SUEuYas5(-fvVEKr+NYzW8Z4fiDcw(=mIdFgyDi-!Y`6BV0?X1N=DB^dN_~9wXHbMf?+h~ z)=(U#d3dYNVcOPV**yl8)M`K3Fx9|YK;%>t6t)XY;<$(IfhYbkMyj#4^=sw|+ttjY z?iG6J!=%>LiER<^Ic5%YFBo6iudQ`#gF~~$dPLk53Rvi{dlz0<_hv0T4Q2Ps#Q=l| zJhs)&%*xM-Jc!yo++hrzv`qvfy7UKGTsi zqrw9Ij9}zq*#-ZnZ0exJv_IpXdhoPTgz+oB6+u2KQxmhR|IVFdwVQFa!Z zy0dBg6fSmylY4j&-gX_1v7j0FL25U>Rq9*v90Wu!yHIs*!7IQ4ZNImTf3b)OE4?y9 zljLc_&lwJE8$Y}cRUE`$oGj5Z7+vsXrX07ooAwGTukj_*sEbS)FkAS!feNS>LG_Lc z)oYW-?l^3hzA=4IhasLO7#)z^ zW`m?jzg8Rdumg;5n_mO%y-};VsL@+Lgx4I|;ZL-c@_)M0gUAl`# zM;PDq*6HQ&>nXPXkhzN&y4}l~6P6jWaCynFmWjI#UI?h&9616p+pJ&A3Br}u+iV$L zlQAKy@$E~Fr^|3~MA@@z!lJgl6r}_0R#t8wK35BAfbDXy?Z4Wu8!%<-GmuH9Rk?kY zJJ|Yo8s9rI2dm<87~(tA_*QTKQDruia8!kG5EIS^bcX?{A2sGK5MwoJt4$d6BwHU@ zrek@9{~dgM9ZWT=KjF$h8jHf}K(PP?)Z2pEcRx)KySI$UOk&WO?j;CWsn-7K7g-n4 z&*xkc3~HvTO+{8PFG|oCaKcr7P<<7Gd0y29AmCZfyVy zK1ndlnY$-+_@D(Iy2^k}K+L2Jck*pSvsed!jcgL-9pnw%bjvC0B1aj}SuDEH0nqn^ zN(QP$#>GZ5Ljc^z*dY^S2Pt}sNa9Vdsv02}*1m0+Ss%m&mQk~i9U|x9LjppZZr@Lt z)0WbD=uJ!~4HI)G^r=HCjk6d#)yQOB<#e)PVy{h&hq3dkwNTd}sE*IastB_&L>lc}XVxF?; zK_2u?5tdC*9Q^jZjSm&i)QeYEX3Lnalfg6+@ltT-Y~!cEdj}uiNPJi+rnYa_kb;XC zVW#D}`;KExY@|-s0)Mo#w_wx9RVik7@Xq&%Vduj3e|&>r>#vEP z9nLn;!N>P^WR8R^+Vu1i@*ad(#~5TUJDoFb3ouM4;K!5`fG^v$rz2~ASR4<%qG!kA zsfqh)S1+x*_}x+V^u>UO4>e}4(grFss}Mr zp-7iEQWqg(#%+43tMockFF$C%U6yKwt;agrhs)y+nC0ykPY)%D;JR$--4os^O$PcP z%BAT5sQhBMXJt@luc0A%K;c zecIPuN^^<(q3MD?-4RXVOahGO)`Re*n@(S8M)Ta2v{8LBoctiCyBJ!utPrgHueX+B z;|$W(dZZ%KnqsP}x=|&$wy;B}U@G7A<&*4FW|7%7la6VO301xg)_a?Q|G`nwQliu*usR{eX1})hh-`~YUD7gf@XXf~Y@?~!adU$qka|>} z(H)s#2OnQHK8&H`<}}l^P|?V~7Llgq4OSM=)c)5EZ?R@^78!T@r(*^ydtuk)K~u}Aqj zy!HUMJz~tme!XLZc#xx)2SjnnVf4#cc*sL&bLB^C<9{^E@O8n5WqW|p%a6=TErxS= zJIuxtl_4~7R7G|wlmW5sQSp%wjLYGzlgUfL#G%iqxUfQ^AZYx_EL3_`4fq`Mf3&a>yrSwQ%$I4^dBJ(9E0(qb8;ql%a7UYhfkODYn0$zHs8T=hZU9 z+{&mu0R*&@F~b&IFmZ1ERuc2Sc5TsO!j6Y#lQ#}L;qatfW7(GWYl;gew(3NF!8KwG zcKn0O;VqXbf~-Y1)hwh@hfW=*@2l~R{~dgMNvvy-q6NQ>TSNI&qt2cEA=RHahqtwc zJIf}vok>B+4`J;pb~V0qB{tC}&?lxgubP;CO)Wf(8dZ1AaOslLOCoMY+A1dSGO`xr zt^2j_KWMj^No%akZsl{qjUcCJ)d1i0>q|2=H>%yEssquQn>dO!RN|J+lZ%isQPqD7_tM`G4HzR`3^PQ zm~{nDq@lpDIlLSkDw06YE1M8(@8(&p*t+FwSF=lB9?%f!aEgJ7*P4s=NDD?Of*sr3 z{0i}hd-quB8@yBsA2d>UYU2H~**eKAcA0yus@q`#b-?0Doy)GQ$A2myAzq*9m#?q+ z{_NMAw#iDP^<@v^+2&6DAohTdZ1Vj{HN-HDReSPqKiptv3s>w#iDP^<@v^}v6M9ytEr ztp8!@{deF0Dg5=)Vd?fh|GoeJzv6!{p8vl;|KH80|JCvTUVPr?|L*_K{!RV$hW~f? z;`hb&$$uyNq*%U-<@LXlycX-%|5@^C_0#Wt|DTozFCG7<(=Sf%f0q0gmv?b_7q`#F z{;py@P^<_3lk~vxf8#ePme*o={ZEqDVtFi<$6|Rbwxj+#>w#2<68tN!&T0H*ukSw| z=!>h-FRpaLWu;P`U;I8_6KsGvGf*+^mV|Gy4Rl9Qtb~tdR$d3fX-wDez!Dd4T_Y)%|4?^5cXI?Ahsy z3;2DBGYug8~Gbh#Iaio>NzrfC41ia@ zX5Ikz1KbgNPM7cvas%*`83v#THTMR%3*ZzyEaB_e-jc+L0=L_p#q>U`%qL;%pHiZlp_! zxC<=_;H6?WH`VzPPy2xcu@%Kh=JdYxdipWb~=M@HS<(C<3=Y{h~_KGO%z|m4BTNX|U zXnzSDPs3H1t(tDOYydp=-Q*4M1fFijzTkmttIShT@%y-EGx@;n!f*Bl_#96cV_V08Qfp6*U2y1w`dbjR`R?)d>OnF!5*V%#4L2B42ked>){GCOq>GfU_R4 z{*WF#^xf)(@5R&gDS)Sy0G#BLEri#`cMk*aTt(UvQ1dykv9}lX(8jwFr=3HBhlo3V?FP1nS|tcT9*Gsm@AZ zA7}vlyJcn-4l03G$7&k9@ZIKxKMQE9hJa@V0B446a|P4Ece@wf8_<^;0sd-rz^RCB z@m>dbA1{0@pt~CTdcU z-URSFyzn-F?j-#7l7N$&mibKqztamp3TR;~!24e{+g3-*&t?d4mp8ylfUCDgfJ#ZT zXGr{37QhDI-3D&NQ~1*a=;`>N{qN>S7+Oa*3oQ`lk1Um52)KyPhxDIBT#8pXm> zoeTii;S;#FDq^SbR0WKrAQs=fUQ)gUw0m2?zbRqh)F6c8g>Rr2eixw6;FHkQKgSBE zZDjG-cb_-FDm<-lBjSH9Va`k;hXgZzJoGs+aAAG}Jb#=4E|d>c)DTyg5bf}t787E2 zs`E6k2Z&#L*<6Ja!35gldyp4i0+IB`Cy-X!z^fTJT^8wH_;5gr2)|I(z^!oJ4ESI# zd^?~mk#6AWc(J;ob$JH_2zmqb0Qm0=5UdVEGg|X>1Uw@KF6=o1updzc?yW?_ogplH zIw6D{FpBRg)^M)^Y*)MqJeE+XaNF{B25e|d05TIsR;?1lity#aav{1F3OTeDCtMym;L0enOZ zT-fsufJY$hz*Qx!QEJ<+RD{Ti2?3*Y9I$PXG^%LW3%4iWBfao}fPRNh!d-r2 zxdmL4w-*BBdIOvQxCWvMeDMckxmkYp20R=CS5*jb4@4Ds3@xdeVwOF(Aw*tG2v}}| zf&Gd2nbnMKWp(rIfaiPR=K*brqyr~Y4BVDhAHWN|@LqtvNBGJrfU~=6WA6+2C@=hL zKqrCBKwK@c+@i&~9|DZ_2AB_UDhLg{Ti4iaHvayAkBNqtO-P3OV<5okh$`-ig!6-G z+wt1|V%)p7&DRR{62>rMTB#;S*o{9>o4rIa+P3Ew*wEK(MhU`Uj(%qC7;t z03XO_TmLK#WQ*)>1iC+(rqWP{%K_epPoP`{5B!gSkMqKR0kk$U7x*;6H8yNhcMk%L z_XcPQ@VyLhO-&dx%!7sB3-|;tJOpSF;cxiG_KCO|1_D0O3x6NbN5PE1J0%UA2rBdY z@cn=nUI^%Oggy zj>88%i~Ia0fTcf(08_jHz6JP}I}!hBgT4|dvNHqUk9g4zkkg2M0+n5o>b3*0cS3Fh!IG}|VEH)=A*NmuA_VkQhPb!9 zF_tPBl1AYB@febjzzRSsK+*#bmNxJd1JA$z|0({T$!Z!h$;sAboZENdUaUKQy z+!(wv6zBqm=$TZg^jrZTC3-Zz3u6MHt2r0YA5ilGYZJxbi0+(@L4bMQ0DjcFA0WGd zN>{_6iSF8s1^g*5{0yM`GKK$r{3d|ahxa4E)7}8*0KONJ9#~t&*jHAZ#{oXy3m*+= zt>MgWvVmKEjtBf1FZ^ae*Al)n#d>wG1di;PfbVBx@WRi}fxa3wDR6Jqd1~)fHvuN% z`?;6^=qTR^=re@728Z8gQ+NOY7MK7=-VkC7&;?ltaq=>;X#CQ}Cq1+*LEwD|!`xB!3FNUyKQWp7IVrvr$vwgS^{s0$Ba_2m-w14KNwtUHAl! zR(4GkD-n+(z{}nM#{iy*svWpc(_>&g2KXW`d;y>z;R6M+-Fmx91IQdq#rI+pz!Vs= z@FmbMhZ!RNGlpOrR?38!hVNG{39$<3-S`A9lmniHU{jb5{HvGXj{$pz_{_@;zJiH= z2ELbgvrq|&sUtptqlq*@8UG&)ekQ(Oi@{5wWdL0h`XKPu)idYdJl_OYh-M+c>oEb) zd%qFTcL`5P5`Pp^sA^J}jqj!20Q&&$0euiSdL@VT-E(6Fr-!Xb^enYhln=pPw@LTmRJ!7J$Q5SJ&FBF^+^0aKDl$^hLXt* z5^GnQQ@T=(ga(&C6qopDJRoc0lLse$ayf3#`jc-PPMDlAJNYvF4iC-FA2GN`HVrsle7ASN7k4M&_lWEvJ%izJ+7Q}~xcF{+ zpD`=T;CGshv{PF8P`u~6RW}smuxe|ZnyiEaO^3pLAFSwk*EK(cgQc^fbP*nTsnc-X z8v*>zNXsOdl9%~MQ%{#O&pM_JmZJ_w^SD+5a3xeN!KC{H&b6f$QnDf^t@GWmsZ}3} zklX_~>NhkEiIPx^N zNg0ciBl+%y0?uVH33se?g&QLIWiURTB+jn{9HR)~k z*4G?zGvVxsrcvR6sb8z|dyza@Ouy{mK`Cj;_oT1REnu-~8a*?^VH|TAiN=?(GJq!O zXFq8zsDAseq?KpsrsZ`B7~0I=1t$>NYKoT%wTThXl7#Cd_MFM zin?NOWTqYi?1Gp^`-IzjMAG0!Y}%8 zP4!6neKUuI((>|i4S?Z6ym+xB&C6!`IQa9>#*)v{QcBCqgIqFh zBHXy#vzQsrfugVDS&ktf>E^8RL(7<|+DWkMypT_r} zY4_l=uJ6x*?u>p0J@L( zP`WmKQ$CfoO^+XsZH)2Qhv)#5v2G^+0v>JkMECsz=pCR-#OPY4kGYZ2h2=E!-;9pb z*{9?Nz)8^!pz4Fd%EA#}ue)ImNn5QeVRNUp?sSfvk=G zQs63!rWPRjWqg0&LEiynb##^j*ANZ6$)$S{&>u#lrJNmL_oJ_bhToJk4Q$qHrmz^_ zA4P|O&!-AHN!6>s8lS+mL^JLx2K_3&w|USPft)xM z=!Qg-dTJxay#(KX^Ps;1^1jD`Zfeoj81!rS{=|dc0A%-RK)0~yD-8N|e195^7S2ou zw$u~A-(YJ1>9OUy6k)bUhk>)_HlV*_h;|KU%oOUcG$|~@_h%k-^XWd{27Ce?ESdo3 zbveF2_n#PXP5%@J*i)d?=Pdnz%euv=z8cM1^PFfIZNoVeaiJf@ARO@ z09o~EpzpG1%f~l>-sM3L1M)?vn83Y6M@#&hK!4>ye+T4Id|(j)&6=7F6zP5o-(P#s zHKB^`cvkxJKl=^dO3fzVzwzLo0XFA3s1>x20|$S;i*~BEfogZ)U!RG_3esjg+U<$v zbwu&z^T<*fvxINg3;qt!|A{D$g~B*jM<8|1!49?hk>7{B=ph7EYp6G@ls!tdl zxHKrC#;7REQKq9ZHV;)>5zTj=XsSa0O~fZK(&oVy&3iz9??HbEWJ~Bk=Ap1u!Sskp zM>D4rI}@(OW)inr`F%vU&lBC_i0ULhfqa{|mC?Tfz2AdQg(6*pPhgBi+qgdf`UelX z1Qh9Td;;Sw+GgxSpnr@;OYyG(_DZPJz=P4nZ%g1Kg!w5t47^T5fc}^vCO4d|J|3IG z$3P$OpsPapK8#P`F^jg;Zv*jFyo{uJMb zJki!%ioqOwD3F^z+fh9MK$&ibjV`rz4VUp_XOX zltstu^q%;4eu$6v-F)hY_&GoE#|J;fKYoBe}WK?t{Yz?BS2a4nR z%?hK9lIz9O@dwY6Yfqhv-*JvV)?SD|Kh=*Piy!xY_c(vdndX1s3I15~gn!MZ{FQ=$LBBK~-OvH$zU^5hl&cdzir!dLxMmhi{cCH|*gzq|^kZFX{H;SO&<1J68G)Ag7|TO3sCl&GBEc z4B!=bbw`gfz^E(_K=n!sr3W#%h; zZyfTUI7;xeWB%2@@X1HN_-CHskELh)(;f)m)yoeA{#qFD2X5Y97zSWeeT`FN2wYMUF}jq}>qE!U z-`aS{8{v&E`uMc5BPiUe`>%k9d@%oI;~Mwn2{_2>y&qqqLE_u-CF&)vh%Zq)@h|u{ zsR=Ra@U3V4y@?FsuEAJ60d@#J3GGTo^=B#7l(FaVebHu%VPGPa#*kb)d@%Zd)^99= zWP@LT?_WLmAh5FqKWVWS|0m$3BZe=b3Gr_P_8>lV)mHC*)5Vf_mzSHC9&CnzVYSJ~ zS(5iWzT?=6;+iS+2m>*-{}=y|8h98fGE8GYtMS*#adGkQPmYg|e{ZtiAHTKKnHK(l zuhi)l{u1$}ere$^87OtCg+HNWnPrH$-fz3anOLgBd&FBX7aZi3^Z;l?dA*cIE>nC; zHCQ3zR!TUR#c+lt%wgX-!>7Qf4FlgaL=PDqS@cfX;Y?|WZXx=5=)j>@#*S9IhUgBV zkAsd2dL!&$^lyl60Bn2f!VEm!2xf7@T?sH<18+47{IwD6zrZ(*V2HuGg2_ZHXmUf? zDlkA`RRpeW9B9!v(4ldlXX8MyabSGoz!QxFPdARMk??Yo1NwygxPA#GN;xIvH-zM5 zT*AzFdD*xG{=HBt;c4?PR71j5Ky;j8I$|gJ(=kOUjVu84Zab;)Azm$!HH%A)MaI5fC1()g&aakU>y z`BUP{ruZkLSCSH#93K~-Qev_{KK`#|Q%X(__#vnz0ua=aCE`;OCMT4PPf47dm=K?G z+2qR-<5Q9*CtVhwQfhLkr1+H5lS`M1Pf4DfTsl6b%;Yl3@hO*2zPwC)O4-R}FON?t zH@RHd_>}UK%a@B!sW7=h`S_HIlPgw;PpLGyQpNa`%9ATsichIBxk}~ulq>!p_TB|L ziegO5owf3w`dg^)Jx9Y9x z>aMD{tE*~anz<61*EElDCA6q%(cG2LvZiGVS3+z}Y)jY9noDC{371AE#MQ)I>Pon* z=CU|fLVQj9Wv(}BTE)9|)UVJ! z2{nmVxDwjdv`cg)Tv5}$ohu=+=F0Z2gmyJaSGu;>T$SW{t)|0Ou5C3PJGfqrPG}#U zaAi$$M^{2pO{Zkn*64(*YEnA65<1j$PI0|b)1|X(OO2*eT#jx}99uFW;wy1HV% zsp;O$m5|&Z!QIRiQ){_AwLJ{}YUHWy>Ee%OA)eY^A^e4FzqWT+&DGtBx?+xZJl;EE zNkjgc8S|Crc<->tuio_5{#JixLYNT$)l=K2f%x@{r}mmC{%RKPsZEU*zv_8v`!*84 z>U(O_8jD|%p4xs*#jggQ+H@2xG%QbT{}$p`l&3Z$R{Uz{sl7H%{EGI}4u}`OF7ec6 zwidr&`oK2gm+h&&uC4gh*i)O8D1J5Z)DCJdel_*fW+#bX%{;Y(JBVK~p4yyb@vFI~ z_WBg@tA(d_NEh*|rKfgiSMe*>Q=8kJzi|7j9oAD|mwIZ4_ilAVpP1Ux+TV=S1ZiQs zr*=e|ko?(GdtimKwv+4YDWzeSZh!1%~|5t<(}Hn+2U6lPwg!^ z;#Y#FHgAad)z(v+pDTV{;i(-nT>MJ()E0~ozuI|f3rF%-ca-?`qo=lLwD@(( zQ#&?K{QALDTRf&wLi?zMD@FLEr?#XpD&Z;-_})`Hu1Ng)&Qm+SSp53dQ(HPNI_6kS zSr5c+Pl!2QQ{K}R^JVkeuZpiUj)z2kmC%ub%{qE&D@ujR2~X|BGV$vhPpz*)u*sg< zN*|hyht1^hmE$nHGJ4@F?*5Ha<&iDHpM7Kg4`dLZoJp@+k;Ond@~(zYvykVmY8LVm zzOUi?cE@HRU*P){{Y`F@cjngAMyPSU$aBAkb3xDf^TztTjARd-%j}U zz_%~HnfPAcA-!41jr^C-eM|^+7*Mx2L@Vx}z=J>Y4_bPmQ;M*VH>pNm9YRJv_RnieZs`2B_j`Q&ALHz2J zOtMun(nRQKd|&9;AYM%)ffIn8h=E5>XRf$=*~rHm zsVqhRhxdO@%!JQJJtUY1C4L&mLb0)Q{D+CA{q+y@sMI0)CBRQ)Qx8!;)rV@;~AGz-Gag;Wd%O(1U$NDB>2>c2euoX>&BCS zING!{jqtzLQ{wF9Fj*LCbg3)e5u%MyV&VNM&X$t7r8w*{Jaxryg=mL36!86*pkbx6 zt|i3T)oTv%_3UQi(@YmmE<^{nhWPc75a+bO1keh{4y~I;lHXBA%9H{sul%^i=TlBfokFMR}19c=o*ws3?ZW~H;rBRh73y% zc{Eu%TXh{k{*7*R6(+X9>(GcFZ;0OIUMLlGsb30(?sXNSAUptHlsd$nrH%qKdejwP z($+M7O@u*DG*wPmTNUGF5Z_R@7?Fc^=;^elLfblC+juCv5TpPvcgU5dQE?T-KgPQ> zymIJ_Zmg1M1&xh$HSUG<%^qmH8-^}F#p$8oiDhxWSXX=^MAuV%wi+O4`%%iqrn=I5 zA?fZ4>FP*`v(~V~#>i35#!Gd@V^apcvt#c={UC z*pF|>gAJ7d`X+!%WNZ%>5BY0c-fs|Yk!l*5vbdQ5KOC2Jz|WpRmj@EK6SC2Lk-%#f zJUh-uIvpYYx-$XkS4@EL?lk5w{9J*G%~*0*=+V1E;hH*qSLn_f{xIsVL$V<~E<>!& zD zfyU0d8b3ig;aVne#Y4ewRp62_cGVT{3DIhbPiU>g^+k;R&VuPb^9jK+o-ntr}LHcKEJQ1TFrZ-XvTn+KJ>xzdCG>xb%h!2Vu;x7LK zWYm9SUtRIbAo>i&ziF#t*Jleg)_BJu?q00?LmY2P|Io9Y^6*=H;@rLAADY15MfjR) zY8$(a-DVXk*(iLo@NI){MW_*yh+`FwGp>xRikQ_PvLa%?JF+w)C#20Kdn4?`&=C#4 z#I#Bb&Ld`+5PLs7GB;v(Xk<>r!m!9u5p&IYM#$ce%*fLE-L;>oQ2Uv9a?QmT_o2|g z#1{DX^JjkN(3$=njN{eZo)pnv%D8$;Hy5}f+z0rf{DL=+yiPx^@CWrPuhv}`_ODzI zE*}lIgXA&_MI2G#fAg@V#BwWM97G&LdTtZzqtLzDFTW}u(+^1rE^2gcd&Xbt9qTPC z%*n4R7L@G2y|J$`eNmE=@@1p0JwyWzm!n9s`m2^FQ@%rea8 zo0MNF^%gx-D;}oY>MN=83cdb}LDNSXh*Us5O1b%+@rS>*-d!H%Ch z)L?Wk_Ua0&Csgo3h$=Qi)C1OPe)JTWKRfEFIhxnux<@^w=3>XpJf;+Ij-5c2=I8Qi zRPDy1?s-|xV^)OfK@G%q8Hh+#6CNxviw=4tSG3(9?k zEKm`PezK%*6S&73o9aX}f4FIUiZ5&B)=OR2vR0OqA!|6pumYEya0T(cgd48$QXTd7 zH(-625$x`*xW+ByL;VlqaZ5Bd*OBiA+5JL3O~~^u)&NN|e%#@Vm+Q#?0okW-ROVgr z$;YhJ73CFuOHnyhA@Q1|I&O8wmOAS7N20+W#k*7|l^NY1!rjhzrH*tzNal=&^!Jnw z#UyxLa@Rq6t3z70ons;U%`H3y;pfIM7yQh8HT0`jL*d#NA=HW=85#4b8yr@#R~?bD z{X36nDyxw6&stjFtg|7#%_%MF46O1FVoh{#djhJ|3OAN(z zbVb@07MGB7+ zTMg*$N8Ngu-VWoe&Z^Eo@E@QdH*@8N&NZ#Z5xv8o;$cMiULK}}@8)50_(~pf z!`JbUr$gHqs?d^350WvER0qTvgE)8aP!+zPhZ$!0F&-D1;mdiLFFglxwk+edhqZ)%x^ z45o*xxK*SoQwmhpD^A&~L_VeZTr+&O3&%~SwpiI8Y_SR{JC;&2OJ_rIa|!wjRi&s* zTxvFniOvdN!^0?K7>B&@Ej*Nlf64>QQ0OKGi~Z;s23O*wxNzKWhHqoI0=D8X0;PmQ zARGxP?8E%2U%v3DozEeSX2s1Bv?({xrK*PU33ck zl;B)5QY9FCP{{`uTCh#Z-eA*IEWuVN$@xq$RhP0VgJ5-Knvzs{3RDHEQc&t!WX|^T zFioF-RU(R0#k-p#lOvVneuie4Iv9K+>yS!Cm4zwYzXs_bjH{MOSeZo042gE=!+mWv^0KA$3rCDpc3d=D3fb{^F2_ zgm4&v>kNmS$PGNOuHjIMg2iE)4k?9g1S=xdVGTp0wBAyNvQRs4NRRx8huJ(oI8M_t zDkY^D98yUrD}p(tu!)fs>o^xPG$3*Z4^=t^rLK%o3hJQZTuFu8NCm2p(o=CNP?e90 zOc@w3eliLTTorPCgmKO{b)=s%h)Ywcs94ouHp%X~WR)3#Sa~Xf%VHZ9D(d7=8LSSo zDAI*zG7IVp8A{i&s9Y#8IBWAMnW`m~ElNR!f)$jVDp_UcMGva9m86POf$E_2RGh)Z ztQ3OPRS9mP)usB(f5Z@~nnI5-h*Kep1f7QFd1yHiT@{+Cy=L=@Xm$V*VlSzAAzDtD zQHTZ&Mit64T8su1lGCJQG447jgi_QQh~%L;g+eJ55Or1bs8AS{g?hM<>gnX>nv$Gh zB4MOaEYo<3FbWmNVx2T>E=DH?Xq9N&kmd*`HVug(!cv??SU$^?Xa!KjHv(5FlBvKI zEHlEAD2%QO$wJ>(j!k=n>A~q-big@KJAM1FOE^#)RyMw@{MIrtU~Ey_cMiu({mTjm z7iE-`;$fzEZ<7xN#x+`d2c3sQ;R7o5W|fqAF?pGfDRX@#lS=Z%gM+EV2JU9xeh{WI zms}_!(pXe5T`Y8v?Y)%}N*gv|Q0n^nvky3)x}g{jxXKF5E|WC5wjG`v$6?0MV(%C{ z5e(?TwzapNc%ME8%%?0WEh(rPl?r3wIXIN_o;U6r$#Nc8 zIhpASTlT%%*~dws3WJYFV6td8OAuGR|co zgEnbB_(i;B4!xpJyp?`E2T8qwU$%RW^+TsO-diO!Szal<>%Vo0Gd)cLmvErqD#%wjL}hvY zQ4mEtudnvvtdy5I(`&kE=Etl@`gL=y$~^dneKmpJFwG4u&95xh0xIqUDY4@jx8qfG zAwm6~dl$5!15E3S7uhQV5m4s$J|SQ88g=LgiBTr(o1A_uOGyOLK#@ntl(i0R#d!Kp zE-1~%tJ%nAkRW9?zdAUS*PJsRrx5FKm~Z?V&X>I)9;cv6vr)aSUXkX+>ip75M-EgL zSx08}U-%;(?m4B^j-1Q$vaxY?cb>CBC1pV*^%gvnbK#U?wHJ*`!QYG>$I6%>xxq?c`XQg z9Y)ipsPHi>Xp=tI`lusk*)CZ1!9h;daFmqerw zee|7xSE(!W%L-MLyw>U;-`bMbT3WtOpp@@$^`d&>n!z<6CuXhI zL2w7JYuZoP>$vuX9`d)f@7WJ{U+=3j!gI2Aa6&oHiH=JjopGL=wEi5^OT%NSs*-|0 zJ%gP?2H*QQ>+XQy%U;-W^6k7I`2eNPWg)nxN0TSAp0NHndFK7_YflRwrKmm*lJ-td zJpUo@7rH(>XrL$`)S>CQ`LDAMX&HUIK$iAj|JHe)Lval_1en(9Q67``Hgyd+Sb+F2 zt&?{*6jO_IUDn6C!mO{u-@LgKJb!;ux9e&k{`et9UB4}?PWn?FM;))DPWwkcejv(1%?o47q3k2|?%_~N~Qbe0`(33)k zqOORLIUMn~)1ogkG`+k)cL~waan|`gNAA6r_rEkOpECYB@045d>`tVC^mo27ryc8c zKe*W)l(2hhd|6}a^~6>nHBxP%Bnit!9|`!qJM#9 z9?%T<(-d(wT98XlyxlX_>(i>_+QyXsMf4NAMfvF7YD(Cd{pu%TIm2{sskh1>qb&RB zKdpO-*K~ThUj-q_J+gUyp17tSo&6e{vNbmIq3PdWU;>Ls@1SXgwWf3cc+uj(kYHjFPha($XpZB&pZ)$v+OWj%1Yk ziv%H=hxV0YeqovE^?bA<^~N-Q;acWBvq+=Vl6pN4el3>Q&YW;z9$dK{7YMzwI(n#+ zhvwdQkaaRsJi0CL4!%g-W6s%k&|Zu&f+Cg(B_PwCm!B_QsTNZ)iZF&yi8I}q-y9P4E(`B$2ksiG>>jH(o%J;b?I;$h^7GU? z{&KeHm#F(z5LfhWpHSWl`7)okpvtQ=OTBSN&z@)5E&gC8#3eE*Y*2;EVCir ziPa@_%Iv^tmzabH9|ji03M5Fq(VdoB%!6F=DVSTZrT01JVJND1CDygl#Y4U6op%kT zokK5j9;PmNORW7XeILPb_WAjsm`*2`lL+Rz?w)dkxWC~(6=39f==1VtuhEuaWrf}% zIEnN%MO)%dU6aH-3@a;{=)5zM%NRc(kL99#TK;Is9d(U6$n!9ai;ejinO@HY4~?fS z8NTuh+S)_k6^W_7*Or!#$#=9EjPv*xAGD(_(kB#%l-#6WD<9+e8;n)id?khcJd)dd z|NT|0gF%%HVRCUlz4H$3#5!-z(U-l7Ydj2KHsEm)e51gs@6UQ0aCV8z3pMjJ?zV~#VK9%J)$XiuhUKogl`r`(4 zi(wj)tE-JP&>wDene{aL!~NJF#N<8Pq|-{vx#k}4E5T`P>{j>%&$r{ggpkbZxY6Si z$l;#TSKXHV-0|G^PLRWOZ~=FIgDK|9^+WF|V7<(Lqj~!l2Hgjp0xI2;Gu$t-?q;IS zPj>LE6Q?(SBBpGM^XBswmK2~juJq>F3l8dYI)rt`E8cb&=k4&!s#jQ-bl;5n2nz0W z;@Dj*Z$}vjn&}Oh5T4ERO#tHx-xMn0LvGos!kbtI$+doB_+;vdW!Q9LO0Vs+ zcZvIMZZ-M>b+~bNbpM@p`j-pTc4C}8-0C)zegrI#QAIV{u)5)zhD- zy_F?Xy^hI;!nZi)hVox%C;NHY&a}(FpTK-E44D=3DfQ2$o*qPBpr~sq69Ff=lsV8kKb-lHc3ddL z@<{ox_I~==^}R`+h(Jt~>H3d(vxOg18c4QH)2N zlqiSk=^I{Q`nmaI$D&dx-+e%g=^ytj*(lBj>XGc%(c9{OA|T>9)GYrs$_SUauA_Bi zir(JzA@4)_e&C>iN?W&n*z$eaigLx8kAX#6S+7n^I#tAaCC9k|ZE}0wZYrMLh`L@B z%#F)xaX-t3V~YSI(>t_z%+tIk`?7E8Aery;5z}VSw~*sQH(>IxvV7kZhlD)Gk2Ld+ zVm-(yudKS55N#WhesdP>Mm-9Of@$nI_C+kyzS*s>!piC6|ts z5&VfWZs;An`I&oYn;2U=XmYNp?)oeX_+1=~)H@wD<96zS%Pe!S)I0x=Ly?Lb>@-K@ zH^1Q}%rEM@@P9c}fy%g#&hPyw^@YFAA;7qQe`U~o)>r8x36SKrcAt{Xdd?acU}T(K zYo~|>Sf!67z*4V6>o<~keP-p4fd{S7Pl~*3SpEoY5k3+>BjY?YE2Ko!6`%90g2Q?3 zI%3LQ%%}F{IaGm4nXr0qhVZ=VbALf!5%IL|8}}Xr~}$X6_$*oVH3CCkqfC+Ipbd?kzm`QU;}3 zEv9J;?tF6iK9+;u9w{Waoh6T$)FW3Y@k#^**LBw;^{FS}p%vZ&=@4gn({D=@3vtV= zp%um=X}r7A-jq9b9iqK|l5J^I)+NvS)0Kk$bi@An`@tZ4B`@^WzWIwwoKsPx4x5m! ztK%zwXS<}9(7vFcXxl(@-;lJ)LUA_$NA{Y1;i+Gy6oLk%s=$`Xg-JsEaF)mT_jdwgvfKZCvHn3O z!han z*WD-lv%JOvHCo19)N-77(;j{SK7a7jOtEl2 z7j4(d)Q3#kgtU9v&IoN0VFZ$!DJ7`z&Y|igBz%Qd4#yV*=`tGNP{4%0} zg=?dZ%z~XWp7zVI1S;}n_ZI2!!?_0YqI$o>KA*6e7|P*jN$vrE8L8)zLLOX)pI;Ww z*@e8Al|@GC`C>lV<1atjqK1u(b8Y?cEqR>@y*fUc><gAN;I*|F=clPhQ=~Iw)=8vU(QQD-Z{Py*&7B|UC3?6x2 zws(qp!e6g&k*S9+U}=f8Wzq6ZGyUoHt%kGBCwS_+UTF2OUq9W8J6Hj_tA#=OVFNan z`tyQI9~)|j=xJNeJDV-_$1NYC$hg7HtR6MOU!T>38Invlqjt?C|2f75FCWbKlNDuH zH1y|R{rT2TafmS8sXd3L_&M!xRosxtKZ$;qC_@g;$KZjH;xZCX9SPDaEzf6e8RrSh zQ|+%myfFY5We9smzB=P?0eiJ0RSBqa&ThEuJ%3rq&ax0-+-qyQXZhn64kHyexJB0t zS`y$;|8%=mDl}HuZ~i12Va@+ zpg&H1vsH1Ho!RrGKM$eAYkSyagEd;DeKe`uhLRb?<{#TyU$_0>(EIi*djdgqFb zJ>>QqqAShf74>0Y?dscj56v#G;`@fEg2BCaroYcSN$|IU6X zd?HmPIQ3IhY;|tQBFz%8p42|XBCfp_c+o%$$` zqvxvLrXPg*7ZDNh^vQa9BF~wK2M$%d`|d5ob{k?c25{QA@BUtUSsxgWQ-oaHoM&%f z-4yzP#~ng%<6U2^WgVlQgA(b+rTbp>+n-U*4N06)3z_2`SJY_xFCrq+SmsMO&U=qY zpQoFPVIxf2Qudq>V?n0xpaj?6+iN59B=mCV)2bE^1gN*x6WNF7gnAB2=(Xt6OKg-Q z)6=u|WO}}T{(^NDq@JGZf}qel+~>JZ{prbR$U=naP5pfTB%Pjv5@m39ZR{5R`O%Kq zK(Zq4MTtwqy^i)eMR-kY9sg7u@88m1)>x$ zKZQ+no?wm>9>e*oI%O8THnu76NlgDDB1ZJv(RB4P3H@oX%Y#)gZKIp}7nfxsV20Qx z0%4X50at|WLZH6oM!?;`b|VmFg&+_TZHFMx$O=Uuw6PtEKvOFWfv^}m41pF_I0E6Z zb~plYRs;eO@pc3Pt*v?p)N5ncL!hlyAA$Obc6|ieTagGvCfSh)bg*b!gJin_0x6b- zfYrse5a?<}ArRHwjzXZP)ewP(z3qkw^s%B5h)%Vm5lFKxLEw^f`w|2)tVRel8elg< zV4!6qU}xDj0@+q$1RCeqjS(1PH9??BuH6KI;Z{=wnvSrWA~4cwhCs7Xb~6ML@jIo*{(7e!YjzE#s0)ZCAb_)c?SuGK0S!%aLpv;OzAhyDeMZjlWiom5+_N53+ zvf>bkn{3A+Fx9#Yfy<`Zmmx6Sibo)Rh8>T+!c54LYSeGMk z`CR*Q1m;<75NI>sZiB!AD*=Iog?0i0i>$T?v|VhsMc@(Z3IwiLYF~lCGAj{*#N~D( z0xPU`2((*iw?kl+)gFQNPucAeSZ!U2z?Ez4D-l?0B_WWs&Q3yLy>%4=S8cGbLSUoS z0f7#i><$QQwmKrvaf{s%fvr|D0?FI#WCXTboe=1>!|sH@PAdh0l-+g;0(-2^2z1_S zcSc~J)dhhr`|U0W9I!kHc;2@?2pqJ!BGC0CyDI{RtZoQ&`_%4+z+tO90^N_;-4Qry z^+2G$E}_S^!(cHiNFb~7XrP$vwI8Mn06{IBIB1oT&C4mfPJy9tld|FVWyQPz%(Pm zw9_P5-?aJ(u%FSuwEIag%Cyo2m~KRycDe)`nO1)R_Q!gFc7F*rHLVN*W?Gpzvv9ALzo_5caCHmytnW@3diJ5z#fO>3Y42O5c{Jy3$}P3t-V zUS}kk_H`2MU|LxM%rcTqJ4=EorZq@_gRqp8JxGFGO)Fb~*+zHM&X! z9xTB=rj;YW93$1Vb0nB%TGtEkdL!Mmua{tkX$=wJ5MzL850T(N(;6zkp+=Tz50zlH zY2^wq*T^yLTnP>_tziNjX5^aoFbNJft>FS3Zj3PP;SwBaS~m#r24j?I-yp%!rZqx< zBaA%L9wEUorgftLZ!`)``$h>Cnbt@Fjx>r*d!z)%nbu7LyvZmvu_3gmHf7kVQGlb2 z3ez4XL7!>eEWn$MD$~AMf|E>Zv;apNlTCZH1gDzTEdsp7m}c6yNN~DoQ8}FNTwFD2E)+7N=GCnfx zNfJC{TDJ=DR^wCCzEy&UO>43MCmTmhd$I(Nn${EnPBD&|_7n*oH?64xoN9b++EXQX z!nAG^;BCftrhS_PPny;=0Zubcnf5dZo;I!91$eu0#fb^9`JnD-*?E59$74SR>&ojEa?0FLI3HSjCKVbBB*$+s#58(L{ zo^PbO?D-N-1N@+bA2iZk_Jb160K7oL3yc9Sdx3-p0{)AH|6*jh?7v7j8}LF2FEnyo z_Cg5{0sN4JA2M=X_CpdL4tSA-7a1d5_96+71pKgsA2vq0?1v>h8t`HXFE;XA_F@T- z0sL19|J5jT*?*OA5#UE8{D@KPvLBH!R*kooNO*}+>av$exD4=82`@D&T=r54`v5;G z;YW=sm;I=OCjnk2;bq2Tm%U8FQvv@?!hbWSx$M75csk(a5?*f1aM{ZxJQMI^5`N5> z<+2}>@ZEq{NO*-Y+hwni@EpL8OZahPuFHO0!t(&Hl<-PpzRO-I;RS%7knj`6LYMu7 zgcku`CE-=ZVwb&2!jAxcQo>IfOI`Mp5?%)QDG5JiEO*&YNq7a|rzQNfvC?HfE#Xyw zS4()c@s!J6E#cLGpONr0#u}IXjD*($UL)Z(#yXe1M#Ad>KP%y9jSVjQSqX0hyjH?% zjZH3lt%NrN{=0<#ZftScf0yu9!0RNu&e-O%*GYIg;O8X#oUy}YKPTaxfY(cSy|LS6 zub1#1z|Twgd1J53eqO@+0B?}+24la=-XP%vfM1aC3{`vnOf1iVqg8;y@#_C^UG z0{o(cUo<{-*)K}?FyKuR-eeqc*_$MM6!1$De#toIvR{($alo4;yxI8LWp9@73BWH) z_+{fem;JJYPXgW|;Vs4~m%T;8rvbkr;a7|^F8dV;p9Q>C!ds1BUG`Q9{|@+73BPKb zbJ?#-_&nfk65fU#7VK>jcDW7fH3`3Fgt+b3Bpe2KyM(tJ5pH|CgzE!-UBa&$4czwY z5{?4AL&7_ZXt%vX!i@mGA>lWS#%}u!2{#42Q^Grq7`MGs!Yu&rlJG7g)@|>Sa2(*> z65egZyY1Z)ZVmWN3BPHyaocZ7xGms465eAZy6rs@ZV&h^3BP3|x$U-34dhdx$Tc6j5QCfk0t!E zQRucmmT(c^LlQn@6ua$15*`Qm6A6D}l)CLtBwPmgQwe`+RJiR=CF}$InS?(xs@(Qx z5}pM3u!IjAlil`V2~P$5xr9GArn&9UB|IJQ5eXkLX1MJm5}pb83kiQ=%yQdbNce8R zMDdBm5k4gBLG2d+;lkft-UrG2YW1-vrO2Uf(AD8fP zW3k&lF5yQ2*Gjn7Sn9TGCA7go&l(@O?Xwa-1o#&T|6+XV zwttcEVZgsi_*dhI+x}I;M*;sP;opp7Zu>V09|!!qgnu`_cH6&8_ypj8NcbPdcW(P1 z5A{;SBPPmk}%B>5T+u+K)58~G9y5^6j2|9TM}4y5(E}m6yw?`5FwHX zF{43*D54RFP)UTEjX{JeqA7?lNrag(Ai@;U0z|kZ!p&F^;fja@5g~~PGaf{QB3gr} zCy9Dy8xZvr(H2B~Nz^wJLDW}7dk~S5h%}QxL@J^Khz62qU?ziTpokO@@SM^OWSLz+ zSc>QhB1#fbW_J)#is%WVp(Glby+JfoL>~~*l881_K}0Je4a6mqxWr5cfmK*V>1Kdv zB#B1m01()ZLJ$K%*pjf#ED*LLvOzSKL}N1tL}Nt^0ntPfP0U;nO%yR4L{mvLHAjGG zs)&&wnn|LWISNEGMT`a!BZ(L@4@8V2#(-!piRNY@h~|nY0?|SeEzDvNEfg^hL`zAu zG)qBX^8}H>G7zznh&3xf#45rE;!;UmYF2^3W(Y!K5{NiS#F>*p#3^Dbh|45#nK=!_ zWr~;%B3=^l<_r+=ikJzal_Xl3vp}>`#N8lTOQN+o8w7SH5Q)zLak(TeH|K)5ToLm? zw2?#`b3TYRidX<5K@th(LJ-(kKt#0&L|aL;H5Y?utB6NHTp@`o%%vc%P{cA2iIPY( zmxD-D#0n7YB+<@X38I}MR)J_QiT37GAlfTpHHa%EaizHi1lIExR;>k*B#9(*9f%}F ztOs$GB(5?yfWQL$LSrL{4wC3#ZUTXI_64yypwZFX0s<@Q3u0?PBiY;r0*m4cVmpYA zGOAAI4iKFbu@gkHBvQ=XAW{^u2Sg`HbT;>bz+(9#s(m0*B+xj2#+MXnV*8diuNLn!yvj!qPuwnM0Z6T1<_3sJWx#y(Dq9c?JX)sTUe& zLG+eHAM;lbeH8IKh^r-Wjd>0P7M>Rx=Rx$51lCmzHEjGBgbQm^Un7aWW(Wu@&n<{B z5UG+#Gb2D?Lj*z82hmp&{mcd+uoAZ*q5?#^84Ut!YYU@q0s?ErX;e=WDr=KS`b*)*BU5^L1q^aSO8rRT|rzYiEOhw z2rN)7h@K#_Br(|R4Pvk&`hXZDi5xQ(M2;fTKx9kedNUow^@_*5Jif31Vo`E#+pk(j8()k5MD_X zo6A8ID`EwRB1x2(D?yYfVikz7k{D+`1!9~cR)<=tqOUaGTmyK#g4c$s$3dm$I>4n0 zULUHSrA;t50G^=Wjas_Q+yuBx!J9+X^Ph5a3*d4EZw*y`^9pkt;0gtA*U}Ts9e^h) zcqc4Zo-&`g8-!00dqS0`z0%wZxKhFULX~5?%G?jQO2G#Zjq>zVo9~0DR>VONYQ#Uu z{0PJ(MH~vnQ)%`hZ#6#!e5-;F>%2}jj{u&m;G>}pgzyye7|^6cGhN4J)u3A&6OuXaqvJG;2(3&0*IlqA3W~=-zF{fVf)`EkLMC>mD-}#660L z1EKEav(0!AvlY=gpmDF+2E@IJXbVC;(3oQ;f|#R-_8?TPy3b4kai1bOghjg7Vlu|R zvdsKR)FpmmPhim2*lg|!Um4xRmCTvI_(XPJXGA3(`Oon`}+tesdhHF)rI?#*x8_Yk37NSUz~e6H#S(xFvfm{x%WVvD<^a^b}2{> zufqSN@M-wpMg7O}`;DN&5z0I1)?yvHC?~Vrda# zn2NaX(vipbN{M)_Srdvo^jVwFI0ZBtOB%>EJSw^JtI+H7`1t}(qm@&P#XQPjDE%9Edmke`NqALlEWlryeFe3CL&Bbm%TJtyvjoq z8kL-l&S*KEapsNRi`S2_93fvOC@Cnxj9{*eMFD)obke5nuj8~z$RPTQ%d~%Y?xUP4 zDwj}E?<@pXFMvgU7Tv#c zI;SX$*RUNl^LnV!i0e7`67R{$WlR)LZuRJ|*HBNKFQ*=+eXpAJaTzx|)aioOuZnY~ zaitb#JYx#Jc#mnY967s`<$^cqedHFcT0EIkR|n=#${$+bE2$8x5W{Yyk@mogwOsm7 z>kal{ktVF_%Qz}^B;Z-*jTSuqFmD)u`;Hy!^N!_98vU>~S7ADKPLuJ)6@Pn#@!_@j z%91gqQ)na4Z~Bz7d@N=wC*w0dq}}J$OLE0D`8u*vh%b9X5TB55y0N++A6@pMSow0o zm=eCB$EI*X8||ygbAks6z{|K0|@H0T{BS6U9p^erpoy8=Rr=^i-Sy^7UCoob~m^;>-S zfrr(SdEx4%)i`5*0pKj+>9g8>8;9Rm{c=Kn8A`2m3Ko&c)LZ@Lmuh>kvgN_p``_m7 zQ-S3c#l^+t{Je!&@}vM&qJL#UzTW$c@sGP}au@MtoqrX_%*xC%IR_f=Ov(ET;*9QZ z{+lz9IqBFx1DW%T{WFj`wb(xcne%`BGmtrX);|L|6#+d1S@hBabCAVTkiaZt1UdOx z&qGF#iR+oj2r@-I7a2jOsb?c2$W--wWCWS6o{?-?#tg#%pl2lmFiZk^W-(}W0?TPDS=tb1Po69)-#s{z*5k&mj%Fb z&@-3?z>?6jm<7PH&@-6@5D&mVo0(I>^z3HD!0hPx%?Q#mJ;Rw}u7733H3TCqe#V~_Bd*l&m1Qdh@PB!@ zg*5AS-{564u6B0c`s?mny1)DOfwTLzklnZWw7w}+&4n*q=E}pK0qEEyhojfjIHJ4k zt@Xx!0tlsJs{(d_Rm;USlYF4*eoJ0?5JWbdjCI&%AY zC~kO+VOAo{LI&DI zq=t;p+ZHU>-88OD9n!7`Z}S_kslYHFw^Ff4BT5k1?_=jzvPn|!6^f=}dffS$>@E4< zC&X`lgnW<7*RZM3?-3F^Sb5*m#Ps`v#CF~gy_{*uo|Dv_Q@Exz<@AD%ArA_(7IfbH zBt`iyOG$wgjau>IAR($25@VDncb$fhn(s$rokbjpMeVuaLz=JN?Z#fbBFgjazj_jN z2#qTK;X~1$R+nekC&iM10t>m<6Y^LOHc=f8j;v(UC~o??aHs`t>i11nv-y&oT+Ns2 zA}oO=0Ea;xsEpTRqm;B;Xry&)UF`P|RxLL-OfXwe-@zU97f;^jUp!BsHW zC!)aO17bx5XRmJF+&iA(^%IcAYKIO%Hqk}jB)`NSq+iCt0~XEr@h7tH<4a~DAk7dr+3`pKm;jY55oC(=TZ{*|TLP!nAzf4-bG5$~Vlzr5qR1YK2;SkM{e(4F#5!+V%+7p6o zSsfh?rs(K!Fil5?gQ+??986btIM5KzFbn{WE{E)4IJ+F8?RR!Lgmum?hp^At=#!2hN01Cy?^-RN*w)W_Lvz|KHD?{DG*DzEXzLMK87KYE|AuIeT9*Xq=Z7{kLA#mBtkMxNo z>Bg3=CL3Ga0PeoL&tL|JR-*~SE9HesgExQ!~k7er2_f3rGk}%Iq0a{}{(hei@$^>ltYY#KRlU*!R-dm?@b-`IY1S`l};4Z|04Q zcivL(WQ^$8`V_$-AVh>6)1O}b7tvsF_iqd&tBUK$!2XldAGuyP_|&fWH%CUSzW$LB zuMq#OiZ3bt_qQr54`TX8^{@7fvrwh^IT9+WcH{7s1#M(8T;O=r4<_nXMLhL2u5nhy zLRA%KAtG57pSx&P%pt%3IcHT=HBuc^jZ`7g^Ggli#QHf|ZWB6yb(fotZs4H`HBwf^ zWL*{M2T=XKqZ#usrvmLwbyYbIq76zp^P}+EWtEp#XzW1bl&4uO1ry@|3J!teU3>+AIo|&$(w4bbSA2_51TzgE`vsS3lNL ze@n?)s#{8n_i$bP@NhUVEdMv|w4K9bbv#~ARL7X`m4%5c9DH>3yYMLay44bM4vbW1 zwVbP}#?m3Ke8_Won@pGc>T-KjRJ>d{sv4nv z-~j0npN#*>95Ka5WJS*BVL;>z9=gN19s?IUqC(}RV_8<)bX{%f3S)g}{o8G;c^ey6 z=93O6eH%pm+jzwb&vPJv0fSF?k|DqG(`73tkNvXB3W~*YcnHb3+CKgHT-Ght^#CKe z1x;=q$vWv+6M|~OhE-EO`ksBbTx=u&_m%WqDsIlUV`9M;u_1(m6!kpLp3O0XT(B>A zk*7VEJuWs%5R0!4s^*Xf`+p-nS)5OeZbm z^v$&0zm`TJwPaie=KN)Y7*rMKW7%Vgtw?TcvfOkmjAQFNgL<=U99du##4k*)ebU>M+qXWt- zRChqdi}tW$?RT(flzmQlygpzT3d;AS2Bo@4m42bA7KoWt6k`GZ2{h{*Upl z;!t=i=oS&J%52krTqk=$dwIwW7fp}Y{+hdf!!towgi;An30$Q2!+N~_pCA8&?Zc4r za^a`vSZwRZ&uyfqTrCEM<>E0I8;3=v{goFaK9ud*>46f;Vx*1%BA1r`6IrC?^Zf7x z>$!HzvrdofxnK~lTYuDQ?J>3`DbG~j%HreL&CjP}D*%kOC!wcB`+N31(vnVvtdcQ8 zlX|XQZ$8d82-wBcgxxE?x%x@k&32aix`_q3{BbKI!2i45r9W@4{*9$9{?+bM7gR=m zN-p`gyGxkBX7qE`-2|6vnB2JS$%g4cXXQOZhu91s+i2p;@KJ6 z!9yvxUT2ktH;>P35u(FSG%{UeLzONc)}~9pUzR?=e-|GyN;>?q(WU?+zYHsSpT-zRyydMwccZJVT@nMC1Y6@FJAga4)$k>g6I9#5oGNhtDwy z&%L1+8^OI+amZro^lu`Rh|$w`1hFAJI;-&!Ys52ds_ZtK#79?zup6v<0G6q{0DXb6 z=ZdRt#q62$Sz+`uP5InPFDQ#D0h!;&zqEt{C&z=WfB;?EngSu3Pw& zFfyxNo|D2hQLM*CY1}_DzU_2|ZK8isS^VaQ+~Iobr>pi73teGxGf4?9Zd>VL*;dPq zM>R{muHSz>jNI`2(rPc9JlF|EXp%d7h38%IR9io9QhdnU9@1qGy>y7Tv!J!u5vKXe z=B~g5EyIxeJD}Vi^MpL%33*y5E_(ge4`{1ny*-2=bf=&P##e}J@>bZF>*5MhX7k`Z zNyRi*y03)Mf@PX*_jVi0BGWpwF)C$Q1(QMnSCv;GLLn{VDk?fWiQN<#7dvf|WL$e* ze))2q82#{F6xHfSGZ|Mdx^k7`IjNKnxuh5A^Gl{RXK~0vl9AH%ko=yEabChFm=urH zROu5tdphb(rlRWwv5`aF`OJmR8?hGcKi^JWmIw|;NdF$;4~BGMK@u{atw|eF7?0x$36f$wbK2R$Q|+I}p(}xW zb}aIma_7t4qY#h0Bmz-TKQ4C42&UoKq9h;yoHAkGJr_e6$5ti5GAOf+m;U?=%Tqdu z%dy9>G=TamI!8Uno&qb;#m*^ZmTkMVHOs?)>FEf7@x$|Suvg2Wtmon~bMWMvj$QB& zM;J2ua*b21cQW$BCCtCPGT=MUDlgzx%pp&RTk5h!AN|4VqN@_7OE@=c5lOFoD102R zeo-X?v5Trb{FY%?aC(HgnyV{>yGl8@VUOMjkvmO>S&yB$+%KD6?#0B8Dr^HMm$(+I z@j5hQw%ab+QOc}|v=NzhZ?V{>Cp|K`F}N&D+fX}Ophg8&zm2wBb%!nghpU8fNa6QH zaX{hsL~%IbAGL4@qem@bz#ka12*%No;-P)Ob%(NbOP9&h0BQvePza%8|l4PbeTUxA_B|{vW zgoIw249n2SNcHk$h;*HZR4-9R6Z8sYul7B6;3W)pHGJ604y_T729SKijQhGfz!>Wi8v-49?@9b1HW#81}{C{PbzY0Sf ze*V@*40ZCtS56AS_=BGdU2ws}`~RnS*jv}#fLDc#bmtK4Yc&F!3qp>-ru5EZPWg#* zmtq7qg+F)WYo1!w+Eo}T23g7B7z=P>Y4Aae%JMiWqi+x#AEE5#VMOF|7sdkX%*b^- zZWHquVk7c6%ajvkXK;it-;7+$BPO3N+ClIrG5!EYV=*S8$2eAnx?ozn^4Zp`YZilTmKI zZ>+b9?ReaCMZ4L?i>*;J#pFB8W<^PZ+uUze3gZ-%ho=#OwXbaTbPgAa{tGP|Amf!!Cj?C`@+(b9&_Z&zh@2` z>a`7jxmx#0MSsr!upf!w!#?t)8P84P#5+}JKn>#E)_q`1~UUt?*m*5GqyqJ9L6ngiXKqZhnT<;X>KMAYtb5?hZYkV{hX^ z8#2piCuI&DeDOi{1+(!45dE<73b?fVeL~=rN&E8NtJxO}c%Ul><@?459vGsm4qf%v zRxB%jUf7S8+k*PNQJ_V9Cp$h9!cG!oFD`?!IXZF1Qg+Pz@s;LRic-H|zv@axE6Vfy zn2#=J9nm_XUg}zvDK^rnVp_N zV`(qSMJ_d6=i*~s8yI`rC=Lm;@~2L5P7saW|DXOIN|EiLbCSe=-`_Lhq4Gc5-&^-n z0wdM^y?^5o*e7Uj`B~FJw7W^+D@%$6@ITbNQR`a9dhDcU88g#c88_?xpq z3^nPKG@)h~KeNqT`b%p(E|ag1%wm(+JA4KY-Sq)r48Y0wpG*vM5T!5D|NaOXR65WW zvLVcp9=}{V1>-Rz5nMdD$!PSF=^AVUC!!2YL(31hrvghE z5Yq&c;hh7;iHhp5k`3Z0`X=FxWb9}jdFYO(d=P02Ntl6og^|bvW<(-o`XnJipCnrM z*odmgPZ`3CDu^smMn;1mLx1Od#yNoQ%UF5flR#t?oTx4v6Cv@J$?eRA)%d_{-nbCpF|+of2iC#m?}-jPZyiG$>;i-k@ntwXeAa& zfY${Z4B{Y?&+aioY&h!QM3@9VjDPwk_YbE$ce>M9)a(qr*UeTAvq^A-e=+>~a7wRw z=h!!7#CD@N(wga!x18hvU-*>NHlqlN*cUXvGLiCPD_3HW-@LV3Ulx?W^md<$J6vz# zo1)*PpU%?Jp}5tr9DA7Q)R`vQGeGR>_dY1@Y$h5_m zgY}{rC$>K-8_Uf_aX^^dkTp+?XB(wwKy<=ye#rIdv!siYOOce|MmBd{MqBXK%3z<` zc1Gx-{0=w#=`Nm4mNp$BEYmrAkH0FPPGMUrOI18qcIklT&pH$N=1jhB7?G2O;8{j8GlObj1# zN7LW`f}FP7$sPRh+7HOdt)+wYq7E;Z%KGBJu#_UpFy-b&KZq+wTv+49%QlmWUmMSJ zqpukqn~hJXG1v&>IWr9xQr^CIsnW0?oa$gxKdWuU*-dqQl#hWDk$ zm6w!NrQAx^*J@)7z6%)MeuM3fo!jK@esZGFqQPiF2B z+p@5Gr5)jjPWHjh#NEQ4lpKPf8;0uQyf$e6>J2}MI^&da=96hOx^1$D<>i#oX|#_0 zqMT_2Y-1)W`M!}zkNS%aeR~t@k$lu4dU`ZhRI_Gt>q0xXPF5ZT&rzAnfUEx4jI|^&*uj4L8qH}K0E1fp}e2Ue2JIr zR9e5!yy{8z*Wsr1pITAhm=HeE`4>1?|9?3z1anH*SJg8^5KKi-&kccJYld)@Ii@Dd zPPTJuvgl+xd)>mR>h!V-@0rufDx9j$Ubpa`IlZi@2JCQpS!WP%dRc{2HOR|K*Rt+) z(I#q+btaNH?FRM^tX=qQY09YP>;%imDQtfMnW0regXiuwYEq_J~NCLjr z<>a-mRrztXrxn3gU;}>E8E*;gfS>hK31~knR*OI2rn^4iY@KBooG+@KtzyNnz|Id? zwu$-Ij#jKw#{$!CRxFdo$h4CcH6aN*JgtVYgIjcHPb(umM?m{p zP0O6oi;)Jrt#HxP{TlGL-m+hmr1rML<=pEWXP;}2D}X~G{L|V{}5`vIRy#((nA&7XP5xld6Amo}n!MjVCmOHh* zj4F7C2@FdA6-V%K3`F_4Elmtai^Eq=juj)n|DgeC(vklihcdEMcOZ-vp^OaYK=^k3 zGTsK1f%FX5>yyXQ;3v+#hU4I;_#3O2VJ(G++63n2V7SF~6qfQJ7E9nE0CL(gMuh&C z@zl}@xpD=CT5W+N>@NKlGSgwyy%xF2%REJ{>VVVt6Nk%FNCNuax zkJC6cCJ94TM9wiP;z`2v7ud{K0Kp}LJHi8e*dUWZ>Ik5c43$rLm}QFDFw!->NxP<# zP`q$WhdkRW(A#aG}cJQS_>f!u`4+LWx)|m-XmTs&yqdz?2s7(&2Vd$R%`tY}eh#~3 z^M0(?R=H5ctN%fLI;M**SJy+mFLSzNWwrjt5=XuqbtQX!HL{2OK}lQ~T%VA7gh`c9H#4g8Wvn zymsC@yOVI~(;cja7)4lLgWUA;w>OX*;+5}jk%YH7owwbw)lH;k($C?VL8U7db zR{v~V!$$%BZYye(|NH`{ZPVX-KZ-K43~7>nwE!SKOe5{fTf_7t4|HrR22M*^cE#Yu~PQ?kNj|tb9ynrlJ;#VO5up{Gu=L6Bzt`tunq)Guc1=dTO zAifqos-70{iS+{TASex64l|a1`K1NbrCd;gCX0OS>9XVjzE~;!-VWLRlkxh49MLo z^SsQ0(o*{EA9+ALs?hFz=lGIWD$8=g*5Oz2@kl0KPa0oVerp-Wy<&XeFj&PmbIFlb z(w@4q5TFd=Tih3m+fWKe{xBWW9!&zEIzfvi8ixUYLu@p{PQ!XlMbz6%FH zLez-%{^#XN)C1Acc8*~F`{xG#{XCK2mn+$cb&g)#>^wS0FX06A=ta!X*CQ9K!^&yR z&T&gTg`MLTbUlN|E$DIv#x1I=>6|Bm^UvPD9=iw$_WuK;7sC*#=+O%$L@IjxLO`UV zM=%7oG1x?WCLRu0KsDzrJ~0$!Z2DIm@uML^f>0dqqVy4}!Q(3iZ{*$pjK^AjF|uPwI=YA0pmISYQY^eArtfN z96b-w-`M&2l5g7z&L2TP>;qp?h!!lP+{c$bxu-K{7ofB(Io%W&9U^y}V$)$`uz3-^pW-{QqO`-Q#qs{{QbiGn+9- zGZ^Q?IE+I@22+TdQ7Vc;MA2skgOT&0@+o~t3OS!u3Q;Jh&MHMksmS?I<u8l5)78 z@4eUinrkopzW4Y0d))W^`{%wMkIglEKVNID{oZS@_1bH%y)XIvmlJ*1ZddGVD)!ys z6}yqC*f#%zt<`zFk-h-r8AZ5}NUQit6$f#*%a)iSl&L&!N`ILy@U4r+T2{_&}KTefVKPx+`S z93Q#!l(&+I@)#D`>V{#!^e)5$$ z5`2FOY!`3cb^GhIm+kT#Zgc#Ya8LIbKSbB1*Y?*9xF_b9&^qdtaNYRvS??|q+LlZg zl6Ak%J5o^cXu|Jd_u{TyFZ%%h7vs9pFNL1>3qQjA=wjH+*{=MdGiOb2B|G>(c-}6D zLnWW=4xtJl#gtEe1@I@}*%g47OgqiPDnQgQb38vm>>tmZ@Z;Ht)VAD6Id6$Q%5(Dc1jA{wE_FqvS|i|M~a9GtGbQz5dmHrXGK3SEXa& z@O;$%@N;s=u))3i(yq(86I*-o>oZ)_@~e; z?f>Qja8f^Yjy69A8rD(d@`rX5{P<`16Qy5CkD^bMdOyFFf9K$T!-dVIGRx<~j$Wmf zhe(N@_pvMWKmHAAS9V^U?%Wez+1s1S-V@lb?2E!Hdvz+i)N`kiY+wDeRQ9n_%VnBM zu|m~NT@U|mPJ+NG;od80_?5W2R$@8MOnQ(S((TF0t7TuCw-L^-AyqqP43rAnyiNPi zx^>liZ4mB(FmCCEtNe15tjp)drw?f_$v1sM#*}h;6>uuO%1`#R&bbnQzMX8~)+&Q5 zxm~^cjM`PO-ueHieuY}O|4AcvntC9gHy`opgS>|#)mw3GBj?ozw%Ny@_v1VFh9CbF zoyEj2Hkk^rH@pJ;Nd-tcC%NoJ${eOJ-|YE{9y+g=G0$R!+KU%9|1p!-IAfjH%Ql(5 zbj^RMtYnN-UWUuNR8o1xZJhTQ;M542GbGO#(kaTYEjHYn;;WN+`MbIdmmZVag`G4jAC!@ms7<0bnzd@|Tl<|_>jH!W>&Vhr8n@m{k434`Ze2VT19tfrRFED*>x8b! z_uph*qm%xV*wxy+=Y)*vs?Hm~%Nf*nfEOJYuGY3JJ3L4%rZRV6wEd|WGI}1GR_(D5 zW&S-tCfq2Se=IyB=)J*BA}@JgsW`8jjD{(D&7^dgjdkyCBBPng$Q9~+19aTfFW(>U zlwa>ncs4J&%^yJxCw(^Yxqhw6hNY)NbUFuE9?E00w=ds3I_zwCy4OyU7Si9Bw_Dxv zs5D+$PBYWm+&X}fc zHow8}w{0vr_XTSk4Tit%#p%yAx3_}lsbs=82+|LI;AbQ zw$WgiZ8fSEx3_}kuoY-1y98x4lP?a-N5*2{p5AG7=hLz;>caf{ALRq(g{uNn%{ zp(^}(CUId2SZ{bJ|LBIE5*21~>bDQeX{D#9|KLXm@lKuT^{ZWxvWkb#-{R-d@Y4xj z%4xt2t-g=j4-T{5O=%?AwEnzDKhqNVO%Z#^$K@#9s?kVuP zw8i0f=s5cs$YKIy?&Bd^*tcVLqzJ1M<-!__duc&JtQ+G6p=a|b?;QlU=M3s1Pp%9e z7$~84%$o1NH(riMuz3rm$J!67!L{Xks?0Vu4iLuj`jFT^K0LL z6E^Ac|9`WC?&1HHn;qV*g7E2D-mQZ08y?=Rg76z2-kkxx;Sn0<*P9;R3c0ckzwHrt zDAprn{#IbRRw^rWx|T-_V}(8*>kZ}TEf0Q8DgSmyf@Gz)Iuc}>l-}k@kSz2Thxej0 zy}jW*_pG-zn7$=f$9iLf=~Hs!L#Jl(r{tzLHTYBV(_0$+8Jw8qz35seW`*`br)Gs# zgiX%kRtyQ|PtI~uhd#@S{K;8P_Rz7c$e*0$WO^&YCTC?19R(3KIV;nV6=9RJQX?go zu*q53cSxc-IV<4`e}qlUN{tdcY+}|huax-{vm7Tzi13M79+5vWi|Q&w{=_V9ImwFr ziCIpj7rd~ES^f&0nDsv%Y(2{5r+h~9+bO*1Gn z&Di_W_Zuyean=WNI=30bs}`k`yY-3nzsLpE{k@o5(W7s#uBKU+p^S}drwo)4wA*|1 z&67t#-SfBn9~paJD?g#bXYUiCp;sMH$*&F`am{E1zrE+Q3=j7uGaB`Qj5T<_$`g~7 z?Q136gBXl>QvTe=60z;;YM~$HnJCe|+n+gR-sYa|zvHRB|Bk2o<-VT0o|S9)l1%O5 zDDl9t|3;!7{)oh|2)RTr%LFTbdYSzLJ>((JBrTNxvi0ImrV~Z^__9SAV|O6Z&WpiOD;kM#+Df@(dC`%i}#RWJbxJ(or%odgdNt)rN^1 zyxTBb5%TU!=4?wWhy*p|rv3Z##7DOn+-p!?{w8nRfL{ADJpbMGvAlt~_w|uq-4Guq zx_v!5{v3B4>L zk6N$QC@+SQJo-MG+s7`^x_``BMTlT$n+m_TDd&@Cv+1KB9CA?!c|J5?0 zyF0fRK2I;E{dy4l;u{5IoBz_4;I@x`{p)tABi?IX@;7;PR5wdY z^U>WK8_J-m%oE~SlCDyQ@m*JX&!e~O>#q&HoswhHGWX~Y5+CoualIaB(zojn*2zce zMz{N}6p}N)buJEA9-vbH?7g_l-bB!wCGD%AY!shd(p?*Ky6cICjtRC6J|BaH`e&^=Bov>`78{BNR`_`kF_APSTL{9J* zU%P*{OaZt%uX_*v^VYrJX=Iw%ix#rDlSbZQu!pYV0IhT}=m2^`$D z<0GA;QzM;-D$$p6tHVmchs}*WJU2Gh$-FW*_UHMr(Gi)?EQtN$jo7$|%oA_K{TT_ndKY}>ilV?TSt+ZH*@+a`@_!PDDhcL(MUy4`Ox z`}UG<*MG5wOorYRf14@(vv){ki%6Q$EZdzH>AX6N;uo9PMVfK>e6S*R_B*`O zHq(jRN~pYb@{hZwgj;M1KUrPStA7$hejV7^Zc@!pbR!AYT129aCicok2;?k(KlYQA zv566xhgQap`dIemt&d}mt&&Jg_%wF=YWZ?vb?nIXu|*>?7p#w6_N_46zKuQnoot%E zA$G(@S@Z73*pI%KFFU@EeQS$+abg$8E}jz}uH~P{4qqReD4WQcg10I>S*uGe{+5zI zMxl0?l8?zRdKZdan`av&9x{|Bp9|Y#$L)zN5|O!VPwdiTvJXz7G4n|Fa*4@PJG)K+ zryi6f%8&UvJ58d`=&mb+WSw%{_?AQ zabkZP#w#1EkhnA!HK8SOeyrEo6-?Z3UnY@sjgP6bOQMj-;i+sSJ;(Nh@1Jr?6?o-#1(Ne_sxkrG+(}qUJ&>E^0>&z%mvHiPQ4vR z?RnvyxHsOFFKge8d+Uq1!fxi;FXD!+jpN8nT^qN4T^yB<8aBsybMfNEz|AIyU*hmej#6+Lc_oIx5>Zm?1E;G>hPEB(KL#>&+JirNpnoRZlVu6bcMxj zQPeHwhoO=YEk)%0HV}Us$>e6)b$^O<_8&p8B7UmGIm&TEHIY|$JP_=DkrjwgfoW0B6T&c%JM)JL@dqcxa~__X6hCZQeCdeH#na;7dMCb2q0Alc z#2@%DUe3%|4%0&C&8v&YERLu$xx1X1^11Y4{G{2E$Vao|-=7~J8IgH%e*B0f@nrq+ zlK7)b<0;I9W$_E&kxe9W#Xr`LJ1v!6m(x(ssrT5W!+HQy!w=vK?D!w$I0}m@y2Z5O zOP3%K+l1^VBlDYvC>?J|2k|@maZR%M?tQ|>8!ECQV(gi8PSg3ksomW)C(2EYONxD# z8_c|f!{J`GD~3Tn|J3Q%Zqr#db?*0|{1^IAAkUrmj7#4v9ZBaQgL3a1z^H?~X9%Ou z>#V%Hmf50MbM-c-nfL7~pF477U1a$v`On$dI?9>ubtqns*n-vdSrxH7`cl%uEV7ZD ze%cT}d7~VFw>HM_-zed}urYq&_wr@W=J>-~Wz*HI@k_SJnoHZ_-`y^2mhFt6zf0D9 zuq%G|Zdr3=cl{q&V91!qa*Pj9Fhje5g!|wdFDj?jNfI=2fxQJ z|4ZPVf5jjFTi~mI$4|K|Yu>&bzjj1I;mFJbBNDzCnLy3kJu+d}3kg(+GcP2JpCD^K znvgJNMgr+9n2~UPW0|W+=N%=iTwR}3A105H6Op0@a}y1;>1q)eDSb(qav#p@`7sq z$qfHPzSC=WHr2@a=xY3DBP2N|w!XiO$-R-kua@n+N=z>Mb+#8RQ4^_>axmmzOO@Qg zad}UyC?D$If{2_eqwd=!2kYt;Z>7^CmH)%bGs=l5eIY3=lHZ_@TwgRYEi&=zlnYax zbzT2(UM|@6V&vCxf4&@-a^Z@zF87Z=-MBxO`sp|mNq>HhSWHRYP0IAvPx6W*mgyc& zkL_$~C1vAN!d=iL{;BYjYr+Fj&QTVZw*eNLijCjD3hKih)sz_INRWJJuE>=j3G+BN5xjaLF~ zD|mW&3#V2($8CH7=zD^%O)$9J(~+G`06!7Hz0TuX;J617#JFxTzdUl|OB9JHehDb1 zH_NU9`yb&8RGc`ubGR)o41UtaXM@&j58f$tqJ&2Tat$KsCn4~D5QD${@RR<-z@La< zR^f>_oDL^aGyK`L&}Q5lj3LwrBPf6C?+<`eh#*CPq3!tjepd-Uk3b78y^Z9@hJG< zcw@u!4QE*d7i~cm;F7%%%q}x|ns<0Bnf)yX{+Er{0i7oJsw8kZwi^5L;D6irJD_j& z0e{!fS`#WjUkcD(bk@Mu?FYZ2g8DK&wNg=B4k#uy%f1_SrSOvq8Shujl)fUk_oN+v z`)3OHKF~Y*gO4ugxn-%%Rg9n#0`Cdfa6xzA?57Z%Ej?v=AUc)79T`O96H5Pa(D#Re zr&R!#=x9}z_o_wM_*T$*{{bIb&EVSdq=82Ua4$Uf18)++CwqQDN{4)p|6rMW6+h4tc zuL15oEE)=-dk1|5^ALD$fkh za%*&MKoJvAOlg)q9(LVG`2La8W_Z!j@Ye+An%4XH2Nyi`xhSXU81R}^rb)xYH%HU2 zg#bq#6g&+4`U_xfqoz&tilcS;M(}tW{{-~q3E)RkExa~39x0gmO3-r?!IxA9m%?c2 z)4>x1xEG#MlcJo5rvjd*SNF@Kb-xaZ!T|-tGs9s^&46DS&rq6VpbdXraPP@&O5}$J zygq35Ot2#n(=|NuvVN(Y^$;XqlRj{%SqR!jPoLzapK9<7@FF(e1oXR?z+0q&%LS6! z{hPpx+W4=aakIg5ii1nluV_-g8N65k_rh~MaIOg6i&oR4<2m(Fqy!Y0p2e`kU!k>S z{I2Sn(O=0pU)Q`GZ@3&66pfdY)=GB20s7*$eoNCh$GwxKZ2@DN^s1*JcnKTN0G%Ru zR)vshk_!<@{}u!#ZNae3an9*22vVwIYa{?#SsQ_uvhn1tan4sP?&y*R*LXDs_hylj zn}4*~`(vOlZcVB;NIA4g~Igj!SK>EG`$1(P+ zgh}Z(QYvdwGWHa=)1O2pv$)4Y?n@ilECl5OS;H@a-5~seB-~eco7@Dvyp7+oBhKl` z;@H^9m)fa2z*B9!((X9t<{!XEmI9XnEj0{H!M&FR zvip9VDScB)V(;b0luE!Kyeq)2>NbN!*dr3Z|ZI+1Kd|T z*qHtBy$hQ$Tg~8Z@G5}}z^j8kcmVuhdCz@uzBqc8H$#wS3x)uv9YT<i&cTj70zagT86s4J(GvVR8=nojL-0vap;1t|DJEy>eF(0%1t)+z97T{5V;oXZ zgY$&2bAyfd1KlL}>_~&_!IkGEYufm6(Da|d*HkpP4#>9#uNA<(@Z1GFOaw8~8{!lz{FrTA<_6RJ-XT8jcmLk z=re-HRQLRsob6iMau77O1+#%$@skd2sWLbuDUKdr{%~%!@kc@5iUm&>|0R`8FKxPj z-)7_MK&!`te`wKNp}i*-H1_^*?QO#To7s8k5scN+eP0_58zwf|mHn^CD5OKYE9 zDqqGgtNqC``Lc6a?d8km%bMl2&#kDP6yan}e!KR*kMV<<=RU5zezSbJy1DibJ8LsA zb!KPn%e!UGYd_Q;zem=*zo+&Od*#dTduy*g#@U#;<5=wjXKG_rGDn@QefEl^J>hEY zkxSC~vUo}Q+7IQ+p%2qXeT<3BT=H@H&!5Vd=RQkcvQEByyDokCdik<-efrAH0`J(I zetx^G8M!0W6FS2KXOznbyZyo@4F=J)e5uFjV=uPn%z_<9DJ zu6sRW;~Tid%wun49AB8>?a!i&1&d|X>ctt`-;^)s-pqJ^iG10(BxBA;9<=JCj8m&* z)%Z^{HmsH}XI5vdStDPLuE{v|m8AX5*BKWN$eQT~Go~GpY!@HNSaO1sJM;4s84G_A z=Hp*7=AD!;@14xpc+yMfWX8->^5xA_8S8!(c+amH<4+5-=yb+G@5|NG8B5N{nssL~ zj(cB5oy}NrR@QuXHsh7wy-mMoJabOIIEmkLJ$m&jL+pG;#m;d?UFQr7A0MRdgnuG> zOnc&Ev*L{x>%KO-E~%`ZU3c#$`Eqqr-OqN)mmhc5-L)SBpLt<_-D8L3%jm;(Py8yI zMxL&_=z<)J^%v?c_*2$={%74y&tl#)&plgj#5?k3@jLa#uC2$WC2Q-A-5_f|*-&rJ zR{8S9)_UiT$d?I6>+LxqU!M7;-i~n+lt0F0T%90a=1k1^a*}*GG%4e`Dc*iYF24G! z?BblTopB44kxP_FJhb+2xtuOp<{XS~8xcNSS&FmjRu&#cY#rs9V>#EgpWcA5N#NwA zTfZOtBNjKSx-s8!Lsoj}jo{wv75LkCVc`2gD?Y`!%cQ4Izc}N)&1mqTZs|8Q?bC&U z->iYWQI*@lyjQnZXMVHW+Y^(nHsIfr?j6BmxVx)lcOcd0S(+JKq%uIe3B0xJJD*T7 zzK|jerPLXb2G>iz&EQRgsW;0mH$A}_z~Zi~YH+=P+X8;4jn4utFavx;l)<$(*$RG_ zjSrfY;M9Bxd~JkYFR2mS27h;e_xgt>(0xVG!XMa_23(KQb|lRL5_VWnqJHhX<@m8R(3O*#x;MWsusRO&f@3rv{KyznK68ax3=+apuY>=R#KNk zt3yHi!Q0q)!rTOB!#waB7){^kYj1l1-ur2lP}TRsa~eA1H54_=hpe?8--Afn2C~3j zv;iI~f{U&-_;?81d%Jrm2k?2IYXmP<)!;f>!+m1s!SK}m4n1dnf)n>9XJk_JrO<7n z6&r6Fy#r^*d=3(4j4gq)V_IPJBRb!gn=%c=bu**UWmbxTh+I z?6IEUzoW?w)G}-NruvU9}p# zMv}qxQt1!y9yY!MwD=d`2a6kAE9V99JR7eGI!f?X4A%LDSEKMJe9r*yRi9U&Q@%v8 zyQ()lDf_FZ%S9xQ1|*DhGz5Ns9fDE?%>bev;J?6o8QdHJ`0cQ@zk*+q0x!vH^e@5p zwv%rMx?J$Qq6XK_`7*foL^rk7@A^r7H|X0;40dOgHKoz$UjgrHQXdvp9N>EE5mYRo z-E$>V{Uf6I0qj6|ya+u4{fQ`6=8rIH8y<M?63xE%@@!vsj{1$vgIfH9+RSJ`i-5;7ep2QNp8m9QeO&`~qnGjo_;k*JBkA{-ljR0=ic4p-DQ5 zsMRw8{;2@(g=ZghsqazDDi?AudI~2Z85)q_Ug`k%7D0_PV;B@K4F0r@j{;pQ_{)aY zYxyMT|Jd|l$jY0bx9hl|wm!+=!)&|}=zhV^Mp|Vl0zTZv&x8KF89cAN4kBt(QWX9f z!-u!dQOtfVz?@LGX7P}F(dIS<&4@rA*pZ6Bu{#iSNW+eZeN?;Awji99P3p%bYJVRcegEwM9hm zC2)^@2pUHkhoXXt2wt$$e;V|F;O7e)T#s=j@Ub=?y+6U}#^RnTW^lcFsti8P#z%r4 z5qw4HPOe6%3jFv0?*%C8K!Vem#T{KXpX z1wF>JM7M1TgKPM!flspW0*8nui+j1W!L>E74nEn&CxIRpylsrZwg0LCKE=l44ktLz zvbaMEi~o_zpw07j@KXc47oJz4OEc-u?VS>`KiWiGk7Qavg8iuvyw(#Gunfu#;L~mV zSI{QRd~$P&TK1GA_mvWmI3~%jV}WI>^S)5 zkoVE9_a^u`0p1JGKIld#P^_&Qy1S}J;ASLq0}{MXSK#d;XclMehF%@l2cKu-e}dlj zi|l~hU6tyf)}aCTYc}2$H0>1l@B#+c@;3yZZ{y8DU;P!lLnRBp1$=>xe+OFaH26^3 z9=|j&8gl2uScgn}CzfAlP2oxD$=$t>6o7{6^4) zf-j1<@Y}!_+4x4#mS@3N$;gdFQ_V>x_+lG>8nhns$lT;A2EWnlZWj2PHr@ktm*9hG zd;H|<8omkqTLIn+PXcq!y0W;_DuujHJtMgt$&!Es@ADM!8s?I@9ZDF#p{>Im;7e`% zC}{mZz*of>T&sgTHMGpe9|VoR0G?jl;2Qip!I#^3Drif=V-gLn4Z~gFD{QaX55FAM|Rzt1f{oo(j_!Q8H ztKbW&7(CU~%~s$a+juF^|2TVhRW*ZaRqg=(g^fQ5 z+AkV>R+Rdl%I07(tJe84zbB&UXak4E%iBx?f_e9w=-JqjTh?OH~rBltQS ze+IOA4EWwk2G{HAPT*hJcvH}CJ-mX!wWodr{A(LO0opm1)KA42T$`$Yfv>mm=Rxm{ z18>IEV&C^@OPCG+O@Q~pGXOd<9z|N&knhpXA_vL00SUgR9`MT|s945W4aK=ia=x?i zuR(JYz*otvG-*uqCPEkR4K_Xr^sPkj{v|BDEBHnm-w8UPu%uqd;9B!@!N0fh*`Q^M zfM4e1@=K$9H~38f-V0A#=yRf&T`}Z)>YED3L}h1lK!WcnS2WRiiN&p{Mn-*n5AZEE z{uOBDV&J(^#+hh%nAYrUwec*__~PL26*ahC;q(OGX5-g`P7r*(4iRbXc@%uRjV}gG zF9F`0F?rwj=oJFfl${*`-V09~=;fklTO>5*qt_w5k?age@I5<#A1Q}mRwc`sFtOR$ zW#dCYzZZO5IfH9~`hxGa@n1pvR{(#{9>nPf{)3HA0DUeMJS)YduF>od{-ce*40=lN z*_GAz=oRk(_&ovM3r}>#MCaE^C>E6n`5tW@1|r!Tkl=d~DknOlS=`MLmNOXyzR$+r z0KGL0yln+=83WNB7!1DO#@m9vDtNhKCUtFV9|J#N;~#*Y6?~{X7a*suw&ah4AGGnf zs)^1L7I#u;=9up56Yz%uyceEL&~2)rI2axBJ?b5XAUPb6;CuQ5?+`&f<1}=4{|)_< zO`n2Hs}5aCr{e4GJ_&xr#%}{1E%=Zqle!k4N$bv08-EqFUJdY-)eNqcVJP^|Hr@vG zE5QpeARip@c^dv$fcK(v0=mt0C{`2?*&dA!)7G8i0SUIJC-Bv}2&U7t>YldKn8WRoASnxk= z{8rFX&B1F#8)KrTY8?0l8_xiJOYp(v46fxL5B{f(Zv(ya9`Kcg4X&dH6TmOpcz4jF zf+ujZ+_ybyX(z(}72v(_T!vn7FN(DVLbgY1&m<&&2PD{@FM;c|Ku|NnI1TMeCxc(I z@n)cJ3f?rq;OhFPfM2%p&p@lS1kY02qtWCU1Lum3-wOJe;Kw6P>RR?`;8$&Y9OzoX z&vL=;+aBeo!+Up$`LBdLHtRpdzX$rh`%t9i5BI2q#~7Rlxv?CQV0*HGhlyZxyfG#^ zt9K@Nq>ax6{Y>z|#SE@p%PjCH8$SY?(hB@w5rgZw_#(J#<8?q^6MRyd!PR5G1YW?# ze*~S{20VkN*|$A)u{Pcu^gF@VCz86j2Cd3-!Q*WF z7tliwgO_3^LXe*aA8+{Zn>n9%Omr4^Lb4{&^F86tWImdNKpyy>^}y90L6B*DjFxBt zbYd_E@Ft)a19EHK2#N*@;?>LRa}%98EN*V9XQ(9ZdOh(Wl41b~hUy#O#@!Iq z)Z12iLwhB7ij8*wt=S#?d;WH96kbZB9_bVK5_a;H zKz|UtluSqxTwB3a;3aMRH0a%V;AnNFt6eIl!_A+B$OSBG2 zs*#u@jH&7eJ@_dUH7Xh(qx{$K6|dnZz&0K#ITVAJ0BOti4Sc0Qkx0H1==*|CQdgy? z;!SF`b_K>vIee74?m(-UkHcy$|38JXw| zXK`!l93t(7HiOr&@j0M{p93$TBU{?cZUMi}#;by^5qvLCbNJ5(s0Y{ze|>=W!gB!n ztLIU~6b`v6&0-sp8v+ts)nVX0qY*T#jFFM*p!>TWyrzx+4f^;P@CX@9lJ-Ya-vM6B z#>azJcmaG-Im;&P1i#V7Zvy?7;Cpp~lJ4#<@Y**19O(OFC3S`({nBXjyc<3}zBb^$*isS}XkswxAI5y8-8V`Q{`{s>;z##e$SP5>V+uYr(g)-rW- z4|qKrzXf!P;N#>bn&5huYcF_)jeiE3%3X1Hw9IA_T)UQi;5XU$-JmNbgKuD*f3kP5 z)Wh$Gzd68r;rRx-#S|3HQao2BS*VdYfTVu7#Ghi?AH4o_`rcyEm%0cmp96~;zVv3p z$jHoPZ#I1Yt%l6ScM8p6z1yj(@jI3IOHSE?q}srwI>Iz+xV1KY=}|ofe@lS(_Ovzhx1y-wKP1RojY5wt9!JtBAi)Wo z1x|k%!AhO3qdA-aZ*1e)g3e}XT;4bstq8w>-)iI6gT5+wZV`iPMLr3Bn~i@7debZ5 z6;lnaUFa$BOdIb2`n}+@s0jWzlJ*h5!e<3|FFfai3&XyaTfmeKo=h<|9_2akJ8iu9Jcd44+y(e+e`H99wa&xe72v)2EQKETHC-K#6pD?M zk319c2Y4H4v-tQIb2ylVfV;n!(xiBnN2;@4Y+XQbcOZQP=Yf}RMzA8zco=Py{{(Ml z<2yj>Gp_Akj5Y&3S~V|%H@ES2puY*eMl6pED(cSu1%8i>->@~&+05dW(qW_q?3^5_ zzrpXd@e`muw}Hn{*ZkzQ1-S&@BEWmGoCJMR6iX_GhLN=PUq;e0AiH7Lf_KuJZ5p1d;P>13Nzlw4;A`WIgV9El!{)TI@y?(h3f?x>;98gn z@YXhd0CdPsDNN|@nI<0z-zLC&;dvSQh$s#g4hSicT`pV^t9RL4%uifzqsot^Ol?vt(-= zsStd7JNbJ+PYeEDygDA;*%qAS1~&&7KIteo09o8l6%4P@FACrJ8va$-`+kN`(AP4k=ShL@Vi%_$ z=r@AT(z|)7ruiuj-qpsBfwnyc-hrmvA4$^Itpt2-fcFCQIP?ioM8t+hlJpcViKJUV zg4u{a&I$Pof*}>m(2(M#z`NVHdot0vhs9kb4`oSntMM!i-owVbgI+leUM|hx+V+3Iq=y<4W40+Zz^~n8{Z82 z)p_t!GVUaW(co7E?`z}dL7%t)o+qz%kc(-(r%?&KpN%g9UCU6o+bU6vk|eK%uMFQm zzBu@k+IG;4&;hvzN@g`dPuLmDu;|oBe7;JP0 zmoa!{6Z;#$|83*tKwAqwPM$`SQ&ERLYJxv$TqBu~IU9gyIBE&$)p@TYq@(wGe$o=XS!e#M>r z_l+lbSI||057(JJiq`=jW~aU#bRL7C?pz(aQI}d5e7KFT04>B2sGBYWNfJ%D>mkOl z9{4jhUJmpb!PkeJkA_nod>;|uz3|M0ewG1Kw?naz^U=QdCM3@WBzTP%f#Vr6b$gdG zUPJMl!AIJ7P0$ww&r2|Ps@Z}1;Lq9k2cXw6!s;$4ZE!tX8h}4<<9C3L7rdN3E2$y) zC>vh{`n%vYit7zDH4eAHj}Gu&coG@Cy^qE1ls{iuC5@1b2}m$L1A+e%L5Eo5HS}z0 z4E}3|_g%%c=3vmbnT1gmB&;n3w}S`o_Zkv#;?SSo!SR-RSxKjbuC` za+v(>jx6fAB59bkVZEL7CI-rzgw0t*Qg7Cg${&YdchM$VnPP)rWrn|My-y`UHCfj8jX@%dE4-wi*-=94oD zJ44tWQ$l%_fOG#eiaI;%eT-uRGX(vILB1k-K7 zTHuEn<#E?kp6Cxh=(yFr;4=caSGE5Gyq8fPw{g4?XiaT_U}iwTd0&tLp1T;aaU%$i zpMiSNmhiJ|z8~xp4B5DyO5zIS*eiY?_=`3^3G{^ELv$*%Hq!TlzhvVvjP8tPaSs*? zO*ztYp%sFcZNV47pE1Vc&Q6--k3Q%Xc5Cq20o)7EA>dk>2%4rDfnFoELGVgIz^Qf* z=p?~Qc@KI^ZPS+P0r*#K{$1F3MtEG_(LBv_aGHEu@Hqz0Kb7mlmSBX(ZCuQF6g|8T z!q2sn&jQV5gvVXrTPE>9dePG!!8{|-=c3qy=fNv7%HvjaCkJ1$^e}?g0y%gQ$^?E| z1j)q_$R6tv=!jr`K)}iUBItI(7jYlU=hb&~f?r_smtdDMjO4b^+d$ehJ_7!_!SkFgJ+Lb>p7+Wfb$Sr5Q( z&}XSM{@uXevhj|fJ==p17Uv-+q;_Q8!I#+hOQ03Fu6IwlA>X6{?SWvaEvOHCUIgP} zr}~pq^bF1eUlzc<@FXw{u%5+@Nj3s)Kzkxs9uRQNa~gDHNAL}?+Iee(_$d4eoBsfI zbtm|AwG!Ik_5y#~#t(yT`4@POS_wTNdxO7Y<7Ys-bD{1w&412JFM|6Zc-Iz;04~@K z!Qjf%CV3~k*8aZW?*(u#JQaXH5W(C+MxgQRhv5ByfNP$epkup(5A`Pf$~B>Okp1C5 zu=&?vuW+gB_LrGH(mrTy9svHK!Sxp`$e08*z?1x~zJ3Tn4@C5kB0o)5vJK*O15$sJg0(GK85PT94 zaM{xp^t-2|{M;uF&VTtg{3@IO1@<`h*PT|%8l!m<{8JluM;3OLu(;{^@RgokPl11C zNr) zZUmX8{4XHb7!Y6`)`Q-Top+N7kMFLuI*f(?-sYc%{m&%$q4LzZG$jp9^5eia+4yUq zJ@D)9hSJ9Ss8byezS-dUUg>$*qr$g}35^$NKqsQuVrSrD?uW9tIfZaCQXXx}CxLGb z;9h)Q0WN{XcZXCq)+g2Mz+?p50s^d0eb9|qd^fk4S|8=7z;Czt^RPp3_--qGrd_Si zRPY@({vzlo9KKsI5$7Yt*VLzh?=*P6Q(6X_@*@1@{3+L(!3-3;>U9x^~|wX?b3R|Iy}OgB>{+ ze!b3d*5>3T@I5yED(F7^s2icqNAZ`z_u6>D1%;g%EbgpoA?KsTpN(LjEqE9BvIsiF z7$c*N!zoj zQ_=VsDUP1K^TCe2lox|V>bQ(=$C@e(kaf`uP+2YZsTV_W8VQkSS>U+NaMK(!3kSX z9(cS6DwZ%VM!T-X;J*ZLFFfA>FU4NE?^Q4Y?bzQ$a55mk_Ur&Hh+A|or>O1G{e27m zl+8DUZHGB?d+VHKy((G){;Q1-13e;mtFp!=>A_kGe%i+4@o__0+_MoO+oPxYG6ZLA z!E3-nK0&ZD&Da>N%*(;g25>Jt(}B}*XKsyR2&DFC?OcK2w}1fOa}Vf!xHES{H8nok zIJ^!2yUq87?Tp)UH|WDu>ayPfKWF0;LHn%(&naVklHMD67yP`zP18(qro*EJj`6aMrHp0&;ZJdvW^CR%TZ2VTxSp0!IPVP)ev$b=%LcwksFa@E%bh`Sze|1z%af zI3KM(YrrFtknjoN$3Y*(O}J@AL&irN+s_e1+Ja|+i__h^r^*-~qX+j3@TdUph35v~ zSh^6mRRtqZ-~1&4Hz2_HTo2ldCf;q#pkdIOtc5RN^J8F7(89aZiWn!OMr<8;L4)g{ z6&XnL{tb(pth0EuJnIoe+v%SM&81CsbIXPXeX0;a8HW7^K_Oc(2Dl_`q?=L34B;sL zEqIK<&H3w}U(nTPCf(ynMxnzF8&JdsGQj#Y1sx&yTyJu&oB_Ja8{y+@{&m=APQy1Y zXKo1T3G+R8yp7KV-9)46M(9tiXm#EMo?zogLEolPb>GW>xuOPiGlE20@HOyN5kw>! zE2H=p@WKJy3r{6l;QcIaZeb(P@^3|uWCSLln4e3qF|;!7dY+i`-Hf*9+YuxOa)7@M z_6gbzw?jeee$x){A~rr1^h?20DjHm^*iP`GHhvUzGL4KoE;?j>^zQF21jTH@`@lnJ zX56gumigHYo)W;l_`D%7?SQ+ov=QhT{{w>J0RiTx2Ixk?=Q613yQ?auKK}?`!shqE zX3}oB8{~yM(mP5ECDnfqcu5=Y3_3^fp#{thB;DJ+;H7N*YtVQa8Fxig$oyz?xDP>T zThIh}uL$}l7%!7yinAZQOaS-7^A~Un+9h{%oDpbkIDnvRK!Ew_26`*4l6$$Nm>=0+ zZQu^Vm$UhHun*8Gx#cPvH>1N2hrr9*ct6nNg6F#6lDgKO!{8Nc+@%3~hQ&?KAM;T& z`4fUvTktOMT{L2DHcn`QCO_IB|5MD;Ar<$MNz-tC@FFq}RUlT#i0>=F4 zu+{GfY6S$ilaD}4(1y8lc@2keesmb>9Q=(oe>3c0;TP$<3DrBF2d{18lR+;Fo>ADC zA3fLq08h8^ax{*eS=`;#Lgq))zkr~QEf@`aP6Xp3jhE5d_9uAV0PcmS0?p|=EN*WV z=xa4DBB&P-;7vAwo}`U*lX+Y>I2GnE_zasbK=as?HqT8EFC*1Q+p538Z?f@6LEjPl zqIf02^+Mqi_{}!H74+XUknZS+koD2Y*_ooq-nxf2++Gp!w?0;w~wOkCAgr>w*h@TLAZ> zGYa@i5uA@V#z&)506}IzfRFhRv>h#;n~X2?eUI`5;j?UhDC`}yU~Z>)jEs~=D|0k> z6C2M3?LdR!p3<9R+B6pezum?Mfwtp(b~i+LzDLs6rY8o$9kyTy@V6r9RLs~IZQ5eN zn+9+%JZFLLrwMS&MHxYw=_}$8+!+wydwPNXDEJZHKIZ!#?Rw+k@3MK9=3*!Ay_vP{;QZ;)+VrF#xZeo;p3$FK z^e}wtgGo+A+2~8Ta;)TYcuv-<3$mD5v~)q%j>YojkHuMEyqOj0WbS=4>y@Qh1ta*u zl;v~*$=DxxW<-xd39@Nrve8GNyukJ$j}#kRzw9bS3b1HhvQH??=EF2rj3wUawUKXWzV!KcL{n=dOPxITu*m9LC3jFW;$x zg5C2z#?;X3CFIc0u((5tnqNv&k5v_(P=w_GJ|FbX&ful;Ux=(Dh}950WD9x#-_r#_ zhCa)!=~o9Qc)|3uK^u3K^!25HdLq;SCwM`;J?L)1BlL&W^u)gooZyAwUVP32cgsbP z#yduR52Ovz^(Y8+n1Wt!F6@YI@XgAZU#itk{swRY9mHP*{ao<5mAzhD>a_L)H4$Wo z3;Z)@5BTZ6oH_NQFZFuJPtW;#W7d+*a>9JRIqTW2@@3lAtexJM(_6EaZ<94^wq>o| zF6Ywj?OD5a$eJ@dvKH=?FRONDo!cc}oVcqeOp<~B+zg#dthKuqrQ_IopLo}t+SKo| z{gRxqk5Rn)Ck_~6()ja0)}@1z^NK@RhYrb?bBD6l9+nLE9?p9AC;77Wr>s|xWbrdh z?;Xh+b5z#6d^GEn_hs16SzCUVHAjEWT6s*qtUs1D^SFF@^LW-}@5_V}SqDzYn$st; zKK@0r`2LryIVa`IyC<_oo{}$4+%UgDZkE2pP(45s_J)e*ea4x}?j8Sk*_9%XbAT@5 zVtgB>*9fiAQ2V@(e@4-9)q@=^e0rg4MiAN{pgIKw%YpBH0>P>TejQCtaP8P10H-zu z@t&YR3f`==^ zkzJG#jfcS>4Hk(EZh~Dq0)CPUFYU3q&Q9>X?Bp+j&KL>4KE~iTndBbJC33uoEOd z7Sua`a{`73 z6#fm^=VrjKsA%{!2&r>@;W_)fPbm52ps6##(=~am(fzjr6~f3=iahDftg<0{(1e5)2|-ujT_PA)*q9!zZ%={KgoGCf{!iEi^WkR~F}xnIr{SNqlivmU z@B;AO`s=egf9F5oG&#Z2j0BB)9sE>PQkR*4THl6&)8K^RUIn@hxa}JVR$*d%h2HcX zj^g=%LN485A6N*#J<4+>l7*J&83dzjK~La}HxW!q!Sxh!VnVia1UL;^eu;b&(+0S} z+qi`AHy*4#++@U0P3XgEVsLRr#cikI(WEL3k2amplIj?9~2A*eqRK~#cjy` zYV^m0PqFc>pedh%Uye1n4ggL7r&9=~UI%oL;AhKN_(X8}gCIT;bc^6M(+sZ0eG)h= zd>HP9=QMDg&k&R=qO+8=Jd;t-$cHI#8tq|c2|q41G%An=BH@{WfMz}@SPuM$2qMZD zuc6KCRB#&XAYO5GlGByNZClxR4Q+I$fzt#B@d=gY{QeV+k`)r9GVKEf>{V&u?3fb`+S8U zw=}*%YLD8I7r|e(@u{Gj1mB%v@H7G$$9FaeMR3yo1=*$JDKM3N5HxV5ccSA9Qry6`7_!~Ap z7W8MqBh>NeiT)Zmok3XYUU*7wPI5kEac42j#J4cDO$PH(ED9*_0KdR?+yXz&f3=K+ zM|+?J2o~Fd(ZI(=(6qR*BzkH0Iyk*eScyo#@FZwfv)(%=nEX_kP$ zZR6j9-uMG}O0?y6mV&=yjIZ5ghTxs3bZ%sHF}Pa&kHP8G z!f-DnpOg^=q}+qMe9=SEu^s!+@0-q0B=QMcRY6e#ixf+~KFo@p`x=!!~mBHmy*UG;Je65Wi2EF$z`0U~a z*KmFgzAk`!@p%OJ6%jOL^17dan!GPid=*e&d)|dD_#1rfkn7O`eF;ye8CHJyYOv1> zzdpkFl2icciPnPC4F>UjptFAmZ(I>v>ZX=|9XOp}5Pusq`W*O0Nj-w-==kqf;BE%^5~ehcVm!Pgc9m*VK)!FS+v$zl6Tab5?F{1be5VS{Tl zH-K-p@f$$fUX;R!rxH`Bo@68VmH_UBXDIL?5j69jN)v^ij^Cr8%M2?IwkQ6tBxena z+sglK@bD})A=qXMegU5IH-gJ9#v~ly3{JNhOn)Qjic8=%lfmV>RU7^-;PkLTd^2dR z%izi4V*Y32VJ#V-K`zNai~SK%*tV?EM#YDaero?bbuK=7kr%cQ`! zjmK%o$)aO~$H7k-+}Hs4TCjH)hp%FAJy^eh|9TDHA9S1Gi*&R{FLzJD(~Ad7a}u;k z3GnwS8{eZBbiab13E*CMIsqRSK}AN5{m~~qx~Eali-%=^Ex8JNb1C?osF3f`&hZQa z`epB0fXxp{~zFg1aL1tw*#-Mh~P4fPw=U?3n=I~!!p3f?1as!48Pug zRgBahVWj#069HXkP|y$ffC$d(y&`?L&qZ)L%^-dbv_lo}vvMa&QrFYvFL1iSAl?J? zsWkA$)xo89YU+Q3(+vjk7eF7b3Z5Hp;g`Va2E%YKJpF(ls)nGZ_hS^2fjXkw3VHx8I&n|-O z+6JaN;Vjv@>zIvArii~G&-(}DJ;tm3|1oPPdlC7*D|x4N#OH+P z97WC#26Fbo>SrZ;IyEB6|3mh4nuPUe^iSWLJ#Eu>@PID4cjom9Ka|;9$Z4Mp2G^y ztpK@ouyfO}RzmHCb*f!UZ|yyGp{b=04CxoXYmy^*mLtbDH>nNCc-#I0vjguu$4f*~7f?UgZ zVv|FeiKm(_HD-E;^l#-_RxJ(^%l-a$#o+KeC#!W_q0w2k&*{{O6zP;Gcn}Uk|=Qtyx7j zOH&;Wj;-}RA-oM}kDA~$Wk^cyh%24|j;#&Dz1DFuaC$8SOT0U3a@nR=N{J|<0t&2I zE7w{lZC#T^l3SKCHd*R6hzM%nv zl+ara(@h4&P{afjSf>`S;~K(G^Izg8;Yl@u6a=xhU?p(tTM+D(Q6RzfQlmIH#?$-w z;UWG0pdSmKELKjAmR>fL0FSrvouKU+fj5-_FG*dkM@jGm8y^MwLu2q=hE6v{F9n?# zpuOl^hCOy0{35Oj{q&`Ek?@yBQP?Q*2bkQHlD)djxi z4g>{~tU;i1;P~bs-V3zWo#1(e44w)gFsKl`k5~}}Hajc>oLN`cZ-uWP8j;f4UkM)L9OTcy zzIzXRPC?_ev_O@?vB5!n6X>ve!Po0;JFN{>z)RZr%b@LBfH#vHYf{$~PXosT2U8yk zxYADJC6d1Fz_c27!8oohlXhf}B!q>CL7PdDEmHf6Otu9J5B;xfe07@r~gE;+xw|Iux7 zeUsCxSKr5*_3qbqz@WT7-5(g(^oc>aeFmCrg*CbazSH5g?)?7Do(1Fiql;hIb~(KU z=klkMeftA6!7T2QPNulBTFhlFirXpBqj6+3;dG#oF%d69F1{u5oNbL5{nIPK^z7ue z$<9aZlAY;pF*mQe7jDhxM)G+ikWa||{MWg-gRAGq&*XE7Ja#=uK9l_WZ<X0#!EHT#p78%Ku{97J;kB4S8|2uLA<#v(m+2(Uz z{xh`@9Ei88lw<&SR(X(_LG5F&Jp){XnN==NlG#&+C$R z=l|Wj+wJUfgXEn%(9gA5AAXjrZ$CTl3Xdc^U;gXbyz7y7mw(RtE>aD}T<-ORVlE~} z&bB7a|216V@11RJhV&WKBX>|}BHtWOm8*>bQu7|my+5bRqdDDkn-A>Ur|A>Y40r_*Hdr6hJJZQ` zy|yejQI_2Q-Lh=Su2l1%%MuopYs<2Qa$M+kZCP%nEZzROER9Gd6c@3Qp}5FtDpv~g zJ}dvVw5cX85)i+luueW!JUVyB6Xso8hWeDD`#+cACQ=ENL3TS-2Dx03bF*soO*7*7 z-Zi&Nubcrn-g(KNcHT?LH>Kybc{d>M9{-$oV^Rs_oys4fyd@a2|IaKQ@u6Io^&c%EtD zd5T|>ee#O39Z~kMSC`E=prWmr1_#u>RKx(ysztgm2Eh1Sz<`m?p@D(j zhWHQoHAE`A=kWTvR4j5^!;2fb;jb?HYxA;s*;(Op2mHbP-lFEjOAV1WmEAKmNICs; zD8_W4OLcgR@_k2G)}brvFyjAf9iDXU)~&J*T?2v!c0<$eGJJR-_rAqGScUSN1Y6dj z8|o1J>N@=2=j10pOwDIUVDf`2LIMBak)wMB1&j>v3k>+9qVtvf5rlf2dqrKkqb?z@ zu1impQqdk55>)IH2Io8{*GRgxj0cFRE?q+d0uhb(LVV(f!CQBK3|a+Yt%YAYh2WUP zBDaqosLRM#*X2{FRMdrsVMSe>~ zl8k!P3$?7vx2Vf++PdIvg+J=+USiP)I8-8AZ zZC5d#(+jwRj9&)Y@-N{1Y*kzgUG)Zz+ak)(G}r?5&Ok>I&r@kO1YT`Afo>(!8$k9M z1A2+53(xGt`vAv15v}-0p!Rlt@fWN81mCNN%0I#7zHoghK3oH(vu-l@I zGi-2U#HSD%^S~~TxC`*MDz1*sfDZ=yoctksl^4!;1OJvR|9)6~ zT?!WceQV&XO-EJU9XN)kwYA9w`b9YK(5fmf#)>?Ex0CT9Kra(tQbonvtLmP>-_hWT ze{9CWKUnlj@KtT$AF+Rpuz6QwgTb_8pgqUIqJGmj)8l3W_X7T&jQ`kv%W4I zi@s??;B;6A6iN^L0{lZQUU`|%m`MM;mbmT2-VYb+`XAr)9W|%E?jV-<%I<+%!I6w# zq4>L|Ls2fhO?Torq^gg2&0H}q-nZvGJVSydKEX6JC!_))HA*9e>u8e@4^e$U%gVa4 za*%p=KDHE#EHxBTqqS0a_+vqRU1$>AlK%!u=KVuOZo$sP^iFIC~O=7-3A$WGmix)`gVTj$Od zj~@IDldrUO$B^%Guq9i-M_5TGnK1C3&FfwZxXsr3y1`iVBU%BcC)onIW5a=eE#px@ zW42SBINO2fbH@VzM#dZL0iFYViH)i*96t`YqebNpf$e}xbN%Od7+&-u9BX2QB4E-* zQ-adc9KpxXX1$Gik|9Hb2{7oYF~FGYN}#Xp2i~~4ii?Ih5jgG+C_i-%fd3TiV)9uv zBz_Y3?iT!EumQQ?<9V8)hs5o#$>4if@KIo64uB7@uke+(ccy~xso_nHZ9C}4$I;m8 zRejc$X>Z+#|S)u9J@$4lG+nhwQpRYmczisHkjCouY%k4m(A zOYOVFeu{y~cbZDnLLid~w%aN2qnoHbh-e0J;CrcjMcgw4=mz4QnyT_*BtIT_ZyCP? z)VBb5{kp)}CdCFM0C$q{(9`vGUlsx{ud1qxqje_mJ~HkNbT{!aRVv$5#sK|IPoT$$H?1Y%vw^$Fcq!0_XMr1D1I{KR)aL+q zmGRz1xJh;%_%ZfQ#Kj>y7r2{@SG`bQ*A|PudSewA=h%6`-DSKp(C;n+&%(n$qO)h0 z#;u(X3lEKj;+|pP*V3kW^%d=kH!EuDgObw;X3do zdf?mwj@D6s8Sw9A`~c9pCBUQKRMk1yM0`2$A7s1(&@$p9-cr>?gGdGbqm0)mMc;r$ zU)&rxPe7u%r2+p*#&-bieFJ!=dR1W_kF0>j&l(HGJ->iocM~?@ui-So9!qpT=`irs z7~q_B9%$=3z)KpbXB82@tOV{SYK!R9v`c74ZHteii7jhro~71Lxr-TIXuu z17v(E&~oDWHC0?(LahOg(QD;r>IzZ!nvd%1GO*|)@YK9Gyo5tDVBxQ^P~39_eBe{q zWH-hsg3Up+(6ulaq#9J7vZBG}KI0ZRsHY&&-L3~eSW^JbaCd=*JO{qMwu*}j#|^-T z$oM*-!7qU~Z>HjoYHQmFJV3@50li_>0Q>fJ73ZY|8|NnAzgSehj&%dw_gM7d>IsZ{ zK%8AR!{k>@35tV$2mgl+Y+5!{E_EuOO4tH}K#c(&wT}gwLwuftdLbqH+pWNd%J_Mp z4fMc|HIVRaz=LGG1JHkn4{ZyatzVp6wgVp~ty;!kw_d_?el7;+_HEx6>xRje6N6x|1vzV1TRAz!YH=0^U%q0mf;n zJ{!o+fxq2TzuP_SJ6!G+O#5!#42+&Q9-Hyqx@hL;tdkINEUc@li|yS7^$=BE+(XAz z+z}|hz@m3!b<9t9IWQP$UL9Way1ExukOju_#iy|4(?SSVXO8~o3;U{fLj z4spuZ2ZP@<1_)>V0=kuWJ}-z^BXNN32mZT?s|OhPvtXYz2H&xU%8UN$0Qga|e9I;c zbTjOLx2dh-ZQ)NI0tbPQwvb;1*2*6IyqYR6I_SgT|B&V11)4}aTOFt128f{Z2rT~8 zSSSw40pFo1Y>H~AL4kOX;V2CL(ikA1=>zmH;=OpiMSZaYjsYJd;~7BTdJTA{J#b!c zby7F@IPkw^ygSgD#LL^L>cagefd3=o8-dnu1-x-x6&K#m10JU0>fS=--vgWdCis4s zF;6rg(Wjq;Nw}s2#XncT*K7-$&TpwPhu8(DU@%r=fRN)Op!MEjmEKly(S;TOA1C7- zfOdZyxNSo<2l~Gi3ZS(2gB}Uu+|(Uj-g5u~6LeG5E!_DXyi41Y!@Az#vXzfcWGl&<{Tbo}~xQ^PPy7 zN`c4AxEIiD;ZVw7|-A2o8Rq;?S)feX>6~VvzfryjxGsq!Gny#E#jcM1>sq$u;wznCuHwp(YLRn zo*BiKmcb;^ye>R5HgRsCJBmd=)Ir6?mX-sbZI0JNCv_9(u~=06?byNWkFBsgP3|>6 zs&_M;V{TOMJF|P&wRW67r}xbTy|Dq)lX~YZVj^;J?;|Np=xU^YPH1Sau?N_qgE?I?Vzz8cTuUG3D}P2Zzu+p z7i>>pFxPxLxY^f$8fF47X28M2r7dc~?%^r$c``l-=(R-P_3_npc~?Ax#e9v0(n4)! zBj&)O_qSHhz+w}g!(f5N0P(=1`RM)^G|=@@VS0sQ$S(l@A&=Gu05mLu_Ms}kd9fop zhnK*UWbGk9cP;_GTnz4tQx|6B(JfT*%Gjg;Y^SB*jcwK1u#M6?*5H$6`F=o?i1!jB zKcWrU0AD2I`+$C&0=(SJnc`fhhs9!zh2qQ~!8 zeZ@nYHDQpVsW9-fKp(CI-cG%f!4O{bXtiLmOtsJ)y7sFY=x$@tM^wQ{mnNcCbz!nx zvyq(9sKIKqFf95c6&G%=4?I; z4S}za@fSb`Zvfue3OILATh*hDfMYCN`3aArI+Fm8-3WuMijbl5-jzLUFdVM@)MlwP zgLN<%wh2Z790Q?;I)dSTYX*x|S_=dXiC{00FXFfZ4|8!^e;xd4l{fX{z^yVH==x#N zXE#%E5wSG~zDCAJ13gB(lZXOD5ZMBFhK%0@8nGF8dybiy@7_0nua)t+K=X;);w1>t z=ZHZx2Ux6AEldtFwR(pw4Rq^wqSe1y_1R!PNW|a6N4+;bVV`>DN$)w&n8*>eW#6}|@=Xah3 zgr8cWUhCC*sWS!FLv&IltAXyT7pT^z_SrS23|^mDB1Bt}4iI`gbkix$B(r);rbFIZoN& z6uFVi&W%npwlI;s#cA9&Cf03pnw7=Gjx48{*-9eY>Bc^q&)V;_ESEWXxlTm~n20;* zly``U$iq%cjxllem{Ud}6ITkIrWG-BVCvmOpWN`h=BFdg`?K8FO?sccms-TUU#WOb%1Li_Wb&$Ew)qTOx-C z$=ldF8`Qm1%d_&ps=RgB1*AUT%BtQBUmGMjX3l4l9oz?H)GVFIlMG*P^9#nac0>F_ z0{-yt<39**N)7aP8HC4j{DMd0sW2Bj8N&xr0ORKyh5eq0MW5(j*^aq}XE#^W=uger z4bNbk%I*pzTKvH)%NSPUN&h-WSu3d;?g4{`{Lgy$=AsIxS&ejmjFHeQ{IL#hsKZ~c zuER$_D(b-Ns~A3ZvhuBzk-WMb{y+SH)jHp&D6iE^l$pgc*(vhJGTl+;7)_bz-zs;* z$H0``5UuP69$nlGD0{>GfZD8xdD#{lkM+JiQ0{1!ov*r`9S(mi-UG$|ttlRNlTBr@ z(})p&a4Tb3?8%i&-(vV;UM!yf#j~G$_}^uav;Xf{i(*INZe#`)eTlysSTUPrdZNsK zUR@^LTu~;sPAPL&mvt%s?dC262B2_?`{tp%I#ww2xm>0ZWrk_W)VTRGSSxNe-AHeR zKk4Sz-TkM1ylWqi8uRT{+I7%CmqD(>LPib>7-eL82g9FlCzKz+I@BLz*~-08jc`ph z(5OshehTA?_g7hB9Npdj+OpOT_~X^Z2jlrmQ|Z3bQRG$@+h&jyH+rMYv9B(ZM^;6d zJhI|=WZljzzQH5Qyv)j79O5zv@0kqs>+T;IFf;(q;`a#%83`JjehcN-vql|0m+R0M zbr`3qgU0<|!&-5FA(UF^eDhI- zN34e5Aaz&?DoX43K^-DqU577#RMdf^?D1@Y$FqNrW;|zJhaQ2-Q_kw!Xv)^?2F7*DZZJJW%S!{bv#~z)PY+%_n%98^b_pIF%Ezsh z!;fXhqTC%Ud(tc1{{xDjXkNT2RQaq*LtUhOL!H&fRiFLp1r`2QOz)Eu-3KSOThV>O zX7)i$uy|&lRdbjqoYQA%QXib^jwkh5n8L)~ls?l_nb?xr=ie1f%unxgd=(QfR`r>% zh6!D@8obujPimtCy_JKGKcZF})pOw_HH1P~da7ANT~^yBIxDvtvGsb@7?0aLR64z*#~LU1oIY2T#KVb({gDRbltdbKOk(2lBtv$Tk`rY(Fqw&)lMM%^D2XYC15=g6 zR72J@CN51gY@E(S!E{6V3?>fGFf58@Vo$UoF@}lFF^1`}OoYuf9G}a??YV}X^O!g{ z&yX>niKFukix)7lbAcfyiHVg-hOmW9%wK3IQxemX4HuG`^E}ybco7pf78$lKW}UJIcleQ^_=$nB z@>9c^XIvHW-0=K46Z2mfQYJWq**n2GEfUXeI_5<>Ka0YEkK?S#&PQfA!|K)y=ge5< zoQie65>F;9!FhS2b3GJxFwyzYJSBB+p7Y5CT={r`^ZJEM6fbm+TTHu+i=CrVsI)G{ z`ARAiFH@bjr;*7|bAGgqiRs&&_ilH_Ru^q|j@!XR>JI0NO5))T=aoB|lfBdVnUYAz za^9ImtD9NQ4-PUBf5_vBzEF^O>_g-(~43<{UZYvhXy`b5FZmDdeh%GcK#nu+GQNxRe($ zC+?ifv0>gJp17=dM)L#DT*kd1y!eI7)t9W# z#4y)~VXjz}5bio*oGWscjB{Nyo;kb5yKb7moKq8A_fKTbjft+?qg)|)A3xaIj$G?5}vrvb7%Z@^SMEn^Ic~YaDz4#xGp-&RR_+xo-AVGWs&Q$ z3rrll;97iRNu2ISIF1W6PM>ROWi}Un-Bg=X&EIbK)Mk zZhA`i;#1cnFPQW13)hF?Zb-}->vk)`4RG`XxBSUW+@I_=Z3b7ZoZ+@DmN^BnZf9mP z@nEJ~{v0<{_1+w}=?fKRq1)O;TvfElZTfQNWG;7`oyMHZG`F~wZYXr^O1C4cxa!d= zx571e^4xJ;hTFuoT$Q%gEoZwMd|0~OZS5{M9N))xxxF~(2KUZ8t=en29V|Q3q_qi|HPbO=>`>KOv4jptaKFn3)j<~Nr z!NlPc?z{4sxRB>Q{uC3*r`-1!(5kG!J-m?Bm{sV0`7BpGIqUwch=~Q~+)rInaxS^= zxgzpu*uer{$PF{CESwiOD68Gb`$lST*{_h>SZbq4V$z86R@UQ#2dt8-w z&wcen<{W+K9{!j)3m&^)dQLd(g?mbv2mG@)%wywt53D*h-Xmv%2UcC3;88e*i6>J$ zR!t{!e7eVjXuQARm>AudNOk+E%Mm1m^np@JyxYK=U9qI*)rzLSne?)jXF!yJQl9tsvRpl zF0SILm#aL=*05r+86FGPdcZAv)_Sbo$ejF*9(OWX)mfW8O1672R*Bi+k-C%iM|OIY z9rVCK6Mx8~@Tf;C9z7lpj&s$l6CN>VXtwT*NBlVtw3037Jf>V?PR1pVnZ?Z6R_sxH zon=fe@kqGARU2=3th~bt9l7H%vz)6omwV(t^k5r*^w4A1V`iOy?2-GF+i~rw$N6V0 z?8!5a$1j)@_tN9VOXj48dFGDAiyn>-#(GAK_e9Rd@t(O6O#B<+89Uh%I$I}uUY&}m zu^cB&^PCgIob555W8;~V6z_RvwkPWGc(&(-d0h2kp6B!=nx`ju<}Ku^@`au&7cu9+ zBF|%sne%e7XU0mw6VZGVv_cbL|Qy@>Y1puOzc!rRUC7%(=MA^XwW{ z_4yjliy2%scCF{k^~~9{-gE8-=4{^Jd1MoFZf){Bm&u%$nVu2bXufot=Y$=s;j$f` zd-pJ>WRK^X9Hp!r&pijYIoA$&K0E9Qk1sjm`RFLk6OMVNouJ_U6P}y%m~$r2b6f$f z78iJqFH{5zJ(JFOqAlz{<5^Thc)~f)sPlv~&U>Ce&z$KOJYQb)tOaPvCC`YP=HiGoS zm!73#jmVlj&bTAO$gE2d#;iyq9C0PmIAMzMb!07@VvLy1td!}-eKAT_X^ioFJPpGW zj2mVth6S^XD`y)~&e7S%6LXCWqVLZ&Zko@m!uiJRBqggP$+$Y1S%;F1PZu#UYq2qJ z38fw_F_tdHTSSi2QjGUgjM%({WybJSCX!Q)E7Az>O*0-`!JKO=jK|WMQb99YyM+S2)XBdyJQ;L7E&X}-)Sz9+4BQ_c9VXvfbGEUsg@>gv( z?%8T=gskGN#?#xV@MN2D)(+wub{OwvF%h%N7`;c4TC>MEelO;6b6mXFI60T@S(;mq>0#PWIAUCNoQVU+jfeAC?EO4rX#sPhPa7wmVNU89 zW5RjnWS%#sU1ZMTi^jQ^sl4N|am^J99=>7>yG~}_b>s3s~N%;)U_jOC}=1yk?E{LSoBUuT$f^p!4rIuks1ZnL5#Hdn9v;BE42ec|qq$ zl-K^rTvamJ>*;hR=FIS#7R^LjwAZCLCSJyQWhKz6IKgY}Z04Mr?G-ndIos!Y?Vit^ zviV*&7BMkvu~*7ct}0yW6}_A}YnOW^u3%YPR(NenXHH(aSMh2l!q<4s&mg=d!|U;O zCKl}QI=S1cs^0PGZm*oZw7Ry}>q#yX@dv!N9c1G2L9fJPUg);hAM=Vj<@Gvzmwd`= z=V`7hIPG<$kka=Gz4Fd_)j~rrJL`3=i0h`D^GZL@#Od>1Q!f$9yySJ{G7}Fjdu_hr z1);(#UTd!@Lf5KRxEpy_tGui>@fFk@y^*nx@?E{tv!UIvb|U3d-GgZknf#-mRY%H zy$g$IcdN+z-Z$?sF{RA=b{Q3;%f0WG(|a*@z0W`NW^eKQq4$fY-n@QEeC8eTg4Em>-kC3% zIQr82P*`79H>__-Y+uwZBCc=jY9_X>?mIb?iPX%#OLsA`ZCBqHyZXXv#_qlscQf&L zci$t~OkB_IdoYKI^ErK2?PcQd-oAJCF)?F*->CNXBa?6strdS!$;*~Sr6Mb;)jLVmqTWeOb%;t<*1Y2o3H#($slX#6 zQR4S^nDskJ4w3JS)unPcQu&49-~VGVUkw^# zk*~-4zon$`48cyXn>%@UJl^TGJB!WwdY0GfUCi0G%WLv(<`C5{tfAhL7f*czVC-{~ zxDWWeTIG#E%#n?;PuusJ;5Hd=`=>*ejn zt+3cETdW7&=0jK*YO43x#bYtsfNzm;C!ouT*S1k{@fgK+;9F%p4``o{fIsGAf4t)+ z9*o%me4C610R87<;D=hN>b&8^y6*(OU4vuHyqE6+z$G-8%6s^9kGSQZ1%n+LgPFa2 zt9NRm+l)n@WnXz$NLcKG#ZKAcD(HV4VNoPry%X;(?FODD<5@s;U4VD0uionw&ff!k zmlm(Qzt|32$q6-r9_KWvhjfUTV@SQRZ&feBmp3ap_|JO*co5+4O_787v{vPV0G0EN z@{s`FPf(4~tV->{YE?ih_dc>wl}OeLKU2$5?mw7{U{&-k zQr=9IRmk#M4zBbqi{Q=1927Z8QzY)VnF{3X4&47S{o#N=X7Y~Pxw4#U+%c7#XEBK@ zOV#x zckV|~Q#3`z^zt3jt%=UBJ1qJ&#;sl+YusNvcyfX7*0ep~qk!i12Hx~76{jHa1Hkvl z_(PxzoPcj@rQ)qr{2=gb8NUehEeycwi<_$VoyC!S2zZVLSB~T^fCphnQE$cC^GIf6 zXLSz4V6Vm?wwG@>(62GVrO#5I=%R(_PmjQ2pKRd?I)xUaaA%g@;bSz^KMH!kOm74E zHHM}17i&rQG2po}{sYjB#GhAJaq;x`ao`7JJRj&Fci^L&N%#ri2Q|3jop8XHY0z1` z4=J`a4+e)c264T7UjTK-wYEN>t?5|g_6m!9SR9ruf%C6L0#udSg|bHBJFPD&xgKzs8k@em&J$8G#o7KPKbeKsOR^{+6mPTJmY&$2GX( zo}++UVUB41Ha-q$-t-G$a6)4c-^=$~ph?6_tSY-I_6TeaXJC;hTV#WFz*Nxs_2O|l zfu9AQFXP>TJ|%t-Cv85?$UDarF9Lm1rdwjt=RdLN%NZE3A&YbBIpC*cd?C>1#6xSV zafHCn1253vig#LJn&&fE^tRR1>WIo;fWc{v0b+bta5aXZ!d#lX*LaK$~jfM3JJlX^n~wf4f`Dh$qR3=l(n3^dOdcuRbri_Zb_ zU=i)}8Z0iz7I#2@>jw*4JM~N~4#n%hFUt52K(mQ|&IxF^y*xj$^^^d=B;$oZ-|G*2 zY6DeW;HAJX%eX7hZNxj)Qq@J0VLCLS-|G!Xb5;MdJ@(}NA~ zVSdAUtMCZH)~e6yZ5qVK2k<+2vftrTm^H=m_Nji`&-TMb)48+#qR#ij1xd>JeuH9sJBf+K zlYAyl^}(>p%BemD(|sWLV7gC499JdB`P_|XVpf9B$=NU4^{5#TTy<`pPtFEfm2B{NvWd!xnLZacb5-OPpN-p?lfTU; zWe0P1@9-(lA{?{J=l*Wy%-rKsp3TIZ9G?k$eXKEzvDatve&(d__lY~`!$G^92YqfI zVezw%`V^gD@sW8xFY+mrcGBm10n3|!M;T()zi8A zubla6h<_lSc;w7iL4#QbH7pdT`)1I&q3WoGLugWCJIv=|hepV0et6J{PT+O$H|26S z0WBvU@wzH6y0GTJZ^?KKJ3C!BEc%EhDlR&V7Qk=I_zytiiI;N{A)XKf{s!jF`*4x|Z3|REX%z`KJ0Dnu^lxu7dZux_rM~g1v{Z8SYR>1Gd z_(q`R#20c>AM;?YHSm9BylPWBU1u!%+Cp9ItT%z*lW}*T6N!&#sj7<}uMP0~GCmLJ z3F6VMRa~gI1^z&TEAF`oxJ@${^iaDn^F8nuY#wTC5N~w>J%$zw?Geur7p?Yf;E!ZH z0q7Cp(IT1?`?nqN$1+|F^tIQ39}=&Bhz)oL_!Alb6le(XE>)z;ybJuPjK>2#MLf$& z#rfDH57hU7Khxlfdu{=4{W=Uj$CTXSL3mN4_ON-bu|d4$2zm@HvZ|}`oVXb10Q`lF z&jfmu`0|=6E)K5ufxndT8$jDM2VS2u0nz#5^!fpCWts*2&(6xh)2bFK^EJ@liFf2I zM&`S=BXGRcuKX(SXrKp)kKlW+#6@L31df-~&2Ys%R{%F}0RuO)x97ys@)2zC>baQ> z0Zz>kRmEzy~L1-zDw ze*!d+c!YRMR^Xk1*Ou`~K=%?ih!H>NUEi%QFf};6506FR!hJi=swdfY+Dtmq5R54SYmn6&LRjbp_r)#sh#Z zB>q@_*P$EmhBCez=u_gh;-y;A_jCu|NP{cxY5u02&WJ^CFnb46*z|x+V~tI8FW=Fi z*V3Z1m#;e5Pas%t9acYwBQ3w&V{3CF9Ox@H<&aZeAxf777E>{UK-xa0j4 z9bU6Hs}bU!d7w`#7OmCTK{Pfz^{abb#_s}s`z;iZ&zUXE4|hDxsB13c-GKf{+|6Fa zMcc$fdb$=e9tSj+`2PBmI-V@ky&>b5fi`^`_`*68?h4#NgDdXo1UQ%mwr1D;!aZ)V zX{oV6+%paIURwCoQ)35#8?^&|sD+A)&J)io=vvEod!Pe|k9bqX zMMvlf9MctO)yDzdNxZheMMr1^-bTjH1AXlss*52wv1@UEPS;k0EAIIi@GmqtRJHQN zE^6cr8%%LvRwKkclR@vN#bPydaKL(o4!EzQ!wd&n`Xb0C?}GN@s23ZL@D8q@beQ2l zi+>38SK^PWNpTFWL3HoP_!OYI#53zjmH8exCPdJxUjh2sd%#0ms<=3d{s0`48<^pW zcRm3eM1xLdJ+o-eKfKk%qWz{u%iD zGTsyDMB;v&zl`1#t-%-g2Qt1C=vCs`tyNsK20!2(Wn9<6PWL4i{b>;;iMsa({-Fj} z-18&gBpPJ5s%$)>XC45Xk2E$2dv=4a`aUcswNgU|vAqLh06blc!HMl14E$3W?*a55;*-Q}IdPl}0sff=SKPA* z@O2s_wyAWF*nj}oe6F!U*i*Bkoz4Y|ezbU-Rk-ID;9tmiFwhOe=e1SC9)bS~{7V_n z1KRLI;LpYUVq(BL5cpRz{vOal#GAgYs*CL%3cRz7j|IAe_~ci`X3_-miw z#Dzs)Y?@%Ba=M05z`v96KY^|zzOA)d8PV~N2Hs1?PXKNBDe%y0DlWRJKY;hv;EH=b z031Yv5{JrzOKiZOu)+JuX5Bf$o(Z6L(BfiCHFOX)`U`j;87~I<-e?s1@o>GCeh%`R&p~%;q2dkz*pkD5;~8x; zT=9-8;ITCDGn*@kcbRDu4jVj*Y-WQnW&!9TT8yZs#wEg;V}axOS1tY!=!ahb-!FnB zapaBzj;A@bxEs)D;*CWZBfK*nI3DlQ;>&<3dUm1S@^uw=!_YmVT z;!vCf93#(Kbtj+^#K$yH)y07x1snsiT09BpS>h35a7d_62L8Q_KLXmRGw?|w1`|Ei z6yQH-aK$|az!PYYXx8{$Z3m=?VnN|DAi;6KTDwXf}TeX!`WcyEw# zj5u*k2mZ5+{|YpXc&I$}=?vh$GQOASH&`BvS7psC0frs;6r8H8)z)?`{F*R*tPS42WfD{Ju3m1(%@F( z$`hBcSpb`18XJT?w%y?#Ec!8GJVxM2z=z9tKcF$hzc2Yj0b0cI1ciVau- zn^27n!k+3q?Q}h`=$ki`!k(qTf0J=PpgV}K5wog_4M+k0yNsU$+TvT_z3NJV$ui)h zWc(|j5yTTY$r*b#5o0e0K3c|?0li7wt*MHO10@ys9~xY7kM(zUy3eubGh0`-9x)J~ z2Ae-MHVAusK+mPca&gSQ*a-`jYqvF;|;7Q?CU+PR5%%+39}3qVHs< zs*4R+2YkGYhXP$i{30K?V%>%Mdf*W)8mKi5eTkJ;On#(xP!4DKgmvJW|H@0DVckxq}oYWdffh<4p{9I%h2U&YXXq+bhmo zn}J8kcp%U;;ujmMxbWr{;FD$iIM8O!z~fu1xEROY3VezNSKRXn;1C+5o4H5y4%=We zRbzv=XAo$XazwEi662{Il9^Z@Yy zfs2rBFYuW%ejR9Aci^>cCG~y4XK8T7J>39@)1b5Z{2iOKsL_7dBx-CB_RI%;mKJMT zsDX*VbAiv6@moOO@BscJpR1<2xS%@#e2$EN33L?kHu8APLEv*`JO=0?;urO*y0{)X z1bm*1mjG?+34C5{6&L&JF!1>rTyf7gfJf7y`saRxk@2FL1Ex<_npK5Uj~Y!LROfWATtTXCaE;3t7E zm2qot1d&+u`QrO0;&49&JVnO)0gWO4xd=?ep<4ianT)RjdW(3t7`_qiISqWdj92Z8 zAQFpys0i7_zA6Nss=*ca_yCTjL9yBFy`n~EV3Ve?LD-W9`U)+gIomt;ufWd&Um@eV zes~-Oi{4G(!kb0F(`CFb&^Y2_L{KGK&pF^LWqdWzTf{qyZ+Hpy^T1chcugNWU2iP< zrs4*j*jE>Tuh!s-djtuW<&_zE1Pi&&%VwAiX_<9*H z2Ac9S@RlNE6W+WEe1is8+;bf8VLw(!eR{=ww$^K~*{HEW*mDzfTz^>H=S=e40I>(I z1K%X$IY2`P0w2RDi4TW%R8Q0;z%yk$5$I}v;BK6j*8ExFQsA3q{4CHagMr&}ntI~m zeUux(x5#*Vpa}uMFA}eU>19ROa})Sh4X(InJK*hsFbG!dI`pPczXN=SjModc(`AGJZ{JA8#dB(9 zz<0{{C7=m^0FSl>&ROa?i5Tl%4m?Z7vw^<-7x2!UGM{x9&ywB+zDt8E?(qeDZww6F z)Jrbfe5w}lFKl*eY!LUf`rA%7BODfw8EOz0pD4Tse2~33&ADz`4DjtM~)pIWqnQ(DB6Ei)rLVNB9u) z@l)UjWV{e)>=fYf@?g?4;0I-VCD0aAfxC%kfkapJ9QYv_{}kw0;t}G(anTXJ0Df45 zEAB}GY%>i8wzVtWBRZ3pusNc!LEO_8bT}*f!8;EyR@>e zwE})j#+$~#Jy`VVrs1B-p3NHgaT#9=bZ{*2#-=dIrs9sX4e%2({twW@#BVvMagS(h zdf<5)Tyf7mz>DKx(9i6|E(REFVUw@1LEN(s^s;zZ7)9J8P8L;wpOotTe2 zJ)1ams{%iz;_5@ekbfO)DEVj+CyA3wb?^lid>YueCE$B7@?me=Nj(~Cf z%YffvT*aWBOzXEt7hh*6Mh})iZffvd6U7#z|fw$+^OWFH~&bc1&b25Gj=#JIEw~6tg zkJQT42Yz10Zv*vN2YjJkjoL)#+yM9m4X(In2H>>yFt}yb`-nZz5H=SzHi&#KfIhha z7TwjrM|8H0KwpySIveeD=eK~aEuQWX&8IQ&%Q9}Y6;B&s(HD!mXu_FIfM1dEML<)x z0dFs+*yo#(JayRtFP8EBKo4vOUSB*jEqX$G;8!)c;+=B9V|T!yN5jg_M>L+Mu(_tO zLEy6(^sHU5Xro8)z_3|tKr`UiWjqt;f!)AIi}4=O)?Nc%BID&iKivbox%l9YsLboY zOJ)3fptFhJw^1u24)x~1Z^-ywpe?e2FBJE=#K&-20Kcih758)poJfQFRV>}}25fF= zY!LXY0)2-Tnc@){ai((sep|-t=is4xEc#<&yhnJmCGa~kJ`89vaie(dSm3RIm&thD zy>_~RSoGD!@K8Io^|S_FF5_W9j}kvEzBed(wl{&_)!>SI?g4h%2ZL>913qF8w1LgP z8XE*Y13}l`4~ru40FF32wgrAq#ybH0i+B$kb&N%{p0|MCm+{#^qjP~DlP3~=8~6hm z-w3qo0pg64*px+MYX|(HjJF1QmH22eSS8%^4)8}BTyam0gLb+fvFHtE4~Gf&ybGJh z8XE*Yqd?!F#piqp&V0<_J>XAdyv`vz-A`Eb_r>RSL?F-}_){7G1L$eu1~EP)HlPFW zXEOc_XrIHtr;3U8h5GxzpUZeK&^yH2iHC=TH$MRWLW3*rseZ&x=Zi&O-R$5J7nvPl z^HO7jz~>*(t7u^mU+fdz+lRoFPwe7*~h9@)p<4aKaNl`nAyU{ zp=zkrASQVwV72bWGiw{&Z!7B9j;uDNf$i{WvufLhSyfxz0DsSIgumxj;Xn0k$6M8y zQBT*R>it?RZ2D9kVdYB+4!K$l_vp`b|KZ;JpE4aS|BtttP`tZeo!d+EZIQ-&y#B#z zUbEr5nvjT=(Ga9KL0(8y*@m1nUO;s;n`s8+0Q4eU23l7~((R z*KPs9140A+f&)g59zy2C%Wo9)|Ihz>`BLH~e%<|;I*7f<-~IF0n~jvWFqAg&1o?5t zkT+t4e&`6kN5X)t4oIH!KE_^N!4`s_cyr?*=zAw%5jp}_Yoz(5T+*FDr%QB)JPbJJ zgB~qtF<|})=#>(EA7rZn&|?HGYVs-QRTAw3GN%x9xS&N%J_Eg4qMw0Weg+-TMP8Je z*ZXtOYs_iIGgrVKEP{H3@C+}Ld4zCVzkp4KxefZ-`seU;Ar}3l5$a{2puYsYR-*OT z6aR8=OeM{rkN~y60=-V9xnDv@z10#W+D_lerk38$wv$cmDt1*m+0?0KSGAK(-5Pe)I@#2#Rc9qe2S;GKjK%%ASJ<>` zzPH-6s1*_KA>oxAWx|P%uq9J@0|`Gnee?)BeIk~HSe9d1gC!G77MA^3j*VbXg3hCQ zO?}7KzJo8=={zsuy4@5BFv^CUZg;+ot}_zTgf4AN@0f;z{_=_)jy|*RH|Op7Idk97 zcwZ8>VOaETe0Y*-?eG`<{Wa7uTf6d8FFSB*@Pkk$7JZ`VyhZow2p%)LD?d|>fu9B1 zz8HANy6TxkblzQnWA<}1Txnlj06(TdiTa#3n-?)wsVi(SbGexfdgEqS?R5RG!=kvQ zdMW3i;@yB_qH!%g4rp2l@Od?WQ(fTQfn%O=EuIbZyHemwIB5!T(H?sMuPWn1fcCfn z+@Dvi#Kp~XiZUTSI7oK^MB1Ra#1zuf)EACkj*!ngMnyQx(=A&%i!KQ}B z2G@!2gKkp>i#7Znsvbp%V6zwSnlkPVwB^6R+wi*29PbUhmIV&9;eBp^xC#{)22Q|h z%lJ1ylZYP@&t|?0cXQYF0bWPOcLJUA5O`)wRL0z!2HSBjE z!=|3b1{a|nK`(p)i~8caPeev8!0XHSWuQ(^fiL9SudI=Xt6hONka2&YJ}-eAt<}p! zQ5iSj4P`tO=pu|*>-~AnY94pF18=0oD`)88pdF{d`J`%gQ6r==1%HUY<>z} zw0g}d#5^H3LnDT7x0q`4F&IoYWBS8E5$ZJ9cO68!+t}-3Bq1Y&qGcg5aSpHWA!Yhp z13kg5>^0c;M+oi55^uScUeJrt=qX!il3-I%w$k(`C&r1xoHxEj(CVp2< z0}PsK4A9|h0{Ufj;MpxzTwEOf2ppeGFw+O_19UxcfAKL^5lsIC{52Ur3e>I!a6ewD za(l%v=+D4kSMkbWvJPNZkWa6w)`t6smG=YRT$Zm^(_R;hh0{DOJ-4MXuS^CF3+~}J zU`V$i0f7U11-XU#1qKWX@E_>xH`El@LYKRVcNTVHUe5l|jngy&Y~^}r&Z}k8%}v=b z-cpy}%5e1yhNvkt$E|*??f~e<%ev2?*{%+B@gN%)-gP=D{*82%sBkMyCUq$(2>Ypvx z^dvpi4c+|*;Nrq>Bt8oRhCfyR9VA)b!O%~X^>;vfSp$(>wCb-ej`JJ z{e>>{G z=?^blVfpnB^#4Eo@eB0l%KBe5Mt9T1RPP!M7q4gdqV)$p^)(QaU8tX-K==8+In${x5Vnmb$%y2KtYxbh4#xAav);x`UwUXm8S;{Xyc#yuqQZukz`j z;81?EPW@hv>SvCBv%W*2yFk_rhvxT9O}Z7a# zlVsga&Fpo@Uo+_z&Uo6{vb`DnM-CY_(0uQy^%d=H7<3oPx=mlV*L~gGq`NDj!3|44 zm~_n@EcszLbdzP>G0;qGVbZ<2t?&m123kLu`4{W>Q+0V^KtGIt?jl*Y0GjvSFzKEf z;lAEd_gnvwT?P!mXTFAUV1qwNHyFB$W!;Y)>~$_JO}dxv?N)+&ZGAodFWnI6E|GQT zL-R^2=;F8=H1vnDmdBlF59WJLQ*Y4^jfDPES-)dzd)@DEn(7_%wrh?9OttkE`jwyM zQvD(Ni%{sM$hw=MdA*HEH=|L9y_V;xF2TXWei!0Og;iZ~{`(EO%Vgbe+uG~4Vc~hI z!7}H)mglK%fqo$&94rbL&^2(_fM5U9FXBA)JIYxum!o^jUiUW^o~QnpKItdR`t$h1 zKJmwA2?xCL{5=Y~sj_YsG=F~Er2Ao;gr8rn>l*AoFkpZf?~?p78oFt+?rdn=9=5;jP~QiZ#|icN;G=B8et{6; zPt_I2-=EM;mvxJw`SClZdVcM(7(=phJ<%@wMk}40RL{Slw^G&{2Cdzy-c`r@6D;*A zzgQ;eje#EKVp4u~%E$=ftLS&_b#CvOw)<*sVX|d^hJI&Y06Sp6K&6%y+b#O_zoCm6 zo3y%9pjkv+?4KqtwpOvMXRjc%rB`kDKhVSMPg=cZ?d^5NSg5ys;){C>*0slNuc5;c zuu)LmZgw5q-(k?pko9_YKx~eM$JLYPHyg3j_%A&~4v7EY0k~qMUqFyD0t{X)=OeY8 zaFnxFF6XcJ?R8~X*seb8z3wN=^N?~r_8(~KgU$UR&O>9NyH3_^{{b%ZI-2|u^!gBQ zOMe*rh7b22_zHiFgWh^sZydA^QxEl=5P$YJ%l5CfeWixjV*J$Y7wvyMbT`Plb|2d7 z^082N+SstyEaP8Z4h&Qpt-*h2fBII{74dHbbT`Vndq1+*z4kG5ah`DB_g6=DqT2nZ z99L?kEBkV@dh=48?PCJ;H_7_J(B7x&Z&+g2ltGtP-=+UA_$=Y83Q+6cLDioK{Y+WE zWheCOSXlpQ#$lUyFlqHGE<2Qyv-uXN`n>hQ`bR>4v#j6f6MNluEYzQ^yA^F&e>Jc) zwL5cp;eS#8NzmUS>(BbsUN_(~lfHF7pQo1f_w*Y)7(3Q~=#l_6GgY^z@5E9|UHZjk(Ere# z2Hl;qZkI1H{)C0~%}wq1!1B7mYgmBR4Z_cK9oyk_=w`{fm!R4HE7N|QmT_?!gLb){ zSA1#Jywc!Qe{k59`ZJ)vOV%F=?VHqRy?@CWVtM}R7vLYLt+=Wy&R@~c-7V{W)Y)Da zj)l6L@0GY%>UR0vFJPpm#*%Ifboa=*C!yK$Ym+~|$g7`h*>9PD_*Nq?{2}_SSm(ADxEt2Lr zZdX&ir+L`lusmMO;xRLynCXk-B@y}uWc}LRaJ`L%^>*&ubfIND?xBoFnGHJ#e~9ap z+0Z>G>)wTCNO$NWK5Mc4=`+iCq;e*Eb^nR@Y!37e$$HzN^-T{`J-hz+eiO@fA;w>n z`{c@~oYXGnLiez&n*hz*)MeaI)=+QR?+abC>nQaz%&NXPFV2Jh5m~=;PkY^DEYuJF z^uSTec2~L6Dr>GZ58-Fg?&d@PsH~q0?Z9tMe(^ch@Qh`g)@#sz=!!UP0d$Yax@pjS z<2#dXawBJ>rEd3O|A%f8bdSrr1EE=<>gK%2^t3#$cw>0jUn8yhS)5lELidEM+q9Rx z?kpCzLzq*0dY zy9m1ZvaYog;z=yjZFRTxAFtGP(e64)cQJHN%DVIW;QWV$x=&bHGu@xMCUf3T3@^ zF7~>mSg3crR(N&G{)~DUdkGDZuQ!)N?~JTh0!Jj%>`m?+LAivPSktRu{ zLy-KL3f;4^ZX`4xs=8fo1Z}fC-}mwBk4ST%*{)J`#r0Jhbc$INP z)Uv&L4#9YqnQF!PO&qr?pnFc%Jpj!i?k3&j>+L679=D#sqcy4(y5hJ^hwgb3&+7(G?} zD%#a5=v|ccqCIgx%LqMQ_uZ^oz{0ihu=2(GL4E@)Z!D<#@4|%bb~W@b$@;gUo#|!L z?`=OZ#8O|mZVC+W3o$#vK@mSme+~36%lbNuG%UiRw2M^_w^<&)J%U1qYNb_O(cff1 z_lm500h+FTO@4mo+^|0_k2mU?MhH|r5kIVjUa_n<2U;KYGu89S-&0-@KNyA$4AtJf zQFTRJxemHlW!*{8eAmb1-=ETVZ?cRZOyf{JM&Nd*sli zWv{te#yuu|a}P`P-T>X}vTh_apQySYp3d~MJnl@o<_CzXD~`L3&@GX5yZvCVn~8<( zp?~jb11lWv!hn7X}x=t%#NigqUYpH0v$m37ZS^Sd8Sx)XZef5mm3q+8j3MLWxc z?hRRY2{d2($+Z72bs5x%J6n7FaXczyIF3IAY8X&7bF}IYzWK-FZ!`37%KH7Gol1T9 zBcXRn2g~E5Lf^Cjmi68O-CMG5IW#~2*`#~i)$iT^p=+wQrS4Yf-j;Q%_}c4EVPSpW zd9%f7%l2mB2GLK5<769j@5s6<{Ooma_c!VOQKxg1WxFuxR^FAhXcya|TPEv=c!2o+*G8Xz_`>GB2ZsvdKdJOjq!b<$4<6|du z@5;L6(EN2EbkW~G@$BGfc|9QN`=8^h;(8zp`v1!MyP(~{-=y#5#HrO{VBuS^B@nDBLr`%@fo4#{3SN zKPB4xUg$oSbqk>RUVy3Iv$F!z zEZZga>rg*l`Bpm0^Hdba!=G##CN&SeJ1N({uTXdph@?`zdH1^jLV^G ze)573)cT6+oCDB(F6;gQ%~Dl&!__^XS@tL9x+ce}y5f9$5V|j9-A{+w>msly?ICx} zDF>Kp+XHk>LpT++R&_;tI0W67vhF@;b_p`+=2n|H>y>_xT7u+(PDK0C69m-G*onqQ1wVYa{C(f#x3}(8ckP zdw0ctK0o&gU1cNHda^5Izj+*bdRZ?MTK|kR)$^B5lNzYbvWomsz`^tl^a=#a*cA_1856x^<_eE>nJC^ZF zZ`Rio;H#$)RaeAw`OvK@*LUG>c%t-oQ+;#)O8DOL{GsS}3B|)c!Ky1%U2*<63EgV4 zZY(r?MwxU6HQSl_AAUd#7pROdg+N>K!zt)imvt9G^Ow;k-Dy*|jkS!6)cPtN8C5Ix zn~0YSpj$)MT?@^%f2e-QjP>{rT@ehtO7}E$Ys$J$pn2ynlkOM$l0E-pzwtO2=s(Eh zU}?Vs9LP_aF7`<`)>)AMZN7s=jBSTU*v`9cHiFh=s@R_BB1v z{YQH+e>_VZzoI>yg>D^LcW1c0uEAK7?&0DuWB#MQ^n)76S?sqW=+>2WqsH6oIz~Vj z@k7@U6K1fnYmYa&z$Lii=`XXIt9}-fVVr}03-&Ac*@@%M7uxBne(7d=H_Q0M7=#eW z1!I~BQ$lb@8-FRiT1EXCAM&~1^U!}o*1rPnwSHF=Az97t>S`Onm zZqG%O(^4+yB+9rj(X>B;7uc1(A}&()hqM3h(%G;=pK%fOFG0VRtp6O^E|Jj3dEn9p zzph-b^_OXk64|1@Y{JyL487K}-apXVLp`*g8fnYsyrTW!p_PE3P`JG-9yI>dY-~+x zKUbjtrmX)6+PWyy{ypxJAIOc<))ylNA?5=eF2S;6)N(#jx1$*4w2{kck21!v9BfC- z*H88_2-23rlfppLHFJnk1}@G+KvnojyqX| zAHb*8@i>au58^nu2K~2WeHUoop+1g-+xmIKSs88p5$B-I2O-XJ3HI<093%xjmF0-Z z4X&e{x8-u)ono&WhQ;bl_rdc6zn;U!tS!f7xanancmI%)F2Ty#q~cLsx0qI zB-y@7P+mK^ykwMhXR2wt-g!76*7CU1mf#XB?s=Nd1<)4$6USXC%6UgF$8MUv?lKnk z+r48i75>lu^;c6+qqZxa7g_%s(0y0dtvem>ZD3K_Rd&}-me;RJ{rdz2{n`zmo<{Wp z@q`y^T~Y6Mk)-}j=)WiHhd{g04Cv!{Ug`a&@|>)8e<=Fq=P!n;)Vl?}_Ojj=(DIHp z`C)$SoErae{xUUI)y1kG*rcg@8@e52-AT|qL0ueQ!3RRZEXTdjNJa*rZyViXXaIUm zvqvUWeKF(J9q7L=>z6<~GX}4VgsYPt^UV(NidPvdKG0YwFP#;F4@=-HDV(^71`g^b zl*6E-xq<10%p|~_XJRAxLS`+n{3WjJzhxy}z;x7ED}U=xw^nBZ5RSeJwGUM_^#vEa zz~%>`U0C#fVzL4DIdtGX@E@6%&W}=_1sXaJ`0|PktWxnx<9%3stSv#=!UPzU(ihJ0co)m`K7Hdqd_gO}7B-{sKK)-zpT%NTc7KwMjc)8Ge>Kj zRj(gr^~P5H8wL6|_UPXT)4v&}Z>p^QsOtF+jrUnKF0g8R)~fMQC9y~OH_5v3GV8{( ztQ*H!H=beL_@)&xta_%9rof%-YdYJaB zZ@s(_Waf>xvK>_~X}WdY*W2i7_ie4O`Mdt+rVsSrHQv*+u1&Q)R{9SbueL=h4ieSA zsz3KZji!#au8lWZ)%>W&6s3un-v9rxs+a&E-wNA2wd$*904U(f#tv1>2GBh=)%Y*& zYa&VWbkMlr6GLXsq)b@&2#12Q?D;Ag#r&_ZttOb7u&Nyte85;{6a??n(05Rf7&2q-9Bs!9<-MLKcYJc!gqUId;s>TC zrX~;NwL*VN^njofa!|H%m`p$781eh9hrGu<7EVw~TvUIgK@5c^SqmHENSpJ@HQFeq zADj!C8mVTIqW$d>N5pkWY>($Mh=QdOJ|@4mVAE=J8ZxfKx$iqc=EEBV6qVeS0knx5 zH8RoPzssPw1luhQ#12sMgw5o*z?}nylfz`L*ruPf({(uWAdvuHkr-C#Wr$UM}eqSEf4m1e)oM&Vtyl;~&0?Goo77LVKM)V)0>)43X(?0qsNeU{&;LvT>xP>8t~ zfi*!avV8Mj{#rcKP$UXia4%zLyeV^lY)9VSoSn0s=+RW!imBx0@i7Av5|eS83jV~$ zW*@Cy>(|4RAeJ*x_|KmhAMlOfHh3~ z=39jg7|htZc+r12or}xvFx9ALqL1j{?q!3sY=RYozqC)U;`6q%&|EE_u6|QLt|F2& z`Lzdmkae}++&}d^_(f!u&=4#H?$6>PXX770K+lU7kXE&S%N#gLj!UuYY0IIU7Bcah zuMsu@-9F59)V|ongk)UA;8?=HCG-{qR<3bLBQnw_6A_Cg_jU!gPxwvz=ldO-Oy{_& z^&dL8w@rgGvH1?M*b(-uswWpX4bXKlqI;r$2&=k)rx1p{=j|VVJDt7lv^-@&x>Tlx z8Phy%-(boj7wK2`O1KbX!qB-iDZ^}@v&JU}Uq|9qnS}m0kwm`i89Z0Rx0AbqF``P( zi>XtaRT}*p2fw%`7=AE*xN?a<@iF=JDr1Jy>dWue0dzd0@q)GNOd*KmjGhIGW@w$v9+9LPPhD3RF~AH)DeFm9|T2 z>HZo9t6zMw=)=+t2?BltFyg@Di*~JA*(@XQ6n4n{CRqW@dS9*6jm+L>Otkwq;mT_GE0?s65h7 zfLm$eH*w}8{jNJrx>n{;EW&)sRG7f$FtrHtL6gV3*!}zCI%6no6_Y$j^rSLN1Mmk^ z`Pba|51jnFE>f#5MuhlK!K)hLQ5;V6@_K5ZM#zwRA$rs;^aGjZ73#&|OQg1QJey*W zr{U5BWt*?CZR@Ohqw-EQk_8jgB28+1L>Lt{#~tgSYY z3IFqB@~aubM7g3LYqT}%$Y=43YlsQ>e9?Zp?~3+6FNQ9E7d*It0mxvMLtvau{Wa5A zJL8knIih4GJPZQMrfId35yc_9Vif&_ipt}iO63tWHwV;C`EZrT(`rR^eA*3DcFe5a zG<)lL+r+c5M6K}NuHfxd$|6QNTs4|BrTSB=zCEy*2;Mi-!TYQ}u$x_NGOE7Y{@r4R zrgH2wvH9Y$u}J$}nZDTRDLTgui;qnl%I6;lXaXQ40odTJC)YbzhrmNA1ojOu_zTEj z+Uif61iEd`%8ChoF-`04*M!<2niOG=+uD0G!;Vi7W1cgB2&e=8kkGgnXhvZ=*NSZc z#mT%Q0psQsF6ngJ9Q>O+bwQxa-gc>m3CDSQ-V9Y$=r~nPj>l;rviTpKj6zSOq8Ngc z-S3K~{a)lOPOS94>D7pyPhi#XhnVE_Z=A|FUDfcZ72mE`-jgO7=Sxl&HtL`CX3(zS z(zONWq%7!k3`+Qz{2C*JLyOv4qW2-TC}HpPD`F)+95|cbj!uOziG;ID`;NhieBH5yUd$|H1G21t2M)|naf+Y8+Ex+R zuM$H-&Ncn$9upEYrh0vDR!~;f^9Q0D(fJX{P*xt`988!0!ECu8w8DswSf7 zZNE9X6pK07tF+HBvq2Ud$8s1`<35f} zYChr{N>pz;n*pRsAP9%&>3q?IbnksaVGB?piJoarrU<~&tDbi_$X@L zC@`eUg!UnftdD5+h%eufZC1GO49d<;3kcHs~XH@X}FEn1NI6WD#aL zJK{wLr?w)b=4sRnkAT)7ELk_!y?khfa1#=mJLfLWa07LLcZ9%nZankrRZ&gVT#5=5 z|MO$=YY{fW?}SGOyi@j1&I}EN0r4*hIHz4s@BE;ZamtBKyj&&ZEb=si z`|QpVBb0b>0V0>l=mvq_$*%WnWOLk30poz z7u20OF-=6W6N&%41Xz_nF$} zH}RjZ9X7(3&U`SFmXA+<%1JPOH?jE&+V;70@L(s$S#BQJkM+}i4kh4Z8$KV~MqCIK zbq|)e9Voklv_ozTSk8<6^?t+s>`_sGsl(Ccku_&+5bL}My8#5*R`isP^_i5w=`C{S zoX^;JCI`>jrBIktvW}-NdpAHb^ve)r_a2#2q&=-7(yknRC*?Li697A*q9IkP6oVYp z3kJFZ#}_lfh$l=U!{`*MmCCq;r( z;dhCNA4(;BOn!ZWO%7j!w>9FcIZ%WN@yUY%UA&3ke3P)rk{fnzb5j2%< zhdLWL>*u6b9_|nLMr`bAIAEo);j<8s1ms}Wz2ovO|DZWI_3X8D4?&PQU_)ey%v+GH z2z$1{7CmQpJODOz8NgVq=U;^H#s*bYbq|vnO-}JOeOV2CC!Iyi0p< zUfMOh*%d6fstC0=0LtpP>qq@0eGggooTiZlD6laSL+B@Jj4WMDVgEAO#(y?kj?e48a>;v zxk@i5&?V4E=f~t%Lu|Cq;~MKb6@nbpTRQ296x+Y31%i#P)}X3Fdhu?wkvT>EGilFL>>4xI6?6i{4AX@5sVJ z1?YFScO|D|6f5dvEl?MF1fInXd%)U#cUk9?apemSYNwajDsCt)4&gU`Onwc&~v9#^_`jc@~YS=r)3v z4(*PsgHQ6DBSFk}a{5euOztXTW4qh6a77)K(y*8zao&j{awfl?m019O;C^GVfKDW# z6CcOlIUZ|%28c5?h3|qO{ooV%hK+U#RkQ|mwje654E>bEVf6E7%UZ02Lt_#Krs9T` zZdgyr695yxiI)JeWG)%M&0w}f5@ay^TS8d5A+mMl?AXa1*#s1HkxQ@=ehD%Ms%!UG zJg5LUKDonxFcafkNsxg&W5;;i%2J+%laR>E-k$j!{BB|sue_txugA3wq16K?+{}o_ zBYOt`;hPKVh*!-z8FpMl25Ej?k$UNU)j8^8 zkwNpg;aFw>zCW&E3al>vV3?NGzb7bCcmO+2loEw`W543M^Nt*)Ju@I zmDoF@Z9wh%!jE>c(-LveMM!??4TLhTeT)koW&Q`-jucl)L5)v3lpaG#<)ctwt|HGB zoE)f|&dHJ8QQ8T7o-qL~S}SD;-H`r?(WxoPqRP9^DrCrQ88Y%xBGcBfG(kKbi~_ea z{hdqp&}@S7eT*2S6H=>I*DX#L>?$;YsChUdwCM zx`YE0<_zw9@vEJ=ckRrz?zZs^;XrM4-1Y$cHbjICt9N_Qq;W|ciLl$^)g7(yh+lRC zfi%0On(Vl0BQBIQOxdSfvntN%g?*mc2@O7I3a1Cc2aXI67|^biW0k-Y*`&p90h5DX z+KAtD&U~q^SUMe;h{3r<;5m7AVsty>X{EdDlg-d}5`+8`8%}eKI&JdAa!#j$%!*YP z_GA{KmPtyLNkYn3l-@SkaRpo!HOamr?E!4v;d39dKZ_R+$Fn^d9GlpD(b#YnT(;Ao zJ+(51J%=N45mB63%jqwy=yfiV-~k9Y`$&l!Itrsp|5QAZR5I>tnFzyo#5TZzb!YRi z4WKrOXa6~uP}l-dO9ea~07ev4>@U`}iFGEu|NSm|skV)Az}Y#s<9=B>J9dXqO@zrG zSQ*ZD`{5_Y?UO@cqTiKV0k4p@0)FK|N+*^;e6r`+QSKI1)xocim@`)5$ew+T+C5z; zLf`D*cMe~lKs_xWCG7*`*82h;~}GT0!KEf7LlD z`u961WE`Q==*UT}=VywSA_ZkXu;5?f?0lK+dPl0f$OMV2b-1#xmJivrMZ)D|*l39@ zk2Jr`NeR)hDW?I)CN|$lY_hBA_12??#c(9BK%bZH9#|8M?>&Srr)&M)FBUF_Uxb>P z;^WFN*ZC30FcXaL0XF8qANqA&XE;Y(m}EzJ1RkO;;B&GBVAOG;YYwM7y=#xvEdKad zdkTc1%N%jGf<5e{uWo!mAAmzjf7gSpP5kD&f{h88{L{RK&S)u@+67z|`11n(&4$O- zetU!i%L~M=Hf_VNJE@-ceDk$VRrr@76CukuK9y=n($bOhaa*KqP}Oi;@tD+EChd=G zZY{8SGW%IP9A}WL)0Uyu!yl}bTSHT;u;ybHT21-bcIy-~Qk`bve-oSU5H>39D&y}> zrJ%_y3_H%_R0-o_^6M{bav(hL(@`I-6jYVjT*Osg8)u49?U3Dbwd>?$cAdGf=XoZI zXGGhbjfww!i?PYjFa30~qhlR4LmQPa0?BWs$!V5r-Iw-ePZiXh(gkZP^_As>d_J!Ia|Wl%yDux-Q;;IzEr4UG0Ah)3_1q+< z@^o-}-hrlxL`dUzXVMTy(5#zpfx`uzN43mM2-mlI-ZCMqZ9I%f~OigLVm$cz`6PvF$ zHUYQN<~sEz{i8u8T#0sv4?Ci4sRAXT=!6`V+|r*oOpV)q`S2OJmWPp;{F+8(l*hQ2 z5*ru8v8dSpvf8F;V*gPl7+)zU!7`|H)7F1i(W!Kz2Wm1@JrJ6t$*<3`p&p@X%p0`# zb9T#WyuhPiZ-H{XW{RboqDd--d}%WR#DTMtn&F~A9|CQ#`%tcw^E<1`a2|NfU{ zZc?o}Gl~?iE1MEW|5zj;{Zok~{DDjg@U36pX-fY|;3$E3+y;|wRp$FLNhpIogL2*| zuJFL97HGCXXAyReA`qKgBXoXH9PcOc2}^e1l6>}NHue=Tnel5!2Rw3mA?2UB?gmY? z-?d;;_YZ8$__d>ZTRJ&WN?tFcAL1Z<^TR>7tH#c@t6}=>dnZl&=bHx@1%}y%>pi0L zRd#SOMz{tov78d4eEO#!iD352U=Zu$KgWGXuTZW$Q?po}8q0Gk*(+s=k169M67g{j zrTY#g5&C+BK11}Xr5{Gtq8BBKlAYMo?;Dgg;1msk8e2ZgmMI*sh9)KsX)*|}WP!|& z$uG87IWJZ3*r(!31E-vtxSky8hsITOuHdo=E;jQRI_QHA>3Oe$>ONOs57mK zpQWL9%Os+5tcdUaIJ+Cig;@vd1Bqd-9+fQac?rx!uwi3Gf<54x)L2g#<*{yOzin*U zt^~MSpWT<+30VdZ<$;8(9#wv=(_ymAipK zG8UAc^)%kzX=m3i9Nhb%PHSY?a{$P&b6igq&leKbL4zI^H2&CD>V~8+>^y@H4{*jw z8e5&VAvk_aerZm+Bd7h--5I2$&z*jC@fUX3May@|%&@sUKu+TYxpFe><_sSdtmwui z;^~?q)fkqWvO}1(GxtLU6 z3I*xVwk{u)$L+HI{-_y^AOmQ+h6Z)m4Y190R+Vr7*-u+8iM(3zbka0 zGxv&!qW$>d^de=~1656G4zw-VdfFE~SzVl3=bD=%XY%U?Hq-zlu+QG83})N_|9>L*u3l-ZG!Nv#l}l{3Fr6RsSepYMfRUei!mIN zUx)4djc9#E3)DjU@;{fB6T-*j*M4lQvLgoHh;RlSR#~UqNZIh05ZDW(Esfsk^a8Gv zM3dy-gcxGlrdu?xtb4I6iIf49Cuax5UV(?*Wr3J(snZc#Db1 zn6fiNWc5LZVS@DS!NzQz>ou(z>zSIkwtX{oyP1UFl-WYDT-z1-104jmBjNelcZ1UF z5A@Y`95Hqr*URS~rivvnn2JdOB*%ugLO}Wv$Af9FUvzpPSwYjgqe|^4lE!@em33S` zHUXS2roZZ>;F?bHWEzq^Ql9t*#_VbeV;f_bnO-<{#%&wN>B9f~nEV=#4aI|WXZm*L z1omT2m-O_D6H+bQPIvwxk5|z)0hhxyFynUUisge1)U?=R~9W)p?z^2$%Y{wvWgX*7ze~PF_$|Bh98q(JCPssm9Sd9 z(NC(%lCT{X*Q_u}lV79l>^ExD`Y8Ju$7ZhnfSk#%yf)nQqt@5hTwI-ap!D#&iOu&q zHfgKY*{bhR)h^CSzpPLsO@4ijux0nu=i95lI}P0F1(KcXtpdLU6?ritVfsDs3?X5q z7PuEVWt4Pb+0tBB{)E~QsL6gIt^Tq>GxnZ{N&N~GPH#3GG4m*kEgGj4@~i>)uhn_ z?7+vtdUjg=&L3DP6}+NHEGaM%wXc(1kc*z}InX&L!6MHTEIg#y)ET#ceG1+*;5DZh zJEvlmMQ|Mva9zUac9(v8q<}L}Hw!#4T0nj~#1)0Me&K{D>w|OU38|E3{sgeh+Q#~2 z#nU(fO*GifBJB5|hl&ALW7oI7A)a|J*?n=g)V}Y869BmVMD&C!W35j@3perGHt3%zh8T zh~Y$`ze{`02<;xkxl)awY@59(ZH96Y4aY@WLa%c!~>EuRSXv}z}k)>9@8hOP9XuN*s9berNfUv=?MU>op`L5!W2{a`tB)b1+~_Kj@^RaO z$d+-g!u2UmP6CdM%C$_=6yR(b=PSfqDh?TrpM6V*Hzz@Upj7TeW%kBHt#up~u^a{K zfdWyP_|5kUHdcr$Lksm~>Vv#RmrrlvKOZ}50e}3~Z*+~((ooNnv3lCMqmr16ejEg8 znJW#x&L23NP4|8Xi6_}5e168!2doZaJ)E3=piP7~>4g0?B-9>cPH&ju6P^{tyPsiK z%}&B7JIqYGzd6SQ*!PMCOuzu~G5IwR8(VSKVZY60D;7-y*$a#hK`l5?DZuh$@~b3b zMEN3NMaSmsAQF}kv{p-EU4Y7lSnEdDkDRuph9B>!@EY@h%Ukt6FOe}bR0rUdJ2Z+3 z*;f)93#HL8KCnGdD6(@#GVOcgO#J6N!H|%;rZ?U_%hHr>G;rNlKoju?Lu@*B=}H!b z8t$aCgigl3gLb&EmZS%ZohunI3$v#e7ad&db0Pr#S z)d(TuCO(Ai-`rYfLU>#L({5=J_;UbI-_U^5E^g^k3`e2_g$LacBwDmi?%XcdVSy&=4=bLWb zg$c&D97#eP=+Jibp4z;)QVTRCtcXtcx*IA=Tct>Kn0C*wKYw;QPjwAWb`}BrG(=e; z4v#GmOGi1Vb4zz=$Bu=KHl%A66Fc8fY|}>`S#-j@tExdm`xexvut$o5MW!kx8}o09gb#HxJO9%VkXxM%lH-JtGd% z&fP*Pp$6aSU5GCzR$ZdAy2Qk9zCqYngYV2dpNH*E7Ot8N4)`u6{_}l{4Vgxv>XlMD z(z^~a^Hcl!ZWRTVDT$2P!ntyOesCwk=~7v4ES{4Nr-*M{qzSo+ZEJ(O3jicrCw znH+{Z>&a_OJ1?(3?G240ceZcZ_a0e7Y)nyK4R?W>gbnSxMz4WLlE^jqNZ z3-XlF-GiumHe@d9ATHDtByGUsqO+ZR;H{Kmp_6R92-wc_BRh`4eR@AE0y(Ih#Wi@> zdAw4ZA>%-PMpRnVhfOhkew>R__}7kW9t2jrv_0R&v(sT*feBI@s)9dcCpKxtw(w#& zN*}fy<5dhM7~cYHtgn-1-PrHcSNpj~ErQmCyL=7knAm)~kRQZ}q|Is{`-oFfPMrK3 zACq5wu}LRv#m(=3(L~ zy-B<6m|%U!vB~UjZ1gD3>E-0@#-5cV6eigOV9e&O zMoV|GVLI82O74tH(SroE*M|1&xwMr1gQyZns2pyRr7gb0AJP^l-Weq>u)tSwcQq1g z3XE0wL{Xop!huPpr*xBGO>Dk*u}K@8FZ#^|Hg=H&QGeBGvGXz%DoC{#m~Qy9mrg9b zUlBhFCG?Q?%+1p$P+T)7CUkuD5QvQX+KOv4oe@n8x%Qh~ow*3|cHAc*$o~0GpUISKgR4Qo+#kJ6kIGYS}W5t8}88icgNu@Qo}IpbWp0ff#t{K z*IaB&XpYKvzhYJY&+h55m5ajEuo-Gc3K=#Y&*8`lkVSn`D zz8oxr{H1``EtA934B3>%Ju`EF@?zX=$pqnx!p5wQd#-w3S-S1jML99q9PP(S6Y)d~ zaVW#S4JCORy7ZZyd6*QO(aT3_29GHcpU*f@P%Ca_AIy=d(>Hc;4`yMY>YjM=dM0{#GL`iGFvsc|9I;$75$_C$9U3!CEYUK- z`sPC!oeSc+^32}n9PdIktX7_7Xa}LfLb~?k``(UsK^LTh8cv>azfcAy5K7mh^IT=G z5L8=&p1i^o*}39GfK1q(*)=D#WN{MTN!~!MR_M5H#BIws(EHtaQf*yjz)yL?7@rL9 zd0+s3ijgm9Frnj{i$Eqd&lMBOgELQ_r{{P?p|9`UY_nvb6 zpZNd&A6)PMPuXMtf6FbX|M@>v4*!k!{~PV$zvb}Xa&Y@2|E&-Itq=dL4*~!DzwP0_ z?cu-e0gqUP-yCJq5>N1H9z*FPyrhYrU-lOEh2#~lW)!c7D!Vem*9}|9_R%3mT1b3Z z+?1#LIOD*VIQ@;wYk%_08y}%FH_9BmDZt=rloNTLrgdXo}A{Jzo1`; zFN=>+G8he0dJjFpypABEw;~u!JoFn?2k#KKgNaH`!~>~tYn`(qwHkuceHnbk?cj6- z_m?NQw-D6(dytRZ;{=^aJUNz;X8`@ThyD}fsZT)1O$40@50F(!%>?=%4}A^f-NT@V zrGbVee7tVUutPyVa?$b~VR?^4_{v~qzIaC%C+_)Ky(IR{rLj50d@+wh&N8r!zDzz| z(PChk5!ho_VA(|hy@-IqP9pNnW9DO3S*vQ#|n9$~P6a?Ob{D}wHH5z&{OJE$&x z=jYq^W3O+E#T&}zZI8XUBQ~qA@stl@zxAA#wvz@(wBA)rn_&`@bEL(!hpiGWT9x6Xnn(+_$Z zH5yJ>v^Xep1wn^+=#wDBegvImqD>QE*pZ+!dguxu6G%TwvuR!!CS3@0CJ#Lo5FL%QDKEMWK_$t+O!7 zyb8L;&(JtF8gJfXkDzM&GoZ72=yo7qCml1b}< z=!hpqAPiB(7e$%#L0_cC!U^^({!|PG=v?j?K>L1;@U_7fl4Yz-7qin-8gyOVN4lX(iRwbQ-ZZb97M3{m7J&;vyg084&RpTpyj_}Z}K~5rFWP%;G>IL{P`+^>N9ms;WKtE!-S=W`-D}#=7 z)50=!!EX2+{B30!zBW?TnJUmJ)MTeZ|`po@6u4?q^Z1G?*YJ8V_1)j=2a&^18zCtWoSG|Nb}>l&b+@z7I1?j_ws z(aJJ4K^Jq=!ZN48-X?!p^}vjQ10eHS3p&N!I`Ad(+>P)x#}@K%tUa=-0i!nP5+3?R zkTXapag1k4DLd8yUD89Z0{H>nF%a_21UqbHnYy4$dFaz1!|sD#KH8>Lov8=f@X*yj z&L$l;-cCsgJD2rAmv+;_GMmBPAm2juGqjAV!wsNQ#;t>QeP($O;d>riNWO^+7K)Nm z{Y*p9Wj*u&kVi-_90!_~QEjgg=yD$V8ptw#fUZm0-BOsx;p>16EA4EW zSI?O4mY}P8=tPjek*=xIt;*OE z6+<+1>biB{&qRTa%?*vsZs?)!f&4BU^lf@Sw7Lqr3+P5}T3ANUThRAR zKJf9X2c~6I3|*n~oLdJTN?p+VsL_)?2Wyz>_qu^@?4iE{IV3;mtK)52)#2`-n|SCc zAUhQRosk|2!&ZGk5713LbRx*C5ul5!uoc}CbTbcK3gigV?M8dj-3xScH!UnP7i{l> z;47+rhP8kgYrzZ9Y2ns^hms6>Mp*tv`W z-P%nH%fx{VEd#!%sx#~*iP18A$8{UG4*Z$Ypchc%K79_xplU%Z=(ZmEB*=qhnffud z&r!z?yFci59{NX+v&w<4sA$!@$ANC|q2B|Uqde#q^p#k{R9**wj`q-1K{luWx+BAO zw~T?HJGg0KnVw)jCSPQXs|Qx)%9~(2x^>{sTn2r$A~aH!&r!n8Ydq*q9y+uV!p9a; zcZ}_GsMHSz-PuEb2eN!+&`Xr}Q_K!~2zx-ZC!qziI}gO;gg(?dab_0Spc%)V~b zK_64;E@{)lKzDP~!ZM@4R;>ZP>qM7jRC*Gi)7`BDf2KF+Wz;yW`~t2}V+~6L-NQp4 z0GYog=&_1c=@|~Xr-!Z%@*mPym4~9rC<$~g4_&NQL0>AiklkZ#4@He+e$X#?=v5%Y z>VV#TXS3*vs^!K_}L&1AitJ^hRn-q+j4}-J?PG z_t1wycIX0nxteiNz2q3saUOac$lhH+Tcq7q9}9YbhaL~|$8Ml&(z9}>WE|*$9{M53 zd_5U9)6L#gd6DBm4|3DOGF8EzBY(_2KciAV0Xp$+9r!ahK%aRL8WZVrFb3r@PXs;K zLth8^93HS4vPJnEik<{|h=+~^S*|bWRQgKnB~|-)8T3#O-2`OiexP^LLt#qPIoT_q zhk57@Ah+YmxFHMG+>ffg7U%>wEiCgD*jaJl8>-gi9?vF2C(*3~e`Yi2w+BO`h??h6 zW7DgkhkNMHK!y$hU5-8n!&c| zvaU}9o$R6eg8Z9ws!EAU_jJ%HZdzETYyx@>Y#|-pmQiykGoX{|)`36sCFql5p^;np z94hrQL67jzH$YB$8FZ0xw$GtF&sm^Hdg%2ai@ySTEP_c@PIJ@3GTE(yzH8V*HYm%`(^ILR2c6Mw9r!aEo)|ZO z3N&WYpK*IX^FfdC&|5*~n+p1(qE$&P06o@2*8ur=2Iyn-Ip{?ydLig>9=h<%g1%>G zfz~)vL_4Z0Sof^3otnEF`UFb5w7-9Q0&2EiCgK*maA*Cn zX&$;g$OEL?jki;x#`x8sr+esIAisPAw5GftmF_n|&v4ViGIzipSqc6Z_o%IEx@eM zd(c_p)`36s0%-FCX!KN9c~lHrKri*s6F`pq5cE#vMX2_%74+*KdNIh{J3)s{fQQ09 zOwsRyUgn{n1v!RvM-{fR%r?-=J@guoWp;tyu6!ls&u$03!c7ayJP-Dzec&zC1LOL% zlb#*WdBd&4>rJ4a-4Bh23gMQOP?+01@2JUHx#YBvHhUm^3V-I{&WKL zOnN9BwN;;b0Q7nfo%>`#-^4FK7x&VifZpJtSAZOP7Ibg=O70Q(5a^9=T3F^)u>HOP zKiA#Q5Tor6LuZp)2mZ_q(0@~7vzkLusXqexZ4aIAd_i9uY$2=Yb1*%s#vcW}*+Zv+ zto$wL+!JlOf}N6Mpx^P(Z9pC&JyC_N%IG-gcRlnkAb-CAdbxKt=Tp${xoKgUoEHoF zk}iSYug;s8dezT-2AwT#9r!Z~L4WZbG;Y(2AgyZU=b*QG=o=v4`w?_Gb#;mWt$qUZ z`yTo<$O+d#Z&#~CRBJj3dYgyd1hUFcpgXGh88vd80=?Zsw+C7OXVCkVAEx@p)1Y^_ zX=BF@B9i4O?eTj7Mub7p@+`>;9O#cc^m`!l-2pvT zrCaqGUxEJEO$*D^1e@m`_}uF1t-GK38alh(I`C&|gPuT*?aJpUVcYQ=(0e@e>mV!q z4f-49a}c1_&x79Up?iWnLi&)Rl{fY+=zSjgN03^kNYny)RxDBF&s+e#-$O@&{3bhS zLoLQp=S>$uA8^ycGFieReH*cbEOGZUyz7>!zXY9wZXNhDCqS>v1C6-xwm+j<(|4dh z@zA?L4h;vrie3b*u2TO!=tCZQA;>v-L09DUCgxT3*Ox&b_Ru>)Ud;zOm1}d{^cB!Y zJoFQgoAQIcto#{O*M9(g)J+S^oB~@V0{mEYM#&gdE%*^S$J{#bXJSCtF9eO{^f{PU z-T_QIUIl&JL&t*rz6j`1yxzpoMtKp}K!56?vlNZ=&BqopmmZ2cuRnqQ%tLPnS?d|l zYdKRyTD8=lL4WR{yMtU#dOQ6v(y9;p1@s9wEi7{qZ0_RVtE%%R>L`EzI&@CDb>Pob z23@oyGhP3L*eg%EXL$?K)Xn>ANvuQOq`Wxue9(q2=h%%r@scTuPKHdQRg@dkg}1!>E%EtsdSgHOY|1#FWt1T%u2BLDu6%h?t#@j;P22m>(+rk z6J9aW7lSRND`#A288wpK27S&$&j9(j3TQ*Eh*9Im9nfES=pt1keRr#aZm4J#_Fd3l zd+0(nB7Ntvh1^iIs*m?Tf8(L=gM70#=-kS)BEY(SAM|-QEiAJaY~MQIS1BKuc~ySF z1L%C~)}cQG`b-086j$>cs+ar&^aT(7JIGHOg3hSCAJxzN3HqXkz6G*XBhXis&!O!2 z5cDMvJqYCC#-I?fdq@X)P5R_+Em zPR-BMvs0qs*5)5QbR5X>JwPv4D`M2u03GyI54{cKlwP2ZDSt*?oyq|Enwu7u*$sA6 zEck+|&hTtS>4ZS%C$|p#nXf>{4TMHUdJ&|R&yf-I&mMX<$cKYL8@z(#_V+V`{>4L= z7!v6_fi2{lGbT5!E4hP*tr9|~J*+Kv2 zriEojfz6u)exh0n!PcZ|d>C|YxOM2yfL=z8?erpOnPPT&a)7?+p+5%Mzz_Nmy$H^v zsv4gY^eqqF1LO|UQS@gRwrbb8K>zNcFMu4G4En0_XVk25ZqT;+FI^oc{>(+rka|iU;RA}^8UWDo;^MbzTpuAvVl!u~v-~yok@X)!(MEc5409{;#t?U>9 z`cF44EYk|?tCPSNbbER#^#!5x(5(Z1W~>!&e2^k-Nf zE7&!x5a_=>^l6Ywr-R;#B!xE7(;33WOVDmpE&^f{VmX# zsjdmB)RzIB$wQw4xpyn*ir#BNWkH8}=*u9>ZU_Cj@=%mlTMl$)4;=+^%MQ}YLs7N2 zJm@SQ`b&`aJ^3d-O#TleeZ_Zy&!~D})&iBD3ed^s)`36M9CYZ% z(72(l@~9Xpg3j)t4Uj+Y27O=oGs=#YK!=&rif&}5zB1?>9{M53k$XYU zrDw$wRqdk+=$syUDabeWgC5JdANnRL-Bm&7a?`>xpMkx72>edfnmDp5->n*Sa=Ufl z&lEWv>6>v38olYEkXEC1biP4a>`dyo?cDR zc|CLskZaC>UdwA)9QRaSYk|(^p^t$4<{Qv4^k>{-YHiT@-L$aG1F%QWgWsb38QNZr z+I65)z^wy+<__r77oagw&2y+(k-DHGJoFQgRlf&aPF zsM=c}bfkw~0rKk4piisW95psI0A0vKXZR)3m+LxcOQl=Y-iDwHyJ=yWMqu0h3Vx@1 zY*MLj1f3#o9r!cDL7%5aKDBB^mDF>fi+X77H`IcgpdTrpL)}l(81yq9`gxEw{{THz zt+r7$tO@919=bQktq(zOP_(j4bI`>-^jVM(9)mvQO?L~>CET>IOtB}Cz65L`$5cPV zI-_bqOX!qz>%gB`3i_Q4g)p*m6)tJjnw|$;%0qtwa(rgc73oE=4y*N!tw0+ddO66~ zvyrBULRyt;6zI|(dKbvq*+E}a{)`%JT7xd*p*Mky&Ix*~=o)TXSf&Hme=35{^0XefCvPoLR4U~AyD~I}DW8J?Yh^FcwLEl@DusO6 zt1^799;O{tpZWsm+8(+t$i3A;$0?sfjgl{duH&Kaf;4M@{zdsSRqd4Y23^-f&jk4= z>AK3ZQepQ2UC&Jm%apBI$hR0BEOO~hCW;-J&Stpk6iX!}CGMc6`mt9g!Sn;rnV zsfRuevR5?dQHoaOIuLX-54{@X_70#A@#+-4u@-jNgFrX;&}Tqa?g;v!S`nk#HD90H z!b8sl*|-zvuJo)J_6v5{gF&}+)50>bV9%1D=|0ykX6p=r&hu^^_%pXapEjXUS9uYt z77PX5%0u4-Su+N7Pu>m1^eA6x80aVu-4Wy`v7lEepMwC)C;@b94}Bfvrv9KmSF<_l z?0GooHXizOkjX0%aFAx0yWbv0l|3cbbhhGN$f`@Ja^21j_7w7y8X=RyLKx1jK_y~^x zDft>?pQ)fPE6+;x*B0pB9(oGMyfc_?&MPr&<JBSG&buh>ZgG=J#;+C9~Xd*p@+isD35tM=ok;3d0`>n!Ns6E zdc&Rpx}S%>4084|&=-|Iqk7<(pkqDsMoqw6M%Xu*bK7ALX98 zQmJ1Eogr==_%k;_SN;GR4b`lOvdm)8Lp^jf$q%s|Qa*>O@vng%=AjLc8%Xcw{0z%g z%|$H%o#3I*flU4wbX{I=;w*&n-Ijt*^w8@-7TygyUZq>D_;?-ka5pV1QxEK$YYQpbnf73(oB&@_&Cj@N zGw zO-T7}Z-buTp|5}}`X%UL%Cl0I*$jH3hi(Kijr3Y|f0Lr$0X@l03(G75dxHE8_ZcNI zTJv4#yzJJ2Kl2cDvvbgR#5KFjtD0AM5A-V@dK}1H7eUvgheBHUGh0Ag9=Zz1{g*&j zccA0cjEm~=-Ut1vhrR_e`7-DvweClSy$$pfH!Uo)0PL!3 z;CHGXnDa%dy>5rjRJRVii0?r+`Ux7Js~MLDwjFnXp5~#ag1kbyiMrm@%BDX6J>5fR z{kf3urC&hjqlZF|K>11^f}Y`_7lM5FE9kYH&0$?vy}(Y;Gd*;{-wOFQV++~h^?r7N zp5>;6WzK^2-DK$QenzF|Bk0U_>%gBW2Kp~*JXBtUvi--P=XmJITSz^&kQVeJ*t;uw zH|V(@y2$T^e50|2lvDFFsut`4J{sYytg<8f(@18ATrey~st&hff*zFw6M3 z5FS7l`cEtu=J4~|Ux}aolc@U|<62@D@r(QlnaPP6w;O&Cfi89hnjJ|n!q$6WGvU1>NqAz}RL#r)iaimZ@V5GH!G<{@ z_rq&P_`b20F|jF${!#dEf#4WpXjrC2=IoUbzQ@=WxgMm1|9ovuX}*85VOhSNHbgIC zo3BD(Od*G6sY7B5kv_91maEUiHqSn1Qh_}}V9V^l<^>1E#V>PJK*dBrH3yp85J-8f zW}oi~=rICXZU;0!y#-i55!gbJP2MnxY{Fh<3k3Bpw#84$=o19F!VYq=2y%f6f#oE! zDFdWU7s2%AAp}(ktLNw2%>us*oB6OL=M9xQJhgz&$xC?Sx7V2x`;B+0!{Yq$vG(gz zs3#uczu=wqoVb@v=M+C)N#jBUQ~GGTiM*&S8T((?Yv%Ew0R}bsT+i3(iAyZqqw_`m z7_cNV3o>mpftM}vY5%SDF=goSN&SC+*9+MJqoxdCW0CB?zxb7G(*qlN(VQw>iFl)O z%BUu>v2n@Cc;|y3yZFQem;>x3eb72u@oB7lc>w;zhwQAEe~k~M!G1$V`e20#*Yybz zw*<*>gIEzP?Kk4x3&#V+75qwR5hvQ$x#=mPtP3(6GBQ=vKYrkPXrL(5zb1icPAhV= zXduma2SebcZf;YEvdVGsi*EvD6?p#%-W>sJPeOKOr)`E$J+g9*onY|%y+z6;p&DXjhGu#kllLk{H)X;KK!I}E)M8d^6r zqpx4H45}-^R30uu6~h+wl&+#R+V@JkeM2L|snBgE696SVFEey`){s%N#Si?kXojJo zsoE%thp}mIf4DD$J~ZP|Ei7+lGxRg=`iFkP-HV|=b2mW?{h0eMq5HV&p^kp!(U{Qh zxqB%za1?=~3tCu2<`n+NBZL-#&=5)lLb3n*kVhRDVFV&X^bv^O-q{LY^2ebH`JG2o zw9r%B4`N~>keD^tWvzj1h2GCzG($>gl4de%oDbocb92tjCwyv{e4wb^wvy$4v#K00 z*@8asTI17y5bb-Pz9e!MB;n zcd}7i##`x=gM0{rPrP}@^(WJN6A2*G{!X*y4CiSt@lkp7=Zq-8a70hr6mKv?*B`K+w8P^cF02d} z%s>nu2`Pb2!p*zPhKf6OR* zfN_N&%pKYM&FOSdoEOK)6o~(({amF6i#hncn6j8xw>|v=s|Q~sXuqv9J`TD}Q`Yr2 zOYy&;7t+}OT`8RN2UZXMr``d`D1~`X6fel`%KbWRa(0qL*c%UBzQ{BM7bVgJlkKUx zTij9eFE4#e4w+j!ADMIsQKT;D8SGccshClQ$4F_6CxQ2sFVLA@< z%;7o?vW8{AL5A$%8E}vzECdH3xxzzmkS8o74l?Eq&xnKkVVQ7{DIz=*4kE)saS&QK zJQN2-!!qL_bFuKuI4BX81qWG5g=fJ*>9DLg$XYf$D-OzsWy3+X3gOvsP$`UQ%U&fs zI}WOah2bEqMtB$wYK7&%L5@1%IdD)fEGG_fHVDs&gGOPwaFDBUcrF|?4a<##+|9#t zg^5P(Ghw!{O=oFR@2l={$=fgp_u>3g4-y=Lf z4tj+Zz(Ii*!wcY`Pgn#FBFyjz9P|q-h=YRt!wceIKv*OWA_s*>;$U!&ceJvdg)iK1 zcz2o`=Rko^lu0@8l;o_T^jEMVJ||pkBTcIix+Z?8_yw!D>b&R6QQ`al$9wgRWvt*6 zj^0t!$yKg_poTpV2oGEg1h?G-K?DYZ{!9{8wC^YE&!Bh7n1b%SLFjON*9jdHmNzTU zmidt#Y+lvD(y`||n5(@xqBTzmTE+}bjp1zP4c;Te}{ncs`dI3{ySNaLLMvSiDU`E4!a z#he#1XUmXv&W~9bgl*Es%B1XUw8l@bVZz+#98UcFO+lJcJSAK7XzW@7J+Bx8k~1}+ z{}o{Pa_mlV1LEM(#m0$Frc#ZMgpU?r@K#=S;`ZBYMKyogL-4)T{DE!rHGCL2Y>o#< z%V#Lp&Ry7dF>hhv1wD?t@*icRHU%4UNHoVGCcq2ZUGJu>1@xi z@UeqalS8Kv+^m4WMSV**j&@J(0_8>`wm@^4&CdY4S)38@C;hx)i;K3zd0O_ z;=Xuu_>J2XR@@o>$-Uv2kGOJg_?AB?eDlZf(~l|q@_6{IrAc5Gzn*k-SyCQf4YqchZ9c{Oh%YNi&Zn0p4;f>FZA^Joq%}>}UMz-e*bMPf+XA6G>}M@t5PL zlD<4mX6hG756@B9^i|T9^Ze_=`J~%d2rvF2>HF(Rd9=oluP1$RlfT@&nRMzdg03tgTIqLnc(MN6a2>~`w`%8ll_yX@|V?9{X3>p_-eZU?koy(XZt@` zNa4;x|JkK}z%yR=A6!o1@^b&8H~jg1jkmtxe|0sPH&^@rTti{;TK|C^enfhEhkxg8 zKa%>xZvVss{!CiqH3$4#4*RoejZYu;PydwgrceEEoTRYtq<{7oemwhp+ZX=%XQ*}X zjQ_v|Kc3Eh<${0SRsOa2s(;T7Khu1}Kjk)s^|$?-?@|5aJ^yF-srCDP|D}igYw}$4Kh!~A}#8=ZGz`1+G9SzqWr)*JVKU$02I^#;w2l|xDRFQlrh z{DC_(zC^X!U{|Y2ByJAcL52o)A6S!tieY1-yALdkK2Y@QCHeohR}N&* z`)7QcrvXDlmvQ%E=z8u3h4RO&VuZ2#x(LQ0W;9(`8iyi{o@?Wimh=9P>o61IQx!|cWn9s zMYJ){@-x)2%Y}WTESJsha&d-po^Wb!&q2B1+zqExdF6Q)PvL%JiO>ys%5WaCp?-)} zlRZ@F4QFz*hvFPUKiIE>dLJWx<7c3EG#AdM<9X8AbUaV`m&)@L)?)zw8w+MFAuU)G zJsvIipN#4}ciUuJF0nBpbQk*+Uxvtgcps;J%+fX8(5(!*Ze*}RGU!LGj3N3FD^o_@ z2+8&k4zI6(4o_DvkO3}kNVY%W+h)r42b|i>ISyOdGwBDjJ$OB2(%}Pfckg7)amWe_ z#V_~q%OU=fUF8-tfAjjWvS!AXt-^cQ8e_PSAG!ElIdI33?l)DVG{)t+AKC$!JMq3L za49vJej^JraFppk!sHvZnSP^=$Ut2yG?Q-B%VpHJGKcC$11n2r-DqfK&7vEPtZZ3z z<2fsPHr;4!g=N=`CRUCx-Dqm%%%L02tXw&Dqq&tkmu|GM^5oWymR5Kk-FV*08?GCz ztbBQOBg)F3Pd8dy1@h}g8!MuKZnU)uM(9R6E3%+&w6_XH>PECxxR7piu!C2Mt5u@7ZgjIsme7svR;iM@(Ze!I=|)ehw4ocltTLr_ z;{~g18Qpl%DpyuFdRyho=|&&x+48#4*Q)TWZkSfZ3c3+vRjQ~P{jAEBbR*WPQdu|p zTUD#*Mx0fxs%{Lhs#nvEfmV&`x-rPASwlDCty(p8W3W}bmTnBO>eSYap;p~Gx-rbE zS64R@torqIBhhM5UpIzZ4IAi2QZB=9HEO6E$<}j?bR)%T{G4v2T1^`3#t5rv6WthT zHEXIHFIml->BcClMRVOqvs$*$jnUTgEp=mz)#`cO7;8nf(v5Le>nPnAZ?$Qy8xyRy zZFFOz)vm2>OtRXy(~Xy{==Qqtiq#=nH!Q1T2i=%#b?T@auUefu>BbbROK07fYIW_R z8`G?AU3Fu+)xDc;%&>ZN*NvH0&mOul%j(rrH)dNe^wNzv){8Ib#$2oSi@Gt->eE{{ z=39OH=*9xe?5i6Ktr$}`7FqpbbYrm<+fO%Mv--#C#u6*8ziuqG2E^&c>(;;ly0Od} zG*CB|Tk(T*V}&(1UN_#bh78t?mDbQ9y0OX{HdHrOTM5H-<4r3uK{wV|!xMF5t(7!f zH`ZDHB;9z+O7`oew=P>vnGt!jqTRN3A(Yvnlw>2KCoV%q#GYv zue_`qJ1y%K-PmPKwshko>($A+@v$}KRo&QaO`W0}d#q_wbz`qJeVT6Uvt~@!js4cl z8M<-6nl)254qCHk>BcA4oY}f@$eKGxHx66#=IX`~YyLdlIBG4JuN%j#g$s1!xV31Z zZhUGjUZfkJS+6bDjnAzmuj$4KYv~f*IBC7UR5wmp%U;)w)7J83y77gzV!3XdvEEpr z8(&&0-_VV-)~c1dan4%3N;kf;-dwF4Ut4S5)QxYfwQF?aytQtvZhULKwN5uKSnJ=? zjf>WX^}2D%+PFbCzOy!M)Q#`0w>Rm=Woz@>x^cyNXR~hnV7>c}Zv1Gy_pWYSwYI#c z8`rF@TXf?m>;0{|@w2t&CCv2Rn4*H|xU>bmNA#^F!UZY3|#%*i&$GUOH+Ou0X?pk~I=*B&3-(KCgZ|&cw8xO1l`*q_F>)-+1 z_|y92pl&?04t=5BisIk;A(2k9G8jZalJ%9o3D;*70My@x=P{IM<)u`L%W2mAd)SxPtOxh8 ze^#^pcz}Hc&HD2X>?>;4!#}aFq*;GG#J;j-{rwmARW$3Lzp<~XS&#m~zM5t|euRB> z&3f_}d%R8E@@Y?SYGKrbsNwxf5NkoyapD27HpC1XMj@Y32V#hZ1D{bBVn!{5Vm*kN zw2Tz%Lk!h2QEUJ)vldFRA;c_NW{Qm4TJL$MXayjnQLD2VyAycAnQ%&+C6 z*al(&Ek8xP5Za2+3Q%kZv7i<~u|32{tsuo{h=sIBig-u7Rah%Tu_MGHT49QvAQsh% zQ0xrx8LcSAE)a`p&rs|NvA9-@VmF8-wBi)ILoBJ4px6UqDXk>Mo)8VK6vbW;OKS$j z7a*3=N>h9hVp**W#oiFhX=N$)fmmKEN3k!&XSMPaO^6k=XDP-&tf*C>h)d2^C9NXG zScsLiN)-D;tfEz>7zeScR)yjKh}E>J6bC}Au2rKr2x1MbIz_yA9*$)Vig>@cRZFW$ zaR|iPS}lr0A=c4qQyd1du2zR)0>pY+U5bei>udEW4u{x4t4}crVneL~ML)zwT0@G- z5TDZ;QA~l@SbL6QD#RvQV~QgnHr1L?90{?R)|BE)5SwewD2{^ILTgSj4Pr~J1;x=2 zpVwMa90ReH_B_S05TmqK6vshqtwm8B53!Bbn&JeAZM8NOCqitewWT--VtcI}#g`#Q zYwan%0N)lus}aWceCT1SenLhP({qBsR&7p*hJsSvwrT_{e2*iGw7aXQ5A zS~rR_AokF@Q=AF0r`ChwEQr0do)l+8d_n6)aSp^6wHGMPh1gqrk>WgveYD;b@s@Y1 zuhxg+0*I#8m*PT*F`7wn5yXC448_F|W3_%1UxV0Ri>0^(Vw~2W;!=nMv^a{dLma3L zptua;AZ;MU9t;(CZFS~A5A5L2}jiW?!0&{8RGf;dteLGf*f zFKHtwZiYBYdx_#Z5Yx0#6yJq7T1%t&9>g))Xo_1Pj@8Cc+zN4=HkRW15XWodC~ku| zK^sqTJH(0F1d2N#PSPe)`~c$1+9Zk}LVQL0zleJiu&S=}|Mx7!IK?=S#F#{*W@yZu zrju!t9Fy3_W@wT&{nh@OHa0PdO`#d+oLN*?W@E9B6=?>p3t4pM3W$N z7j(W!6uKL_z|0rA$8>c(T5TNnTxwx&exD^ zQL=mixAmPn6_H_M=SMsC=(yhT?8TN9rVE1|VJl5HhC9O2j1L1IVd>@`hCISDOb-S< z!d97{410uSngAz_8)1qMXIip)ztE23LTTd%oXBw@mToT~Z!#lvQhj-4j9^MsL zEp`TL!lsfQhb8&>zTU%o87vda^W#T}d{z1d@?A^XQTf>bX~c|w5AP0GH>@Yt7weBb zj}5>EVuP{wup!t`Y&bRw8;AK}!B_+qhb3YuSQ?gt6=Ee=C032qVf9!8)`*!&mPGSRGc6 zHDHaHnM@h5ZdgyO@8s7h1mt;a05%XCjJ<~q!G>bPu~FDK%nu93BCt3t5lg|+upF!q zE5RzUYOD^c#~QFk%mh#XtQ*!7>x=crp2r4Y1F^x_d)N?cC^j4$g^k1fuwX0#i^CGJ z6f6zP!3wbwtP-on>acpO0c*reAo*k6u%1|7tUvZVHUJxl4aVNXhG0Xn;n*l_9Oj1w zV-Z*!mWZWbX;=*V3KlVH} z02_!6#@@q*U_-It*eGlq=7$Ai5m+3Sh^1g@SPoW*m0*=vHC7iyCF>y#LK-0^m=a*! zu%5xvQhkH@>d(*Tu>sgXY%um7HUt}r4aY`d<1jxg7>mH-utY2cOT%)oLaaoBRzj+= zI;m8`cx+i}lBz4@EoxG7uY#y@w6KhGN69QP?=l4-3X3 zusAFcOTp5x9IOy4!78z8tPZQk8n8ypgi!#j8`cx+i}ep9^XKJj0KW!egR%FpA=prC zI5tWI(vC&QGas=g`pp;acdu#O7hj*0DYwB5 z`*zH*5uf~F3pa-8Tcr*txlir1k&VjN={T%FV}8ZnqYaI-Q*svibI{sJ|aKV$9HQUmN?)=#k&J z0t^@Uq1!M1-==%sw(&4sR6dVip{w3~d;9nk=`WXYTLCNZADgZ>O9fnwdi#~^-c5R! zhWvp=)}d@UKJ@L=)&Nt2x$aSzMWC2%a?=BUi;z1eZHy>BCWuV`8$Z9rgspG)v(S8L|xA=n5dy2J^ z9aB@Oy*m1?m*!%g2nR5HXmv z@vtkGz2zjAqDBn8gUs*5ovd%h{cBcC*UKSRsPLdjv=Gfe|v!dz+shU>{1- zFijf8&vD8EU{fRfSu!W0$L;;ux9r~vWgj=>f!oJ>yYD|qZohOpA{*Hs97COS4Ue4O z)*r9z zNCVsV;y+psSn|GB^kd4J3E6$r_L<{1l&ot$f&*^hKS}9gk`+_9aqd`%bl=A%E3VUWhdMZsc*@tX)qZ zEBeoozvd}lg*5$M5#Q}8K8x_KL*Ezw3h_Oj;y)t{_yO@ti0}0jmm$3R z1LBtv_wW?Ibhwuz5c4eaD~Rv&6qh2r@&jTg;+~%3myYyujKMr34@7*wr+6L0$Buqq z{3_xHJjG)W?)?GrYlt886n}QCmtzJdf2}#x`{{P_hwkB{Wz0Hs#3yp&*zdlUk>T$? zeT`w|$gkusQ-{?vWUnWE`gP(C^6W<6p6%the2!k%tBWPKx8gy_e{IRF&5WMZ|9me; zIOhG{1L!#n+}Z|ygZ?+I!s}-C(1l)(5f^b7`-p2ZlTH6=t4MF)^M>Waj!wHPPe_=G z{=E3q-Oo`=wo7}*^(GF3TV;a0^QB&nepiuaKBfn`+pmXv3;Ay?IWu>5`~isnTO2l6 z2SxjFv+tsR(=+@8lpo$e{ecg1_ott{hx{#fx$EdX0r3{^-mOP}*RK8Rg5S3snWy`I zTORx^_f|UEFPE`eUZ2~$ANz0m?-TfKk8*2ko*?YT&b|4w>)o7W-Qj3=YaseZT;6dn z%bonu`S)FVJIXQdinhq50eaHv(^pMLxTYm2;4@Ua42a$K{>S}OlJvqgZZR0O^{K4|D`iZvp z5FE04;WYRT>sj3WERVn9@j2>m@;`dY3z4392>GLrTXOlw zkd)^mp3y`4_I6yuyr1uiTsBp^_2r(t zA)fN|hkHAI`3Uk})&zlg*zNN%9)E7-q0KV|eLF5>c=vkHy2IRl6xJs={C6t{b{<2J zo)Y=%3qS#rDaKSlnbr~EHS2fu*4?h)j&*RbWEA^)qV z{O?HL{0Z{5_am2W!#@4_9Qohe<*v>8?}!h-Mt6U(-OXXLQ%AR& zFz=x~tig=kP@`}e>Rz@xc{<27q$_`oJo8a&uw<`k?#6cf-BVtMwB$YHg`7fZL)qKe zXyhMTa%+F=s{0}2fBijm@7nI>-(?glpYsdH?OQZX_GDfO^4q)VvD>?NyD|Ss$WK~_ zbe$KCBiu^Ndq8{Z$YYmc94^CJ6`E7C9Y{z20eL`gOD@wMvaO6q{;8)t80lC4g?y+z zR+CdCk$;E$GfQqC6Nn#=xb9CljOt~@w@)kogTv>Z@!JjQ?U;#q2RwpYde5U)d|%|l zExEN$37>c}uLGIrFCnNvTlDAr|%aMOJn$`M9yPKcMP4DultR8o^dYqTTIk{$Bb&Yi3b2a0l z501N&q>O{(GLMYw=;f?BGA`hl^m0f0WSLLn<6YU4eBBQ+Q^@x#D_<^H=;4=wMv~(f zV=3rm>(oSio*;s(o^X6dw5po6MLhb)|AkMthuGOm<({z|B5)Yl%7FvlACVS}Lq1fF zlO1@5gFWPkME

{23B0@;8xYiTu%aR*5B7De)rY-+Ic=BJG$c6}06)x8#eFkNaL}-b9-{AAR1vw>M~~ z<&uKS_|`7kiaT)lYynPRb+o43?9uiTJicpHCg%Ktkd`b&-nScaY4ko;21}9u+f#lD zX>1bmfIi5jLG2yPGUO9H<>^Q}E<(QZPOC8X;BYzeiJtPOkxmqO5>xWp{Py8>1@ixR z%I6~;pN!nN9r)~B_DVc_Ef4ozHW!EW;uQRdb=_J?ZML%PrjE9Q4 zK8FvE-*##|JE^m$#;-f0Jn7O5Z&L3KFKN&$JGNwekPaV z4898oIdaP%Or#6t;4sO(IC2>NJ<`GJkiXR4)g>egyN~ALG1=XtD|^CGs2fTte%BZo zlj&!Fz<1}Ozq^;CYRA+TU$)ainGcZ6f5dXhd=1h7E0lfKq}{7aS#QU?+bF;&nQ@Tu ztzF)HTms#5mwyv}fwW~O@_`Q{m+4~r2)qvY6iaS32l^*>^>+MrH~M7{qL=<?w~#dZQZoOLy7(rM9>B+UxNM@$~3j)7z1Xd4JW_ zIzHMNY(O5`O0Mm*2l27JIE?CugG}JqM}=Y>!df|S5b3tBx8ow_{XswLfNCG4HX@(u zDfg-E?bx&*d4D-il-9QoBAbv;^OUzg(A%*A^Zwcj?zC3#X4KO?)dx^6Jc_!lb-L)j zx=Qc}_w*=1U3m7R&s5f3y5DkfkTCyeo2SxW0j~3hsahAoQ?bg z>90>BAN8mux5xhF$fGQ|)qBu?fj0jX`smK+rTBJvwxFM3>FxfE!yiwxhrNPBupDK* zDUaOoS69#$Q8;S=LohuNqjuS*>su+FILLEmoVGh4~E zjZzV(-N51PemF=Evg7Z;A=YxRD$NR%%eK~Oj=h)PkHakY z61c|YA0h7B0f!;?TBlKVH$H&F>{bpOW(Oc$Eb@rEt@w6}97I0HQ(l2|aA)N8T`ajh zZmvT<*HbMSnTOhhI-3`c%-yroFGH*K~`&?L7v=7uFcc7 z*F%nJ5983-6$d$H+AHiV4k@i1ILf9WJtFcqJcc3XP^WsT+dM+|#JqR*MJ_`q`yA># z@+F?~8l(%jAJe<%BbMAAlQtk<>M1WodgMpQAGPL8WRGAUb1&er%+uqJ#~*S$_XHk^ zcQT|9xjja^hu1UB;#@(V<|!YGH0NpLJtexdrhP=biagy@ei-S6=aC0I%5C(ge=()+9~HPMhFm zoKY{>xvU3!A16;{Tk9!*8tLKBkq^1^cF(Zesy!Zgo*vDp zUm1?a@a~KTq&)UuwFB~ePx(-!5h9OnW6AAy?TCDxr#uVkAHG07=rK!fk2N|WFR z1lGJ_SN5E1$o!#irR&VNHGg^i^aQ`N5^~^YBtBF2{W6ejS`wC z#I;OddL^l4LX_`BQfB*3ysl)5-^A7a6Pc7L@}GFpegVvqiI2H2<`X%%$|pT?;({n~T@^JkFIFmF6FaeSuC_w^KJ17R@1S@x zp0m%uo~3xDt*b8u%%E_`W=Q{t87AFZJ~tOl+_qQ>*t~e+-ee(Xk|!QXk?eS1(tOp( zmv^O1o5+cn-3GrPlQJt4yU*&@+$s7YN5`2o+YlLpNV)9oUmo0AZn;?7Kc|MTp#66& z`U%$lOI&_Jp37rWeSd*%Xm={a+|fU+qI_1k@2dv__nz26vw$97MTKG_dB;&Sk~{1^vL$)KNApkE{3 z;VDl?>Rf}oUWN&B)U+=*{08|>Px;@GhOR|^v@>#P9qCF^-8Yc$@|3SYT9b#op}Qrw z%RU(S?pAVb9q)Wb2?aQGkV_dd(2h=6MTwji>xsq`%#a{3V%@ml3r+Vt*U?UQhW5r29*dm-Ij`g|X}V z4)T5Oa@Uc}yOelG*(hb!P4-{%@y+^AbIE_$M>{%(bok(-zD`ZO{pB4Y(K|BPY>!BP zNAy}NdaJGRN5l?0MuBP{zCAjyM=XE9YrlJ$WVbgLb>wk8I`rl|TdE*WagjCr0rCT$ z^3_ORJBvK;N7iY%U8X-GKj_`oEDM^_0JWH2x~`VjoNXtX1E?AV20Q-+(mm2J)BWDzI$pcK81f`Ehr- ztN$!O9M`Uo>jnu~QSynK>T70B_cd~$Y%doVtdDoCTr8HT_E7z=L_J|ebsv(Y5^`FH zKFnuY^FPv-T?r%o;3J&sTRX8=PC}m4375S4*zb$p9=84+{Ym$t%TBx$Y0u8cAC=QX z_bI85k)QIEzmD|&F35-7Yelzro1Y**?J0i|>D^tC-y<{Z(r@g|b{O(A-z)sfXg};v%U_?&Cy!=Ahdb#Mb@(TJPw%(q< z7>oXzrFV@oD9&c2RfCY1^s~a-@_!<4^pu}P`inP^59okgRZuTyC~16XzR`zu(7k+*kG`k+R9^2(~K8&m8shH$Lq+7^NmKx{dtoXVx;`-F~KI zkDp<%cna89t>r!i)QN|;lQZQ6$M-+xkw_gO%aZFi{LEg|I^Ya=_xs{oDU)w8A>Oq= zqDnIUc!poH75$qcH(6D(2mS14?(*y7Xy;EGd?-`jvR>@ndjJm2?rk8ur5BODIth7- z7jo%T_N-MP@)l3|e~<=DMn1G1a@k7dY*dOf1-Z^P0@|lsYds(Fy`j>^Zf|+G8SZap z#Lx&F@x4+L@Nj*+jkR-;dfFF>g9vP78k0|}wf#0>tHUTuz+KkdsH`X{ODHa0mW#Cu zV0GU$wU6V|Nc3rsqL(b}QTJ5zZ7jWOdq5tK^vQY12X?pQFIeHHA@}}X__xq*Sctx< z3wr6VeJp)A`nKQG-nExA3ij6vSf zQ=W{pXesi0ypT&zd&+8`naDf2%UxaP0OE10t*&ErL`TYDe{=P`tLwDy=#@YS{dgx? z%_4#AW{D;6omOD`ejRO?7{YE^OIiBMIfHB@w##f>I=h$UPR2mzkp|=;54Y6zj&}~~ zyFAs&C=V8)9wN5`NqOvcnTx!OCAaz|(XXL>VLkeR_QayS*GfR&)ieB?NV7%$mB^*+ zwmcDeH&1yD(&P=u>pR~*F!iI&WJ8&cNB349+B}ERUns_>|6Po`B@25ru>c33Rt}tK z-?y=kug205yH>8@+B1Y;2DdJnnPPz|}KH zqTevBpTnfJ;W@G?Z3ebu7e&yp%tuHk&{JR12o4>7QxJ!lTB^*WXY`s$j>2_ zyQ_eWxs!P~l*4%dj9R1OB|z$4rDedyLrP~Ho^0ysl?I)h%=5LBE&{^NDoq2@&uJdj zK50pwm+dH^`*7buMy>mO(m0|O;O84wtxGz};SReBO=NeVP=?r<(x6lgXs z*3@&rtQAU&fJBDZPN!I8Oo@m(*dW`dO}JqT0BVGPH7nsazyDWp!@{XI4=X&&MKXEF38khRzd8QAT#%> z(hb1;@L(y~9-uKYSl03Ks9M0Bu8j8(w~AU$5`0pQFWrLl8^O+un-w*VWH zH1!-XZKcvIU~#(A?Lf?$V4j!fEC;GLk(-y(e{--oTB3p}rNJg@ORzNca^S>HO`X0g z*!b;MnhG>j2kY)Wz9!gY?bibD03r{nA`7^FTxr~iU~{$J<##gJ%)g*?4G`X_Gy_=L zq;v}q;};?gQ2?a#kSiKuI}kdBRO3tr4o0XTJTk=Wj#7FND4GNHayq)miyc~8nv>n0 z#x3*-kKea`CU6Xuk9lh5@L#*AW8qY`_Sisa`WPTGUN`1cVCpQT^MS-UN;82S3srj> zxWWF7;&Uz_G36oG*L!TZ6YhEmk-VX0*f)|5r!sN?w{P=K<*47&I_lp!$IBXt=*Z|i zNBwW6_v4<1KGxZlJw*PbD}U;0HB{j2DjeyWC|yCYaCp$YEOME(KhkFt zkq28h@5=dreIfJ#DV-hMkbo= zxsR`?=|fgcd7{ScyPA`!rz5AIV=xZVlJb#1QBIVWl<^}Um3Ni4N0?Mh!`vNl>z?N1 zDWPUTXsGs3uP1yR3F^Z7FL{iRGHLl3DKbj`4G3)04m`EPyRe@%r_k4u zPeuN?r~EObJ4Aj|&f%pS*bO=jd4ErN_lACsAk6#e`;kk9U$UZ4N3QRn;9&YOAxThJ1 zvDQs*QU^M=wrMOrPq(TA9zR3<+YS#ik1cnKyJr!H{25Dbt!3A4VJz}zx<2fh1CpJr zd@AOInVIv#T;1Qvc^@Vp@8L4xEtP$OU()^O5cgS+xb&X)h=V#M zcs*}<*;^))&9Ugqeu_`6OioKSk63j{!Qsc2gSFz&-$47jU!m{(AbOcGc-GP{LI1+{ z^kdP+zk{O2Xe(zK8GTvnjN;p2;?JGcPX4RO zIyfU2nq>;hj=Pe$KW$wOZJhu@-WWnjE?cc5E6(0`rsMQ8%gNQLnO1w~&ks9Z`foh) zWU`$weKIZ}S(w*&D z!EE#cJc~01>BGa259)*5z4WV*zvw9+gmlYi$lsQ~7mM89Kja|)Wh=Qh&}GEkhvQIZ zU5{)-jqM$KE5(widhCG))!-JZ73L;i}JyiK8(^-PanwdH87&-AE`|A@xdPwzIp3=j3_+SAC- zz8nC}hW%OIUhlU3mUm}7*DgU`q46gV;KhUTrW2OQYX~jiy(hfJu+vJ@`N8&|cOvn@ z_J4ANKK#P3Py4?}qWrP|zen1C)CIps+JD|aik%+R$(ih0DZ@W;0 zAVV3-MLOAZStZF|{*RtSea;mX&%boxO(Re7wn(YPbJXI0%JYBrq(o1-O7xtoQ6yZf zM15C^DT(2xbC_xWhScaOvJR8f*QH|8DptjA{krG5u5VGFd!Fk0WtZ6kf4~8Fy-R{& z*`MUsbNnh0kd^>GB17O^g5C3Y*S9(WeTYKhPrAPA{f4XKSZ`4oVC?6;yhXZq{{b>U zPaS@j-0i5Z2psw8p!Zy_&!uaz?8>;02D&eMXY5yhm*KlC%Uw1~ZsEP<_v-M^cs`bE z*&nxl?$3b!_Og*9zZ^Dng!*|s_Ue=Fe!n00)!#>c>GC_~)#Xk1Wv;g|x|SVE`Qr<0 zF1KR-dh7@u#5Hn+{GB~;(8(>`-Il#Ea`YJ6mt@VidCaffV!t!Uy`D9%SIZw?t=R7j za<8ZVbCX_nU*=v<|NAz|wccBPue#Oq-X}NT@9yVb&)h%s9_qf#E~~U_>B7l>yO`3az4rm$WC-r%PH-8Zhq;-+mkzM^Nn#C&Ja_hTOWd__NrDXnJ5{AR*_eG{&mzI9B> z^4M6fo8rgI_r`oa&Q-p@4)pEGj?W=4=_5(={`Huz_(BBmKcLa-_Cp5 zU0;7F^>Nd;%G-PBi&E{A8@E=-xad`0^6lyh^8N7`dD-`9(q&b=|9b3kS-rP4uBGC? zYw(-hC7U1eC0YIdxc)?)6y2q6fsf7Jcd?ia32-7N^dQjYGmySm!# z;L_YK$1_bQtE3%%$d_dG-~V#I$E6+IeRUaStcq+&vD@K?Vo3h+8)6sP?cg3m>UjUy z6FuD8;d>!O^ZtWjXWiPtJ%kiP+o50QW2>ZpN`J6+YpohW%8~!u@1BtU>88=w-JVr*JA%~rP?t9P zHeJ`Q{D=K7O#W(&_`5W%{cFDctKMd5@9sS#NdEtb9Fp1@e_LZmkY&x^>?x7D{c+^* zPwaGlYPrY1*lxTWZf@;BErIy;eqj23@sk~BD?jRV*TgSY-`Yq0K*hxWvDcs7d}|-& zRxw$Y|8(0AWc_|H;)@X@|25)Pcv)5&cIriGi-BK$DNjEd`RO}@_~j~Zzh5V8)^_?v zUEUt*_CmeKTArLJF?m{MtA$-tyrkPpQS8tE!`J4?i{Ea&Wmw)AeCsX4@><_pZyD~x zk6UjUcJjl1%dn%fuY;fVdxjmI9r8wF`%T0Al-JDJ?;7T(4y zSQ5HQg8epPN#Mf$?Kcujf>RRgw-QT&wt)R+VoA_8u-{Is3DOGo8;UhS-tPRsmp%{h z%Hk2GGn3Zx>gET(_IZ$mZ+K%)^DiWqUSoWEk?>DRSSJa+zxC-&!gxuzCJ7Jy+vgz? zCQ3q!B=qt1=|h6QB&?Q%zLS0Wk`Q<+M!z7Rek6oQ!ndM$ILzl^5~kgX@kqGOBP2wc z&R$Jgjz?$sJW4{0BxpGvi}iVogm_8Na{Oqv&yPr$D+yYT#}j-WCt{xv3*|m9kg(-e zjGt`t`3VVCrgQtNT8^LY@cAhTyCgx&@v}WXKO><=60{sY-{<*FJJR{nS|@6bHd+L@ybn~S4e1<1QhaS11J5{$I0u*9ametjOkqP3QAcpkOv_6 z40J8HLl;;cuR7WrpI2QAIw;f9?lV5Wb}hJH7qqw*{KoO1@%fEwL2vg3Z#eoGpEq0! z`mwvf9rVM`25zD`~>=S2iWLD|EA+99vtO&idOiVn0lfN%WZ*ddNZ-$NFUAQ0HgB3Zc(ven`zxQusWH@*!8xRL*dj{nxyLc#wR zuiGt}z2CiS%^iM-*fn?fp?kl(^-A~` zWqD9K{ccQKrm$q@@RGnM?M?{%$^NxZe!bQ1nycS!lV476tFySC-~Nc*-?$k|=ac9H zr8Pr`yH0@qIrN+1Lr09UU(Sm}KGMy)Kk@R%G9Yyga&HTyn=Q(?@Rj%v{%i!#EPsC( zonwToV(mYc|1$^gD3fmL@*nuk@G&x5Ky3VbcYpK+={l}ue;E1otuCe#-7LnJ?d&gI z$Ikhy|9`uVjCAawqpP?4Z@S7rx`=%8f^Kycx#A_C?{^hfx@T7@psVz8>nik)4xPMH zx_s0r(iIP`7hz$KH%5x$9eSNFB#(#~=jp$NItZ5~@6Q2bY< zYeoJ+C*(5iZOhjqALuEsMEc86TXWgdh=5V>v;EL&{aI3n_pBrv=VO|dBNnq|gr7M9WE_!TN zxT)P2E^)5_X|+mAf$06=5_csq|E#7K0Y@$@sBWhlOiOy8emRPgaj)Bu7xN~42>{l(^OCoexK%;k7Z4WAWZ;%94wRlv$QN~?hR$r_;m*q5TI7lEkd znwko1*%ra@*W2k=8DX-k2yC1Ofa&{`E(dn*SHA|JxsJD1bHi8SAqszy7{hyAP4d-B>`~QPl<=i!u!ug^WHPWhS3jngRqhD9r*&Z)(QjO;KhM zufd}X#XwW=3~7g1Au~*Q=nRSA7dFELPF0!@Bu`Uq1yB^F^e9j?Pu-3J#fh3)4;)%E zL)t82?F@6KKqE{qoMEy`5g6w_Aa{#u4+6DSN+)ffVRlz5y#!S4*SHsfiw89|rjC+b znPKE9hz($EizqJ zn3EbUrQ85yEz{J4Ktj6GO~9d5N`o__joGndTmEZ)f6)nP%#$nNrMEKt=XUiF_Wou?}jSvkPXLoz*j?jn4wjH8UlX zd3$G?+Paw%+5gZ?Dypf$hi94^3_-w=nI`hM(tP0XDS~-9Lr%{$OU`H(2Y|T^O7{RO zFR6A5u=R@4GeBXZ(u2S<-&omJD}k#~v8G*HXXK1n6BQjRxn%-VW0WQXH(fMtCRz-^ z(%4wDJzi-uuwzlIRP!=0zbMvpxx={~n72_=tAVqdmBy6Bnz$`c24ON;tWqYhC-Jz)`fgL+F^*pd(m!=j0sWq|e>)2C)2luJsCb05=(sE$oL3!V# zb3G7Kr+!&L&|#$ufb&P7#u``}X47#MoB{$)#Y#t62sEBnnsp}D%)Y2@ zg}_|@IH^$~kTxk!nrA1lWJw%7qMfq@%uSDz9ZfxunWc)|z|{_MOKOwmQn;vx`vSyNX6NmrE?1JfIo zrU2>JQ+O3OoeW&GAXWO?R$yjos#G}(Shf`EaBc$vS1MfrWM`{jA8;x^Rhn}8x>U2K zSm{0>VYAXI;B+0-i&wp*nlmRfi^Td=ZhcRce(ZNK)$EF2B72|~;Lz+Pvf_f~EHMib zmPp3Cf$a-4^%@YGx|Kyjq^BgG9TK8GAuD$ikxQK5nN0|`4c+72LTm!@t5YIiH0zGn&dcq(lHvTBu{1)BYqO3@biFEz5{)exA|| z!0dHo%rO=y*rciZfXWi6ab5xnYc=%@ka$q(T44KOrPqPx(@N)@S!QxBDLn>+_%4^C zuLQP-DZK{Fo~ASph>BC12~3);G! zN)H3|%az8gSZWJp(hi$|?FA~h4D2p;QDD_3 zrTc(6B}#LFv@)gD!2EKhc|cKx(mJ4Ii_#0gk*!KwfYNPB&jQ(%N)G|WJGD3mfZ0cv z%Ql@4G@XPpQaH8TY-^#A?BszJek-JXD}d_(O6LTwFiS&M$eP~BFvw+!UQF# zU7eXQgE9 zH+Q9(GJmDHqm45aIFbbQayA1;7OCJmke{llHNb{tD|HA6#AmBp7H}vRt#LL1Ve2%D z3}AJg3ibeThcz_^ID4E_w%alX_8wm5RjZ^+O=^m z0@Bh{uot+Ru5^Azn#ozEbUzT9rF0c=c(u|QIceqsMi$ArX~uu8(xpIhkAqPF0#&U8A%XIJ;MA#J)5$b$^;P z^*SKrsHUa>Cyyx&J)UMZ)FWVE0qi@gbjrCjlX+1EJAmt#mCnCHA+IVe25PQp+(zJV zOB!b>ZJeRL>E;SXJ?HtQ)2d1vfjvP=gM-seW|-1bz^oZcHv#LSmDU5hVw48XOgB{t z=~DK~K;c47Jp#;6Qd$bkS){ZGNGnU1@%VmV)mC*o05tAGV4MlN)6Js^9`}Zl9*ktxY!xhctCFka<{B>wsm)lx_yH&nT@17N1qR1311gL$=6>qztop z8I*AuFgra%%1{ohU!|$Fz_}b!dF)$mhN)Vs^b)WmPw5R{|2n0C1sR;pDxF@KVOolm z&R?Hle2bMX0-7r_q@iYQ$uP(FW=O9M-4dt?ttX{yrsz|?80q?#*% zUE!K~9at5wse6H)Ye+RtzqPAOU@>uxb1|@LlWMDhQze?))Y4TZxJ*-50F!sFk|A&s zkiK724+4|wlqLZ&hm__4$ImOB)v(IcUe+uoU0G$~uC9_bp9ky;%#><20lDEyj{$ok zm0kxnMJYWEY>QEP8Q3#7Q|cB!FVifVpD9hU1qfZJGz~~eLTj8`fWk$ZdH@Jc)(EM< z))b}ZfdxyHZUQovsoPdydM4D%nGGCWqkv`kYs1HKiiO#q6wD%}t4+@{p8GRxHLR@w~gs>zZydj+^srx6kk zWtr+@u95+@$5ne12tTDX1&BMXbT#0AR<$X>>;|Rlfr}SZ5Op!joWdx2=%p-Ec|~(; z1Wx*8OY4OAXPdZ5*&@gRmIY|)eqd>|rtSd_$0(gLGuuo}P`U>2O;oxNSg=6p2H@b5 zY#E;VF3mQP%QRRTP`F&_QNS-FTWUNTIK4_~KxVdCou#xIC|j-C8^F2TY&i>@y(ZfP z<|$19F6S$qzb@OPZcw@dShZ2hPz&U4R(b-MR;siBxK^e#t~}f9uTZyUpm3|E9tBoa zDy;(ow=2yA7VcD93e4NBv>1r5R=OF;+^h635LByiR{^sQXlfAIXHAnlCOT42LDr47K|2BpnF$wgNxPhqO=}38>V!@)YT?wy3!h8Uxd=>k*iJU45cYRL9}L32L#3{O#^ntt(HzXDSoxN zfst|CtktGyw$fVQ)EpIr&RuQhBx-5_FlWBfB4AsR(k5W2!y) z5jf+YqtiO!lXA?C$vG1F5)c@eBgc$|KpD?C5}?X-ek<`7t@NMO6c3aY~N@i59E=|i7w}|PvrgVnVD?oE>uC!llT&|fH zPpWa20{a(es_(*F6Sz26_Q6TOiru-Ut7+@p4j$X1ilFLTGkc%X4M26B2EGRDIZP`5 zSO=<(sGtcra8gsR1JS2dn*}UBqp20Z-gBDjdp_4pZpxMUti`~F$!p{ge-_vtyhh?S z0+*+)k$Of>Ut{vZ*GSoq0{db}^>W?>d}poEtuhuoIA6Gz(|5rdvtpsf*a{p?QW~~s zjmcP|v<6674rM$AY|dLF{q8gnSD=D?pt6wsxV!)~Y}Tx&m#i_#<(j$$NZC#)IJE+* zc53QnVDfIIi-E@KHL~hv)T}Yt`!()fAf-+P+kn`kP%q~?ptNwUd4SnXAZ){0seU$4 zzFFyMpsZBsS>Rfk(unf4W)p_?7*JH9^dPWii_(3-?p;te9-v~+TB*<#AZFiM+5Xl6 zyZ0;gJFwR5JBh$JC!bnt&R(fWX5P#^O)djx&dQTwt_9A{RXTlMo>?_tX(g~^A(ZhZuq}xYj2?gs6?vvd8|UmT zc_w|UYHNWj+mt3(=9#GNN;84nof@GQn7dn3Hvf!C_N1LPF0!#)XmD5DeCLMk~R6}-ZsuM z;9MR8;|$5qH;dQjOWn$V`VC40i}OwH#(c^601#86!SaBRGNs9YU%Apmprk@+JrJ=~ zX&Nx8(j@@GcjU_!lLhSFrKvZ7)q9lg2Nu;T%>yRYD_sPXo>Y1UC_Uw(K)`vW%YjW7 zlpX_$E-F0^T#H&K4HY$G9S5OxlJR`tB1Sc5#H}-zFlcoAI<6fnjhMC0teUN~0@%Ay z>2=^llF})Q)|qP1ME!I+!}zYC0d57z=mZAyqw2@&=s1R0?b{h zZn?nHG^M3LW4cC&$yjHKS1COWL}#m82C#Ou(t|)iuDT@wYYJ7n2RK-wsez^IOyTi$ zrh6Ob381E4-KLyeXBw`rlil0Q8|zGMlcqKURUrk&$2hM5H$n@fnu%crrX{98A|%Z$ zFhTJJ(voSws(GaH;0$14iqfsX=JWzNXdDI>tkMXZfa7^82+A)o>-H)=4#Xc+K>;xD zP=TzhjllJzO5=|en3cy>umwoEq^UK)`pZf$0Oi-9#yO?2z|6U>sfEC~7Nudnh2|he zE&Tin&1DQa)4$M6ouqU*kT_ZCT3~vB(v?7Ppwh)alZ(brDKv+tk=n-TH@(p8#t3#9 zs0mkk1E`5Clq*RQQH9*2ptK3t7*{A$X{UhTS%p%~1wcSbq3O-p1yGX?HO`xWf3dn{ z0fCzfrKyX7wWXTHKH%_a70fBlh3WS9gN!+DC{j?$}S@iTGQ#7MUA{+tc ziN4BI8$~5f%XZwrXk!ohZz{1$|qTK~l&RH*II1kL8w_Zw?1I(STbOW$(q0)`O@noezDeKKm4DI67 z^=9`HrG87-n~lqr9tBQpS}zp}-n`!U)vlM`Hyg-3p{X@MUA<=93?!dZx(D#R2<3Dh zD7>P<4g;}`nwkYf?JG48z2z(dCe@Wn88U&*hfBrnBG7aM%6dCmYUUn8z=c&HpuSW` zf|=m4hEf?p-UJG+sNw)nc8yer^DwaRx&|%;=G;)a1~@jgjBx=+rDgK<+%p6*#G-P?1saS!4XC?vb)08#7q2R3PTH-QaXwQ`4n{GCdV06UJCNe65O{7!0W3NY!6Mpyu(pVch3 z0XY|-Ud~$J@Fi#)XA7|XvInbf+62r9E|*~GKwOB@wLpHT(rRGmRH$)Y1@fn9YAvuJqFh$dW*{z7Q&#{d zU379(xrv{lshPlnXr*g`n=wigW|o^n@k&Eym7CeKl~w>}<|&<)K-`5&3xVTFO6M#p zHw}w5j)KTn3J=Q0=6Z<)#j!ZeeNV<`@PIN-yU^v(jl94KbksTV%Z)dr=jM45h zc9olu-KtFoR_{@I5J;*~!B*hVeogg1P;UGWYwALv>8R30$Ef}(73>5yp4Qxs0mbJ@ z<%%e<^^ywC0MoCj+X~>wbxoamgEi+@Ak=PuynRuu$ot1!_!m1YBtyDDVW#_z5$2liBGQ%xS(_g zaP5ZD**7apKns+k5s>A-h5aH;1%?D{kt(eP&WCOh#hkD$CT#i^sq;#pG(uC)0ClrS zZQ~4{y~X&>C6%imz=A~876X$~lr91qR&J5%N2F~rN79u}&Ddh{Gc~tEz?>YVc|cRH z23xQOEhb%m?G|$ZgC^x|F}a1Rtp*MhDfL^w#cae7)B}@BNHxxEpt?$F;C2eRTj_FO za<$TAAhkx__5n@xTTB-(XVgjD_HE+^kY3K4;I{qSq)jdW`3IFA1hNiqlk9c^2}hJ} z1ePCFx*w=M0W~~@4ed!y-3{D0uMuJzwwW!HDrJ0f2`HXiDZ%Q1kU*uYf#f+#i-FS# zN~b1Pn%wzNo?Hi9O|O(zjmfBFet=+%4N5DG?-te01$Jyz>bI@Z_*E%g0aVv0Z3c?> zsoOaqW53d!KrCaATCV>nLtpwrY;2zu2ve9Q)TAmRmmgW)&YU}8h0VEcAdH%1?q~FPFr7P zQj3-D0`_lI?etAmrfjp)Yd~nZ(k!64Lh14?RVI0>y6ptgwrT1?U|prstH8M`r6Jpi zTdg#xrplDpDm@L<>{l9mpvs)Db7>D%nZ(0N*8>$tm7WE%PAaVewx3aY2}n4nv;a8Q zpfv76mAP~oYMfD5s>~w(qec4`04J|$d4n6POvp{8iGXjD(iy;c7Y%5xGKVl$p>InS zXSquKe7Bn|LE9zR5g1H4T2)YydWCM8knHekj=6|4dx7isDWpmMR&E5QC_rJ*U? zO#?<2Gg7yk;-yN@0S)O&7iMfXzFA5a0BJ=UcN?&@Txl7QxmyK?fd7lNHvy~aI={y6 zK4LUxj+xrDshQI>ozkXFr{pGTThmO<(DBz)G$b)GY8=w0Z4zV#8DyRWF7qTH2&f_dVyp<#^NI_x+#$eV)Tw?7Q~b@7`yhefAk|WF6CDKw%>bt^%4{ zICUP7)yA|Q5ZcAG0AM=}EzUp!oNOzJ#sacjDk-uSfFZC(+%3JL&j-3h)==$_0n(#u zXdN~J(qln!Mh|czj%f{`Dv`D0fbe6SS`5fZ;cR_?L#a#?0JB7~TS}`D1^G;S0WRm+ zAs&!$fm7=Ni)BoYme+{H3Z^Z9Gc`>60JZg;Z3-~o%rv&8Mntr+pc+up!E_oha)kwf zJvDeoWexR>F2KSd1VSG?RD-i6wbV_D0MSmh6l59TqHir}7Xem*oEibBieY*%wpPr< zF^!C`6~RZDUI1K4W$KnzE4=fWrUFJwYN=5J&ew|L<(ygt7`ntX>T<29XlB7Uz_XQ8 zO8^(znGON6XIU@;IO<+UW`%&kTAT&=pJzc4z^9aHHejX< z0-+BtuM;O*Ia>o@w2f&{JAALOwiQs^%c)lYZGG(P&|fD)2IV3Ei^Fx)P&p%YB7dB< zoq$VD^%TP(VAijm?+pv^uNR|1oE#inFRmpr4N9sPXOo!@00NHJQ;jkJW6kw+t3*Hx zXd4SW+v`PO2h%*jU?(VUdFrYcZdZ{FN0Wfb2^K`)xzDkK4HQJYRfD)>-#`LOhXzsQ z#?*x<#>ZAO=sUxz{n{UcxN;S zw>(f>2?e+naOxSr_ywlHr41srjI;Fu3NCW$C?Kwu=>5pYLp46abmg%IN{bv0e1p24UIHC90b&bA{8$I4r>%6QAouBbabO|i{;d8 zz-$7iCMGrtk7Jx#04UF7vpzs=78l`orcq>-G}6v&2#|7twVeRFN-pgynR1z1J`doN0xjOq3m8A%M3=2RQ=7z48f)Fsn?&9TrX7HplPvH*)g&%wu)`3b?ljXe zfZG`s!~-hM%Bg^!Y)&sTk#wGEE5NRT=_x>74QHDJ z*fnsxi2(OL7Nh}Y1|Y!AR)bB#?-~no05R6hRJVFSlv^`Z{sN%Q9aQLN0VjPpbqp}? z+e}Ro;@2#$g)%jSHH+p1P@MfrY!-))F--26#TH>x!KtBu&`YeX2iQ5bqB!gYfjx&>sj+RGTX8o)E4kSoZWWMr12RIRvmg#xw}vlEE|w;B$_(*?@vPPQ40f&u8jb&??*unVta@7Big$ zBwRu^4CsIhHSAzj+bWKAwu;-Z@d0f5SsMdL9$LmPFO96*z68#jqtn>g=*R2=C5>b={jb?klGL?;%cTKl$% zet)JO0d3+)P@A}KH99NsLS`GCft&$E=Ca}dNRe+n=;)K2Yi_*%O#3^UCK z#JhHoLoLAFy@T2;1rX@jL8TP|;=Pfo(>DT|{W;Y;phI{DGA#rQ1cTx}q>v7ADGXH7 z9}Mphkr6DY02IZd2&^nX%~3ARF`+}8NMu1j;B;ySb-zi#*>rZe0tn9J)LcO1InI^? z=*#15&iNgpu!QLZpzi_;yh=O7(ee%&0WJW}UhbfMN*mx{4c8(9;8M%num-Y>RObj5>WxH;M>;*wZf1Sl-&q-!Gs0RJ*h%>XpDc2Yl@1*G&N8=e*d z)DE%0{TjkK+$Fw+X&k`aql*I01h}Pg>M?-tNlrZt2+8Q8g7W|uijgYmCjj*qSg;64 zE$^bbwE)^KGj*)&5`NXP17N0}Q-d11@QO!H?FICAF?H$g5*1F}RKx_}h=J*Gz^LsN zasOI4ru~5C&@1F?9foX? zS9p7hx*}#`VTO~saY#*It$X4XQC9>3_I$-x#1t0z`j=c0DW&Xi3ERxNFd*HFQ)>ayew@2gnaru>fVQ+=THOnPunbNu z0Ayq_Z3T?yF!jsr6}d%nDqy69X~g+nQCtZJ?BM`0wY|8H1V?|sE6tqj+tMqN`+BLZ zn*nwMoG%$*7-V_@&@{$^8Nh{cru~3RGfYPTO$Ym^3~Q@C(PG_4W^;fMyFO|Ncl$ok z;DJ=!J?Ggce7rd|9nkH^)YiXGLkW9_Q2sKx`Uo zivU4coSF+bk;Akda4nYwq38NUaUQ460Ky8GUIxq-GEFS%6Sc)m9ZLEz-DTPZsIK6G zT`%>C%sQq60G|dH6aj`CnI3IIye&+9Tl>VB4%T)7e5N^u9KeuIKQ)P$Z@=*KW10r= z4P<%}5Esm}6i^k_Pc69s$cf|BcEFMIoSF$(yxdQ{Hlea#WH%xe5BmUG+d0*_qhDlp z_0wu;2XytYgZtHf;W-S7Cr|-SBb<5~Fm5$Kdrmj&0ddTBfP$<9v>pP*ChI&PY&;+k z`eZ<%-vAYCXq6P$Ri;RvQ5P4}3;2KH#fXFChIs?ckW3yI3YsCQXXbxQ(z=MUH zoC|PjW|{&B?H{0k^8wRCOarbBh?)r&*i8}SPYA~H%1%RmeL2;KE zb`C&$+aW407vS$TL_3lkKzr~I<+BSJ5*MRb&=0tlHbnLGNgonUCx$5YWWY%EkXUsy zu8a(c@-`OC04{eiT?BMqW$M*CBs}_Vv>U4W*O!&LCWQ^TSpW0=Aj0F34`4L&z4{PLNm0I~~Y0pMimFjc4yP+7qa zLx9H1EU>N|7Kx2qS{dMKCkuSKhQ)<$7IXr-2RYSaXjr6=Fzo^y9%GsYust|JeKiEo zYCA%ax!8?}YR3_(#WbMg5CoXP0?J*PI=GF9q$mhh=_>#SV>mS&(1QgIp0OjsK8|TT zpe3FKGl1*_rX7HeG^V!cBcc}zVmN$aL?mW#YB#{|G&|G)LeDbI22|%UodGPCGL0=8 z!GSi@P(WTahu#UW?O?M6KvFl;ivTy5QL0-4VA6Y(`dpCDsPGR5#YqIfnd3|w0a>{$ zXaP7BaB2yl_5wT11Dbk9=`2mq)luO-#HnWir8Z-fdeC+ZzXLQzzFy8_qS}M0o#&Y7 z2?E8ldck92Ae2+x!p1~-IMZQ3cpTG8z;H6tpp-G3c9QAwF;QBKB39{V0BPsPXbp7% zMoL-WQ#K~b+Bk+`fL}YOo&zLxj#1?+0j}MgEgjI)$JD!jO!y2kJr5|m#@Vg`I>(th zO^k`Fv!J*mer`K9 z!vLdg?CaG&fwQTgLO%ew=s!u<3x@&Tk&{$J62Ll{X&9h7by9o-2j62r-xHH`15qZR z<|Hd-0hJj{4`xn^GiRAj0!j*H0l>GIX$s&(HPZ$_f9)i#S=YKr5#7kCMS#*KroDjh zW~TXowl=0#?UTZ>gK0dVQ>M0^C>RT3Zv~8Wv#;BgNpY!%Q-=Y;SDEGjvig`d0}4l( zjshyjnc7Z(PBOKeniLo9rf3z-16&V*;&FO_mH!m2}1k{~nYMnhLQhSljOg{$b8=0ar zl6Iq0qI8@EgMfpROd|p5Q%o-ag6Ei40>Uk)sn3-GGVP}+-hM!gGp9BKs@<8odrXU~ zzSC5Y1$1X~s#VUk z=)!_*F1gdf#%6}XDF7rLn&HX=LJ!YS!TA6;PYCE&u|U0;o&e&UI0`raNXts_EEFqUfkCX7>}8yx&_A0 ziuCwds(dvdHhEUyO|KYkW<}cxR@j`J6=_(|CbfX5Q?s<hR!0+NQAHUdh=*mnw0XE{gHoJByD{T%tu0m>ccD4sb$jw=M%PXmhG<|u|S zK$kDmgMM=&)t_kd|t2_*gen5b_;XD&S{=@X3>B+*Lmt` z#QM(|Ev`Gbo+{c3BWjnG0gg4SI*u3nC|ffr1^*||tvCJ}J9hfC`Oj88y-OKp>jB6WeaHGoDd zO9?S703uv1C9HumK)*kydIeZYZZVb;V#ojtBr-jeWGMxtvo-@@djeXaj|Yt8fl7Lp zd}s^UA+pd?$|_;n0LUw4hi-t~l%<5Vbqp|NeUOTXvN>LkD`QA*s0m=Rc zrL{O}F9qgSaq=J_r;+ou0FJeCY6YNWl<6X%dW`85AjZaujLQJkcAz++0GRXP)L>sL zsXLmfTa1-79LqE)&PwVzYDJ+rBp~%9r+S>Sk`DDVjRiOkfa2|6fRY)e*8o*>Oh*Cd z7Fc@)P;%Ounr8suaRwCkhymORKymN_uq|Vn0JvDibO113%ha>ZS}Lk%+65TtVd`?# zTCyLsrXUS~s%uOwhpnYHEbz4&v6ejTY^dN}`2%0=(R9B}_Hb z0pb3(RH0meYY|e>sDOwI&`SCWKwBASJ6vunHB>Sk1Dxq$+6g!{%5(@&HZBVQA(KoC z09U7&dQL+-&$JC-Z)HbyI}XUQ2E`l#P;J9>8qn&%f+>Kr6Q?EtDqWZ^0vcSITD#dv z(|&fe0>b_6q{tvnZ3F~|Fue%KI?8kea6XCYIAAoHsZR>D8B8w&>av*50?wR+FTF|2 zPD;w-)EYo_370kp@W05Z=K(2~m^J~g^=kHc(t30pxXX zY8xQ9i)jWRwwtq60PGLhOE=x5j|Aj6+fzfe0g_#rmH{$6nN|V{y_k*x?2p+~=y8Cd znVV zG7YeA;M52}T$?@hs8T>xJ3EX4+&Wo+Urv>*dYPsI&I~ZE1x&^}NUQG9M;~>N8j>6+ zhB-h{qk|-^()R=6M;s*Ftd|csW93MKWZ)G>Y0`U5*nG-1AMHUDc*Fzv=`GjZ)YjXhiMyN&X;L~ zpR<%0$Fu=ZeAJohb_HN{mQzyz$IF=30sJbN<^!CnnI-`yYM2JsI!mebOlts1ZA|L{ zRijMD0Hc#kqoz`HFr5HQoM#$+!9}vY%rqX5T*I^);MKr16HwgDrF8>_TU{jFChXnjB3-%40G))={jA^^+``c zgtz>f`m8dQ_Z z=S`o8P!ACq=|O@jKz0<<34q@zP&~x|h|2Y#qZi%UwHxTyLySM<^-Cq8Bi2_;C;HMs zkxs%7xV-%~{_@9CK^62WS%Km%U;Z&-N;KH`iBV5KI-9M#p?z5nxC-B z@uLICOh9lhD2iTZcw<>ljAGO)Nw&`ZBEr?5j^T0v9q#^A^?5*tFQ+a7nj%5*#B!9s zh>qt}-8!tjr_m*-o#}@d>Eqw(FA_%msn8NY0bU_V?Yyo?{u(bW_uYoKO7rKkdw_8B z36KM{)J+-JHQg^j3>cK}!VF3dl=U~s_x1;+A7aJbibVI50iyX-0F^NZIGe#aIx+)9 zL~a08s2h-aj#JA43wfLxk{=*^3z(h(94%p53P`)aW;K9{N=_XH%v5ozcQpicOv?Zz z^#OEBqZg3e!rB5rL?;VQ0ld37H5Fjf&8a~EpDRpH0#1ywpd4TrNAA;xVR0fP?8w!vR;b0>#&Hh3`zD7&{k8?ckXgh!<$Fz`rn1G!`+nDMspf z7C2l8#O=p{^qga8OQ48v52OEeCR{;_lgT+nX&^H14TY|~LzcpASTtO<%c>r9)L&R;X^hW^$5g}AL$H)*7 zbsALC7XwPNLZ}*6XF^0$J`36b6(b?y&ei&HK%bLAthoy>Ni>MuB!jsBX8j-_FwH>O zDgYT72J)Q(Or2(G$TEnFXAK;%O}0UJ=Ce2l;8kRxD9-?#D_NWc$Zj*xDZUoK!K<oT*Y%0^xv>36F&QvGS4r;{*qaTd{mL~ofC~f(VR>R*|LSj5j z(=c=!rQtK%8Ym*s`*F5Fw-$RL`i{mH`pk3$icxG8^xZlGzT4^hk2Iu9SR5LUh@NXl zs2TyoM@0SvsL=NVk|#NJ5->W&G-UdSC^H0+b{udnD@fde7smAfN9%&Av0k|9wrga++@J-`QssYfS8%#Tbz;nU4!ojJ!8-D*}oD+gnKFbW} ze$_-E4cGL8hxF-B3lfN}zl>n3xefs}L81?Fqo3htLv**V zqwkH|t*rxLVQc4h+luct_`dffiSV%t4iOI6{Lw#j>u~4F|Mn4^e0T3xMB$SmVjK&m z*#T1+L9h^=Mk*H2h?x-KIU7Q4mjUpdW10^*HP5sRP`$w8N{gjI9J1ogKLOxkXCQ|J zKo^D>YLc5~406HZDc=u%0ZP$cbTx>YK!do+Oz$0T5Lr=hz@kATdY9I69k;JnjItfWg%gGl zG$hqyyQPvYz9xKczXiJn9aqo)Ot|R6g6cY*4HwZlOsfFVmqFL)%K%YrOwR-I20+d9 z{ebil*46;#N129>g^T2IrWF9gB9BvN0lsz-v~8URoT!W7=ffL-9nBFGpmj@x@NWaf z*Ze7Fr7Q0Wj!J2W@PNO9OBl7_{TfDzwF(nk743Y(xvGK&Ue1v6~~ z7)~OanLZ0}xC|8M&jHg_>=0HRDK6GRi^&1C zkQKw)4#1&fOpgJkv8SLuwC2O!rHhS=Mj3~nk#Zj~Cz6r_BvZ3ZCQm1zf{&XcL5SAod$DWD>*09p;4 zY7<%@V$%x*#u0rf@N{c|xYtbI2CyB2Led`vq)s6p-s=xY&My-8uF+ot_>~t?o$~-w z{Y5139Vil=*FbSM!f=sroh+itB>>Jk7mJ7R_8NdkWHI?32aI8 zz`?78E}@?Uoc1pvvmwB_AW%s^3#bcaIt_4(DG~SMo*%%8M1DO>Ghi^Ygc`#2bcsmK zVOkHcDQ4dofT5gIivV_&T*OI$8(tYh8?)}@w{XgD#CQt6)KQi0WHgj@H5G_-v=D^_*^GX@jD;6+~ z*B@Y2=+PhCZ06+wDhSIM|~@4NI4HkOQ@u18vu<-Ob;Hb#1T2u zQ9yfsCAl6fs1(&@oVozWt7X~)@NHt60jTK##cfl7ym46on6|B=BEsydM37SznNRe5}p)S>;)s3m^ z;c8JIR85=s9KbOe6i@8{>XISAO`0jyqVObA@e&k3#5vYp1Pta^Q{_Diszv$5YC5ej z3h-%U-{XM%RtRvA0!ZpWICv%=kT?o@gT5M&H_zHWK$Cq9jjZDUTVH&P$+W}9+)SZ`aS+yue@zhJyV;<@ww1c~c2tE_lc#;|qN+W2U^o*X<=#TM^ zva7j4oNH}Re3m3S+6g|T{M&f4MbzN&OWyP8bZ&ZSaZ340&nW*@lHhMNc^R{B6;_U| zoEL&;{^!R_vK544Qb(eb?XBWyr;^8VS!O)i7?SXCT5<>1ZS6snX><(KexgGJ;L$Ux zH_b=6-QbCqKbUK%gPw7)%-z_}5 zx@m8e1Q^1TO!Ooees@=QTT3g3KYZ@))HBi_OZxKz`XhhPMtnM#w&S9}UNITpOUItU zM|*`mo@3z|q?#0tRp*Xn^ZRS;cRC_gKos=_*bQi4(a) zRJZehjB`vc0Rql5O#&D$Fii!VuNa~}(GECyiBszV6PG#Ft#U||VL=dA07t7hwGiNh z+vt%R2^hpey>qSZNdscp>U$uPV!|?9e@)mlUZZc10uFUDjRqw4T%+twfZ%?ng@C|o zOtS$cv)8DZt^rP2@?Gt%052=1X#k%?OtSz^hxu;#7=W`M(@209Zpx>|TX)((`!zaco)y;a(?tX zb+YX`KZ+ma8>0b3&AI}qkE+_C6Jz4&sWGZTE1($nd*gJ94%bKIk8zp)6=R|V_j@nJ zY_yGdT8-l_&hh2%e&GAzYl=rE?sv}1=ewZC01=nQ=?TOpz(n;pjatzS^bezPz`z#@^rFvfU;U-6nRl1vu#x&y?n{oGJ zBkq2r7$pPp8y)O=r7nm%+`&leY+a0{?7Bf7(v%_?jQtkMEhQ`5qsN^S-_rg>9sU-> zZ6vQ0zA@}5z&@34_A&sH)A$arWj#wxFLMH{XGu7e^k%_r@!yXQ^|jWq+_^=ev6?b}f}dzUdZ* z(MSJ_Mq|rA6Fsy4&uMFx^Kd;Mdp7t{Z1QSZ^vl%vPmbg3-j7|S^F>?Kc3O%+ZYhd2 z;CSSt6zh_PTWVQIns+voR+HxC9ozPr@BQo*^IhieTfDoh;a`t8?)mF=&#cnv){AFW z32D9b%qq!j{i{f-_VqVC zv+AZhZ%st-{|~=h-ijVepL_h!bMF$juZh^E^id5>V&#JY*bfesHuj7 zmp@vrZMC;Ak0?(gGi~#Skm0vR+q}5>@RqG7ARQw4n4*42Q9DDuMXSCeV59E0Sj<*G ztjHf!6Q{+y{NO{=IUE2CS)j<2^f(h>v*WO>X=RIz9id{-HHxHXqF2wJko+$LvRr3OOJ)G!r3*m%OSg zgzgBu9$n$(zGdr^aOox|3|510oqmw!R(mb>?B2V7%Pw=?2kh9k)8efUcI?}{cQ5Y_ zbUKg2sDaRtlzfBW`>5(Ph*Z1!D)O^3imR&EJ@3VOAJst!$ z|8vh?>~41K-bJCqpMEo)vXFl;{2$l)e=TyOt_utKOIQ5A_VALwaolh3+VRN&3%OCQ zi=VQPe+c}a(E3YJ8+E6#P`i|U@%JZbUn;lD#?Q9z+_C-5{d*5=-+y4Q#j>s1E+i#i z1AM=&_3eabL9`rqd-<1N(!ebHzP#fji=Cgny=$NOdlu+QSOafZd~#sNUW<3tB9wNa zEaV>w|0lKn&G2@Ofj_!w+53}Q=(?rs|JL3EySAI}M;jaY(Rw5a`GvvnJ6gYZc;&>( z?Xc??ACD}z!>hY@?cBZHeCG=Xc(h?>IN^ghsSm5|5Dwp`w7zZdJQXMV_O`_S1R5ny z_`YeecZd1T9se>%*E8BtD)lER#Tx@z7Kevs7|l$ewTKwN`2M!6Aix~X#L9I^)`kM zTHkNno&O7}%%0tQOxbDc8w0-|YW-Z`HJ^w!jJ(K#!Tcff8?+` zy6tKn)~JX?WcdAx44CKchV<1e$Pe5Oxr7Td-%d|5a&Yr}4*j7E$g|@vcaIg#lZp&~T#>_j=U<0h!XQBRFOYv4 zM#>?N0o{Nm*4ems5U z?Qo%?kJ2u*JyE-4!T+aP|6kQ(XWJ+|&ig_bhyWruB7)r(?Su_ooT7H=Ak~*;gC& zQrv30WW)dGTK_6||EN>;|M}&2<7ng1#*G8beLTn6ZQL7|{J*cnp9BA2X#Ky0_g}kZ z|K_uQZ!qQm8;hlL3@a+3w2$ha3;$ng{iEUidXMa1{nR@pru^UhzwaPVTN3SjCLzIy^D3|kT;pOIUnULd| z+iS*qSE;G(g2z!zns;EXYoSb}jQrK@q6q#kYW+{ZyL?#o|M14%+OP6|!$O(*eYJlv z{5NX-?-{}R9)&-~(Vwh&=w}-cn09^q8nbj7_o*IaudHWkQfikH_-@krX2bK(<8s`8 zc;dF#OpS9!+p}s-&7!uuI?kPk|7NX!0K5|?*6NU-yg8p`=Vs*va{l=j-RFQ{f*Xl7M_(;vTw#+r8M`r zF5VaR?lu3+s3kP5EbCZ!i(>YkR0ynD11rHT~iud|%S~{%98Sr8(L6xl7;q58a)n?Qd^b z?Axz;;%l`(&_O2kw+i_FPV2iFo~!3&-+w*Pz0*`X;Lv-y6EFL!?QjWsUe@})1<(5z z;EQ?K#A*F5Q}Y;{J+#=n&tkt0CzbGjRqOu|y#FBJkM)?izjd>zcHzTDqXyUXyDH>)P3!9q&tI;ReIK}#_2UN+ zk9IxErwo>j72n4prS(`1-`BOiA@B?{gD>`T1p|$lRJpJAePQ1|oUz7QH97~q)Gp5` z<px%{Mh(W8RB%p&wZ6+wm{>W4lDz^illP{Xrf4`QRR3-OER}I4<}dyf@q^$9?AB z`6C{wr>U=r@wy(qZ)xNH7@q#?@jW-r9Ehqp#IVb-#=)54e&g8tL&RzW_8}wc&&`p zOC3@1RmbZl`2JDrdkLP?x5@1h{OV`_Hnm;8Wr5SH*rgl!Bh;n!sBV|d@c)z6|Bc%> z>74J7{XY%8?Hp|s+V(Kv|K=X^U1~p}BWr4x7Wn^J>pu?f{5xg;fTwqUXlmSgZQF+! zv|ik?>)jo@-hbVEKSnV=*{QUTI&QVX|1Vnqd)9B#^QYW!;Z zw88(cTK^y3wMjR4H~cYfJ?XW!#?<(tSSuHrmfBq%U)tgOKU&|n@7aVa0dm|k)@Lhd z@Yl9G$E~bX zuWJ0=@ZYNS_l5U|55gbo^`-Wk?l!ev>G;CPR`pfa>lOH#Ykia8se4%VZGPx|I_GiS zdVSU6AI7$-ue$&5L7r_|-@n4M@DaH^QZ|>EK2Ku)KCTF=TkCQWn)ar1L)*3f8y?-H zd*LzJ|6gMFJEq#32Ck(&-LkzJzuMlt@PAk99{}$!9+&-p{X=IPQ~oRVM_=vV2Y(B# ze<{3Qd{XxRUc%y0I=Q0Vp48(9BWtLZwpTiorE#nu{_ko1?cqKA6#UU&!lH{mgXTJa zY_Gfjp%$|2tFG4p_1_)XMr)k9!8;`+?T? zU3k9mec87+yyX#7zPx{a?<;+W;JZWX>j2N~KahR@BE@}VYP>qqSdHy4s zyleZ#>w7KU+wsr0cj2nKk^55IbpHkQixK$m)cUXg(I(v}7V^I*tSrXVIQ}{=ub3)8 ziC-PZN8$gm*8jO5Z_>3tBe%<7;f4}Z>k<2(6`^bT#~6HfX?=hClTEtFXXUsb8w`Bb zRJ&j@tIqfTTf2T=t*H_|7R)+vD{k6S{roT+W_Yqw7Xa1Rk!mg z#b4`9#jCyEtBH3SzWcPk4?K@?PY+)lr+jb3-`>>uxaF1i#~u4W z;8A?<`v;cq)lte(&&SQ6oc-EzY*9w!3v&D^kEOYrI$nNZ-*QPt>yf$^Z9lW{J)rfS zfafE^J|e&M+r27FDm3(iNIt8*bEU$tEp;QLRl@0MS0 z(pmmS_Wj8_0S}w69?vA_hbHDE&@tU%W9__iwHLOD}EG zJ^4G?zy9GcCsX}nx!0{MLGf4nhXnusX#GEe_f42;X@0s+aLm6t9 zRq*{>>-#c1KYmsA9ociZ)|Bt2-T&3s48C7zeN*9C`dA`*8-v9b0UBvHY-;}dg51Hz3zuvufMZk)$+TU(~ucg+v51!lKlzqF;?S98p zyzt$!%g9+1?;7MesP&D5r_rn(?aB_^w4BE3I!0JdgYVz8H_<_HTa4 zRDY(EJUe#b=9&NApKpY}wbs7_-jRQlpKU}=l-VnUj0$;1{3kVY`zUM z>UWnyR(#d@^sVr9(E8fKbL%^@?;m#kt`wT<+TpDaF#lh2T^iri?d~?@an$;T!?XAA zvhS{w<0YoHySMg!X5_l$t8RCf2jP z#jhS}{V(yahrf%~|GD=t?tdV+`(X1U{u@wl?YPhLF(Y$LKe-FOu3F!B;Q8W*a@?2x z=J}?n^Id$N{yp>U7DnDi?XI5hqH_{%T7PeNzpzvGe=+EGPgDLp!`r#TeBXcfzX$$@ zwf;`@qup}c()z{@Q{(C@yWc&q zQ`;!Z{ZXAK+y{RTt^ZMY@7W{A?Ye9DF;n|n*T|dFyn#-3iXed3){~Jr7gmw7zuSf8QST6HIV$&!cgZ zQ+H9fBf1fa<{|f^9B*wox9!9E^!;+X-;n+GMN`|Ue0^l|C%8RmMVC?5tGbEjd@1Z4Y%k`ZoN-wf-02{k(%5_ZQ!FnKyNP@1=eJTt0cTy#3J>gT~P(;Txg# z^@8V3PIBCdAC%ugom4vx!S_vzow#j(_dZ<6S}sEAC+c~`@4!D&>;ETspFbq~-eKK) zs`bCuYm=@C3ys$=w*QdM(VL1JoBZ3;4b`>ykDyw}wBxDoTG z<-Orjyz2Hy_jDv`eZPd~W?$L&>FW1>ZYthQ7VnuK*tvhnS`+Ux@J-VCI>U3TpX|Hq z(T%ClT-Of2#WNWD@$j8$toW+Oc|Sp(V_M%(c%Jr`eeXH&*H=vSp>lg~8}}VFbzFe!r2Fv@(9X{`f4l=XOBi3`Fpgh6 zF8CG7IiW4*`(c}OGgzqK+&LckrK#g<+}HoHIUTXD*y@+sM?F9A9Q;pe{qGCkq;th$ zcE=rPPI_jIT8JKBcpmb<7(c#n`xvN2pVrLn50)ED7je-;N~!dq=e^4S zZPgz19{DjqW*w(C0p{vCHKM^oDr)kO@am0bfK88wgqKl;0CMM;wgFrhJtPUgLIy~- z^d#R3K)<6Wr8+rzO0kESW&#$RnfkkUN)Crvt6LWqH%PCK?~REwP>5#5537&U+@Paf zDpgRA3jS58po{!K$L)A(a{-lmybcw7-F>eUWyYt=(^ER=#l;*3B+4`kkmAj$rvYt| zOs4?eQA|?-oiU!&7W07YSWc}39EsyVvjJA|OoIXEu%LcDfQh3_eG@#T$P}i!n-&-2 zV&r(t(jM{j;g0`SF*HsLJ2#v4XqqQ?k&IMp^!bEPpdz!8iMC z+4^rttr{S|`(BNlP6@xGl@~#JZzJSEk1KMu`}`g9ziZ_`gS3w1ZR-`ex-zyxzEvxq zf%N$%$iKTzUVYR*Hz?toBZs+h4!M861$|;OR^NSV=9XR)l9TBv9XrkKd>(K#OX()$ zMIW>AyS==((X&uwNR6`%?&_n_md39esD}5gEr==fE@YvAXn#UkERaQgY0tfU{~ew# z`w66Pwn2VM(#YR~{9WVtZ-)E}NdM9fx%sWjHKwtJ3V0tmER1u=HU1oW&uP?n!RO!2dZ{L{=rJQSud;uYzzbmiI08Z=gFd&8DN|hlnY$utMl|!68HIa2~mD zTfjau?FM)GnPBpvXDfF@p1DHK+w0vB|CutlYcuRYhSMuD;Qr3PLz+qQ>=%C?BlrEge`oO-P>GO|YS3f{kUvM8{}S?kZnjys zrp*jbSQ@v$r;wl1%IzTi`D(ei2R!0WQfzxIKHmK)cK%9!HQaw7f8NUcW)D8PH68`h z;wx{VR6+V|u3V-2CvxPj%&}#wIZ9h~1NvMVJwZt$2JOUYd-)9V9V<2ftkG{nYESYz z9#iCxD)N6p{^1Ha_n1hCZ&`y3or<33*ku22=s#Ma_u8^`6O=FB4D~B(6gfQ?L-PMX zzEdl=fb_{*ApfQsjXFMj4*ADg`P+~V-%9S^kXwhgcXj;w0y%bRbKG;=W}Ocfvj^qp zCs!?vCSO9nTPsh1^jEh-E^fqph1}Jbx>!QKN0A#3*k3~3ML9m-pv-VyP%3PN9G|Qx zz1U%eA@|67%K9#iBtknhvV_d%LR@`|;~ zoEZc{R-E7$=U{;?th<_8myK7JqMt0l;3YuljsJ3{_Xt^74e8@~?u)m4zw z>QeWXPLO}5m5ci~V_by%!JC%5kJ>zkkmFz49PUt;eG56n8q6pto(Gk9oFV_WRz3ph zXB!~@Gs%s&MHk5bvqH|za|Gi1A4Gyglo5K<6DatV}lnIWy zx;!91sK}Mg1@W(cbhGX)EM^}+qD)uR`J5N@Rx9keefB{dLm6CdQ8GZs74`mo?sd>ry`-l4=pCoHLZ`ao`DESD!YaS-?X5W_W1=SWMRGc8_{b*mR07DNHMJG|&8 zxpX&J{f{MoZ{~Qf+62*dElpxU0|nT5OT7->+(2fQI$bNiUh&Zz{b!bN zo7`}#G1XDGI|B-KQVO;<9$9@+Y}ppX>MdbcLT^q`NBSsaIb<9wO#~Mq^>`EVDthq% z$<>yQhTK^z&xQ2Ie~0|QDn+gi#4(V&XyscWJ#P-Vt^#d}v zugHM?{%erdki6}ikQ1hkGG!drWaxCtY-^&|fQe zgY>?A6wEz}T&-^!d+0r2o)XJ+M{lz~a|MQ*8y+>6mGS0@%Hks)YB225LmAdUJ0atnDsWu~Lc7}WhwK_0A?S3r8e z67pBRrR=BF&YS^xh*lm1=?@MVAf*hxLId#g4}|3 zYb2+K{V1ZdkVk0cEs);g0{IJ%EAr7iO z{~@HW_>p|QB3GL~AM!Y@{2-+71wh^=6uCObEPy;-D|di2HU#pk4=QqX=qZH!s8%i+ zHtW6_4f*ixkkcOg38nFiAWzWBe*tMV$q%ew9(vR{Q898PuE@d7GXVW_ambT@Gj_7Z z2N5O6kYt=e-pR&7T$lW7ok)<@%-tR&*^?*w*zEtoWV9=FQ1KoV3I8RP31swL`Y$<>-nYwxVO1{2wD!`D*G!syK zhUqXMCYxyvptg|d9H6F%sY|i1bf$!93&3Z9X*$4bm}wf|+BB%pd(OaYfy223aIyBI zlT(tC#MCm_Pbv)Yqjnes95XPj0fdAzEd-QDvvvk>G=Wpk0~!*U z+9!b?W9pFXCuLxPSu?;hld~lOnzLlV89&Lb*pE(99|s(%fnl;B4-l ze$oUMn0a*hNmqI~)w<75%Dl$31>iZsf^0a-yzy8&Y%Oal!5 z((y2+wSa*LrXG?0QZE+7;1uOAojl333Q(5iPitrZFqqG&K?TTG!l_>8{iWs$oa$KW zFP$o9+69QKU|I}_y2SJnAgO_~RRE%gIJE$fvVc^f?*mL(22czE2Lq%G8>TgYQhTPu zfJG;!A%_B_IV{iyIR{ATE=+3yJ)WRKZ|fBx)p!R`=u?0R9~K1o21o&ZoSFeB^ykzu zfO{a*Q-H82ra6F!Xr={#*chf40ViXbwgHObm`(!>NlfzrA;-9gY(U@f0P5>LsR2@1 z8q>q+0aD2c)(!y%PBQg46(Ch$L4_PM5PD{SBtpK>0;E8z8qrP6ZsPWm*ETtYex0=#Z&(Jyrk~gwq7bZe`jE zNN#6Z1E}d>s-su-pIv-%`NjPjhF{uMuV-9+Ksnl>>-)4{K97O;m@*LGd`ifN9k=5s z;*peJ>q?&dtxoKaJa0Fbj+@En-!6?~RZMfad4RxKrilOt_dp6a9MCRPYmY#w$Cpzb z{Q{-D0H#*}g-4in1G*!a+C~OSC!?4)1Lk9yhQtL*mPeVU0=$x#o&d}oV|pYxQ0h3& z)IK#(DoJBH1V}l-v;yFDifI~PIFqUO=|E}fEYqOuK&d>3=>*`=Ii{Ha-+ZR$03)TK z_yL%*K&jNP-|%Msd|>HrbmOiKZUAuJdI3`a2yiasKhoMXWi zKw1H()&T|znR*r-k;*PG9RLK>Gd&0J=w_M=sJ#X%^!CF?q{<1VwHpw6G^ z!GIv?S|HP)BSBJQOb{IbyTk@b-B?iLMZnZKrm1;B(p)jq*peX0x{2o)T2`{^9z=4lJp+_!BSj6F!>e(;)0l-2c(<<75Z*~M{Y1RY6>9cLNLX9 z32>@DSbBiAreG;&CRoBxz>NV~=RtLPw*_Rg3n6Vaz`+Gn=pzBAJUF!x5PFPh86YGj zgo&8BHI*G`)Pze$B~r)x~vQoq?ffp zDzGt7je7yEb_VXA0CyLrX94+sOs@cjjxhBOGDra-OmhHbp-hJXtx-&!qYYAd4ATj~ zLLAemc!T7d$n+GTAem_+AgO@EIS&{wQZsikNUwi7ey1TxMJf&a5 z1rRzOQ4bx@A;a+%8E`^t6Qpau2YJE+kdwc9UM3InRIU7RNbN{obuZ*}{tF{Jhm#L^ znpU0!>D}LlJndFRuFn1oAWzrIe*vi-$!}bz$kmG_g^-`n%CjK7{|At_8J&Jt4~>eD zOXIgY!WGJBNjNg$z&Q-^@TY7Von@e}s- zEVF^+29|w*O*6|Vpsa<%@I$xRGzv8hk^WVg@0PBb$(JR{&>Lw|Z|vTCvlj+Fx8uV3`1{Xk=KTzX(X>)H=W{-Cx{xMabGYD1 zz`2BFKHyQtvJ%Lt<;*&PqB@pSKxz{kdVt|Jmd@?|!n(ts_To`MK{tDQfSMkb(?EAG zdsl&=ewIZ*(*PTc2K_}g7W7UpurR_Bzf=(^?|ZC_R8P~ZVrgTP?`HI1b*Ia#`=cAH z`?;k5RG5ywpis6dFYT>WI^*s#t@GeXe^ENaId=o*i(F$*pmK>*`v8koq~dS|v}__( zsh$Tc%mRcEIJ*fDvF9O`>Ovsif@LW%V+E&T$a{(0ivM`2BmrysILta+qS6Z zfZX~(?n|I(1`@v^2ly{?YAz7A5=fcV18wF(be?E@J_uLDgD5N-n05>zgWIJbQCSj1 z18EBItYSkxVBNqn0f=m6*#eCBv$P)w5`LD!RB$dZN)jgnR>5M-hNY8juqbh4ISu5v zu)GQcd9b_!T=iw?;ukDtu^@*K|6mau$g%)%2w|B7n1r$n09LYtsp`Qw!J@mIrD;X5 zFsfo10ysCZHy)^NW;qXRw6gST3l@GIEQ^4mE|vqpKo3jD-eA!>%yJc&n_%fa87#b~ zSr!2evn&^Zp+%OCOTof_g=HB~yT)=E7~N!PZ4@G6Ohc%dH9)mF%SB-5LI^d;!6HPM zTCt1*tn64u1D71wn+nuBh0vyM;v6DITsZZDYlvv}WVs9&1%}WBC={3o<{UgiLPSOw z%V8iblI0lSnar{nh)+kp_+d04JBQ^Y&{4$l8em+-UOyn9j%5X4+{guEZjrMlZ_3)F zU9s}fOP~L{W}mEBTMH0L#ym`MH~TGxS}pzIe?u<*puX`()u4RKUp`{*I)F!3`m z%M`$Gko!IjSi%CY(-3-NjAb$~y2|qW8al>2lnkLjl{KVNy$USYajK7fs4#V683k0k zv0MZ$da;ZE&iiT%Ktlk_Yk*HU%VNMMS|b6Ic$UFHZYs-uU@4oWOHQchEMU0-oG%Wg z(Uu9cm2j$4X{g94=hUl!e+8#z0I^jpTY$wHmX~WoMMpi$RiL+*rFCDZm>UeGKJy<6 z6~@`o=el&>ps zefAZlr8EG~4}^(DEa(-x!7$N0#Bve{xyrS#1cruLnvaBu*fEv`K*Tu979eMWWiL=R z$#MiRp9!PspBK=91zo%V3^|8WY3E(S#iV;UrP_Lg3y&a{=|EB_%O=1vl4UB;8qd-= zAzZ|!vTOjN(pWYEQ|X+qRYth*&*Ri`z@~s@G%!)h28Xh6(N)EA1#oR;LmH6L!Ll2u z>|wbGTo_<)AYgTsQ^Nq0VU~VC`~(~NfeXu=8VNX?MbPj`0wT^wP&4a+;22KL2i#&g zH6CbBVdSNgsn2cz=faM&^JRoA3 zWg9SQ9ZA)(vxyXL&MZrSsklhqG~y%0MoJ`Y1Wu`uA~P?NTG0ad7qB58@Ga)BD&Tw> z%LHKU3QOPeNLh!%>Xn0EDLpK22I1i*;YJwt^ih3yk92!c-Vpo_ z;Bf|dL%1xBY25Cdz-YGpF-G*g&W1E4r_WSNq!?-C0@nch4wjLCbvH}JPC8k_Ekl)F zDeVXFq@GlY@r^>NQ9!{vDC9q#um7UhN>8Mi@8#?+^hJu^F_z1K*%ZqZplFsm&SWl9 zl&r9v0gOzdsFQ<%p7T-Ev!)lK#AQF0*?>hb%T!=6Jc?G+`G_cy7sXPs(~3??RGoYD zD&LLD=Sr2gyis}8yDuqnk865}PWtE*6B8xEVmZ4^peUZ@7?52c7eYQ&*4=uAj2*zE zh2QTX<;O26einm5jGX^Igg~16juuA=$1=_?2{E<0f}jJaEMyBtXE_O&1+xqS91>V2 z0BNZ#JAs%imQ{dpUNo(b0AR8tn)X{(rO_e>3pRxjAhC-L7`>Vcw$xS(JswZcrI(^b zs1s+G0VJb-sE|Uj^MKZj0smLMuuZeqrgIBK< z9+B=8!^#JUZMa8RAjRzGhpBOs`xmfAlKpA@+tAx#FVwfU!)hA``^ha*?(&6=9k3Va z+f!iO77u&pF3B!mde{kjvA+F2SRKedAyoJ?^E`}KbwdczXP~aOkFA;2=^eMOglhxt>W>dmlUO2UREeOa2RZGS84`q{dlx! zo90z*GJ~-&%PY?p2%KYC4Oq;xArgq(;M8(p*g1yhQ-GN(B#w8$vL{Rb%P}I}k7Y4% zDS*96KzlH!t^>UxEY|?<@E97=g+N0j%W1$ShGh=W8p~e0xEK+g#IhM!%!m=U;Af39 zV?^OXG$ZG11J@vn58%w;>0mI-os9#C38JZGd|Zq)?Xt zm18ktmr`vu9wQ1TxU^~D@->!;K=~reMId>dWgXD8p{Y7xXA(Dt5+%V?W0qtbG0`Z*#bQ4KQvrMwFpq*er1aL^1%X(|1TiKptf` zVF+B2hQRJq(tZ(_0F}4Btgw9mW8hJT>p#yM85S#o!?^-!KuaXcWuQ1lBZ1XSmVsHZ z!a9c~cFDe61=Z09q|)VW`qwDETq<3DC=3r;)T7|-2VTbYxPv$D#>@9~eutO}ok5H0 zJ_xt_gRd%-l?D!biwyp`O*3XAi(*AlG1sEABv$lYVYvbnSH#jN>IBTHVrj2d05n&# z!MFxt^(=dUl_r)p&9TC%g=HR4(#moQ@aSfl0j%_}ywn>jT+HLBh&Uk6CXUu?FL1$u zr5|wl63cYJ+lgf+;N=`g>n#h&_TZQ)g9Vwb0xN+m1A^kjY!b^$$#J+c z$1)$V%3+xUxRbzXHtk#?iLm*@yb}vtb0t7-o4DSRX+SO0~ym zoXDKv%zA(dqj(A%0+Nm6sb+ORfCWd0+d>^yaq&FWLW_; z*|IdYix)}uET@4s2bPYG@nRVZO7pn{gEPx{pf6Zs2#FVS$?>!TJX7LDbRMVn1M@|k z>RlW!QffGL8knqQX;T+3avI~QOJ;$kHcoYFj~4@2uv)A;;)QoN%TyqAm<{zn@CeIB zpn8&vu$YP$t&7|{c1!VM!6bn?%GESMxS1tT%`yR3p9CI#K$0J)wgMx;oO&rFLD;2o zYB=DM%d#Bs%uArg*8*de>~*S25EpA%CIPd9T$=q*g6NuHukmDp2wq@$1-Q1#GGGl} z^F*rIrSplR&?}MhZ39aE5~-5oK#@PEP5>7IIW-jM4r6H=o+zebSO&)?3deZ%CIXpR zEC+y+B9=WsYYEFsrHNv`l4WF7qA;mr84P4Mv1|mqn^`6T8ye};k|^9eIW-fg=;eZ! zfa-xnfnTb& z0$gZIqJu~VP&CCwOahk|xZn)Hd6i`{FtwgUtHpjJ3AcHYN#+5Y#w>kJl0~m6OLMbi zao#SOT9FL6`Xy7_5`h7KPW1>#7OU~>jZH`v^HprHuTI8wOHQ2zChC)^#Xb$mqOzG& z=K

q$<^(K*uZ_R)O55WO0X5JqlQxrO>*F0Y+?6D2L0oDPqwfh3b&tm?8$9Sq8eK zhzbuj3WDSq<1GvWx~MG}0+4MRcTa>MBr@ z#c~ozYljr-RUmzgi)aB>X4v36n<8r0Q5~gv94Oh~)Iq?1lVuUGVU|jj^f6DxV^XQq zpnAZ|f>W~q2TPVQK#>*80l?jwWj?TE!_w0>Rn$AOoC6v!rP3Z|7Fc&lrN(=>rixH^ zHe>^NUR>HWAk&AvqrgxgOOv2fu^h}{?jfmSDvZN?!c#?WBunF{RM8X7(kce|#i6OFk)`IxNjQ{(oR~80V|Xy$&DWBuzhtnv;Yn1~|G- zvE2xBk)&JjWS;g6|5+T_E9JS!--Y%RzZb{$M<03>k6!MSg5>9d7Z6mXGacY-InTq~ zeE%O5%3gZbu2#6B-XeavB~bU}+teCK97q zHUOpxX<{4h5CJKvoZ1caWwW%%NfVyMEHeP-a+aAudj-pRV6!z%+=?99(uDf}XO;&9 zUu8oP&_2#`8Hkx<*$7xIq>1hLGII)8c8!xK0jFh_Il#PGIyKJOJYD3UXE_6;Twpm0 z#M!ZI1?nAGt^l)cEZyDHMU)rIG9br?

ZRz_Jo32x2(~B*n6<0}4}EP6C(8SjGca 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 D5`6~ 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

85NWkB{7`i{R@5A&mxP$2ows@9Gv#oh@ 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

UQ9P{t5~i8iA>4= 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

m@g+U8c69#@_U8z&~ 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

M0 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∨Ac<9bJV$HXQOQ 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 E0loK|7ytkO literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/cf082ae5 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/cf082ae5 new file mode 100644 index 0000000000000000000000000000000000000000..9634f1ffee3293f252e99abe86783e67948e23f1 GIT binary patch literal 1604 zcmbtTU1%It6h8OPou8fEma!Y%Dj_V=p)J%j4-H5yxY1P;swf+=2rD}~yEp8_$?j%% zV^mN?x=>0*8{4#0D`JBbN=qreDW!rKe=7RmgRM6GQ4paITCuSx)^qOcnxwBDxc8p> zoo~*Zdwx!Re{uI;YXJrffWv#QYBvsjo7`Y5oN4`Y{sqF1$o>7tjh~JZ*W zJ{%#eSuajkJJ=~bRpzMInz*45FZb4qUlMP+5|k=<>cFpS%*pw$KJ?D<1OoL&Z6avO z(T*QbHa7km1)-ep2wIiViVVZZ;h_Vse?=J!nok6Ei5U7?xc6LNocOJBP|L~YRM^5> zWXlc3&d`6xf@*oB`nW$XOUg*Wz{fZ5r{jN}BOZCUiIOdn))lHT1?T46TG1=g#CVy1y-4BrZdeXkBN7D41x3LJw6XeOdxXNWIKLfJVr=I?tjJNOVVlnqGiLHT zv{&@Z`l2(9+rMFI9xrykQy;uRnZJW;cMEh?t4o?r@E*kE{Ej@aZ)VnK_%;%9KzYBk z(t+6IrEdo~hl|(%+J9_n)62K82fW{q`Ev?jKeDxDzG?2R+```CZN$O&4%h6A820%x z=QJfhcIa6TFDkfKvd?6ZMzxG0#)QE_hbDH4J#UJG;$3l6b=_ndjmwL&3u1Tu>A2i+ zHOCc>t2?gYxTfP;jvI4aJIOwk;yTQ4UgX^6NsVs8)slh~!xc%L6wB4y25{GCn~b|= z+v5E5lrbN_F}N7B+qTACs~s2IjkOaxckPrhsIN+_rcS|mb<8;*vk%nuq9+5wISG_U Vk^{c3a1NO@Otr&>&dcI9%D=>=EV2Lq literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/cf206aa7 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/cf206aa7 new file mode 100644 index 0000000000000000000000000000000000000000..c98b5ded4655344a59db3c33b311825e19d223a7 GIT binary patch literal 4756 zcmb7HeQ;A%7Qgr9C6DB#Z7N{tQcJ010Y7+FA}*}s(h`M&AlrhX2+d3LnuMeYo1`tB zWiTRDVUSUzMRar!VgGPgbgHr+&ZreonW-JW*{K67;^54#A6wcmTee&Focr?9^v!Tr z&dh!9-gD3Ich9-^ypx;mul~LxIGK?2HH3V7>ZSglKH0r#mhH^DsnPy+(5GM4I_Lb+ z_U+3)m^Xx0tg`Hv-tggg1R8ZpFE~VzjZs%_@klK+g57#(R4gIO$!t=%*-FHaors48 zc=Y1qH48k3X4}h(Z;=&ws%@u`>!!!LUsK6d6tI(qr0x5-{VD43AT=qMGR|_#O6hl0 z#i8NgZO{h~sY@!5Ykk`#LZ(4{v`iY&+-L{VSJF4NkSy#dJ5XVx3;U-3bEb_fWHaL* z)K%xV-B|ZwA*j`4Qfu}{wfawNq>`N@o2H;7rfu-!KE-yVj2;mqD0m_JKJ9d-%Bz z#~53B9rfPBMny1^ez3AWg+6uadhAOdS#c9~1tUu*!O*WZMuLfWODwP`9*rkfsLi;Q zg!u3wK+DI9OEAVQfAGABd($`$kcC*xkd?UFeKVCGakZv+Lc8K>q8YjdSKD#nEU!ha7%i>MG`Jlpr@QgS^3;~%=wd`X`Fy#Mczg@2m*)87U+Xm{l zp>^%)9A}PuHflEa_)dXZ0jj+wb3B;KIdgGRhgWxaDd^MQbr=^VB`{c6ObL_ zW%p<>WM`iLHqKQKfDq#hF$@(AF;`KLOiYQJ#cgz!^ct)~2!4(z24({E@l(Apbg@Cx zO0zMBfr1qaUAyydr#sNyK-j1(SH>C(8rY>0>A{f0DK#2yM7}FyjV-~W!0+(Kg6&Nh zHdG2N5e>)KS>POp!#J8L%&tx?zhm{2xMlHHoq~tO9}Se-p<&#gesyvLPcR$BvXlSL`#LBRt7^j$BElWkL$qB zN)8MPbibZIGeCi2$ivBQHk+keSdhxGt;3gNK#S0;uL)wWFV=Mb1(T^=i$>#ZeC%`+_Qm2uf5PPOM_X7P@#3vCVI9Yw zosI|GtOm7MO6B@|y$M^h?c7#ex3OKtaJg9Htc-nj+|c<;+^e=wIE7C0e0C!_2*Y9$ z{p;u)ycV$Ytx1G~A*>R7jt7~=*jXLebYTVh9!#k1SBvegefXq~)vgW;zF&Ih_QROa zkY9P8^L<~N?>lh(;)|`n!uVO9<+1Sg@F5e&r~Bv=PSEN3Hb%nZSZCtszwgv~{5in9 z8)M+dvfjk8zN7n5b|KO8FGs`kqrt?{m3-x|>}Fd-4162kTg+ z;$df-uv_+~J^H$fS*7A(Z!lr|uZh=Uo%IJFV3mr8z0rhyZ;N~sYn(q=!zvXIds99Z za(?$WXHMgH;}0&+Rw~_q$8mE$2kcqv!0LW|{Y9)|@vw7D*z@l{-mCA~{j6f~uu47_ zd_S_fY6No}gH#mFiio z#XQS-&gZ~-j>2*kILeoPep-*8l99w{^4-bVlA8Bs`9wiNn7!T8A}H z&p(5K9}8YiP>fi**WP~$@Bg_x%+m1u2s4H;j^}#+yi@lB^YG{SvBAXAGl$XV59q!N5%HLi;Q&IMQih n!hRw+SW62PMXr@(FWQ2zzkv8xLm<^IiW^D(lf9(M4u|7^`Y7&a literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/cfa30618 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/cfa30618 new file mode 100644 index 0000000000000000000000000000000000000000..d924ee3ed58c49f9ed16e986c5bc3b55b6e70953 GIT binary patch literal 916 zcmY*XO=uHQ5T5sTw=dZ&HP%2yN(f>hhmz*vr3n78prwkCN9K>oIzw6&rLnSPKi%u1Xwm#D`pOM&mwA1<^5)*bJ1-}TQ1}q&9bcdiWR(OIjBoi z=DpoO_*K3VG)kRnv*G7UO>Z6_$kcq;l`iFCs}67y2j~jQZ0xi{5Ou|XJ4~mR+`Io~ zT_Dhwt)SYLs!dC4x872l!h|p|o-3}8oE$R|D-@Gx3!o~a)Mx=BFAYelfm{87(@=F#)kY|) zM~lcG;$f+97mjCph5B`=L@O`>SUkXFc{UeX+;_TbM#Q(7-k5FusXrgz++~- zA|w2{s)!X(XrM?8G=Hc~%W*LBA&BZYA)6DsRC{+&dvil)Cte@be_MZcS!DQ`%A(l| zs^GVFP%6^*cSfM|55%auA!dW=A9a%Xl6=eMki;`Lj+zWx zqf95UO+CCAqjxdL7b9v~WWOi3z(8v0SU~KV{%Z)6X4EevHUyMXw8r?FKu=ZALLM5> zbwZsOnN4C4X1Hw%)VLB8_p`J9_Ute?d(7k-c8idCvm7C~OpTmQQB`d&tg$by=D;eTW7R$(I8{s5NX2dXpUDk3nsv!G+FRw@FsT#7mlF!KZokg3xJbbF0nJw_JIO zSa00JzZ}tw#epWoHpr`?2Hlo}+{W@Y8oX<59Qt>I91}CtFJn^a+pp`~jK%|J|2!Wc z!>Xn0x;vJwUeUSIMH%dl)jAJFV<*Sv-LH`?>y#ba@8O7?Ty$S4M7B&Un{yt{kBy_t z-&$Tv#^&ahWGe4uQ?dS*gcBc9{E{7*o$vlGr&nNlDEWLWl}CPJrh9lg<0nt_Y^qN>iLI2H-7EjjhK%9(YZ;v0X4angn+Q;O2$7<1l&P2ZxgV3HV*Gcg-=O z6bIfr@C8y&rh0(!KE8TSx;+tROIIqLaQbp;>K;fZhWZ^^WCm_EX+mUVGsjSalO}2|HG| zVh-5t?(R+YJE_$wdL)trH+v&nlpRjJj} zSyTXk8uSo7o$6$&1oU+JM-OW5Qy3~gg~T&8k2lwm9(HJw`PM@3xC!OK>8Det;C-KT|5doKIP|J(9VHF2jKOg6+ z!+$Ktsfa!8c8RdFh)}u?MHdbR0S6?U&Bf=@P``Nr5t|mu@?>OFB(Bk8fuv7;rh|TV$%Bc5;)pmZPK$Hm zQ*mCk@zxCar&jqHCTIU;TAFF;rX@_vFfE^HNz?L&`B_I?W0n@yplBbqlyqU~EhXWz zMA(4MPc~n`GFnP9Wck8=*lH{pu7YBcGf-#wcLrydu)(Q9HPg<9LuU##Tsv8qrfDY% zrml?^YK3;ZP-kez3Spo2L7`r1M`vBTvUxtc8VFvowA)J`1+OnOrq|b?Rp|vc<^DMS j+d;T6*DynkHfG#K>rC8GW!6|*9ajzcgU3cN@Spq(zK)vk literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/d310df37 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/d310df37 new file mode 100644 index 0000000000000000000000000000000000000000..17bb67992af707016cb31defc11b42e3ea1b616a GIT binary patch literal 1084 zcmZ8gT}TvB6ux)n&d%=6tSq`QyQdwoLt%uyoYljSoS>@=rA^M&xm7pz8sp`alxx z=i?MFBJq^A-yYJ%%@8ereo>W`8ZB9R^(SAn;$7>EN}|h-9R@W zsf-<287NZT1JXJ$E1+*sGf$u%F3jo8k1h!}uzp&@z5WrqlU zBNDN-N<=K}67h_|-@*|VRUjgt0~vut^!{nB5>2fUjY5bKKAX3e3HKD}5-5$h9PHT- z&VSO!vyc-z1Dp|F`L=-||MgCIhlW5%knke!LKuV@t~IiKx`8Hc<)S{UCn>%IQQo@N zhw59tSvvxeovmCZtf`_fO$cgYP-8(&Y7|x*=nHG}7tutt1+<0Lj!ltitWJ}r7!h76 nzYj~2r*4S=x6~OEo8qko`+4=*q{RP$&`G@;d0*{9@z>-ZPj|*J literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/d96819b4 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/d96819b4 new file mode 100644 index 0000000000000000000000000000000000000000..1b883d84280fab6c0c735221dfcf739b33ef35ec GIT binary patch literal 4068 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 literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/e63b753e b/.temp/node-compile-cache/v22.19.0-x64-9de703df/e63b753e new file mode 100644 index 0000000000000000000000000000000000000000..2727671deb0fc1878bb7420c96e86d047d027db7 GIT binary patch literal 2236 zcmb_dU2GIp6ux)n&d%=6wjH`{cl*DXZlP$~O;Zb^Lg}ouE3J~E5lu;VHajibY`g9L zphRQ3#x)HlrqG|D5reQH#J?!fL?47g@sIfAo0zCI=$p1wP_X zyXSs;&bi;6J@dm)hXPhYPQ&xtCw;%aqwd(S(emR$^48^ph@aHvTHd!@IXMNsY1H!s z|Ec(K5a-R55b6+**%{O4h}H31#1xI9yAK}9crxY_iH)$N{+^^Fk^DA=&4TkUdd(+2 zCwZJb<@oL`kCu3f9xC6jBj|VPNKbhbkWR$wXB_s64*WUsx}%PNS)8Cjn2~yTXz!j7 z`WGf3JupFk=SJ%2S6^(HyubsNitAZI1^wzDn{U)Iz{b_&ehf#f?b0JhE#U7-#x->` zhn*2zVGgiZ0;7=grJH;hz4N!X<8aq85X6YvV15-n)3DdjS7@b83Ism`_*ZzS+#h=M z8A^-6KcGeRD%f^ zHel=OuFE#?2M5EE_?;yZ!~isUpZGKlqK9EFlxKq>PfR8!&%Hr#b*tkYAWywAObz8} z&2||wa+oqg;V`0Cn6yA8dvvLhiLQm#M(;6Z&`Og^1zHW2(A zNV;JKiC$R>{hTkX$5NvqEl$W>j>m2A;GGZ)c~szFu!1~Q-`8!)Psk4<#k~fPnGYU? zwUB2$a5TaS@|?Qz{97duWER#Hi$yhc%;c#=PS}squ@&-c2aZj!f;`{7_RCXJ9?z4; zB{%XZH+b;u?S(u$fg@}1Y|CzXHNQXRN1&iTcyN-z;}0S^3VG7M¼*+ytQ5sWZ4 z&R$?sY?d8o?=d&4!JAUt_eKqtmM}gw%)=TGKamYgW2!B!VJ(yzCUm#>VF>0RnVgyG z#8JFzRm6ax%qrrNsLUzzig-*=L_tufXIkHdr-_E?py|6lVu}D#XUgGueY{)nyb*e2 zEkSFEnORHF{}nS!-MK!P_2d0R!#>O_bNYu%KE4-b`4@YN2vw`Hmy^A`>}9f7kiC`+ zCEPa|j&fgTc#iuj!+7q?jKH`rG8Tcmm=P`9qSLydu@&OwoHlegFYmOY!_K!}l`LN7 zbl}YD6`V!r*u9o?vBSEME-7j{w_YypSY9VfH#?R~OQq$G6}c?!tN^^s1$d=&9q?+z z%WBi*^-bqo9Kasw8o>7;Y;8zaG(xy*1K>^4-+r9T0F0AcCDbk)PaQoRlEPU$beyAZGTr)zcsUfT_L0Fl~V(#ripU0*SN9pS&J zLCg+64lZh!$(=-iCsDOP96n#sB(=DMZQ%FvZtxo&z6COa*qwDs3B==U8?s}wFb MQW;lBvfJ(d06+4M$^ZZW literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/e7febbda b/.temp/node-compile-cache/v22.19.0-x64-9de703df/e7febbda new file mode 100644 index 0000000000000000000000000000000000000000..e4887e0e0e88b3e84667690ee94a701b09a3c953 GIT binary patch literal 1452 zcmZuwT}&KR6ux)n&fb~X1(rgrZ4g)JH1GlxscBl$QnLsMMzU>Un{3_Lh1u-l{=m*6 z^sP<0NrM$5KWSe~h#+fR|oRC`zA>l(WY%cWt@phf(w;%G)*Dj-e)|zhk%CkN@3U*g$;Jkc+e{147 z1&jLlCpu%|jJj&Mjt|oW!qc!QlS$1I)2hl_%TMX+RLPf|QD-P88eun_?N3F&t}7?h zbwz)mDJ|+Kn6^qa;+c^l9N+d;%dLEfni#SKLk7>q5I-5BxDhuw2AKLn(a;Akg%HQ> z$T752e<*fzV!T!dJebR-leSf~I5z#>mmm7T)|asQ-s_F#6YZmU_uixFnt9E&oy$js z0nh00hhQu zaNKTmOXAo9=b@pRmo=H|@XuQ4z$B}ro&2$`5_%$(8b5r;co$rQC&P9&o*#+ktf2LN zIFs$S25hlK(t-#a2Gjc$BZ*{RV!uk{9_~-t`EVcHA4z6jZEhHVME4a9Qw#2^he#Ga zpTnY6Jtm&977F>4G9*3!#ogObYLc^thLbr<6lZMV)_o7?oCKXh+&<7z<#ZsPOj(&| z+U)=o>Evej8a6)?=}+c%O~eG95E|eYsfiH79>k|{r1&&28Ru!FOn^eFWgk2Z!3picLexbQIxm_6WH3ICg# zycv`Bc;ifV{m1)=Sr48WSkvGw18Fxl7VpiXchE#FwkU{$TT|9LhmX~rl!kP45FIWB z|IMzaS3+i_qZol*V>j4TwhdH!Yj&Nm!_WMNp+miH4h5YkX#_E4M zByUBYZZoBH>A0+L@78hIqgC)_i*0)isX|3iV#o!JNUPqz(WRhMX~p{&`W3vAWUzuy vmJFp7`$i_IpU=h003lINWs_!JRn#khQCMe85mO|QwgXgj=Z#|iULEBh-&_LX literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/f23af879 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/f23af879 new file mode 100644 index 0000000000000000000000000000000000000000..52b040bbf7f81c7efcea0fb1d26e1e73cc790349 GIT binary patch literal 1244 zcmZ8hPe>GD6o23R*>9a$YO{kFB75)_MnE(yYBhhSxAR>$0Bcg@*dCGrr_ z26>2#ggVqAEsQ8Cs-uXmDbgjPAcLYmr;dS^hyJ|x&5W53zTNkJ@4at+@6B)b$@`C^ z9Wub80&uW#--vPeVr6IG!%Xq_@)^P>?D3`tfv*!&nD>oEy5s}=sY!7o9v0#^HAN9I zVfAvDmspBi9S>6^Xs^_&EgBVLny-ZF

{SCWQe!EW+<-COU4^#Z}!5fcr?k!uXgZ zl6x5d|E2RAUWokon$E}F@DRrkxxA|q#ow?UqkEb~_lD^MZ4dTbF!(m9o3+qWlnqZA z*F|ZD7@;vdd@SH%0s+8oP~rR+*+nH6CZhat(8at(sfdkr>()3aghxC^Rt{QDce>!ACnhfrWg5 zF-$2SrlqC(Rz~L`9u_$+a&7d6Hd#z${-AA4(C>l;`J_ppxIKz>P~(fu4KrB0 z3;CfOv0TDi{rhQw3tqWlVgU4-&Kcb#1O_1t=HAFO0#v**C94#b5g~z7t%z^jP=(DgLRn%`r7TO*Tv?H&+1j70{k!2upmudlU)!&$u!Xh^tifIL=RstMMs$3OndH%$ n4a>*qTP!-nCoLjHbI{)jnG#K@;;%x2)@mkJKj(4QwRQUoGU~+w literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/f5f9a09d b/.temp/node-compile-cache/v22.19.0-x64-9de703df/f5f9a09d new file mode 100644 index 0000000000000000000000000000000000000000..b578e7bdb034f0f0032279fec7f966af85cbc658 GIT binary patch literal 916 zcmY*XO=uHA6n?WmnPjs_tbvHekb{MaCC#NCilBuBEzwIVf{>EkBoj%CpphkChW{`#>Q3HcHkleOHa=S+eZ7ZYqv&!+98YEzov&A) z#3QKBiuOt20@&n#ws{C!($_fY>xfN=r+!qx`cG1(q*151jolc^tjgRLSes`)3?iSYn~n>DENklSjGT zt@$m1#(aA#5PVpw`<-gP(d~GpdB^ocuIb@>Tau=XEZGNz)FHWvI!hn338LQUaEocw zm^=4gt#Slh(eoRwkj+}Yd;JYHD@X_f6UEBv$dR;xSh-wpv_!{g3p7y3H}$=+7DK&U zt~K2MuAs^CQj(tvW<_L35e@c+G@xVx8U)GF^^9sF4P<4M8qpxSVT5Bh2V=)J3C{<(ST9C?)Awh5H4kKsL16o3TCPj(X*P*RstTGp~j zrLHVmb5=!>Oav&rV-x{_=bqm^ z=iGD7J-4rX{?(3f1!F&Y7;Cs?>*Q5O8rLpWzkDb2`}w1+ z9n+5LM6ckCagX+_O9)BRTD`4K8|Ma18_~J2vDR%~=Dx!l@CH3c6-=Mz-u5%LnS8XD#@P69$^iew zK^rknbgur2K*{mU=y=8iZ>c}23#_eQ)3XW#O_!NcSkoIKJKjnv$?rtJTn|mw@8zhkC-+$Z%$jn#1gTT zKWVxxsN7)s&El0}Bt^GBFy2C*XiAKZ5R2Ac**0+>DQ_a}5K3#)8$akJ_cj?gzY%5R zl`q%zb(a;^q%Y>Vjby>A_dfRdCO2Uc$ql1Lhepg&y2zG&hweF4ZtBUblUr{|5fmb1BfljUH7+5)HN_%{Xx!+M zrz6m+M6}yT8%Pcl3wdXrZ6B2K=3~chOI6X7om$b-l2W%axlKMJ9g#c_G8y! zQ~2uMbaGQ>Yb0fajV-+il$XtEIrNVtqvLS{#OO$Ge0ZRDFh1N%rY$#fCnayYv{9D%Qu)w!_N-@j=%ZX_Zj zvdWpftAD!ryi@X`!>J;R=~$DEcWHNWou+h)s_30qV!acj+I%P8&@q**-sZtOAAtk?FLnQ@;<;ck#B1*pnuj-g!cMF=`j1 zMO;4zb_49$EiUCIo-&^-qPMHu!fy}D``cyR-@Cvv?{6p9F_*307Qh7_q&bybK7$)v z*IK!*vZFFn8Lj-ay6#+G;Kj?#3mqt2XbQm|(a6QMe1w$Eztt0r*XG?yNU6vx>~v|n z@-qUEw^>uH3U<1jRz*eLZcWvSylPDy6?r#1okfZf##NCo1*LFFc}h?&aAfY&_7BiW zk!H->cGm2eQ$vVw4onnw?l@=UcAw>tuns~7ZF{&cETiJb0{NK=f!%_M>N}aOuqp5Pow;nKP)=m4?8@Rb73a7jLoXq8coTSz8m|6%_<=+Tk9xN zj_e|5k#c71Tt&*2y~M4oxKLlRXs+f$-ko1zZ}3q>=}!wqlwKUV9U{<$SfF1X1SKPC Smvsi=28LoQtWddKX8RLS(1aWS literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/f946cc88 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/f946cc88 new file mode 100644 index 0000000000000000000000000000000000000000..971a3d43370c70dda8b8ce09a43ef751b75f5777 GIT binary patch literal 1060 zcmY*YT}TvB6h3$6&feMC!PXzJVp}W{Hc&ILA8a9m1(SXrR-=TCo!NH8Rae*j$$E)` zr0_NTA?hV7f_@0=S&G6ae5hB0O!1+Yeh4({Av@>JZsvi@eCIp&o_o%@-%Nd&ADLqS zeh$#F*cH0L_FWBmK0eR?nY%#zq%+#^$g?#0U4?(fYC6;w@ysG3jEkA#mchC7i3_R$ zQD6?i9k>`*!5{Vp%ERRcjU}dr^=<)P;8&P2p=)8|Aznik6w78%4T(W!k*nikb?phl zi-YbSjT|)cm>IRFI=@}?AkNtN?)V-63o*P{I|OYKt)WG1;z~v>i7!ID*O)(==-I?i z85oMko!s$(WT8*ijHx$^C-PpUc+S1utx4QfTIuc+A^kVqJ!JRwp3J!QeBHmg4F@Uf zp`$n{9FEt=cUqI^-o!lDc@;Y%77QI&Q?xfR{xlKANTfNI8|cap*;yyzoQw4jB%Pj| z{KV6;Fmy8MjRaj>U&z!`^RZ+qmyeyrGpYWhbH1S`he^>kG*3iiLtn&@jp1T}V-{hW zu?DvprzY<`csnhS$U1|CRMwG0AGtpY zFYb@Wld0@_$bBs2fmMl4W)UKhRg=7S7Uf07xbiw}A(R$WO_Z1Hj7lSU>7UDr@-a*D zp(o=YyCo%+Y#6~~T&%`b*5SrdWc}MFPmy@mIRKIl)5RT&NSVC}_YqL=_mOgic|QfQ zhtXzHwsqBC zt88a5vwKBRURSEGE_1%?xS_m!mfmV6gL?vPxgC-(2MwDQp;fDz(LKA=ZM@>+mMALfComty$_@Ots zbI(2JJLleeUh~n9*NVZNgiN^z`E$pqpfNLd>JjHp7jg?%hmn6m9pCVQ^XC&IATJFr zuuFJBoKbLp7AEHtk9#O(d*n3;>%=^#A-N4EM+Nc@7px#|LciqLa?V<&tz{Ax?|r_@ zwu~1DopHkF@3`le7pY^D=TS688pNBv1|cjCatdy%U~=zw#gLvIiRShp&p~ES3!Ky$>q$M?Q~`{Xk;v=n*1V?YG-e27XSiRBevn1>8D>sRv}(Eb zbkYEWHJ$NKgP(QdW%cO6;kI%yaIHhLo7b@mNBVUGUyJ8`+`aQ*AJC}RVMG(HmWbIb zuHG|M4YIV6O~D%vs^MsSf3#oS%5G$x+w{cT?A_dN z?||~8vv;YrgUHRX39*wCs|ICL*_GT--ktvnx5BBssR-Xp~Krc_|mq=y( zyqC(nBny&ECD|d#PDvIe*(J&D0z_Z-NV2!UbG+;;2s|%W6sW+<{(^(@@~VQB$CF$clqhA_e}9&2#Y K4yM;*jeh_K5WMyP literal 0 HcmV?d00001 diff --git a/.temp/node-compile-cache/v22.19.0-x64-9de703df/fb96c6b8 b/.temp/node-compile-cache/v22.19.0-x64-9de703df/fb96c6b8 new file mode 100644 index 0000000000000000000000000000000000000000..615209f93471e4a347cb4bf5c0e7e98d75646866 GIT binary patch literal 1340 zcmaJzBqUo=!Pd^MJJ!msn>%Y3^kAVS z)q{4?h{{NbAiB~+Pu&Qki0Gk*Feri^d#EU@m+YK>b}(N$F!P`PJD2}lzPs-}9Pi=) zH44D^vP<`FE&TqrMt%RN@MrQM;bZpM$PM+=m=Eoqu<%y7Rl8@=eJ6e_q+JYfF7AX? z$ziRVwUZjbk8v4lObz_N-!Kh=+e2TN0^Gv;XFvY#mjqs`b9R(0D_I}tWf-pg2vy0e zv@T{*iV&q}*^(svNf+8tykh8Np=e_9<&kM0>e)o0ZLghoSb4N<;=MCE7qPsZO0*TW zXA!+}}-P${NZ zl|<@4GK4y-Y_SNUwJC6gaj}EzFCNei@^)8uI&X^|9KUw%CGEg1$Q{vxdFv}_MDcig zI%9VxvNm2&Xnd=`ZJP9>9*?Ke`56;fK5mV1rK^w+Iy3 z8_+8q8$ zGjn&^lG{W6C{`8&)*vtW$-&u)5Q9W9k!f1wObh8XcbT&uq^ILWKYob!;qY%`A2cji z+}c1i#H*Wzn$8XhI%LCWuP-{$F#yW^U%DabhO8T0Hx%7a%h-g?r@)ZPBvPbjbw6cp z$YtE%{R&8i(yubfQ2RAWdVbiaE}f`QR!;e~;O~`F0e^66g%S*w(t1b+nXZi|OHiXB dalI8zGu5jSctcVF;tSS0&)viBVq3ug%3mpb?y3L) literal 0 HcmV?d00001 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..f9183f3ca --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,234 @@ +# Pi Web - Development Notes + +## Quick Start + +```bash +npm run dev # port 30141 +``` + +Typecheck: `node_modules/.bin/tsc --noEmit` +Lint: `npm run lint` +**Never run `next build` during dev** — pollutes `.next/` and breaks `npm run dev`. + +### Dev server troubleshooting + +- Before starting a server, run `lsof -nP -iTCP:30141 -sTCP:LISTEN` and reuse the existing Pi Web process when it is healthy. A second `next dev` for the same checkout cannot use a different port as a workaround because both processes contend for `.next/dev/lock`. +- A browser-only `Module ... factory is not available` overlay usually means that tab has a stale Turbopack/HMR graph; it does not prove the server or source is broken. First call the browser's explicit reload action, then compare the current server log and a direct HTTP/API request. +- Restart only after the failure reproduces from a fresh page and the server-side checks also fail. Stop the exact dev process gracefully, move `.next` into a `mktemp -d` backup, and restart with the standard `npm run dev` command. +- Do not use `next dev --webpack` as a fallback. This repository's development graph can fail on `undici` imports such as `node:console`; development is expected to use Turbopack. +- Next.js may append a generated `BEGIN:nextjs-agent-rules` block to `AGENTS.md` when `next dev` starts. Treat that as generated tooling output, verify it with `git status`, and do not include it in an unrelated feature commit. + +--- + +## Architecture + +``` +Browser Next.js Server AgentSession (in-process) + │ │ │ + ├─ GET /api/sessions ────▶ reads ~/.pi/agent/sessions/ │ + ├─ GET /api/sessions/[id] reads .jsonl file directly │ + ├─ GET /api/agent/running ───────▶ running id snapshot │ + │ │ │ + ├─ send message ─────────▶ POST /api/agent/[id] │ + │ │ startRpcSession() ─────────▶│ createAgentSession() + │ │ session.send(cmd) ─────────▶│ session.prompt() + │ │ │ + ├─ SSE connect ──────────▶ GET /api/agent/[id]/events │ + │ │ session.onEvent() ◀─────────│ session.subscribe() + │◀── data: {...} ─────────│ │ +``` + +**Session browsing** (read-only): reads `.jsonl` files through SDK `SessionManager` helpers and `lib/session-reader.ts` — no AgentSession created. +**Sending a message**: `startRpcSession()` in `lib/rpc-manager.ts` creates an AgentSession in-process. + +--- + +## File Map + +``` +app/api/ + sessions/route.ts GET list all sessions + sessions/[id]/route.ts GET/PATCH/DELETE session + sessions/[id]/context/route.ts GET ?leafId= — context for a specific leaf + sessions/[id]/export/route.ts GET exported HTML for a session + agent/new/route.ts POST { cwd, message, toolNames?, provider?, modelId? } + agent/[id]/route.ts GET state | POST any command + agent/[id]/events/route.ts GET SSE stream + agent/running/route.ts GET currently-running session ids + auth/api-key/[provider]/route.ts POST/DELETE provider API key storage + auth/login/[provider]/route.ts GET OAuth/device-code SSE | POST manual code + auth/logout/[provider]/route.ts POST OAuth logout + auth/providers/route.ts GET OAuth and API-key provider lists + cwd/validate/route.ts POST validate/select a cwd + default-cwd/route.ts POST create ~/pi-cwd-YYYYMMDD + files/[...path]/route.ts GET file contents for viewer + home/route.ts GET user home directory + models/route.ts GET { models, modelList, defaultModel } + models-config/route.ts GET/PUT — read/write ~/.pi/agent/models.json + models-config/catalog/route.ts GET models.dev pricing presets + models-config/discover/route.ts POST fetch a configured provider's upstream model list + models-config/test/route.ts POST test a configured model/provider + plugins/route.ts GET/POST package plugin management + skills/route.ts GET/PATCH loaded skills and disable-model-invocation + skills/install/route.ts POST install skills through npx skills add + skills/search/route.ts GET/POST skills.sh search + subagents/settings/route.ts GET/PUT built-in subagent feature setting + worktrees/route.ts GET/POST/DELETE git worktrees + +lib/ + agent-client.ts typed fetch helper for /api/agent commands + draft-store.ts local draft persistence helpers + file-access.ts allowed file roots for /api/files and worktrees + file-paths.ts client/server path encoding helpers + markdown.ts shared markdown helpers + npx.ts npx runner used by skill install + pi-types.ts local structural types for pi SDK objects + rpc-manager.ts AgentSessionWrapper + registry + startRpcSession + session-reader.ts SessionManager wrappers + path cache + buildSessionContext adapter + subagent-settings.ts read/write ~/.pi/agent/agents/settings.json + tool-presets.ts PRESET_NONE/READ_ONLY/DEFAULT/FULL + getPresetFromTools() + tool-preset-preference.ts browser-persisted default for fresh sessions + types.ts shared TypeScript types + normalize.ts normalizeToolCalls() — field name mismatch between file format and our types + worktree.ts project/worktree resolution and git worktree operations + +components/ + AppShell.tsx layout + URL state + tab management + SessionSidebar.tsx session tree + FileExplorer + ChatWindow.tsx chat composition + completion sound wrapper + ChatInput.tsx input bar + model/thinking/tools/compact controls + MessageView.tsx renders one message (user/assistant/toolCall/toolResult) + BranchNavigator.tsx in-session branch switcher + ChatMinimap.tsx scroll minimap alongside the message list + MarkdownBody.tsx markdown renderer + ModelsConfig.tsx modal for editing models.json (opened from sidebar bottom) + AgentsConfig.tsx built-in subagent toggle + agent profile editor + PluginsConfig.tsx modal for installed package plugins + SkillsConfig.tsx modal for loaded/search/installable skills + FileExplorer.tsx file tree inside sidebar + FileIcons.tsx file icon helpers + FileViewer.tsx file content in a tab + TabBar.tsx tab bar (Chat + open file tabs) + +hooks/ + useAgentSession.ts messages + streaming + SSE + fork/navigate/reconciliation logic + useAudio.ts completion sound + browser AudioContext unlock + useDragDrop.ts shared drag/drop state + useIsMobile.ts responsive breakpoint hook + useTheme.ts theme state +``` + +--- + +## Key Design Decisions & Traps + +### AgentSession lifecycle (`lib/rpc-manager.ts`) +- One `AgentSessionWrapper` per session id, keyed in `globalThis.__piSessions` +- `globalThis` survives Next.js hot-reload; plain module-level Map does not +- Idle timeout: 10 minutes. Concurrent `startRpcSession()` calls share a single start Promise (`globalThis.__piStartLocks`) + +### Fork must destroy the wrapper immediately +`AgentSession.fork()` **mutates the wrapper's inner state in-place** — after fork, `inner.sessionId` is the *new* session's id. If the wrapper stays alive in the registry under the old id, the next request gets the already-forked state and subsequent forks produce a corrupt `parentSession` chain. + +**Fix**: `send("fork")` captures `newSessionId`, then calls `this.destroy()` before returning. The next request for the original session reloads a clean AgentSession from the original file. + +### Two kinds of branching — don't confuse them +- **Fork** (Fork button on user message): creates a new independent `.jsonl` file. Shown as a child in the sidebar tree via `parentSession` header field. +- **In-session branch** (Continue button / BranchNavigator): calls `navigate_tree` within the same file. Multiple entries share the same `parentId`. Switching between them calls `/api/sessions/[id]/context?leafId=`. + +### Session files can be fully rewritten +`parentSession` in the header is **display metadata only** — has zero effect on chat content. Safe to `writeFileSync` the entire file (pi does this itself during migrations). Used when cascade-reparenting children on delete. + +### ToolCall field normalization +Pi stores toolCall blocks as `{type:"toolCall", id, name, arguments}` but `ToolCallContent` uses `{toolCallId, toolName, input}`. `normalizeToolCalls()` in `lib/normalize.ts` handles this — called in both `session-reader.ts` (file load) and `ChatWindow.handleAgentEvent()` (streaming). + +### New session tool preset +Tool names are passed at session creation (`POST /api/agent/new` -> `toolNames[]`) and persisted in versioned `pi-web:tool-selection` custom entries. No entry means a legacy session and keeps Pi's default behavior; an empty array means Chat only. Chat only resolves before services are created, loads no extensions/skills/prompts/themes, and replaces Pi's base prompt with the ordered contents of Pi's discovered context files. Crossing the Chat-only boundary rebuilds the wrapper; changing between nonempty presets updates it in place. Subagents persist their active tools plus profile-level skill and extension loading switches in `resourceSnapshot`; loaded extensions cannot expose the reserved `Agent`, `get_subagent_result`, or `steer_subagent` tools to a subagent. See `docs/adr/0002-chat-only-tool-selection.md`. + +The last preset explicitly selected by the user is stored in browser `localStorage` and initializes fresh-session composers only. Existing sessions never trust that preference; they use their live `get_tools` state or pi's default when no wrapper exists. + +### Model defaults for new sessions +`GET /api/models` returns `defaultModel` read from `~/.pi/agent/settings.json`. `ChatWindow` pre-selects this on mount for new sessions. Explicit browser model/thinking selections are applied atomically during AgentSession construction, then `lib/startup-preferences.ts` persists their effective values without replaying `set_model`/`set_thinking_level`; implicit `enabledModels` fallbacks and thinking pins are not persisted. + +### `enabledModels` scoping +The `enabledModels` setting uses pi's `--models` syntax: minimatch globs against `provider/modelId` or a bare `modelId`, fuzzy matching for non-glob patterns, and an optional `:thinkingLevel` suffix. Never compare those patterns as literal strings — `lib/model-scope.ts` delegates to the SDK's `resolveModelScopeWithDiagnostics()` so pi-web and the TUI agree on the visible model list, and falls back to all available models when patterns resolve to nothing. `startRpcSession()` resolves that scope before creating an AgentSession and passes the selected initial model, thinking pin, and SDK-native `scopedModels` atomically; `GET /api/models` reuses the helper only for selector data, `thinkingLevelPins`, and `modelScopeWarnings` display. + +### SSE reconnect on page refresh mid-stream +On `ChatWindow` mount, `GET /api/agent/[id]` is called. If `state.isStreaming === true`, SSE is reconnected automatically. `thinkingLevel` and `isCompacting` are also synced from this response. + +### Compaction SSE events +Newer pi emits `compaction_start` / `compaction_end`; older versions emitted `auto_compaction_start` / `auto_compaction_end`. `handleAgentEvent` accepts both sets to keep `isCompacting` in sync. Manual compact is a blocking POST — the button stays disabled until the response returns. + +### Running state polling + reconciliation +- The sidebar polls `/api/agent/running` every 2.5 seconds while the tab is visible and pauses polling in background tabs. The session-list response remains the initial fallback. +- `useAgentSession` treats per-session SSE as primary for chat events and opens it before each prompt. `prompt_done` completes the current UI stage and notification immediately, but the idle SSE stays open for a 30-second grace window and is reused by the next prompt. `agent_start` cancels that close timer; `agent_settled` finishes extension-injected runs that have no wrapper-level `prompt_done` and starts a fresh grace window. Do not close on the first `agent_end`: retries, compaction, and extension-queued messages can continue the same logical prompt. +- While a run is active, `useAgentSession` periodically calls `GET /api/agent/[id]` and also reconciles on `visibilitychange`/`online`. This fixes missed terminal events from background tabs or half-open connections. +- Prompt runs use a monotonic run id; late SSE or slow reconciliation responses from an old run must be ignored so they cannot resurrect stale streaming bubbles. + +### Worktrees and project grouping +- `lib/worktree.ts` resolves linked worktree top-levels back to the main repo `projectRoot`; `listAllSessions()` attaches that to each `SessionInfo` so all worktrees for one repo are grouped together in the sidebar. +- Worktree operations are served by `/api/worktrees` and guarded by the same allowed-root rules as `/api/files`. +- New worktrees are created under `-worktrees/`. Existing branches are reused; otherwise `git worktree add -b` creates the branch. +- Removing a dirty worktree returns `409` with `{ dirty: true }` so the UI can ask before retrying with `force`. +- Sessions whose cwd points at a removed worktree are inferred back into the main project instead of becoming a phantom project row. +- git prints POSIX-style absolute paths even on Windows, so every path read out of git goes through `toNativePath()` (`lib/paths.ts`) before it is compared or returned. Compare paths with `samePath()`, never `===` — raw equality made `isTopLevel` permanently false on Windows and hid the worktree switcher entirely. Branch names are not paths and must keep their forward slashes. Browser code cannot apply Node path rules, so `/api/worktrees` resolves `currentWorktreePath` server-side; the sidebar must use that identity for highlighting and removal fallback. + +### File access allow-list +- `/api/files` is intentionally not a general filesystem browser. Allowed roots come from session cwds, their resolved project roots, `~/pi-cwd-*`, and roots explicitly added with `allowFileRoot()`. +- `/api/cwd/validate`, `/api/default-cwd`, and `/api/worktrees` call `allowFileRoot()` when they make a new location browsable. +- Allowed roots are stored slash-normalized, but that is a Set-key convention, not a correctness requirement: `isPathWithinRoots()` (`lib/path-security.ts`, the single implementation behind `isFilePathAllowed()`) re-resolves and case-folds both sides, so either path form authorizes correctly. Keep that one implementation — it is the security boundary. + +### Plugins and skills +- `/api/plugins` uses pi's `SettingsManager` + `DefaultPackageManager` for global/project package install, remove, update, enable, and disable. Disabling writes empty `extensions/skills/prompts/themes` arrays for that package entry. +- `/api/skills` uses `DefaultResourceLoader` so settings paths, package skills, and project `.agents/skills` are listed the same way the runtime sees them. +- Skill toggling edits only the `disable-model-invocation` frontmatter key on the target `SKILL.md`; keep that surgical so user formatting survives. +- `/api/skills/install` shells through `npx skills add ... --agent pi`; project installs run with the selected cwd. + +### Built-in subagents +- The global `builtInEnabled` switch is persisted in `~/.pi/agent/agents/settings.json` and defaults to `false` when the file or field is absent. Malformed settings fail closed; atomic updates preserve unknown fields. +- The inline built-in extension factory is always present so reloading an existing wrapper can apply setting changes, but it registers no tools while disabled. After changing the switch, the user must explicitly reload the current session. +- When enabled, only a recognized legacy `pi-subagents` extension that registers any reserved tool (`Agent`, `get_subagent_result`, or `steer_subagent`) is removed. Unrelated extensions remain loaded, and resolved conflict diagnostics are discarded. +- Runtime `Agent` dispatch checks the setting again so a stale tool call cannot start a subagent after the feature is switched off. +- See `docs/adr/0003-built-in-subagent-toggle.md` for the precedence and persistence rationale. + +### Auth and model config +- `ModelsConfig` combines models from `~/.pi/agent/models.json` with provider auth status from pi's `AuthStorage`/`ModelRegistry`. +- Provider listing is capability-driven, never id-driven: `lib/provider-listing.ts` decides membership from `auth.apiKey.login` / `auth.oauth` plus the stored credential type, so dual-auth providers (anthropic and github-copilot today — which providers declare both changes between SDK releases, so never assume it from an id) appear exactly once and never fall through both lists (#309). `lib/provider-listing-runtime.ts` adapts `ModelRuntime` to those pure helpers. +- auth.json holds **one** credential per provider and `ModelRuntime.logout()` deletes whichever it is. The delete routes therefore use `removeStoredCredentialIfType()` to compare and delete under the same file lock used by pi's auth storage. `ModelsConfig` also refreshes *both* provider lists after any auth change — refreshing one leaves a dual-auth provider rendered twice. +- OAuth/device-code/manual-code flows are streamed by `GET /api/auth/login/[provider]`; manual code responses POST back with a short-lived token stored in `globalThis.__piLoginCallbacks`. +- API-key routes store and remove keys through `AuthStorage`. Status endpoints must never return the raw key. +- The model test route is `app/api/models-config/test/route.ts`; `app/api/models/test/` is not a real route. + +### Completion sound +- `hooks/useAudio.ts` stores the toggle in `localStorage` as `pi-sound-enabled` and reuses one `AudioContext`. +- Browser autoplay policy means sound must be unlocked from a user gesture; `ChatInput` calls the unlock hook from interactive controls, and `ChatWindow` plays the tone from `onAgentEnd`. + +### Exported session HTML +- `/api/sessions/[id]/export` delegates to pi's export helper, then patches recursive tree helpers in the generated HTML to iterative versions so very deep linear sessions do not overflow the browser call stack. + +## Pi Session File Format + +Location: `~/.pi/agent/sessions//_.jsonl` + +```jsonl +{"type":"session","version":3,"id":"","timestamp":"...","cwd":"/path","parentSession":"/abs/path/to/parent.jsonl"} +{"type":"model_change","id":"<8hex>","parentId":null,"provider":"zenmux","modelId":"claude-sonnet-4-6","timestamp":"..."} +{"type":"message","id":"<8hex>","parentId":"<8hex>","message":{"role":"user","content":"..."}} +{"type":"message","id":"<8hex>","parentId":"<8hex>","message":{"role":"assistant","content":[...],...}} +{"type":"message","id":"<8hex>","parentId":"<8hex>","message":{"role":"toolResult","toolCallId":"...","content":[...]}} +{"type":"compaction","id":"<8hex>","parentId":"<8hex>","summary":"...","firstKeptEntryId":"<8hex>","tokensBefore":N} +{"type":"session_info","id":"...","parentId":"...","name":"user-defined name"} +``` + +`entryIds[]` in `SessionContext` is a parallel array to `messages[]` — maps each displayed message back to its `.jsonl` entry id, used for fork and navigate_tree calls. + +--- + +## CSS Variables (`app/globals.css`) + +``` +--bg --bg-panel --bg-hover --bg-selected --border +--text --text-muted --text-dim +--accent --user-bg --tool-bg +--font-mono +``` diff --git a/CONTEXT.md b/CONTEXT.md new file mode 100644 index 000000000..409b1946f --- /dev/null +++ b/CONTEXT.md @@ -0,0 +1,17 @@ +# Pi Web + +Pi Web hosts coding-agent sessions for user-selected projects while keeping the web server's runtime concerns separate from project work. + +## Language + +**Host Runtime Environment**: +The environment owned by the Pi Web server and its framework runtime. +_Avoid_: Project environment, shell environment + +**Project Command Environment**: +The environment presented to a command that Pi Web runs on behalf of a user-selected project. +_Avoid_: Host environment, inherited environment + +**Built-in Project Shell**: +A shell entry point owned and operated by Pi Web for commands associated with a project. +_Avoid_: Extension shell, arbitrary child process diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..99fe3367e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 agegr + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.ja.md b/README.ja.md new file mode 100644 index 000000000..659787da9 --- /dev/null +++ b/README.ja.md @@ -0,0 +1,134 @@ +# Pi Web + +[English](./README.md) | [简体中文](./README.zh-CN.md) | [Русский](./README.ru.md) + +[pi コーディングエージェント](https://github.com/earendil-works/pi) のローカルブラウザー UI です。Pi Web は pi と同じローカル設定とセッションファイルを使用し、ブラウザーから会話の検索と再開、エージェントの実行、モデルやリソースの設定、プロジェクトファイルの確認を行えます。 + +![構造化された Markdown、ツール呼び出し、プロジェクトナビゲーションとともに pi セッションを表示する Pi Web](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png) + +## 機能 + +- **セッションワークスペース**:プロジェクトごとに会話を閲覧、再開、名前変更、エクスポート、削除し、実行状態、コンテキスト使用量、コスト、コンパクション情報を確認できます。 +- **2 種類の分岐**:**New session** は以前のメッセージから独立したセッションファイルを作成し、**Edit from here** は現在のセッション内にブランチを作成します。 +- **プロジェクトファイルツール**:ファイルの閲覧とアップロード、Git Diff の確認、ソース、Markdown、画像、音声、PDF、DOCX のプレビューに対応し、変更時は自動更新されます。 +- **Git worktree**:同じリポジトリのセッションをまとめたまま、サイドバーからチェックアウトを切り替えられます。 +- **Web での設定**:Pi Web を離れずに、Provider のログインと API Key、モデル、モデルテスト、プラグインパッケージ、スキルを管理できます。 +- **英語、簡体字中国語、繁体字中国語の UI**:初回はブラウザーの言語に従い、トップバーから言語を切り替えられます。 + +## クイックスタート + +Pi Web には Node.js 22.19.0 以降が必要です。`node --version` でバージョンを確認してから、次を実行します: + +```bash +npx @agegr/pi-web@latest +``` + +サーバーの準備が整うと、CLI はブラウザーを自動的に開こうとします。開かない場合は [http://127.0.0.1:30141](http://127.0.0.1:30141) にアクセスしてください。Pi Web はデフォルトで `127.0.0.1` のみをリッスンします。 + +モデル Provider が未設定の場合は、**Models** パネルを開いてログインするか API Key を追加してください。 + +`pi-web` コマンドをグローバルにインストールする場合: + +```bash +npm install -g @agegr/pi-web@latest +pi-web +``` + +更新時は、実行中のプロセスを `Ctrl+C` で停止してから同じインストールコマンドを再実行します。アンインストールするには `npm uninstall -g @agegr/pi-web` を実行します。 + +## 設定 + +ポートとホスト名では、コマンドラインオプションが対応する環境変数より優先されます。`--no-open` と `PI_WEB_NO_OPEN=1` は、どちらを指定してもブラウザーの自動起動が無効になります。`pi-web --help`(または `-h`)で起動オプションを表示して終了します。未知のオプションはエラーで終了します。 + +| オプションまたは環境変数 | 用途 | デフォルト | +| --- | --- | --- | +| `--help`、`-h` | 起動オプションを表示して終了 | — | +| `--port `、`-p `、または `PORT` | サーバーポート | `30141` | +| `--hostname `、`-H `、または `PI_WEB_HOSTNAME` | バインドするホスト名 | `127.0.0.1` | +| `--no-open` または `PI_WEB_NO_OPEN=1` | ブラウザーを自動的に開かない | 自動的に開く | +| `PI_WEB_ALLOWED_HOSTS` | 追加で許可するプロキシまたはカスタムホスト名。複数指定はカンマ区切りで完全一致 | 未設定 | +| `PI_WEB_PASSWORD` | HTTP Basic Auth を有効化。ユーザー名は常に `pi` | 認証なし | + +例: + +```bash +pi-web --help +pi-web -p 8080 -H 0.0.0.0 --no-open +``` + +### リモートアクセス + +ループバック以外のアドレスにバインドすると、高い権限の操作を実行できるエージェントがネットワークに公開されます。信頼できる LAN で使用する場合も、十分に長いランダムなパスワードを設定してください: + +```bash +PI_WEB_PASSWORD='十分に長いランダムなパスワード' pi-web --hostname 0.0.0.0 +``` + +Basic Auth は転送中のパスワードを暗号化しません。平文 HTTP で Pi Web をインターネットに公開せず、信頼できるリバースプロキシによる HTTPS または信頼できる VPN を使用してください。リバースプロキシが外部ホスト名を転送する場合は、その名前を完全一致で `PI_WEB_ALLOWED_HOSTS` に追加します。この許可リストは Pi Web のバインド先を変更しません。 + +### HTTP プロキシ + +サーバー側のモデルリクエストと API リクエストは、標準の `HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY` 環境変数を使用します。 + +macOS または Linux: + +```bash +HTTP_PROXY=http://127.0.0.1:7890 \ +HTTPS_PROXY=http://127.0.0.1:7890 \ +NO_PROXY=localhost,127.0.0.1 \ +npx @agegr/pi-web@latest +``` + +Windows PowerShell: + +```powershell +$env:HTTP_PROXY = "http://127.0.0.1:7890" +$env:HTTPS_PROXY = "http://127.0.0.1:7890" +$env:NO_PROXY = "localhost,127.0.0.1" +npx @agegr/pi-web@latest +``` + +## 注意事項 + +- **エージェントデータ**:Pi Web はデフォルトで `~/.pi/agent` の pi データを読み込みます。セッションファイルは `sessions//_.jsonl` にあります。別の pi エージェントディレクトリを使用するには `PI_CODING_AGENT_DIR` を設定してください。 +- **ファイルシステムへのアクセス**:Pi Web はエージェントデータディレクトリと、セッションに記録された作業ディレクトリを読み取れる必要があります。既存の pi セッションを共有する場合は、pi と同じファイルシステム環境で Pi Web を実行してください。 +- **共有設定**:Models パネルは pi のモデル、設定、認証情報ストレージを使用するため、変更は両方のインターフェースに反映されます。 +- **ファイルアクセスの範囲**:ファイルブラウザーは、Pi Web で選択した作業ディレクトリと、既知のプロジェクトまたはセッションルートに限定されます。汎用のファイルシステムブラウザーではありません。 +- **Git worktree**:スイッチャーの表示条件、worktree の作成、削除時の動作については [Worktrees in Pi Web](./docs/worktrees.md) を参照してください。 + +## 開発 + +```bash +npm install +npm run dev +``` + +開発サーバーは [http://127.0.0.1:30141](http://127.0.0.1:30141) で動作します。一般的なチェックは次のコマンドで実行します: + +```bash +npm test +node_modules/.bin/tsc --noEmit +npm run lint +``` + +通常の開発中は `next build` または `npm run build` を実行しないでください。`.next/` に書き込まれ、開発サーバーに影響する可能性があります。ビルドはリリース作業時にのみ実行してください。 + +コントリビューター向けガイド:[Internationalization](./docs/i18n.md) と [Release process](./docs/release.md)。 + +## リポジトリ構成 + +```text +app/ Next.js UI と API ルート +components/ React UI コンポーネント +hooks/ クライアントの状態と操作に関する hooks +lib/ セッション、エージェント、モデル、ファイル、Git、セキュリティのロジック +public/ 静的アセットと PWA ファイル +bin/ npm CLI エントリポイントと起動オプションの解析 +docs/ ユーザーおよびコントリビューター向けの個別ガイド +``` + +アーキテクチャの説明と詳細なファイルマップについては [AGENTS.md](./AGENTS.md) を参照してください。 + +## ライセンス + +[MIT](./LICENSE) diff --git a/README.md b/README.md new file mode 100644 index 000000000..fdc6bb98c --- /dev/null +++ b/README.md @@ -0,0 +1,159 @@ +# Pi Web + +[中文文档](./README.zh-CN.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md) + +Local browser UI for the [pi coding agent](https://github.com/earendil-works/pi). Pi Web uses the same local configuration and session files as pi, so you can browse and resume conversations, run agent turns, configure models and resources, and inspect project files from a browser. + +![Pi Web displaying a pi session with structured Markdown, tool calls, and project navigation](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png) + +## Features + +- **Session workspace**: browse, resume, rename, export, and delete conversations grouped by project, with running state, context usage, cost, and compaction details. +- **Two ways to branch**: **New session** creates an independent session file from an earlier message; **Edit from here** creates a branch inside the current session. +- **Project file tools**: browse and upload files, inspect Git diffs, and preview source, Markdown, images, audio, PDFs, and DOCX files with automatic refresh. +- **Git worktrees**: switch checkouts from the sidebar while keeping sessions from the same repository grouped together. +- **Web-based configuration**: manage provider login and API keys, models, model tests, plugin packages, and skills without leaving Pi Web. +- **English, Simplified Chinese, and Traditional Chinese UI**: Pi Web follows the browser language initially and provides a language switcher in the top bar. + +## Quick Start + +Pi Web requires Node.js 22.19.0 or newer. Check your version with `node --version`, then run: + +```bash +npx @agegr/pi-web@latest +``` + +The CLI opens a browser after the server is ready. If it does not, open [http://127.0.0.1:30141](http://127.0.0.1:30141). Pi Web listens only on `127.0.0.1` by default. + +If no model provider is configured yet, open the **Models** panel to sign in or add an API key. + +To install the `pi-web` command globally: + +```bash +npm install -g @agegr/pi-web@latest +pi-web +``` + +To update, stop the running process with `Ctrl+C` and run the same install command again. To uninstall, run `npm uninstall -g @agegr/pi-web`. + +## Configuration + +For port and hostname, command-line options override the corresponding environment variables. Either `--no-open` or `PI_WEB_NO_OPEN=1` disables automatic browser opening. Run `pi-web --help` (or `-h`) to print startup options and exit without starting the server. Unknown options exit with an error. + +| Option or environment variable | Purpose | Default | +| --- | --- | --- | +| `--help`, `-h` | Print startup options and exit | — | +| `--port `, `-p `, or `PORT` | Server port | `30141` | +| `--hostname `, `-H `, or `PI_WEB_HOSTNAME` | Bind hostname | `127.0.0.1` | +| `--no-open` or `PI_WEB_NO_OPEN=1` | Do not open a browser automatically | Browser opens | +| `PI_WEB_SKIP_VERSION_CHECK=1` | Disable Pi Web update checks | Unset | +| `PI_WEB_ALLOWED_HOSTS` | Additional exact proxy or custom hostnames, comma-separated | Unset | +| `PI_WEB_PASSWORD` | Enable HTTP Basic Auth; the username is always `pi` | Authentication disabled | + +For example: + +```bash +pi-web --help +pi-web -p 8080 -H 0.0.0.0 --no-open +``` + +### Remote Access + +Binding to a non-loopback address exposes an agent that can execute high-privilege actions. On a trusted LAN, require a long random password: + +```bash +PI_WEB_PASSWORD='a-long-random-password' pi-web --hostname 0.0.0.0 +``` + +Basic Auth does not encrypt the password in transit. Do not expose Pi Web over plain HTTP to the internet; use HTTPS through a trusted reverse proxy or a trusted VPN. If a reverse proxy sends an external hostname, add that exact name to `PI_WEB_ALLOWED_HOSTS`. This allow-list does not change the address Pi Web binds to. + +### HTTP Proxy + +Server-side model and API requests honor the standard `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables. + +On macOS or Linux: + +```bash +HTTP_PROXY=http://127.0.0.1:7890 \ +HTTPS_PROXY=http://127.0.0.1:7890 \ +NO_PROXY=localhost,127.0.0.1 \ +npx @agegr/pi-web@latest +``` + +On Windows PowerShell: + +```powershell +$env:HTTP_PROXY = "http://127.0.0.1:7890" +$env:HTTPS_PROXY = "http://127.0.0.1:7890" +$env:NO_PROXY = "localhost,127.0.0.1" +npx @agegr/pi-web@latest +``` + +## Notes + +- **Agent data**: Pi Web reads pi data from `~/.pi/agent` by default, including session files under `sessions//_.jsonl`. Set `PI_CODING_AGENT_DIR` to use another pi agent directory. +- **Filesystem access**: Pi Web must be able to read the agent data directory and the working directories recorded by its sessions. Run Pi Web in the same filesystem environment as pi when sharing existing sessions. +- **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces. +- **File access boundary**: the file browser is limited to working directories selected in Pi Web and project or session roots it already knows about; it is not a general filesystem browser. +- **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior. + +### Downstream Session Context Menu + +Electron wrappers and other downstream integrations can provide a session-row +context menu without patching `SessionSidebar`. Listen for the cancelable +`pi-web:session-row-contextmenu` browser event and call `preventDefault()` +synchronously when the integration will handle it: + +```js +window.addEventListener("pi-web:session-row-contextmenu", (event) => { + event.preventDefault(); + const { id, path, cwd, name, clientX, clientY, refresh } = event.detail; + + void openSessionMenu({ id, path, cwd, name, clientX, clientY }).then((changed) => { + if (changed) refresh(); + }); +}); +``` + +The detail object contains `id`, `path`, `cwd`, optional `name`, pointer +coordinates, and a `refresh()` callback for actions that change the session +list. If no listener cancels the extension event, Pi Web preserves the +browser's native context menu. This hook is browser-side and independent of +Pi agent extensions. + +## Development + +```bash +npm install +npm run dev +``` + +The development server runs at [http://127.0.0.1:30141](http://127.0.0.1:30141). Run the common checks with: + +```bash +npm test +node_modules/.bin/tsc --noEmit +npm run lint +``` + +Do not run `next build` or `npm run build` during normal development. It writes to `.next/` and can interfere with the development server; leave builds for release work. + +Contributor guides: [Internationalization](./docs/i18n.md) and [Release process](./docs/release.md). + +## Repository Layout + +```text +app/ Next.js UI and API routes +components/ React UI components +hooks/ Client state and interaction hooks +lib/ Session, agent, model, file, Git, and security logic +public/ Static assets and PWA files +bin/ npm CLI entrypoint and launch option parsing +docs/ Focused user and contributor guides +``` + +See [AGENTS.md](./AGENTS.md) for the architecture notes and detailed file map. + +## License + +[MIT](./LICENSE) diff --git a/README.ru.md b/README.ru.md new file mode 100644 index 000000000..c001b9b41 --- /dev/null +++ b/README.ru.md @@ -0,0 +1,134 @@ +# Pi Web + +[English](./README.md) | [中文文档](./README.zh-CN.md) | [日本語](./README.ja.md) + +Локальный браузерный интерфейс для [pi coding agent](https://github.com/earendil-works/pi). Pi Web использует те же локальные настройки и файлы сессий, что и pi, поэтому в браузере можно находить и продолжать диалоги, запускать агента, настраивать модели и ресурсы, а также просматривать файлы проекта. + +![Pi Web показывает сессию pi со структурированным Markdown, вызовами инструментов и навигацией по проекту](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png) + +## Возможности + +- **Рабочее пространство сессий**: просмотр, продолжение, переименование, экспорт и удаление диалогов, сгруппированных по проектам, с отображением состояния выполнения, использования контекста, стоимости и сведений о сжатии. +- **Два способа создать ветку**: **New session** создаёт независимый файл сессии из более раннего сообщения, а **Edit from here** создаёт ветку внутри текущей сессии. +- **Инструменты для файлов проекта**: просмотр и загрузка файлов, проверка Git Diff, предпросмотр исходного кода, Markdown, изображений, аудио, PDF и DOCX с автоматическим обновлением. +- **Git worktree**: переключение рабочих деревьев в боковой панели с сохранением общей группы сессий одного репозитория. +- **Настройка через Web**: управление входом в Provider и API Key, моделями, тестами моделей, пакетами плагинов и навыками без выхода из Pi Web. +- **Интерфейс на английском, упрощённом и традиционном китайском**: при первом запуске Pi Web учитывает язык браузера, а затем язык можно переключить в верхней панели. + +## Быстрый старт + +Для работы Pi Web требуется Node.js 22.19.0 или новее. Проверьте версию командой `node --version`, затем выполните: + +```bash +npx @agegr/pi-web@latest +``` + +Когда сервер будет готов, CLI попытается открыть браузер автоматически. Если этого не произошло, откройте [http://127.0.0.1:30141](http://127.0.0.1:30141). По умолчанию Pi Web прослушивает только `127.0.0.1`. + +Если Provider модели ещё не настроен, откройте панель **Models**, войдите в учётную запись или добавьте API Key. + +Чтобы установить команду `pi-web` глобально: + +```bash +npm install -g @agegr/pi-web@latest +pi-web +``` + +Для обновления остановите запущенный процесс с помощью `Ctrl+C` и повторите ту же команду установки. Для удаления выполните `npm uninstall -g @agegr/pi-web`. + +## Настройка + +Для порта и имени хоста параметры командной строки имеют приоритет над соответствующими переменными окружения. И `--no-open`, и `PI_WEB_NO_OPEN=1` отключают автоматическое открытие браузера независимо друг от друга. `pi-web --help` (или `-h`) выводит параметры запуска и завершает работу без старта сервера. Неизвестные параметры завершают процесс с ошибкой. + +| Параметр или переменная окружения | Назначение | Значение по умолчанию | +| --- | --- | --- | +| `--help`, `-h` | Показать параметры запуска и выйти | — | +| `--port `, `-p ` или `PORT` | Порт сервера | `30141` | +| `--hostname `, `-H ` или `PI_WEB_HOSTNAME` | Имя хоста для привязки | `127.0.0.1` | +| `--no-open` или `PI_WEB_NO_OPEN=1` | Не открывать браузер автоматически | Браузер открывается | +| `PI_WEB_ALLOWED_HOSTS` | Дополнительные точные имена прокси или пользовательских хостов через запятую | Не задано | +| `PI_WEB_PASSWORD` | Включить HTTP Basic Auth; имя пользователя всегда `pi` | Аутентификация отключена | + +Пример: + +```bash +pi-web --help +pi-web -p 8080 -H 0.0.0.0 --no-open +``` + +### Удалённый доступ + +Привязка к адресу, отличному от loopback, открывает сетевой доступ к агенту, способному выполнять операции с широкими полномочиями. Даже в доверенной локальной сети используйте длинный случайный пароль: + +```bash +PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web --hostname 0.0.0.0 +``` + +Basic Auth не шифрует пароль при передаче. Не публикуйте Pi Web в интернете по обычному HTTP; используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение. Если обратный прокси передаёт внешнее имя хоста, добавьте это точное имя в `PI_WEB_ALLOWED_HOSTS`. Этот список разрешённых имён не меняет адрес, к которому привязывается Pi Web. + +### HTTP-прокси + +Для серверных запросов к моделям и API используются стандартные переменные окружения `HTTP_PROXY`, `HTTPS_PROXY` и `NO_PROXY`. + +В macOS и Linux: + +```bash +HTTP_PROXY=http://127.0.0.1:7890 \ +HTTPS_PROXY=http://127.0.0.1:7890 \ +NO_PROXY=localhost,127.0.0.1 \ +npx @agegr/pi-web@latest +``` + +В Windows PowerShell: + +```powershell +$env:HTTP_PROXY = "http://127.0.0.1:7890" +$env:HTTPS_PROXY = "http://127.0.0.1:7890" +$env:NO_PROXY = "localhost,127.0.0.1" +npx @agegr/pi-web@latest +``` + +## Примечания + +- **Данные агента**: по умолчанию Pi Web читает данные pi из `~/.pi/agent`, включая файлы сессий в `sessions//_.jsonl`. Чтобы использовать другой каталог агента pi, задайте `PI_CODING_AGENT_DIR`. +- **Доступ к файловой системе**: Pi Web должен иметь доступ для чтения к каталогу данных агента и рабочим каталогам, записанным в сессиях. При совместном использовании существующих сессий запускайте Pi Web в той же файловой среде, что и pi. +- **Общие настройки**: панель Models использует хранилища моделей, настроек и учётных данных pi, поэтому изменения видны в обоих интерфейсах. +- **Граница доступа к файлам**: файловый браузер ограничен рабочими каталогами, выбранными в Pi Web, и уже известными корнями проектов или сессий; это не универсальный файловый менеджер. +- **Git worktree**: условия отображения переключателя, создание рабочих деревьев и их удаление описаны в документе [Worktrees in Pi Web](./docs/worktrees.md). + +## Разработка + +```bash +npm install +npm run dev +``` + +Сервер разработки доступен по адресу [http://127.0.0.1:30141](http://127.0.0.1:30141). Основные проверки запускаются командами: + +```bash +npm test +node_modules/.bin/tsc --noEmit +npm run lint +``` + +Не запускайте `next build` или `npm run build` во время обычной разработки. Эти команды записывают данные в `.next/` и могут помешать работе сервера разработки; выполняйте сборку только при подготовке релиза. + +Руководства для участников: [Internationalization](./docs/i18n.md) и [Release process](./docs/release.md). + +## Структура репозитория + +```text +app/ UI Next.js и маршруты API +components/ Компоненты интерфейса React +hooks/ Состояние клиента и обработчики взаимодействий +lib/ Логика сессий, агента, моделей, файлов, Git и безопасности +public/ Статические ресурсы и файлы PWA +bin/ Точка входа npm CLI и разбор параметров запуска +docs/ Тематические руководства для пользователей и участников +``` + +Описание архитектуры и подробная карта файлов приведены в [AGENTS.md](./AGENTS.md). + +## Лицензия + +[MIT](./LICENSE) diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 000000000..8d4744f68 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,136 @@ +# Pi Web + +[English](./README.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md) + +[pi 编程智能体](https://github.com/earendil-works/pi)的本地浏览器界面。Pi Web 与 pi 共用本机配置和会话文件,可在浏览器中查找和继续对话、运行智能体、配置模型与资源,并查看项目文件。 + +中文微信群:请查看 [GitHub Discussions 帖子](https://github.com/agegr/pi-web/discussions/271)。 + +![Pi Web 展示包含结构化 Markdown、工具调用和项目导航的 pi 会话](https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png) + +## 功能 + +- **会话工作区**:按项目查找、继续、重命名、导出和删除对话,并查看运行状态、上下文占用、花费和压缩信息。 +- **两种分支方式**:**新会话**会从较早的消息创建独立会话文件;**从此处编辑**会在当前会话内创建分支。 +- **项目文件工具**:浏览和上传文件、查看 Git Diff,并预览源码、Markdown、图片、音频、PDF 和 DOCX;文件变化后会自动刷新。 +- **Git worktree**:从侧边栏切换 checkout,同时把同一仓库不同 worktree 的会话归在一起。 +- **网页配置**:无需离开 Pi Web,即可管理 Provider 登录和 API Key、模型、模型测试、插件包及技能。 +- **英文、简体中文和繁体中文界面**:Pi Web 首次打开时跟随浏览器语言,也可从顶部栏切换语言。 + +## 快速开始 + +Pi Web 要求 Node.js 22.19.0 或更高版本。先用 `node --version` 检查版本,然后运行: + +```bash +npx @agegr/pi-web@latest +``` + +服务就绪后,命令行会尝试自动打开浏览器。如果没有打开,请访问 [http://127.0.0.1:30141](http://127.0.0.1:30141)。Pi Web 默认仅监听 `127.0.0.1`。 + +如果尚未配置模型 Provider,请打开**模型(Models)**面板登录或添加 API Key。 + +如需全局安装 `pi-web` 命令: + +```bash +npm install -g @agegr/pi-web@latest +pi-web +``` + +更新前先用 `Ctrl+C` 停止正在运行的进程,再次执行同一条安装命令。卸载时运行 `npm uninstall -g @agegr/pi-web`。 + +## 配置 + +端口和主机名以命令行参数为准,优先于对应的环境变量。`--no-open` 与 `PI_WEB_NO_OPEN=1` 中任意一个都会关闭自动打开浏览器。运行 `pi-web --help`(或 `-h`)可打印启动选项并以退出码 0 结束,不会启动服务;未知参数会报错并以退出码 1 结束。 + +| 参数或环境变量 | 用途 | 默认值 | +| --- | --- | --- | +| `--help`、`-h` | 打印启动选项并退出 | — | +| `--port <端口>`、`-p <端口>` 或 `PORT` | 服务端口 | `30141` | +| `--hostname <主机>`、`-H <主机>` 或 `PI_WEB_HOSTNAME` | 监听主机名 | `127.0.0.1` | +| `--no-open` 或 `PI_WEB_NO_OPEN=1` | 不自动打开浏览器 | 自动打开 | +| `PI_WEB_ALLOWED_HOSTS` | 额外允许的代理或自定义主机名,多个值用逗号分隔,必须精确匹配 | 未设置 | +| `PI_WEB_PASSWORD` | 启用 HTTP Basic Auth,用户名固定为 `pi` | 不启用认证 | + +例如: + +```bash +pi-web --help +pi-web -p 8080 -H 0.0.0.0 --no-open +``` + +### 远程访问 + +监听非回环地址会暴露一个可执行高权限操作的智能体。在可信局域网中使用时,请设置足够长的随机密码: + +```bash +PI_WEB_PASSWORD='足够长的随机密码' pi-web --hostname 0.0.0.0 +``` + +Basic Auth 不会加密传输中的密码。不要通过明文 HTTP 将 Pi Web 暴露到互联网;远程访问应使用可信反向代理提供 HTTPS,或通过可信 VPN。如果反向代理传递外部主机名,请把该名称精确加入 `PI_WEB_ALLOWED_HOSTS`。这个白名单不会改变 Pi Web 的监听地址。 + +### HTTP 代理 + +服务端的模型和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。 + +macOS 或 Linux: + +```bash +HTTP_PROXY=http://127.0.0.1:7890 \ +HTTPS_PROXY=http://127.0.0.1:7890 \ +NO_PROXY=localhost,127.0.0.1 \ +npx @agegr/pi-web@latest +``` + +Windows PowerShell: + +```powershell +$env:HTTP_PROXY = "http://127.0.0.1:7890" +$env:HTTPS_PROXY = "http://127.0.0.1:7890" +$env:NO_PROXY = "localhost,127.0.0.1" +npx @agegr/pi-web@latest +``` + +## 注意事项 + +- **智能体数据**:Pi Web 默认读取 `~/.pi/agent` 下的 pi 数据,包括 `sessions/<编码后的工作目录>/<时间戳>_.jsonl` 中的会话文件。可通过 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。 +- **文件系统访问**:Pi Web 必须能读取智能体数据目录及会话记录中的工作目录。与现有 pi 会话共用数据时,请让 Pi Web 运行在与 pi 相同的文件系统环境中。 +- **共享配置**:模型面板使用 pi 的模型、设置和凭据存储,因此两种界面都能看到相关更改。 +- **文件访问边界**:文件浏览器仅能访问在 Pi Web 中选择过的工作目录,以及它已识别的项目或会话根目录;它不是通用的文件系统浏览器。 +- **Git worktree**:切换器何时显示、如何创建 worktree,以及删除会产生什么影响,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。 + +## 开发 + +```bash +npm install +npm run dev +``` + +开发服务器运行在 [http://127.0.0.1:30141](http://127.0.0.1:30141)。常用检查命令: + +```bash +npm test +node_modules/.bin/tsc --noEmit +npm run lint +``` + +日常开发时不要运行 `next build` 或 `npm run build`。它们会写入 `.next/`,可能干扰开发服务器;仅在发布流程中执行构建。 + +贡献者文档:[国际化](./docs/i18n.md)和[发布流程](./docs/release.md)。 + +## 仓库结构 + +```text +app/ Next.js 界面和 API 路由 +components/ React 界面组件 +hooks/ 客户端状态和交互 hooks +lib/ 会话、智能体、模型、文件、Git 和安全逻辑 +public/ 静态资源和 PWA 文件 +bin/ npm CLI 入口及启动参数解析 +docs/ 面向用户和贡献者的专题文档 +``` + +架构说明和详细文件地图见 [AGENTS.md](./AGENTS.md)。 + +## 许可证 + +[MIT](./LICENSE) diff --git a/app/api/agent/[id]/bash-output/route.ts b/app/api/agent/[id]/bash-output/route.ts new file mode 100644 index 000000000..99a504a56 --- /dev/null +++ b/app/api/agent/[id]/bash-output/route.ts @@ -0,0 +1,67 @@ +import { NextResponse } from "next/server"; +import { tmpdir } from "node:os"; +import { Readable } from "node:stream"; +import { + MAX_INLINE_BASH_OUTPUT_BYTES, + openRegularFileNoFollow, + readUtf8FileWithinLimit, + resolveBashOutputPath, +} from "@/lib/bash-output"; +import { isBashOutputPathReferencedBySession } from "@/lib/session-file-references"; + +// GET /api/agent/[id]/bash-output?path= +// Reads a bash output temp file referenced by this session. Inline display is +// size-limited; download responses stream the file without buffering it. +export async function GET( + _req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + let path: string | null = null; + let download = false; + try { + const url = new URL(_req.url); + path = url.searchParams.get("path"); + download = url.searchParams.get("download") === "1"; + } catch { + return NextResponse.json({ error: "invalid url" }, { status: 400 }); + } + + if (!path) { + return NextResponse.json({ error: "path required" }, { status: 400 }); + } + + const resolved = resolveBashOutputPath(path, tmpdir()); + if (!resolved) { + return NextResponse.json({ error: "invalid path" }, { status: 400 }); + } + + if (!await isBashOutputPathReferencedBySession(resolved, id)) { + return NextResponse.json({ error: "forbidden" }, { status: 403 }); + } + + try { + if (download) { + const { handle } = await openRegularFileNoFollow(resolved); + const stream = Readable.toWeb(handle.createReadStream()) as ReadableStream; + return new Response(stream, { + headers: { + "Content-Type": "text/plain; charset=utf-8", + "Content-Disposition": "attachment; filename=\"bash-output.log\"", + "Cache-Control": "no-store", + }, + }); + } + + const result = await readUtf8FileWithinLimit(resolved); + if (result.tooLarge) { + return NextResponse.json({ + error: `Full output is too large to display (limit ${MAX_INLINE_BASH_OUTPUT_BYTES} bytes)`, + data: { size: result.size, maxBytes: MAX_INLINE_BASH_OUTPUT_BYTES }, + }, { status: 413 }); + } + return NextResponse.json({ success: true, data: { output: result.content } }); + } catch { + return NextResponse.json({ error: "full output unavailable" }, { status: 404 }); + } +} diff --git a/app/api/agent/[id]/events/route.ts b/app/api/agent/[id]/events/route.ts new file mode 100644 index 000000000..43d564854 --- /dev/null +++ b/app/api/agent/[id]/events/route.ts @@ -0,0 +1,39 @@ +import { createAgentEventStream } from "@/lib/agent-event-stream"; +import { resolveSessionPath } from "@/lib/session-reader"; +import { getRpcSession, startRpcSession } from "@/lib/rpc-manager"; + +export const dynamic = "force-dynamic"; + +// GET /api/agent/[id]/events - SSE stream of agent events +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + if (req.signal.aborted) return new Response(null, { status: 204 }); + + // Fast path: already-running session + const session = getRpcSession(id); + let sessionPromise; + if (session?.isAlive()) { + sessionPromise = Promise.resolve(session); + } else { + const filePath = await resolveSessionPath(id); + if (!filePath) { + return new Response("Session not found", { status: 404 }); + } + if (req.signal.aborted) return new Response(null, { status: 204 }); + sessionPromise = startRpcSession(id, filePath, undefined).then((result) => result.session); + } + + const stream = createAgentEventStream(req, id, sessionPromise); + + return new Response(stream, { + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + Connection: "keep-alive", + "X-Accel-Buffering": "no", + }, + }); +} diff --git a/app/api/agent/[id]/route.ts b/app/api/agent/[id]/route.ts new file mode 100644 index 000000000..a573dfef0 --- /dev/null +++ b/app/api/agent/[id]/route.ts @@ -0,0 +1,90 @@ +import { NextResponse } from "next/server"; +import { resolveSessionPath } from "@/lib/session-reader"; +import { startRpcSession, getRpcSession, setRpcSessionTools } from "@/lib/rpc-manager"; + +// POST /api/agent/[id] - Send a command to an existing session +export async function POST( + req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + let commandType: string | undefined; + let promptAccepted = false; + + try { + const body = await req.json() as { type: string; [key: string]: unknown }; + commandType = typeof body.type === "string" ? body.type : undefined; + const requestedToolNames = body.toolNames; + if ( + requestedToolNames !== undefined + && (!Array.isArray(requestedToolNames) || requestedToolNames.some((name) => typeof name !== "string")) + ) { + throw new Error("toolNames must be an array of strings"); + } + const toolNames = requestedToolNames as string[] | undefined; + + // Fast path: already-running session + const existing = getRpcSession(id); + if (body.type === "set_tools") { + const filePath = existing?.sessionFile || await resolveSessionPath(id) || undefined; + if (!existing?.isAlive() && !filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + const changed = await setRpcSessionTools(id, filePath, toolNames); + return NextResponse.json({ + success: true, + data: { sessionId: changed.sessionId, recreated: changed.recreated }, + }); + } + if (existing?.isAlive()) { + const result = await existing.send(body); + promptAccepted = body.type === "prompt"; + return NextResponse.json({ success: true, data: result }); + } + + const filePath = await resolveSessionPath(id); + if (!filePath) { + return NextResponse.json({ + error: "Session not found", + ...(body.type === "prompt" + ? { code: "prompt_rejected", accepted: false } + : {}), + }, { status: 404 }); + } + + const { session } = await startRpcSession(id, filePath, undefined, { + ...(toolNames !== undefined ? { toolNames } : {}), + }); + const result = await session.send(body); + promptAccepted = body.type === "prompt"; + + return NextResponse.json({ success: true, data: result }); + } catch (error) { + return NextResponse.json({ + error: error instanceof Error ? error.message : String(error), + ...(commandType === "prompt" && !promptAccepted + ? { code: "prompt_rejected", accepted: false } + : {}), + }, { status: 500 }); + } +} + +// GET /api/agent/[id] - Get current agent state +export async function GET( + _req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + + try { + const session = getRpcSession(id); + if (!session || !session.isAlive()) { + return NextResponse.json({ running: false }); + } + + const state = await session.send({ type: "get_state" }); + return NextResponse.json({ running: true, state }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/agent/events-route.test.mjs b/app/api/agent/events-route.test.mjs new file mode 100644 index 000000000..6e48fa665 --- /dev/null +++ b/app/api/agent/events-route.test.mjs @@ -0,0 +1,20 @@ +import assert from "node:assert/strict"; +import { readFile } from "node:fs/promises"; +import test from "node:test"; + +const agentEventsSource = await readFile(new URL("./[id]/events/route.ts", import.meta.url), "utf8"); +const agentEventStreamSource = await readFile(new URL("../../../lib/agent-event-stream.ts", import.meta.url), "utf8"); + +test("agent SSE starts sessions asynchronously and disables response buffering", () => { + assert.match(agentEventsSource, /createAgentEventStream\(req, id, sessionPromise\)/); + assert.match(agentEventsSource, /sessionPromise = startRpcSession\([\s\S]*?\.then\(\(result\) => result\.session\)/); + assert.doesNotMatch(agentEventsSource, /await startRpcSession\(/); + assert.match(agentEventsSource, /if \(req\.signal\.aborted\) return new Response\(null, \{ status: 204 \}\)/); + assert.match(agentEventsSource, /"Cache-Control": "no-cache, no-transform"/); + assert.match(agentEventsSource, /"X-Accel-Buffering": "no"/); +}); + +test("agent SSE reuses one TextEncoder per stream", () => { + assert.equal((agentEventStreamSource.match(/new TextEncoder\(\)/g) ?? []).length, 1); + assert.match(agentEventStreamSource, /controller\.enqueue\(encoder\.encode\(/); +}); diff --git a/app/api/agent/new/route.ts b/app/api/agent/new/route.ts new file mode 100644 index 000000000..0a9184adc --- /dev/null +++ b/app/api/agent/new/route.ts @@ -0,0 +1,107 @@ +import { NextResponse } from "next/server"; +import type { ThinkingLevel } from "@earendil-works/pi-agent-core"; +import { existsSync } from "fs"; +import { randomUUID } from "crypto"; +import { allowFileRoot } from "@/lib/file-access"; +import { invalidateSessionListCache } from "@/lib/session-reader"; +import { startRpcSession } from "@/lib/rpc-manager"; + +const THINKING_LEVELS = new Set(["off", "minimal", "low", "medium", "high", "xhigh", "max"]); + +function parseThinkingLevel(value: unknown): ThinkingLevel | undefined { + if (value === undefined) return undefined; + if (typeof value === "string" && THINKING_LEVELS.has(value as ThinkingLevel)) { + return value as ThinkingLevel; + } + throw new Error(`Invalid thinking level: ${String(value)}`); +} +// POST /api/agent/new body: { cwd: string; type: string; message?: string; ... } +// Spawns a brand-new pi session. Most calls immediately send the first command; +// type:"ensure_session" only creates the runtime so clients can query commands. +// Returns pi's real session id plus the model/thinking state selected at startup. +export async function POST(req: Request) { + let commandType: string | undefined; + let promptAccepted = false; + try { + const body = await req.json() as { cwd?: string; [key: string]: unknown }; + const { cwd, ...command } = body; + commandType = typeof command.type === "string" ? command.type : undefined; + + if (!cwd || typeof cwd !== "string") { + return NextResponse.json({ + error: "cwd is required", + ...(commandType === "prompt" + ? { code: "prompt_rejected", accepted: false } + : {}), + }, { status: 400 }); + } + if (!existsSync(cwd)) { + return NextResponse.json({ + error: `Directory does not exist: ${cwd}`, + ...(commandType === "prompt" + ? { code: "prompt_rejected", accepted: false } + : {}), + }, { status: 400 }); + } + + // Use a one-time key so startRpcSession's lock doesn't conflict with real session ids + const { provider, modelId, toolNames, thinkingLevel, ...promptCommand } = command as { provider?: string; modelId?: string; toolNames?: string[]; thinkingLevel?: unknown; [key: string]: unknown }; + if ((provider && !modelId) || (!provider && modelId)) { + throw new Error("provider and modelId must be provided together"); + } + const explicitThinkingLevel = parseThinkingLevel(thinkingLevel); + + // Must be unique per request: startRpcSession coalesces concurrent callers + // that share a key onto one session. Date.now() (ms resolution) collides for + // requests in the same millisecond, merging two new sessions into one. + const tempKey = `__new__${randomUUID()}`; + const { session, realSessionId } = await startRpcSession(tempKey, "", cwd, { + ...(toolNames ? { toolNames } : {}), + ...(provider && modelId ? { initialModel: { provider, modelId } } : {}), + ...(explicitThinkingLevel ? { thinkingLevel: explicitThinkingLevel } : {}), + }); + + // Keep the files-route allowed-roots cache (see app/api/files/[...path]/route.ts) + // in sync so the new cwd is immediately readable via /api/files. Without this, + // a file request under a brand-new cwd would 403 for up to the cache TTL. + allowFileRoot(cwd); + invalidateSessionListCache(); + + const state = await session.send({ type: "get_state" }) as { + model?: { id: string; provider: string }; + thinkingLevel?: string; + }; + + if (promptCommand.type === "ensure_session") { + return NextResponse.json({ + success: true, + sessionId: realSessionId, + data: null, + model: state.model + ? { provider: state.model.provider, modelId: state.model.id } + : null, + thinkingLevel: state.thinkingLevel, + }); + } + + const result = await session.send(promptCommand); + promptAccepted = promptCommand.type === "prompt"; + + return NextResponse.json({ + success: true, + sessionId: realSessionId, + data: result, + model: state.model + ? { provider: state.model.provider, modelId: state.model.id } + : null, + thinkingLevel: state.thinkingLevel, + }); + } catch (error) { + return NextResponse.json({ + error: error instanceof Error ? error.message : String(error), + ...(commandType === "prompt" && !promptAccepted + ? { code: "prompt_rejected", accepted: false } + : {}), + }, { status: 500 }); + } +} diff --git a/app/api/agent/running/route.ts b/app/api/agent/running/route.ts new file mode 100644 index 000000000..a1368ab5e --- /dev/null +++ b/app/api/agent/running/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from "next/server"; +import { + getCompletionNotificationSuppressedRpcSessionIds, + getRunningRpcSessionIds, +} from "@/lib/rpc-manager"; + +export const dynamic = "force-dynamic"; + +// GET /api/agent/running - Lightweight snapshot for visible-tab polling. +export async function GET() { + return NextResponse.json( + { + runningSessionIds: getRunningRpcSessionIds(), + completionNotificationSuppressedSessionIds: getCompletionNotificationSuppressedRpcSessionIds(), + }, + { headers: { "Cache-Control": "no-store" } }, + ); +} diff --git a/app/api/app-update/route.ts b/app/api/app-update/route.ts new file mode 100644 index 000000000..3bc68afd5 --- /dev/null +++ b/app/api/app-update/route.ts @@ -0,0 +1,86 @@ +import { NextResponse } from "next/server"; +import type { AppUpdateResponse } from "@/lib/api-types"; +import { getPiWebReleaseUrl, isNewerStableVersion } from "@/lib/app-update"; + +export const dynamic = "force-dynamic"; + +const CURRENT_VERSION = process.env.NEXT_PUBLIC_APP_VERSION ?? "0.0.0"; +const NPM_LATEST_URL = "https://registry.npmjs.org/@agegr%2Fpi-web/latest"; +const CACHE_TTL_MS = 12 * 60 * 60 * 1000; +const FETCH_TIMEOUT_MS = 5_000; +const SKIP_VERSION_CHECK = process.env.PI_WEB_SKIP_VERSION_CHECK === "1"; + +interface AppUpdateCache { + value?: AppUpdateResponse; + expiresAt: number; + inFlight?: Promise; +} + +declare global { + var __piWebAppUpdateCache: AppUpdateCache | undefined; +} + +function getCache(): AppUpdateCache { + return globalThis.__piWebAppUpdateCache ??= { expiresAt: 0 }; +} + +async function fetchLatestVersion(): Promise { + const response = await fetch(NPM_LATEST_URL, { + cache: "no-store", + headers: { Accept: "application/json" }, + signal: AbortSignal.timeout(FETCH_TIMEOUT_MS), + }); + if (!response.ok) throw new Error(`npm registry returned HTTP ${response.status}`); + + const body = await response.json() as { version?: unknown }; + const latestVersion = typeof body.version === "string" ? body.version : ""; + const releaseUrl = getPiWebReleaseUrl(latestVersion); + if (!releaseUrl) throw new Error("npm registry returned an invalid version"); + + return { + currentVersion: CURRENT_VERSION, + latestVersion, + updateAvailable: isNewerStableVersion(latestVersion, CURRENT_VERSION), + releaseUrl, + }; +} + +async function loadUpdateStatus(): Promise { + const cache = getCache(); + if (cache.value && cache.expiresAt > Date.now()) return cache.value; + if (!cache.inFlight) { + cache.inFlight = fetchLatestVersion().then((value) => { + cache.value = value; + cache.expiresAt = Date.now() + CACHE_TTL_MS; + return value; + }).finally(() => { + cache.inFlight = undefined; + }); + } + + try { + return await cache.inFlight; + } catch (error) { + if (cache.value) return cache.value; + throw error; + } +} + +export async function GET() { + if (SKIP_VERSION_CHECK) { + return NextResponse.json({ + currentVersion: CURRENT_VERSION, + latestVersion: CURRENT_VERSION, + updateAvailable: false, + releaseUrl: "", + } satisfies AppUpdateResponse); + } + try { + return NextResponse.json(await loadUpdateStatus()); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 502 }, + ); + } +} diff --git a/app/api/auth/api-key/[provider]/route.ts b/app/api/auth/api-key/[provider]/route.ts new file mode 100644 index 000000000..3eef594d9 --- /dev/null +++ b/app/api/auth/api-key/[provider]/route.ts @@ -0,0 +1,67 @@ +import { ModelRuntime } from "@earendil-works/pi-coding-agent"; +import { NextResponse } from "next/server"; +import { invalidateModelsCache } from "@/lib/models-cache"; +import { removeStoredCredentialIfType, storeProviderCredential } from "@/lib/provider-credential-store"; + +export const dynamic = "force-dynamic"; + +type Params = { params: Promise<{ provider: string }> }; + +// POST /api/auth/api-key/[provider] body: { apiKey: string } +export async function POST(req: Request, { params }: Params) { + const { provider } = await params; + try { + const { apiKey } = await req.json() as { apiKey?: string }; + if (!apiKey || typeof apiKey !== "string" || !apiKey.trim()) { + return NextResponse.json({ error: "apiKey is required" }, { status: 400 }); + } + const modelRuntime = await ModelRuntime.create(); + const apiKeyAuth = modelRuntime.getProvider(provider)?.auth.apiKey; + if (!apiKeyAuth?.login) { + throw new Error(`${provider} does not support API key login`); + } + let keySubmitted = false; + const credential = await apiKeyAuth.login({ + signal: req.signal, + notify: () => {}, + prompt: async (prompt) => { + if (prompt.type === "select") { + const keyOption = prompt.options.find((option) => option.id === "api-key" || option.id === "bearer-token"); + if (keyOption) return keyOption.id; + throw new Error(`${provider} requires interactive authentication setup`); + } + if (!keySubmitted && prompt.type === "secret") { + keySubmitted = true; + return apiKey.trim(); + } + throw new Error(`${provider} requires additional authentication settings`); + }, + }); + // ModelRuntime.login() persists the credential and then performs an + // unbounded network catalog refresh. Store the returned credential + // directly so a slow catalog cannot leave the save request hanging. + await storeProviderCredential(provider, credential); + invalidateModelsCache(); + return NextResponse.json({ success: true }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} + +// DELETE /api/auth/api-key/[provider] — removes stored API key +export async function DELETE(_req: Request, { params }: Params) { + const { provider } = await params; + try { + const removal = await removeStoredCredentialIfType(provider, "api_key"); + if (removal.status === "type_mismatch") { + return NextResponse.json( + { error: `${provider} is authenticated with OAuth, not an API key` }, + { status: 409 }, + ); + } + invalidateModelsCache(); + return NextResponse.json({ success: true }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/auth/login/[provider]/route.ts b/app/api/auth/login/[provider]/route.ts new file mode 100644 index 000000000..5c1dbc013 --- /dev/null +++ b/app/api/auth/login/[provider]/route.ts @@ -0,0 +1,192 @@ +import type { AuthEvent, AuthPrompt } from "@earendil-works/pi-ai"; +import { ModelRuntime } from "@earendil-works/pi-coding-agent"; +import { invalidateModelsCache } from "@/lib/models-cache"; + +export const dynamic = "force-dynamic"; + +// In-memory registry: loginToken -> resolve/reject for the manualCodeInput promise +declare global { + var __piLoginCallbacks: Map void; reject: (e: Error) => void }> | undefined; +} + +function getCallbackRegistry() { + if (!globalThis.__piLoginCallbacks) globalThis.__piLoginCallbacks = new Map(); + return globalThis.__piLoginCallbacks; +} + +// POST /api/auth/login/[provider] — frontend sends redirect URL or auth code +export async function POST( + req: Request, + { params }: { params: Promise<{ provider: string }> } +) { + const { provider } = await params; + const { token, code } = (await req.json()) as { token?: string; code?: string }; + + if (!token || !code) { + return Response.json({ error: "token and code required" }, { status: 400 }); + } + + const registry = getCallbackRegistry(); + const callbacks = registry.get(token); + if (!callbacks) { + return Response.json({ error: "No pending login for token" }, { status: 404 }); + } + // Verify token belongs to this provider (token format: "--") + if (!token.startsWith(`${provider}-`)) { + return Response.json({ error: "Token does not match provider" }, { status: 400 }); + } + + callbacks.resolve(code); + registry.delete(token); + return Response.json({ ok: true, provider }); +} + +// GET /api/auth/login/[provider] — SSE stream for OAuth flow +export async function GET( + req: Request, + { params }: { params: Promise<{ provider: string }> } +) { + const { provider } = await params; + + const encoder = new TextEncoder(); + const send = (controller: ReadableStreamDefaultController, data: unknown) => { + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)); + }; + + // AbortController propagates client disconnect into ModelRuntime.login(). + const abort = new AbortController(); + req.signal.addEventListener("abort", () => abort.abort()); + + const stream = new ReadableStream({ + async start(controller) { + const modelRuntime = await ModelRuntime.create(); + if (!modelRuntime.getProvider(provider)?.auth.oauth) { + send(controller, { type: "error", message: `Unknown provider: ${provider}` }); + controller.close(); + return; + } + + const registry = getCallbackRegistry(); + const activeTokens = new Set(); + let pendingManualRequest: { token: string; promise: Promise } | undefined; + + const createClientInputRequest = () => { + const token = `${provider}-${Date.now()}-${Math.random().toString(36).slice(2)}`; + activeTokens.add(token); + + const promise = new Promise((resolve, reject) => { + registry.set(token, { + resolve: (value) => { + activeTokens.delete(token); + registry.delete(token); + resolve(value); + }, + reject: (error) => { + activeTokens.delete(token); + registry.delete(token); + reject(error); + }, + }); + }); + + return { token, promise }; + }; + + const getManualInputRequest = () => { + if (!pendingManualRequest) { + pendingManualRequest = createClientInputRequest(); + pendingManualRequest.promise + .finally(() => { + pendingManualRequest = undefined; + }) + .catch(() => {}); + } + return pendingManualRequest; + }; + + // Cleanup: remove pending token and abort any waiting promise + const cleanup = () => { + for (const token of activeTokens) { + registry.get(token)?.reject(new Error("Login cancelled")); + registry.delete(token); + } + activeTokens.clear(); + }; + + // Also cancel on client disconnect + abort.signal.addEventListener("abort", cleanup); + + try { + await modelRuntime.login(provider, "oauth", { + prompt: async (prompt: AuthPrompt) => { + const request = prompt.type === "manual_code" + ? getManualInputRequest() + : createClientInputRequest(); + if (prompt.type === "select") { + send(controller, { + type: "select_request", + message: prompt.message, + options: prompt.options, + token: request.token, + }); + } else { + send(controller, { + type: "prompt_request", + message: prompt.message, + placeholder: prompt.placeholder ?? null, + token: request.token, + }); + } + return request.promise; + }, + notify: (event: AuthEvent) => { + if (event.type === "auth_url") { + const request = getManualInputRequest(); + send(controller, { + type: "auth", + url: event.url, + instructions: event.instructions ?? null, + token: request.token, + }); + } else if (event.type === "device_code") { + send(controller, { + type: "device_code", + userCode: event.userCode, + verificationUri: event.verificationUri, + intervalSeconds: event.intervalSeconds ?? null, + expiresInSeconds: event.expiresInSeconds ?? null, + }); + } else { + send(controller, { type: "progress", message: event.message }); + } + }, + signal: abort.signal, + }); + + invalidateModelsCache(); + send(controller, { type: "success" }); + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + if (msg !== "Login cancelled") { + send(controller, { type: "error", message: msg }); + } else { + send(controller, { type: "cancelled" }); + } + } finally { + cleanup(); + controller.close(); + } + }, + cancel() { + abort.abort(); + }, + }); + + return new Response(stream, { + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + Connection: "keep-alive", + }, + }); +} diff --git a/app/api/auth/logout/[provider]/route.ts b/app/api/auth/logout/[provider]/route.ts new file mode 100644 index 000000000..033d12157 --- /dev/null +++ b/app/api/auth/logout/[provider]/route.ts @@ -0,0 +1,22 @@ +import { ModelRuntime } from "@earendil-works/pi-coding-agent"; +import { invalidateModelsCache } from "@/lib/models-cache"; +import { removeStoredCredentialIfType } from "@/lib/provider-credential-store"; + +export const dynamic = "force-dynamic"; + +export async function POST( + _req: Request, + { params }: { params: Promise<{ provider: string }> } +) { + const { provider } = await params; + const modelRuntime = await ModelRuntime.create(); + if (!modelRuntime.getProvider(provider)?.auth.oauth) { + return Response.json({ error: `Unknown provider: ${provider}` }, { status: 400 }); + } + const removal = await removeStoredCredentialIfType(provider, "oauth"); + if (removal.status === "type_mismatch") { + return Response.json({ error: `${provider} is authenticated with an API key, not OAuth` }, { status: 409 }); + } + invalidateModelsCache(); + return Response.json({ ok: true }); +} diff --git a/app/api/auth/providers/route.ts b/app/api/auth/providers/route.ts new file mode 100644 index 000000000..653084cbc --- /dev/null +++ b/app/api/auth/providers/route.ts @@ -0,0 +1,15 @@ +import { ModelRuntime } from "@earendil-works/pi-coding-agent"; +import { buildApiKeyProviderList, buildOAuthProviderList } from "@/lib/provider-listing"; +import { collectProviderListingInputs } from "@/lib/provider-listing-runtime"; + +export const dynamic = "force-dynamic"; + +// Providers that declare an OAuth login method, including anthropic +// (Claude Pro/Max) — see lib/provider-listing.ts (#309). +export async function GET() { + const modelRuntime = await ModelRuntime.create(); + const inputs = await collectProviderListingInputs(modelRuntime); + const oauthProviders = buildOAuthProviderList(inputs); + const apiKeyProviders = buildApiKeyProviderList(inputs); + return Response.json({ providers: oauthProviders, oauthProviders, apiKeyProviders }); +} diff --git a/app/api/cwd/browse/route.ts b/app/api/cwd/browse/route.ts new file mode 100644 index 000000000..6e6f64b10 --- /dev/null +++ b/app/api/cwd/browse/route.ts @@ -0,0 +1,50 @@ +import { NextRequest, NextResponse } from "next/server"; +import { stat } from "fs/promises"; +import { + getBrowseStartDirectory, + getParentDirectory, + listDirectories, + listWindowsDrives, + resolveDirectory, + shouldShowWindowsDrivePicker, +} from "@/lib/directory-browser"; + +// GET /api/cwd/browse?path=...:列出文件系统中的可读子目录。 +export async function GET(request: NextRequest) { + try { + const requested = request.nextUrl.searchParams.get("path")?.trim(); + + if (shouldShowWindowsDrivePicker(requested)) { + return NextResponse.json({ + path: "", + parentPath: null, + drives: await listWindowsDrives(), + directories: [], + }); + } + + const candidate = getBrowseStartDirectory(requested); + + let resolved: string; + try { + resolved = await resolveDirectory(candidate); + } catch { + return NextResponse.json({ error: "Directory does not exist" }, { status: 404 }); + } + + const directoryStat = await stat(resolved); + if (!directoryStat.isDirectory()) { + return NextResponse.json({ error: "Path is not a directory" }, { status: 400 }); + } + + const directories = await listDirectories(resolved); + + return NextResponse.json({ + path: resolved, + parentPath: getParentDirectory(resolved), + directories, + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/cwd/validate/route.test.mjs b/app/api/cwd/validate/route.test.mjs new file mode 100644 index 000000000..90c7a1833 --- /dev/null +++ b/app/api/cwd/validate/route.test.mjs @@ -0,0 +1,33 @@ +import assert from "node:assert/strict"; +import { mkdtemp, rm } from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import test from "node:test"; +import { createJiti } from "jiti"; + +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { POST } = await jiti.import("./route.ts"); +const { projectIdentityKey } = await jiti.import("../../../../lib/project-identity.ts"); + +test("validated cwd responses include server-resolved project identity", async (t) => { + const cwd = await mkdtemp(path.join(os.tmpdir(), "pi-web-cwd-validate-")); + t.after(() => rm(cwd, { recursive: true, force: true })); + + const response = await POST(new Request("http://localhost/api/cwd/validate", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ cwd }), + })); + + assert.equal(response.status, 200); + assert.deepEqual(await response.json(), { + success: true, + cwd, + projectRoot: cwd, + projectKey: projectIdentityKey(cwd), + }); +}); diff --git a/app/api/cwd/validate/route.ts b/app/api/cwd/validate/route.ts new file mode 100644 index 000000000..5d514f54d --- /dev/null +++ b/app/api/cwd/validate/route.ts @@ -0,0 +1,49 @@ +import { NextResponse } from "next/server"; +import { statSync, type Stats } from "fs"; +import { homedir } from "os"; +import { isAbsolute, resolve } from "path"; +import { allowFileRoot } from "@/lib/file-access"; +import { projectIdentityKey } from "@/lib/project-identity"; +import { resolveProject } from "@/lib/worktree"; + +function normalizeCwd(cwd: string): string { + if (cwd === "~") return homedir(); + if (cwd.startsWith("~/")) return resolve(homedir(), cwd.slice(2)); + return isAbsolute(cwd) ? cwd : resolve(cwd); +} + +// POST /api/cwd/validate body: { cwd: string } +// Validates a candidate workspace before the UI selects it. +export async function POST(req: Request) { + try { + const body = await req.json() as { cwd?: unknown }; + const cwd = typeof body.cwd === "string" ? body.cwd.trim() : ""; + + if (!cwd) { + return NextResponse.json({ error: "Path is required" }, { status: 400 }); + } + + const normalizedCwd = normalizeCwd(cwd); + let stat: Stats; + try { + stat = statSync(normalizedCwd); + } catch { + return NextResponse.json({ error: `Directory does not exist: ${cwd}` }, { status: 400 }); + } + + if (!stat.isDirectory()) { + return NextResponse.json({ error: `Path is not a directory: ${cwd}` }, { status: 400 }); + } + + allowFileRoot(normalizedCwd); + const project = await resolveProject(normalizedCwd); + return NextResponse.json({ + success: true, + cwd: normalizedCwd, + projectRoot: project.projectRoot, + projectKey: projectIdentityKey(project.projectRoot), + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/default-cwd/route.ts b/app/api/default-cwd/route.ts new file mode 100644 index 000000000..37ef6d1fb --- /dev/null +++ b/app/api/default-cwd/route.ts @@ -0,0 +1,19 @@ +import { NextResponse } from "next/server"; +import { mkdirSync } from "fs"; +import { homedir } from "os"; +import { join } from "path"; +import { allowFileRoot } from "@/lib/file-access"; + +// POST /api/default-cwd +// Creates ~/pi-cwd- if it doesn't exist and returns the path. +export async function POST() { + try { + const date = new Date().toISOString().slice(0, 10).replace(/-/g, ""); + const dir = join(homedir(), `pi-cwd-${date}`); + mkdirSync(dir, { recursive: true }); + allowFileRoot(dir); + return NextResponse.json({ cwd: dir }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/file-index/route.ts b/app/api/file-index/route.ts new file mode 100644 index 000000000..3030015dc --- /dev/null +++ b/app/api/file-index/route.ts @@ -0,0 +1,169 @@ +import { NextRequest, NextResponse } from "next/server"; +import { execFile } from "child_process"; +import { promisify } from "util"; +import fs from "fs"; +import path from "path"; +import { + getAllowedFileRoots, + isExistingFilePathAllowed, + isFilePathAllowed, + isWindowsAbsolutePath, +} from "@/lib/file-access"; +import { buildEntriesFromFiles, filterFileEntries, type FileIndexEntry } from "@/lib/file-fuzzy"; + +const execFileAsync = promisify(execFile); + +// Same skip lists as /api/files — only used for the non-git readdir fallback. +// Git-tracked repos rely on .gitignore instead (matches the TUI's fd behavior). +const IGNORED_NAMES = new Set([ + "node_modules", ".git", ".next", "dist", "build", "__pycache__", + ".turbo", ".cache", "coverage", ".pytest_cache", ".mypy_cache", + "target", "vendor", ".DS_Store", +]); + +const IGNORED_SUFFIXES = [".pyc"]; + +/** Cap on the plain (no-query) response used as the client-side index */ +const MAX_FILES = 5000; +/** Hard caps on the full in-memory listing that ?q= searches against */ +const GIT_HARD_CAP = 200_000; +const WALK_HARD_CAP = 50_000; +const MAX_WALK_DEPTH = 8; +const MAX_QUERY_LENGTH = 500; +const CACHE_TTL_MS = 10_000; +const CACHE_MAX_ENTRIES = 20; + +interface FileListing { + /** Full listing up to the hard cap (not the client cap) */ + files: string[]; + /** True when even the hard cap was exceeded */ + hardTruncated: boolean; +} + +interface CacheEntry { + listing: FileListing; + /** Derived lazily on the first ?q= search against this listing */ + entries?: FileIndexEntry[]; + expiresAt: number; +} + +// Per-cwd cache on globalThis so it survives Next.js hot-reload; the @ menu +// re-requests on every open and searches on every keystroke, so listings must +// not be recomputed within a short window. +declare global { + var __piFileIndexCache: Map | undefined; +} + +function getIndexCache(): Map { + if (!globalThis.__piFileIndexCache) globalThis.__piFileIndexCache = new Map(); + return globalThis.__piFileIndexCache; +} + +async function listWithGit(cwd: string): Promise { + try { + const { stdout } = await execFileAsync( + "git", + ["-C", cwd, "ls-files", "--cached", "--others", "--exclude-standard", "-z"], + { timeout: 10_000, maxBuffer: 64 * 1024 * 1024, env: { ...process.env, LC_ALL: "C" } }, + ); + const all = stdout.split("\0").filter(Boolean); + if (all.length > GIT_HARD_CAP) { + return { files: all.slice(0, GIT_HARD_CAP), hardTruncated: true }; + } + return { files: all, hardTruncated: false }; + } catch { + // Not a git repo (or git unavailable) — caller falls back to readdir walk. + return null; + } +} + +function listWithWalk(cwd: string): FileListing { + const files: string[] = []; + // BFS so shallow files win when the cap truncates the listing. + const queue: Array<{ abs: string; rel: string; depth: number }> = [{ abs: cwd, rel: "", depth: 0 }]; + while (queue.length > 0) { + const { abs, rel, depth } = queue.shift()!; + let dirents: fs.Dirent[]; + try { + dirents = fs.readdirSync(abs, { withFileTypes: true }); + } catch { + continue; + } + for (const d of dirents) { + if (IGNORED_NAMES.has(d.name) || IGNORED_SUFFIXES.some((s) => d.name.endsWith(s))) continue; + const childRel = rel ? `${rel}/${d.name}` : d.name; + if (d.isDirectory()) { + if (depth + 1 <= MAX_WALK_DEPTH) { + queue.push({ abs: path.join(abs, d.name), rel: childRel, depth: depth + 1 }); + } + } else if (d.isFile()) { + if (files.length >= WALK_HARD_CAP) { + return { files, hardTruncated: true }; + } + files.push(childRel); + } + } + } + return { files, hardTruncated: false }; +} + +// GET /api/file-index?cwd=/abs/path[&q=query] +// Without q: { files: string[] (relative to cwd, capped at MAX_FILES), +// truncated: boolean } — the client-side index for local filtering. +// With q: { matches: { path, isDir }[] } — ranked against the FULL listing so +// repos larger than MAX_FILES still find deep files (cap applied after +// matching, like the TUI passing the query to fd). +// Guarded by the same allow-list as /api/files. +export async function GET(req: NextRequest) { + try { + const cwd = req.nextUrl.searchParams.get("cwd")?.trim() ?? ""; + if (!cwd || (!cwd.startsWith("/") && !isWindowsAbsolutePath(cwd))) { + return NextResponse.json({ error: "cwd must be an absolute path" }, { status: 400 }); + } + const query = req.nextUrl.searchParams.get("q")?.slice(0, MAX_QUERY_LENGTH) ?? ""; + + const allowedRoots = await getAllowedFileRoots(); + if (!isFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + let stat: fs.Stats; + try { + stat = fs.statSync(cwd); + } catch { + return NextResponse.json({ error: "Directory not found" }, { status: 404 }); + } + if (!stat.isDirectory()) { + return NextResponse.json({ error: "Not a directory" }, { status: 400 }); + } + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + const cache = getIndexCache(); + const now = Date.now(); + let cached = cache.get(cwd); + if (!cached || cached.expiresAt <= now) { + const listing = (await listWithGit(cwd)) ?? listWithWalk(cwd); + for (const [key, entry] of cache) { + if (entry.expiresAt <= now) cache.delete(key); + } + if (cache.size >= CACHE_MAX_ENTRIES) cache.clear(); + cached = { listing, expiresAt: now + CACHE_TTL_MS }; + cache.set(cwd, cached); + } + + if (query) { + cached.entries ??= buildEntriesFromFiles(cached.listing.files); + return NextResponse.json({ matches: filterFileEntries(cached.entries, query) }); + } + + const { files, hardTruncated } = cached.listing; + return NextResponse.json({ + files: files.slice(0, MAX_FILES), + truncated: hardTruncated || files.length > MAX_FILES, + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/files/[...path]/route.ts b/app/api/files/[...path]/route.ts new file mode 100644 index 000000000..f70012c15 --- /dev/null +++ b/app/api/files/[...path]/route.ts @@ -0,0 +1,651 @@ +import { NextRequest, NextResponse } from "next/server"; +import fs from "fs"; +import path from "path"; +import { + getAllowedFileRoots, + isExistingFilePathAllowed, + isFilePathAllowed, + isWindowsAbsolutePath, + normalizeSlashes, +} from "@/lib/file-access"; +import { + DOCX_PREVIEW_MAX_BYTES, + IMAGE_PREVIEW_MAX_BYTES, + TEXT_PREVIEW_MAX_BYTES, + documentPreviewKind, + getAudioMime, + getDocumentMime, + getFileExt, + getImageMime, +} from "@/lib/file-types"; +import { resolveDirentIsDirectory } from "@/lib/file-dirent"; +import { isFilePathReferencedBySession } from "@/lib/session-file-references"; +import { isApiRequestAllowed } from "@/lib/request-security"; +import { + inspectUploadTargets, + parseUploadConflictStrategy, + validateUploadFileNames, +} from "@/lib/file-upload"; +import { parseFormDataWithinLimit, RequestBodyTooLargeError } from "@/lib/bounded-form-data"; +import { samePath } from "@/lib/paths"; + +const IGNORED_NAMES = new Set([ + "node_modules", ".git", ".next", "dist", "build", "__pycache__", + ".turbo", ".cache", "coverage", ".pytest_cache", ".mypy_cache", + "target", "vendor", ".DS_Store", ".git", +]); + +const IGNORED_SUFFIXES = [".pyc"]; + +const FILE_REQUEST_TYPES = ["list", "read", "download", "meta", "preview", "watch"] as const; +type FileRequestType = typeof FILE_REQUEST_TYPES[number]; +const FILE_REQUEST_TYPE_SET = new Set(FILE_REQUEST_TYPES); +const MAX_UPLOAD_FILE_BYTES = 25 * 1024 * 1024; +const MAX_UPLOAD_TOTAL_BYTES = 100 * 1024 * 1024; +// Multipart boundaries and headers are not file bytes, but must be bounded too. +const MAX_UPLOAD_REQUEST_BYTES = MAX_UPLOAD_TOTAL_BYTES + 1024 * 1024; + +const EXT_TO_LANGUAGE: Record = { + ts: "typescript", tsx: "typescript", js: "javascript", jsx: "javascript", + mjs: "javascript", cjs: "javascript", py: "python", rb: "ruby", + go: "go", rs: "rust", java: "java", kt: "kotlin", swift: "swift", + c: "c", cpp: "cpp", h: "c", hpp: "cpp", cs: "csharp", + html: "html", htm: "html", css: "css", scss: "css", less: "css", + json: "json", jsonl: "json", yaml: "yaml", yml: "yaml", + toml: "toml", xml: "xml", md: "markdown", mdx: "markdown", + sh: "bash", bash: "bash", zsh: "bash", fish: "bash", + sql: "sql", graphql: "graphql", gql: "graphql", + dockerfile: "dockerfile", tf: "hcl", hcl: "hcl", + env: "bash", gitignore: "bash", txt: "text", + pdf: "pdf", docx: "word", +}; + +function getLanguage(filePath: string): string { + const base = path.basename(filePath).toLowerCase(); + // Special full-name matches + if (base === "dockerfile" || base.startsWith("dockerfile.")) return "dockerfile"; + if (base === ".env" || base.startsWith(".env.")) return "bash"; + if (base === "makefile" || base === "gnumakefile") return "makefile"; + const ext = base.split(".").pop() ?? ""; + return EXT_TO_LANGUAGE[ext] ?? "text"; +} + +function filePathFromSegments(segments: string[]): string { + const joined = segments.join("/"); + const slashJoined = normalizeSlashes(joined); + if (isWindowsAbsolutePath(slashJoined)) return slashJoined; + return "/" + joined.replace(/^\/+/, ""); +} + +function parseFileRequestType(value: string): FileRequestType | null { + return FILE_REQUEST_TYPE_SET.has(value) ? (value as FileRequestType) : null; +} + +async function getUploadDirectory(segments: string[]): Promise< + { directory: string } | { response: NextResponse } +> { + const directory = filePathFromSegments(segments); + const allowedRoots = await getAllowedFileRoots(); + if (!isFilePathAllowed(directory, allowedRoots)) { + return { response: NextResponse.json({ error: "Access denied" }, { status: 403 }) }; + } + + let stat: fs.Stats; + try { + stat = fs.statSync(directory); + } catch { + return { response: NextResponse.json({ error: "Upload directory not found" }, { status: 404 }) }; + } + if (!stat.isDirectory()) { + return { response: NextResponse.json({ error: "Upload target is not a directory" }, { status: 400 }) }; + } + + // A browsable directory can be a symlink. Resolve both sides before writes + // so a symlink inside an allowed root cannot redirect uploads outside it. + const realDirectory = fs.realpathSync(directory); + const realRoots = new Set(); + for (const root of allowedRoots) { + try { + realRoots.add(fs.realpathSync(root)); + } catch { + // Ignore stale session roots that no longer exist. + } + } + if (!isFilePathAllowed(realDirectory, realRoots)) { + return { response: NextResponse.json({ error: "Access denied" }, { status: 403 }) }; + } + + return { directory: realDirectory }; +} + +function parseUploadFileNames(value: unknown): string[] | null { + if (!Array.isArray(value) || !value.every((item) => typeof item === "string")) return null; + return value; +} + +export async function POST( + request: NextRequest, + { params }: { params: Promise<{ path: string[] }> } +) { + if (!isApiRequestAllowed(request)) { + return NextResponse.json({ error: "Untrusted API request" }, { status: 403 }); + } + + try { + const { path: segments } = await params; + const uploadDirectory = await getUploadDirectory(segments); + if ("response" in uploadDirectory) return uploadDirectory.response; + const { directory } = uploadDirectory; + const type = request.nextUrl.searchParams.get("type") ?? "upload"; + + if (type === "upload-check") { + const body = await request.json().catch(() => null) as { fileNames?: unknown } | null; + const fileNames = parseUploadFileNames(body?.fileNames); + if (!fileNames) { + return NextResponse.json({ error: "fileNames must be an array of strings" }, { status: 400 }); + } + const validationError = validateUploadFileNames(fileNames); + if (validationError) { + return NextResponse.json({ error: validationError }, { status: 400 }); + } + return NextResponse.json(inspectUploadTargets(directory, fileNames)); + } + + if (type !== "upload") { + return NextResponse.json({ error: "Invalid upload request type" }, { status: 400 }); + } + + const strategy = parseUploadConflictStrategy(request.nextUrl.searchParams.get("conflict")); + if (!strategy) { + return NextResponse.json({ error: "Invalid conflict strategy" }, { status: 400 }); + } + + let formData: FormData; + try { + formData = await parseFormDataWithinLimit(request, MAX_UPLOAD_REQUEST_BYTES); + } catch (error) { + if (error instanceof RequestBodyTooLargeError) { + return NextResponse.json({ error: "Uploads must total 100MB or less" }, { status: 413 }); + } + throw error; + } + const files = formData.getAll("files").filter((entry): entry is File => typeof entry !== "string"); + if (files.some((file) => file.size > MAX_UPLOAD_FILE_BYTES)) { + return NextResponse.json({ error: "Each upload must be 25MB or smaller" }, { status: 413 }); + } + if (files.reduce((total, file) => total + file.size, 0) > MAX_UPLOAD_TOTAL_BYTES) { + return NextResponse.json({ error: "Uploads must total 100MB or less" }, { status: 413 }); + } + const fileNames = files.map((file) => file.name); + const validationError = validateUploadFileNames(fileNames); + if (validationError) { + return NextResponse.json({ error: validationError }, { status: 400 }); + } + + const inspection = inspectUploadTargets(directory, fileNames); + if (strategy === "error" && inspection.conflicts.length > 0) { + return NextResponse.json({ + error: "One or more files already exist", + conflicts: inspection.conflicts, + nonReplaceable: inspection.nonReplaceable, + }, { status: 409 }); + } + + const conflictSet = new Set(inspection.conflicts); + const nonReplaceableSet = new Set(inspection.nonReplaceable); + const uploaded: string[] = []; + const skipped: string[] = []; + const errors: Array<{ name: string; error: string }> = []; + + for (const file of files) { + const destination = path.join(directory, file.name); + if (conflictSet.has(file.name) && strategy === "skip") { + skipped.push(file.name); + continue; + } + if (conflictSet.has(file.name) && nonReplaceableSet.has(file.name)) { + errors.push({ name: file.name, error: "Cannot replace a directory or symbolic link" }); + continue; + } + + let bytes: Buffer; + try { + bytes = Buffer.from(await file.arrayBuffer()); + } catch (error) { + errors.push({ name: file.name, error: error instanceof Error ? error.message : String(error) }); + continue; + } + + if (conflictSet.has(file.name)) { + try { + fs.unlinkSync(destination); + } catch (error) { + errors.push({ name: file.name, error: error instanceof Error ? error.message : String(error) }); + continue; + } + } + + try { + fs.writeFileSync(destination, bytes, { flag: "wx" }); + uploaded.push(file.name); + } catch (error) { + errors.push({ name: file.name, error: error instanceof Error ? error.message : String(error) }); + } + } + + return NextResponse.json( + { uploaded, skipped, errors }, + { status: errors.length > 0 ? 207 : 200 }, + ); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 }); + } +} + +function createFileBodyStream(filePath: string, range?: { start: number; end: number }): ReadableStream { + const fileStream = fs.createReadStream(filePath, range); + let closed = false; + + return new ReadableStream({ + start(controller) { + fileStream.on("data", (chunk: Buffer) => { + if (closed) return; + try { + controller.enqueue(new Uint8Array(chunk)); + } catch { + closed = true; + fileStream.destroy(); + } + }); + fileStream.once("end", () => { + if (closed) return; + closed = true; + try { + controller.close(); + } catch { + // The browser may cancel media probes before the file stream ends. + } + }); + fileStream.once("error", (error) => { + if (closed) return; + closed = true; + try { + controller.error(error); + } catch { + // The response was already abandoned by the client. + } + }); + }, + cancel() { + closed = true; + fileStream.destroy(); + }, + }); +} + +function encodeHeaderValue(value: string): string { + return encodeURIComponent(value).replace(/[!'()*]/g, (ch) => + `%${ch.charCodeAt(0).toString(16).toUpperCase()}` + ); +} + +function getContentDisposition(filePath: string, asDownload = false): string { + const disposition = asDownload ? "attachment" : "inline"; + const fileName = path.basename(filePath); + const fallback = fileName.replace(/[^\x20-\x7E]|["\\;\r\n]/g, "_") || "download"; + return `${disposition}; filename="${fallback}"; filename*=UTF-8''${encodeHeaderValue(fileName)}`; +} + +function streamFile(filePath: string, stat: fs.Stats, contentType: string, rangeHeader: string | null, asDownload = false): Response { + const headers: Record = { + "Content-Type": contentType, + "Cache-Control": "no-cache", + "Accept-Ranges": "bytes", + "Content-Disposition": getContentDisposition(filePath, asDownload), + "X-Content-Type-Options": "nosniff", + }; + // SVG is the only preview type a browser executes as a document. A + // repo-controlled SVG navigated to directly (for example through a link in + // a transcript) would otherwise run script in the Pi Web origin, where it + // can call any /api route. These headers only affect document rendering; + // preview embedding ignores them. + if (contentType === "image/svg+xml") { + headers["Content-Security-Policy"] = + "default-src 'none'; img-src data:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'"; + headers["Referrer-Policy"] = "no-referrer"; + } + + if (!rangeHeader) { + return new Response(createFileBodyStream(filePath), { + headers: { + ...headers, + "Content-Length": String(stat.size), + }, + }); + } + + const match = /^bytes=(\d*)-(\d*)$/.exec(rangeHeader); + if (!match) { + return new Response(null, { + status: 416, + headers: { + ...headers, + "Content-Range": `bytes */${stat.size}`, + }, + }); + } + + let start = match[1] ? Number(match[1]) : 0; + let end = match[2] ? Number(match[2]) : stat.size - 1; + if (!match[1] && match[2]) { + const suffixLength = Number(match[2]); + start = Math.max(stat.size - suffixLength, 0); + end = stat.size - 1; + } + + if (!Number.isFinite(start) || !Number.isFinite(end) || start < 0 || end < start || start >= stat.size) { + return new Response(null, { + status: 416, + headers: { + ...headers, + "Content-Range": `bytes */${stat.size}`, + }, + }); + } + + end = Math.min(end, stat.size - 1); + const chunkSize = end - start + 1; + return new Response(createFileBodyStream(filePath, { start, end }), { + status: 206, + headers: { + ...headers, + "Content-Length": String(chunkSize), + "Content-Range": `bytes ${start}-${end}/${stat.size}`, + }, + }); +} + +function escapeHtml(text: string): string { + return text + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); +} + +function wrapDocxPreviewHtml(bodyHtml: string, fileName: string): string { + return ` + + + + + + + +

+
${escapeHtml(fileName)}
+${bodyHtml} +
+ +`; +} + +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ path: string[] }> } +) { + try { + const { path: segments } = await params; + const filePath = filePathFromSegments(segments); + const rawType = request.nextUrl.searchParams.get("type") ?? "list"; + const type = parseFileRequestType(rawType); + if (!type) { + return NextResponse.json({ error: "Invalid file request type" }, { status: 400 }); + } + const sessionId = request.nextUrl.searchParams.get("sessionId"); + + const allowedRoots = await getAllowedFileRoots(); + const allowedByRoot = isFilePathAllowed(filePath, allowedRoots); + const allowedBySessionReference = + !allowedByRoot && + type !== "list" && + await isFilePathReferencedBySession(filePath, sessionId); + if (!allowedByRoot && !allowedBySessionReference) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + let stat: fs.Stats | undefined; + try { + stat = fs.statSync(filePath); + } catch { + if (type !== "watch") { + return NextResponse.json({ error: "Not found" }, { status: 404 }); + } + } + + const existingAuthorizationPath = stat ? filePath : path.dirname(filePath); + if ( + !allowedBySessionReference + && !isExistingFilePathAllowed(existingAuthorizationPath, allowedRoots) + ) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + if (type === "read") { + if (!stat?.isFile()) { + return NextResponse.json({ error: "Not a file" }, { status: 400 }); + } + const imageMime = getImageMime(filePath); + if (imageMime) { + if (stat.size > IMAGE_PREVIEW_MAX_BYTES) { + return NextResponse.json({ error: "Image too large (>10MB)" }, { status: 413 }); + } + return streamFile(filePath, stat, imageMime, request.headers.get("range")); + } + const audioMime = getAudioMime(filePath); + if (audioMime) { + return streamFile(filePath, stat, audioMime, request.headers.get("range")); + } + const documentMime = getDocumentMime(filePath); + if (documentMime) { + return streamFile(filePath, stat, documentMime, request.headers.get("range")); + } + if (stat.size > TEXT_PREVIEW_MAX_BYTES) { + return NextResponse.json({ error: "File too large for preview (>256KB)" }, { status: 413 }); + } + const content = fs.readFileSync(filePath, "utf-8"); + const language = getLanguage(filePath); + return NextResponse.json({ content, language, size: stat.size }); + } + + if (type === "download") { + if (!stat?.isFile()) { + return NextResponse.json({ error: "Not a file" }, { status: 400 }); + } + const mime = getImageMime(filePath) || getAudioMime(filePath) || getDocumentMime(filePath) || "application/octet-stream"; + return streamFile(filePath, stat, mime, request.headers.get("range"), true); + } + + if (type === "meta") { + if (!stat?.isFile()) { + return NextResponse.json({ error: "Not a file" }, { status: 400 }); + } + const imageMime = getImageMime(filePath); + const audioMime = getAudioMime(filePath); + const documentMime = getDocumentMime(filePath); + return NextResponse.json({ + size: stat.size, + language: getLanguage(filePath), + mime: imageMime || audioMime || documentMime || "text/plain", + previewKind: documentPreviewKind(filePath), + }); + } + + if (type === "preview") { + if (!stat?.isFile()) { + return NextResponse.json({ error: "Not a file" }, { status: 400 }); + } + if (getFileExt(filePath) !== "docx") { + return NextResponse.json({ error: "Preview not available for this file type" }, { status: 400 }); + } + if (stat.size > DOCX_PREVIEW_MAX_BYTES) { + return NextResponse.json({ error: "DOCX too large for preview (>10MB)" }, { status: 413 }); + } + + const mammoth = await import("mammoth"); + const result = await mammoth.convertToHtml( + { path: filePath }, + { + externalFileAccess: false, + convertImage: mammoth.images.dataUri, + } + ); + const html = wrapDocxPreviewHtml(result.value, path.basename(filePath)); + return new Response(html, { + headers: { + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-cache", + "Content-Security-Policy": "default-src 'none'; img-src data:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'", + "Referrer-Policy": "no-referrer", + "X-Content-Type-Options": "nosniff", + }, + }); + } + + if (type === "watch") { + if (stat && !stat.isFile()) { + return NextResponse.json({ error: "Not a file" }, { status: 400 }); + } + let watcher: fs.FSWatcher | null = null; + let lastMtimeMs = stat?.mtimeMs ?? 0; + let lastCtimeMs = stat?.ctimeMs ?? 0; + let lastIno = stat?.ino ?? 0; + let lastSize = stat?.size ?? 0; + let lastExists = stat !== undefined; + const stream = new ReadableStream({ + start(controller) { + const send = (eventName: string, data: Record) => { + const payload = `event: ${eventName}\ndata: ${JSON.stringify(data)}\n\n`; + try { + controller.enqueue(new TextEncoder().encode(payload)); + } catch { + // client disconnected + } + }; + try { + const watchedDirectory = path.dirname(filePath); + watcher = fs.watch(watchedDirectory, (_eventType, changedName) => { + if ( + changedName != null + && !samePath(path.join(watchedDirectory, changedName.toString()), filePath) + ) return; + try { + const s = fs.statSync(filePath); + // Some platforms emit watch events for file reads/attribute + // access. Ignore those or the client's refresh read loops. + if ( + lastExists + && s.mtimeMs === lastMtimeMs + && s.ctimeMs === lastCtimeMs + && s.ino === lastIno + && s.size === lastSize + ) return; + lastExists = true; + lastMtimeMs = s.mtimeMs; + lastCtimeMs = s.ctimeMs; + lastIno = s.ino; + lastSize = s.size; + send("change", { mtime: s.mtime.toISOString(), size: s.size }); + } catch { + if (!lastExists) return; + lastExists = false; + send("change", { mtime: new Date().toISOString(), size: 0 }); + } + }); + watcher.on("error", () => { + try { watcher?.close(); } catch { /* ignore */ } + watcher = null; + try { controller.close(); } catch { /* ignore */ } + }); + // The client snapshots only after this event, so emit it after the + // watcher exists to avoid dropping changes between those steps. + send("connected", { filePath }); + } catch { + send("error", { message: "Failed to watch file" }); + controller.close(); + } + }, + cancel() { + try { watcher?.close(); } catch { /* ignore */ } + }, + }); + return new Response(stream, { + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + Connection: "keep-alive", + "X-Accel-Buffering": "no", + }, + }); + } + + // type === "list" + if (!stat?.isDirectory()) { + return NextResponse.json({ error: "Not a directory" }, { status: 400 }); + } + + // Avoid per-entry stat calls for normal files and directories. Symlinks and + // filesystems without directory type information use the stat fallback. + const dirents = fs.readdirSync(filePath, { withFileTypes: true }); + const entries = dirents + .filter((d) => !IGNORED_NAMES.has(d.name) && !IGNORED_SUFFIXES.some((s) => d.name.endsWith(s))) + .flatMap((d) => { + const isDir = resolveDirentIsDirectory(d, path.join(filePath, d.name)); + return isDir === null + ? [] + : [{ name: d.name, isDir, size: 0, modified: "" }]; + }) + .sort((a, b) => { + // Dirs first, then files, both alphabetically + if (a.isDir !== b.isDir) return a.isDir ? -1 : 1; + return a.name.localeCompare(b.name); + }); + + return NextResponse.json({ entries, path: filePath }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/files/stream-route.test.mjs b/app/api/files/stream-route.test.mjs new file mode 100644 index 000000000..c7f4cdc97 --- /dev/null +++ b/app/api/files/stream-route.test.mjs @@ -0,0 +1,31 @@ +import assert from "node:assert/strict"; +import { readFile } from "node:fs/promises"; +import test from "node:test"; + +const source = await readFile(new URL("./[...path]/route.ts", import.meta.url), "utf8"); +const start = source.indexOf("function streamFile"); +const end = source.indexOf("function escapeHtml", start); +assert.notEqual(start, -1, "streamFile not found"); +assert.notEqual(end, -1, "streamFile end not found"); +const streamBlock = source.slice(start, end); + +test("streamed responses are not content-type sniffable", () => { + assert.match(streamBlock, /"X-Content-Type-Options": "nosniff"/); +}); + +test("inline SVG is served with a script-blocking content security policy", () => { + // SVG is the only inline preview type a browser executes as a document, so + // it must never be able to run script in the Pi Web origin. + assert.match(streamBlock, /contentType === "image\/svg\+xml"/); + assert.match(streamBlock, /Content-Security-Policy/); + assert.match(streamBlock, /default-src 'none'/); + assert.match(streamBlock, /style-src 'unsafe-inline'/); + assert.match(streamBlock, /frame-ancestors 'self'/); +}); + +test("the restrictive headers are applied to every streamFile response shape", () => { + // The header object is shared by the full-body, 416, and 206 paths. + const headerObject = streamBlock.indexOf("const headers"); + const firstReturn = streamBlock.indexOf("createFileBodyStream", headerObject); + assert.ok(headerObject !== -1 && firstReturn > headerObject, "headers must be built before any response"); +}); diff --git a/app/api/files/watch-route.test.mjs b/app/api/files/watch-route.test.mjs new file mode 100644 index 000000000..01ec46596 --- /dev/null +++ b/app/api/files/watch-route.test.mjs @@ -0,0 +1,31 @@ +import assert from "node:assert/strict"; +import { readFile } from "node:fs/promises"; +import test from "node:test"; + +const source = await readFile(new URL("./[...path]/route.ts", import.meta.url), "utf8"); +const start = source.indexOf('if (type === "watch")'); +const end = source.indexOf("// type === \"list\"", start); +assert.notEqual(start, -1, "watch route not found"); +assert.notEqual(end, -1, "watch route end not found"); +const watchBlock = source.slice(start, end); + +test("file watching survives same-path replacement", () => { + assert.match(watchBlock, /watcher = fs\.watch\(watchedDirectory/); + assert.match(watchBlock, /samePath\(path\.join\(watchedDirectory, changedName\.toString\(\)\), filePath\)/); + assert.match(watchBlock, /s\.ctimeMs === lastCtimeMs/); + assert.match(watchBlock, /s\.ino === lastIno/); + assert.match(watchBlock, /lastExists/); +}); + +test("a missing target can be watched after its parent is authorized", () => { + assert.match(source, /if \(type !== "watch"\)[\s\S]*error: "Not found"/); + assert.match(source, /const existingAuthorizationPath = stat \? filePath : path\.dirname\(filePath\)/); + assert.match(watchBlock, /lastExists = stat !== undefined/); +}); + +test("connected is emitted only after the watcher exists", () => { + const watcher = watchBlock.indexOf("watcher = fs.watch"); + const connected = watchBlock.indexOf('send("connected"'); + assert.ok(watcher >= 0, "watcher creation missing"); + assert.ok(connected > watcher, "connected emitted before watcher creation"); +}); diff --git a/app/api/git/diff/route.ts b/app/api/git/diff/route.ts new file mode 100644 index 000000000..e896d0d8c --- /dev/null +++ b/app/api/git/diff/route.ts @@ -0,0 +1,31 @@ +import { NextRequest, NextResponse } from "next/server"; +import { getAllowedFileRoots, isExistingFilePathAllowed, isFilePathAllowed, isWindowsAbsolutePath } from "@/lib/file-access"; +import { getGitFileDiff } from "@/lib/git-changes"; + +export async function GET(request: NextRequest) { + try { + const cwd = request.nextUrl.searchParams.get("cwd")?.trim() ?? ""; + const filePath = request.nextUrl.searchParams.get("path")?.trim() ?? ""; + if (!cwd || (!cwd.startsWith("/") && !isWindowsAbsolutePath(cwd))) { + return NextResponse.json({ error: "cwd must be an absolute path" }, { status: 400 }); + } + if (!filePath || (!filePath.startsWith("/") && !isWindowsAbsolutePath(filePath))) { + return NextResponse.json({ error: "path must be an absolute path" }, { status: 400 }); + } + + const allowedRoots = await getAllowedFileRoots(); + if (!isFilePathAllowed(cwd, allowedRoots) || !isFilePathAllowed(filePath, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + // The cwd must resolve inside an allowed root. The file itself may no + // longer exist when Git reports it as deleted; getGitFileDiff verifies + // that the requested path belongs to this repository and its status. + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + return NextResponse.json(await getGitFileDiff(cwd, filePath)); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 }); + } +} diff --git a/app/api/git/status/route.ts b/app/api/git/status/route.ts new file mode 100644 index 000000000..ead1792f7 --- /dev/null +++ b/app/api/git/status/route.ts @@ -0,0 +1,35 @@ +import fs from "fs"; +import { NextRequest, NextResponse } from "next/server"; +import { getAllowedFileRoots, isExistingFilePathAllowed, isFilePathAllowed, isWindowsAbsolutePath } from "@/lib/file-access"; +import { getGitStatus } from "@/lib/git-changes"; + +export async function GET(request: NextRequest) { + try { + const cwd = request.nextUrl.searchParams.get("cwd")?.trim() ?? ""; + if (!cwd || (!cwd.startsWith("/") && !isWindowsAbsolutePath(cwd))) { + return NextResponse.json({ error: "cwd must be an absolute path" }, { status: 400 }); + } + + const allowedRoots = await getAllowedFileRoots(); + if (!isFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + let stat: fs.Stats; + try { + stat = fs.statSync(cwd); + } catch { + return NextResponse.json({ error: "Directory not found" }, { status: 404 }); + } + if (!stat.isDirectory()) { + return NextResponse.json({ error: "Not a directory" }, { status: 400 }); + } + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + return NextResponse.json(await getGitStatus(cwd)); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 }); + } +} diff --git a/app/api/home/route.ts b/app/api/home/route.ts new file mode 100644 index 000000000..a21f3d662 --- /dev/null +++ b/app/api/home/route.ts @@ -0,0 +1,6 @@ +import { NextResponse } from "next/server"; +import { homedir } from "os"; + +export async function GET() { + return NextResponse.json({ home: homedir() }); +} diff --git a/app/api/models-config/catalog/route.ts b/app/api/models-config/catalog/route.ts new file mode 100644 index 000000000..f0e7cbf21 --- /dev/null +++ b/app/api/models-config/catalog/route.ts @@ -0,0 +1,78 @@ +import { NextResponse } from "next/server"; +import { + flattenModelsDevCatalog, + recommendModelCatalogPreset, + searchModelCatalog, + type ModelCatalogEntry, +} from "@/lib/model-catalog"; + +export const dynamic = "force-dynamic"; + +const MODELS_DEV_URL = "https://models.dev/api.json"; +const CATALOG_TTL_MS = 60 * 60 * 1000; +const FETCH_TIMEOUT_MS = 15_000; + +interface CatalogCache { + entries: ModelCatalogEntry[]; + expiresAt: number; + inFlight?: Promise; +} + +declare global { + var __piModelsDevCatalogCache: CatalogCache | undefined; +} + +function getCache(): CatalogCache { + return globalThis.__piModelsDevCatalogCache ??= { entries: [], expiresAt: 0 }; +} + +async function fetchCatalog(): Promise { + const response = await fetch(MODELS_DEV_URL, { + cache: "no-store", + headers: { Accept: "application/json" }, + signal: AbortSignal.timeout(FETCH_TIMEOUT_MS), + }); + if (!response.ok) throw new Error(`models.dev returned HTTP ${response.status}`); + const entries = flattenModelsDevCatalog(await response.json()); + if (entries.length === 0) throw new Error("models.dev returned an empty catalog"); + return entries; +} + +async function loadCatalog(): Promise { + const cache = getCache(); + if (cache.entries.length > 0 && cache.expiresAt > Date.now()) return cache.entries; + if (!cache.inFlight) { + cache.inFlight = fetchCatalog().then((entries) => { + cache.entries = entries; + cache.expiresAt = Date.now() + CATALOG_TTL_MS; + return entries; + }).finally(() => { + cache.inFlight = undefined; + }); + } + + try { + return await cache.inFlight; + } catch (error) { + if (cache.entries.length > 0) return cache.entries; + throw error; + } +} + +export async function GET(req: Request) { + const { searchParams } = new URL(req.url); + const query = (searchParams.get("q") ?? "").slice(0, 120); + const provider = (searchParams.get("provider") ?? "").slice(0, 120); + const baseUrl = (searchParams.get("baseUrl") ?? "").slice(0, 500); + const parsedLimit = Number.parseInt(searchParams.get("limit") ?? "50", 10); + const limit = Number.isFinite(parsedLimit) ? parsedLimit : 50; + + try { + const entries = await loadCatalog(); + const models = searchModelCatalog(entries, query, provider, limit); + const recommendation = recommendModelCatalogPreset(entries, query, provider, baseUrl); + return NextResponse.json({ models, recommendation, source: MODELS_DEV_URL }); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 502 }); + } +} diff --git a/app/api/models-config/discover/route.ts b/app/api/models-config/discover/route.ts new file mode 100644 index 000000000..0302aa09d --- /dev/null +++ b/app/api/models-config/discover/route.ts @@ -0,0 +1,88 @@ +import { NextResponse } from "next/server"; +import { resolveModelDiscoveryAuth } from "@/lib/model-discovery-auth"; +import { buildModelsListUrl, parseDiscoveredModels } from "@/lib/model-discovery"; + +export const dynamic = "force-dynamic"; + +const DISCOVERY_TIMEOUT_MS = 20_000; + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function hasHeader(headers: Headers, name: string): boolean { + return headers.has(name); +} + +function buildHeaders(api: string, apiKey: string | undefined, configured: Record): Headers { + const headers = new Headers(configured); + if (!hasHeader(headers, "accept")) headers.set("Accept", "application/json"); + if (!apiKey) return headers; + + if (api === "anthropic-messages") { + if (!hasHeader(headers, "x-api-key")) headers.set("x-api-key", apiKey); + if (!hasHeader(headers, "anthropic-version")) headers.set("anthropic-version", "2023-06-01"); + } else if (api === "google-generative-ai") { + if (!hasHeader(headers, "x-goog-api-key")) headers.set("x-goog-api-key", apiKey); + } else if (!hasHeader(headers, "authorization")) { + headers.set("Authorization", `Bearer ${apiKey}`); + } + return headers; +} + +export async function POST(req: Request) { + try { + const body = await req.json() as { providerName?: unknown; provider?: unknown }; + const providerName = typeof body.providerName === "string" ? body.providerName.trim() : ""; + if (!providerName) return NextResponse.json({ error: "providerName is required" }, { status: 400 }); + if (!isRecord(body.provider)) return NextResponse.json({ error: "provider is required" }, { status: 400 }); + + const baseUrl = typeof body.provider.baseUrl === "string" ? body.provider.baseUrl.trim() : ""; + if (!baseUrl) return NextResponse.json({ error: "Base URL is required" }, { status: 400 }); + const api = typeof body.provider.api === "string" && body.provider.api + ? body.provider.api + : "openai-completions"; + + let endpoint: URL; + try { + endpoint = buildModelsListUrl(baseUrl, api); + } catch { + return NextResponse.json({ error: "Base URL is invalid" }, { status: 400 }); + } + + const auth = await resolveModelDiscoveryAuth(providerName, body.provider); + if (typeof body.provider.apiKey === "string" && body.provider.apiKey.trim() && !auth.apiKey) { + return NextResponse.json({ error: `No API key found for "${providerName}"` }, { status: 400 }); + } + + const response = await fetch(endpoint, { + cache: "no-store", + headers: buildHeaders(api, auth.apiKey, auth.headers), + signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS), + }); + const responseText = await response.text(); + if (!response.ok) { + return NextResponse.json({ + error: responseText.slice(0, 500) || `Upstream returned HTTP ${response.status}`, + status: response.status, + }, { status: 502 }); + } + + let payload: unknown; + try { + payload = JSON.parse(responseText); + } catch { + return NextResponse.json({ error: "Upstream model list was not valid JSON" }, { status: 502 }); + } + const models = parseDiscoveredModels(payload); + if (models.length === 0) { + return NextResponse.json({ error: "No models found in the upstream response" }, { status: 502 }); + } + + return NextResponse.json({ models, endpoint: endpoint.toString() }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + const status = error instanceof DOMException && error.name === "TimeoutError" ? 504 : 500; + return NextResponse.json({ error: message }, { status }); + } +} diff --git a/app/api/models-config/route.ts b/app/api/models-config/route.ts new file mode 100644 index 000000000..cdc26613b --- /dev/null +++ b/app/api/models-config/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from "next/server"; +import { readModelsConfig, writeModelsConfig } from "@/lib/models-config-store"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + return NextResponse.json(readModelsConfig()); +} + +export async function PUT(req: Request) { + try { + const body = await req.json() as Record; + writeModelsConfig(body); + return NextResponse.json({ success: true }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/models-config/test/route.ts b/app/api/models-config/test/route.ts new file mode 100644 index 000000000..8c74afa8a --- /dev/null +++ b/app/api/models-config/test/route.ts @@ -0,0 +1,121 @@ +import { NextResponse } from "next/server"; +import { mkdtempSync, rmSync, writeFileSync } from "fs"; +import { tmpdir } from "os"; +import { join } from "path"; +import { completeSimple, type AssistantMessage } from "@earendil-works/pi-ai/compat"; +import { ModelRuntime } from "@earendil-works/pi-coding-agent"; +import { hasJsonContentType, isApiRequestAllowed } from "@/lib/request-security"; + +export const dynamic = "force-dynamic"; + +const TEST_TIMEOUT_MS = 20_000; + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function errorMessage(error: unknown): string { + return error instanceof Error ? error.message : String(error); +} + +function getAssistantText(message: AssistantMessage): string { + return message.content + .filter((block) => block.type === "text") + .map((block) => block.text) + .join(""); +} + +export async function POST(req: Request) { + if (!isApiRequestAllowed(req)) { + return NextResponse.json({ ok: false, error: "Untrusted API request" }, { status: 403 }); + } + if (!hasJsonContentType(req)) { + return NextResponse.json( + { ok: false, error: "Content-Type must be application/json" }, + { status: 415 }, + ); + } + + let tempDir: string | undefined; + + try { + const body = await req.json() as { providerName?: unknown; provider?: unknown; model?: unknown }; + const providerName = typeof body.providerName === "string" ? body.providerName.trim() : ""; + if (!providerName) return NextResponse.json({ ok: false, error: "providerName is required" }, { status: 400 }); + if (!isRecord(body.provider)) return NextResponse.json({ ok: false, error: "provider is required" }, { status: 400 }); + if (!isRecord(body.model)) return NextResponse.json({ ok: false, error: "model is required" }, { status: 400 }); + + const modelId = typeof body.model.id === "string" ? body.model.id.trim() : ""; + if (!modelId) return NextResponse.json({ ok: false, error: "Model ID is required" }, { status: 400 }); + + tempDir = mkdtempSync(join(tmpdir(), "pi-web-model-test-")); + const modelsPath = join(tempDir, "models.json"); + writeFileSync(modelsPath, JSON.stringify({ + providers: { + [providerName]: { + ...body.provider, + models: [{ ...body.model, id: modelId }], + }, + }, + }, null, 2), "utf8"); + + const modelRuntime = await ModelRuntime.create({ modelsPath }); + const loadError = modelRuntime.getError(); + if (loadError) return NextResponse.json({ ok: false, error: loadError }); + + const model = modelRuntime.getModel(providerName, modelId); + if (!model) return NextResponse.json({ ok: false, error: `Model not found: ${providerName}/${modelId}` }); + + const resolved = await modelRuntime.getAuth(model); + if (!resolved?.auth.apiKey) { + return NextResponse.json({ ok: false, error: `No API key found for "${providerName}"` }); + } + + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), TEST_TIMEOUT_MS); + let status: number | undefined; + const startedAt = Date.now(); + + try { + const message = await completeSimple(model, { + messages: [{ + role: "user", + content: "Reply with OK only.", + timestamp: Date.now(), + }], + }, { + apiKey: resolved.auth.apiKey, + headers: resolved.auth.headers, + maxTokens: 16, + timeoutMs: TEST_TIMEOUT_MS, + maxRetries: 0, + cacheRetention: "none", + signal: controller.signal, + onResponse: (response) => { status = response.status; }, + }); + + const latencyMs = Date.now() - startedAt; + if (message.stopReason === "error" || message.stopReason === "aborted") { + return NextResponse.json({ + ok: false, + error: message.errorMessage ?? (controller.signal.aborted ? "Test timed out" : "Model returned an error"), + latencyMs, + status, + }); + } + + return NextResponse.json({ + ok: true, + latencyMs, + status, + responseText: getAssistantText(message).slice(0, 300), + }); + } finally { + clearTimeout(timeout); + } + } catch (error) { + return NextResponse.json({ ok: false, error: errorMessage(error) }, { status: 500 }); + } finally { + if (tempDir) rmSync(tempDir, { recursive: true, force: true }); + } +} diff --git a/app/api/models/route.ts b/app/api/models/route.ts new file mode 100644 index 000000000..49066504a --- /dev/null +++ b/app/api/models/route.ts @@ -0,0 +1,123 @@ +import { stat } from "fs/promises"; +import { resolve } from "path"; +import { createAgentSessionServices, getAgentDir, type SettingsManager } from "@earendil-works/pi-coding-agent"; +import { getSupportedThinkingLevels } from "@earendil-works/pi-ai"; +import { + loadModelsWithCache, + withModelRuntimeError, + withSafeModelLoadFailure, + type ModelsData, +} from "@/lib/models-cache"; +import { resolveVisibleModels, selectInitialModelScope } from "@/lib/model-scope"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; +import { projectTrustReloadOptions } from "@/lib/project-trust"; + +export const dynamic = "force-dynamic"; + +const modelNameCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: "base" }); + +function compareModelEntries( + a: { id: string; name: string; provider: string }, + b: { id: string; name: string; provider: string } +): number { + return modelNameCollator.compare(a.name || a.id, b.name || b.id) + || modelNameCollator.compare(a.provider, b.provider) + || modelNameCollator.compare(a.id, b.id); +} + +async function loadModels(cwd: string): Promise { + const nameMap = new Map(); + let modelList: { id: string; name: string; provider: string }[] = []; + let defaultModel: { provider: string; modelId: string } | null = null; + const thinkingLevels: Record = {}; + const thinkingLevelMaps: Record> = {}; + + const agentDir = getAgentDir(); + // Gate untrusted project extensions: enumerating models still imports and + // runs a repository's .pi/extensions factories, so honor project trust here + // too (see lib/project-trust.ts, #236). + const trustReloadOptions = projectTrustReloadOptions(cwd, agentDir); + const services = await createAgentSessionServices({ + cwd, + agentDir, + ...(trustReloadOptions ? { resourceLoaderReloadOptions: trustReloadOptions } : {}), + }); + const modelError = services.modelRuntime.getError(); + const settings: SettingsManager = services.settingsManager; + // `enabledModels` supports globs and fuzzy patterns, so resolve it the same + // way the CLI does instead of comparing pattern strings literally (#307). + const scope = await resolveVisibleModels( + services.modelRuntime, + settings.getEnabledModels(), + ); + const { visible, thinkingLevelPins, warnings } = scope; + modelList = visible.map((m) => ({ + id: m.id, + name: m.name, + provider: m.provider, + })).sort(compareModelEntries); + for (const m of visible) { + const key = `${m.provider}:${m.id}`; + nameMap.set(key, m.name); + thinkingLevels[key] = getSupportedThinkingLevels(m); + if (m.thinkingLevelMap) thinkingLevelMaps[key] = m.thinkingLevelMap; + } + + const defaultProvider = settings.getDefaultProvider(); + const defaultModelId = settings.getDefaultModel(); + const initial = selectInitialModelScope(scope, { + ...(defaultProvider && defaultModelId + ? { defaultModel: { provider: defaultProvider, modelId: defaultModelId } } + : {}), + }); + if (initial.model) { + defaultModel = { provider: initial.model.provider, modelId: initial.model.id }; + } + + return withModelRuntimeError( + { + models: Object.fromEntries(nameMap), + modelList, + defaultModel, + thinkingLevels, + thinkingLevelMaps, + thinkingLevelPins, + ...(warnings.length > 0 ? { modelScopeWarnings: warnings } : {}), + }, + modelError, + ); +} + +const EMPTY_MODELS: ModelsData = { + models: {}, + modelList: [], + defaultModel: null, + thinkingLevels: {}, + thinkingLevelMaps: {}, + thinkingLevelPins: {}, +}; + +export async function GET(req: Request) { + const requestedCwd = new URL(req.url).searchParams.get("cwd") || process.cwd(); + const cwd = resolve(requestedCwd); + + let cwdStat; + try { + cwdStat = await stat(cwd); + } catch { + return Response.json({ error: `Directory does not exist: ${cwd}` }, { status: 400 }); + } + if (!cwdStat.isDirectory()) { + return Response.json({ error: `Not a directory: ${cwd}` }, { status: 400 }); + } + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return Response.json({ error: "Access denied" }, { status: 403 }); + } + + try { + return Response.json(await loadModelsWithCache(cwd, () => loadModels(cwd))); + } catch { + return Response.json(withSafeModelLoadFailure(EMPTY_MODELS)); + } +} diff --git a/app/api/plugins/route.ts b/app/api/plugins/route.ts new file mode 100644 index 000000000..db80a663a --- /dev/null +++ b/app/api/plugins/route.ts @@ -0,0 +1,364 @@ +import { NextResponse } from "next/server"; +import { existsSync, readFileSync, statSync } from "fs"; +import { basename, dirname, extname, join, relative } from "path"; +import { + DefaultPackageManager, + getAgentDir, + SettingsManager, + type PackageSource, + type ResolvedPaths, + type ResolvedResource, +} from "@earendil-works/pi-coding-agent"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; +import { hasJsonContentType, isApiRequestAllowed } from "@/lib/request-security"; +import { getProjectTrustStatus } from "@/lib/project-trust"; +import type { + PluginDiagnostic, + PluginPackageInfo, + PluginResourceCounts, + PluginResourceInfo, + PluginResourceKind, + PluginScope, + PluginsResponse, +} from "@/lib/api-types"; + +export const dynamic = "force-dynamic"; + +type PluginAction = "install" | "remove" | "update" | "disable" | "enable"; + +function emptyCounts(): PluginResourceCounts { + return { extensions: 0, skills: 0, prompts: 0, themes: 0 }; +} + +function toPluginScope(scope: string): PluginScope { + return scope === "project" ? "project" : "global"; +} + +function keyFor(source: string, scope: PluginScope): string { + return `${scope}\0${source}`; +} + +function getPackageSource(entry: PackageSource): string { + return typeof entry === "string" ? entry : entry.source; +} + +function isDisabledPackage(entry: PackageSource): boolean { + if (typeof entry === "string") return false; + return ( + Array.isArray(entry.extensions) && entry.extensions.length === 0 && + Array.isArray(entry.skills) && entry.skills.length === 0 && + Array.isArray(entry.prompts) && entry.prompts.length === 0 && + Array.isArray(entry.themes) && entry.themes.length === 0 + ); +} + +function getDisabledPackages(settingsManager: SettingsManager): Map { + const disabled = new Map(); + for (const entry of settingsManager.getGlobalSettings().packages ?? []) { + disabled.set(keyFor(getPackageSource(entry), "global"), isDisabledPackage(entry)); + } + for (const entry of settingsManager.getProjectSettings().packages ?? []) { + disabled.set(keyFor(getPackageSource(entry), "project"), isDisabledPackage(entry)); + } + return disabled; +} + +function setPackageDisabled( + settingsManager: SettingsManager, + source: string, + scope: PluginScope, + disabled: boolean, +): boolean { + const current = scope === "project" + ? settingsManager.getProjectSettings().packages ?? [] + : settingsManager.getGlobalSettings().packages ?? []; + let changed = false; + const next = current.map((entry): PackageSource => { + if (getPackageSource(entry) !== source) return entry; + changed = true; + if (disabled) { + return { + ...(typeof entry === "string" ? { source: entry } : entry), + extensions: [], + skills: [], + prompts: [], + themes: [], + }; + } + return getPackageSource(entry); + }); + if (!changed) return false; + if (scope === "project") settingsManager.setProjectPackages(next); + else settingsManager.setPackages(next); + return true; +} + +function addCount(counts: PluginResourceCounts, kind: keyof PluginResourceCounts): void { + counts[kind] += 1; +} + +function getResourceName(path: string, kind: PluginResourceKind): string { + const file = basename(path); + const ext = extname(file); + if (kind === "skill" && file.toLowerCase() === "skill.md") return basename(dirname(path)); + if ((kind === "extension" || kind === "theme" || kind === "prompt") && ext) { + if (kind === "extension" && /^index\.(ts|js)$/.test(file)) return basename(dirname(path)); + return file.slice(0, -ext.length); + } + return file; +} + +function getRelativePath(resource: ResolvedResource): string { + const baseDir = resource.metadata.baseDir; + if (!baseDir) return resource.path; + const rel = relative(baseDir, resource.path); + return rel && !rel.startsWith("..") ? rel : resource.path; +} + +function getConfiguredVersion(source: string): string | undefined { + const npmSpec = source.startsWith("npm:") ? source.slice(4) : undefined; + if (npmSpec) { + const lastAt = npmSpec.lastIndexOf("@"); + const packageNameEnd = npmSpec.startsWith("@") ? npmSpec.indexOf("/", 1) : 0; + if (lastAt > packageNameEnd) return npmSpec.slice(lastAt + 1) || undefined; + return undefined; + } + + if (source.startsWith("git:") || /^[a-z]+:\/\//.test(source)) { + const lastAt = source.lastIndexOf("@"); + const lastSlash = source.lastIndexOf("/"); + const lastColon = source.lastIndexOf(":"); + if (lastAt > Math.max(lastSlash, lastColon)) return source.slice(lastAt + 1) || undefined; + } + return undefined; +} + +function readPackageMetadata(installedPath?: string): { packageName?: string; version?: string } { + if (!installedPath) return {}; + try { + const stats = statSync(installedPath); + const packageJsonPath = stats.isDirectory() + ? join(installedPath, "package.json") + : join(dirname(installedPath), "package.json"); + if (!existsSync(packageJsonPath)) return {}; + const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8")) as { + name?: unknown; + version?: unknown; + }; + return { + packageName: typeof parsed.name === "string" ? parsed.name : undefined, + version: typeof parsed.version === "string" ? parsed.version : undefined, + }; + } catch { + return {}; + } +} + +function collectResource( + resource: ResolvedResource, + kind: keyof PluginResourceCounts, + countsByPackage: Map, + resourcesByPackage: Map, + totals: PluginResourceCounts, +): void { + if (!resource.enabled || resource.metadata.origin !== "package") return; + const source = resource.metadata.source; + const scope = toPluginScope(resource.metadata.scope); + const key = keyFor(source, scope); + const counts = countsByPackage.get(key) ?? emptyCounts(); + addCount(counts, kind); + addCount(totals, kind); + countsByPackage.set(key, counts); + const resources = resourcesByPackage.get(key) ?? []; + const resourceKind = kind === "extensions" + ? "extension" + : kind === "skills" + ? "skill" + : kind === "prompts" + ? "prompt" + : "theme"; + resources.push({ + kind: resourceKind, + name: getResourceName(resource.path, resourceKind), + path: resource.path, + relativePath: getRelativePath(resource), + }); + resourcesByPackage.set(key, resources); +} + +function collectResources(paths: ResolvedPaths): { + countsByPackage: Map; + resourcesByPackage: Map; + totals: PluginResourceCounts; +} { + const countsByPackage = new Map(); + const resourcesByPackage = new Map(); + const totals = emptyCounts(); + for (const resource of paths.extensions) collectResource(resource, "extensions", countsByPackage, resourcesByPackage, totals); + for (const resource of paths.skills) collectResource(resource, "skills", countsByPackage, resourcesByPackage, totals); + for (const resource of paths.prompts) collectResource(resource, "prompts", countsByPackage, resourcesByPackage, totals); + for (const resource of paths.themes) collectResource(resource, "themes", countsByPackage, resourcesByPackage, totals); + return { countsByPackage, resourcesByPackage, totals }; +} + +async function readPlugins(cwd: string): Promise { + const agentDir = getAgentDir(); + const projectTrust = getProjectTrustStatus(cwd, agentDir); + const settingsManager = SettingsManager.create(cwd, agentDir, { + projectTrusted: projectTrust.trusted, + }); + const packageManager = new DefaultPackageManager({ + cwd, + agentDir, + settingsManager, + }); + + const diagnostics: PluginDiagnostic[] = []; + let countsByPackage = new Map(); + let resourcesByPackage = new Map(); + let totals = emptyCounts(); + const disabledByPackage = getDisabledPackages(settingsManager); + + try { + const resolved = await packageManager.resolve(async (source) => { + diagnostics.push({ + type: "warning", + source, + message: "Package is configured but not installed yet.", + }); + return "skip"; + }); + ({ countsByPackage, resourcesByPackage, totals } = collectResources(resolved)); + } catch (error) { + diagnostics.push({ + type: "error", + message: error instanceof Error ? error.message : String(error), + }); + } + + const packages = packageManager.listConfiguredPackages().map((pkg) => { + const scope = toPluginScope(pkg.scope); + const key = keyFor(pkg.source, scope); + const disabled = disabledByPackage.get(key) ?? false; + const counts = countsByPackage.get(key) ?? emptyCounts(); + const resources = resourcesByPackage.get(key) ?? []; + const resourceCount = counts.extensions + counts.skills + counts.prompts + counts.themes; + const packageMetadata = readPackageMetadata(pkg.installedPath); + if (!pkg.installedPath) { + diagnostics.push({ + type: "warning", + source: pkg.source, + message: "Configured package path was not found.", + }); + } + return { + source: pkg.source, + scope, + filtered: pkg.filtered, + disabled, + installedPath: pkg.installedPath, + packageName: packageMetadata.packageName, + version: packageMetadata.version, + configuredVersion: getConfiguredVersion(pkg.source), + counts, + resources, + status: disabled ? "disabled" : resourceCount > 0 ? "loaded" : pkg.installedPath ? "installed" : "missing", + } satisfies PluginPackageInfo; + }); + + return { + packages, + totals, + diagnostics, + projectResourcesLoaded: projectTrust.trusted, + }; +} + +function readScope(scope: unknown): PluginScope { + return scope === "project" ? "project" : "global"; +} + +export async function GET(req: Request) { + const { searchParams } = new URL(req.url); + const cwd = searchParams.get("cwd"); + if (!cwd) return NextResponse.json({ error: "cwd required" }, { status: 400 }); + + try { + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + return NextResponse.json(await readPlugins(cwd)); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} + +// POST /api/plugins body: { action, source?, scope?, cwd } +export async function POST(req: Request) { + if (!isApiRequestAllowed(req)) { + return NextResponse.json({ error: "Untrusted API request" }, { status: 403 }); + } + if (!hasJsonContentType(req)) { + return NextResponse.json({ error: "Content-Type must be application/json" }, { status: 415 }); + } + + try { + const body = await req.json() as { + action?: PluginAction; + source?: string; + scope?: PluginScope; + cwd?: string; + }; + if (!body.cwd) return NextResponse.json({ error: "cwd required" }, { status: 400 }); + if (!body.action) return NextResponse.json({ error: "action required" }, { status: 400 }); + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(body.cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + const agentDir = getAgentDir(); + const projectTrust = getProjectTrustStatus(body.cwd, agentDir); + const settingsManager = SettingsManager.create(body.cwd, agentDir, { + projectTrusted: projectTrust.trusted, + }); + const scope = readScope(body.scope); + if (scope === "project" && !projectTrust.trusted) { + return NextResponse.json( + { error: "Project resources must be trusted before modifying project plugins" }, + { status: 403 }, + ); + } + const packageManager = new DefaultPackageManager({ + cwd: body.cwd, + agentDir, + settingsManager, + }); + const source = body.source?.trim(); + const local = scope === "project"; + + if (body.action === "install") { + if (!source) return NextResponse.json({ error: "source required" }, { status: 400 }); + await packageManager.installAndPersist(source, { local }); + } else if (body.action === "remove") { + if (!source) return NextResponse.json({ error: "source required" }, { status: 400 }); + await packageManager.removeAndPersist(source, { local }); + } else if (body.action === "update") { + await packageManager.update(source); + } else if (body.action === "disable") { + if (!source) return NextResponse.json({ error: "source required" }, { status: 400 }); + setPackageDisabled(settingsManager, source, scope, true); + await settingsManager.flush(); + } else if (body.action === "enable") { + if (!source) return NextResponse.json({ error: "source required" }, { status: 400 }); + setPackageDisabled(settingsManager, source, scope, false); + await settingsManager.flush(); + } else { + return NextResponse.json({ error: `Unsupported action: ${body.action}` }, { status: 400 }); + } + + return NextResponse.json(await readPlugins(body.cwd)); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 }); + } +} diff --git a/app/api/project-trust/route.ts b/app/api/project-trust/route.ts new file mode 100644 index 000000000..81c033a5d --- /dev/null +++ b/app/api/project-trust/route.ts @@ -0,0 +1,66 @@ +import { stat } from "fs/promises"; +import { resolve } from "path"; +import { NextResponse } from "next/server"; +import { getAgentDir } from "@earendil-works/pi-coding-agent"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; +import { invalidateModelsCache } from "@/lib/models-cache"; +import { getProjectTrustStatus, trustProject } from "@/lib/project-trust"; +import { destroyRpcSessionsForCwd, hasBusyRpcSessionForCwd } from "@/lib/rpc-manager"; + +export const dynamic = "force-dynamic"; + +async function validateCwd(value: unknown): Promise< + { cwd: string } | { response: NextResponse } +> { + if (typeof value !== "string" || !value.trim()) { + return { response: NextResponse.json({ error: "cwd required" }, { status: 400 }) }; + } + + const cwd = resolve(value); + try { + if (!(await stat(cwd)).isDirectory()) { + return { response: NextResponse.json({ error: "cwd must be a directory" }, { status: 400 }) }; + } + } catch { + return { response: NextResponse.json({ error: "Directory does not exist" }, { status: 400 }) }; + } + + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return { response: NextResponse.json({ error: "Access denied" }, { status: 403 }) }; + } + return { cwd }; +} + +export async function GET(req: Request) { + const result = await validateCwd(new URL(req.url).searchParams.get("cwd")); + if ("response" in result) return result.response; + return NextResponse.json(getProjectTrustStatus(result.cwd, getAgentDir())); +} + +export async function POST(req: Request) { + try { + const body = await req.json() as { cwd?: unknown }; + const result = await validateCwd(body.cwd); + if ("response" in result) return result.response; + + const agentDir = getAgentDir(); + const current = getProjectTrustStatus(result.cwd, agentDir); + if (!current.requiresTrust) { + return NextResponse.json({ error: "This project has no resources that require trust" }, { status: 409 }); + } + if (hasBusyRpcSessionForCwd(result.cwd)) { + return NextResponse.json({ error: "Wait for the active session to finish before trusting this project" }, { status: 409 }); + } + + const status = trustProject(result.cwd, agentDir); + invalidateModelsCache(); + await destroyRpcSessionsForCwd(result.cwd); + return NextResponse.json(status); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/push/config/route.ts b/app/api/push/config/route.ts new file mode 100644 index 000000000..c1bc9abec --- /dev/null +++ b/app/api/push/config/route.ts @@ -0,0 +1,12 @@ +import { getVapidPublicKey } from "@/lib/web-push"; +import type { PushConfigResponse } from "@/lib/api-types"; + +export const dynamic = "force-dynamic"; + +// GET /api/push/config - VAPID public key for client-side push subscriptions. +// The private key never leaves the server. +export async function GET(): Promise { + const publicKey = await getVapidPublicKey(); + const body: PushConfigResponse = { publicKey }; + return Response.json(body); +} diff --git a/app/api/push/subscribe/route.ts b/app/api/push/subscribe/route.ts new file mode 100644 index 000000000..91d103f50 --- /dev/null +++ b/app/api/push/subscribe/route.ts @@ -0,0 +1,40 @@ +import { addSubscription, type PushSubscriptionRecord } from "@/lib/web-push"; + +export const dynamic = "force-dynamic"; + +interface SubscribeRequestBody { + subscription?: Partial; + locale?: string; +} + +function isValidSubscription(subscription: Partial | undefined): subscription is PushSubscriptionRecord { + if (typeof subscription !== "object" || subscription === null) return false; + if (typeof subscription.endpoint !== "string" || !/^https:\/\//.test(subscription.endpoint)) return false; + const keys = subscription.keys; + if (typeof keys !== "object" || keys === null) return false; + return typeof keys.p256dh === "string" && keys.p256dh.length > 0 + && typeof keys.auth === "string" && keys.auth.length > 0; +} + +// POST /api/push/subscribe - register a browser push subscription. Upserts by +// endpoint, so the client can safely re-send its subscription on every load. +export async function POST(req: Request): Promise { + let body: SubscribeRequestBody; + try { + body = await req.json(); + } catch { + return Response.json({ error: "Invalid JSON body" }, { status: 400 }); + } + + if (!isValidSubscription(body.subscription)) { + return Response.json({ error: "Invalid push subscription" }, { status: 400 }); + } + + const locale = body.locale === "zh-CN" ? "zh-CN" : "en"; + await addSubscription({ + endpoint: body.subscription.endpoint, + keys: body.subscription.keys, + locale, + }); + return Response.json({ ok: true }); +} diff --git a/app/api/sessions/[id]/auto-name/route.ts b/app/api/sessions/[id]/auto-name/route.ts new file mode 100644 index 000000000..84b14adaf --- /dev/null +++ b/app/api/sessions/[id]/auto-name/route.ts @@ -0,0 +1,45 @@ +import { NextResponse } from "next/server"; +import type { AgentSession } from "@earendil-works/pi-coding-agent"; +import { generateSessionTitle } from "@/lib/session-title"; +import { getRpcSession, startRpcSession } from "@/lib/rpc-manager"; +import { invalidateSessionListCache, resolveSessionPath } from "@/lib/session-reader"; + +export async function POST( + _req: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + + try { + const filePath = await resolveSessionPath(id); + if (!filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + + const existing = getRpcSession(id); + const { session } = existing?.isAlive() + ? { session: existing } + : await startRpcSession(id, filePath, undefined); + + // globalThis keeps wrappers alive across dev hot reloads; older instances + // may predate waitUntilReady(), but those have already completed startup. + await session.waitUntilReady?.(); + const result = await generateSessionTitle(session.inner as unknown as AgentSession); + + if (!session.isAlive()) { + return NextResponse.json( + { error: "The session was closed while its title was being generated. Please try again." }, + { status: 409 }, + ); + } + + session.inner.setSessionName(result.title); + invalidateSessionListCache(); + return NextResponse.json({ title: result.title, usage: result.usage ?? null }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/sessions/[id]/context/route.ts b/app/api/sessions/[id]/context/route.ts new file mode 100644 index 000000000..1f048e269 --- /dev/null +++ b/app/api/sessions/[id]/context/route.ts @@ -0,0 +1,45 @@ +import { NextResponse } from "next/server"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; +import { resolveSessionPath, buildSessionContext } from "@/lib/session-reader"; +import { getRpcSession } from "@/lib/rpc-manager"; + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + const url = new URL(req.url); + const leafId = url.searchParams.get("leafId") ?? undefined; + const deferThinking = url.searchParams.has("deferThinking"); + const deferToolResultImages = url.searchParams.has("deferMedia"); + // `tail` caps the ancestor chain returned (default 50); `before` rewinds the + // walk start to an older entry so the client can page upward without + // re-fetching the whole active branch. + const rawTail = Number(url.searchParams.get("tail")); + const tail = Number.isFinite(rawTail) && rawTail > 0 ? Math.min(rawTail, 1000) : 50; + const before = url.searchParams.get("before") ?? undefined; + + try { + const rpc = getRpcSession(id); + const liveRpc = rpc?.isAlive() ? rpc : undefined; + const filePath = liveRpc ? null : await resolveSessionPath(id); + if (!liveRpc && !filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + + const sm = liveRpc?.inner.sessionManager ?? SessionManager.open(filePath!); + // `before` is the oldest entry already on the client; fetch its ancestors + // only (excludeLeaf) so prepending the page does not duplicate `before`. + const context = buildSessionContext(sm.getEntries() as never, before ?? leafId, { + deferThinking, + deferToolResultImages, + tail, + excludeLeaf: Boolean(before), + sessionId: id, + }); + + return NextResponse.json({ context, tail, before: before ?? null }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts b/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts new file mode 100644 index 000000000..4d7db57f9 --- /dev/null +++ b/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts @@ -0,0 +1,34 @@ +import { NextResponse } from "next/server"; +import { getSessionEntries, resolveSessionPath } from "@/lib/session-reader"; + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string; entryId: string }> }, +) { + const { id, entryId } = await params; + const blockIndexParam = new URL(req.url).searchParams.get("blockIndex"); + const blockIndex = blockIndexParam === null ? Number.NaN : Number(blockIndexParam); + if (!Number.isSafeInteger(blockIndex) || blockIndex < 0) { + return NextResponse.json({ error: "Valid blockIndex is required" }, { status: 400 }); + } + + try { + const filePath = await resolveSessionPath(id); + if (!filePath) return NextResponse.json({ error: "Session not found" }, { status: 404 }); + + // SessionManager-backed parsing preserves the SDK's malformed-line tolerance. + const entry = getSessionEntries(filePath).find((candidate) => candidate.id === entryId); + if (!entry || entry.type !== "message" || entry.message.role !== "assistant") { + return NextResponse.json({ error: "Assistant message not found" }, { status: 404 }); + } + + const block = entry.message.content[blockIndex]; + if (!block || block.type !== "thinking") { + return NextResponse.json({ error: "Thinking block not found" }, { status: 404 }); + } + + return NextResponse.json({ thinking: block.thinking }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts b/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts new file mode 100644 index 000000000..a33d207e0 --- /dev/null +++ b/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts @@ -0,0 +1,86 @@ +import { NextResponse } from "next/server"; +import { getSessionEntries, resolveSessionPath } from "@/lib/session-reader"; +import { MAX_TOOL_RESULT_IMAGE_BYTES, TOOL_RESULT_IMAGE_MIMES } from "@/lib/tool-result-images"; + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function readBase64Image(block: unknown): { data: string; mime: string } | null { + if (!isRecord(block) || block.type !== "image") return null; + + if (typeof block.data === "string" && typeof block.mimeType === "string") { + return { data: block.data, mime: block.mimeType }; + } + + if ( + isRecord(block.source) && + block.source.type === "base64" && + typeof block.source.data === "string" && + typeof block.source.media_type === "string" + ) { + return { data: block.source.data, mime: block.source.media_type }; + } + + return null; +} + +function decodeBoundedBase64(data: string): Uint8Array | null { + // Reject malformed and obviously oversized payloads before allocating. + if ( + data.length === 0 || + data.length > Math.ceil(MAX_TOOL_RESULT_IMAGE_BYTES * 4 / 3) + 4 || + data.length % 4 !== 0 || + !/^[A-Za-z0-9+/]*={0,2}$/.test(data) + ) { + return null; + } + + const bytes = Buffer.from(data, "base64"); + if (bytes.length === 0 || bytes.length > MAX_TOOL_RESULT_IMAGE_BYTES) return null; + return new Uint8Array(bytes); +} + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string; entryId: string }> }, +) { + const { id, entryId } = await params; + const blockIndexParam = new URL(req.url).searchParams.get("blockIndex"); + const blockIndex = blockIndexParam === null ? Number.NaN : Number(blockIndexParam); + if (!Number.isSafeInteger(blockIndex) || blockIndex < 0) { + return NextResponse.json({ error: "Valid blockIndex is required" }, { status: 400 }); + } + + try { + const filePath = await resolveSessionPath(id); + if (!filePath) return NextResponse.json({ error: "Session not found" }, { status: 404 }); + + const entry = getSessionEntries(filePath).find((candidate) => candidate.id === entryId); + if (!entry || entry.type !== "message" || entry.message.role !== "toolResult") { + return NextResponse.json({ error: "Tool result not found" }, { status: 404 }); + } + + const image = readBase64Image(entry.message.content[blockIndex]); + if (!image) return NextResponse.json({ error: "Tool result image not found" }, { status: 404 }); + if (!TOOL_RESULT_IMAGE_MIMES.has(image.mime)) { + return NextResponse.json({ error: "Unsupported image type" }, { status: 415 }); + } + + const bytes = decodeBoundedBase64(image.data); + if (!bytes) return NextResponse.json({ error: "Invalid or oversized image data" }, { status: 413 }); + + const body = new ArrayBuffer(bytes.byteLength); + new Uint8Array(body).set(bytes); + return new Response(body, { + headers: { + "Content-Type": image.mime, + "Content-Length": String(bytes.byteLength), + "Cache-Control": "private, no-cache", + "X-Content-Type-Options": "nosniff", + }, + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/[id]/export/route.ts b/app/api/sessions/[id]/export/route.ts new file mode 100644 index 000000000..bda67e912 --- /dev/null +++ b/app/api/sessions/[id]/export/route.ts @@ -0,0 +1,282 @@ +import { randomUUID } from "crypto"; +import { execFile } from "child_process"; +import { existsSync, mkdirSync, readFileSync, rmSync } from "fs"; +import { tmpdir } from "os"; +import { basename, dirname, join } from "path"; +import { promisify } from "util"; +import { fileURLToPath, pathToFileURL } from "url"; +import { NextResponse } from "next/server"; +import { resolveSessionPath } from "@/lib/session-reader"; + +const execFileAsync = promisify(execFile); + +export const runtime = "nodejs"; + +type PiCodingAgentModule = { + getPackageDir: () => string; +}; + +type ExportHtmlModule = { + exportFromFile: (inputPath: string, outputPath: string) => Promise; +}; + +async function getPiPackageDir(): Promise { + try { + const { getPackageDir } = (await import("@earendil-works/pi-coding-agent")) as PiCodingAgentModule; + return getPackageDir(); + } catch { + return null; + } +} + +function encodeHeaderValue(value: string): string { + return encodeURIComponent(value).replace(/[!'()*]/g, (ch) => + `%${ch.charCodeAt(0).toString(16).toUpperCase()}` + ); +} + +function getContentDisposition(fileName: string, inline: boolean): string { + const fallback = fileName.replace(/[^\x20-\x7E]|["\\;\r\n]/g, "_") || "session.html"; + const disposition = inline ? "inline" : "attachment"; + return `${disposition}; filename="${fallback}"; filename*=UTF-8''${encodeHeaderValue(fileName)}`; +} + +async function getPiCliPath(): Promise { + const candidates = new Set(); + const packageDir = await getPiPackageDir(); + + if (packageDir) { + candidates.add(join(packageDir, "dist", "cli.js")); + } + + try { + const resolver = (import.meta as ImportMeta & { + resolve?: (specifier: string) => string | Promise; + }).resolve; + if (typeof resolver === "function") { + const indexUrl = await resolver("@earendil-works/pi-coding-agent"); + candidates.add(join(dirname(fileURLToPath(indexUrl)), "cli.js")); + } + } catch { + // Next.js production bundles can strip import.meta.resolve. + } + + candidates.add( + join( + process.cwd(), + "node_modules", + "@earendil-works", + "pi-coding-agent", + "dist", + "cli.js" + ) + ); + + for (const candidate of candidates) { + if (existsSync(candidate)) return candidate; + } + return null; +} + +/** + * Patch the exported HTML to fix recursive functions that overflow + * the call stack on deep linear session trees (e.g., 5000+ entries). + * + * ## Root Cause + * pi-coding-agent's template.js uses recursive helpers to render and + * navigate the session tree in the exported HTML: + * + * 1. sortChildren(node) — recursively sorts children of every node. + * Calls itself via node.children.forEach(sortChildren). + * On a 5527-entry linear chain (no branches), this recurses 5527 + * levels deep → stack overflow. + * + * 2. mapNodes(node) — recursively indexes tree nodes the first time + * a tree item is clicked. Same depth -> same overflow. + * + * 3. markActive(node) — recursively marks nodes on the active path. + * Calls itself via markActive(child) for each child. + * Same depth → same overflow. + * + * Both functions are inlined in the HTML by pi-coding-agent at export + * time. We cannot modify template.js directly (it's in node_modules + * and would be overwritten on npm install). Instead, we patch the + * generated HTML string before returning it to the client. + * + * ## Fix + * Replace each recursive function with an iterative equivalent: + * + * sortChildren → explicit stack (DFS pre-order, push children in + * reverse to maintain order) + * mapNodes → explicit stack (DFS pre-order) + * markActive → two-stack post-order (stack1 for traversal, + * stack2 for processing children before parent) + * + * ## Line Ending Normalization + * This file (route.ts) uses CRLF (Windows), while template.js uses LF + * (Unix). The template strings in the backtick literals inherit the + * file's CRLF line endings. At runtime, readFileSync() also returns + * CRLF on Windows. We normalize everything to LF before matching. + * + * The helper `n(s)` strips \r\n → \n on both the HTML and the + * replacement strings, ensuring cross-platform matching. + */ +function patchExportHtml(html: string): string { + // Normalize line endings: route.ts is CRLF, template.js is LF. + // Without this, the replace() below would fail on Windows. + const n = (s: string) => s.replace(/\r\n/g, "\n"); + html = n(html); + + const replaceRequired = (source: string, name: string, search: string, replacement: string) => { + const normalizedSearch = n(search); + const normalizedReplacement = n(replacement); + const matches = source.split(normalizedSearch).length - 1; + if (matches !== 1) { + throw new Error(`Failed to patch exported HTML: ${name} expected 1 match, found ${matches}`); + } + return source.replace(normalizedSearch, normalizedReplacement); + }; + + html = replaceRequired( + html, + "sortChildren", + ` function sortChildren(node) { + node.children.sort((a, b) => + new Date(a.entry.timestamp).getTime() - new Date(b.entry.timestamp).getTime() + ); + node.children.forEach(sortChildren); + }`, + ` function sortChildren(root) { + const stack = [root]; + while (stack.length) { + const node = stack.pop(); + node.children.sort((a, b) => + new Date(a.entry.timestamp).getTime() - new Date(b.entry.timestamp).getTime() + ); + for (let i = node.children.length - 1; i >= 0; i--) { + stack.push(node.children[i]); + } + } + }` + ); + + html = replaceRequired( + html, + "mapNodes", + ` function mapNodes(node) { + treeNodeMap.set(node.entry.id, node); + node.children.forEach(mapNodes); + } + tree.forEach(mapNodes);`, + ` const stack = [...tree].reverse(); + while (stack.length) { + const node = stack.pop(); + treeNodeMap.set(node.entry.id, node); + for (let i = node.children.length - 1; i >= 0; i--) { + stack.push(node.children[i]); + } + }` + ); + + html = replaceRequired( + html, + "markActive", + ` function markActive(node) { + let has = activePathIds.has(node.entry.id); + for (const child of node.children) { + if (markActive(child)) has = true; + } + containsActive.set(node, has); + return has; + }`, + ` function markActive(root) { + // Post-order traversal using two stacks + const stack1 = [root]; + const stack2 = []; + while (stack1.length) { + const node = stack1.pop(); + stack2.push(node); + for (const child of node.children) { + stack1.push(child); + } + } + while (stack2.length) { + const node = stack2.pop(); + let has = activePathIds.has(node.entry.id); + for (const child of node.children) { + if (containsActive.get(child)) has = true; + } + containsActive.set(node, has); + } + }` + ); + + return html; +} + +async function exportSession(filePath: string, outputPath: string): Promise { + const cliPath = await getPiCliPath(); + if (cliPath) { + await execFileAsync(process.execPath, [cliPath, "--export", filePath, outputPath], { + cwd: process.cwd(), + timeout: 30_000, + env: { + ...process.env, + PI_OFFLINE: "1", + PI_SKIP_VERSION_CHECK: "1", + }, + maxBuffer: 1024 * 1024, + }); + return; + } + + const packageDir = await getPiPackageDir(); + if (!packageDir) throw new Error("pi CLI not found"); + + const exporterUrl = pathToFileURL(join(packageDir, "dist", "core", "export-html", "index.js")).href; + const { exportFromFile } = (await import(exporterUrl)) as ExportHtmlModule; + await exportFromFile(filePath, outputPath); +} + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + const inline = new URL(req.url).searchParams.get("inline") === "1"; + + try { + const filePath = await resolveSessionPath(id); + if (!filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + + const tempDir = join(tmpdir(), "pi-web-export"); + mkdirSync(tempDir, { recursive: true }); + + const sessionBase = basename(filePath, ".jsonl"); + const fileName = `pi-session-${sessionBase}.html`; + const outputPath = join(tempDir, `${randomUUID()}.html`); + + try { + await exportSession(filePath, outputPath); + + const html = readFileSync(outputPath, "utf8"); + const patchedHtml = patchExportHtml(html); + return new Response(patchedHtml, { + headers: { + "Content-Type": "text/html; charset=utf-8", + "Content-Disposition": getContentDisposition(fileName, inline), + "Cache-Control": "no-cache", + "Content-Security-Policy": "frame-ancestors 'none'", + "X-Content-Type-Options": "nosniff", + "X-Frame-Options": "DENY", + }, + }); + } finally { + rmSync(outputPath, { force: true }); + } + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/[id]/route.ts b/app/api/sessions/[id]/route.ts new file mode 100644 index 000000000..64fa9b9a6 --- /dev/null +++ b/app/api/sessions/[id]/route.ts @@ -0,0 +1,213 @@ +import { NextResponse } from "next/server"; +import { existsSync, readdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "fs"; +import { dirname, join } from "path"; +import { SessionManager } from "@earendil-works/pi-coding-agent"; +import { + attachSessionProjectInfo, + resolveSessionPath, + resolveSessionIdByPath, + invalidateSessionPathCache, + invalidateSessionListCache, + buildSessionContext, + readSessionHeader, +} from "@/lib/session-reader"; +import { sessionPathKey } from "@/lib/session-path"; +import { getRpcSession } from "@/lib/rpc-manager"; +import { projectTreeForResponse } from "@/lib/project-tree"; +import { computeSessionTotalActiveMs } from "@/lib/session-timing"; +import { computeSessionStats } from "@/lib/session-stats"; +import type { SessionEntry } from "@/lib/types"; +import { readSubagentRun, readSubagentSessionResources, SUBAGENT_META_TYPE } from "@/lib/subagents"; +import { readSessionToolSelection } from "@/lib/session-tool-selection"; + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + try { + const rpc = getRpcSession(id); + const liveRpc = rpc?.isAlive() ? rpc : undefined; + const resolvedPath = liveRpc ? null : await resolveSessionPath(id); + if (!liveRpc && !resolvedPath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + + const sm = liveRpc?.inner.sessionManager ?? SessionManager.open(resolvedPath!); + const filePath = liveRpc?.sessionFile || sm.getSessionFile() || resolvedPath || ""; + const entries = sm.getEntries(); + const leafId = sm.getLeafId(); + const tree = projectTreeForResponse(sm.getTree()); + const searchParams = new URL(req.url).searchParams; + const deferThinking = searchParams.has("deferThinking"); + const deferToolResultImages = searchParams.has("deferMedia"); + const rawTail = Number(searchParams.get("tail")); + const tail = Number.isFinite(rawTail) && rawTail > 0 ? Math.min(rawTail, 1000) : 50; + const context = buildSessionContext(entries as never, leafId, { + deferThinking, + deferToolResultImages, + tail, + sessionId: id, // local: lazy URLs for historical tool-result images + }); + const totalActiveMs = computeSessionTotalActiveMs(entries); + // Cumulative usage over ALL entries, including history compacted away — + // the same aggregation the SDK's getSessionStats() uses. Lets the client + // keep monotonic token/cost counters across compaction and page reloads. + const stats = computeSessionStats(entries as unknown as SessionEntry[]); + const sessionName = sm.getSessionName(); + const firstUserEntry = entries.find((entry) => entry.type === "message" && entry.message.role === "user"); + const firstUserMessage = firstUserEntry?.type === "message" ? firstUserEntry.message : undefined; + + const header = sm.getHeader(); + let modified = header?.timestamp ?? new Date().toISOString(); + try { modified = statSync(filePath).mtime.toISOString(); } catch { /* use header timestamp */ } + const parentSessionId = header?.parentSession + ? await resolveSessionIdByPath(header.parentSession) + : undefined; + const subagent = header + ? readSubagentRun(entries as never, header.id, filePath) + : null; + const toolNames = readSubagentSessionResources(entries as never)?.tools + ?? readSessionToolSelection(entries as never); + const info = header ? (await attachSessionProjectInfo([{ + path: filePath, + id: header.id, + cwd: header.cwd ?? "", + name: sessionName, + created: header.timestamp, + modified, + messageCount: stats.totalMessages, + firstMessage: firstUserMessage + ? (() => { + const c = (firstUserMessage as { content: unknown }).content; + return typeof c === "string" ? c : (Array.isArray(c) ? (c.find((b: { type: string }) => b.type === "text") as { text: string } | undefined)?.text ?? "" : "") || "(no messages)"; + })() + : "(no messages)", + parentSessionId, + ...(subagent + ? { relation: { kind: "subagent" as const, parentSessionId: subagent.parentSessionId, profile: subagent.profile, description: subagent.description, status: liveRpc?.isRunning() ? "running" as const : subagent.status } } + : header.parentSession + ? { relation: { kind: "fork" as const, ...(parentSessionId ? { originSessionId: parentSessionId } : {}) } } + : {}), + transient: !filePath || !existsSync(filePath), + }]))[0] : null; + + return NextResponse.json({ + sessionId: id, + filePath, + info, + leafId, + tree, + context, + stats, + totalActiveMs, + ...(toolNames !== undefined ? { toolNames } : {}), + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} + +// PATCH /api/sessions/[id] body: { name: string } +export async function PATCH( + req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + try { + const { name } = await req.json() as { name?: string }; + if (typeof name !== "string") { + return NextResponse.json({ error: "name is required" }, { status: 400 }); + } + const filePath = await resolveSessionPath(id); + if (!filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + const sm = SessionManager.open(filePath); + sm.appendSessionInfo(name.trim()); + invalidateSessionListCache(); + return NextResponse.json({ ok: true }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} + +// DELETE /api/sessions/[id] +export async function DELETE( + _req: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + try { + const filePath = await resolveSessionPath(id); + if (!filePath) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + + // Read only the bounded header before deleting. + const parentSessionPath = readSessionHeader(filePath)?.parentSession; + const parentSessionId = parentSessionPath + ? readSessionHeader(parentSessionPath)?.id + : undefined; + + // Re-attach all direct children to this session's parent (cascade re-parent) + // Scan sibling files in the same directory + const targetPathKey = sessionPathKey(filePath); + const dir = dirname(filePath); + try { + const files = readdirSync(dir).filter( + (file) => file.endsWith(".jsonl") && sessionPathKey(join(dir, file)) !== targetPathKey, + ); + for (const file of files) { + const childPath = join(dir, file); + try { + const content = readFileSync(childPath, "utf8"); + const lines = content.split("\n"); + const header = JSON.parse(lines[0]) as { type?: string; parentSession?: string }; + if ( + header.type === "session" && + header.parentSession && + sessionPathKey(header.parentSession) === targetPathKey + ) { + // Rewrite header with new parentSession + header.parentSession = parentSessionPath; + lines[0] = JSON.stringify(header); + if (parentSessionPath && parentSessionId) { + for (let index = 1; index < lines.length; index += 1) { + let entry: { type?: string; customType?: string; data?: unknown }; + try { + entry = JSON.parse(lines[index]); + } catch { + continue; + } + if ( + entry.type !== "custom" + || entry.customType !== SUBAGENT_META_TYPE + || typeof entry.data !== "object" + || entry.data === null + || Array.isArray(entry.data) + ) continue; + entry.data = { + ...entry.data, + parentSessionId, + parentSessionPath, + }; + lines[index] = JSON.stringify(entry); + break; + } + } + writeFileSync(childPath, lines.join("\n")); + } + } catch { /* skip malformed */ } + } + } catch { /* skip if dir unreadable */ } + + await getRpcSession(id)?.shutdown(); + unlinkSync(filePath); + invalidateSessionPathCache(id); + invalidateSessionListCache(); + return NextResponse.json({ ok: true }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/[id]/state/route.ts b/app/api/sessions/[id]/state/route.ts new file mode 100644 index 000000000..d2792404b --- /dev/null +++ b/app/api/sessions/[id]/state/route.ts @@ -0,0 +1,24 @@ +import { NextResponse } from "next/server"; +import { getRpcSession } from "@/lib/rpc-manager"; +import { resolveSessionPath } from "@/lib/session-reader"; + +export async function GET( + _req: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + try { + const rpc = getRpcSession(id); + if (rpc?.isAlive()) { + const state = await rpc.send({ type: "get_state" }); + return NextResponse.json({ running: true, state }); + } + + if (!await resolveSessionPath(id)) { + return NextResponse.json({ error: "Session not found" }, { status: 404 }); + } + return NextResponse.json({ running: false }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} diff --git a/app/api/sessions/context-route.test.mjs b/app/api/sessions/context-route.test.mjs new file mode 100644 index 000000000..c637b422d --- /dev/null +++ b/app/api/sessions/context-route.test.mjs @@ -0,0 +1,46 @@ +// Static + behavior coverage for the context pagination API (the #555 transfer fix): +// ?tail bounds the returned chain, ?before rewinds the walk and excludes its own +// boundary so prepending the page never duplicates it. Data behavior is covered +// end-to-end in lib/session-reader.pagination.test.mjs; here we assert the route wires +// the params through to buildSessionContext (excludeLeaf on ?before). +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import test from "node:test"; +import { createJiti } from "jiti"; + +const routeSrc = await readFileSync(new URL("./[id]/context/route.ts", import.meta.url), "utf8"); +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { buildSessionContext } = await jiti.import("@/lib/session-reader"); + +test("context route parses ?tail and ?before, excluding the boundary on paging", () => { + assert.match(routeSrc, /const tail = Number\.isFinite\(rawTail\) && rawTail > 0 \? Math\.min\(rawTail, 1000\) : 50/); + assert.match(routeSrc, /const before = url\.searchParams\.get\("before"\)/); + assert.match(routeSrc, /buildSessionContext\(sm\.getEntries\(\) as never, before \?\? leafId, \{[^}]*excludeLeaf: Boolean\(before\)/); +}); + +test("context route: ?before pages upward without duplicating the boundary", () => { + const entries = []; + for (let i = 0; i < 100; i++) { + entries.push({ id: `e${i}`, parentId: i === 0 ? null : `e${i - 1}`, type: "message", timestamp: new Date(1000 + i * 1000).toISOString(), message: { role: "user", content: `m${i}` } }); + } + const page1 = buildSessionContext(entries, "e99", { tail: 5 }).entryIds; + assert.deepEqual(page1, ["e95", "e96", "e97", "e98", "e99"]); + const oldest = page1[0]; // e95 + const page2 = buildSessionContext(entries, oldest, { tail: 5, excludeLeaf: true }).entryIds; + assert.equal(page2[page2.length - 1], "e94"); + assert.ok(!page2.includes(oldest), "boundary `before` must not be duplicated"); + assert.ok(page1.every((id) => !page2.includes(id)), "adjacent pages share no entry"); +}); + +test("context route data reports when pagination reaches the root", () => { + const entries = [ + { id: "e0", parentId: null, type: "message", timestamp: new Date(1000).toISOString(), message: { role: "user", content: "root" } }, + ]; + const page = buildSessionContext(entries, "e0", { tail: 50, excludeLeaf: true }); + assert.deepEqual(page.entryIds, []); + assert.equal(page.hasMore, false); +}); diff --git a/app/api/sessions/detail-route.test.mjs b/app/api/sessions/detail-route.test.mjs new file mode 100644 index 000000000..2507e6eab --- /dev/null +++ b/app/api/sessions/detail-route.test.mjs @@ -0,0 +1,54 @@ +// Static + behavior coverage for the session detail API's tail bound (the #509/#555 +// transfer fix). Mirrors runtime-route.test.mjs: source assertions confirm the route +// parses ?tail (default 50, NaN-safe, capped at 1000) and feeds only the sliced chain +// to buildSessionContext. The data-slicing behavior itself is covered end-to-end in +// lib/session-reader.pagination.test.mjs (sliceActiveBranch + buildSessionContext). +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import test from "node:test"; +import { createJiti } from "jiti"; + +const routeSrc = await readFileSync(new URL("./[id]/route.ts", import.meta.url), "utf8"); +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { buildSessionContext } = await jiti.import("@/lib/session-reader"); + +test("detail route parses ?tail: default 50, NaN-safe, capped at 1000", () => { + assert.match(routeSrc, /const rawTail = Number\(searchParams\.get\("tail"\)\)/); + assert.match(routeSrc, /Math\.min\(rawTail, 1000\)/); + assert.match(routeSrc, /Number\.isFinite\(rawTail\) && rawTail > 0 \? Math\.min\(rawTail, 1000\) : 50/); + assert.match(routeSrc, /buildSessionContext\(entries as never, leafId, \{[^}]*tail,[^}]*sessionId: id[^}]*\}\)/); + assert.match(routeSrc, /computeSessionStats\(entries as unknown as SessionEntry\[\]\)/); + assert.match(routeSrc, /messageCount: stats\.totalMessages/); + assert.match(routeSrc, /stats,/); +}); + +test("detail route bounds history to the tail window (default 50 over 5000 entries)", () => { + const entries = []; + for (let i = 0; i < 5000; i++) { + entries.push({ + id: `e${i}`, + parentId: i === 0 ? null : `e${i - 1}`, + type: "message", + timestamp: new Date(1000 + i * 1000).toISOString(), + message: { role: i % 2 === 0 ? "user" : "assistant", content: `m${i}` }, + }); + } + const ctx = buildSessionContext(entries, "e4999", { tail: 50 }); + assert.equal(ctx.messages.length, 50); + // The transferred window is the tail, not the full 5000-entry forest. + assert.equal(ctx.entryIds[0], "e4950"); + assert.equal(ctx.entryIds[ctx.entryIds.length - 1], "e4999"); +}); + +test("detail route with an out-of-range tail still caps at 1000", () => { + const entries = []; + for (let i = 0; i < 5000; i++) { + entries.push({ id: `e${i}`, parentId: i === 0 ? null : `e${i - 1}`, type: "message", timestamp: new Date(1000 + i * 1000).toISOString(), message: { role: "user", content: `m${i}` } }); + } + const ctx = buildSessionContext(entries, "e4999", { tail: 5000 }); + assert.equal(ctx.messages.length, 5000); +}); diff --git a/app/api/sessions/route.ts b/app/api/sessions/route.ts new file mode 100644 index 000000000..bdc70cbba --- /dev/null +++ b/app/api/sessions/route.ts @@ -0,0 +1,37 @@ +import { NextResponse } from "next/server"; +import { + attachSessionProjectInfo, + listAllSessions, + mergeSessionLists, +} from "@/lib/session-reader"; +import { + getCompletionNotificationSuppressedRpcSessionIds, + getRpcSessionInfos, + getRunningRpcSessionIds, +} from "@/lib/rpc-manager"; + +export const dynamic = "force-dynamic"; + +export async function GET(req: Request) { + try { + const force = new URL(req.url).searchParams.get("force") === "1"; + const [persistedSessions, runtimeSessions] = await Promise.all([ + listAllSessions({ force }), + attachSessionProjectInfo(getRpcSessionInfos()), + ]); + const sessions = mergeSessionLists(persistedSessions, runtimeSessions); + return NextResponse.json( + { + sessions, + runningSessionIds: getRunningRpcSessionIds(), + completionNotificationSuppressedSessionIds: getCompletionNotificationSuppressedRpcSessionIds(), + }, + { headers: { "Cache-Control": "no-store" } }, + ); + } catch (error) { + return NextResponse.json( + { error: String(error) }, + { status: 500, headers: { "Cache-Control": "no-store" } }, + ); + } +} diff --git a/app/api/sessions/runtime-route.test.mjs b/app/api/sessions/runtime-route.test.mjs new file mode 100644 index 000000000..0be4e9a94 --- /dev/null +++ b/app/api/sessions/runtime-route.test.mjs @@ -0,0 +1,161 @@ +import assert from "node:assert/strict"; +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import test from "node:test"; +import { createJiti } from "jiti"; + +const listRoute = await readFile(new URL("./route.ts", import.meta.url), "utf8"); +const detailRoute = await readFile(new URL("./[id]/route.ts", import.meta.url), "utf8"); +const contextRoute = await readFile(new URL("./[id]/context/route.ts", import.meta.url), "utf8"); +const stateRoute = await readFile(new URL("./[id]/state/route.ts", import.meta.url), "utf8"); +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { DELETE: deleteSession, GET: getSessionDetail } = await jiti.import("./[id]/route.ts"); +const { GET: getSessionState } = await jiti.import("./[id]/state/route.ts"); +const { + cacheSessionPath, + invalidateSessionPathCache, +} = await jiti.import("../../../lib/session-reader.ts"); + +test("session listing merges live registry snapshots and honors force refresh", () => { + assert.match(listRoute, /searchParams\.get\("force"\) === "1"/); + assert.match(listRoute, /listAllSessions\(\{ force \}\)/); + assert.match(listRoute, /attachSessionProjectInfo\(getRpcSessionInfos\(\)\)/); + assert.match(listRoute, /mergeSessionLists\(persistedSessions, runtimeSessions\)/); + assert.match(listRoute, /"Cache-Control": "no-store"/); +}); + +test("session reads use the live SessionManager before requiring a JSONL path", () => { + for (const source of [detailRoute, contextRoute]) { + const liveLookup = source.indexOf("getRpcSession(id)"); + const pathLookup = source.indexOf("resolveSessionPath(id)"); + assert.ok(liveLookup >= 0); + assert.ok(pathLookup > liveLookup); + assert.match(source, /liveRpc\?\.inner\.sessionManager \?\? SessionManager\.open/); + } +}); + +test("live agent state is available before the session file is persisted", () => { + const liveLookup = stateRoute.indexOf("getRpcSession(id)"); + const pathLookup = stateRoute.indexOf("resolveSessionPath(id)"); + assert.ok(liveLookup >= 0); + assert.ok(pathLookup > liveLookup); + assert.match(stateRoute, /if \(rpc\?\.isAlive\(\)\)/); +}); + +test("deleting an intermediate subagent reparents both relation representations", async (t) => { + const dir = await mkdtemp(join(tmpdir(), "pi-web-delete-reparent-")); + const grandparentPath = join(dir, "grandparent.jsonl"); + const parentPath = join(dir, "parent.jsonl"); + const childPath = join(dir, "child.jsonl"); + const parentId = "delete-reparent-parent"; + const header = (id, parentSession) => JSON.stringify({ + type: "session", + version: 3, + id, + timestamp: "2026-01-01T00:00:00.000Z", + cwd: dir, + ...(parentSession ? { parentSession } : {}), + }); + await writeFile(grandparentPath, `${header("delete-reparent-grandparent")}\n`); + await writeFile(parentPath, `${header(parentId, grandparentPath)}\n`); + await writeFile(childPath, [ + header("delete-reparent-child", parentPath), + JSON.stringify({ + type: "custom", + customType: "pi-web:subagent", + id: "meta", + parentId: null, + timestamp: "2026-01-01T00:00:00.000Z", + data: { + version: 1, + parentSessionId: parentId, + parentSessionPath: parentPath, + profile: "Explore", + description: "Inspect parser", + }, + }), + "", + ].join("\n")); + cacheSessionPath(parentId, parentPath); + t.after(async () => { + invalidateSessionPathCache(parentId); + await rm(dir, { recursive: true, force: true }); + }); + + const response = await deleteSession( + new Request(`http://localhost/api/sessions/${parentId}`, { method: "DELETE" }), + { params: Promise.resolve({ id: parentId }) }, + ); + + assert.equal(response.status, 200); + await assert.rejects(readFile(parentPath), { code: "ENOENT" }); + const [childHeaderLine, childMetadataLine] = (await readFile(childPath, "utf8")).trim().split("\n"); + assert.equal(JSON.parse(childHeaderLine).parentSession, grandparentPath); + assert.deepEqual(JSON.parse(childMetadataLine).data, { + version: 1, + parentSessionId: "delete-reparent-grandparent", + parentSessionPath: grandparentPath, + profile: "Explore", + description: "Inspect parser", + }); +}); + +test("live detail and state routes work without a persisted JSONL file", async (t) => { + const previousRegistry = globalThis.__piSessions; + const id = "live-route-test"; + const timestamp = "2026-08-12T01:02:03.000Z"; + const entry = { + type: "message", + id: "u1", + parentId: null, + timestamp, + message: { role: "user", content: "hello live" }, + }; + const sessionManager = { + getHeader: () => ({ type: "session", id, cwd: "/tmp", timestamp }), + getEntries: () => [entry], + getLeafId: () => entry.id, + getTree: () => [], + getSessionName: () => undefined, + getSessionFile: () => `/tmp/pi-web-live-route-not-persisted-${process.pid}.jsonl`, + }; + globalThis.__piSessions = new Map([[id, { + isAlive: () => true, + isRunning: () => true, + inner: { sessionManager }, + sessionFile: sessionManager.getSessionFile(), + sessionId: id, + cwd: "/tmp", + send: async () => ({ isStreaming: true }), + }]]); + t.after(() => { + globalThis.__piSessions = previousRegistry; + }); + + const routeContext = { params: Promise.resolve({ id }) }; + const detailResponse = await getSessionDetail( + new Request(`http://localhost/api/sessions/${id}`), + routeContext, + ); + const stateResponse = await getSessionState( + new Request(`http://localhost/api/sessions/${id}/state`), + routeContext, + ); + const detail = await detailResponse.json(); + + assert.equal(detailResponse.status, 200); + assert.equal(detail.info.transient, true); + assert.equal(detail.info.projectRoot, "/tmp"); + assert.equal(typeof detail.info.projectKey, "string"); + assert.deepEqual(detail.context.messages.map((message) => message.content), ["hello live"]); + assert.equal(stateResponse.status, 200); + assert.deepEqual(await stateResponse.json(), { + running: true, + state: { isStreaming: true }, + }); +}); diff --git a/app/api/skills/check/route.ts b/app/api/skills/check/route.ts new file mode 100644 index 000000000..4f1da156d --- /dev/null +++ b/app/api/skills/check/route.ts @@ -0,0 +1,51 @@ +import { NextResponse } from "next/server"; +import type { SkillInstallScope } from "@/lib/api-types"; +import { checkSkillUpdates } from "@/lib/skill-updates"; +import { loadSkillsWithInstallInfo } from "@/lib/skills-service"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; + +export const dynamic = "force-dynamic"; + +export async function POST(req: Request) { + try { + const body = await req.json() as { + cwd?: unknown; + package?: unknown; + scope?: unknown; + }; + const cwd = typeof body.cwd === "string" ? body.cwd : ""; + if (!cwd) return NextResponse.json({ error: "cwd required" }, { status: 400 }); + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + const pkg = typeof body.package === "string" ? body.package : undefined; + const scope = body.scope === "global" || body.scope === "project" + ? body.scope as SkillInstallScope + : undefined; + if ((pkg && !scope) || (!pkg && scope)) { + return NextResponse.json({ error: "package and scope must be provided together" }, { status: 400 }); + } + + const { skills } = await loadSkillsWithInstallInfo(cwd); + const installs = skills + .map((skill) => skill.install) + .filter((install): install is NonNullable => Boolean(install)) + .filter((install) => !pkg || (install.package === pkg && install.scope === scope)); + + if (pkg && installs.length === 0) { + return NextResponse.json({ error: "Installed skill not found" }, { status: 404 }); + } + + const updates = await checkSkillUpdates(installs, { + githubToken: process.env.GITHUB_TOKEN || process.env.GH_TOKEN, + }); + return NextResponse.json({ updates }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/skills/install/route.ts b/app/api/skills/install/route.ts new file mode 100644 index 000000000..7803b4606 --- /dev/null +++ b/app/api/skills/install/route.ts @@ -0,0 +1,60 @@ +import { NextResponse } from "next/server"; +import { getAgentDir } from "@earendil-works/pi-coding-agent"; +import { runNpx } from "@/lib/npx"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; +import { hasJsonContentType, isApiRequestAllowed } from "@/lib/request-security"; +import { getProjectTrustStatus } from "@/lib/project-trust"; + +export const dynamic = "force-dynamic"; + +const ANSI_RE = /\x1B\[[0-9;]*m/g; + +// POST /api/skills/install body: { package: string; scope: "global" | "project"; cwd?: string } +export async function POST(req: Request) { + if (!isApiRequestAllowed(req)) { + return NextResponse.json({ error: "Untrusted API request" }, { status: 403 }); + } + if (!hasJsonContentType(req)) { + return NextResponse.json({ error: "Content-Type must be application/json" }, { status: 415 }); + } + + try { + const { package: pkg, scope, cwd } = await req.json() as { package?: string; scope?: string; cwd?: string }; + if (!pkg?.trim()) return NextResponse.json({ error: "package required" }, { status: 400 }); + + const isGlobal = scope !== "project"; + if (!isGlobal) { + if (!cwd) return NextResponse.json({ error: "cwd required for project install" }, { status: 400 }); + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + if (!getProjectTrustStatus(cwd, getAgentDir()).trusted) { + return NextResponse.json( + { error: "Project resources must be trusted before installing project skills" }, + { status: 403 }, + ); + } + } + const args = ["skills", "add", pkg.trim(), "-y", "--agent", "pi"]; + if (isGlobal) args.push("-g"); + + console.log(`[skills/install] running: npx ${args.join(" ")}`); + const { stdout, stderr } = await runNpx(args, { + timeout: 60000, + cwd: !isGlobal && cwd ? cwd : undefined, + env: { ...process.env, FORCE_COLOR: "0" }, + }); + + const output = (stdout + stderr).replace(ANSI_RE, ""); + const success = /Installation complete|Installed \d+ skill/.test(output); + if (!success) { + return NextResponse.json({ error: output.slice(-300) || "Install failed" }, { status: 500 }); + } + return NextResponse.json({ success: true, output }); + } catch (e: unknown) { + const err = e as { stdout?: string; stderr?: string; message?: string }; + const output = ((err.stdout ?? "") + (err.stderr ?? "")).replace(ANSI_RE, ""); + return NextResponse.json({ error: output || (err.message ?? String(e)) }, { status: 500 }); + } +} diff --git a/app/api/skills/route.ts b/app/api/skills/route.ts new file mode 100644 index 000000000..291be3ba6 --- /dev/null +++ b/app/api/skills/route.ts @@ -0,0 +1,57 @@ +import { NextResponse } from "next/server"; +import { existsSync, readFileSync, writeFileSync } from "fs"; +import { homedir } from "os"; +import path from "path"; +import { getAgentDir } from "@earendil-works/pi-coding-agent"; +import { loadSkillsWithInstallInfo } from "@/lib/skills-service"; +import { setDisableModelInvocation } from "@/lib/skill-frontmatter"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; + +export const dynamic = "force-dynamic"; + +// GET /api/skills?cwd= +// Uses DefaultResourceLoader (same logic as AgentSession startup) so settings.json +// skill paths, package skills, and .agents/skills directories are all included. +export async function GET(req: Request) { + const { searchParams } = new URL(req.url); + const cwd = searchParams.get("cwd"); + if (!cwd) return NextResponse.json({ error: "cwd required" }, { status: 400 }); + + try { + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + return NextResponse.json(await loadSkillsWithInstallInfo(cwd)); + } catch (e) { + return NextResponse.json({ error: String(e) }, { status: 500 }); + } +} + +// PATCH /api/skills — toggle disable-model-invocation on a SKILL.md file +export async function PATCH(req: Request) { + try { + const body = await req.json() as { filePath: string; disableModelInvocation: boolean }; + const { filePath, disableModelInvocation } = body; + if (!filePath) return NextResponse.json({ error: "filePath required" }, { status: 400 }); + if (!existsSync(filePath)) return NextResponse.json({ error: "file not found" }, { status: 404 }); + const allowedRoots = new Set(await getAllowedFileRoots()); + allowedRoots.add(getAgentDir()); + // Globally installed skills live in ~/.agents/skills and are symlinked into + // the agent's skills dir; isExistingFilePathAllowed resolves the symlink, so + // the real target sits outside getAgentDir(). Allow the global skills root + // too (the SDK always treats ~/.agents/skills as trusted). + const globalSkillsDir = path.join(homedir(), ".agents", "skills"); + if (existsSync(globalSkillsDir)) allowedRoots.add(globalSkillsDir); + if (!isExistingFilePathAllowed(filePath, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + const content = readFileSync(filePath, "utf8"); + const updated = setDisableModelInvocation(content, disableModelInvocation); + writeFileSync(filePath, updated, "utf8"); + return NextResponse.json({ success: true }); + } catch (e) { + return NextResponse.json({ error: String(e) }, { status: 500 }); + } +} diff --git a/app/api/skills/search/route.ts b/app/api/skills/search/route.ts new file mode 100644 index 000000000..6bce20a45 --- /dev/null +++ b/app/api/skills/search/route.ts @@ -0,0 +1,116 @@ +import { NextResponse } from "next/server"; +import { runNpx } from "@/lib/npx"; +import type { SkillSearchResult } from "@/lib/api-types"; + +export const dynamic = "force-dynamic"; + +const ANSI_RE = /\x1B\[[0-9;]*m/g; +const DEFAULT_LIMIT = 50; +const MIN_LIMIT = 1; +const MAX_LIMIT = 50; +const SEARCH_API_BASE = process.env.SKILLS_API_URL || "https://skills.sh"; + +interface SkillsApiSkill { + id?: string; + name?: string; + source?: string; + installs?: number; +} + +interface SkillsApiResponse { + skills?: SkillsApiSkill[]; +} + +function parseLimit(value: unknown): number { + const num = typeof value === "number" ? value : Number(value); + if (!Number.isFinite(num)) return DEFAULT_LIMIT; + return Math.min(MAX_LIMIT, Math.max(MIN_LIMIT, Math.floor(num))); +} + +function formatInstalls(count?: number): string { + if (!count || count <= 0) return ""; + if (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1).replace(/\.0$/, "")}M installs`; + if (count >= 1_000) return `${(count / 1_000).toFixed(1).replace(/\.0$/, "")}K installs`; + return `${count} install${count === 1 ? "" : "s"}`; +} + +function parseSearchOutput(raw: string): SkillSearchResult[] { + const clean = raw.replace(ANSI_RE, ""); + const results: SkillSearchResult[] = []; + const lines = clean.split("\n"); + for (let i = 0; i < lines.length; i++) { + const line = lines[i].trim(); + // package line: "owner/repo@skill NNK installs" + const pkgMatch = line.match(/^([\w.\-]+\/[\w.\-@:]+)\s+([\d.,]+[KMB]?\s+installs)$/); + if (pkgMatch) { + const urlLine = lines[i + 1]?.trim().replace(/^└\s*/, ""); + results.push({ + package: pkgMatch[1], + installs: pkgMatch[2], + url: urlLine?.startsWith("https://") ? urlLine : "", + }); + } + } + return results; +} + +async function searchSkillsApi(query: string, limit: number): Promise { + const url = `${SEARCH_API_BASE}/api/search?q=${encodeURIComponent(query)}&limit=${limit}`; + const res = await fetch(url, { cache: "no-store" }); + if (!res.ok) throw new Error(`skills.sh search failed: HTTP ${res.status}`); + + const data = (await res.json()) as SkillsApiResponse; + return (data.skills ?? []) + .map((skill) => { + const name = skill.name?.trim(); + const source = skill.source?.trim(); + const slug = skill.id?.trim(); + if (!name || (!source && !slug)) return null; + + const pkg = `${source || slug}@${name}`; + return { + package: pkg, + installs: formatInstalls(skill.installs), + url: slug ? `${SEARCH_API_BASE}/${slug}` : "", + }; + }) + .filter((skill): skill is SkillSearchResult => skill !== null) + .sort((a, b) => parseInstallCount(b.installs) - parseInstallCount(a.installs)); +} + +function parseInstallCount(installs: string): number { + const match = installs.match(/^([\d.]+)([KMB])?\s+installs?$/); + if (!match) return 0; + const value = Number(match[1]); + if (!Number.isFinite(value)) return 0; + const multiplier = match[2] === "B" ? 1_000_000_000 : match[2] === "M" ? 1_000_000 : match[2] === "K" ? 1_000 : 1; + return value * multiplier; +} + +// POST /api/skills/search body: { query: string, limit?: number } +export async function POST(req: Request) { + try { + const { query, limit: rawLimit } = await req.json() as { query?: string; limit?: unknown }; + if (!query?.trim()) return NextResponse.json({ error: "query required" }, { status: 400 }); + const limit = parseLimit(rawLimit); + + try { + const results = await searchSkillsApi(query.trim(), limit); + return NextResponse.json({ results }); + } catch { + const { stdout, stderr } = await runNpx(["skills", "find", query.trim()], { + timeout: 20000, + env: { ...process.env, FORCE_COLOR: "0" }, + }); + + const results = parseSearchOutput(stdout + stderr).slice(0, limit); + return NextResponse.json({ results }); + } + } catch (e: unknown) { + const err = e as { stdout?: string; stderr?: string; message?: string }; + const raw = (err.stdout ?? "") + (err.stderr ?? ""); + const results = raw ? parseSearchOutput(raw) : []; + if (results.length > 0) return NextResponse.json({ results }); + return NextResponse.json({ error: err.message ?? String(e) }, { status: 500 }); + } +} diff --git a/app/api/skills/update/route.ts b/app/api/skills/update/route.ts new file mode 100644 index 000000000..e304b0a36 --- /dev/null +++ b/app/api/skills/update/route.ts @@ -0,0 +1,64 @@ +import { NextResponse } from "next/server"; +import { runNpx } from "@/lib/npx"; +import type { SkillInstallScope } from "@/lib/api-types"; +import { buildSkillUpdateArgs } from "@/lib/skill-updates"; +import { loadSkillsWithInstallInfo } from "@/lib/skills-service"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; + +export const dynamic = "force-dynamic"; + +export async function POST(req: Request) { + try { + const body = await req.json() as { + cwd?: unknown; + package?: unknown; + scope?: unknown; + }; + const cwd = typeof body.cwd === "string" ? body.cwd : ""; + const pkg = typeof body.package === "string" ? body.package : ""; + const scope = body.scope === "global" || body.scope === "project" + ? body.scope as SkillInstallScope + : undefined; + if (!cwd || !pkg || !scope) { + return NextResponse.json({ error: "cwd, package, and scope are required" }, { status: 400 }); + } + const allowedRoots = await getAllowedFileRoots(); + if (!isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + + const { skills } = await loadSkillsWithInstallInfo(cwd); + const skill = skills.find( + (item) => item.install?.package === pkg && item.install.scope === scope, + ); + if (!skill?.install) { + return NextResponse.json({ error: "Installed skill not found" }, { status: 404 }); + } + if (!skill.install.canCheckForUpdates) { + return NextResponse.json({ error: "This skill cannot be updated automatically" }, { status: 400 }); + } + + const { stdout, stderr } = await runNpx(buildSkillUpdateArgs(skill.install), { + timeout: 60_000, + cwd: scope === "project" ? cwd : undefined, + env: { ...process.env, FORCE_COLOR: "0" }, + }); + + const refreshed = await loadSkillsWithInstallInfo(cwd); + const updatedSkill = refreshed.skills.find( + (item) => item.install?.package === pkg && item.install.scope === scope, + ); + return NextResponse.json({ + success: true, + skill: updatedSkill, + output: `${stdout}${stderr}`.slice(-500), + }); + } catch (error: unknown) { + const detail = error as { stdout?: string; stderr?: string; message?: string }; + const output = `${detail.stdout ?? ""}${detail.stderr ?? ""}`; + return NextResponse.json( + { error: output || detail.message || String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/subagents/[id]/route.ts b/app/api/subagents/[id]/route.ts new file mode 100644 index 000000000..86757857d --- /dev/null +++ b/app/api/subagents/[id]/route.ts @@ -0,0 +1,42 @@ +import { NextResponse } from "next/server"; +import { abortSubagent, getSubagentRun, steerSubagent } from "@/lib/rpc-manager"; + +export const dynamic = "force-dynamic"; + +export async function GET( + _req: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + try { + const run = await getSubagentRun(id); + if (!run) return NextResponse.json({ error: "Subagent not found" }, { status: 404 }); + return NextResponse.json({ run }); + } catch (error) { + return NextResponse.json({ error: error instanceof Error ? error.message : String(error) }, { status: 500 }); + } +} + +export async function POST( + req: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + try { + const body = await req.json() as { action?: unknown; message?: unknown }; + if (body.action === "steer") { + if (typeof body.message !== "string" || !body.message.trim()) { + return NextResponse.json({ error: "message required" }, { status: 400 }); + } + await steerSubagent(id, body.message); + } else if (body.action === "abort") { + await abortSubagent(id); + } else { + return NextResponse.json({ error: "action must be steer or abort" }, { status: 400 }); + } + return NextResponse.json({ ok: true, run: await getSubagentRun(id) }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: message.includes("not running") ? 409 : 500 }); + } +} diff --git a/app/api/subagents/profiles/route.test.mjs b/app/api/subagents/profiles/route.test.mjs new file mode 100644 index 000000000..afa1db8f0 --- /dev/null +++ b/app/api/subagents/profiles/route.test.mjs @@ -0,0 +1,179 @@ +import assert from "node:assert/strict"; +import { mkdtemp, readFile, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import test, { after } from "node:test"; +import { createJiti } from "jiti"; + +const originalAgentDir = process.env.PI_CODING_AGENT_DIR; +const testAgentDir = await mkdtemp(join(tmpdir(), "pi-web-subagent-route-global-")); +process.env.PI_CODING_AGENT_DIR = testAgentDir; + +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { GET, PUT, PATCH, DELETE } = await jiti.import("./route.ts"); +const { allowFileRoot } = await jiti.import("../../../../lib/file-access.ts"); + +after(async () => { + if (originalAgentDir === undefined) delete process.env.PI_CODING_AGENT_DIR; + else process.env.PI_CODING_AGENT_DIR = originalAgentDir; + await rm(testAgentDir, { recursive: true, force: true }); +}); + +function profile(overrides = {}) { + return { + name: "api-test-agent", + displayName: "API test agent", + description: "Used by route tests", + systemPrompt: "Return a concise result.", + tools: [], + loadSkills: true, + loadExtensions: true, + inheritContext: false, + runInBackground: true, + enabled: true, + ...overrides, + }; +} + +function jsonRequest(method, body) { + return new Request("http://localhost/api/subagents/profiles", { + method, + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); +} + +test("profiles route creates, lists, and deletes a project profile", async (t) => { + const cwd = await mkdtemp(join(tmpdir(), "pi-web-subagent-route-")); + allowFileRoot(cwd); + t.after(() => rm(cwd, { recursive: true, force: true })); + + const putResponse = await PUT(jsonRequest("PUT", { cwd, scope: "project", profile: profile() })); + const putBody = await putResponse.json(); + assert.equal(putResponse.status, 200); + assert.equal(putBody.profile.scope, "project"); + assert.deepEqual(putBody.profile.tools, []); + assert.equal(putBody.profile.loadSkills, true); + assert.equal(putBody.profile.loadExtensions, true); + const source = await readFile(join(cwd, ".pi", "agents", "api-test-agent.md"), "utf8"); + assert.match(source, /tools: none/); + assert.match(source, /load_skills: true/); + assert.match(source, /load_extensions: true/); + + const getResponse = await GET(new Request(`http://localhost/api/subagents/profiles?cwd=${encodeURIComponent(cwd)}`)); + const getBody = await getResponse.json(); + assert.equal(getResponse.status, 200); + const listedProfile = getBody.profiles.find((item) => item.name === "api-test-agent"); + assert.deepEqual(listedProfile.tools, []); + assert.equal(listedProfile.loadSkills, true); + assert.equal(listedProfile.loadExtensions, true); + + const deleteResponse = await DELETE(jsonRequest("DELETE", { cwd, scope: "project", name: "api-test-agent" })); + assert.equal(deleteResponse.status, 200); + assert.deepEqual(await deleteResponse.json(), { ok: true }); + + const afterDelete = await GET(new Request(`http://localhost/api/subagents/profiles?cwd=${encodeURIComponent(cwd)}`)); + const afterDeleteBody = await afterDelete.json(); + assert.equal(afterDeleteBody.profiles.some((item) => item.name === "api-test-agent"), false); +}); + +test("profiles route keeps same-name global and project profiles independently editable", async (t) => { + const cwd = await mkdtemp(join(tmpdir(), "pi-web-subagent-route-")); + allowFileRoot(cwd); + t.after(() => rm(cwd, { recursive: true, force: true })); + + let response = await PUT(jsonRequest("PUT", { + cwd, + scope: "global", + profile: profile({ description: "Global profile" }), + })); + assert.equal(response.status, 200); + assert.equal((await response.json()).profile.scope, "global"); + assert.match(await readFile(join(testAgentDir, "agents", "api-test-agent.md"), "utf8"), /Global profile/); + + response = await PUT(jsonRequest("PUT", { + cwd, + scope: "project", + profile: profile({ description: "Project profile" }), + })); + assert.equal(response.status, 200); + + response = await GET(new Request(`http://localhost/api/subagents/profiles?cwd=${encodeURIComponent(cwd)}`)); + const sources = (await response.json()).profiles + .filter((item) => item.name === "api-test-agent") + .sort((a, b) => a.scope.localeCompare(b.scope)); + assert.deepEqual(sources.map((item) => item.scope), ["global", "project"]); + assert.deepEqual(sources.map((item) => item.description), ["Global profile", "Project profile"]); + + response = await PATCH(jsonRequest("PATCH", { + cwd, + scope: "global", + name: "api-test-agent", + enabled: false, + })); + assert.equal(response.status, 200); + assert.equal((await response.json()).profile.enabled, false); + response = await GET(new Request(`http://localhost/api/subagents/profiles?cwd=${encodeURIComponent(cwd)}`)); + const toggledSources = (await response.json()).profiles.filter((item) => item.name === "api-test-agent"); + assert.equal(toggledSources.find((item) => item.scope === "global").enabled, false); + assert.equal(toggledSources.find((item) => item.scope === "global").description, "Global profile"); + assert.equal(toggledSources.find((item) => item.scope === "global").loadSkills, true); + assert.equal(toggledSources.find((item) => item.scope === "global").loadExtensions, true); + assert.equal(toggledSources.find((item) => item.scope === "project").enabled, true); + + response = await DELETE(jsonRequest("DELETE", { cwd, scope: "project", name: "api-test-agent" })); + assert.equal(response.status, 200); + response = await GET(new Request(`http://localhost/api/subagents/profiles?cwd=${encodeURIComponent(cwd)}`)); + assert.deepEqual( + (await response.json()).profiles.filter((item) => item.name === "api-test-agent").map((item) => item.scope), + ["global"], + ); + + response = await DELETE(jsonRequest("DELETE", { cwd, scope: "global", name: "api-test-agent" })); + assert.equal(response.status, 200); +}); + +test("profiles route rejects missing paths, malformed profiles, and unsafe names", async (t) => { + const cwd = await mkdtemp(join(tmpdir(), "pi-web-subagent-route-")); + allowFileRoot(cwd); + t.after(() => rm(cwd, { recursive: true, force: true })); + + let response = await GET(new Request("http://localhost/api/subagents/profiles")); + assert.equal(response.status, 400); + + response = await PUT(jsonRequest("PUT", { cwd, scope: "project" })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "profile required" }); + + response = await PUT(jsonRequest("PUT", { cwd, scope: "project", profile: profile({ name: "../escape" }) })); + assert.equal(response.status, 400); + assert.match((await response.json()).error, /Agent name may contain only/); + + response = await PUT(jsonRequest("PUT", { cwd, scope: "project", profile: profile({ thinking: "extreme" }) })); + assert.equal(response.status, 400); + assert.match((await response.json()).error, /Invalid thinking level/); + + response = await DELETE(jsonRequest("DELETE", { cwd, scope: "project" })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "name required" }); + + response = await PUT(jsonRequest("PUT", { cwd, scope: "workspace", profile: profile() })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "scope must be global or project" }); + + response = await DELETE(jsonRequest("DELETE", { cwd, scope: "builtin", name: "Explore" })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "scope must be global or project" }); + + response = await PATCH(jsonRequest("PATCH", { cwd, scope: "project", name: "missing", enabled: false })); + assert.equal(response.status, 404); + assert.deepEqual(await response.json(), { error: "Agent profile not found" }); + + response = await PATCH(jsonRequest("PATCH", { cwd, scope: "project", name: "api-test-agent" })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "enabled required" }); +}); diff --git a/app/api/subagents/profiles/route.ts b/app/api/subagents/profiles/route.ts new file mode 100644 index 000000000..a28770ca6 --- /dev/null +++ b/app/api/subagents/profiles/route.ts @@ -0,0 +1,100 @@ +import { NextResponse } from "next/server"; +import { existsSync } from "fs"; +import { getAllowedFileRoots, isExistingFilePathAllowed } from "@/lib/file-access"; +import { + deleteSubagentProfile, + listSubagentProfileSources, + saveSubagentProfile, + type SubagentProfile, + type SubagentWritableScope, +} from "@/lib/subagents"; + +export const dynamic = "force-dynamic"; + +async function validateCwd(cwd: unknown): Promise { + if (typeof cwd !== "string" || !cwd || !existsSync(cwd)) throw new Error("Valid cwd required"); + if (!isExistingFilePathAllowed(cwd, await getAllowedFileRoots())) throw new Error("Access denied"); + return cwd; +} + +function validateScope(scope: unknown): SubagentWritableScope { + if (scope !== "global" && scope !== "project") throw new Error("scope must be global or project"); + return scope; +} + +export async function GET(req: Request) { + try { + const cwd = await validateCwd(new URL(req.url).searchParams.get("cwd")); + return NextResponse.json({ profiles: listSubagentProfileSources(cwd) }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: message === "Access denied" ? 403 : 400 }); + } +} + +export async function PUT(req: Request) { + try { + const body = await req.json() as { + cwd?: unknown; + scope?: unknown; + profile?: Omit; + }; + const cwd = await validateCwd(body.cwd); + const scope = validateScope(body.scope); + if (!body.profile || typeof body.profile.name !== "string") { + return NextResponse.json({ error: "profile required" }, { status: 400 }); + } + return NextResponse.json({ profile: saveSubagentProfile(cwd, scope, body.profile) }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: message === "Access denied" ? 403 : 400 }); + } +} + +export async function PATCH(req: Request) { + try { + const body = await req.json() as { cwd?: unknown; scope?: unknown; name?: unknown; enabled?: unknown }; + const cwd = await validateCwd(body.cwd); + const scope = validateScope(body.scope); + if (typeof body.name !== "string") return NextResponse.json({ error: "name required" }, { status: 400 }); + if (typeof body.enabled !== "boolean") return NextResponse.json({ error: "enabled required" }, { status: 400 }); + const name = body.name; + const source = listSubagentProfileSources(cwd).find((profile) => + profile.scope === scope && profile.name.toLowerCase() === name.toLowerCase() + ); + if (!source) return NextResponse.json({ error: "Agent profile not found" }, { status: 404 }); + const profile: Omit = { + name: source.name, + displayName: source.displayName, + description: source.description, + systemPrompt: source.systemPrompt, + tools: source.tools, + loadSkills: source.loadSkills, + loadExtensions: source.loadExtensions, + model: source.model, + thinking: source.thinking, + maxTurns: source.maxTurns, + inheritContext: source.inheritContext, + runInBackground: source.runInBackground, + enabled: source.enabled, + }; + return NextResponse.json({ profile: saveSubagentProfile(cwd, scope, { ...profile, enabled: body.enabled }) }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: message === "Access denied" ? 403 : 400 }); + } +} + +export async function DELETE(req: Request) { + try { + const body = await req.json() as { cwd?: unknown; scope?: unknown; name?: unknown }; + const cwd = await validateCwd(body.cwd); + const scope = validateScope(body.scope); + if (typeof body.name !== "string") return NextResponse.json({ error: "name required" }, { status: 400 }); + deleteSubagentProfile(cwd, scope, body.name); + return NextResponse.json({ ok: true }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: message === "Access denied" ? 403 : 400 }); + } +} diff --git a/app/api/subagents/runtime-route.test.mjs b/app/api/subagents/runtime-route.test.mjs new file mode 100644 index 000000000..2b04c4aa1 --- /dev/null +++ b/app/api/subagents/runtime-route.test.mjs @@ -0,0 +1,117 @@ +import assert from "node:assert/strict"; +import test from "node:test"; +import { createJiti } from "jiti"; + +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { GET, POST } = await jiti.import("./[id]/route.ts"); + +const id = "subagent-route-test"; +const context = { params: Promise.resolve({ id }) }; + +function request(body) { + return new Request(`http://localhost/api/subagents/${id}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); +} + +function installRunningSubagent(t) { + const previousRegistry = globalThis.__piSessions; + const previousRuns = globalThis.__piSubagentRuns; + let running = true; + const steered = []; + let aborts = 0; + const entries = [{ + type: "custom", + customType: "pi-web:subagent", + id: "meta", + parentId: null, + timestamp: "2026-01-01T00:00:00.000Z", + data: { + version: 1, + parentSessionId: "parent", + parentSessionPath: "/tmp/parent.jsonl", + parentToolCallId: "tool-call", + profile: "Explore", + description: "Inspect", + task: "Inspect files", + runInBackground: true, + createdAt: "2026-01-01T00:00:00.000Z", + }, + }]; + globalThis.__piSubagentRuns = new Map(); + globalThis.__piSessions = new Map([[id, { + isAlive: () => true, + isRunning: () => running, + sessionFile: `/tmp/${id}.jsonl`, + inner: { + sessionManager: { getEntries: () => entries }, + steer: async (message) => { steered.push(message); }, + abort: async () => { aborts += 1; }, + }, + }]]); + t.after(() => { + globalThis.__piSessions = previousRegistry; + globalThis.__piSubagentRuns = previousRuns; + }); + return { + steered, + get aborts() { return aborts; }, + stop() { running = false; }, + }; +} + +test("subagent route reads live state and accepts steer and abort actions", async (t) => { + const state = installRunningSubagent(t); + + const getResponse = await GET(new Request(`http://localhost/api/subagents/${id}`), context); + const getBody = await getResponse.json(); + assert.equal(getResponse.status, 200); + assert.equal(getBody.run.status, "running"); + assert.equal(getBody.run.profile, "Explore"); + + const steerResponse = await POST(request({ action: "steer", message: " focus on tests " }), context); + assert.equal(steerResponse.status, 200); + assert.deepEqual(state.steered, ["focus on tests"]); + + const abortResponse = await POST(request({ action: "abort" }), context); + assert.equal(abortResponse.status, 200); + assert.equal(state.aborts, 1); +}); + +test("subagent route validates actions and rejects commands after completion", async (t) => { + const state = installRunningSubagent(t); + + let response = await POST(request({ action: "steer", message: " " }), context); + assert.equal(response.status, 400); + response = await POST(request({ action: "unknown" }), context); + assert.equal(response.status, 400); + + state.stop(); + response = await POST(request({ action: "abort" }), context); + assert.equal(response.status, 409); + assert.match((await response.json()).error, /not running/); +}); + +test("subagent GET returns 404 for an unknown session", async (t) => { + const previousRegistry = globalThis.__piSessions; + const previousRuns = globalThis.__piSubagentRuns; + globalThis.__piSessions = new Map(); + globalThis.__piSubagentRuns = new Map(); + t.after(() => { + globalThis.__piSessions = previousRegistry; + globalThis.__piSubagentRuns = previousRuns; + }); + + const missingId = `missing-subagent-${Date.now()}`; + const response = await GET( + new Request(`http://localhost/api/subagents/${missingId}`), + { params: Promise.resolve({ id: missingId }) }, + ); + assert.equal(response.status, 404); +}); diff --git a/app/api/subagents/settings/route.test.mjs b/app/api/subagents/settings/route.test.mjs new file mode 100644 index 000000000..6f98c2fd3 --- /dev/null +++ b/app/api/subagents/settings/route.test.mjs @@ -0,0 +1,58 @@ +import assert from "node:assert/strict"; +import { mkdtemp, readFile, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import test, { after } from "node:test"; +import { createJiti } from "jiti"; + +const originalAgentDir = process.env.PI_CODING_AGENT_DIR; +const testAgentDir = await mkdtemp(join(tmpdir(), "pi-web-subagent-settings-route-")); +process.env.PI_CODING_AGENT_DIR = testAgentDir; + +const jiti = createJiti(import.meta.url, { + alias: { "@": process.cwd() }, + interopDefault: true, + moduleCache: false, +}); +const { GET, PUT } = await jiti.import("./route.ts"); + +after(async () => { + if (originalAgentDir === undefined) delete process.env.PI_CODING_AGENT_DIR; + else process.env.PI_CODING_AGENT_DIR = originalAgentDir; + await rm(testAgentDir, { recursive: true, force: true }); +}); + +function request(body, contentType = "application/json") { + return new Request("http://localhost/api/subagents/settings", { + method: "PUT", + headers: { "Content-Type": contentType, Host: "localhost" }, + body: JSON.stringify(body), + }); +} + +test("settings route defaults off and persists both switch states", async () => { + let response = await GET(); + assert.equal(response.status, 200); + assert.deepEqual(await response.json(), { enabled: false }); + + response = await PUT(request({ enabled: true })); + assert.equal(response.status, 200); + assert.deepEqual(await response.json(), { enabled: true }); + assert.deepEqual( + JSON.parse(await readFile(join(testAgentDir, "agents", "settings.json"), "utf8")), + { version: 1, builtInEnabled: true }, + ); + + response = await PUT(request({ enabled: false })); + assert.deepEqual(await response.json(), { enabled: false }); +}); + +test("settings route validates mutations", async () => { + let response = await PUT(request({ enabled: "yes" })); + assert.equal(response.status, 400); + assert.deepEqual(await response.json(), { error: "enabled must be a boolean" }); + + response = await PUT(request({ enabled: true }, "text/plain")); + assert.equal(response.status, 415); + assert.deepEqual(await response.json(), { error: "Content-Type must be application/json" }); +}); diff --git a/app/api/subagents/settings/route.ts b/app/api/subagents/settings/route.ts new file mode 100644 index 000000000..18eee1e92 --- /dev/null +++ b/app/api/subagents/settings/route.ts @@ -0,0 +1,43 @@ +import { NextResponse } from "next/server"; +import { hasJsonContentType, isApiRequestAllowed } from "@/lib/request-security"; +import { + readSubagentSettings, + writeBuiltInSubagentsEnabled, +} from "@/lib/subagent-settings"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + try { + const settings = readSubagentSettings(); + return NextResponse.json({ enabled: settings.builtInEnabled }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} + +export async function PUT(req: Request) { + if (!isApiRequestAllowed(req)) { + return NextResponse.json({ error: "Untrusted API request" }, { status: 403 }); + } + if (!hasJsonContentType(req)) { + return NextResponse.json({ error: "Content-Type must be application/json" }, { status: 415 }); + } + + try { + const body = await req.json() as { enabled?: unknown }; + if (typeof body.enabled !== "boolean") { + return NextResponse.json({ error: "enabled must be a boolean" }, { status: 400 }); + } + const settings = writeBuiltInSubagentsEnabled(body.enabled); + return NextResponse.json({ enabled: settings.builtInEnabled }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/tools/settings/route.ts b/app/api/tools/settings/route.ts new file mode 100644 index 000000000..7c6229080 --- /dev/null +++ b/app/api/tools/settings/route.ts @@ -0,0 +1,50 @@ +import { NextResponse } from "next/server"; +import { hasJsonContentType, isApiRequestAllowed } from "@/lib/request-security"; +import { + readPowerShellToolEnabled, + writePowerShellToolEnabled, +} from "@/lib/powershell-settings"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + try { + return NextResponse.json({ + isWindows: process.platform === "win32", + powerShellEnabled: await readPowerShellToolEnabled(), + }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} + +export async function PUT(req: Request) { + if (!isApiRequestAllowed(req)) { + return NextResponse.json({ error: "Untrusted API request" }, { status: 403 }); + } + if (!hasJsonContentType(req)) { + return NextResponse.json({ error: "Content-Type must be application/json" }, { status: 415 }); + } + if (process.platform !== "win32") { + return NextResponse.json({ error: "PowerShell tool settings are only available on Windows" }, { status: 404 }); + } + + try { + const body = await req.json() as { enabled?: unknown }; + if (typeof body.enabled !== "boolean") { + return NextResponse.json({ error: "enabled must be a boolean" }, { status: 400 }); + } + return NextResponse.json({ + isWindows: true, + powerShellEnabled: await writePowerShellToolEnabled(body.enabled), + }); + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : String(error) }, + { status: 500 }, + ); + } +} diff --git a/app/api/worktrees/route.ts b/app/api/worktrees/route.ts new file mode 100644 index 000000000..f74dff454 --- /dev/null +++ b/app/api/worktrees/route.ts @@ -0,0 +1,102 @@ +import { NextResponse } from "next/server"; +import { existsSync } from "fs"; +import { addWorktree, findCurrentWorktreePath, listWorktrees, removeWorktree, resolveProject } from "@/lib/worktree"; +import { allowFileRoot, getAllowedFileRoots, isExistingFilePathAllowed, isFilePathAllowed } from "@/lib/file-access"; +import { projectIdentityKey } from "@/lib/project-identity"; + +/** Same gate as /api/files: only session cwds / project roots / explicitly + * allowed dirs may be inspected or mutated through this endpoint. */ +async function checkCwdAllowed(cwd: string): Promise { + const allowedRoots = await getAllowedFileRoots(); + if (!isFilePathAllowed(cwd, allowedRoots) || !isExistingFilePathAllowed(cwd, allowedRoots)) { + return NextResponse.json({ error: "Access denied" }, { status: 403 }); + } + return null; +} + +// GET /api/worktrees?cwd= → { projectRoot, projectKey, isGit, isTopLevel, currentWorktreePath, worktrees } +export async function GET(req: Request) { + try { + const cwd = new URL(req.url).searchParams.get("cwd"); + if (!cwd) { + return NextResponse.json({ error: "cwd is required" }, { status: 400 }); + } + const denied = await checkCwdAllowed(cwd); + if (denied) return denied; + + const project = await resolveProject(cwd); + let worktrees: Awaited> = []; + let currentWorktreePath: string | null = null; + let isGit = true; + try { + // For a removed-worktree cwd (session of a deleted worktree), fall back + // to the inferred project root so the switcher still shows the project. + worktrees = await listWorktrees(existsSync(cwd) ? cwd : project.projectRoot); + currentWorktreePath = findCurrentWorktreePath(worktrees, cwd); + } catch { + isGit = false; + } + // Every listed path is a git-verified worktree of this project; allow the + // file explorer to browse them even before they have any session (the + // in-memory allowlist from addWorktree does not survive server restarts). + for (const w of worktrees) allowFileRoot(w.path); + return NextResponse.json({ + projectRoot: project.projectRoot, + projectKey: projectIdentityKey(project.projectRoot), + isGit, + isTopLevel: project.isTopLevel, + currentWorktreePath, + worktrees, + }); + } catch (error) { + return NextResponse.json({ error: String(error) }, { status: 500 }); + } +} + +// POST /api/worktrees body: { cwd, branch } → { path, branch } +export async function POST(req: Request) { + try { + const body = await req.json() as { cwd?: string; branch?: string }; + if (!body.cwd || typeof body.cwd !== "string") { + return NextResponse.json({ error: "cwd is required" }, { status: 400 }); + } + if (!body.branch || typeof body.branch !== "string") { + return NextResponse.json({ error: "branch is required" }, { status: 400 }); + } + const denied = await checkCwdAllowed(body.cwd); + if (denied) return denied; + if (!existsSync(body.cwd)) { + return NextResponse.json({ error: `Directory does not exist: ${body.cwd}` }, { status: 400 }); + } + + const result = await addWorktree(body.cwd, body.branch); + return NextResponse.json(result); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + return NextResponse.json({ error: message }, { status: 400 }); + } +} + +// DELETE /api/worktrees body: { cwd, path, force? } +export async function DELETE(req: Request) { + try { + const body = await req.json() as { cwd?: string; path?: string; force?: boolean }; + if (!body.cwd || typeof body.cwd !== "string") { + return NextResponse.json({ error: "cwd is required" }, { status: 400 }); + } + if (!body.path || typeof body.path !== "string") { + return NextResponse.json({ error: "path is required" }, { status: 400 }); + } + const denied = await checkCwdAllowed(body.cwd); + if (denied) return denied; + + await removeWorktree(body.cwd, body.path, body.force === true); + return NextResponse.json({ success: true }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + // git refuses to remove dirty worktrees without --force; surface that so + // the UI can offer a force-remove confirmation. + const dirty = /contains modified or untracked files|is dirty/i.test(message); + return NextResponse.json({ error: message, dirty }, { status: dirty ? 409 : 400 }); + } +} diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8680e930cf59ecfe978957680ed5d470988c5ac2 GIT binary patch literal 22542 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 li { list-style-type: disc; } +.markdown-body ol > li { list-style-type: decimal; } +.markdown-body li > p { margin: 0; } +.markdown-body li::marker { + color: color-mix(in srgb, var(--accent) 72%, var(--text-muted)); + font-weight: 600; +} +.markdown-body strong { + color: color-mix(in srgb, var(--text) 88%, var(--accent)); + font-weight: 700; +} +.markdown-body em { color: var(--text-muted); } +.markdown-body a { + color: var(--accent); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 3px; + text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent); +} +.markdown-body a:hover { text-decoration-color: var(--accent); } +.markdown-body img { + display: block; + max-width: 100%; + height: auto; + margin: 8px 0; + border-radius: 6px; +} +.markdown-body .markdown-inline-code { + background: var(--bg-subtle); + border-radius: 5px; + padding: 1px 5px; + color: var(--text); + font-family: var(--font-mono); + font-size: 0.92em; + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent); +} +.markdown-body .contains-task-list { + padding-left: 0; + list-style: none; +} +.markdown-body .task-list-item { + display: block; + position: relative; + padding-left: 25px; +} +.markdown-body .task-list-item::marker { content: ""; } +.markdown-body .task-list-item > input[type="checkbox"], +.markdown-body .task-list-item > p:first-child > input[type="checkbox"]:first-child { + appearance: none; + position: absolute; + left: 0; + top: 0.35em; + width: 14px; + height: 14px; + margin: 0; + border: 1px solid var(--border); + border-radius: 4px; + background: var(--bg); + display: inline-grid; + place-content: center; +} +.markdown-body .task-list-item > input[type="checkbox"]:checked, +.markdown-body .task-list-item > p:first-child > input[type="checkbox"]:first-child:checked { + border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); + background: color-mix(in srgb, var(--accent) 10%, var(--bg)); +} +.markdown-body .task-list-item > input[type="checkbox"]:checked::before, +.markdown-body .task-list-item > p:first-child > input[type="checkbox"]:first-child:checked::before { + content: ""; + width: 4px; + height: 8px; + border: solid var(--accent); + border-width: 0 1.5px 1.5px 0; + transform: rotate(45deg) translateY(-1px); +} +.markdown-body blockquote { + border-left: 3px solid color-mix(in srgb, var(--border) 75%, var(--text-muted)); + border-radius: 0 6px 6px 0; + margin: 6px 0; + padding: 6px 11px; + background: var(--bg-subtle); + color: var(--text-muted); +} +.markdown-table-wrap { + width: 100%; + margin: 8px 0; + overflow-x: auto; + overflow-y: hidden; + border: 1px solid var(--border); + border-radius: 7px; +} +.markdown-body table { + border-collapse: separate; + border-spacing: 0; + min-width: 100%; + font-size: 13px; +} +.markdown-body th, .markdown-body td { + border: 0; + border-bottom: 1px solid var(--border); + padding: 6px 10px; + text-align: left; + vertical-align: top; +} +.markdown-body tr:last-child td { border-bottom: 0; } +.markdown-body th { + background: var(--bg-panel); + color: color-mix(in srgb, var(--text) 88%, var(--text-muted)); + font-weight: 650; +} +.markdown-body tbody tr:nth-child(even) td { background: var(--bg-subtle); } +.markdown-body hr { + border: none; + height: 1px; + margin: 12px 0; + background: linear-gradient(90deg, transparent, var(--border), transparent); +} +.markdown-body .katex-display { + margin: 0.6em 0; + overflow-x: auto; + overflow-y: hidden; + padding: 2px 0; +} +.markdown-body .katex { + font-size: 1.05em; +} +.markdown-user-message p { + white-space: pre-wrap; +} + +.markdown-custom-message { + line-height: 1.32; +} +.markdown-custom-message p { margin: 0; } +.markdown-custom-message h1, +.markdown-custom-message h2, +.markdown-custom-message h3, +.markdown-custom-message h4, +.markdown-custom-message h5, +.markdown-custom-message h6 { + margin: 4px 0 2px; + line-height: 1.18; +} +.markdown-custom-message ul, +.markdown-custom-message ol { + margin: 2px 0 3px; +} +.markdown-custom-message li { margin: 0; } +.markdown-custom-message blockquote { + margin: 3px 0; + padding: 4px 8px; +} +.markdown-custom-message .markdown-table-wrap, +.markdown-custom-message .markdown-code-block { + margin: 4px 0; +} + +.markdown-compaction-message { + line-height: 1.5; +} +.markdown-compaction-message p { margin: 0 0 7px; } +.markdown-compaction-message h1, +.markdown-compaction-message h2, +.markdown-compaction-message h3, +.markdown-compaction-message h4, +.markdown-compaction-message h5, +.markdown-compaction-message h6 { + margin: 8px 0 3px; + line-height: 1.25; +} +.markdown-compaction-message ul, +.markdown-compaction-message ol { + margin: 4px 0 8px; +} +.markdown-compaction-message li { margin: 2px 0; } +.markdown-compaction-message .markdown-table-wrap, +.markdown-compaction-message .markdown-code-block { + margin: 6px 0; +} + +.compaction-file-details { + margin-top: 10px; + padding-top: 8px; + border-top: 1px solid var(--border); + color: var(--text-muted); + font-size: 12px; +} +.compaction-file-details summary { + cursor: pointer; + font-weight: 600; + line-height: 1.4; +} +.compaction-file-section { + margin-top: 8px; +} +.compaction-file-title { + margin-bottom: 4px; + color: var(--text); + font-size: 11px; + font-weight: 650; +} +.compaction-file-list { + max-height: 180px; + margin: 0; + padding: 7px 8px; + overflow: auto; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-panel); + font-family: var(--font-mono); + font-size: 11px; + line-height: 1.45; + list-style: none; +} +.compaction-file-list li { + overflow-wrap: anywhere; +} +.compaction-file-list li + li { + margin-top: 3px; +} + +.markdown-code-block { + position: relative; + width: 100%; + min-width: 0; + max-width: 100%; + margin: 6px 0; + border: 1px solid var(--border); + border-radius: 7px; + overflow: hidden; + background: var(--bg); + box-shadow: 0 1px 0 color-mix(in srgb, var(--border) 42%, transparent); +} +.markdown-code-header { + padding: 5px 10px; + background: var(--bg-panel); + border-bottom: 1px solid var(--border); + color: var(--text-dim); + font-size: 11px; + display: flex; + justify-content: space-between; + align-items: center; + gap: 8px; +} +.markdown-code-lang { + color: var(--text-muted); + font-family: var(--font-mono); + font-weight: 650; +} +.markdown-code-actions { + display: flex; + align-items: center; + gap: 6px; +} +.markdown-code-action { + border: 1px solid var(--border); + border-radius: 5px; + padding: 2px 7px; + background: var(--bg); + color: var(--text-muted); + cursor: pointer; + font: inherit; + font-size: 11px; + line-height: 1.25; +} +.markdown-code-action:hover:not(:disabled) { + color: var(--text); + border-color: color-mix(in srgb, var(--border) 70%, var(--text-muted)); +} +.markdown-code-action:disabled { + color: var(--text-dim); + cursor: not-allowed; + opacity: 0.75; +} +.markdown-code-action.is-active { + background: var(--bg-selected); + color: var(--text); +} + +.mermaid-block { + padding: 12px; + overflow-x: auto; + background: color-mix(in srgb, var(--bg) 92%, var(--bg-panel)); +} +.mermaid-block svg { + display: block; + max-width: none; +} +.mermaid-block-loading { + min-height: 120px; +} +.mermaid-block-error { + color: var(--text-muted); + font-family: var(--font-mono); + font-size: 12px; +} + +.mermaid-preview-button { + width: 100%; + border: 0; + color: inherit; + cursor: zoom-in; + text-align: left; +} +.mermaid-preview-button:hover { + opacity: 0.85; +} +.mermaid-preview-button:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -2px; +} + +.image-preview-dialog { + position: fixed; + inset: 0; + width: 100vw; + max-width: none; + height: 100dvh; + max-height: none; + margin: 0; + padding-top: max(16px, env(safe-area-inset-top)); + padding-right: max(16px, env(safe-area-inset-right)); + padding-bottom: max(16px, env(safe-area-inset-bottom)); + padding-left: max(16px, env(safe-area-inset-left)); + overflow: hidden; + border: 0; + background: transparent; + color: var(--text); +} + +.image-preview-dialog[open] { + display: flex; + align-items: center; + justify-content: center; +} + +.image-preview-dialog::backdrop { + background: rgba(0, 0, 0, 0.72); +} + +.image-preview-image { + display: block; + max-width: 100%; + max-height: 100%; + object-fit: contain; + border-radius: 8px; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4); +} + +.image-preview-close { + position: absolute; + top: max(12px, env(safe-area-inset-top)); + right: max(12px, env(safe-area-inset-right)); + z-index: 1; + display: inline-flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + padding: 0; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-panel); + color: var(--text-muted); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.28); + cursor: pointer; + touch-action: manipulation; + transition: background-color 0.12s, color 0.12s; +} + +.image-preview-close:hover { + background: var(--bg-hover); + color: var(--text); +} + +.image-preview-close:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +@media (pointer: coarse) { + .image-preview-close { + width: 44px; + height: 44px; + } +} + +.mermaid-zoom-dialog { + width: 100vw; + max-width: none; + height: 100dvh; + max-height: none; + margin: 0; + padding: 0; + border: 0; + background: var(--bg); + color: var(--text); +} +.mermaid-zoom-dialog::backdrop { + background: rgba(0, 0, 0, 0.35); +} +.mermaid-zoom-layout { + display: grid; + grid-template-rows: auto minmax(0, 1fr); + height: 100%; +} +.mermaid-zoom-toolbar { + display: flex; + align-items: center; + gap: 10px; + min-height: 40px; + padding: 7px 10px; + background: var(--bg-panel); + border-bottom: 1px solid var(--border); +} +.mermaid-zoom-title { + min-width: 0; + overflow: hidden; + color: var(--text-muted); + font-family: var(--font-mono); + font-size: 11px; + font-weight: 600; + text-overflow: ellipsis; + white-space: nowrap; +} +.mermaid-zoom-actions { + display: flex; + align-items: center; + gap: 6px; + margin-left: auto; +} +.mermaid-zoom-stepper { + display: flex; + align-items: center; + height: 24px; + overflow: hidden; + border: 1px solid var(--border); + border-radius: 5px; + background: var(--bg); +} +.mermaid-zoom-stepper button, +.mermaid-zoom-icon-button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + padding: 0; + border: 0; + background: transparent; + color: var(--text-muted); + cursor: pointer; + touch-action: manipulation; +} +.mermaid-zoom-stepper button { + height: 22px; +} +.mermaid-zoom-stepper button + .mermaid-zoom-value, +.mermaid-zoom-value + button { + border-left: 1px solid var(--border); +} +.mermaid-zoom-icon-button { + flex: 0 0 24px; + border: 1px solid var(--border); + border-radius: 5px; +} +.mermaid-zoom-stepper button:hover:not(:disabled), +.mermaid-zoom-icon-button:hover { + background: var(--bg-hover); + color: var(--text); +} +.mermaid-zoom-stepper button:disabled { + opacity: 0.35; + cursor: default; +} +.mermaid-zoom-stepper button:focus-visible, +.mermaid-zoom-icon-button:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -2px; +} +.mermaid-zoom-value { + min-width: 48px; + height: 22px; + color: var(--text-muted); + font-family: var(--font-mono); + font-size: 12px; + line-height: 22px; + text-align: center; + user-select: none; +} +.mermaid-zoom-viewport { + min-width: 0; + min-height: 0; + overflow: auto; + padding: 24px; + background: var(--bg); + -webkit-overflow-scrolling: touch; +} +.mermaid-zoom-canvas { + padding: 12px; + border: 1px solid var(--border); + border-radius: 7px; + background: var(--bg-panel); + margin: 0 auto; + transition: width 0.15s ease; +} +.mermaid-zoom-canvas svg { + display: block; + width: 100% !important; + height: auto; + max-width: none !important; +} + +@media (max-width: 480px) { + .mermaid-zoom-toolbar { + padding-inline: 8px; + } + + .mermaid-zoom-title { + font-size: 10px; + } + + .mermaid-zoom-viewport { + padding: 12px; + } +} + +/* File viewer toolbar */ +.file-viewer-toolbar { + min-width: 0; + min-height: 35px; +} + +.file-viewer-path { + flex: 1 1 auto; + min-width: 48px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.file-viewer-meta { + flex: 0 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.file-viewer-live-indicator { + width: 7px; + height: 7px; + border-radius: 50%; + flex: 0 0 7px; +} + +.file-viewer-controls { + display: flex; + align-items: center; + gap: 6px; + flex-shrink: 0; +} + +.file-viewer-actions { + display: flex; + align-items: center; + height: 24px; + gap: 4px; + flex-shrink: 0; + order: -1; +} + +.file-viewer-mode-switch { + display: flex; + height: 24px; + overflow: hidden; + border: 1px solid var(--border); + border-radius: 5px; +} + +.file-viewer-mode-button { + height: 22px; + padding: 0 8px; + border: 0; + border-left: 1px solid var(--border); + font: inherit; + font-size: 11px; + font-weight: 500; + letter-spacing: 0; + cursor: pointer; + white-space: nowrap; +} + +.file-viewer-mode-button:first-child { + border-left: 0; +} + +.file-viewer-mode-button:hover { + filter: brightness(1.08); +} + +.file-viewer-icon-button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + padding: 0; + box-sizing: border-box; + flex: 0 0 24px; + border: 1px solid var(--border); + border-radius: 5px; + background: transparent; + color: var(--text-muted); + cursor: pointer; + text-decoration: none; +} + +.file-viewer-icon-button:hover { + background: var(--bg-hover) !important; + color: var(--text); +} + +.file-viewer-icon-button:disabled { + color: var(--text-dim); + cursor: not-allowed; + opacity: 0.55; +} + +.file-viewer-icon-button:disabled:hover { + background: transparent !important; + color: var(--text-dim); +} + +.file-viewer-mode-button:focus-visible, +.file-viewer-icon-button:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -2px; +} + +.directory-picker-path:focus-visible { + border-color: var(--accent) !important; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); +} + +@media (max-width: 640px) { + .file-viewer-meta { + display: none; + } +} + +@media (max-width: 380px) { + .file-viewer-toolbar { + gap: 6px !important; + padding-inline: 8px !important; + } + + .file-viewer-mode-button { + padding-inline: 6px; + } +} + +/* File viewer markdown preview — larger headings */ +.markdown-file-preview h1 { font-size: 1.8em; } +.markdown-file-preview h2 { font-size: 1.4em; } +.markdown-file-preview h3 { font-size: 1.15em; } +.markdown-file-preview p { margin: 0 0 12px; } +.markdown-file-preview pre { + background: var(--bg-panel); + border: 1px solid var(--border); + border-radius: 6px; + padding: 12px 16px; + overflow-x: auto; + font-family: var(--font-mono); + font-size: 13px; + margin: 12px 0; +} +.markdown-file-preview code { + font-family: var(--font-mono); + font-size: 0.9em; + background: var(--bg-panel); + padding: 1px 5px; + border-radius: 3px; +} +.markdown-file-preview pre code { + background: none; + padding: 0; +} + +/* YAML frontmatter metadata card (file preview) */ +.markdown-frontmatter { + margin-bottom: 20px; + padding: 14px 16px 12px; + border: 1px solid var(--border); + border-radius: 8px; + background: var(--bg-panel); +} +.markdown-frontmatter-title { + font-size: 1.3em; + font-weight: 600; + line-height: 1.35; + color: var(--text); +} +.markdown-frontmatter-tags { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-top: 8px; +} +.markdown-frontmatter-tag { + font-size: 12px; + line-height: 1.6; + color: var(--text-muted); + background: var(--bg-subtle); + border: 1px solid var(--border); + border-radius: 999px; + padding: 0 10px; +} +.markdown-frontmatter-rows { + display: grid; + grid-template-columns: auto 1fr; + gap: 5px 14px; + margin: 10px 0 0; + font-size: 13px; + line-height: 1.55; +} +.markdown-frontmatter-row { + display: contents; +} +.markdown-frontmatter-row dt { + color: var(--text-muted); + font-family: var(--font-mono); + font-size: 0.92em; + white-space: nowrap; +} +.markdown-frontmatter-row dd { + margin: 0; + color: var(--text); + min-width: 0; + word-break: break-word; +} +.markdown-frontmatter-row dd a { + color: var(--accent); + text-decoration: underline; + text-underline-offset: 2px; +} + +/* syntax highlighter line numbers */ +.markdown-body span.linenumber, +span.linenumber { + color: var(--text-dim) !important; + font-style: normal !important; +} + +/* Prism's markdown table tokens collide with Tailwind's display utility. */ +span.token.table { + display: inline; +} + +@keyframes drop-zone-in { + from { opacity: 0; transform: scale(0.97); } + to { opacity: 1; transform: scale(1); } +} + +@keyframes drop-icon-float { + 0%, 100% { transform: translateY(0px); } + 50% { transform: translateY(-6px); } +} + +@keyframes drop-ring-pulse { + 0%, 100% { opacity: 0.5; transform: scale(1); } + 50% { opacity: 1; transform: scale(1.06); } +} + +@keyframes drop-ripple { + 0% { transform: scale(0); opacity: 0.6; } + 100% { transform: scale(1); opacity: 0; } +} + +@keyframes blink { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.3; } +} + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +@keyframes pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.5; } +} + +@keyframes notice-shelf-in { + from { + opacity: 0; + height: 0; + max-height: 0; + min-height: 0; + margin-bottom: 0; + transform: translateY(-6px) scale(0.995); + } + to { + opacity: 1; + height: 60px; + max-height: 60px; + min-height: 60px; + transform: translateY(0) scale(1); + } +} + +@keyframes notice-shelf-out { + from { + opacity: 1; + height: 60px; + max-height: 60px; + min-height: 60px; + transform: translateY(0) scale(1); + } + to { + opacity: 0; + height: 0; + max-height: 0; + min-height: 0; + margin-bottom: 0; + transform: translateY(-5px) scale(0.995); + } +} + +@media (prefers-reduced-motion: reduce) { + .notice-shelf-item { + animation-duration: 0.001ms !important; + } +} + +/* Keep the panel border as the idle separator; this element only expands the hit target. */ +.panel-resize-handle { + position: relative; + z-index: 220; + width: 12px; + margin: 0 -6px; + flex: 0 0 12px; + cursor: col-resize; + touch-action: none; + outline: none; +} +.panel-resize-handle::after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 5px; + width: 2px; + pointer-events: none; + background: transparent; + transition: background 0.12s ease; +} +.panel-resize-handle:hover::after, +.panel-resize-handle:focus-visible::after, +.panel-resize-handle.is-resizing::after { + background: color-mix(in srgb, var(--text-muted) 70%, var(--border)); +} +.right-panel-overlay-backdrop { + display: none; +} + +/* Desktop sidebar: animate width */ +@media (min-width: 641px) { + .sidebar-overlay-backdrop { + display: none !important; + } + .sidebar-container { + position: relative; + overflow: hidden; + transition: width 0.2s ease, min-width 0.2s ease; + } + .sidebar-container.sidebar-open { + width: var(--sidebar-width, 260px); + min-width: var(--sidebar-width, 260px); + } + .sidebar-container.sidebar-closed { + width: 0; + min-width: 0; + border-right: none !important; + } + /* keep inner content at fixed width so it doesn't reflow during animation */ + .sidebar-container > * { + width: var(--sidebar-width, 260px); + min-width: var(--sidebar-width, 260px); + } + .sidebar-container.sidebar-resizing, + .sidebar-container.sidebar-resizing > * { + transition: none !important; + } +} + +/* Wide desktop file panel: participate in the split layout. */ +@media (min-width: 960px) { + .right-panel-container { + overflow: hidden; + transition: width 0.2s ease, min-width 0.2s ease; + flex-shrink: 0; + } + .right-panel-container.right-panel-open { + width: var(--right-panel-width, clamp(360px, 42vw, 640px)); + min-width: 300px; + } + .right-panel-container.right-panel-closed { + width: 0; + min-width: 0; + border-left: none !important; + } + /* keep inner content at fixed width so it doesn't reflow during animation */ + .right-panel-container > * { + width: var(--right-panel-width, clamp(360px, 42vw, 640px)); + min-width: 300px; + } + .right-panel-container.right-panel-resizing, + .right-panel-container.right-panel-resizing > * { + transition: none !important; + } +} + +/* Compact desktop file panel: overlay the chat instead of collapsing it. */ +@media (min-width: 641px) and (max-width: 959px) { + .right-panel-resize-handle { + display: none; + } + .right-panel-overlay-backdrop { + position: fixed; + inset: 0; + z-index: 240; + display: block; + background: rgba(0, 0, 0, 0.24); + opacity: 0; + pointer-events: none; + transition: opacity 0.2s ease; + } + .right-panel-overlay-backdrop.is-open { + opacity: 1; + pointer-events: auto; + } + .right-panel-container { + position: fixed; + top: 0; + right: env(safe-area-inset-right); + bottom: 0; + z-index: 250; + width: min(560px, calc(100vw - 48px)); + min-width: 300px; + overflow: hidden; + box-shadow: -12px 0 32px rgba(0, 0, 0, 0.18); + transition: transform 0.2s ease; + } + .right-panel-container.right-panel-open { + transform: translateX(0); + } + .right-panel-container.right-panel-closed { + transform: translateX(100%); + pointer-events: none; + } + .right-panel-container > * { + width: 100%; + min-width: 0; + } +} + +/* Mobile sidebar: slide in/out as overlay */ +@media (max-width: 640px) { + .chat-stats-center { + display: none !important; + } + .sidebar-container { + position: fixed !important; + top: 0; + left: env(safe-area-inset-left); + bottom: 0; + width: 280px; + max-width: 85vw; + height: var(--app-viewport-height, 100dvh); + transition: transform 0.25s ease, box-shadow 0.25s ease; + } + .sidebar-container.sidebar-open { + transform: translateX(0); + box-shadow: 4px 0 20px rgba(0,0,0,0.15); + } + .sidebar-container.sidebar-closed { + transform: translateX(calc(-100% - env(safe-area-inset-left))); + box-shadow: none; + } + + .right-panel-container { + position: fixed; + inset: 0 env(safe-area-inset-right) 0 env(safe-area-inset-left); + height: var(--app-viewport-height, 100dvh); + z-index: 250; + overflow: hidden; + transition: transform 0.2s ease; + } + .right-panel-container.right-panel-open { + width: auto; + min-width: 0; + } + .right-panel-container.right-panel-closed { + width: 0 !important; + min-width: 0 !important; + border-left: none !important; + display: none !important; + } + .right-panel-container > * { + width: 100%; + min-width: 0; + } + .panel-resize-handle, + .right-panel-overlay-backdrop { + display: none; + } + .directory-picker-back, + .directory-picker-entry, + .directory-picker-action { + min-height: 44px !important; + } + .directory-picker-back { + min-width: 44px !important; + } + .directory-picker-footer { + flex-wrap: wrap; + padding-bottom: max(10px, env(safe-area-inset-bottom)) !important; + } + textarea, + input, + select { + font-size: 16px !important; + } +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 000000000..3c416f1b6 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,77 @@ +import type { Metadata, Viewport } from "next"; +import { Noto_Sans_Mono } from "next/font/google"; +import { PwaRegistration } from "@/components/PwaRegistration"; +import "katex/dist/katex.min.css"; +import "./globals.css"; +import "./settings.css"; + +const notoSansMono = Noto_Sans_Mono({ + subsets: ["latin", "cyrillic"], + variable: "--font-noto-mono", + display: "swap", +}); + +export const metadata: Metadata = { + title: "Pi Web", + description: "Pi Web interface for the pi coding agent", + applicationName: "Pi Web", + manifest: "/manifest.webmanifest", + icons: { + icon: [ + { + url: "/icons/icon-192.png", + sizes: "192x192", + type: "image/png", + }, + ], + apple: [ + { + url: "/icons/apple-touch-icon.png", + sizes: "180x180", + type: "image/png", + }, + ], + }, + appleWebApp: { + capable: true, + statusBarStyle: "black-translucent", + title: "Pi Web", + }, + formatDetection: { + telephone: false, + }, +}; + +export const viewport: Viewport = { + width: "device-width", + initialScale: 1, + viewportFit: "cover", + interactiveWidget: "resizes-content", + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "#ffffff" }, + { media: "(prefers-color-scheme: dark)", color: "#1a1a1a" }, + ], +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + + "); + assert.match(html, /<script>/); + assert.doesNotMatch(html, /

08Pcp6Z7lGNzhi0Q{Yl#Nkxr2lk!QWLW7S)as?u`6?ivadz3UWqajs$#aNb- zeuz_ET4?mlb)S$xB-vQ9^Y4LGg(T5Cqnf5y_f=^_>7ZsLglW2*7aosTEpmQYWNM@n zaH(%6QDu@Fu%>#QmXvd1-|R6zClec^c5x`Vm8VWnYlH4Lp+Xx)Y_;jT)=^z40dpoj zo^GO9Y*yO?)KOfTC7{(FBXcT?3v!YH-!rLy)Lr7Fo`~cb&WL1iB)qrh7vH-1=*RiN zsvph3?#D}|z-kk=Wr9 z)329x$tFwXxdM_sjsT^;;@89na953Xf|%TcpjL?9{Hpcaa?t8z5JBEk$&Etgq7Li# zT?YCLoIu-buu2^Nqi;VW%UnG5 zgDIKJE?4NOA(W&NXK91J^G;VuVQ^uCvr_I=lJ59YV}IpOdm`0(GYv)HkQ%aE-=kuT z-^nK}6!YmG4(2NUBy5}y)sWJaKN~W5gNVA7cSn^9afS!dCsr6O8IbnGkV+92RY_Nj zd${I?kKZ|2V`BkL_i?5EqxNWl4=3l1hy^zMi6%^pw6xt*hCT$W4QEC3=i-Ixc{<71 zTWEC|Baav!E%?;RY-LRKofrOX4_X+cG>tx!=Fqsuz+b~w#c;K;LfZ^Pz2rix7K!M~ zu7z$lmsJdM`19Drm6WLP=-Kt>>gRHV;{ye$OzM>loFP4;*{nEj-GUtc}|wjAJ3| zC|z|W9;GAxUX-~}%fy-{ELnE-9yw=#4aap8t8WV{ZNt%=$1puDkC) z|5l`;8ES*NhE)5g`#lwIoLT*|R@r%>FFq^z(|rLc*YEz4NgTUlMP)LKTsXtpJ&W3k zqD-5FWkRvsjBC1QmDqB+dzSMh`PXzw^`g*Z=*hRg=a$6X0A?J*kWR0Hvm@bz zQUS&6AQXNZPHU04E9YA>YZ+7@+14aIKI ({|sj`X1g#}7gPDWDU*CiQ|@tcBKC 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