From 7d4ac67fc2ceb425ea26a54a4fe2c085dfe9fc8d Mon Sep 17 00:00:00 2001 From: 2977094657 <104895427+2977094657@users.noreply.github.com> Date: Tue, 20 Jan 2026 17:21:13 +0800 Subject: [PATCH 001/103] Add downloads badge to README Add a downloads badge to the README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 392cc83..ff46608 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@

特别致谢echotrace(本项目大量功能参考其实现,提供了重要技术支持)

Version Stars + Downloads Forks License Python From 93ad7b7a1cd1d2c47f89d1e74185b52c7e43566e Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Sat, 24 Jan 2026 18:47:06 +0800 Subject: [PATCH 002/103] =?UTF-8?q?improvement(chat):=20realtime=20?= =?UTF-8?q?=E7=9B=B4=E8=AF=BB=20WCDB=20=E5=B9=B6=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E8=BF=BD=E8=B8=AA=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SSE 变更扫描改用 asyncio.to_thread,避免阻塞事件循环 - sessions/messages 支持 source=realtime;realtime 下会话预览改用 session 信息避免缓存陈旧 - realtime sync/sync_all 增加 trace_id 与关键步骤日志,便于定位卡顿/锁竞争 - 支持通过 WECHAT_TOOL_LOG_LEVEL 环境变量覆盖日志级别 --- src/wechat_decrypt_tool/logging_config.py | 23 +- src/wechat_decrypt_tool/routers/chat.py | 313 ++++++++++++++++++++-- 2 files changed, 306 insertions(+), 30 deletions(-) diff --git a/src/wechat_decrypt_tool/logging_config.py b/src/wechat_decrypt_tool/logging_config.py index 4635353..35836b6 100644 --- a/src/wechat_decrypt_tool/logging_config.py +++ b/src/wechat_decrypt_tool/logging_config.py @@ -3,6 +3,7 @@ """ import logging +import os import sys from datetime import datetime from pathlib import Path @@ -58,6 +59,11 @@ def __init__(self): def setup_logging(self, log_level: str = "INFO"): """设置日志配置""" + # Allow overriding via env var for easier debugging (e.g. WECHAT_TOOL_LOG_LEVEL=DEBUG) + env_level = str(os.environ.get("WECHAT_TOOL_LOG_LEVEL", "") or "").strip() + if env_level: + log_level = env_level + # 创建日志目录 now = datetime.now() log_dir = Path("output/logs") / str(now.year) / f"{now.month:02d}" / f"{now.day:02d}" @@ -88,46 +94,47 @@ def setup_logging(self, log_level: str = "INFO"): # 文件处理器 file_handler = logging.FileHandler(self.log_file, encoding='utf-8') file_handler.setFormatter(file_formatter) - file_handler.setLevel(getattr(logging, log_level.upper())) + level = getattr(logging, str(log_level or "INFO").upper(), logging.INFO) + file_handler.setLevel(level) # 控制台处理器 console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(console_formatter) - console_handler.setLevel(getattr(logging, log_level.upper())) + console_handler.setLevel(level) # 配置根日志器 - root_logger.setLevel(getattr(logging, log_level.upper())) + root_logger.setLevel(level) root_logger.addHandler(file_handler) root_logger.addHandler(console_handler) # 只为uvicorn日志器添加文件处理器,保持其原有的控制台处理器(带颜色) uvicorn_logger = logging.getLogger("uvicorn") uvicorn_logger.addHandler(file_handler) - uvicorn_logger.setLevel(getattr(logging, log_level.upper())) + uvicorn_logger.setLevel(level) # 只为uvicorn.access日志器添加文件处理器 uvicorn_access_logger = logging.getLogger("uvicorn.access") uvicorn_access_logger.addHandler(file_handler) - uvicorn_access_logger.setLevel(getattr(logging, log_level.upper())) + uvicorn_access_logger.setLevel(level) # 只为uvicorn.error日志器添加文件处理器 uvicorn_error_logger = logging.getLogger("uvicorn.error") uvicorn_error_logger.addHandler(file_handler) - uvicorn_error_logger.setLevel(getattr(logging, log_level.upper())) + uvicorn_error_logger.setLevel(level) # 配置FastAPI日志器 fastapi_logger = logging.getLogger("fastapi") fastapi_logger.handlers = [] fastapi_logger.addHandler(file_handler) fastapi_logger.addHandler(console_handler) - fastapi_logger.setLevel(getattr(logging, log_level.upper())) + fastapi_logger.setLevel(level) # 记录初始化信息 logger = logging.getLogger(__name__) logger.info("=" * 60) logger.info("微信解密工具日志系统初始化完成") logger.info(f"日志文件: {self.log_file}") - logger.info(f"日志级别: {log_level}") + logger.info(f"日志级别: {logging.getLevelName(level)}") logger.info("=" * 60) return self.log_file diff --git a/src/wechat_decrypt_tool/routers/chat.py b/src/wechat_decrypt_tool/routers/chat.py index 4597bf1..9455ad0 100644 --- a/src/wechat_decrypt_tool/routers/chat.py +++ b/src/wechat_decrypt_tool/routers/chat.py @@ -213,6 +213,13 @@ async def stream_chat_realtime_events( if not db_storage_dir.exists() or not db_storage_dir.is_dir(): raise HTTPException(status_code=400, detail="db_storage directory not found for this account.") + logger.info( + "[realtime] SSE stream open account=%s interval_ms=%s db_storage=%s", + account_dir.name, + int(interval_ms), + str(db_storage_dir), + ) + async def gen(): last_mtime_ns = 0 last_heartbeat = 0.0 @@ -226,27 +233,40 @@ async def gen(): } yield f"data: {json.dumps(initial, ensure_ascii=False)}\n\n" - while True: - if await request.is_disconnected(): - break + try: + while True: + if await request.is_disconnected(): + break - mtime_ns = _scan_db_storage_mtime_ns(db_storage_dir) - if mtime_ns and mtime_ns != last_mtime_ns: - last_mtime_ns = mtime_ns - payload = { - "type": "change", - "account": account_dir.name, - "mtimeNs": int(mtime_ns), - "ts": int(time.time() * 1000), - } - yield f"data: {json.dumps(payload, ensure_ascii=False)}\n\n" + # Avoid blocking the event loop on a potentially large directory walk. + scan_t0 = time.perf_counter() + try: + mtime_ns = await asyncio.to_thread(_scan_db_storage_mtime_ns, db_storage_dir) + except Exception: + mtime_ns = 0 + scan_ms = (time.perf_counter() - scan_t0) * 1000.0 + if scan_ms > 1000: + logger.warning("[realtime] SSE scan slow account=%s ms=%.1f", account_dir.name, scan_ms) + + if mtime_ns and mtime_ns != last_mtime_ns: + last_mtime_ns = mtime_ns + payload = { + "type": "change", + "account": account_dir.name, + "mtimeNs": int(mtime_ns), + "ts": int(time.time() * 1000), + } + logger.info("[realtime] SSE change account=%s mtime_ns=%s", account_dir.name, int(mtime_ns)) + yield f"data: {json.dumps(payload, ensure_ascii=False)}\n\n" - now = time.time() - if now - last_heartbeat > 15: - last_heartbeat = now - yield ": ping\n\n" + now = time.time() + if now - last_heartbeat > 15: + last_heartbeat = now + yield ": ping\n\n" - await asyncio.sleep(interval_ms / 1000.0) + await asyncio.sleep(interval_ms / 1000.0) + finally: + logger.info("[realtime] SSE stream closed account=%s", account_dir.name) headers = {"Cache-Control": "no-cache", "Connection": "keep-alive", "X-Accel-Buffering": "no"} return StreamingResponse(gen(), media_type="text/event-stream", headers=headers) @@ -337,7 +357,7 @@ def _ensure_session_last_message_table(conn: sqlite3.Connection) -> None: @router.post("/api/chat/realtime/sync", summary="实时消息同步到解密库(按会话增量)") -async def sync_chat_realtime_messages( +def sync_chat_realtime_messages( request: Request, username: str, account: Optional[str] = None, @@ -357,11 +377,23 @@ async def sync_chat_realtime_messages( max_scan = 5000 account_dir = _resolve_account_dir(account) + trace_id = f"rt-sync-{int(time.time() * 1000)}-{threading.get_ident()}" + logger.info( + "[%s] realtime sync start account=%s username=%s max_scan=%s", + trace_id, + account_dir.name, + username, + int(max_scan), + ) # Lock per (account, username) to avoid concurrent writes to the same sqlite tables. + logger.info("[%s] acquiring per-session lock account=%s username=%s", trace_id, account_dir.name, username) with _realtime_sync_lock(account_dir.name, username): + logger.info("[%s] per-session lock acquired account=%s username=%s", trace_id, account_dir.name, username) try: + logger.info("[%s] ensure wcdb connected account=%s", trace_id, account_dir.name) rt_conn = WCDB_REALTIME.ensure_connected(account_dir) + logger.info("[%s] wcdb connected account=%s handle=%s", trace_id, account_dir.name, int(rt_conn.handle)) except WCDBRealtimeError as e: raise HTTPException(status_code=400, detail=str(e)) @@ -369,6 +401,14 @@ async def sync_chat_realtime_messages( if not resolved: raise HTTPException(status_code=404, detail="Conversation table not found in decrypted databases.") msg_db_path, table_name = resolved + logger.info( + "[%s] resolved decrypted table account=%s username=%s db=%s table=%s", + trace_id, + account_dir.name, + username, + str(msg_db_path), + table_name, + ) msg_conn = sqlite3.connect(str(msg_db_path)) msg_conn.row_factory = sqlite3.Row @@ -457,8 +497,34 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: while scanned < int(max_scan): take = min(batch_size, int(max_scan) - scanned) + logger.info( + "[%s] wcdb_get_messages account=%s username=%s take=%s offset=%s", + trace_id, + account_dir.name, + username, + int(take), + int(offset), + ) + wcdb_t0 = time.perf_counter() with rt_conn.lock: raw_rows = _wcdb_get_messages(rt_conn.handle, username, limit=take, offset=offset) + wcdb_ms = (time.perf_counter() - wcdb_t0) * 1000.0 + logger.info( + "[%s] wcdb_get_messages done account=%s username=%s rows=%s ms=%.1f", + trace_id, + account_dir.name, + username, + len(raw_rows or []), + wcdb_ms, + ) + if wcdb_ms > 2000: + logger.warning( + "[%s] wcdb_get_messages slow account=%s username=%s ms=%.1f", + trace_id, + account_dir.name, + username, + wcdb_ms, + ) if not raw_rows: break @@ -526,9 +592,27 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: # Insert older -> newer to keep sqlite btree locality similar to existing data. values = [tuple(r.get(c) for c in insert_cols) for r in reversed(new_rows)] + insert_t0 = time.perf_counter() msg_conn.executemany(insert_sql, values) msg_conn.commit() + insert_ms = (time.perf_counter() - insert_t0) * 1000.0 inserted = len(new_rows) + logger.info( + "[%s] sqlite insert done account=%s username=%s inserted=%s ms=%.1f", + trace_id, + account_dir.name, + username, + int(inserted), + insert_ms, + ) + if insert_ms > 1000: + logger.warning( + "[%s] sqlite insert slow account=%s username=%s ms=%.1f", + trace_id, + account_dir.name, + username, + insert_ms, + ) if ("packed_info_data" in insert_cols) and backfill_rows: update_values = [] @@ -539,12 +623,30 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: update_values.append((pdata, int(r.get("local_id") or 0))) if update_values: before_changes = msg_conn.total_changes + update_t0 = time.perf_counter() msg_conn.executemany( f"UPDATE {quoted_table} SET packed_info_data = ? WHERE local_id = ? AND (packed_info_data IS NULL OR length(packed_info_data) = 0)", update_values, ) msg_conn.commit() + update_ms = (time.perf_counter() - update_t0) * 1000.0 backfilled = int(msg_conn.total_changes - before_changes) + logger.info( + "[%s] sqlite backfill done account=%s username=%s rows=%s ms=%.1f", + trace_id, + account_dir.name, + username, + int(backfilled), + update_ms, + ) + if update_ms > 1000: + logger.warning( + "[%s] sqlite backfill slow account=%s username=%s ms=%.1f", + trace_id, + account_dir.name, + username, + update_ms, + ) # Update session.db so left sidebar ordering/time can follow new messages. newest = new_rows[0] if new_rows else None @@ -636,6 +738,16 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: finally: sconn.close() + logger.info( + "[%s] realtime sync done account=%s username=%s scanned=%s inserted=%s backfilled=%s maxLocalIdBefore=%s", + trace_id, + account_dir.name, + username, + int(scanned), + int(inserted), + int(backfilled), + int(max_local_id), + ) return { "status": "success", "account": account_dir.name, @@ -750,8 +862,31 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: while scanned < int(max_scan): take = min(batch_size, int(max_scan) - scanned) + logger.info( + "[realtime] wcdb_get_messages account=%s username=%s take=%s offset=%s", + account_dir.name, + username, + int(take), + int(offset), + ) + wcdb_t0 = time.perf_counter() with rt_conn.lock: raw_rows = _wcdb_get_messages(rt_conn.handle, username, limit=take, offset=offset) + wcdb_ms = (time.perf_counter() - wcdb_t0) * 1000.0 + logger.info( + "[realtime] wcdb_get_messages done account=%s username=%s rows=%s ms=%.1f", + account_dir.name, + username, + len(raw_rows or []), + wcdb_ms, + ) + if wcdb_ms > 2000: + logger.warning( + "[realtime] wcdb_get_messages slow account=%s username=%s ms=%.1f", + account_dir.name, + username, + wcdb_ms, + ) if not raw_rows: break @@ -816,9 +951,25 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: continue values = [tuple(r.get(c) for c in insert_cols) for r in reversed(new_rows)] + insert_t0 = time.perf_counter() msg_conn.executemany(insert_sql, values) msg_conn.commit() + insert_ms = (time.perf_counter() - insert_t0) * 1000.0 inserted = len(new_rows) + logger.info( + "[realtime] sqlite insert done account=%s username=%s inserted=%s ms=%.1f", + account_dir.name, + username, + int(inserted), + insert_ms, + ) + if insert_ms > 1000: + logger.warning( + "[realtime] sqlite insert slow account=%s username=%s ms=%.1f", + account_dir.name, + username, + insert_ms, + ) if ("packed_info_data" in insert_cols) and backfill_rows: update_values = [] @@ -829,12 +980,28 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: update_values.append((pdata, int(r.get("local_id") or 0))) if update_values: before_changes = msg_conn.total_changes + update_t0 = time.perf_counter() msg_conn.executemany( f"UPDATE {quoted_table} SET packed_info_data = ? WHERE local_id = ? AND (packed_info_data IS NULL OR length(packed_info_data) = 0)", update_values, ) msg_conn.commit() + update_ms = (time.perf_counter() - update_t0) * 1000.0 backfilled = int(msg_conn.total_changes - before_changes) + logger.info( + "[realtime] sqlite backfill done account=%s username=%s rows=%s ms=%.1f", + account_dir.name, + username, + int(backfilled), + update_ms, + ) + if update_ms > 1000: + logger.warning( + "[realtime] sqlite backfill slow account=%s username=%s ms=%.1f", + account_dir.name, + username, + update_ms, + ) newest = new_rows[0] if new_rows else None preview = "" @@ -938,7 +1105,7 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: @router.post("/api/chat/realtime/sync_all", summary="实时消息同步到解密库(全会话增量)") -async def sync_chat_realtime_messages_all( +def sync_chat_realtime_messages_all( request: Request, account: Optional[str] = None, max_scan: int = 200, @@ -953,6 +1120,16 @@ async def sync_chat_realtime_messages_all( 说明:这是增量同步,不会每次全表扫描;priority_username 会优先同步并可设置更大的 priority_max_scan。 """ account_dir = _resolve_account_dir(account) + trace_id = f"rt-syncall-{int(time.time() * 1000)}-{threading.get_ident()}" + logger.info( + "[%s] realtime sync_all start account=%s max_scan=%s priority=%s include_hidden=%s include_official=%s", + trace_id, + account_dir.name, + int(max_scan), + str(priority_username or "").strip(), + bool(include_hidden), + bool(include_official), + ) if max_scan < 20: max_scan = 20 @@ -966,15 +1143,29 @@ async def sync_chat_realtime_messages_all( priority = str(priority_username or "").strip() started = time.time() + logger.info("[%s] acquiring global sync lock account=%s", trace_id, account_dir.name) with _realtime_sync_all_lock(account_dir.name): + logger.info("[%s] global sync lock acquired account=%s", trace_id, account_dir.name) try: + logger.info("[%s] ensure wcdb connected account=%s", trace_id, account_dir.name) rt_conn = WCDB_REALTIME.ensure_connected(account_dir) + logger.info("[%s] wcdb connected account=%s handle=%s", trace_id, account_dir.name, int(rt_conn.handle)) except WCDBRealtimeError as e: raise HTTPException(status_code=400, detail=str(e)) try: + logger.info("[%s] wcdb_get_sessions account=%s", trace_id, account_dir.name) + wcdb_t0 = time.perf_counter() with rt_conn.lock: raw_sessions = _wcdb_get_sessions(rt_conn.handle) + wcdb_ms = (time.perf_counter() - wcdb_t0) * 1000.0 + logger.info( + "[%s] wcdb_get_sessions done account=%s sessions=%s ms=%.1f", + trace_id, + account_dir.name, + len(raw_sessions or []), + wcdb_ms, + ) except Exception: raw_sessions = [] @@ -1018,6 +1209,13 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: sessions = _dedupe(sessions) sessions.sort(key=lambda x: int(x[0] or 0), reverse=True) all_usernames = [u for _, u in sessions if u] + logger.info( + "[%s] sessions prepared account=%s raw=%s filtered=%s", + trace_id, + account_dir.name, + len(raw_sessions or []), + len(all_usernames), + ) # Skip sessions whose decrypted session.db already has a newer/equal sort_timestamp. decrypted_ts_by_user: dict[str, int] = {} @@ -1080,10 +1278,25 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: continue sync_usernames.append(u) + logger.info( + "[%s] sessions need_sync account=%s need_sync=%s skipped_up_to_date=%s", + trace_id, + account_dir.name, + len(sync_usernames), + int(skipped_up_to_date), + ) + if priority and priority in sync_usernames: sync_usernames = [priority] + [u for u in sync_usernames if u != priority] table_map = _resolve_decrypted_message_tables(account_dir, sync_usernames) + logger.info( + "[%s] resolved decrypted tables account=%s resolved=%s need_sync=%s", + trace_id, + account_dir.name, + len(table_map), + len(sync_usernames), + ) scanned_total = 0 inserted_total = 0 @@ -1116,17 +1329,50 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: inserted_total += ins if ins: updated_sessions += 1 + logger.info( + "[%s] synced session account=%s username=%s inserted=%s scanned=%s", + trace_id, + account_dir.name, + uname, + ins, + int(result.get("scanned") or 0), + ) except HTTPException as e: errors.append(f"{uname}: {str(e.detail or '')}".strip()) + logger.warning( + "[%s] sync session failed account=%s username=%s err=%s", + trace_id, + account_dir.name, + uname, + str(e.detail or "").strip(), + ) continue except Exception as e: errors.append(f"{uname}: {str(e)}".strip()) + logger.exception( + "[%s] sync session crashed account=%s username=%s", + trace_id, + account_dir.name, + uname, + ) continue elapsed_ms = int((time.time() - started) * 1000) if len(errors) > 20: errors = errors[:20] + [f"... and {len(errors) - 20} more"] + logger.info( + "[%s] realtime sync_all done account=%s sessions_total=%s need_sync=%s synced=%s updated=%s inserted_total=%s elapsed_ms=%s errors=%s", + trace_id, + account_dir.name, + len(all_usernames), + len(sync_usernames), + int(synced), + int(updated_sessions), + int(inserted_total), + int(elapsed_ms), + len(errors), + ) return { "status": "success", "account": account_dir.name, @@ -2134,7 +2380,7 @@ async def list_chat_accounts(): @router.get("/api/chat/sessions", summary="获取会话列表(聊天左侧列表)") -async def list_chat_sessions( +def list_chat_sessions( request: Request, account: Optional[str] = None, limit: int = 400, @@ -2157,10 +2403,32 @@ async def list_chat_sessions( rows: list[Any] if source_norm == "realtime": + trace_id = f"rt-sessions-{int(time.time() * 1000)}-{threading.get_ident()}" + logger.info( + "[%s] list_sessions realtime start account=%s limit=%s include_hidden=%s include_official=%s preview=%s", + trace_id, + account_dir.name, + int(limit), + bool(include_hidden), + bool(include_official), + str(preview or ""), + ) try: + logger.info("[%s] ensure wcdb connected account=%s", trace_id, account_dir.name) conn = WCDB_REALTIME.ensure_connected(account_dir) + logger.info("[%s] wcdb connected account=%s handle=%s", trace_id, account_dir.name, int(conn.handle)) + logger.info("[%s] wcdb_get_sessions account=%s", trace_id, account_dir.name) + wcdb_t0 = time.perf_counter() with conn.lock: raw = _wcdb_get_sessions(conn.handle) + wcdb_ms = (time.perf_counter() - wcdb_t0) * 1000.0 + logger.info( + "[%s] wcdb_get_sessions done account=%s sessions=%s ms=%.1f", + trace_id, + account_dir.name, + len(raw or []), + wcdb_ms, + ) except WCDBRealtimeError as e: raise HTTPException(status_code=400, detail=str(e)) @@ -2193,6 +2461,7 @@ def _ts(v: Any) -> int: norm.sort(key=lambda r: _ts(r.get("sort_timestamp")), reverse=True) rows = norm + logger.info("[%s] list_sessions realtime normalized account=%s rows=%s", trace_id, account_dir.name, len(rows)) else: session_db_path = account_dir / "session.db" sconn = sqlite3.connect(str(session_db_path)) @@ -2873,7 +3142,7 @@ def _collect_chat_messages( @router.get("/api/chat/messages", summary="获取会话消息列表") -async def list_chat_messages( +def list_chat_messages( request: Request, username: str, account: Optional[str] = None, From ae2d7f128d3b1927aeb456266f886f8d6c50f762 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Sat, 24 Jan 2026 18:47:29 +0800 Subject: [PATCH 003/103] =?UTF-8?q?improvement(chat):=20realtime=20?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=8E=BB=E6=8A=96=E5=B9=B6=E7=BB=95=E8=BF=87?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=85=A8=E9=87=8F=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - realtime 模式拉取消息时传 source=realtime,直接从 WCDB 读取 - SSE change 事件增加 500ms debounce,减少频繁刷新/请求抖动 - 停止 realtime 时清理 debounce timer --- frontend/pages/chat/[[username]].vue | 32 ++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/frontend/pages/chat/[[username]].vue b/frontend/pages/chat/[[username]].vue index 48ed479..b2348ab 100644 --- a/frontend/pages/chat/[[username]].vue +++ b/frontend/pages/chat/[[username]].vue @@ -1894,6 +1894,7 @@ let realtimeSessionsRefreshQueued = false let realtimeFullSyncFuture = null let realtimeFullSyncQueued = false let realtimeFullSyncPriority = '' +let realtimeChangeDebounceTimer = null const allMessages = ref({}) @@ -4644,9 +4645,9 @@ const loadMessages = async ({ username, reset }) => { if (messageTypeFilter.value && messageTypeFilter.value !== 'all') { params.render_types = messageTypeFilter.value } - - if (reset) { - await queueRealtimeFullSync(username) + if (realtimeEnabled.value) { + // In realtime mode, read directly from WCDB to avoid blocking on background sync. + params.source = 'realtime' } const resp = await api.listChatMessages(params) @@ -4747,6 +4748,12 @@ const stopRealtimeStream = () => { } catch {} realtimeEventSource = null } + if (realtimeChangeDebounceTimer) { + try { + clearTimeout(realtimeChangeDebounceTimer) + } catch {} + realtimeChangeDebounceTimer = null + } } const refreshRealtimeIncremental = async () => { @@ -4774,8 +4781,8 @@ const refreshRealtimeIncremental = async () => { if (messageTypeFilter.value && messageTypeFilter.value !== 'all') { params.render_types = messageTypeFilter.value } + params.source = 'realtime' - await queueRealtimeFullSync(username) const resp = await api.listChatMessages(params) if (selectedContact.value?.username !== username) return @@ -4820,6 +4827,19 @@ const queueRealtimeRefresh = () => { }) } +const queueRealtimeChange = () => { + if (!process.client || typeof window === 'undefined') return + if (!realtimeEnabled.value) return + if (realtimeChangeDebounceTimer) return + + // Debounce noisy db_storage change events to avoid hammering the backend. + realtimeChangeDebounceTimer = setTimeout(() => { + realtimeChangeDebounceTimer = null + queueRealtimeRefresh() + queueRealtimeSessionsRefresh() + }, 500) +} + const startRealtimeStream = () => { stopRealtimeStream() if (!process.client || typeof window === 'undefined') return @@ -4840,9 +4860,7 @@ const startRealtimeStream = () => { try { const data = JSON.parse(String(ev.data || '{}')) if (String(data?.type || '') === 'change') { - queueRealtimeFullSync(selectedContact.value?.username || '') - queueRealtimeRefresh() - queueRealtimeSessionsRefresh() + queueRealtimeChange() } } catch {} } From d0d518aed9ba62d071d6416b51a30ced3e133387 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 27 Jan 2026 16:26:53 +0800 Subject: [PATCH 004/103] =?UTF-8?q?fix(chat):=20proxy=5Fimage=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=20tc.qq.com=20=E5=B9=B6=E5=A2=9E=E5=BC=BA=E9=98=B2?= =?UTF-8?q?=E7=9B=97=E9=93=BE=20Referer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - proxy_image 放开 .tc.qq.com 白名单,兼容朋友圈/CDN 图片 - 下载时按多组 Referer/Origin 轮询,提高成功率 - 保持 host 校验与 10MB 限制 --- src/wechat_decrypt_tool/routers/chat_media.py | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/src/wechat_decrypt_tool/routers/chat_media.py b/src/wechat_decrypt_tool/routers/chat_media.py index 655f0bc..0943374 100644 --- a/src/wechat_decrypt_tool/routers/chat_media.py +++ b/src/wechat_decrypt_tool/routers/chat_media.py @@ -414,7 +414,7 @@ def _is_allowed_proxy_image_host(host: str) -> bool: if not h: return False # WeChat public account/article thumbnails and avatars commonly live on these CDNs. - return h.endswith(".qpic.cn") or h.endswith(".qlogo.cn") + return h.endswith(".qpic.cn") or h.endswith(".qlogo.cn") or h.endswith(".tc.qq.com") @router.get("/api/chat/media/proxy_image", summary="代理获取远程图片(解决微信公众号图片防盗链)") @@ -435,33 +435,52 @@ async def proxy_image(url: str): raise HTTPException(status_code=400, detail="Unsupported url host for proxy_image.") def _download_bytes() -> tuple[bytes, str]: - headers = { + base_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120 Safari/537.36", "Accept": "image/avif,image/webp,image/apng,image/*,*/*;q=0.8", - # qpic/qlogo often require a mp.weixin.qq.com referer (anti-hotlink) - "Referer": "https://mp.weixin.qq.com/", - "Origin": "https://mp.weixin.qq.com", } - r = requests.get(u, headers=headers, timeout=20, stream=True) - try: - r.raise_for_status() - content_type = str(r.headers.get("Content-Type") or "").strip() - max_bytes = 10 * 1024 * 1024 - chunks: list[bytes] = [] - total = 0 - for ch in r.iter_content(chunk_size=64 * 1024): - if not ch: - continue - chunks.append(ch) - total += len(ch) - if total > max_bytes: - raise HTTPException(status_code=400, detail="Proxy image too large (>10MB).") - return b"".join(chunks), content_type - finally: + + # Different Tencent CDNs enforce different anti-hotlink rules. + # Try a couple of safe referers so Moments(qpic) and MP(qpic) both work. + header_variants = [ + {"Referer": "https://wx.qq.com/", "Origin": "https://wx.qq.com"}, + {"Referer": "https://mp.weixin.qq.com/", "Origin": "https://mp.weixin.qq.com"}, + {"Referer": "https://www.baidu.com/", "Origin": "https://www.baidu.com"}, + {}, + ] + + last_err: Exception | None = None + for extra in header_variants: + headers = dict(base_headers) + headers.update(extra) + r = requests.get(u, headers=headers, timeout=20, stream=True) try: - r.close() - except Exception: - pass + r.raise_for_status() + content_type = str(r.headers.get("Content-Type") or "").strip() + max_bytes = 10 * 1024 * 1024 + chunks: list[bytes] = [] + total = 0 + for ch in r.iter_content(chunk_size=64 * 1024): + if not ch: + continue + chunks.append(ch) + total += len(ch) + if total > max_bytes: + raise HTTPException(status_code=400, detail="Proxy image too large (>10MB).") + return b"".join(chunks), content_type + except HTTPException: + # Hard failure, don't retry with another referer. + raise + except Exception as e: + last_err = e + finally: + try: + r.close() + except Exception: + pass + + # All variants failed. + raise last_err or RuntimeError("proxy_image download failed") try: data, ct = await asyncio.to_thread(_download_bytes) From ba9eb5e2676ab3738fd80fe7b608fe1af262bbc3 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 27 Jan 2026 16:27:19 +0800 Subject: [PATCH 005/103] =?UTF-8?q?feat(sns):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9C=8B=E5=8F=8B=E5=9C=88=E6=97=B6=E9=97=B4=E7=BA=BF=E4=B8=8E?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 /api/sns/timeline:优先走 WCDB realtime 读取 sns.db,支持分页/用户过滤/关键字 - 新增 /api/sns/media:本地缓存(cache/.../Sns/Img)解密优先,支持手动 pick/避开重复 - 新增 /api/sns/media_candidates 与 /api/sns/media_picks:候选 key 列表与本机持久化匹配表 - wcdb_realtime 增加 exec_query/get_sns_timeline 封装,并在连接时 set_my_wxid 上下文 - 更新 wcdb_api.dll 并补齐 MSVC runtime 依赖 --- src/wechat_decrypt_tool/api.py | 2 + src/wechat_decrypt_tool/native/msvcp140.dll | Bin 0 -> 553552 bytes src/wechat_decrypt_tool/native/msvcp140_1.dll | Bin 0 -> 35488 bytes .../native/vcruntime140.dll | Bin 0 -> 123472 bytes .../native/vcruntime140_1.dll | Bin 0 -> 47264 bytes src/wechat_decrypt_tool/native/wcdb_api.dll | Bin 251904 -> 689152 bytes src/wechat_decrypt_tool/routers/sns.py | 1068 +++++++++++++++++ src/wechat_decrypt_tool/wcdb_realtime.py | 154 +++ 8 files changed, 1224 insertions(+) create mode 100644 src/wechat_decrypt_tool/native/msvcp140.dll create mode 100644 src/wechat_decrypt_tool/native/msvcp140_1.dll create mode 100644 src/wechat_decrypt_tool/native/vcruntime140.dll create mode 100644 src/wechat_decrypt_tool/native/vcruntime140_1.dll create mode 100644 src/wechat_decrypt_tool/routers/sns.py diff --git a/src/wechat_decrypt_tool/api.py b/src/wechat_decrypt_tool/api.py index df3773f..97ad48b 100644 --- a/src/wechat_decrypt_tool/api.py +++ b/src/wechat_decrypt_tool/api.py @@ -18,6 +18,7 @@ from .routers.health import router as _health_router from .routers.keys import router as _keys_router from .routers.media import router as _media_router +from .routers.sns import router as _sns_router from .routers.wechat_detection import router as _wechat_detection_router from .wcdb_realtime import WCDB_REALTIME, shutdown as _wcdb_shutdown @@ -51,6 +52,7 @@ app.include_router(_chat_router) app.include_router(_chat_export_router) app.include_router(_chat_media_router) +app.include_router(_sns_router) class _SPAStaticFiles(StaticFiles): diff --git a/src/wechat_decrypt_tool/native/msvcp140.dll b/src/wechat_decrypt_tool/native/msvcp140.dll new file mode 100644 index 0000000000000000000000000000000000000000..554d2ffc5f5aa84a0598b2f167258187f1fa5842 GIT binary patch literal 553552 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

cyLVP4%_WN`c%G+;tN5&mi1K!B|APEI{x}& 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 literal 0 HcmV?d00001 diff --git a/src/wechat_decrypt_tool/native/msvcp140_1.dll b/src/wechat_decrypt_tool/native/msvcp140_1.dll new file mode 100644 index 0000000000000000000000000000000000000000..184514f64a25db8023d26795b929ffd290ee5698 GIT binary patch literal 35488 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 literal 0 HcmV?d00001 diff --git a/src/wechat_decrypt_tool/native/vcruntime140.dll b/src/wechat_decrypt_tool/native/vcruntime140.dll new file mode 100644 index 0000000000000000000000000000000000000000..950b5876276ab599400576250d1704b443cf58a0 GIT binary patch literal 123472 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%0DnTP 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

QPYJQAW;;0YMpAHU!$(r;BPkP9?ZYW*W& zC5H>0xJdItgodF1o|o{x{PxM^c*}bG zkvO$iHNyYKYZbO+pq&^WydKXNvEjOFvigeW&m%q6PfK&(!u7U__vEOU%xN(2@NeBW zHw0S31@!T`aNZ3HDvlftD>a--0@hZXx7g~Ht?2KjxaV8+cQ5-l_1qO=hLJR9${?%# zL7v@tIVNS*#z6vxXT?0;Pkf9b9$n90TF%MLQ{N1nv!~Ry|Gs@3I#ixR`c3Fgd4_bQ z0#X|3#>YWc7#Jz@QM#bN(&-;0AtMYTxg$(T10pe%I0zMG04HloH?(1 zz5yKP2k}<|;Gz~=Bk+RTN?p}MDPn@w$D(&o!LmOxPab;_Ne^&hPJqQ@z6wST4Mwhl zXz8jfiH8I;ALj%QzCQCUF<(9cH9qpJqzCaWK$u_VTbhsYv5!PITpdrfo54>2=QYBm zb9F9(@#z@?(i^&ifvbbHjC*~N8P8rb*EZLi(cLFZw zONc|~xBnS-99GWDrNkRzV|t>4e3Y-h`lBa)G8H(2@}M3;_;0Q54^Pa6@939~7g>nX zdA5SGS>`LYeuT}Xc(jY2_*g46&Cy?3_#_I$%hqFSnI;o6$GitJ6D6Kf7B11z$U*WuAuf8)Oe`po`Gc-CWeEfC2cRsB&nn?C zmQ7|P2c;EX;M2wjl5^znUbKW6Asa@NJ^J0gX+?Bqg3EmS+{R@LoY^}8S?t}Bq;B58 z8$;HA2(1zzik6al20=+R_>QkBhsu80*8|uum4s8m!6r1~Yt56Yt(Cb4oY1>`H2cY$9U?JXJVv^@%^JC;|?W4D@>m*qjY%+2W27lG$pBj?>;e@$F*IzE&vG6#5M~8phOU zyW%JGovteElC#x#9^zF8_nalfdVKu?;pd}mO8B4L?szJO>X-IRdNXdsFZP*m?ZuD?CX-||{qYZk#&(S|?R_VJkpf&L z`V{jv-lEjkDWPGr;odmbR5T~n%wElV6q{Dvq0AGfaO`&}nn7H1wp0DDDfYIn($nm_ zaJq&i(`kQUgM!#@V2LOoJK@lYw{p{s{typVZOGO!SI*(DdL_3NFu9#EF(9T*h~c&- zXuXdM+xBP-IUSG|bi2l_;u^QAd@no+w!`z%09gcwa1kuWUBmad2L6kyL4IK5`~J5? zAYPziNr$2?+0-|!YD13GEE!2O%kMTzV$dufo2B|&^e`F7ax7(Zb7BZ?#}ZjwOvgJA z!uu>?z6#Big;;cZj%D4%n4UY!`|*^fVzIkkaZXKQZwluNjg+6{ z$pXtp3|`;yWT|f(&(KpLWWd_QjF>!vSW2oe`_KNJs297!PMCy4jC) z9j`1IuK^DJ+edMr4&|}Swa5SE<8}MnGF~3(J;sZDz~(sP2FT;94K9XH1S^2D?YlHA z^wW1ix%bc=u+DLZTEWD}d!C?W=VOkkBINY97r>g(5G5mQM$o+SgUK2d#m)A`*yje} zW|%nwRZTfGIpFX19I_&0_isniY4t(`jy3zh7jC+C*Jyc`$bkqyF!6933?ew-@$RCV^bwf~xNm!-9x&6Frl z%Gmus0Ke82?G-E>_CUTKxLVt`Qt5Xh>aFSo{q8TY#ADfOIqa;>)@H%Z58E{jk*w1& z`pSZt&e7<^HwYFSu-*@V1wW5#y#a7p93Z+JGZ0^4Gw~4d6XV_=>B5dFgd{sIYB(Ol z0I=-F<1{P96Z2!C7TtkYp2~l9Mb&YmD)3(4nFzjDap)CQ$B(Kwuzg=>1SQ?8{ENBD z2f?=~jyeCR!0Up|WX)x?o_nj4r`?&vR2h5Og4*m`{z@+2*I@xQ?5C5~(ZaOe&I%y; zPk<;h2t+I}8KnR=pZdkNmGN;W=osGfX%!Lm-VK|3`wa97)}!HKiTf!;<2DV}y7z4V z1@#57%f240U3oBPl8?bH>AoiY7n zg{@ny^q1wbfxs>`u-#W9e*LrH;(FEI8AVGC+-u@+GgIM0xHn%|3K7KvoBb;gyzI0c zOx*A*k>3~;^{CRKv9Pn*E}Em8Z9y{j3o?iR4x1t3S&-y6h=#i)8kH(>IO|tei^@eT zX0$;c!wO!SNFq*<5*g|?P0UU)>b>y>r~G3mPkI%KNAqMZX!AHdqDyC~K4ZWWyQSKq#};**k87gBLv-$(D=l z(G%mdE=RKwXHTREG|GkOG^{6NS%;zzZNH8iaZ)-ujrX4N#kLX8Kab0-f(Ln=8zJAp zttU4+^~q=)e0H1xcb!#ha@uZ#@&^(QM71M|>oS*OnxFU}c+H{VNHdWD&Q*)AlsOG$ zcozC28rr_J>a!iBvW0B*BhSczNS#)*ZMX0lf=Ni?Ox{Q2)xg3`WOE$oZebPN3veow z@(bxu)yELvx_h3}fX?^}7+u{eJ#{PgJmy(n-Bswph|OwdvofVw2>F3SII2eNsH}j2 z!JTkKp3feFRwd>_Km!?Se|_}z6ynJB-4B)$P3M5N*9DD7DHM6sqXO!hc5mn?H!Y?Wi8<(%cekawRUZdbF z{fLkwUEfb$ZvP0xRAl`)K62e1^gPb}3HdXnxdHf(%D4fq6%J{~y|4`ddb+^^i`|F) z`B}Qaj=iF`n~e-NCzO|#bA3fmyR5J9PcG}LZeTcCpZ!sHFE}FU?&Zkj-OGWpd)cQw z+u6N%y4$ye?sm2<#rHwzemA6&kJ#(hLi7U-8O#NNu8Auo@|5PjX)9zRTQGF6Dqu1j zS^>%E3W!Lt=I}X|J{5SH(c2%lAMCYg9lSyf#$!KtES%7$ZG_zaU0J7#SLhAV{?f!g3)AU*%o7%AQFLOA3h!Hic&L9u(B97; zAr1~F#-L$9tKgh2*k>&|sCR~oR}eJ*-sQevSZY1(gJmxeT4DdwFB3xWve_Q{2MnwQ zk92gLNcj$22E)O?T8LfS2f`?1GlmW~BQ`^PzU9>D37NsdCX6y&8lF>;wBQSjVlWH( zU7Rhj+_n7pq_w;dx531n+(x_O@zk~aW1(8Mr(0MV(+w=M#>Ozg46Mhyz`FORU~#?1 z9>duO#9>V`u-tvX=|lx7EMNt5Gwr;q)6*(v-h6IPP$1bX$vT6o7S-z{Q7%wty~O( zKil;TtnCipDG9!}9wW_Gqc zWCso0&(5?D`j%)pEmL`Y6|7C$rUMq7;HtY`PXX=l@sN7X3Z3Yx_Grkf!a%9^6^Q9_(z$2B8PA2WUJ=O*y-cn(4&q zv;Ti};)}l}c49K_M9BGGI&nHe?zt99ph^s=3gMcCewyun0=aIEs>U2nU=o1};WQUE zgN7D91TDC^A&l{H$4@Gu5RMzaU}1-+dL;HXI9;5BQ@}Ym1)P&8KQh9(9F(zZp%K>C zGqI5bmX8iXg#ulQr}{M#~D+rl#`7AfdDF^Y`Fv)R0a#U^a?+JH8zam1p z8pPP^aN@*9b^&e$kQ-*9FeMS$_-3-Pm|~1mHB<>fpEv=-IcH-Uw)CRCW)>!x>IJFW z&*V@7B~qeYp6GRi&ng+Wmq4_sJ)18w8DQt%tPo776JMx{pkserl3a}uVH0X4GT8re zHAX?BF_NlpMPYDePwxRixD0+4WSjMbm>YTI5)YE)P(%u|CAS$6N{}C{*(~ z(z&>*bOB1TZsvx+@=J`WR0>m78cnC)bHE!UQIKLdNv_6po&iBncozc|q15TGX)72> zCYpv;U;yYa8{>l<-b}f~p*7nvJla(xPl@B6@5Lx88dLA@vFH61Nvbi`0SQ@O5@0Ei z7FU{1Luh=>vobK~rCJ24;*`q-@v#YC9G}>NM8)YQHZVbP+Q8nZ;*@O`#i{&o6sKo$ z8nj3*QJmr&;wVzH_|qo96vZhv@P=r%!a|a|Q#Lqg>2b3NPR(5-$Y4|@+|-{!9;X5O zdmI3%JuTrxnZ(tjL}|Aky|U+w7qg3Omv9-&C4m!@RSO9fo?)n$srC^Ml3gGVTO#{C zN3KKSb`H^91uuMX%@Lej1#bh+Sa5m~lx+KSq)@dpJ0QrlAD~7}p3I$}+lnSYGVm!r zSf-ykNtbCGL1%_ANB1*i72M*hPIWkbx!s%mfOIHMprFE%#-BmE_8W(CPX@M)5yX3W zQ%T6q{CO3j@nCtJd_}P}<1w%0=bRm+FVDPRL&r*%NQ`Ua{(yC!Qja);q~Uz{Kd`Le zD~^rGNc=Pt+o*<;Cfm;;vWMVg59YP*UN#=r*Hf9PX@Fh?I7@2Pa=F)~BXvMv1;W0<2xuxT`WBozoiey)b^d_+1g7H1=zI-AW7@p0XCVnn5Z-`vNEVpIcB&g~V@=<7B-hh;83;c zqK<9%uc5S(ZTDN)A0!u?%YtMISkV*oY~`r9?GMN;OZxrzA^TaeCrqsOrKy-O#-0}& zk22A>9nM;k^lh0&-}V{S9+`BUe316!Vebs|wn(sAP82DMw=^_F6mQS4s6_=-l`7uK zIAQNQ&G1x)IPGfiRhpI<&~znJj6SHqrv&%k>w_lec1u4p;VyYe>1UvsadC;hB(Fjv zWEUf$gYMO_v^n+AfiyIi+72zmrK*#2ipHY`PM1tFG|KWF`r((;+vtLHx$bU>aCJdK zSeuTKNj={sw;I5(kGcnJ4)bAv=}%l|$7C|odVbA&7r`jbdkACk+#(zqze9b#4itV+ zK2iikW3WRJjS!+LzH*8?St)mx;sy-C5)>Y`=r?^*AUdUAk@yjU^5>L$xKV-Qt2gc2 zXlM#%x?iC1^@=@vg4rJEDTQoJI-{N7;~klvZ~>c6fvxv*+?lo4p%M!8>A}Y7WkU1% zcy6cC<+SMDql%Vdl}4WQzuoONac^y+r<%?v0wZ6CHVe;byp8~OEelZ651o`^)HDWD zLow^>zfyHnBhW4*=X&KHMS&}ux{kXGDeu4sF$sL9ok`iTh z0cn+Jzx^lfNgOgT<0q2P(TS2!>}66OBKew~7bQ|BYr6jm-OdOuu$^Js&31;(MimLW zB}Yv~y6t(lBo@F%O;rf+vg6_uOHxzW2{5{-sV;DKTi;)<&EtIJRFavBW$jZJWXt|@RRwe^qTAlb&ci65l0Q@k&7{)BIKpdkRYE|Ss)P_TYfx3JS4E;D zJhO|z_Ei))vV(c&9@&LKEx}gO`r%Q*TwE=ixovhFCr3$k1 zh?w@ndH)IL%^VUy8j7{SP%uVy3vceWVSR8qO@{x{WpRxU>mr|$x`4Z8gzep>{RsJq z$;>Y(1vDC;y*^A;%UlI$wMF!$2u;rhd(U)7)5GW6IUE9VRjt{n2*?-l;G_$(`GZuD zyAz}sp@X(b*3k5Pd?^MVnjXsjy4CckQs>4R@Q8auVD5>sh*mVkZcUBtVC)-=bu~P% zIC(gZ*nZ{_+yspj9Z}&Oh&Tojq9b~np@N{PP0LU#RN;VO-#Jq&S=Cg;CSSjh`)$16 z?Fu*X@EG4)YD9imTn`?zQ~l6gMZ2UQYAVnL_kX4zS_8XLTDKJZ@AX5^Eb2x-bnx@L zs2^&JU_72e>;Cupq1!JeYt!KlI8dnMOuGv~L6h`-}8L zM_;&$`k_>v&PZU`taUAS>RK1K_4t`OozF4346JGc%Uw59bUNq2KIWI|bS6Cl{`z0) zbgHMy=>KnYI>!PS*xN7H>1@3Sm^V6|H{|!ubUKMFhw|v|@6+n`KmCDG4#znXS8KVf z6g=7iCI+Ll=$uXXfrlK((p1|MnF2jE9NP{)Gs)>>KLpoX!6DlZEz*A&))uGYStn{Lxog4PJ36ztL}bXq68u{qr*Ii|-(@XYh?) z|Hzg^BZsb@dgQplg%JyPv)wd>gLgV2jE@+K!Z}R-)6WC+Vb<@ouUoGMEPfk zgELns+zK7ZjZJ@6hK&s;AT~B#Zp|i6U)e9@B<&ZT&CQ3@4O<3SdxCh<-#g4q;BX@* zYRIzbJaw8lPYve!C|ANAp-=tM`)g#2fi{((O$m=U2N3LG@{VFsAi9K`?~qjtbM@J< zR__LbE5)z-*HLbp}{fDA+kk@4yylNs-=6_7vl z?TEoSxOHm2KjM+N$QcNtXTJ_|KH=(Nl(-Sey0cI0bj%tP6i3~@t!4p2l&Ty20V+P_E&rXwaF;Uq{P|;7~}yzcssNs=EJR#oAPNeUci4!g4R{|ac!<&Md|Q`n%_1U4O>d-v;D>-VoB_c z{WLl*6LfU-Q2q`LKO-5z=xxxZ0yMQT)G!2ajvN8qA-~7}8_Y@Sq$Y7vkX6AKZF#?r zq8MNFgq$odKz4i^c<+@M_gMKzIFQ9zYl0Z$!A1f+e`74mM2b0He-l}fnT(1lA)*3( zMb7}g82tXGe7FThU#|ixV&#V?g5Iw?&^X&keI=P-ilCvxPK9%e=p!;)FtTM5xep>a zvR7l^osmsm=lUQ=ZBgY4Qmv4!kjvO$A7S{1M$B1`Uv96ziR;t7LCFhbRI!F#V-H`({ z7*E2cHWgac4Ks*_ z7R0>er=tO)=$BT;yw@N?J=i1lbWL5(;%0Q;0pXmN2{~)UPmM0z*L$kZhh!6IVXtG} zEnsgnw;PX0=X~y@t<$vdUQAQRd|@9-0q-UHDb-Jzez*fcTCINS^|Kfs3``?Fa!Iq! z#|Wp2Qd9wvWR#IH?;GGkbjC;Dh)#uqo=BMIR$xg&PWFMOFe78${|Mvj1TYPM;IOoC zBhu-_=tbG@MPB4|4U$E+ATtx~d($fTAFJ|%66sBn2)XxN@=V*GqrWeH1B_UeJ z{`jkwvyYVKN;qg46VzxWDzUFQ09!3Hp7qQg2`|Pc7!^#(ZQv;5?dea0XoJ=h4EU|E zkR0biu&~urU4(VSLw{3JAT-mi1`>nOikUD^oEfy_dFKFZogqVov+V0;;`_DVT3!QK z!9H6;h5so(Lgn{Go>zy&y!T=-@hVIpwgyQR?FN7;K#<@2|uB5io?Qb13 zE!9jtw(=HcnlG88m5peLw9?nLl}u~f&26Ow`*v;RAg7gw6L!H*v~mP9?bdxO2RgXy z%}ig<643>5+3K|Ne*VyVfetR2)^;7^1(y=!+t4Yv?B}%d&o=}1Zv}RFDlXHVOm)n3 zon}hK^<_hP0d z&6L`e45usonCUUi)U_)?CEm81kZHDLsyGe^&(W@wA7Q$IZSC+}Zfi-dOblVGl4T#i zFKrj}!FJ3<&O$!*eV%L7332f$FuCvWSACrc`8%HaUc$|%$iF)%AuTuqJ0sXo1`994 zQW{?SJ9C1_!F-2p680Q|__n_d%IC6S5nT-aa4@JtNDWqnB}& zJ3YPyVl%XpMeNT9%Wai9@;y1Ss8NHkcjsK!)uv&D+sbCU?sT4@oYiB*1gz`a6ClP1 zM8v$$og%x576~*Uz?G_{lRWQ;M`5XJwxZ6;_Aqh~oaSFFA*(K%6iXZ1qj{RLWN*@Q z^EwAPNNl#ZhD3mk6~G4=vgauwut<0kK1B_uvg1+jelw+&%wt~)gVQd1o*A@WxCyILKU*z3AX|mRtV3~l>M)})1lZsn*Q1!68AY$=WP|cyw90eoU+fULWH}| zxk6L_i+zp<3zRzm834z9&UYMfXH>qxu7{)eFGM;EA_p5tF40e^e#-Pysh?W?)az$4 zK0R-6ZbKC$1A>it+s0{yXC+jarlXj}k8T#-?1!1c%o6hsM@YOj3f08CKLD5vQn-<0 z-y~~1e(@)#0srH)k8g9%nvTHWwl zn1DDB!heB-saC*8$GJ00+Bz`aKK3!C1E8{$J!=Y=;luy%b0&U@I7ZUY$md#_V1;dd zbcX@=M%ObN>`!pW1~)>$-XG2MN0;-r-+GZBu%!Zg%*J3xF#3eVdM11pv|h|dN~q6g zfx;ik^E|J5V&2i9f|?9?=0Q}&SEj7VXaJh3oSg>rvHdGXs4jLlTrjXtsvxuWRJZ9a znzbe5&2;i^gCT>xo5{Pp+q@Z0-uIdJ^Kyj?)iMb*1+LqMmzeiullOAu-4$j$ITJAB z%=noAneppj#@CV=KM2Q2!i<&QS#=zqL>^kou#t^*<)Qst;LY}#fb8&4yDxNTILE|U zvf+7+9ONFs!Sk4DYqQ-O;JVVaQVyXIQE6yg%sZ_pahml;2uUq6=LRFdN#2hlBPTM= z`QgB9%^j6!6GW%c7x4{Yo`ptE$fNkwpYVnU-|v8c zX4mAWVM0<7>LmMbLnu~op=Sen7NGa@H$3yS{ulHtYNUMjm%uNuXAnMxJk$Kvty%i^ zIfTi_*f;PT9C@)GZNd3Utz&|eQ6n1NG*2Mc-P31pnZ}t$Y4UGKW|5nU21ze1A*kLWOFP<-30y%O^MC)%Q zBDBfAfs0{L!wAXhU3fitX|r8+5%`%rBGYN)#hG}2F(S{P7@xNALLo#3(K8R1jR0Vu zKLeO5YQUZY^?FYuFq5*M12Ei*M1>h8i|hh41i+FBMM-FOUj>RapFlq=6QGjv#uU@a za6J+Y(8bJ`+R_kAL?sh?pKbqnItP@$@~-CqSrhYxyp2=a?4D=gNnAUHV>H{h6pLuN zPWG|fyO^yN+tM?Hz6lVHHxPc_{921e(rH8Icv9eU+3_^Vjz_rw(Sw1k>*Ob)ZLK?P z+YJej9|q)~&!q|zAWYV_wXjNEc@sI5H4!rjNHaL^>=|QUgIziO&D2)ml|Gg=K5{qp zT$YDSr|kN1#MNvYcdVFqU;prmbO#o_L~HNvjpIB*`YurfpXeGLeP2lkKYKP zkrix^pVq{Z#9qS#zTVC4x_k^ysAw1}B9)dU_Igs!Wj9HeUOR*{`JI!|YZXwB6-OHK z+zq9flYb@qOkPTXsmtLjC^5F;rY_K=rI@-v(kd}3Z2Ys$bwhS4u<VgBTy{%vLXYzWHrj7q3uX|(6F$*8)`Tft zZ+oxCl$LcHJ2Rizff;6KH;kuHINxu9DVD+tlec@Ui70=1zI|;L(xRuA;Pzm>y~vhD zdSU}n?wPwCUPt6)5~_F5-o-9ys6%L%7WKnn7bTLnjQ{&k%)4-mxf}=0kmz&i8a2mn z-6Kp1?pirbp!J$lPm+wQ^17-?7Z{pRHEF%CUm6&GQx)Nms{N6d$yj|gFV{0<{cZt2 z26|N`13QC$d=m7N0UZEqS*odukXQv^S2D&rd!_(}&SG5YPN9Cv>>v?s^Oq+P>Z~%n z?mAQ9%_;@3NiHzoPJ!K*1ndz722=BKlMFB)fZ<>cghCw-1E6?+N2I<;d3wB6=PDrF zj~iED0ObHswgCDSXH*={F5CglP;glQXV&3DTC1U5=9SvGiqN@_iDz@;gaGB(&#Ldf zu|O*70&@7xVHehn%LLkS@iX~764GC?{nE3!Y1Bf^`7({n%t}9Xh@+3}0GOclg&&?P z%itrn*xErquBCKtN%yGxn(&xPu$w>Y z&l*T`E3GNR0~Ti120Qy|pvda9rv*uW<&XeCxrOKD#-mj&*u*SGU+pbJ$(5oaP}X)t zYZ?F2-qKUe^z>EiUmX*;X)LjC8e`fCJc*}0@gWYa-m&t`hxph#2H+N>8Ufe28^Kl0 zZU)cd)CF@}9JGoXgMD6W`wPN!HgQZA#s0W}knNN@3iaY<29z?zwY;_#J^;f8udG;a zL@rH#U@N`MF$->kETVQBeY-?xbTiTeVc>Nk-o$)TyInhiGoS;I_K$ENSKJ%#`_ zm5YOY_^RE+#WW|bty6Z~EYpT+{KY?yjyD!^a4H(H_%{m;7cWM86lr6o@uAwbV|l#{ zmmdyt^*ul3e>Eq5V*&E8b1?EaN1^rhH@I^L`mJL?M{?2VZitms8jPMe;|fU0Ug7df zl0CM+Az40WmjvS)!Z1{u;L2?v+ARd@MFIO`o(-deM*yZM_~oq}oXCJuLy(~?`(lq! zV{w)XUomm$ot^ia={hb;g6o`ZP?zr{^}s_kvEZY z_=Y8>YmR+qq_3!gAI4clBv3>R_Fj2-W{8@1SQ&v=gFkT31^3Ee7SKeSB*$m~F4DGA zH@zC#%Tq+{4ecd-18<<(TOu7VG!jYOG_8uodY_kLAy2pPuz=zi6dEa!UF6tFRzCAe(d9F}Q^(;P!zqP|-Bb=GCr zfJQ_4V2pn1-9q`nJ|Q2toyOo;j%UCr)-7%s!v}C%@dtlzD=WO?t(6RmCvSgbqFobe zX&(_B*{ld^u?y0{v8{0P-L3uF-<;_CTLb`s`6>98IHBj4ib& zi!r+v-3})w8Pjj}N2kV}RGp5SsK!9@K$xErk!M0OP!YtuK-DNq7-)(E1J@b)OvmCt z#~C17ARzsni(DA{85nVc&6%74EN{91Urh0xLf7-j1qmm;>Bsbg5}TghTftv#@>e`t z+ybQd(G#5U0@0FQfV-0?O@}3bI}qSFq4Mp(L8N0np?Jdkz`TJrKaTYVCxaS>V1|gH zhM6G~oEajKGDEh~k|aK*u+!=~rEtD6Q;I$qIpM?E5RQ=pjM*v=zTYMLm?;gx!tcwy zv}ozPm@8)!M26p2;Bw9E#lT==VC1_ACW)Tg$D>rhI-@f<5(B#>6Neutg7OFod)Kx@ z`2!S8Co;zkBFR?G&hy+b7?84n!5l2z?Srr$W??Gzi#ot%;V#= z3p>f>M>~TC_FkN41})1WAvn#kidzyuc0Do(A9lCj*8yH41*|D#kf>WNL;FD&*jNO4mdDjJ|~N_WR)3%o1Zfwv1C0X zvk9}?+*fo~uRmZ<+|%lXt(vZ0=b~_Y^%}<2D~p$0+96+S8;HGB*9B-@hAu!wT3@&F z)?K~d+wJ=E-L1O*l*p=cZKkvS{1tLatUo1~+0$hGDZ%V~kh`ed#t?np~memd->;*@71jNFRBL#A|q$95S0kL9PL1CYN7^y%;y zepsGUD|h`SjC9wZ4|&(mlw~>Q*Y)QcS$}TuM=vt#51!kWwP%C<sG zpDUIBVC6AO)lu(*HMF1?_Cpt9TlELomGTUTm#8h++s>9JAH($EN`Hk+kku`|N5G<58gn>%llsbuCXzysHFM~HL`VAG_1TpCJt z3e52xsld_|SSeaIO_zp}U%WK@tf2vGF2%++nKg&kRupi|LS^=s=i{ieWR>4iy#_3d zk3Ry`M5m0TusN$K1xd6p#-a{xjANsH<_O#d)8OEhXF`+Nx;w@?Xg1@>l5daFEJlF9 zn7t9hJfs!{Gr;80n87y^(!B}^@~Y_IJ8|K{4l@E1n!ESG3m7v)vlN#}RG3kv38l_q z#2Ff)rvquwLx_nBn~eN1o3f9biGEyNdy01GY?_sR)(;REjadyz?F4zIjY6I#`-F2z z&(VpX{AT-%{t`g+6O*viGBz6e+@1+ZgvxkApIgQ4k>YlL^hAr`BD1%I|5|Y@S$+*B ziHt#pJq?9r3_=rV;=Obv2ruf|)8nKz3&yOUOj!k^(DLQhqhiUeC!ZgcEm04zSw_-neSU>JTZb7Yv&^bEyXe=CH z;_z3DZcO~#erUM%Hv?#)ZLobfB1puDK=Q2&CH==^Z|Z%8j`morAZR}tJW^sfk5he^nE?I=Voz2gqalrtWJD*9@8-H zJmk}oLLaBcUI9ZmxZgyKD(nymdoCy_(Kx6cj?wIM&*A9T@i#VMF>kK}pgNHiJ4_F1 zFy<)JPo;ip@c}@l#k_~_FFN>8hyC=KvfE4ln6Fbrim~K+XJL+V!STnut2G~;pNqZo zpnavBq}4O6r~w3t+|*Y@>9#56t=Bv>kDk4cWUpfa(y0=Rd0Y3>N6*JfK~v}j07H&S z2%2Kvhqcx^Q6ci}r`O>V0@Km}xG_hdqOCw$DX=Q}@Ov6r4kDtB#9Dn=NWG2$#A(O( zLfN3z3jJgOqa(|G_$c}q z3e!FWZ6QqYs6I1`Nu|90eod}eZKQt!&-h}t?mZN@I50SsG4BZUO)5oiFd~&M!q)7i z2|FZ#SwF=X0HKOuQqQct31uoohH6rRx!UL@KBi{6VD1K(T0d?@OycFVVB{F8?f4?K zKax+(gGQo6l)V+J4xm$7Jg`AVE`0_}9)VRRqY8e+qHR8Ch5d|r_dSaZh_>LMVXwJa z3N6?q6yhDINic>>vq#QB5*8Q+0B8ZN?x;B2ONp+*CtdV5!15l@XzyjuOoCR&8HJ<{ z%rpDCDuu=Xpk;x53bZ##x75Q$>uNxeyx-wnDYOj63aOX(6(#H_Q)Aw(>_s%1iQ+Nu zN7|AofyKP%RiSaf`tPbzNXi^z^67xP|lGx&y_i}&-z-AyL=B+hJ>}$+>rV#x9=Dolq5uvb0Q-Dw)B5;yPB8l5qFA-cvn;CeMfuJ?mi|os& zy>zBG=HNl#x4;Ld5t>#nY=rZhmU`7Xl{L~Yk>xYoTt`Yo#U+@jM1HW)rjt7zh^plc zh!X2}NwdO>5vF+k`v1cne5axxK%Sr|Gl{P-A+0YB;ITY>$$@h6uTRQ$i?hxrh{a&!3E?A@SJ{VSin`3e z@R9TjXQ8k||K8D9n@}0~mi><#WdIyv-&d1_Jje3v24XklDO{AqK1wEH)FJkD!U2@n ztz>AMbRNjm>6oq1%+yiB2DE%|Aw%ps0YL13N1WI%df$M}DVo}dUdFsHYQ^63wMLn& zd!R->=1V?3TY0f!JzTlL^P^|`==2cLT*e9@od^d$5fO5OzcLZO4ko*J+in7 z;MJ{yBvbMRX|YJE@lQVJO85$xWgZ!24y=IKUab4zEOi`ZSs~BU3PT++@6m*S>U4H& zMFIjkJNDPQO^;tT8Fe-f)<)`V?leit1HMHFFq8*;V3KrRzN<+(FJCiBI?->@nsuT- zX_9mqeN;>7ia5_CDd(80Ny<5{H%YpV@1#nS4t8 zd76|bBfc8~o+V-8u)47#Z$(R3yfDi8$`6!z*o$s*@rTDh z*MPR{z2P9zUlnG?oc29~Sb}`iF`+Q__tIYbCI~(_^a}ocf}gXhhO-}y4#QOxgsU$~ z&#Wg1Csg?FicIvIQXZU9PQi0+!lNoKrU16FJV>DqoS);NNeFxlkHa3X0cB;6SI-}> zo{;Z(bDXW&sHg)`X;3S(0Pm_t(=Y<|W55KuS=WkG#FgS>-$m?1A7VPnW#hvJYB;)F zqCFGz+h=)}j-z>@;}4*##1}dqB0vm@e(Gj2q=Fg`5jgK7prNOAJ zj(C;hjdO2+;T~DK7!z7$Y1ln%68ndvGfw)Qs zo-dNUFC0UN?Z+F8{UqX|@U!$nulC=YjGP0@_LKvT^6Kke##>3w>Vrpnz{1f#`?L4B zlv#BRPScJ<)9RC(whP*(Gf)*~@M09?fA~p&icdl#K067Oy=N7z48(iC3sro%2XrhV zf1})h;-6)Rq5N$c1PqYBQO=Mkf3xpw-4UyGWfYairIq7V;gy+f-~OX-+N$-s=y`?~ zWvQJL51Kd}mcz)2KAO%gI*($mwGeaFqy6$`$9Bku4xyuz$mK8D^9I1fZ}CeYR5aoO z$XjmCCucs?Uo{I0Si0XDNP*@$oX4KV4VIYq!QI67!VE{x^sY3Zcr(0DY{B0)xhCu# za{?Aoyz^i`bP^nf7r!)z;G+}q{KH23yA|9Xn%4^8hBxW8fbY4yk}YP+_3*vV}7r^BS(XQi|o&sjoZ>>R7L>_+UEX05PKX0z5Qt{yI8on=}lrhw|?)+(-I zsLzAH5n5-4))}*}N1Z@Y?Byz;s~wYz-Hq8_0EO+Jv)aRPpQda74!}(!yhosQ-Qv{M z{kS}Eycw5tt!wkk;a5%M`fA^_t*iQ$Pptand&IeeRGczMho=nEjl*St zz)f_33fSUD6Q=OC-7$r?uIgPrq3V+#74is~Lv-HqGoOcehOp2yXs0|O=2$a6UafE#2c~LWmJU;?{c9{ITUTX~;S&ST6Gy9Oir0}kh0T5> zf#TDL3&m%W;#|h~SP9>f4n|dUh91H?EBxl*Yv8?lSt@9_y=3lr2Agu5Vt#dae zo1FIR9I{z+yhAoebe+(LN>!f>V)s1NvJ@FA{hKo6lu3PqR=2`#g*QA*>fuT>J|UXB zD={(bW8mv~>nb1VX2pL)H$&L&2NUS#&7nd!Ii#D-|0UhbAuN}PlT+@TZVIu#kJHUK zluo3Z9_Qm&a}$GCzb5WS6)9G|P-&c}`}T z%Q0l_ey!NkUxg?hVBk-c_ zU*%!@<9izy|Ec@3OR#^y`mgQ3Hf8-!A?*i_GVM=C`vcLtTb+hq4mq!j`0=~U{kYz* zu>EZGpAx7zL)zX%rDi>9*qM_sf7MM`Ui#wACFrDAu38V_5N#ZL`6ETRK2Rjr2Wom@ zf186C+)pTy`w2BgIf(KhssvG!xI?cg@*%1eQDumlsZph#p>ryc=#R{)<)>-R0(>M* z;*ngh$%{3a=IENtcqBLCgVLfSZkj{=gC;W`$*uSxxr3jkIh~BeUya7IKe8V`&)j!m zdcrja%@sdBbltp&PTpnZiwB$gE>1nTp2C`OC#6*&|BmgGRRYH6RgDbn4Endu^pS<) zEI*fMg!{YG&p97x#3gD!43w%T}Zn zrry)>TdOCYo#^g&q5Un6DRaKug!{9eL(3L=4xPCG`tafJJNoc?Xr%(U%M+PW6M|mV z`VJ<^3xif0PMr<75K>VYu>4u63h~~a+poz&xvH7mjfbqv_C6tNJvFBJSe3wY)9>cS zLk0S>(S zkCdU)KI!xtQb}DiV@cgcOhV|6jIN8Aq?k;bi_E?QIIu4^GILXyFo?!AVU|Xt)d?Hr z+7JC8USf6=CJBE@2(C8_vwL@J<;)R`zQlP5tE7f20-jr`yI@DI@Oy6EafN5bhnbAs zW;__YGiGgIspHO&a_B<>%N%cpS70+ul^og!|9tAt@D0~LAFOlOfoNT&4BZC%N{AM4 z#)EG=yzR6Qr2=rz=c#@ezs58MBE@O=gBe_cvpxj!nZQU*M5pV&#|C6qZc$zZb(*5I zgLjphGr9D=?zf_(CCW(dMT{p8&##c^@?ObZj4xy*q`|nXynC3rj zLTQC3-rzPEWW<)1p%eD~fJZTKqy6L0+-L7z*H` zkQSVRto|tQ7zr=HnD9FL>;gX&ejK1kSgS~HI*(1#NH;A{s`t)1k`RKqr7>?d>s9qv z2)Zwm9|jRnP{h2wnQC%=79&227g{rC!k1-f(DF?Sj(iQ%i1o(28E9uMUY{B-4oRf+ z52lBj;X{NZ`c3?xzlIl}8|q{#nY@~4?r1jH9`ki2NZ=HZ#u1L z+a_l|z~4dxz2g>bYhC$8AJ3B48e4lu2W9nMJN~ehMU{>D#WlUgTd%>0>mB4QTGQ)@ z_G6R$UG92$3;^pFe-MIKyK%iJ;6knTy|_XL%b7huAUGQ};Q9r*OYJ_qmehzFAB|() z2S07W-zIf<&}bYUAZn7!$!fC2|4G``K@xO$FkQ_6b zRBtcb+w_xqIRGu=KQj&FQU@|(Q(D+hTX<8xp?G^L0ns6ZOcX5`rEWH*C`f^HOBH}j znh@T694$&f{91OT5Y9xs{AzCgyK6yL%iM@LHgUv;^dUZ$QP=uMB$U1jr4@r%Ib{#L1~>&V;f7TbJYUc7Hkh3o`!m+S zE8$8!N!B)uHQ-IG7jVY6K~2xl?nr>v(VMLU^)(gO3#{TAg4&b_sHw%t1=R{rb(zi(8l@cxre}ck^x^>Q4}gKl6#ik6 zjPEQIS;CzhKwWkgI6v#oVs)=XMtI712!+D%|M?tz3J7DpbX&i)Wn9b?wZfN15wPbd@X5@*4KJDO`&WG2^RQ&Lm75et_;8*8RpieAA)gtUzQox;&d*W&w_b zXRaShZv32p6`dugcO~Ld%w?zRYtzsf+}fmyQx=U0fH&&^E7JlZ#{?NToPSs)_&0n{MNzw(K0e5LuL>9?N^wnAUQS7y=mY#Iu} zLe1`g)f2yc9sdEf17(M$RGi(Uin`5|` z1r`X4Iz?$=bNPXO7~By=)pEf*IVQv4m>drKnhkxW3=H$6vwoD>6N%D)tB&2p(oMfb zcJ1JFj-!(%sNf6d^l3y<*q_iszqQT3^0Rb*AGqb@NgO+9ydUmeei(%ci?(yuS~0K) zT*TKafUSfdL&z#p^FNoz{I@0KFOvKvJ>*Y6l=;s{$bYirp9J?_-8ZI{2bu(~pN2V$PnLdi^pme2pMFa8Q>vdbd_vXz?=C<*=$ZkHeF-gNxox=stx!wIW+2OK)QYzXTkzhbfa^)kPo2r#dM6fX zpZ(QAvW%r4M2p=>u}=h~(Pqr9n78O#Sz5S5qUj3!Zv9(%j3%E9&`9#5{+Ra&t*4F| z1@JkLlyhUICHtXm@R6;iR*D}nwJN8n6;>-4TKUiy4vQFC-SvM`Q^*(dt}~Ug>Dd1v z1gLzzGv;j|RMXLO^mml#hhUXrWM1;k>mL}oq8v-|&BqAJkYzlmn5K^B(yf>9fLsSa<*Jv-i>xj>{sXjm>eFlG7-Z8JAn5|JCV=HPIa_q zAB)r?yzo?yRE)zzf+C(x>b{n9;2?7jybHk|T-VP)639Y!zMzg4G{YaASmU=s4fcc! z`{Hqt+B8qNFR+NHnm|)At4hNc2xHt&9nSg?K8&=4UH$x5qzq&I-~l2s&hgdTk?wRb z^~t!VcUk0az}AAy-roEjsnx2p**RG+(kWbkT*-<`hZT_L_O@?0@r&T46b0Kd{Z-rd zyYX1FUbL;3L?Ac+E6x}>IO$n5%+B#R+J+a8Qr1TMsFgcl`!D>1@GwVm^25&?w}TyLF{@Nmf~&ch`~A&Cy%>q!ru@H?0V$}BnE z!6i506S59*SYM7zpc6aD`fMk1flQq|M1q-AN^$H1c^H|TTgrc?DJwj6djc!uEU*f6$ z0d1j~J>ZC$J&qd+Y>oii#ORrLD+>3W-?1a7vn8-{$6^Mb@R34)tH?MhaW&o)fruRPGL-~_+HLPLvb zr04?+F zgm4-T)zfdNT$`$~-`N|ROxQ?ZVKbx)mq51f2QIweMk}+)n(ds2h)U;dG)nkb$UPf% zVS})t(Y^kr|Hzn`wp@U=K#P-242Iv_fo-tj86GO@(fwZ4jbisiT-(2{5e5praI}q5 zRuun=!0d8>gn*1(B}qVL4hFbza-okqu!$((+7|Ig+`ecSV5|Nj^*$5~lE|`hIEk$E zJzsZNRyM{^M84k!t#9bpCBJw~jIV!Aa$awVOz9L6-Cdt2aj`oP>|q(a7D=G>=N0z& zTs+}&OD^`Qac9?Yp(nN)lzZ-%Aor~8M&22+R%5uDX{Yz$m#(0*d{m$?lv$n^ii{0K zZp}2GSv+W~c)~7(icuHx-AXB1k9b%P;npMhpG+q)B&V-pR31GWD ziW$>jvPe!K&z<<_(8jMq#zqW!%sUSQg}JCcf58O`Fu&V$dTNFP$?kbd2L(7%Mlc#| zB+vhXqyYv=hJ$}fmu4f2eeeI_zPCn~YU`SOy!HgI(S!H_*J^_46rVbY+?EA7WOFbw zyM@~`)cs;R`9!g_xD=OQkA{3@wl59aGwixWxyBP+~;3tj95cA#)5NvP` zLTO-m_(O5iL$>>3W^l8QL&&;yrr$cZG-#co;z{l&uOSv(*(4p=Np<;(weE2DG zN8$(B%d22-60y6axI6tuv;-Y!;fIUu7MWD&vuW}Q9Rw3vE2*7s>Y>21ATqoO0E)+a z6^uM*;}QGj@7>&IZ!S(6)bE5tr9H^2Kc*x#G$3(Y{&5 zy&H=TYpz_GUsTiIdIRFgcaz1FuDpMj%Y(DA0qU;SXXolQE%;vjZeO(2l}(Pv-5N@U z{+;Q_CKuw7!3O*_sz7m}irqqpn&wI-*N`#9CvSpia-sdS3#kTB7T~X5A-ST-6iBXU zvIh5du;|s;S2`eYj)F6-=M*`<;j*eV7Vi-qh4jSovnmr^A zxWIjVsKh`na3K3rAQv@o4wByGb_gbn{d$HYne1d`S$=FcqnvFiMKKS27zt)V&(iGY zAkoAez^?=M5`x)fvE&2f&SrtRaf>VybrgPxgv^K~rJ5ealBEd{ex(rTxhYXBxf9o* z;xWe5zwK+V8b02{T~mn&*}&*PN4S!h2yU7q7wak@`be6t>*YcNZYCH{rGYk$(CP)+ zPYWd1zi4*Gg-)ke~fLH^AE6^e`s$wN+cq;+YJApw$n&v5QafO8b!#M$v*{sp$X z0;ei^W5r8Q;x@t)ZbE^8g~ze*{uQHdfwRk`tVj-tn^8DHVG{ z)^^+($Agua+l%ZBTtkN^pGCMU-{iRg8|01f0q(ap^R|5PBE3tuC}>rz2t{*;1PWJ| z?fJ7AwaAtO@!*N`kqXUkCJCpj8iB0qlV)O{PD1Xg;Xy;2y4Lo z)KPf4-`bt#g708y#hGWLoxY44Becj`Qi&mLleacffO^6MffEHhad!az$V-Nirl#Gn62&Q=;p>C9?;xV602r^&X!Ny7=+0h zTXQ4K?G)gB*d(AdE;WVjvrGR&v{l@PhCV_G>k%&tJ+5*+Zh?(ta0|qto;s-Nd-0(p zG4fa%TosV}oP^_8;)9Kcq?k8*?l{)WOncN99Q@gf+A=u$nDYBL5nGuh89{goKHWvo z;Y3j5a7ED9E`s0fL|n*l3@N)jEzK zlvV_t^zZ)?LGpm4XD-|f0@1|@k4SoM-@!vb%4LsXfefx;Trw{afJztvoyRVMijR2*!8@DSUL# z;AG_gCE>(VeIh!NLO7mqp7bu6cs$`@@mTVT*^AnH!>f-qu}SDibaiGm#Z8biAg$W& zhbuMQquH;^E2JCkk3T1xz*<5c@|71DoU@v&BF;}>(vWmIQ~$|1JX>YLCQz2?*)-ONaa;Qt5hLCwf!Gv}!72Rp z+1v%+V?5`4ISpI-V$YIR`s=0f5%kLZ$NwsTrlHR{pad$D#IP_Jy&i4~`UT*vK;>6= zvPu;oAs#(hexhKE1&bp5^9|dA9vqv3|6F<)|NJMH~r?Q2Z zHw5I0T<29B3e(y_+Vp)8JI-W>9Glr|rN_-N@40SvngFoYz>1}}FPK~ud_FC7+^w17 zBH}6NxntfxK)SL%VBuj#o^()m0ZJH+#HxQ0b0WPep!AA*-#mLQE^gsniBmwaaq$)1 zI7IgFZC#U9?ydT43#-IIh7E!rg7-m5NXjhVr|Pq9nuO-#J}#RX4NZgm2kRoU^kwPq zO=&4UPrJim_=g^G z=vnqz=8WAv%eG2QK%$~y7TQ~jCmV0dL6T`9(eMD<7By&C1Dp_zKB94jcEb!pp_Jdc zCZ~Mws?RoSk_^HH0)T^1gVI3a$w1=fzCxYP4_4|lxV-yVMNof(AeY{r{|Dt?tw7I! z_Cp1imzk^sO;#6|FS}U>G0DZ`UZaRf?>jwX@>icEV-n&F`$Wvv9%vDG95iDXkTuA~ z;jyS21N_;*8G9q1u7iNU3rGkK0>dOWu@Hy#P{$>B6GptdPZhLYceuPe2p-W=$ZJ23kl(}he6{qkT#L9n-CxF zoDhW{pg}GQGYxqTlajbwWQeblB|&_kzP3@|ZU#+-_z5%(fTccZ(5wmVV;mYx%RzD+ zO#=W0Xu<+kn$~`pP~eJq-b&_m@wB^}x3U)z)y?X0jcD{Q|7*`E3vcdd`%GkyVPP?F26pTTiF5kU6ol7x~-tOuDI{I{CP)cU4~tE01k(&_Z*=$ z-b`&pWYLG0C1ggBO;%qeoIFZ3i@k9) zXd`Ihaq>otHeGlSH97W6G)2HVFV>E1K+L-y1M82T4Xco7Cah`g`Ot8qdj5t)6Mo;) zieAE|E^7RM=$P2xjIawpfCqck?0k=gBhY|-OU!#P^WktTqT{Id$xQ5uU^|Cm_87EH zPNwHjjfDZThmt?~qZUO9R9}^#&5Z))ZbgQS>ifVUV6-3;{2y`H{T4Tm+T$a9i9Mdg zeoBvD9|&I?iUvG@LI7!E3vePKC!!~s1BA!CuM-`~7<&3GRvgFBbZBdmF$AcJo@2F* zik<_cjZmYZ-k5i9O{&H4z%JG#v7PX@rb#qPj(NY-E*qr&5u6Ip6{&BTB*o1-gplNu z?kq7$#4zp;YbnSe5qN<4;zO}_28V)ZfBMM8frt{SJ$GEVt{Z zA1l?vm6sWC9h2XW?OMS>-BzF|dK9>iSJ1AV(Eh!{x*^}xF|2FV8M9D&J6(nh`k{-m zFfBgq8z;5qQHey+f*b2f6pMi~RCKowGf!#2FIdcD12jS@$PmS1=*&`xqHZIxA18__ zuxIE(6gs>IXh(E-2OA`6g&CUEjF!c`-^`7LN`P}sDV@4L1*lYZjY(39Cf`Rhl%h+R)V55Bf)q6Eh(!GA zppea|DN+)fxqL%1zK*y*6<^9`v>RKrLE4S?5Wr{&6S$WnA=`-6%n~Q-;)G#;>+mGH zV@K@g$RAuD6J{I;TQPGefFjMz;Tc-D_V^;HTlfq++*Fv@VUD2^)Ks9v5ROt=v_$6l zyPy&iuh=mJHI>*%<}%~oOh(WksMos?lw#*CK|)lq^NMM_Qq2-gQmT2>Bq^;uph-$= zb2UkDda{r*m&-C!K+$rw7O0h;Of*SKfgUL$6xg;**eW1#5gJNdpE)uSOL4L|4vIL*5;A6cH)O)N$~-WITO+Zz`TZ zze*i12rdkDJZ$=))UiO5lsc+Rl2XTPO;YNZrb$8_xk8sj?OCRPQb$k=D0Libl9W2W zkwI1Jc#uoJ@6bfV#0esgTbAUGp7=&`N7K7>G?5^hq;aONef z#dJDsSdiW8gr13VHo(P+vPm(mMEPd~xF^cOD#&{^(g1t)A&EVX6Xml&M|VV-%L;T2 z)PXWA>sg{Bd93bfPR7vrc!x6?LoQM7s}0qe+g}=rt(+`$eKbjl@@vyQB}!Xx7geJC znJGlF{u%Rh!**m2zpW?04 zWTYpy<&WBHZOc6fIAj?T>LvzfA-1^Y1ilN+69FyrTTv~EOiu`x7#OlY4k4g=EuMcU ze;)G|PJeS&^PD87tI1O@qV!qhwe%;HWiBzRuzAWF_8Agp3$B6A%d-z+^C<+T=$8)$ ziTpNIcneu}(E4W}a$#mDa$3%L5Zji>TJoJ^1`>#>*GsEcAbNIAWkFi`F@dNx2|^?L z1x|V9L#J@OsLowXq(lkp#!1`MCwcBv7D4 z3SeiJ2BCBgPg9USKZ77Vglt`vS)K#m9scM%DG>7>AgG>4!w7831|bBOHhm!?{p5R2 z(Y%;9&E!~!mc_hZU|NaO8-V$dVAxRjf0fxbFV`pQ@#~tYSNYz|!7jzTOHGb^v=j1P zhNumEFt?P*nzNcXo9f8aIX*DX!I^(N4r$q<8Auo@Ak2pj0a58s(~vSUhq8Nw=4*&s zXM}FmkY7X7G*qIYvothGLnmmcR6_@AXqtwyG*qUcJ89b)nNx`nTY(RHv(IXw-Smn3 zGf|ZkpdXNtJ?tKbgyu>cFZK6D%MKSP)uScKnk((ql<%ar>d_Kq&6T!mO0!9kC~L0t zLsRZGDH3JPl|E_8WhO8ESZ^iR{}=N zdj$fjT&ZD)K;GBBNg+=U$`!zK-ebh0oGU@n2dyIYt&@io{jr1QBABd@@+DplpYvrY z_tI8+zlV%?r8>6+F~!zLAzGTjq{bfsnWJxbE3jZZe&=9PjQ1>gHn&+yR_D^jpT|$W zxX9-gkH&*tcg>WuN*T_jf5}}Sn925AW9buXKVJ6+^_0I2>Zw{qH((WCQdCstw@6{4 z0IbfXn^e!x>fAK!;rQh`!!J!+IrG$w>LE&<^K$bMjr+^5vGZ8eF?YG^sQous5NNU) zzOpg85-GRMQ9#hWxslXOsm#3G7Mb7aK-jB3_7^>2v}Sw<6*06JV4-i(YUfKCx3-UI z~c>eo?garjfuUGi853Ug@eev}CK&0>Mx z2@a4*q}zw)vsJ(hL+m?oE`2#e#|J=IPa!xvzPy;#V*dqVcK@7eN#R^+AI{Aaoy2PE z>=zDk`hryW&n5 zT{;_v@J)Cq&oh_YEqGNENifJ)G7R+sWL75WE{M@}wvt*+%-iw`kxd~MW-({LeKp)n z;&Kuv09XT*HZmH@e9kvxqoX>GAzr%czJ<~*T)o3vw{T7vXHm*W*1VcT_c1mOjZnb`_Qabd@;PQ^A)gZ0qbo+90z1XE4db?1#^f(02Q+kU~9z{(q*h6 zjAFO!F_0EHyjSzIA&-(I(qmrE3+C2t6OSA~^0EKN+uOj`J!JpmsU!rgdy7lz@v6{J zR;Y(mlzZEx{oL&hK}#sxc&f6j(1et#v`IAa=_N~TYqwTd4_%6)Dy2xZl2F=Mi%<{o zuuQ(e2D@5|-v9f3Wq=FH5QGiT16Idg`oCBUxQ^BYngSSTV9 zyAXw**Bx9S)jIj$zXQqG1=M`uDUJJd4mMam9+>Gw+u5fzmrDB#A@MQHJ6YIXWth=N zWxt_g0pU~6pd^%BdJVsikvVH*0mtI@p-YSyG2xdZ*WgAcuTr#Fm$gYYV}t@rw}~)9 z!BXA@Ba|QUp5J2>_F+=-8vhoW_>vX;olSy`n?{t*&58w*(6If=6mgYkGEOQ+VHiGzxWeSS`4L1f7*T9Bvc~%3E$8ZV4l_jV{eXtgzV!~1rR+_NhgbgNKWj0VY+VlvLd z5H$jlPS}wNr0sjz58g2reg^Y)_~wYgsezi0y(!_br@Xp6T8yc6&wXMR4fcU=(PR%j z(|lL0hR2(B@p#ih2RN_-T#!}IYG}hZK`z@wacQexbLKjXx?>YN?WOdTu01>>;h>I9 z(_NYPEYA8uK(R|9C2TTAx|AWggoF-i@{nIp!(`Akq6RfOVOJzL9!hlgRYScj@L)bt zJw3%|fTO9k_=>gz+rcYJr%7P%6SE2S0mJ zPTpGI&9gBhtyFACJ-_DtQHHvs< z^0|l#EBh~+M8JBsj$^Xk9O{I_k>Kbd$?5JRzhMT=-1ru9xj4guO6%-F79_zCsG@&N z{g-MgGp;M1=k<|PAJ-=#rHQyd;xNh?xMrjMw>78Y;qR?8%IzSiS)Pi=pkfa$UU(XP zM29NbaVjrSopK#Al<0J8*&)oxRvSNMI)d9!s=-bJ#vF#XAd3?wiIk+8 zei`~kta1*5?p&owiIa<@By$hr1-?!oQunndY#-up@xUDexYB=3P1BY`Z5m%o1xju- z?^EC0=V2cs5)f>BLMdgZ6yi1MXx^F`$FtKcBLo9VhzE{ASqP}D@j&}iARUSfY^+PE zyWo4c@)QlEs2?C-p{NFOhXK-<1mtC;in)D@-li2w@E^ z54`g^I)V-m#p=nAx8U8q1Z|WUkPZC!FPIfa?T{b#G{aKL_lZy*ctznxIG9+56Jt!qnmx2typYW z&`a3aFO#q{pe@l!(ndSN$%&*G{H{u8cm@tY6s!jGpHr}qpjxh)Xl%Iktx5Xcj zPd&R7Lpb2;FIA@uFNcNpkRt@f9{__o5~v0p_I{LEDO~mr4OuwJVS>+@EYneYeb*S% z2EK_789oKlIW}hkTwd+Yt4imlDh{Z(Z5my?j)v`)-yEp)-Dt zr!RN>df$QjA1g3ae*ZI+tn@`eta`UTDwU53pl!G(0wv{6Y^5)sp7$uvBoRN(c-WD) zPo0i@|ADt7o4p+wDIEbZZBYM&L9b}Vpo*CoQXkhObwJ;D_sAE$2yl$k_%Buv(5$Qw z_p+MKup!0P(aM|PFWa9JiClvhY*vkCpHp+X_BG^67NbA5u}w=iiwtcFfEV$bnua$f zI_J#nLCwE}d6Uyu0+nWrrSkoTxK9 z^b|(6y+gNFI@%t~_xS1_dv#nGN!qLTx-ha%J@NFmw(C5&#p&hKc>mg{2&EzZy z)t(5ckW4aVVr);mM}jRFX4N`1qy=POcLQ$bz*ialOW|?%ox!r)`^df(#~y_?H_+!3+ux#FT$#9hH?GQ&OZYzW}&6z;b$_F>;pTp%s=<6oxFKZsGEKjKGd;ia{!K@{3eH!c#% zx?Z(9h~nihN9?u;X7IW1Z;6LjLIe`81X?}HTGSJG8_X7m2i%n~-U!f9rc+ss?~!DcSs^VvE+2lsAhMSl%#Xx}D2 z_m_s=T*(H3EZaD|yhw$?7dc1<|JHt*dy>4*v-S3#_pl)LRCoM!CFM}S_eBC@NJl$GnIz3X%K>^ zqkSET_SNyHJJSc;zAKgp{?%4~0&a8iKx6 zx%1_FJTUG7$UCM)HcD_s$T49qLhT1@=A)?0(Xr!X2p=F*PDs@U-z;a@%cUt%gltMA z4=esQ`>8R;27(gpWANmBUsQ918&XlDb3f!~QA7sX%c6LKe{1Y_>aShyiY^Qtpv;)au!lL7`uTkZtQ8$ep&R4LZ6Qb_1>XvCuM7LC+bOk- z#$ZE8@!k3_z$a`rSY5Z9z&0-yV_s2?!AA~<`m-M&DYfgtS&+pMlm;|`QlZSip(X0$ zaXc%-t_@4yAsh98GZo za}9D!ArZ#|`OZg;`JX{}3CxecN1Q?`bjNczFI}!4lH6tHal8DGufHz8d{19p77K)9 z-s{n2j|GBs^5~tCI(hqjx~aO8vk(&u=uVcKkGhjnosYVcnMs`-i;sn{u&7>+UWRe3 z-tXzW3}^S7pna%Gyr=VPBYYUljQ91gCZEph!G-A!2Ukw#g%BVahTiSbV>zAIU-i`I z*q*qf>9+3KUrgh5&uSP0cP4_UYhh)*Pv@oKC$QmK{FL}h?cURQX(dQe0Le*3s`Y|r zzt-H(>AVm#x}GD{^caR$1Zv%UnZCz>UY*nVOmJ)U14fJrQbx!^HXEj;Y4jRAG)A_zy=zARP@|?~K?ohZMxQ++1h1krvz@L_ZtT8tcv94VbeZ-Q$`|&v5LRmJe z5+P6L&Db(o&2BOW^ZaNI<|V&d=lhGg!0A`gEobooEGn zm2FA$3>ESCQd{?~GK>kkE#X%|X{Fip@5)GzO}`Kimgp3=NFU2%tKZyXtKa)re%Mgt zhhm2!&N}tV1Brb;Av$cBy~$yFb9q;rF^$X199*^|vzj`S!~G&8N9*p- z64L`fU1AE71gPaH<^gx5f!ZJ+MPavCZ&KZnI|%)tfj|TrhQ!FF>eQN1NF^phzyL!F zp|%Hj{eDn}Bdd7r0hkqJE%pFKrdSC=+5=2S7_q;nKqVV5Onsuy>mGXy?;KjtNAsjI z^<8&@v=J;ON{0!%O$eb!()}h3nlQ(NA%w(R5yE`vKtRj{mFTJ;a|auqQ!r4l%PR}H zPuUsSmv)%um78604*@g`H$HHgqv5D9hn(;Mv@?b4ku$_q+*niVpedlomMR(SbHF!` z(X=RMK!5Jnpo;;TOSx`0%x~2DqL$EF#%hr?I5?TihcJjR+z33Pmw~$1^duK?r1}-n zIO-zo!V*dapal+^TJb0)MbWrZ*)iRHU8%hH4+rnWjKW* z5P&xh)Osifz|H+hr-AeE%S&*!AU;FqAD&Qt@kiFL~0 zXK~(E-KZUBPEMiP`z`PqFFn2V7d`Mlpip9r7i6`fsQNE&;@a(I-;jwU4sW&zX@KRN zfduX|!^}+T?iMr5jB%J3d53w!BOGQrPz_;aRviMfdni&EDL3I#M`3>NGH^0ZR#?)sYJHgNqG5kxgb_kMt`5WzlHv7+gqfMc# zdI6-LK-*?w7HG@BCx(86Vcyo{?6^U$n;0|PY0U<0EJC!kd(pP&;Uu*E9ULEg%ACe} z(I%z)McWbVuR+`7doK6Xx*h&eYBv>lA(h<>*< zVuN>4f=H&dv+n8}X&IfyTaYU zIJsmI2@=OTq>EgFA|h%r8Sm91nq&*2lTTo>R&3~m1CZd@f?#Pwed>qU``?wDCv5*iaIG(A>C*mUZ~NbWz-_;N{ygJ_ z9pQ`kvZQX{ty+NbtnxtD_P-c?M-;3$sqR>vUV_Tkee zZy%<6`;eLF1DCDC!by#H4sy5R8}%(AW8L_TcWrYF_~NF<|5j0Qvj=JopbFh;GJfoj zAka9@1^bqE^SWo8>1-A{cY#+$bJqGRgT815;vyN*-NJ}SD>uAIvk^n;96(nHd}5y0 zW+YqNj8Num&!NFcIkYC#S(Vc1#?1&)W~V(hsB4E~Hd^)o=EGk-^Wn5b0F3S51xOQP zk*)M#;~KJ3_F&};UP`I(Qp(r&k=l*r$h{ndel17ZWElnTdas_@x~a`znpk}t0K3|F zpz;=|qhJTJ8+2h=k}?e`So)prI!Ev>>Ge8--^*FME?&q@6U_TMp9AL1Kttz84R|pH z&|MFEjb3OPtaxK9-t~jpk#8iPsAdy(OeAM=jHl zzutUrGWlB>;=rg>S|A_up`Az029vXrIbvgi910{$G;bMc0m|wfnVK+w=!@fScnMi# z4F9{zJBGF1F+3b^N6EqK2KDAkn5#U6(*_V77bi{pZDap92m7Dj3G72{Rm-OGIfT4% zeytnh_J?*4Ycmm6jmtk++@^?aMmC+^>}TwY;v}A>)-k z;$ru>zYQr79--rzTN+G!k0bAR;CNK*818c;E%y4qH9ugGQ%yj$-5>57x|78{Xx(+0 zdOh4McBLECMbB=DcZN}f);mS~Q^G%`)I3z8G(*lLh7BgD2w2RL4Jvja&i!mTT;)h{$bWk~CUI^taJwE|`xr(9^pSvVT}mA)DeOktJgPDYC}w2$G(s3r`kuVxj8%-CF!d*M8G5(F%^ zHWNjq>lWT?mp0-o3v#!94qjlj$OS0m+!%<$kLT%)EfFJlT zl6G#kV&|a}JiQU3<6->vSUpb43QG45lB`&`&dUnQsx^H%SFKm8606o9BxM;=>VI7i z9;n}15B5e6aCy3G6w#Zla_L^sVEU(8cCKrfw0Hs{-&(#Sn!4Zu90PO;;uJkgNGHQl z1&n|yXaY3FwU^TOqwy3loy>-DAvx^VXMz)$-O)mV%f`}&(YCY>D%~{z6Eq-t`LCVM zle{@!F5;4d_n)R3imRyv9l@_JpOF}SSy9gEk>Q_cF^@^CEsVhpj=;(TDk} zA3+3pGI8rh|H}1MFT^i6SZY;KOaLLr8ZO7t*zD|R>{^&eZlGIb8?N?ZOjm(w%=qvs z*gs*qND|+Et^vm+mgE|QB9@a8YKE((#9 z^j1S5-I9yt51s`-US5AJtW>2A7)(zZrIzv!E^dGal3NO>C{vSQg&VP7W^0DBH6V}@ zH6j5hL>NWL~3Usb_lJBS>=ejuN)?8%s~P@#c8 zKwY0unQjMr0PS*qP6qoh0J;YTU?&X#vbqBS#)1O_v35QuIIu?+m1|g35Y*$mWGj3x zG%%o78K6Z3T5N!Z1ZYK~r6mIcx{m=`N}v@6XbFH$UL-KFdBba80~&x9o1MS19!}vG z3BZC%!fSHjEg2ZR>omNc4^vnI59;QE91pxBd#oS6c|TDmh0aSI1vt$&H-cdd3LO*g z{NBi_naRl?Npg*d`;aSk?~dbHHe1IHZ>c-A2+nhgt-A5Wls`s>?X_^xKQ5zc^PqAN zD38J7ev>$uiQvzYSd>vYyA;~8dpTL`vx-3Qr78mtyOZJYfbrA{br(HT!hMVtyOsME zRj1=2#JLqwGj+TK@pi^9llUE#_>H8^Ogc*^HRz;Fa>#KysYxg0GATzVb?BsGChadt zXj9rOw&?)5h%lEKARRNn!`rgd%%4RKRhjb;WDTPIynuB%K4CWQhR4trp$guGheQ!n zbE_!oV~(!QiR7&>+Z$Zbu*itL7a67sX=7$AY^$xJ@T|C{TB~u!Nh4Tc0kd?)6FbiZQVK!=Sz{=tWPIJ^@ z%k|2VqwaZ9uPmBzaAol_j_p`kzP?$nEZGjX9q7{Zr~&YcS?d)50K)3QTAkg)CKco%HCxEV!q4l?08gx3Q5)i6}!A3lv$ zF!szM)C`5~=;nFSb<6$(1cC#sybsE7T=OOnrk=)CP%JWV-}C|9H^Jld_>5@XGs{r$ zn2lY(w_@0*T6k3TFg}cv0j;Xf&zM{qLp}u`+2q&{KN=S|>0OI~Hkj^h3YwupJJY8MDZA(oF>S;441I$~c3F$VV_EsKw1Ci%S?S4@@oGfwSg_j8*S{bRs#hQuOw~oWlQ!|hR-P1TILB?ky%tRPO7!2Fvv+KrX z>%D7sII#ilv47R?TPbN(y8m=TmIXfeQpek$1@;$w{xg`LJ6bld5A)23`* zRyo*vm;3OlrV&1R>Rk+aS@7j&JXo3CU+gzeSs5$6w*)fg88U*UF2-F8h z?Kv5sZN8Q?Bm%E!_8U}E`eFTN57M6P{Z@Pp+cx(~6y)_MbaNISAmt;ze3mZp9;LIh zwd_2r1^5HDIKuD^kUa=*aQUh~NA}7WDMf=Jy^9Fm;Cd1hZ$rEYgx%d-upy$orE#0R;q!WM9Yr6H~NOigF@zrv1VpKotN}{=DEH zi_|=89GkE8Xybk&SCsxEh6}WX~Q#4P_*b7s!^D(?& zlYE}XXPz`tb^#UUMn;d%=^{fY#;+pZolV#$$jem202_-FCwbE1gh$!1+-$rBGNGD0 z7LTc`(-xzf;O2I+#1$RKcORy~aqYnS;=Jh}Jwy?Ee)Mxp1mo&+| z85FHMC|Y*`X7UC8mVzb_DBa0I!GrzIB^@g%prDA#uf4G?Y`<^WWBtODHX+^dR|KYl zeQ&17FR4*`H(2Nn9u}_rVR(5_L3O-ryk!GVyhV!#OD4Bb+4k_?u#KylkP++xA1y!< z{@+kko~|&PakAvgKw@aiOH&Nc~ZOUI;ZY~`>Y%H zNd3+Ee%w~HKkT|is(&z+##rY}VSmzaU)4p7^woG5KxYJ5%%mc!eb0PxKhj1Ciyls^REeD0j?lDd2tSxeV>5^#)zaskllP#Ipr5KkJEN5clAOzI<1+L$?_Kv$efDr*cKDjN8 zqY*1y#;rA!&sJRpY)lK5InI=PLkpWiwYlmXPDp!lt4yF#pzCE@#rlO@$6Ty0y^bw6 z8#Weh+iKxMk_unN!sq}V^Hy~?cDEFKHXFEUDWLld1n*Ou(o)dAw*>#plc0?O-v7Ir zy==#U64vfG;-sfK^SXejGA~9MbrZ(1F%t`8*Z!Va9O0*n-A_Ak;VRrr zvhm>ycL1gO-0%hnvY)y$Suc5*$+$pBdG93*vumih|KBt!o(H3m+2_zmO9(P4<}T-I zf>0pHffcKx?)A7MgE?5ih*C(BAc=gW|63DU>s1NNx3G;N``@It#ozp^=MBfK8g z6E;rAs(-g1fBeH&JsCeBUHht|_#rEOb(R=@B6kiq6bN$>s@rLuOaqd)t=N3YqHg#z z`zz|%VM#f;uMoxR?MaHO)-6EN315%*di8)Ezpk>qXwp{m5++nu3BQe zIZA^+NOoFK`!aF)We>(gQLHGjVK6lv5~DKlssDYu#E!)RILG-PGjeDs%0uI<;Zt7k$(DJuUOjQQL*Oj;;whM| zpx?hZsqaK$g+a9h$p%^n8h{yzc6D=z5pHIPGMBn#NTkfCim<%ble`&YY6|=I-os>) znYGQ3tX*!lPs}6b+YDegm1hy^^ zbhz!{76e-kx+bZ^ri8Dko`ww7(g51doI&F9a})#snxRiVSSGcaupJ>slId=hq0>>NAq>uV76_U!hg~;q zqi0|uW+&`fG-(hyLO`+o!eq8i=}eX)c``J&L3rO{8q(xj%petnmy0~p>aEd>bz`f) zWf?Sak!fNRLN%s95H(*?qo{QmQX^HHxvOy!VXBM7XzD8#ptH33t|O*@#Ykt%rkk*o z`SMnm52tY&y_}*wSw>r0Kr7)neT-J3TDI4}4)hgu5)P9~2_?p>RlDUBFCv&AuAk569KN!Vr5U zt%oPAY$8Y^7!p=Y=sJZ>ViVM}d~Ayil7_joETt0U)SH&2buKM0zXJ19rib(kV=2`E zA)#7$5Hx*W#*kHD?a}D=P;Boive`GciqlaA*vovO47FyF=!J|Y`=_0lFrtSLTUm;_ z70Xa82K}Uf1Wr;pQOGkFh%K3u^N@=XWmZ2gH?p)?6E4sd(YEQ#3puu%nP;ez z2a)gn378!h@llw&D^WU9_dEk0aKOwO#s7n*Jj*UqTR-CWTo)uGsi9Fip)sJxs9U;W z)@^i`4MOjIw75Z((~|`yMBI{ipy_sec6)d(T2l{(1+6GN?*Jgp`E^N8w@zZNM4|l= z1#K(?K&()#bK^o?XCspErHNmJ?$ci}Us|R1<>o;dTyA6>ijL|@n1805_Q?@@atXXU zPLGa!iPfI+7_lFv%9#=v#6YJ{5^0?`-#$?$3MjUlu*v0gY34n0%}*TZn*zJLv(Z3lJ-E7`eo`V-m` zK4(L+3m9*}J8(IBb$U z_u6A3gbCiai1cXgDD{GUhy%L_u!#v0o0_o`T*!Tm2NTTBFgajT4nlUpPOWtF7fQSv zFBK@0sEg3+Jj{I)n7w8@*4ae>!2_lep6gEMq5*Y$5r$*H^266dfG3wBh5$EQcOwn~ z(+|nzW=l_T^d0Zbo+BH=T?H+8ZxvBHeIjzX`@y>OlMt0%VLb2vz5`eL-$*#IaZm`R zU&EjFnAD3HK+3W=&^KsVPSozMoQcD+U97xwg1(p#TI20m5&oZMjZS|LM!CM~UC_<0 zL#EZ!d1bdXx;S_v4!J`9F8syn2s`h)n+4oQT~DIs2In%J^0Ucw0lGh{1K!CY081w?*gP9wQnjf)~ zJsfqaE5A;|S&!ql9I5Xg&+YWh#gw=A!@-73Y%&w|$#Ilp+qs)6QZ?}Hjj4_504i`B zZZwhNZo1J-ZG98N*^)J~S6CY>+)WwOOkx{oF0-1cuBPIZEzT+=vZa}csV!dJ^@^~a@pK;+(Xgz!9& z^RJp|S6^)AD?22U?L=}i>25+0*^c>^4M2{dPN`B51e}8R5LoiWlRC&~2R5hI;;(*CtgQMa9na53wl5KtKRgy+b#$8LMC{f$!dcXC?vu?gBlawJe4K zB``Cfgd_u+%Wq~C=%okfUBRrR3T`(Q8Yo zo#rlKLch(WHHRaMuRTvUw~-~#T!J#(j6ei@2SYDLTba-=c;_IElGG&tpDepOy)Nw^ zfL_t`ux6R|RkBL7uNI-{d#T`3i}TKN3q}1yeU}i-?q>ZI(=2!KbO??V+dmAN6ge<% zabU{6H~6L+28pwZj&Z&f_`a?^Nama_tXk| zJeaMI1!l_at5$W_H3Mc)ZRCSo+N z_ZE12HfsMqM~2s#Xb>X?tW#YI5SoAYnr$x4Nb7`P65`2rh_$D)b-z~T`h~|VZxwHc z*d?NL1zFF4`ZW`<$@#WR@{&3zFAc1YfT^QD;j8gyNU>eVk@7-`xGX?A+_puao@$its$w9x|Dh$2Lw( zPS2>k9-H(`YxFg;^*%$k-dG!VXL_09=9@_8yzViS!&hiy*=b_?hmCgQt(7&h7 zz_$CrPkHd9EV~#6ksHg7coEo)+Z$jKIWYsbbju-2i%s_KNV#EfRor{Q=-FJs)$1yJ z7I3XkYAcbX!iQpm4hbiSUAp?Lil_THZXxHosv0~JtI9`L(gcJWwGg)7%v(ZMX zksDKnbK-YvUJFe=3kKS;E3#I)*ZIGNu`*u_8>(m9oV6Xu8vY&p{yRrWYP^{2wBx9+ zd>4J_It()q=OiTYOfF@OFcP+6H(=bGuz3R6sF#LwU~LKp@xa~Vljhr>5Pi+A`X|2i zm~WC650oi)U za6qV^&(VZ>{O>`i-@_bmC!y2Ahg>o(g$xaQS!lW_&A?=7Z|I8Ep_LGg9U=TK0*Mtq zq`Ki?*{UmFDEo?ndH8vctgHp|^r~98(DFQ-1~}r-Fp8tpYjLoO16tbL&QpIUm{{Q# z$!++;(}qoK!|>Uh9+ROh2KmtP=?f1z_MQw=fuRIRmY;#)u_xc-7M{1&!o!ma=jy^Q zvah&Eat|>Rsx6=A0()qyz#MNsdRlg!E-g6_z@7mxc>xl@9&&;0v{hgn>_oTzs)2nZ zg=sR?;wju~ik_Azc!@4}3R>|FTJe$T5)5a7T;8)8;Q_QAvO_@N>A66ADSZTsY1e`F z%3RXsQLoYX7Ck&93o8zdaA+fxsr_p>W;l(deh~K_Hv&&1JFtwc47$tMbbR6IXalie zzsq|q(0juc`yb_ltrj?^g*n8$gHZZTSQ$pK0MIDsY9vHQFRMfuU-iX^7_BSib#+CM zR3%D`Amf8UWpG`U{?FN*DWd%7fX^Z|=`UEK6Z#7RQ^Cbzqu;9L-9P~mtGOh<@|{`D zrQmZ;Ou#?t#H8|j5MwbO^s2e=1mHN}W&(E=tqA!aGYPaI$H(J^ww%pr+jo3uh4Yel zpbGOpYInG)A?SMG?*pkxN*)5Hl7}J6N;7iFE}%t^1s=YhQ`Aw>l*g-Q!(VK1z<^1b!QX>!=xc3?Y6aN;sf;$62fn%=I@VUCFZ|)QH3668H z!B@ct2(<2ETpO2F14Ell`Uq00CmW>Bypk5gRfnD>6jEGde zv#uOyMjO?>!_8PpKZZClT=h&*r|DAg(FgRXq21DdNNhl*`t%@Ej_6izAy$cpMd;4T zSN$-D2sEz{hy{!u)9N) zUPNG1s7u5HFG&&(O)(cJYT(lXi7<;$Qs#rE;Tp!y91(r}xKr+TAfFJ^vQac}o}ZNs zNa`s>dQuh<77rYj-xp==fm9F;c)wO3N)JF;Ifk+rS0Bpk+KiDes_=~brUq%CLs=)8 zZ!#iN9wHHVD2w`!sfp?jQ7$-Jjsxht z_8Dc|I_!s%ONEh{k~X*k#Ydlk-}b^MxDHS~mANGbyCGHxmvjmC04LdXQP`EZFz$nJ znvVN|T}QhNg~xE{n>mJ)USix4%0jk59bc9XLFQP|7c{V1oOMENCtb^f`VKkEaepH) z%CvY*w~IC`xevZ5EmZAbl9f*nj{%GXb&?%|locVgccyZPeXzI;4d8 z;_vQZJo%d#k1k9Jqz@{Cx4`+bKByd~aezq_(lM>=U~E9`8DZKZl3KI`Jc@m}y*f%GgE7fUPXCXd8)N< zr!G7ntep914@?S;*qiv1z``$}DA0i2Ib!0@86i!;7{?P9Wl>KRKjmZeX;decNmLQN zqtXQW0ao3N3~Ccf0Sz%o(hCIcT8cq5@-xg4 zbi*QFLOe_w53J4=NrK1jpbJizc%Wdkq{;VlFuEdXRAMQJ2lfHUKyaC*?~fO2Z)5L{ zBZ|7+tCKjGgaEMcF1CXV513|YYvn<^p3^#ZuO|i9q$}e3Dr+>Zw2O7uN%)0&AmaF)d}Ry5Au_3*=f_R8%C{2kJjZy>ux}I zZt!hZB9Mjm5i4+yK7>2?G#4@r0aZvH*t8P9 zDLDuXtP%iHGy~(NUfuUkVPHH#KKo5fff>_xAxucWYpW=YAJ!8#*k+&LRm8zHS5bp&&eo~=b~N|@hs5k}{B$Q^>Y z2m=lY#S~0NX#x)GArx}tyFS6J+2ARh*urqGWOEvJ0o}jowoRh4{S^$V2p_FyIoEEmy(r6#JkiC{pKk$SP>I?MLVjn%vX@h;e;B`xUHn^P!#B zOu7^yW@HEf4l6o9r(C(op2)(Tun2K|YkkVeo*_=$TGvI)`cJ{kS^gMuMRZlD2VALV zhwOo7UW~SL$17W#m{}KCt9s1hNM!JVjBq0sS>QJCf4JVNF3~S4!N8O2CuP*@xRVhG z2~loJ4~4pK9-TRem^F@^3xn}Xm{;eC;sl{p9XKXk8FzDqS@zT2 z7bm#gB`23P)463J5o~DcF-Uqt!xY*T)*@7sb|v?O-033Z7s}cbPvXkDSnO!&gPXKb zHpQ$9dic*{7H5Vhh95d@%`M~>ktPO(w0D&HQyVgBOWb{8}LIvhru18VkZrKGg;WVFd%k74R3nV&~IkC%o z{9`i}rN|Q>%EwcudB7amCzzIhFsBik0B2zmoXZ3bUT7eu7Jq^&;6KLkkHC&Kv17nU zBg2uat<{^;aWibj>D$JyU(kWx5)f z>bI8kOZ#g$xO%FS_F0kT(7r@K`wEGg_L)N3??9-E#f6EN_GQo2gBkSRbKw?;XU}!U zXm>I%B6RSqB?!6wT80q+Q+nYiP*D=TH!~ZM*UhkBd{4uT72=x^)YC;8-%?~NS`^7# z%go!vH>42K-glJ6QH|jH0BrgC;WcNDOTsrRa`7z@;9L4FHq1;RzKIc~WUD!Fd_PHv z+&y6Zo1b^>n7P}bYP$0{qqAbqevN7;3P40YQNgJ%m;!NN>a&xehy^k* zi8@l4Ga++qM`P8ox(*IB>&Qe%*r-E7%XZXv;A5b%fkD4TpwlTD^aLdW7civZvLkdA zdX?^8)E~iW3H*AgC&7w!o&Z> zGJ(kq6?Opnm397T-0+lx7Z&h{86m{gf96uZyI9K}P>xMUqWHVw$-$+YsKsBW;**i7 zYK_0EljSo+AX$|aM5tFSNdXXwDnR>)ja3WiM^*f`Ll-ShsQAg4YlIhNG0~^~1 zkM23$1&~xdAR;;60rYFd<~;$3d_z=+pf0hFfUy)<_OIk`y3ZbU~ z_4i5ulC_0!&`hCC-An>QGYyIJ;S)N?p(2>HPDSv6z5@||la!u58tWz~oetaJuhN+p zP=zw@$RxjQ;D{5G{I=~VLclJrMbkR<_E92xiSo4s5ZFXQayF$#iH{U@!%K#ux*0p4 zn`Tl}Jz@#OR4_Im#7sg9SZggy0x^V#|2cjH)|bZp>VKR0(})b}%?;GJcMWzd7wMXU zLg92`8fI8;{st95@llF6+~6SqRk{MK_1_-lVi}B zixheq&CQ2q2*z#ik%81R8!XfQ6+()i;xOla}Zax;FY**B7lZDt->3ljERSKzY| z=V=+w(-yx8GZ|vc-#QmPpm~=lYM4vCFbNYH#rnEIBfeTv&>~gLEm}185RJA-PXZVW zk|3h?auY(}K|E3w_eFdY-nO1Qn893cEJugSSCn&6_A~P+5vL8-;i!J4*sX7;Z!sFv-AU=V^J3 z`P9{CvclzA%o#zCd!BRta0q$wW(!#egtLz2Qk2(UfI7HTv z>V#i(tP}_7E_^pduN0qRKVf=Jq_eBpCZtiY5e)gsSw!^bUecxv9i(RBT`!wV;pW57 zzF}n{5H*AKX=!r_bDEW@k$HQH;)bh~kTLyMUkjzg%>Tu0#hyd~$!4I$rUPB-lS;uPCxjqr&*p9*AQA5$A}fA_eCledF?s} z^u93)CRRa)lr%SB)ysBu=AoG3{U$(>FlIT}Sw$4OWF7}FtVftX`n;@TeYb95l6}9f z*;MJUiu~I1vT_P=b_vEXN~-P&WSYl+>x#6Y)~I$oOa7tDFZhZ`50(KcWAD`YkdZ9A zC<83CtTY0ffD)vZO{=`VIHjy4-?w6{RRCS`S@v&>@}gPCmKUb}b`pN%mgf@{u*)8c zV;#JTfgd<$)3;>sJH+4Y9lTd|=i3)X@_o--U+7zL&1pnhB|qR8Z>%@6pJ1mJH#pE! z2RTkZeJhq{#nCW;S(WuOe*jfKAaoSHLHuUs9E6z9k&z!*tA9*~KFC)MS4Jt8SpH(c zI*^Vh=f&{6ffXD40lt8{i2vX>yFh~4fAA5m|KQ7+4|5`#4c5TLW)^f1aAPn6URyh? zy0M$PGE@$~*=^_#2}jz2)jFH)f!Lb&D&1?qE$FaFT?(8BQ`4J))bjrW*B1{Sx{NA^ zv(^3x%4%sr)8kkY^4a4iGT~|-kNBX(=7gd^O_DFPU#6(woQnw?*>6AU;K^<{^UBjZ zPejI*P57hAN3iMbbO^;bd-|Q2d9G78@6Nb67sQYSQ5YB~8?4{@FbU`|q2he7$g*!J zhW-<;ec(!OvUlGgJuUG*ubb?=_#w$f87<>VTG6)VaTljl&cXyMixyOWUp9eT!wRde zszTakXsfQO(nLvK_*#o-e(h8B4C?;&M+DRI>z=z4VW{@0g$Rfd4u=KeCV7fkUZ^JVidE2Z4){M#jdn!|WFKQ4=_Zhk6)~n&>pA zhmuy55vh6^SkRPjlc)YtL3dQ4&!!Bkr_4t@w_K+t zEW;{Mg(qUL8~V3Q0cHh33%?z?1{(NOE4Js$7+kN2&_m#Q8wXq-+IVSrVoxM<0TPwK zBR50))CFsP+4^4Y*3+uaMZqn#Xe00=^1>qz>;EFF z4iTp$SrJap>NADam1SXZE6cLA4iSmv4SFT+=3FgOn#tcS2dstYh=|T z2Gn=>9&ffrS1m*I8b49}<=y&qhu4|Gw)p|;5&Wr09w0dai^Mc5^$vj`Q|q#OXqdCy zT(Md%SBrG>?l`Eg=GhQ(d4Nu)%hfx?m8*>ra9o_kLw_V+phIB_dH^#X^BGJY8-5ch zVMHNemS#>TUViYZe`8K@Xd>*yGCh?TQg?K`~ zK;snIIbg%>DPx!L}p~2N#3=%B92+pK|CC^a! z)5bA+fa!DH8DIKcH^VzF8^84EVxaI_4=+q!q%ItJB2;hCsv$9o!0Q|8d2T$bmP*E4 zS>4Nh`FVJ5%EH>Ed$qKBM4&#CFzB-91ymOak3eTYh+sPCr{Y5hcAykmnG8ENJVfOxg z;m9^jLFYG2frVVAAQ5a~5=^1dd={qAWFjSkU_=a4Xp?kjo|{<(A{NqdI0Kx6nK=c{ z@OSbvaE5l4?2j|RCI+W<0z1J3eD8QDFu??@k#Ad#4lnPQ7yQ>PgTBj6%)j`sZ z2}1AfhNF|4GS-=BMHlZ(v!f!)r=RWXP zjfXaFoiCK<%x5#1ftE!~ANi`a`iHc<4OXm{h%BGnbBCwy$RsXc>2^U*wC=K84r3|a zWeDZh&gAcN>cSD4eLayR2JdvT5SnBh~^?`k^ zpaF-k?9`lDA{iMMFg>+7Blp}9_4lw^XF12ar`CN)3do@wU(As~WdV;2sESQGGB^_J zFSR5g<{XKWD}+6d3_>sz9mshBVVd)TkQ(Y(A;^$@Iza^1eTeN?U<|IaQIh)r@BbNr zRfZiitCD>}Sc}lemi*)>Z1m@ZYd&*!n!-|B)dC4QU74tF30s1C8co=Q(2-^3r*@B` zKPT1azF2n^Zh6b9h5TxFg4VJycX3X8MQM|4qR*p`5D83ndk(RFTVNE`!kjP8H)3)J zU?=IGgu?q(#?*05GLq=B%${PhqrZ}h`-Ktpz_`MJ(d4wl(O(Jv`i0^1z{my+7t_#R z5tPxD69@V2C>M;Tl@J&6zlP3FDl1=r1 zzubUtWC^w&q0@T&1o#1H--dVq4+UU3i`Y!aUVU2!6Z-9Yn`GDO#n<=JeeY%(8b?s3 zaRh?KE!I*CRX4LF0d{-LoP0iW$${W*-t!r91CEQuF!_9@x9YcmnG(CyTr^6{>zb=L zVi>1N5wfZ;?v!$w@6R1$BBmB6G${H$Tnm8=P*RWWQ%n2ik@4fqj@X@ zX(xr*%#dXE^tOrj&-HMej0$k5bA~?Dnb@baJ>W!r%^q#YCGp^BsBuqyG!#O-&!Zvr z{irnD7k&5VxIX*!{Kb0R!xQDxLT~tnhOwrFGp&|zkc5+88_qylHqvsD7BXqs zNQX5`xCsA>Tf(AXLej;EPDfaZT}Fi}O^?Hte{Ka)Wxs@9mH35#6EeScZoQ5z(m{g` zI1iC!83JT!M1bc8vfbwfUh91Bo>cD}N%G!&;{Ac54Azz2{Hc4;6+%iOU0J*rg=E@< zE{%%k+i`4$bJLNR&kuB>Q}X;k2Y#qOUr3El2h?$nuY&bRHj7d{%b+YC6p(NUL&#J= zoZ>y(VlMT`XmD&(tk`6q&JfeG6d^GQmc&n>5g&HX%On>Xi7;aSlT^qgRSeq!K+-n1 z6_N?(KnyV<8ySvVpbM}5AC$7_(c^&WDrI-F^4fg!jzE2c$nt7DEKn^hI2sscr2t#5 zxXK43&}XvC8%{O0D8&5GuI@2i;xiiQVOX?PnF)uX3~)Nm;K7Ym#sH}_iA zLx&lufpRtWG)4T=`~C4={)uqx3!oGeIF4FiVhY6|8DTEWDnjUbA+JQe&O%<#HuOFz zVivXHB(qwJFiBP}_67Vluw&(){jw%FD~j0jga!uUS%A<;fjv*LP#w@Dw4+^P@3jY)Sgd}Q#us8qr^a+rA`fUdRV-z8a_^{Aw^ma z`vDf~W7d%TIdHO8N(J@Xs^GJv3hwcV_UdaU(j*i5f0AAG7JxBi&zV651tH@+)J#jJ zs)N#~`p0ZxOy2Ipqmr1or~2KgcN5Jyt2U?k<~}7Aw?I`r8xP*&Ma3Pv@SbEdPi3$H z%Ev_nj7|{RUDP&YDsDy*mko%j_r^dDbVbaQyq_LF)TR59QScTS_t%9o-!yrE#jNq z%6(8J`Z~?>&0Y<6zwc)7SF7>1{{~S((orws6ka4GcUn0DEK57fac_TupK+lyOY$Q_ zl4g|Swl36v=|?@KuSDrSC(|UHrEs1*@JjlJcd-ZF{svwthhGduaPU{689Te=l>!^K z+Q)zgYRh0ap7uTa@4-BKQY;1x=HPHmU2_834{S3+F-Az&-WmSz({UZd(0m(k?ZbN1 zVZv?`rtGL8@q0XQVwzka34FqPmVocaS9N{~RbIG8gk3A@Rd*jNo0#;srXrK8GEryy7b;^cN2=bSt2WMQow~kx#jqd^=RUvz zM>2{v)GaF);{43E=oM^%NhjI92p1wKB3cA!tE8?xfDx++Xb6x1GQur6PM0$-lgsR?Lp$tV`u^cKOu$M zV;3c(3`%tQ0;jwloX3z`!0E3OJE!3(l-Q7o4OD+~w^$d5-~(1!V?m0 zCsT3SP7%0A+u2rTQTHEXBtm%Y*KA!|oHCY>xwgajyKBd!_3M{Ngi8RT&qWMALx^84 zI%1gJ%GiKfS16#36FG=%geM|rwG0`E7CRQF4#7YJV*{$AGu>c7uegGNl7WGE5Fj-5 z_F8s1YZ4d`mOr4@O%%{(76Jo=XD~ouf&o{25iC~@7z1CVvH7^m$C9W+csG7yJ6VZ9 z>QGKU1k0R114B_2>Jau*fuicT2MjY>#@GmnVJJ(TN~9w)bq0j2158I`YHdrxmpbYP z+>vKfMF-;=*22^W#~<^vLY#Wgo?MUbaI{9vL6S?*;rFA`horNm7KhMSwbu>&i=wl5zN<7+zJ@AdJ%k1|%aI_w+ zyFaVj9I-C~e8!iUa2Y~sAg-eUGV0amkIbb?4g=3I%L8wxvsfiUl1weZfmEmz#m|(` zF=DK$p)Jp1dD_Qai+wpBO#ZOT&r8=#B}bDsV4p5+Nc|>~_o1))D*%B(+phACaScts zLwNuAN^UF_>%>J#cA*T9RDy1pg7xdv!>J+AIfD8?P=9J;HSD@t_Xj?-Y#NRgK)!=N zO9#N8bxN~T7xFED1HUz$zsC@>b}=@T9)ng{z{-1d2F}8G-e0Xz;X?c$nY{*v_lYx_ z^D_ov#;oZ)kmQ2KuwM1To=}S-aTlQ>1Jm8!OVb8M|AR2e1kX8<*x9ZzEwdzgZV3PpBg71`M|cK%1f~TiAQgybHYaRHTpw}&1pxXm z%h5#&YrgVTp980Jv^wD6xhw#T&MFx7l@&YgH?&WS?Z0p`Tr0qLNhq4v;j8`;i1u(R zj&mi7yN)V4pdE<^HvWfvj?Zo|L%p`7e1v1~rznWx>>pqN!R6>+$&X$}%kR3D?Z&TE8m4mtA- zbRM=JY%OoT=CEEF1yq1zg|e(5=MnKoRO?PTD?~J_2>yP)F-Rp?bwf-BWyq(+uA2*t z3VMT00+GJK;Twb)4@5Ci!bUiD@FR>Uv$hK@&2v6-fa8Hm^RY;>UhaG(jl=^7f2T{f zO4dT><07_c#N9H`Sg{0bu7ShdaXc^_v8W9qH>8z`DW)dFWhng-mZCW9i-w>a`9cMv zoGzq$+@|(b{|8O+kou^9*#8s%t@s{(o^zJOvIMbO?BEb^PUIlWx4&h+5PlZeKQj{< z5Hj&2GcA)$pD+_?BW(YdnOb!we$*GyQ?2K|>DK?jYGw`CzOVXj!N!+1PUj3P1?IvN%TvenlK*+@vZh^tL^<#ynZrUhwaCq>+@!D2DcJSSNm+psONb&aWbWz|`_uGDlu;#30i9|nI zQPMLWPaw*PZ)RgWum}l>ek@}@j!f>y*HQ$gk<$MAg_K0^!b<9q7^(W%9IHr<76O+E z@L6*zVCxa=Itxz4%8p_gB8&2nY`hua9VDkr=&vlJvDG!au;w$IG@%R|=H^+7JUmKb zi{zFPd}ZR65>O!7`aMMVK5kOG2@9=AWhaPKhQe%0{~FyRh*qOto~R4|jLSih*kq}> zeyfGQ=U|$`yP>e~ib8uWyH?3>=zbd@sBj7yGX#XyA@We7(e=0>5lF>3NYuz<3bhv5 z2-USOll*MpmxU;XIOo_>u)lNcOPqFH`+XW@r?1E&2#-R8)P&~c*DjT&;l?b0#Y%qPp;)LO9i0niY!p+a$mJ+^D)Afd8@k6R*m1DM1j}`c zS=sR-gz5yiu6HMv`a7KX3i78jkGor7&Vg;oyZ>VZz}h50QuTlYz=s?_mIFxk);R-i z(eD6=L?L_&L_v5)k|Z$T6DM@04&TkZJ;K$kKDnNQdq}Lld6&Z7K1ok)`3?qq=Snfi zzl;~K(o62@p-|m+Vf5qjNmA6Wumknor9Hyuf_JLXeouCKwhN(y4AHdCNPxQ;vCx_BIAs;j;-?QGzEA~V11t5TJcbV=Gw_Jd|w1@K6H7n1hEh zBrDN6P{syS#|k{7%ZYArl9y2KTE^PIi)D&oCk8{VE4UBG)yHoV`|upL1-pe1!l-?+ zyA{`)siJ>TKJ4fv^%oPik^c2&{BqWx*uhGMSo)#@P&D!tF@G$uIulXMEZLLqiThoc z31(0J7Sp*&Q-dcW-Mc5}mP_{JmrHB90Vrjd21NA518010q+A|Ss-JKR5O4#Fd2bIu z>(N>DP*^A4VG@@?7p!h)q7ix)vHxI#oMd`izUV7rwA<4u=7F!tGso#p)k_pRJk&~Y zjhjW*k0c z$7RT#Ui*~IbbZP~wToPxm+Q^>im`00kz&M&Eb5ivNZOnekqIVZq;wv7ANq;GErF_z z8_^J$uUL^@TXVtvvEOjY0O@*Qp7_iZ*1P5%Fn;`~cgpZT@RLQyw zl~T*c&T|zeN|Lv)g2SzD!{7WkxdXRyEc(Lt|1u zj!NnW_Akx&t*!AZyelZ|S9Mzxn`j7H9Wc@dfx6+kEXP zXG>qqiu>C(&vpu)q6_|n*XJU!Nm-%{sMuP`iB8FMmULK?_FlvpuEy|n7rl~WXp5pY z7H!^s?;O+L?pn+DSoST;hG`(}1Bm_BF9WS+=tt<7 zFa_Fo(`zU*sqY3u3Vae>bhij1PwU+QEVELo|53h=Tl6k(QS~$EF?ME%quh=P)FxbZ z;o{2e0Mbb0>Qi2T!NXFQqU5N5P!K-IcAJ@Fnn`xUW>SFcXA9_+k+Fw&-wWBpw1}Y8 zS!j_dzf3^syFX0=KCyqK4!~Z|m65sF)KZqt-5rDHc6G%NjV1Z?Gj?g)A-n^yYZzG% zkXtc~6y!e$up*2uVLK=&I);%f?GS2j!^n@gn>M*SkoE!G7CDi^~ew}{s4@-=EKzdRkpX|SlPmSI8KySfzPJ~MzGlfez zxW;geB;SL#^s67-dpFXt!`bS{IY}2T*@@;!Xl_8eyfz5Z$un30v6TbcF3xiRx%2E7 zZp2RpplwaIC2SsNgEY2&z>R(HBhzcrkpPm$3M~x?eSZWXHdZJYQ&;E`Qx+yN1P1;N zQ(QI=1IJK>V5A`UZgXmuE;KSWpqlrVE&yx?!M<{ncmmu_UmC+(qVg^y=hkLIhRIUP zhuD11Sxd&^HCf`dt{(PD_0U$~KGcfGT>GS2q=cwK<{Ft z6vGcS|Hz)Vp>9MncSDYS68E*(zjPz?VM}ANM#PIvSRyT0r{39x(s+}xPhu|Blm@~# z8>>nKrk){?zlh*8^7%>ICoRn)G?8!-ibR$Hqm_tbpCokyjSP8E#5P1ze~8e>>Q?~L zpM4VRq? z7$o&+pCkn_`&l5#J}DWZu}>nfKJAnEK^@QyChW0K5}5AXlBNxaFlWDyxg~gpeG(3{ zjKsSyF1c)uj{GJ9`=p52CymBEZmvbvt0VMh1oc}UOKM|E{|b#--hb@$a|zmbhN zM4#!sch{fhxlc~!t6tx~ONeGatBw^uF9&B)72Bw4vt+(P?T}H<64DTDy$-Jkn)xb> zTz0+^?n*v~jw46NLWP!DgV7KUMV#9oO$;<-Yp5aV8OHA)hg<4_TgHNka5+|(Mcs|z zBm%R7nOwePT51CGv$sX&kB3S?D8I)E`aXc5HME2$ZxWBi{n1eq)Y#3}>_`M7NcJ{Dk-*Ts@TMkILj;%r6YJQq(=Jmjo?N%=+obM71znBDF6#2(wtBxN z7^pT$d(uTV((*=b_+j%VSC&hEVrXktz;R9><(>dI&m3Q2CiOf^aj394p{OxdFo~D0 zwzqK^2xBMwj!bI_N?I#!bW)K=p!Ld)?qOVF0w%P)(~F1Q*BS*}pL;wP<>^VLh*B2} zgp>8vUt+-_bWNa{E8cur6mKNkbDK6nw&BETSAs3rELw92hI=g8CxiUwEXdZf`4$V`CbA}Ey z?9Qe}of@JIi82Pyg^EN$>$Et5pH`N0xVA^3(ST<>F80pL;E1kQPqHxs`?DagSmrRV|6x+-cU_l`2wl8}t@>wLz zB7M`0XkI`-u4rbOhd{kJpK|Q$roY^wD#DL=r3R=E08#h}DIkyt&j>#P)54FTD`4yR z73YawAbZzquKXK2)FbCh-+x1aoa`$=S&lSM~2U!Xtn;`?H6+}KmaArZ|YXqfK zMOxTk=$!vd-)N@4CIdKzZH#i2eN4}Ds+UxZ#)w~CZf{isoE5gQFNN=p!!bS34qupDh zn679&Q#RHzPjm6**pvzjwCk(xE*|(siVzRY%HbSH(s2$fBb`gxn_!+N)*dxps8^aJo+Kte@L?oeKc4q?m z`z4}ZUP`e=QewM@WSYii0UpJiTKQJOo{{tRl_4@Fn+j*y&ipfcx)_5R4;llMn1_ZDvYB)&gV z2ei~%Be^1OxBDYu*02I`+#fj_CH4MDI!2{IwA3If!wHDWT&nM9U{ViShr2)Wy>)75 zWd{KxqXCxL!eJp;!o_IC+#C^sMrCkUz8B+?=Wc<=_*T5BYE&Syu7xL~HE|*7?ujs8 zPkSQ7@g{(k#byJ(gvIQh2uoX2M&~_|*C~1oo6TICuvV~_JNUaVeW$0iAEmomA%N{` zNGvKY_J;nl?m?d50r}NS$=a3OLtsC44`Z+g#@_*h+$zk_jbgRH(#(Pn_XvKeG)E83 zV+{COmH>Ey@>=p_(Q2D-!PhaO+s)V^m{x3;w5{>(fE3#ukfCNgb-fXCYswoTXPS+W zr2P->kGL%S3BCC32;c1^v;QFiEqVWAIi+*bWsMy|W2iGIVfH^5!~GA$i0sDx2mCJ_)}u#P91UWfoY9 z!%a2*fJr0Jki)SNb^aqKG2#FDfh#Vjk#o%cQw4q}t-;w)f@Mw2O28Bo>bCDujqCq; z0Rh{j$rd`qwgnv~0*R8Cph;1Wcps;M0zR=FC_pLR2Uv*OI%R=&A>IkJ4#kOY9ftzG zsjREdVQLhz$k!>~f-ICG;zr{xRhgFB>aXraBTU^HBA+wARGrc?a-s%g%^bhS961;u zerv7}^GR81ZCtuCdBXUe%kk*|^jot=m`vt&h_GBrbo5zd-RVb=(zmwa_8^K-L2ZN`CN`$5Pj^Gr(pa4i6_ zuQ?BK3YQrQ=x`@gk8iw;Wdw?>4i18eRA{lDUF9~RG3AaMBu&7$Z$VM@0@k{?KC_FR z&>Gf`ozUl&0n=+%*5WgHCsbc@>D>=)D8soD^$T5SN48*BwC+ZCSF{ukj3UuGK$lWvyNauzC{R) z22_imkZU*`$21siAHm&@TmbF~wkep4BlTFux}+VgyeXbJlGu~I!aUH%WE19gO5mHaFMzxvC|j}h=dSyA-q+ z7z}WYCTuogiwWCJmHQJ194@Vpcby179#c9*i$V(J;(GTz$xvU}> znOKTT2B(GaHUiREH0Jan`h^FqDTu5x_r2+6ePAFo1vjgEP9fa zrrzy&6dGouqeZSq`iM7xx)_LZ_mq%m?WyU<~kUFMxco?=XQYQ)bTw{ z@^0+2tPDe){9whI;m<}BHk+`;gzY9w141IsOqgTBJcKS^r)|x;C!nJ(UndAW&CXXW z@vw6NW#Rc+l93Bk1-Y{e*5&<|YRlnBq@xhJvK^$xBpGw&p*qdAp|3P8>(J{l=ThCf z&goz1SSlRq?LjWrk_Xk$kEOcI69#FnWu)O+P4sDx#kp3q$-H{Q2|B~srUP}aoS-X( z#}3&agqK>TUuHT|L&)VwFkA})aaxG8ERiS63MOc0JvxAZG|S%ePg6OQW6nDk7d9^D z+<{N#T`zq1q6|2EYI>Y*KS{Zm^G}iuiF^td{9+SH=a_SoN$kkx*Ht!AkJAH9Exi0I z=1kFvAzWyADDOleOw9+y21r?;7~2=xw=(hKzlTd}*%YK1t@m!K6AE}O^&yPrM7d0ovD z8>#(D`&e{FJe`iTxE9ZxscDW!KP{T0T@Q=$=}!$rUkw6-%;KV#f+^$j?7!&Mi8D$p zNpmDZql|~~6WudEcM|#`-d-VlTrcg#Hu6N&foabw+p_*oQQ00WXr779zfLz2lJVl$ z)$uDO>=r-uKhopN2*@4ZzWDgQ;SoqIByj3YE0+X4MP14S=F^hxo4@nZtGFFNgG()h zho?!~Cpj%$c4b^?`|3$i+Nx2Hofx4S;t5qxrRj;4UeT#i;iRNWd(q1mOWpAoy0PlR z8W5Tdxd&^}{g95eC>NPsuSL7?&rQR8h?VGemF`Lu9-KJ1)PhsuA%=UXZqyI zh0M&Q_QoR-=rQb2Fb{f;u+&ip$yMjrI%O;ul(K@8JaJy^yn?$o!P_kF2@nYVO_0Eq zF1LREtp0%A2|Sz8cH-G$Likt5eL~;i>WZQYk*az<{idFhoaWlPBK?ABk#8InhC%lz)xu$R^y z_c(`|rCQpF;vn=nvaoecpdDMco-~9cYC&iu5tGn3yxzw&+~#=8C7Zd)Xo*2JZ(Gxu zmPiT2d5(t$Epev3)iZJ0F(Q5sagK(w>p1b6wZzHuJ^|jDIJ*JmIC1u?NB48Vt3Ky^ z8EDu;8tuHzKYW*?AOblXX?6u*-WR1x8YYS3e5u1b-PV>yMmbX@&tFX?#taYDyJu9YxC%gA;J=?=rN)`WE?tT$n!37ZjO zIb7WgazWhMkqIMRd@zGm7olTf&VYMmE`+g)EMmrL%!%k|n`_|%$Yrih7x{#YL@Va} z=RPx+GCJl=M@HPTQi_XRw4DW(K=}7C6O1f@hO}(dqF3U&{B^p#WV;Z*iGog0NShZ*)Jq~^%Y8! zkA|QFSx(-5gXGU6|3LV`p3WrD4V$=C_(A&UNs)>L=Sl7Kl*xD1E59TC@PP1ecL(~! z*K|)1in?dH-hq~4xCVIH$C<$lJf1;`>--mj65b)Vd|YLIENFA=}7`W_t`~HFMLIsXp}RE4F+JI z-1!wx)|z9PCLkvW}@x)Q|ic^B&cZDgzZu3docrVyGT=(Iw~nkc!shB z2A`(*Qzk8B_lM}+3YCc;aak6s!$4m=1_jiQ4^iF3@d4bgz1p8eAglcY89-)#$&(9s zxHfuaHob2bAsVq?(~EU(|6mk1oB}lYN2t zlH+kU%)I0G%{Lb()EB$Im-Ef7g)-kg<@W=I#-5<<>jYzZ1s4=nyNTFSyl4Lt4uE3r{?;QDCiruq7M)bKU=4(o_A_O7!p~GYm}Ws> zC0xKU#9Qj@C2Sfm-~heV?U!tVaiQIMmo6gQvv`mP`a>%m`?YuJeMkRK^amgbQag*^ z)Qup;)q31EB>DqPl^%O$g61LjZWvQ0$*fku2r4YZFHVIrfrvLUV?vM_!l0n9V*crJ zrIB~yvf6|I=(g7`6YyG_m~xLu6+7iyUrvAbx`^LXdRJW<=2kRXWRmrU6u#>ggA5Oh z_v?O3AHks^$&Z=Yf?vdlZo$hX$wn)gX~1*Ta#AKJGbs}Yn8xGEYBio7TvC$V~Q4bxXZ3$YY|?JPocfg^!B_fVbuJd-GR^UG}Ac;`5)0b?*yQ(<}R$vY5-ao z+#NsCUXm#_&33Fsmi!V&R;3K6eW6BHSQMjC_zy?|SppOGqSPF{;dq)rjw3qO_ z%Vy$UhPaq>>y63kmQ>l4GKr&i^it!>J(L<(SFUO8l;+qD7!FXpqyrXy?{nKf-#pjd zKd3_t_76glFXW*B>=NUGLD@NI;vEg#OLzf4)RV28<-J=7|3tJ=IQ+N(n3ockASC4{ zAvBa{k|;;~K~wb?r;4eX)}voQZyyW_i%=_zH<+*yp}YS01?Ry;fkLEuuF+VJ@X?j^ zsPJYje__Wb5V0OH#N7@#qA&6z(QtGRoJdo$QV$?|VN&Ap?zJj%JC~LA{PSwBM4k4k zmZ)PMcNfMvB#iOE&Lcrq`(byJaEK5LKLL!{)IBSW03E}OTq?@|V_IqhOf4|d&)pf6 zB~cygjZ5MkleW=(*Y3*UU>XYlCkut0E9l6cj&y5JP|hCWg)$jX;FUL>k*+10r%is7 z558ON;e&rY-!mT^h5>GtqrK&W+u=%@$OoyeM8mfkI;TjXLhQxG>3j&FfI=s5gAQXO z3~Dp1HDR3z>rL2b!e$e;AcSRN*CikT)=y1fcn+;*6VeTY1HmuZpxfdb@4H0IdWxT9 zKo*NR!>*TTn=9`Id>UIbGcaQqaAMBXsL80y^+(2FR9<|9%FXH*kk_zM5}pHEx}MAn z=}3rAiS{I~m+a24=LrX@hG4UJ9x5r&Zd`C#<-$vs!!j@dn+41mFLyaUBUe@=7{9Fp z%$;nZI2qzfgywjIqPFF%A?93&&v@b_d_nM0g6-BD&K>h&ycufavpsWeC9qAAb3cSb z>L26WRrAf%uDkQH>qx)|9399d?)I(lOix4oD)EcZlCeo$44`1-8bp$T+X0JV8myQM z`H&IA924f5&~L&L6VgSF`N|NwUS&gIxrjM2;E9!|UG;(q$ZPE;>_Dj9%XS1Nt_cH} z2)ASwwV|}ji_Rs6+1TUi#n1bYh4lG$43|170>Ml@cUnJa(PTehV=0-hglGN-;Xxdb?{7OpvC&L8Fdg`eITrvZ$M?*H*c%XQ?=j0lK62X-5=4s*(n>|3uF>*wGZ;WyKK_1Cx6^+p z@st#YoJ?1)U0eiPe8}}e3Eo&sja2JWvIGZGb_tH333hQ|!yBHZ0y96CA0&Vl0i)To z+AjV+Ad*kbQ0ZhE|2OZ*j+@5yP|18vxY#v~=YUM=h6d0Eqm@so`h#;P=LW?nE?gHi zzU#VE@2rWlx@M-E5hF%%E4nYySpeh@8O29Zn`5(uWgXU{jpD-jhL9vEJH}N?&w4>K zopkw#r#p*uF^WF}Xer9_ZQ%)Qcp!?@>+|?g!7(pR{6ME+q=ifBw!h6rH-xM8?hcn!o6{JP`<#?$ju=# z6l~sPAP-N}aZD|+OOTrY2m&3BMa)Uiujv>I_jP=-7N+B#6n=5Ovk|u-g4aQK z1ma%$1qGXHP!U=*JNe-#<{mUmaz=oOO==(nj5Zxb|FMIKt7O$BZ5o@ta2l-6NsK9*Nn569iT&kcwRKtAC*^HVI-0ojhVO;2)r+(L7WN@txuy^l06ovY7uO{fn6B#OigJ-dR_HxXPfq-s z|15u?n=CJl!;ARS`t?9 zru97S_Yare90(rtvk3Gm(Na~IFT zP7Nh!eYpsG)t1kb{z)kBx_>ZV5AGjA_T_g|_wzE2-LPS4%j=!*^B4*}(lYB~*P0bQ z+bHv=yC=ekZudmqlX0mT{#?KynMjYW6f&a7E=mB;j_MwKl?VKm20Xiy;H9^b4)H)B z;5=+-vca7FE%vHM@WYHs!4dz+9PGL@a%ykgy1OkEcl7kfNfdI7(0|-rdV_@HEWSZ< z|13&VyFs#9-|Wr&+#uml)Eguc1C2ulDaHmIynco|sCR>86WSmfBq$UbStWuFSEu%i zZ6~(Xu^XZr%r8%5uI#9vxyXwf!Ts+<_460k!9o z_zE-(V`oI2lb$63n$&K%T&as~mIQu}FTl*sWe(b^ws=CM0G5P=w~>Y(R3%BT;{GHv zl-R{~D0K+xoj}(C0;dXQ5UYl)@ZD6}890U+~A~j^Mvw%2y1(3A5lwT>eIsiZ%SRydc zIU)^!4kQ_Yp>yIZkQtp;AZMKMM^+&A&LnNqf99IR6$r5!0u;JheXO|Lsw>D4a}K>s zRMwPN9|1G#=sRN%0s=6d6(h2TN!^`J-!iA~n!p9>Zx89!D4D0LEt26^XbH^I5ab$A zmF3(m68T8nBAE$4)<5Q?bygVM))o1xaAHtIWmw3!X+|>ngqi$EOpTd-m_-V9wco}K zFYdQJfgIRxH z_rO%!e@H*xB%9cN#l1$f|C#?q`>#%D|1RCNAKAKSKdn?bCr=EF51bsB2vW3YQruGP zlA;+g#n5OX@5rv{1yr86YkDSrsH@>(LEor2Pn?Koj%j%g0q#?{FNDVp!+=6A;YJC+ z7nxAH2L_fVIub`3&2tFMr5?Wzj6?QnWI++*SlTxsDHwT^9nL6qtiIR-526wx_eBvF z%}U$B#IvN8$k0I#f&KhyNhw@+RL8rq9k z)+in_xK^_p{_L z%nbt_Jb5;Ex6s@(vNY`vW_oAZqhe4oICo2NYsNA(i;CPdzW2xl=d@rYZn@2F+rg~H zN&Qk`GJ5vi{gkMK;}In~;jBub^Fl4EUnyAz*uiDG*I&Y!EOtYmr#8ik;7k37gx#jg&0rVa|K|>ZFAmJJ`&^?sxjZ!)`XIpC zQAxd#@QmI_U|^rgXbuQ+b`Up&qKiH(AEw_IA}uj|3ul8fDpzFFKKiB39f8T6Ma4MU zZW#a;{siM_7iXS^0vSwg1ND0^nL_IzBsm2UCHdPGnx99I$FEu0f@qoGCQmtiMe=(u z{wyM&xhm+2vpmG`BxwZ%S_twajN%9UB)3)pQ%F!>C2FxJ{i?ozulsfBk ziVnO8C>bJEx!IDjfVUl;j~7w-PVFYl^hVw_0{mpt~{Ue4&s1c=+YS{ zi-x2>d{qwvh|Aq%dSCTzR45`CXlrBHZW0;aSAA7HsRS>dyqLqmSJpZW#-k8k62Z0` zp4HpTa8fAp8N*WVxdlILSn3IcA$oZaqz$=$&$ zMTP1^Ecr2&XKw$JF2hJOV`YIEW6nP3iF(&e2>MEw@fTpjWyv>Naz_aN3z(ww4o5Tj zRRcU?&OkPrWMDByONIN4mI^Jf4*{$;@nUZ_PcHU;w=ol7-k1iUu;b~*nMR^@BKtv= zT5!9j#^*CQie%S|k#fg3s+VftnnEeV7j#LZ$k7m``C6iC2*J5i5H-Z28FP*j#DF!) zhI?%A$;9<&OU&61y~864WVmoe0CVh8f{i*O9?{u^)(5Ofr1f-tIdkSenve-C=tS$~ z=Ooiwf%@P-zi){eh!O6`e-FK%Fi2^7FVq+((fj%R6X<=>`Q6j|JQyxx&RJ)(ZJp^Y zA{g|pbLo9qxl3G*3oZicTHK_aX!#Yx^`^M@->N+r_ zkdup7BU4w@Jrj%sG2!9l>&|tlJE${t$4jM_n-3SlC3AD>ehJjwS{l)?>z1c9joa>t zwBT6HZ^F%kU_b>QO$BycP$74S69iwVurGro?PEVT%ddO_+u; z$@FX!=9n-KAvwX1&}^L%6dSH<)8oyh%18`9>INXB9X`@NG>Jak-(1^MDK&5T_LA#GI}0X^Ep_Mk6MKRTM_fBqB&;V$Np} zA2y$k87TQ$v^MMJJ3JBmzV?$n1V0pf#v8rAP2?P)Ca0S*mm`QpQK7K5MtgVWg+}LZ z+XJs|pl>I#nsoBy9GfW;t14Vd zb6t1K;8byZ1ISpK9t|8d{jl>lMiv%e0+1QLTawMQb;Cy3#X{%JtN9+N-=5E&^6C{o zK(Ls5sDu_D9@;G}Oc%a?pQXi-H+yNJytJsmRc3aH4qD9JHdR_Q120R9d}1x^|3_(2 zn7FT>_{H6(dS=&djm`L}4!NI1!$dC$R+0^#E~JEQn%RGcseytz z7+-Sz_$`eNIHE~#B1TVKtL+Zg!HgDyT3k^C61Y-v3|DF?T3W;B7~_L1N%tQhEx_)p zNFxkkF=Z}kyd>}CCU1=7mbS~9Fc7&K9=%1kN4=-K}MvdDa z@a8)6K)#S2Qa3@|I<0FH1dRtYL7a?qm>y_d@Y>d4P)<6J(n7<2B=e{-uKl4IF+7g~ zg(8f`g(BbaTuLos&9RhAcm)m(tmoi|+KDD&D3);p>nVt~voN89a*Yf@xh8~$a`pHr z+Ko5^BTt&iOHU8c@0<^=qXf8K+=W%aJO}{;RyL?mBy5V*Aau={&)%d2o%@4}jPL0VIwxQezwttdK$Y_ACol zsw})OG|YGHMi7D`Nbfu?ovN8l$N`cOm?0SsosX0>L1&r zYCOwOuqlCp>^skh?M%T{*0VvqJ`wt>Xplp<8n1j%DU)Or6e=>DmWw@#tqn@UsFz~Hg#B+PBE370hVEyMvgAo4aL5b@ z1Q)x@VvH&wL4Lch>IU-iSggp9Ro2O$KE`$OhbI$D0}vz=a)7xPARGS~`xkeRwZ(@C z`c=0#)h|Lz7<&jb7{N^+H1@!b?g5|;K0|}otjZxxA%oez){|l9BXx8aWmaG^WRI~S zG)uzU3kzNDhUA1WCHdJWx{=yb5VwcMobM-@6$v4#M}LsM8|2^|oO#U+y18_L^h-Jf zFZx9~?wV6=N%Sx7gTg0~X^=J1QkzJYh&lfz?1zcd@aBT>F!WXz3`@Y#g9)_(8;aAMTP=-&uu7&;&;}^pkgpdlV1XUxYZt1NyAtc$gmA_AyUFWlR7!6B|YuqR=5d%_yp}&M`Ky!%g*v` ztvS}0?a$_*lW~xE;)NcajZ=No*Jp`4r==4=nu3)-(;2XtLqi(TKEr6#ilf(cSz-rz z=I36Vk$Fojo)PQo1wDx^jw?yM05KmRG>x!Kog^9(U|^70hdFsCy3_--v)-VLSw(AJ z;|LKwRO|Lo&Qje&HS=u`o!;jU_0Xx+wuc@l|9|PB;{aB4&_CKk2Tm4M?2q)&cc=dG z9y*Gek*gcm5h8jh&+Va^OLPzY1f^de_F9V7*&i4~i{o#a9Ygn1y1G5I`4rtll$%=0y~iVGIF5HF4utC-+9B5GkMz*?IFF#E++VP! z{(tD90Ra0y8AIPr`olf+7(n#cLn1o8Qmz-G^ArGeCynN?XO{An(VT`&0uC_Tsgtli zJog0T#QFg1LY$c}p5vSs=$yovPkW9_4Azi@AyfW3^#UAA?VE^UPT_N5-NChxQr6mK zq+CiO1095eeuhZGzD9{#EX24p>J@qDU3!j>u3F$#4EGXyQN0w|APDFOQAWCLhX z0-)NI0o`E%)mT6vrq<{^7WiAqE1AG=g#4G6u{7^nI<%)s?0}Rfyu;xtHV;3;Ob4- zfY3Dp9)6XUYRsgzU?~~_1%oJRA(JqP&x7QjO$%TPg#|&x)mmoojHq68S=vc5##7Kh zHxFlx*7ny3-&7$$;+qm^aB=k~zUm=nICb4}*pV?WIw6@J;pNPh`!3gmi8SiUtKK}pNJBC~+*ZmC@{qijHK-ZdCUkqfu99o17a4lS;ZtZWD#;x#7IUOmskJ?53A>~ zOZ2I~9((0!Gs{Y^T#m}=2;5z-q#xsoxa3~RiTBFpc(1Her@{GDPOY0R8T-3rn!kj- zf`KBf{;r+&LktU{BUgJe6_7YR_R(HB$l&tym&ZfeV6>N^82|A%0h*CdXy_!oC`Pbu zB`y4l&##>sVb2_9w*%)|R02jg5Rum7u>&kmX2>EWxPwB!pN`AMh~@(!hTIo+X~aYj3>NW!b2MtAT(`Y5`5^s#&y4mEW-0|tlQtY z?h9}TB<38U>)yfCE!@#|X`DL@4$pSMV#I;mVQ^qk;sEdBL>#)Qf79ix|AnBm-PS*Z zFJ+#G`Y8}b;G=C{p@FTR=?CCIgia&|d59qf{+gw^Oa%u0A-sceEMRFS#qvMsst2wW zEXHaqY!B2Szxs3rdSJhV9$-A{tS7ngPbh%jmI93Co+EJBf+{I{Dy`h%h+z+rugMhZ zov-^~%KAyCkZx{DBT|CZF`dHZxG4`Z1u&&4_4%0DVvI0Jnl7>WI^`pcRccq%i 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š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

L{CrnJC??90250-q-u_y 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 list[str]: + if raw is None: + return [] + s = str(raw or "").strip() + if not s: + return [] + # Best-effort: allow comma-separated list in one query param. + return [p.strip() for p in s.split(",") if p.strip()] + + +def _safe_int(v: Any) -> int: + try: + return int(v) + except Exception: + return 0 + + +def _build_location_text(node: Optional[ET.Element]) -> str: + if node is None: + return "" + + def _get(key: str) -> str: + return str(node.get(key) or node.findtext(key) or "").strip() + + def _clean(v: str) -> str: + # Some WeChat XML uses special whitespace (NBSP / thin spaces) inside the location string. + return ( + str(v or "") + .replace("\u00a0", " ") + .replace("\u2006", " ") + .strip() + ) + + city = _clean(_get("city")) + poi = _clean(_get("poiName") or _get("poi") or _get("label")) + address = _clean(_get("address") or _get("poiAddress")) + + # Avoid duplicated city prefix like: "广安市·广安市·xxx". + if city and poi and poi.startswith(city): + rest = poi[len(city):].lstrip(" ·") + if rest: + poi = rest + + # WeChat UI typically renders `city·poi/address`. + if city and (poi or address): + return f"{city}·{poi or address}".strip() + + for cand in (poi, address, city): + if cand: + return cand + return "" + + +def _parse_timeline_xml(xml_text: str, fallback_username: str) -> dict[str, Any]: + out: dict[str, Any] = { + "username": fallback_username, + "createTime": 0, + "contentDesc": "", + "location": "", + "media": [], + "likes": [], + "comments": [], + } + + xml_str = str(xml_text or "").strip() + if not xml_str: + return out + + try: + root = ET.fromstring(xml_str) + except Exception: + return out + + def _find_text(*paths: str) -> str: + for p in paths: + try: + v = root.findtext(p) + except Exception: + v = None + if isinstance(v, str) and v.strip(): + return v.strip() + return "" + + out["username"] = ( + _find_text(".//TimelineObject/username", ".//TimelineObject/user_name", ".//TimelineObject/userName", ".//username") + or fallback_username + ) + out["createTime"] = _safe_int(_find_text(".//TimelineObject/createTime", ".//createTime")) + out["contentDesc"] = _find_text(".//TimelineObject/contentDesc", ".//contentDesc") + out["location"] = _build_location_text(root.find(".//location")) + + media: list[dict[str, Any]] = [] + try: + for m in root.findall(".//mediaList//media"): + mt = _safe_int(m.findtext("type")) + + # WeChat stores important download/auth hints in attributes (key/enc_idx/token/md5...). + # NOTE: xml.etree.ElementTree.Element is falsy when it has no children. + # So we must check `is None` instead of using `or`, otherwise `` would be treated as missing. + url_el = m.find("url") + if url_el is None: + url_el = m.find("urlV") + thumb_el = m.find("thumb") + if thumb_el is None: + thumb_el = m.find("thumbV") + + url = str((url_el.text if url_el is not None else "") or "").strip() + thumb = str((thumb_el.text if thumb_el is not None else "") or "").strip() + + url_attrs = dict(url_el.attrib) if url_el is not None and url_el.attrib else {} + thumb_attrs = dict(thumb_el.attrib) if thumb_el is not None and thumb_el.attrib else {} + + media_id = str(m.findtext("id") or "").strip() + size_el = m.find("size") + size = dict(size_el.attrib) if size_el is not None and size_el.attrib else {} + if not url and not thumb: + continue + media.append( + { + "type": mt, + "id": media_id, + "url": url, + "thumb": thumb, + "urlAttrs": url_attrs, + "thumbAttrs": thumb_attrs, + "size": size, + } + ) + except Exception: + media = [] + out["media"] = media + + likes: list[str] = [] + try: + for u in root.findall(".//likeList//like//username"): + if u is None or not u.text: + continue + v = str(u.text).strip() + if v: + likes.append(v) + except Exception: + likes = [] + out["likes"] = likes + + comments: list[dict[str, Any]] = [] + try: + for c in root.findall(".//commentList//comment"): + content = str(c.findtext("content") or "").strip() + if not content: + continue + comments.append( + { + "username": str(c.findtext("username") or "").strip(), + "nickname": str(c.findtext("nickName") or "").strip(), + "content": content, + "refUsername": str(c.findtext("refUserName") or "").strip(), + "refNickname": str(c.findtext("refNickName") or "").strip(), + } + ) + except Exception: + comments = [] + out["comments"] = comments + + return out + + +def _image_size_from_bytes(data: bytes, media_type: str) -> tuple[int, int]: + mt = str(media_type or "").lower() + if mt == "image/png": + # PNG IHDR width/height are stored at byte offsets 16..24 + if len(data) >= 24 and data.startswith(b"\x89PNG\r\n\x1a\n"): + try: + w = int.from_bytes(data[16:20], "big") + h = int.from_bytes(data[20:24], "big") + return w, h + except Exception: + return 0, 0 + return 0, 0 + if mt in {"image/jpeg", "image/jpg"}: + # Minimal JPEG SOF parser. + if len(data) < 4 or (not data.startswith(b"\xFF\xD8")): + return 0, 0 + i = 2 + while i + 3 < len(data): + if data[i] != 0xFF: + i += 1 + continue + # Skip padding 0xFF bytes. + while i < len(data) and data[i] == 0xFF: + i += 1 + if i >= len(data): + break + marker = data[i] + i += 1 + # Markers without a segment length. + if marker in (0xD8, 0xD9): + continue + if marker == 0xDA: # Start of scan. + break + if i + 1 >= len(data): + break + seg_len = (data[i] << 8) + data[i + 1] + i += 2 + if seg_len < 2: + break + # SOF markers which contain width/height. + if marker in { + 0xC0, + 0xC1, + 0xC2, + 0xC3, + 0xC5, + 0xC6, + 0xC7, + 0xC9, + 0xCA, + 0xCB, + 0xCD, + 0xCE, + 0xCF, + }: + # segment: [precision(1), height(2), width(2), ...] + if i + 4 < len(data): + try: + h = (data[i + 1] << 8) + data[i + 2] + w = (data[i + 3] << 8) + data[i + 4] + return w, h + except Exception: + return 0, 0 + i += seg_len - 2 + return 0, 0 + return 0, 0 + + +@lru_cache(maxsize=16) +def _sns_img_time_index(wxid_dir_str: str) -> tuple[list[float], list[str]]: + """Build a (mtime_sorted, path_sorted) index for local Moments cache images. + + WeChat stores encrypted SNS cache images under: + `{wxid_dir}/cache/YYYY-MM/Sns/Img/<2hex>/<30hex>` + """ + wxid_dir = Path(str(wxid_dir_str or "").strip()) + out: list[tuple[float, str]] = [] + + cache_root = wxid_dir / "cache" + try: + month_dirs = [p for p in cache_root.iterdir() if p.is_dir()] + except Exception: + month_dirs = [] + + for mdir in month_dirs: + img_root = mdir / "Sns" / "Img" + try: + if not (img_root.exists() and img_root.is_dir()): + continue + except Exception: + continue + # The Img dir uses a 2-level layout; keep this tight (no global rglob). + try: + for sub in img_root.iterdir(): + if not sub.is_dir(): + continue + for f in sub.iterdir(): + try: + if not f.is_file(): + continue + st = f.stat() + out.append((float(st.st_mtime), str(f))) + except Exception: + continue + except Exception: + continue + + out.sort(key=lambda x: x[0]) + mtimes = [m for m, _p in out] + paths = [_p for _m, _p in out] + return mtimes, paths + + +def _normalize_hex32(value: Optional[str]) -> str: + """Return the first 32 hex chars from value, or '' if not present.""" + s = str(value or "").strip().lower() + if not s: + return "" + # Keep only hex chars. Some attrs may contain separators or be wrapped. + s = re.sub(r"[^0-9a-f]", "", s) + if len(s) < 32: + return "" + return s[:32] + + +def _sns_media_picks_path(account_dir: Path) -> Path: + return account_dir / SNS_MEDIA_PICKS_FILE + + +def _sns_post_id_from_media_key(media_key: str) -> str: + # Frontend stores picks under `${postId}:${idx}`. + s = str(media_key or "").strip() + if not s: + return "" + return s.split(":", 1)[0].strip() + + +@lru_cache(maxsize=32) +def _load_sns_media_picks_cached(path_str: str, mtime: float) -> dict[str, str]: + p = Path(str(path_str or "").strip()) + try: + raw = p.read_text(encoding="utf-8") + except Exception: + return {} + + try: + obj = json.loads(raw) + except Exception: + return {} + + picks_obj = obj.get("picks") if isinstance(obj, dict) else None + if not isinstance(picks_obj, dict): + return {} + + out: dict[str, str] = {} + for k, v in picks_obj.items(): + mk = str(k or "").strip() + if not mk: + continue + ck = _normalize_hex32(str(v or "")) + if not ck: + continue + out[mk] = ck + return out + + +def _load_sns_media_picks(account_dir: Path) -> dict[str, str]: + p = _sns_media_picks_path(account_dir) + try: + st = p.stat() + mtime = float(st.st_mtime) + except Exception: + mtime = 0.0 + return _load_sns_media_picks_cached(str(p), mtime) + + +def _save_sns_media_picks(account_dir: Path, picks: dict[str, str]) -> int: + # Normalize + keep it stable for easier diff/debugging. + out: dict[str, str] = {} + for k, v in (picks or {}).items(): + mk = str(k or "").strip() + if not mk: + continue + ck = _normalize_hex32(str(v or "")) + if not ck: + continue + out[mk] = ck + + try: + payload = {"updated_at": int(time.time()), "picks": dict(sorted(out.items(), key=lambda x: x[0]))} + _sns_media_picks_path(account_dir).write_text( + json.dumps(payload, ensure_ascii=False, indent=2), + encoding="utf-8", + ) + except Exception: + pass + + try: + _load_sns_media_picks_cached.cache_clear() + except Exception: + pass + + return len(out) + + +@lru_cache(maxsize=16) +def _sns_img_roots(wxid_dir_str: str) -> tuple[str, ...]: + """List all month cache roots that contain `Sns/Img`.""" + wxid_dir = Path(str(wxid_dir_str or "").strip()) + cache_root = wxid_dir / "cache" + try: + month_dirs = [p for p in cache_root.iterdir() if p.is_dir()] + except Exception: + month_dirs = [] + + roots: list[str] = [] + for mdir in month_dirs: + img_root = mdir / "Sns" / "Img" + try: + if img_root.exists() and img_root.is_dir(): + roots.append(str(img_root)) + except Exception: + continue + # Keep it stable (helps debugging and caching predictability). + roots.sort() + return tuple(roots) + + +def _resolve_sns_cached_image_path_by_md5( + *, + wxid_dir: Path, + md5: str, + create_time: int, +) -> Optional[str]: + """Try to resolve SNS cache image by md5-based cache path layout.""" + md5_32 = _normalize_hex32(md5) + if not md5_32: + return None + + sub = md5_32[:2] + rest = md5_32[2:] + roots = _sns_img_roots(str(wxid_dir)) + if not roots: + return None + + best: tuple[float, str] | None = None + for root_str in roots: + try: + p = Path(root_str) / sub / rest + if not (p.exists() and p.is_file()): + continue + # Prefer the cache file closest to the post create_time (if provided), + # otherwise pick the newest one. + st = p.stat() + if create_time > 0: + score = abs(float(st.st_mtime) - float(create_time)) + else: + score = -float(st.st_mtime) + if best is None or score < best[0]: + best = (score, str(p)) + except Exception: + continue + return best[1] if best else None + + +def _sns_cache_key_from_path(p: Path) -> str: + """Return the 32-hex cache key for a SNS cache file path, or ''.""" + try: + # cache/.../Sns/Img/<2hex>/<30hex> + key = f"{p.parent.name}{p.name}" + except Exception: + return "" + return _normalize_hex32(key) + + +def _resolve_sns_cached_image_path_by_cache_key( + *, + wxid_dir: Path, + cache_key: str, + create_time: int, +) -> Optional[str]: + """Resolve SNS cache image by `<2hex>/<30hex>` cache key.""" + key32 = _normalize_hex32(cache_key) + if not key32: + return None + + sub = key32[:2] + rest = key32[2:] + roots = _sns_img_roots(str(wxid_dir)) + if not roots: + return None + + best: tuple[float, str] | None = None + for root_str in roots: + try: + p = Path(root_str) / sub / rest + if not (p.exists() and p.is_file()): + continue + st = p.stat() + if create_time > 0: + score = abs(float(st.st_mtime) - float(create_time)) + else: + score = -float(st.st_mtime) + if best is None or score < best[0]: + best = (score, str(p)) + except Exception: + continue + return best[1] if best else None + + +@lru_cache(maxsize=4096) +def _resolve_sns_cached_image_path( + *, + account_dir_str: str, + create_time: int, + width: int, + height: int, + idx: int, + total_size: int = 0, +) -> Optional[str]: + """Best-effort resolve a local cached SNS image for a post+media meta.""" + total_size_i = int(total_size or 0) + must_match_size = width > 0 and height > 0 + # Without size/total_size, time-only matching is too error-prone and can easily mix images. + if (not must_match_size) and total_size_i <= 0: + return None + + account_dir = Path(str(account_dir_str or "").strip()) + if not account_dir.exists(): + return None + + wxid_dir = _resolve_account_wxid_dir(account_dir) + if not wxid_dir: + return None + + mtimes, paths = _sns_img_time_index(str(wxid_dir)) + if not mtimes: + return None + + create_time_i = int(create_time or 0) + if create_time_i > 0: + # We don't know when the image was cached (could be close to create_time, could be hours later). + # Use a generous window but keep it bounded for performance. + window = 72 * 3600 # 72h + lo = create_time_i - window + hi = create_time_i + window + + l = bisect_left(mtimes, lo) + r = bisect_right(mtimes, hi) + if l >= r: + # Fallback: search the newest N files if time window has no hits. + l = max(0, len(mtimes) - 800) + r = len(mtimes) + else: + # Missing createTime: only probe the newest cache entries. + l = max(0, len(mtimes) - 800) + r = len(mtimes) + + # Rank by time proximity to create_time (or by recency when createTime is missing). + candidates: list[tuple[float, str]] = [] + for j in range(l, r): + try: + if create_time_i > 0: + candidates.append((abs(mtimes[j] - float(create_time_i)), paths[j])) + else: + candidates.append((-mtimes[j], paths[j])) + except Exception: + continue + candidates.sort(key=lambda x: x[0]) + + matched: list[tuple[int, float, str]] = [] + # Limit the work per request. + max_probe = 2000 if (r - l) <= 2000 else 2000 + for _diff, pstr in candidates[:max_probe]: + try: + p = Path(pstr) + payload, media_type = _read_and_maybe_decrypt_media(p, account_dir) + if not payload or not str(media_type or "").startswith("image/"): + continue + if must_match_size: + w0, h0 = _image_size_from_bytes(payload, str(media_type or "")) + if (w0, h0) != (width, height): + continue + + size_diff = abs(len(payload) - total_size_i) if total_size_i > 0 else 0 + # When totalSize is available, it tends to be a stronger discriminator than mtime. + matched.append((int(size_diff), float(_diff), pstr)) + except Exception: + continue + + if not matched: + return None + if must_match_size: + matched.sort(key=lambda x: (x[0], x[1], x[2])) + # If we have totalSize, treat it as a strong discriminator and always take the best match. + if total_size_i > 0: + return matched[0][2] + idx0 = max(0, int(idx or 0)) + return matched[idx0][2] if idx0 < len(matched) else None + # No size: only return a best-effort match when totalSize is available. + if total_size_i > 0: + matched.sort(key=lambda x: (x[0], x[1], x[2])) + return matched[0][2] + return None + + +@lru_cache(maxsize=2048) +def _list_sns_cached_image_candidate_keys( + *, + account_dir_str: str, + create_time: int, + width: int, + height: int, +) -> tuple[str, ...]: + """List local SNS cache candidates (as 32-hex cache keys) for a media item. + + The ordering matches `_resolve_sns_cached_image_path()`'s scan order, so `idx` + is stable within the same (account, create_time, width, height) input. + """ + if create_time <= 0 or width <= 0 or height <= 0: + return tuple() + + account_dir = Path(str(account_dir_str or "").strip()) + if not account_dir.exists(): + return tuple() + + wxid_dir = _resolve_account_wxid_dir(account_dir) + if not wxid_dir: + return tuple() + + mtimes, paths = _sns_img_time_index(str(wxid_dir)) + if not mtimes: + return tuple() + + window = 72 * 3600 # 72h + lo = create_time - window + hi = create_time + window + + l = bisect_left(mtimes, lo) + r = bisect_right(mtimes, hi) + if l >= r: + l = max(0, len(mtimes) - 800) + r = len(mtimes) + + candidates: list[tuple[float, str]] = [] + for j in range(l, r): + try: + candidates.append((abs(mtimes[j] - float(create_time)), paths[j])) + except Exception: + continue + candidates.sort(key=lambda x: x[0]) + + max_probe = 2000 if (r - l) <= 2000 else 2000 + out: list[str] = [] + seen: set[str] = set() + for _diff, pstr in candidates[:max_probe]: + try: + p = Path(pstr) + payload, media_type = _read_and_maybe_decrypt_media(p, account_dir) + if not payload or not str(media_type or "").startswith("image/"): + continue + w0, h0 = _image_size_from_bytes(payload, str(media_type or "")) + if (w0, h0) != (width, height): + continue + key = _sns_cache_key_from_path(p) + if not key or key in seen: + continue + seen.add(key) + out.append(key) + except Exception: + continue + + return tuple(out) + + +@router.get("/api/sns/timeline", summary="获取朋友圈时间线") +def list_sns_timeline( + account: Optional[str] = None, + limit: int = 20, + offset: int = 0, + usernames: Optional[str] = None, + keyword: Optional[str] = None, +): + if limit <= 0: + raise HTTPException(status_code=400, detail="Invalid limit.") + if limit > 200: + limit = 200 + if offset < 0: + offset = 0 + + account_dir = _resolve_account_dir(account) + contact_db_path = account_dir / "contact.db" + + users = _parse_csv_list(usernames) + kw = str(keyword or "").strip() + + # Prefer real-time WCDB access (reads the latest encrypted db_storage/sns/sns.db). + # Fallback to the decrypted sqlite copy in output/{account}/sns.db. + try: + conn = WCDB_REALTIME.ensure_connected(account_dir) + + def _clean_name(v: Any) -> str: + return str(v or "").replace("\xa0", " ").strip() + + # Base timeline (includes likes/comments) from WCDB API. + with conn.lock: + rows = _wcdb_get_sns_timeline( + conn.handle, + limit=limit + 1, + offset=offset, + usernames=users, + keyword=kw, + ) + + # Best-effort: enrich posts with XML-only fields (location + media attrs/size) + # by querying SnsTimeLine.content from the encrypted sns.db. + content_by_tid: dict[int, str] = {} + try: + sns_db_path = conn.db_storage_dir / "sns" / "sns.db" + if not sns_db_path.exists(): + sns_db_path = conn.db_storage_dir / "sns.db" + + def _to_signed_i64(v: int) -> int: + x = int(v) & 0xFFFFFFFFFFFFFFFF + if x >= 0x8000000000000000: + x -= 0x10000000000000000 + return int(x) + + tids: list[int] = [] + for r in (rows or [])[: int(limit)]: + if not isinstance(r, dict): + continue + try: + tid_u = int(r.get("id") or 0) + except Exception: + continue + tids.append(_to_signed_i64(tid_u)) + + tids = list(dict.fromkeys(tids)) + if tids and sns_db_path.exists(): + in_sql = ",".join([str(x) for x in tids]) + sql = f"SELECT tid, content FROM SnsTimeLine WHERE tid IN ({in_sql})" + sql_rows = _wcdb_exec_query(conn.handle, kind="media", path=str(sns_db_path), sql=sql) + for rr in sql_rows: + try: + tid_val = int(rr.get("tid")) + except Exception: + continue + content_by_tid[tid_val] = str(rr.get("content") or "") + except Exception: + content_by_tid = {} + + has_more = len(rows) > limit + rows = rows[:limit] + + post_usernames = [str((r or {}).get("username") or "").strip() for r in rows if isinstance(r, dict)] + post_usernames = [u for u in post_usernames if u] + contact_rows = _load_contact_rows(contact_db_path, post_usernames) if contact_db_path.exists() else {} + + timeline: list[dict[str, Any]] = [] + for r in rows: + if not isinstance(r, dict): + continue + + uname = str(r.get("username") or "").strip() + nickname = _clean_name(r.get("nickname")) + display = nickname or (_pick_display_name(contact_rows.get(uname), uname) if uname else uname) + + create_time = _safe_int(r.get("createTime")) + content_desc = str(r.get("contentDesc") or "") + media = r.get("media") if isinstance(r.get("media"), list) else [] + likes = r.get("likes") if isinstance(r.get("likes"), list) else [] + likes = [_clean_name(x) for x in likes if _clean_name(x)] + comments = r.get("comments") if isinstance(r.get("comments"), list) else [] + + # Enrich with parsed XML when available. + location = str(r.get("location") or "") + try: + tid_u = int(r.get("id") or 0) + tid_s = (tid_u & 0xFFFFFFFFFFFFFFFF) + if tid_s >= 0x8000000000000000: + tid_s -= 0x10000000000000000 + xml = content_by_tid.get(int(tid_s)) + if xml: + parsed = _parse_timeline_xml(xml, uname) + if parsed.get("location"): + location = str(parsed.get("location") or "") + pmedia = parsed.get("media") or [] + if isinstance(pmedia, list) and isinstance(media, list) and pmedia: + # Merge by index (best-effort). + merged: list[dict[str, Any]] = [] + for i, m0 in enumerate(media): + mp = pmedia[i] if i < len(pmedia) else None + if not isinstance(mp, dict): + merged.append(m0 if isinstance(m0, dict) else {}) + continue + mm = dict(mp) + if isinstance(m0, dict): + for k in ("url", "thumb"): + v = m0.get(k) + if v: + mm[k] = v + for k, v in m0.items(): + if k not in mm: + mm[k] = v + merged.append(mm) + media = merged + except Exception: + pass + + pid = str(r.get("id") or "") or str(create_time or "") or uname + timeline.append( + { + "id": pid, + "tid": r.get("id"), + "username": uname, + "displayName": _clean_name(display) or uname, + "createTime": create_time, + "contentDesc": content_desc, + "location": str(location or ""), + "media": media, + "likes": likes, + "comments": comments, + } + ) + + return {"timeline": timeline, "hasMore": has_more, "limit": limit, "offset": offset, "source": "wcdb"} + except WCDBRealtimeError as e: + logger.info("[sns] wcdb realtime unavailable: %s", e) + except Exception as e: + logger.warning("[sns] wcdb realtime failed: %s", e) + + # Legacy path: query the decrypted sns.db under output/databases/{account}. + sns_db_path = account_dir / "sns.db" + if not sns_db_path.exists(): + raise HTTPException(status_code=404, detail="sns.db not found for this account.") + + filters: list[str] = [] + params: list[Any] = [] + + if users: + placeholders = ",".join(["?"] * len(users)) + filters.append(f"user_name IN ({placeholders})") + params.extend(users) + + if kw: + filters.append("content LIKE ?") + params.append(f"%{kw}%") + + where_sql = f"WHERE {' AND '.join(filters)}" if filters else "" + + sql = f""" + SELECT tid, user_name, content + FROM SnsTimeLine + {where_sql} + ORDER BY tid DESC + LIMIT ? OFFSET ? + """ + # Fetch 1 extra row to determine hasMore. + params_with_page = params + [limit + 1, offset] + + conn = sqlite3.connect(str(sns_db_path)) + conn.row_factory = sqlite3.Row + try: + rows = conn.execute(sql, params_with_page).fetchall() + except sqlite3.OperationalError as e: + logger.warning("[sns] query failed: %s", e) + raise HTTPException(status_code=500, detail=f"sns.db query failed: {e}") + finally: + conn.close() + + has_more = len(rows) > limit + rows = rows[:limit] + + post_usernames = [str(r["user_name"] or "").strip() for r in rows if str(r["user_name"] or "").strip()] + contact_rows = _load_contact_rows(contact_db_path, post_usernames) if contact_db_path.exists() else {} + + timeline: list[dict[str, Any]] = [] + for r in rows: + try: + tid = r["tid"] + except Exception: + tid = None + uname = str(r["user_name"] or "").strip() + parsed = _parse_timeline_xml(str(r["content"] or ""), uname) + display = _pick_display_name(contact_rows.get(uname), uname) if uname else uname + + timeline.append( + { + "id": str(tid if tid is not None else parsed.get("createTime") or "") or uname, + "tid": tid, + "username": uname or parsed.get("username") or "", + "displayName": display, + "createTime": int(parsed.get("createTime") or 0), + "contentDesc": str(parsed.get("contentDesc") or ""), + "location": str(parsed.get("location") or ""), + "media": parsed.get("media") or [], + "likes": parsed.get("likes") or [], + "comments": parsed.get("comments") or [], + } + ) + + return {"timeline": timeline, "hasMore": has_more, "limit": limit, "offset": offset} + + +class SnsMediaPicksSaveRequest(BaseModel): + account: Optional[str] = Field(None, description="账号目录名(可选,默认使用第一个)") + picks: dict[str, str] = Field(default_factory=dict, description="手动匹配表:`${postId}:${idx}` -> 32hex cacheKey") + + +@router.post("/api/sns/media_picks", summary="保存朋友圈图片手动匹配结果(本机)") +async def save_sns_media_picks(request: SnsMediaPicksSaveRequest): + account_dir = _resolve_account_dir(request.account) + count = _save_sns_media_picks(account_dir, request.picks or {}) + return {"status": "success", "count": int(count)} + + +@router.get("/api/sns/media_candidates", summary="获取朋友圈图片本地缓存候选") +def list_sns_media_candidates( + account: Optional[str] = None, + create_time: int = 0, + width: int = 0, + height: int = 0, + limit: int = 24, + offset: int = 0, +): + if limit <= 0: + raise HTTPException(status_code=400, detail="Invalid limit.") + if limit > 200: + limit = 200 + if offset < 0: + offset = 0 + + account_dir = _resolve_account_dir(account) + keys = _list_sns_cached_image_candidate_keys( + account_dir_str=str(account_dir), + create_time=int(create_time or 0), + width=int(width or 0), + height=int(height or 0), + ) + total = len(keys) + end = min(total, offset + limit) + items = [{"idx": i, "key": keys[i]} for i in range(offset, end)] + return {"count": total, "items": items, "hasMore": end < total, "limit": limit, "offset": offset} + + +@router.get("/api/sns/media", summary="获取朋友圈图片(本地缓存优先)") +async def get_sns_media( + account: Optional[str] = None, + create_time: int = 0, + width: int = 0, + height: int = 0, + total_size: int = 0, + idx: int = 0, + avoid_picked: int = 0, + post_id: Optional[str] = None, + pick: Optional[str] = None, + md5: Optional[str] = None, + url: Optional[str] = None, +): + account_dir = _resolve_account_dir(account) + + # 0) User-picked cache key override (stable across candidate ordering). + pick_key = _normalize_hex32(pick) + if pick_key: + wxid_dir = _resolve_account_wxid_dir(account_dir) + if wxid_dir: + local = _resolve_sns_cached_image_path_by_cache_key( + wxid_dir=wxid_dir, + cache_key=pick_key, + create_time=int(create_time or 0), + ) + if local: + try: + payload, media_type = _read_and_maybe_decrypt_media(Path(local), account_dir) + if payload and str(media_type or "").startswith("image/"): + resp = Response(content=payload, media_type=str(media_type or "image/jpeg")) + resp.headers["Cache-Control"] = "public, max-age=86400" + return resp + except Exception: + pass + + # Optional: avoid using a cache image that was manually pinned to another post. + # Only applies when frontend enables this setting and the current media has no explicit `pick`. + try: + avoid_flag = bool(int(avoid_picked or 0)) + except Exception: + avoid_flag = False + cur_post_id = str(post_id or "").strip() + reserved_other: set[str] = set() + if avoid_flag and (not pick_key) and cur_post_id: + picks_map = _load_sns_media_picks(account_dir) + for mk, ck in (picks_map or {}).items(): + pid = _sns_post_id_from_media_key(mk) + if not pid or pid == cur_post_id: + continue + if ck: + reserved_other.add(str(ck)) + + # 1) Try local decrypted cache first (works for old posts where CDN URLs return placeholders). + local = _resolve_sns_cached_image_path( + account_dir_str=str(account_dir), + create_time=int(create_time or 0), + width=int(width or 0), + height=int(height or 0), + idx=max(0, int(idx or 0)), + total_size=int(total_size or 0), + ) + if local and reserved_other: + try: + ck0 = _sns_cache_key_from_path(Path(local)) + if ck0 and ck0 in reserved_other: + local = None + except Exception: + pass + if local: + try: + payload, media_type = _read_and_maybe_decrypt_media(Path(local), account_dir) + if payload and str(media_type or "").startswith("image/"): + resp = Response(content=payload, media_type=str(media_type or "image/jpeg")) + resp.headers["Cache-Control"] = "public, max-age=86400" + return resp + except Exception: + pass + + # 1.5) If enabled, and the default match was skipped (or not found), pick the next candidate + # that is not reserved by a manual pick on another post. + if reserved_other and int(create_time or 0) > 0 and int(width or 0) > 0 and int(height or 0) > 0: + wxid_dir = _resolve_account_wxid_dir(account_dir) + if wxid_dir: + keys = _list_sns_cached_image_candidate_keys( + account_dir_str=str(account_dir), + create_time=int(create_time or 0), + width=int(width or 0), + height=int(height or 0), + ) + base_idx = max(0, int(idx or 0)) + for ck in keys[base_idx:]: + if not ck or ck in reserved_other: + continue + local2 = _resolve_sns_cached_image_path_by_cache_key( + wxid_dir=wxid_dir, + cache_key=str(ck), + create_time=int(create_time or 0), + ) + if not local2: + continue + try: + payload, media_type = _read_and_maybe_decrypt_media(Path(local2), account_dir) + if payload and str(media_type or "").startswith("image/"): + resp = Response(content=payload, media_type=str(media_type or "image/jpeg")) + resp.headers["Cache-Control"] = "public, max-age=86400" + return resp + except Exception: + continue + + # 2) Fallback to the remote URL (may still return a Tencent placeholder image). + u = str(url or "").strip() + if not u: + raise HTTPException(status_code=404, detail="SNS media not found.") + + # Delay-import to avoid pulling requests machinery during normal timeline listing. + from .chat_media import proxy_image # pylint: disable=import-outside-toplevel + + try: + return await proxy_image(u) + except HTTPException: + raise + except Exception as e: + raise HTTPException(status_code=502, detail=f"Fetch sns media failed: {e}") diff --git a/src/wechat_decrypt_tool/wcdb_realtime.py b/src/wechat_decrypt_tool/wcdb_realtime.py index a65790c..53d9423 100644 --- a/src/wechat_decrypt_tool/wcdb_realtime.py +++ b/src/wechat_decrypt_tool/wcdb_realtime.py @@ -68,6 +68,13 @@ def _load_wcdb_lib() -> ctypes.CDLL: lib.wcdb_close_account.argtypes = [ctypes.c_int64] lib.wcdb_close_account.restype = ctypes.c_int + # Optional: wcdb_set_my_wxid(handle, wxid) + try: + lib.wcdb_set_my_wxid.argtypes = [ctypes.c_int64, ctypes.c_char_p] + lib.wcdb_set_my_wxid.restype = ctypes.c_int + except Exception: + pass + lib.wcdb_get_sessions.argtypes = [ctypes.c_int64, ctypes.POINTER(ctypes.c_char_p)] lib.wcdb_get_sessions.restype = ctypes.c_int @@ -95,6 +102,37 @@ def _load_wcdb_lib() -> ctypes.CDLL: lib.wcdb_get_group_members.argtypes = [ctypes.c_int64, ctypes.c_char_p, ctypes.POINTER(ctypes.c_char_p)] lib.wcdb_get_group_members.restype = ctypes.c_int + # Optional: execute arbitrary SQL on a selected database kind/path. + # Signature: wcdb_exec_query(handle, kind, path, sql, out_json) + try: + lib.wcdb_exec_query.argtypes = [ + ctypes.c_int64, + ctypes.c_char_p, + ctypes.c_char_p, + ctypes.c_char_p, + ctypes.POINTER(ctypes.c_char_p), + ] + lib.wcdb_exec_query.restype = ctypes.c_int + except Exception: + pass + + # Optional (newer DLLs): wcdb_get_sns_timeline(handle, limit, offset, usernames_json, keyword, start_time, end_time, out_json) + try: + lib.wcdb_get_sns_timeline.argtypes = [ + ctypes.c_int64, + ctypes.c_int32, + ctypes.c_int32, + ctypes.c_char_p, + ctypes.c_char_p, + ctypes.c_int32, + ctypes.c_int32, + ctypes.POINTER(ctypes.c_char_p), + ] + lib.wcdb_get_sns_timeline.restype = ctypes.c_int + except Exception: + # Older wcdb_api.dll may not expose this export. + pass + lib.wcdb_get_logs.argtypes = [ctypes.POINTER(ctypes.c_char_p)] lib.wcdb_get_logs.restype = ctypes.c_int @@ -195,6 +233,30 @@ def open_account(session_db_path: Path, key_hex: str) -> int: return int(out_handle.value) +def set_my_wxid(handle: int, wxid: str) -> bool: + """Best-effort set the "my wxid" context for some WCDB APIs.""" + try: + _ensure_initialized() + except Exception: + return False + + lib = _load_wcdb_lib() + fn = getattr(lib, "wcdb_set_my_wxid", None) + if not fn: + return False + + w = str(wxid or "").strip() + if not w: + return False + + try: + rc = int(fn(ctypes.c_int64(int(handle)), w.encode("utf-8"))) + except Exception: + return False + + return rc == 0 + + def close_account(handle: int) -> None: try: h = int(handle) @@ -293,6 +355,93 @@ def get_avatar_urls(handle: int, usernames: list[str]) -> dict[str, str]: return {} +def exec_query(handle: int, *, kind: str, path: Optional[str], sql: str) -> list[dict[str, Any]]: + """Execute raw SQL on a specific db kind/path via WCDB. + + This is primarily used for SNS/other dbs that are not directly exposed by dedicated APIs. + """ + _ensure_initialized() + lib = _load_wcdb_lib() + fn = getattr(lib, "wcdb_exec_query", None) + if not fn: + raise WCDBRealtimeError("Current wcdb_api.dll does not support exec_query.") + + k = str(kind or "").strip() + if not k: + raise WCDBRealtimeError("Missing kind for exec_query.") + + s = str(sql or "").strip() + if not s: + return [] + + p = None if path is None else str(path or "").strip() + + out_json = _call_out_json( + fn, + ctypes.c_int64(int(handle)), + k.encode("utf-8"), + None if p is None else p.encode("utf-8"), + s.encode("utf-8"), + ) + decoded = _safe_load_json(out_json) + if isinstance(decoded, list): + out: list[dict[str, Any]] = [] + for x in decoded: + if isinstance(x, dict): + out.append(x) + return out + return [] + + +def get_sns_timeline( + handle: int, + *, + limit: int = 20, + offset: int = 0, + usernames: Optional[list[str]] = None, + keyword: str | None = None, + start_time: int = 0, + end_time: int = 0, +) -> list[dict[str, Any]]: + """Read Moments (SnsTimeLine) from the live encrypted db_storage via WCDB. + + Requires a newer wcdb_api.dll export: wcdb_get_sns_timeline. + """ + _ensure_initialized() + lib = _load_wcdb_lib() + fn = getattr(lib, "wcdb_get_sns_timeline", None) + if not fn: + raise WCDBRealtimeError("Current wcdb_api.dll does not support sns timeline.") + + lim = max(0, int(limit or 0)) + off = max(0, int(offset or 0)) + + users = [str(u or "").strip() for u in (usernames or []) if str(u or "").strip()] + users = list(dict.fromkeys(users)) + users_json = json.dumps(users, ensure_ascii=False) if users else "" + + kw = str(keyword or "").strip() + + payload = _call_out_json( + fn, + ctypes.c_int64(int(handle)), + ctypes.c_int32(lim), + ctypes.c_int32(off), + users_json.encode("utf-8"), + kw.encode("utf-8"), + ctypes.c_int32(int(start_time or 0)), + ctypes.c_int32(int(end_time or 0)), + ) + decoded = _safe_load_json(payload) + if isinstance(decoded, list): + out: list[dict[str, Any]] = [] + for x in decoded: + if isinstance(x, dict): + out.append(x) + return out + return [] + + def shutdown() -> None: global _initialized lib = _load_wcdb_lib() @@ -427,6 +576,11 @@ def ensure_connected(self, account_dir: Path, *, key_hex: Optional[str] = None) session_db_path = _resolve_session_db_path(db_storage_dir) handle = open_account(session_db_path, key) + # Some WCDB APIs (e.g. exec_query on non-session DBs) may require this context. + try: + set_my_wxid(handle, account) + except Exception: + pass conn = WCDBRealtimeConnection( account=account, From 55dc4559211115507134cd87ae7bf16cc0e380ad Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 27 Jan 2026 16:27:40 +0800 Subject: [PATCH 006/103] =?UTF-8?q?feat(sns):=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=8B=E5=8F=8B=E5=9C=88=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=B9=B6=E6=8E=A5=E5=85=A5=E5=80=99=E9=80=89=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 /sns 页面:时间线列表、账号切换、隐私模式、复制动态 JSON - 图片预览支持候选匹配切换并保存(localStorage + /api/sns/media_picks) - 聊天页侧边栏增加头像/朋友圈入口,隐私模式开关持久化(chat/sns 共用) - app.vue 增加 --dpr 与 sidebar rail CSS 变量,并在 resize 时刷新 - useApi 补充 sns 相关接口封装 --- frontend/app.vue | 21 +- frontend/composables/useApi.js | 43 + frontend/pages/chat/[[username]].vue | 130 ++- frontend/pages/sns.vue | 1092 ++++++++++++++++++++++++++ 4 files changed, 1262 insertions(+), 24 deletions(-) create mode 100644 frontend/pages/sns.vue diff --git a/frontend/app.vue b/frontend/app.vue index 75ca905..cb55b98 100644 --- a/frontend/app.vue +++ b/frontend/app.vue @@ -14,12 +14,23 @@ // So we detect desktop onMounted and update reactively. const isDesktop = ref(false) +const updateDprVar = () => { + const dpr = window.devicePixelRatio || 1 + document.documentElement.style.setProperty('--dpr', String(dpr)) +} + onMounted(() => { isDesktop.value = !!window?.wechatDesktop + updateDprVar() + window.addEventListener('resize', updateDprVar) +}) + +onBeforeUnmount(() => { + window.removeEventListener('resize', updateDprVar) }) const route = useRoute() -const isChatRoute = computed(() => route.path?.startsWith('/chat')) +const isChatRoute = computed(() => route.path?.startsWith('/chat') || route.path?.startsWith('/sns')) const rootClass = computed(() => { const base = 'bg-gradient-to-br from-green-50 via-emerald-50 to-green-100' @@ -34,6 +45,14 @@ const contentClass = computed(() => From 891d4b8a1b4d858e38e4cae18ead44da9487075a Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Wed, 28 Jan 2026 18:19:38 +0800 Subject: [PATCH 007/103] =?UTF-8?q?improvement(chat):=20WCDB=20=E5=9B=9E?= =?UTF-8?q?=E9=80=80=E8=A1=A5=E5=85=A8=E6=98=B5=E7=A7=B0/=E5=A4=B4?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - contact.db 缺失(企业/开放平台/openim/群等)时,回退 WCDB realtime 查询 displayName/avatarUrl - 覆盖消息/会话:senderDisplayName/senderAvatar、link card from、quoteTitle、会话列表 name/avatar - realtime 场景尽量复用已建立的 WCDB 连接;best-effort,失败不影响主流程 --- src/wechat_decrypt_tool/routers/chat.py | 252 ++++++++++++++++++++++-- 1 file changed, 238 insertions(+), 14 deletions(-) diff --git a/src/wechat_decrypt_tool/routers/chat.py b/src/wechat_decrypt_tool/routers/chat.py index 9455ad0..116ab0d 100644 --- a/src/wechat_decrypt_tool/routers/chat.py +++ b/src/wechat_decrypt_tool/routers/chat.py @@ -68,6 +68,8 @@ from ..wcdb_realtime import ( WCDBRealtimeError, WCDB_REALTIME, + get_avatar_urls as _wcdb_get_avatar_urls, + get_display_names as _wcdb_get_display_names, get_messages as _wcdb_get_messages, get_sessions as _wcdb_get_sessions, ) @@ -2231,6 +2233,35 @@ def _postprocess_full_messages( sender_contact_rows = _load_contact_rows(contact_db_path, uniq_senders) local_sender_avatars = _query_head_image_usernames(head_image_db_path, uniq_senders) + # contact.db may not include enterprise/openim contacts (or group chatroom records). WCDB has a more complete + # view of display names + avatar URLs, so we use it as a best-effort fallback. + wcdb_display_names: dict[str, str] = {} + wcdb_avatar_urls: dict[str, str] = {} + try: + need_display: list[str] = [] + need_avatar: list[str] = [] + for u in uniq_senders: + if not u: + continue + row = sender_contact_rows.get(u) + if _pick_display_name(row, u) == u: + need_display.append(u) + if (not _pick_avatar_url(row)) and (u not in local_sender_avatars): + need_avatar.append(u) + + need_display = list(dict.fromkeys(need_display)) + need_avatar = list(dict.fromkeys(need_avatar)) + if need_display or need_avatar: + wcdb_conn = WCDB_REALTIME.ensure_connected(account_dir) + with wcdb_conn.lock: + if need_display: + wcdb_display_names = _wcdb_get_display_names(wcdb_conn.handle, need_display) + if need_avatar: + wcdb_avatar_urls = _wcdb_get_avatar_urls(wcdb_conn.handle, need_avatar) + except Exception: + wcdb_display_names = {} + wcdb_avatar_urls = {} + for m in merged: # If appmsg doesn't provide sourcedisplayname, try mapping sourceusername to display name. if (not str(m.get("from") or "").strip()) and str(m.get("fromUsername") or "").strip(): @@ -2238,15 +2269,28 @@ def _postprocess_full_messages( frow = sender_contact_rows.get(fu) if frow is not None: m["from"] = _pick_display_name(frow, fu) + else: + wd = str(wcdb_display_names.get(fu) or "").strip() + if wd: + m["from"] = wd su = str(m.get("senderUsername") or "") if not su: continue row = sender_contact_rows.get(su) - m["senderDisplayName"] = _pick_display_name(row, su) + display_name = _pick_display_name(row, su) + if display_name == su: + wd = str(wcdb_display_names.get(su) or "").strip() + if wd and wd != su: + display_name = wd + m["senderDisplayName"] = display_name avatar_url = _pick_avatar_url(row) if not avatar_url and su in local_sender_avatars: avatar_url = base_url + _build_avatar_url(account_dir.name, su) + if not avatar_url: + wa = str(wcdb_avatar_urls.get(su) or "").strip() + if wa.lower().startswith(("http://", "https://")): + avatar_url = wa m["senderAvatar"] = avatar_url qu = str(m.get("quoteUsername") or "").strip() @@ -2262,9 +2306,15 @@ def _postprocess_full_messages( if remark: m["quoteTitle"] = remark elif not qt: - m["quoteTitle"] = _pick_display_name(qrow, qu) + title = _pick_display_name(qrow, qu) + if title == qu: + wd = str(wcdb_display_names.get(qu) or "").strip() + if wd and wd != qu: + title = wd + m["quoteTitle"] = title elif not qt: - m["quoteTitle"] = qu + wd = str(wcdb_display_names.get(qu) or "").strip() + m["quoteTitle"] = wd or qu # Media URL fallback: if CDN URLs missing, use local media endpoints. try: @@ -2401,6 +2451,7 @@ def list_chat_sessions( head_image_db_path = account_dir / "head_image.db" base_url = str(request.base_url).rstrip("/") + rt_conn = None rows: list[Any] if source_norm == "realtime": trace_id = f"rt-sessions-{int(time.time() * 1000)}-{threading.get_ident()}" @@ -2416,6 +2467,7 @@ def list_chat_sessions( try: logger.info("[%s] ensure wcdb connected account=%s", trace_id, account_dir.name) conn = WCDB_REALTIME.ensure_connected(account_dir) + rt_conn = conn logger.info("[%s] wcdb connected account=%s handle=%s", trace_id, account_dir.name, int(conn.handle)) logger.info("[%s] wcdb_get_sessions account=%s", trace_id, account_dir.name) wcdb_t0 = time.perf_counter() @@ -2529,6 +2581,36 @@ def _ts(v: Any) -> int: contact_rows = _load_contact_rows(contact_db_path, usernames) local_avatar_usernames = _query_head_image_usernames(head_image_db_path, usernames) + # Some sessions (notably enterprise groups / openim-related IDs) may be missing from decrypted contact.db + # (or lack nickname/avatar columns). In that case, fall back to WCDB APIs (same as WeFlow) to resolve + # display names + avatar URLs. + wcdb_display_names: dict[str, str] = {} + wcdb_avatar_urls: dict[str, str] = {} + try: + need_display: list[str] = [] + need_avatar: list[str] = [] + for u in usernames: + if not u: + continue + row = contact_rows.get(u) + if _pick_display_name(row, u) == u: + need_display.append(u) + if (not _pick_avatar_url(row)) and (u not in local_avatar_usernames): + need_avatar.append(u) + + need_display = list(dict.fromkeys(need_display)) + need_avatar = list(dict.fromkeys(need_avatar)) + if need_display or need_avatar: + wcdb_conn = rt_conn or WCDB_REALTIME.ensure_connected(account_dir) + with wcdb_conn.lock: + if need_display: + wcdb_display_names = _wcdb_get_display_names(wcdb_conn.handle, need_display) + if need_avatar: + wcdb_avatar_urls = _wcdb_get_avatar_urls(wcdb_conn.handle, need_avatar) + except Exception: + wcdb_display_names = {} + wcdb_avatar_urls = {} + preview_mode = str(preview or "").strip().lower() if preview_mode not in {"latest", "index", "session", "db", "none"}: preview_mode = "latest" @@ -2568,9 +2650,18 @@ def _ts(v: Any) -> int: c_row = contact_rows.get(username) display_name = _pick_display_name(c_row, username) + if display_name == username: + wd = str(wcdb_display_names.get(username) or "").strip() + if wd and wd != username: + display_name = wd + avatar_url = _pick_avatar_url(c_row) if not avatar_url and username in local_avatar_usernames: avatar_url = base_url + _build_avatar_url(account_dir.name, username) + if not avatar_url: + wa = str(wcdb_avatar_urls.get(username) or "").strip() + if wa.lower().startswith(("http://", "https://")): + avatar_url = wa last_message = "" if preview_mode == "session": @@ -3896,6 +3987,35 @@ def pick(*keys: str) -> Any: sender_contact_rows = _load_contact_rows(contact_db_path, uniq_senders) local_sender_avatars = _query_head_image_usernames(head_image_db_path, uniq_senders) + # contact.db may not include enterprise/openim contacts (or group chatroom records). WCDB has a more complete + # view of display names + avatar URLs, so we use it as a best-effort fallback. + wcdb_display_names: dict[str, str] = {} + wcdb_avatar_urls: dict[str, str] = {} + try: + need_display: list[str] = [] + need_avatar: list[str] = [] + for u in uniq_senders: + if not u: + continue + row = sender_contact_rows.get(u) + if _pick_display_name(row, u) == u: + need_display.append(u) + if (not _pick_avatar_url(row)) and (u not in local_sender_avatars): + need_avatar.append(u) + + need_display = list(dict.fromkeys(need_display)) + need_avatar = list(dict.fromkeys(need_avatar)) + if need_display or need_avatar: + wcdb_conn = WCDB_REALTIME.ensure_connected(account_dir) + with wcdb_conn.lock: + if need_display: + wcdb_display_names = _wcdb_get_display_names(wcdb_conn.handle, need_display) + if need_avatar: + wcdb_avatar_urls = _wcdb_get_avatar_urls(wcdb_conn.handle, need_avatar) + except Exception: + wcdb_display_names = {} + wcdb_avatar_urls = {} + for m in merged: # If appmsg doesn't provide sourcedisplayname, try mapping sourceusername to display name. if (not str(m.get("from") or "").strip()) and str(m.get("fromUsername") or "").strip(): @@ -3903,15 +4023,28 @@ def pick(*keys: str) -> Any: frow = sender_contact_rows.get(fu) if frow is not None: m["from"] = _pick_display_name(frow, fu) + else: + wd = str(wcdb_display_names.get(fu) or "").strip() + if wd: + m["from"] = wd su = str(m.get("senderUsername") or "") if not su: continue row = sender_contact_rows.get(su) - m["senderDisplayName"] = _pick_display_name(row, su) + display_name = _pick_display_name(row, su) + if display_name == su: + wd = str(wcdb_display_names.get(su) or "").strip() + if wd and wd != su: + display_name = wd + m["senderDisplayName"] = display_name avatar_url = _pick_avatar_url(row) if not avatar_url and su in local_sender_avatars: avatar_url = base_url + _build_avatar_url(account_dir.name, su) + if not avatar_url: + wa = str(wcdb_avatar_urls.get(su) or "").strip() + if wa.lower().startswith(("http://", "https://")): + avatar_url = wa m["senderAvatar"] = avatar_url qu = str(m.get("quoteUsername") or "").strip() @@ -3927,9 +4060,15 @@ def pick(*keys: str) -> Any: if remark: m["quoteTitle"] = remark elif not qt: - m["quoteTitle"] = _pick_display_name(qrow, qu) + title = _pick_display_name(qrow, qu) + if title == qu: + wd = str(wcdb_display_names.get(qu) or "").strip() + if wd and wd != qu: + title = wd + m["quoteTitle"] = title elif not qt: - m["quoteTitle"] = qu + wd = str(wcdb_display_names.get(qu) or "").strip() + m["quoteTitle"] = wd or qu # Media URL fallback: if CDN URLs missing, use local media endpoints. try: @@ -4357,11 +4496,48 @@ async def _search_chat_messages_via_fts( uniq_usernames = list(dict.fromkeys([username] + [str(x.get("senderUsername") or "") for x in hits])) contact_rows = _load_contact_rows(contact_db_path, uniq_usernames) local_avatar_usernames = _query_head_image_usernames(head_image_db_path, uniq_usernames) + + wcdb_display_names: dict[str, str] = {} + wcdb_avatar_urls: dict[str, str] = {} + try: + need_display: list[str] = [] + need_avatar: list[str] = [] + for u in uniq_usernames: + uu = str(u or "").strip() + if not uu: + continue + row = contact_rows.get(uu) + if _pick_display_name(row, uu) == uu: + need_display.append(uu) + if (not _pick_avatar_url(row)) and (uu not in local_avatar_usernames): + need_avatar.append(uu) + + need_display = list(dict.fromkeys(need_display)) + need_avatar = list(dict.fromkeys(need_avatar)) + if need_display or need_avatar: + wcdb_conn = WCDB_REALTIME.ensure_connected(account_dir) + with wcdb_conn.lock: + if need_display: + wcdb_display_names = _wcdb_get_display_names(wcdb_conn.handle, need_display) + if need_avatar: + wcdb_avatar_urls = _wcdb_get_avatar_urls(wcdb_conn.handle, need_avatar) + except Exception: + wcdb_display_names = {} + wcdb_avatar_urls = {} + conv_row = contact_rows.get(username) conv_name = _pick_display_name(conv_row, username) + if conv_name == username: + wd = str(wcdb_display_names.get(username) or "").strip() + if wd and wd != username: + conv_name = wd conv_avatar = _pick_avatar_url(conv_row) if (not conv_avatar) and (username in local_avatar_usernames): conv_avatar = base_url + _build_avatar_url(account_dir.name, username) + if not conv_avatar: + wa = str(wcdb_avatar_urls.get(username) or "").strip() + if wa.lower().startswith(("http://", "https://")): + conv_avatar = wa for h in hits: su = str(h.get("senderUsername") or "").strip() @@ -4369,14 +4545,19 @@ async def _search_chat_messages_via_fts( h["conversationAvatar"] = conv_avatar if su: row = contact_rows.get(su) - h["senderDisplayName"] = ( - _pick_display_name(row, su) - if row is not None - else (conv_name if su == username else su) - ) + display_name = _pick_display_name(row, su) if row is not None else (conv_name if su == username else su) + if display_name == su: + wd = str(wcdb_display_names.get(su) or "").strip() + if wd and wd != su: + display_name = wd + h["senderDisplayName"] = display_name avatar_url = _pick_avatar_url(row) if (not avatar_url) and (su in local_avatar_usernames): avatar_url = base_url + _build_avatar_url(account_dir.name, su) + if not avatar_url: + wa = str(wcdb_avatar_urls.get(su) or "").strip() + if wa.lower().startswith(("http://", "https://")): + avatar_url = wa h["senderAvatar"] = avatar_url else: uniq_contacts = list( @@ -4387,24 +4568,67 @@ async def _search_chat_messages_via_fts( contact_rows = _load_contact_rows(contact_db_path, uniq_contacts) local_avatar_usernames = _query_head_image_usernames(head_image_db_path, uniq_contacts) + wcdb_display_names: dict[str, str] = {} + wcdb_avatar_urls: dict[str, str] = {} + try: + need_display: list[str] = [] + need_avatar: list[str] = [] + for u in uniq_contacts: + uu = str(u or "").strip() + if not uu: + continue + row = contact_rows.get(uu) + if _pick_display_name(row, uu) == uu: + need_display.append(uu) + if (not _pick_avatar_url(row)) and (uu not in local_avatar_usernames): + need_avatar.append(uu) + + need_display = list(dict.fromkeys(need_display)) + need_avatar = list(dict.fromkeys(need_avatar)) + if need_display or need_avatar: + wcdb_conn = WCDB_REALTIME.ensure_connected(account_dir) + with wcdb_conn.lock: + if need_display: + wcdb_display_names = _wcdb_get_display_names(wcdb_conn.handle, need_display) + if need_avatar: + wcdb_avatar_urls = _wcdb_get_avatar_urls(wcdb_conn.handle, need_avatar) + except Exception: + wcdb_display_names = {} + wcdb_avatar_urls = {} + for h in hits: cu = str(h.get("username") or "").strip() su = str(h.get("senderUsername") or "").strip() crow = contact_rows.get(cu) conv_name = _pick_display_name(crow, cu) if cu else "" + if cu and (conv_name == cu): + wd = str(wcdb_display_names.get(cu) or "").strip() + if wd and wd != cu: + conv_name = wd h["conversationName"] = conv_name or cu conv_avatar = _pick_avatar_url(crow) if (not conv_avatar) and cu and (cu in local_avatar_usernames): conv_avatar = base_url + _build_avatar_url(account_dir.name, cu) + if not conv_avatar and cu: + wa = str(wcdb_avatar_urls.get(cu) or "").strip() + if wa.lower().startswith(("http://", "https://")): + conv_avatar = wa h["conversationAvatar"] = conv_avatar if su: row = contact_rows.get(su) - h["senderDisplayName"] = ( - _pick_display_name(row, su) if row is not None else (conv_name if su == cu else su) - ) + display_name = _pick_display_name(row, su) if row is not None else (conv_name if su == cu else su) + if display_name == su: + wd = str(wcdb_display_names.get(su) or "").strip() + if wd and wd != su: + display_name = wd + h["senderDisplayName"] = display_name avatar_url = _pick_avatar_url(row) if (not avatar_url) and (su in local_avatar_usernames): avatar_url = base_url + _build_avatar_url(account_dir.name, su) + if not avatar_url: + wa = str(wcdb_avatar_urls.get(su) or "").strip() + if wa.lower().startswith(("http://", "https://")): + avatar_url = wa h["senderAvatar"] = avatar_url return { From 950fb4c7b4123fa94d409042240f4a44f511cbe1 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Wed, 28 Jan 2026 18:19:58 +0800 Subject: [PATCH 008/103] =?UTF-8?q?improvement(chat):=20=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8F=AF=E6=8B=96=E6=8B=BD=E8=B0=83=E5=AE=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=20realtime=20=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 中间栏新增拖拽调宽/双击重置;宽度按物理 px 持久化(兼容旧 key,并按 dpr 换算) - 关闭 realtime 前触发 syncChatRealtimeMessages(max_scan=5000),避免回退到过期解密快照 - 按 dpr 调整联系人/消息头像与 skeleton 尺寸 --- frontend/pages/chat/[[username]].vue | 195 ++++++++++++++++++++++++++- 1 file changed, 188 insertions(+), 7 deletions(-) diff --git a/frontend/pages/chat/[[username]].vue b/frontend/pages/chat/[[username]].vue index f62b337..daa21f0 100644 --- a/frontend/pages/chat/[[username]].vue +++ b/frontend/pages/chat/[[username]].vue @@ -99,7 +99,18 @@ -

+
+ +
@@ -143,8 +154,8 @@
-
-
+
+
@@ -159,12 +170,12 @@
@@ -26,8 +26,7 @@ const { theme, setTheme } = useWrappedTheme() const themes = [ { value: 'off', label: 'Modern' }, { value: 'gameboy', label: 'GameBoy' }, - { value: 'dos', label: 'DOS' }, - { value: 'vhs', label: 'VHS' } + { value: 'dos', label: 'DOS' } ] diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue index c33798b..904f6c8 100644 --- a/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue +++ b/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue @@ -25,8 +25,7 @@ const { theme, setTheme } = useWrappedTheme() const themes = [ { value: 'off', label: 'MODERN' }, { value: 'gameboy', label: 'GAME BOY' }, - { value: 'dos', label: 'DOS' }, - { value: 'vhs', label: 'VHS' } + { value: 'dos', label: 'DOS' } ] const selectTheme = (value) => { diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue index 52f401b..c65b74d 100644 --- a/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue +++ b/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue @@ -20,12 +20,11 @@ diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherVhs.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherVhs.vue deleted file mode 100644 index ae1cf62..0000000 --- a/frontend/components/wrapped/shared/WrappedThemeSwitcherVhs.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - - - diff --git a/frontend/components/wrapped/shared/WrappedYearSelector.vue b/frontend/components/wrapped/shared/WrappedYearSelector.vue index 1ddec9b..00e3873 100644 --- a/frontend/components/wrapped/shared/WrappedYearSelector.vue +++ b/frontend/components/wrapped/shared/WrappedYearSelector.vue @@ -1,34 +1,7 @@ @@ -263,72 +240,4 @@ onBeforeUnmount(() => { min-width: 50px; text-align: center; } - -/* ========== VHS 风格 ========== */ -.year-vhs { - display: flex; - align-items: center; - gap: 6px; - padding: 6px 10px; - background: linear-gradient(180deg, #2a2a3e 0%, #1a1a2e 100%); - border-radius: 4px; - border: 1px solid #3a3a5e; -} - -.vhs-transport-btn { - display: flex; - align-items: center; - justify-content: center; - width: 28px; - height: 22px; - background: linear-gradient(180deg, #4a4a5e 0%, #2a2a3e 50%, #3a3a4e 100%); - border: 1px solid #5a5a7e; - border-radius: 3px; - color: #cccccc; - font-size: 8px; - cursor: pointer; - box-shadow: - 0 2px 0 #1a1a2e, - inset 0 1px 0 rgba(255,255,255,0.2); - transition: all 0.05s; -} - -.vhs-transport-btn:hover:not(:disabled) { - background: linear-gradient(180deg, #5a5a6e 0%, #3a3a4e 50%, #4a4a5e 100%); -} - -.vhs-transport-btn:active:not(:disabled) { - transform: translateY(2px); - box-shadow: - 0 0 0 #1a1a2e, - inset 0 1px 2px rgba(0,0,0,0.3); -} - -.vhs-transport-btn:disabled { - opacity: 0.3; - cursor: not-allowed; -} - -.vhs-icon { - letter-spacing: -2px; -} - -.vhs-led-display { - background: #0a0a0a; - border: 1px solid #3a3a3a; - padding: 4px 10px; - border-radius: 2px; - box-shadow: inset 0 1px 3px rgba(0,0,0,0.5); -} - -.vhs-led-digit { - font-family: 'Courier New', monospace; - font-size: 14px; - font-weight: bold; - color: #ff3333; - text-shadow: - 0 0 4px #ff3333, - 0 0 8px #ff3333; - letter-spacing: 2px; -} diff --git a/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue b/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue index 81d9173..173d90e 100644 --- a/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue +++ b/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue @@ -391,19 +391,4 @@ watch( font-family: 'Courier New', monospace; text-shadow: 0 0 3px rgba(51, 255, 51, 0.6); } - -/* ========== VHS 主题 ========== */ -.wrapped-theme-vhs .wrapped-chat-replay { - --wr-chat-frame-bg: #16213e; - --wr-chat-top-bg: #0f3460; - --wr-chat-chat-bg: #1a1a2e; - --wr-chat-border: #0f3460; - - --wr-chat-bubble-bg: linear-gradient(135deg, #e94560 0%, #0f3460 100%); - --wr-chat-bubble-tail: #0f3460; - --wr-chat-bubble-text: #ffffff; - - --wr-chat-typing-bg: rgba(255, 255, 255, 0.08); - --wr-chat-typing-dot: rgba(255, 255, 255, 0.85); -} diff --git a/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue b/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue index dd5ab79..aa64d54 100644 --- a/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue +++ b/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue @@ -377,56 +377,4 @@ const labels = computed(() => { color: #33ff33 !important; text-shadow: 0 0 5px #33ff33; } - -/* ========== VHS 主题 ========== */ - -.wrapped-theme-vhs .overview-card { - background: #16213e !important; - border: 1px solid #0f3460 !important; - backdrop-filter: none; -} - -.wrapped-theme-vhs .overview-grid-line { - stroke: #0f3460; - stroke-opacity: 0.6; -} - -.wrapped-theme-vhs .overview-axis-line { - stroke: #0f3460; - stroke-opacity: 0.8; -} - -.wrapped-theme-vhs .overview-data-polygon { - fill: rgba(233, 69, 96, 0.2); - stroke: #e94560; -} - -.wrapped-theme-vhs .overview-data-node { - fill: #e94560; - stroke: #16213e; -} - -.wrapped-theme-vhs .overview-label { - fill: #a0a0a0; -} - -.wrapped-theme-vhs .overview-progress-bg { - background: #0f3460 !important; -} - -.wrapped-theme-vhs .overview-progress-fill { - background: linear-gradient(90deg, #e94560, #0f3460) !important; -} - -.wrapped-theme-vhs .wrapped-label, -.wrapped-theme-vhs .wrapped-body { - color: #a0a0a0 !important; -} - -.wrapped-theme-vhs .wrapped-number { - color: #e94560 !important; - text-shadow: - -1px 0 rgba(0, 255, 247, 0.5), - 1px 0 rgba(255, 0, 255, 0.5); -} diff --git a/frontend/components/wrapped/visualizations/MessageCharsChart.vue b/frontend/components/wrapped/visualizations/MessageCharsChart.vue index 9e99624..159f4eb 100644 --- a/frontend/components/wrapped/visualizations/MessageCharsChart.vue +++ b/frontend/components/wrapped/visualizations/MessageCharsChart.vue @@ -1321,218 +1321,6 @@ const getLabelStyle = (code) => { text-shadow: 0 0 5px #ff3333; } -/* ========== VHS 录像带主题 - 复古视频风格键盘 ========== */ - -.wrapped-theme-vhs .keyboard-outer { - border-radius: 4px; - background: linear-gradient(180deg, #2a2a4e 0%, #1a1a2e 100%); - border: 2px solid #0f3460; - padding: 4px; - box-shadow: - 0 4px 20px rgba(233, 69, 96, 0.2), - inset 0 1px 0 rgba(255, 255, 255, 0.1); -} - -.wrapped-theme-vhs .keyboard-inner { - border-radius: 2px; - background: linear-gradient(180deg, #16213e 0%, #0f0f23 100%); - border: 1px solid #0f3460; - padding: 6px; -} - -.wrapped-theme-vhs .keyboard-header { - border-bottom: 1px solid #0f3460; - padding-bottom: 6px; - margin-bottom: 6px; -} - -.wrapped-theme-vhs .dot { - border-radius: 50%; - width: 8px; - height: 8px; -} -.wrapped-theme-vhs .dot-red { - background: #e94560; - box-shadow: 0 0 8px #e94560; - animation: vhs-dot-flicker 0.1s infinite; -} -.wrapped-theme-vhs .dot-yellow { background: #f39c12; box-shadow: 0 0 5px #f39c12; } -.wrapped-theme-vhs .dot-green { background: #27ae60; box-shadow: 0 0 5px #27ae60; } - -@keyframes vhs-dot-flicker { - 0%, 90%, 100% { opacity: 1; } - 92% { opacity: 0.7; } - 95% { opacity: 1; } - 97% { opacity: 0.8; } -} - -.wrapped-theme-vhs .keyboard-stats, -.wrapped-theme-vhs .keyboard-hint { - font-family: 'Courier New', monospace; - color: #eaeaea; - text-shadow: - -1px 0 #00fff7, - 1px 0 #ff00ff; -} - -.wrapped-theme-vhs .keyboard-body { - border-radius: 2px; - background: #0a0a1a; - box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.5); -} - -.wrapped-theme-vhs .kb-key::before { - border-radius: 2px; - background: #1a1a2e; -} - -.wrapped-theme-vhs .kb-key-top { - border-radius: 2px; - border: 1px solid #0f3460 !important; - background: linear-gradient(180deg, #2a2a4e 0%, #1a1a2e 100%) !important; - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.1), - 0 2px 4px rgba(0, 0, 0, 0.3) !important; -} - -.wrapped-theme-vhs .kb-label { - font-family: 'Courier New', monospace; - color: #eaeaea !important; - text-shadow: - -1px 0 rgba(0, 255, 247, 0.5), - 1px 0 rgba(255, 0, 255, 0.5); - filter: none !important; -} - -.wrapped-theme-vhs .kb-sub { - font-family: 'Courier New', monospace; - color: #a0a0a0 !important; - filter: none !important; -} - -.wrapped-theme-vhs .kb-space-bar { - border-radius: 2px; - background: linear-gradient(90deg, #e94560 0%, #0f3460 100%); - height: 3px; -} - -.wrapped-theme-vhs .keyboard-brand { - font-family: 'Courier New', monospace; - color: #e94560; - text-shadow: - -1px 0 #00fff7, - 1px 0 #ff00ff; - letter-spacing: 3px; -} - -/* VHS 磨损效果 - 色彩溢出增强 */ -.wrapped-theme-vhs .kb-level-1 .kb-label, -.wrapped-theme-vhs .kb-level-2 .kb-label { - text-shadow: - -1px 0 rgba(0, 255, 247, 0.6), - 1px 0 rgba(255, 0, 255, 0.6); -} -.wrapped-theme-vhs .kb-level-3 .kb-label, -.wrapped-theme-vhs .kb-level-4 .kb-label { - text-shadow: - -2px 0 rgba(0, 255, 247, 0.7), - 2px 0 rgba(255, 0, 255, 0.7); -} -.wrapped-theme-vhs .kb-level-5 .kb-label, -.wrapped-theme-vhs .kb-level-6 .kb-label { - text-shadow: - -2px 0 rgba(0, 255, 247, 0.8), - 2px 0 rgba(255, 0, 255, 0.8); - animation: vhs-text-glitch 3s infinite; -} -.wrapped-theme-vhs .kb-level-7 .kb-key-top, -.wrapped-theme-vhs .kb-level-8 .kb-key-top { - animation: vhs-key-glitch 2s infinite; -} -.wrapped-theme-vhs .kb-level-9 .kb-key-top { - animation: vhs-key-glitch 1s infinite; - border-color: #e94560 !important; -} - -@keyframes vhs-text-glitch { - 0%, 95%, 100% { transform: translateX(0); } - 96% { transform: translateX(-1px); } - 97% { transform: translateX(1px); } - 98% { transform: translateX(-1px); } - 99% { transform: translateX(0); } -} - -@keyframes vhs-key-glitch { - 0%, 92%, 100% { - transform: translate(0); - filter: none; - } - 93% { - transform: translate(-1px, 0); - filter: hue-rotate(90deg); - } - 95% { - transform: translate(1px, 0); - filter: hue-rotate(-90deg); - } - 97% { - transform: translate(0, -1px); - filter: saturate(1.5); - } -} - -.wrapped-theme-vhs .kb-level-10 .kb-key-top { - opacity: 0 !important; -} -.wrapped-theme-vhs .kb-level-10::before { - background: linear-gradient( - 45deg, - #1a1a2e 25%, - #0f3460 25%, - #0f3460 50%, - #1a1a2e 50%, - #1a1a2e 75%, - #0f3460 75% - ) !important; - background-size: 4px 4px; - animation: vhs-static 0.5s infinite; -} - -@keyframes vhs-static { - 0% { background-position: 0 0; } - 100% { background-position: 4px 4px; } -} - -.wrapped-theme-vhs .kb-level-10::after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 6px; - height: 6px; - background: #e94560; - border-radius: 50%; - box-shadow: 0 0 10px #e94560; - animation: vhs-dot-flicker 0.2s infinite; -} - -/* VHS 聊天气泡主题适配 */ -.wrapped-theme-vhs .bubble-left, -.wrapped-theme-vhs .bubble-right { - background: #16213e; - border: 1px solid #0f3460; -} -.wrapped-theme-vhs .bubble-left::before { - border-right-color: #16213e; -} -.wrapped-theme-vhs .bubble-right { - background: linear-gradient(135deg, #e94560 0%, #0f3460 100%); -} -.wrapped-theme-vhs .bubble-right::after { - border-left-color: #0f3460; -} - /* DOS 聊天气泡主题适配 */ .wrapped-theme-dos .bubble-left, .wrapped-theme-dos .bubble-right { @@ -1560,12 +1348,6 @@ const getLabelStyle = (code) => { stroke: #33ff33; } -/* VHS 头像适配 */ -.wrapped-theme-vhs .avatar-box { - background: #16213e; - border-color: #0f3460; -} - /* ========== Game Boy 主题 - 聊天气泡适配 ========== */ /* 聊天区域背景 */ @@ -1655,28 +1437,4 @@ const getLabelStyle = (code) => { text-shadow: 0 0 3px #33ff33; font-family: 'Courier New', monospace; } - -/* ========== VHS 主题 - 聊天气泡文字适配 ========== */ - -.wrapped-theme-vhs .bubble-left .wrapped-label, -.wrapped-theme-vhs .bubble-right .wrapped-label { - color: #a0a0a0 !important; -} - -.wrapped-theme-vhs .bubble-left .wrapped-number, -.wrapped-theme-vhs .bubble-right .wrapped-number { - color: #eaeaea !important; - text-shadow: - -1px 0 rgba(0, 255, 247, 0.5), - 1px 0 rgba(255, 0, 255, 0.5); -} - -.wrapped-theme-vhs .bubble-left .wrapped-body, -.wrapped-theme-vhs .bubble-right .wrapped-body { - color: #a0a0a0 !important; -} - -.wrapped-theme-vhs .avatar-box svg { - stroke: #e94560; -} diff --git a/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue b/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue index 5e9df16..2b611f9 100644 --- a/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue +++ b/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue @@ -157,18 +157,4 @@ const originFor = (weekdayIndex, hour) => { .wrapped-theme-dos .heatmap-legend-cell { border-radius: 0 !important; } - -/* ========== VHS 主题 ========== */ - -.wrapped-theme-vhs .wrapped-label, -.wrapped-theme-vhs .wrapped-body { - color: #a0a0a0 !important; -} - -.wrapped-theme-vhs .wrapped-number { - color: #e94560 !important; - text-shadow: - -1px 0 rgba(0, 255, 247, 0.5), - 1px 0 rgba(255, 0, 255, 0.5); -} diff --git a/frontend/composables/useWrappedTheme.js b/frontend/composables/useWrappedTheme.js index 3b949b8..ed54aeb 100644 --- a/frontend/composables/useWrappedTheme.js +++ b/frontend/composables/useWrappedTheme.js @@ -1,10 +1,10 @@ /** * 年度总结页面主题管理 composable - * 支持四种主题:modern(现代)、gameboy(Game Boy)、dos(DOS终端)、vhs(VHS录像带) + * 支持三种主题:modern(现代)、gameboy(Game Boy)、dos(DOS终端) */ const STORAGE_KEY = 'wrapped-theme' -const VALID_THEMES = ['off', 'gameboy', 'dos', 'vhs'] +const VALID_THEMES = ['off', 'gameboy', 'dos'] // 全局响应式状态(跨组件共享) const theme = ref('off') @@ -62,13 +62,12 @@ export function useWrappedTheme() { const names = { off: 'Modern', gameboy: 'Game Boy', - dos: 'DOS Terminal', - vhs: 'VHS Tape' + dos: 'DOS Terminal' } return names[theme.value] || 'Modern' }) - // 全局 F1-F4 快捷键切换主题(仅初始化一次) + // 全局 F1-F3 快捷键切换主题(仅初始化一次) const initKeyboardShortcuts = () => { if (keyboardInitialized || !import.meta.client) return keyboardInitialized = true @@ -89,9 +88,6 @@ export function useWrappedTheme() { } else if (e.key === 'F3') { e.preventDefault() setTheme('dos') - } else if (e.key === 'F4') { - e.preventDefault() - setTheme('vhs') } } diff --git a/frontend/pages/wrapped/index.vue b/frontend/pages/wrapped/index.vue index c4ea32d..25f6880 100644 --- a/frontend/pages/wrapped/index.vue +++ b/frontend/pages/wrapped/index.vue @@ -183,8 +183,8 @@ const year = ref(Number(route.query?.year) || new Date().getFullYear()) // 分享视图不展示账号信息:默认让后端自动选择;需要指定时可用 query ?account=wxid_xxx const account = ref(typeof route.query?.account === 'string' ? route.query.account : '') -// 主题管理:modern / gameboy / dos / vhs -const { theme, setTheme, cycleTheme, isRetro, themeClass } = useWrappedTheme() +// 主题管理:modern / gameboy / dos +const { theme, cycleTheme, isRetro, themeClass } = useWrappedTheme() const accounts = ref([]) const accountsLoading = ref(true) @@ -219,8 +219,7 @@ let navUnlockTimer = null const THEME_BG = { off: '#F3FFF8', // Modern: 浅绿 gameboy: '#9bbc0f', // Game Boy: 亮绿 - dos: '#0a0a0a', // DOS: 黑色 - vhs: '#0a0a14' // VHS: 深蓝黑 + dos: '#0a0a0a' // DOS: 黑色 } const slides = computed(() => { diff --git a/frontend/utils/wrapped/heatmap.js b/frontend/utils/wrapped/heatmap.js index 0d5d19c..b58e135 100644 --- a/frontend/utils/wrapped/heatmap.js +++ b/frontend/utils/wrapped/heatmap.js @@ -58,15 +58,6 @@ export const themedHeatColor = (value, max, theme) => { const light = 20 + 60 * t return `hsl(120 100% ${light.toFixed(1)}%)` } - case 'vhs': { - // VHS: from dark blue to pink/magenta - if (t === 0) return 'rgba(15, 52, 96, 0.3)' - // Interpolate from #0f3460 (dark blue) to #e94560 (pink) - const r = Math.round(15 + (233 - 15) * t) - const g = Math.round(52 + (69 - 52) * t) - const b = Math.round(96 + (96 - 96) * t) - return `rgb(${r}, ${g}, ${b})` - } default: // Modern (off) - use original heatColor return heatColor(value, max) @@ -79,4 +70,3 @@ export const formatHourRange = (hour) => { const hh = String(h).padStart(2, '0') return `${hh}:00-${hh}:59` } - From 980f15d0a4ed9c593f45556540d9df57914b30ff Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Mon, 2 Feb 2026 00:04:54 +0800 Subject: [PATCH 019/103] =?UTF-8?q?feat(wrapped-ui):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20Win98=20=E4=B8=BB=E9=A2=98=E4=B8=8E=E6=A1=8C=E9=9D=A2?= =?UTF-8?q?=E5=8C=96=E5=A4=96=E8=A7=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 主题系统新增 win98(显示名 Windows 98,快捷键扩展到 F1-F4),并区分 retro(pixel/CRT) 与桌面 GUI 主题 - 年度总结页新增 Win98 桌面背景与底部任务栏(背景色/视口高度适配) - 封面与卡片 slide 形态支持 Win98 窗口外观(title bar/icon/controls) - 主题切换器补充 Win98 选项并新增 Win98 专属切换器 - 新增 Win98 图标资源(Start + 桌面图标) --- frontend/assets/css/tailwind.css | 205 ++++++++++++++++++ .../wrapped/shared/WrappedCardShell.vue | 63 +++++- .../wrapped/shared/WrappedControls.vue | 22 ++ .../wrapped/shared/WrappedDeckBackground.vue | 58 ++++- .../components/wrapped/shared/WrappedHero.vue | 75 ++++++- .../wrapped/shared/WrappedThemeSwitcher.vue | 3 +- .../shared/WrappedThemeSwitcherDos.vue | 5 +- .../shared/WrappedThemeSwitcherGameboy.vue | 3 +- .../shared/WrappedThemeSwitcherModern.vue | 3 +- .../shared/WrappedThemeSwitcherWin98.vue | 74 +++++++ .../wrapped/shared/WrappedWin98Taskbar.vue | 169 +++++++++++++++ .../wrapped/shared/WrappedYearSelector.vue | 72 ++++++ frontend/composables/useWrappedTheme.js | 14 +- frontend/pages/wrapped/index.vue | 30 ++- .../assets/images/win98-icons/folder.png | Bin 0 -> 571 bytes .../public/assets/images/win98-icons/mail.png | Bin 0 -> 696 bytes .../assets/images/win98-icons/photos.png | Bin 0 -> 773 bytes .../assets/images/win98-icons/recycle.png | Bin 0 -> 388 bytes frontend/public/assets/images/windows-0.png | Bin 0 -> 458 bytes 19 files changed, 767 insertions(+), 29 deletions(-) create mode 100644 frontend/components/wrapped/shared/WrappedThemeSwitcherWin98.vue create mode 100644 frontend/components/wrapped/shared/WrappedWin98Taskbar.vue create mode 100644 frontend/public/assets/images/win98-icons/folder.png create mode 100644 frontend/public/assets/images/win98-icons/mail.png create mode 100644 frontend/public/assets/images/win98-icons/photos.png create mode 100644 frontend/public/assets/images/win98-icons/recycle.png create mode 100644 frontend/public/assets/images/windows-0.png diff --git a/frontend/assets/css/tailwind.css b/frontend/assets/css/tailwind.css index 84a4645..96d1bc2 100644 --- a/frontend/assets/css/tailwind.css +++ b/frontend/assets/css/tailwind.css @@ -1287,3 +1287,208 @@ color: #000000 !important; text-shadow: none; } + +/* ============================================ + Theme 3: Windows 95/98 - Win98 + ============================================ */ +.wrapped-theme-win98 { + /* System-like colors (approx.) */ + --win98-face: #c0c0c0; /* ButtonFace */ + --win98-hi: #ffffff; /* ButtonHighlight */ + --win98-shadow: #808080; /* ButtonShadow */ + --win98-dkshadow: #000000; /* Black */ + --win98-outline: #dedede; /* Extra light line (common in Win95 clones) */ + --win98-dither: repeating-conic-gradient(#bdbebd 0% 25%, #ffffff 0% 50%) 50% / 2px 2px; + + --win98-title: #000080; /* ActiveCaption */ + --win98-title2: #1084d0; /* Caption gradient (approx.) */ + --win98-title-text: #ffffff; + --win98-title-inactive: #7b7d7b; + --win98-title-inactive-text: #e6e6e6; + + /* Map to Wrapped theme variables */ + --wrapped-bg: #ffffff; /* fields/content */ + --wrapped-card-bg: var(--win98-face); + --wrapped-text: #000000; + --wrapped-text-secondary: #404040; + --wrapped-accent: var(--win98-title); + --wrapped-border: var(--win98-shadow); + --wrapped-warning: #800000; + + font-family: "MS Sans Serif", Tahoma, "Microsoft Sans Serif", "Segoe UI", sans-serif !important; +} + +/* Win98: hard edges */ +.wrapped-theme-win98 [class*="rounded"] { + border-radius: 0 !important; +} + +/* Win98: baseline typography (override Tailwind inline colors via !important) */ +.wrapped-theme-win98 .wrapped-title { + color: var(--wrapped-text) !important; +} + +.wrapped-theme-win98 .wrapped-body, +.wrapped-theme-win98 .wrapped-label { + color: var(--wrapped-text-secondary) !important; +} + +.wrapped-theme-win98 .wrapped-number { + color: var(--wrapped-accent) !important; +} + +/* Win98: generic raised button */ +.wrapped-theme-win98 button { + background: var(--win98-face) !important; + color: #000000 !important; + border-radius: 0 !important; + text-shadow: none !important; + + /* Win95-ish bevel: light (top/left) + shadow (bottom/right) + hard drop */ + border-top: 1px solid var(--win98-hi) !important; + border-left: 1px solid var(--win98-hi) !important; + border-right: 1px solid var(--win98-shadow) !important; + border-bottom: 1px solid var(--win98-shadow) !important; + box-shadow: 1px 1px 0 var(--win98-dkshadow) !important; +} + +.wrapped-theme-win98 button:active:not(:disabled) { + background: var(--win98-face) !important; + box-shadow: none !important; + border-top: 1px solid var(--win98-dkshadow) !important; + border-left: 1px solid var(--win98-dkshadow) !important; + border-right: 1px solid var(--win98-hi) !important; + border-bottom: 1px solid var(--win98-hi) !important; +} + +.wrapped-theme-win98 button:disabled { + opacity: 0.65; + cursor: not-allowed; +} + +/* Win98: dotted focus rectangle (classic) */ +.wrapped-theme-win98 button:focus-visible { + outline: 1px dotted var(--win98-dkshadow); + outline-offset: -4px; +} + +/* Win98 helper: checkered/dither fill for "pressed/toggled" UI (taskbar active, start menu pressed, etc.) */ +.wrapped-theme-win98 .win98-dither { + background: var(--win98-dither) !important; +} + +/* Win98: text-ish inputs / selects get a sunken look (avoid checkbox/radio etc.) */ +.wrapped-theme-win98 textarea, +.wrapped-theme-win98 select, +.wrapped-theme-win98 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]) { + background: var(--wrapped-bg) !important; + color: var(--wrapped-text) !important; + border-radius: 0 !important; + border: 1px solid var(--win98-shadow) !important; + box-shadow: + inset 1px 1px 0 var(--win98-dkshadow), + inset -1px -1px 0 var(--win98-hi); +} + +/* Win98: window primitives (98.css-like semantics) */ +.wrapped-theme-win98 .window { + background: var(--win98-face); + + /* Stronger Win95-ish window frame (inspired by /win95/assets/css/windows/window.css) */ + border-top: 2px solid var(--win98-hi); + border-left: 2px solid var(--win98-hi); + border-right: 1.5px solid var(--win98-shadow); + border-bottom: 1.5px solid var(--win98-shadow); + box-shadow: 1.5px 1.5px 0 var(--win98-dkshadow); + outline: 1px solid var(--win98-outline); +} + +.wrapped-theme-win98 .title-bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 3px 4px; + + /* Win95 is typically solid; Win98 sometimes gradients. Keep solid by default. */ + background: var(--win98-title); + color: var(--win98-title-text); + font-weight: 700; + user-select: none; +} + +.wrapped-theme-win98 .title-bar-text { + display: flex; + align-items: center; + gap: 6px; + min-width: 0; + font-size: 11px; + line-height: 1; +} + +.wrapped-theme-win98 .title-bar-icon { + width: 16px; + height: 16px; + flex: none; + image-rendering: pixelated; +} + +.wrapped-theme-win98 .title-bar-text span { + min-width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.wrapped-theme-win98 .title-bar-controls { + display: inline-flex; + gap: 2px; +} + +.wrapped-theme-win98 .title-bar-controls button { + width: 18px; + height: 16px; + padding: 0; + display: inline-flex; + align-items: center; + justify-content: center; + position: relative; + font-weight: 700; + line-height: 1; +} + +.wrapped-theme-win98 .title-bar-controls button::before { + content: ""; + display: block; +} + +/* Win95-ish glyphs (avoid relying on fonts for the line/square). */ +.wrapped-theme-win98 .title-bar-controls button[aria-label="Minimize"]::before { + width: 6px; + height: 2px; + background: #000000; + transform: translateY(4px); +} + +.wrapped-theme-win98 .title-bar-controls button[aria-label="Maximize"]::before { + width: 9px; + height: 8px; + box-sizing: border-box; + border: 1px solid #000000; + border-top-width: 2px; + background: transparent; +} + +.wrapped-theme-win98 .title-bar-controls button[aria-label="Close"]::before { + content: "×"; + font-size: 14px; + line-height: 1; + transform: translateY(-1px); +} + +.wrapped-theme-win98 .window-body { + padding: 8px; + background: var(--win98-face); + border-top: 1px solid var(--win98-shadow); + box-shadow: inset 0 1px 0 var(--win98-hi); +} diff --git a/frontend/components/wrapped/shared/WrappedCardShell.vue b/frontend/components/wrapped/shared/WrappedCardShell.vue index d86256a..837edaf 100644 --- a/frontend/components/wrapped/shared/WrappedCardShell.vue +++ b/frontend/components/wrapped/shared/WrappedCardShell.vue @@ -1,5 +1,5 @@ @@ -49,6 +81,15 @@ defineProps({ narrative: { type: String, default: '' }, variant: { type: String, default: 'panel' } // 'panel' | 'slide' }) + +const { theme } = useWrappedTheme() +const isWin98 = computed(() => theme.value === 'win98') + +const slideContainerClass = computed(() => ( + isWin98.value + ? 'relative h-full max-w-5xl mx-auto px-6 pt-2 pb-4 sm:px-8 sm:pt-3 sm:pb-6 flex flex-col' + : 'relative h-full max-w-5xl mx-auto px-6 py-10 sm:px-8 sm:py-12 flex flex-col' +)) diff --git a/frontend/components/wrapped/shared/WrappedDeckBackground.vue b/frontend/components/wrapped/shared/WrappedDeckBackground.vue index d30c074..81bc08d 100644 --- a/frontend/components/wrapped/shared/WrappedDeckBackground.vue +++ b/frontend/components/wrapped/shared/WrappedDeckBackground.vue @@ -1,6 +1,6 @@ + + + diff --git a/frontend/components/wrapped/shared/WrappedHero.vue b/frontend/components/wrapped/shared/WrappedHero.vue index f2b4d39..93669ad 100644 --- a/frontend/components/wrapped/shared/WrappedHero.vue +++ b/frontend/components/wrapped/shared/WrappedHero.vue @@ -9,7 +9,57 @@
@@ -26,7 +26,8 @@ const { theme, setTheme } = useWrappedTheme() const themes = [ { value: 'off', label: 'Modern' }, { value: 'gameboy', label: 'GameBoy' }, - { value: 'dos', label: 'DOS' } + { value: 'dos', label: 'DOS' }, + { value: 'win98', label: 'Win98' } ] diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue index 904f6c8..de24aa6 100644 --- a/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue +++ b/frontend/components/wrapped/shared/WrappedThemeSwitcherGameboy.vue @@ -25,7 +25,8 @@ const { theme, setTheme } = useWrappedTheme() const themes = [ { value: 'off', label: 'MODERN' }, { value: 'gameboy', label: 'GAME BOY' }, - { value: 'dos', label: 'DOS' } + { value: 'dos', label: 'DOS' }, + { value: 'win98', label: 'WIN98' } ] const selectTheme = (value) => { diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue index c65b74d..cd2ebcc 100644 --- a/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue +++ b/frontend/components/wrapped/shared/WrappedThemeSwitcherModern.vue @@ -25,6 +25,7 @@ const { theme, setTheme } = useWrappedTheme() const themes = [ { value: 'off', label: 'Modern' }, { value: 'gameboy', label: 'Game Boy' }, - { value: 'dos', label: 'DOS' } + { value: 'dos', label: 'DOS' }, + { value: 'win98', label: 'Win98' } ] diff --git a/frontend/components/wrapped/shared/WrappedThemeSwitcherWin98.vue b/frontend/components/wrapped/shared/WrappedThemeSwitcherWin98.vue new file mode 100644 index 0000000..b3e2e88 --- /dev/null +++ b/frontend/components/wrapped/shared/WrappedThemeSwitcherWin98.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/frontend/components/wrapped/shared/WrappedWin98Taskbar.vue b/frontend/components/wrapped/shared/WrappedWin98Taskbar.vue new file mode 100644 index 0000000..cb8c659 --- /dev/null +++ b/frontend/components/wrapped/shared/WrappedWin98Taskbar.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/frontend/components/wrapped/shared/WrappedYearSelector.vue b/frontend/components/wrapped/shared/WrappedYearSelector.vue index 00e3873..d5425bd 100644 --- a/frontend/components/wrapped/shared/WrappedYearSelector.vue +++ b/frontend/components/wrapped/shared/WrappedYearSelector.vue @@ -38,6 +38,25 @@ >[+]
+ +
+
+ + {{ modelValue }}年 + +
+
+
@@ -240,4 +259,57 @@ onBeforeUnmount(() => { min-width: 50px; text-align: center; } + +/* ========== Win98 风格 ========== */ +.year-win98 { + font-family: "MS Sans Serif", Tahoma, "Microsoft Sans Serif", "Segoe UI", sans-serif; + font-size: 11px; +} + +.win98-year-box { + display: inline-flex; + align-items: center; + background: #c0c0c0; + padding: 2px; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +.win98-year-value { + min-width: 62px; + text-align: center; + color: #000000; + padding: 2px 8px; + background: #ffffff; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #000000, + inset -1px -1px 0 #ffffff; +} + +.win98-arrow { + width: 24px; + height: 22px; + background: #c0c0c0; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; + cursor: pointer; + font: inherit; + line-height: 1; +} + +.win98-arrow:active:not(:disabled) { + box-shadow: + inset 1px 1px 0 #000000, + inset -1px -1px 0 #ffffff; +} + +.win98-arrow:disabled { + opacity: 0.5; + cursor: not-allowed; +} diff --git a/frontend/composables/useWrappedTheme.js b/frontend/composables/useWrappedTheme.js index ed54aeb..e56be6b 100644 --- a/frontend/composables/useWrappedTheme.js +++ b/frontend/composables/useWrappedTheme.js @@ -4,7 +4,8 @@ */ const STORAGE_KEY = 'wrapped-theme' -const VALID_THEMES = ['off', 'gameboy', 'dos'] +const VALID_THEMES = ['off', 'gameboy', 'dos', 'win98'] +const RETRO_THEMES = new Set(['gameboy', 'dos']) // 全局响应式状态(跨组件共享) const theme = ref('off') @@ -54,7 +55,10 @@ export function useWrappedTheme() { // 计算属性:当前主题的 CSS 类名 const themeClass = computed(() => { if (theme.value === 'off') return '' - return `wrapped-retro wrapped-theme-${theme.value}` + // Note: not every non-modern theme is "retro pixel/CRT". + // Keep wrapped-retro for themes that rely on pixel/CRT shared styles. + const base = RETRO_THEMES.has(theme.value) ? 'wrapped-retro ' : '' + return `${base}wrapped-theme-${theme.value}` }) // 计算属性:主题显示名称 @@ -62,7 +66,8 @@ export function useWrappedTheme() { const names = { off: 'Modern', gameboy: 'Game Boy', - dos: 'DOS Terminal' + dos: 'DOS Terminal', + win98: 'Windows 98' } return names[theme.value] || 'Modern' }) @@ -88,6 +93,9 @@ export function useWrappedTheme() { } else if (e.key === 'F3') { e.preventDefault() setTheme('dos') + } else if (e.key === 'F4') { + e.preventDefault() + setTheme('win98') } } diff --git a/frontend/pages/wrapped/index.vue b/frontend/pages/wrapped/index.vue index 25f6880..1f2b2bc 100644 --- a/frontend/pages/wrapped/index.vue +++ b/frontend/pages/wrapped/index.vue @@ -7,7 +7,8 @@ > - + +
@@ -164,6 +165,12 @@
+ + +
@@ -219,7 +226,8 @@ let navUnlockTimer = null const THEME_BG = { off: '#F3FFF8', // Modern: 浅绿 gameboy: '#9bbc0f', // Game Boy: 亮绿 - dos: '#0a0a0a' // DOS: 黑色 + dos: '#0a0a0a', // DOS: 黑色 + win98: '#008080' // Win98: 经典桌面青色 } const slides = computed(() => { @@ -229,6 +237,14 @@ const slides = computed(() => { return out }) +const taskbarTitle = computed(() => { + if (theme.value !== 'win98') return '' + if (activeIndex.value === 0) return `${year.value} WeChat Wrapped` + const idx = activeIndex.value - 1 + const c = report.value?.cards?.[idx] + return String(c?.title || 'WeChat Wrapped') +}) + const currentBg = computed(() => THEME_BG[theme.value] || THEME_BG.off) const slideStyle = computed(() => ( @@ -356,8 +372,11 @@ const onTouchEnd = (e) => { const updateViewport = () => { const h = deckEl.value?.clientHeight || window.innerHeight || 0 if (!h) return + // Reserve space for the Win98 taskbar at the bottom. + const offset = theme.value === 'win98' ? 40 : 0 + const effective = Math.max(0, h - offset) // Avoid endless reflows from 1px rounding errors (especially in Electron). - if (Math.abs(viewportHeight.value - h) > 1) viewportHeight.value = h + if (Math.abs(viewportHeight.value - effective) > 1) viewportHeight.value = effective } const loadAccounts = async () => { @@ -515,6 +534,11 @@ onMounted(async () => { } }) +// Theme switch may change reserved UI space (e.g., Win98 taskbar) +watch(theme, () => { + updateViewport() +}) + onBeforeUnmount(() => { window.removeEventListener('resize', updateViewport) deckEl.value?.removeEventListener('wheel', onWheel) diff --git a/frontend/public/assets/images/win98-icons/folder.png b/frontend/public/assets/images/win98-icons/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..136be6a49a85308a61968741d8fadc7be9334cb0 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)ISkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq8r{zDi(Vu$sZZAYL$MSD+10LL$H?#1%--oCzcte*F0H z|NqQ0XVU(knfd?!|DW@EHvvT%OM?7@862M7NCR<_yxm>c#S%MS13By^p1!W^kJu!{ z8HG73<0k{9g*{yyLo808oqU$}kO5EYX^z~Zdy|+$#2hx&JU_rT?YlhVZ_7+!;lgJt zvs&Zr{=52I=0AJklj#087iv!*^IF&wBX_hSFIhpEeZoXxj}u>OUzvvAoLDNK^*TtD z(^&uJ2L(<~GaZ*BOF9KME^wHcP<`XGD)aNRuQ>I)`*}F}Tx1X4n{57IURevngDaxp z!e!CS`z<%9g|a%meIldF=slTR%cWB})I_uAqs!%WXM*+DEjcUGm+){!Z1;2*IgW$w9AeBGio=7pC9>E_ zt+bK(?Uq>Pp&h7aGRH_EZGnXEM30N_O69U<<|WtuZT%l3zrO47* Tn@_5M8W=oX{an^LB{Ts5_sh{q literal 0 HcmV?d00001 diff --git a/frontend/public/assets/images/win98-icons/mail.png b/frontend/public/assets/images/win98-icons/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cb3ec0761098e5f055cf5f4fa6346397e24308 GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)ISkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq8r{zDi(Vu$sZZAYL$MSD+10LNUN6#1*8Vq2a)R13>Ek z|NjgPK!N`t0!V>~hM*L)P$11%666=m;PC858i^mS!_#3msw zXz=ik%?6-!yQhm|h{fsL%Nw%}8wju^{N`Pi(DXv>ChK}$lj;_!UE3Z6?YVaC!N!u4 z&!+Iq^j7eHknm@Ut*3hQs@e%p|9^VkqU=6Vc9Fe7d7#0^yIn3V%QJs@{F!q^=V43! zk=YMg^|h6@*ra4KKIUw3o7bJoYxLGr#cN^7)6%B(fhCJG+;{xzTl74+4S}TF3=0|jFK9%wBuWK6WB9s7#dFDy9|6<8#jJLD^km24*XlQ{ zf823eTw?#Uc~$p0oz6-I^Q9jm3bPXW1I)axZriwV!||uhLB1CX3W9wv>mJ-4bU2~m zj5J#Z4+EF^Wd)<0HB)mPoH(ycMDg>( znp=Wdd`}P9tdZI0|F5}j-_CQ4RmJ%`FC1ueS@v0gh2t5+T6TpQ!nbaRH>A&8V{}gS zS<5y)7d1wS!i2m-GqWEiv1xE8wE8<7|L%60CHP&-*&-3M^J_P>-r@|Y5ikG% literal 0 HcmV?d00001 diff --git a/frontend/public/assets/images/win98-icons/photos.png b/frontend/public/assets/images/win98-icons/photos.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba4cf6f63dbd30f067c4c195df74232d0f5a4f1 GIT binary patch literal 773 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)ISkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq8r{zDi(Vu$sZZAYL$MSD+10LOsAI#1*8Vq2a)R1ONa3 z2eLsNFb1)JT#z6LFVTII3FI=C1o;IsI6S+N2I3@nySp$8^7woLa@b2eeO=ifu?RCN z36<^@J`R*V=jq}YVsZNF#8vRo-3JU-zVLn)7_Mv%2(r;SVAl zE5pk2T0&hD)< z)HWV*?z73@wu*eX-#1E9Icnw~tCT`H$LNMvzBATH&pxIwC$NdX|Im#)%!_vIoVnXr zh|%q9k*Zpm%%nw4Qw^&mcwY3#AANE+K{-%p*N$Dgu54vI_aa={<-yLkjL!@tj!2ei zYJUlH-8khm=gzM604j_)h| z*is{VvX~!Dn8F;o)uz);VAqw#HCo-1Z!DIZ%Kq0@xvA9d_4KF3cSIwY5AcaUtacBP zH{F@d)93MK`DvAh`=7KQUdC?w_p=JiL9-wM_nOU~uy9Zl>%P1x54pFO?KpesXiV zIK$#jp{Yfk{q!r%+t(#I1^6xxzH&SM`PC=-JHj{G-r?E{N`|T>t`Q|Ei6yC4$wjF^ ziowXh&_dV1MAy(V#K6$X*u)CVwK6c6oj2t#iiX_$l+3hB+!|gP>j2X;1B0ilpUXO@ GgeCyI+cmcU literal 0 HcmV?d00001 diff --git a/frontend/public/assets/images/win98-icons/recycle.png b/frontend/public/assets/images/win98-icons/recycle.png new file mode 100644 index 0000000000000000000000000000000000000000..74d32be62a41fec225afa774ed354bdfa7070100 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJKpuOE zr>`sfBQ^`K~!Cw@Y2n zm`_olS-VfM!}w=!uluWM)eRFB%}(y`WIWK%5TY=pK`62G=|aYZ;#$m1%?EEx-hJpm zxj<#ke@|;J=1GikCMym0JH1!Hwa+%!y6+9QH;?u^kss zco%iCN?+UG_p)NV!8ZNXKzFH@xJHzuB$lLFB^RXvDF!10LknF4GhHK-5F=wN19K}w pBV7X%D+7Z^b1SM*H00)|WTsW()-d_Nf#X0844$rjF6*2UngH+yen9{L literal 0 HcmV?d00001 diff --git a/frontend/public/assets/images/windows-0.png b/frontend/public/assets/images/windows-0.png new file mode 100644 index 0000000000000000000000000000000000000000..572511dd5cf5876d80417f6418a3a76a23f4c36a GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%~y3;tHgJpn-wmKac`q zAPda<|DU0uf#LuE|B|QOF95|DOM?7@862M7NCR<_yxm>6GA?`x19I3)Jbhi+AF)X> zSjea-Z8`=Nn(67{7@~20>qSGpLk2vo0nu`MZt=`HtQ7u&b%I65@@HJJH!bwalvX&( z9=u)e^=Q4=gZ0g;wBjo{&godGI~sM(o23_ic5~B=3ry1(7ici$FW4dQK7z6PMj3C$~f0J#PYnj+9+s}C6=HJEbpA-9S z)^0uiqhP7K>_Pee2h>lpD!ebBrq~N~q-u$4L`h0wNvc(HQ7VvPFfuT-&^0jAH8Kk^ vFt9Q;voZp5O{@$IdOv5aLeY?$pOTqYiCe>;b(h3|8W=oX{an^LB{Ts5LXnr; literal 0 HcmV?d00001 From dbe4d54f10a13b9265d45968e012cc995b0e750e Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Mon, 2 Feb 2026 00:07:45 +0800 Subject: [PATCH 020/103] =?UTF-8?q?improvement(wrapped-ui):=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84=20Win98=20=E4=B8=BB=E9=A2=98=E7=9A=84=E5=8F=AF?= =?UTF-8?q?=E8=A7=86=E5=8C=96=E9=80=82=E9=85=8D=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=9B=9E=E6=94=BE=E4=BF=A1=E6=81=AF=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChatReplayAnimation:时间戳移到顶栏,简化气泡尾巴;补齐 Game Boy/DOS/Win98 顶栏文案颜色与边框风格 - 热力图:新增 win98 配色分支,并为 heatmap/legend 单元加硬边框 - Overview/MessageChars 等可视化补充 Win98 主题样式(键盘/进度条/雷达图等) --- .../visualizations/ChatReplayAnimation.vue | 98 +++++++---- .../visualizations/GlobalOverviewChart.vue | 47 ++++++ .../visualizations/MessageCharsChart.vue | 159 ++++++++++++++++++ .../visualizations/WeekdayHourHeatmap.vue | 11 ++ frontend/utils/wrapped/heatmap.js | 7 + 5 files changed, 293 insertions(+), 29 deletions(-) diff --git a/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue b/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue index 173d90e..98f4539 100644 --- a/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue +++ b/frontend/components/wrapped/visualizations/ChatReplayAnimation.vue @@ -23,7 +23,12 @@
-
聊天回放
+
+
聊天回放
+
+ {{ date }} {{ time }} +
+
@@ -44,9 +49,6 @@
-
- {{ date }} {{ time }} -
@@ -195,6 +197,15 @@ watch( border-bottom: none; } +.wrapped-chat-replay__top-right { + margin-left: auto; + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 2px; + text-align: right; +} + .wrapped-chat-replay__top-left { display: flex; align-items: center; @@ -260,23 +271,6 @@ watch( padding: 10px 12px; } -.wrapped-chat-replay__typing::after, -.wrapped-chat-replay__bubble::after { - content: ''; - position: absolute; - right: -6px; - top: 10px; - width: 0; - height: 0; - border-style: solid; - border-width: 6px 0 6px 6px; - border-color: transparent transparent transparent var(--wr-chat-bubble-tail); -} - -.wrapped-chat-replay__typing::after { - border-color: transparent transparent transparent var(--wr-chat-typing-bg); -} - .wrapped-chat-replay__bubble-text { color: var(--wr-chat-bubble-text) !important; font-size: 13px; @@ -285,11 +279,6 @@ watch( word-break: break-word; } -.wrapped-chat-replay__timestamp { - margin-top: 8px; - text-align: right; -} - .wrapped-chat-replay__dot { width: 6px; height: 6px; @@ -355,6 +344,11 @@ watch( inset 2px 2px 0 0 #9bbc0f; } +.wrapped-theme-gameboy .wrapped-chat-replay__top .wrapped-label, +.wrapped-theme-gameboy .wrapped-chat-replay__top .wrapped-body { + color: #0f380f !important; +} + .wrapped-theme-gameboy .wrapped-chat-replay__bubble-text { font-family: var(--font-pixel-10), 'Courier New', monospace; } @@ -382,13 +376,59 @@ watch( box-shadow: 0 0 6px rgba(51, 255, 51, 0.18); } -.wrapped-theme-dos .wrapped-chat-replay__typing::after, -.wrapped-theme-dos .wrapped-chat-replay__bubble::after { - box-shadow: 1px 0 0 #33ff33; +.wrapped-theme-dos .wrapped-chat-replay__top .wrapped-label, +.wrapped-theme-dos .wrapped-chat-replay__top .wrapped-body { + color: #33ff33 !important; + text-shadow: 0 0 3px rgba(51, 255, 51, 0.6); } .wrapped-theme-dos .wrapped-chat-replay__bubble-text { font-family: 'Courier New', monospace; text-shadow: 0 0 3px rgba(51, 255, 51, 0.6); } + +/* ========== Win98 主题 ========== */ +.wrapped-theme-win98 .wrapped-chat-replay { + --wr-chat-frame-bg: #c0c0c0; + --wr-chat-top-bg: linear-gradient(90deg, #000080, #1084d0); + --wr-chat-chat-bg: #ffffff; + --wr-chat-border: #808080; + + --wr-chat-bubble-bg: #ffffff; + --wr-chat-bubble-tail: #ffffff; + --wr-chat-bubble-text: #000000; + + --wr-chat-typing-bg: #ffffff; + --wr-chat-typing-dot: #000000; + + border-radius: 0; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +.wrapped-theme-win98 .wrapped-chat-replay__top { + border-bottom: 1px solid #808080; +} + +.wrapped-theme-win98 .wrapped-chat-replay__top .wrapped-label, +.wrapped-theme-win98 .wrapped-chat-replay__top .wrapped-body { + /* Title-bar text should be white on the Win98 blue gradient. */ + color: #ffffff !important; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.35); +} + +.wrapped-theme-win98 .wrapped-chat-replay__avatar-fallback { + color: rgba(255, 255, 255, 0.9); +} + +.wrapped-theme-win98 .wrapped-chat-replay__typing, +.wrapped-theme-win98 .wrapped-chat-replay__bubble { + border-radius: 0; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} diff --git a/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue b/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue index aa64d54..47f6555 100644 --- a/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue +++ b/frontend/components/wrapped/visualizations/GlobalOverviewChart.vue @@ -377,4 +377,51 @@ const labels = computed(() => { color: #33ff33 !important; text-shadow: 0 0 5px #33ff33; } + +/* ========== Win98 主题 ========== */ +.wrapped-theme-win98 .overview-card { + background: #c0c0c0 !important; + border: 1px solid #808080 !important; + border-radius: 0 !important; + backdrop-filter: none; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +.wrapped-theme-win98 .overview-progress-bg { + background: #ffffff !important; + border-radius: 0 !important; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #000000, + inset -1px -1px 0 #ffffff; +} + +.wrapped-theme-win98 .overview-progress-fill { + background: #000080 !important; + border-radius: 0 !important; +} + +.wrapped-theme-win98 .overview-grid-line { + stroke: rgba(0, 0, 0, 0.22); +} + +.wrapped-theme-win98 .overview-axis-line { + stroke: rgba(0, 0, 0, 0.35); +} + +.wrapped-theme-win98 .overview-data-polygon { + fill: rgba(0, 0, 128, 0.16); + stroke: #000080; +} + +.wrapped-theme-win98 .overview-data-node { + fill: #000080; + stroke: #ffffff; +} + +.wrapped-theme-win98 .overview-label { + fill: rgba(0, 0, 0, 0.8); +} diff --git a/frontend/components/wrapped/visualizations/MessageCharsChart.vue b/frontend/components/wrapped/visualizations/MessageCharsChart.vue index 159f4eb..a947267 100644 --- a/frontend/components/wrapped/visualizations/MessageCharsChart.vue +++ b/frontend/components/wrapped/visualizations/MessageCharsChart.vue @@ -1321,6 +1321,96 @@ const getLabelStyle = (code) => { text-shadow: 0 0 5px #ff3333; } +/* ========== Win98 主题 - 键盘外观 ========== */ +.wrapped-theme-win98 .keyboard-outer { + border-radius: 0; + background: #c0c0c0; + border: 1px solid #808080; + padding: 4px; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +.wrapped-theme-win98 .keyboard-inner { + border-radius: 0; + background: #dfdfdf; + border: 1px solid #808080; + padding: 6px; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +.wrapped-theme-win98 .keyboard-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.18); + padding-bottom: 6px; + margin-bottom: 6px; +} + +.wrapped-theme-win98 .dot { + border-radius: 0; + width: 8px; + height: 8px; + box-shadow: none; +} + +.wrapped-theme-win98 .dot-red { background: #800000; } +.wrapped-theme-win98 .dot-yellow { background: #808000; } +.wrapped-theme-win98 .dot-green { background: #008000; } + +.wrapped-theme-win98 .keyboard-stats, +.wrapped-theme-win98 .keyboard-hint { + font-family: inherit; + color: rgba(0, 0, 0, 0.72); + text-shadow: none; +} + +.wrapped-theme-win98 .keyboard-body { + border-radius: 0; + background: #ffffff; + border: 1px solid #808080; + box-shadow: + inset 1px 1px 0 #000000, + inset -1px -1px 0 #ffffff; +} + +.wrapped-theme-win98 .kb-key::before { + border-radius: 0; + background: #808080; +} + +.wrapped-theme-win98 .kb-key-top { + border-radius: 0; + border: 1px solid #808080 !important; + background: #c0c0c0 !important; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000 !important; +} + +.wrapped-theme-win98 .kb-label, +.wrapped-theme-win98 .kb-sub { + font-family: inherit; + color: #000000 !important; + text-shadow: none !important; + filter: none !important; + opacity: 1 !important; +} + +.wrapped-theme-win98 .kb-space-bar { + border-radius: 0; + background: #000080; + box-shadow: none; + height: 2px; +} + +.wrapped-theme-win98 .keyboard-brand { + font-family: inherit; + color: rgba(0, 0, 0, 0.35); + text-shadow: none; +} + /* DOS 聊天气泡主题适配 */ .wrapped-theme-dos .bubble-left, .wrapped-theme-dos .bubble-right { @@ -1415,6 +1505,75 @@ const getLabelStyle = (code) => { color: #306230 !important; } +/* ========== Win98 主题 - 聊天气泡适配 ========== */ + +/* 聊天区域背景 */ +.wrapped-theme-win98 .rounded-2xl.border.bg-\[\#F5F5F5\] { + background: #c0c0c0 !important; + border: 1px solid #808080 !important; + border-radius: 0 !important; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} + +/* 气泡 - 左侧 */ +.wrapped-theme-win98 .bubble-left { + background: #ffffff; + border: 1px solid #808080; + border-radius: 0; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} +.wrapped-theme-win98 .bubble-left::before { + border-right-color: #ffffff; + filter: none; +} + +/* 气泡 - 右侧 */ +.wrapped-theme-win98 .bubble-right { + background: #dfdfdf; + border: 1px solid #808080; + border-radius: 0; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} +.wrapped-theme-win98 .bubble-right::after { + border-left-color: #dfdfdf; + filter: none; +} + +/* 头像 */ +.wrapped-theme-win98 .avatar-box { + background: #c0c0c0; + border-color: #808080; + border-radius: 0; + box-shadow: + inset 1px 1px 0 #ffffff, + inset -1px -1px 0 #000000; +} +.wrapped-theme-win98 .avatar-box svg { + stroke: #000080; +} + +/* 文字样式(气泡内需要更“黑白”) */ +.wrapped-theme-win98 .bubble-left .wrapped-label, +.wrapped-theme-win98 .bubble-right .wrapped-label { + color: rgba(0, 0, 0, 0.65) !important; +} + +.wrapped-theme-win98 .bubble-left .wrapped-number, +.wrapped-theme-win98 .bubble-right .wrapped-number { + color: #000080 !important; +} + +.wrapped-theme-win98 .bubble-left .wrapped-body, +.wrapped-theme-win98 .bubble-right .wrapped-body { + color: rgba(0, 0, 0, 0.85) !important; +} + /* ========== DOS 主题 - 聊天气泡文字适配 ========== */ .wrapped-theme-dos .bubble-left .wrapped-label, diff --git a/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue b/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue index 2b611f9..a973126 100644 --- a/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue +++ b/frontend/components/wrapped/visualizations/WeekdayHourHeatmap.vue @@ -157,4 +157,15 @@ const originFor = (weekdayIndex, hour) => { .wrapped-theme-dos .heatmap-legend-cell { border-radius: 0 !important; } + +/* ========== Win98 主题 ========== */ +.wrapped-theme-win98 .heatmap-cell { + border-radius: 0 !important; + border: 1px solid rgba(0, 0, 0, 0.12); +} + +.wrapped-theme-win98 .heatmap-legend-cell { + border-radius: 0 !important; + border: 1px solid rgba(0, 0, 0, 0.12); +} diff --git a/frontend/utils/wrapped/heatmap.js b/frontend/utils/wrapped/heatmap.js index b58e135..ed09a17 100644 --- a/frontend/utils/wrapped/heatmap.js +++ b/frontend/utils/wrapped/heatmap.js @@ -58,6 +58,13 @@ export const themedHeatColor = (value, max, theme) => { const light = 20 + 60 * t return `hsl(120 100% ${light.toFixed(1)}%)` } + case 'win98': { + // Win98-ish "system colors": gray -> blue highlight + if (t === 0) return '#dfdfdf' + if (t < 0.33) return '#c0c0c0' + if (t < 0.66) return '#808080' + return '#000080' + } default: // Modern (off) - use original heatColor return heatColor(value, max) From 625526ff3b0a2c271c7440a7ff7a44050a6333d9 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 3 Feb 2026 16:31:04 +0800 Subject: [PATCH 021/103] =?UTF-8?q?feat(wrapped):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E9=80=9F=E5=BA=A6=E5=8D=A1=E7=89=87=20#3?= =?UTF-8?q?=EF=BC=88=E7=A7=92=E5=9B=9E=E7=BD=AE=E9=A1=B6=E5=85=B3=E5=BF=83?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增年度总结卡片 #3:回复速度/置顶关心统计与排行\n- 前端新增 Card03 渲染与交互(含抽奖揭晓/Top 列表)\n- 更新年度总结卡片清单并加入评分单测 --- .../wrapped/cards/Card03ReplySpeed.vue | 766 ++++++++++++++++++ frontend/pages/wrapped/index.vue | 6 + frontend/public/assets/images/LuckyBlock.png | Bin 0 -> 6624 bytes .../wrapped/cards/card_03_reply_speed.py | 668 +++++++++++++++ src/wechat_decrypt_tool/wrapped/service.py | 18 +- tests/test_wrapped_reply_speed.py | 73 ++ 6 files changed, 1528 insertions(+), 3 deletions(-) create mode 100644 frontend/components/wrapped/cards/Card03ReplySpeed.vue create mode 100644 frontend/public/assets/images/LuckyBlock.png create mode 100644 src/wechat_decrypt_tool/wrapped/cards/card_03_reply_speed.py create mode 100644 tests/test_wrapped_reply_speed.py diff --git a/frontend/components/wrapped/cards/Card03ReplySpeed.vue b/frontend/components/wrapped/cards/Card03ReplySpeed.vue new file mode 100644 index 0000000..b71252d --- /dev/null +++ b/frontend/components/wrapped/cards/Card03ReplySpeed.vue @@ -0,0 +1,766 @@ + + + + + diff --git a/frontend/pages/wrapped/index.vue b/frontend/pages/wrapped/index.vue index 1f2b2bc..31ebc95 100644 --- a/frontend/pages/wrapped/index.vue +++ b/frontend/pages/wrapped/index.vue @@ -151,6 +151,12 @@ variant="slide" class="h-full w-full" /> + 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 z

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 e@E tuple[int, int]: + # Use local time boundaries (same semantics as sqlite "localtime"). + start = int(datetime(year, 1, 1).timestamp()) + end = int(datetime(year + 1, 1, 1).timestamp()) + return start, end + + +def _mask_name(name: str) -> str: + s = str(name or "").strip() + if not s: + return "" + if len(s) == 1: + return "*" + if len(s) == 2: + return s[0] + "*" + return s[0] + ("*" * (len(s) - 2)) + s[-1] + + +def _format_duration_zh(seconds: int | None) -> str: + if seconds is None: + return "" + try: + s = int(seconds) + except Exception: + s = 0 + if s < 0: + s = 0 + + if s < 60: + return f"{s}秒" + m, sec = divmod(s, 60) + if m < 60: + return f"{m}分{sec}秒" if sec else f"{m}分钟" + h, mm = divmod(m, 60) + if h < 24: + return f"{h}小时{mm}分钟" if mm else f"{h}小时" + d, hh = divmod(h, 24) + return f"{d}天{hh}小时" if hh else f"{d}天" + + +@dataclass +class _ConvAgg: + username: str + incoming: int + outgoing: int + replies: int + sum_gap: int + sum_gap_capped: int + min_gap: int + max_gap: int + + @property + def total(self) -> int: + return int(self.incoming) + int(self.outgoing) + + def avg_gap(self) -> float: + return float(self.sum_gap) / float(self.replies) if self.replies > 0 else 0.0 + + def avg_gap_capped(self) -> float: + return float(self.sum_gap_capped) / float(self.replies) if self.replies > 0 else 0.0 + + +def _score_conv(*, agg: _ConvAgg, tau_seconds: float) -> float: + # "聊天频率":更偏向双向互动(取 min(in, out))。 + interaction = float(min(int(agg.incoming), int(agg.outgoing))) + if interaction <= 0.0 or agg.replies <= 0: + return 0.0 + + # "回复频率/速度":用 capped 平均耗时做一个饱和衰减,避免极端长等待把分数打穿。 + avg_s = float(agg.avg_gap_capped()) + speed_score = 1.0 / (1.0 + (avg_s / float(max(1.0, tau_seconds)))) + + volume_score = math.log1p(interaction) + return float(speed_score * volume_score) + + +def compute_reply_speed_stats(*, account_dir: Path, year: int) -> dict[str, Any]: + """ + 统计“回复速度”相关指标(全局 + 每个好友),用于 Wrapped 年度总结卡片。 + + Notes / 口径说明: + - 仅统计 1v1(非群聊)会话:username 不以 "@chatroom" 结尾。 + - “一次回复”定义:对方发出消息后,你发送的第一条消息(同一段连续你发的消息只计 1 次)。 + - 默认过滤系统消息(local_type=10000),并排除 biz_message*.db。 + - 优先使用 chat_search_index.db(全量合并所有 shard),没有索引时做 best-effort 降级。 + """ + + start_ts, end_ts = _year_range_epoch_seconds(int(year)) + my_username = str(account_dir.name or "").strip() + + # Scoring hyper-params (tuned for "更偏向聊天频率高的" 的直觉)。 + gap_cap_seconds = 6 * 60 * 60 # 6h: scoring 上限(超过当作一样慢) + tau_seconds = 30 * 60 # 30min: 速度衰减的尺度 + + total_replies = 0 + global_fastest: int | None = None + global_fastest_u: str | None = None + global_slowest: int | None = None + global_slowest_u: str | None = None + + best_score = -1.0 + best_agg: _ConvAgg | None = None + + # NOTE: Use (score, username, agg) so the heap is always comparable even when scores tie. + top_heap: list[tuple[float, str, _ConvAgg]] = [] + top_n = 8 + + # For "今年你总共给 xxx 人发送过消息" & top-total bar-race. + sent_to_contacts: set[str] = set() + # Collect totals for *all* 1v1 sessions so the frontend ranking can naturally grow over time. + all_totals: dict[str, int] = {} + # NOTE: Use (total, username, agg) so the heap is always comparable even when totals tie. + top_total_heap: list[tuple[int, str, _ConvAgg]] = [] + # Keep more than 10 so the bar-race "TOP10" can actually evolve (members can enter/leave over time). + top_total_n = 100 + + def consider_conv(agg: _ConvAgg) -> None: + nonlocal best_score, best_agg + if not agg.username: + return + if agg.replies <= 0: + return + if min(agg.incoming, agg.outgoing) <= 0: + return + + score = _score_conv(agg=agg, tau_seconds=tau_seconds) + if score > best_score: + best_score = float(score) + best_agg = agg + + if score <= 0: + return + key = (float(score), str(agg.username), agg) + if len(top_heap) < top_n: + heapq.heappush(top_heap, key) + else: + heapq.heappushpop(top_heap, key) + + def consider_total(agg: _ConvAgg) -> None: + if not agg.username: + return + if agg.total <= 0: + return + # Keep the same filtering behavior as other wrapped cards. + if not _should_keep_session(agg.username, include_official=False): + return + + if agg.outgoing > 0: + sent_to_contacts.add(agg.username) + + total = int(agg.total) + all_totals[agg.username] = int(total) + key = (total, str(agg.username), agg) + if len(top_total_heap) < top_total_n: + heapq.heappush(top_total_heap, key) + else: + heapq.heappushpop(top_total_heap, key) + + used_index = False + + # -------- Preferred path: unified search index -------- + index_path = get_chat_search_index_db_path(account_dir) + if index_path.exists(): + conn = sqlite3.connect(str(index_path)) + try: + has_fts = ( + conn.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name='message_fts' LIMIT 1").fetchone() + is not None + ) + if has_fts and my_username: + used_index = True + t0 = time.time() + + ts_expr = ( + "CASE " + "WHEN CAST(create_time AS INTEGER) > 1000000000000 " + "THEN CAST(CAST(create_time AS INTEGER)/1000 AS INTEGER) " + "ELSE CAST(create_time AS INTEGER) " + "END" + ) + + where = ( + f"{ts_expr} >= ? AND {ts_expr} < ? " + "AND db_stem NOT LIKE 'biz_message%' " + "AND CAST(local_type AS INTEGER) != 10000 " + "AND username NOT LIKE '%@chatroom'" + ) + + # Order by username, then time (ties broken by sort_seq/local_id if possible). + sql = ( + "SELECT " + "username, sender_username, " + f"{ts_expr} AS ts, " + "CAST(sort_seq AS INTEGER) AS sort_seq_i, " + "CAST(local_id AS INTEGER) AS local_id_i " + "FROM message_fts " + f"WHERE {where} " + "ORDER BY username ASC, ts ASC, sort_seq_i ASC, local_id_i ASC" + ) + + cur = conn.execute(sql, (start_ts, end_ts)) + + cur_username: str = "" + incoming = 0 + outgoing = 0 + replies = 0 + sum_gap = 0 + sum_gap_capped = 0 + min_gap = 0 + max_gap = 0 + prev_other_ts: int | None = None + + def flush() -> None: + nonlocal cur_username, incoming, outgoing, replies, sum_gap, sum_gap_capped, min_gap, max_gap + if not cur_username: + return + agg = _ConvAgg( + username=cur_username, + incoming=int(incoming), + outgoing=int(outgoing), + replies=int(replies), + sum_gap=int(sum_gap), + sum_gap_capped=int(sum_gap_capped), + min_gap=int(min_gap), + max_gap=int(max_gap), + ) + consider_total(agg) + consider_conv(agg) + + for row in cur: + try: + username = str(row[0] or "").strip() + sender = str(row[1] or "").strip() + ts = int(row[2] or 0) + except Exception: + continue + + if ts <= 0 or not username: + continue + if username != cur_username: + # flush old + flush() + # reset for new conversation + cur_username = username + incoming = outgoing = replies = 0 + sum_gap = sum_gap_capped = 0 + min_gap = max_gap = 0 + prev_other_ts = None + + # Drop system/official-ish sessions (best-effort). + if not _should_keep_session(username, include_official=False): + continue + + is_me = sender == my_username + if is_me: + outgoing += 1 + if prev_other_ts is not None and ts >= prev_other_ts: + gap = int(ts - prev_other_ts) + replies += 1 + total_replies += 1 + sum_gap += gap + sum_gap_capped += min(gap, gap_cap_seconds) + + if replies == 1 or gap < min_gap: + min_gap = gap + if replies == 1 or gap > max_gap: + max_gap = gap + + if global_fastest is None or gap < global_fastest: + global_fastest = gap + global_fastest_u = username + if global_slowest is None or gap > global_slowest: + global_slowest = gap + global_slowest_u = username + + # Only count the first outgoing message as the "reply" to this prompt. + prev_other_ts = None + else: + incoming += 1 + prev_other_ts = ts + + flush() + + logger.info( + "Wrapped card#3 reply_speed computed (search index): account=%s year=%s conversations_top=%s replies=%s db=%s elapsed=%.2fs", + str(account_dir.name or "").strip(), + int(year), + len(top_heap), + int(total_replies), + str(index_path.name), + time.time() - t0, + ) + finally: + try: + conn.close() + except Exception: + pass + + # -------- Fallback path: no index -------- + # Best-effort: if the index doesn't exist / isn't ready, auto-start building it (async) so user can + # retry this page later. We intentionally do NOT block here. + index_status: dict[str, Any] | None = None + if not used_index: + try: + index_status = get_chat_search_index_status(account_dir) + index = dict(index_status.get("index") or {}) + build = dict(index.get("build") or {}) + index_ready = bool(index.get("ready")) + build_status = str(build.get("status") or "") + index_exists = bool(index.get("exists")) + + if (not index_ready) and build_status not in {"building", "error"}: + start_chat_search_index_build(account_dir, rebuild=bool(index_exists)) + index_status = get_chat_search_index_status(account_dir) + except Exception: + index_status = None + + logger.warning( + "Wrapped card#3 reply_speed: search index missing/not ready; returning empty stats. account=%s year=%s index=%s", + str(account_dir.name or "").strip(), + int(year), + str(index_path), + ) + + # Sort top buddies by score desc. + top_buddies: list[tuple[float, _ConvAgg]] = sorted( + [(score, agg) for score, _, agg in top_heap], + key=lambda x: (-x[0], x[1].username), + ) + top_totals: list[tuple[int, _ConvAgg]] = sorted( + [(total, agg) for total, _, agg in top_total_heap], + key=lambda x: (-x[0], x[1].username), + ) + + # Resolve contact display names/avatars for a small set (bestBuddy + extremes + top list). + need_usernames: list[str] = [] + if best_agg is not None: + need_usernames.append(best_agg.username) + if global_fastest_u: + need_usernames.append(global_fastest_u) + if global_slowest_u: + need_usernames.append(global_slowest_u) + for _, agg in top_buddies: + need_usernames.append(agg.username) + for _, agg in top_totals: + need_usernames.append(agg.username) + + uniq_usernames = [] + seen = set() + for u in need_usernames: + if u and u not in seen: + seen.add(u) + uniq_usernames.append(u) + + contact_rows = _load_contact_rows(account_dir / "contact.db", uniq_usernames) if uniq_usernames else {} + + def conv_to_obj(score: float | None, agg: _ConvAgg) -> dict[str, Any]: + row = contact_rows.get(agg.username) + display = _pick_display_name(row, agg.username) + avatar = _pick_avatar_url(row) or (_build_avatar_url(str(account_dir.name or ""), agg.username) if agg.username else "") + avg_s = agg.avg_gap() + out: dict[str, Any] = { + "username": agg.username, + "displayName": display, + "maskedName": _mask_name(display), + "avatarUrl": avatar, + "incomingMessages": int(agg.incoming), + "outgoingMessages": int(agg.outgoing), + "totalMessages": int(agg.total), + "replyCount": int(agg.replies), + "avgReplySeconds": float(avg_s), + "fastestReplySeconds": int(agg.min_gap) if agg.replies > 0 else None, + "slowestReplySeconds": int(agg.max_gap) if agg.replies > 0 else None, + } + if score is not None: + out["score"] = float(score) + return out + + best_buddy_obj = None + if best_agg is not None: + best_buddy_obj = conv_to_obj(best_score, best_agg) + + fastest_obj = None + if global_fastest is not None and global_fastest_u: + # Use the best agg if it matches; otherwise create a minimal object. + agg = next((a for _, a in top_buddies if a.username == global_fastest_u), None) + if agg is None and best_agg is not None and best_agg.username == global_fastest_u: + agg = best_agg + if agg is not None: + fastest_obj = conv_to_obj(None, agg) + fastest_obj["seconds"] = int(global_fastest) + else: + row = contact_rows.get(global_fastest_u) + display = _pick_display_name(row, global_fastest_u) + avatar = _pick_avatar_url(row) or (_build_avatar_url(str(account_dir.name or ""), global_fastest_u) if global_fastest_u else "") + fastest_obj = { + "username": global_fastest_u, + "displayName": display, + "maskedName": _mask_name(display), + "avatarUrl": avatar, + "seconds": int(global_fastest), + } + + slowest_obj = None + if global_slowest is not None and global_slowest_u: + agg = next((a for _, a in top_buddies if a.username == global_slowest_u), None) + if agg is None and best_agg is not None and best_agg.username == global_slowest_u: + agg = best_agg + if agg is not None: + slowest_obj = conv_to_obj(None, agg) + slowest_obj["seconds"] = int(global_slowest) + else: + row = contact_rows.get(global_slowest_u) + display = _pick_display_name(row, global_slowest_u) + avatar = _pick_avatar_url(row) or (_build_avatar_url(str(account_dir.name or ""), global_slowest_u) if global_slowest_u else "") + slowest_obj = { + "username": global_slowest_u, + "displayName": display, + "maskedName": _mask_name(display), + "avatarUrl": avatar, + "seconds": int(global_slowest), + } + + top_list = [conv_to_obj(score, agg) for score, agg in top_buddies] + + top_totals_list = [ + { + **conv_to_obj(None, agg), + "totalMessages": int(total), + } + for total, agg in top_totals + ] + + # Prepare "bar race" data: all 1v1 sessions (exclude official/system), cumulative per day. + race = None + if used_index and all_totals: + days_in_year = int((datetime(int(year) + 1, 1, 1) - datetime(int(year), 1, 1)).days) + u_list = [u for u, _ in sorted(all_totals.items(), key=lambda kv: (-int(kv[1] or 0), str(kv[0] or ""))) if u] + if days_in_year > 0 and u_list: + # Convert millisecond timestamps defensively. + ts_expr = ( + "CASE " + "WHEN CAST(create_time AS INTEGER) > 1000000000000 " + "THEN CAST(CAST(create_time AS INTEGER)/1000 AS INTEGER) " + "ELSE CAST(create_time AS INTEGER) " + "END" + ) + + base_where = ( + f"{ts_expr} >= ? AND {ts_expr} < ? " + "AND db_stem NOT LIKE 'biz_message%' " + "AND CAST(local_type AS INTEGER) != 10000 " + "AND username NOT LIKE '%@chatroom'" + ) + + sql_daily = ( + "SELECT username, " + "CAST(strftime('%j', datetime(ts, 'unixepoch', 'localtime')) AS INTEGER) - 1 AS doy, " + "COUNT(1) AS cnt " + "FROM (" + f" SELECT username, {ts_expr} AS ts " + " FROM message_fts " + f" WHERE {base_where}" + ") sub " + "GROUP BY username, doy" + ) + + u_set = set(u_list) + per_user_daily: dict[str, list[int]] = {} + try: + conn2 = sqlite3.connect(str(index_path)) + try: + rows = conn2.execute(sql_daily, (start_ts, end_ts)).fetchall() + finally: + conn2.close() + except Exception: + rows = [] + + for r in rows: + if not r: + continue + u = str(r[0] or "").strip() + if not u or u not in u_set: + continue + try: + doy = int(r[1] if r[1] is not None else -1) + cnt = int(r[2] or 0) + except Exception: + continue + if cnt <= 0 or doy < 0 or doy >= days_in_year: + continue + daily = per_user_daily.get(u) + if daily is None: + daily = [0] * days_in_year + per_user_daily[u] = daily + daily[doy] += cnt + + # Ensure we can render display names/avatars for the whole race list. + extra_usernames = [u for u in u_list if u and u not in contact_rows] + if extra_usernames: + try: + # sqlite has a default var limit; query in chunks. + CHUNK = 900 + for i in range(0, len(extra_usernames), CHUNK): + contact_rows.update(_load_contact_rows(account_dir / "contact.db", extra_usernames[i : i + CHUNK])) + except Exception: + pass + + series: list[dict[str, Any]] = [] + for u in u_list: + daily = per_user_daily.get(u) + if not daily: + continue + cum: list[int] = [] + running = 0 + for x in daily: + running += int(x or 0) + cum.append(int(running)) + + row = contact_rows.get(u) + display = _pick_display_name(row, u) + avatar = _pick_avatar_url(row) or (_build_avatar_url(str(account_dir.name or ""), u) if u else "") + series.append( + { + "username": u, + "displayName": display, + "maskedName": _mask_name(display), + "avatarUrl": avatar, + "totalMessages": int(all_totals.get(u) or 0), + "cumulativeCounts": cum, + } + ) + + race = { + "year": int(year), + "startDate": f"{int(year)}-01-01", + "endDate": f"{int(year)}-12-31", + "days": int(days_in_year), + "series": series, + } + + # Load all contacts for lottery animation (up to 50 random contacts) + all_contacts_list: list[dict[str, Any]] = [] + try: + contact_db_path = account_dir / "contact.db" + if contact_db_path.exists(): + conn = sqlite3.connect(str(contact_db_path)) + conn.row_factory = sqlite3.Row + try: + # Get contacts that are real users (not chatrooms, not official accounts) + sql = """ + SELECT username, remark, nick_name, alias, big_head_url, small_head_url + FROM contact + WHERE username NOT LIKE '%@chatroom' + AND username NOT LIKE 'gh_%' + AND username NOT LIKE 'weixin' + AND username NOT LIKE 'filehelper' + AND username NOT LIKE 'fmessage' + AND username NOT IN ('medianote', 'floatbottle', 'shakeapp', 'lbsapp', 'newsapp') + AND (nick_name IS NOT NULL AND nick_name != '') + ORDER BY RANDOM() + LIMIT 50 + """ + rows = conn.execute(sql).fetchall() + for r in rows: + u = str(r["username"] or "").strip() + if not u: + continue + display = _pick_display_name(r, u) + avatar = _pick_avatar_url(r) or (_build_avatar_url(str(account_dir.name or ""), u) if u else "") + all_contacts_list.append({ + "username": u, + "displayName": display, + "maskedName": _mask_name(display), + "avatarUrl": avatar, + }) + finally: + conn.close() + except Exception: + pass + + return { + "year": int(year), + "sentToContacts": int(len(sent_to_contacts)), + "replyEvents": int(total_replies), + "fastestReplySeconds": int(global_fastest) if global_fastest is not None else None, + "longestReplySeconds": int(global_slowest) if global_slowest is not None else None, + "bestBuddy": best_buddy_obj, + "fastest": fastest_obj, + "slowest": slowest_obj, + "topBuddies": top_list, + "topTotals": top_totals_list, + "allContacts": all_contacts_list, + "race": race, + "settings": { + "gapCapSeconds": int(gap_cap_seconds), + "tauSeconds": int(tau_seconds), + "usedIndex": bool(used_index), + "indexStatus": index_status, + }, + } + + +def build_card_03_reply_speed(*, account_dir: Path, year: int) -> dict[str, Any]: + stats = compute_reply_speed_stats(account_dir=account_dir, year=year) + + fastest = stats.get("fastestReplySeconds") + longest = stats.get("longestReplySeconds") + best = stats.get("bestBuddy") or None + replies = int(stats.get("replyEvents") or 0) + + if replies <= 0: + narrative = "今年你还没有可统计的“回复”记录(或尚未构建搜索索引)。" + else: + parts: list[str] = [] + if fastest is not None: + parts.append(f"最快一次,你只用了 {_format_duration_zh(int(fastest))} 就回了消息。") + if longest is not None: + parts.append(f"最长一次,你让对方等了 {_format_duration_zh(int(longest))}。") + if best and isinstance(best, dict) and best.get("displayName"): + avg_s = best.get("avgReplySeconds") + try: + avg_i = int(round(float(avg_s or 0.0))) + except Exception: + avg_i = 0 + parts.append( + f"最像你的聊天搭子是「{_mask_name(str(best.get('displayName') or ''))}」,平均每条回复用时 {_format_duration_zh(avg_i)}。" + ) + narrative = "".join(parts) if parts else "你的回复速度,藏着你最在意的人。" + + return { + "id": 3, + "title": "谁是你「秒回」的置顶关心?", + "scope": "global", + "category": "B", + "status": "ok", + "kind": "chat/reply_speed", + "narrative": narrative, + "data": stats, + } diff --git a/src/wechat_decrypt_tool/wrapped/service.py b/src/wechat_decrypt_tool/wrapped/service.py index 532cfeb..7c60a83 100644 --- a/src/wechat_decrypt_tool/wrapped/service.py +++ b/src/wechat_decrypt_tool/wrapped/service.py @@ -15,15 +15,16 @@ from .cards.card_00_global_overview import build_card_00_global_overview from .cards.card_01_cyber_schedule import WeekdayHourHeatmap, build_card_01_cyber_schedule, compute_weekday_hour_heatmap from .cards.card_02_message_chars import build_card_02_message_chars +from .cards.card_03_reply_speed import build_card_03_reply_speed logger = get_logger(__name__) # We use this number to version the cache filename so adding more cards won't accidentally serve # an older partial cache. -_IMPLEMENTED_UPTO_ID = 2 +_IMPLEMENTED_UPTO_ID = 3 # Bump this when we change card payloads/ordering while keeping the same implemented_upto. -_CACHE_VERSION = 5 +_CACHE_VERSION = 8 # "Manifest" is used by the frontend to render the deck quickly, then lazily fetch each card. @@ -50,6 +51,13 @@ "category": "C", "kind": "text/message_chars", }, + { + "id": 3, + "title": "谁是你「秒回」的置顶关心?", + "scope": "global", + "category": "B", + "kind": "chat/reply_speed", + }, ) _WRAPPED_CARD_ID_SET = {int(c["id"]) for c in _WRAPPED_CARD_MANIFEST} @@ -266,7 +274,7 @@ def build_wrapped_annual_response( ) -> dict[str, Any]: """Build annual wrapped response for the given account/year. - For now we implement cards up to id=2 (plus a meta overview card id=0). + For now we implement cards up to id=3 (plus a meta overview card id=0). """ account_dir = _resolve_account_dir(account) @@ -307,6 +315,8 @@ def build_wrapped_annual_response( cards.append(build_card_01_cyber_schedule(account_dir=account_dir, year=y, heatmap=heatmap_sent)) # Page 4: message char counts (sent vs received). cards.append(build_card_02_message_chars(account_dir=account_dir, year=y)) + # Page 5: reply speed / best chat buddy. + cards.append(build_card_03_reply_speed(account_dir=account_dir, year=y)) obj: dict[str, Any] = { "account": account_dir.name, @@ -496,6 +506,8 @@ def build_wrapped_annual_card( card = build_card_01_cyber_schedule(account_dir=account_dir, year=y, heatmap=heatmap_sent) elif cid == 2: card = build_card_02_message_chars(account_dir=account_dir, year=y) + elif cid == 3: + card = build_card_03_reply_speed(account_dir=account_dir, year=y) else: # Should be unreachable due to _WRAPPED_CARD_ID_SET check. raise ValueError(f"Unknown Wrapped card id: {cid}") diff --git a/tests/test_wrapped_reply_speed.py b/tests/test_wrapped_reply_speed.py new file mode 100644 index 0000000..9da41ec --- /dev/null +++ b/tests/test_wrapped_reply_speed.py @@ -0,0 +1,73 @@ +import unittest +from pathlib import Path +import sys + +# Ensure "src/" is importable when running tests from repo root. +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / "src")) + + +class TestWrappedReplySpeedScoring(unittest.TestCase): + def test_score_prefers_more_chat_when_speed_similar(self): + from wechat_decrypt_tool.wrapped.cards.card_03_reply_speed import _ConvAgg, _score_conv + + tau = 30 * 60 # 30min, keep in sync with production default + + # A: 秒回,但聊天很少 + a = _ConvAgg( + username="wxid_a", + incoming=3, + outgoing=3, + replies=3, + sum_gap=30, + sum_gap_capped=30, + min_gap=5, + max_gap=15, + ) + + # B: 稍慢,但聊天明显更多 + b = _ConvAgg( + username="wxid_b", + incoming=50, + outgoing=50, + replies=50, + sum_gap=3000, # avg 60s + sum_gap_capped=3000, + min_gap=10, + max_gap=120, + ) + + self.assertGreater(_score_conv(agg=b, tau_seconds=tau), _score_conv(agg=a, tau_seconds=tau)) + + def test_score_penalizes_extremely_slow_reply(self): + from wechat_decrypt_tool.wrapped.cards.card_03_reply_speed import _ConvAgg, _score_conv + + tau = 30 * 60 + + fast_few = _ConvAgg( + username="wxid_fast", + incoming=5, + outgoing=5, + replies=5, + sum_gap=50, # avg 10s + sum_gap_capped=50, + min_gap=1, + max_gap=20, + ) + + slow_many = _ConvAgg( + username="wxid_slow", + incoming=80, + outgoing=80, + replies=80, + sum_gap=80 * 7200, # avg 2h + sum_gap_capped=80 * 7200, + min_gap=60, + max_gap=100000, + ) + + self.assertGreater(_score_conv(agg=fast_few, tau_seconds=tau), _score_conv(agg=slow_many, tau_seconds=tau)) + + +if __name__ == "__main__": + unittest.main() From 3297f24f52c9a1be50a2bdb15416b8db37583d9e Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 3 Feb 2026 16:31:31 +0800 Subject: [PATCH 022/103] =?UTF-8?q?improvement(chat):=20=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=20realtime=20=E5=A2=9E=E9=87=8F=E5=90=8C=E6=AD=A5=E5=B9=B6?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=B6=88=E6=81=AF=E6=90=9C=E7=B4=A2=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增后台 autosync:监听 db_storage 变化后触发 realtime -> decrypted 增量同步(去抖/限频)\n- 优化 WCDB realtime 关闭:支持锁超时,避免 busy 时强行 shutdown\n- 新增消息搜索索引相关接口(status/build/senders)\n- 前端关闭 realtime 前改为 sync_all,减少切回解密库后的列表/消息落后\n- 增加解密库消息表/索引创建相关单测 --- frontend/composables/useApi.js | 1 + frontend/pages/chat/[[username]].vue | 62 ++- src/wechat_decrypt_tool/api.py | 32 +- .../chat_realtime_autosync.py | 331 ++++++++++++ src/wechat_decrypt_tool/routers/chat.py | 494 ++++++++++++++++-- src/wechat_decrypt_tool/wcdb_realtime.py | 24 +- tests/test_realtime_sync_table_creation.py | 102 ++++ 7 files changed, 975 insertions(+), 71 deletions(-) create mode 100644 src/wechat_decrypt_tool/chat_realtime_autosync.py create mode 100644 tests/test_realtime_sync_table_creation.py diff --git a/frontend/composables/useApi.js b/frontend/composables/useApi.js index 590379f..cbf1c5f 100644 --- a/frontend/composables/useApi.js +++ b/frontend/composables/useApi.js @@ -99,6 +99,7 @@ export const useApi = () => { if (params && params.account) query.set('account', params.account) if (params && params.username) query.set('username', params.username) if (params && params.max_scan != null) query.set('max_scan', String(params.max_scan)) + if (params && params.backfill_limit != null) query.set('backfill_limit', String(params.backfill_limit)) const url = '/chat/realtime/sync' + (query.toString() ? `?${query.toString()}` : '') return await request(url, { method: 'POST' }) } diff --git a/frontend/pages/chat/[[username]].vue b/frontend/pages/chat/[[username]].vue index daa21f0..3bda422 100644 --- a/frontend/pages/chat/[[username]].vue +++ b/frontend/pages/chat/[[username]].vue @@ -59,6 +59,35 @@

+ + +
+
+
+ +
+
+
- +
@@ -358,7 +387,7 @@ :alt="message.sender + '的头像'" class="w-full h-full object-cover" referrerpolicy="no-referrer" - @error="onMessageAvatarError($event, message)" + @error="onAvatarError($event, message)" >
- +
{{ (c.name || c.username || '?').charAt(0) }}
@@ -1779,6 +1808,7 @@ useHead({ const route = useRoute() const isSnsRoute = computed(() => route.path?.startsWith('/sns')) +const isWrappedRoute = computed(() => route.path?.startsWith('/wrapped')) const routeUsername = computed(() => { const raw = route.params.username @@ -2098,6 +2128,10 @@ const goSns = async () => { await navigateTo('/sns') } +const goWrapped = async () => { + await navigateTo('/wrapped') +} + // 实时更新(WCDB DLL + db_storage watcher) const realtimeEnabled = ref(false) const realtimeAvailable = ref(false) @@ -4319,10 +4353,10 @@ const normalizeMessage = (msg) => { } } -const onMessageAvatarError = (e, message) => { +const onAvatarError = (e, target) => { // Make sure we fall back to the initial avatar if the URL 404s/blocks. try { e?.target && (e.target.style.display = 'none') } catch {} - try { if (message) message.avatar = null } catch {} + try { if (target) target.avatar = null } catch {} } const shouldShowEmojiDownload = (message) => { @@ -5118,14 +5152,16 @@ const toggleRealtime = async (opts = {}) => { try { const api = useApi() const u = String(selectedContact.value?.username || '').trim() - if (u) { - // Use a larger scan window on shutdown to reduce the chance of missing a backlog. - await api.syncChatRealtimeMessages({ - account: selectedAccount.value, - username: u, - max_scan: 5000 - }) - } + // Sync all sessions once before falling back to the decrypted snapshot. + // This keeps the sidebar session list consistent (e.g. new friends) after a refresh. + await api.syncChatRealtimeAll({ + account: selectedAccount.value, + max_scan: 200, + priority_username: u, + priority_max_scan: 5000, + include_hidden: true, + include_official: true + }) } catch {} await refreshSessionsForSelectedAccount({ sourceOverride: '' }) if (selectedContact.value?.username) { diff --git a/src/wechat_decrypt_tool/api.py b/src/wechat_decrypt_tool/api.py index 14d400e..5eeb36a 100644 --- a/src/wechat_decrypt_tool/api.py +++ b/src/wechat_decrypt_tool/api.py @@ -11,6 +11,7 @@ from .logging_config import setup_logging, get_logger from .path_fix import PathFixRoute +from .chat_realtime_autosync import CHAT_REALTIME_AUTOSYNC from .routers.chat import router as _chat_router from .routers.chat_export import router as _chat_export_router from .routers.chat_media import router as _chat_media_router @@ -121,16 +122,41 @@ def _maybe_mount_frontend() -> None: _maybe_mount_frontend() +@app.on_event("startup") +async def _startup_background_jobs() -> None: + try: + CHAT_REALTIME_AUTOSYNC.start() + except Exception: + logger.exception("Failed to start realtime autosync service") + + @app.on_event("shutdown") async def _shutdown_wcdb_realtime() -> None: try: - WCDB_REALTIME.close_all() + CHAT_REALTIME_AUTOSYNC.stop() except Exception: pass + close_ok = False + lock_timeout_s: float | None = 0.2 try: - _wcdb_shutdown() + raw = str(os.environ.get("WECHAT_TOOL_WCDB_SHUTDOWN_LOCK_TIMEOUT_S", "0.2") or "").strip() + lock_timeout_s = float(raw) if raw else 0.2 + if lock_timeout_s <= 0: + lock_timeout_s = None except Exception: - pass + lock_timeout_s = 0.2 + try: + close_ok = WCDB_REALTIME.close_all(lock_timeout_s=lock_timeout_s) + except Exception: + close_ok = False + if close_ok: + try: + _wcdb_shutdown() + except Exception: + pass + else: + # If some conn locks were busy, other threads may still be running WCDB calls; avoid shutting down the lib. + logger.warning("[wcdb] close_all not fully completed; skip wcdb_shutdown") if __name__ == "__main__": diff --git a/src/wechat_decrypt_tool/chat_realtime_autosync.py b/src/wechat_decrypt_tool/chat_realtime_autosync.py new file mode 100644 index 0000000..55021b8 --- /dev/null +++ b/src/wechat_decrypt_tool/chat_realtime_autosync.py @@ -0,0 +1,331 @@ +"""Background auto-sync from WCDB realtime (db_storage) into decrypted sqlite. + +Why: +- The UI can read "latest" messages from WCDB realtime (`source=realtime`), but most APIs default to the + decrypted sqlite snapshot (`source=decrypted`). +- Previously we only synced realtime -> decrypted when the UI toggled realtime off, which caused `/api/chat/messages` + to lag behind while realtime was enabled. + +This module runs a lightweight background poller that watches db_storage mtime changes and triggers an incremental +sync_all into decrypted sqlite. It is intentionally conservative (debounced + rate-limited) to avoid hammering the +backend or the sqlite files. +""" + +from __future__ import annotations + +import os +import threading +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Optional + +from fastapi import HTTPException + +from .chat_helpers import _list_decrypted_accounts, _resolve_account_dir +from .logging_config import get_logger +from .wcdb_realtime import WCDB_REALTIME + +logger = get_logger(__name__) + + +def _env_bool(name: str, default: bool) -> bool: + raw = str(os.environ.get(name, "") or "").strip().lower() + if not raw: + return default + return raw not in {"0", "false", "no", "off"} + + +def _env_int(name: str, default: int, *, min_v: int, max_v: int) -> int: + raw = str(os.environ.get(name, "") or "").strip() + try: + v = int(raw) + except Exception: + v = int(default) + if v < min_v: + v = min_v + if v > max_v: + v = max_v + return v + + +def _scan_db_storage_mtime_ns(db_storage_dir: Path) -> int: + """Best-effort scan of db_storage for a "latest mtime" signal. + + We intentionally restrict to common database buckets to reduce walk cost. + """ + + try: + base = str(db_storage_dir) + except Exception: + return 0 + + max_ns = 0 + try: + for root, dirs, files in os.walk(base): + if root == base: + allow = {"message", "session", "contact", "head_image", "bizchat", "sns", "general", "favorite"} + dirs[:] = [d for d in dirs if str(d or "").lower() in allow] + + for fn in files: + name = str(fn or "").lower() + if not name.endswith((".db", ".db-wal", ".db-shm")): + continue + if not ( + ("message" in name) + or ("session" in name) + or ("contact" in name) + or ("name2id" in name) + or ("head_image" in name) + ): + continue + + try: + st = os.stat(os.path.join(root, fn)) + m_ns = int(getattr(st, "st_mtime_ns", 0) or 0) + if m_ns <= 0: + m_ns = int(float(getattr(st, "st_mtime", 0.0) or 0.0) * 1_000_000_000) + if m_ns > max_ns: + max_ns = m_ns + except Exception: + continue + except Exception: + return 0 + + return max_ns + + +@dataclass +class _AccountState: + last_mtime_ns: int = 0 + due_at: float = 0.0 + last_sync_end_at: float = 0.0 + thread: Optional[threading.Thread] = None + + +class ChatRealtimeAutoSyncService: + def __init__(self) -> None: + self._enabled = _env_bool("WECHAT_TOOL_REALTIME_AUTOSYNC", True) + self._interval_ms = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_INTERVAL_MS", 1000, min_v=200, max_v=10_000) + self._debounce_ms = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_DEBOUNCE_MS", 600, min_v=0, max_v=10_000) + self._min_sync_interval_ms = _env_int( + "WECHAT_TOOL_REALTIME_AUTOSYNC_MIN_SYNC_INTERVAL_MS", 800, min_v=0, max_v=60_000 + ) + self._workers = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_WORKERS", 1, min_v=1, max_v=4) + + # Sync strategy defaults: cheap incremental write into decrypted sqlite. + self._sync_max_scan = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_MAX_SCAN", 200, min_v=20, max_v=5000) + self._priority_max_scan = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_PRIORITY_MAX_SCAN", 600, min_v=20, max_v=5000) + self._backfill_limit = _env_int("WECHAT_TOOL_REALTIME_AUTOSYNC_BACKFILL_LIMIT", 0, min_v=0, max_v=5000) + # Default to the same conservative filtering as the chat UI sidebar (avoid hammering gh_/hidden sessions). + self._include_hidden = _env_bool("WECHAT_TOOL_REALTIME_AUTOSYNC_INCLUDE_HIDDEN", False) + self._include_official = _env_bool("WECHAT_TOOL_REALTIME_AUTOSYNC_INCLUDE_OFFICIAL", False) + + self._mu = threading.Lock() + self._states: dict[str, _AccountState] = {} + self._stop = threading.Event() + self._thread: Optional[threading.Thread] = None + + def start(self) -> None: + if not self._enabled: + logger.info("[realtime-autosync] disabled by env WECHAT_TOOL_REALTIME_AUTOSYNC=0") + return + + with self._mu: + if self._thread is not None and self._thread.is_alive(): + return + self._stop.clear() + self._thread = threading.Thread(target=self._run, name="realtime-autosync", daemon=True) + self._thread.start() + + logger.info( + "[realtime-autosync] started interval_ms=%s debounce_ms=%s min_sync_interval_ms=%s max_scan=%s backfill_limit=%s workers=%s", + int(self._interval_ms), + int(self._debounce_ms), + int(self._min_sync_interval_ms), + int(self._sync_max_scan), + int(self._backfill_limit), + int(self._workers), + ) + + def stop(self) -> None: + with self._mu: + th = self._thread + self._thread = None + + if th is None: + return + + self._stop.set() + try: + th.join(timeout=5.0) + except Exception: + pass + + logger.info("[realtime-autosync] stopped") + + def _run(self) -> None: + while not self._stop.is_set(): + tick_t0 = time.perf_counter() + try: + self._tick() + except Exception: + logger.exception("[realtime-autosync] tick failed") + + # Avoid busy looping on exceptions; keep a minimum sleep. + elapsed_ms = (time.perf_counter() - tick_t0) * 1000.0 + sleep_ms = max(100.0, float(self._interval_ms) - elapsed_ms) + self._stop.wait(timeout=sleep_ms / 1000.0) + + def _tick(self) -> None: + accounts = _list_decrypted_accounts() + now = time.time() + + if not accounts: + return + + for acc in accounts: + if self._stop.is_set(): + break + + try: + account_dir = _resolve_account_dir(acc) + except HTTPException: + continue + except Exception: + continue + + info = WCDB_REALTIME.get_status(account_dir) + available = bool(info.get("dll_present") and info.get("key_present") and info.get("db_storage_dir")) + if not available: + continue + + db_storage_dir = Path(str(info.get("db_storage_dir") or "").strip()) + if not db_storage_dir.exists() or not db_storage_dir.is_dir(): + continue + + scan_t0 = time.perf_counter() + mtime_ns = _scan_db_storage_mtime_ns(db_storage_dir) + scan_ms = (time.perf_counter() - scan_t0) * 1000.0 + if scan_ms > 2000: + logger.warning("[realtime-autosync] scan slow account=%s ms=%.1f", acc, scan_ms) + + with self._mu: + st = self._states.setdefault(acc, _AccountState()) + if mtime_ns and mtime_ns != st.last_mtime_ns: + st.last_mtime_ns = int(mtime_ns) + st.due_at = now + (float(self._debounce_ms) / 1000.0) + + # Schedule daemon threads. (Important: do NOT use ThreadPoolExecutor here; its threads are non-daemon on + # Windows/Python 3.12 and can prevent Ctrl+C from stopping the process.) + to_start: list[threading.Thread] = [] + with self._mu: + # Drop state for removed accounts to keep memory bounded. + keep = set(accounts) + for acc in list(self._states.keys()): + if acc not in keep: + self._states.pop(acc, None) + + # Clean up finished threads and compute current concurrency. + running = 0 + for st in self._states.values(): + th = st.thread + if th is not None and th.is_alive(): + running += 1 + elif th is not None and (not th.is_alive()): + st.thread = None + + for acc, st in self._states.items(): + if running >= int(self._workers): + break + if st.due_at <= 0 or st.due_at > now: + continue + if st.thread is not None and st.thread.is_alive(): + continue + + since = now - float(st.last_sync_end_at or 0.0) + min_interval = float(self._min_sync_interval_ms) / 1000.0 + if min_interval > 0 and since < min_interval: + st.due_at = now + (min_interval - since) + continue + + st.due_at = 0.0 + th = threading.Thread( + target=self._sync_account_runner, + args=(acc,), + name=f"realtime-autosync-{acc}", + daemon=True, + ) + st.thread = th + to_start.append(th) + running += 1 + + for th in to_start: + if self._stop.is_set(): + break + try: + th.start() + except Exception: + # Best-effort: if a thread fails to start, clear the state so we can retry later. + with self._mu: + for acc, st in self._states.items(): + if st.thread is th: + st.thread = None + break + + def _sync_account_runner(self, account: str) -> None: + account = str(account or "").strip() + try: + if self._stop.is_set() or (not account): + return + res = self._sync_account(account) + inserted = int((res or {}).get("inserted_total") or (res or {}).get("insertedTotal") or 0) + synced = int((res or {}).get("synced") or (res or {}).get("sessionsSynced") or 0) + logger.info("[realtime-autosync] sync done account=%s synced=%s inserted=%s", account, synced, inserted) + except Exception: + logger.exception("[realtime-autosync] sync failed account=%s", account) + finally: + with self._mu: + st = self._states.get(account) + if st is not None: + st.thread = None + st.last_sync_end_at = time.time() + + def _sync_account(self, account: str) -> dict[str, Any]: + """Run a cheap incremental sync_all for one account.""" + + account = str(account or "").strip() + if not account: + return {"status": "skipped", "reason": "missing account"} + + try: + account_dir = _resolve_account_dir(account) + except Exception as e: + return {"status": "skipped", "reason": f"resolve account failed: {e}"} + + info = WCDB_REALTIME.get_status(account_dir) + available = bool(info.get("dll_present") and info.get("key_present") and info.get("db_storage_dir")) + if not available: + return {"status": "skipped", "reason": "realtime not available"} + + # Import lazily to avoid any startup import ordering issues. + from .routers.chat import sync_chat_realtime_messages_all + + try: + return sync_chat_realtime_messages_all( + request=None, # not used by the handler logic; we run it as an internal job + account=account, + max_scan=int(self._sync_max_scan), + priority_username=None, + priority_max_scan=int(self._priority_max_scan), + include_hidden=bool(self._include_hidden), + include_official=bool(self._include_official), + backfill_limit=int(self._backfill_limit), + ) + except HTTPException as e: + return {"status": "error", "error": str(e.detail or "")} + except Exception as e: + return {"status": "error", "error": str(e)} + + +CHAT_REALTIME_AUTOSYNC = ChatRealtimeAutoSyncService() diff --git a/src/wechat_decrypt_tool/routers/chat.py b/src/wechat_decrypt_tool/routers/chat.py index 116ab0d..7c02107 100644 --- a/src/wechat_decrypt_tool/routers/chat.py +++ b/src/wechat_decrypt_tool/routers/chat.py @@ -291,6 +291,130 @@ def _resolve_decrypted_message_table(account_dir: Path, username: str) -> Option return None +def _pick_message_db_for_new_table(account_dir: Path, username: str) -> Optional[Path]: + """Pick a target decrypted sqlite db to place a new Msg_ table. + + Some accounts have both `message_*.db` and `biz_message_*.db`. For normal users we prefer + `message*.db`; for official accounts (`gh_`) we prefer `biz_message*.db`. + """ + + db_paths = _iter_message_db_paths(account_dir) + if not db_paths: + return None + + uname = str(username or "").strip() + want_biz = bool(uname and uname.startswith("gh_")) + + msg_paths: list[Path] = [] + biz_paths: list[Path] = [] + other_paths: list[Path] = [] + for p in db_paths: + ln = p.name.lower() + if re.match(r"^message(_\d+)?\.db$", ln): + msg_paths.append(p) + elif re.match(r"^biz_message(_\d+)?\.db$", ln): + biz_paths.append(p) + else: + other_paths.append(p) + + if want_biz and biz_paths: + return biz_paths[0] + if msg_paths: + return msg_paths[0] + if biz_paths: + return biz_paths[0] + return other_paths[0] if other_paths else db_paths[0] + + +def _ensure_decrypted_message_table(account_dir: Path, username: str) -> tuple[Path, str]: + """Ensure the decrypted sqlite has a Msg_ table for this conversation. + + Why: + - The decrypted snapshot can miss newly created sessions, so WCDB realtime can show messages + while the decrypted message_*.db has no table -> `/api/chat/messages` returns empty. + - Realtime sync should be able to create the missing conversation table and then insert rows. + """ + + uname = str(username or "").strip() + if not uname: + raise HTTPException(status_code=400, detail="Missing username.") + + resolved = _resolve_decrypted_message_table(account_dir, uname) + if resolved: + return resolved + + target_db = _pick_message_db_for_new_table(account_dir, uname) + if target_db is None: + raise HTTPException(status_code=404, detail="No message databases found for this account.") + + # Use the conventional WeChat naming (`Msg_`). Resolution is case-insensitive. + import hashlib + + md5_hex = hashlib.md5(uname.encode("utf-8")).hexdigest() + table_name = f"Msg_{md5_hex}" + quoted_table = _quote_ident(table_name) + + conn = sqlite3.connect(str(target_db)) + try: + conn.execute( + f""" + CREATE TABLE IF NOT EXISTS {quoted_table}( + local_id INTEGER PRIMARY KEY AUTOINCREMENT, + server_id INTEGER, + local_type INTEGER, + sort_seq INTEGER, + real_sender_id INTEGER, + create_time INTEGER, + status INTEGER, + upload_status INTEGER, + download_status INTEGER, + server_seq INTEGER, + origin_source INTEGER, + source TEXT, + message_content TEXT, + compress_content TEXT, + packed_info_data BLOB, + WCDB_CT_message_content INTEGER DEFAULT NULL, + WCDB_CT_source INTEGER DEFAULT NULL + ) + """ + ) + + # Match the common indexes we observe on existing Msg_* tables for query performance. + idx_sender = _quote_ident(f"{table_name}_SENDERID") + idx_server = _quote_ident(f"{table_name}_SERVERID") + idx_sort = _quote_ident(f"{table_name}_SORTSEQ") + idx_type_seq = _quote_ident(f"{table_name}_TYPE_SEQ") + conn.execute(f"CREATE INDEX IF NOT EXISTS {idx_sender} ON {quoted_table}(real_sender_id)") + conn.execute(f"CREATE INDEX IF NOT EXISTS {idx_server} ON {quoted_table}(server_id)") + conn.execute(f"CREATE INDEX IF NOT EXISTS {idx_sort} ON {quoted_table}(sort_seq)") + conn.execute(f"CREATE INDEX IF NOT EXISTS {idx_type_seq} ON {quoted_table}(local_type, sort_seq)") + + conn.commit() + finally: + conn.close() + + return target_db, table_name + + +def _ensure_decrypted_message_tables( + account_dir: Path, usernames: list[str] +) -> dict[str, tuple[Path, str]]: + """Bulk resolver that also creates missing Msg_ tables when needed.""" + + table_map = _resolve_decrypted_message_tables(account_dir, usernames) + for u in usernames: + uname = str(u or "").strip() + if not uname or uname in table_map: + continue + try: + table_map[uname] = _ensure_decrypted_message_table(account_dir, uname) + except Exception: + # Best-effort: if we can't create the table, keep it missing and let callers skip. + continue + return table_map + + def _resolve_decrypted_message_tables( account_dir: Path, usernames: list[str] ) -> dict[str, tuple[Path, str]]: @@ -358,18 +482,160 @@ def _ensure_session_last_message_table(conn: sqlite3.Connection) -> None: ) +def _get_session_table_columns(conn: sqlite3.Connection) -> set[str]: + try: + rows = conn.execute("PRAGMA table_info(SessionTable)").fetchall() + # PRAGMA table_info returns: cid, name, type, notnull, dflt_value, pk + cols = {str(r[1]) for r in rows if r and r[1]} + return cols + except Exception: + return set() + + +def _upsert_session_table_rows(conn: sqlite3.Connection, rows: list[dict[str, Any]]) -> None: + """Best-effort upsert of WCDB Session rows into decrypted session.db::SessionTable. + + Why: + - WCDB realtime can observe newly created sessions (e.g., new friends) immediately. + - The decrypted snapshot's session.db can become stale and miss those sessions entirely, causing + the left sidebar list to differ after a refresh (when the UI falls back to decrypted). + + This upsert intentionally avoids depending on message tables; it only keeps SessionTable fresh. + """ + + if not rows: + return + + # Ensure SessionTable exists; if not, silently skip (older/partial accounts). + try: + conn.execute("SELECT 1 FROM SessionTable LIMIT 1").fetchone() + except Exception: + return + + cols = _get_session_table_columns(conn) + if "username" not in cols: + return + + uniq_usernames: list[str] = [] + for r in rows: + u = str((r or {}).get("username") or "").strip() + if not u: + continue + uniq_usernames.append(u) + uniq_usernames = list(dict.fromkeys(uniq_usernames)) + if not uniq_usernames: + return + + # Insert missing rows first so UPDATE always has a target. + try: + conn.executemany( + "INSERT OR IGNORE INTO SessionTable(username) VALUES (?)", + [(u,) for u in uniq_usernames], + ) + except Exception: + # If the schema is unusual, don't fail the whole sync. + return + + # Only update columns that exist in this account's schema. + # Keep the order stable so executemany parameters line up. + desired_cols = [ + "unread_count", + "is_hidden", + "summary", + "draft", + "last_timestamp", + "sort_timestamp", + "last_msg_type", + "last_msg_sub_type", + ] + update_cols = [c for c in desired_cols if c in cols] + if not update_cols: + return + + def _int(v: Any) -> int: + try: + return int(v or 0) + except Exception: + return 0 + + def _text(v: Any) -> str: + try: + return str(v or "") + except Exception: + return "" + + params: list[tuple[Any, ...]] = [] + for r in rows: + u = str((r or {}).get("username") or "").strip() + if not u: + continue + values: list[Any] = [] + for c in update_cols: + if c in {"unread_count", "is_hidden", "last_timestamp", "sort_timestamp", "last_msg_type", "last_msg_sub_type"}: + values.append(_int((r or {}).get(c))) + else: + values.append(_text((r or {}).get(c))) + values.append(u) + params.append(tuple(values)) + + if not params: + return + + set_expr = ", ".join([f"{c} = ?" for c in update_cols]) + conn.executemany(f"UPDATE SessionTable SET {set_expr} WHERE username = ?", params) + + +def _load_session_last_message_times(conn: sqlite3.Connection, usernames: list[str]) -> dict[str, int]: + """Load last synced message create_time per conversation from session.db::session_last_message. + + Note: This is used as the *sync watermark* for realtime -> decrypted, because SessionTable timestamps may be + updated from WCDB session rows for UI consistency. + """ + + uniq = list(dict.fromkeys([str(u or "").strip() for u in usernames if str(u or "").strip()])) + if not uniq: + return {} + + out: dict[str, int] = {} + chunk_size = 900 + for i in range(0, len(uniq), chunk_size): + chunk = uniq[i : i + chunk_size] + placeholders = ",".join(["?"] * len(chunk)) + try: + rows = conn.execute( + f"SELECT username, create_time FROM session_last_message WHERE username IN ({placeholders})", + chunk, + ).fetchall() + except Exception: + continue + for r in rows: + u = str((r["username"] if isinstance(r, sqlite3.Row) else r[0]) or "").strip() + if not u: + continue + try: + ts = int((r["create_time"] if isinstance(r, sqlite3.Row) else r[1]) or 0) + except Exception: + ts = 0 + out[u] = int(ts or 0) + return out + + @router.post("/api/chat/realtime/sync", summary="实时消息同步到解密库(按会话增量)") def sync_chat_realtime_messages( request: Request, username: str, account: Optional[str] = None, max_scan: int = 600, + backfill_limit: int = 200, ): """ 设计目的:实时模式只用来“同步增量”到 output/databases 下的解密库,前端始终从解密库读取显示, 避免 WCDB realtime 返回格式差异(如 compress_content/message_content 的 hex 编码)直接影响渲染。 同步策略:从 WCDB 获取最新消息(从新到旧),直到遇到解密库中已存在的最大 local_id 为止。 + + backfill_limit:同步过程中额外“回填”旧消息的 packed_info_data 的最大行数(用于修复旧库缺失字段)。 + - 设为 0 可显著降低每次同步的扫描/写入开销(更适合前端实时轮询/推送触发的高频增量同步)。 """ if not username: raise HTTPException(status_code=400, detail="Missing username.") @@ -377,6 +643,10 @@ def sync_chat_realtime_messages( max_scan = 50 if max_scan > 5000: max_scan = 5000 + if backfill_limit < 0: + backfill_limit = 0 + if backfill_limit > 5000: + backfill_limit = 5000 account_dir = _resolve_account_dir(account) trace_id = f"rt-sync-{int(time.time() * 1000)}-{threading.get_ident()}" @@ -399,10 +669,9 @@ def sync_chat_realtime_messages( except WCDBRealtimeError as e: raise HTTPException(status_code=400, detail=str(e)) - resolved = _resolve_decrypted_message_table(account_dir, username) - if not resolved: - raise HTTPException(status_code=404, detail="Conversation table not found in decrypted databases.") - msg_db_path, table_name = resolved + # Some sessions may not exist in the decrypted snapshot yet; create the missing Msg_ table + # so we can insert the realtime rows and make `/api/chat/messages` work after switching off realtime. + msg_db_path, table_name = _ensure_decrypted_message_table(account_dir, username) logger.info( "[%s] resolved decrypted table account=%s username=%s db=%s table=%s", trace_id, @@ -493,7 +762,6 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: offset = 0 new_rows: list[dict[str, Any]] = [] backfill_rows: list[dict[str, Any]] = [] - backfill_limit = min(200, int(max_scan)) reached_existing = False stop = False @@ -545,8 +813,11 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: continue reached_existing = True + if int(backfill_limit) <= 0: + stop = True + break backfill_rows.append(norm) - if len(backfill_rows) >= backfill_limit: + if len(backfill_rows) >= int(backfill_limit): stop = True break @@ -772,11 +1043,18 @@ def _sync_chat_realtime_messages_for_table( msg_db_path: Path, table_name: str, max_scan: int, + backfill_limit: int = 200, ) -> dict[str, Any]: if max_scan < 50: max_scan = 50 if max_scan > 5000: max_scan = 5000 + if backfill_limit < 0: + backfill_limit = 0 + if backfill_limit > 5000: + backfill_limit = 5000 + if backfill_limit > max_scan: + backfill_limit = max_scan msg_conn = sqlite3.connect(str(msg_db_path)) msg_conn.row_factory = sqlite3.Row @@ -858,13 +1136,12 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: offset = 0 new_rows: list[dict[str, Any]] = [] backfill_rows: list[dict[str, Any]] = [] - backfill_limit = min(200, int(max_scan)) reached_existing = False stop = False while scanned < int(max_scan): take = min(batch_size, int(max_scan) - scanned) - logger.info( + logger.debug( "[realtime] wcdb_get_messages account=%s username=%s take=%s offset=%s", account_dir.name, username, @@ -875,7 +1152,7 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: with rt_conn.lock: raw_rows = _wcdb_get_messages(rt_conn.handle, username, limit=take, offset=offset) wcdb_ms = (time.perf_counter() - wcdb_t0) * 1000.0 - logger.info( + logger.debug( "[realtime] wcdb_get_messages done account=%s username=%s rows=%s ms=%.1f", account_dir.name, username, @@ -907,8 +1184,11 @@ def normalize(item: dict[str, Any]) -> dict[str, Any]: continue reached_existing = True + if int(backfill_limit) <= 0: + stop = True + break backfill_rows.append(norm) - if len(backfill_rows) >= backfill_limit: + if len(backfill_rows) >= int(backfill_limit): stop = True break @@ -1115,6 +1395,7 @@ def sync_chat_realtime_messages_all( priority_max_scan: int = 600, include_hidden: bool = True, include_official: bool = True, + backfill_limit: int = 200, ): """ 全量会话同步(增量):遍历会话列表,对每个会话调用与 /realtime/sync 相同的“遇到已同步 local_id 即停止”逻辑。 @@ -1141,6 +1422,12 @@ def sync_chat_realtime_messages_all( priority_max_scan = max_scan if priority_max_scan > 5000: priority_max_scan = 5000 + if backfill_limit < 0: + backfill_limit = 0 + if backfill_limit > 5000: + backfill_limit = 5000 + if backfill_limit > max_scan: + backfill_limit = max_scan priority = str(priority_username or "").strip() started = time.time() @@ -1172,6 +1459,7 @@ def sync_chat_realtime_messages_all( raw_sessions = [] sessions: list[tuple[int, str]] = [] + realtime_rows_by_user: dict[str, dict[str, Any]] = {} for item in raw_sessions: if not isinstance(item, dict): continue @@ -1198,6 +1486,34 @@ def sync_chat_realtime_messages_all( break sessions.append((ts, uname)) + # Keep a normalized SessionTable row for upserting into decrypted session.db. + norm_row = { + "username": uname, + "unread_count": item.get("unread_count", item.get("unreadCount", 0)), + "is_hidden": item.get("is_hidden", item.get("isHidden", 0)), + "summary": item.get("summary", ""), + "draft": item.get("draft", ""), + "last_timestamp": item.get("last_timestamp", item.get("lastTimestamp", 0)), + "sort_timestamp": item.get( + "sort_timestamp", + item.get("sortTimestamp", item.get("last_timestamp", item.get("lastTimestamp", 0))), + ), + "last_msg_type": item.get("last_msg_type", item.get("lastMsgType", 0)), + "last_msg_sub_type": item.get("last_msg_sub_type", item.get("lastMsgSubType", 0)), + } + # Prefer the row with the newer sort timestamp for the same username. + prev = realtime_rows_by_user.get(uname) + try: + prev_sort = int((prev or {}).get("sort_timestamp") or 0) + except Exception: + prev_sort = 0 + try: + cur_sort = int(norm_row.get("sort_timestamp") or 0) + except Exception: + cur_sort = 0 + if prev is None or cur_sort >= prev_sort: + realtime_rows_by_user[uname] = norm_row + def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: seen = set() out: list[tuple[int, str]] = [] @@ -1219,7 +1535,8 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: len(all_usernames), ) - # Skip sessions whose decrypted session.db already has a newer/equal sort_timestamp. + # Keep SessionTable fresh for UI consistency, and use session_last_message.create_time as the + # "sync watermark" (instead of SessionTable timestamps) to decide whether a session needs syncing. decrypted_ts_by_user: dict[str, int] = {} if all_usernames: try: @@ -1227,45 +1544,49 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: sconn = sqlite3.connect(str(session_db_path)) sconn.row_factory = sqlite3.Row try: - uniq = list(dict.fromkeys([u for u in all_usernames if u])) - chunk_size = 900 - for i in range(0, len(uniq), chunk_size): - chunk = uniq[i : i + chunk_size] - placeholders = ",".join(["?"] * len(chunk)) + _ensure_session_last_message_table(sconn) + + # If the cache table exists but is empty (older accounts), attempt a one-time build so we + # don't keep treating every session as "needs_sync". + try: + cnt = int(sconn.execute("SELECT COUNT(1) FROM session_last_message").fetchone()[0] or 0) + except Exception: + cnt = 0 + if cnt <= 0: + try: + sconn.close() + except Exception: + pass try: - rows = sconn.execute( - f"SELECT username, sort_timestamp, last_timestamp FROM SessionTable WHERE username IN ({placeholders})", - chunk, - ).fetchall() - for r in rows: - u = str(r["username"] or "").strip() - if not u: - continue - try: - ts = int(r["sort_timestamp"] or 0) - except Exception: - ts = 0 - if ts <= 0: - try: - ts = int(r["last_timestamp"] or 0) - except Exception: - ts = 0 - decrypted_ts_by_user[u] = int(ts or 0) - except sqlite3.OperationalError: - rows = sconn.execute( - f"SELECT username, last_timestamp FROM SessionTable WHERE username IN ({placeholders})", - chunk, - ).fetchall() - for r in rows: - u = str(r["username"] or "").strip() - if not u: - continue - try: - decrypted_ts_by_user[u] = int(r["last_timestamp"] or 0) - except Exception: - decrypted_ts_by_user[u] = 0 + build_session_last_message_table( + account_dir, + rebuild=False, + include_hidden=True, + include_official=True, + ) + except Exception: + pass + sconn = sqlite3.connect(str(session_db_path)) + sconn.row_factory = sqlite3.Row + _ensure_session_last_message_table(sconn) + + # Upsert latest WCDB sessions into decrypted SessionTable so the sidebar list remains stable + # after switching off realtime (or refreshing the page). + try: + _upsert_session_table_rows(sconn, list(realtime_rows_by_user.values())) + sconn.commit() + except Exception: + try: + sconn.rollback() + except Exception: + pass + + decrypted_ts_by_user = _load_session_last_message_times(sconn, all_usernames) finally: - sconn.close() + try: + sconn.close() + except Exception: + pass except Exception: decrypted_ts_by_user = {} @@ -1291,7 +1612,7 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: if priority and priority in sync_usernames: sync_usernames = [priority] + [u for u in sync_usernames if u != priority] - table_map = _resolve_decrypted_message_tables(account_dir, sync_usernames) + table_map = _ensure_decrypted_message_tables(account_dir, sync_usernames) logger.info( "[%s] resolved decrypted tables account=%s resolved=%s need_sync=%s", trace_id, @@ -1324,6 +1645,7 @@ def _dedupe(items: list[tuple[int, str]]) -> list[tuple[int, str]]: msg_db_path=msg_db_path, table_name=table_name, max_scan=int(cur_scan), + backfill_limit=int(backfill_limit), ) synced += 1 scanned_total += int(result.get("scanned") or 0) @@ -2595,8 +2917,13 @@ def _ts(v: Any) -> int: row = contact_rows.get(u) if _pick_display_name(row, u) == u: need_display.append(u) - if (not _pick_avatar_url(row)) and (u not in local_avatar_usernames): - need_avatar.append(u) + if source_norm == "realtime": + # In realtime mode, prefer WCDB-resolved avatar URLs (contact.db can be stale). + if u not in local_avatar_usernames: + need_avatar.append(u) + else: + if (not _pick_avatar_url(row)) and (u not in local_avatar_usernames): + need_avatar.append(u) need_display = list(dict.fromkeys(need_display)) need_avatar = list(dict.fromkeys(need_avatar)) @@ -2655,13 +2982,17 @@ def _ts(v: Any) -> int: if wd and wd != username: display_name = wd - avatar_url = _pick_avatar_url(c_row) - if not avatar_url and username in local_avatar_usernames: + # Prefer local head_image avatars when available: decrypted contact.db URLs can be stale + # (or hotlink-protected for browsers). WCDB realtime (when available) is the next best. + avatar_url = "" + if username in local_avatar_usernames: avatar_url = base_url + _build_avatar_url(account_dir.name, username) if not avatar_url: wa = str(wcdb_avatar_urls.get(username) or "").strip() if wa.lower().startswith(("http://", "https://")): avatar_url = wa + if not avatar_url: + avatar_url = _pick_avatar_url(c_row) or "" last_message = "" if preview_mode == "session": @@ -3426,6 +3757,63 @@ def pick(*keys: str) -> Any: break scan_take = next_take + # Self-heal (default source only): if the decrypted snapshot has no conversation table yet (new session), + # do a one-shot realtime->decrypted sync and re-query once. This avoids "暂无聊天记录" after turning off realtime. + if ( + source_norm != "realtime" + and (source is None or not str(source).strip()) + and (not merged) + and int(offset) == 0 + ): + missing_table = False + try: + missing_table = _resolve_decrypted_message_table(account_dir, username) is None + except Exception: + missing_table = True + + if missing_table: + rt_conn2 = None + try: + rt_conn2 = WCDB_REALTIME.ensure_connected(account_dir) + except WCDBRealtimeError: + rt_conn2 = None + except Exception: + rt_conn2 = None + + if rt_conn2 is not None: + try: + with _realtime_sync_lock(account_dir.name, username): + msg_db_path2, table_name2 = _ensure_decrypted_message_table(account_dir, username) + _sync_chat_realtime_messages_for_table( + account_dir=account_dir, + rt_conn=rt_conn2, + username=username, + msg_db_path=msg_db_path2, + table_name=table_name2, + max_scan=max(200, int(limit) + 50), + backfill_limit=0, + ) + except Exception: + pass + + ( + merged, + has_more_any, + sender_usernames, + quote_usernames, + pat_usernames, + ) = _collect_chat_messages( + username=username, + account_dir=account_dir, + db_paths=db_paths, + resource_conn=resource_conn, + resource_chat_id=resource_chat_id, + take=scan_take, + want_types=want_types, + ) + if want_types is not None: + merged = [m for m in merged if _normalize_render_type_key(m.get("renderType")) in want_types] + r""" take = int(limit) + int(offset) take_probe = take + 1 diff --git a/src/wechat_decrypt_tool/wcdb_realtime.py b/src/wechat_decrypt_tool/wcdb_realtime.py index 53d9423..ce954d6 100644 --- a/src/wechat_decrypt_tool/wcdb_realtime.py +++ b/src/wechat_decrypt_tool/wcdb_realtime.py @@ -615,16 +615,36 @@ def disconnect(self, account: str) -> None: except Exception: pass - def close_all(self) -> None: + def close_all(self, *, lock_timeout_s: float | None = None) -> bool: + """Close all known WCDB realtime connections. + + When `lock_timeout_s` is None, this waits indefinitely for per-connection locks. + When provided, this will skip busy connections after the timeout and return False. + """ with self._mu: conns = list(self._conns.values()) self._conns.clear() + ok = True for conn in conns: try: - with conn.lock: + if lock_timeout_s is None: + with conn.lock: + close_account(conn.handle) + continue + + acquired = conn.lock.acquire(timeout=float(lock_timeout_s)) + if not acquired: + ok = False + logger.warning("[wcdb] close_all skip busy conn account=%s", conn.account) + continue + try: close_account(conn.handle) + finally: + conn.lock.release() except Exception: + ok = False continue + return ok WCDB_REALTIME = WCDBRealtimeManager() diff --git a/tests/test_realtime_sync_table_creation.py b/tests/test_realtime_sync_table_creation.py new file mode 100644 index 0000000..3c33836 --- /dev/null +++ b/tests/test_realtime_sync_table_creation.py @@ -0,0 +1,102 @@ +import hashlib +import sqlite3 +import sys +import unittest +from pathlib import Path +from tempfile import TemporaryDirectory + + +# Ensure "src/" is importable when running tests from repo root. +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / "src")) + + +class TestRealtimeSyncTableCreation(unittest.TestCase): + def _touch_sqlite(self, path: Path) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + conn = sqlite3.connect(str(path)) + try: + # Ensure a valid sqlite file is created. + conn.execute("PRAGMA user_version = 1") + conn.commit() + finally: + conn.close() + + def test_ensure_creates_msg_table_and_indexes_in_message_db(self): + from wechat_decrypt_tool.routers import chat as chat_router + + with TemporaryDirectory() as td: + account_dir = Path(td) + self._touch_sqlite(account_dir / "message_0.db") + + username = "wxid_foo" + md5_hex = hashlib.md5(username.encode("utf-8")).hexdigest() + expected_table = f"Msg_{md5_hex}" + + db_path, table_name = chat_router._ensure_decrypted_message_table(account_dir, username) + self.assertEqual(table_name, expected_table) + self.assertEqual(db_path.name, "message_0.db") + + conn = sqlite3.connect(str(db_path)) + try: + r = conn.execute( + "SELECT 1 FROM sqlite_master WHERE type='table' AND lower(name)=lower(?)", + (expected_table,), + ).fetchone() + self.assertIsNotNone(r, "Msg_ table should be created") + + idx_names = [ + f"{expected_table}_SENDERID", + f"{expected_table}_SERVERID", + f"{expected_table}_SORTSEQ", + f"{expected_table}_TYPE_SEQ", + ] + for idx in idx_names: + r = conn.execute( + "SELECT 1 FROM sqlite_master WHERE type='index' AND lower(name)=lower(?)", + (idx,), + ).fetchone() + self.assertIsNotNone(r, f"Index {idx} should be created") + finally: + conn.close() + + def test_ensure_prefers_biz_message_for_official_accounts(self): + from wechat_decrypt_tool.routers import chat as chat_router + + with TemporaryDirectory() as td: + account_dir = Path(td) + self._touch_sqlite(account_dir / "message_0.db") + self._touch_sqlite(account_dir / "biz_message_0.db") + + username = "gh_12345" + db_path, _ = chat_router._ensure_decrypted_message_table(account_dir, username) + self.assertEqual(db_path.name, "biz_message_0.db") + + def test_bulk_ensure_creates_missing_tables(self): + from wechat_decrypt_tool.routers import chat as chat_router + + with TemporaryDirectory() as td: + account_dir = Path(td) + self._touch_sqlite(account_dir / "message_0.db") + + usernames = ["wxid_a", "wxid_b"] + table_map = chat_router._ensure_decrypted_message_tables(account_dir, usernames) + self.assertEqual(set(table_map.keys()), set(usernames)) + + conn = sqlite3.connect(str(account_dir / "message_0.db")) + try: + for u in usernames: + md5_hex = hashlib.md5(u.encode("utf-8")).hexdigest() + expected_table = f"Msg_{md5_hex}" + r = conn.execute( + "SELECT 1 FROM sqlite_master WHERE type='table' AND lower(name)=lower(?)", + (expected_table,), + ).fetchone() + self.assertIsNotNone(r, f"{expected_table} should be created for {u}") + finally: + conn.close() + + +if __name__ == "__main__": + unittest.main() + From 175ed20a5ffd07a538470fa52d9031480284931c Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 3 Feb 2026 16:31:51 +0800 Subject: [PATCH 023/103] =?UTF-8?q?fix(chat):=20proxy=5Fimage=20=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E9=98=B2=E7=9B=97=E9=93=BE=E8=AF=B7=E6=B1=82=E5=A4=B4?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E5=8D=87=E5=9B=BE=E7=89=87=E5=91=BD=E4=B8=AD?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为部分 CDN 增加更兼容的 User-Agent/Referer/Origin 等兜底策略 --- src/wechat_decrypt_tool/routers/chat_media.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wechat_decrypt_tool/routers/chat_media.py b/src/wechat_decrypt_tool/routers/chat_media.py index 0943374..d90b224 100644 --- a/src/wechat_decrypt_tool/routers/chat_media.py +++ b/src/wechat_decrypt_tool/routers/chat_media.py @@ -443,6 +443,17 @@ def _download_bytes() -> tuple[bytes, str]: # Different Tencent CDNs enforce different anti-hotlink rules. # Try a couple of safe referers so Moments(qpic) and MP(qpic) both work. header_variants = [ + # WeFlow/Electron uses a MicroMessenger UA + servicewechat.com referer to pass some + # WeChat CDN anti-hotlink checks (qlogo/qpic). Browsers can't set these headers for , + # but our backend proxy can. + { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090719) XWEB/8351", + "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", + "Accept-Language": "zh-CN,zh;q=0.9", + "Referer": "https://servicewechat.com/", + "Origin": "https://servicewechat.com", + "Range": "bytes=0-", + }, {"Referer": "https://wx.qq.com/", "Origin": "https://wx.qq.com"}, {"Referer": "https://mp.weixin.qq.com/", "Origin": "https://mp.weixin.qq.com"}, {"Referer": "https://www.baidu.com/", "Origin": "https://www.baidu.com"}, From bdd89c681af25a47bfb220538032a5955652e49c Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Tue, 3 Feb 2026 16:32:12 +0800 Subject: [PATCH 024/103] =?UTF-8?q?improvement(wrapped-ui):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20GameBoy/DOS=20=E4=B8=BB=E9=A2=98=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=BC=BA=E9=94=AE=E7=9B=98=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slide 模式在 GameBoy/DOS 下采用更紧凑的标题字号与间距\n- MessageChars 键盘增加 GameBoy 风格外观与功能键样式 --- .../wrapped/shared/WrappedCardShell.vue | 34 +++-- .../visualizations/MessageCharsChart.vue | 122 +++++++++++++++++- 2 files changed, 147 insertions(+), 9 deletions(-) diff --git a/frontend/components/wrapped/shared/WrappedCardShell.vue b/frontend/components/wrapped/shared/WrappedCardShell.vue index 837edaf..f209387 100644 --- a/frontend/components/wrapped/shared/WrappedCardShell.vue +++ b/frontend/components/wrapped/shared/WrappedCardShell.vue @@ -54,17 +54,19 @@ + + +
+ - From 1757106fc72a035e5c133cda146094de2d7d6dd0 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Sun, 22 Feb 2026 22:42:46 +0800 Subject: [PATCH 103/103] improvement(desktop-update): sanitize release-note links and virtualize notes list --- frontend/components/DesktopUpdateDialog.vue | 95 ++++++++++++++++++++- 1 file changed, 93 insertions(+), 2 deletions(-) diff --git a/frontend/components/DesktopUpdateDialog.vue b/frontend/components/DesktopUpdateDialog.vue index c10b304..72a5050 100644 --- a/frontend/components/DesktopUpdateDialog.vue +++ b/frontend/components/DesktopUpdateDialog.vue @@ -27,8 +27,26 @@
更新内容
-
- {{ info.releaseNotes || '修复了一些已知问题,提升了稳定性。' }} +
+
+
+
+ {{ item.text }} +
+
+
@@ -113,6 +131,79 @@ const props = defineProps({ const emit = defineEmits(["close", "update", "install", "ignore"]); +const DEFAULT_RELEASE_NOTE = "修复了一些已知问题,提升了稳定性。"; +const NOTE_ROW_HEIGHT = 24; +const NOTE_OVERSCAN = 6; +const NOTE_FALLBACK_VIEWPORT_HEIGHT = 192; // 8 rows * 24px + +const notesViewportRef = ref(null); +const notesScrollTop = ref(0); + +const sanitizeReleaseNotes = (input) => { + const raw = String(input || "").replace(/\r\n?/g, "\n"); + if (!raw.trim()) return ""; + return raw + .replace(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/gi, "$1") + .replace(/\s*\((https?:\/\/[^)]+)\)/gi, "") + .replace(/]+>/gi, "") + .replace(/https?:\/\/\S+/gi, "") + .replace(/[ \t]+$/gm, "") + .replace(/\n{3,}/g, "\n\n") + .trim(); +}; + +const releaseNoteLines = computed(() => { + const sanitized = sanitizeReleaseNotes(props.info?.releaseNotes || ""); + const lines = sanitized + .split("\n") + .map((line) => line.trim()) + .filter(Boolean) + .filter((line) => !/^更新内容\s*(\(|()/.test(line)) + .filter((line) => !/^完整变更[::]?\s*$/.test(line)); + if (!lines.length) return [DEFAULT_RELEASE_NOTE]; + return lines; +}); + +const viewportHeight = computed(() => { + const h = Number(notesViewportRef.value?.clientHeight || 0); + return h > 0 ? h : NOTE_FALLBACK_VIEWPORT_HEIGHT; +}); + +const virtualStartIndex = computed(() => { + const start = Math.floor(notesScrollTop.value / NOTE_ROW_HEIGHT) - NOTE_OVERSCAN; + return Math.max(0, start); +}); + +const virtualEndIndex = computed(() => { + const count = Math.ceil(viewportHeight.value / NOTE_ROW_HEIGHT) + NOTE_OVERSCAN * 2; + return Math.min(releaseNoteLines.value.length, virtualStartIndex.value + count); +}); + +const virtualVisibleItems = computed(() => { + const start = virtualStartIndex.value; + return releaseNoteLines.value.slice(start, virtualEndIndex.value).map((text, idx) => ({ + key: `${start + idx}-${text}`, + text, + })); +}); + +const virtualOffsetTop = computed(() => virtualStartIndex.value * NOTE_ROW_HEIGHT); +const virtualTotalHeight = computed(() => releaseNoteLines.value.length * NOTE_ROW_HEIGHT); + +const onNotesScroll = (event) => { + notesScrollTop.value = Number(event?.target?.scrollTop || 0); +}; + +watch( + () => [props.open, props.info?.version, props.info?.releaseNotes], + () => { + notesScrollTop.value = 0; + if (notesViewportRef.value) { + notesViewportRef.value.scrollTop = 0; + } + } +); + const safeProgress = computed(() => { if (typeof props.progress === "number") return { percent: props.progress }; if (props.progress && typeof props.progress === "object") return props.progress;