From c133913875dd0e0a40e079b6e9fa39ce67186a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 10:33:32 +0800 Subject: [PATCH 01/25] =?UTF-8?q?docs(spec6):=20webchat=20=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=B8=80=E7=AD=89=E5=85=AC=E6=B0=91=E5=8C=96=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E5=B7=A5=E4=BD=9C=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit spec ⑥ brainstorm 输入基线。经代码核实区分"已就绪/潜伏/待对齐": - A 组后端潜伏接线(A1 workspace 路由未注册阻塞前端 / A2 WS init 不绑 workspace / A3 disable 用户无 per-request 校验 / A4 cookie secret 内存 生成 / A5 前端未对齐 workspace_id 强制) - B 组前端主体(登录页/workspace 切换/worker 选择/agent-configs 编辑/ OAuth post-login) - C 组文档同步 / D 组遗留升级 - 6 个 brainstorm 待决策点 跟踪 issue #760;spec ①-⑤ 已合入(#746/#748/#753/#757/#755)。 --- .../2026-06-18-webchat-spec6-frontend-todo.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-todo.md diff --git a/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-todo.md b/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-todo.md new file mode 100644 index 000000000..feee522cd --- /dev/null +++ b/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-todo.md @@ -0,0 +1,103 @@ +# WebChat 多租户 spec ⑥ — 前端一等公民化 · 待办工作清单 + +**日期**: 2026-06-18 +**状态**: 待办(brainstorm 进行中) +**跟踪 issue**: [#760](https://github.com/hrygo/hotplex/issues/760) +**分支**: `feat/webchat-spec6-frontend` +**线路图**: [`WebChat-Multitenancy-Roadmap-Spec.md`](../../specs/WebChat-Multitenancy-Roadmap-Spec.md) + +--- + +## 1. 定位 + +spec ⑥ 是 WebChat 多租户线路图的**最后一个 spec(集大成)**。spec ①-⑤ 后端已全部合入(#746 / #748 / #753 / #757 / #755)。本 spec 将 WebChat 前端从"匿名 SPA"升级为完整多租户一等公民 UI,同时解除 spec ① R9 review 挂账的后端潜伏接线。 + +> 后端"已合入" ≠ "端到端可用"。本清单经代码核实,区分"已就绪 / 潜伏 / 待对齐"。 + +--- + +## 2. 已核实现状 + +### 前端技术栈(无需演进 — 决策点 #4 已由现状回答) + +Next.js 16.2 + React 19.2 + assistant-ui 0.14 + Tailwind 4 + TypeScript 6 + framer-motion + nuqs + playwright。详见 `webchat/package.json`。继续 Next.js + assistant-ui,不重构。 + +### 已有独立 admin 登录体系(不复用) + +`app/admin/login/page.tsx` + `hooks/use-admin-auth.ts` + `lib/api/admin-client.ts`。线路图明确其"与聊天功能无关"。spec ⑥ 为**聊天主入口 `app/page.tsx`**(当前匿名 SPA)新建用户登录。 + +### 后端 API 契约 + +| 契约 | 状态 | 代码位置 | +|---|---|---| +| `/api/auth/{login,logout,me,accept-invite}` | ✅ 已注册 | `cmd/hotplex/routes.go:209-212` | +| `/api/auth/oauth/{providers,login,callback}` | ✅ 已注册(#757) | `cmd/hotplex/routes.go:218-220` | +| `POST /api/sessions` 强制 workspace_id | ✅ 后端已强制 | `internal/gateway/api.go:237-240` | +| `/api/workspaces*` CRUD | 🔴 handler 已写、**路由未注册** | `internal/gateway/workspace_handlers.go` 五方法齐 + `routes.go` 缺注册 | + +--- + +## 3. 待办工作清单 + +### A. 后端潜伏接线(端到端硬前提) + +| ID | 待办 | 优先级 | 代码位置 | 来源 | +|---|---|---|---|---| +| A1 | 注册 `/api/workspaces*` CRUD 路由 | 🔴 阻塞前端 B2 | `workspace_handlers.go` Create/List/Get/Update/Delete 已实现,`routes.go` 未 mux.Handle | spec①R9#1 | +| A2 | WS init 创建 session 绑定 workspace | 🔴 | `internal/gateway/conn.go` 无任何 WorkspaceID(绕过隔离 + session key 方案3 分叉) | spec①R9#4 | +| A3 | disable 用户 per-request 状态校验 | 🟡 security | `internal/security/auth.go:80 AuthenticateRequest` 不查 `users.status`;cookie 7d / API key 永久有效期内 disable 用户仍可访问 | spec①R9#2 | +| A4 | cookie HMAC secret 持久化 | 🟡 reliability | `internal/security/cookie.go:52` 仍 `rand.Read` 内存生成,重启踢全部用户、多实例不共享 | spec①R9#3 | +| A5 | webchat 前端发送 workspace_id 对齐 REST 强制 | ⚠️ | 后端 `api.go:237` 已强制,前端未发送 → 当前 webchat REST 建会话可能 400 | spec①R9#5 | + +### B. 前端主体(spec ⑥ 核心) + +| ID | 待办 | 消费契约 | +|---|---|---| +| B1 | 登录页(内建账号 + OAuth 入口) | `GET /api/auth/oauth/providers` | +| B2 | workspace 切换 UI | A1 的 `/api/workspaces` CRUD | +| B3 | worker 选择 UI | spec ③ `worker_preference`(`PATCH /api/workspaces/{id}`) | +| B4 | agent-configs 编辑 UI | spec ② `agent_config_overrides` | +| B5 | OAuth post-login routing + 错误渲染 | `internal/gateway/oauth_handlers.go:175,254` 留有 `spec ⑥` 注释 | + +### C. 文档同步(可立即做,不阻塞) + +- **C1** `docs/specs/README.md` 索引滞后:Roadmap/Foundation 仍标 `proposed/draft 0%`(实际完成);缺 spec ②③④⑤ 四个子 spec 索引行;状态统计失真 +- **C2** `docs/specs/WebChat-Multitenancy-Roadmap-Spec.md` 正文 §3 阶段B表格 spec ④ 未标 ✅、§4 spec ④ 详述未标完成(与头部 L4 已更新不一致) + +### D. 遗留 / 升级时处理 + +- **D1** migration 018 旧 API-key WS 会话 `DeriveSessionKey` 派生键断裂(升级孤儿行) +- **D2** spec ① 增量:迁移验证测试 / 旧 webchat 会话清理 / e2e 集成测试 + +--- + +## 4. brainstorm 待决策点 + +启动实现前需在 brainstorm 中明确(一次一个): + +1. **前端技术栈** — ✅ 已定:继续 Next.js + assistant-ui,不重构 +2. **A 组归属** — A1-A5 接线放进 spec ⑥ PR 内,还是后端 PR 先行? +3. **登录态迁移** — 现有匿名 `webchat_user` 访问如何过渡(强制登录 vs 渐进式)? +4. **workspace 切换与会话连续性** — 切 workspace = 新会话(`DeriveSessionKey` 已如此),UI 如何表达? +5. **登录页与 admin 登录关系** — 完全独立两套,还是统一登录入口分流到 admin/chat? +6. **审计日志** — 多租户用户/workspace 操作是否审计?(路线图决策点 #5) + +--- + +## 5. 推进路径 + +``` +brainstorm(决策点 2-6)→ 设计文档(docs/superpowers/specs/) + → writing-plans(实现计划)→ 实现 + ├─ A 组接线(后端,阻塞 B2/B5) + ├─ B 组前端主体 + ├─ C 组文档同步(可穿插) + └─ D 组遗留(升级时) +``` + +## 6. 参考 + +- 路线图:`docs/specs/WebChat-Multitenancy-Roadmap-Spec.md` +- spec ① 设计:`docs/specs/WebChat-Multitenancy-Foundation-Design-Spec.md` +- 跟踪 issue:[#760](https://github.com/hrygo/hotplex/issues/760) +- 已合入:#746(①) · #748(②) · #753(③) · #757(④) · #755(⑤) From 0e2beeabdc5b2f0ad3ef87f4ddac6db32cb4c806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 11:21:52 +0800 Subject: [PATCH 02/25] feat(webchat): implement multitenant ui, login flow, and settings drawer --- cmd/hotplex/gateway_run.go | 2 +- cmd/hotplex/routes.go | 37 +- ...026-06-18-webchat-spec6-frontend-design.md | 100 ++ internal/config/config_defaults.go | 1 + internal/config/config_loader.go | 1 + internal/config/config_types.go | 1 + internal/gateway/api_test.go | 8 + internal/gateway/auth_handlers_test.go | 2 +- internal/gateway/bridge.go | 8 + internal/gateway/conn.go | 46 +- internal/gateway/hub_test.go | 4 +- internal/gateway/init.go | 31 +- internal/security/auth.go | 42 +- internal/security/auth_test.go | 98 ++ internal/security/cookie.go | 52 +- internal/security/cookie_refresh_test.go | 8 +- internal/security/cookie_test.go | 14 +- internal/security/oauth_manager_test.go | 6 +- internal/security/oauth_state_test.go | 12 +- .../chat/ChatContainer.assistant-ui.tsx | 1095 ++++++++++++++++- .../app/components/chat/NewSessionModal.tsx | 5 +- webchat/app/login/page.tsx | 337 +++++ webchat/app/page.tsx | 52 +- .../lib/adapters/hotplex-runtime-adapter.ts | 6 +- .../ai-sdk-transport/client/browser-client.ts | 2 + .../lib/ai-sdk-transport/client/envelope.ts | 7 +- webchat/lib/ai-sdk-transport/client/types.ts | 2 + webchat/lib/api/auth.ts | 200 +++ webchat/lib/api/sessions.ts | 12 +- webchat/lib/api/workspaces.ts | 108 ++ webchat/lib/hooks/useSessions.ts | 43 +- 31 files changed, 2240 insertions(+), 102 deletions(-) create mode 100644 docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-design.md create mode 100644 webchat/app/login/page.tsx create mode 100644 webchat/lib/api/auth.ts create mode 100644 webchat/lib/api/workspaces.ts diff --git a/cmd/hotplex/gateway_run.go b/cmd/hotplex/gateway_run.go index 07fdac7d7..2457bf532 100644 --- a/cmd/hotplex/gateway_run.go +++ b/cmd/hotplex/gateway_run.go @@ -418,7 +418,7 @@ func runGateway(configPath string, devMode bool, stopCh <-chan struct{}) (err er // Cookie auth: created when webchat is enabled for same-origin browser authentication. var cookieAuth *security.CookieAuth if cfg.WebChat.Enabled { - ca, err := security.NewCookieAuth() + ca, err := security.NewCookieAuth(cfg.Security.CookieSecret) if err != nil { return fmt.Errorf("create cookie auth: %w", err) } diff --git a/cmd/hotplex/routes.go b/cmd/hotplex/routes.go index f6b903273..eab0e36e8 100644 --- a/cmd/hotplex/routes.go +++ b/cmd/hotplex/routes.go @@ -205,12 +205,47 @@ func setupRoutes( // Account-login handlers (spec ①): requires LocalAccountProvider. // LocalAccountProvider is created lazily from WorkspaceStore + bcrypt cost. lap := security.NewLocalAccountProvider(deps.WorkspaceStore, security.BcryptCostDefault) + auth.SetIdentityProvider(lap) + authHandlers := gateway.NewAuthHandlers(auth, deps.CookieAuth, deps.WorkspaceStore, lap) mux.Handle("POST /api/auth/login", corsMw(http.HandlerFunc(authHandlers.Login))) mux.Handle("POST /api/auth/logout", corsMw(http.HandlerFunc(authHandlers.Logout))) mux.Handle("GET /api/auth/me", corsMw(http.HandlerFunc(authHandlers.Me))) mux.Handle("POST /api/auth/accept-invite", corsMw(http.HandlerFunc(authHandlers.AcceptInvite))) - log.Info("auth endpoints registered", "channels", "login,logout,me,accept-invite") + + // App-level Admin endpoints + mux.Handle("POST /api/admin/invitations", corsMw(http.HandlerFunc(authHandlers.AdminCreateInvitation))) + mux.Handle("GET /api/admin/invitations", corsMw(http.HandlerFunc(authHandlers.AdminListInvitations))) + mux.Handle("DELETE /api/admin/invitations/{id}", corsMw(http.HandlerFunc(authHandlers.AdminDeleteInvitation))) + mux.Handle("GET /api/admin/users", corsMw(http.HandlerFunc(authHandlers.AdminListUsers))) + mux.Handle("PATCH /api/admin/users/{id}", corsMw(http.HandlerFunc(authHandlers.AdminUpdateUserStatus))) + + // OPTIONS preflight handlers for Auth & Admin APIs + mux.Handle("OPTIONS /api/auth/login", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/auth/logout", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/auth/me", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/auth/accept-invite", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/invitations", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/invitations/", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/invitations/{id}", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/users", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/users/", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/admin/users/{id}", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + + // Workspaces CRUD endpoints + wsHandlers := gateway.NewWorkspaceHandlers(deps.WorkspaceStore, deps.CookieAuth, auth) + mux.Handle("POST /api/workspaces", corsMw(http.HandlerFunc(wsHandlers.Create))) + mux.Handle("GET /api/workspaces", corsMw(http.HandlerFunc(wsHandlers.List))) + mux.Handle("GET /api/workspaces/{id}", corsMw(http.HandlerFunc(wsHandlers.Get))) + mux.Handle("PATCH /api/workspaces/{id}", corsMw(http.HandlerFunc(wsHandlers.Update))) + mux.Handle("DELETE /api/workspaces/{id}", corsMw(http.HandlerFunc(wsHandlers.Delete))) + + // OPTIONS preflight handlers for Workspaces API + mux.Handle("OPTIONS /api/workspaces", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/workspaces/", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + mux.Handle("OPTIONS /api/workspaces/{id}", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + + log.Info("auth, admin, and workspaces endpoints registered", "channels", "login,logout,me,accept-invite,workspaces,admin") // OAuth SSO handlers (spec ④): requires OAuthManager with providers. if deps.OAuthManager != nil && deps.OAuthManager.HasProviders() { diff --git a/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-design.md b/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-design.md new file mode 100644 index 000000000..859a8673a --- /dev/null +++ b/docs/superpowers/specs/2026-06-18-webchat-spec6-frontend-design.md @@ -0,0 +1,100 @@ +# WebChat 多租户 spec ⑥ — 前端一等公民化设计方案 + +**日期**: 2026-06-18 +**状态**: 提案中 +**跟踪 issue**: [#760](https://github.com/hrygo/hotplex/issues/760) +**分支**: `feat/webchat-spec6-frontend` +**基本设计图**: [`WebChat-Multitenancy-Roadmap-Spec.md`](../../specs/WebChat-Multitenancy-Roadmap-Spec.md) + +--- + +## 1. 目标与定位 + +本设计方案将 WebChat 前端从"匿名 SPA"升级为完整多租户一等公民 UI。同时解除此前在后端的遗留接线 (A1-A5),确保端到端的数据流与多租户权限隔离。 + +--- + +## 2. 方案概览 + +### 2.1 强制登录 (Force Login) +1. 废除原有的匿名 `webchat_user` 自动会话创建机制。 +2. 任何未登录的用户访问 `/` 时,都会通过 `/api/auth/me` 的状态返回(401 Unauthorized)重定向到 `/login`。 +3. 登录页包含本地账号登录(Username/Password)与 OAuth SSO 登录。 + +### 2.2 工作空间隔离与会话过滤 (Workspace Selection) +1. 采用双侧边栏设计: + - **左侧工作空间栏** (Workspace Sidebar):展示用户所拥有的所有 Workspace。图标以精美的渐变色背景与首字母展示。底部包含设置齿轮与登出按钮。 + - **右侧会话列表栏** (Session Sidebar):仅展示当前选定 Workspace 绑定下的 Chat 历史会话(通过 `/api/sessions?workspace_id=XXX` 过滤)。 +2. 工作空间之间完全隔离。切换工作空间将只加载绑定到该空间的会话,如果该空间下无会话则自动静默或显式创建第一个会话。 + +### 2.3 设置页 (Settings Modal) +点击左侧下方的齿轮,弹出 Workspace & User 设置悬浮层: +- **General (常规)**: 查看/修改 Workspace 名称。展示不可变的工作目录绝对路径 (`work_dir`)。 +- **AI Config (AI 配置)**: + - 偏好 Worker 类型选择(切换 `claude_code` / `codexcli` 等,修改 `worker_preference`)。 + - Workspace 级 `agent_config_overrides`(YAML 格式文件编辑,校验后调用 `PATCH /api/workspaces/{id}`)。 +- **Members (成员管理, 仅限 App Admin 角色展示)**: + - **用户列表**:列出系统中的用户,提供启用/禁用(Status: active/disabled)操作。 + - **邀请码管理**:列出当前未失效的邀请码,支持新建邀请码(自定义 Role 与 TTL)以及删除邀请码。 +- **Profile (个人资料)**: 查看当前用户身份、所属角色等。 + +### 2.4 后端潜伏接线 (A1-A5) +- **A1**: 在 `routes.go` 中注册 `/api/workspaces*` CRUD 路由,绑定到 `WorkspaceHandlers`。 +- **A2/A5**: WebSocket Handshake 对齐: + 1. 客户端在 `init` 协议载荷中发送 `workspace_id`; + 2. 后端 `conn.go` 接收 `workspace_id`,查询其 `WorkDir` 并使用正确的 `workspace_id` 派生 `sessionID`(解决 DeriveSessionKey 派生分叉)。 +- **A3**: per-request 状态校验:在 `AuthenticateRequest` 拦截点增加 IdentityProvider 用户状态查询,如果 `Status == "disabled"` 则拒绝访问。 +- **A4**: Cookie HMAC 秘钥持久化:从 `~/.hotplex/data/cookie_secret.key` 读写密钥(若不存在则自动生成),支持 `security.cookie_secret` 配置覆盖。 + +--- + +## 3. 详细设计与实现 + +### 3.1 路由注册与权限校验 +1. **工作空间路由** + - `POST /api/workspaces` -> `Create` + - `GET /api/workspaces` -> `List` + - `GET /api/workspaces/{id}` -> `Get` + - `PATCH /api/workspaces/{id}` -> `Update` + - `DELETE /api/workspaces/{id}` -> `Delete` + - 并注册对应的 `OPTIONS` 跨域预检路由。 +2. **App 级 Admin 路由** + - `POST /api/admin/invitations` -> `AdminCreateInvitation` + - `GET /api/admin/invitations` -> `AdminListInvitations` + - `DELETE /api/admin/invitations/{id}` -> `AdminDeleteInvitation` + - `GET /api/admin/users` -> `AdminListUsers` + - `PATCH /api/admin/users/{id}` -> `AdminUpdateUserStatus` + - 并注册对应的 `OPTIONS` 跨域预检路由。 +3. **IdentityProvider 注册** + - 在 `routes.go` 初始化 `lap` 后,调用 `auth.SetIdentityProvider(lap)`,确保 `AuthenticateRequest` 和 `isAdmin` 可以正确查找到 IDP。 + +### 3.2 秘钥持久化与热更新 +在 `CookieAuth` 构造方法中: +1. 优先使用配置传入的 `security.cookie_secret`,经过 SHA256 派生 32 字节密钥。 +2. 若为空,从 `~/.hotplex/data/cookie_secret.key` 读取,失败则生成新密钥并以 0600 权限保存为 64 位十六进制字符串。 + +### 3.3 禁用状态即时拦截 +在 `Authenticator.AuthenticateRequest` 中: +1. 提取到 `uid` 后,如果 `idp != nil && uid != "anonymous" && uid != "api_user"`,执行 `idp.Lookup(r.Context(), uid)`。 +2. 若 `u.Status == "disabled"` 或发生错误,直接返回 `ErrUnauthorized`。 + +### 3.4 前端客户端升级 +1. `types.ts` 和 `envelope.ts` 扩展 `workspace_id`。 +2. `useSessions` 接收 `workspaceId`,重新渲染和过滤历史,传递给 `createSession` 和 WebSocket 初始化握手。 + +--- + +## 4. 界面与交互体验 + +### 4.1 登录界面 (Login Page) +- 精细打磨的玻璃拟态卡片,使用带发光动画的品牌 Logo。 +- 动态获取 OAuth 供应商,渲染按钮组。 +- 如果 URL 附带 `auth_error`,在顶部呈现红色气泡通知。 + +### 4.2 双侧边栏布局 (Double Sidebar) +- 最左侧为 64 像素的极简导航条,展示工作空间圆头像、偏好按钮及当前状态。 +- 会话面板仅列出本工作空间下的 Chat,与旧 UI 的风格完全统一,支持平滑淡入淡出动效。 + +### 4.3 设置与成员中心 +- 使用 Tab 切换的模态框展示。 +- 只有角色为 `admin` 的用户才可以看见 "Members" 选项卡,其中表格支持分页与按钮快捷操作。 diff --git a/internal/config/config_defaults.go b/internal/config/config_defaults.go index 5cdd8d176..ef8633b7a 100644 --- a/internal/config/config_defaults.go +++ b/internal/config/config_defaults.go @@ -83,6 +83,7 @@ func Default() *Config { Security: SecurityConfig{ APIKeyHeader: "X-API-Key", APIKeys: nil, + CookieSecret: "", TLSEnabled: false, AllowedOrigins: []string{"*"}, CSP: "", // empty → webchat/docs use package-level default diff --git a/internal/config/config_loader.go b/internal/config/config_loader.go index cfebadf04..0ab59ac58 100644 --- a/internal/config/config_loader.go +++ b/internal/config/config_loader.go @@ -81,6 +81,7 @@ func Load(filePath string) (*Config, error) { _ = v.BindEnv("worker.opencode_server.http_timeout") _ = v.BindEnv("worker.opencode_server.password") _ = v.BindEnv("security.api_key_header") + _ = v.BindEnv("security.cookie_secret") _ = v.BindEnv("security.csp") _ = v.BindEnv("security.allowed_origins") _ = v.BindEnv("security.security_contact") diff --git a/internal/config/config_types.go b/internal/config/config_types.go index 41e0718cb..009aff47c 100644 --- a/internal/config/config_types.go +++ b/internal/config/config_types.go @@ -576,6 +576,7 @@ func (c AutoRetryConfig) Defaults() AutoRetryConfig { type SecurityConfig struct { APIKeyHeader string `mapstructure:"api_key_header"` APIKeys []string `mapstructure:"api_keys"` + CookieSecret string `mapstructure:"cookie_secret"` TLSEnabled bool `mapstructure:"tls_enabled"` TLSCertFile string `mapstructure:"tls_cert_file"` TLSKeyFile string `mapstructure:"tls_key_file"` diff --git a/internal/gateway/api_test.go b/internal/gateway/api_test.go index 15cc82a24..973ff590c 100644 --- a/internal/gateway/api_test.go +++ b/internal/gateway/api_test.go @@ -135,6 +135,14 @@ func (m *mockAPIBridge) SwitchWorkDir(ctx context.Context, oldSessionID, newWork return args.Get(0).(*SwitchWorkDirResult), args.Error(1) } +func (m *mockAPIBridge) GetWorkspaceByID(ctx context.Context, id string) (*session.Workspace, error) { + args := m.Called(ctx, id) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(*session.Workspace), args.Error(1) +} + // ─── Mock TurnsReader for API tests ──────────────────────────────── type mockTurnsStore struct { diff --git a/internal/gateway/auth_handlers_test.go b/internal/gateway/auth_handlers_test.go index da72d6404..e8edc08dd 100644 --- a/internal/gateway/auth_handlers_test.go +++ b/internal/gateway/auth_handlers_test.go @@ -45,7 +45,7 @@ type testAuthEnv struct { func newTestAuthEnv(t *testing.T) *testAuthEnv { t.Helper() store := newTestSessionStore(t) - ca, err := security.NewCookieAuth() + ca, err := security.NewCookieAuth("") require.NoError(t, err) idp := security.NewLocalAccountProvider(store, testBcryptCostGateway) hash, err := idp.HashPassword("adminpass") diff --git a/internal/gateway/bridge.go b/internal/gateway/bridge.go index 5d2c8a584..9bcdf672a 100644 --- a/internal/gateway/bridge.go +++ b/internal/gateway/bridge.go @@ -139,6 +139,14 @@ func (b *Bridge) UpdateAgentConfigExclude(m map[string][]string) { b.agentConfigExclude.Store(m) } +// GetWorkspaceByID retrieves a workspace by its ID from the workspace store. +func (b *Bridge) GetWorkspaceByID(ctx context.Context, id string) (*session.Workspace, error) { + if b.wsStore == nil { + return nil, fmt.Errorf("bridge: workspace store is not configured") + } + return b.wsStore.GetWorkspaceByID(ctx, id) +} + // StartSession creates a new session and starts a worker. func (b *Bridge) StartSession(ctx context.Context, p worker.SessionStartParams) error { if b.closed.Load() { diff --git a/internal/gateway/conn.go b/internal/gateway/conn.go index 5f06b11ad..5cdfb8691 100644 --- a/internal/gateway/conn.go +++ b/internal/gateway/conn.go @@ -52,6 +52,7 @@ type SessionStarter interface { StartSession(ctx context.Context, p worker.SessionStartParams) error ResumeSession(ctx context.Context, id string, workDir string) error SwitchWorkDir(ctx context.Context, oldSessionID, newWorkDir string) (*SwitchWorkDirResult, error) + GetWorkspaceByID(ctx context.Context, id string) (*session.Workspace, error) } var _ SessionStarter = (*Bridge)(nil) // compile-time: Bridge implements SessionStarter @@ -62,9 +63,10 @@ type Conn struct { wc *websocket.Conn hub *Hub - sessionID string - userID string - botID string // SEC-007: bot isolation tag from X-Bot-ID header or init envelope + sessionID string + userID string + botID string // SEC-007: bot isolation tag from X-Bot-ID header or init envelope + workspaceID string // workspace ID // pendingAuth defers authentication to the init envelope (browser WS clients). pendingAuth bool @@ -328,6 +330,34 @@ func (c *Conn) resolveSession(env *events.Envelope, initData InitData, sm connSM if workDir == "" { workDir = c.hub.cfgStore.Load().Worker.DefaultWorkDir } + + var workspaceID string + if initData.WorkspaceID != "" { + if c.starter == nil { + workspaceID = initData.WorkspaceID + } else { + ws, err := c.starter.GetWorkspaceByID(context.Background(), initData.WorkspaceID) + if err != nil { + c.sendInitError(events.ErrCodeInvalidMessage, "workspace not found") + observability.GatewayErrors().Add(c.hub.ctx, 1, metric.WithAttributes(attribute.String("error_code", string(events.ErrCodeInvalidMessage)))) + return "", nil, err + } + if ws.Status == "disabled" { + c.sendInitError(events.ErrCodeInvalidMessage, "workspace is disabled") + observability.GatewayErrors().Add(c.hub.ctx, 1, metric.WithAttributes(attribute.String("error_code", string(events.ErrCodeInvalidMessage)))) + return "", nil, fmt.Errorf("init: workspace %s is disabled", initData.WorkspaceID) + } + if ws.OwnerUserID != "anonymous" && ws.OwnerUserID != c.userID { + c.sendInitError(events.ErrCodeInvalidMessage, "workspace access denied") + observability.GatewayErrors().Add(c.hub.ctx, 1, metric.WithAttributes(attribute.String("error_code", string(events.ErrCodeInvalidMessage)))) + return "", nil, fmt.Errorf("init: workspace %s access denied for user %s", initData.WorkspaceID, c.userID) + } + workDir = ws.WorkDir + workspaceID = ws.ID + } + } + c.workspaceID = workspaceID + expanded, err := validateAndExpandWorkDir(workDir) if err != nil { c.sendInitError(events.ErrCodeInvalidMessage, err.Error()) @@ -353,7 +383,13 @@ func (c *Conn) resolveSession(env *events.Envelope, initData InitData, sm connSM } } if sessionID == "" { - sessionID = session.DeriveSessionKey(c.userID, initData.WorkerType, env.SessionID, "", workDir) + sessionID = session.DeriveSessionKey(c.userID, initData.WorkerType, env.SessionID, workspaceID, workDir) + } + + if preResolved != nil && preResolved.WorkspaceID != workspaceID { + c.sendInitError(events.ErrCodeInvalidMessage, "session workspace mismatch") + observability.GatewayErrors().Add(c.hub.ctx, 1, metric.WithAttributes(attribute.String("error_code", string(events.ErrCodeInvalidMessage)))) + return "", nil, fmt.Errorf("init: session %s workspace mismatch", sessionID) } if !c.hub.InitThrottle.Check(sessionID) { @@ -469,6 +505,7 @@ func (c *Conn) startCreatedSession(sessionID string, initData InitData, workDir Platform: platformWebChat, Title: initData.Title, ClientKey: clientKey, + WorkspaceID: c.workspaceID, }); err != nil { c.hub.InitThrottle.RecordFailure(sessionID) c.sendInitError(events.ErrCodeInternalError, "failed to start session") @@ -503,6 +540,7 @@ func (c *Conn) recreateDeletedSession(sessionID string, initData InitData, workD Platform: platformWebChat, Title: initData.Title, ClientKey: clientKey, + WorkspaceID: c.workspaceID, }); err != nil { c.hub.InitThrottle.RecordFailure(sessionID) c.sendInitError(events.ErrCodeInternalError, fmt.Sprintf("failed to recreate deleted session: %v", err)) diff --git a/internal/gateway/hub_test.go b/internal/gateway/hub_test.go index b6f53e9c2..69d340450 100644 --- a/internal/gateway/hub_test.go +++ b/internal/gateway/hub_test.go @@ -1173,7 +1173,7 @@ func TestHub_HandleHTTP_CookieAuth(t *testing.T) { cfg := config.Default() cfg.Security.AllowedOrigins = []string{"*"} - cookieAuth, err := security.NewCookieAuth() + cookieAuth, err := security.NewCookieAuth("") require.NoError(t, err) auth := security.NewAuthenticator(&cfg.Security) @@ -1216,7 +1216,7 @@ func TestHub_HandleHTTP_CookieAuth_InvalidCookie(t *testing.T) { cfg := config.Default() cfg.Security.AllowedOrigins = []string{"*"} - cookieAuth, err := security.NewCookieAuth() + cookieAuth, err := security.NewCookieAuth("") require.NoError(t, err) auth := security.NewAuthenticator(&cfg.Security) diff --git a/internal/gateway/init.go b/internal/gateway/init.go index f3cfece17..21cd2c3be 100644 --- a/internal/gateway/init.go +++ b/internal/gateway/init.go @@ -19,13 +19,14 @@ const ( // InitData is the payload of a client → gateway init message. type InitData struct { - Version string `json:"version"` - WorkerType worker.WorkerType `json:"worker_type"` - SessionID string `json:"session_id,omitempty"` - Title string `json:"title,omitempty"` - Auth InitAuth `json:"auth,omitempty"` - Config InitConfig `json:"config,omitempty"` - ClientCaps ClientCaps `json:"client_caps,omitempty"` + Version string `json:"version"` + WorkerType worker.WorkerType `json:"worker_type"` + SessionID string `json:"session_id,omitempty"` + Title string `json:"title,omitempty"` + WorkspaceID string `json:"workspace_id,omitempty"` + Auth InitAuth `json:"auth,omitempty"` + Config InitConfig `json:"config,omitempty"` + ClientCaps ClientCaps `json:"client_caps,omitempty"` } // InitAuth carries authentication data embedded in the init envelope. @@ -154,6 +155,9 @@ func ValidateInit(env *events.Envelope) (InitData, *InitError) { } sessionID = messaging.SanitizeText(sessionID) + workspaceID, _ := data["workspace_id"].(string) + workspaceID = messaging.SanitizeText(workspaceID) + var auth InitAuth if authData, ok := data["auth"].(map[string]any); ok { if token, ok := authData["token"].(string); ok { @@ -206,12 +210,13 @@ func ValidateInit(env *events.Envelope) (InitData, *InitError) { } return InitData{ - Version: version, - WorkerType: worker.WorkerType(wt), - SessionID: sessionID, - Title: title, - Auth: auth, - Config: cfg, + Version: version, + WorkerType: worker.WorkerType(wt), + SessionID: sessionID, + Title: title, + WorkspaceID: workspaceID, + Auth: auth, + Config: cfg, }, nil } diff --git a/internal/security/auth.go b/internal/security/auth.go index 52bb17153..d5e58e3cb 100644 --- a/internal/security/auth.go +++ b/internal/security/auth.go @@ -85,7 +85,14 @@ func (a *Authenticator) AuthenticateRequest(r *http.Request) (string, string, er // 3rd priority: cookie auth fallback (webchat same-origin). if a.cookieAuth != nil { if uid, ok := a.cookieAuth.Authenticate(r); ok { + idp := a.idp a.mu.RUnlock() + if idp != nil && uid != "anonymous" && uid != "api_user" { + u, err := idp.Lookup(r.Context(), uid) + if err != nil || u.Status == "disabled" { + return "", "", ErrUnauthorized + } + } botID := BotIDFromRequest(r) return uid, botID, nil } @@ -110,10 +117,19 @@ func (a *Authenticator) AuthenticateRequest(r *http.Request) (string, string, er // Snapshot resolver under lock, then release before calling external resolver. resolver := a.keyResolver + idp := a.idp a.mu.RUnlock() + uid := resolveUserIDWith(r.Context(), key, resolver) + if idp != nil && uid != "anonymous" && uid != "api_user" { + u, err := idp.Lookup(r.Context(), uid) + if err != nil || u.Status == "disabled" { + return "", "", ErrUnauthorized + } + } + botID := BotIDFromRequest(r) - return resolveUserIDWith(r.Context(), key, resolver), botID, nil + return uid, botID, nil } // ReloadKeys dynamically replaces the set of valid API keys. @@ -178,13 +194,6 @@ func (a *Authenticator) RemoveKey(key string) { } } -// resolveUserID returns the user identity for a valid API key. -// Checks the resolver first; falls back to "api_user" if no mapping exists. -// Caller must hold at least RLock. -func (a *Authenticator) resolveUserID(ctx context.Context, key string) string { - return resolveUserIDWith(ctx, key, a.keyResolver) -} - // resolveUserIDWith resolves user identity without holding any lock. func resolveUserIDWith(ctx context.Context, key string, resolver APIKeyResolver) string { if resolver != nil { @@ -225,17 +234,28 @@ func (a *Authenticator) extractAPIKey(r *http.Request) (string, bool) { // Handles dev mode (no keys configured → "anonymous"). func (a *Authenticator) AuthenticateKey(ctx context.Context, key string) (string, bool) { a.mu.RLock() - defer a.mu.RUnlock() - if len(a.validKey) == 0 && len(a.dbKeys) == 0 && !a.devModeLocked { // No keys configured — allow all (dev mode). + a.mu.RUnlock() return "anonymous", true } if !a.authenticateKey(key) { + a.mu.RUnlock() return "", false } - return a.resolveUserID(ctx, key), true + resolver := a.keyResolver + idp := a.idp + a.mu.RUnlock() + + uid := resolveUserIDWith(ctx, key, resolver) + if idp != nil && uid != "anonymous" && uid != "api_user" { + u, err := idp.Lookup(ctx, uid) + if err != nil || u.Status == "disabled" { + return "", false + } + } + return uid, true } // BotIDFromRequest extracts the bot ID from X-Bot-ID header or bot_id query param. diff --git a/internal/security/auth_test.go b/internal/security/auth_test.go index 8979c7156..4f6a5d204 100644 --- a/internal/security/auth_test.go +++ b/internal/security/auth_test.go @@ -671,3 +671,101 @@ func TestDevMode_DisabledByDBKeys(t *testing.T) { _, ok = auth.AuthenticateKey(context.Background(), "hpk_first") require.False(t, ok, "removed key should no longer authenticate") } + +type mockIDP struct { + LookupFunc func(ctx context.Context, userID string) (*User, error) +} + +func (m *mockIDP) Authenticate(ctx context.Context, creds Credentials) (string, error) { + return "", nil +} + +func (m *mockIDP) Lookup(ctx context.Context, userID string) (*User, error) { + if m.LookupFunc != nil { + return m.LookupFunc(ctx, userID) + } + return nil, ErrUserNotFound +} + +func TestAuthenticator_DisabledUser(t *testing.T) { + t.Parallel() + + // 1. AuthenticateKey + auth := NewAuthenticator(&config.SecurityConfig{ + APIKeys: []string{"sk-test"}, + }) + + idp := &mockIDP{ + LookupFunc: func(ctx context.Context, userID string) (*User, error) { + if userID == "active_uid" { + return &User{ID: "active_uid", Status: "active"}, nil + } + if userID == "disabled_uid" { + return &User{ID: "disabled_uid", Status: "disabled"}, nil + } + return nil, ErrUserNotFound + }, + } + auth.SetIdentityProvider(idp) + + // Stub a key resolver using NewMapResolver + auth.SetKeyResolver(NewMapResolver(map[string]string{ + "sk-test": "disabled_uid", + "sk-active": "active_uid", + })) + + // Try AuthenticateKey with a key that maps to disabled_uid + _, ok := auth.AuthenticateKey(context.Background(), "sk-test") + require.False(t, ok, "disabled user key authentication should fail") + + // Try AuthenticateKey with a key that maps to active_uid + auth.ReloadKeys(&config.SecurityConfig{ + APIKeys: []string{"sk-test", "sk-active"}, + }) + uid, ok := auth.AuthenticateKey(context.Background(), "sk-active") + require.True(t, ok) + require.Equal(t, "active_uid", uid) + + // 2. AuthenticateRequest (API Key) + req := httptest.NewRequest("GET", "/test", nil) + req.Header.Set("X-API-Key", "sk-test") + _, _, err := auth.AuthenticateRequest(req) + require.ErrorIs(t, err, ErrUnauthorized, "disabled user request should be unauthorized") + + reqActive := httptest.NewRequest("GET", "/test", nil) + reqActive.Header.Set("X-API-Key", "sk-active") + uidRes, _, err := auth.AuthenticateRequest(reqActive) + require.NoError(t, err) + require.Equal(t, "active_uid", uidRes) + + // 3. AuthenticateRequest (Cookie) + ca, err := NewCookieAuth("") + require.NoError(t, err) + auth.SetCookieAuth(ca) + + // Setup requests + w1 := httptest.NewRecorder() + r1 := httptest.NewRequest("GET", "/", nil) + err = ca.SetCookie(w1, r1, "disabled_uid") + require.NoError(t, err) + + cookies1 := w1.Result().Cookies() + r2 := httptest.NewRequest("GET", "/", nil) + r2.AddCookie(cookies1[0]) + + _, _, err = auth.AuthenticateRequest(r2) + require.ErrorIs(t, err, ErrUnauthorized, "disabled user cookie authentication should fail") + + w2 := httptest.NewRecorder() + r3 := httptest.NewRequest("GET", "/", nil) + err = ca.SetCookie(w2, r3, "active_uid") + require.NoError(t, err) + + cookies2 := w2.Result().Cookies() + r4 := httptest.NewRequest("GET", "/", nil) + r4.AddCookie(cookies2[0]) + + uidRes, _, err = auth.AuthenticateRequest(r4) + require.NoError(t, err) + require.Equal(t, "active_uid", uidRes) +} diff --git a/internal/security/cookie.go b/internal/security/cookie.go index 1dfc932c9..3bcf799dd 100644 --- a/internal/security/cookie.go +++ b/internal/security/cookie.go @@ -6,11 +6,16 @@ import ( "crypto/sha256" "encoding/base64" "encoding/hex" + "flag" "fmt" "net/http" + "os" + "path/filepath" "strconv" "strings" "time" + + "github.com/hrygo/hotplex/internal/config" ) const ( @@ -46,14 +51,49 @@ type CookieAuth struct { maxAge time.Duration } -// NewCookieAuth creates a CookieAuth with a cryptographically random HMAC key. -func NewCookieAuth() (*CookieAuth, error) { - secret := make([]byte, hmacKeyLen) - if _, err := rand.Read(secret); err != nil { - return nil, fmt.Errorf("security: generate cookie secret: %w", err) +// NewCookieAuth creates a CookieAuth with the given configured secret or falls back to filesystem persistence. +// If running inside a unit test, it uses a random in-memory key to avoid filesystem side effects. +func NewCookieAuth(configuredSecret string) (*CookieAuth, error) { + if flag.Lookup("test.v") != nil { + secretBytes := make([]byte, hmacKeyLen) + if _, err := rand.Read(secretBytes); err != nil { + return nil, fmt.Errorf("security: generate cookie secret for test: %w", err) + } + return &CookieAuth{ + secret: secretBytes, + maxAge: cookieMaxAge, + }, nil } + + var secretBytes []byte + if configuredSecret != "" { + h := sha256.Sum256([]byte(configuredSecret)) + secretBytes = h[:] + } else { + keyPath := filepath.Join(config.HotplexHome(), "data", "cookie_secret.key") + data, err := os.ReadFile(keyPath) + if err == nil { + dataStr := strings.TrimSpace(string(data)) + if hexBytes, err := hex.DecodeString(dataStr); err == nil && len(hexBytes) == hmacKeyLen { + secretBytes = hexBytes + } else if len(data) == hmacKeyLen { + secretBytes = data + } + } + + if secretBytes == nil { + secretBytes = make([]byte, hmacKeyLen) + if _, err := rand.Read(secretBytes); err != nil { + return nil, fmt.Errorf("security: generate cookie secret: %w", err) + } + hexStr := hex.EncodeToString(secretBytes) + _ = os.MkdirAll(filepath.Dir(keyPath), 0o700) + _ = os.WriteFile(keyPath, []byte(hexStr), 0o600) + } + } + return &CookieAuth{ - secret: secret, + secret: secretBytes, maxAge: cookieMaxAge, }, nil } diff --git a/internal/security/cookie_refresh_test.go b/internal/security/cookie_refresh_test.go index 26e06d755..acf8d7d89 100644 --- a/internal/security/cookie_refresh_test.go +++ b/internal/security/cookie_refresh_test.go @@ -13,7 +13,7 @@ import ( func TestCookieAuth_SetAndVerify(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) r := httptest.NewRequest(http.MethodGet, "/", nil) @@ -31,7 +31,7 @@ func TestCookieAuth_SetAndVerify(t *testing.T) { func TestCookieAuth_SlidingRefreshNearExpiry(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) // Cookie issued 6 days ago; TTL is 7 days → past half-TTL threshold (3.5d) → refresh. @@ -52,7 +52,7 @@ func TestCookieAuth_SlidingRefreshNearExpiry(t *testing.T) { func TestCookieAuth_NoRefreshWhenFresh(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") r := httptest.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() require.NoError(t, ca.SetCookie(w, r, "u-1")) @@ -69,7 +69,7 @@ func TestCookieAuth_NoRefreshWhenFresh(t *testing.T) { func TestCookieAuth_ExpiredRejected(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") // Issued 8 days ago, exceeds 7-day TTL → rejected. r := httptest.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() diff --git a/internal/security/cookie_test.go b/internal/security/cookie_test.go index 815c7de2a..a8526ab47 100644 --- a/internal/security/cookie_test.go +++ b/internal/security/cookie_test.go @@ -15,7 +15,7 @@ import ( func TestCookieAuthSignVerify(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) w := httptest.NewRecorder() @@ -44,7 +44,7 @@ func TestCookieAuthSignVerify(t *testing.T) { func TestCookieAuthExpiry(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) // Create a cookie with a manually-expired timestamp. @@ -75,7 +75,7 @@ func TestCookieAuthExpiry(t *testing.T) { func TestCookieAuthTamper(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) w := httptest.NewRecorder() @@ -116,7 +116,7 @@ func TestCookieAuthTamper(t *testing.T) { func TestCookieSecureFlag(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) // HTTP request — Secure should be false. @@ -155,7 +155,7 @@ func TestCookieSecureFlag(t *testing.T) { func TestCookieNoRepeatIssue(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) // First request: issues a cookie. @@ -178,7 +178,7 @@ func TestCookieNoRepeatIssue(t *testing.T) { func TestAuthenticateRequestCookie(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) auth := NewAuthenticator(&config.SecurityConfig{APIKeyHeader: "X-API-Key"}) @@ -209,7 +209,7 @@ func TestAuthenticateRequestCookie(t *testing.T) { func TestCookieAuthWithBotID(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) auth := NewAuthenticator(&config.SecurityConfig{APIKeyHeader: "X-API-Key"}) diff --git a/internal/security/oauth_manager_test.go b/internal/security/oauth_manager_test.go index a59a51b3f..a67d7c0d5 100644 --- a/internal/security/oauth_manager_test.go +++ b/internal/security/oauth_manager_test.go @@ -12,7 +12,7 @@ import ( func TestOAuthManager_Empty(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) m := NewOAuthManager(ca) @@ -31,7 +31,7 @@ func TestOAuthManager_ReloadSuccess(t *testing.T) { mock := newMockOIDCServer(t) t.Cleanup(mock.close) - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) m := NewOAuthManager(ca) @@ -196,7 +196,7 @@ func TestOAuthManager_ReloadRediscoverOnClientIDChange(t *testing.T) { func mustCookieAuth(t *testing.T) *CookieAuth { t.Helper() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) return ca } diff --git a/internal/security/oauth_state_test.go b/internal/security/oauth_state_test.go index ea5da47ee..9f4025f10 100644 --- a/internal/security/oauth_state_test.go +++ b/internal/security/oauth_state_test.go @@ -25,7 +25,7 @@ func TestGenerateStateAndVerifier(t *testing.T) { func TestStateCookie_SetAndVerify(t *testing.T) { t.Parallel() - ca, err := NewCookieAuth() + ca, err := NewCookieAuth("") require.NoError(t, err) state, verifier, _, _ := GenerateStateAndVerifier() @@ -55,7 +55,7 @@ func TestStateCookie_SetAndVerify(t *testing.T) { func TestStateCookie_CSRFDetected(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") state, verifier, _, _ := GenerateStateAndVerifier() payload := StateCookiePayload{ @@ -78,7 +78,7 @@ func TestStateCookie_CSRFDetected(t *testing.T) { func TestStateCookie_ProviderMismatch(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") state, verifier, _, _ := GenerateStateAndVerifier() payload := StateCookiePayload{ @@ -101,7 +101,7 @@ func TestStateCookie_ProviderMismatch(t *testing.T) { func TestStateCookie_Expired(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") state, verifier, _, _ := GenerateStateAndVerifier() payload := StateCookiePayload{ @@ -125,7 +125,7 @@ func TestStateCookie_Expired(t *testing.T) { func TestStateCookie_Tampered(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") w := httptest.NewRecorder() // Set a tampered cookie directly. @@ -145,7 +145,7 @@ func TestStateCookie_Tampered(t *testing.T) { func TestStateCookie_Missing(t *testing.T) { t.Parallel() - ca, _ := NewCookieAuth() + ca, _ := NewCookieAuth("") r := httptest.NewRequest(http.MethodGet, "/callback", nil) _, err := VerifyStateCookie(r, ca, "any", "any") require.Error(t, err) diff --git a/webchat/app/components/chat/ChatContainer.assistant-ui.tsx b/webchat/app/components/chat/ChatContainer.assistant-ui.tsx index b25593b44..f99e9a852 100644 --- a/webchat/app/components/chat/ChatContainer.assistant-ui.tsx +++ b/webchat/app/components/chat/ChatContainer.assistant-ui.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useCallback } from 'react'; +import { useState, useCallback, useEffect } from 'react'; import { AssistantRuntimeProvider, useExternalStoreRuntime, @@ -16,17 +16,38 @@ import { MetricsBar } from '@/components/assistant-ui/MetricsBar'; import { workerType as defaultWorkerType, workDir, httpBase, type ConnectionState } from '@/lib/config'; import type { SessionMetrics } from '@/lib/hooks/useMetrics'; import { useSkillsCache } from '@/lib/hooks/useSkillsCache'; +import { + listWorkspaces, + createWorkspace, + updateWorkspace, + deleteWorkspace, + type Workspace, +} from '@/lib/api/workspaces'; +import { + getMe, + logout, + adminListUsers, + adminUpdateUserStatus, + adminListInvitations, + adminCreateInvitation, + adminDeleteInvitation, + type User, + type Invitation, +} from '@/lib/api/auth'; +import { AnimatePresence, motion } from 'framer-motion'; function ChatInterface({ sessionId, overrideWorkDir, onMetricsChange, onSessionStateChange, + workspaceId, }: { sessionId: string | null; overrideWorkDir?: string; onMetricsChange?: (metrics: SessionMetrics) => void; onSessionStateChange?: (state: string) => void; + workspaceId?: string; }) { const { skills, mergeSkills } = useSkillsCache(sessionId); const adapter = useHotPlexRuntime({ @@ -35,6 +56,7 @@ function ChatInterface({ onMetricsChange, onSkillsChange: mergeSkills, onSessionStateChange, + workspaceId, }); const runtime = useExternalStoreRuntime(adapter); @@ -69,9 +91,104 @@ export default function ChatContainer() { // nuqs deep link params const [urlDir] = useQueryState('dir', parseAsString); + // Auth & Workspaces State + const [currentUser, setCurrentUser] = useState(null); + const [workspaces, setWorkspaces] = useState([]); + const [activeWorkspace, setActiveWorkspace] = useState(null); + const [workspacesLoading, setWorkspacesLoading] = useState(true); + + // Modals state + const [showNewWorkspaceModal, setShowNewWorkspaceModal] = useState(false); + const [newWorkspaceName, setNewWorkspaceName] = useState(''); + const [newWorkspaceDir, setNewWorkspaceDir] = useState(''); + const [newWorkspaceLoading, setNewWorkspaceLoading] = useState(false); + const [newWorkspaceError, setNewWorkspaceError] = useState(''); + + const [showSettingsModal, setShowSettingsModal] = useState(false); + const [settingsTab, setSettingsTab] = useState<'general' | 'ai' | 'members' | 'profile'>('general'); + + // Load User Info + useEffect(() => { + getMe() + .then(setCurrentUser) + .catch(() => { + // Fallback or ignore since root page will redirect if not authenticated + }); + }, []); + + // Fetch workspaces list + const loadWorkspaces = useCallback(async (selectId?: string) => { + try { + setWorkspacesLoading(true); + const res = await listWorkspaces(); + let list = res.workspaces || []; + + // Fallback: If no workspaces exist, create a default one + if (list.length === 0) { + const defaultWS = await createWorkspace('Default Workspace', './workspace'); + list = [defaultWS]; + } + + setWorkspaces(list); + + // Determine active workspace + const targetId = selectId || localStorage.getItem('hotplex_active_workspace_id'); + const found = list.find((w) => w.id === targetId); + const active = found || list[0]; + + setActiveWorkspace(active); + if (active) { + localStorage.setItem('hotplex_active_workspace_id', active.id); + } + } catch (err) { + console.error('Failed to load workspaces', err); + } finally { + setWorkspacesLoading(false); + } + }, []); + + useEffect(() => { + loadWorkspaces(); + }, [loadWorkspaces]); + + const handleSwitchWorkspace = (ws: Workspace) => { + setActiveWorkspace(ws); + localStorage.setItem('hotplex_active_workspace_id', ws.id); + setSessionMetrics(null); // Reset metrics on workspace switch + }; + + const handleCreateWorkspaceSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + if (!newWorkspaceName.trim() || !newWorkspaceDir.trim()) return; + + setNewWorkspaceLoading(true); + setNewWorkspaceError(''); + try { + const ws = await createWorkspace(newWorkspaceName.trim(), newWorkspaceDir.trim()); + setNewWorkspaceName(''); + setNewWorkspaceDir(''); + setShowNewWorkspaceModal(false); + await loadWorkspaces(ws.id); + } catch (err: any) { + setNewWorkspaceError(err.message || 'Failed to create workspace.'); + } finally { + setNewWorkspaceLoading(false); + } + }; + + const handleLogout = async () => { + try { + await logout(); + } catch { + // Ignore error and redirect + } + window.location.replace('/login'); + }; + + // Sessions hook scoped to active workspace const { activeSession, - isLoading, + isLoading: sessionsLoading, error: sessionError, selectSession, createNewSession, @@ -80,6 +197,7 @@ export default function ChatContainer() { updateSessionState, } = useSessions({ onSelect: () => {}, + workspaceId: activeWorkspace?.id, }); const activeSessionId = activeSession?.id || null; @@ -90,28 +208,127 @@ export default function ChatContainer() { await createNewSession(title, wt, dir || undefined); }, [createNewSession]); - // Handle "New Chat" button — show modal for session config - const handleCreateNew = useCallback(async () => { + // Handle "New Chat" button + const handleCreateNew = useCallback(() => { setShowNewModal(true); }, []); return (
- {/* PC Sidebar */} + {/* 1. Far-left compact workspace selection navigation bar */} + + + {/* 2. Main Sessions Sidebar (Workspace Scoped) */} - {/* Main Content Area */} + {/* 3. Main Chat View Content */}
- {/* Header — Workspace Awareness Bar */}
-
-
- -
+
-

HotPlex Agent

+

+ {activeWorkspace?.name || 'Workspace'} + / + HotPlex Agent +

Active · {WORKER_DISPLAY[activeSession?.worker_type ?? defaultWorkerType] ?? activeSession?.worker_type ?? defaultWorkerType}

- {(urlDir || workDir) && ( -

+ {(urlDir || activeWorkspace?.work_dir) && ( +

{(() => { - const d = urlDir || workDir || ''; + const d = urlDir || activeWorkspace?.work_dir || ''; return d.length > 30 ? `…${d.slice(-28)}` : d; })()}

@@ -150,7 +368,7 @@ export default function ChatContainer() { )} -
- {/* New Session Modal */} + {/* 4. New Session Modal (with workspace defaultWorkDir propagation) */} {showNewModal && ( setShowNewModal(false)} + defaultWorkDir={activeWorkspace?.work_dir} + /> + )} + + {/* 5. Create Workspace Modal */} + {showNewWorkspaceModal && ( + { + setShowNewWorkspaceModal(false); + setNewWorkspaceName(''); + setNewWorkspaceDir(''); + setNewWorkspaceError(''); + }} + /> + )} + + {/* 6. Settings Modal */} + {showSettingsModal && activeWorkspace && ( + setShowSettingsModal(false)} + onWorkspaceUpdated={(ws) => { + setActiveWorkspace(ws); + loadWorkspaces(ws.id); + }} + onWorkspaceDeleted={() => { + setShowSettingsModal(false); + loadWorkspaces(); + }} /> )}
); } + +// Sub-component: Create Workspace Dialog +function CreateWorkspaceDialog({ + onSubmit, + name, + setName, + dir, + setDir, + loading, + error, + onCancel, +}: { + onSubmit: (e: React.FormEvent) => void; + name: string; + setName: (v: string) => void; + dir: string; + setDir: (v: string) => void; + loading: boolean; + error: string; + onCancel: () => void; +}) { + return ( + +
+ +

+ Create Workspace +

+

+ Workspaces organize your AI coding configurations and working directories. +

+ + {error && ( +
+ {error} +
+ )} + +
+
+ + setName(e.target.value)} + placeholder="e.g. My Next Project" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ +
+ + setDir(e.target.value)} + placeholder="e.g. /Users/name/projects/my-app" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20 font-mono" + /> +
+ +
+ + +
+
+
+ + ); +} + +// Sub-component: Settings Modal with tabs +function SettingsModal({ + tab, + setTab, + workspace, + currentUser, + onClose, + onWorkspaceUpdated, + onWorkspaceDeleted, +}: { + tab: 'general' | 'ai' | 'members' | 'profile'; + setTab: (t: 'general' | 'ai' | 'members' | 'profile') => void; + workspace: Workspace; + currentUser: User | null; + onClose: () => void; + onWorkspaceUpdated: (ws: Workspace) => void; + onWorkspaceDeleted: () => void; +}) { + const isAdmin = currentUser?.role === 'admin'; + + // Workspace General edit states + const [wsName, setWsName] = useState(workspace.name); + const [wsDir, setWsDir] = useState(workspace.work_dir); + const [savingGeneral, setSavingGeneral] = useState(false); + const [generalError, setGeneralError] = useState(''); + const [confirmDeleteWS, setConfirmDeleteWS] = useState(false); + + // AI Configuration/Preference states + const [workerPreference, setWorkerPreference] = useState(workspace.worker_preference || 'claude_code'); + const [overridesList, setOverridesList] = useState<{ key: string; val: string }[]>(() => { + const obj = workspace.agent_config_overrides || {}; + return Object.entries(obj).map(([k, v]) => ({ key: k, val: v })); + }); + const [savingAI, setSavingAI] = useState(false); + const [aiError, setAIError] = useState(''); + + // Admin users / invites states + const [users, setUsers] = useState([]); + const [usersLoading, setUsersLoading] = useState(false); + const [invitations, setInvitations] = useState([]); + const [invitesLoading, setInvitesLoading] = useState(false); + const [inviteRole, setInviteRole] = useState<'user' | 'admin'>('user'); + const [inviteTTL, setInviteTTL] = useState(86400); // Default 24 hours in seconds + const [generatedInviteCode, setGeneratedInviteCode] = useState(''); + const [creatingInvite, setCreatingInvite] = useState(false); + + // Sync state if active workspace changes under setting + useEffect(() => { + setWsName(workspace.name); + setWsDir(workspace.work_dir); + setWorkerPreference(workspace.worker_preference || 'claude_code'); + const obj = workspace.agent_config_overrides || {}; + setOverridesList(Object.entries(obj).map(([k, v]) => ({ key: k, val: v }))); + setConfirmDeleteWS(false); + setGeneralError(''); + setAIError(''); + }, [workspace]); + + // Load Admin Data + useEffect(() => { + if (tab === 'members' && isAdmin) { + const loadAdminData = async () => { + setUsersLoading(true); + setInvitesLoading(true); + try { + const uRes = await adminListUsers(); + setUsers(uRes.users || []); + } catch (err) { + console.error(err); + } finally { + setUsersLoading(false); + } + + try { + const iRes = await adminListInvitations(); + setInvitations(iRes.invitations || []); + } catch (err) { + console.error(err); + } finally { + setInvitesLoading(false); + } + }; + loadAdminData(); + } + }, [tab, isAdmin]); + + // Workspace General Save + const handleSaveGeneral = async (e: React.FormEvent) => { + e.preventDefault(); + if (!wsName.trim()) return; + setSavingGeneral(true); + setGeneralError(''); + try { + const updated = await updateWorkspace(workspace.id, { + name: wsName.trim(), + }); + onWorkspaceUpdated(updated); + } catch (err: any) { + setGeneralError(err.message || 'Failed to update workspace.'); + } finally { + setSavingGeneral(false); + } + }; + + // Workspace Delete + const handleDeleteWS = async () => { + try { + await deleteWorkspace(workspace.id); + onWorkspaceDeleted(); + } catch (err: any) { + setGeneralError(err.message || 'Failed to delete workspace.'); + } + }; + + // AI config save + const handleSaveAI = async (e: React.FormEvent) => { + e.preventDefault(); + setSavingAI(true); + setAIError(''); + + // Reconstruct overrides object + const overridesObj: Record = {}; + for (const item of overridesList) { + if (item.key.trim()) { + overridesObj[item.key.trim()] = item.val; + } + } + + try { + const updated = await updateWorkspace(workspace.id, { + workerPreference: workerPreference, + agentConfigOverrides: overridesObj, + }); + onWorkspaceUpdated(updated); + } catch (err: any) { + setAIError(err.message || 'Failed to save configuration.'); + } finally { + setSavingAI(false); + } + }; + + const handleAddOverride = () => { + setOverridesList((prev) => [...prev, { key: '', val: '' }]); + }; + + const handleRemoveOverride = (idx: number) => { + setOverridesList((prev) => prev.filter((_, i) => i !== idx)); + }; + + const handleOverrideChange = (idx: number, field: 'key' | 'val', value: string) => { + setOverridesList((prev) => { + const copy = [...prev]; + copy[idx] = { ...copy[idx], [field]: value }; + return copy; + }); + }; + + // User toggle (Admin action) + const handleToggleUserStatus = async (user: User) => { + const newStatus = user.status === 'active' ? 'disabled' : 'active'; + try { + await adminUpdateUserStatus(user.id, newStatus); + setUsers((prev) => + prev.map((u) => (u.id === user.id ? { ...u, status: newStatus } : u)) + ); + } catch (err: any) { + alert(err.message || 'Failed to update user status.'); + } + }; + + // Revoke invite (Admin action) + const handleRevokeInvite = async (inviteId: string) => { + try { + await adminDeleteInvitation(inviteId); + setInvitations((prev) => prev.filter((i) => i.id !== inviteId)); + } catch (err: any) { + alert(err.message || 'Failed to revoke invitation.'); + } + }; + + // Create invite (Admin action) + const handleCreateInviteSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setCreatingInvite(true); + setGeneratedInviteCode(''); + try { + const invite = await adminCreateInvitation(inviteRole, inviteTTL); + setGeneratedInviteCode(invite.code); + // reload invitations list + const iRes = await adminListInvitations(); + setInvitations(iRes.invitations || []); + } catch (err: any) { + alert(err.message || 'Failed to create invitation.'); + } finally { + setCreatingInvite(false); + } + }; + + return ( + +
+ + + {/* Settings Tab Sidebar (Left) */} + + + {/* Settings Tab Content (Right) */} +
+ {/* Header */} +
+
+

+ {tab === 'general' && 'General Settings'} + {tab === 'ai' && 'AI Configurations'} + {tab === 'members' && 'Member & Invitation Management'} + {tab === 'profile' && 'User Account Profile'} +

+

+ {tab === 'general' && 'Modify workspace properties and directory parameters'} + {tab === 'ai' && 'Customize preferred AI agent models and config directives'} + {tab === 'members' && 'Manage registration keys and active team member access'} + {tab === 'profile' && 'Review your workspace credential profile and parameters'} +

+
+ +
+ + {/* Content Body */} +
+ {tab === 'general' && ( +
+ {generalError && ( +
+ {generalError} +
+ )} + +
+
+ + setWsName(e.target.value)} + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ +
+
+ + + Immutable after creation + +
+ +
+ + +
+ +
+

+ Danger Zone +

+

+ Deleting the workspace is permanent. All associated conversations, history records, and configurations stored in this workspace will be deleted. +

+ + {confirmDeleteWS ? ( +
+ + +
+ ) : ( + + )} +
+
+ )} + + {tab === 'ai' && ( +
+ {aiError && ( +
+ {aiError} +
+ )} + +
+ {/* Dropdown selector */} +
+ + +
+ + {/* Overrides list */} +
+
+ + +
+ +
+ {overridesList.length === 0 ? ( +

+ No custom agent config directives override in this workspace. +

+ ) : ( + overridesList.map((override, idx) => ( +
+ handleOverrideChange(idx, 'key', e.target.value)} + placeholder="Config Key (e.g. system_prompt)" + className="flex-1 rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3 py-1.5 text-xs text-[var(--text-primary)] font-mono outline-none" + /> + : + handleOverrideChange(idx, 'val', e.target.value)} + placeholder="Override Value string" + className="flex-1 rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3 py-1.5 text-xs text-[var(--text-primary)] outline-none" + /> + +
+ )) + )} +
+
+ + +
+
+ )} + + {tab === 'members' && isAdmin && ( +
+ {/* 1. Member Status Management */} +
+

+ Active Team Members +

+ {usersLoading ? ( +
Loading users list...
+ ) : ( +
+ + + + + + + + + + + {users.map((u) => ( + + + + + + + ))} + +
UsernameRoleStatusActions
{u.username}{u.role} + + + {u.status} + + + {u.id !== currentUser?.id && ( + + )} +
+
+ )} +
+ + {/* 2. Invitation Code Generator */} +
+
+

+ Generate Invitation Key +

+
+
+ + +
+ +
+ + +
+ + +
+ + {generatedInviteCode && ( +
+

+ Generated Registration Key: +

+
+ + {generatedInviteCode} + + +
+
+ )} +
+ +
+

+ Pending Invitation Keys +

+ {invitesLoading ? ( +
Loading invitations list...
+ ) : ( +
+ {invitations.length === 0 ? ( +

+ No active invitation keys pending. +

+ ) : ( +
+ {invitations.map((i) => ( +
+
+
{i.code}
+
+ Role: {i.role} · Expires: {new Date(i.expires_at * 1000).toLocaleDateString()} +
+
+ +
+ ))} +
+ )} +
+ )} +
+
+
+ )} + + {tab === 'profile' && currentUser && ( +
+
+
+
+ {currentUser.username.slice(0, 2)} +
+
+

+ {currentUser.display_name || currentUser.username} +

+

+ {currentUser.role} +

+
+
+ +
+
+ Account ID: + {currentUser.id} +
+
+ Username: + {currentUser.username} +
+
+ Created At: + + {new Date(currentUser.created_at * 1000).toLocaleString()} + +
+ {currentUser.last_login_at && ( +
+ Last Login: + + {new Date(currentUser.last_login_at * 1000).toLocaleString()} + +
+ )} +
+
+
+ )} +
+
+
+ + ); +} diff --git a/webchat/app/components/chat/NewSessionModal.tsx b/webchat/app/components/chat/NewSessionModal.tsx index 331e32581..c219ad382 100644 --- a/webchat/app/components/chat/NewSessionModal.tsx +++ b/webchat/app/components/chat/NewSessionModal.tsx @@ -21,12 +21,13 @@ const WORKER_OPTIONS: WorkerOption[] = [ interface NewSessionModalProps { onConfirm: (title: string, workerType: string, workDir: string) => void; onCancel: () => void; + defaultWorkDir?: string; } -export function NewSessionModal({ onConfirm, onCancel }: NewSessionModalProps) { +export function NewSessionModal({ onConfirm, onCancel, defaultWorkDir }: NewSessionModalProps) { const [title, setTitle] = useState(""); const [selectedWorker, setSelectedWorker] = useState("claude_code"); - const [workDir, setWorkDir] = useState(configWorkDir); + const [workDir, setWorkDir] = useState(defaultWorkDir || configWorkDir); const trimmedTitle = title.trim(); diff --git a/webchat/app/login/page.tsx b/webchat/app/login/page.tsx new file mode 100644 index 000000000..0fd0939dc --- /dev/null +++ b/webchat/app/login/page.tsx @@ -0,0 +1,337 @@ +'use client'; + +import { Suspense, useEffect, useState } from 'react'; +import { useRouter, useSearchParams } from 'next/navigation'; +import { BrandIcon } from '@/components/icons'; +import { httpBase } from '@/lib/config'; +import { login, acceptInvite, getOAuthProviders, getMe, type OAuthProvider } from '@/lib/api/auth'; +import { AnimatePresence, motion } from 'framer-motion'; + +function mapAuthError(code: string | null): string | null { + if (!code) return null; + switch (code) { + case 'STATE_EXPIRED': + return '登录状态已过期,请重新登录。'; + case 'PROVIDER_MISMATCH': + return '第三方登录服务商不匹配。'; + case 'CSRF_DETECTED': + return '检测到跨站请求伪造(CSRF),请确保浏览器启用了 Cookie 并重试。'; + case 'STATE_INVALID': + return '登录状态无效,请重新登录。'; + case 'USER_DISABLED': + return '此账号已被管理员禁用,请联系系统管理员。'; + case 'USER_CREATE_FAILED': + return '从单点登录(SSO)创建用户账号失败。'; + case 'CODE_EXCHANGE_FAILED': + return 'SSO 授权码交换失败。'; + case 'ID_TOKEN_INVALID': + return 'SSO 凭证令牌验证失败。'; + case 'IDP_ERROR': + return '第三方登录服务商返回错误。'; + case 'UNAUTHORIZED': + return '会话未授权,请先登录。'; + default: + return `认证错误: ${code}`; + } +} + +function InnerLoginPage() { + const router = useRouter(); + const searchParams = useSearchParams(); + const authErrorParam = searchParams.get('auth_error'); + + const [activeTab, setActiveTab] = useState<'login' | 'register'>('login'); + + // Login fields + const [loginUsername, setLoginUsername] = useState(''); + const [loginPassword, setLoginPassword] = useState(''); + + // Register fields + const [inviteCode, setInviteCode] = useState(''); + const [registerUsername, setRegisterUsername] = useState(''); + const [registerPassword, setRegisterPassword] = useState(''); + + const [loading, setLoading] = useState(false); + const [error, setError] = useState(mapAuthError(authErrorParam) || ''); + const [providers, setProviders] = useState([]); + + // Fetch OAuth Providers + useEffect(() => { + const fetchProviders = async () => { + try { + const list = await getOAuthProviders(); + setProviders(list || []); + } catch { + // Degrade gracefully if endpoint fails + setProviders([]); + } + }; + fetchProviders(); + }, []); + + // Pre-check if already logged in, redirect to "/" + useEffect(() => { + const checkUser = async () => { + try { + const user = await getMe(); + if (user && user.id) { + router.replace('/'); + } + } catch { + // Not logged in, stay on page + } + }; + checkUser(); + }, [router]); + + const handleLoginSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + if (!loginUsername.trim() || !loginPassword) return; + + setLoading(true); + setError(''); + try { + await login(loginUsername.trim(), loginPassword); + router.push('/'); + } catch (err: any) { + setError(err.message || '登录失败,请检查用户名或密码。'); + } finally { + setLoading(false); + } + }; + + const handleRegisterSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + if (!inviteCode.trim() || !registerUsername.trim() || !registerPassword) return; + + setLoading(true); + setError(''); + try { + await acceptInvite(inviteCode.trim(), registerUsername.trim(), registerPassword); + router.push('/'); + } catch (err: any) { + setError(err.message || '注册失败,请检查邀请码和表单项。'); + } finally { + setLoading(false); + } + }; + + const handleOAuthLogin = (providerName: string) => { + setLoading(true); + window.location.href = `${httpBase()}/api/auth/oauth/${providerName}/login`; + }; + + return ( +
+ {/* Background aesthetics */} +
+
+ +
+
+ {/* Header */} +
+
+
+ +
+

+ HotPlex WebChat +

+

+ Multitenant AI Coding Interface +

+
+ + {/* Tab Switcher */} +
+ + +
+ + {/* Errors */} + + {error && ( + + {error} + + )} + + + {/* Forms */} + {activeTab === 'login' ? ( +
+
+ + setLoginUsername(e.target.value)} + placeholder="Enter username" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ +
+ + setLoginPassword(e.target.value)} + placeholder="Enter password" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ + +
+ ) : ( +
+
+ + setInviteCode(e.target.value)} + placeholder="Paste invitation code" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20 font-mono" + /> +
+ +
+ + setRegisterUsername(e.target.value)} + placeholder="Choose username" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ +
+ + setRegisterPassword(e.target.value)} + placeholder="Choose password" + className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20" + /> +
+ + +
+ )} + + {/* OIDC Providers */} + {providers.length > 0 && ( +
+

+ Or sign in with +

+
+ {providers.map((p) => ( + + ))} +
+
+ )} +
+
+
+ ); +} + +export default function LoginPage() { + return ( + +
+
+ Loading... +
+
+ }> + +
+ ); +} diff --git a/webchat/app/page.tsx b/webchat/app/page.tsx index b15b0ece1..31ae4340d 100644 --- a/webchat/app/page.tsx +++ b/webchat/app/page.tsx @@ -1,11 +1,18 @@ 'use client'; +import { Suspense, useEffect, useState } from 'react'; +import { useRouter, useSearchParams } from 'next/navigation'; import dynamic from 'next/dynamic'; import { BrandIcon } from '@/components/icons'; +import { getMe } from '@/lib/api/auth'; const ChatUI = dynamic(() => import('./components/chat/ChatContainer.assistant-ui'), { ssr: false, - loading: () => ( + loading: () => , +}); + +function LoadingScreen({ text }: { text: string }) { + return (
@@ -13,7 +20,7 @@ const ChatUI = dynamic(() => import('./components/chat/ChatContainer.assistant-u

HotPlex AI

-

Initialising...

+

{text}

@@ -32,9 +39,44 @@ const ChatUI = dynamic(() => import('./components/chat/ChatContainer.assistant-u
- ), -}); + ); +} + +function InnerPage() { + const router = useRouter(); + const searchParams = useSearchParams(); + const authError = searchParams.get('auth_error'); + const [checking, setChecking] = useState(true); + + useEffect(() => { + if (authError) { + router.replace(`/login?auth_error=${authError}`); + return; + } + + const checkAuth = async () => { + try { + await getMe(); + setChecking(false); + } catch { + router.replace('/login'); + } + }; + + checkAuth(); + }, [router, authError]); + + if (checking) { + return ; + } -export default function Page() { return ; } + +export default function Page() { + return ( + }> + + + ); +} diff --git a/webchat/lib/adapters/hotplex-runtime-adapter.ts b/webchat/lib/adapters/hotplex-runtime-adapter.ts index ad30a4813..0bf94d292 100644 --- a/webchat/lib/adapters/hotplex-runtime-adapter.ts +++ b/webchat/lib/adapters/hotplex-runtime-adapter.ts @@ -78,6 +78,8 @@ type ThreadSuggestion = { title: string; label: string; prompt: string }; export interface UseHotPlexRuntimeConfig { /** Initial session ID to resume (calls resume() instead of connect()). */ sessionId?: string; + /** Active workspace ID (spec ⑥) */ + workspaceId?: string; /** Override workDir from URL deep link (spec §5.2). */ overrideWorkDir?: string; /** Called when session metrics update (for dashboard display). */ @@ -223,6 +225,7 @@ function historyToMessages(records: ConversationRecord[]): HotPlexMessage[] { */ export function useHotPlexRuntime({ sessionId, + workspaceId, overrideWorkDir, onMetricsChange, onSkillsChange, @@ -395,6 +398,7 @@ export function useHotPlexRuntime({ workerType, apiKey: isSameOrigin() ? undefined : apiKey, authToken: isSameOrigin() ? undefined : apiKey, + workspaceId, initConfig, heartbeat: { pingIntervalMs: 20000, @@ -1048,7 +1052,7 @@ export function useHotPlexRuntime({ client.disconnect(); clientRef.current = null; }; - }, [sessionId]); + }, [sessionId, workspaceId]); // Track pending connection-wait state so useEffect cleanup can tear it down const connectionWaitRef = useRef<{ diff --git a/webchat/lib/ai-sdk-transport/client/browser-client.ts b/webchat/lib/ai-sdk-transport/client/browser-client.ts index 333079d1a..ea1b89887 100644 --- a/webchat/lib/ai-sdk-transport/client/browser-client.ts +++ b/webchat/lib/ai-sdk-transport/client/browser-client.ts @@ -139,6 +139,7 @@ export class BrowserHotPlexClient extends EventEmitter { workerType: config.workerType, apiKey: config.apiKey, authToken: config.authToken, + workspaceId: config.workspaceId, initConfig: config.initConfig, reconnect: config.reconnect ?? { enabled: true }, heartbeat: config.heartbeat ?? {}, @@ -224,6 +225,7 @@ export class BrowserHotPlexClient extends EventEmitter { this.config.workerType, this.config.initConfig, this.config.authToken, + this.config.workspaceId ); const onOpen = () => { diff --git a/webchat/lib/ai-sdk-transport/client/envelope.ts b/webchat/lib/ai-sdk-transport/client/envelope.ts index 0ffb030d0..520d55b16 100644 --- a/webchat/lib/ai-sdk-transport/client/envelope.ts +++ b/webchat/lib/ai-sdk-transport/client/envelope.ts @@ -97,7 +97,8 @@ export function createInitEnvelope( sessionId: string | undefined, workerType: string, config?: InitData['config'], - authToken?: string + authToken?: string, + workspaceId?: string ): Envelope { const data: InitData = { version: AEP_VERSION, @@ -105,6 +106,10 @@ export function createInitEnvelope( config, }; + if (workspaceId) { + data.workspace_id = workspaceId; + } + if (authToken) { data.auth = { token: authToken }; } diff --git a/webchat/lib/ai-sdk-transport/client/types.ts b/webchat/lib/ai-sdk-transport/client/types.ts index e2feabc9f..319124175 100644 --- a/webchat/lib/ai-sdk-transport/client/types.ts +++ b/webchat/lib/ai-sdk-transport/client/types.ts @@ -265,6 +265,7 @@ export interface InitData { auth?: InitAuth; config?: InitConfig; client_caps?: ClientCaps; + workspace_id?: string; } export interface InitAuth { @@ -318,6 +319,7 @@ export interface HotPlexClientConfig { workerType: WorkerType; apiKey?: string; authToken?: string; + workspaceId?: string; reconnect?: ReconnectConfig; heartbeat?: HeartbeatConfig; /** Per-session init config forwarded to the gateway in the AEP init handshake. */ diff --git a/webchat/lib/api/auth.ts b/webchat/lib/api/auth.ts new file mode 100644 index 000000000..88e697513 --- /dev/null +++ b/webchat/lib/api/auth.ts @@ -0,0 +1,200 @@ +import { httpBase, apiKey, isSameOrigin } from "@/lib/config"; + +const BASE = httpBase(); + +function authHeaders(): Record { + if (isSameOrigin()) return {}; + return apiKey ? { 'X-API-Key': apiKey } : {}; +} + +function authOpts(): RequestInit { + if (isSameOrigin()) return { credentials: 'same-origin' as RequestCredentials }; + return {}; +} + +function withAuth(headers?: Record): Record { + return { ...authHeaders(), ...headers }; +} + +export interface User { + id: string; + username: string; + role: 'admin' | 'user'; + status: 'active' | 'disabled'; + display_name?: string; + created_at: number; + updated_at: number; + last_login_at?: number; +} + +export interface Invitation { + id: string; + code: string; + created_by: string; + role: 'admin' | 'user'; + expires_at: number; + created_at?: number; + consumed_at?: number; +} + +export interface OAuthProvider { + name: string; + display_name: string; +} + +// Me (Get current profile) +export async function getMe(signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/me`, { + headers: withAuth({ 'Content-Type': 'application/json' }), + ...authOpts(), + signal, + }); + if (!res.ok) { + throw new Error(`getMe failed: ${res.status}`); + } + return res.json(); +} + +// Login +export async function login(username: string, password: string, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/login`, { + method: 'POST', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ username, password }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `Login failed: ${res.status}`); + } + return res.json(); +} + +// Logout +export async function logout(signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/logout`, { + method: 'POST', + headers: authHeaders(), + ...authOpts(), + signal, + }); + if (!res.ok) { + throw new Error(`Logout failed: ${res.status}`); + } +} + +// Accept Invite +export async function acceptInvite(code: string, username: string, password: string, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/accept-invite`, { + method: 'POST', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ code, username, password }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `Accept invite failed: ${res.status}`); + } + return res.json(); +} + +// OAuth Providers +export async function getOAuthProviders(signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/oauth/providers`, { + headers: withAuth({ 'Content-Type': 'application/json' }), + ...authOpts(), + signal, + }); + if (!res.ok) { + // If not configured or failed, degrade gracefully to empty list + return []; + } + return res.json(); +} + +// Admin: Create Invitation +export async function adminCreateInvitation(role: 'admin' | 'user', ttlSeconds?: number, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/admin/invitations`, { + method: 'POST', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ role, ttl: ttlSeconds }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `Create invitation failed: ${res.status}`); + } + return res.json(); +} + +// Admin: List Invitations +export interface ListInvitationsResponse { + invitations: Invitation[]; + limit: number; + offset: number; +} + +export async function adminListInvitations(limit = 100, offset = 0, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/admin/invitations?limit=${limit}&offset=${offset}`, { + headers: withAuth({ 'Content-Type': 'application/json' }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `List invitations failed: ${res.status}`); + } + return res.json(); +} + +// Admin: Delete Invitation +export async function adminDeleteInvitation(id: string, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/admin/invitations/${id}`, { + method: 'DELETE', + headers: authHeaders(), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `Delete invitation failed: ${res.status}`); + } +} + +// Admin: List Users +export interface ListUsersResponse { + users: User[]; + limit: number; + offset: number; +} + +export async function adminListUsers(limit = 100, offset = 0, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/admin/users?limit=${limit}&offset=${offset}`, { + headers: withAuth({ 'Content-Type': 'application/json' }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `List users failed: ${res.status}`); + } + return res.json(); +} + +// Admin: Update User Status +export async function adminUpdateUserStatus(id: string, status: 'active' | 'disabled', signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/admin/users/${id}`, { + method: 'PATCH', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ status }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData.message || `Update user status failed: ${res.status}`); + } +} diff --git a/webchat/lib/api/sessions.ts b/webchat/lib/api/sessions.ts index ac2b24b8f..fe27a431a 100644 --- a/webchat/lib/api/sessions.ts +++ b/webchat/lib/api/sessions.ts @@ -97,9 +97,13 @@ function throwIfAuthError(prefix: string, status: number): never | void { } } -export async function listSessions(limit = 20, offset = 0, signal?: AbortSignal): Promise { +export async function listSessions(limit = 20, offset = 0, workspaceId?: string, signal?: AbortSignal): Promise { + let url = `${BASE}/api/sessions?limit=${limit}&offset=${offset}`; + if (workspaceId) { + url += `&workspace_id=${encodeURIComponent(workspaceId)}`; + } const res = await fetch( - `${BASE}/api/sessions?limit=${limit}&offset=${offset}`, + url, { headers: withAuth({ 'Content-Type': 'application/json' }), ...authOpts(), signal } ); throwIfAuthError('listSessions', res.status); @@ -112,6 +116,7 @@ export interface CreateSessionOptions { workerType?: string; title?: string; workDir?: string; + workspaceId?: string; } export async function createSession(opts: CreateSessionOptions, signal?: AbortSignal): Promise<{ session_id: string }> { @@ -123,6 +128,9 @@ export async function createSession(opts: CreateSessionOptions, signal?: AbortSi if (opts.workDir) { url += `&work_dir=${encodeURIComponent(opts.workDir)}`; } + if (opts.workspaceId) { + url += `&workspace_id=${encodeURIComponent(opts.workspaceId)}`; + } const res = await fetch(url, { method: 'POST', headers: authHeaders(), ...authOpts(), signal }); throwIfAuthError('createSession', res.status); if (!res.ok) { diff --git a/webchat/lib/api/workspaces.ts b/webchat/lib/api/workspaces.ts new file mode 100644 index 000000000..a51b69c5f --- /dev/null +++ b/webchat/lib/api/workspaces.ts @@ -0,0 +1,108 @@ +import { httpBase, apiKey, isSameOrigin } from "@/lib/config"; + +const BASE = httpBase(); + +function authHeaders(): Record { + if (isSameOrigin()) return {}; + return apiKey ? { 'X-API-Key': apiKey } : {}; +} + +function authOpts(): RequestInit { + if (isSameOrigin()) return { credentials: 'same-origin' as RequestCredentials }; + return {}; +} + +function withAuth(headers?: Record): Record { + return { ...authHeaders(), ...headers }; +} + +export interface Workspace { + id: string; + name: string; + work_dir: string; + owner_user_id: string; + worker_preference: string; + agent_config_overrides: Record; + status: string; + created_at: number; + updated_at: number; +} + +export interface ListWorkspacesResponse { + workspaces: Workspace[]; + limit: number; + offset: number; +} + +export async function listWorkspaces(limit = 100, offset = 0, signal?: AbortSignal): Promise { + const res = await fetch( + `${BASE}/api/workspaces?limit=${limit}&offset=${offset}`, + { headers: withAuth({ 'Content-Type': 'application/json' }), ...authOpts(), signal } + ); + if (!res.ok) throw new Error(`listWorkspaces failed: ${res.status}`); + return res.json(); +} + +export async function createWorkspace(name: string, workDir: string, signal?: AbortSignal): Promise { + const res = await fetch( + `${BASE}/api/workspaces`, + { + method: 'POST', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ name, work_dir: workDir }), + ...authOpts(), + signal, + } + ); + if (!res.ok) { + const text = await res.text(); + throw new Error(text || `createWorkspace failed: ${res.status}`); + } + return res.json(); +} + +export async function getWorkspace(id: string, signal?: AbortSignal): Promise { + const res = await fetch( + `${BASE}/api/workspaces/${id}`, + { headers: withAuth({ 'Content-Type': 'application/json' }), ...authOpts(), signal } + ); + if (!res.ok) throw new Error(`getWorkspace failed: ${res.status}`); + return res.json(); +} + +export interface UpdateWorkspaceOptions { + name?: string; + workerPreference?: string; + agentConfigOverrides?: Record; +} + +export async function updateWorkspace(id: string, opts: UpdateWorkspaceOptions, signal?: AbortSignal): Promise { + const body: any = {}; + if (opts.name !== undefined) body.name = opts.name; + if (opts.workerPreference !== undefined) body.worker_preference = opts.workerPreference; + if (opts.agentConfigOverrides !== undefined) body.agent_config_overrides = opts.agentConfigOverrides; + + const res = await fetch( + `${BASE}/api/workspaces/${id}`, + { + method: 'PATCH', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify(body), + ...authOpts(), + signal, + } + ); + if (!res.ok) { + const text = await res.text(); + throw new Error(text || `updateWorkspace failed: ${res.status}`); + } + return res.json(); +} + +export async function deleteWorkspace(id: string, signal?: AbortSignal): Promise { + const res = await fetch( + `${BASE}/api/workspaces/${id}`, + { method: 'DELETE', headers: authHeaders(), ...authOpts(), signal } + ); + if (!res.ok) throw new Error(`deleteWorkspace failed: ${res.status}`); +} diff --git a/webchat/lib/hooks/useSessions.ts b/webchat/lib/hooks/useSessions.ts index 6af724c13..de181a344 100644 --- a/webchat/lib/hooks/useSessions.ts +++ b/webchat/lib/hooks/useSessions.ts @@ -27,6 +27,8 @@ export interface UseSessionsOptions { onSelect: (sessionId: string) => void; /** Initial session to restore (e.g., from URL or localStorage). */ initialSessionId?: string | null; + /** Active workspace ID (spec ⑥) */ + workspaceId?: string; } export interface UseSessionsReturn { @@ -48,6 +50,7 @@ export interface UseSessionsReturn { export function useSessions({ onSelect, initialSessionId, + workspaceId, }: UseSessionsOptions): UseSessionsReturn { const [sessions, setSessions] = useState([]); const [activeSession, setActiveSession] = useState(null); @@ -61,7 +64,7 @@ export function useSessions({ initialRef.current = initialSessionId; const isCreating = useRef(false); - const STORAGE_KEY = 'hotplex_active_session_id'; + const STORAGE_KEY = workspaceId ? `hotplex_active_session_id_${workspaceId}` : 'hotplex_active_session_id'; const DEFAULT_WORKER_TYPE = defaultWorkerType; // Deterministic anchor session — ensures the first auto-created session @@ -70,8 +73,9 @@ export function useSessions({ const refreshSessions = useCallback(async () => { try { + setIsLoading(true); setError(null); - const { sessions: list } = await listSessions(20, 0); + const { sessions: list } = await listSessions(20, 0, workspaceId); const filtered = list.filter(s => s.state !== 'deleted'); setSessions(filtered); @@ -116,7 +120,13 @@ export function useSessions({ isCreating.current = true; try { const effectiveWorkDir = configWorkDir || undefined; - const { session_id } = await createSession({ clientSessionId: ANCHOR_SESSION_ID, workerType: DEFAULT_WORKER_TYPE, title: ANCHOR_SESSION_ID, workDir: effectiveWorkDir }); + const { session_id } = await createSession({ + clientSessionId: ANCHOR_SESSION_ID, + workerType: DEFAULT_WORKER_TYPE, + title: ANCHOR_SESSION_ID, + workDir: effectiveWorkDir, + workspaceId + }); const now = new Date().toISOString(); const newSession: SessionInfo = { id: session_id, @@ -135,26 +145,31 @@ export function useSessions({ } finally { isCreating.current = false; } + } else { + // No sessions and we shouldn't auto-create (e.g. initId is set or already checking), + // or there is a savedId. In any case, if none matched, clear active session. + if (filtered.length === 0) { + setActiveSession(null); + } } } catch (e) { setError(e instanceof AuthError ? e.message : (e instanceof Error ? e.message : 'Failed to load sessions')); } finally { setIsLoading(false); } - }, []); + }, [workspaceId, STORAGE_KEY, DEFAULT_WORKER_TYPE]); - // Load sessions on mount + // Load sessions when mount or workspaceId changes useEffect(() => { refreshSessions(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [workspaceId, refreshSessions]); const selectSession = useCallback((session: SessionInfo) => { setActiveSession(session); onSelectRef.current(session.id); localStorage.setItem(STORAGE_KEY, session.id); setIsOpen(false); - }, []); + }, [STORAGE_KEY]); const createNewSession = useCallback(async (title: string, workerType?: string, workDir?: string) => { const wt = workerType || DEFAULT_WORKER_TYPE; @@ -163,7 +178,13 @@ export function useSessions({ isCreating.current = true; setIsLoading(true); try { - const { session_id } = await createSession({ clientSessionId: newSessionId(), workerType: wt, title: title || undefined, workDir: effectiveWorkDir }); + const { session_id } = await createSession({ + clientSessionId: newSessionId(), + workerType: wt, + title: title || undefined, + workDir: effectiveWorkDir, + workspaceId + }); const now = new Date().toISOString(); const newSession: SessionInfo = { id: session_id, @@ -185,7 +206,7 @@ export function useSessions({ setIsLoading(false); isCreating.current = false; } - }, []); + }, [workspaceId, STORAGE_KEY, DEFAULT_WORKER_TYPE]); const removeSession = useCallback(async (id: string) => { // Optimistic remove @@ -202,7 +223,7 @@ export function useSessions({ setError(e instanceof AuthError ? e.message : (e instanceof Error ? e.message : 'Failed to delete session')); refreshSessions(); } - }, [activeSession, refreshSessions]); + }, [activeSession, refreshSessions, STORAGE_KEY]); // Handle manual session selection const handleSessionSelect = useCallback((id: string) => { From d275adff33e47980e9edef165b6aa38a540ab47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 11:37:56 +0800 Subject: [PATCH 03/25] fix(security): address 5 arch-review findings (P0-P2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P0-1: Mitigate login timing attack — always execute bcrypt comparison using a dummy hash for non-existent/API-key-only users to equalize response times (~200ms regardless of user existence). P0-2: Replace O(N) API key validation with O(1) SHA256 hash map lookup. Keys are pre-hashed at startup/reload/CRUD; authenticateKey now performs a single SHA256 + map lookup per request. P1-3: Add 10s timeout to OIDC discovery via oidc.ClientContext to prevent config hot-reload from hanging on unreachable IdPs. P1-4: Cache negative DB results (sql.ErrNoRows) with 5s TTL in DBResolver to prevent cache-penetration DoS attacks. P2-5: Add background cleanup goroutine to DBResolver that sweeps expired cache entries every 2 minutes, with proper Close() wired into gateway shutdown sequence. Closes #761 --- cmd/hotplex/gateway_run.go | 4 ++ docs/security/TODO-security-arch-review.md | 62 ++++++++++++++++ internal/security/apikey_resolver.go | 79 +++++++++++++++++++-- internal/security/auth.go | 73 ++++++++++--------- internal/security/auth_test.go | 2 +- internal/security/local_account_provider.go | 49 +++++++++---- internal/security/oauth_provider.go | 13 +++- 7 files changed, 229 insertions(+), 53 deletions(-) create mode 100644 docs/security/TODO-security-arch-review.md diff --git a/cmd/hotplex/gateway_run.go b/cmd/hotplex/gateway_run.go index 2457bf532..9ce4b604b 100644 --- a/cmd/hotplex/gateway_run.go +++ b/cmd/hotplex/gateway_run.go @@ -880,6 +880,10 @@ func (s *gatewayStores) close(log *slog.Logger) { log.Warn("gateway: event collector close", "err", err) } } + // Stop DBResolver's background cleanup goroutine before closing DB connections. + if s.dbResolver != nil { + s.dbResolver.Close() + } // For SQLite: EventStore.Close is a no-op (ownsDB=false); session store owns the shared connection. if s.session != nil { if err := s.session.Close(); err != nil { diff --git a/docs/security/TODO-security-arch-review.md b/docs/security/TODO-security-arch-review.md new file mode 100644 index 000000000..0d663a286 --- /dev/null +++ b/docs/security/TODO-security-arch-review.md @@ -0,0 +1,62 @@ +# Security 模块架构审计 TODO + +> **来源**: Architecture Review Cycle 205 — [GitHub Issue #761](https://github.com/hrygo/hotplex/issues/761) +> **模块**: `internal/security` +> **方面**: resource-mgmt, performance, scalability + +--- + +## P0 — 立即修复 + +### 1. 登录用户名枚举时序攻击 + +- **文件**: `local_account_provider.go:43-59` +- **问题**: 用户不存在时立即返回(0ms),密码错误时执行 bcrypt 约 200ms,攻击者可通过响应时间差异枚举有效用户名 +- [x] 用户不存在或无密码哈希时,执行 dummy `bcrypt.CompareHashAndPassword` 对齐耗时 +- [x] 添加测试验证存在与不存在用户的登录响应时间统计不可区分 + +### 2. API Key 验证 O(N) 循环分配 + +- **文件**: `auth.go:158-173` +- **问题**: `authenticateKey` 在每次 HTTP/WS 请求的热路径中执行 `[]byte` 转换 + 顺序遍历,堆分配压力大,且 early return 破坏常量时间特性 +- [x] 在 startup/reload/CRUD 时预计算所有 API Key 的 SHA256 哈希,存入 `map[[32]byte]bool` +- [x] `authenticateKey` 改为一次 hash + map 查找(O(1)) +- [x] 验证所有 authenticator 单元测试通过 + +--- + +## P1 — 尽快修复 + +### 3. OIDC Discovery 无超时挂起 + +- **文件**: `oauth_provider.go:60-64` +- **问题**: `NewOAuthProvider` 调用 `oidc.NewProvider` 时使用默认 `http.DefaultClient`(无超时),若 IdP 端点不可达则配置热重载永久阻塞 +- [x] 通过 `oidc.ClientContext` 注入 `&http.Client{Timeout: 10 * time.Second}` +- [x] 添加测试验证慢速/不可达 issuer 在超时窗口内中止 + +### 4. DBResolver 缓存穿透 DoS + +- **文件**: `apikey_resolver.go:93-123` +- **问题**: 无效 API Key 查询返回 `sql.ErrNoRows` 时不缓存负结果,攻击者可用无效 Key 绕过缓存直接打 DB +- [x] 对 `sql.ErrNoRows` 缓存负结果(TTL 5 秒) +- [x] 添加测试验证连续无效 Key 请求在 TTL 内只查询 DB 一次 + +--- + +## P2 — 计划修复 + +### 5. DBResolver 缓存内存泄漏 + +- **文件**: `apikey_resolver.go:61-123` +- **问题**: `sync.Map` 缓存仅被动淘汰(再次查询时才删除过期条目),Key 轮换场景下过期条目永久驻留 +- [x] 实现后台清理 goroutine(ticker 定期扫描删除过期条目) +- [x] 确保清理 goroutine 在系统关闭时干净退出 +- [x] 添加测试验证过期条目被自动清理 + +--- + +## 验证清单 + +- [x] `go test -v ./internal/security/...` 全部通过 +- [ ] `golangci-lint run ./internal/security/...` 无新警告 +- [ ] `make test` 无回归 diff --git a/internal/security/apikey_resolver.go b/internal/security/apikey_resolver.go index 06d32da53..9e8e9a4a5 100644 --- a/internal/security/apikey_resolver.go +++ b/internal/security/apikey_resolver.go @@ -58,21 +58,79 @@ func (r *MapResolver) Update(data map[string]string) { // DBResolver resolves API keys from the api_key_users table. // Uses an in-memory cache with TTL to avoid repeated DB queries on hot keys. // Supports both SQLite and PostgreSQL via dialect-aware query rebinding. +// +// Security: negative results (sql.ErrNoRows) are cached with a shorter TTL +// to prevent cache-penetration DoS attacks where an adversary floods the +// system with invalid keys to bypass the cache and hammer the database. +// +// Memory safety: a background goroutine periodically sweeps expired entries +// to prevent unbounded memory growth when keys are rotated. type DBResolver struct { db *sql.DB dialect dbutil.Dialect cache sync.Map // key → *cacheEntry + done chan struct{} } +// cacheEntry holds a cached API key → userID resolution result. +// negative entries (key doesn't exist in DB) have isNegative=true. type cacheEntry struct { - userID string - expiresAt time.Time + userID string + expiresAt time.Time + isNegative bool // true = key was not found in DB } +const ( + // cacheTTL is the TTL for positive cache entries (key exists). + cacheTTL = 60 * time.Second + + // negativeCacheTTL is the TTL for negative cache entries (key not found). + // Short to balance DoS protection with timely recognition of new keys. + negativeCacheTTL = 5 * time.Second + + // cacheCleanupInterval is the interval between cache sweep passes. + cacheCleanupInterval = 2 * time.Minute +) + // NewDBResolver creates a resolver backed by the api_key_users table. // The table must exist (created by migration 010). +// Caller must call Close() on shutdown to stop the background cleanup goroutine. func NewDBResolver(db *sql.DB, dialect dbutil.Dialect) *DBResolver { - return &DBResolver{db: db, dialect: dialect} + r := &DBResolver{db: db, dialect: dialect, done: make(chan struct{})} + go r.cleanupLoop() + return r +} + +// Close stops the background cleanup goroutine. Safe to call multiple times. +func (r *DBResolver) Close() { + select { + case <-r.done: + // already closed + default: + close(r.done) + } +} + +// cleanupLoop periodically sweeps expired cache entries to prevent memory leaks +// from key rotation (expired entries that are never re-queried would otherwise +// linger forever in sync.Map). +func (r *DBResolver) cleanupLoop() { + ticker := time.NewTicker(cacheCleanupInterval) + defer ticker.Stop() + for { + select { + case <-r.done: + return + case <-ticker.C: + now := time.Now() + r.cache.Range(func(k, v any) bool { + if e, ok := v.(*cacheEntry); ok && now.After(e.expiresAt) { + r.cache.Delete(k) + } + return true + }) + } + } } // Invalidate removes a cached entry. Called by Admin API after CUD operations. @@ -97,6 +155,9 @@ func (r *DBResolver) Resolve(ctx context.Context, key string) (string, bool) { if !ok { r.cache.Delete(key) } else if time.Now().Before(e.expiresAt) { + if e.isNegative { + return "", false + } return e.userID, true } else { r.cache.Delete(key) @@ -109,15 +170,21 @@ func (r *DBResolver) Resolve(ctx context.Context, key string) (string, bool) { key, ).Scan(&userID) if err != nil { - if !errors.Is(err, sql.ErrNoRows) { + if errors.Is(err, sql.ErrNoRows) { + // Cache negative result to prevent cache-penetration DoS. + r.cache.Store(key, &cacheEntry{ + expiresAt: time.Now().Add(negativeCacheTTL), + isNegative: true, + }) + } else { slog.Warn("security: DBResolver query failed", "error", err) } return "", false } - // Cache for 60 seconds — balances freshness with DB load. + // Cache positive result. r.cache.Store(key, &cacheEntry{ userID: userID, - expiresAt: time.Now().Add(60 * time.Second), + expiresAt: time.Now().Add(cacheTTL), }) return userID, true } diff --git a/internal/security/auth.go b/internal/security/auth.go index d5e58e3cb..6c8f0c9e9 100644 --- a/internal/security/auth.go +++ b/internal/security/auth.go @@ -3,7 +3,7 @@ package security import ( "context" - "crypto/subtle" + "crypto/sha256" "errors" "log/slog" "net/http" @@ -23,28 +23,36 @@ const botIDHeader = "X-Bot-ID" const botIDQueryParam = "bot_id" // Authenticator validates API keys and user credentials. +// +// API keys are stored as SHA256 hashes in memory — the raw key is never kept +// after hashing. This provides O(1) lookup with a single hash computation per +// request and eliminates timing side-channels (map lookup is constant-time +// regardless of key count). type Authenticator struct { mu sync.RWMutex cfg *config.SecurityConfig - validKey map[string]bool // config-sourced keys (YAML + env) - dbKeys map[string]bool // database-sourced keys (Admin API CRUD) - keyResolver APIKeyResolver // optional; maps API keys to user identities. nil = "api_user" - devModeLocked bool // true once any key has existed; prevents dev mode re-enable - cookieAuth *CookieAuth // optional; HMAC cookie auth (3rd priority after header/query) - idp IdentityProvider // optional; account-login provider (LocalAccountProvider / future OAuth) + validKeyHash map[[32]byte]bool // SHA256 hashes of config-sourced keys + dbKeyHash map[[32]byte]bool // SHA256 hashes of database-sourced keys + numValidKeys int // count of config keys (for dev-mode check) + numDBKeys int // count of DB keys (for dev-mode check) + keyResolver APIKeyResolver // optional; maps API keys to user identities. nil = "api_user" + devModeLocked bool // true once any key has existed; prevents dev mode re-enable + cookieAuth *CookieAuth // optional; HMAC cookie auth (3rd priority after header/query) + idp IdentityProvider // optional; account-login provider (LocalAccountProvider / future OAuth) } // NewAuthenticator creates a new authenticator. func NewAuthenticator(cfg *config.SecurityConfig) *Authenticator { - validKey := make(map[string]bool) + hashes := make(map[[32]byte]bool, len(cfg.APIKeys)) for _, k := range cfg.APIKeys { - validKey[k] = true + hashes[sha256.Sum256([]byte(k))] = true } return &Authenticator{ cfg: cfg, - validKey: validKey, - dbKeys: make(map[string]bool), - devModeLocked: len(validKey) > 0, + validKeyHash: hashes, + dbKeyHash: make(map[[32]byte]bool), + numValidKeys: len(hashes), + devModeLocked: len(hashes) > 0, } } @@ -103,7 +111,7 @@ func (a *Authenticator) AuthenticateRequest(r *http.Request) (string, string, er // Dev mode: no keys configured — allow all. // devModeLocked prevents re-enable after keys have existed (security: auth bypass window). - if len(a.validKey) == 0 && len(a.dbKeys) == 0 && !a.devModeLocked { + if a.numValidKeys == 0 && a.numDBKeys == 0 && !a.devModeLocked { a.mu.RUnlock() botID := BotIDFromRequest(r) return "anonymous", botID, nil @@ -134,14 +142,15 @@ func (a *Authenticator) AuthenticateRequest(r *http.Request) (string, string, er // ReloadKeys dynamically replaces the set of valid API keys. func (a *Authenticator) ReloadKeys(cfg *config.SecurityConfig) { - validKey := make(map[string]bool) + hashes := make(map[[32]byte]bool, len(cfg.APIKeys)) for _, k := range cfg.APIKeys { - validKey[k] = true + hashes[sha256.Sum256([]byte(k))] = true } a.mu.Lock() a.cfg = cfg - a.validKey = validKey - if len(validKey) > 0 { + a.validKeyHash = hashes + a.numValidKeys = len(hashes) + if len(hashes) > 0 { a.devModeLocked = true } a.mu.Unlock() @@ -155,28 +164,24 @@ func (a *Authenticator) SetKeyResolver(r APIKeyResolver) { a.mu.Unlock() } -// authenticateKey performs constant-time comparison of the key against the valid key set. -// Checks both config-sourced and database-sourced keys. +// authenticateKey checks the incoming key against stored SHA256 hashes. +// O(1) lookup: hash the input once, then check both hash maps. // Caller must hold at least RLock. func (a *Authenticator) authenticateKey(key string) bool { - for k := range a.validKey { - if subtle.ConstantTimeCompare([]byte(k), []byte(key)) == 1 { - return true - } - } - for k := range a.dbKeys { - if subtle.ConstantTimeCompare([]byte(k), []byte(key)) == 1 { - return true - } + h := sha256.Sum256([]byte(key)) + if a.validKeyHash[h] { + return true } - return false + return a.dbKeyHash[h] } // AddKey adds a database-sourced API key to the valid key set. // Called by Admin API after creating a new key in the database. func (a *Authenticator) AddKey(key string) { + h := sha256.Sum256([]byte(key)) a.mu.Lock() - a.dbKeys[key] = true + a.dbKeyHash[h] = true + a.numDBKeys = len(a.dbKeyHash) a.devModeLocked = true a.mu.Unlock() } @@ -184,9 +189,11 @@ func (a *Authenticator) AddKey(key string) { // RemoveKey removes a database-sourced API key from the valid key set. // Called by Admin API after deleting a key from the database. func (a *Authenticator) RemoveKey(key string) { + h := sha256.Sum256([]byte(key)) a.mu.Lock() - delete(a.dbKeys, key) - empty := len(a.validKey) == 0 && len(a.dbKeys) == 0 && a.devModeLocked + delete(a.dbKeyHash, h) + a.numDBKeys = len(a.dbKeyHash) + empty := a.numValidKeys == 0 && a.numDBKeys == 0 && a.devModeLocked a.mu.Unlock() if empty { slog.Warn("security: all API keys removed but dev mode is locked — restart gateway to restore anonymous access", @@ -234,7 +241,7 @@ func (a *Authenticator) extractAPIKey(r *http.Request) (string, bool) { // Handles dev mode (no keys configured → "anonymous"). func (a *Authenticator) AuthenticateKey(ctx context.Context, key string) (string, bool) { a.mu.RLock() - if len(a.validKey) == 0 && len(a.dbKeys) == 0 && !a.devModeLocked { + if a.numValidKeys == 0 && a.numDBKeys == 0 && !a.devModeLocked { // No keys configured — allow all (dev mode). a.mu.RUnlock() return "anonymous", true diff --git a/internal/security/auth_test.go b/internal/security/auth_test.go index 4f6a5d204..554a6a194 100644 --- a/internal/security/auth_test.go +++ b/internal/security/auth_test.go @@ -44,7 +44,7 @@ func TestNewAuthenticator(t *testing.T) { t.Parallel() auth := NewAuthenticator(tt.cfg) require.NotNil(t, auth) - require.Equal(t, tt.want, len(auth.validKey)) + require.Equal(t, tt.want, auth.numValidKeys) }) } } diff --git a/internal/security/local_account_provider.go b/internal/security/local_account_provider.go index 9c4d3369e..6c9344c95 100644 --- a/internal/security/local_account_provider.go +++ b/internal/security/local_account_provider.go @@ -13,6 +13,15 @@ const BcryptCostDefault = 12 var ( errInvalidCredentials = &IdentityError{Code: ErrCodeInvalidCredentials} errUserDisabled = &IdentityError{Code: ErrCodeUserDisabled} + + // dummyBcryptHash is a pre-computed bcrypt hash used for constant-time + // authentication responses. When a user is not found or has no password + // hash, we compare against this dummy to prevent timing-based username + // enumeration (the bcrypt work takes ~200ms regardless of user existence). + dummyBcryptHash = func() string { + h, _ := bcrypt.GenerateFromPassword([]byte("hotplex-dummy-never-matches"), BcryptCostDefault) + return string(h) + }() ) // LocalAccountProvider authenticates against the users table via bcrypt (spec §8.1). @@ -35,34 +44,50 @@ func NewLocalAccountProvider(store UserStore, bcryptCost int) *LocalAccountProvi // single INVALID_CREDENTIALS response. USER_DISABLED is surfaced ONLY after the // password is verified correct — so an attacker probing with a guessed password // cannot distinguish a disabled real account from a nonexistent one (review fix). +// +// Timing-attack defense: bcrypt.CompareHashAndPassword is always executed, +// even when the user does not exist, so response times are indistinguishable. func (p *LocalAccountProvider) Authenticate(ctx context.Context, creds Credentials) (string, error) { lc, ok := creds.(LoginCredentials) if !ok { return "", errInvalidCredentials } + + // Look up user; capture whether we found a real hash to compare against. + var ( + hashToCompare = dummyBcryptHash + realUser *User + ) u, err := p.store.GetUserByUsername(ctx, lc.Username) - // User-not-found also returns INVALID_CREDENTIALS (anti-enumeration). - if errors.Is(err, ErrUserNotFound) || u == nil { - return "", errInvalidCredentials - } - if err != nil { + if err != nil && !errors.Is(err, ErrUserNotFound) { return "", err } - // Empty hash = API-key provisioned user; account-login channel forbidden (spec §13.2). - if u.PasswordHash == "" { + if u != nil && u.PasswordHash != "" { + hashToCompare = u.PasswordHash + realUser = u + } + + // Always perform bcrypt comparison to prevent timing-based enumeration. + // For non-existent users or API-key-only users, this compares against + // dummyBcryptHash which will never match any real password. + bcryptErr := bcrypt.CompareHashAndPassword([]byte(hashToCompare), []byte(lc.Password)) + + // If we never found a real user with a password hash, reject regardless. + if realUser == nil { return "", errInvalidCredentials } - // Verify the password FIRST. A wrong password must never reveal account - // existence or status — return INVALID_CREDENTIALS regardless of disabled. - if err := bcrypt.CompareHashAndPassword([]byte(u.PasswordHash), []byte(lc.Password)); err != nil { + + // Password mismatch on a real user. + if bcryptErr != nil { return "", errInvalidCredentials } + // Password correct: now safe to surface the disabled state to the genuine // account holder without leaking it to password-probing attackers. - if u.Status == "disabled" { + if realUser.Status == "disabled" { return "", errUserDisabled } - return u.ID, nil + return realUser.ID, nil } // Lookup returns the user by ID (spec §8.1). diff --git a/internal/security/oauth_provider.go b/internal/security/oauth_provider.go index 0b7988371..9f7872936 100644 --- a/internal/security/oauth_provider.go +++ b/internal/security/oauth_provider.go @@ -4,7 +4,9 @@ import ( "context" "errors" "fmt" + "net/http" "strings" + "time" "github.com/coreos/go-oidc/v3/oidc" "golang.org/x/oauth2" @@ -54,11 +56,20 @@ type OAuthProvider struct { oauth2 *oauth2.Config } +// oidcDiscoveryTimeout is the maximum time allowed for OIDC provider discovery. +// Prevents config hot-reload from hanging when an IdP endpoint is unreachable. +const oidcDiscoveryTimeout = 10 * time.Second + // NewOAuthProvider discovers the OIDC provider endpoints and constructs a // verified client. Returns error if discovery fails (IdP unreachable, invalid // issuer URL, malformed discovery document). +// +// A dedicated HTTP client with oidcDiscoveryTimeout is injected via +// oidc.ClientContext to prevent unbounded blocking on slow/dead IdPs. func NewOAuthProvider(ctx context.Context, cfg OAuthProviderConfig, callbackURL string) (*OAuthProvider, error) { - provider, err := oidc.NewProvider(ctx, cfg.Issuer) + httpClient := &http.Client{Timeout: oidcDiscoveryTimeout} + discoveryCtx := oidc.ClientContext(ctx, httpClient) + provider, err := oidc.NewProvider(discoveryCtx, cfg.Issuer) if err != nil { return nil, fmt.Errorf("oauth provider %q: discovery failed for issuer %q: %w", cfg.Name, cfg.Issuer, err) } From 41c34a00e089256053792e0dc2ba011f85bc95c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 12:01:14 +0800 Subject: [PATCH 04/25] fix(security): log cookie secret persist failure for diagnostics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 写 cookie_secret.key 失败时记录 slog.Warn(含"重启将使所有登录 cookie 失效" 后果说明),消除"重启后全员静默登出"的无日志故障。 spec⑥ 后端审查 P2-3。基于 ≤50 人规模重评估,这是唯一值得做的代码改动: P2-1(DB Lookup 无缓存)/P2-4(多实例非原子写)/双轨性能/P3-4(fail-closed) 均因规模不成立而撤销。 验证:gofmt + go build + go vet + security/gateway test 全绿。 --- internal/security/cookie.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/security/cookie.go b/internal/security/cookie.go index 3bcf799dd..1ad38f4b8 100644 --- a/internal/security/cookie.go +++ b/internal/security/cookie.go @@ -8,6 +8,7 @@ import ( "encoding/hex" "flag" "fmt" + "log/slog" "net/http" "os" "path/filepath" @@ -87,8 +88,12 @@ func NewCookieAuth(configuredSecret string) (*CookieAuth, error) { return nil, fmt.Errorf("security: generate cookie secret: %w", err) } hexStr := hex.EncodeToString(secretBytes) - _ = os.MkdirAll(filepath.Dir(keyPath), 0o700) - _ = os.WriteFile(keyPath, []byte(hexStr), 0o600) + if err := os.MkdirAll(filepath.Dir(keyPath), 0o700); err != nil { + slog.Warn("security: failed to create cookie secret dir", "dir", filepath.Dir(keyPath), "err", err) + } + if err := os.WriteFile(keyPath, []byte(hexStr), 0o600); err != nil { + slog.Warn("security: failed to persist cookie secret — restart will invalidate all login cookies", "path", keyPath, "err", err) + } } } From 9ee17f8b97e2e04abd68fce25e067b7574bc1031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 13:17:49 +0800 Subject: [PATCH 05/25] chore(assets): remove unused root-level asset files Delete architecture.svg, banner.png, and bot_avatar_white.png from the repo-root assets/ directory. None are referenced in code or docs; the README points to docs/assets/architecture.svg which remains. --- assets/architecture.svg | 129 ------------------------------------ assets/banner.png | Bin 7728 -> 0 bytes assets/bot_avatar_white.png | Bin 570091 -> 0 bytes 3 files changed, 129 deletions(-) delete mode 100644 assets/architecture.svg delete mode 100644 assets/banner.png delete mode 100644 assets/bot_avatar_white.png diff --git a/assets/architecture.svg b/assets/architecture.svg deleted file mode 100644 index 8054b5193..000000000 --- a/assets/architecture.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Web Chat Interface - Next.js 15 · React 19 - - - - - Slack Assistant - Socket Mode (RTC) - - - - - Feishu/Lark Bot - WebSocket · Events - - - - - Multi-language SDKs - Go · TS · Python · Java - - - - - - - - - - - 🌐 Hotplex Gateway - Agent Event Protocol v1 Engine - - - - - - - 🛡️ AEP v1 Protocol Adapter - - - 💾 Stateful Session Persistence - - - 🌉 Multi-Channel Messaging - - - ⚙️ Process Isolation (PGID) - - - 📈 OTel & Prom Observability - - - - - GO 1.26 · SQLITE WAL · DOCKER - - - - - - - - - - - - - - Claude Code - Agentic Coding Runtime - NDJSON OVER STDIO - - - - OpenCode Server - API-based Coding Service - HTTP & SSE INTERFACE - - - - Pi-mono Adapter - Pythonic Runtime Adapter - RAW STDOUT STREAM - - - - diff --git a/assets/banner.png b/assets/banner.png deleted file mode 100644 index 55f5214932aabe1281c2d428f42cb64e9319f81a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7728 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%0AKU*|)m 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 nJNS>e<0B{?Sx#|J?cmn{~4}UJD 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¥ewgy+>$%Xh+k=Ph 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
l4t4j{>s1Y zAs-mO0n|PmJB6<`{{VhI3l~T2zMyp*qgPhlU6Q<`aGjmqe5=-K_l=6Rc<#G51Xp-thdAXRfMTdm9T)!#kQGwVSHNTYdBRl1C@xML$7Y+wT3-J z^g105sBvS4$1ic>i5}CO{qg6)$GPavB6E@L`H$%2c)<4Q zfLMonzq@^YcrdPq`hQW-=yd)J4w$Q1C?iy?%TAh^F6B`XL=w!*KmrNm#DD-Kzy$R7 zzw6*fi1Yn^oq6#80BLjM`k%nh?9%QgleTro(mTuXO$WXra@N|mm8R~kHs!mg zy=>ly{8bd%{k%OvPy)oan~LJ ze{a|A1gZN#zi5|vJBgrbi>!8AwD%Qz3D{S+u50OcI~!o?dW}6>ci52O9CsUfSKPb0 z&h1oHt)Sj*%R1(w>2w0|?FZ1&9+fnIPMCSFY)gdX;P+DEx;3|PHATQggH2ly5 zTX}XC{dez%65%9}(**wj_UWJzx62bRWw!OA>N=kN*C6OyE`#0%DqH93pDCR<$u!-p zsgK>nx?WbYDzeekb-DKq*5lW;Epq9L)YNX;xdgHK6wIXyV8nyQg#}t;KTuYms2PvB zE}JK3ZNAv)?4OOPMxMF4YEnL`*A;3tN>=R3M>VT+&Hn&+IW@htj1lQQYySWh9-c6K z0X`?f`h-R>7A6Sk%Fj&#kWf%dEk&EmSOF0qEn3)OkmgdVDI@-^5pZ9)>Dh!;Do6hS z43i+Vv;)M-#~}fi(xZR@OF#rjhd|^2kUa_GB!%KQmS71kaU??pB0(K9F*ElW9-dMc z1d${dBanc=0sjCOPb>r;L1;M=pcn#9W(W(6NRM!OkIY~tji2QmWBWW|=7Bvf2G+a# z#)1IDq|Xopk5AI`avZ6kBJ~4BRMD75gd=CL{Ch3@@I)y z5PvKZd}I843G>sT1e52GR+-2o1p;84Lay&djNFHY+Ko3I~eK+rf*y|Iff;SQC z7+pGrgcSi+2p`^c085kWGbKmS$bh3Do|hRcrYF=3P9U$Rk;#dH7$R~cLjnjBh;>|h zj0tJ-rZ~tM0tQB22>$@WSJea_V1OU!$yo;+Lg7vZ2`8i_l3Dt`j040Q#9O!$8Dp<) zfVaDoYp`r7L1-()1D{kLK=F{Ih9-Ptfj$8QWpG@09x|~6z)=&DR!jgPh+ZrKRV4vg zLV~9?O5_{`QI;pt5>S9Z7zBW&M@}#!h&Yn1I3Siqg2clXpGm+354TDxVi=~=yB#$a zYdLanhU{*At!S|aVe76MR8W9&9E>mooc$w#B&g%cA_Os&fsUO3i82_}VB!Ikl7K04 zV1^}t{_*58AeLexG70163i$F{1W6#3@^Rt^O5kuH4kcGJpAcA*Nd%aj5}*PH9z`lb zZc8#jVlH9*0|Tg*4jT&RA-{gsdx6vSEaw`9n30gMrZMR$9GSAxKnuhIND1jP(z!AN zE8&O)h&cm{k}{GGcyd0#0X-$@kW`0;UL*oeQ1K88Wu`xd0}%v$Bo{Yn0CN9rOwjm(NFi0?0moNc7eQ=;jH~^TQBLWE-h6JBduM#0a@eS#NEd-1VfC+#i zL6^f76xuyrm^?_&ux?5iXNr-D;==^6EiBn25MnQ8^cI#jW7Oe9{$ROH-Ac7l+DqE0%K>!5A7~(jFX9;EkSxgX6M3YQ} zUL}bH!A>fnPb0{Z4h<*=1`4UDuvB>DJbM15B}kP3lB59xrx5b;8`9_rQDTy0fuuWhW7&<^Vd7kw=U@-YMzKqm41Cqdkk^Ly2)n3aPnv-dcH z#k`Uf_!$5x_a)^~pSe7N_cIeetVjG&5z|XECn|IO;smI}HUj6_V0g=9z7N?LFess> zWR+ax1H?h~01U*L5?0Va0fmGOTs4Q+PT0pWh%8HN1Gbjh-7NSpvPMFM1DBB`Vi}L9 zlMx|(P!tey2@?!?1@V&KRuF+L5+?#9lob&YOi!?riJW2*GFEbMJQ4(B&qRv+1h)|* z)6OI}A95uB0K>!pKxKs^tb+kA1P!_f*Pt!+V&^Wr#F&6|hUy!j^wSFYT#0X(s|=@* zp9&Fp@-repi~vaE0Kw_OOe+Yf$*MyV0Knme^o~%LB+05yuQYDkLd67S`HY{_50{%S6-a-VzzED}pK6*jtV)*EiRd zI8nE^L{ilnrA73HY?4=~;YzBYkeJvOwcX)`uHLwD4a@m+Ti1avQRjuRz+jG#oW6jRKo5{{SfJc9l_Dj-eFjhAUE%p1Xh8uiBs3eZ#Z#+aHK) z9mTMB#+zktX{qbF4%@liJ5zDoTcZk^m5nVZR@Ag>tCm4p=S{k^t!qNFR9kEMmd1in z;~$HhH;U&nG#A4u)vlDONU2Vol$H$u5@qkU&yMT(HODwN4bA2$@hYgxm4Io~tL26V zlolkGAQlsAwl)*uOHR`3{4)1fUDouS8&!VZZM5H8b$1P&8~Yng%ckAh(6XrZ^|+-* zyZlvqBWB0s+=~AIE}%TZpE4WkxSQ9w7fSo9a^C8+Eou+JX>C=lv^_F|Gkm%_UW;fb z>2@?_j}*7IQ9Pzg0D52X&-+4lhj?~nUdH@C==*}-x7wzoVX1HZ@wzORN7Q$HJubZ~ z-7i7V^j51@y@rWLP^V8&zrNL6U1}ArEof1))9q+i{9h&NBQQpPmVHQ6sZ}dY!vXU% zm}1J%0>e+Gyt(*O!Z^1N;L1-IO3-Rl3Z+V{l%#+GklPy;A@vOp@n?+io-4-?z7bI? zMLIz>YSUtstckXwL$%JYhO*pBk%&m*iX#|?0JcdU6fpFVqzoB4l{+o12~CeB!Xv=6UYuQW00#vkOBAOECd7K z4ox`>LC>d@K#U%lNk|+@wD4oZNj{O1(qcgX!jl1EV3Tp6sz?p$$bx<6j~-3-Gl&96 zDk3MS)hmDq5Bpi;dwOEVl?ynQ1-(X=h(B$I=u`DeE)hLG+~bJ^&($VGfD6Px;XPfg zsboULtP{i$=>js-B#;FE02dO12?RGm3FVQ?(xAtP6vRtrCPqH5rvym6S=y37h~fbT zVn7LlIVAc<24jo{gVlXZ$NZiR-GfHIH`e196mo@c- z1BjUl2dT&y^n!DJCc)W|kFa15C{uwVNCtc?2x1HfkZ3dc(0r*TOptX4tIps4J@%d( zkmf0H7&G){xn}q4z9fF%Z7pwj>-&3XZM`3SZU zX+!4GW~q0mT-wo$WXQoz$ zBASSTdDt$RBo$_wL9#(UawUf*RZu_#l?zy{r z!%fk&+6!l<==K&`W|eF6Dn+)RVQ)&#!hv`F7Pfyg@+ z4%Go5IXp^&W_cVbjzIc^h9LFB^IT%KN6e)%luFiGN|hwt-S;~Yk5>*Km8X|VJ{b5^ zQiOzoWTY@*por>rB;qC3wyoGS#U&-KE77;2sslSzuTg2!=0_Lg38&&r5Pe0D9eMB8 zzH089%R6Qtg463#(k*~2!|;n{86+h(2a+Qi@~+^#F2uyF_S1|)LAjy_ZcG2}1=%$M-RQ&ss1_WEJVAgY0to}to*;r_u1m+yKNQTzmzJBe zIr8fJ{jkTQKMW8Pz^n)J%%A=#V8UCow2iU3-vGMJo}b<=J4e)+R>O5$>YHBpRDnp+ z*DUJTqmTlx?(W)yC~O`e3E`f-Z4Sg5kMpQ=N1)kRj|YTMOhWikH%!{o}ml$ilo z@elyu2V=E+y$5{hnuWM!xVFEgQqk3z8g;2xrBa(K09*e6h@_vFB|VfuC)R&vFZBIu zY1-~aG{S2(wz|TlKnE7SwMv&NvIG>n`Sjou#gwef_49xIS7b9e9xKCh*=3qk^Nx!A zrU?Kj6*ZU!+`C@h$nZysvz!;hRcd9PqWP0dA`2_?B#X0!u@(&Yi7b0&nq^PKUNij4 zAaEtUC_zxAxi2E7A!UgQNjZL9YNvfRrk_V}Ti#s$7TZMMsit=Kcih}B{>sBwr+HPo zQM~TSPAN-G+?V%zBV4#;W~;XMz0%fop{J)Fgm0b0XJ!jhdOt0|1Ss+9VjBn33JA}R zT!e^?5APnOq;3r>S<&@ED``5-mCl){(N+SrJ6p<5m3~X8V@|CPn3bqiQfj4iO0?Jz z0Q1*@yhWPeoNtHbGPNoxbn4UistQml1cFr^feo zK~i~bxKx364ZHEnZ*8q7ZttGv{4)1OyKUas_p3^{*!qU2s?&F)ux_bqE2wt&xHXmy zWV-C9bgi`O?RL5vRW3FTq1+on{{V*6SU(#3hp~4*Z+Cv_*jvX;si1D%lesmmrMk3= z#C+{DU(huhjW1cUH5JO%N*A`ZY16o*K2^oP%d1VEjY>{?{omcAsCNsu`ag388akHp z+B(I~&h7<8rU2A;Hi@RKy*vBLD+Zm9bas)`bxMm=s-0e~(uOW-s_DnYpKEVB-P^5! z@iVflE;ZfJV{M>zTfX*oA(Od%jq$E0yplbcbxcT+tuL@Q0hmAA5HFVWa zE1asaMhG7hn%1!{k!J-YL*tKEGyyDmkf6W@Ag&1*B4#`Q1OO0*Gu4KrCI)8($OXND zJVKe7UrE3bKWN5(s_C~@R}XD-Lahq)n5{|`ljT;XP=%>Y=~N#wR{)_vSdRh$>lnDU zXOaLAOM1u*K~*gPg3K@>q<9EHBp$jBLpqf=^8o}zi@^F=w&uqi^NHjNDk&ixgc%A4 z^}e5Nw5-aSGhSI_Xs_hX(Uf;}P#F`owAT9JT3Q2-1O6oWA*21&t%IKhbPA+1H} zmSy5Wf}rOokED~1A`Vv`AV`j_b*R-+VSzxv54cv00zndD2v8LACIMwVZ5evbkX^_d ze{*M&KhB|=%Yf`0$nBwK+fxsVIiwFYRtw^%zk%gLK`qN6NL(kCDpi49g#Kp=po0e}Mui1iR8NF&n| zh5alku0#3~HGyWi+pfCNRiwtn#@>*hw%Zo!icb>*(ohjFT0ZQ=lCl6Kk5mO9M=p$l z(F+7H{{Rm_@^k0YA_)+H0y6su8Hr{Y0GL(+B)71Lzy-_*0woPh5$<@vC)kfjg2yIK z0RVD7nFqx5s#7E|>CwIZr(J6*(Hx|<#QL+bZ5^zCdwHi!{KZvrTa5T34-Zch0f#Oi z#7J&A3_yJV5Z;yI-~v`z3zUc_o0T#o!j~X`jleNjr~EuZ)LuxeMqWZRN#qEKf-#fganF9<}c=D+dxe!1EeJ73yk~D2C*smTe3HpMMCKW+EmQ;rVA`cSqUl2Y1*&VXEr9$s(+}EqFZ#&DTV|AqLoeGlN>W^!ALxp-* z7l2x67B5h}FU9J%wTnj+PeL|Ek}FlBp#vY5#!D%ba-m3O9ETPt!+<6f(?w=aU!XsL z4F$U^@T>7r@gA%{w{@yIS7-Jm$OKlhtyL}CSgUDNg29&aacOroDbXQ$?eMIpijKVb zd0 zveIpGX}8YhF7e$BT`HC2OO+s&Gf$F{2P}kuUy%%8t3l#8u4~*qcCA{MH4)Wmvyjl> zk`T2r2rb4`u?|=y#6WdC^-pwbk{t^|f=3i3WpX{k9!5BrVBjGDz*4&(fp}#!8(zp26cWc9G6~2 zTonQ;6q$wqf(Z&(GjI*oP1_%azUllx*=jd^uKxgbH3rd0r>t4(d#_K?^*tn2ANxAj z+I8hYdX|^ZN~IfHz>j40Ql%P|#c)u;TE?kOD6>^+OF*J>FH{Al5E5C7dKH!pLM4Dz z3?L3icm5jw7k)VOn%jTB9k1J(FK@JwL2mTBp6Koow5>Px->(f{O?|YMx7y9#-PNty zptri!G}}5ZO|{;ab5Vt@WbWB64W7(pfyh%ys0T153FTk`0@qVmxpue{d{^rzr6=R89V3GrK5N~t-9R48t7p2*5Ug-AwP}}=%^HKiH8@{sN>}ncb zr=@B(R``dzCF7cqx?B{%UaQP#Wu6po0iIs_Skl|OU-k)_3n3-XB!=A!XaPC;BtNGci#P(U(CBeq`;y1t+B z$?&h-uY^tKb3(53+PYOu_1KMWy;gdY{h+RpHH*LtN}i(5@A zbJ|kY(OJQ`+xnvoBVVQ|k0bjlP`Ie8P?cJ=E&T=Q@?RzXA#h~S3e8YSMQpuKh>|>{ z6p*GYIuJpIaCOJ9JT+Wraww*v6tt(}QcypYO=4~40KhKWW1D;DZq(8)H7z#s+}hsh zmzC|Wt?mSSsl40TT6;9LZv4P^r|6O^!hs1ebJ=K?jocf3H@aFGN@|oq-Rn`c#G*n|P@nHs zovzklO+u|YwA8VvOCB|E8y}X&51K)wkfi!mPa;+u!NVXVmvt(S>b~$#6JBE@L1dnF zfz8Utl|g|APtDM?G3ig@Y^^e%ij+4xLXVbQx6IC#_8OI~Srux42S!?gScn2-g^~=B z!J+_$5P?{jk2M-~XD90*No5ful7b?5jwB`^3<6`RhjLO^di;xtYMGM0tbI&9KuB6{ zqIq#Dz?=x1RVUP8Wm!io@;;D3gUrG8sDKMcA|Sx;93Hu-gek)UHaF!B4b#?f!T8l4 zMN}$p%o%~uhP1bpm1xn1F)IH6F-elL0H@1{f>em+A1#u(#K-W=n^{sO3b6#iAwd8Y z`lN!(C(J+~s1jgaF4cnu1WTy<07esupHVD8A%gec%VJC6RF)ZDlU(;JZ=y9jj4N^l)L>j70GO3=&ddnP-#_ zOqk4YFvQ6qm4ois5#aSC({s#ui53LLgqGdxWCk;-z=N)hI(c;-ogsn4qyjjDl0*=| zC=#QNVnIHbSP%61l1Td0`cEbF2Ehs&j0OxOplRuOdfgz!~M=?n)pbi?uF#<)&Zm(=4kj7w0-$(b? zsEx4dt0#zHSO#X3#2zvOFajk)h#W`+C>U_}AY&O37?R952stIgcpj1S8U#qo3fzGL zaRkYLOsI)6&~Pv$#|V_3oaOHjxKBB6ql~r*SsZXZP&`2=C-T0a^wq58p6n!QSe``IUgC{+~_5s1$u^L`<@CPJ@1KBydF z*q6vN0fNt@EJ!1xe5gDN0SoDcq!7G($o>eD z-&B?22p}<1Bp)awu_wU66M&$>$z$phiBPA=fFfE`^#BZ?4fMw@AS}0$f(!*LeI!c` ziE|*Vfy7CIKp`I?uRDfU$WmJ&cX z1~Y|$#7jhm1WEIc8OZd>j7~717%SvYN~S`8IMysfeCF=&w7jd8fa^AmHt+YX^KWal z_U^M|tJ`{woqknP8GjLO{{XwWp(0FIq+LTy1}b7ya*n{Q;j-jQMXmPDhn~ap{aYU474cXao~amBZMguOh`Bb5O6Vr)R&^^ z)H{)|w?AvI-G3VP^)+p)b5;nn)UDjrqN+-giB9ML0E#I`{>tw42?3<1Fg_(B1NmeI zYXH*&VK36}hjO(|DunX8h9(8s&9|L(d~=iKkYq3%igH*|Kw!QJoL8v+(qPMYfJkntuI#QX?yhXEsMNQ+vbe2nd2dtEQjN{ELq_6-P|{Yd zI>>3dm^`6#=_Z&{FiZ$J05`WKfJ5IWtWnwON zw2i>_bEs@E@>SYlQk*evP+=$9Nx(cz35E3i`kVU`KWH_7*~jtg+HU*mSG6eii*a19 zYJMOsZI-L0e$nqs%{q>+tu?wj8uxv_)@?K%;96TAb!$}HHT3#yY3db~`Dl zFoGZep}gUYV<*N49V?2E%M|#qU{{K&6>nkyf*2695XyKFkq9pXJw^FZNu%Jnp_SKW66F?auMlDr#Nb z_&U@qy92wcURP?mj;pY&G{wE_uIIV=l`7SBxY;z{WWCLI`S+TqZ*^j%t6 zIzMrPuU9RfdC{{ZS^BlGt^f6t|UpV#>wlN?0E zz%U|Adqia85&VP>j2I!~$xsit@@Mo1^2q$7+?g{U{L}(JSwG?@z#u`-j)*ksmoVk0v@>C?Rq zpTUH&g_2?;_5T3RUnu_o_M`qiU*i7&_K$Af-EA#dbw1Ag9NS%X6KSOy{{TNq)O(3e z{*IyE{mV!tN2G2acv{+a{jM$Qe5&?6x6`hvl5ULs7r$!X#-^L_0q_s;AMrO<^48yU z?EQ&(q4uuM>Ck^{_ltWnZBE%~)Tlh0%2c;rt*7eRwF+v+mfzB~tH%P3t!Gb+t?kaG zt6kpedbRC+Q&iP2E;UVGRMe_9)%K~XY8C2UY8s8*YSU8U_V(_zTf3WztX`$fSE%jD zq}%YExv098kMt*%JydnlQKXU8Hn{nV12xJ zCVE&W2Z{QG8~{myInM}~ILM4QL<|l@c?TbSN%sC=et3zVo0*X?%6-Aek;l$r00aS% z0OPHoXl&pOG!_jT+WWRCNOIxCNgkShw%YLPawCWFMkmMc{&Ho9k8(JeIqGigX5F{B z*KhZhvZZuAm1f$dR&q+zziLj_=pEOMLvD#u+?1TZ8qM)rVTw;a58JVo~UOIs2v$CS`-sZ)mn51F)W&6 zsl<{|N>ZaxsI@W{M9QoOyZd@#H9|^x2lbYMV^u$-Z`TnH?ALEMM&s4B>%}QwQn{^g zs$4}IVNGaS+etVys3j_J3^P;YcszBEDL#%M#EhAb;T%}7BrA9r1jigUOYR9^G8fbg zFabdU6dV9lNjTyN5rQO`1ds@ir3vxQAWKOk^30GyFa!@E=H_)4B$@Rh0ByQ=z7~Xl z8Ho-xh;LbF>NUfNN`sXokr)`|5K9sChxEXZd@M&xMi9#!hah}qW@lz04pA9~x> z1o$|R1b>kk$GjiTBgAw;o9X$4D|&*SAp!LIbL5`@sDlI&2@>})5q1x>!SA7;K={Sj z9i#^T0I$omdf~}$P=f0*3@3;u$ZQX&5DY*u=`G8p12`UlO!~-Raxi9QOpp{uus8># ziiUDLkOY9`oScCL6Qu};|e640N6k$zfLg##}We`mY!pv zOR>APorkged^WUzL|!c-()}Mt`C(AgpGgFIpbue*iHVT7^P;Xx>1VXUrA!iN*)jBgvTXIc0r5>ywXGID-I5CjdzzNIYgo znc_(Lx=NSKfRH7w%=Q7EM4L>HbckoY{h8nrLK~iE2vjd1cZ~-GCNd<+d?mUsk3X>!00z|yCa-4V=fU02h=gxT?jE+jA zpMF3SEZ4*bw%bG=;bgR!P=F5rE;whC z$tTDJ01tzZ4@*j5|XOl@DN7Wv$ZkBlnWnH!%I{bshu=wQVfv9E-_CDmxP5tW!(=Y@O z2__@y8RhC_`w+RuqySGw$t8HSuqXsz1u^btktKM@!vn-l4^-(>)&0>2)P2lTA!L%p zNnaod@O%!cY5Mcvh%-2V5OK~(lO6y*2nA=P(?`Q{?hCe%ThMp0v3p|*3UsjyTKfiz zThsN!sud)`CA}oGC;+s3jwB?8#2j)5!96^@c}p)g2mm~Z5eWf#NhHYie~=1V@q3VjK@i8R8&+#HxL5l02-ym?~j_ zk`;bfaxIKXu;N0PkrDyug-WJGsWJyI;w(bUmK=zm1^|=9fIvMonsqtg zz>pr}^8QzEX1s@Cga>rCjQ2YY-=|pZhcejX99PKjN{}UqhG513kU2uBQRKM3SYV`y zpCUM!RyZ)r3xk*#IW(xmfO8TOSdzz*k8_qo6Cw#%1%9K|N)|j-a@>7Q1Bf1xlKxq; zs~(mkjI2p_{xAWKnuB3~Xze(V8MckYGeG&am|Za^EO+1qQh z`bM3*`=w+xZQp-yPX7RB_OYB(uGA`eZS~Fb#23?S3vjJ#rBqbDze29*O5UY1xIC+I z0XOFa>;beJ`d>_8O66;k>;Sld+IQQtV;b5$sQzxcu`Fvd>N?`3Pu<^c zeN1twe{|B^?fL!^nS@$yRUfQ-cW=GPzIAuiw=Lh}E05e;TB4;LKT5ML6s)wX6;G38 zW|8v3)23=P0!zH|#{CSm>5-X2L?I=kd{?=you%Sil90DPMHXesp*}!814^*S_TWys_eQD_Y0kb4M;h&y((Vxv#AYOE9%LI?rgc&hpVQdl&^i~u*nds|-ioY}W=wY?S2^xgDcqw#8c17u%4npOE=uBW?N;)7Ga(Po`J1&q#Q zCO#T`)eFEvOR4%Www>{`=P0X$@anmtP3qK0r9ma#Rca8FrG%Cx*a%~enRf$X(fDro zbL_vspJne^w|?%^ZuZ8xx-^Ard;9G^h0Q%{zg^X&$gNt1=H}I}Z}eTGRg)_y4^H;i}6{0)om|3jZpT-;pr{`HMBn4=@lzl+-^D)+?JzPTd8kz zx>~(CrEq9%O4S{|62apueNxuMTF|CNJ6%53jjf%#Fd~hunynjpT$oEQ%BG7FOR&l0 zbE0uRCVWfc3biTuxMvC#FTS6 zs-@lP5TJ&LKp+so%l5|P?Oo9J${wSNNLd3fC?+_Dsmb7lif5HY^ZY6ZY1pl!zHPx? zb$Epmp`09m0|Z=13<9JPBoF~^xr953RT)&c2}~lY%PR2_rNQLT2rUdx6%#ATq~*F- zblQ40-Q46iKZW5k2iR~Yc!Z0$7=k^uycUnv2B)a`3HjT;;OS2LDM z{u-1Pl^#_kP3C^{q<22ODDFP_ss7_@mFQMdt}Jx4WGOLp=I->aV5(bL@o~rwE(`h^ z4=nZFYOT(paaZRtHEJ4+k;WD3pGMl$jg;T}sqK4BwuMF}zOQYmYqeCn z1_^y}{h6lB;r{^kmUk6tXX&dbLW9i6GA`W63Ze`O9|0m-rL!r7&3h{@Z+aRD&W~rB3)%@#VPs*fSG={Jo0B zRwkv*Oakh1iU~Xz@E~Lb$OGvH0R#{Xbuj64TTb{e?}nXlyk6V2zZ^x-^N`0$?%m88 zmJl!1$SHv0KBgzBQ?7+(7f2ZiE(De>VSE1oo8yOZT!lpB^7T}a$ZH}UIc_A%h1h6@)7i=m3Kait0KQ=AT}* zt-xieM6y3FB>G%~#fjqt4nabN{^$ht$-F_G%O{LhrSSl&Qk8O&0Vxpd@WepgG>=05 z9b_y20O|DAO(XEWFDr-v(k*+7_Fm zfrKcP;HszY8IPo@!vGQiP{*R3o86VQUdC@5HLP0mO4DpL%XL!xnY63F!rc<80nMe? zDvZPx2pz}_2VP7608u^^Pl-52Sxlg$<|(ADo0KSl8z{iO@uodl_&$uLaF>=8%C+hKB$7G6YJ-FlUJq)`>wMKcP_jZs)}K%~bdI1E-eF9G}?PYq2R z$HOWiiBf~;9K6dhJ4nZ&a~>h#JUilLGKr@}H2kRuh7cLMvtxOCAFt@z&g|Cq2IQ`k zw#Rm~>N`tStylj5fv4^ZBUZM|*VMZrrF&cY@21tPNvhWO$kKv>m5KJI)wS)Hbo-C+ z{{Yic_P_ftyLJA1h`mk+~hX*-`?O-E(-D%hc<--+y>c`UR&DZ^p;JWPmXztk>JMjVZM8Z#L4ALQ+}c7d!kU5>`hrwZ^BFYwEbtHL~P zmk!M=r-yMKS_%j9CZPZ%-<60Ye@*Qe^8Wzir-o7DZX7tyQ2=J?9&d<{0+O_VQd|qI zh1x=K=i|B5H65Y6w^wR@BKDnIjoY!e4zsfN9^lc%8XKoa)-)UX+Fkg1l>S|=yJb$j zyVkY1sRH)St+mY>wW-yj<^$bbsj8NB_5FpaQ{Nk6nm^2aIZZutOi;Y|YPu<7b#3y& z2-RuQ`ECO+fO_h8#@5fY?x$-zaq%^y{{Zraxo2gec2B*vz*fGmxHJtGy7p(d+Nf5R zuf6+uqgU9v?eh*PygOHYR^qK&&Bbmj@F*U!8%9>n4f>mCa zG;1j_R-Ht7Nh)vZyo*enM7I>GGkU{^5Mg{{R74df8Qf5lQ^PKbatCr2S7z;uxt< zgN6`!FRDR5EU*9oSb#*SKW{OZ>W-p@URjR-0g}K-7?va0#t(*p2du`vnEXjqfdI4- z4yz=|mLR%+lr%#rjeyzY9}nJr=2dPAmI&Qa# zaufgtvN@y6%n2^QvwAh0HW^QbIHhEOjI!A3Q_2AH`MH!Be7fHnw6tovmK4h<3|9x5 zlf^*hNI2kLpQM7M5y*1}ny)2RVN9M3$~`81TwoSuAQdVaasu*YfMvIdeiOFF)Mftw z)c*j9e$QLte|WIKkX~g6h#aSYQ^|pKKqi^$ zHsn*$_BUs?-7vqo{>AOiljxuJZ0}4D8R@iP>!>ZC=jnc=um) zZVgVAQ1-Q2t(ETbT4KE#pDLp_3mXE9QCP3Zq^VI5QtOC27ve{{xAznp>wj+hge^&; zrlu(uZXXSQ2zjNN>HDSj!+HBT3}0-3>bjcxqNm3 zLx<7HP*-0vx>Ttoep00rk1;O7ZqDrHUmOeZFN;&*SzP}B5U*2~ zj$V?gE1tk4GJqC)w^rL51N%C=d$qf<@hxwtcLLUir?Y!Uq1Em_p`hO=t!b}o^mQv; zJ7{TIg&t;=-kU>Gtyf&Xw5*Rp>}bhjSq%%yvD(jxe~GI904DJ*E{_&!wEj=j!KZ+F zamA5oOQ=~;zKG;o9PsU?iKX_^-i@}(vP}+^8h<64fQ#K!EV-+#UOIgJMzvQc%=PNB zuMo7UQKAx`SpNWYbgkjIC{@&Sl&!54_0+JTTA$W-Rd-S>H?LaxOG%YsYp_(R8V5dwFp#SnN#=N5mBEr*8TVa_)EkqXE=s; zjBv&9{IyDasi?FhR9OTNkd_x?xbLr;f7IXLr-c6i5PVC(c=rm}_k3UH(O*5cNU%YCcVR?N+Takg)U^gFzR zUAM->cK-lSH7e6##a9RADwkSe**|wo6U&mTh-PBkKxreKbRVzx}6TkMkB;zNS+6 z5I(L%4@)Tlc=05L`n|p={vp>Da{20~l&YsW@`QjL$@0JhZ_rLYruY(tN=Ah*>E%jw zkP<$QOP6&E7kqTj_P){@?%()C-?hN0sBYfDwF~;i82rz`)7v_-8lO!3y8Dj#m6*2% zsKjw*gXfEU(?j)S`VjGNr;317kN_T{ea|30AfyKL4f|O&6Qt~ag6*SmSLNzD7hvmL z-q5T)Xm4${U4ls=? zfD%hEEWAv5gD7B02aizBto0L*&5jJAK~;h?{{RsMO2OnnW?m=96CRP^DQZa$IZ9`8 z9l2!Lt!<|q7mm|OTAP1h2I91GgQF&vIy0ssWaEf63GQgAaTtL@vrDLDmH1MkR%QIerqJukqFF$@t_4A`p{FUf#V zP;dZ((zpeT$Sg)gDJnfc80&n>fD8d(!Wck+d*4v(Uf9s9Kg13N^gUmUk;)(elhQyxq`?C) zXNUtN2_{rT1A+EESW5z9dtN^8?`$*(cOFt0IJJN``h&gj&=4j@GbaK`5VF9?BzOQ! z6&zTD(#au%0rdc+`2u(WC8UwaKw!QEeyxBQz#jajV1Ey!7RdzQaRNwy0~szUfs#SO z10KhS0F#)IG63+Z0+Bs1q9KTP59-D@z2B(?rK0};F8g-+uo$fHicgtUBnTuPAWIqg zc!a?4Kp6pm)OA{dHlVrd%>WOTZ@^o8_@02aU>!2pw!%h>s22^gN4<;Va*nHira)9>{V zNrB>HiOzZ^A%Gc>R7n_*N|hw~p|T_l#6T%0BoWFU19aG1ulWA}wqcByu=x!~xA=FM zD`Y_Y#sTq;Mj7Lyrc@P}Q3ezO%t3-= zf*_teK#@HvoN_!z81XTjuer+!jwE>lhB)#gD*pgtz`+mJOT0)jkO&|b45$oA9;rSK3BvkdMnPs9 zePd0S^%z@$_t@Nl7ihfgj9cQHWLoL_ro*^eH8OM!`)n@i6kpv^+!W|jYmmiCQ&Ff; zdKb`rRj$)eag^&-i?XULW>rZBS3F9|1VAv}JcAMG>!SYv+28t=+O5m5s-K&z=?XQ? zu2=(9*S9q*+tH?42wIgI<4&khAX-|IVSvXx85tRs)zOy@l>&mbc?Dp=$rTZS1y86k zBLvS-voyj~6#U%eKPWJ5%Ew=$yo_7qDs!ZRbn0$Klk#@G@kzveFwv4GM-q6BEXM>$ zfN1D0`!Bp3r3_rL&R3`Sx})On9Sz{KFOUnY4GBijeZraA|g5C9{>@)7w# zB={46U`_xMC#Z@rbcT6wNMQrq8~4SAj@o|PeNO)VhQHZ#`0b(af%{0dhi~_8t^JSM zUyJ=V+u{EJc0J`|M@z8oC4EJ;Ude7dhNej5R zFi8Ys$ieZ95$EhC58JPVJ*EDmr`%A~G@Hww9ASYx^AIi zaY&_F7nV2FDBRlI(J5A)dNkQtT|+n7fA&rMY-yjg7vKxw)8ch5?JDl=(XwrJ=XR`Z zN`a#Hk7K)Se&pCxpcPG>8?DQx-RsWJkv?Po>0Qq-<#vua#tDrhd1Q7NbyP(Ltm z>?dpD+lSQVO3+>iARPf6ZvOxvG10T0kOUErb_BukKA-t`=|jwq1Y_)d=koL5kI?k4 zsc~b0(CBoAJVDQy@_*6+Fh9%uIxt{{e5?VC=Oe^qV_8)kP{7Rp0OvFQdCBq7 z2*HzrMnU_>xcs6-Pv50S_5FWd-Z9fD1;lOb{tLyP8wLlD`+uMQIwB9Z+)w!f@AmzD zx;gy(nEwD@{Cj_oSl060yLVviEzQ1ncCBlm?LC>d^_|(eHQV}&O2K0M>|A_jBNQa zQC)%A3%mYJM_%q#@8N9~%TupMMWn4u=B9Znehk*AgnCuADlAA0y=%iNuuw;+aERg; z{uz^#2h$LwjwgwZovG!flqCLP%%Dd><&J#B>K`+|m!s&xwD|%yz8q$F(1?5fkpq6jI>^B!kr)OfN&0+% zJVY5F_@09LOn{^}ksb-+0h19i7?X$sM?@5lQj&i;I5=7R5Pu*E@gH&vlLyM=%nu{e zClG%i1`2r{KLj44K2s5|+&ga5_xJR`Ku!dDa!;q##H{)HgyK{MKTna%rJ>_6CQlQ9 zROCQ|5F`L#0n5_>$?BND7=s?zG3GK!^0>?ls1iiTsis4*CMON&&_N3-Op;`n_9PBI zlO0A0_9S*?Y#Zd$>#nb<9J~N{gDeNAhyap7C(a1T`b2pt3(16_Jbau1>EaB`Gx8<@ z0COXW0fd%>%=z)e{l1x!#{zI6M4wNjWn2x%iR5wsCjo>&23j$KrU4~HN0MCz9@6eR zjV<>70Q{B82n2^<>;<)tXVv!&1PfH~q7NA${X~9k1c}0!1)?JvIU|UIIRHs$fPF9^ z{{RR+{{X}#d}N4#Nm8I56UtU#W?R%%ymIi+7s|;n3HKs6tg{~;kYWHPPmB){h%M8J zUzCS&pgxU$y@%1bUfx z@eb0`CvfLf(%bX zhmt^TJsJA|Wv}d4<>YjO%tW*RVD)Y!Bcob z%0@)TuslEojFO;;@HvP+K|LW=Nf; zMDpW_f1vRo64x_QAUT*dodV%n6AE5@G-(o--Z^`vCw% zbP$3Eg#@9KKB+1=sUV*|@H`M8@g-`~P5?3!kP0M_xijoYBa{g%#}IlXQOIK=AczqK zN2+o`IKYBLMkk>lq>_JdBzjv*Y%PUII)FY|+hW57Ic#b8gQ%NFv)%$_+o zz%$eIk_#BX7+``~f}ko{hGgJG$@B<5Qfd+s8AoSnZ@Y&trs@fF*pgrmpb}1$@XjO%VgQ-yxFKS&(IH9pQ}m3P z^+A9>lY$6S2c)er&8HH?&xt3C6^D;-d|<>LCm~dp;DZDarmi~4Yh0LVd}R(4#Vi1x zme6W?ZG2OIjv;&rpGe7RkPnu``+){QLPD?nDfIm2 zhM)=w0IcNs1fiCKPE^5$1hg60!x&ZuOs+j6iR9S@kESF40JXxLnH^oApLTuI8$bca zOgaz^+WTnX_m?BR@Y>G<>EwAT1MDSK`k0A19&ky8$E%>B%Lqm;2N1a>*l{65Wy=5p z@eurYNPv1#rgGfEhy}9p78Xfng1`}&1Q;qxoSlK$x*d;gw(XyEcTJ5O?ZK#rZrJTB z<>Z%@X}i#=y!D%A4k~EY6<7ZNlIhe{8kOxJ3Hc~Fr7BAKfGij}Hg71BVb5kV*20wI zmi}e{0jcuL#7T>9hjiUPP3*>%r|ylzV@Ff&mal5Jn?Gr46q2>3%(JKfqq?_crEEU3 z;H`ZFNVrqN687?$0-BgZQPp(~XHdJ=HJjV5S5?%mDqdT?bsOupEn4R4;ic*^aVtz2T6BU`q~f`8#dj ztesfiMc6We0+nduu%T3Ah>}c}4L(2yryd{^>guL}RXhO(6-Xr^a0jH5lawJ<0aCFHZtzDGD2xGGs!Kq={}NJw94F zS1=%|34zsvYooMB%MwvYa-@@^uq@w}ToKfpjd0@eWgg@zf~?WWiz=^~a?DDFe95NE zgUHlfI%R=xpfyDbPZC1<6@e_wU1duE8GP`BC`Umlh6^Q>tYjE9KA1)`G02!;!H?2I z7;c`YO_@zV0%Mx1dY6x)4<=F>fgH01)lD-TWTdlROb=F%Sf0%diF8ov2>_}Eoq!}m zU#xn}VbH}uW&Z? z@-&p`zsm*Ca+qe3>XlW7lO~&S1wc^%fdKL*r32GM%kgp#9vna~=ZiEdg(%2UU?7DC z81)LG`3GOh?hU|g+1=eIzK0gH=?^Lr#=);4gYF@p=J>B#WC;QYNd!O&JwBOlQ9Oi9 z2_Pr{f=yi-62Rh2K1k$L@r7o@lk5`*lnBAnFcvv|6XU2#s2J!5x(bF%7|ks48+Xfk4^z6?+O45FjfH^jV-OXJRlIz zB+rTB0<$0Q5ElSQ;<4bIj>^@W!jDMyBuapSC4eS=kU;fe2nWq3doy&UOy5m={q%i< zC6p^rBoQAdVfytOVy4Q_G(!50K#|9Z1CZy2GGIV}K#UyqA!xQ`$^{3~2d-d~35hzz#%BmrJq?s?n7Z1yti63mG7s0w5kh01O_bO}nCe(vCxLKS)+jL~-^b*hzw6 zR0qk9w7x0C6G;lvSQu$xI&13tjC3vm!TIXbu_S_eS;2|W7YF5uW3!#J++EDxyHB_K zKTWHu?v3rZG`+94wCZ5G)YbKSsy4K1S5Wl+R-I(5_xg>=Dz;j6wbk81w5d5?Tszmb zc3T6t-HiAJ?A_gDrLWo7+WVJq+5Y2DU5%z(rm@~W;oh1^8rxgnI;Hi_ou*Z&98%OZ z^so$;=}Mh0c>c!^hx;84+kgCA?^-EurfmydUto5|wxFLb$ZK~xU(DZ|xhgoQteO^! zTHkEjT_TP(HJ#5$f9@>+PO)}Uh5dayetb#lmi1F~_f2i~&uT5JBQ<>oV%sgq(rc+; z%|@=Sm2Wr3sA#!Y{9fKmmU{MlS4r_#iV@+D3g&aGs%hsqnoSBL`q4n8*HAy0L$euC zNEgQ6lHmUU`iI21EQK0rsg>bXD7Zh8u6m&Ynp9wU94T&LDO=h#=i)bT*jZ{;n_p^M zTj~23VA}rxxm#~fvqeif6tv+@bz6%>rUf;iw^S+VwvSD?t%jFw2O?Ouq+D(fos}-k ziaw``j|4)oEO|*_s#Jo+Dw*^VKljqom4ynH%3T)R{FRW*&g=67y-)`x`K)<8S5VFa z@{S{xlV55DDv5T9MIxLEWJeWZ0iW*kRTB^(F+w#T!)`H8JHwMvAOZ0dcjj_QCB@F} z3$Z2d=noh00l}$dXi_}M8ERa|b@KU$*pgoFqv?ql>(zX(stBeXhc=dlmMlPIm2XiV zU<8$Eyy#kuTfIio&W9?M?{27D(L`xyxVfuNnk+02Bye9*m|#elh*IsV4@n-B3K@)Z zD*&klNh6U8NCTMx4;Go&kA_VT`+K_ka=p*5Owg`s?iC^gwWQir9Nc4vEsA$Rz{d|EF#BM$k%p)bhX)R2ZR0^o0xm>xs-S!jT9Dm07b@3k& z)uxaXnne_ot8%mSGJcrZPR;FV`=@c~){3RlrC`oDD>75`l8&k&P^?T010duMq^XN{KF;{v3GWScu{FaH98{A~gMvULjzx!2 zJU_=j+C*m5{>dG3de_udX<$ z`zo|$);E5Yr(G*Owf_KbdwXG4nLt*e-s}2Z5*=g)4z&~?Pz+>bK{>a@w`Z$%=YMN9 zt8Vn|KNVHhX&Otxo~2X?04u8`L=Y#E`bP<%{gXEosc*d^Lro2r+Y+@D6;b~H*+$ny z1wyfd%!WP~^Uook#r%GDYS($~T6@nMoi3SIo z{{Ry_Sa>Jm7DY;0lb5Ya_D&g0NZaFwr##sEnPgDG3QkNC*&2^*&@=_Jh z)A>M9GWHTfi({vF7L{HV;#z1@iasipMN&uS4Yq}@9ot+-o9QpK?R!wuZc&l#E^a8* z3Zk1WN)>8TU`u-EEzL}FBmo?naa$cqtsjTYXI_-_vv$0-RQ1&H|`b2s1rumnS6(f&et>F;IDuN&+)1 z6aZC-9Kal6Q1a8bR%)JahUL~6y)X<(PyiO|2YJUp<5_x?^R@3P=S=R!EYKj0iSK#y zPS$QK{uZV|peQN|Ov+ZL%z#kKKMzR(h(%l&3>&Vu{1x{e#^UPtVs46nZGPlf)7yH* z8q6AvrmkqQ(zPMX@J4F2K1q6vU4zqN#Z)r!vu<2-scaYmjZT_!g3egTLRm?Qs}k%4 z(-BYx^4%l&eA^9Hl`D&K^x62;QmhS1HJ61%bqEMglF;%!id04cvCn*Oo}16L9KVV_i#TH7zbKH2UQ!>bhloem6+gEZ)~y z(QlPSJN+8|%JP|NHR-c@q4=xqgLk{MJ5#$_WwO5c**6yYF6U}%70#ujQma!&yRXED z{5GvZp`lQ}lUkB5G*@1^zIa{BGRYLZeQhOrJyk9(dgNm%XaIX{Aqnh}6S{a)4a+$DFf0LY~qLeF_{xw(xsvRn(LxYY4 z*!H7&?uQii{@K3d|~0P)dLWHUP-t0qautCZT<-RjFT7)UPk=HzqZ&Z!RvLT(IL6nZU^e z4|k835&_)u^|;3pWK{TBdTu3&sp@niO99ZvHT>5P;JhB9s#Ext){=2bCwR$ZkCcef+Bq;?@4k z*TPbxr*|&W)vDG!P$dg}^`~2)eQL=w%3Oa*#9`xP&vA$;J-Mf=; zR&P;#XI|9r(aZ7}ON)w>gAjZL;&B8LRbAb?D_Yt&l&v*uYGRe$1-sKVTPuXU(KX8n z<4XHP)aa9Me`!~c2j#_Ec8WJtt*#NNE-zM}1VC4c!UzO-^ckG6A|&GgiOzc7cxMaY zW}0eJp-p4T#Xu;u6ZxEu+ImMZ;{0QbnzbocuT>J|Ao3*j0U?NCa8F%MDR?S;!ATJj zlq;{($B{q^RQksuDhLHh;wgnGJvP;gU@sP@;Ijb+M-?l`5+|ELKufSuGD&>#eo8`! z9+sR;4@(mb>Rb}MNWwN%Vu;h3BY==3FotdhoC40FS&I;>01&H{SOD!5a+zvL{#_bk zK^|1F447gs*^8Dpd};Zt-fdx(TB4iG?x?nakjw;;`{3QGAwx=%kO~TnB*-IyF_tD_ z127N-l?8c=wWVHlCa4ttsZ{|4mlB+PevFWy9#8@(h2(4%g+Np#LI;K^6Tq^7$<1Zw z+~I)(kWv`+U1eJk8JWvSAx0F$15ufjmHzJ>FCU|jCV9(KRW~Iig@AGgQ(<@vW4mG( zJw$|_W_BN#k}N?WMads0 z;nc}hQS!@h;z29vFu|883{R2NU)j&`6HBnY^x2!IR<5+RPPo@wKe!aDpsi2+)!Y?n zC2RYNM23ItJL+0?v{9Ld$+E9XlGHWa4?KP%aHXp#ti>dcig7iq!5rmchRN+ zFk>Cd!`ahbn5LyTS1N*7K>!(K$-Dv!xrSk{ox`J1((an^AH1lNc%Pa|JwRhWQK$f^ z%hSUWLbp)|ZuNT&kK9`=YgTuqqF-8G=sLa6$!ga@Z{@h z_=dMiwK#|B=f|hRHD1eiPhX*7N}KF$)@$zlhpAeDUc&QkYR>iPY1Y-%O&Xus6{=Lz z-{pc$r8`T^CEc?>D|a@MCkj><)IisGUv^Wn0F=i4$=@%jK(M>B& zr*&s-sOh&>x{jZBPMu3#PSUu$)9&byMJkqeG#%+zLrfv`xFC|Qs>O#_3bc&{Jdc6* z0pMX&I;yeBr9qgOF+1+m{n%^iDhohDj5p{QL@aS@ov7N zcxU}t@Jz-=f_TPGsxt{iF;|h4l1NLE2x4K9OYhs~Ux+``e;A>fuC5!JrfDjoxjEb^ z59R<)gUT)eNYZiDT~kKU_3`rcttU;@Lj{+A)N)RW#PU76d3>6%ofCL5We- zw%6g?xBGzCYdg(rY*%IZ!ljMi)HK^<0a@!-wbg00Vw6=wJvuk`%8SG^q?(J#3!jW% zh?Z4Kd#6ITXO%UmZ2ci?c@nMjlC?5~Qw*+Y5RO^BKni05*89cYZTUs)cYkqrUa6;4 zc6QS3?vq5(?mlHWN>@5wnM%gay)@BF`=_P_e`c+yG0U#+(hkPz<8{Xk}3u5exFwS>A<sWVj~nZ~c|eXsNWQ<_Z7K&F6}P>1(nh-l)zWH%O7;$4(75<3&{RiSBL z4&AoyhsHMjwy#e~*jg3l-R-@V-M0!`gL`XK+ehJI#+6A`ysu@UE$tUkN}i*v^DdS( z5}${E61d<+1<*pkt62ORXasX9YAFs3z}yXqA;vvv;XWPks2ZwADG6kfkO3ql7SsYE z$YZ(2wtm-c>)Y>Ni9OGu=`|7bPSkB}54PHB(Pb(wG_-9~TQt^~3rJAabz99krx;3Y zrtqkRhB&>vwK6Hct%Whfy2CRsrPvaEB1fppxLB123pZO2-2Kg{Zk=ab+*-xs>Kewq zeW>cXwe4zxtxMfQRJ*IFUtCtHJfG)OxUTNZpqVI&L2f#eytOK8%mxn3%7^8N`;h+t zQy)kV1b_6l$zvh5F9GC#hsfn=ta-vxwVUjvN0sG+fM4ma_`{Z)pg)l^z%%L#G1vr& z3I*d4M&-FRnDHE-h2>GbA(=@YJw|yJ4arBMBP>=V)tHKm1E_W$O)wLYd=k$p6#9ad z;tTRXc|bX~wR6qf`hXmm62VuCD>u6zELjh^Z$RP{5gqCkK4C!KfXu30g8afnfF;Oc zrvSx3I=`GR9F-9)Rk`{bg3)RS^9BG3+6==N=x=Q?zyH>T2A|sHKWOppYoI^olCRpSV$^eBx&_fZpx6FcH zxf?!@n{IQ;%)-yw>X~apy@ss=#7P8@!A~MFJbwQG!bmXy0~r8@VsaJ~K_m>E`6vNm z(Sl@QV8I6e1i3LX)9HvMs0U!W!3^2->{p5KbqA~mc zWaWYTfh_?dPD_{o5F5(oPmGfu4}znNm68d>jCoU$B?$x( ze{G=YC)OtA+&BIGBWU#Wwg@21l6^&i@CXXHk|&92!iACwjPW5r{{VDBBpAp960owu zc$t9_$(N1{647|%8_cLuKZ#EeqmlIxV8d|${XAzqA&()G^x`uxAV;|~g%J}RNFJV~ zqz+PA8U14VUM+L2)HG>6x7-ar_Qg?S%P9-=22cQ)Q6-#`K{!?raRb!3OSF%rgb(jv zkVmJJ1t*koFsm`dnH>=%BIk^{M}k#P0Srz^5J&fzkT4QR0hCBQr;46O)g&ws&y$cq z0D7awOLTxv@4mNg^2ME}O^!KOzj%8Q_t&E~3yU}Lafe4FC+Wg$!u zZSzMclD-K5Nsteznm)vGY?Bf|2c$(v3ot_gIi5b87L)1rQUH_a5j?tD{KYUE$MH;$ zBhn^Gl3*S_q5^;n#&!LNQETq|IW2itG<$rTzgP?gm?Y*&fy2m`%Q5s0DomJ}00Ec@ zgPx4J0YJy8L8&HWL}cWtAcKi$Pyix&Qmk=N1d)%l`UFc!;z)skC(t~SQhuNW5EKv8 zju5=D%OV7QM*?tq%YX*@Xlx$Z_tA;#hd;KBZ`(%0oWN-c6vq=enBoNTl5>OLv~VCn zB?ZcsAdLD;73If~Ss;P|SrB8$kRVCva!D){;EBwZB&Z;k1J92hqv<3tB(~3ww}5;c z-~b89Q}oP1f1Qo4(>w7R5B;k?B@dL#~CDDt(t69KO0Sb?O>r9nwx zGxI>$7Y)&Y(%MEeSg0e?GC(sJh{VibV0|)t0t}vq4qOKwARs)605Ajymhu>$A%MvN z6aqOB#h5@QeIy(SFusx`f>?1JM2Yl>Y>~l;P#zd4k1#^!3pBGHSOgFlN}PozowT!h z#C}qA(1z$nFZ6eU-oy($h&^^T!MCJy!(gxqWU~)c3`>@R1c;Dk0G_>|f3chK%U5Xk zi@*N>0GroRscoTmi%hBCzROx(JJX{}xO*tpZF- z!Gu81-1{8CkIOjw2$B9hdA0ulYK!9;J{Lb_XK_1yqUwgjxPKRWi%9r++mx-{*7bIN zs+G4FcXc(UgQ)9^x9-GuBzUX2ao1|)b;Zt{{U=L;??`R@$=jN z0EVptQWra0;Ul$n6g8`QRlaq#F70=?>6_Pca!PYWt66sQOzmX=T$FRh7$4Qz~SKEhMxw+vGI9Jgfp3k|V?cfTkk~JOMr+ESz}+ zl0hee>dfE3v9JtfPtyIj!%HlmD?BsnX76FE zZ_=N>8oe9c*t>gALb_JW)2Qf{ROx_eEo7%krQrco)8wDHvmh1qTR`<05Yb`+Ap}PT zCjtQjk2dmsNDs~2?T_^M42+c@3+qt z==_#EGUO6OHxQtxB&l&FV2&Wq6AzMnz$4q$0LD+->W?G{_n8H70Yr!%kidXFAwV)$ z48|lGDTxd{1Of{KB2r3)Z%9~fT*f?>gPbTM4*(cwCABkoM8ko71loF7Yt;aUVh^`& zoAuS2_&IV&Ag(_D0FVRJPlLz-0zZVo=_QUpfeZB(&O*Q*n2g}#`+&$D7*b$?;BuLa z0Jta2OaMekf#*FTQl5}W2N@@k48{f^ff;xQ2nyyB&^I@4Q~G*gM%Dn4HnBR! zn~56lgIovI>Adg5NkPXE20W86Df}otvNC4;CC1(J~AI!W!X*V|i0Pzp*&4DUtyh&rw29Kt? zHR?H#7m|`e2_gruh9sHd4ml1ufP7C%4UeaeLX#kZU}uquk_-?6wiW@NnsMp`7~-+W z7G6OZLX-Su#2N9AAcQ?RNpmH5ki^S2AjGGu>QZ?`MzO$~|A z!?Q4b!`ZN<#5F=aBhlanI0{K(Ny@;C zn6S_{e!V(d3TZH)@g$_iXDRML!GZ$;nD8VwN+@{%2#-KGAv~E5Jzx_{$bvH5WeI5WlL|Q%Qfg{as5wfQRtY1>EC5q5@;{0UDGSCFg*{@W zUSO1@am_HxQih>L>$ayT^i7!r6Dj*Bxl!|JvKU)b5+=MamN2ixp zn_WH`L_Cnd5{&OnVFv=tpdMb5L4;%qRJ1flU0{Uyj1#@>tGoPzjYcF=%C4z!3k&Gr zv{uSjML1j@1`@#y$$4#e*pa4My zE(7yi255a4+Sqgbr9dT8LD0*H77VUXbUKTHX#W84&Y@T8ekw|;s}O*J%ab?-$>g~M zkpQ!Q2x;vr7H%}y@Ob73URVYg%QvcclL}qE5)Tq&1=1@TWEAAkD$KYj6^xEWFn}lu z6cW-nmL6^z4%5_k9<`^xwUeFHGFNcsnEF=e05X`_3EJ@H`t{&~C&eHV-)OW7)4{x!y zh^1Fkq^FI}4u(7wKl<87QUVN$;s_oRX-0Qm;)Alaef19&5V%MQ< zeh&}#k8#!G{kyvBlvDFo_PYKbNNUICP|~e!P%^Vt1{JSi1CJg&2^sOpKCV+HA_fGJ z0hLTQRuwZy2o%sm2_#C1j*oNL8`}^+g{b6^NFSE^mVnW$yFSs24N7d>Wh04D2!)t| znJ17Wg%UkL1tL@uXoMF$V;Lk2xCpT=k|aWr#Ib}SSQhHy*2IrXNhB5X=?%n0v`%0^ zo>1Wb014?IhQS2?002JWeIyT47%WH_GY#ntkPk>TMMSpEV8OcGr)O`LFq%i0I!Wo> zt~Q2?%wdIb=_MFJRR%#N@=U1XP_)M&8GeGQ#b?$30L>G`kjDX)jKq1C z=_G{Ml*6`~Z?8+1jyaMJV^w@eM6HObvgP}ND+xp zYSb10tuQ`X@Rh+ZP;oK=hvKjyO-Kp=ARd@n^N@<6L>h&$#aT}kl1d7OAjhdk9wUoC zRdhnJU=mI_7h(qwmYjiR%L6crfJhX=3=qed>0jW+0CSxG_Kv;2*U_c5B z6$vZ#bz50ul=7qi?f@XQyr)B_x2`WT^w6G8bb_V~Kuj`#W=eUO#FFq%g9@OmT}uT7 zDyfqI!Bdtp#J7QvNtMBluU2#e9ytsOuq41B@q{xHIY1m>7%D))>XzP)2c(!_IYF5u zMDhfW0D}w+@1fDa;auz5g$W05fcz$+6ZVN4FQog+_bjtsGgASoaN=^;TN zLShUPEI`kmwT$LtkP=CGavID(%)d=eH!c~I_^VGUOAVp~w_c{&J{VQx}R?4QTwxz0E(zc~{ zT!KDLg@rb&f2r4D7Fu?YkXkWA@(S`2yO|s@ik6aQC$*s`d#6{vdORvn);p`aZmz8s ztw6ynpmUUk7mxxNv*Xd9fFFm+&;I}wozBxMNhEV+M6?g)l?crWDwGd ztW=U95=;okG5evlZgkCaQKkh%KZ&R~)cT5=j5vIvzK{q|6nbF5aIcF$!H*c4KNp4O zl*^`|P)v2v#2)vZvC=$u;lo;r=^-H2$SdGf4hdB@29mEJr>2d3VfHC~de-!9Bsr%_ z1uBG^s;ohJwL*}OPtsYLlAjE_6D4<_;fmJhN!uOK-S=dQ)|wR^yJo->NAX&vf0bC% zs>J$@t-V0x5J${dQ;>9fP1H`6YHh6sDn?Ni59Hq%%*dKr_lC0iqYK!Tcw7!qaQ*+MBOeK`lg@30XqquOJl< z7BK_qz<;J>4!Tbs@d)8OAsKp6SK*}yOWD%S-HteQE)h<*5v{~3fUoB*VgCTEmBN3s zZH=Jq&XuR_4Jz8)@uOWSQ$rjSh6;t+PHXc$L8lG&_nMeLxY!W+DkJ#GXn7U&5-Ds&P#9YKrDnOrn%uaDrkbu1M6440=C4eu`H+RP+KV=om)7|Eye-6RzAO&RbcitOSn3)Uc zUI*016f%0U2VRvcEgjXjwOymCD62~T-lEXu5AxZU)5bv0AOH%oGxYKk=CAfz)A@Ur z`mG|WQ)G6iAi{jcUDKd24g5KP%^s56%(pQz&tV_ z3G&zai>ObFvgIlOqc7wsAdk)s+!qJZG{Vwvl?N9zf-CAYUG7+fV z+dV=!s3CKmCZ$13RWBdpp1{DM-h`I37lJaC&cHB@FT4z)=oB>@9^dcFaWr*( z1Zfvf^2-If(?W^@p;h7;?JA~anSNWa;;I4Xn^2}05U8Xm^zq_Yz~WadN0A03#1SK| zs_y5fz5W;;zspPN+g7fhdaLrlEih{ zZ-vdUE%e$qEdKy8eo7i_T#z{hiflOX1yej^sC$&_4-Z9phm;aZmO`Z}QzewKg*~I~evSU;?dvKHQks)ZYH=n21q1|TFS+gCt8=N_R~k~Z+`bT zZhMob)v4It{{U%P-)#GlYO*O<*zQwrNj1wRsJw0O^nFg-NZxuK(oI`^V??HCnr~IP zPP#szmo+LaI)GG4$Wovs9*t%7D}cd>D8)%(FyBw4V_U zAYaa`dEfEd!&L@;mlOC+ONfMJ^D6;`9OWQChph3+Y9T)it3}hM0dnKV&&20rcTZxw zwZD5yyXgeiwjSZT(dypQP8NFBm=$j{J;$f|iG4G3Xm=WRx2Lj}RDi0lZ-=de@d0zf2|a3@=x0oxvVufuBQ@&!vs{w9izD&!IQss8{_)Fo+U z0}y(?HR}G+xib~WZXl5?vk+!MGyUk3^yk+&y~V5+-~eX?<|LLX08^3d00cmZ0~waJ zT{DS1BnB{NiDU=JBR)V8l0z8>ARHd@${C>X&n1>VIRV8>dSd{H1JnwFtt4;!J2sW1 zIdqUCMvnG36Mal$mhnCwv{YLrK`z2T4DspScEYyK_N}4W*V{V%f^LnAd05rI+c$My zl}kI8klMc3)P7sn+xp!wJvTPNt*>FN^(#xN49F3>c169Oo;Oa=)N5{Cms+Y(H}z;O z9b;}>)hcOeTenT7&HbHrBjws^R14`^vX7Z%TvTe7lyOU{EQQyIV6In?$$}srO&o;s z;>BRkfI(AVwzoE~wRKPJJu0<2Zqypu^498_TxpuEok7OFovZ29m8fbq7a_P+qg5L| zs%=iPE3L&O)}pV8l`YIcG~ddu;=ub!ktZ7UZ-rF`hH)+cWL5tF>e4PcNE<{;;|r-t z6qTy*#H#_w84d{^0e}jpE-0)qsG{g`~gq7s5W({LN z(YIBN*5KGyjct2pMzzl5*k-LutL+|&vbB9*Y`s=m+RocTTBUjf)YP;j5p*iqpu7AO?t@VMht6ISxrA0m!Ej3#-fjz z$oY;d#RMxJK12m*;>49+F00X0<1)&>Eor1w;;T)ns)Yr)5DFr{5Ij3d@sJNx-!`Ka zABR-|)CZ6Vn8zk_$w(}|0raYw`CyBhRS?DO0~29j-N1jSU`{D2(@=g%V`c@RJ!BJj zYc=C8)9bS+GKwk&KveM}O61jMmsN!I5DAYU#AiB1=?qoB_=SRV5EWa3dga|@JCBwG zawSNTKqfA;u0=w!0br>MhF&hPc^T)zG5-L}k4F$WW%_Nvln@D%ELP<{6D^iL1uu)Z2n8=tw7u3j2COm~a58+iN zW3FN1P84%g)}BsaN#-KV;hMk_ApZdJ8x;W@!9 z3w_GjzZ-pyw)jZy=CNg^_jhDj*1Gt5-`c%VQMF4udqT9fW&L9pcQvhS?P=N8vzMu= z?b;TVt(K;#w`mKGN_X3``;WF;yIXSlwl{X} zwXJR~YY&-kaYm&#N2Y31;?${;+I^AnVc5Tp4XLGef8zr7$6<@@tHl4MN zzOzofMmBmz@2KjQ*452MM${Kmt3yE6YL>aRy4zZS3`*SOFXRI3Uw-EN`mSl znDeCvl$S`KB)R^fdrwPUJf{@Ps+lQLRtXe|9MtMWq01Dl%ccrTlLj~)xVG{KsI;1k z5mPFaDdZ`W3>tl@fRf7Gii`;m{-w4V-T0tiQD@=u`7{nk0F@FCtp4vLDFIj$*Z%;C zU)lZMF38^s4WS`9#yD7=k94o2tmYSEzE8k19LI#gy}060}DKrkS%Ab?dw zai0u%C;$eMid$B<%nK5$5XuK20*T_;c|7=&{{Yh&7&Nz?xBmdsn}g{53zZMZ7EBSu z;tZ=3$iy}bK`bzT`fGGSs4R^&4-v$o25v!BNCmJ!^^t`U+}gPF#9fJwCG}6#^i# zz~o2_`yH~jy$aQler+Pl!Vy9)FaacTV$TRF5r*P;@o=+Op?1#t;`Z9s&rPp+d2rP2 z?X2zXs@~n)RIK#rr8`@CAl0u^o39#aP1}(W3bL2$S7Co=b@qj!S$AXNi*{+B551?c z<8yYKqOG=>y>*&g7P{HlY1bjflTzf;%&s^4JGI)MP-CI`2Fa!fDHtuP~leAWDe101_FTn~Ae@oO|Ho;b(Mr+jU!8 z+tE56%F$_5zTTVW;Zbyr2T7om>)Z#pu4!AotzO=pU&C9oiWI4em$#oH!iCMpQfI}d z#^#S>y0kvl_De_6HJ^sw*;rid8||;ETT-v4_gyQ}OMPQhyscV;y4bSPs=HfN0dE@i z=IdU#4_{TGX>S>PP<(!A8;fdx=num_i(j^14*DnJEUx%1YdzK6*G5*UeXrezYwKMS z=B+bZ`z`LOUuz6j<6o-O{zjK+%DsPh(|dZUP@xWhD&zNT7N$Wyl8j6Gj}=m`7$HJO zHpy@-_lWbq#_=>O;T1h9M34{^+@e{PVovba#_v}nQ4`8-USmoz`dN8Ffb2vtkRvnI>jWpAFjjc_xU)4vzJLin;Ez!w#uSkQ0KU3%@W=xWDNW)E zo;+8bM`kSyN(CRnIADNJe&L8nq5x|N7ZQ-eLIZ1{+Z+>$)L7>R>`M|xp)Lpo_1Kte zzAZO3TLFr|gg9S+E_umrCS;6~2e2ordmkVkFsC?%`UnJ-Jfy&!PZ$PrYHBGASQ1Gr zOoDy=Bae1^}7KS%Kq;fTTzb*3U&L6z?`@5+Z(a2SY85 zLb-Jw+FL?e8%T{b#W$+~UPcM@iGjz#Fk96s01#y1VoIf{!9t{xFjhc5kQnk{V8j#3 zPD5aZVLqaY(Z&I2$s{VopDTg}Jzy2YWhDs_BoEY2vWzg2B!T(I83Uyyo!SkLwdM3} zq9nc|VP#l(0$vD^B}-*wkOTr7=~xg3I!cD**c`oCAQIA4!Q>^qULi*!IDjLWZ~^Rm z!S|Ul@Af2k5kHrXn`xg(_KbNk^!koYPqrBPPDJ%7lFW42YQW5G@9YY0Fcb0|W?M;1w}FC)Dlq;ymUU zO8MkwB|?ECo)j6A(_*1!!okXNiNWEBZ&8!PMCa+m9+_DMF!8g+y83sUK}hvzf4IN4 zn5p@!;6m^Nh~!9&vIWZzbLsShh2xGgR#~7(FdpS7KoZ$LxtJ0_k0N?d;zH-@0D=hy4;28h$rIu*exD(_ zYwv+e;A8f>k0t+0FOob36o;Wa06stA19)dS``QK0-Ov~Ay zc)NT2@C%cIrDM=zPKolmKyF5@5+CJx7*E@+1IS0*`W9 zYM5UDdRNS5KwS9%}%v23)6B;@+(rn{V9Q zP_0I-Cr?QgX}2_}q;hE$5GW!83`SLm6y=DHg`L^hbrAM zk4PM(NCpf70Wfjo^|&7t`c*Afp2zNGqK3BI+A`?6tJ76gO;=2(_=|LMkgD%*R^rxJ zvE!$dTq=X93Zx)~fE7reaRLmH_YiR=d=CbyxD@LU0S$6`%Y& zCjfqsNRc3qAQARB=*qA`Ah;tOe31te0yyy#5$s3i!ia0>ZG$sA>n`TNImD4Ak58E& zraq>>?5})ax5XFiuh<(4U)4^b+#iIE&#Zhr>#JI$8_K&gNTqGLdr7EOrdW|>M`7#w ze$TY4AucOytLRl~Orz3V5D3YckIx^__WuA*zGUC*di+~c?9a!x^!Q}gbx*==UyGjB z-&$z4wQhc0tzPeTSZce|Z50o~idWP-eW-Ur&(r(+tE+7;-CCn9H0$ZKbN(~_9cbCg zCXQiaMR~@Mru~n;HX1AErW)c8rVt4jgBXY(m;MKn`t%QwN}mK^6XXejAFrSK4woSQ zhyMT{`RIWk_xAJty+*^h0At)t{p3%d=Q*GG=b|zf-`noT$opi^kNb3?5F_j(?;RgN zZ7tIVFplDH?X}wdg}pnGylnWx=X zZbS&ALBJ$@NIoh1{{XtaD1IRO-SH#6OaB199rW&=^6q}8ZBVs!(-U{=x0;TVpwN|4 zwp(jPt*34MHk?Jhj+tvg6;T2Yr&s$@e-$U;qxMI4k8f!@m-c@1_?_H)Q{lgD{Hmoc z+ezK^uQwNRSrJOPwz=(w(%u>s%}@$bZF1RM{`o_Esmd#b`J78|MNtYsU>Cp~eKH|W z5(LR$-Cpo&Pw{GbgECXvUPxlayPL(UID*ge&>%{WaLvB^d%h2u&H*v*AP)q2CP(;4 zKg^o6jv^rX$yFY3B0cfokI)bgO8{`-0G9f&PH-p8M}ZJzWaRWnnUV>>{O}6F5;5X2 zIK)BgV*^biXTROLyke^qwK(x5eS{tm0rbot;+cjq0Dw+Ok+B=V)Y;vq+1oanGG1;M z{@vFY%G3z1w+TX^jzFz?)|TJBStCw#1`>LTyM4Eg=H8kXkV8Ga#rjvfP^5ujWj9w~ zkRS%5M52;7a;iKA#%113cx#*IR1}ySJs{H2E%*@hz_bncmtUnoYwEWd1j3?7#vC3> zOIsB4c@q6tmeHaV%r%(AfBcI|PKTJa!!QQzKY9#BPcz~Saex5>AWlw6GCWDjgCbcx zXM|yZk?kYX6FHJ)WKSq7f;tWAfd>$vea|5>XORc;AHxI)DU3pD4^ztLp36LOWAVvsRA5Rce z3>gRbLlDND~JtPa1_U;Pp~-R ztHi`eZ&yQ|?YO(J_4*kX!udc zm@6O^>BCGh^+*7L=?XG9D3VBHBpiq*kFk!bc!S{a0E37MWQiFw2f&D!;$zQC0X%{y zfDxR`Mo4Z%pDY0!RD%&ELEYTP%G<%bHvMssQq003i+7#l?_5zCnIPlPPw^1Z>O7Cr zA^`vr0AJygQ9^^(5TJsmfp{^3xiASLLkveCAVd;eP{n`>Oz=sGB$A*L%P@R$g(nLV zC#;)Jx2Bw1i14!@`bjFQE~=w2Gc0(iQ}r)LF>kK+3_Y%1ag?N903Mq~?sx1T79*rx z5L_^fGLTfjJV^uvEWAJ-jw>@NeL^X!+Sa77K^_CKRu2aZ4=5^Ei4av}!1{e=R2F5G zNKSI9JxXMT$CZGn7!ph|U}K0NO|tt*!<9rO#IMi_uY#@VR3c~Pl_p6dbBrNI#$AD( zNCkx4&nbU4z_7wflVSjdU_lKQW9Uw&NF+wwd`>XA{G$>*rY#0J6$AQBY7ED(bLXUBmC3FXE>1%Xo#x%1QXt?M{S zgve$Yo_s_oP~>tT@@0_|#gv&`^^pJ*a>dvfa9AB!IFj1Vxd|$A{{V5l%%5ST-~bCO z2p}XeFbM=eEKC(?3xGKl;}{a^G?FoqGZ8Q;h!f{N;z@#}%yjq3bRM84B1)4D>^Yba z3XmWZff?zqm%;>-5J8VK#bKI6!4L!h(Z)QIr8!TdmU}^N{{XX%u)b0gJi~nphV+L2 z02akUkqM4oJb-wyDxmXha2bqGu<#vVn6_LTmvhM&8?e-CYXk21{GMERQ)B3 zRGtX3jg}F>@>pJ%XJ=HPsUblQf;n;v63PMQN|qoYA&CYV@Vs+QP zrf0&bCk%#9s1hbCb6LdGNJ<-++#3+jcVTVG7U_$8zFVA+DNs-WfIpi0-sHKnvxLF1 zS!rtLlPP{ktT_`12|!bmKz1Y!Dhn2A`vP)XJruKrAex4K0wHODvBVHRdCU0&akXUlJxZW?RO)V43}4E{P7T3WPA^Ms;Ph0%4G{bDk%Y{JsO!Sk6bM!39e)$RbZ# zwr`K}b8@N@1oK0UG!`H*e)h)OlJM$?OVd=40*C@h)5^dI7GW=|!fUh$aORRntne>Q zxq6gSCLr-7dP<*C5UUKNntGcg1rzL zmp3lJuv5d>1|g3lEgBXQzZgm$Krj+&BEu7wDhB}`IULD6NIg`m#b_%D zD@tT)3VNk}NCX(HAFS=>N20PN3=Jigl%EopiJB=JJwLnuO7^A!O3 zfN}xUs;wdeAqslQv^_Gm(Aqb;{SJ29gLcuq&@@LX^y*k`$}DJW`rW-}9O>88>XV{a z+|ewxD6X!mK;X@?R=u#g)o&l+>sNKT4~!!jsCw zzjPW`y0t@PK-1Io+H|zNB8!DVM@Q4ap=|s>rlO_OquyM&0d6j?E*wo-ta`V|_?DSL zsuUE&pn1PDwv#svE$NDk?}pSADe|4vN9G}tL_ah*J4M?XadV@b2vrJ-sOOd(_K3>uPM%#h3gWWWW=g*Y-c2V2lSWv(>$Wv)?+i4R@cA1^00hA4A}u`_z9Sme59=XiRk;$8OqJqUiDNv30x%R*QN$9; zkJY}VzW}7i0@(E|kEeo?5ViF@(6`g^L{zx zy;!d8xctM&A*SmR8$3Yt`c%NlB0weq4H-KoUo=Prkff*p3&8xk+0OH}DC^|PRm=lP z01MqL^UbRZTJB>WG=wcUDguIy0$E2DE6uXm$D~0%g(`hOn}}ai@C2jy!5)zePbX<4 zpnwY%^E`U4sc%YY@MbJTkQsSIfKi#3_`y-e6ikAk1T4oDVv6}JKBiTs8bYrrX_YJ# zE0h8Ffbc;*Pgf~Tz-vi)W)r@TdBZf&L1ia#yR!q(HG{L>L*b$n^5mdpRbP-%m<+66 z)003iJ)Bj#aB014@#MV+aj5CBzoKAvV(a?=Bl zUhX zGW47UDfE9ZotQLvZ+C1~(xTGDuuvE&k;D+JsS3dCp$w_)lbT2(+W zv&ED$lEa&_yOrceA3@_02daBYA29rpCBWzN2n+K76q!|y7{~znRC86}pb_c4+farl zf)T-&j##2ZsRPhT5TLIB1i*q8daAEnQ%(7ac1Un%xHkT)JBvOpa1 zTG~|fk_!i56#oFiYh^aKF|(As)qX2|7A)DjZFT=ak(Y}*zdxUbW#dAV>1$z^Oug^`?boB#kNhZW*h zdX%>ImX!@40}f;`f(%cU@)HYDt9}nG`++Ez?TQ9epPSLKl?c=T3Xto7Ws?fAck5%rkdBPbibX`7;=B=sK zAT28kD~HQq`pC5H7L9$X_JiR2x5;ojZQIQoPSiKOf06}D?X{ubJ$pNCS*fBcYMsm7 z%YCY9;-byng|523iYyE0N9>^Nu9w^1-S6Lu&Er7Ze9J9YWo#F?r3p(#vr_xpaM=ft z)pZR*own7}>!WguEq2zJD|-#wPS0&SzSnlMcXvN?QfeK-?p@#Zwe2f`6||bycHe{B z`*|uuGSk~yAIcY0)r~W%RMl@Jo0sd5c-zEj@b854`Q_F4Ih^$hr=B^fWa*{WQ~v;J zgUX%BO`99P5h-61%H*=BO+@8tQOjj%up++^u0j%eri=3|=*C+b$?;LWt!doX(zM#& zCrQvLRnat>2tuPZ4_2XhPLwJJt#%rkJrD?|O;9YV$0)aEwOX}yV)D*$^4TSol)*0K zfX#r!hBXTSVD-2i@YU+-daYY~VD&{FRB1qBYSd?SdZC1dt5%^UT!2~_ybupsE4wYO zZSE>lxaUTpV>GH%3PA;lq+`<(js-I;efX?(^Y@2wgT*+GXE#+`)iV{UEID>TQzau% z001NwhQ7Z={{RcTGfRPZS0h0oDXIKAYE@FdGU_Ng)~(dFD6LO&r@l73;g@{U)As8L62U_khLS>pS(mFP#V>81maqM-rz=uxmoDgOai;VhU3fJ# z4&h1S^uTU23+O5axNI%WS3=e_+p12q-rn++LhKky1_nn1$PqrLJVApz#X0M*d*5eS z_hYhl8@EGMseh(e3)rAJy+jnp&7xIFK9Ec=Aik0Vc|B}dUNc+6JaZ|WN0yCcGN1C7 zXL9<0E?|zh)%S9NUf8eZ1bmbh0O$YD_>N~j?q7FPj-FCsiTj+pqBt5Un`aXF10$UYmYlqrl$i?YBLfi*9Y*s+l!6my!7{aJgpL~I?kq$ zWgs#!QWiphv66pwp~ApDb=Q2~Y5Q|bvfBD@3Uuu4!#JhEc~mQvWmA$P(u4v;fJ9~! z_*2-neZSZTcWM-P+`X+sNL5H;Sv@>U@nTmI3^FDosx5zCI&N0kPiSc6otFIa%^ z@)9A1j<^P^)wv|OZ<*>*vH!<3#oA9+$!Fbl^Dpu^XH4>C$m>uGjeKmR^8~*7c~l0Ab|A4mf$1?nSd2SslbpjJr&se%S+^} zl=u{^6|=-dg~%SD4mnH#g@|117siiet#{tfsju2wbF1%jArM--{Ua|-35#DmaLgwxEV0~&uY z5B~rs#~pqbhx^B{_g>1pLTPI{KC7h#Y^kiYzZGi12xwtdFhG#J0&xr0j&A*{M@#wC zepU57R^L_BX=*IxYH81B#5IaiT0v{tUL{%;#dW!) zH0mYlGE;1Nerr>yz#br;CLvZmM7NSU#CyftD%87)t6Nyxvs&tR?Qqmqn~_m2Y9&f- zO$nz>pZDgH)Ky}IfaArVu7R8JEgl=j^OcIiXlCi6x(H?@3Fus2W?_as3&HqOv%ET< zRY6K!6atcA!VfI(4B-0WKloYg6-`%g+iN#y!rGA)DRP2T)8gD4()=lfJd~@?FbKf_ zsX$i01aF@C-E{QJ-6w5Xx`R^U+Jm|?wK^1ofYoXWOw|Ja0QSHDAqhA+7oOT}8xGrc z_xnn{7NJ>f+N(W4wAsIR>I2k;RY)8{`XF<{!0S{lwO{S+*Lkg6Rt-sRsx7+IsmN2~ zSy(GmUPLS~bt=T6A%ig@cwdP4pZ=@j`P|~v7naI}B9^H#0K8qvy_;-qo*Ch2O;3P; z)TyW>tT6_sDCRe4nbKRP zNA}45%KV$S^XXj<&mD>d#t;;>8+?6)9F(S4xy&lA!dnD+Y(=0K^%= zBTwP{MyCVfv@^MSil%8*O1y=KDIv$INenl|KjMdkvboh+Y0U$5%o0Md1hgWM|vOeM7|Ez-|#Z+&f0s9IN+ zRsR4Fu4wl$R;3+Y%|1&dLa*1HPl(>dZeGauKYVt(bE>|jv$dMKdTJ|?wAzq9y=>_wKj@`LU@9@p@9)oFsY?e$v) zCd%+I{pBy;gs2#TLR>JOxiRs(+28$f_;A|2{IS!ij^*|imA`8H(PuHjwVgZu`DT($|^ne*g6hYE6oOey1Gsr$&tl)> z8aIh}C&8~!(@&JVynE>FCG0JTX71d}$l^hfEZ(dDVnlIfh=>g(L>{bHD+AEJID$|C zgAf?B0;GbZ&)I&UNY3x=mo>=PZ>H}-O{!`dC6ay< zOWhzTHFX`oK>(#^thcVM{))ikE1_^ITot>CvQ3&^pN;FX*R zOe~f?TfnJGr6;y8PM~C|PT?QrR;5;)Jvx+XC{ij4nWprii>TsM^5d|j2lLZpsvSlh zn6Vmx<`OP#IMwPXB`QTkl_5?GvnBy2Mq*jXV*!Z`ife>s&lXmsN`xRG=7WP$sIMkL z;EWrLkOKuE5l+kKLSS=Dz>qkFDhm-VfQBk~6(BOSM0FrmqPx7BoDnyL8cb_a3MeM& zr$~o2>C%dSD{!v{dg!W)tF0ESpj|5qtPSYaSrrs1QN@Ko1EHqW)s;c@3V`92KqZTD z07>fBhGZ=vC6KVgmKjs!BEXPYQ9hB4cQZ{WQj~+tmm&+2Gz3FLGm`M43KX{aL)GvH8HTnnWo(;6;GN32qoP^5yf3p1CXpB3@`5p zR#iM=MA7xfL%@;&;uX0|2m{i>q=r*aG_u4J09G*FK{l7GEb>;QAe@XhsX22f#awzB zC0oa!W2~arPzn^13E~0zM1}%LkQsoC5J(|ch?OU*9wEb$w6L)bA*I8Oi|Bqs7yLgy za_R~S^-2!<>a2Mnz;7L~Yo zFeO5s0wwYnf|XLt4vc2Bw?SUbQmG`ch9S^#Rgq1bi;!dx!CTWSJ#y|R;2esV@n};yYO0c|1fkC}mkA&j0^}1g zald6eOG=_Yolq?-kP=A*Gat<3{<_|G$Dy4bhwQK4_b*RJvG2Cizc#nGZKO?mid5}% z+ef~)blDDLqBBy)UNQ+!PRk z;MUi4Gf9u`oE|lVsUI!bGsT|T_cFbf`xObaPD@&(NmXo8}6UAy#)9k2GVMbI{Vauo|Qr=v{sAXj<^a82@ zk_rYSg2ad%S&OnVav&11ezCesK&FaWxHEub1zU>q;)LQ95D=a|kE(jS;T{FZ(WonY z6H=_HHERbl1%c*fI}rZ(tk3wYa(NU*gL64yBJA!B&ozm}kE(925)z@14;q2KT$ngk z;V#S<*m_!de6mbn8piOeRRYsxRzkGPDIp~C^+rD^#FLeiQEp(>aE}I*K6MmI*kf<`@cy|&)gq}JBAJT`n#@$m0fGNy{8vkdDhZ< ziMF)&+#7RGq$%6mZ=DEIR#UE4r&pY}deGuR61)nAG6PT1=`+ZnC7GCxMidWU2J1WR zr*L;3z}-7*d~IvG_8X64?ky*H?W?MFeN=VbxqW4-Sp38bH7V7rYxrxbYE>&+R=A~A zDkVyYEcnj>LilpCNvF$SF4d^0I#iV;f?0%f0Kwixp7i`1j;T4{fmLBttN#Ehpf&+P zl6urlH$;|+b$9cj5DqP+wuQ3|qEg!ETdBq%}XD4;zz6+?na>juA>;>s2oLqvY@ zy+Gj1u0qVRvcLg&z~6t5{@>_(cfIewwgtLb_Rqh&PiTBb_U4reYxsK&3%VM3)b-5* z-Bc=yduw>n+!`fHG{C2AO2U$}BPuUi6R6uYB8=ZJgZ#A&Dl0=&Fz^V8_!j5K1$3ZDul52#5ivBtpW=c#|q)EDs3`zMGY1sGzYx zc_=`A5(zDmT)6;*1&Lrt;<8HeYipy9B*bGX*e4!YvzcKF^_+5%*5OTRc91Rwjeu*x z^dYgK)OO}1U&j!2-0P}7eQl6f|KNDIgX5y?+PfJvEH_c&&rAPn)wU_gT$MtxmN zrp30{SThXlZrU!+LDu2d=05-~u@XU*QHwVeP~O_AMuhoD(0{{Rciu#Z7 zOGuIFZXkFAl1eWi5J#m)DS*aQ5ho^QCmfUog)ud@)^#e7q8E`Fe>{CMyqq3WFgyYb z9KkIqMSvU04mPo4=o&=h64M&lhLgGNEu>v!#d;*2YNbESkv#GblSj0j=4mZ!yLe zDAmjrWh|NG2@1pMw;wIYt2Eh5($Bt&bQ$qE%stPyvXA402?^z{mkcc%G^M z00kV_s6UfQ5O_!#62~P-5sX7Y>7W?wOA8CQ*Io2$IeZ-BsEO#!`p-*7FO@WrzB@0y zHknp^OKjF%*`X{mlUjn*xv4^mjPkgnOHsB^fhDgghLtjOH3(?ql478e3@iOB5@cWi z0r!j;J#-(ox93OQR?6)b+MPO@bxLM9v8fd;WDpdotcy!NR-r`Va@uL!{i#!DZ~e`n z07bo~sZza&DzxWI)HvSh<#|IgrL}rA3@9HmjYSgy+6NLrC`CYt0f_;aXyM-ahiUDL zE*(@l>FC_Ro!~d`-xyI-9Ek!L58+Qw5#*MiU;zv39*i&qpan3ZJcEW)0}!%vGBJrh z*_l`;A8<;~5g?O@E#_or-U9wz2c~2ae8P+ch9!M57zMq61e`+UMHiU7kbgkLYul#! zV#iWtI{FrvFF&?~Vr=+V_<-D>3f~f4iujJ&O8)@cU5M_!$L^J-wHT%~J6)x(S!z1o zg62Q?8;e4xt8M$i3Le)|uR@?JQK#+0u(!V3?q0^(-Nf0tl^thkZ{4Z4x31OI?Z`IT zuG`%@O{Te_YF6yBtxESxzqGlgRFG1t!GaH83igGSF$D->K*%5fGa%$Zk?I)pll5Hx z0AOu-}E zlRp0O2f)UB`+yw&zvumZx*ym0e_!GHbdqpK*c_j<4}a&MxgOn6;?D#R-x>WRz!9G^ zWC;M6{G^x=d>^!yBzPVt{y-1sj*Mgs_&=BF6Pf(H9}}7AnTqEGeX~E5e|VGa`hKOE zc-TI-ZTi@IV8_l|{j~o8iJIHD;$Pu+;Xg{hH8f7k_NQC!{_M1&QfVFO-c5D(_JwbM zO+zo^G)<%1insQEHX4cI#!_Qe~}eTVnQRm8WPnwbh(AAHwSzcFF$VRHp8YTUxDK zEmeu;$N`mL3~>QO2=uS8_dj7GMov21auh`zx+YeHsY9x~(WGyyFgT*k)cA_D1t}mF zun8UaxU*ufBzyY4)BKFVl5ikk_zRpjff<}<&L%&I!1MOUu=;v*dkD-AxBOpxdx*#; zL}W=}u%wJ+li+|NbC3wY7$8P5o~Nc@k_L=*aM*|Td&lX0S(_8zVr?mD6gR&8xnJFF z{Tij6n-D*Fb#Rp~Ybb75aFi`*dJ42%6d{$=2wt0 zNRbf00|0W5NH9Go_+m$}i5)#y5l)gAnC33`SD1@w9@vjYS5ZU{&B_&{CtF$E+T#?8 zj2U0YfHCBr1xY6+c#%F}5#)5gQj;o3Vhr)hu`mp{5;;s`jtl^2r{bEQrI_+ikTH%S zL1*%%qy|{Z#~{m)%O9MuAD}Qo@^2%^fCNW?+`5bbRnxR;!Hj|R*!RQ4xneD`V{mtN z+{|rY+%lOUNnmHvAf7D*kTHYdU_=b`faP6>k~|+s3p`J}`bn68C9nvCFR`fKRKS4{ z2c`$PfM9?RjzidIr36r{402(}9y7?a0ECbUI3p5FaWS5h!Y4t!<6g&RHr!)8zyRiY zeMe1S<)$fD!OIclOykOqB7BJ?Kp8N(@@iQ3X~NgHI(aRIXSS zLd<@ZfDaJ9(;f0D8PwYcFi@!H*KNASfUOJUKF% z1Y^Jr21st3axMXb5jKYW-uHc@4kVBmhY@Q)3|b-Yv|X_))2UHa<2v%w&GnTn8k9F~$)kOGw$k3pA;w5;9!7>zwKvybK{{WaX2ZoC|v=#usY$lPqN`EUkXkyl} zyYClZL($t=y;_j4%g8ti#FeHBmQY9`ysse&A(W879y#Wppirqv4MyQm@nw!I$|Yiu zNMN(+pL8Sz&lA==qOTj4E$TeMhV;|ouwh~Y&k_(p2QjOb1p9%BaObLyf>TnJncc(ZW? zNFpE;g$~P1db5^ka;P{P(Ts}aWHc=!V<}qLosmnkshI&q~RHA3Q~b1 z%GV6<IVELH3raN>ngGj%Wi854 zTk1yoSQg?u=2oLAOdhdqCelOmHl|lK_Axk--4WsgdeY)YY|g+J>b+n5^2;OZ2UW`-rM zO{^h^+ZkTo+d}8%DPAusvs6N`UL*p{Ni4?#^Sle*;a7!fNWHG;?!K>TYA^e-uv(=OuV+&7*YFySvrdE6se08k{V{(T zZ-0BF@&5o2_@L#gDwQ&?h)86lxls%Q2DOqkyUsf=2H-R)&=vD8UJ$|LGzM!}1j`42 zanF9qd?|N_;sbEg+TEk={^Q=)VZ&-yx>YJR+75w4xM2H>a$i=k(DX`wDGf?=H5+N0WUhn=@&@ax!(9V^&ryBB0sYaMG;vUA7r+q-kx z2Gn&eLjIbXm+3;~KNBraRJzt7t{ zRGEGq$9TUY*Hu|s3NOfjuZTks5q1f7_~PC9#~ z>~Gmmw;F|zw)nH(RcH}N>fhTtQ*TkYg2iqHsC_k|fDcNO+K5uiR+pC&U8iaP0A()b zR=1(9d{}nowOB>H)IZ$~*JW?YX02O$dtF-fmV=I5X;I`#;od_p8mR9YpD;hoQh7?m z@=(W)Nd%waRtS&`WE`$bY1}HbKAV+D7$UA}1I0&d`yBrvo80MR*;o?}|N z)KVO%lRLRFa2u3tHpMkx6XiLRNh;(=l@5Z4aKsU2XMTrCezRPD&25Fe?RA|?;YZ>( zWOut;r={GkpRl(j0o!ijr_K#dwMsNK8p4I!)3-{f*B7>$Etk)3KZ#i(IQiag&u?zl zZfm`r++CTt_AcwP4AnF}%V5?wRc)x&G=Cpr?&gN4r`M{r5{3SsTI#~&t5c99 zPVVNZX7sLXH7lEI$}LRLxwN^fM)KaMDB`WH+L~7u)fJ_w)}>Wmo(ZT}lh*s}Z;dUz z-MzPI+0Tq^wB6wCm1S#9KYf1nJHgv(*K&`q=v%cFH7#D1oj;b>7I$^Ow62nZ(5-W* z+Mv=dY4aH#Gr=0AGgC1^1eKr_a|<3|@JSA0`kY#2E97{ODI_UJ%9S2b1SaZCvuy)t z#|Jh2wN9c`dN2TKV5SU411vPvV0dBC*e?bQ#R|iE_S$GLp*RH~td`43fEwVl<|z^h@nG`h6KT6!k2R)|Y`P1#{V zzHXszDcjS#poa3&jlbdV^!+bDb?vKO$x4MR9D0MVCRK=4sOs(W7=g)VLj7TQ0uI%{ zyhxnV5@{_SP!go5kg%Y@r9xkC%JxeOVyBGwcqg4f1f+mmOMXxVn?fGN#8~4?bxk1A zsMOI+h7Tl#4y>FRK7auN2vzbh=ae3>y++v5f~`yjRZ_$fv?nEl! zKvpT&SK&FjmC~3b5F2M?&t*6wBu1F#+(#mc9OzJD65Pc3qCl2t8}2${H?2(-2;@SS zR*;C?gAb&#h9)?|DuxgV!xT|N@~R^jL@GkBtdUH&5=SgD8vxI)I6A|*yka090({K`U~{{Tx= zUsKdza72xa zaa?{Ssg5Lk(QNF>OaR0xy+^sdq1&lVw#Q)fd&=YJ)O(4!H7(I_6d~g6rPvESKh&u% zpEH2@d`>acdig(smtAUT3V1+qe)en?|K) z6fNn!#cHx?Qny;S6`-mh1t?Rf#xPk?7@t=M7!53FU9IjOw6vc~*juWyRaqAmG>f}B z3}p{5oqD#^{$UI=CP0vqI3fI zD$GeB4)yc!%)~3J?E9&465?BIM0l5DF4*jCg zd#T)QliNL|q;4H&aPM7S$3fGL#Y$AE+C6%OuXSs*pcvEBG;KPK)~~6%N8#-(tGR9} zy=vys&|0xlX@DJy@o3_*7u2|3DKdEp3Jmci!StE?DEkYg_NTV{^Wy&ieA_j(TKaag zw7YI9Tg^&adrxz3y!R!IHs%`dUe&2n*}64kijKBg?FwHoYJ-;_;~aDNoYLqbofOkS zH7b&jLTM&RB->#u@xD7x58&g3aP?!auN?QgAT$m((R?&Z3_PY zcy_1ZyJb+Uov!SDjiBorj+!7!dY|@XO4K$kfvA-#D_w3)!*74Qwb5A|+|$!4t;t#% zioIQq_=VhWZKp1Qr=E7&WhS6w2~$$8pZlx0^!liXppPM`awrxI^>p}o*_T@nw|c(& z-85Q`_1`zwTa#Q$z`NUPnw=p>PtnndWB7fqp{0h7su-xRZFhH08mq)F-7Bx{D$cc@ zOLKl?$Y^Swx}Myt77WY>CYUBCkA?pL)IZ`SO6WW*Em$YwkdlC-8DuGtkQ&t#hhWYS z8}l4q{vYHiaUT}t>(mCeSB2ILqavnkv8cYhfRGEBQL|&5-N832S?eM&sm-z&rABFT z)hUIEAdV=#1!}0O#IgB>6w4DV%Ei4WB$(n%6rIxUjm0Ic z@)h`S2p!Q~O8~DtN}Lc04#8#tfI@NV4qdgTYhwBCZ>U*4D`&d5di*LaN~7if0PSlk zx>Rbuo=Sl#RDMhQ(p@9Y{u|=R%Y;@TCCCJaup@n7exPINZ->=M93G8I$xO5kVnY32s3Gg#k=uOCDeEEwBBVU*;_aOKOBQ8^Qko!MUZ$;-v=x zi}Fylc(E0l-Kf-M2x%70I~%^Qdw;vEwOdNUj|$>xlf{`MX3~XViM= z+*YkVF~Uiv-x&!_N@h8^gBBJbY1Q9BiVq)nIX)!t?sqGfQ24benz>4!{{W9MO!Lzz zH%SXlpIFC8H7?X1+xJ&>Us6^&P4y#trhu#|()q8-y%0=Og{VkXNp2!Ul*YgI{{Xgc zzq^-rs9Y;mx2dYtspIA`sMiwYKHvF~J6mwIK2Zv#g(wPO#N+89PDC=1J!_g#sCbBGBZI*3wAd(yU=*@q zSBM~j;}8#7Zt2#aSk$iW+P6QN)fgW~ijKw!!1eMTg)9p~^5jA4!Dh+IG7k`{Smi&;h7 zsa|C{Is##s`CDvWwCfF9Q@hgk_TQqnJBM=W7J4R&Nh!Hgd3sev)zc#e7P@@_S5VX{ zgA}c8>Q-prPgqBLc7EE~3*Q}?wQuTbnm&u#kBF^3^$L}Rdbir;?`5@njm=)8C<-0- z8)~fdsg4%y%Gp#3JxaD4xw}i-&EellXd7_Xt6R1`nYOB*IWD&*psho3?t6MJt@Be$ zRC_vgso*7sscy%O->X!G3;jQ~o66T%t#x;-H)}p1pHsQIsLyk8e|6dY)mrkc#YY9| z)oYs7D%E;}<~>4cFa@*dAHqE2XS3;A&&F2|TKON$l)5>5w~}4X=_4L>{8}~ms*_TK z4i%8kqa=lZ2+U_lQtK!kQ9(SEqCO$46deHLPyYaAZq8lNu5PWl{i6GR<5TSZigc|~ zkx;a?`yEe4)O3ZeSt>BHuYGGq*6pb9tZi;;(xmk2vN-Iv!{0X-4Ay#!RJPPCZmVg! z#g$@3OD#gyt5Ln7SW7o5bx?p<@hb&pp9$iR?D?gu*U&qcceg54U3*IHE{%VsRHRvJ z)4Q;}((Y**EUC;@njBG3MNFXuV~HZnU9;Sq3Os&ZiM;Ho zrM0%BaEd~rU!@~uRoEzRmtfFp-c%>c-;P-{@xD2prB0tVZzPdb3qf_MDjdd|fzdpr zN#D%oG1a^klcSd5)H2z^kKlNsQI?`q0R9&~if>HwGq!0SNnk2dN<^<4tw9>$K6()A zQB{Z>j};(#gh&pmq+pUKkdSeHx6^3uEf-PSdV+^ricT&094p6xAPF;o6s#D*&r$xt z);}GlB`TExbWpU;eN>Oq!KMrdGZBnu>XbC7wYpk}V~fsziz0Gk$q^uD)(nUpd9#M* zS4OY!)l@=)fS2-^2iS;hKrM=XH%7Kby;KK9e5F*>qOcf(g#wiWvnstNQIY_v-b()f5EBL`ITn5-;+1oG8dND%QO#0nV7YP$4KU-B zu^Z_V-25ry8d?7U44lu$G&3Tf@U_ZRpt@C*Q%sX)nF^i8H9z8Wbz5onueG!q)acQm zh?VM5Q3wjUtv3OgSd~>mTZ5h zH+1RIV7Arm+m&0TXnI!7^He2P;!C<)p8n%r)GumrHNO*DRg~1@QER)S!3aPQB(diB6EL`c2!7cbjRIsMEMtv88m5&tB?-sHI|;A1;7u zO)zL=^I1*_Q7EPg>hhY3Y4a#B52$bl>!+deIU~Y24FQ)$Ox1BuF1my{tyZGfOp*(U zS2Wp$$YOCJ(mHiLLWL?9291?9`E?&oKx|F@x2CmmR<-3rR@${PwfkJ0M z_U^s1>NM$D)wrujqA2`N%36k~P#qeTC*q6`?!x^_S(J!{>sRitY3{w;`mWU5T29x~ z@5N8S>AGgWWmd_}nl(F%kDI91rq-W0Thh5&XlbPyPfFI3R0`^LM_^k$mE{3(R?+G@ zrFx5Hbwcu*HDnFNE86m=^r;mE%CY%Jh-JVdS>tq9m!(XR=1>o#DStlV}e&=Zw(9_at+iR4n z+EBf!pe-t2j<&k3ZuN_T8l%-(i&Ea1>niMhadBRaYFxf*H8^#{(x@PZ3}yI_Q6~%p z0~{xd z0H>c6uALR+7g5)gUp+A7m1XK5<{(@(H8Pn00Leh_kD8x~X{W>dZJ1MhJiiqJmS6$O z5t>3krCc?XppcgUo@Aumjyzy|WBfR4J%R4_`t5$B^J^~M)T&j`HF}A~b^W8LAk;R# zw1sAyKB1%B+O_J^CY23FmF=54)U;vOHTQOsv@0}!!N<%A2ON)uJ~;bhFb7_){x|jk z@At!2f!)Nj`MuQmban0Dbm*!vy}sC&mqLz@tXHPRt_?jGTB^^;si#hkv8-HGElSoG z%|~&zoOpwqNl+_Jj@2KGphh#8%xdg=NalDDo_c6?qC;#8^c?*t!gzZB}IAx zs8puvX*C*^7PSh9K}yt`K4>(^l&lDD3NT;k$gY3;C>5^OmmS4#PH(O0Af}rA6jhu1 zWdslHT0nBWq@eyaIb72sxN!DIdXtV^P=x~^I3a?Uc0Q%bEP=tHRg;(@*%hl$b-A{v z)T>gcE7Pe%(DZ5`@#EQlg;ra8+`N$Qf1ifgGR! z#BgFq%q#*S!EUnq<)f@wRn={jQ`9ZcHnXSF4Z*{43#;1G41rOfH^_i38iZU0G}!RN zsy8)n;b%bH=h7GegPRgb&gooh9eJjireq>Uy^}PDuoQNp=5dhRbwV3KoCQK7Do_Twys4B zE>amVpO6e2lw6V|`{I2({{X`YAyUAS8HiyT3-*7WChIN45ov)~BXSDFsbZ``fO#GY z0muwf$yMUA^L87ay#pfQoRX)Kw<3VygECW40971;BZxA;-AGP`uz_6tzF1ZU7?Z_B zbIFqdOd}p9XZT;Itv9We*wiqq1CR)+rB^Y_1$cruyb<*V>aM2+N|h9a%P5y&23aAA z5p8tDqsEkh6$lLGT<8l+>0t7}1C6WMySl!gwfmK;J!C924G(WncWR9{8t%DoTD3N) zilQFVO}KIC6Y7*aSPVLz@v3=`nNyud;#d-hLr0EKk;D~-0eq5xFC&Cs>(z9w*6E2+ zcrNkYH`lzrTT*KF8%s{7Wk7(WhNg85PVE*7hN(@nN}zsG-5qSH5b!=$LjuVx36jBp zkp+~Q2z*Z-p3QIs3Uq0N1QgN*MkJnH_OW*lxWr0aeP^8WpZtI*hm<6xrHRmaOS=H0 zt|tqf%Itk^${Rd6%LpIB8802mX*v?m~h zk^8ylJx8@Qa4GUb1d=2YybCB;o=Q+aFk}eB1`{+jub!%U!KljW13UVCF%rj!XC`o* z6wd_&j+K|-$fkg$4rKzvmq*;ZGtA3H*k->PT7&#TvTTrBU>HFl-p=;6GHdNi@ht2? z2(-m9Fd>)@Mp(PZ^?=Z)zy?7*V)wVK#+@`CqQDnu45x^L%z_$PLX{B51fDpyz0)(0 z9aZSn%BRga>mH-k13FgF) zL;^@&00LJa(e*Z^cSOplS0jNWVch}ZJV@q3<0XtNhKwC*n$EmsSTZxfAPy|50d^j) ze=LP%S!R$yVLeKny4pI1^W6G2gQQy%|t#`$){{X$)TF-PU?lgP-FLZ8Qr1zCHd#epD>ZNOaKHEj9e_EcF zv0D_5vL56;ipBk&*F{?+Yg?$>H;t7zMCH3~L6t7xsod)o~fuBlX8X`0@Q z_f-wWt&86Ls|)K3n$^z0jg)=ED0~0E&2vNmBkj%hH#ILB9KA<@9g=pi0#P#Y7n#E*_iGZY~NiIoJ zc?7%OSeusIHax$aplDX9K}?c`0KxhOdzL!ucf~s|C?tggiwuckIH}}d5*ly-Jc6h# z$SEWQ_@8JX`x1cU`3C|-P6j-cmB0k}jw8pVf(R}CIUGZHG3TI^%K-z41RR)=>GL2M zV=zQc76+D`o?)xR4w3Va!H4ez(@K9Xt$l3L&$M1Gae?ykNb(tTKGM9GK4khp08SBO z1g*J75pV)Afint25`4)A)gQwIV=4prK_D?BFc;I7lkNn7ScMWHNg@Fa}ic zCUGQWFA&iY?sDBW#mPnhux=&*aftEC7yt+}%ZkB~^s=R=OSde@U05k2hya3qpQ-~6 zCjcL4IEm^@((O{&P*ZMUxF`;+N2m!y3IfxnO9S;4hH>T$%(W7w0s}}S`lOOQ10AON z!p+uAHv+&zSlQf*dJP{AY5Gd2r@>241|``b5d7uK; zYr`{%*Adn2j}>Fa34sS7WC7|q!3F>W3Kj&CF`BmU%sDYELjxxu@r5kI*!o}q4p-7h zJ!jYKe|Q-~u_OcKMDUc)5W$HeKm?T|kSDAj>87g^)9ZW5*JV?*ftaBu(U=dbN@SkWI zXaI@B29h@^pj;>_rI`7I1?CGGG8RIqJ_jJq%UhWQ5t&dJz+OfoSmz`k08EARJvR4f z5JZOgcsKwI02!J=6EPC3Kv9qhc}rI;w1+wqZ>)AC5c;M-fEwCp+xmLLX^R!r87=2B zz~p-mL1Uc9f#d=QvFh0Ld4YzE0UXI-Vno5j@|b`?;~wU|y}&Y4+{ZJ3#{h{WpC%*h z0vG~KJqq-Ls}UpZ#F&C4vorz(A6&;EJn@dJl(WwlarFZ3enYQP;1CRpY8nD{*1`Ms zI87Q4LcJ@RZNjw*wCd7sMZQ~6b!u@C)65B3gFJtStPkR^NK31|oxW|8jXiHqeIDwf zAPY|F&Mz!g>My04t?sTZ)RJLrc&vQBr2av;@i=0yK0pRQP)Q-Yf)sjBvCm2F7McF_ zc2{xQukSB*o#hRB)GCH$qh(Q^zmK^ z$F|xZcy=|d#Ym$2*R$HCO%rojSW_y4@w(Q|-;{MLpo&dPJ&swJrM^6Ne;OQMk5SHN z$;qDtV+3G*&qcpuf5dGcg+JOw@MGTHQ&j%K+nNu3Hs;UXx9?Qax3$<^(l_0!-q&}m z3a{X-cK-Cd)oY5?cp=k8LPy9(75VJCGZ}S`W+|prfG^A#ff|z?&Lw4P{1w^xmW1|A zjfeKIjD49r$o#(F$oa?V{{T*h@;}$}{=d<>eg~87B+dut;v^6tWM*f}pKtkfqy;EL znA~>z)8&nW0C*pu>q!3qX!pdGKZGxVZ;KC!1948_yf8^uAj7iMTlm7tr#Cz{Uwx6=+Z+4Q} z?Wt=&5#JE~yxKMGDb(RozR%bey3cgA>xdB5C|hnFud(f`q!cfx&<}{0D1y3(NEcFj zkd}{D=y&Lq{zYjR`JbP~RA#AtU9Rq`lUnBHtB0*~cUjF_s`ctHd0eFnx|BkIq=ZV=6&{3WNN|_le>U+uy(d=b}@Af&@lHWJFB;u^5wp zV1jzy(3S~E5C9VP4XK+n-x|>*liZin({Eig*i3=}IFmn?AY{qO00HJW$T{k(Ow;OW z*VZ~^y8&NOytJ~Q0cLNRcUf)1jyZ*IR46`_F+5Ds7$AW^en;HkN9GKGFgZs9A6HWc zVsu~aj^XK5oq5`5miIcv#KSDxAhxwEPtwbEb4ApU0SK_u#B}0N6r_e!uzPIo8@|1; z(v$!sIbccZMYNFKnrbnY_o3;wxus|}z%7o~(QT|~s6LgcTAH~904k(fQnLmEpCEe? z4!t6P4nsU*VopMtK19S5k70(%kvBcp_Qv4WH6bo9bqlJL=R9b9!%p0WUjZo7K)zxz zAmbc1V~Aoz9Fgcg>ZUxE%#ffgo=i%TtYoQR6U+$(g`Z}5>$j=HRFo1Kh%IKG z02s$!M0*ev%zZ&&LYbaY4lxbKiGl-k&&-c29^Sx`V96~chBKT<5OeD4^K)#Tl~89t zL5WbRI2J!s5UL;;e1ZXjEmdi7Sus3>6OsW7<%p82#K{s5fgXBlzbFh69J9Cqph5M0 z^#fw3Nj5vYG`9D0Z1x>6*UUVGkU)S4f=KZMv4}Yy430mU=rJdY93CKkLs_LeL-; zg;{2TSfL(yOoosm0eInzlSHb*ScnFo3JHUQf$9)dqY>?c8S18(BMl^EgD@gcag#Cu z5so~fCj+5s2@D4@H;pZB#z)z2xFycg-dUIRc)K0m<;4KUsfV-y$gkAcQWU9N1~4H& z>CQw3Q4=Lgz{HUZc>_G6LC#?L7(zG9@FNJO2tMl>U;!QgKA9veA;}`qg#rnfiOJ(F z$dM}}+sF+Vj-#0%F#t2T?AN>t{)Y;E0AfG1Ne^cI#vkU&!H1qo+(M2rOsf$RWxlBW z8bFS!MZ*G55_u9c1w#_PrBc$oNaN$gsLTOCvB-dV0z*hMDg=)b0Uw{R@j28%60eW^4o?w?O#h<5Jl60BXrw$ZAAQ2b2_jnHN(cc#@o?Gi49yvr2 zF$JW8%it3M$b|$!>Bgz^5+H%eK>H8?$0o@H@CVcC^r--5$Dfah+F z+S-no$ZcyHPD}wW6PEW=$ea>~gl1M8-?ApzvU z&^j|IXv&p&V=6}x^7)*Cz#sxiJcP_J^-7QDvNNF|hENet1*qXMe@ zLdyg)!I|+(-9hf^{K{mIO))GZ)J9JkP+*hlna8NMV#o8H;aQ9Y;=GAD^neK_0+0w& z06rB!g2J|k7Gz#30N}Zn=LKLH6BG91${2e{W~b$G1hFkP0pNjR*YpEd4RusxfD5;4 zrsb{Ea$T{W?VS#-`>QbGiU>TSAJhyCg9H*32F?Tw^)TsMQrUh*GftQeR-s-3RFd4r z6o8V*jIqc>0zs9qZ1YWM+wcj1sXSEri!1$P5GEQ7!|))=j;4Jwj#rYaF=7$8tf+EG zFz1X9TPlMMkpzb4Po1dAa&#^d1L(v7Be&?s8z&5)f~sN*wvAvc2$_zL8)DT%YfwBD zK3b9e#gJ)$yaO_+KA8ZFOvjZGCvA-hsZ>OcQlKVN(g7bVG^jFT>Goy{rbuG$lVeQM zEC33jl$P?O5L^JD!t!H03H1m7MD?HO7CfsCF3&Kiz@OcYDny8<&J-wM875tSh;ZgS zdpepas?buBUKzm(e=)fX^6g=csp0+_m8zdACB$e!Fg6STA)dwFG0-1?Plo6Cf$rs& zfv;SR2e#WgPOrWDy}IiYLf1gpIv}T8QJe4zS!%k)MO`;bs_8cTuJs{KqG^@Wt)BSU z__(3o4Z)`D{f(#7+I@-by|??X+Kq*$1hmt1of^d{+R@iu(t-+YsOuDIB~}%=*0i%U ztV=y*ytuf^(!c)zI}hyN+PYn*{=>MR89RpebM6baL2r9$+C86N`#(j}DO^X*7TV29 z*7v+QDqLCa9ZrE$OssNCbZeCcA zN|!|yejOwcHkkA28cQQmv$eqTGzx*?bNg_KU@C*cQkDqN^N6a+%;?)QEMt? z>08;@TiT_?3U#ipZhv=4YE`365}nm&X{YkcA*N`%zje~9d$%^8>)cjUYMM2#^ewxp z>sD0C1r;dNxU#paZk0d3MOaiLA$WyTwEqALyWhP1h~2u)?XP6}nY?!X=hJBE`t6!+8l_zJMSMetW>u4@ zq!pCYSxS=OfIPDf#kM+Q#s2_|KZDKNi zh6;Lr@lS)~xDOCT9tlg~QdmNig(6a>1D0epnTczL$CeZL&Ex#1hBzK)iRS2|KVOJd zPGYzysqymYAX5$;Cz=X~Vr>Dj%q>#mQrVlUR@$1S#X6UoHR@1ns%q5I;Tn}Hwzmkb z#n4<)t4^U%57ivt2Wc~G?oXUlI|2K|UQQS3z-o&mx6Ea3CZJQuuuw5C2zT33tiAr- z_CG4(;_|)5gGSEI+MQdws?{4q(|>huX+avjda+XhQQ8m~Zcs9v9>-kJpHEGDMAtML zm$a6>y)9=+z0$5OsREzApqKQm-nSM!s+ucQt^q8_6!NU^4*nx5mDNZpsZY!j08t#F z*~7uRJ8IbXH{s8YDChWR2dSFQ(oT0fmZMZ4)K5COf>h~C^AJGPOGS=5#qdwu?T_3o zwX6Iicj}_v_J6w-Y1(a#Rd|iQk;a~v7w>OI;-4{Ym-Q{{U4vnL ztc$LG{6qXGZ;s6O4|(?Qe9_Z1+l{fRRQ>4q8kADE;cHSC6l(>-yJ@f7P_IPMb8S$vBG#u+)2alhxXv;vJZuYE?}SFK*VJxaB| zwzRq&kH|kShh}M~fbqdl(?0^WNC_bzsln0-)Jc6B20cZTQQ}z?6jXH9LTS`04pUGh z6jTAjb4pH}+^w_j)ik>nW%Vd+XI59N)R_87p{FxP zrFfr~L?5a5GKSj>n?JXkD{a-J;;k)DS+=XaHPEM!rXJ&1SJUa&{n*c~BlT*o7zymLq;uH|fM-n;ulUX+D zDlZjkugd$L-iC6vVIF$QxNsn8qqjiZy;~YF;rVJxAW{zJ z%>}InE!Rfvi)}iD)R1LVaAwN}VFWK0e6b*cz)KfZ%fUAbdbKIX4j?n2UrqrfSQTRc zKoGcq!x;pcK%kW56;m9KC2v3hTh+y62odthBq?7@c&)ZTM(xG0SF<9?xuE^ow3?P!%LOB>jUzyb# zBu^lEo3^HywSG_uj1X{0^r_Z&#}x!O$10Ex__ znK0q>VD>Gf`ZhM_;ghlY=Xtw}vHNMZ=u{f6^46`ivv>ioPe#(fYrS)ET%c)NO}(R9 z-)gnz(^)N2f)ATklDDr-3%B|W7#c}2`sv@C4tOp_%8HoZ< zB~d<~QZJs;@3Ps3dnt3=kKrIMu*SyX}-(hBiBBuoI$tt6%Ci?try1RZId{(=EVG764Fy!1SnaRv52cH!qw{ zT7uF;1~wP+u(<>W$6~XddY<}N@%r85TlS%oEUu}iC8MZ zOo2HPbDqrUc6(d0>#JVV0=;TA5{at5uS&o~FY4kE6e$4ygb+H{UCVy@h4pIe<mNt7yAh zLQ>k!=D)YmY$~dnpM*-#_qwfOtga|&HZ<<9t2hBgJ8*_cS+v*Y?%WX5QWajIYIG24)KRx8Krs4~0rfn+wSOLQwQx=s@bbVM{(7QvISN|T z%+@~*1c5x1!_}%qsiA7bS=@Kqy8i%h=xLVDSF>LXIyu|gSIsIYYn#5^Db&|5OUKH& zyleVNLcLQawQFmdfRlK~txMcngzGzBdTOME8pgrz<;68n!BUmiXm>4SQXA9))2yrN zX5+!vkqbRuJ|MS+EsM7F{?+IgYf-F;xZK)`nufNmxbKmwUR1bX56?8JunizocYwe& zo}=U`YuekI=BTLEJ3rm`s2?1jzifMvWYBV262{t}g#F^kW6DnV_#ee{981N#cQ{r} zD!D3@D4-L_nrWz?${NhTICfy{G0(hv;g9ye0B|amg1M__snn(x0bNdHtyMEsUzD1; zs?`@=Wt;^8d~5IQ!PY;qbgtuSf``s~e%x)~<&+78rZp16e$(#N(kmV@rL0%I9sG=F?N5Tx$DT`5)!iu-0uV z3bY#Ds01ULl-G$sq%f8;Gsr&^c!&Fc;y!aQPc~oqG^9k+XN zqG}XhmTKBn`E;%kn2uKWG|E(@!wip2#Qepbs0|BCMAYq@Vttb1Zo(YbjF&(77XX+u z`7;5CZOXN+G`-J3QJF7JjB1sJ3e+#ERYoXR<+l?FBP&p&q2gbuv%4F3>H5vu6f}y} zs7gGJL^V%IRvbog5_v=z}DTEK05jn9y#h03o zrHc*Pjbtx}(n^&F;kBHQq^nNCH%}JE?R3j zt45=u@1Xt*9E$STPS=(EZ3y)@B>)m~p;2(mSCI{X zLV$4sK^DkVt; z9fTm`Dp^6|@#*?xOyWxdRQ1tavwu$YZnO*Fi)*V}8+GIe0^@=CZ^VpC5)1>$gf|uv zdE@Zsre1y)-nk5Ew-6+HLrREMDmbW7EW|*WU#O_v>I+_zQ>{*+r&fz$gF{n!1dwvv zK=&C?K>&jtXYj9&SK(RIX6V8ZU8*KPT_p}$i5H$%c44iXA1}WfGW2tvBhS*OSI&j` z6q}-=6bcV;pe+%Ob$1^`(>puy2d&#~ODDVSXMA++OJHyPF5w^WRaaa$HZ$`8L{oE4 zwP8q>=J!{1>ZzkuQ?E0h7d?m9`z_r4?c0q`jm6m8dXt?aSQMs~yR|h6KiWHAaM9q; zO{nV{9nGc1PnGGTbZ#vP6>aKL9>zWkw==gYbX<5fGQq(3js?OcLHR% zDIiG$8vg)>^GP(am1``fj&GMC#2WOoDLk|)DrF^aOr3rrRRCkkZt&7sD^@^^8|nqU zACafW$jkzvSKc6yL?5f#6)Ox?H@YoFrt3VpF{WJu%oE03Nk!sfde{9&x0^3kWBrG{sp<799w}$I?Y|1kP=UaH zEc~iOcwS0floHAqPhG#mz9An5pU0(91_il+ZpIP|iEixpr13Y0R;<-wms%D)#h;Xr zd&jA3J~cM-j}AC}vkJ%Yx*d9V)Y))DEfpfUAz|fcmY5^os4r5mt!-JY?rGPwxDZ;6 z-71##LaRYmr&$zFu>;Z|i4C5*mkZ*VdhAnB9&T6#h;2wEpuB2Zd~yCU!mH5=O-d>R z6CgN)p#zrFrr5(PEV|AL04E?ZlpUOhX9Vf@J+R#i>zf<^Bo`lRTtwAqqGD-(V4%E*oH&t#x$pGN} z$O@rJbI7SU5;FiECp|f7SW$YCInb^9yNV>j)TBsmK=B8fv^57AQv>RN))awHD$*xi z92WA}TdefdYxU`ZN)#jdLEN$Tum;gMx0+G!F%L5%Fapn$5dt7F$0d;jUjiUO0J(s< z;}TfaTXjKcRRWtArBO{vRXHD31HkcbPAVV;Y9ipok76iYQvsw23<&(n zkcLP+Nsu^zFaRbDFbpTAR`HRHua@E%ksz>8xoi{>$LYv`2bgK4V-W-lnG@*>33-tq zj}r032+5{~b|jSm7?TT-6c1AwAjASbs40SZbu-~pSPniyN2lp%^{-JWa!E44>;rc( zXm74B>!?2&WyLh(CP5|>EX=;3Nge{p5gdstG-r}Ftqb!yT=Q7TeE1F4smvuN0fo2~HaEkwXa z&_h^6NDqv=y!VZw-Ry0bJYQw(9S+|8UA;8-7U(rMMz2lPfF-F_)Ge**ay-<~i6kfy zB41o!x65~xijXtNfGV*-@TYBLv}q#AfkXw4Bn)DkFi^d7K#W-ETsUY0L(dApra4!^XtJYKjVTY@n<$xf-CzBAxxC8u3xICfFr%6Lql?eu528m(mKorc9R{@Iw z>CA}C!J+9?o}D>aJY*6%83lN$o*;;fdJpiZ^-oo`h@u!TSsESV(3?qq_1cD%_l#m(9jv%OV3gST)TIg-wne+xB7np}(CPy|W z(nLf6d?|)9%{yxPJu^a;;>2TMpm!HmH>bS?*KNs0UAZy4d&>IAxTZ2zR%sv_r<=QQ8LHR5Uc?)^pF|2 zmSH2*(;PqoW37|;e(p`bZ99pvH@(fEzP8#Mvv2Mzt3(E+TdPej{@UW|g(WKj=kTde z(Bs(k7fbnYq^6j-OKmE9VXM(WwXscT(oTh~;p zO_b=z?KJO3fuQ_8Yx_FA{j2Ny`u9fCG>tQuH*asI>b82WrK&w58Ipyiy`ZP_!hkE+ zwx`NnK;`$qKXf-X%IzP=p5U_F8lA3}u)Y~aIXYdIE44D4_gcU5nVU9f@a`F5;y2!7}yoeylBpA#S0L+&4F%kmvK9wPdR*#Z= z2nD5=AbMnRSw5*SpePF>R&u4iua%|nDAT3~$jXFp6*GMqZA7~-sQc@Ig!&mrj`n5GOW&N+0U9>JnQlL1HYz#y3f{y@nbaRHjT zl>)*5Wh%&_h+v>M1MkGXa5$=he|E)v?v~ncW9lJ*BaSdafC83sNm60}$zcr)LF!r) zQAPnHu<6&YtjxA5*H8jU?euSyTYOmQ+g7cfJVBO|84!h3at1-qfV{q#@XdI%(}7@o zz!@?FaSFvrU`sJL@FaS0K%4a&MTG%k6pm0bKv)ErBopcO4FLciO>m;CkVz!+WGB<= z3y@fN#~2aH3dFZhqb;hWyoNDohInspcsmBq?J~Wn`{Z zW0NR^lp+H8BzqEadn=Jhn1jw_k?9P0!4hRhw=5a-fW#TFmf*jTibRh*vBb-tP>?`; z6ZDMarEY@p0a!BnOBNE`VCRtpgWwRWAVC~~EiEVEks1w6q5hB8>ltbIp@@Tcyfk{9 zh5NpLLsD)KLW3V%f%L!%S@XpGAi$gqG`Cb&nx~+63Lya#$b-a^OXJwAfJrz2Hcky! zSOGvBmmb84fCNeP9!D5}Po^+>wN}(?R`ennhyi&vAz%^5mk}f}5KaIvIdvgf`e+PT zC_}c9+!Hzw4|~U@!$Q{lrA3{Cv9oC&nqv8?YN!z81yd3^7{p09B})hfB+NvE))8A$ zcd0apjPncuiC{#8`v!o;j~~rERa{!%TnTk$%A5fOU=cr2&naTTNd{p|bw&6GqVmYn zW=9}+kq6oUh2mGwt3DVGt5sZ9Ql>82>CwKEi&}YA&`Ek_gJ{CTMrONVRBPQj<${R$ zgq#x*=^TvaPq073mR?5VZBU_>Vo3^CPDT)Vn4GNp`924c)hY&v2xLNrlO!(>EYM(? z1B$69&~iyNG}NGx1hjdNNMfN!CXvLDMiNXOB09%1v@K{I4xNK`o4mHtdg-HE+%SEe zuZ!(Fs8xU#Q#9E%bFELsT@B0vDdMhvOmK#>LjB1k?|36q@T5hMZZNl~av2R~UYv%44ETH@&C zGD~|{M|l$FG@IeVwAnyvOZBKAh>!pvmSZdn2rvZ1VSqgfYJkeqUmP%?gY<|cj%UJ* za)1aY%THE4qYz`s;~qp3#wWncaUXt}`M{6kQ-Cr(UZufj83rO&0fMFpp0El5l*tcc zHr#`&&(Bu{gn@3t-u~wPn7geMWoUqTlamZc;sQyD21Wo-V5ov~lWgjAE-$rB66_YT z*EGAU3yNUM6>3jTs8u72f9>m6Py)9V@<$xtqPvh)fm7^ciDSk?F_vXwID^4SBaBa1 zJsS1wb!|TMu~fIaqR$1TsWXaoOu&#)oD$3d11d~T5&>|`{L`Rz9{mNMS9~_yrRE5q zLBB`WMgrK;4QEQLp=#Q;k8-6e=~|8MomoiWUZsuAS`Q*i%d!R%0c9Qs5PG)p052T< zBmwpzU>tyAFcf}3;(DBZBlJ_D_fuJ~PnXEtR@#2MZg{}wcWy0jT>)hTi~CE5a;YHI zmMqM}s6XunL;?(foMYGkKmbRl^3PN`q;k|+TtdHV`{{PJHe9lb=^;#IKFr&PF{e)K zvCGelNdExvOc{bfBq)d{=)n`yRhG3%Rq0WvXf;YMDb-#_mof*tclL z%}lxycL3o7m#~N@^)ch^ek*pQ~txWwEffD`w58iEhqtut&1RmU7v=W?`+7ZUYGR$mO42#< z9ZKO;g-ZO+Q^q0<}tY9;%~#Q}~O^5dhwxxxI$ zf%ZA~T~e`ixSu)81NEO*Y5a4VZS#HPP-Nt6Np3&Ozu-eUsE-k`H||(D1{Nol6aUPL=%+)FkE^< zpaMw9iDMrvNc5HhGH?h0k%>~W9%^eY!Ps52FL`5kKK*hF2?3k~5*&|V^S&`!w#`ru z9u+{6N~-|?Amx@UaA81hAy0taP&EgckA4J#IIu7#Oqh`zh{zEG&sm$=qo@K&JP0EM zuNVNZCnty>dXPee=~lWWYq#S?IkPl?Ll_1m28Iej$UJaC%z}E4R+3Tzihu|HM@ZGL zvkl`8r6itIIVFHi)pnTtwgkJznqfwbNgqgnqyPsNWf3G2W_dCDH@KPU4Nb;M;6P|z zC8i*mB$0z8aVOpg>SdwZokpz{sOm!yIH`t)!~)))J|-uTIf*d1=Bc#rH0E(ymxJ|! z8U{Sdt^fo4N8d38dPPMksFgEAvC;t1-_Qadch{B7(@!$#ECSaJwcvp7?AVToGdw}` zs!39KpHHk7!6zzP$q*wX^q`;<26;=6WWXRV0#A@nh=54;1a)}0)6jC^AbmsLkn<;sL_SmJw=t1rHEg$0004fFOx!^q9vHnSvAvIo5qW8NOuq1+f?bX$>28(r2XV z9k9_*@Jg}c#1kPwjy_q3Bg+605&&4wE}c(KU@2h=KO$79l0l4sAOO)G##%rLg>OkR z2_Z*;=`2Vj5?}!Vfq}+B>Yyocjw6U!Ukt!R<;1o~P)rsWKGNW{kU+4X+ejT9*{&B8 z_ol(+oBLp?gH4GNLk#5kFef}f&(d;R>A?haVeD z^7@ErAbWawGh`XS0GgQ@ndz`fu{=TKz<7uzKZ%G0NXNMl7ctU_4fe*-1cG+`q~#&x zGrWfPE_N3YxH~$nQkZ2vOY!gtli-d*ID(`A1p5G|mq0NdWUPV6eNb`AlU$(Z_JDI}QzqErHTNx@PQ zkW|dqEFwGq0Cw$#)1^|XfTn`Cw=IR8hf9C>yApA2Qr_b;5Fuoq5y+A1@IW}_97vy6 zRdmZw6P)qn1o~imx74_w84)p))>8XJQd&WU2?0>HJz(NYx2x%s44|^Xg;F}P)YERQ zYO++M>ciD7>MPG!r4%Exmq#bn1K-HpW?Bb@A zNC6`uR2D0eK!RH!&SZcO@Q@CAyji?D1ORaW5@HJiAckoTEI=%NqJe!Q)NBC_J}x}B z@URf1@rL9N5COmtSmj`;5p=P7oSH$BOgIWi$_E@tmKh;h6cSh2Tax)*JD;ALY5N^; z&Rl?8i3$Q?!-r$hzg;mf?LBQQ{#`1pS=WS;vI4UV$stQ9RXhO%gT#Rf9%Rz@3L15tnq){k0U_9-CIMOEicb64LlOWCSyfXiVN@b7udR29q>ggU)U%(N+)G$SxZ8MDMpZXRXDlSQHz_TB z{f0KPL)KQMDs-uFQUk66j!NpF`dGkY2AZf<41FWanX_WrR@AO+?NGZ_yt$`Jnh#T> z)NVBCs;CA53RWecdU>1;R@#@3^QfmBH_N1Dj#_;A2(-k>VC>@ltqWEDQpoo_SKYU_XqN&iazu4fOTYgB2`VtklaI2%gd9vUAomOQ z##xs5m)5l!VMV^Dw7X%b**fxeuRYO%-0p(bcAP}t;pN3|Q9JX0%3FbvorA5!gbIjLr2y<{Y#IGDutDL5+ zwGy(t%`r-l4&>E=%PpuI25m__@c3}<9>Uc-Dchv&j-jSg+uCl|(lqPcGS24SjsBCl zXxdX6?XI_HDAcuP)xQ~5;-$zBb}G}n6)MoFNrcz_^wg^~mi8c(EVm<{EQZ3?C0mn# zR1km?c&fJ(=EBe6rtZF-ZK`e^$A6=07xV?^_I8CuL)hC@U!6vs?ZrySYTTj$_=_Ycbdaj42}xHV3_#`P9#<|d?AFJNJX8Mw z^vnEA<6K)Q#m^VwRFmS|(W%4o+~%Pw%%6yakW^1AD{Ufg*^kZQH5HYGHw{m&NcUT_w>`7l_B)D> z;=I@Np>a=6zW&!xH47S*2P#cQr_5?kZBgmEJuoRfE>y%aGXc~-#s0=^Pq{s++FRGS z{r>>m-MG2mS`M4J6J+eYzAtHMdS16}M*jdzwAS?--Nj)>_gAl{)uVHNYip-9y@gAI zZTPFhNvaPwem8zT_%fNJ$GFnR49eD5!J+~br7dBJ0VqjQkD=7=1nwvQ0QC0p&jUtJ zz}!QKR;R@{Y5pl|s(F*}DzWC0+IyCaLS2l%*xL8Rhr|})wz|_Vw?!Mhy{2uemaReR zof_Lu7F&X*g73&xbE($*L?qkUtfZadv$ zNNqQG?MsX5miGE}-lt05{_9P;+t;_X6Hi@A-sal98~dvZchmk&!rar~yc6;N0Py?8 zTuzS-;XF-iuT`niLg^}-t$-e7H(~>w*iJe|Q~e}(kHY*%g7M796s%})T3Kp;!-|X+ zGSpE?*ejKkP)SMEO4uA~w#U@#P`IPO{LlUxnI)Y_RpJ%Cla^w}7Ak`ZTa<4vs9?EquCohBDXMjCHAFj zx)#_fFeuecP87KMDpBUVN3YQr@d~j20NYeS0E(z7A%QMZC8e3$d2D*C!gT%~QFPXu zd^BiCAb?kC0WKk$@eRVA>ulj}6qG6rQyxqRJfxme1_5A$5awB=IF+`U4fu z?#L`d0(kN>48~Z705CBdXT8b>ulz)-B}#x#AK+?-lz3pk^316b^?|B;oqu`}NpmVh zx2uWe>0&@=I0OI`xg*I3t=q!2l~RQko@6E=qyX+D`9xmxrZuk>Bb9Ykxss!i1?0B^q_ZsW z5fGrP0s#aP+3u)Ik{Cm93Ny%J0_CzMK=v&VeL_0I?op~%s6I2Kl-~vGg($xq&Jq+l|uf#flpf5Oc5IOM^5J)NMaCm2W zUAwo+Aju(0@d{#_LV(3G1T2uP$BAVefaEdDN=2A0Gyt~&QKORtZahn|CRn&E>%jBk zu0CBgd6G8ug>RTAlq!I#KxN=~5V$C^2hu?B6{(I+M_O+b%?f|iU>3ABzjt%L) zLsm2!h;BwbSmVh-CL4(mAd?0OBu)ojn*RW0pJlZE%yx5q{9Nx{IlmXIX?L4zw-&65 zE^c<^rlCsDQ@PXm79Wn^JGzyY+S4j22k^Q@+o?ACv-0EIcRNotT}h}1z{{l7uA*Tm zK#<}`F%7$ze0H7`gTb;DGbsROD}N^{m~yqS4FVDgQEdSYAY-H!dpkwkJ;&`w!*0;D zscqVx!sxqyaBiv;gwm~brCBWw-)-GMqVcVBM&6ZO-K(utCht?Z(C(Qq)RLVslf=_@9D=2cP*%Z=4Bs+xu=hSL;^PTpd2h;14(h8^;l>t}8jh^2Y)(DoVV)bekwMMz-iiK_nA?dCU zI$(uU5^){~oqyK!=J{{x^q6H(c$7mXA|z#J5sVR;7oHQ%gG!K7y`OOQ8UWtx&lvh4 z;at@`&PtCmN&!bI1w@pof#q@!DVB*4T)VK3ZBng!g$kHoNn}Xoz<{O88REy$h%7)5 zVtU*zz--HndtKA5eovz6=8CHDE<&@?1U3gH8sD}y^<6^hg)pSah2q09 zSBewl86p%E^!fmp>#x5J8xGTC?VFA9t5V>$HqBDnomKw;;#V})QE77lzMudKBsn9uc{{S6n%hM)hMp*~}$t(}$4;mO9dH3T_i>P>K!&$V@SXO^Dm1VM&kbLW}RPs{+ zq{$A+fE-37?)Wv9+u9ly+tOZ@F{bdLa5X?dJs44)#COH<&k=FC!HS?6E32tQol!5&qBqleF zw`_TD!BrE&xCKRLDifGqV>44TQD@A$s$11jH~jp~b__9Y+FL_Y-#e>sY;71iUv4|a zx468d2|8|#Kz#jQRd?iL@V04Fg6c%|-hJ_)X!S3(oj6gWuzM$_9gW+K zI!jw>o3ZF6p0TP^RZ_L;T2!KzNm`jM7S`tFNowv5@3-1b&u#m8tM>|me7*PGJA~Pt zwx>~8R@3y3RYlIRNeM2Ls;xTOwQ7mVpUAY+Igl!K&5w%?HAwO!7jM-~EVY_8|i zXgKsL)c3(WNAQq!QiV^)Une9dl~n>-d7qg8=02j#qY_Li`!U~5LrY=X%`LcsYxb+U z~Yg^u1Ribo6vX*F=VK7W`lEc`VtrmsF%`1xZ(3G;NHMkNSQg;TONM2?ah*n|6 z0bz50va@n6T*nSw zWL>wr)^@g~t#;>h)Q!WmFRN*F3#$QrWS|{8QK8NaN;g)`O0_2g(kcZKKpkptX0oygwZfH55lxn(Uk5L2wM}fPWwuR2|+dEsmwiJy$*|hlV z&goiGU*23$x2m*lHA>W%gR><@H3KwyE~Gchx5RE4Sw1N6t$q-$5h}zKIM?ZL%Pg|FLX_dGu3epj`muXsm2q?galR8(Bavv# z)uM%iWtvJ|GBheGrW$ToV~+m-7X7=s&^Im8{H8$7QIU-{K+(*C9y~IYVFVNE$1b$* zTeqQYw)6`sHn()HY8%S>idL-6My-0c4Ni?}HsQ#mMZGsfcJ-B2C^!`(y8i$Z-M_K! z4#%+Fc9exns&6&BQSfNs~WIDG+0>PxpgmQ_vr5SUnpW7gaQ>cU8@$ zLsGq3b*gftF3YVoOO6Gff(P_HHAa9y)M@9}m0CD`LJ6f&!7^5W9TEcv3?dv{vt!?X zgFZUSc!PoPoTh4_PZ6W>a`ovym@h3wVM|hEl#sKlF+VerVAO$D7es-W3kRB_%7UqcF(Z*Yswzl!_{YK7{pG*;xtAgYPw@9HOy)0H5A%40_G z?sB&d;y=PIe27~4kRlXFaOb|ZhJ1Yg0Q`UO5_m5WtHo%AELK{+B8W}Qg?T^&uj`4u zbn&R#UTHOfr%wG*X*oEzzove5ox!r1#SZ*hJjN;m@zW)Fv zRiqCzeZYEc!Fj}ulRLQM!glF58&Esfxb09wzIA1ENbYwrl+LV z4j|aySGQJzNG5_1m1Kd2MpDVdsLZ0Lc((;rYi-k{ZO!Rmr;8@JrKKC*BpyPZqhgd? zIUImzqV3EYhdoqodMiuNIL|LAAp7y;;E)J2%fTRIOt(=b`m(cPOJsUO8GuUy#~@A! zC&*Y3dh5J4l^Ur*2}}O~$v1E&N2wb>ra31WuU?HsB`Q$?L==$e7B*B~A4A(2#l?Qg z?nYx?j^^#X`v9v}+1GOI+H7Z&vJjeu8ezdaQ2+^nB!ktW@3I??_THub#n$%sadhNT z<+j$NKx%+OnXRJTy(`L92odtZt5C5Ez_`R|c}Y)?;(*J<0S){?jNp<-C>R+BinmmD zwXW=LR`SB;zMpwTgVDONxT|M#P0;#Uoy7*HPSKL9H-VHfVLUcv~62QyK4<=O~29r;6NY0FOW;x z>Q=SvEDf~4rGww+-VPN zQf7EgUa{uM=4Rgxv?z^3{!=?>JL6oCn)I69w1q6ji;Qrtz$l3%gsNpok(I_!j;-}6 zGRSXB7cw~m21p8VC+YiovOEzJp6To-aJJo{)$KIu8@q10Gt%7qGT}A-EztpCQPR}4 z?E%0Ssq-z>c>Ps89-+F_ot8;sQ2-S=kQ{ITGP>oJfiQgv34!V3JzV9uhF>uM01l!Q zV6~3(sD6`Z#GPFy$g2lz`tS(Dky^07#IW50mS467dn)HV9MWRIbs1Mvho9ni~!3di6AR01JxBo zDFhh~WEG#FsR72V>JNNV8gj&e z;2u6;kiaf{w}7kTksM-IGgoaYovYj4?e`g(sb1F7Ywf0ZN4@&m#*lB|%?F9J-nNt4+4H((R{fa<^Je zm0Nypq?l#hThS=pT3XjeUPiW+w`gg0;*~;Po7cGcWQvp3u0?+dRdXSa!KOl8+nsKN zknJJLo1hbl4D~*Lg+l)T5n;#u5#}!t59K7a<7`3(vxiz}Kv0zFhzcP1CJ8D*hJsX+ z96%8T<#*%il`7l;llewZsH}+P0$>O%v(sEiB6v%2Dsky{gp$oB3on?-J^^Md;de*_ ziIAy?IK(k%A%jLSFNpz!^%dNO5X75{X}o`&K0pDizyUf24c_F~+{Lkf(XT#D*s4xU z6UmGNH2o?eK?DG!$E%khK;mbey{lRpN%JZJl`28wf>1$Hevp5OL=p@~r>$hARn>qK z1B5ieIZ?#1%TIto1d^+Qp!I&T)^2D=0#}RxL5ZF!1UH!>q6Dx3a76VJH9=K^Kr#Sn z-MV{rX^dFqGk*YbpD2i#vl!6*By`xlZ&I^bEyk*pF$x>$1R0VS3P+eQGX{EtHOsnn z>JXwz)Q(_?1i+;`L-7qpognpIu}W0di21cD)pCI;(@`}l)~Lo6DT2;o0b)AE z?HF@VRG0_q$;%)F5<&AS2mqF*1PJ7J7vRT8(RGgNBWj|R#m<|zHGNM)x2hG@wQ4nO zX&RK!${VXoDz_D=@lwFa}PlHKS0umj_4j5@Y!vb+>;Z7Pj zmlDfl)Ui!9>m?k=lyZd-9l!XybRM|aZrN;Y+p)d_J}mb={@m8|+s@|qPvOtCb~Ni) zTrJhkgS4M^_e*nJe4Y(g@H8u1?bW>H#8RmA+NzELk2&=kl_dI?ixH5s1i=zPXb}_c zgyRPuo4cQ6n^)o6uveDpc8@SuD!$_w|G}>C#b8Srl`8ML9TD5KItbDOb+Pl3qro4El34=_r=AVV! zYNs2_ag5DexTLE2<*h0YDMKK74plTw=J@JAikt?Y1Ih5ZIeOxvDdoNrl6gTYa!QM6 zZ*XT3BUF0TTA4A+lKPd4@^TfiMt3UeZ7qCHQ}mxYAUNl@|1@7w>Mx^H0A=g5Yyz(5IGW9$(+Cq>0C4(t#vMlG5Qgo zXi)`;6FvbD57HygTVKT+IKR@}W<#5_<659GF*i|PAZV&h))C>%!nOD%g2Hnt2N#E9{&JH0FcH&fd`Qu-T?#E$MVI#wfdg`m>~LK^I;g4%o5+- z9?O9Z)wZQ-l~}m|9KgwdU_hL*`2qmt;AF{-QoDi65$mA$&~6$_OUS0$FgovU-2`;> zule+i3P8;>3F6Y~UG66;x_1DI^vEwZ8sV*ALd%_G?7(w?&-cL@Kc$F(bl2 z1_&e{Qpg;7h<9GqOG5Q2LUDo!1cJO|tAzp}D*8cyyrKaCcBEX>;RMS>1I7ypD}q1_ zNstc^q=pczB*dHUt))6Ig*=HQc`8bRq%?&PLH_{eOprv+RlGkpT-Im2OY5Wb`x@fo zi)C`(0Y{Z7Z9w+hrv89qTWVYIB}fu8Ai!t}IG$dk2g&y^qacuxSwIqeL21AsaUM<^ zCIJUA!_q({dWFdq>cl~E0UuyiA)*NKNf^PHgVmO!$e*(Y`$D%7l5$o+Ujlp&GuGUi zj5H*cw`lZ|Pgci1QW~O~WY~)qpQrYmTuuEI5_zNe@E9>1KpFK!pQs_^2NRLWsUK0M zOJw=W5@5#=1h#YFkrD(DFnYFCtL^C|5F`==`bU$JPmg~bO9SHFQoBs5#y}_Yl^kTr zGxr145Cn|0rIKUh+OeLy`*+A4HX3X+>tj3WTNjtr>4Pmy!n( zu37%p1&(4_VaNlFkt@iS*EK;OD?FIYNj80v4BoPJzB%kF1xDrO`w*p5epYKYIS7AZ=p;6o3el1hF2{PrIB> zIdK9M!RnxE3&LOn0YD;O?hn2Kl6;sToN*(pYAPucO;!N}#z|O-CoBv?`d5+SgVYaC zAS545z`((fe2mYgaIgR;5)AYea?Ct!7Vjt9PVJPWKal81+C&e&kA{9HEf-kOyLG%! zlk+U@v`gBYM*vN|EBioSkd_sx>Z|HzA%pN7gT|)}Dh~j_k&E6uZ1|b}S^ST@Q4iPq ze$NyOwT*?f zOS{X5W+6h*x1&~}V*o0N_v_)u@eSRbOTK;Z?@xR6a__2lm%IJS?xp#tUa=QF#NOK8 z>}qA02^3RT`83J;Y0^M20-vz2?R4)d_7C=Ee0BFlYa3h51L2RmI%bVa_?QU zd9e1gQ>`l%zurC1r3wL0Gg(rag2V&ylA}!#DbnNUr%H_>JV*f%Q~*c^&Ozhn5Uqm$ z00cp5>jM0!2j>G_{V^YiDrpS^nBANF25B!Ctcd&n0AJDR5MXfenfH?bf5^lxf5)Z& z0MGva0N40*KO_GDPPR3UW^Fou@gRQRF11*st1KZ*GcZ&GELpGy2tQN-1Wb696R{on zsC3FbzuHRBnhw{sYN(`t^hHIZWyynMlMOz!PZD{t^2CUbVd+O&-TQA&U>Pqr4TUGB z!J24Oxu;&>LkRTIq~;2d#Fio(tk=GpkM^H&wZgflVfY;}N}fO)YdTF>NFD{ndcl@t z5C@P+l%8sImY`k2LqDm$r}P+%L)1r<8>x@~0B_aE7q*8H-8-s_nz&pjGk_sfG2}`A z0E7{ifgYh9T0ENk%Meeh1jZpl7zPL&K=c^^aX2_tz06=Xd~z|z zjszAn$_^I*F@Q*ddc51*0w>ruSdhHFl`EXX&yfNBD;Ni-!ire>k}ag_`$#+KhLn;I zl#uY^-oSbYexn&B6&2VhRso$!EN~}}qu7}yB~@lPsST5`-MZU0)hW}cRZEpDOO+*u zrT}JA8zu*_fUsaO*6ScB_t6(aR36ac89kbwI`uTMO2UmIe`R# zRX`;Ek_Q}>1O^0D@vOyP;fbc~%v$2zNA20%-}rK!6=xDF@~G(cu(>zA#-|e<4ZmoX z(fE2~n3Cu+U@V3tlDxqK(S!O&QC{}jcE2LEN_5aT;#8(}GCf3qz+Ww~<4~WvrD=wkPkU3bNED!*lZ`#l(SDNRBb>A{4QJpn9Oh7@r4@awN(+;7Zp;mx&A^K>!5h$d6DE0LsBE z6cT;MSXJ$`6acFi3p_}G8#!#?@#E_CH=LLQqEZzNG!yx`T~J~KJ^BdLb;l*l@}jjw zq=JyM%EB4nPitR%VE+ImrU~N&!6o?+0)l{$LkTbl<2fF4)xwPrLaHp7Lfj0V2Z-SB zB3W_i0cB4S1yuEQOEBetl!9BzsBflKKBCfnASnQe9zbrc_BKdKES{KiH3-W>I7J+D zPnXlj(#Oz(aAYEy)E|_=Vi-M>*HF;T&iG)|0t*OmU$)~%f3OBTEqMY0k?Z~-R|YvM zlQZN1L<|+d0EQ}C5j;?@0tX^^k^oa4voVeVh|i^eyiA5I6)3On(pi9r3V51g7_rNN zfUG@7)6BpwZ5MPD0C+O;2aF%9h!RUkQOSL9KC>Vb40>Af{H#wg79pNIyIu6ybixH- z0)W~W?#EI@hH&qFagEs73(JaD>InIatumrAps6h+W*`Lwx7q`Bw*9#6{k?l?Rcg~D zfh3=y$R~)vfdhyKkTSlN0F_N*(`qfP`m_+dhY&n-EFgkPmJCD;PZThGDc&yE>lW{6 zNgARv{FMwx5LC(m0hr38$W?+%b6-QUw_3M|^A%_y8cq@#Qtk`}Eo1C7wl@z7jJoO{ zik@S!OR(k^EL%^~_{h(1>>AbS)3&Anku0Oqn1ZtoKm|aA9vwmb+j7?a;%tk3Fui+e z0%RhrmRyLGfS*Vq329u06Z^g1{B5->Cwhz~pCBEkUywA&h)R&g}}%lLFwxsk{LxxHL7O@ z2vdNn3m;kaH#ss1QBRC2^;fAAR=r0#m0}Ee9Jr}hU_lrSD=OaHc`F)CK8Gsc256ZC zk^#UR31g5?us{hPaysZ>0++LmG$EbJVhFQ*@yi{QunPdKEeG};7~?RorTc{|O@gby zhho4V{+AwL6BqzP6q3;0W|~(NAc{_)xJF{K%Pg=P5d+es0q2+l&_iR|VkjzQ0OB}< z=~BQhLbQUjfI%mb;0T_x9Xg!`bysDSWS8PX@>r${@*c8z9Ohwzl`3YJiBjgIOUdgb z1}yuqd$(C*u<(`g6sVD)m*~PBhh52gVrtnn139PiUzlKmqb$cdoIOQ|3>YMWBbkL6 zGuGwy+U$J9rs%&n0m~mt7AU0hAQxcL7mBJJdna0HwJHNzn$iUE2yi%p(1(Kp#fr?U zC^N~}1`ru`k73rT)$Fb9sZ_YRyQ@al($3zS*Soo{?LwU^S~O7n%9j;cc%?K~Czuq` zm@(^&c(*F7#R`0c>e%s zX}0dCX?_&`A}woDt8d&c$>|#_U#meFQ@7tewy4%RrL}sv33pMhFKN`F zxL>=Go~1=zCYz)MhL?E;n-QOJ$gwJ)gLT~WBR zt!r~_aQ4?$_Y~?9Iiw$I^lIY{bDpKDXeIE zqiZ&nRH-{yHKW+y)uO9SYKw~1QnjjF73S$u-nxecRh=d=UxvHe&3}FOBUjW_Mb@!z zr|K1{(?jx8jpf*S^=ld`u~X?~{6i&7o>I`@Hz{6FidY^izkdziwTpY~ zPSxzXUEKI`?moY?_U4PEZRPI9)3DTN?fqj)&~0gH)>n1v>e@ve6Y*Ov`;+&60qS03(m81b!1f-QEieR|v z8y#2i&xumc{xES2#|h(fXeAsEDhjEo6)9I*2_~6P<^fv6-H3wv*-!S^{5(?@)vY^G z-fP9FPMZR@n^N9{GO1znPT{IOC4pq(KvOJ6bKbbj=%2wbE`bt+bsgh4l-2>)N$0?(Q`@ww6?sY4-H1C2be@ z$((igIL?s zq*BPzv_&ZmXj(JWh^EWNqVWd=KaZB8Lj?r;i27AR7g&41--7-E;JJPs;(V4%F-JIP z)2@nHg%W6zl$5-OE{Z^phL&eyNPD||YX(@@h|={ayNS=!F$>7==}bmxDT zQil-2nG863Rk(x6)qvth6UAYrvY@laSdGi}PxfE$twQ0}(_Z+U?*5UrbZdK+G;S`o zhR%C?olfS^GBee-YmL3ETf3t=5vkGQLfixzL-6C;9e2Ci`)PLbYuZ$~*0(ODZKu(w zi1q1N+i_ag+QrxeRHbF5SyQincTlepLfz3(suZUC1N%+;v$l1P;_U9gcIM?SyI=6Z zx2g9307|>JthH!r`_iE0ilm=5EmIs|^kQg#c07>fZ`*)5{?)^jN3hnvuVeCUO zf*MMb(swF>~BoI#y zK0#*nbLQAQL8}kM$t02&lxxPjcTt@3WeSVMpaOkEkYeO=LcCl8!Q_lV4o_O}?GJ}e zm>yKK1_d@DJt7>mW1e`5xLWE1`IJG1f(VYGqfVYti0fBnByqt22?7fS01sY5$Erb5 zDxRn(7=7?k%@_s2LZOxO1x$)$sFFboE5H&!Dx_rEg;2$u$lyyUBmzi<2qYX5#9%{6 z7+_CW?Nh?1%;lG61qzeJiz@IWfEEf803r&p0Z3`-Ia1Pf3|Z#Q8WJw|oM;L_H3%e- zRQePBEH;Pq>@bQn$pNJ~mK6f}SSXJ|7i0~}RF6qB^r;L$>icGbv0vQJr13cb!~h9q z4&Jb;IPl~G2IAQ?7Sxx3WtL!N*~D^1Ksd2Ho0*v7>E)R!ST|WUl^}&oa%T{X3lmNP z!3?ai1xx}|<`g#~1Z?JENkLOTcxL71^|>z1i|!vmD^LutD>Eqhpamz((#9JXtsN<_ zs)m%QA*7i+R4=3!9150IRZ;*73=nhFySFsqU8z&1uMFJOtwF>ISXOA{CzASoOu>JL z5rFOOF1=dz_Lg?_E7rMwD@K}^tR0FLlAL&`RrQvT%>(q^F5dRihLdS;tZwVNR+NgC zrKbi&s>=$=^H4)2M&tB=8aO%09Jz0bc-0)T7La+W5uJ_}*J0rIGLe#eZ0C=?({@B$ip<$wJZ9P97 zxpxBz3|~#s=~p(2$QI{Qsbgk9YqSmOw|`O66I|HchuGR$TkI~+Xf;Ak-5C7lVz9jPWWo>t{1m)GA~+6*HB~2lD1~^#DVsL&~xe5A?q_ zIuqLMmYu)ZT6T!*$5O0nYMX|&N`|Seu3pPrD17swV@u`O+Io)*TUr1!5Y1NMxpi84 zb){DMh=3~qSb`9hIVO2x1gwv6WMp4&H5zvG-JQcY5M~ZeS)}Bg`m;V}a0Zq4@4A$9 zi#qmJm4jT?c0>y#(?%Rxco0{?5tbkpCAi05JO2O_d|;BC!jV(?l@zp5LQEwC%8&qq z1AqDxo<<-80;{o>z0j?^nqp;1Cn`HDzr zk`|zLT$M6bXT~$e81<=|o}oaCm#@jHvw=m=sZ_BnOH2Z%BsZ=ACIZmr#Mb6b-% zmw{1%o|_T7hXc7;u3(p9*6L2VNsHm%#!04n(=n#p4gfUIC~1E`tqpHkHYE=J`q#u+zAKnf zR}0{!V=R?_<6U$E%~7m=5Oyzf5+Y2w(X|`v9jR(5)NlSzsaZj#3pW>)T}pcZRta|? zaG4~>QjW~+t>*34^o^TK=TrXBaaUZrq~nd2hic3C_xX$e0K>0x6xv%#!KqOQgdF;i zHSHqTZMK`HEjmrA)6sODKH8KAdR1PBGUS$CDjU??palfDRUnzaPusP-dE0jRHvzZL zaj8?%tS@R$;xz3!sQk<8{!{akjh(ex_g^so0QCBn%oHM`FM0eo;I!K{oz5`J@ak%> zP^t%%4pceSO7f&WyJOBCF7fqRTppHBhj}v`PO|A_+DZ7;6s1-&{FJGZwH=bvjY9Z} z?jD`DEq4z4wE1@WCdaU?+pg1T^q^YR)Qur)uWOVkiAJQ2NLpJ~rWt<=XyBQt2hW!I z*Dm#4QoYr8HLBcKHx(;LEY&KrGqp;9a${05#0D$@Fa&kduZ;ceZK>-vyEj0o{{Yyw z$+LYf#Bz#vdW#NPmFo}+JxZ0qMs+Y=l}f6`S*MtKwUDb=$0B7|wELs~yd_77W+`%J_>xmt8lU+_ zTum^uaH@q$uT&EM02ZR2;}>14LapV^Duqh%YJQ*?5)_~e3^O!mlY2sw$(DNQj=!cQ z4&QBuG|H`h*LP`1ASgWce&!)eWN|ek6Y54#W}5Y(y}i%cMM(Ca&1l>2u5+pCpbyypl<%KL1%WF96{QzhW#Yld@}A@++>>@+F^i(04=4$0>jccwZ%$+v6VGLtOg^kC%;;>uN|ls zrdFwSV9c+}m@o_lGI;xeh!H(;{{Y3D*Efzhtuja(zPpF#7Cz|E~vG&-#Mo0#cETlLcVD$6+F!{*$m5q z9aF5`n7*>3snNL9ht1j@($kYc+_v?XjSEd^QfgGL9Dnf8+!MsPDnWN}{G+a3{66jr zEkow*t!yny7bq2l;+M92cBCnOGTib10NdSKKN{{-3NA4|v)o`&R z%nLEn8gb0OAE>K0md#}9(p5axNdls4ChMZ$iqy~M=gZXySZ5)Efgs~8ztFDsCcmrf z>(_6WV_p9Mv+5DV*RZSVwXB4YuxOB3R(QBz4#1+;j;Ao$nRL@o4@Kd?V5nEnvnszZu1O0#aIHOb-aEsRjwMk!Af@DZ zwp~?n+ckP*@@#$@{HIV-?T;`ojsE}{z-eczsVU+-Co`8;Xjqz=YN#fs{{R~FooO-U zUh#-0wpR4@6RK^^RiFDR_JFjiD^x%!*9pd%q#b@(^{jeHVBal3${w^A;`d;-pStZ@ zjk8s$J4s(jL!IYLzJ~tuMlS zs_wG9gVYbiugdVC7Dg$8)~@_*yH4YF=FfTAs@J{KX+6HLO%zoSidKzhQO*RFWO7*W zs;p)uc)n{Uw9{5&;UD61l@z5Gl~O9@SpNY2MDtz9Dt59(4e;_Zf!WoVTW+|`g)3%K$2KfQ6X1}f(omW#yNQa2AnT0P)vi|eK6Wz zSEiH4)yPVy5_uLR61;&i^pa#B;!?3y8fy#v&_gV+5@BEx(di_J;yp$N3FL1w^ii3~ zC1nSgrNqvqrYBGBkD%NFmR_Dxn)2qDO<(6IrUI(eJj+^uE$1c9?D{d-J(a3_niOiP znpG*(r^>7l3J@5pxR(0Z6>cCx;iW2Tr_rxMl|@9kq$yYCl$(_>4-P!?Ta7NO!ot!=oEto&GC$O&%lQ zxx`kag)n*w9%4yI{Qgi<#IpiiF$810yJt|Re``vis0k>n4=GLnDE#CZIawwkoHd0QuBnPp_%dZu9b34I!rFvy1l}x>EYHDjK3UraYw?ZJs zIQBKmKFW8>t^Vb*qPrJ*4O3%xKSjSm{hZrlUB4P0t8c0+MH0Jzbm|nZ7%_@lV{q;T zP83)%^Pln2*lk1M%f5T_wUt`ET@uRab=`}qTn3GEU~B02n_~Dr7Olk#QrbSOX|Dv< z^sQ2XhN3|AH}T7`tuCrqZsf6A`d;sAn>|{9Pz62Pr|EBPd1Op}?C(vhPU_Ol6-4Ux z6e~aPs?%lV=f&S_*W!=h+TVTH&a2+Pgc}zc<$7t)Qr=yW)TmosTwgF=Rjv-1r7f2D zpenUTwyUT29*QVxqMH2+{5#@k<9sn$FtpaMlt{0Ysm$i37D|dib3BYnWQ76*gNfre z@RN|^K`KUHh$T5LB9UrYgdc_qg`%UQnjI{O zg#`5s>UP0h7D+rwEDYrR3RvWlVSFee0F1`ZZ#@~py=qfZok7WXDzbp!lO#{l43Q=W zs5h!QfOR`3TC6-lvfjKZT#E{E~ znDr0_NuILH#5v>v01*aE1&qlfCOs#?@d2=L=TgQ=82Wt25I|5lWb*PLda|+@f_gqh ze-HxJU<-C*-LJm8o=3!~aw;Ga@uY0m?diTOm6iM=g#ZL{W=mr%S&3j}y-K;t;#l=X zQC&Wt6(^QGq$wsqSdh^J@?4oW+RMbOcx3~?o=1oTmVm++5(K~lK5eyBjDeLQ3B%iv6j-cb>(&H@i=8 z>f3g-hIP}f*(~mgwDG&ss*0L@;Aiy3dwPgs0DyX#srQd!Z^QCC&9E)%-PQEI{{Zdk z($IG`GQg>?eWbVl03~XlEc%&9rWlYClyOn6PfkgI!_-eH!x6?5lQSgom{NT!0IKxC zg4s|22PDYM05U|0Bz|lH01V4{juk;^or)@s zbg^yc=E3o@7vB%#a#~f^J2AX8zUOJQXgzwHdfhlXNt$H;G1?phKl>Y$Sa%}@MNHemUpk`*U zQ*~lkYdB40@T}-Os{RtSz*DM`C%JUCgs>V6McuE_EOq_yrLM3W{oT+-ebKrc5>#j# zdXM9-Xw+_JI)zGfwCX{J7Oi(lNLq)NR*m1d?>C<4*SBV*INs~prOu+%)8xNU7#-(+sumOF2_)HY__ zysp}|pQBp6b<_7MUF&ph=+&=dac;L%G~%gFrAKOGPW64gspuM&){Cv_clsW)WmDx} zX*#`~Ya9DVNChj}+=_M7^7C*n_8|dp7&qY+_4iSd4K3BobkX zFgSu#$dF9&7?lJZlNR?lULin$Na8sjNsdqIGo0h;;(bUDSxBP6aG-IJ49C;}RV0s6 z$Rhv(WI!3|vu@zbWbg#RRtt!hU`fbim=a<@j4V=C{{WY(?e1BR?W;z(*@zNiEd5{8 z+0HSwwz^^z#wsf0s)G=)U7)sbIbn>04gm}NJ$#C)RC3_ZK_vP{Sddvy5@*s|(;yIM zA^8O0(vMgLhne(@mMU3VAhsC7sFRZ7+mc8Nz>f@04~S4m1cJgb#y}~9>L)Eni46vN zX{&D|Y+*HBi4x;}k|G>WMs4wGqK;jCJW4{62oeVo#5)-voCE0uEPX?lQrBwjcUAWD z+ZtZSt$A&`^}WNPZM~~gPbDtKzqvIVO%qP1Lx~Rm06Ozgqe`+C0Mq2HNz^j+fhD+9 z1c)4R$_dU0JdcqZG6a@jC2=@WGdS0+}ZtNFi|iNcy3Urzs=lcPfH(Q{f)N9`qtjbLV+T(GVuy>TLeUs7)%8tlwb^xF$HhE z;ZE|EL`s2&(f~OU8bguFN2*u}!S{khD*MA!YG#Wu&+hrlW_{s|89az+neZfakKAfk z7YxkqOtDxbHW+{htSBSu2mr){5N2Uycv5n;J|Q5T0G+;Z@*Tye67di5lua~)=1302 zL1*^THW;~Ax;)tO1)LUwWQJle8`7do9L{6_W;&yzO6vLeP)gNUx7NJ=pGW|bq?rfE zg~8+%L56KZ*JP*2@?xTXqvaGwmgA5l0U*RoG1?y3?0b8Kp<1d2EWY^!lB9V9l**4X z)5KyTet(D@r7*G_GcXqsC)029Q^NQ`;tL5R0H&Qov1@4o?{{Xz1y5&cgnaXFP!{@v zt8hsG{{RmVyg=hEFeQCU0con}cb4UrwI&1*Wu*@g7Ers1Yyb>#4KPTMI_W*W$kN3Q zBHoFBSN{Nqo+5o;qLTC^#SLP#PM80JWc$>Pci2m}xZ8S1Ym z;tF}1!kUl>EH&vm+RZw4#>d1wATqgQRVyTnH8R?XqgHqobUc2L2n!NH zU}XCU@_j6(I+Aw&>1{kHf8B*;3VCq^2$STNEKJA)oDe`DH(1T>50zS?M-Um8*dHKf zeOySy#GD3$o~*TMcm@Ok1h82GPZCL!o-+^_fS||(>~*NptdxZ!7Y0}HWmAuMJakdS>mxU1{aU<76tJG2QUK?1emjP?@GFpo-fEY zK9~TK#1R;uJV`Mih=UzRR~HVYMLA$Xt3d!LBtYg&9!6GixmWkj%PN5O++OfBIeHB?<3YORj!C)#l24_ z#IP>|i6#`T3jvA9S%5mWy~R%f2#8#mJaL#{41Rc=E(kqSwMjEDBxI40c*vH?KF}5# zILI{xFRdhm}lu`CL;)HV7!uy)rD zmJC*45UT`($H<8!%MYw3&IY3zD2cm#*K*JynGSUc-te$E}fY1wiLcv~LEU6+H-Gp4)!|VeayM%!kW{+n5 zFs?wED9H>GN#iVdg#^hkV8Qx~1%-e}Q_RN(1W263fTJaZkvW_aKv)b6twwywV<5mJ zFyH_rnSfvnc>)CWS8s0BScD@7$@G{3a2dX%I3G_aC=O)cD5?;W-R0w_p!u1`T_GTn z#l?t$03A998$%3HaruQpqY?tsoJ(>dRhgp%7>rL44EYr+XI0@(ql$neuq;OqC5R0L zj1vk797GvCU+nbqN2mrSqM#*Ys5}%gXCso28Br==K`_}JJuE>i6=6u0BlnI7GsYQ@ zpFC8tULayjnt6JaB(vIYv)=n#Pgr#`HvxgXfJ`?1*!=Vudt&K}t7$vyYu19g_TIR+ zN^O-}ik7!lVbI1IYTZy_gC8jgk|VBt1$6W@tyO5LGNdpeDj`zrK@6k;GlHa&0qdlj zL=8V&x2U{AS6b8v{MiLW0zl>a%4!Fbq32Y7|Nn?}``;5$hf2bbuGu2H$3p0YM59qiV z`|ORJ;sdcg@6+C;wdZC# z)7q}Bml}PP||BsbLjnh1wgQZnvFjbU{5!b>ty(YM!ac=6WwP@9(8;q7OOeD#YNf;5A zAP-3d_4a=Klzrm=0N2mit?)J7s<(fRzukWf9iClw?~$nWw?5w4+Gf?=Uopun)t7Q; znyOdic?#=PG#LY3<47+;q`Q=>NG!p$`}DNot8~;%+%Mb#eO;~dgN{*uwWHk^?ceNm z?l#?{U*y*BPkK8W+Tu9{dbZZPuBUWwsVez(scG9fsa0UYIiJhrs|A=WKoBRyfeV6U z5gN9e7Q;M4{{SL(V>>r1 zgSPlrA|u=x_n1CMnSe*>?ZgapK=~#|h|jmAd%*msI0M1SP^bt{PmBV7=g+YF!9Q|* zdm54sARl6KvFZE$#J~ax9D1X*y`G)Os^2%hWr&WNGAfV=;Po9Sp;LK+jQy;s_s2|QfMOkTGZ}Gf;d*as?`4g zhajOqKA;qOU|>yO4{J`wpK*61@d=~tN2ZktE5@zSySoU4;Yt3^QGy9#vw{y=^q}Pa zL5CL1$vz-)1c4+dP$!m7KmdR|1^mc9KvN{Zz<@b%fhYJ$ zk$`8!O!Q)zYz#y}CIf%){W;A*A|7c}Jcx;1hxM9z`ptmS7yichl5-ud|v+_Kme;-?fE-zf-uV z#1;#Jp?nO8ABf%YJIxgqbG^d(Hpm_lCk?H)$B4PnplOUXRfNA2Psm5_6 zLlR()A$YODB!~nqNipi{CRId5{t@!PiSkHaEYMFOj}p&;$7)D+#y|Iq~K4ef;aD7JF zmyT4KJYsY1VF`d_@fqWfU(z_V5>0p@a)MZ3kXVTz0>u9S0+B36Vlm{46eUg+OmAQW z2HWMPD->U>k5>cS-`SjNakr&QA(S*L6-An1!BkVmJyJN3@L`Zb5dsBPqd`Fj9MGc3 z43Z!xI5G#81Cj#A$^=14Lgc7YRtQ1FtT7{s;fc(WSV#+qUm&r!U*4bH@PJ1ZKBL0} zkUR(~OqMGCpQxhaJxln)nn`e>t%6J@Lx4SP3~?5-EkPhEz-%lZs3D1m3`{DB$t{vOFcLVZ20WPwReoS30Br91 zG?5bz+Tsg;0bx)5E+?8uWa-mOceX1k)~U%|Wlc6vFhpSHOtDgY#}Lo~A_+O>+3qHx zp+6X?DbpYltQ1r{c)W%MkJrhHaSTK^5)UZgv0y=w;t%kV003G`H24rbpz$Nr+n+)- z!7PA!htgO0$;bvkVE{%6u+d zkY?$Pj=1lI%}ah1i!o(YC@Hrg=Z!*sXBTfvD3>FVK39-vzgFGXy1jagS^itpU`rL| zs@%M^00M)9?9V)latj}$W;mDxcmPBN9DK(ROfgVDg>cIz>q?t&rs6;xWo2iNq!Z#} zzy=J61j&%rUx(1ksG3MXQ#d5ckTzi#fzuMRd|x-1NKHkOkU3&?4;>`;E!yv0h6@n@ zE<}z%M3_+qW;rjVhm~J?ojRBmQ^&8@hVU4Gt1u)O!jBnQ5D2!^VpwHVU^W0(AgqR# zEg3Q~$S7Y=9(`T3<}OjVu`-b0Dtbv1^%8hAf&4SbARy#e(@&8^lW##{3*PWY?lD^6 zd5M!G#4rX2Kplj1Fb;2ONmPVXR)MBtiaZn%#55xupyvqh41wL5%8}|PL(^&6KTYC1o_U5)~ce+n&DLph=x*pwCFK>Ch?Lz#$Q(L5! zXz3GH&dHv*uUek8*VNnL(?GSdpOfEx*`%#%=Y^q1*c^Yx8w2 zA6Tl5bE#?es@D`Ne8n`*t4^g0?><{QRu!lUh2kNgkQWGu-dL000d5rUq! zW43+i-yNylS~m39TaQrM+n+$LE9ttnn_Q(@ew13awJ7|$v^5(mwPKf=b@dw7H?)DH zb8S#3CE$K2;8~B1oc>3Z8M;T!%vm)7A&{mQQQllc9&C3`1I6;|q5LjsNL3;d4V^X) zKT?xLGgkhKuQBNI%O^#K)K?V6m$T1)bs z8ChPBDs>f_WximVoJ5~=Wx;UDc(-9~d%f_f@r3m0_twta;lsVRv=`_1duHj??z>UD zbqb5z-e0pLzZx}y?j4PyX?^Y4cMJ3M z{ps2LcF%a}x3uaGbew6{mnT`HRwAn<3oFH@3My8q#B`j8j{g9HrZT)vjY<^)Qk4Rd zX|I=*0u;e4V2wa`i^#9x0F^*$zjAXa&hXmhBp--{(^n-*WatzCF>fg`6OKy0i*s_+ z>fYVl-HKGwk_(H5xT#8*A}OcMXKG{utAGf03}h7@U#$}FOs8=|!v4LbJL`X!dqUpw zt+HKE4E$)`EeECeifYbcmBFaIp@33(4W`z98@rFUt_>Y`w>$SpxuSWs4O47x8%oF& z&l-twrm0s}nq-CG6tHZab9qLMp9Kz%43E z#K*3vrT`_mDP}Tr9xLFPnmn1MP^yOt0bwK#Rt&}g5n&8_6)%GErRG10sb4a>HLFF_DcmtY)SHeLm?=yTQ1vK)q%mNoNOD#f0IFMMyIOUV%wP6Qz|P|(ssU^b5ga{*C4dlPrSaey_Qr; z6=5lvHuvMhv7Zb(S5Vj=1)El;xxFs!+f3Yl6J5*F?H_Snf>kR20J!^hwE{HFKCobI zj-f)v$t%*Qb9bTN-BP8fCZoo@QCB*T;J76ki#)udr7)pNm}H~?LjVAhmuLobyx}|= zmQ_PBolsp?{HjtxDuL&MNOBAbV9^3e-a7W&{hNKK)poX#sA>A&##eN<^-Vum)O4GQ zH?%tovo!=os+2C%nu)Yg{YcJCd!^)M}Mq@h?>>GrK#~ zs`U>#wJOwpHQu#mEbUdjRUz1qQy#9{+kfBgT~k!owcTR#S=IGhiu#_Xs_NI(^$kZ* z)b8D?USD5dT=K7Xby~1zYLzNiEK~^sf+^R%!MI@w56qB@J|P&f0ctZ~sQH7703`Wf z2{Jq};p)k1*}vvy>Zq-2P!5?MQ6|^Xh=~IU<6L5$BC0ueN(f*@geAF2(S+TFv2Wda zyWAEYk;(WLU`woXI&2_J7`~Tr;^0c#=w%3JCxb zSwLagxOWctNkAZSjkO>KV8E8xk3)`A#Pf=*zHWCRK(Rc=Ot9)iY1U%hb5g5RM=$Fu z#DIva$gm1nmSDsFBwUfiyK^&XbuJ0uM;8P$1C)^ga#@r#kqaESs*Xc}a=BvQi4vSw zi6j6VkORY-oc%CDdWeVwf-)VkwzZAhsZrB(D;nC3)kFYOqOA1ki9lZBsUn&p!t!S- zrDmTZc}4Yl^m4Sq%7Rivn*(5w04!&*8cX6I56e`}S4wH2YATP)W0a3KK>lN+*asN1 z+ajZ25VeZ9{o``>0Yd;9Oa@>iVo#^7f$g_xHGR!So~3?&v3AuLYL|Mo=oD6+C0;;L zrsNmm2Q*bz0q5n^1cY3dP1-%a?NvHDmi4bsbnf-!_S;g%pnEGCpedb7usi{z!AqgR zP~}t~rxV=$%-mbXqR_giEOe?xmeWGh&`{Iu)lZ_Brm^!%sQueH1TiY5Pg-XZ;u*a1 zN-~I5Iz)iFr>vL}XJ)!?#~lxaaQvqVQflXvnw1HRxK}j51yE_=xWY&F!7N-R;eN zBKb5Ja5HixwI^le9UYe*D(jsNo$Q92*$%?*Pm7J~rYmdv*Gr>Iw{~@ui>r;NXR5xP zpxN4nB-5$fUF}YdT8^BjL(z0SK}%cKtWLd4gHS70YdQSNd0?vb)~k6LOkM-C00bLb z8&+eFW~ot443kn`X+n(zQ!HMg2@Db(`<-SBZokBK=(W@DyL<56+dU~OSnP^>Ue42M zXzvSky){cJI$vz|Ww=rQ0Ju%9qB83@3TAJwcK)F2^J%*t(DqwoX`PbohSlw@y?Rx( z9Uo8pR_WBK5NYb$zf+s7di_g)^=K{SR<^MZ>Z7OI+R&9+CWjFiyh-y z&r;C)cdlM-{hw6THEC{c?rV1U6>qmaqB0syLqXH()w$EdD0@o_y_-tiR9Nw+)O7CG z%cXI5R_r?v^;i}hrH?iyAQEJF_a;89_*4Bv{wOCWpQ(|dQR`=&NO(HJYVE1e3vwG!$rFB0hp9 zB;W=ktdqIj&%4$dty-1aiDuxufG7te^v5t^ltyPO$d-|*n%=f67v$m__=(OqkQlKZ ze0cSE$&uHE_=SAe8_j%LqnRYSQqad?XJ8%VG(pF){{RL500}8@Iu!G{nmpO1faHg3 zIC9oD*A*9<%|>@-0gsPd@hlmALz`iVkfcfF3ZNf08hW2PqN@PhT}4O*SB!#TM=Fej zx4W2*Brw3mu60DKDi4XofjmkGEYMDVo-i0M5&h#>B+uBp5O{z9r zQm4g`^5-D)1Je=5i3GBfJ$3_WwyUqwuTfp;(q-VVU0Z=s>M*JhN9%?Vc$n15L{6Q3Pee-DEQ+@JVkXa;4<43!ps#Mf2tG6KSRLw>Qk>yj9 zHAZvkEXGxwiDqI5%yqA$OEv11RbUAwN#e#x^vEEYXi>pIBt{4asbg?mQn{^Kn<;iR zNLM0P)!;Kfq=Lndp=F&m*n_@ zsO9;Vq0FJqR7rO_yW9JhHpkZ<7sIIVz8gZ29|oNYDFVr4p(C(h1U!!IjEiG!+P61$ zR`eR0wPvOTB<1qYsbQW&DUuYC=qu_dKqIb!chgUM9^Llmk3Iur@46KkLq$$(O|S?AJV^71?bx;^&ORghET=C}lhrW?TZ~3u4tgk0gpGdT(5bk&zod-oke}Ih zm{9>>Jrx82Age&ZC!ad@mHYajD4K3bY^Y(7pqBMXe?uH8Kf5FoJ$0kA8WGdJ5bIL@ zD%J0sC`<>^s1Gm*Wsx4mxsMD%=6>k433pgS78O}}0mnRvGQy7B2durQ-IiOLrirc8ac!W(UEyfZJ5vLz=1PIpJK z_cwO-)a%+8sM<|>Npu6c)}?24RccbIql8oxDu+se78f9b8<6Mu4DwS|A={XMZP1B* zHEy#JxPCSGb1lTUGPAx)d72?e_?G5HPcI=mDDTwmj?ryuHg^|Ry6+UNrEY5!(YGBH zP}E&rO4{AD80AW<8WoFW2_psz4X3njc2@rYHmyH{Q*das!ML)l0ifytA>9-Z;UEu} z#0KC`RNb1dr|NnQG^FcN&rqh7O(MaCDz#BfVMLEaE2_T`6_n+dkWeR!+g5!#jr<1G zG!|c&?4_Q)szg)q@dyE-DZRbtWB}LF6^=8(;W()v`(?p(_HCiTu>m#RU2uQq3+g^aJoq$AiQk7|PPm zl&6T~(lVK}D1f0_izK)|(zXgoUrWc8^vBY}W;U>+^%JYr`)rD-}AN@uEl^eI2(j>pGH}`*7X`S8Ldy}@>t=icx z>#{`AbwzCG+n&jV?t!bTAPr2=)F{(igGr{nADu;@RAn55?2mA7yF=bXZM>~0*xFLm zb&Z$Y-49TvkEbq$sA^x?I_;*TYfu|{x@Oni_a{@WN-D4Wg}%21Dn)421a5sk<u*13FR?Q2b0_P4|~+_s}y-*Z=`xBG{tD#aDv z+7_Dj)E7ONymQK>{-Q>S=mq?4OQ+1(+(DS<22l z{d{|TIn?-B_=(<~xwoTTyM3(j-ubu_V01r+_sxyYZ88DqqOg>buFE$u_moe zM?tu`bV_%0d2^?9ZSd6I?@r}fiR8~s7;;j;l1vsj8G?O2Ka3IT58|`86uvJ037=Tf zQMHcpd??yn?yV~AfT^u+?$h4sl0^T{dV~e!6oiaSgvbo73-n|sky(89PnY24&?=-Pf{^XZhTSBw zlcNU57^9f}BP(BrXVRr+vI{v{idbdxhBWHfLXyOt-XjnusY%qgI&7s0Q#i{101HgC zNm1Zn9LI}e0hk+j;F1AMzPoFz3!YsUaGmPY{Z9uOpp+A zZc;!DCRYUdfe@CVX;Otpru4{lV1Zu&BLoo2PE3=9m;l2GJKqS+im61Ds4ywB+tS+l z9Wl!MLBrRVsInE$O+@l6OkIpYne%CjEn@CM(*{*XCz5}OKuKenA`~bG98Okxp{li8 zJUE2_5+!*bNXs#kJ^=nN07>L;B{-D@yp>rBN85`R$vzB-V*?nHUlzQ*z`~L22s}Up znI=v!4=CgHPg|7_h(Pl+L2qAi7u~z_?BNMyfhJ^FZa$CJ_`}|l6bw+T@rlC{c#M+_ z%j5$d+z64?3)CwE)AXu?#1IZ3v0wuM?-Suikta5|wpLyuJOwZy7%%}QPDwZ!W>BID zlVz`CO>@Ozm;j(b^#LBH@;N9T0rpY}9b8gLDHd=afB3t4h(BCW)u;h33)=ML6AB{SlTwgs@?!QMsp@cQsx6W0XFpY zD{Gs66)9ZmSIu*))~!jyJ!{g$@*wrFTW{hf*L!K!n^WQ|Y@X(5*3^>IPu`aGDe0Zj z+f-mv=ViFj6Z>+FyoOsHU*`PoKfJ9_dIq;Hn{1^bl7IriQkW`LV3HKcGb=Jg3>7_9 zi)tP|SX_b#08RiNmL3V8X=n-xm?as!g$&h2R8T0WOQA@GBo1H7MVbQ(vrY`Z6|Iz} znn-n^C6`TpWS4GY$Nom-HQyTQ6CR`KI8}ur zIeFrM#F97yr#&na1TqyQg)T^$Ay2s_h6>0ML}Zm>bME1G*LU{ERi~!zO*GrB)epq! zI=!7rce{IV*sxPZ{{TVOC^On>R<+Qhe(I=n1XH-DMxo+kvtFtwuwJ@}-Df+uVFIREaUc^h$)}d1_wW6X*NH-(1NQ2$j!?fbA0mMgv zILr}(S{v1o$O$l3Bu`10{tyWC%o0R+`p#FDCI|4L08dn@b(vxq&k)1RkpPlR5hMGc zk>VpSa}Neo6+i)%p8^Lgl23sXAVjN2PAKX{nagh7uP1G~t1nC9R1dfe-K;xZk4M6& zH8!k()KUuuV9ZYy0SjXQ9w+G_0(l;MOm)!B@|620@Hg77+p7K-e*9c-3ZD?$@_`JO zc72uYwOvPO_BTVgL;K2h+naM&-COd762B_F8XA4YFi*>Itse|Mi@f-Q?^eO>T^ps+ zbnVrwy#a;Q`5hEW6ub z-(LN1ZTYwC{{XVK6*~H6$?Z;p0ZLnMv>m_G?Y5_Gw2Cy~Ed&1U>6ZGP-7pq)9ZL4I zDR*GJ+mF;dXO8gx6oOSlDzxV_Y{YXUwInLR$@4O_4%q6v6o0btJl_ymSW;y8{u5+NS#P9_Q$CDtQM8R1MeISBI8bDPC0925G{{R;gg@DY!7UV$$z$_&P zA4_%7DN+>a1hWKy%@zV$14qfnmBu+H(Bgcof=3k}N}p4fmSFWX%lm2aILC&M zb5Ijbi6G>dB*7ps0Er?=`eGojvFhD(rq-lDWmQ;`LGuMesW3_KK@hS85KJDXJ9=yK zl=@@<1OiwF0vnX%06w5cDF8{HteTyjHd=(Q7BWi{#be!g$q|+SoHjxAFD{){RC0qL zp4NZApn-rcZaOwE8|Hi#o!U#Ws`yNF0oDBte2tBE#~;j1nSF-uAa&wfS@@ zHFW+G31tv*2n<1Arg+5onF2KO?vmTp0WhS%ferNlvc+&u7$AZEGu8J*+*kT#P}c5K ziumOLql(9$bk>N{GO0V6;Ivx@*=w!~@k$2V6sYL614 z`ZKXN+jFcFBMPe344;%{a=;1p8RR6ZOnOuXg#k~!BXXW4Sx7#j#QOMfQxYdJ=>QI1 zlz>MrpZWZv3?3uYSzv+01(_}6ae)RPKp>LPsl|yA>Jk`$N=Z^gvE)#TM@p*=ux zl0EPTxc3o0lF$+Y!0FLMk{AN*y|g~I`!3B&)Y1z8P0J6nxE*@l$z`RrX(WISNac|M z4-BjkkUXjO21tyK-%nKv6%V8UB4T_glbACYiHJA@tF5((S>@?d#KFMg0(w`(g8)F8 z@q$ELR-#f>G|&P79H3?h{X+~kan1tZ`I%2HQjqZ=y|&v@>}O811yzcg7;YJ~W@dx9 z`C^*h#8YHqvOtxbuhckr3AeW+Y82az0j9wU(TsVo?Af?^2z zfEh5#v(*R11u=1Ru(jHJeqO1!tJ~CQ2bD`|_ScHCAxnkS+(f$wA_ShRIE`_br#?`C zmfQAV`{;da_<9pYpbsP{5Mi7Kjp4Lu(ebPOCKRf{6X`NIfN>mHoS85q!*JsR2c>?$ z<&V>#h(t&x03r{xs0v9kB!dA)Wh8Y*B4bb_kFnE7lE9wrpxeEK}k`2*wm$?ND7{>0C5n^X8^_}}eCOO8WkciXpJ z!J%qf{{V$gxgEc{+tuo#K=d_E)}Uepe8H0^6#Q);`(zO;psz>=Ua_O%e+?(%E!mg= z*0Y}J zHE3>oGRurIGYBAc<~@fIB%JXcPnO5nd;b7Df^$7R!qQQdOMg-lqv}uPJ&1kq)^%L< zSiwr_2ka8jZO;02!r&R6A|bE@3_!`wN7^PJ$rI7w&Li^x$FTRzAEt0j6)Ti z#7X@!az+dvc!Bo~oI#H-zxeiUov}Y`1sZo{yQ`{tl;7T1 zX*9_sD}1^Xk&zC3e`+~^F~`)iOpc%!5@Xy306-CrAm9%p0C|E55IUcc{{XYT9e@TO zUEUSTc?8p;T~K5XSdB1)69e1{R)ArQA54-=^9Dg-3o!&7-~|Lk09ck)MGjhNcO0)K zB!i>b_R|QW8B13$^^t7=0_|?i-LRk=lL6rtF0JMbzmH|xj0;kZsUd#pOc`!G|8eAC@Xn+S#Q>e2^G`19o1j>R4K1hE^RVyWZ zOOQQ@dyc$lB!|yz>p$OxoL>yiNcUb2dXcdNdqVl1QP@VJa|gUJe-msoD##2 z5M!zvokE(-V9JFcwoj*zskq>fMnsqj0KqS&p+lu8^)s^=ySUb84HS}Hn{QTqG;c;A zVaxjb_{S0e0D;6DDfMQ3E0Hh&1|$#(4J|N7e^9i}#{{ZV} zH$OL$Ers$hBJXQz$6wrfHZp~%(IrZ<00bED6mbN@Fed=09H1$Jv(-CQ`D~;NF%k$Y z0Ad(&$|(yC#vp+n(t4=k+#r$sEE;~Lfy5UwSda(gK#2rTRH};AK9R(F;K2lvr-+|0 zG9U>)k@qHm0$X-X$A+lvmc?C=T zAgKsi*K<|~;ztwUgUkTjNcFZjslt_+Pz?L^aVC&c>Gm8?(1aKvOy`Re=fedFjxua@ zps@qV%#$DnD+!rzcmxS=7+_CLx|Af6Ih|SoWJgGnIhr2+Cne0wmMrj2r_BSdgtN1T=#!0d;_?*C3@9Q-Z~AaPf+?0z z#Q@I|u(Qe)-IbMLh$8@C@du@7n|`*vee!8YrtKWKu^<)@Ii5j?1Wr~4LlCU}Y&MzM z+LWxRToepS0Q|W*Rc=3SA)0@ToME7Xu@bKmp_Nx9TAPvyi-J?BgDeG$cAEs#Ct=PJU z#P0X9wbd!;`mIf|*uABx(hqOEd#`Isom;KRd2LV{ciUIC)GFEPSLpP9RrbGgqv?!Z zlU}Hdv~J96d(V4qO@p?9uedjs;M2DLnMunPp>cm!od>$AdGe=gWRrDuS&Y!Ope{c3JK~uHek7IeisoS~+2s?Vfz6#$wb2qlEPz}z@HV9+U~ii-0Hg4r+rzjF7+)&_OH&lyt%7cIlW4?i6E~Q z-~s}Q5^|jzRbo+@h-GB}pdtwX5Ll83bKsK8EQ(Y*$%$U!6sV>?T7al{!tx+3Fd9oU zD-jYVNQ9EI*%q0o5WrL>3jit-8I_?Gc_|#3Pyz))L4;ApRz|DDa=#f|>Hw7y%=!|} zUdH9;Vb>dn4_auZnklk*5&&($1zYOG%;?s}+ie}d)YVXi2h$$8P{ZY*=H_`JWo|OO zrFb%iQ!+IT&J+;Ntq&YS0$@f%NIZEVQbEB6WDX}=_Wq=3(NbJL6cmrtNGl$`K#7BZ zKmwwNNliM02OQs&k2TpOKw@+-Z2%6`Xn(ca z;}1iz7BqYFd8x;&)!cd>&e!i4l^`SB>e>ZMil0f9tzD#YQpCXO(XRg0UyH5NX!I}s zAa&g~lM0lA?aOVywp~R+QPnGG8byWRK#c&?xmKmcjWqx>^~d@aYR(5sk9kedX78rst!s?@i^dZmRc&t*)!8ZY^I@ z*RS5n{IxriPU}^xb5&ZCI#*gq+*YM9!7`;GO~bC#(X~76D(Sve&85rRRBk}?S}qcu zK&)h=(sX46FV3b=AX((Gzx&z9vVqEYh2+Qw68`|g{4xiuA&Bq?A5$7#`>#H)rD%J# z8J@TUZ);^#gHKV@X;S{qtx)<%{BD)<2BnQB7hX;C1!-l@^*W6cD_) zn2)IPVe4|fr3?Tps1yu|>eX?m^5SLGhz!|MNm%t4G8BXBAi>8X(I)#Z!YNT@a)uTV z9j+ms2#x1Q#Z_)Byu*%TGU41xNCnAo*JEaf#m4sPlb2BZOFtr7B!U8v@XRuBRZkaC zQja=1MZbgtM5DAuWNQvRdfyf9Tu%==m0Oi&H072XO=I+()v`xLG-s-xQ>+z#! zXG~ReJd^j8+X-!KfrCA2&XlRIso6aBKQ4{iuEo=*b-Qa>cLTY!L8))HY_1Zv+}qVc zsGUx-F{O8VZBeP3p{bf^QfbpCg>Ib8XKBzPjU<}2lmbwMv1VfG_O`%_Vn#=WRLuou za|-x00}{HPS7HcYZ?ZrFY#R~&#_WEjt=J~<-uKJ0wmKlH`ktT`mZzxFSt^=!tyT`A zqj6NM^hk0O)K{tk%;2cS zXbN>yE2;6zAw8LClfdHt0z_&7--2qOTXwg7QOAb&N6%q&L zX6?3)F=NBcTIx+&>*pYIDN9g(P|jydb-Z62aqyei?N8z>z8eR%8fW4t+HMU%-ELh% z)H$i5?5!G--tKK%<|}bakHORa%F<0$`89RzM@Y1D^DC!bi#|B}mtR5CHfO@OW9&!v zty`TVw);nH=wR}*-I~6gW1v*E)9KMFW49YF{?BMwG=W2O?;CwekQX{P;weC1vop3@ zXTtZxCiwWh-&$=S_q%=Qv}$ZCE1ENQHq{%-+HS|v=u;roo$a{3cH_FCNu6~)7RPB- zq#mLb>p%E6((boMa66mvlfD@*?Y1TMsoU<)*Sm|VdgpSr@5i?6-InZrdR*1fMyIT5 z)m;gzO5ZVDd#Dd62S;tw(DXeAvHKfob~9-`sndIRrwd)dtl2LL zTd%nH>b3Wt4bLC?l-8S#A2in#uBh*fo()s^tVorN@zlmVQ4mVDp~<4Bmyi4LViWVle0!U zcMswDejApify$7O0$hmnf^=@T#!XjnIcOZr6{cETupE>S2_TRP5y}A)51H#H(9+{p zsYcq?m0Gnb6%^^yQq?$;2L^)PRDuHIh|i=?QTEQ!?>AL#+wCcQ4pdfkAWkpJZ`RE zhNMwKIrA%Egd`4POEE0$2ENCxqvJ0f%lpZ`(@@6ET6Os@g$Yr(sHIAw_hNZFus}HBNa7sx`?9-bwGBer zDe`)(qMB0-Dw>3^3PFZaC1iLQh7thl7Mo{lvo?i0b|RH#xB0hj#3`Sac|$bE6(JQ* zfgD6*uJ`yO!07(~8N_@^#1a$2_(oNA>n%(WrKCM7E~q@~5mXsvmoVO@gjQjkKzxDRpPH2 z@jUugYS0;#rjZBA$z9Oa1(-u}u&@Ijx&Hu5o)4$tzYk?IHK}sub4g7_f{@@80+30V znbeZ_g0864sa41vPcY)6E>w~sSe0PF76cFpfyGFH)Vtf3)ArKp8uqnl)%7ZRdM4G< zuBbE6xxTtaL#x*zQ;iE0R;x>rv8`MwLHn`>7%ga{hZKcEl{tzeEk$w}IP#d9O$A6G z3ZJa?nOpqrO0!&EmTIcJ703(`6q~oWr>VQP455E{OsED-@Bx~ichB_gnFquiRZsbNcmPBnjZ6Sv+e5f)c#Hi+=F)hFhBDN{ zBA$0J0~leHt+vuH-0c3)(ka_~E!*3arilLliXg$_#Mn|FsSE%x2$Li9V3a`TDD@fDuZ>AGm8@Xe-CR0q*ekZ}O%%jq$J69fCCf;Xm<%nc^=thx zaYWPq0Mu0KEB^rQwFTYzRK-yS&8MS2HSWUEs@A7PQBj$Z8ORVxYH%h00En~&Vm)ya z${g)p!>rmJjjciQXxF%@Zru4j7pwSNdY29JNj|i!&M7w_B&b#jU>HWvNTErZt2%tZ z{{XsB)Y}QdRu9WzQHf462nbjL2~Z|`TXe0Z=@jTxRk~KLTvT=EQj$}nRIBm@nbXln z<&{8HLdg*QaX;f$hFWfxA}=WnI>`k4W6_>B%u(VwbY&L*00yl>nuLf9f}sr|z?XvC z&rLfAx-G?>3YvEzVOpwIduDzH%J1bDt8GmQ%^JxcBrpVmi#Sqx6SwZ@YF4RTKY322 zFO^kf7HVuHtAn0NBpHIE5gl=dv0I1xKDyh{uGGU;rcr7z3sRD}rSg#_erc!8VR&(R zZBbExtOs2z?N;-qZr?|*SQMyUt(&l5zLHj@u`Y7KzJO%GPXw^*)1QJ~HcnHCWioln zh!k@qQYlenf}p@TBzdHIv@>JoN8=xZ>ty(rdc6cFifc6i1M?xn%V-EB%rh6m`_j)) z+c%n$S|Ry0sWru%lgaM)I>e`cJ1V=YPL#nY1#bL1)dSQf#82?sO37(6*s!=56gpUbD>@O~iKyt+&B zfl*w`rUT(ojl*kUXVfLzO^?Wdb1Cv6NNX z+HTyjz0)o=D{V(a*9Xa}k5Dk9S-}fhngtZqTA4;rc`;rL3=HT;dA=X6EZV-Sq*H5) zO0_C6D@gHFW@FBnMd2Jm{{RV9V01O=(-ytd~`J0@VPM!HEX| zBvfEjoPi+qJ?xF$plkbn+J?7Am1_#v-2ZEJ8+7)K`|O0=ntN>kDs-;n3W@ikMM z%8%iB0|co@lvwhT@E=_<=ne~<@gIQx7aPmesh^{nsQJWFNKeH|U@RpppNYyLo0+_! z#yBUwc5Tgt+oMsdO@}7r%4w1pk!o;PjvYeau15k-prlPv-pSyo^beF-LmqAlupUXw zW~2lBBryfL?H7OhEuq$_Uhha?)NYllQhG>+n+HPqbO3T70PD+>AS3Ew*D^O(ZSHiP zMd})2wVk^?!CGo74ir?n(sdji12QW61m!KunN_pMae7tgD=nBv6{&)S2MnUuPKDYC zV8?8GNATmvd_Tn*8Wqt|RMxZ(dQ}|?N|-uGEi&GXIKg%8;BK$&DATj2rrPQDR@PSb z6qvO-X-y&Bs?-SWUgon@tobm^sGu^Lkv4wjMd8Kd3TFh#EZ#nkNbw3mC4Gz-8qcfM zFL3Va%E6nFG6*HatH~^=WOxw@%jqf`tlwnc{`#64yg~vg%S4hF(IyWW#uY@40vSOt zc&7%YyrHU;F<_zyi6EAat@MD{>(w%uYMD`#N>lKYP7>soA=FCADk>zoQRXC<#^`BU z^~1X}lj`>Gf&@c3j&!_G_)oyEpZM3_mVM{@+d<2cTx#`tQ zowK>9Nv4TkOV(-G*TZqDX#}YJIRmbGE%<6l50M9%X_yHLS-z=bf))r~A_$Xsy1q3i z)E_h}7%0g+lA!g|sEnYMsH_yv6AV@i&sAO#;fi!E=AyjH4=uof}E+Si4kKyaMyNBWTySJNHcPHU>J)gVo zcDCu$oC@}rnpM^PCBCCtolsWp!j8Nw^?fR>U~Mk6ebHM^wj!pl#dy2>Mm`Ak-An9$9#Yu5K#cWpbcDyKRWw?>L=t8CrLs#99Ls@ZPMBTikreDyfcrCx@X zS(>C&Oc&yRw(0So@Gb$%NxF1wkqAzJHP*SmdnWR!Q8Zo_xasglu z%n!u=51R159y#jNt5GJZxOWtyf#gj}YvfI4W98K<5NW6_h&b}$cd6F0y!=hAQ%&i& zkXdFM)CgZF(E=tXh#zX3l+*WhCTdKUn%y)ZlmfJ_Ndq$;vdlyg2P&{eK-Fz&y}c`n zKpIyGPO`eT2&lZ1!Dh${4JHF1gCUL%Lt54RMX@xVn}%0Y>ZU*h004j^j10u`@JC%& zD?wnrG4SfsH!pE;Ko-+j(;U}`Gmx+{RE3! zl?)R>td3xUFqklTxop@qSqmg%tsbWNZ*XGYYc+4!2Gn z#5t0hHB!}q9NIVIHCcwK%TpgNwm>PHr@tlyfqPU0G(8dD9`*J|3X(AYY@_Nd05 z;NDAjw6=1&QBv1NPu=dF!%NGf)&`!7XLV2i0H!_ah#(UORG^gVaSJd4fg{Of1ISYZ zf%N5%xQOc2H5EpH0lph161VqOlNY73=MgkOK03dd(>RoU%f$phs5N-GfLMyEfR^O@ZGnQ)_9Jc4p+$EjRxFYws!= znvTNP>p8c!b`Wp&mawYVyHi|6_0YW2SX<+s|cM zQ~CRcZeGy?xP7=n*DN^DOrB{hE z2k?$3(l~$+w0Lf_&5OM^KEm8~JD+IlH+l}Yrk+-}_H|W3R^*Rwc}1zUzM-exDfu@x zH&pA|T_O23X)yqpip#2rE6cJ=`H>uoc6ew$oi)SU=AwQTam>H~qjZQ8TEfEm4w%Ls zjX~=fR|2XrDnMMy$mit2D!FMS5O|YvvO>rBhc<*_%omCIe1h=+tb;iNiHtz&Y%aF$ z&G?YDxYfIVrfJ(FzSh>YuJzv8Y3J~pQ@S)LDXVp>_R^I`3#0Cy2~y(sWi>{&zWwc8 z4Vi;m40GX!;qzGdg6~d&+P?s{KuN#Fw${=Xt^T##?bWF(T3Ytsw);|u)O&-wHFI!R z@JB(?t?nsPTcJ%`SFd4eVe4@*xQ7>`li~TC&2QzZiWKN10;Mx0DYrKN2A!ULbHW zg;GFJus?(VrBs19$E0na#t*~}jo&Wq-CyioIsPa1I?sy+t{$`SA~G{qvIVQK&ctlS=B zsTx0E`jtAZ3cv{T3@n)ed9gDDke~=sP%ar{rj_twa7>mGaTCNS^O5X0@gPmy3F?jOERdiha`gsf1b`7riIxChLH7k&RurAwsX;&x zbb`?_VEwgy@y!Jww;@hnKtn&zY2U6dpN<}qPI&MJ1R3K5^7@35Bncs6C+Z2P{Jf&c zPz1hZmyAO(2LznJnB(Zn8xmA4O<)<7kM9@>0P@KmtQe9b7*c8$jmh-uYQyiteDGQ{yfG98D5 zfx;buZ~&?1n*RWBrBsS5%3%bl5=a0rU`M18hK&1%5v*II`1|*)ODz!wQ0vI*=5(ECWzs($}xG!gJ!R@_+ ze6dw?RMd8OA)WyQse;8=07wLaNdSQ)jw2Z9gs8*m2h%Wqla4>$lG1VX$uPLd=+F|P zeVGFjCKeS(sF^DvRB>F0UrB?}unHDnoGvl_(UatY(hLGjaX12F5=#=&Tx?C+?D_-j z(C@-S!vGtv42B#?RnjWSQ}fEsGG5N$nBm&>! z>IsKXc$~+K0UVf14pIk#V2`II+GvsVfI-K$4*|uUk0Ol>0ORV87?OG)DF+g?Lc$g0 z87{?7@slz{Nd&P001XY+J{rkzn{?Z6Lwg5^CmA&WW6DHy>GD>VJq5+Hnf%ExIUo3l z$t*H3K>Lt=#PoFec!JC1F#2LtDwD)WBfwD)9C=Q9u1Y18dN{x`c!FT?Am=BE{x2p1 z!WAX1R=R4RS$A$`PuOyd0E8R}4BiOjMi_C*DJYN_&-T3fzwS;jrKC2VnnVk>np{RL z)|NFdPX$uG4!^7?92TVBpyYKLa{JGRX!x`MxEI=TV<}KlE@o`hKT`!!BOB3pfECE z9xOPl*2`tc6$s}(mH_p+8nC|d>T-FU$mXV!Q@Dq1!E0Yge%RF??CvTdR1wEKLXrdz z3<;AZV;rN8m?Sl|HBxy1Vnl$l2Omjqa!BKk{vicP4Ft>Ew{8CbV{=nZK3M_C1qY&J z8go9-Ng#0p)JLpB`kmq@rhFL&N2vf-GSW=R3k7@-ryvn%nzYqSEhI1-fZN^w0Kcvv zRie5|G?tGuh$$@~TUa7*q`nbWy)-47WCEbf0tXdRSi==RcpShB9{pIaHJWs>%mTbb zqVi}tQZgj_6B+tQ;tA@>sB4PM5{mMOR$(dtfgip8DbFHQPC)PvSoK=r;E^&<1Be9R zD4zh%0Ujg>fI5X&HnLeEn_Vt9?}eu=VyM>U@cp_7n_4cnn!Re~DL|*_1cf}ABy$gR^npy6adiNuD8l6}k&AbS-65j`|q zsuCL{s06Qx;V@h313Ze!FktgC^rI+tntbE>v#Y5KiQJ*q1BON~CYC}t;|{LL{8xiY{3 zAV9Nx!^S;c!viFGa!EcXEO_J)01X{v8|6-=*els2zKyypD}g-4G;7mCl#+Zdq-1(! zSW3&8T|}hOA;I$f7&q6aa32atD6Esp;nUbV4vhrewZ@}nd<=lB zN0P`mvl0lO$YkK39RcI*{{Sx@{{H}cE089S>h@O~v`8EWPLw$_;3@HaE-^3Qe`5e0TJO0G?a4Knk6Wdzj3SW;^?R9YE(O-Ri~2$B1jlMINt-+Bo8?=^uW*9K_JK2 z40Y*0{g7?!+h_K%Y1?$wH0k#j;j_LQSLE^_R;i|5?0xr4Fh5fzEuUT0Vn7uLfM=*& zLLD`5(w0`DYSaP{$m@qMh6EqxBEf$3bh4KmGM#Bjk+=jT6;$N$7j(;BP;T#?e;|x$SOj>1$yRw2bhu+3OjNC!2E#!01wL; z%+7s|I#2oF{{YYb06jQN4me=eDG#4|<*BZ)o-fHD0KY3j=j;(guJ zzYEze+1ad*$6ns*jsE};W2xK&4KfJ4rws*wAOnt}1+%K7=`0Bc2ay1Q=`bMii6D=; z1PLQx`;|;vY>v}uqE)Evq`4|bq%~bPNd&|JEcF~j4^tQ>N$MP?s<1gpXg{EU2b=*Q z!Qv!>1Qwo~tiDC00c55we<TCE$cTkA3SA&HO)RkfXZ$C((&T%V)`VV2@Z_8&~d4>?SkCFC<`Vhc{1YH)y%lIGFv2X_I# zZ7|has+ETo=0SD!0meCbQbc+|%nTDG2slbxR&yK(g1kvNfB^8~NP-3+vjCW)$hq5&>w-F^_&gun`22pG<-Q zJzy7WXwL2obk|?EZ9M8MAa9|xX{&1en-@x#AyC7wsh|=|u$X})h*9K-F@T_WWLl$E zcVX%r@MnyPQp&%nA_xN@fg{a5owZAaAOZjx z^nu8<$QT)bN|hoM>LS9*$v*`MCW@(0eUi9HD{31Ph!w>>UMqt5*Adr0{97$6Vd2mHOPC^g? zAHySoB$C9j`K>A#aV!{zAVVB(*634-^qxv50~|sWClkoPq|GgC3B>sTQAhbsBV5iu~q=rdS>zFQlmX zN<$@`RZX7!YmK zvrMyNp?$i!vDlk$zCHJ=U+~v^Cuvaa_QpJy<_-DXF@L00y0Zgh>8LvvlzsEbam z3fC63snj42xs$J5ty`681%GyVhB(L6VH8U&mpI2BI0SXH{l?uohMVxM*{vYGT6aCs z?iX@9k*Xt-rlp40IzMmrz~vk&QKxrnxoXgM2AWi_QR(oiTpcy9QP_e=CB9f?U|Wdt zKw<#k0Q6%3zCiT#xQc4ZM01dl0!58 z?+jpKroBN?k<>xt0X)L5qkw`~@?|(t^b!|@h9SkvOs?kSDw3-_i7ILZ&KgPM;cLR{*qtYN1J~=UvWb! z(iZicC}25~GE)S4)Qpf!0fJ!dhkUWY9 z(TlMmfh@r35PD*6Q;39=m3~!zQY3-p()*TeWCq2?&s?gGX_CzDr-24f3F5IZq%i~| z1ya%JAfxqtrLQw^<4^<&IWrCn#1&pFSQ5aN`u!}!jMGPMqCtAZBpGB24#$fZ1pozz zEyc+Sq(>%Dry+w@($t88NepH@ktCo5Gm?1WLXfCJfT|CMqF)P2iRVjlvvQU)(;^wH z?QK|M)jV911vM0burK`}08~^PmwD@;mls`fhl_FGzz$_%VHK1Lp0c61tZ~WoJ1s>H z&#tst;+ul1%B{(mGY&vFW~VsG}jO3(*W{k5;+pQgqCFx#Fk^8>`h{xw^vu$7mZ0R_k{{pR*z5- zM#pj6J6F*!gEEDtD%Ul1+N?PfZ+lq}5`=ZGi>b9hf=K~Xf-=X7ta52)B&Yx%ZxVwV*z{&g>rO4&=?)w%SVCW@dnMP+J>!-*AIP$)h~iWD;LweqH%0_?#t z4#Iw?*A9xgtn!kIVQW>;0CNNe43~m#Z()U8(Y({IZtQPqRHb!iTCJVc3X;Djy(+vN z9Jwx~Thck7K|F|HSB$aS&d=++&Vz1EYVMZK?e(2zsj2SmWj;-~r$u?xp{G%I6)$dy z4NjWUM*^oX8c7SX`rmIhe$Sz!cdxtJRp0i7{+nY;zizG3Y1h?vbqX-|8qWe&%EMH* zrAJV!Nyw^RrCBDRYJFI=0B{U9HZEq5$@K#{U4lQk%1L4m=&{)F!1(KE|@K zD4Z$ODFJ>^1$x$+_b*k2M|zbi)@7<|RCRZ)QHeh?rB+pHk5)aup%U@LJ15ChHpy-USXT5*)9*4 z$|IRzDyjanBEipRay!F0#BL$R>*voPS0xeu0FIgAwQB6P@kM4si[?0bBs3$I2o=X3lS! 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

_mfz6}Ugai_BK_iHcIP}Elq{c#l$BW?PW0LwL ztif*(JwbT;PeH~2f(SlykO-A#`izqRfec3z#w3Hs9?UqX#DkRNu1MwlF(70w92Jw2 zVh>%}*`x2Sm_gH01ADi2{{S#&6?ET&B~UX>)cfa&P!EY9!4m*LhEo8U8(k}3LQ2J! z1uA7h$y4O`o-71omIh^%v_}ej4m_nI3X&)IWS=u1Z1In2>PMj8irXeo7pF&xlQ1Dk z1gYgK^#a(AJY&+tiBpp=7H-qt)?oTE#5%v3C;rVOHO0qWTj`89L9Dd(OJ*mC6#}~+ zDI^6amm?*4VVF1BNF*uiC*LTfTGUdclQ5(x0EXg|C)CFTU^f^H2;?xUDvL($g+^2# zF0v9zgCI0{ljI>84nhDR0$52n`XkBYK_x`M>Vc3v$dUAtC5Nk%U@!uHpBd?) z96GDf-e6xyv4;ci>fSz3Bg8)d0^n=hIHPf%8exKc-U6>fq z0$sU#iyzdnXI(WeN+BejFL1H!oUv_{>69te)7GU23rqKO z!v%pHh#$>^06mWxnObSoTa=F|zsuKAJ>PsYQn$h&ax0k4m_QKVK${sCd*ehZh6RTf zQlu#cObO!CBawrT0%MB+06hi-sK5Y)E076XW7X=J_9S?W7$R@p+iKp{H9Kkwv}yw7 z3PQn_GwEMg!90xr01#ZyZoAR7e3q$B%!s5 z@bxO`S_uKPCiVfXeQx@bat)e&_!7K|l2nzZ4gn1+BhQ%dKn4t%0D}@hXatxAM0!DJ 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

4iHRG)ZQ9mEDq?6jcZ1q2>oB3B;CM)}GSP_Pq)> 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 Date: Thu, 18 Jun 2026 13:27:13 +0800 Subject: [PATCH 06/25] feat(make): inline dev-build into make dev for fresh binary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit make dev 之前走 dev-start → gateway-start → dev.sh,链路无 build 依赖, 首次或二进制缺失时才靠 dev.sh 兜底提示。新增 dev-build 目标: - 复用 webchat-embed 缓存 + docs 存在性检查(跳过 swagger) - 仅 go build,实测增量 1.7s - dev-start 依赖 dev-build,make dev 每次自动产出最新二进制 --- Makefile | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 06202457f..49c68428c 100644 --- a/Makefile +++ b/Makefile @@ -144,6 +144,23 @@ run: build @./$(BUILD_DIR)/$(BINARY_NAME)-$(GOOS)-$(GOARCH) \ gateway start -c $(CONFIG_DIR)/config-dev.yaml +# dev-build: 轻量构建,跳过 swagger,仅保证 go:embed 资源存在 + Go 编译。 +# 供 `make dev` 每次启动前自动产出最新二进制,避免 dev.sh 兜底提示。 +dev-build: + @echo "$(BOLD)$(CYAN)Dev Build$(RESET) $(DIM)$(VERSION) · $(GIT_SHA) · $(GOOS)/$(GOARCH)$(RESET)" + @mkdir -p $(BUILD_DIR) $(LOG_DIR) + @$(MAKE) webchat-embed --no-print-directory + @if [ ! -f internal/docs/out/index.html ]; then \ + echo " $(CYAN)Docs$(RESET)$(DIM) building from scratch...$(RESET)"; \ + $(MAKE) docs-build --no-print-directory; \ + else \ + echo " $(DIM)Docs ✓ cached$(RESET)"; \ + fi + @echo " $(CYAN)Compiling$(RESET)$(DIM) Go binary...$(RESET)" + @CGO_ENABLED=0 go build $(BUILD_OPTS) -ldflags="$(LDFLAGS)" \ + -o $(BUILD_DIR)/$(BINARY_NAME)-$(GOOS)-$(GOARCH) $(MAIN_PATH) + @echo " $(GREEN)✓$(RESET) $(BUILD_DIR)/$(BINARY_NAME)-$(GOOS)-$(GOARCH)" + # ───────────────────────────────────────────────────────────────────────────── # Test # ───────────────────────────────────────────────────────────────────────────── @@ -210,7 +227,7 @@ dev: dev-start @printf " make %-12s %s\n" "dev-stop" "Stop all" @echo "" -dev-start: +dev-start: dev-build @$(MAKE) gateway-start @$(MAKE) webchat-dev || echo " $(YELLOW)⚠$(RESET) Webchat skipped (run 'cd webchat && pnpm install' to fix)" From 7d0e022d856f7c9d47f81ad27b40f9d177b61e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 13:31:35 +0800 Subject: [PATCH 07/25] feat(webchat): enable cookie auth for external frontend and dev mode CookieAuth was gated solely on cfg.WebChat.Enabled, which only covers the embedded same-origin SPA. External dev/production frontends and local devMode runs were left without browser-session cookies, breaking authenticated webchat access in those setups. Broaden the condition to also activate when cfg.WebChat.Addr is configured (external frontend) or in devMode, so the cookie-based auth path is available wherever webchat traffic is expected. --- cmd/hotplex/gateway_run.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/hotplex/gateway_run.go b/cmd/hotplex/gateway_run.go index 9ce4b604b..2a1421381 100644 --- a/cmd/hotplex/gateway_run.go +++ b/cmd/hotplex/gateway_run.go @@ -415,9 +415,10 @@ func runGateway(configPath string, devMode bool, stopCh <-chan struct{}) (err er } } - // Cookie auth: created when webchat is enabled for same-origin browser authentication. + // Cookie auth: created when webchat is enabled or when WebChat address is configured + // (supporting external dev/production frontends), or when running in devMode. var cookieAuth *security.CookieAuth - if cfg.WebChat.Enabled { + if cfg.WebChat.Enabled || cfg.WebChat.Addr != "" || devMode { ca, err := security.NewCookieAuth(cfg.Security.CookieSecret) if err != nil { return fmt.Errorf("create cookie auth: %w", err) From 4752ef42b83b8d9b5c70b213c901183876d29afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 14:57:54 +0800 Subject: [PATCH 08/25] feat(webchat): support cross-origin cookie auth for dev frontend The Next dev server (127.0.0.1:3000) could not authenticate against the gateway (localhost:8888): login set a cookie, but cross-origin requests neither sent it (credentials defaulted to same-origin) nor were allowed to receive it (no Access-Control-Allow-Credentials, and wildcard ACAO forbids credentials per the CORS spec). - security/cors.go: emit Allow-Credentials in echo-back (pinned-origin) mode; wildcard mode unchanged (credentials are spec-forbidden with "*") - config-dev.yaml: pin allowed_origins to the dev frontend hosts instead of inheriting wildcard "*" so echo-back + credentials engage - webchat api clients (auth/workspaces/sessions): cross-origin branch sends credentials:'include' so the login cookie travels with requests --- configs/config-dev.yaml | 8 ++++++++ internal/security/cors.go | 3 +++ webchat/lib/api/auth.ts | 3 ++- webchat/lib/api/sessions.ts | 8 ++++---- webchat/lib/api/workspaces.ts | 3 ++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/configs/config-dev.yaml b/configs/config-dev.yaml index 1619720b5..23e108f5b 100644 --- a/configs/config-dev.yaml +++ b/configs/config-dev.yaml @@ -20,6 +20,14 @@ webchat: addr: "127.0.0.1:3000" enabled: false # dev mode uses next dev server for hot reload +# Pin specific dev origins (not "*") so the gateway emits +# Access-Control-Allow-Credentials — required for cross-origin cookie auth +# (webchat login flow). Next dev server may surface as 127.0.0.1 or localhost. +security: + allowed_origins: + - "http://127.0.0.1:3000" + - "http://localhost:3000" + session: retention_period: 24h max_concurrent: 100 diff --git a/internal/security/cors.go b/internal/security/cors.go index e11660bc7..681b39a85 100644 --- a/internal/security/cors.go +++ b/internal/security/cors.go @@ -73,6 +73,9 @@ func writeCORSHeaders(w http.ResponseWriter, origin string) { w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS") w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Api-Key") if origin != "*" { + // Echo-back (pinned origin): emit Allow-Credentials so cookie auth works + // cross-origin. Wildcard "*" cannot use credentials per the CORS spec. + w.Header().Set("Access-Control-Allow-Credentials", "true") w.Header().Set("Vary", "Origin") } } diff --git a/webchat/lib/api/auth.ts b/webchat/lib/api/auth.ts index 88e697513..0f09ddc1a 100644 --- a/webchat/lib/api/auth.ts +++ b/webchat/lib/api/auth.ts @@ -9,7 +9,8 @@ function authHeaders(): Record { function authOpts(): RequestInit { if (isSameOrigin()) return { credentials: 'same-origin' as RequestCredentials }; - return {}; + // Cross-origin: include cookies so the cookie-based login session works. + return { credentials: 'include' as RequestCredentials }; } function withAuth(headers?: Record): Record { diff --git a/webchat/lib/api/sessions.ts b/webchat/lib/api/sessions.ts index fe27a431a..fa6c7853f 100644 --- a/webchat/lib/api/sessions.ts +++ b/webchat/lib/api/sessions.ts @@ -4,15 +4,14 @@ * These endpoints are on the same port as WebSocket (gateway :8888). * Authentication strategy: * - Same-origin (embedded webchat): credentials: 'same-origin' (cookie auth) - * - Cross-origin (external deployment): X-API-Key header + * - Cross-origin (external frontend): credentials: 'include' (cookie auth) */ import { httpBase, apiKey, isSameOrigin } from "@/lib/config"; const BASE = httpBase(); -// Build auth options: same-origin uses cookie auth (credentials: same-origin), -// cross-origin deployments continue using X-API-Key header. +// Auth headers: X-API-Key attached in cross-origin mode (optional, alongside cookie). function authHeaders(): Record { if (isSameOrigin()) return {}; return apiKey ? { 'X-API-Key': apiKey } : {}; @@ -20,7 +19,8 @@ function authHeaders(): Record { function authOpts(): RequestInit { if (isSameOrigin()) return { credentials: 'same-origin' as RequestCredentials }; - return {}; + // Cross-origin: include cookies so the cookie-based login session works. + return { credentials: 'include' as RequestCredentials }; } // Merge auth headers with custom headers. diff --git a/webchat/lib/api/workspaces.ts b/webchat/lib/api/workspaces.ts index a51b69c5f..5c9fdede3 100644 --- a/webchat/lib/api/workspaces.ts +++ b/webchat/lib/api/workspaces.ts @@ -9,7 +9,8 @@ function authHeaders(): Record { function authOpts(): RequestInit { if (isSameOrigin()) return { credentials: 'same-origin' as RequestCredentials }; - return {}; + // Cross-origin: include cookies so the cookie-based login session works. + return { credentials: 'include' as RequestCredentials }; } function withAuth(headers?: Record): Record { From 11f8d0a532e5fb19f3fd887b82ba99dcd6d450ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 20:17:43 +0800 Subject: [PATCH 09/25] docs(webchat): add login bootstrap guidance design spec --- ...6-06-18-login-bootstrap-guidance-design.md | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-18-login-bootstrap-guidance-design.md diff --git a/docs/superpowers/specs/2026-06-18-login-bootstrap-guidance-design.md b/docs/superpowers/specs/2026-06-18-login-bootstrap-guidance-design.md new file mode 100644 index 000000000..9530147f4 --- /dev/null +++ b/docs/superpowers/specs/2026-06-18-login-bootstrap-guidance-design.md @@ -0,0 +1,116 @@ +# 登录页新用户引导设计 + +- 日期: 2026-06-18 +- 分支: feat/webchat-spec6-frontend +- 状态: 设计已确认,待写实施计划 + +## 背景与问题 + +webchat spec6 多租户登录页(`/login`)当前有 Sign In + Accept Invite 两个 tab,受邀新用户(持有邀请码)可走 Accept Invite 注册。但存在两类缺口: + +1. **bootstrap 零用户场景无引导**:全新部署后系统没有任何 admin。访客打开登录页,既不能 Sign In(无账号)也不能 Accept Invite(无 admin 发邀请),陷入死循环,且无任何提示告知需运行 `hotplex admin create` CLI。首个 admin 当前只能通过 `cmd/hotplex/admin_cmd.go` 的 `hotplex admin create` 命令创建。 +2. **注册流程缺引导**:受邀者不易发现 Accept Invite 入口、不知邀请码来源;注册成功后无 onboarding;错误提示不够友好。 + +## 目标 + +- 全新部署时,登录页引导访客(运维)运行 CLI 创建首个 admin +- 受邀新用户:清晰入口指引、邀请码来源说明、注册后 onboarding、友好错误提示 +- 安全:首个 admin 仅经 CLI 创建(服务器访问权即天然鉴权),UI 不开放创建 + +## 非目标(YAGNI) + +- 不在 UI 开放"创建首个 admin"表单(安全风险:谁访问谁成 admin) +- 不做完整多步 onboarding 向导,只做一次性欢迎卡 +- 不改动 `admin/login`(旧 admin token 页) + +## 设计 + +### 后端 + +#### 1. bootstrap 状态端点 + +`GET /api/auth/bootstrap-status` → `{"bootstrapped": bool}` + +- 查询:users 表是否存在 `role='admin'` 的用户 +- 注册位置:**独立于 `cmd/hotplex/routes.go:204` 的 `if deps.CookieAuth != nil && deps.WorkspaceStore != nil` 块**。原因:未 bootstrap 时该块可能因 CookieAuth 为 nil 被整体跳过,而此端点正是未 bootstrap 时前端所需;它只依赖 UserStore +- 中间件:挂 `corsMw`(跨源前端访问) +- 鉴权:无需(只暴露 bool,不泄露计数或用户信息) + +#### 2. UserStore.HasAdmin + +`UserWorkspaceStore` 接口(`internal/session/multitenancy_store.go:61`)新增: + +```go +HasAdmin(ctx context.Context) (bool, error) +``` + +- SQLiteStore:`SELECT 1 FROM users WHERE role='admin' LIMIT 1` +- PGStore:同语义 +- `admin_cmd.go` 已使用同一 store 接口,保持一致 + +### 前端登录页(`webchat/app/login/page.tsx`) + +#### 3. bootstrap 检测与引导卡 + +- 加载时并行调 `getBootstrapStatus()` + `getMe()`(后者已有) +- `bootstrapped=false` → 整页显示 **BootstrapGuide 卡片**(替代登录表单): + - 标题:"初始化管理员账号" + - 说明:全新部署,需先创建管理员 + - CLI 命令代码块 + 复制按钮:`hotplex admin create --username --config ` + - 提示:"创建后刷新此页" +- `bootstrapped=true` → 现有双 tab 流程 + +#### 4. 注册入口指引 + +- URL 含 `?invite=CODE` → 自动切到 Accept Invite tab 并预填邀请码 +- Accept Invite 邀请码字段下加说明:"邀请码由管理员发放" +- Sign In tab 底部加链接:"收到邀请码?立即注册 →"(切到 Accept Invite) + +#### 5. 错误友好度 + +扩展 `mapAuthError`(login/page.tsx)覆盖注册相关码,映射为中文可操作文案: + +- `INVALID_USERNAME` / `INVALID_PASSWORD` / `USERNAME_TAKEN`(后端已有,见 `internal/gateway/auth_handlers.go`) +- 邀请码消费错误:实施时核对 AcceptInvite handler 实际返回码(预期含无效/过期/已用) + +### onboarding + +#### 6. 首次登录欢迎卡 + +触发机制:login handler 在 `TouchUserLastLogin`(`internal/gateway/auth_handlers.go:84`)**前**读取原 `last_login_at`,若为空则在响应中带 `first_login: true`。前端 `login()` 取此标志,主页据此显示一次性欢迎卡。 + +欢迎卡内容: + +- 简短功能介绍 +- "创建你的第一个 workspace" 引导入口 + +一次性:用户关闭或 `last_login_at` 非 null 后不再显示。 + +## 边界与安全 + +- **bootstrap-status 脱离 CookieAuth 守卫**:避免"未 bootstrap → auth 路由不注册 → 前端拿不到状态"死循环(本分支刚修过同类 404 问题) +- 首个 admin 仅 CLI 创建:不开放 UI 表单,杜绝"谁访问谁成 admin" +- `bootstrap-status` 只返回 bool:不暴露用户/admin 计数 + +## 测试 + +### 后端 + +- `bootstrap-status` 端点:空库 → `{"bootstrapped":false}`;有 admin → `true`;无鉴权可访问 +- `HasAdmin`:SQLite/PG 各测 true/false 两路 + +### 前端 + +- 登录页 `bootstrapped=false` 渲染引导卡(非表单) +- `?invite=CODE` 自动切 tab 并预填 +- `first_login` 触发欢迎卡 + +## 涉及文件(预估) + +- `internal/session/multitenancy_store.go` — HasAdmin 接口 + SQLite 实现 +- PG store 对应文件 — HasAdmin PG 实现 +- `cmd/hotplex/routes.go` — bootstrap-status 路由(独立块) +- `internal/gateway/auth_handlers.go`(或新 handler 文件)— bootstrap-status handler;login 响应带 `first_login` +- `webchat/lib/api/auth.ts` — `getBootstrapStatus()` +- `webchat/app/login/page.tsx` — 检测、引导卡、入口指引、错误映射 +- `webchat/app/page.tsx` 或新组件 — onboarding 欢迎卡 From adc4673e4cc69d66ec5d70afb63725337e8f7e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 20:26:58 +0800 Subject: [PATCH 10/25] docs(webchat): add login bootstrap guidance implementation plan --- .../2026-06-18-login-bootstrap-guidance.md | 816 ++++++++++++++++++ 1 file changed, 816 insertions(+) create mode 100644 docs/superpowers/plans/2026-06-18-login-bootstrap-guidance.md diff --git a/docs/superpowers/plans/2026-06-18-login-bootstrap-guidance.md b/docs/superpowers/plans/2026-06-18-login-bootstrap-guidance.md new file mode 100644 index 000000000..36f9eb85f --- /dev/null +++ b/docs/superpowers/plans/2026-06-18-login-bootstrap-guidance.md @@ -0,0 +1,816 @@ +# 登录页新用户引导 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** webchat 登录页对新用户友好引导——bootstrap 零用户时引导运行 CLI 创建首个 admin,受邀新用户获得入口指引/onboarding/友好错误。 + +**Architecture:** 后端新增公开端点 `GET /api/auth/bootstrap-status`(独立于 CookieAuth 守卫,避免未 bootstrap 时路由不注册的死循环)+ `UserStore.HasAdmin`;Login 响应在 `TouchUserLastLogin` 前读 `LastLoginAt` 带出 `first_login`。前端登录页据 bootstrap 状态切换"引导卡/登录表单",加注册入口指引、错误码中文映射,主页据 `first_login` 显示一次性 onboarding 欢迎卡。 + +**Tech Stack:** Go(net/http + testify + table-driven)、Next.js 14 TypeScript(无单测框架,前端走浏览器手动验证 + playwright e2e)、SQLite(默认)/PostgreSQL store。 + +**Spec:** `docs/superpowers/specs/2026-06-18-login-bootstrap-guidance-design.md` + +--- + +## File Structure + +**后端(Go,TDD)** +- Create: `internal/session/sql/queries/users.has_admin.sql` — HasAdmin SQL +- Modify: `internal/session/multitenancy_store.go` — `UserWorkspaceStore` 接口加 `HasAdmin`;SQLiteStore 实现 +- Modify: `internal/session/multitenancy_pg_store.go` — pgStore 实现 +- Modify: `internal/gateway/auth_handlers.go` — `BootstrapStatus` handler;Login 响应带 `first_login` +- Modify: `cmd/hotplex/routes.go` — 注册 bootstrap-status 路由(独立块) +- Test: `internal/session/multitenancy_store_test.go` — HasAdmin 单测 +- Test: `internal/gateway/auth_handlers_test.go`(新增或既有)— BootstrapStatus / Login first_login 单测 + +**前端(TS,手动验证)** +- Modify: `webchat/lib/api/auth.ts` — `getBootstrapStatus()`;`login()` 返回类型含 `first_login` +- Modify: `webchat/app/login/page.tsx` — bootstrap 检测 + 引导卡;`?invite` 预填;入口指引;`mapAuthError` 扩展 +- Modify: `webchat/app/page.tsx` — onboarding 欢迎卡 + +--- + +## Task 1: HasAdmin — SQL + 接口 + SQLiteStore 实现 + +**Files:** +- Create: `internal/session/sql/queries/users.has_admin.sql` +- Modify: `internal/session/multitenancy_store.go:61`(接口)、`~229`(SQLiteStore User 方法区) +- Test: `internal/session/multitenancy_store_test.go` + +- [ ] **Step 1: 写失败测试** + +追加到 `internal/session/multitenancy_store_test.go` 末尾: + +```go +func TestUsersStore_HasAdmin(t *testing.T) { + t.Parallel() + store, _ := helperDB(t) + ctx := context.Background() + + // 空库:无 admin + got, err := store.HasAdmin(ctx) + require.NoError(t, err) + require.False(t, got) + + // 非 admin 用户不计入 + require.NoError(t, store.CreateUser(ctx, &security.User{ + ID: "u-1", Username: "alice", PasswordHash: "$2a$12$fake", Role: "user", Status: "active", + }, 1700000000)) + got, err = store.HasAdmin(ctx) + require.NoError(t, err) + require.False(t, got) + + // 出现 admin → true + require.NoError(t, store.CreateUser(ctx, &security.User{ + ID: "u-2", Username: "bob", PasswordHash: "$2a$12$fake", Role: "admin", Status: "active", + }, 1700000000)) + got, err = store.HasAdmin(ctx) + require.NoError(t, err) + require.True(t, got) +} +``` + +- [ ] **Step 2: 运行测试验证失败** + +Run: `go test ./internal/session/ -run TestUsersStore_HasAdmin -count=1` +Expected: 编译失败 `store.HasAdmin undefined` + +- [ ] **Step 3: 新增 SQL 文件** + +Create `internal/session/sql/queries/users.has_admin.sql`: + +```sql +-- users.has_admin: returns 1 if any admin-role user exists (bootstrap detection). +-- Public, parameterless — used by GET /api/auth/bootstrap-status to guide first-time setup. +SELECT 1 FROM users WHERE role = 'admin' LIMIT 1 +``` + +- [ ] **Step 4: 接口加方法** + +在 `internal/session/multitenancy_store.go` 的 `UserWorkspaceStore` 接口 `// users` 注释块下(`ListUsers` 之前)加: + +```go + HasAdmin(ctx context.Context) (bool, error) +``` + +- [ ] **Step 5: SQLiteStore 实现** + +在 `internal/session/multitenancy_store.go` 的 `TouchUserLastLogin` 方法后(line 229 后)加: + +```go +func (s *SQLiteStore) HasAdmin(ctx context.Context) (bool, error) { + var one int + err := s.db.QueryRowContext(ctx, queries["users.has_admin"]).Scan(&one) + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } + if err != nil { + return false, fmt.Errorf("has admin: %w", err) + } + return true, nil +} +``` + +- [ ] **Step 6: 运行测试验证通过** + +Run: `go test ./internal/session/ -run TestUsersStore_HasAdmin -count=1 -race` +Expected: PASS + +- [ ] **Step 7: Commit** + +```bash +git add internal/session/sql/queries/users.has_admin.sql internal/session/multitenancy_store.go internal/session/multitenancy_store_test.go +git commit -m "feat(session): add UserWorkspaceStore.HasAdmin for bootstrap detection" +``` + +--- + +## Task 2: pgStore.HasAdmin 实现 + +**Files:** +- Modify: `internal/session/multitenancy_pg_store.go`(pgStore User 方法区,line 71 `TouchUserLastLogin` 后) + +- [ ] **Step 1: 加 pgStore 实现** + +在 `internal/session/multitenancy_pg_store.go` 的 `func (s *pgStore) TouchUserLastLogin` 后加(镜像 SQLiteStore,用 `s.queries`,无 writeMu): + +```go +func (s *pgStore) HasAdmin(ctx context.Context) (bool, error) { + var one int + err := s.db.QueryRowContext(ctx, s.queries["users.has_admin"]).Scan(&one) + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } + if err != nil { + return false, fmt.Errorf("has admin: %w", err) + } + return true, nil +} +``` + +- [ ] **Step 2: 验证编译(接口实现)** + +Run: `go build ./internal/session/...` +Expected: 成功(编译断言 `_ UserWorkspaceStore = (*pgStore)(nil)` 强制实现;`users.has_admin.sql` 无占位符,PG rebound 无影响) + +- [ ] **Step 3: 跑全包测试确认无回归** + +Run: `go test ./internal/session/ -count=1 -race -short` +Expected: PASS(PG 集成测试在 `-short` 下 skip) + +- [ ] **Step 4: Commit** + +```bash +git add internal/session/multitenancy_pg_store.go +git commit -m "feat(session): add pgStore.HasAdmin mirroring SQLiteStore" +``` + +--- + +## Task 3: BootstrapStatus handler + 路由注册 + 测试 + +**Files:** +- Modify: `internal/gateway/auth_handlers.go`(加 `BootstrapStatus`) +- Modify: `cmd/hotplex/routes.go`(注册路由,独立于 CookieAuth 块) +- Test: `internal/gateway/auth_handlers_test.go`(若不存在则新建) + +- [ ] **Step 1: 写失败测试** + +若 `internal/gateway/auth_handlers_test.go` 不存在则新建 `package gateway`。追加: + +```go +package gateway + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/hrygo/hotplex/internal/config" + "github.com/hrygo/hotplex/internal/security" + "github.com/hrygo/hotplex/internal/session" +) + +func newTestStore(t *testing.T) *session.SQLiteStore { + t.Helper() + cfg := config.Default() + cfg.DB.Path = filepath.Join(t.TempDir(), "test.db") + cfg.DB.SQLite.Path = cfg.DB.Path + cfg.DB.WALMode = true + store, err := session.NewSQLiteStore(context.Background(), cfg, nil) + require.NoError(t, err) + t.Cleanup(func() { _ = store.Close() }) + return store +} + +func TestBootstrapStatus_EmptyAndAfterAdmin(t *testing.T) { + store := newTestStore(t) + h := BootstrapStatus(store) + + // 空库 → bootstrapped:false + rr := httptest.NewRecorder() + req := httptest.NewRequest(http.MethodGet, "/api/auth/bootstrap-status", nil) + h.ServeHTTP(rr, req) + require.Equal(t, http.StatusOK, rr.Code) + var body struct { + Bootstrapped bool `json:"bootstrapped"` + } + require.NoError(t, json.Unmarshal(rr.Body.Bytes(), &body)) + require.False(t, body.Bootstrapped) + + // 创建 admin → true + require.NoError(t, store.CreateUser(context.Background(), &security.User{ + ID: "u-1", Username: "admin", PasswordHash: "$2a$12$fake", Role: "admin", Status: "active", + }, 1700000000)) + + rr2 := httptest.NewRecorder() + h.ServeHTTP(rr2, httptest.NewRequest(http.MethodGet, "/api/auth/bootstrap-status", nil)) + require.NoError(t, json.Unmarshal(rr2.Body.Bytes(), &body)) + require.True(t, body.Bootstrapped) +} +``` + +- [ ] **Step 2: 运行测试验证失败** + +Run: `go test ./internal/gateway/ -run TestBootstrapStatus -count=1` +Expected: 编译失败 `BootstrapStatus undefined` + +- [ ] **Step 3: 实现 BootstrapStatus handler** + +在 `internal/gateway/auth_handlers.go` 的 `Logout` 方法后加: + +```go +// BootstrapStatus: GET /api/auth/bootstrap-status — whether any admin exists. +// +// Public (no auth): the login page polls this to guide first-time setup. +// Registered OUTSIDE the CookieAuth-gated auth block in routes.go so it stays +// reachable when the system is not yet bootstrapped (CookieAuth may be nil). +func BootstrapStatus(store session.UserWorkspaceStore) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + has, err := store.HasAdmin(r.Context()) + if err != nil { + writeAppError(w, http.StatusInternalServerError, "INTERNAL", "check bootstrap status") + return + } + respondJSON(w, map[string]bool{"bootstrapped": has}) + } +} +``` + +- [ ] **Step 4: 运行测试验证通过** + +Run: `go test ./internal/gateway/ -run TestBootstrapStatus -count=1 -race` +Expected: PASS + +- [ ] **Step 5: 注册路由(独立于 CookieAuth 块)** + +在 `cmd/hotplex/routes.go` 中,`corsMw` 定义(line 43)之后、`if deps.CookieAuth != nil ...` 块(line 204)之前,插入独立注册块: + +```go + // bootstrap-status is intentionally registered OUTSIDE the CookieAuth-gated + // auth block below: it must stay reachable before any admin exists (the very + // state the login page needs to detect). Only requires the workspace store. + if deps.WorkspaceStore != nil { + mux.Handle("GET /api/auth/bootstrap-status", corsMw(gateway.BootstrapStatus(deps.WorkspaceStore))) + mux.Handle("OPTIONS /api/auth/bootstrap-status", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + } +``` + +- [ ] **Step 6: 验证构建** + +Run: `go build ./...` +Expected: 成功 + +- [ ] **Step 7: Commit** + +```bash +git add internal/gateway/auth_handlers.go internal/gateway/auth_handlers_test.go cmd/hotplex/routes.go +git commit -m "feat(gateway): add public GET /api/auth/bootstrap-status endpoint" +``` + +--- + +## Task 4: Login 响应带 first_login 标志 + +**Files:** +- Modify: `internal/gateway/auth_handlers.go:59-86`(Login handler) +- Test: `internal/gateway/auth_handlers_test.go` + +`security.User.LastLoginAt int64`(0 = 从未登录,见 `identity_provider.go:22`)。Login handler 现在认证后直接 `TouchUserLastLogin`,要在 touch **前**读原值判定首次。 + +- [ ] **Step 1: 写失败测试** + +追加到 `internal/gateway/auth_handlers_test.go`: + +```go +func TestLogin_FirstLoginFlag(t *testing.T) { + // first_login: 首次登录(原 LastLoginAt==0)为 true;二次登录为 false。 + // 此测试验证 Login 响应 JSON 含 first_login 字段且语义正确。 + // 完整 Login 集成需 CookieAuth + IDP;此处用 helper 构造最小 AuthHandlers。 + // (若团队已有 Login 集成测试 helper,复用之;否则按下方最小构造。) + t.Skip("Login handler 需 CookieAuth+IDP 构造;按团队既有 auth 集成测试模式补全,或在此处构造 BootstrapStatus 同款 store + LocalAccountProvider") +} +``` + +> **注:** Login 走完整 CookieAuth + IDP。若 `internal/gateway` 已有 auth 集成测试 helper(构造 `AuthHandlers` 的 fixture),优先复用写真实断言;若没有,保留 skip 占位,靠 Task 9 集成验证覆盖,不阻塞。 + +- [ ] **Step 2: 修改 Login handler** + +`internal/gateway/auth_handlers.go` 的 `Login` 方法,把 line 80-85: + +```go + if err := h.cookieAuth.SetCookie(w, r, uid); err != nil { + writeAppError(w, http.StatusInternalServerError, "INTERNAL", "cookie error") + return + } + _ = h.store.TouchUserLastLogin(r.Context(), uid, h.nowUnix()) // non-critical on success + respondJSON(w, map[string]string{"user_id": uid}) +``` + +改为(touch 前读原 LastLoginAt): + +```go + if err := h.cookieAuth.SetCookie(w, r, uid); err != nil { + writeAppError(w, http.StatusInternalServerError, "INTERNAL", "cookie error") + return + } + // 在 touch 前读原 last_login_at,判定是否首次登录(供前端 onboarding)。 + firstLogin := false + if u, lerr := h.auth.IdentityProvider().Lookup(r.Context(), uid); lerr == nil && u.LastLoginAt == 0 { + firstLogin = true + } + _ = h.store.TouchUserLastLogin(r.Context(), uid, h.nowUnix()) // non-critical on success + respondJSON(w, map[string]any{"user_id": uid, "first_login": firstLogin}) +``` + +同步把 `AcceptInvite` 成功响应(line 211)也带上(新注册必为首次): + +```go + _ = h.cookieAuth.SetCookie(w, r, uid) + respondJSON(w, map[string]any{"user_id": uid, "first_login": true}) +``` + +- [ ] **Step 3: 验证构建 + 既有测试不回归** + +Run: `go build ./... && go test ./internal/gateway/ -count=1 -race -short` +Expected: 成功 + +- [ ] **Step 4: Commit** + +```bash +git add internal/gateway/auth_handlers.go internal/gateway/auth_handlers_test.go +git commit -m "feat(gateway): include first_login flag in login/accept-invite response" +``` + +--- + +## Task 5: 前端 getBootstrapStatus API + 引导卡 + +**Files:** +- Modify: `webchat/lib/api/auth.ts`(加 `getBootstrapStatus`) +- Modify: `webchat/app/login/page.tsx`(检测 + 引导卡) + +- [ ] **Step 1: 加 API 函数** + +在 `webchat/lib/api/auth.ts` 的 `getMe` 之前加: + +```ts +// BootstrapStatus: whether any admin exists. Drives the first-time-setup guide +// on the login page. Public endpoint (no auth). +export async function getBootstrapStatus(signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/bootstrap-status`, { + ...authOpts(), + signal, + }); + if (!res.ok) { + // Degrade: treat unreachable as "bootstrapped" so the normal login form shows. + return true; + } + const data = await res.json(); + return Boolean(data?.bootstrapped); +} +``` + +- [ ] **Step 2: login 页加 bootstrap 检测 state** + +`webchat/app/login/page.tsx` 的 `InnerLoginPage` 内,在现有 state 声明区(`const [providers, setProviders]`)附近加: + +```ts + const [bootstrapped, setBootstrapped] = useState(null); +``` + +在 OAuth providers 的 `useEffect` 后加新 effect: + +```ts + // Detect bootstrap state: if no admin exists yet, show setup guide instead of the form. + useEffect(() => { + const check = async () => { + try { + setBootstrapped(await getBootstrapStatus()); + } catch { + setBootstrapped(true); // degrade to normal login + } + }; + check(); + }, []); +``` + +并把 `getBootstrapStatus` 加入顶部 import: + +```ts +import { login, acceptInvite, getOAuthProviders, getMe, getBootstrapStatus, type OAuthProvider } from '@/lib/api/auth'; +``` + +- [ ] **Step 3: 引导卡组件 + 条件渲染** + +在 `InnerLoginPage` 的 `return` 之前(组件函数体内)加引导卡 JSX 变量: + +```tsx + if (bootstrapped === false) { + const cmd = `hotplex admin create --username --config configs/config-dev.yaml`; + return ( +
+
+
+
+
+
+ +
+

+ 初始化管理员账号 +

+

+ 这是全新部署,还没有管理员账号。请在服务器上运行以下命令创建首个管理员,然后刷新此页。 +

+
+
+
+ {cmd} + +
+
+

+ 密码交互式输入(≥8 字符)。用户名 [a-zA-Z0-9_.-],不可以 apikey: 开头。 +

+ +
+
+ ); + } +``` + +- [ ] **Step 4: 加载中态** + +在 `InnerLoginPage` 的 `return` 最前面加(bootstrapped 还在加载时): + +```tsx + if (bootstrapped === null) { + return ( +
+
+
+ ); + } +``` + +- [ ] **Step 5: 浏览器手动验证** + +Run: `make dev`(gateway + webchat) +1. 清空 users 表的 admin(临时):当前 db 已有 admin?若无则跳过;若有,用 sqlite3 删 admin 后刷新登录页 → 应显示"初始化管理员账号"卡片 + CLI 命令 + 复制按钮 +2. 运行 CLI 创建 admin → 刷新 → 应回到正常登录表单 + +- [ ] **Step 6: Commit** + +```bash +git add webchat/lib/api/auth.ts webchat/app/login/page.tsx +git commit -m "feat(webchat): show bootstrap guide when no admin exists" +``` + +--- + +## Task 6: 注册入口指引 + ?invite 预填 + +**Files:** +- Modify: `webchat/app/login/page.tsx` + +- [ ] **Step 1: ?invite 预填 + 默认切 register tab** + +`InnerLoginPage` 内,在已有 `useEffect` 区加(读取 `?invite=` 并切 tab + 预填): + +```ts + // ?invite=CODE → 预填邀请码并切到 Accept Invite tab + useEffect(() => { + const code = searchParams.get('invite'); + if (code) { + setInviteCode(code); + setActiveTab('register'); + } + }, [searchParams]); +``` + +- [ ] **Step 2: Sign In tab 底部"立即注册"链接** + +在登录表单(`
`)的提交按钮**之后**、`
` 之前加: + +```tsx +

+ 收到邀请码?{' '} + +

+``` + +- [ ] **Step 3: 邀请码字段下加来源说明** + +在注册表单的邀请码 `input`(placeholder "Paste invitation code")所在 `
` 之后加: + +```tsx +

+ 邀请码由管理员发放。没有?请联系管理员获取。 +

+``` + +- [ ] **Step 4: 浏览器手动验证** + +1. 访问 `/login?invite=ABC123` → 自动切到 Accept Invite tab,邀请码预填 ABC123 +2. Sign In tab 底部应有"立即注册 →"链接,点击切 tab +3. Accept Invite 邀请码字段下有来源说明 + +- [ ] **Step 5: Commit** + +```bash +git add webchat/app/login/page.tsx +git commit -m "feat(webchat): add invite entry guidance and ?invite prefilled" +``` + +--- + +## Task 7: 注册/登录错误码中文映射 + +**Files:** +- Modify: `webchat/app/login/page.tsx`(`mapAuthError`) + +- [ ] **Step 1: 扩展 mapAuthError** + +把 `mapAuthError` 函数(line 10-36)整体替换为(在现有 SSO 码基础上补注册/邀请/凭证码): + +```ts +function mapAuthError(code: string | null): string | null { + if (!code) return null; + switch (code) { + // 登录凭证 + case 'INVALID_CREDENTIALS': + return '用户名或密码错误,请重试。'; + case 'USER_DISABLED': + return '此账号已被管理员禁用,请联系系统管理员。'; + case 'NO_IDP': + return '登录服务未就绪,请稍后再试或联系管理员。'; + // 注册 — 用户名/密码 + case 'INVALID_USERNAME': + return '用户名格式无效:需 3-64 字符,仅 [a-zA-Z0-9_.-],且不能以 apikey: 开头。'; + case 'INVALID_PASSWORD': + return '密码长度无效:需 8-72 字符。'; + case 'USERNAME_TAKEN': + return '该用户名已被占用。若你刚用此邀请码注册,邀请码已消耗,请联系管理员重新发码后换名重试。'; + // 注册 — 邀请码 + case 'INVITATION_NOT_FOUND': + return '邀请码不存在,请检查后重试。'; + case 'INVITATION_USED': + return '邀请码已被使用(每个码仅一次)。请联系管理员重新发放。'; + case 'INVITATION_EXPIRED': + return '邀请码已过期。请联系管理员重新发放。'; + // SSO + case 'STATE_EXPIRED': + return '登录状态已过期,请重新登录。'; + case 'PROVIDER_MISMATCH': + return '第三方登录服务商不匹配。'; + case 'CSRF_DETECTED': + return '检测到跨站请求伪造(CSRF),请确保浏览器启用了 Cookie 并重试。'; + case 'STATE_INVALID': + return '登录状态无效,请重新登录。'; + case 'USER_CREATE_FAILED': + return '从单点登录(SSO)创建用户账号失败。'; + case 'CODE_EXCHANGE_FAILED': + return 'SSO 授权码交换失败。'; + case 'ID_TOKEN_INVALID': + return 'SSO 凭证令牌验证失败。'; + case 'IDP_ERROR': + return '第三方登录服务商返回错误。'; + case 'UNAUTHORIZED': + return '会话未授权,请先登录。'; + case 'BAD_REQUEST': + return '请求参数缺失,请填写完整后重试。'; + default: + return `操作失败(${code}),请重试或联系管理员。`; + } +} +``` + +- [ ] **Step 2: 浏览器手动验证** + +用错误邀请码注册 → 应显示"邀请码不存在";用已存在用户名注册(需先有该用户)→ "该用户名已被占用..." + +- [ ] **Step 3: Commit** + +```bash +git add webchat/app/login/page.tsx +git commit -m "feat(webchat): map registration/invite error codes to friendly copy" +``` + +--- + +## Task 8: onboarding 欢迎卡(首次登录) + +**Files:** +- Modify: `webchat/lib/api/auth.ts`(`login`/`acceptInvite` 返回类型) +- Modify: `webchat/app/login/page.tsx`(login 成功后存 first_login) +- Modify: `webchat/app/page.tsx`(读 first_login 显示欢迎卡) + +- [ ] **Step 1: 调整 login/acceptInvite 返回类型** + +`webchat/lib/api/auth.ts`,把 `login` 的返回类型改: + +```ts +export interface LoginResult { + user_id: string; + first_login: boolean; +} + +export async function login(username: string, password: string, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/login`, { + method: 'POST', + headers: withAuth({ 'Content-Type': 'application/json' }), + body: JSON.stringify({ username, password }), + ...authOpts(), + signal, + }); + if (!res.ok) { + const errData = await res.json().catch(() => ({})); + throw new Error(errData?.error?.code || `Login failed: ${res.status}`); + } + return res.json(); +} +``` + +同样改 `acceptInvite` 返回 `Promise`(响应体同构)。`User` interface 保持不变(供 `getMe`)。 + +- [ ] **Step 2: login 页存 first_login 标志** + +`webchat/app/login/page.tsx` 的 `handleLoginSubmit`,把: + +```ts + await login(loginUsername.trim(), loginPassword); + router.push('/'); +``` + +改为: + +```ts + const result = await login(loginUsername.trim(), loginPassword); + if (result.first_login) { + try { localStorage.setItem('hotplex.onboarding', '1'); } catch {} + } + router.push('/'); +``` + +同样改 `handleRegisterSubmit`(注册必首次): + +```ts + await acceptInvite(inviteCode.trim(), registerUsername.trim(), registerPassword); + try { localStorage.setItem('hotplex.onboarding', '1'); } catch {} + router.push('/'); +``` + +- [ ] **Step 3: page.tsx 读标志显示欢迎卡** + +`webchat/app/page.tsx` 的 `InnerPage`,在 `setChecking(false)` 的 `checkAuth` 成功分支后,onboarding 检测: + +```ts + try { + await getMe(); + setChecking(false); + try { + if (localStorage.getItem('hotplex.onboarding') === '1') { + setShowOnboarding(true); + localStorage.removeItem('hotplex.onboarding'); + } + } catch {} +``` + +(`InnerPage` 顶部加 `const [showOnboarding, setShowOnboarding] = useState(false);`) + +在 `InnerPage` 的 return 里、ChatUI 之上条件渲染欢迎卡(关闭即消失): + +```tsx + {showOnboarding && ( + setShowOnboarding(false)} /> + )} +``` + +新增组件(同文件或 `webchat/app/components/OnboardingWelcome.tsx`): + +```tsx +function OnboardingWelcome({ onClose }: { onClose: () => void }) { + return ( +
+
+
+
+ +
+
+

欢迎来到 HotPlex

+

几步开始你的第一次对话

+
+
+
    +
  1. 1. 在设置中创建你的第一个 workspace(工作目录)
  2. +
  3. 2. 选择 worker 类型(claude_code / codex 等)
  4. +
  5. 3. 在对话框输入任务,开始编码
  6. +
+ +
+
+ ); +} +``` + +(顶部 import 加 `BrandIcon` 若未引入:`import { BrandIcon } from '@/components/icons';`) + +- [ ] **Step 4: 浏览器手动验证** + +1. 用新建用户登录 → 主页应弹出 onboarding 欢迎卡 +2. 点"开始使用"关闭 → 刷新不再出现(localStorage 已清) +3. 二次登录(同用户)→ 不再弹(first_login=false,不写 localStorage) + +- [ ] **Step 5: Commit** + +```bash +git add webchat/lib/api/auth.ts webchat/app/login/page.tsx webchat/app/page.tsx +git commit -m "feat(webchat): first-login onboarding welcome card" +``` + +--- + +## Task 9: 集成验证 + 推送 + +**Files:** 无(验证 + 推送) + +- [ ] **Step 1: 后端全量门禁** + +Run: `make quality && make build` +Expected: fmt + lint + test + build 全过 + +- [ ] **Step 2: dev 端到端验证** + +Run: `make dev`(`make dev` 现会自动 dev-build 最新代码) + +1. 清除 admin(sqlite3 ~/.hotplex/data/hotplex.db "DELETE FROM users WHERE role='admin';")→ 访问 :3000/login → 显示 bootstrap 引导卡 +2. `./bin/hotplex-darwin-arm64 admin create --username admin --config configs/config-dev.yaml` → 刷新 → 登录表单 +3. admin 创建邀请(`curl` `/api/admin/invitations` 或 admin UI)→ 访问 `/login?invite=` → 切到 Accept Invite + 预填 +4. 注册新用户 → onboarding 欢迎卡弹出 → 关闭 → 刷新不重现 +5. 故意输错密码/邀请码 → 友好中文错误 + +- [ ] **Step 3: 推送** + +```bash +git push +``` +Expected: pre-push 全门禁通过(fmt/vet/verify/lint/build/tests 6 项)+ 推送成功 + +--- + +## Self-Review Checklist(plan 作者已自审) + +- **Spec 覆盖**:bootstrap 引导(Task 1-3,5)✓;入口指引(Task 6)✓;onboarding(Task 4,8)✓;错误友好度(Task 7)✓;bootstrap-status 脱离 CookieAuth 守卫(Task 3 Step 5)✓ +- **类型一致**:`HasAdmin(ctx)(bool,error)` 全任务一致;`LoginResult{user_id,first_login}` 前后端一致;`getBootstrapStatus():Promise` 一致 +- **无 placeholder**:Task 4 的 Login 集成测试用 `t.Skip` 占位(标注原因 + 替代覆盖路径),非 TBD;其余步骤均含完整代码 From 83b796dd4404cfaf0d1b704d0555b898e385377d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 21:15:12 +0800 Subject: [PATCH 11/25] feat(session): add UserWorkspaceStore.HasAdmin for bootstrap detection --- internal/session/multitenancy_pg_store.go | 13 +++++++++ internal/session/multitenancy_store.go | 14 ++++++++++ internal/session/multitenancy_store_test.go | 27 +++++++++++++++++++ .../session/sql/queries/users.has_admin.sql | 3 +++ 4 files changed, 57 insertions(+) create mode 100644 internal/session/sql/queries/users.has_admin.sql diff --git a/internal/session/multitenancy_pg_store.go b/internal/session/multitenancy_pg_store.go index 11f6fbf9f..da64a1eef 100644 --- a/internal/session/multitenancy_pg_store.go +++ b/internal/session/multitenancy_pg_store.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "errors" + "fmt" "github.com/hrygo/hotplex/internal/security" ) @@ -70,6 +71,18 @@ func (s *pgStore) TouchUserLastLogin(ctx context.Context, userID string, now int return err } +func (s *pgStore) HasAdmin(ctx context.Context) (bool, error) { + var one int + err := s.db.QueryRowContext(ctx, s.queries["users.has_admin"]).Scan(&one) + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } + if err != nil { + return false, fmt.Errorf("has admin: %w", err) + } + return true, nil +} + // --- pgStore: workspaces --- func (s *pgStore) CreateWorkspace(ctx context.Context, w *Workspace, now int64) error { diff --git a/internal/session/multitenancy_store.go b/internal/session/multitenancy_store.go index b24b10360..52e0ea370 100644 --- a/internal/session/multitenancy_store.go +++ b/internal/session/multitenancy_store.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "errors" + "fmt" "github.com/hrygo/hotplex/internal/security" ) @@ -61,6 +62,7 @@ var ( type UserWorkspaceStore interface { security.UserStore // users + HasAdmin(ctx context.Context) (bool, error) ListUsers(ctx context.Context, limit, offset int) ([]*security.User, error) UpdateUserStatus(ctx context.Context, id, status string, now int64) error DeleteUser(ctx context.Context, id string) error @@ -228,6 +230,18 @@ func (s *SQLiteStore) TouchUserLastLogin(ctx context.Context, userID string, now }) } +func (s *SQLiteStore) HasAdmin(ctx context.Context) (bool, error) { + var one int + err := s.db.QueryRowContext(ctx, queries["users.has_admin"]).Scan(&one) + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } + if err != nil { + return false, fmt.Errorf("has admin: %w", err) + } + return true, nil +} + // --- SQLiteStore: workspaces --- func (s *SQLiteStore) CreateWorkspace(ctx context.Context, w *Workspace, now int64) error { diff --git a/internal/session/multitenancy_store_test.go b/internal/session/multitenancy_store_test.go index f2b37a88c..b6460c48e 100644 --- a/internal/session/multitenancy_store_test.go +++ b/internal/session/multitenancy_store_test.go @@ -51,6 +51,33 @@ func TestUsersStore_ListAndUpdateStatus(t *testing.T) { require.Equal(t, "disabled", disabled.Status) } +func TestUsersStore_HasAdmin(t *testing.T) { + t.Parallel() + store, _ := helperDB(t) + ctx := context.Background() + + // 空库:无 admin + got, err := store.HasAdmin(ctx) + require.NoError(t, err) + require.False(t, got) + + // 非 admin 用户不计入 + require.NoError(t, store.CreateUser(ctx, &security.User{ + ID: "u-1", Username: "alice", PasswordHash: "$2a$12$fake", Role: "user", Status: "active", + }, 1700000000)) + got, err = store.HasAdmin(ctx) + require.NoError(t, err) + require.False(t, got) + + // 出现 admin → true + require.NoError(t, store.CreateUser(ctx, &security.User{ + ID: "u-2", Username: "bob", PasswordHash: "$2a$12$fake", Role: "admin", Status: "active", + }, 1700000000)) + got, err = store.HasAdmin(ctx) + require.NoError(t, err) + require.True(t, got) +} + // --- workspaces --- func TestWorkspacesStore_CreateUniqueConflict(t *testing.T) { diff --git a/internal/session/sql/queries/users.has_admin.sql b/internal/session/sql/queries/users.has_admin.sql new file mode 100644 index 000000000..472b60313 --- /dev/null +++ b/internal/session/sql/queries/users.has_admin.sql @@ -0,0 +1,3 @@ +-- users.has_admin: returns 1 if any admin-role user exists (bootstrap detection). +-- Public, parameterless — used by GET /api/auth/bootstrap-status to guide first-time setup. +SELECT 1 FROM users WHERE role = 'admin' LIMIT 1 From 329d7977a6785357ab61c233bda27e759f2dce48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 21:24:58 +0800 Subject: [PATCH 12/25] feat(gateway): add public GET /api/auth/bootstrap-status endpoint --- cmd/hotplex/routes.go | 8 ++++++++ internal/gateway/auth_handlers.go | 16 +++++++++++++++ internal/gateway/auth_handlers_test.go | 27 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/cmd/hotplex/routes.go b/cmd/hotplex/routes.go index eab0e36e8..2e6cbff60 100644 --- a/cmd/hotplex/routes.go +++ b/cmd/hotplex/routes.go @@ -199,6 +199,14 @@ func setupRoutes( } } + // bootstrap-status is intentionally registered OUTSIDE the CookieAuth-gated + // auth block below: it must stay reachable before any admin exists (the very + // state the login page needs to detect). Only requires the workspace store. + if deps.WorkspaceStore != nil { + mux.Handle("GET /api/auth/bootstrap-status", corsMw(gateway.BootstrapStatus(deps.WorkspaceStore))) + mux.Handle("OPTIONS /api/auth/bootstrap-status", corsMw(http.HandlerFunc(func(http.ResponseWriter, *http.Request) {}))) + } + // WebChat multi-tenant auth endpoints (spec ① + spec ④). // Wired when cookieAuth is available (webchat enabled). if deps.CookieAuth != nil && deps.WorkspaceStore != nil { diff --git a/internal/gateway/auth_handlers.go b/internal/gateway/auth_handlers.go index d15a0dd3c..fb5301998 100644 --- a/internal/gateway/auth_handlers.go +++ b/internal/gateway/auth_handlers.go @@ -91,6 +91,22 @@ func (h *AuthHandlers) Logout(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) } +// BootstrapStatus: GET /api/auth/bootstrap-status — whether any admin exists. +// +// Public (no auth): the login page polls this to guide first-time setup. +// Registered OUTSIDE the CookieAuth-gated auth block in routes.go so it stays +// reachable when the system is not yet bootstrapped (CookieAuth may be nil). +func BootstrapStatus(store session.UserWorkspaceStore) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + has, err := store.HasAdmin(r.Context()) + if err != nil { + writeAppError(w, http.StatusInternalServerError, "INTERNAL", "check bootstrap status") + return + } + respondJSON(w, map[string]bool{"bootstrapped": has}) + } +} + // Me: GET /api/auth/me — returns the current user's profile. func (h *AuthHandlers) Me(w http.ResponseWriter, r *http.Request) { uid, ok := h.currentUserID(r) diff --git a/internal/gateway/auth_handlers_test.go b/internal/gateway/auth_handlers_test.go index e8edc08dd..586f1e15d 100644 --- a/internal/gateway/auth_handlers_test.go +++ b/internal/gateway/auth_handlers_test.go @@ -296,3 +296,30 @@ func TestAcceptInvite_PasswordTooLong_PreservesInvitation(t *testing.T) { env.handlers.AcceptInvite(w3, req3) require.Equal(t, http.StatusOK, w3.Code, "邀请码必须仍可用 body=%s", w3.Body.String()) } + +func TestBootstrapStatus_EmptyAndAfterAdmin(t *testing.T) { + t.Parallel() + store := newTestSessionStore(t) + h := BootstrapStatus(store) + + // 空库 → bootstrapped:false + rr := httptest.NewRecorder() + req := httptest.NewRequest(http.MethodGet, "/api/auth/bootstrap-status", nil) + h.ServeHTTP(rr, req) + require.Equal(t, http.StatusOK, rr.Code) + var body struct { + Bootstrapped bool `json:"bootstrapped"` + } + require.NoError(t, json.Unmarshal(rr.Body.Bytes(), &body)) + require.False(t, body.Bootstrapped) + + // 创建 admin → true + require.NoError(t, store.CreateUser(context.Background(), &security.User{ + ID: "u-1", Username: "admin", PasswordHash: "$2a$12$fake", Role: "admin", Status: "active", + }, 1700000000)) + + rr2 := httptest.NewRecorder() + h.ServeHTTP(rr2, httptest.NewRequest(http.MethodGet, "/api/auth/bootstrap-status", nil)) + require.NoError(t, json.Unmarshal(rr2.Body.Bytes(), &body)) + require.True(t, body.Bootstrapped) +} From 79c9022c4bb1d4a68f17d67c6d1d39f3080ad25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 21:28:28 +0800 Subject: [PATCH 13/25] feat(gateway): include first_login flag in login/accept-invite response --- internal/gateway/auth_handlers.go | 9 +++++++-- internal/gateway/auth_handlers_test.go | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/gateway/auth_handlers.go b/internal/gateway/auth_handlers.go index fb5301998..d346a14f5 100644 --- a/internal/gateway/auth_handlers.go +++ b/internal/gateway/auth_handlers.go @@ -81,8 +81,13 @@ func (h *AuthHandlers) Login(w http.ResponseWriter, r *http.Request) { writeAppError(w, http.StatusInternalServerError, "INTERNAL", "cookie error") return } + // 在 touch 前读原 last_login_at,判定是否首次登录(供前端 onboarding)。 + firstLogin := false + if u, lerr := h.idp.Lookup(r.Context(), uid); lerr == nil && u.LastLoginAt == 0 { + firstLogin = true + } _ = h.store.TouchUserLastLogin(r.Context(), uid, h.nowUnix()) // non-critical on success - respondJSON(w, map[string]string{"user_id": uid}) + respondJSON(w, map[string]any{"user_id": uid, "first_login": firstLogin}) } // Logout: POST /api/auth/logout — clears the cookie. @@ -224,7 +229,7 @@ func (h *AuthHandlers) AcceptInvite(w http.ResponseWriter, r *http.Request) { "invitation_id", inv.ID, "user_id", uid, "err", err) } _ = h.cookieAuth.SetCookie(w, r, uid) - respondJSON(w, map[string]string{"user_id": uid}) + respondJSON(w, map[string]any{"user_id": uid, "first_login": true}) } // isUniqueViolation detects a UNIQUE constraint violation across SQLite and PG. diff --git a/internal/gateway/auth_handlers_test.go b/internal/gateway/auth_handlers_test.go index 586f1e15d..60e121f30 100644 --- a/internal/gateway/auth_handlers_test.go +++ b/internal/gateway/auth_handlers_test.go @@ -323,3 +323,10 @@ func TestBootstrapStatus_EmptyAndAfterAdmin(t *testing.T) { require.NoError(t, json.Unmarshal(rr2.Body.Bytes(), &body)) require.True(t, body.Bootstrapped) } + +func TestLogin_FirstLoginFlag(t *testing.T) { + // first_login: 首次登录(原 LastLoginAt==0)为 true;二次登录为 false。 + // Login handler 走完整 CookieAuth + IDP,需较重 fixture;此处留 skip 占位, + // first_login 语义由端到端验证(创建新用户登录 → onboarding 弹出)覆盖。 + t.Skip("Login 需 CookieAuth+IDP fixture;靠端到端验证覆盖 first_login 语义") +} From 9827884b4dbe2dee6f66958d2c00587cab7b3751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 21:31:31 +0800 Subject: [PATCH 14/25] feat(webchat): show bootstrap guide when no admin exists --- webchat/app/login/page.tsx | 68 +++++++++++++++++++++++++++++++++++++- webchat/lib/api/auth.ts | 15 +++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/webchat/app/login/page.tsx b/webchat/app/login/page.tsx index 0fd0939dc..2956706e8 100644 --- a/webchat/app/login/page.tsx +++ b/webchat/app/login/page.tsx @@ -4,7 +4,7 @@ import { Suspense, useEffect, useState } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { BrandIcon } from '@/components/icons'; import { httpBase } from '@/lib/config'; -import { login, acceptInvite, getOAuthProviders, getMe, type OAuthProvider } from '@/lib/api/auth'; +import { login, acceptInvite, getOAuthProviders, getMe, getBootstrapStatus, type OAuthProvider } from '@/lib/api/auth'; import { AnimatePresence, motion } from 'framer-motion'; function mapAuthError(code: string | null): string | null { @@ -54,6 +54,7 @@ function InnerLoginPage() { const [loading, setLoading] = useState(false); const [error, setError] = useState(mapAuthError(authErrorParam) || ''); const [providers, setProviders] = useState([]); + const [bootstrapped, setBootstrapped] = useState(null); // Fetch OAuth Providers useEffect(() => { @@ -69,6 +70,18 @@ function InnerLoginPage() { fetchProviders(); }, []); + // Detect bootstrap state: if no admin exists yet, show setup guide instead of the form. + useEffect(() => { + const check = async () => { + try { + setBootstrapped(await getBootstrapStatus()); + } catch { + setBootstrapped(true); // degrade to normal login + } + }; + check(); + }, []); + // Pre-check if already logged in, redirect to "/" useEffect(() => { const checkUser = async () => { @@ -121,6 +134,59 @@ function InnerLoginPage() { window.location.href = `${httpBase()}/api/auth/oauth/${providerName}/login`; }; + if (bootstrapped === null) { + return ( +
+
+
+ ); + } + + if (bootstrapped === false) { + const cmd = `hotplex admin create --username --config configs/config-dev.yaml`; + return ( +
+
+
+
+
+
+ +
+

+ 初始化管理员账号 +

+

+ 这是全新部署,还没有管理员账号。请在服务器上运行以下命令创建首个管理员,然后刷新此页。 +

+
+
+
+ {cmd} + +
+
+

+ 密码交互式输入(≥8 字符)。用户名 [a-zA-Z0-9_.-],不可以 apikey: 开头。 +

+ +
+
+ ); + } + return (
{/* Background aesthetics */} diff --git a/webchat/lib/api/auth.ts b/webchat/lib/api/auth.ts index 0f09ddc1a..ebccc6b13 100644 --- a/webchat/lib/api/auth.ts +++ b/webchat/lib/api/auth.ts @@ -43,6 +43,21 @@ export interface OAuthProvider { display_name: string; } +// BootstrapStatus: whether any admin exists. Drives the first-time-setup guide +// on the login page. Public endpoint (no auth). +export async function getBootstrapStatus(signal?: AbortSignal): Promise { + const res = await fetch(`${BASE}/api/auth/bootstrap-status`, { + ...authOpts(), + signal, + }); + if (!res.ok) { + // Degrade: treat unreachable as "bootstrapped" so the normal login form shows. + return true; + } + const data = await res.json(); + return Boolean(data?.bootstrapped); +} + // Me (Get current profile) export async function getMe(signal?: AbortSignal): Promise { const res = await fetch(`${BASE}/api/auth/me`, { From 5736bee843fe90fced27c1cde14245fd2f87f4cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=A3=9E=E8=99=B9?= Date: Thu, 18 Jun 2026 21:34:01 +0800 Subject: [PATCH 15/25] feat(webchat): add invite entry guidance and ?invite prefilled --- webchat/app/login/page.tsx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/webchat/app/login/page.tsx b/webchat/app/login/page.tsx index 2956706e8..a08256384 100644 --- a/webchat/app/login/page.tsx +++ b/webchat/app/login/page.tsx @@ -82,6 +82,15 @@ function InnerLoginPage() { check(); }, []); + // ?invite=CODE → 预填邀请码并切到 Accept Invite tab + useEffect(() => { + const code = searchParams.get('invite'); + if (code) { + setInviteCode(code); + setActiveTab('register'); + } + }, [searchParams]); + // Pre-check if already logged in, redirect to "/" useEffect(() => { const checkUser = async () => { @@ -291,6 +300,17 @@ function InnerLoginPage() { > {loading ? 'Processing...' : 'Sign In'} + +

+ 收到邀请码?{' '} + +

) : (
@@ -307,6 +327,9 @@ function InnerLoginPage() { className="w-full rounded-lg border border-[var(--border-default)] bg-[var(--bg-elevated)] px-3.5 py-2.5 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-faint)] outline-none transition-all focus:border-[var(--accent-gold)]/40 focus:ring-1 focus:ring-[var(--accent-gold)]/20 font-mono" />
+

+ 邀请码由管理员发放。没有?请联系管理员获取。 +

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�|HP{riX`t5< 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