From 6ae049c2cec1c88896007f2bb8b410c8a1c0d678 Mon Sep 17 00:00:00 2001 From: --git_token Date: Tue, 23 Jun 2026 08:10:01 +0800 Subject: [PATCH] auto backup 2026-06-23 08:10:01 --- MEMORY.md | 11 + memory/.dreams/events.jsonl | 2 + memory/.dreams/short-term-recall.json | 153 ++++-- memory/2026-06-22.md | 34 ++ .../ai_descriptions_wechat_2026-06-21.json | 41 ++ output/微信反馈_2026年6月.csv | 477 ++++++++++++++++++ output/微信反馈_2026年6月.xlsx | Bin 0 -> 53843 bytes .../ai_summarize_feedback.cpython-312.pyc | Bin 24502 -> 0 bytes scripts/detect_p0_realtime.py | 76 ++- scripts/detect_p0_wechat.py | 76 ++- scripts/export_wechat_june.py | 73 +++ scripts/export_wechat_june_csv.py | 35 ++ 12 files changed, 917 insertions(+), 61 deletions(-) create mode 100644 memory/2026-06-22.md create mode 100644 output/daily_feedback/ai_descriptions_wechat_2026-06-21.json create mode 100644 output/微信反馈_2026年6月.csv create mode 100644 output/微信反馈_2026年6月.xlsx delete mode 100644 scripts/__pycache__/ai_summarize_feedback.cpython-312.pyc create mode 100644 scripts/export_wechat_june.py create mode 100644 scripts/export_wechat_june_csv.py diff --git a/MEMORY.md b/MEMORY.md index 4393a94..2c9c727 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -59,6 +59,17 @@ - 阈值:同小时 + 发送人交集 + 相似度 > 0.20;跨小时 + 发送人 ≥2 重叠 + 相似度 > 0.35 - 影响文件:`detect_p0_wechat.py`、`detect_p0_realtime.py` +### P0 告警问题描述清洗规则(2026-06-22 刘新玉确认) +- P0 告警的"问题描述"字段必须经过 `_clean_summary` 清洗,不能直接贴原始消息 +- 清洗规则(`detect_p0_wechat.py` / `detect_p0_realtime.py` 的 `_clean_summary` 函数): + 1. 去掉 `[聊天记录]` 转发标记 + 2. 去掉 XML 标签(``, ``, `` 等)及属性残留 + 3. 截断 `↳ 回复 xxx:` 及之后全部内容 + 4. 按发送人标记(emoji+名字+冒号)拆分,取最后一条用户消息 + 5. 去掉 `[视频]`/`[图片]`/`[语音]` 等媒体标记 + 6. 疑问句→陈述句改写:去掉"这个反馈可以跟用户确认下..."等讨论话术前缀 + 疑问结构 + 句末疑问词;碎片化症状词补全(如 `闪退的` → `用户反馈闪退,需确认操作场景`) +- `_pick_best_summary` 优先选非转发/非内部讨论的消息,跳过含 `[聊天记录]`、`↳ 回复`、`<msg>` 标记的消息 + ## 经验教训 ### 微信反馈全链路(2026-05-22 刘新玉确认) diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index b33c018..b08d8fd 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -37,3 +37,5 @@ {"type":"memory.recall.recorded","timestamp":"2026-06-17T10:48:17.775Z","query":"微信 P0 实时告警 detect_p0_wechat crash","resultCount":5,"results":[{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-27.md","startLine":22,"endLine":43,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-18T02:18:32.754Z","query":"小葵小葵群 发送消息 定时任务 crontab","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-18T02:18:46.478Z","query":"小葵小葵群 发送 消息 机制 定时 心跳","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-22T08:07:37.366Z","query":"P0 检测 归纳 方法 飞书 微信","resultCount":5,"results":[{"path":"memory/2026-05-21.md","startLine":35,"endLine":64,"score":1},{"path":"memory/2026-05-21.md","startLine":1,"endLine":26,"score":1},{"path":"memory/2026-05-27.md","startLine":41,"endLine":51,"score":1},{"path":"memory/2026-05-27.md","startLine":22,"endLine":43,"score":1},{"path":"memory/2026-05-07.md","startLine":189,"endLine":209,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-22T08:20:23.105Z","query":"微信反馈数据查询 wechat feedback MySQL 数据库","resultCount":6,"results":[{"path":"memory/2026-04-30.md","startLine":116,"endLine":142,"score":1},{"path":"memory/2026-04-30.md","startLine":134,"endLine":166,"score":1},{"path":"memory/2026-05-22.md","startLine":107,"endLine":135,"score":1},{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index 6d56283..d22d208 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-06-18T02:18:46.478Z", + "updatedAt": "2026-06-22T08:20:23.105Z", "entries": { "memory:memory/2026-04-18.md:1:5": { "key": "memory:memory/2026-04-18.md:1:5", @@ -99,13 +99,13 @@ "endLine": 142, "source": "memory", "snippet": "问题:很多消息有关联但没有 `quote_message_id`(飞书 API 的 `root_id`/`parent_id` 未采集) **推断规则(按优先级)**: 1. **@提及匹配**:消息中 @了某人 → 关联到被@者最近一条消息 2. **同发送者聚类**:同一人在 2 分钟窗口内连续发多条 → 认为是对同一目标消息的回复 3. **最近不同发送者**:关联到最近一条不同发送者的消息(30 分钟内) 已测试效果:上午 NPC HUD 问题链成功串联,下午 iOS 问题链准确分组。部分跨话题误判仍需 AI 语义辅助(策略3,待后续评估)。 #### 触发方式 - 手动:「同步飞书反馈」「整理反馈对话链」 - 定时:每天 10:00 crontab 自动执行 ## 步骤4:问题归纳功能开发 [刘新玉] - 2026-04-30 18:38 完成 ### 步骤4 包含两部分 1. **问题描述**:在{端}{环节}内({课程}),{角色/组件}出现了{现象} 2. **当前问题排查结论**:从对话最后 1-2 条提取,匹配规则: - \"日志上传/排查/查\" → \"日志已上传,排查中\" - \"确认/确实\" → \"已确认,待修复\" - \"已修复/已解决\" → \"已修复\" - \"不是 bug/设计如此\" → \"非问题,设计如此\" - 无明确结论 → \"暂未排查到根因\" ### 归纳格式 ```markdown ### 问题 N", - "recallCount": 9, + "recallCount": 10, "dailyCount": 0, "groundedCount": 0, - "totalScore": 9, + "totalScore": 10, "maxScore": 1, "firstRecalledAt": "2026-05-06T13:30:08.593Z", - "lastRecalledAt": "2026-06-01T02:53:47.536Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ "f865295b9ac7", "cd9c89262c30", @@ -115,7 +115,8 @@ "2f315a9f8529", "f23f51c6129c", "015553fc9cb1", - "1d207685e7a8" + "1d207685e7a8", + "d92aa0d61be8" ], "recallDays": [ "2026-05-06", @@ -123,7 +124,8 @@ "2026-05-11", "2026-05-21", "2026-05-22", - "2026-06-01" + "2026-06-01", + "2026-06-22" ], "conceptTags": [ "quote-message-id", @@ -143,13 +145,13 @@ "endLine": 166, "source": "memory", "snippet": "- \"日志上传/排查/查\" → \"日志已上传,排查中\" - \"确认/确实\" → \"已确认,待修复\" - \"已修复/已解决\" → \"已修复\" - \"不是 bug/设计如此\" → \"非问题,设计如此\" - 无明确结论 → \"暂未排查到根因\" ### 归纳格式 ```markdown ### 问题 N > **在{端}端{环节}内({课程}),{角色/组件}出现了{现象}** | 发言人 | 要点 | |--------|------| | 报告人 | 🚩 报告:... | | ... | ... | | 最终人 | ✅ 结论/待排查 | ``` ### 维度提取规则 | 维度 | 优先级/来源 | |------|------------| | 端 | iOS > iPad > pad端 > Android > 移动端 > PC(正则匹配,忽略大小写) | | 环节 | 关卡内/知识巩固/单元挑战/听力挑战/阅读挑战/口语挑战/写作挑战/单元强化/瓦拉学院/报告(从消息文本匹配) | | 课程 | 匹配数字编号(如 11-2、L1 3-2) | | 角色/组件 | NPC/HUD/音频/组件/数据/Loading/加载/日志(从消息文本匹配) | | 现象 | 从消息中提取要害描述,截断在 35 字符以内 | ### 现象提取逻辑 1. 优先从包含 \"Bug的表现是这样的:\"、\"问题是\"、\"发现\"、\"出现\" 等关键词的消息中截取描述句 2. 提取的句子去除 URL、图片标记、疑问句 3. 截断到 35 字符防止过长 ### Bug 修复记录", - "recallCount": 7, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 7, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-06T13:30:08.593Z", - "lastRecalledAt": "2026-06-01T02:53:47.536Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ "f865295b9ac7", "cd9c89262c30", @@ -157,13 +159,15 @@ "49c0959dc960", "f23f51c6129c", "015553fc9cb1", - "1d207685e7a8" + "1d207685e7a8", + "d92aa0d61be8" ], "recallDays": [ "2026-05-06", "2026-05-07", "2026-05-22", - "2026-06-01" + "2026-06-01", + "2026-06-22" ], "conceptTags": [ "日志上传/排查/查", @@ -757,21 +761,23 @@ "endLine": 209, "source": "memory", "snippet": "| 每分钟 | `sync_feishu_feedback_dispatch_p0.sh` | 7(仅P0) | P0问题实时分发到群 | | 每天 10:00 | `sync_feishu_feedback_wrapper.sh` | 7(全部) | 全量分发到群 | ### 完整数据流 ``` 群消息 → 每1分钟入MySQL → 每1分钟刷新表格 → 每1分钟归纳+分类 → P0实时发群 / 每天10:00全量发群 ``` ### 关键技术细节 - **拆分方式**:`sync_feishu_feedback.py` 新增 `--steps` 参数(如 `--steps 1-3`、`--steps 4-6`、`--steps 7`) - **分发模式**:新增 `--dispatch-mode` 参数,`p0` 只发P0级,`all` 发全部 - **电子表格**:`TVivwmzqXiW3YakDUzucFMRenvf`(\"内容测试问题反馈\") - **归纳子文档父节点**:`RaL6whoYMijyYHkSlWrc7OLLnBy`(space_id: 7612229802338045122) - **分发目标群**:`oc_4171a2188f2554522a4309f2d7c27753`(「小葵小葵」群) - **分发Bot**:xiaokui(`/root/.openclaw/credentials/xiaokui`) - **新 wrapper 脚本**: - `scripts/sync_feishu_feedback_realtime.sh`(步骤1-", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-05-22T02:16:39.747Z", - "lastRecalledAt": "2026-06-01T04:05:41.997Z", + "lastRecalledAt": "2026-06-22T08:07:37.366Z", "queryHashes": [ "015553fc9cb1", "1d207685e7a8", - "35e4329ea912" + "35e4329ea912", + "eac9b6adad65" ], "recallDays": [ "2026-05-22", - "2026-06-01" + "2026-06-01", + "2026-06-22" ], "conceptTags": [ "sync-feishu-feedback-wrapper.sh", @@ -822,18 +828,20 @@ "endLine": 64, "source": "memory", "snippet": "5. ✅ 未启用步骤 4-6 每分钟执行(理由同刘新玉确认) ### 调度总览(更新后) ``` 每 5 分钟 → 群消息同步入 MySQL 每分钟 → P0 实时检测 + 增量推送 每分钟 → 反馈数据实时导出到表格 每天 10:00 → 全量七步处理 + 全量分发 每天 10:05 → AI 归纳(DeepSeek 生成描述 → 回写文档) ``` # 2026-05-21 工作日志 ## P0 实时检测与推送 [刘新玉需求] ### 背景 - 原有两个每分钟 crontab 任务已被注释(5/11),因为每次全量重跑浪费资源且 P0 会重复推送 - 刘新玉要求做真正的增量 P0 实时分发 ### 完成事项 1. ✅ 新建 `scripts/detect_p0_realtime.py`(~200行): - 复用 `sync_feishu_feedback.py` 的聚类逻辑 + `priority_classifier.py` 的优先级判定 - 查询最近 2 小时消息 → 聚类 → 判定 P0 → 去重(簇签名 MD5)→ 推送 - 去重状态存在 `tmp/p0_dispatched_state.json`,24 小时自动过期 - 每天 10:00-10:01 自动清空去重,配合全量分发 2. ✅ crontab 每分钟执行:`* * * * * python3 detect_p0_realtime.py` 3. ✅ 步骤 4-6 不做每分钟恢复(增量改造成本高,日汇总实时性需求弱) ### AI 归纳流程修复 [刘新玉需求]", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-25T02:22:57.259Z", - "lastRecalledAt": "2026-05-25T02:22:57.259Z", + "lastRecalledAt": "2026-06-22T08:07:37.366Z", "queryHashes": [ - "ae62541246a4" + "ae62541246a4", + "eac9b6adad65" ], "recallDays": [ - "2026-05-25" + "2026-05-25", + "2026-06-22" ], "conceptTags": [ "4-6", @@ -853,18 +861,20 @@ "endLine": 26, "source": "memory", "snippet": "# 2026-05-21 工作日志 ## P0 实时检测与推送 [刘新玉需求] ### 背景 - 原有两个每分钟 crontab 任务已被注释(5/11),因为每次全量重跑浪费资源且 P0 会重复推送 - 刘新玉要求做真正的增量 P0 实时分发 ### 完成事项 1. ✅ 新建 `scripts/detect_p0_realtime.py`(~200行): - 复用 `sync_feishu_feedback.py` 的聚类逻辑 + `priority_classifier.py` 的优先级判定 - 查询最近 2 小时消息 → 聚类 → 判定 P0 → 去重(簇签名 MD5)→ 推送 - 去重状态存在 `tmp/p0_dispatched_state.json`,24 小时自动过期 - 每天 10:00-10:01 自动清空去重,配合全量分发 2. ✅ crontab 每分钟执行:`* * * * * python3 detect_p0_realtime.py` 3. ✅ 步骤 4-6 不做每分钟恢复(增量改造成本高,日汇总实时性需求弱) ### AI 归纳流程修复 [刘新玉需求] ### 背景 - 5/15 问题描述出现严重退化:问题一变成\"可以在这里Po问题\"(元指令文本),问题二变成\"图片 (1/1)\" - 根因:(1) 关键词模式只能覆盖约 8 类症状,不匹配时退化到首条消息原文 (2) AI 归纳靠心跳触发,5/15 当天漏执行 ### 完成事项 1. ✅ 新建 `scripts/ai_summarize_feedback.py`:", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-05-25T02:22:57.259Z", - "lastRecalledAt": "2026-05-25T02:22:57.259Z", + "lastRecalledAt": "2026-06-22T08:07:37.366Z", "queryHashes": [ - "ae62541246a4" + "ae62541246a4", + "eac9b6adad65" ], "recallDays": [ - "2026-05-25" + "2026-05-25", + "2026-06-22" ], "conceptTags": [ "5/11", @@ -915,13 +925,13 @@ "endLine": 42, "source": "memory", "snippet": "- `update_summary_doc_as_children()` 默认 title_prefix 从 `\"\"` 改为 `\"飞书-\"` - `create_child_doc()` 日期提取兼容 `飞书-` / `微信-` 前缀 - `dispatch_summary_to_chat()` 消息标题和链接同步更新 - `get_today_doc_obj_token()`、`--apply-ai` 路径、步骤7分发 的标题格式全部更新 ### 补跑历史数据 - 飞书 5/22(3条)、5/23(1条)AI归纳回写成功 + 自动分发到群聊 - 飞书 5/24:当天无飞书群新数据,跳过 - 微信 5/22(23条)、5/23(13条)、5/24(29条)AI归纳回写成功 + 自动分发 ### 知识库文档重命名 - 13个飞书历史文档(5/6-5/23)从 `{date} 问题反馈` 重命名为 `飞书-{date} 用户反馈问题归纳` ## 新增逻辑:飞书/微信文档标题渠道区分 - [刘新玉需求] 飞书文档标题加 `飞书-` 前缀以便与微信区分 - 飞书格式:`飞书-{date} 用户反馈问题归纳` - 微信格式:保持 `微信-{date} 问题反馈`(由 `sync_wechat_feedback.py` 传入 `title_prefix=\"微信-\"`) - `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼", - "recallCount": 8, + "recallCount": 9, "dailyCount": 0, "groundedCount": 0, - "totalScore": 8, + "totalScore": 9, "maxScore": 1, "firstRecalledAt": "2026-05-25T07:11:25.527Z", - "lastRecalledAt": "2026-06-17T10:48:17.775Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ "1e9d4a024a31", "442660038a9b", @@ -930,14 +940,16 @@ "927d0719ac4d", "35e4329ea912", "52ecc24c3e06", - "7acf4444a34f" + "7acf4444a34f", + "d92aa0d61be8" ], "recallDays": [ "2026-05-25", "2026-05-26", "2026-06-01", "2026-06-02", - "2026-06-17" + "2026-06-17", + "2026-06-22" ], "conceptTags": [ "update-summary-doc-as-children", @@ -957,13 +969,13 @@ "endLine": 44, "source": "memory", "snippet": "- `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼容两种前缀(strip `飞书-` 或 `微信-` 再解析) ## 注意事项 - 今天(5/25)的反馈数据将在明天 10:00 正常走全流程 - `ai_summarize_feedback.py` 中 `apply_descriptions` 修复后需注意:微信渠道需要 `--date` 参数,飞书渠道 `--date` 可选", - "recallCount": 8, + "recallCount": 9, "dailyCount": 0, "groundedCount": 0, - "totalScore": 8, + "totalScore": 9, "maxScore": 1, "firstRecalledAt": "2026-05-25T07:11:25.527Z", - "lastRecalledAt": "2026-06-17T10:48:17.775Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ "1e9d4a024a31", "442660038a9b", @@ -972,14 +984,16 @@ "927d0719ac4d", "35e4329ea912", "52ecc24c3e06", - "7acf4444a34f" + "7acf4444a34f", + "d92aa0d61be8" ], "recallDays": [ "2026-05-25", "2026-05-26", "2026-06-01", "2026-06-02", - "2026-06-17" + "2026-06-17", + "2026-06-22" ], "conceptTags": [ "update-summary-doc-as-children", @@ -1134,25 +1148,27 @@ "endLine": 24, "source": "memory", "snippet": "# 2026-05-26 工作日志 ## 刘新玉 - 微信/飞书问题汇总分发排查与修复 ### 问题 刘新玉询问是否向\"小葵小葵\"群发送了昨天(5/25)的问题汇总。 ### 排查结果 - **飞书 5/25**:「内容测试问题反馈」群昨天无新消息,飞书 crontab 10:00 输出 `✅ 无新数据,无需同步`,无需分发 - **微信 5/25**:数据库有 17 条消息,但大部分是单条消息,仅 1 个有效簇(≥2条),AI 归纳为\"无明确问题\",属于无效反馈 ### 修复的 Bug(均在本次会话中修复) **Bug 1:`sync_wechat_feedback.py` 文档标题不匹配** - 文件:`scripts/sync_wechat_feedback.py` - 问题:`--apply-ai` 路径搜索子文档时标题为 `微信-{date} 问题反馈`,但实际创建的是 `微信-{date} 用户反馈问题归纳`,导致创建后找不到文档 - 修复:两处标题改为 `微信-{date} 用户反馈问题归纳`(apply-ai 路径 + 步骤7分发路径) **Bug 2:`dispatch_summary_to_chat` 标题前缀** - 文件:`skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` - 问题:title 硬编码 `飞书-{day_label}`,微信调用时 day_label 已含 `微信-` 前缀,导致出现 `飞书-微信-{date}` 双重前缀 - 修复:检测 day_labe", - "recallCount": 6, + "recallCount": 7, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 7, "maxScore": 1, "firstRecalledAt": "2026-06-01T02:51:24.899Z", - "lastRecalledAt": "2026-06-17T10:48:17.775Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ "b36cfa790039", "bc1ed8fedd00", "927d0719ac4d", "35e4329ea912", "52ecc24c3e06", - "7acf4444a34f" + "7acf4444a34f", + "d92aa0d61be8" ], "recallDays": [ "2026-06-01", "2026-06-02", - "2026-06-17" + "2026-06-17", + "2026-06-22" ], "conceptTags": [ "微信/飞书问题汇总分发排查与修复", @@ -1172,21 +1188,23 @@ "endLine": 43, "source": "memory", "snippet": "| 微信 | `--skip-dispatch` → 不分发 | `--apply-ai` → 替换占位符+分发 | 微信依赖 AI 归纳成功才能分发,飞书双重分发(占位符+AI)。 ### 5月26日反馈概况 - 飞书:17条消息,3个问题簇(2个有效:录音识别率低、飞船音乐不保存) - 微信:27条消息,14个问题簇(4个有效:飞船音乐、录音识别、音频无法播放、AI回复无关语句) ### 后续注意 - 删除/修改 `ai_summarize_feedback.py` 后需清理 `__pycache__`,否则缓存版本可能落后于源码 ## P0 实时检测去重修复 [刘新玉反馈] ### 问题 微信 `detect_p0_wechat.py` 每分钟扫描最近120分钟消息,同一个问题因讨论线程持续生长,`sort_threads` 聚类每次产生不同消息集合,导致: - 不同次的聚类有不同的 `cluster_signature`(基于 `sorted(message_ids)` MD5) - 去重完全失效,同一问题被重复推送(今天2个真实问题各推了3次 = 6次) ### 修复 在 `detect_p0_wechat.py` 和 `detect_p0_realtime.py` 中增加**内容语义去重**: 1. 新增 `cluster_content_fingerprint()`:拼接簇内前5条有意义消息作为内容指纹 + 发送人集合 + 小时粒度时间窗口 2. 新增 `is_duplicate_p0()`:基于内容相似度(Jaccard)+ 发送人重叠 + 时间窗口", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-06-01T02:51:24.899Z", - "lastRecalledAt": "2026-06-17T10:48:17.775Z", + "lastRecalledAt": "2026-06-22T08:07:37.366Z", "queryHashes": [ "b36cfa790039", "35e4329ea912", - "7acf4444a34f" + "7acf4444a34f", + "eac9b6adad65" ], "recallDays": [ "2026-06-01", - "2026-06-17" + "2026-06-17", + "2026-06-22" ], "conceptTags": [ "skip-dispatch", @@ -1206,18 +1224,20 @@ "endLine": 135, "source": "memory", "snippet": "- 修改:`infer_missing_references()`、`extract_conclusion()`、`summarize_cluster()`、`sort_threads()` ## 刘新玉 - 分发文档链接修复(5/22 11:20) ### 问题 分发到小葵小葵群的文档链接硬编码为总文档 `RaL6whoYMijyYHkSlWrc7OLLnBy`,而非当天子文档 ### 修复 - `dispatch_summary_to_chat()` 新增 `doc_url` 参数 - `--apply-ai` 流程:从 `list_child_nodes()` 返回的 `nodes[title][\"node_token\"]` 构造链接 - `main()` 分发循环:同上,对每个 day 查 `list_child_nodes()` 获取对应 node_token - 链接格式:`https://makee-interactive.feishu.cn/wiki/{node_token}` ## 刘新玉 - AI 描述人名脱敏(5/22 11:30) ### 问题 问题描述中包含员工姓名\"江涛\" ### 修复(两层防护) 1. **System Prompt** 新增规则6:严禁出现员工姓名,用\"某角色/某员工\"替代 2. **`strip_names(description, cluster_data)` 后处理**: - 步骤1:从 cluster 提取发送者姓名,精确替换 - 步骤2:姓氏 + 1个中文字符模式匹配,排除内容词白名单(文件/资源", - "recallCount": 1, + "recallCount": 2, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 2, "maxScore": 1, "firstRecalledAt": "2026-06-01T02:53:47.536Z", - "lastRecalledAt": "2026-06-01T02:53:47.536Z", + "lastRecalledAt": "2026-06-22T08:20:23.105Z", "queryHashes": [ - "1d207685e7a8" + "1d207685e7a8", + "d92aa0d61be8" ], "recallDays": [ - "2026-06-01" + "2026-06-01", + "2026-06-22" ], "conceptTags": [ "infer-missing-references", @@ -1353,6 +1373,37 @@ "loading/加载类", "关卡/内容类" ] + }, + "memory:memory/2026-05-27.md:41:51": { + "key": "memory:memory/2026-05-27.md:41:51", + "path": "memory/2026-05-27.md", + "startLine": 41, + "endLine": 51, + "source": "memory", + "snippet": "在 `detect_p0_wechat.py` 和 `detect_p0_realtime.py` 中增加**内容语义去重**: 1. 新增 `cluster_content_fingerprint()`:拼接簇内前5条有意义消息作为内容指纹 + 发送人集合 + 小时粒度时间窗口 2. 新增 `is_duplicate_p0()`:基于内容相似度(Jaccard)+ 发送人重叠 + 时间窗口三层判断 - 同小时 + 发送人交集 + 内容相似度 > 0.20 → 重复 - 发送人高度重叠(≥2) + 内容相似度 > 0.35 → 跨小时重复 3. 状态文件改为 `{\"time\": ..., \"fp\": {...}}` 格式存储指纹信息 4. 飞书 P0 检测器同步修复 ### 测试验证 360分钟窗口测试:同一话题在不同扫描窗口下签名不同(c69d... vs 70a4...),但内容指纹正确识别为重复(相似度 0.462,is_duplicate=True)", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-22T08:07:37.366Z", + "lastRecalledAt": "2026-06-22T08:07:37.366Z", + "queryHashes": [ + "eac9b6adad65" + ], + "recallDays": [ + "2026-06-22" + ], + "conceptTags": [ + "detect-p0-wechat.py", + "detect-p0-realtime.py", + "cluster-content-fingerprint", + "is-duplicate-p0", + "0.20", + "0.35", + "0.462", + "is-duplicate" + ] } } } diff --git a/memory/2026-06-22.md b/memory/2026-06-22.md new file mode 100644 index 0000000..02dca9f --- /dev/null +++ b/memory/2026-06-22.md @@ -0,0 +1,34 @@ +# 2026-06-22 工作日志 + +## P0 告警问题描述优化 [刘新玉反馈] + +### 问题 +微信 P0 实时告警中的"问题描述"字段直接取原始消息文本,导致: +1. **转发聊天记录**:`[聊天记录] 💤 迦南...我们看题目解析还是会卡退...卡着打不开等了很长时间` — 贴的是聊天流水账 +2. **内部讨论疑问句**:`这个反馈可以跟用户确认下是在进行什么操作时闪退的` — 疑问句不是问题描述 + +### 修复 +修改 `scripts/detect_p0_wechat.py` 和 `scripts/detect_p0_realtime.py` 的 `_clean_summary` 函数,新增 6 层清洗: + +1. **去掉转发标记**:`[聊天记录]` 前缀 +2. **去掉 XML 标签**:`<msg>`, `<appmsg>`, `<title>` 等完整和不完整标签 + 属性残留 +3. **截断引用回复**:`↳ 回复 xxx:` 及之后全部内容 +4. **拆分发送人标记**:按 emoji/符号+名字+冒号 模式分割,取最后一条用户消息 +5. **去掉媒体标记**:`[视频]`, `[图片]`, `[语音]`, `[文件]`, `[表情]` +6. **疑问句→陈述句改写**: + - 去掉"这个反馈可以跟用户确认下..."等讨论话术前缀 + - 去掉"是在进行什么操作时"/"具体是什么操作时"等疑问结构 + - 去掉句末疑问词(??!!。.吗呢吧啊呀) + - 碎片化症状词补全:`闪退的` → `用户反馈闪退,需确认操作场景` + +同时 `_pick_best_summary` 增强:优先选非转发/非内部讨论的消息,跳过 `[聊天记录]`、`↳ 回复`、`<msg>` 等标记的消息。 + +### 验证结果 +| 修复前 | 修复后 | +|--------|--------| +| `[聊天记录] 💤 迦南...我们看题目解析还是会卡退...卡着打不开等了很长时间` | `卡着打不开等了很长时间` | +| `这个反馈可以跟用户确认下是在进行什么操作时闪退的` | `用户反馈闪退,需确认操作场景` | + +### 群内消息处理 +- 已撤回 3 条有问题的 P0 告警消息 +- 已重新发送 2 条修复后的告警 diff --git a/output/daily_feedback/ai_descriptions_wechat_2026-06-21.json b/output/daily_feedback/ai_descriptions_wechat_2026-06-21.json new file mode 100644 index 0000000..5a6ef24 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_wechat_2026-06-21.json @@ -0,0 +1,41 @@ +{ + "date": "2026-06-21", + "descriptions": [ + { + "index": 1, + "description": "移动端app打开后持续转圈圈无法进入,上课过相关人员频繁卡顿持续数分钟" + }, + { + "index": 2, + "description": "无明确问题" + }, + { + "index": 3, + "description": "无明确问题" + }, + { + "index": 4, + "description": "无明确问题" + }, + { + "index": 5, + "description": "视频播放出现卡顿,疑似因网络速度不佳导致" + }, + { + "index": 6, + "description": "无明确问题" + }, + { + "index": 7, + "description": "无明确问题" + }, + { + "index": 8, + "description": "iPad Air 3代设备在游戏运行时出现闪退和卡顿问题" + }, + { + "index": 9, + "description": "iPad air端在试用过相关人员频繁出现闪退和卡顿" + } + ] +} \ No newline at end of file diff --git a/output/微信反馈_2026年6月.csv b/output/微信反馈_2026年6月.csv new file mode 100644 index 0000000..71e03ed --- /dev/null +++ b/output/微信反馈_2026年6月.csv @@ -0,0 +1,477 @@ +id,sender_name,msg_type,content,msg_time,svr_msg_id,refer_msg_svrid +1884,瓦拉英语-露露班班(早10晚7),link,[聊天记录] 宇儿和瓦拉英语-露露班主任(早10晚7) 宇儿: [视频] 瓦拉英语-露露班主任(早10晚7): 这个学完了一节课 瓦拉英语-露露班主任(早10晚7): 到主页就返回不了是不 宇儿: 嗯 宇儿: 她们还是反应老卡,2026-06-01 10:00:35,8497715766705176818, +1885,瓦拉英语-露露班班(早10晚7),text,18501743068 希沃的设备 返回页面就一直转圈圈 辛苦老师看看,2026-06-01 10:01:05,8959736819404669368, +1886,kevin,text,如果一直卡着,就杀了进程,重新登录,然后让用户上传一下日志,我们查一下,2026-06-01 10:03:45,5770409017461047118, +1887,瓦拉英语-露露班班(早10晚7),text,好的,2026-06-01 10:10:40,1734666841597352841, +1888,瓦拉英语-露露班班(早10晚7),text,用户原本在19521303802买的课程,但是把手机号注销了,注销之前没有转课,我们可以帮忙转到13761223038这个手机号上面嘛,2026-06-01 10:11:04,899638177077092818, +1889,kevin,text,@wayne  帮解答一下这个问题呐,2026-06-01 10:12:12,5036623778873503473, +1890,跃馬點煋,text,@lxr 哥,2026-06-01 10:12:59,6781447912925890523, +1891,lxr,text,@wayne 注销那块不是我做的啊,为什么有正式课包还能注销啊,最好把账号恢复一下,然后用班主任的交换课包,2026-06-01 10:20:18,8001621837251471169, +1892,lxr,text,把课包恢复了用换绑手机号就行,2026-06-01 10:22:32,3304360762644619577, +1893,跃馬點煋,text,那我艾特一下礼哥,2026-06-01 10:29:53,5316302202889668331, +1894,跃馬點煋,text,@Break 礼哥,注销这一块辛苦看看?,2026-06-01 10:30:14,3976414880865758941, +1895,Break,text,有正式课也可以注销,2026-06-01 10:31:06,4646649778610992051, +1896,Break,text,这个功能就是这么设计的,2026-06-01 10:31:25,1031586244770422124, +1897,lxr,text,能恢复吗,误操作用户肯定会有找过来的,要不先给恢复下,然后让产品经理看下这块要不要改下,2026-06-01 10:35:09,8107869671700436169, +1898,嘿哈,link,哥哥们,人家是手机号注销了,没有办法手验证码换绑手机号 ↳ 回复 瓦拉英语-露露班主任(早10晚7): 用户原本在19521303802买的课程,但是把手机号注销了,注销之前没有转课,我们可以帮忙转到13761223038这个手机号上面嘛,2026-06-01 10:43:21,5336594435039773468,899638177077092818 +1899,Break,link,需要输入验证码的,误操作还好,恢复只能手动 ↳ 回复 lxr: 能恢复吗,误操作用户肯定会有找过来的,要不先给恢复下,然后让产品经理看下这块要不要改下,2026-06-01 10:44:42,8636272593866036634,8107869671700436169 +1900,lxr,text,所以得先恢复注销的账号,2026-06-01 10:44:49,8753904227274464688, +1901,lxr,text,先给手动恢复下吧,这种注销账号的功能其他平台会先给一堆提示告诉用户数据不可恢复,以及包括未退款订单,然后7天之后注销,七天内用户可以撤销注销,2026-06-01 10:46:58,6294370198613053675, +1902,丹咪尼🌹,link,[聊天记录] 群聊的聊天记录 城美九月: P776848816763467851 买家反馈 闪退 用的 望远镜 退出 还是闪退 城美九月: [图片] 城美九月: P776848816763467851上传日志了姐 麻烦您看下 丹咪尼🌹: 18353383818,2026-06-01 11:54:01,6468786411792047679, +1903,丹咪尼🌹,text,买家反馈 闪退 用的 望远镜 退出 还是闪退。11:53分 已上传日志 辛苦老师加急看下原因 @八哥-16619720408,2026-06-01 11:54:33,1813933807182726358, +1904,kevin,text,好的。,2026-06-01 11:55:50,3173328306480860032, +1905,丹咪尼🌹,link,"老师这个问题怎么样了什么原因导致呢 ↳ 回复 丹咪尼🌹: <msg><appmsg appid="""" sdkver=""0""><title>群聊的聊天记录城美九月: P776848816763467851 买家反馈 闪退 用的 望远镜 退出 还是闪退 城美九月: [图片] 城美九月: P776848816763467851上传日志了姐...",2026-06-01 14:08:27,2655574180636843298,6468786411792047679 +1906,丹咪尼🌹,text,@kevin,2026-06-01 14:08:30,9216526394707453017, +1907,kevin,text,日志里没有看到异常信息 不好定位 ,2026-06-01 14:09:06,5392691972151946206, +1908,.oO(王_计)Oo.,link,下一个热更 可以让用户试一下好了没。 ↳ 回复 瓦拉英语-茉茉班主任(早10晚7): 睿视D1,fish写不出来,还是只能用手机触屏去写呀,2026-06-01 14:13:24,2808504464841077816,4677623556994358003 +1909,瓦拉英语-益达老师,video,[视频] 5秒 size:2125764,2026-06-01 20:40:34,4131805594061276620, +1910,瓦拉英语-益达老师,text,老师们好,学员反馈无法翻译,点不出来,麻烦帮忙看下~,2026-06-01 20:41:03,3894792106027277062, +1911,嘿哈,text,哪一关啊,2026-06-01 20:44:14,4135036512185950551, +1912,瓦拉英语-益达老师,text,用户还未回复信息~,2026-06-01 20:48:37,6065787554763441024, +1913,嘿哈,text,发一下用户手机号吧,2026-06-01 20:49:08,5520294980734116461, +1914,瓦拉英语-益达老师,text,13751840966,2026-06-01 20:50:07,1522063212672902848, +1915,嘿哈,text,我看了一下应该是配置问题,我明天找大模型老师看一下吧,2026-06-01 21:20:59,386119994485617174, +1916,瓦拉英语-益达老师,sticker,[表情],2026-06-01 22:15:09,8301848475881432153, +1917,瓦拉英语-露露班班(早10晚7),image,[图片] f76c7d140dc870f5ae2b42a6c27621c7,2026-06-02 09:44:34,4437274725416708727, +1918,瓦拉英语-露露班班(早10晚7),text,京东方小课屏的磨耳朵又出现了白屏,已经引导用户在小程序上听,2026-06-02 09:45:08,8085984444640105314, +1919,.oO(王_计)Oo.,text,磨耳朵已经在用unity原生重新开发了。让用户再稍微等一下,2026-06-02 09:46:34,6374990160361275847, +1920,瓦拉英语-茉茉老师(早10晚7),image,[图片] 78d95a2b44601479633367bebabeab5d,2026-06-02 19:58:29,8392416847465848425, +1921,瓦拉英语-茉茉老师(早10晚7),text,又有家长反映这个不能用鼠标写,2026-06-02 19:58:47,6149726619633505263, +1922,瓦拉英语-茉茉老师(早10晚7),text,这个问题后面怎么解决呀,增加跳过的按钮吗,2026-06-02 19:59:08,533759990164518435, +1923,.oO(王_计)Oo.,text,已经解决,随下次热更新,2026-06-02 19:59:54,9092556441259768782, +1924,瓦拉英语-茉茉老师(早10晚7),text,好的👌,2026-06-02 20:00:54,6634484585577794512, +1925,瓦拉英语-花花班班(早10晚7-周末休息),link,[聊天记录] 綦小綦和瓦拉英语-花花班主任(早10晚7) 綦小綦: [视频] 綦小綦: 做题或者查看做题情况 都这样一会就闪退 綦小綦: 你们这系统技术能改进一下吗 綦小綦: 老卡呢 綦小綦: 要不就卡顿 瓦拉英语-花花班主任(早10晚7): 咱们是用的什么设备学习呢 綦小綦: [图片] 綦小綦: 我这没有上传日志啊 綦小綦: 我用的希沃学习机 綦小綦: 一天闪退好几次,2026-06-02 20:04:20,5406706268715174985, +1926,瓦拉英语-花花班班(早10晚7-周末休息),text,13464008928用户用的希沃学习机经常闪退,辛苦老师看下,2026-06-02 20:04:46,7302252117666642816, +1927,嘿哈,link,让他进入角色后再进入设置页面点击上传日志,不要在选择角色页面进设置页 ↳ 回复 瓦拉英语-花花班主任(早10晚7): 13464008928用户用的希沃学习机经常闪退,辛苦老师看下,2026-06-02 20:06:00,3680519818246863462,7302252117666642816 +1928,嘿哈,link,确认一下闪退的地点,是只有查看题目解析的时候闪退么?还是说有其他路径 ↳ 回复 瓦拉英语-花花班主任(早10晚7): 13464008928用户用的希沃学习机经常闪退,辛苦老师看下,2026-06-02 20:06:23,5476954047159243877,7302252117666642816 +1929,瓦拉英语-花花班班(早10晚7-周末休息),text,好的,2026-06-02 20:09:58,2006689369710136562, +1930,瓦拉英语-花花班班(早10晚7-周末休息),text,家长说查看题目解析,它也闪退。然后今天做的是Season1里的第三关点进去也闪退。,2026-06-02 20:29:32,1516319709508113867, +1931,嘿哈,link,@瓦拉场务-糖果果 范老师,这个题目解析闪退这个问题我猜测和我们学而思学习机是一样的情况,咱们还有拯救的空间么? ↳ 回复 瓦拉英语-花花班主任(早10晚7): 13464008928用户用的希沃学习机经常闪退,辛苦老师看下,2026-06-03 11:23:28,6367004978290245159,7302252117666642816 +1932,一_FVision,sticker,[表情],2026-06-03 11:25:19,701619907992062542, +1933,一_FVision,text,我在新题型的需求里修复试试看,2026-06-03 11:26:12,4282420133374789616, +1934,瓦拉英语-茉茉老师(早10晚7),text,苹果13瓦拉家长小程序进不去,一直是白屏转圈圈,让家长把小程序移除重新搜索进入还是这样,2026-06-04 16:56:14,4559721340533132245, +1935,瓦拉英语-茉茉老师(早10晚7),image,[图片] a6e9fa57040eab5acac1c3d85a405ae9,2026-06-04 16:56:22,6859543593108810377, +1936,一_FVision,text,让我看看怎么个事,2026-06-04 17:40:54,3161905508988732291, +1937,瓦拉英语-萌萌老师(早10晚7),link,[聊天记录]  大大福和瓦拉英语-萌萌班主任(早10晚7)  大大福: [图片]  大大福: 老师请问这是怎么回事? 瓦拉英语-萌萌班主任(早10晚7): 我反馈一下 瓦拉英语-萌萌班主任(早10晚7): 这是第几单元第几课  大大福: 第十单位,单元挑战,2026-06-04 20:37:55,603866404769933797, +1938,嘿哈,text,让用户上传一下日志吧,L几的?,2026-06-04 20:38:38,2472754372227032632, +1939,瓦拉英语-萌萌老师(早10晚7),text,L2,2026-06-04 20:50:27,3195753079366927798, +1940,瓦拉英语-萌萌老师(早10晚7),link,@八哥-16619720408 已经上传 ↳ 回复 嘿哈: 让用户上传一下日志吧,L几的?,2026-06-05 10:37:35,5326283558843049967,2472754372227032632 +1941,嘿哈,link,"@瓦拉英语-萌萌老师(早10晚7) 这个用户手机号发一下,然后顺便确认一下,用户重新进入这个问题依然存在么? ↳ 回复 瓦拉英语-萌萌班主任(早10晚7):  大大福和瓦拉英语-萌萌班主任(早10晚7)1900 大大福和瓦拉英语-萌萌班主任(早10晚7)1900用户不想点重新开始,不想重新学,老师 @八哥-166197204085700<...",2026-06-08 17:27:08,602532221128854854,8173034983938703595 +2023,瓦拉英语-尼克老师,link,@八哥-16619720408 哥,AIR2 ↳ 回复 嘿哈: 我看视频的最后两秒还是一个闪退的效果,不是单纯的卡住了,辛苦发一下用户的设备具体的型号吧,2026-06-08 17:33:21,8915777147494881233,4140605784945485412 +2024,嘿哈,text,这个?,2026-06-08 17:36:11,6675937884271744367, +2025,嘿哈,image,[图片] ace5f1743805f93578676060dc08ccd0 size:43785,2026-06-08 17:36:11,1020302598073286683, +2026,丹咪尼🌹,link,"13898429304, @.oO(王_计)Oo. 手机号来啦 辛苦您看看 ↳ 回复 丹咪尼🌹: 王欢与六六妈🍭(私信回复慢)的聊天记录六六妈🍭(私信回复慢): [视频] 六六妈🍭(私信回复慢): 我重新下载也不好用19...",2026-06-08 17:45:45,7530613475621685644,1536763205012230760 +2027,瓦拉英语-尼克老师,link,@八哥-16619720408 对,哥 ↳ 回复 嘿哈: 这个?,2026-06-08 18:12:45,8207264785535952575,6675937884271744367 +2028,瓦拉英语-花花班班(早10晚7-周末休息),link,[聊天记录] 难得糊涂和瓦拉英语-花花班主任(早10晚7) 难得糊涂: [图片] 难得糊涂: 画画老师,最近系统是在升级吗?从昨天一直打转到现在一直进不进去是怎么回事? 难得糊涂: [图片] 难得糊涂: 卸载重新又下载,然后试了好几次,还是不行,就在这里卡住,一直上不了 难得糊涂: 用的学而思学习机,2026-06-08 19:14:17,2886982476628941189, +2029,瓦拉英语-花花班班(早10晚7-周末休息),text,15112562217老师用户进入课程后一直卡住,卸载重装也不行,2026-06-08 19:15:34,475830585061679556, +2030,嘿哈,text,辛苦让用户上传一下日志吧,2026-06-08 19:16:20,6643786494540801941, +2031,嘿哈,text,是所有关卡都无法进入么?还是只有最新的课程有这个问题,2026-06-08 19:16:38,3983657815550425778, +2032,丹咪尼🌹,link,"13898429304, @.oO(王_计)Oo. 手机号来啦 辛苦您看看 ↳ 回复 丹咪尼🌹: 王欢与六六妈🍭(私信回复慢)的聊天记录六六妈🍭(私信回复慢): [视频] 六六妈🍭(私信回复慢): 我重新下载也不好用19...",2026-06-09 10:47:16,7500198552293295236,1536763205012230760 +2033,.oO(王_计)Oo.,text,今天热更新会解决 ,2026-06-09 10:49:44,830630320515903310, +2034,丹咪尼🌹,text,收到,2026-06-09 10:51:59,7956239697732863531, +2035,丹咪尼🌹,text,@.oO(王_计)Oo. 老师 大概几点开始热更,,2026-06-09 11:01:23,1007957328600543289, +2036,.oO(王_计)Oo.,text,今天下班前。 只能保证新的存档没有问题。旧存档不崩溃,但是表现效果不一定对。,2026-06-09 11:03:13,5913951513658193054, +2037,丹咪尼🌹,text,好的。,2026-06-09 11:04:19,5062632732617722615, +2038,瓦拉英语-萌萌老师(早10晚7),video,[视频] 23秒 size:5178017,2026-06-09 11:06:41,5135228576289567607, +2039,瓦拉英语-萌萌老师(早10晚7),text,看一下是发音问题还是收音问题呀,2026-06-09 11:06:41,8715920448041791887, +2040,.oO(王_计)Oo.,text,引导用户上传一下日志,用户录制视频的时间。,2026-06-09 11:22:29,8936196149559388058, +2041,瓦拉英语-萌萌老师(早10晚7),link,@.oO(王_计)Oo. 已经上传日志了 就是我发是哦的时间 就是 ↳ 回复 .oO(王_计)Oo.: 引导用户上传一下日志,用户录制视频的时间。,2026-06-09 15:31:09,669895486243901938,8936196149559388058 +2042,瓦拉英语-萌萌老师(早10晚7),text,13850883867,2026-06-09 15:31:22,7012130702640438474, +2043,瓦拉英语-萌萌老师(早10晚7),text,手机号,2026-06-09 15:31:25,4420497692241383282, +2044,瓦拉英语-萌萌老师(早10晚7),image,[图片] 870a50d531fa3b0160bc990b7c85c243,2026-06-09 15:31:48,2278089936442741196, +2045,瓦拉英语-萌萌老师(早10晚7),text,设备,2026-06-09 15:31:50,7805766819588809551, +2046,跃馬點煋,text,https://static.valavala.com/vala_user_audio/22027_60315abd-9ca8-4d6d-86c5-1a90ff5e7721_32f1313409224d27a4b36634dd310599.wav 这是2026-05-20 13:55:08 的语音,能识别出来 https://static.valavala.com/vala_user_audio/22027_511387d6-a479-4f98-8fc6-1e573f4c9770_7f2d81621a9d4dff88d1dc497ad2363e.wav 这是2026-06-09 11:04:30的音频,都是水流声。,2026-06-09 15:42:35,6830434790458518923, +2047,.oO(王_计)Oo.,text,老师,让用户凑近录音口说话试试看,或者试试看把保护套摘下试试看,还有一种可能把充电线扒了也试试看。,2026-06-09 15:44:42,5977738313475504207, +2048,瓦拉英语-尼克老师,text,用户反馈望远鲸录不上长句子,短句子和单词可以识别,手机号:18970899982,已经引导客户上传日志,2026-06-09 17:48:06,6603424424017844873, +2049,瓦拉英语-尼克老师,link,[聊天记录] 瓦拉英语-尼克老师和#胡亚丽&Chrissy #胡亚丽&Chrissy: [视频] 瓦拉英语-尼克老师: 您先看看语音的权限有没有打开 #胡亚丽&Chrissy: 打开了 #胡亚丽&Chrissy: [视频],2026-06-09 17:48:06,59270402779708137, +2050,嘿哈,text,133版本已经发布对外,辛苦今天持续监控一下用户反馈,有问题及时反馈,我们会快速处理。,2026-06-09 18:05:03,8813464187319640364, +2051,瓦拉英语-尼克老师,text,好嘞哥,2026-06-09 18:05:42,625673132009876671, +2052,瓦拉英语-萌萌老师(早10晚7),link,"[聊天记录]  大大福和瓦拉英语-萌萌班主任(早10晚7)  大大福: 请问一下口语回答问题的时候不能连读吗?  大大福: 识别系统不太灵敏啊 瓦拉英语-萌萌班主任(早10晚7): 连读是?  大大福: 比如,I'm  大大福: Hit it  大大福: ""Hit it"" ------ 今天这个连上读就识别不了,后来孩子分开读的 瓦拉英语-萌萌班主任(早10晚7): 哦哦 瓦拉英语-萌萌班主任(早10晚7): 明白了",2026-06-09 18:18:03,5923426948551818268, +2053,瓦拉英语-萌萌老师(早10晚7),text,有客户反馈 连读总是识别不到,2026-06-09 18:18:03,1496245842711971255, +2054,瓦拉英语-尼克老师,link,[聊天记录] 瓦拉英语-尼克老师和kakawhite kakawhite: 怎么那么卡呢[捂脸] 瓦拉英语-尼克老师: 您方便录一下视频嘛 kakawhite: [视频] 瓦拉英语-尼克老师: 就是在出句子的时候会迟钝一下是吧 瓦拉英语-尼克老师: 您是什么设备呀 kakawhite: Ipad kakawhite: 挺多卡顿地方 kakawhite: 不一定是出句子 kakawhite: 没有一直站着等着拍 kakawhite: [视频] kakawhite: [图片] kakawhite: 类似切换画面都会卡,2026-06-09 18:35:24,7334857817131513512, +2055,瓦拉英语-尼克老师,text,用户反馈卡,切换道具的时候卡,学习过程中卡,18070122566,2026-06-09 18:36:03,5727171134768512026, +2056,嘿哈,text,他这个立绘看起来是判定了低端机了。,2026-06-09 18:36:21,9193775978161664207, +2057,瓦拉英语-尼克老师,text,哦哦哦,2026-06-09 18:37:00,5552584155240426168, +2058,嘿哈,text,我查了一下是14的ipad有点不是很好能拯救了[捂脸],2026-06-09 18:37:42,797098347538586833, +2059,瓦拉英语-尼克老师,text,好嘞哥[嘿哈],我去跟客户说说,2026-06-09 18:40:18,6410425522675517651, +2060,嘿哈,text,委婉的让客户升级一下设备吧。,2026-06-09 18:41:30,3328944806849750712, +2061,瓦拉英语-尼克老师,text,嗯嗯,行嘞,2026-06-09 18:42:02,3676348778512780097, +2062,嘿哈,link,"@Sarah (关卡学习组件) 俞老师辛苦关注一下这个问题吧 ↳ 回复 瓦拉英语-萌萌班主任(早10晚7):  大大福和瓦拉英语-萌萌班主任(早10晚7)1900 大大福和瓦拉英语-萌萌班主任(早10晚7)1900@八哥-16619720408 哥,昨天那个家长反馈望远鲸还是收音困难5700...",2026-06-10 19:19:44,6360065480843395764,2014357899891255028 +2067,瓦拉英语-尼克老师,text,好嘞~,2026-06-10 19:20:46,4627466935697850692, +2068,瓦拉英语-露露班班(早10晚7),video,[视频] 22秒 size:3546706,2026-06-11 18:42:19,3147142381783898094, +2069,瓦拉英语-露露班班(早10晚7),text,飞哥 我想确认一下 序章这里是不是需要用户再完整的重学一遍 强化那个位置就能解锁啦 @八哥-16619720408 ,2026-06-11 18:43:21,6314792468460488345, +2070,嘿哈,text,@瓦拉英语-露露班班(早10晚7) 发一下手机号或则user id吧,2026-06-11 19:03:09,1593059020208312327, +2071,瓦拉英语-露露班班(早10晚7),link,@八哥-16619720408 15765083923 让她继续玩了 但是还是灰色状态 是不是得重玩呢 ↳ 回复 嘿哈: @瓦拉英语-露露班班(早10晚7) 发一下手机号或则user id吧,2026-06-12 10:09:12,5096511836883103157,1593059020208312327 +2072,花生,link,"这个是服务器那边数据太多导致某些课程的纠错生成失败了,先让用户继续往后玩吧,我找服务器单独处理一下这个账号 ↳ 回复 瓦拉英语-露露班主任(早10晚7): <![CDATA[@八哥-16619720408 15765083923 让她继续玩了 但是还是灰色状态 是不是得重玩呢]]> 57 ...",2026-06-12 10:15:25,5078804030138815212,5096511836883103157 +2073,瓦拉英语-露露班班(早10晚7),text,好滴辛苦啦[爱心],2026-06-12 10:16:28,5282358015550515794, +2074,丹咪尼🌹,text,用户反馈下载不了咱们的APP,发送了安装包还是不行。辛苦老师看下,2026-06-12 12:52:34,1507594413749788807, +2075,丹咪尼🌹,link,[聊天记录] 群聊的聊天记录 城美夏天: 6953566608637237031 这个买家使用的荣耀平板 搜不到瓦拉英语和应用宝 是什么原因呢 城美夏天: [图片] 城美夏天: 这是买家的版本配置 丹咪尼🌹: 给您发信息了,辛苦您查收下,看能否下载安装包 丹咪尼🌹: [图片] 丹咪尼🌹: 亓女士18006470355 城美夏天: 这个买家反馈还是下载不了呢 城美夏天: [图片] 城美夏天: 买家问猿辅导的学习机上有吗 城美夏天: [视频],2026-06-12 12:52:36,4808985217751753012, +2076,丹咪尼🌹,text,@花生,2026-06-12 12:52:41,8432988042272019683, +2077,花生,text,稍等下我看看呢,2026-06-12 13:02:40,6866348896555065379, +2078,瓦拉英语-露露班班(早10晚7),text,13723631280 用户购买的是年包,但是用户那边显示的季度包,辛苦老师帮忙看看是怎么回事~,2026-06-12 14:22:25,5437032768999282302, +2079,瓦拉英语-露露班班(早10晚7),image,[图片] 18620eeafa908caf26a147947301f0c5,2026-06-12 14:22:41,6481232339488774310, +2080,花生,text,这个登录页的状态影响用户课程内的关卡正常解锁吗,就是他的s2能正常玩吗,2026-06-12 15:16:37,6130988434669114305, +2081,瓦拉英语-露露班班(早10晚7),text,不能正常玩~,2026-06-12 15:17:17,241999306496436982, +2082,花生,link,"这个可以让用户再看下L2 0-3的纠错是否已经正常解锁了 ↳ 回复 瓦拉英语-露露班主任(早10晚7): <![CDATA[@八哥-16619720408 15765083923 让她继续玩了 但是还是灰色状态 是不是得重玩呢]]> 57 ...",2026-06-12 15:17:48,8772226599603292176,5096511836883103157 +2083,瓦拉英语-露露班班(早10晚7),link,@花生好嘞 ↳ 回复 花生: 这个可以让用户再看下L2 0-3的纠错是否已经正常解锁了,2026-06-12 15:18:32,3735577980387719657,8772226599603292176 +2084,花生,link,这个麻烦让用户先上传下日志吧 ↳ 回复 瓦拉英语-露露班主任(早10晚7): 13723631280 用户购买的是年包,但是用户那边显示的季度包,辛苦老师帮忙看看是怎么回事~,2026-06-12 15:21:20,556539441505777772,5437032768999282302 +2085,花生,link,以及如果S2无法解锁的话可以点击一下13-1的lesson卡片看会显示什么提示 ↳ 回复 瓦拉英语-露露班主任(早10晚7): 13723631280 用户购买的是年包,但是用户那边显示的季度包,辛苦老师帮忙看看是怎么回事~,2026-06-12 15:32:25,6662509888046972799,5437032768999282302 +2086,瓦拉英语-露露班班(早10晚7),video,[视频] 9秒 size:963296,2026-06-12 15:35:06,5036431008498507026, +2087,花生,text,好的用户上传日志了吗,2026-06-12 15:36:00,2972913050632099923, +2088,瓦拉英语-露露班班(早10晚7),link,还木有,稍等我们引导下,然后给你反馈~@花生 ↳ 回复 花生: 好的用户上传日志了吗,2026-06-12 16:10:05,5020272766771153746,2972913050632099923 +2089,丹咪尼🌹,link,"@花生 老师您好,这个用户比较急 买上一直下载不了,辛苦您先看看这个怎么办 ↳ 回复 丹咪尼🌹: 群聊的聊天记录城美夏天: 6953566608637237031 这个买家使用的荣耀平板 搜不到瓦拉英语和应用宝 是什么原因呢 城美夏天: [图片] 城美夏天: 这是买家的版本配置 丹咪尼🌹:群聊的聊天记录城美夏天: 6953566608637237031 这个买家使用的荣耀平板 搜不到瓦拉英语和应用宝 是什么原因呢 城美夏天: [图片] 城美夏天: 这是买家的版本配置 丹咪尼🌹:""瓦拉英语-露露班主任(早10晚7)"" 撤回了一条消息0",2026-06-13 20:20:27,4309452154246953336, +2107,瓦拉英语-露露班班(早10晚7),text,19916305522辛苦帮忙看看美食环节中孩子选的食材和最终呈现出来的食材有差异~,2026-06-13 20:20:46,1980190637392909751, +2108,瓦拉英语-露露班班(早10晚7),text,18770091015辛苦看一下,家长收不到验证码了,2026-06-14 19:41:41,5321957258156083574, +2109,瓦拉英语-露露班班(早10晚7),image,[图片] a44c6720c3400a0e081416acea74d392,2026-06-14 19:41:43,7452445802456378939, +2110,瓦拉英语-露露班班(早10晚7),text,@八哥-16619720408,2026-06-14 19:41:46,6633342717219903594, +2111,跃馬點煋,image,[图片] 19ab1a49535216be0b2c623cc6a05e67 size:539807,2026-06-14 20:50:14,2307310972980775469, +2112,跃馬點煋,text,请用户重启一下手机试试,2026-06-14 20:50:22,6695440286203439695, +2113,嘿哈,link,这个是正常的,因为用户使用的食材没有在咱们的食谱里 ↳ 回复 瓦拉英语-露露班主任(早10晚7): 19916305522辛苦帮忙看看美食环节中孩子选的食材和最终呈现出来的食材有差异~,2026-06-15 10:34:51,1128077062005180690,1980190637392909751 +2114,嘿哈,text,黑暗料理的描述是统一的,2026-06-15 10:35:05,7803039741468026354, +2115,花生,link,这个问题可以让用户看下年包是否已经恢复了,程序修复了一下 ↳ 回复 瓦拉英语-露露班主任(早10晚7): 13723631280 用户购买的是年包,但是用户那边显示的季度包,辛苦老师帮忙看看是怎么回事~,2026-06-15 10:36:44,6200790339223726584,5437032768999282302 +2116,瓦拉英语-露露班班(早10晚7),text,好的老师们~,2026-06-15 10:38:10,984883797788372293, +2117,嘿哈,link,@ @瓦拉英语-尼克老师 这个由具体的型号么 ↳ 回复 瓦拉英语-尼克老师: 19988541989,入门测白屏,退出重进还是白屏,2026-06-15 10:39:26,7752627456441555262,8207433669574071189 +2118,瓦拉英语-尼克老师,text,我去问一下嗷,2026-06-15 10:40:37,5070495127456209285, +2119,瓦拉英语-尼克老师,link,@八哥-16619720408 客户说是V1 ↳ 回复 嘿哈: @ @瓦拉英语-尼克老师 这个由具体的型号么,2026-06-15 10:42:46,9147545052175458879,7752627456441555262 +2120,嘿哈,text,让用户去应用市场更新一下这个软件再试一下吧,2026-06-15 10:44:50,7451319408039603241, +2121,嘿哈,image,[图片] be5de030f8c8b043c5a17f23dc7ce4b8 size:11896,2026-06-15 10:44:51,6062046112971075449, +2122,瓦拉英语-尼克老师,text,好的呢,2026-06-15 10:45:35,8359565932972700675, +2123,瓦拉英语-萌萌老师(早10晚7),text,L1 小程序学习报告 学到前 10 单元,只有前 4 单元的,2026-06-15 13:38:47,5910115418216827747, +2124,瓦拉英语-萌萌老师(早10晚7),link,[聊天记录] 🐼Mrs.wang🐼和瓦拉英语-萌萌班主任(早10晚7) 🐼Mrs.wang🐼: 老师 这个怎么就前四单元的报告 🐼Mrs.wang🐼: [图片] 瓦拉英语-萌萌班主任(早10晚7): 孩子学到第几单元了 🐼Mrs.wang🐼: 第10单元 瓦拉英语-萌萌班主任(早10晚7): 第一个是角色有没有选对,第二个是级别有没有选对,第三个 单元挑战有没有完成,第四个 学习报告位置有没有选择对,先自查这四个 都没有问题就找技术老师 🐼Mrs.wang🐼: 嗯 看了都做了 瓦拉英语-萌萌班主任(早10晚7): 给我截图看看 🐼Mrs.wang🐼: [图片] 瓦拉英语-萌萌班主任(早10晚7): 我明天问下技术,2026-06-15 13:38:48,2365920455299685646, +2125,瓦拉英语-萌萌老师(早10晚7),text,15620999685,2026-06-15 13:39:23,2450500949123984797, +2126,花生,text,他这个图里是季度的列表啊,要看单元列表需要先选到L1S1,2026-06-15 14:12:34,8985615555109052184, +2127,花生,image,[图片] a3410704c901bfa109be5a747cb636b6 size:14374,2026-06-15 14:12:34,8782155775544293977, +2128,瓦拉英语-萌萌老师(早10晚7),text,😲 啊 好的 我让她再往下点一下看看,2026-06-15 14:28:34,5305939911060062897, +2129,瓦拉英语-花花班班(早10晚7-周末休息),image,[图片] 7a2e9a978ea9e0119f0ecbeeaaa7b97f,2026-06-15 16:40:50,7718551043412961038, +2130,瓦拉英语-花花班班(早10晚7-周末休息),image,[图片] 3b5bbbc83da177fad588830bcf5dbd03,2026-06-15 16:41:00,6644667586254989940, +2131,瓦拉英语-花花班班(早10晚7-周末休息),text,17604344688家长在微信小程序熏听一直断断续续的,辛苦老师看下,2026-06-15 16:41:23,7605103121118769923, +2132,,system,"""瓦拉英语-尼克老师"" 撤回了一条消息0",2026-06-15 21:20:31,3825992789969791445, +2133,,system,"""瓦拉英语-尼克老师@美奇创想""邀请""瓦拉英语-Nick""加入了群聊",2026-06-15 21:35:00,1006795680236568163, +2134,瓦拉英语-Nick,text,用户反馈本来上了三节课,今天上线显示从头开始了,中间修改过一次昵称,我这边后台查客户也是显示三节课,和角色ID也对的上,手机号:18601301376,2026-06-15 21:38:44,891160670903801773, +2135,瓦拉英语-Nick,link,[聊天记录] 瓦拉英语-Nick与瓦拉英语-尼克老师的聊天记录 瓦拉英语-Nick: [图片] 瓦拉英语-Nick: [图片] 瓦拉英语-Nick: [图片] 瓦拉英语-Nick: [图片],2026-06-15 21:38:45,3101874599670842307, +2136,嘿哈,link,@瓦拉英语-Nick 这个昨天删除了原来学习的课程重新创建了一个。 ↳ 回复 瓦拉英语-Nick: 用户反馈本来上了三节课,今天上线显示从头开始了,中间修改过一次昵称,我这边后台查客户也是显示三节课,和角色ID也对的上,手机号:18601301376,2026-06-16 11:43:45,7586824469166395122,891160670903801773 +2137,嘿哈,image,[图片] 47adb8bfdf51127ebabbd22b2a0d9089 size:13199,2026-06-16 11:43:45,7880834268810363393, +2138,瓦拉英语-尼克老师,text,好嘞哥[合十],2026-06-16 11:44:39,2740701489624398746, +2139,嘿哈,text,@Constance啊 这个后台貌似得让礼哥优化一下,现在显示的是角色的数据,如果用户把课程删了,数据显示的就不对了,2026-06-16 11:45:31,4503879193826011877, +2140,瓦拉英语-花花班班(早10晚7-周末休息),link,辛苦看下这个学员下载问题 ↳ 回复 花花老师: 18006470355老师学员用的荣耀平板无法安装软件,辛苦看下,2026-06-16 15:49:23,7722577324374442850,3239721360930902469 +2141,嘿哈,link,"@其实我是喷🔥龙 龙哥,辛苦看一下 ↳ 回复 瓦拉英语-花花班主任(早10晚7): 辛苦看下这个学员下载问题5700辛苦看下这个学员下载问题5700群聊的聊天记录城美夏天: 6953566608637237031 这个买家使用的荣耀平板 搜不到瓦拉英语和应用宝 是什么原因呢 城美夏天: [图片] 城美夏天: 这是买家的版本配置 丹咪尼🌹:稳稳的幸福和瓦拉英语-花花班主任(早10晚7)19https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/favorite_record__...,2026-06-16 20:46:22,4578414465449126102,2041747115466568777 +2172,瓦拉英语-花花班班(早10晚7-周末休息),text,另外家长问小袁学习机上架了吗?还有这个设备,2026-06-16 20:51:10,3785226689441846404, +2173,瓦拉英语-花花班班(早10晚7-周末休息),link,"[聊天记录] 稳稳的幸福和瓦拉英语-花花班主任(早10晚7) 稳稳的幸福: 这个安装包说正在进行内部优化,暂停下载功能 稳稳的幸福: 是啊,我这也纳闷,寻求你们的帮助啊 稳稳的幸福: 小袁学习机你们上架了吗 瓦拉英语-花花班主任(早10晚7): ""这个安装包说正在进行内部优化,暂停下载功能"" ------ 可以截图看下吗 瓦拉英语-花花班主任(早10晚7): 学习机的话,也是可以点击我刚才发的安装包安装 稳稳的幸福: 学习机我试试 稳稳的幸福: 两个都不行",2026-06-16 21:09:37,8008929028163581197, +2174,瓦拉英语-花花班班(早10晚7-周末休息),text,学习机和平板都安装不上,2026-06-16 21:10:03,4256556307579436301, +2175,其实我是喷🔥龙,link,小袁没有的 ↳ 回复 瓦拉英语-花花班主任(早10晚7): 另外家长问小袁学习机上架了吗?还有这个设备,2026-06-16 21:24:12,6052882780008192653,3785226689441846404 +2176,瓦拉英语-尼克老师,link,[聊天记录] 瓦拉英语-尼克老师和草木燃🌿 草木燃🌿: [图片] 草木燃🌿: 我们给电视投屏的时候,每次到口语快答这里,就没法收音进去 草木燃🌿: 一点孩子的声音都录不进去,都得退出在平板上说 瓦拉英语-尼克老师: 投屏的时候收音也得靠平板收音哈 草木燃🌿: 不不不,对着平板也收不到 草木燃🌿: 其他就能收到 草木燃🌿: [图片] 草木燃🌿: 其他的就可以,只有这个自由口语时间不能收到音 草木燃🌿: 必须把投屏退了才能在平板上收到音 草木燃🌿: 已经试了两天了,用的iPad投屏的 瓦拉英语-尼克老师: 就是只有这个核心互动的环节录不上,跟读的都能录上是吧 草木燃🌿: 是的,2026-06-16 21:35:41,7948155015804032781, +2177,瓦拉英语-尼克老师,text,手机号:19988541989 设备型号:希沃 V1 问题诉求:投屏到电视的时候跟读可以收音,到了核心互动对话那里收不了音,2026-06-16 21:37:20,214939873923105900, +2178,瓦拉英语-花花班班(早10晚7-周末休息),link,@其实我是喷🔥龙那现在荣耀平板这个怎么可以解决一下呢老师 ↳ 回复 其实我是喷🔥龙: 小袁没有的,2026-06-16 22:09:19,3710878179968083987,6052882780008192653 +2179,其实我是喷🔥龙,link,"我找下荣耀的人看看能不能排查出问题,目前除了让他在平板上装APK,没啥好办法 ↳ 回复 瓦拉英语-花花班主任(早10晚7): <![CDATA[@其实我是喷🔥龙那现在荣耀平板这个怎么可以解决一下呢老师]]> 57 ...",2026-06-17 00:35:09,566140067672295157,3710878179968083987 +2180,瓦拉英语-茉茉老师(早10晚7),text,这段里面有一句中文,是没有声音的,就是这样设计的吗,2026-06-17 11:41:12,3688134999279743671, +2181,瓦拉英语-茉茉老师(早10晚7),video,[视频] 19秒 size:2895713,2026-06-17 11:41:12,337899628207531272, +2182,瓦拉英语-尼克老师,link,[聊天记录] 瓦拉英语-尼克老师和YOMO YOMO: 刚才进入 闪退 瓦拉英语-尼克老师: 有权限的呀 YOMO: 第二次做到第三道题 又闪退 YOMO: 望远鲸 YOMO: 又一次提出 YOMO: [视频] YOMO: 卡顿,2026-06-17 16:07:03,6977973266228206949, +2183,瓦拉英语-尼克老师,text,用户手机号:13339311818 设备:望远鲸 问题:入门测闪退,上课过程中卡顿,2026-06-17 16:07:04,1499838771344907184, +2184,瓦拉英语-尼克老师,link,@八哥-16619720408 哥这学员的问题能解决吗,学员来找了 ↳ 回复 瓦拉英语-尼克老师: 手机号:19988541989 设备型号:希沃 V1 问题诉求:投屏到电视的时候跟读可以收音,到了核心互动对话那里收不了音,2026-06-17 16:44:59,6917601959675261671,214939873923105900 +2185,嘿哈,text,@kevin 雷哥,投屏问题我们能解决么?,2026-06-17 16:45:43,445090309233366447, +2186,kevin,text,这个不好解哇 ,需要花点时间验证一下问题题,2026-06-17 16:48:38,8956687213956498976, +2187,瓦拉英语-尼克老师,text,好的[OK],2026-06-17 16:49:41,6795948540790149780, +2188,瓦拉英语-花花班班(早10晚7-周末休息),link,[聊天记录] 稳稳的幸福和瓦拉英语-花花班主任(早10晚7) 稳稳的幸福: 最后几秒你看下下方出现的小字 稳稳的幸福: [视频],2026-06-17 17:03:21,2738945484622791106, +2189,瓦拉英语-花花班班(早10晚7-周末休息),link,@其实我是喷🔥龙老师,这个学员刚刚录制了视频辛苦看下 ↳ 回复 其实我是喷🔥龙: 我找下荣耀的人看看能不能排查出问题,目前除了让他在平板上装APK,没啥好办法,2026-06-17 17:04:49,6003563819146538246,566140067672295157 +2190,kevin,text,这个么?,2026-06-17 17:05:18,3879660896734758345, +2191,kevin,image,[图片] 5d9ea13f1c7089e496c654d0071fd031 size:29960,2026-06-17 17:05:18,2071305586407759528, +2192,其实我是喷🔥龙,text,这是应用宝的内部优化吧,不是我们的吧,2026-06-17 17:06:39,5154396085486412270, +2193,瓦拉英语-花花班班(早10晚7-周末休息),video,[视频] 10秒 size:2107786,2026-06-17 17:08:12,1337521210118911098, +2194,瓦拉英语-花花班班(早10晚7-周末休息),text,17754657100用户从APP中进入磨耳朵,经常闪退,老师看下,2026-06-17 17:09:17,5797719453251443502, +2195,嘿哈,link,这里老师,先引导用户小程序使用吧 ↳ 回复 八哥-16619720408: 各位老师,同步一个消息,目前APP本身的磨耳朵功能适配问题较多,暂时无法进行很好的解决,刚才和ks还有研发大佬讨论一下,后续会由产品新出一个方案使用原生unity重新制作一个磨耳朵的版本,后续关于APP内用户反馈的磨耳朵的问题,先引导用户使用小程序来使用磨耳朵功能吧。如果有小程序磨耳朵的问题还是正常反馈。,2026-06-17 17:10:03,8572595023109002025,6879556851428429774 +2196,kevin,link,@八哥-16619720408  马上就可以更新成原生磨耳朵了吧? ↳ 回复 瓦拉英语-花花班主任(早10晚7): 17754657100用户从APP中进入磨耳朵,经常闪退,老师看下,2026-06-17 17:10:05,975128937569337216,5797719453251443502 +2197,嘿哈,text,目前定的是下个版本,2026-06-17 17:10:20,4337049426514560547, +2198,kevin,text,[OK] 哦,2026-06-17 17:10:59,8918667867583474126, +2199,瓦拉英语-露露班班(早10晚7),video,[视频] 22秒 size:3449513,2026-06-17 17:13:36,6833297691471940807, +2200,瓦拉英语-露露班班(早10晚7),text,季度包用户 退款599购买1999年包 599季包到账了 但不能升级课程 这是为啥呢~18629308838,2026-06-17 17:14:24,7475508140772399951, +2201,嘿哈,text,599退款成功了?,2026-06-17 17:15:42,5352780392553646662, +2202,瓦拉英语-露露班班(早10晚7),text,是的 昨天申请的 刚家长说到账了~,2026-06-17 17:16:13,3336150959087742155, +2203,嘿哈,text,是怎么操作的,仅退款么?看起来用户的季度包权限没有关闭啊,2026-06-17 17:16:53,6316761218308863818, +2204,瓦拉英语-露露班班(早10晚7),text,是的 7天内的用户 可以直接app仅退款,2026-06-17 17:18:22,349237614710768568, +2205,嘿哈,text,仅退款的用户,他已经有一个包了,没有办法再增加4个季度包,2026-06-17 17:19:10,8050486042778763470, +2206,王虹茗,text,app里怎么能支持仅退款呢,这是个bug吧?,2026-06-17 17:19:54,6701556867846442221, +2207,瓦拉英语-露露班班(早10晚7),text,学员app里面报名的,7天内可以直接app上面操作退款的,退款以后季包就没有了,那么年包就能升级吧?我之前有两个用户就是这样升级的,2026-06-17 17:21:45,3089893911011382548, +2208,瓦拉英语-露露班班(早10晚7),sticker,[表情],2026-06-17 17:21:55,975826666520655339, +2209,嘿哈,text,所以他到底是退货退款还是仅退款,2026-06-17 17:22:49,8314752924483388090, +2210,lxr,text,端内退款调的哪个接口,能帮抓下吗,2026-06-17 17:24:27,1125074806639030794, +2211,嘿哈,text,我看了一下这个用户是ios的订单,2026-06-17 17:24:44,6891118608060419290, +2212,lxr,text,数据库没有退款记录,2026-06-17 17:24:52,5644804464890609366, +2213,嘿哈,text,看起来是这个订单,2026-06-17 17:25:03,2162686632148311968, +2214,嘿哈,image,[图片] b615bd967ef2e22ba1c50e115b3a56ce size:48603,2026-06-17 17:25:03,7910677577251201477, +2215,嘿哈,text,可能得看一下ios退款的调用是不是有问题了,2026-06-17 17:25:17,6615670582401237707, +2216,瓦拉英语-露露班班(早10晚7),image,[图片] cbd3b17460c3e6bdba0f99eb160e9696,2026-06-17 17:34:18,2037002471742193430, +2217,瓦拉英语-花花班班(早10晚7-周末休息),link,"[聊天记录] 稳稳的幸福和瓦拉英语-花花班主任(早10晚7) 稳稳的幸福: 安装包不行,跟刚才发你的视频一样,说你们在优化 稳稳的幸福: 这个问题再解决不了,我们还是退课吧 瓦拉英语-花花班主任(早10晚7): [图片] 瓦拉英语-花花班主任(早10晚7): ""安装包不行,跟刚才发你的视频一样,说你们在优化"" ------ 这个界面截图给我一下 稳稳的幸福: [图片] 瓦拉英语-花花班主任(早10晚7): ""[图片]"" ------ 那再试试这个呢 稳稳的幸福: 正在试着 稳稳的幸福: [图片] 稳稳的幸福: 大约多长时间。 稳稳的幸福: [图片]",2026-06-17 17:44:30,3622228143991840537, +2218,瓦拉英语-花花班班(早10晚7-周末休息),text,@其实我是喷🔥龙老师这个学员安装问题大概什么时候可以解决下,家长想退课了,2026-06-17 17:45:23,5807025880984263120, +2219,其实我是喷🔥龙,link,咱们给他APK的链接了么 ↳ 回复 瓦拉英语-花花班主任(早10晚7): @其实我是喷🔥龙老师这个学员安装问题大概什么时候可以解决下,家长想退课了,2026-06-17 17:46:46,6425711770989866101,5807025880984263120 +2220,其实我是喷🔥龙,text,他的应用宝是最新版本么,2026-06-17 17:46:59,8806479382665092576, +2221,其实我是喷🔥龙,link,这个录像是应用宝内部优化,不是我们,所以看看应用宝是不是最新版本,其他的设备应用宝都是正常的。 ↳ 回复 瓦拉英语-花花班主任(早10晚7): 稳稳的幸福和瓦拉英语-花花班主任(早10晚7)19https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/favorite_record__...,2026-06-17 17:49:24,1326621895234939040,3622228143991840537 +2222,其实我是喷🔥龙,text,另外就是给用户apk的链接,在浏览器上直接下载安装,2026-06-17 17:49:43,2669160957576237034, +2223,瓦拉英语-花花班班(早10晚7-周末休息),text,给过了,2026-06-17 17:49:51,5346308552221819014, +2224,瓦拉英语-花花班班(早10晚7-周末休息),image,[图片] 36a885fc2d51111f3313d0ffac80fa1c,2026-06-17 17:50:05,6506765808831975887, +2225,瓦拉英语-花花班班(早10晚7-周末休息),text,显示这个界面,2026-06-17 17:50:15,2286630040754753480, +2226,其实我是喷🔥龙,text,咱们自己的apk链接是跳转应用宝? @八哥-16619720408,2026-06-17 17:54:10,988384466906953076, +2227,嘿哈,text,不是啊,2026-06-17 17:54:23,8204473995338763349, +2228,其实我是喷🔥龙,text,@瓦拉英语-花花班班 给用户的链接发群里看一眼,2026-06-17 17:55:01,9089234310509318641, +2229,瓦拉英语-花花班班(早10晚7-周末休息),text,https://a.app.qq.com/o/simple.jsp?pkgname=com.makee.PlanetVala,2026-06-17 17:55:47,8663144655590896026, +2230,瓦拉英语-花花班班(早10晚7-周末休息),image,[图片] 099bc1dccc8f386b84c9fd734e571485,2026-06-17 17:55:52,4783322085098227684, +2231,瓦拉英语-花花班班(早10晚7-周末休息),text,这两种下载方式都发给家长了,全都无法下载,2026-06-17 17:56:03,1487374132815568423, +2232,瓦拉英语-花花班班(早10晚7-周末休息),image,[图片] 4026c59a57f6570bb2f8c38b29198890,2026-06-17 17:56:55,3348093639619616434, +2233,其实我是喷🔥龙,link,这个链接是咱们给到班主任的发给用户的apk么@八哥-16619720408 ,如果是的话,这个我点击跳转的是应用宝 ↳ 回复 瓦拉英语-花花班主任(早10晚7): https://a.app.qq.com/o/simple.jsp?pkgname=com.makee.PlanetVala,2026-06-17 17:58:39,7270781552361946005,8663144655590896026 +2234,其实我是喷🔥龙,text,而且显示找不到数据,2026-06-17 17:58:45,441113945490805034, +2235,嘿哈,text,这个地址不是我发的。,2026-06-17 17:58:57,6512295923259006225, +2236,其实我是喷🔥龙,text,但是我在应用宝搜索是正常的,2026-06-17 17:59:00,9139660948632484835, +2237,其实我是喷🔥龙,text,@Constance啊 班主任的apk链接哪儿来的,2026-06-17 17:59:12,6451822956612435626, +2238,其实我是喷🔥龙,link,辛苦给个对的 ↳ 回复 八哥-16619720408: 这个地址不是我发的。,2026-06-17 17:59:18,1969060413806421415,6512295923259006225 +2239,嘿哈,text,https://static.valavala.com/vala_apk/webapk/vala_41.apk 这才是咱们的官网地址,2026-06-17 17:59:37,3592041222549084831, +2240,嘿哈,link,"但是我怀疑他的设备没有办法直接安装apk ↳ 回复 瓦拉英语-花花班主任(早10晚7): 25984982255687221@openim: 但是我怀疑他的设备没有办法直接安装apk5700 铁铮和瓦拉英语-萌萌班主任(早10晚7)19https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/favorite_record__w_u...,2026-06-22 12:20:03,742182059587713189,3045170195657810091 +2339,kevin,text,Assets/Deer/AssetsHotfix/L152/PlanetVala_L1_S02_14/Scenes/L1_S02_14_4.unit,2026-06-22 12:21:01,2281898690310116719, +2340,kevin,text,就是资源交叉引用导致 的。,2026-06-22 12:21:11,4914357765283256606, +2341,花生,link,"上面这几个进不去关卡的麻烦先安抚下用户吧,都是同一个问题,正在修复中 ↳ 回复 瓦拉英语-萌萌班主任(早10晚7): 菜和瓦拉英语-萌萌班主任(早10晚7)1900💤 迦 南 💄 ❕和瓦拉英语-花花班主任(早10晚7)1900瓦拉英语-尼克老师和匪石1900瓦拉英语-尼克老师和匪石1900)NO3rwryu(+qP{@>`ZKPq9@73wr$(Cb@P7TpL_3*>R!E8t<`-_pW1uZ zKBXuF3Wf#*1Ox>%7PO=*J}f7h^7AzLGmw6Use_54vxB1xqmiQ{gQuOX+_W5Q9}^tJ zPPejqb4Cq{^}doQmM+(L#(5{jmDv0H`%J64uqc%dcI zH-Yi7f~bN69{}@aU`!njVlg2BXn&#I^6yY)IIfAk=GxN*25}3w=~NMqe>_SQ{d<~h zJav?Wl^b|4NXOpf0@0{4+-bDn-_a`L=qkBKV-6pt;N6gIn2P^T2(I+$rk6jTP74AA zg#3SpVB+9x_FoK>iM`STOh{n{V$KeflOhQ-mtwcYL@oKAu%j3DwN@f5b64wGLz@hR zh&#-z0bQ>UrSrnpgty#pzZ2+6vsU3v5_xP_6R0GA7ymg?t#C1(nC$!`ujD@j3RWVx z04(gd6(p)Go)84C8JaTkHf32(N^^G`!|6R3KFx)eKKmP#2aj4p9u-O^+b1KiYrWuS=wk# zR{Q%V=s7s1-Qc=(1b%mlh-B|J<}#tbhS72C=6ZmwFY*QNiyP+W|CgH#-E2}M2q2(r zN+2NApWJxbGP+ut*_r+CmHEHyTx#pMtZ||FU)RidT0Ggo4sirFHK4j!xvw{5gj~uK zh9Yam+IpELgamX;a3GDR!e1uJwPo>v(Vf0eiAfxvaCzNdF&LkOMI_&O8m=;~FSR!_ zZtZBWkRb~*VVBk1^uUzJ>Njdz0rhkFjiRFTZv;g{$#|lTFX`^+;4qRdoi(g)s)tzF z7GO!38v5zeSqjalDrq|y5H%bUvc8~?tHzoY0i$XNQ?y1j+`ZZkeynW?m`$JZ;IjnU zGvR6y1xz`V9ms1(?5g$+^jKR6s@n|D&Po0b8ud#CZDP(VTMkeHysT ziy2#UWwXQC*}wJVY8s!5cEkhQQEJca%XzTvE*6GvD6*O{U3ppqB$QUfswm7q`)!|R zS!Tn;>L|?Hcx=wcMGjTZc*1wxDunj~B8MtxT+gj2C_e!<#itmSBI5h!-YDpeheGp2 zK$?#3OA~XTsruA!Zpk>S`0bm*x;L6v+>yv%LxW&TR&&^?Y~s#2@!$wRoCCA6ioP|% zO;J02iF3N~OViYiia1c2BY}?+LBxX_HJ^`Z?W4u4-Z_3eQ#Q!~R+YeIm+e{8NgpmJ z2YF>l%W@)9jvaK+x9_AnM&Xq9yr|ARcorhQ(@#$cCFCsA*RL?=@_ZJA>Z!GQ)6)mJ zG0vpzn@^g4PYM$Dq|4};bkUzAl*pmbdM=mB4+@_Wi5Ren~Ie+F(MaLs|6NGU|XI>UM zX@Y&`>i0|ao&=4Xf42CCEwb9u#XUQDp(`2c^C_J z47>xF*Ou8Bs7y4RCr5@=Ym%r}xbu20J}m`uZ!h0g$wF!}wdhGP;$;Hsg~?hzqQ`D% z2B1$&b;zN|Rp-q(qfl~1aP3c39;H*34{KVfTKIGhPHPHW1?Z+<`3#O5CSh4co1JCO znv%O3DY&E`>LwiJ3C7`gE%*}gn>_OI+25b^+z&`gm{ih4TX00WK<(OcHh8#l(-T@@ z=9S|e`d?26J#qH9SHW8S(lzXkS7vA5k9(DBi>~=n@rNVs3W=`@!qTVvMZ>*(4AL!9 zh7{S*>};#Z=){{1Tb6I>&~{7>>GL6jYm`9ll+_HGb%sD`;|qOdW5iAzkJEGw_Gc6K z*GtVB?Q5t#u2sz>tRkmWI8Q6x>0 zF-xTj@3B?7j%lR^)VR9ESesDNusZgShMnY9T2S1Z5J6a4+quiV&6q7p@3!gTpy_lX zv{3fs^ez{Vv$6r+B<^o%9=(QlpN^vvh=;t#1`m3o0RN}W{Wtq0UP;+(uR&yBS1}OM z6g&tFOqK)1tHgK+RN%?v(O)+pL8hg6zti7fJMZ9HsnMsZ1-Jvm=z_!K_2-r1)4Ve7m_eB{y1oh!AS>7#uVpZRoO9Zbh+uV-pJX@gpN2qk7#s0m1QBl8< zD~-F_Y7}0{vw0hQZUc$3K9<&tpEh^kd>1OUOH65z1!W+82@@eqVsswZ4E~@QSC`gR z53Mo7dHvSBhbu7W+71`X#9>{GuHue`aS&b}@fhWmH@@0*uvwmQDwM*loNJ2Wfg zb#;H;-grNMRkk;WbKaz7wR_ZfJl{NSA}VZm`+2Nfh6~pi@T13Ml+}1NJLGaGZ+`lIpFK_PwtHkf3wHZ=`aC}e@OHGlKb}*5NPP_kY<%79`@Ia#Z+~B1UWNA? zAUuCRuU~KVHkXm6d|saSXFWH2IB;Aea2g1{f^O^6*z`y2CVqGDf4p_Qc%kMVo?Ts) z-5e^s*W}ew20mr=A6*A{y`QBj1qfVag{@4rK1pX}{EWn(BipwRo7xqK_eA9+bJp$m&^PQwqX|9Or{ z=q$cIS<4y52@(8yGgSP*aK*!oWZ^XJcpZytUKDn2$T7$NzB7-`XP3%`rJofc(#J&5 z+=lhV5aQ~z7KixLU?B+@DdDDsY4ujs6+(( z>E3KA>^+?k`(qz>swu{14B09q9xpWBHYEOUNc;y` z=*(T!6=Fd9aLCLZ)fL;mx|F%DA==;tlb+4xjjn7(i%k_imbm70o}IS;Q|ZR&we*uMi7D42;Cc9y`JV?ntv=(CE!6qC4dVdg_Rjy(C~J7 znOsbt|FV)bA&E;VMKt%wE8&9D7q#eXW0!Oou{a0D6xwkS!nRGddm2pY9V}DL`~wue z3Sk~u>7j+Jq1_{NKU?u4JcD|16(P!M!6KTVB&sJhtWT=Als8m z66~WP7D8?P-diz#j$n(n8ye)8G(NYko1|=A8LvO1e~PlmkU~&QD1^5``-8(fQem;t zj|w8lMFFvC&oy5vIzL!nhhly6%fHmmDnTEYFixmN>_Z@Ze3!{R0kE(1s377}y!??< zLS63}qCH&bn6!jp;h1ZnG2)a0r!4^0Zb)2Dh9|?L)O|Yk|D@OC$SEra87cE(OWxwRh6OLA#7?G z|HYOx1Z5a-EM(dD)qtY2PLN=3x7pGJ(9+SVt|ldmWy_a^XQYXOADl4M>bL55BwS`0 z-1^7(=j~{5d#gkY(Z-Ct3qCE9&8CFENqziR47@Yk1zf!JTHr3tOyf_XE{*-MIm~Kw zUetaa%;=@B7Caxsyqbh9z}zN1eT6b3?^eNgoy|;4r9p9Z<8bWmV^HF24_} zwC`79Z-eg7e$80lbWi5NntU7{X0mnxZ4FPwVUGX8laxo@N{5$*{Cf+r&Y$*E%KI)H zUME`pZ(YWptK^kld02}k{>GZUSm^zWG0bnn;%@ZxRJwoDTq`a-R1k&=$7p9G@i~$13xB+_;0azzec-KDi6E0I2D8Klv zt&voVn++vtJTWX9z}X==_uEyqo6OkAFhhIX;HRB-krp#!@s7yfgci}7?QJ7;HkFBSf@^t$<9^voTxF^#1Lp~4rCi!LI zL@xpmV6@9App0YAwtsTUlSw0~=YMi!~QSed^%FiZdKj-W0IU49XqkxrglIARGe9%v<1 zqguvAY+G^fhTv~3lz)lsZozpa=x@n9T(C1 zZFEDD?TQIIz?3!MJCD z%Hw*|l2@(K3`qW_J8EjDlWL+Sp636`Z+BzwBclkBYJftmA*K*66fhJio}VkFn(Kwx z5pEXmY}`g+YfpF`@7LF_f|^Y0gX{hGI;Op>EGeAECl92u&z)KsRuITL`y93(_V|(~!xie*>NM7IA7=kSYsd zR{8WT=%D>Fj2BuQcEyPb@SeR>>im3Ht*#TMEeDq3*cOxtwp8$F*sW!vBq;ZTBtDc? ziVd0tf9phqiCxPsw&r{K*i~K^nxs7u4fXi^PQw&5(YGJW+7oK1ERdo19NUmjOZdu~w%<)LZvKYN0tYBz)e z>T0o0$~}J8xU+9U#FBAYp_G`;&`q0>*FXz{hKk}P9}qVyS{vUvv#cgT=b|MUi?A4k zJTii&7C2TCGaK06KbaD}Ts}^D?!8&7N_SU zRsh0Eg?nSX_Fw}ivYJziu41mi8Cr*@+xNxeJ0XLAO8|!dMyDU_Hph)q`}Z4k$L~*t zZoI8fvU}gb&&$us{+q*JX4FVtJW7EM@BQzRH}xowz{!7Wy53;W8PA#B6x}z}4VB~= zsc0Z3-BZQBK$-bFrS}u4}#J;cS($%Dm1z5#LNLIF9yyFmnU@L zp`J~`t;YO!aJsv^N~~b$^qouse=~GlYGQ=Sb=}JwbeV~#3&nE9V)>%YexFvh2YeqB zIk0DUY#S77CI`Ge^U9L>%gmh7AfSQeEI!RrrWFVrv#Olz#+3UhcA`nX@Z%`+vq%U4 zp)8A$-|J3bEhJzyU<*#md|Iqg(t*hj2;N=Pw72?w?;8%cXi0uJLK(!2D4d#BJMSFN zEIn+Qr&oZTrYLKfIa`+ovu#9q&k_}3qM<7evcq-{?-VzW@2ikYLTFdWLSoW$Z1y=@%@LIVWuOi#}E&P_g#M#UpfBrah4`>m6 zKE7*7%YbEcCXR`X^Y>Xvx_0<}Hp2B?Su&)3&Cb`m35IGd)Irnn5mr>v4T30X)X2x{ zvta?@?PhFOT^r2Z;hgPrC=A;Mi;Up!GtPt9N>H)WrRNSR5}$OTM~SB^tYa>8rS10y z*`&)nehHm-52dpC%vJ-FIs{?4vB3)?(ia{~^wo(D9Y`EkEe2(u39rS*a1^7UE{?^%!ro=1*}-_NWw8O5>(480u!UK zP_c)5S=I<==kHGH(M(2-LUSe3JCgm(N$i>Jheh7Y-L$5qE#+Ar7Uw6Mas=ouu6@iM zk=yIlfoMAaRg+g_p0GTxTB6}XHyrb%a!r#She3rQ)LYn(2d2$;Zf5VU%uGA%E`>;L%M~c`pf@YJzm$E{9jdd|#~pNM z7L8M0tEw|3Irk3&{B>LCUdP$O>7P_;G%rgDe-*T=&_>+h-^VjXOSdCI?%iu$6X+$Gr@8_v;$ zV3jJl2M0bWlH65m&oolo=cEzQhdy21-JM^jzeBS>6R@x^BoB+8PcJo~w ziosvl+E=wU`2beFa0qt9uMzg7BXe3Ip3pvUc;RwUJ+Qe&ZPO9efv%*9{!)>Prk9~> zJDFtEQ&qYAhl)c7fRyTX^`$HASF5EwlF~)~(vdPF-I55Ty!bZF01azY{0?e%4sH^O zUn#Fx)zo;;Qj@ZA(udNFL7W{`$vD>Mqd{BAph%=DLo<)MkX*tOvEIDJ7ijmgUfiuP z4-rClOazBVDRFZnlWk>JD5s=`+CF8fjwyY(GboKQKSi%?pWBiD?=fg>4VEVD(_JDE z5v-a4HqnZbU%f($gz>cpMzFiJ^ZR`eEpew47jCm6)#P`z@<|YbjMuN80z^Zoc)pAp z65Y};KE}~TYMHnv71D@fz{~hU@gWO3sCnBnu`H=!mt!W4t~S8EV{G)6MrXLP3cu#g zci0AeZNdB0YR=h9`_skM3(q-DyZPB0(xQxoNUEBXXe*|ZNB0td&`#Sa!EI9Vtzz4< zZQYFC5++6_CyAKZ1stX*4ygt^Db;OgCM%Ecm7|tqxUp}XhG~Jnv zl1dWLV_AQyyD-|3rG_>td7kdA1{{1-RVNZDCA0$sRH)lHCy~_(lY+(wMZ@IdAQrI( zCcaGfODA8qaZRFrK|X9W&6tCUApqf4a~XO z0p_XXbg~O`%3O?8W-R1TEIO7xBI6PC+~&%F=vq(my_Bonkx+h0lK-S$BjFT3y04+- z?(;Z9LMk-nb**)0f5j6*r5Wb2k~F$-w1gnC~o{^rOZ6ETme0U6Sgui)t7y!gt~{I=e{uNv%S9dE20ofRq@^C(0bue%u{bQJrm?+`RZmpQGec^Vs5lC8ZPv;WBXWs9B;*faln$AM8$tSbf%_L z*f#36S7`8MRI)Z4crANJnv#9z9rv?(tRmdN9Fv`6}wTm?d9r9*A(7@smXw|9 zS-h7%@Lk-0H;(6)88Fm%N4x8-Avi7&yIVI>yO17=Z#m(?*vS+6ePlPVMH|!GGHpCE2<9(MQ-O~1*isV zWJ@*DnX?bR>_0^%xnb_}e`KCKNF`OX_j%PaC21zGj!SM+Ss7xlvau@zP1u2lE5PH_ z;PEOUf#L*Vbh1+)MFs6cG3AxtTU1QO5R|2Mh7zAVGt#4*n&J0n*O@R#E4|<0%Ek;3 z+MhifUIx?o`NF`R=w0OMeOGSw;_(&_nDd;hyicw);d7%4eyE>0G`~;uhVMDmYZC8x z4qF!hfS6tc%dN!V(_r@mOeqkMNV+bP7n-QHGYd<^w=(48aZo(-)B&j0n~!pFl_g^8 zz=h1+pd}`f=8~*GWBOzzAXB5ZD6;S~N163BjdVF{qh8# zKuw+2!Td*^d}KNCK`wmAICWlQp`3n3>AwZ&~<@grC|l5G-DSL1Q11ILno{?PLYq6 zCA#JtTgIEpXt%d`%|=!I=PRQ&DvUNjvfgS4t-_2!Ucz*gh`Mjl9L~!;7zHd_hDjw1 z-lP{HhA?PM|JR)u4(IUqA~LLZl;(`xKoEcw!+hD72O0JUP<6%l<iQTS>z&l+l|=E&2A zV`6^fOG@^9^Nj(PVf;n!W@ZuLYmW7crAeQ1ib~qyDEzg@jbJGd#XwP|KQQ@j26Oup zUN}IM?*TN#lW)jhD_5N}F$3%Qt}xPcDh?Gnct$=mwl8BC=+s&DR9wGC;pht>nQWE6t=MtT3R6iaj9 zgDReZ{AmTC`tICj4bYFHHx}r^5lo3GCJ1vH6Q^v7wEf`gT2#;z{u72lctC41U;ifTL3+Y^nci-+399w2%g;!vHf zN2zQ6XgNT)AYa--%Xu$n8dJ7qu-ZfLv}_q1FtW@ZJzFjfGFecKC{X=&X=bsDHJ!vm z8zPU4^6E1o#^)@?3eRBT{ppD~YW^C&*cqDIij6b8pBrhXAt~M4G-uDghMJfU!jl7v zDv*r!NI(buhtRJw$>7WE4V>98B@tuiELVRFyOz#=1FDU*&`48~s@C3Ap#u#r=Y_<44sGD4tupBOg^ z9Ggei!b79z9H=M(=+#a>Oqvh{KME8R#rt7QHCiQB{s+%S9k!ygAIl}2h=sDz{l+>Y zsH|6k)|er=C(Gp(tm+g)bDq7nbQ*FA3PmrD4@cAI1)jsm(M@K0aj^ep&twxKRN(Q> zn7Z|ML?h1W!r?g$A?DG%_P~cw?B3zW4!XF3%blHT5n5^O~$HUN#y=C6{PN&vF z8_{1pN_C2XwT6hsa%3CPy&=NEFQU@Lde%rIk91!jdALlMpo;=(Fm#Iy@Xrm}T2E7| z!6?r8OJ%ENuf7twXqhaWv|K%xH6B56KXzknz3kZk7E|x))5JBxhqysMbF0c(RAgs& z+mXDDfBiAR`sQ?GdvbPxsGNAi?c|T;IY0KQ*tw0nvPHqx@uT?IL2M|%mKva{%8@li ziEG)We)daO>i_DrV>8x$*}%p2pRV|gMWC0;v!pkwwPoi|y+svg8C;iZ^S65@8kI$g znmm8Jj&xK@YwekZh5T}ELGDMTrq{cMxAp9*Ds2ZBasW0fC!~klPHp3B3i{I!!49R} zll7mccCssFr?5>LU38*Ep$rTdPqqe+T9~aI2@|*9p>u9K57|Lh{p|qPoL?T+HKr>aoR;{L zXl_4|Y1!!93>|cGRZ3Rf`4EM))~HK%EZEAK}*2n#mR6dkX0D^ zux&pMN-6X%3w@uNb;x-3A4mQuA?;lC@4qBjQtXZSH65FJ_-y-oM~?LNLfo6Ujq}S0 zzhJft(y^S<5?Cj~qVosxXMKN^@euV@6=Env3WV1Y9v}fQG%yhonSp`I%1&WEH9SBN z$|^rDOd1vl4#KFzbuQw>(3WpoxLP@;qRO4yQ(Osn+auzy=7?soWN1Cn37|iH3{NnhmS{Yg;ML;k#^l zY{*)hw-*!=X}C`ynz z1WWM)$CdotLU!jsjg6oSxz|Aa{*4Ov_H!zis)AF25pHYx_AGcLA1G7V6;$IZ)14}? zCRNd8c6~V++4z)v`)%CEg*1$ud%gE8F2p>F7-2JOY$9!xdn*l)gUhk0`4o;;BCiBt zoMK+`9iQf$k_!R96ro>j=2&2PRa@g33_REr+Kn2sR^;uC*V`iPE-C(7UCfg4Cj~JF zIa!9m642MJmci5!JCU>fNY7{>fxAh=dj&yc7-ow| z10Pype1&jY&{S|NWWQ>Rp>cj9CK9MxUJGS`L7-T+5*AV>CY#lrkWCM^V}{f*L3sM8 zs@X@}oEL)eu2}5Kd9q=UMTdos!7W%LA_cYJHu7DQv@)TG&??YvLOG4l9pW9_p{5}S znNbW}?sajgq(2il`vG=K5gyxU*A<-8TEYS`Jg4caS#kNro8)<%Y@}L}ImG#hK724Z ziK)g7x_s_w>)te!)_S1o&Jj82fr7r9vHMc^wohMa592^+hQIFQf8$>OWH=wIGu@Ne zHlpD85EdMndlHJo3h}Q)IlrmaL6n*x3NKz4C81IDl)7-(a59=3a>BREb{+>@b&v2K z3Z+#>tMtq@p$AOOXa16g<{R%EJaH`GgXP49!xV9`RzVnFfDNo*MAWe(nM_}wdUQkx z&|gR9TAwUDSG`QE9?f@MyIxU9YRJ$xTQY9{Y!C=p2zNI%75nJ_mJ$qa{MZF0xjlI6 zLEKFcE_8YUe>N7%N-z>U?0xr4QqAeaIom{4j`c@vm*$P(OV#jwW>W+qs*pRKPr%T* zB2%FFc{=`qJhd}ZY0m$U+XvXv3Px2OyQazXkMX;GP)5xBpj!Dwn{;_Qk2bBaGej4U{BYR|Jwrkm z^F~N|3kGu?yYb$Xge*ZYbA;971iSHyF^Y-b#>evQ(>x{U6Y_Pzt}fqqYJOkv=8!Od z3XFLlUBApVvZ~~W5dV+9`xpQ` zqPDLoTu2_%c0Mc6k~Zy4wX`|~p$QH(Q|Xnd5(y77k)}McfYk(x6rpv+SAwo=9&ox= zZ_h0Hi#}UH)S}Lxu|S?iS8XCR;*!4ORBm~=<(!v3J621Eg@o*SqcTST3t*ASO0yjr zTJ1TF4TvV&LLS3>h~ndcp-LuAcMY(8xvk{NV^ z%L&&c*7?RMSq)y+&40s}W&MoJmP~5^)V3cRCe8CsyKTwl)Viib=c(Z_?S*Zcl-X7jL;Y%` zbv2G*-uusftt<{aIq~1$9q#hrL;*icEt@nv+ejdx;e)sNsr5 zG4&4>E^h&GBK5JfOuR>}E*kF&nYZmGTD5MM(Kvs%0>DW3xaKIu&~9ZrN&fgqwOsWq zeg-67U?lqkZ8WNiv&4#UTo43OJ1N2KsyKk#B;L8^D@l!Z($CitWhfMW0C8A#1&13T zajlv|tsNs;n)sd!c^5*Csk!P(J-ULYDW)0_`&idH!*>Jb{>xT6`D(d^?ab?7LORJ^ z6A-4Be^H(!d_j^@p~s%G)jJWj|Eo=aFf=ZuoklhBPh@5RA7hhG#9_`g!Dtg+N-G$; zO`{v0Ej?1Zbg+3C@BL4OZnC!W`kh}rG`7#@5h8tKxnnR_U&ZO3i{P69o_wQh#99qI z$6a?o0&#wtl<0{pzfnV(DYyo21)TIq=uu?}RJOfk{Vthv^zNaVd#&^}->lAHR4tRL zNYoGyqaWkccVK4&-=S$>5Y%upF>#L@LNuZ=(@&JGuuYsB-j-(1Y$Pfv@v9$J+hhwN z$C3L5E>^W!V-%H3t|&xbjLyvxTDu!AAQMdOZa0X&w@h+X7e0iWhP)N(vAu2fbb@c# z`Y(5HT(_hYT|+pyk|h<1Iahq2Wv48+d5ZilW1jNNy)cZmVGj`^5*Qhml6i?DCR#yd zwF38$z|gPQ5uKcR@FCd76s@5T;})-M1Y2wT&byu(-`Dc4y99XTqgpIDE0eLF|HZ|8 zo`;2xgp*V*P|Y+dHE+5EdA6?k(~?Jkx;Cbj_grEx8*+xsXv9MhAg25V^SXn3^EF4?iM39ix7yW;Wd^y743AkE z0xG6SZ~*DY!#^~mX2M@car*M+Zmfk1)P9}$(_Cu+>`(&x`xY-P! zHe92AyGOF&frjsnunogy);}i$5YPu*(eGGV+ zc9vm#4me=bcu}$B{|d*tQ9PyR5`+^i*c%tX4w3lPOIqEYQNOm$*L}uDkU(uf>j!v> z@%3Up3hLeMRblXVJ*G|qml$>vk?S~~EFS9Y(3}-W3@5lhTQx^Ttr3<)K;ZRcpPn-~ zBauw_32gD*mH3XlG$*Te-Kq=hpC?vLn^utOelGCOisB@mclkme=`0BScAi zH=!HvKU0S%VM$KlI$cDg-+@gm>pZMLm#glP+sH5mF$_QqP&gzW+I}7rUx+el6947R z%gs?heYZD2rXcWgwp@TE2OLcEx5XV;{Qa!~oq6uK5637sDwIdL<*gn^5njyJ+s&4W zMLGx=%3&TCo5z(2udnSQNqB)!>#rdF-!ZM&im946xpKiWHMPPact373ra$|bu{y0* zqRn%DvfPlzQ$pF~8lV{oU@qG)&NYa%7UpL!9rAF@q}5H2H`rM2k^%md)}?$pC26H+AB!E0bPvq zr6qpS)%N}z(1kTd^=h$=ND24X;`{E}L$e;>KyCcVPCjp|z7)%&e#GWh6t{3?)lBwi zi_W+z&j29?p~^_#Tg)`UdIeG%wRhyl0>zjSl%~y;Qja5-W8lWYm=l(yykFXQ3H~q0 zjAH~*Q-xh-RGDuHuRczUAOan<|FIlnRTH{)I+*KE6$BINpL|1JF>xPo?>glhGKrw}M`m+t#dUA$_~V zf(?s08`Ha6ER5?uR(QzH_-?AbwFllerW2A<4`F;bZn)`W4JTYR&N|T2H$Pm|mdIaG zw5sA^RwX>^rSUBC2e_z7R;M2|pwI>{a#f@?+%uE=xhEq;Lm+>ohb`#JT(q!JUHNS) zaDhD7Q31Hf8BF{TK4xq>Oi3YLcHjpN#0}#dm#|=21`SVPr^|Qm%~A@>ERamuB!O$K zWlttyafGO>0~yb~50WrPC?(<*wutiTEB$4>X_;>s?xbR1E5^PJ5`GTPJ|GLz0E~HL zc#g>DjZ-5gSmhl_(wBzzVuqZ>Wo_vK1fH_~zDrIx^6REo4Im4pkIa2>taFR$QjR5*TD1y`L-c*p%I=S4@V z^qrf9jc5jnrmjM~@Oah;O;G80g{W97x}szrSFjUwMw({kl|1UHPB~c$Mq1eJI`soeLJ#l)>!6TipK5c#VcN+HgYI5 zm;%u$jC5VVA4li>e7hsdP;`pbL9|FU7nhz#MmzU=@3^^i8EBry-4>wqd$*u_iG+z%zDdiGil#xsf-~iDn4|q3fw!` zSpZdA+Kn(sgZsA^`kX_$<+0_t&3)=8XfmiUu3mWTYTJap3gD(qtj~<&vZ;EW0kv6? z&+v+hS;!yaikEbRVd8SBzNU&f=YQz9nQ<8qoyJAvr{sUIs2yUt>{1BMR#~j6Sl^^? zIEBtDNK!F^IBp3VEyx8)4pb=>8dR+@ViF-kE&pTuuoTCso{x--PNCi@RJ&!cDfqtJ z-Ra->dU$j7dAW(JIaRZg6wvvy`=#|VfBr0ZKO7d|1m5%gESga#5wtB z;RBN_dfiL&qZxt0WC{{81e@)F3JO7%$IJt}{2D{G6#lzfU_^i-0UNP9xwo4`Gol67 zIT6MH0YUexHl3V6ZJ9i{Nelu4tZM9q!^bAopFsS-5;kK;g#o8!I(_R zsO!fmd)8u+B7A8o790)=s>vx!vm9^?A&*{iu`oVxnkV{?U69-G=pjM|$$%H^0&eUosK{qP7+&BvJrcsLCtzL&F_XOHNH>J+>=jbkT!Sz^TSEIiBb!rxsJyeQ@scrszPx`o?vRzb~fI zIR%Y|4eLCiS=J+KIMk!^8rRse70m#{*e29*Qg~Y!E%8u@+VD=-%6GN>4cTQm{L-AV zQMlX5_@l#cU<|3ug6xcgqgG~-m*1PkcDFGi0(98E?CLIn`52_riIxmX4xMZ&=oxu& zN;$wg5z318wFmHX=$y;3)6#+YB@@5?=`7vJx^*jt0SB=eByvrXy&{*5{bHevzI}X8WsYt~IdU=Zy0w4u1b^aq3Kb5a^I9 z%JUK(S%DgkSAyiwP;0%8HAi`U947>>C<^EBBAPjl4JMl{C2wJ)Vwh!vHSd+F;h!SW zF=`w|;)(0YX};)d;Uf)k|Mha1Yxq&w2Deyg2$N8*d%DsN;RW-CmHL|{oF~IiX)XmT z&z_?}=j+9Z=SI%k&tCY#9E#`ZX6p9A(RQ$dmkoGL;-)ql>qz3~QA*I!MVy;B!c_By zeo?a!={LfFpQNO0NgvM?Fa0Ny(_oQANQgpgg`i%6h`@x4rZW#ZE4%XURTH9Fes8uU zhAK~PrgLlr88*_{M;XiVr-sn7MceDC6MRY*kZ|PLVOOQ8oZkzAzbqKEm5-+TvQ!;-LMnP^6v?UI*nW+q03FUmVKrus;WNq6OGCkvV@ zi?Flrb2)L%ZcmpTPzks+^_ohaaHM5SVm>``f|F5s-OTP+!E9KIjK|uv>DtPTv6~1v-n9rFz6+3H}L4t|)ci02v4|5(0tO^&p ziZD^j85f2sIn;pPrNEw&;4dgg(Gt;}Uw$?G!FryY`7q;4Ck6Fz8Y!1LTPc(fM@0Gi zFTw1<8FfMTyA}|xsa8S|ZG*dS@pzejOs|&>z6=`7VY=WZf(Xr00BAU7$}r4fg~Uah z{ya&vdX+)%$rt%8yb2V2MjWkxJkZvciPgNN7Azs566A8L8ucnGHaB;5sq@kl_-Fld zS;27cJ-D|AS@X(^`=$M5-m-Uf%=x}b-ib#asc1W((5mr3u&( z5`Cr?4&`&IsMZDYg8_b11$`+0qXZq(VihpX_(#Wdc2W%d&&RI9H*tiV057@4SLpQC z72@F~#gcEAPRRv%1*$0?-u;p`pz3ann}LUU6AXLKO5bi7WLXsoP>!SP;=UM}i7#AK zxtj0{=%j#s;}NdZUbHWf4}x1kTtlqp3OQ7#UX@}!OB7D6`hATCvRw|*rGf~wjm-8I zN*?iZI%lm9Wf{^Blu?GK)Pc{|5|RZt-8*1%);-k*P4$ zC0>ZJ7}g=Tr*m&tY4nq1ks0d6e3huHJI9XeAfh!v+{oNV6kBj|5vqH#D-9ik&Vv(X z1fZ!I3*3VbAg_wCdlvV8}e99*GzYIA@d6ZD|r3Wz^y78;togUVdUHRMAHsX+_Y7->AZ zu2qeWF#-()dagPQZBM3<_49!PHZ0Rt?6kpWmt~hkh@Gql#${dznyo@`5STKjHsV=a<5Q?Ss4u3*jw(2D;W()Es7JRWp}0 zDpd?lMn8V!eGf{&U{m{PR>e`?YS*;jBK!grBIX7u$!z&gIN`!!6m_m+gcL$ZN_p|& zz)Pa2Wjj_Bss=cbWeHZ(xP3x#3=E=msymV%~AnTcuS1el#@R6aIdNbKY>8Adf_dE z5M-o;)-2dN;Q-id= zSX}9tBg-~r%ZWEUozR#KQsbs66e2~00z${Ifc@36Mp74)&VtlJh(id*3oC?={yUs- zna?n7#P<97ed+mYW9w<}g2H|WZ<}EI%gKXz)DXY=s_9Kw;|evMea2;`KE6?~32qvf zhUk72*Ds1Y9Z;tUCb2UoCGo16l@O#mYO$d;g*lbk1Z+fEGU`U>y<|QU9<_WtLZK{m;*Y&V z(E(rN-0->dSiv&TvbrSc?RJc=UC~Z>ROF%@CKX7d zsvPm$J6cBA~8N$R?w$N7GX5K zESA)<-WG5iGF8N|mqHPLZ2VO~q2eGOAZG!ZISa?0Pw*?#19h4c$%`yE$ zdJ`al(GU4)wNTg6SBCPk2X^~_y-I@?6($J}wnK!HD*z^tGRa=0iNb7MMFTa%<)anG ziWb3EHGahSkY&QpIij^tN0Kq>)WhD*e=$xZ! zl8LX6hM~^@vx=mui@lHzj^JuHiBDnpTm!!|&m7LRotE$SE=m!YW0Mz{c@Gr@txkoz z9n}nsR?a*2^e`u4fdfr*@OVoGEC>$zrbVc8qvXzRrsh3))xcBl>ypH1cOr`XV^phU z!KRk1XKk!9zUYtZ6<5 z6jbWF)w=Ed(bwGpz*l~+-zP6&?mIVr+dJEQXm#Sx-UFm79hF~c-(Dx(s@{!1^BLA( zWILX2&V>le(BECC96C-O{|L)p`mYyLSj8*8^a9bZzchNT{oV?~(Xmx8MuFdD`h*9( zs#`@8C6F9ZTP2-DqJ@UXGzgpsjbBM*LIuy$c!INh?uPCZD!8(k-0ZtIsV;g{IktVz z>}sacKJ%(Ol~%TYKX-K@c|#EY!v9nI%)v2z_4bVoU%rJ83*o8hG2j0{t#y~THj{|@ zd?z%5SZngH_sX~|Ev^7a6f}PnWs-3xNcu4{7ttg-DX*}P$5@(YDqA9;29T+aL#D?tO=oqedJ-;| zjQekT{5IzM?nZFo@NyBE#{-fwh3a%0wVxgl%e=> zt>xD&Qpv;pC0d?^Tibeku7-RdhyjsJNM`V+XvG;ke9A?=AdF=$;bjtu62Vy5K->&) zE@pEQiBg-Wqf9s7s{de>+&eu2SZ*C$X=o1kCC!(36rEm?D=5#YMCfP|r05Be^&MjAo|6-;K!gm7 z3Kwk`s|pg`2>Fm{e7$}ROEqk6<*t&uIHCwUkD0J|;D(I>B)EO(rGlktbW;o@yZ?!7 zbQUjH2#Z{KZxmAj1|nYG++`BS{|ZeAWy0uCPTyWT4h7gaC?NuZ9?1mvwlPpFC@8|a zFr5`I?9nT07L_w!$U%5vH~82l>oytWd{C9btHELi%qM0AM0o)F#l;yoKClaF0>+6` zb(C$`O-Jg2CDbN>T?^Ef8E)M~K&dGrT|+~TXt-KgrRgAa#>jJlLNi80*WW`ZKY-vP zcDlT{&dE*07xc<#tA~_tBPZBdmvmq%(V8ZwS-CaTO~gvVaxS`t8Aba$^rMt_w!p8y zeulAC?|dCjML9OgdN&cR$hW;U>3j`4`??RE3e7j8C-6{}=LoGgG!g|lMwHD^(AxT!&sa*LL|rM?&x+0(&tB4j?m*3ABS7%+5q$XCG5ZcO59ueues*gLXf)P>S_k#SzuydWeef^9^V3{H< z&ZTz`*Xfh7os`baJ2~Rkm_Gbwc+=AU=P1Wo+UqVog+2paYAE)JW!~K*JLfR(P5&ZN zxA9H#T6Uh)2pqFaR*6oXIuN?tg&V2T8k}h+29mBp2EwZ_BCMS-!Th79KnToD zLAU>j>7insabo+vHYhj7XQ>56X&HHQClzQ?bv3jV9N0nSnud&vg@aPl;3ThAsuLdl zj7&-0B!l!?iFru>MjcGwKLRUL)4d0XvrB+Lv1a&2ec;F$R;Pwth@JtbrdXr{YE*FH zDmm_uUvxt!!2aMBlXo*yI#B?;GGR)+*kSyhuh=MtsJ~$tc{zP3!9Pd5$*ThHXpt=qG9^Ji zn26!RGoQ6$><5-4@?p4w-p#=D_dUeim~O&kVI*2t%X8!*J}iXPbW? zW9G0#($N>AjN=W4S{s}n6>W({wseou9mln&Y-SLD$ANADL$yF6+u)F{`oWT>|Fg_> zA04|lSuL7j8Yfzci46qPe=v?WBx|X1HbWdD75Nw9v<#j!z&-3EQLKXi*8z;}2FYrJ zW3ier%h>e=&=p6>0J3$@<@S}|=I4W$N@-I)n;5kj?0cZsGlLj~5?Z51MCvYy?*;C_ z;II+jJgs>6dm;fcJ$Iq%5k+*AfX#_i0r$cBbdth|{?j=ZvW=cJihxV=fG;K})G7w6Gyc3O3Xz&wtfQq0Se88m+$Xc7}>j}b*9YU=Gm9r6vl+h*!L2}SYq*I}& z6kn{lUdPl->xY~nhN*k&B6-xlCaNnW%PXxLe-xhVWmTB9@9nNTbqKNvsfEutm$8k9 zHS8e#H8DC z46`QENbtVytQzt_E2i4rJbpl#43i_uMjNO4>RE8;_5FHeY86!Ut8m#*a(Px3}wZ!|E zPg368&LM(EPj7nVMbMr4R@v9f?Rc>Iur-#|yVdHUNXa+TW6?51somg{;SGh?c;zg3 zOe6P$KvV)#bZx~%%HQmmGT$xo3Jr8ZPiZHngL-RWy8?FdmZ7@-T@N+Pulh4@S`x+- z?IZa#E{kT4PoFuIWok9l|TyK!UP)^W!y zm6H*R0#Hk|c?d7l)08gDFW0?{wA3)Z6~l8?;~s1*ot)gGXL)C5@R4 zUXAyvVr%N(zBy1*;6d3o7~kv)J7H{?&3qdMmw&@Agem%gj#@i6WCIC}1v!}uQ($PI zZdTkHHb>VGPjp-b(dN+LBWfJvTtYrD=galoRwro2 zZj9>itAYI5Z0^j#sye_;`zNLuBGON-gQC7S&2V)^8|BUGS7S%tX7iK#dp#5LwP6|V zyB%rYNPQg#)x&tM=<)>hDS^d9xR+aO2Z~vwDJ}3IR2u_3glQ)M_F{ls2Z?(p9qX5S z<#$&h^hLBhnHkc~B%!SHc$DlFm2#P3B-m(7SE8{s>^QrgSe%mu0vGS^b%bW+_$*;$ zbu#gW6491=@^ndVS_Lg=k&QOfEzljci+<_(n#3+evA}4kjq$MV=5fZOEK!_M{pT^l zjtWQ`M@h{H>wf7?kl++RHpFA#xk-(2*rx5(pO>^#bZ7m@TUj2CuE}d)2rA;}+|i?X z-XP6uH>SqVs&$5{PCnXemIB+fu}k2X2s3NzQ1hE0e?JluEljlRAGz>Qw*JDWqsdbQ z+f;<(1aW8(d9@*3XFQ;}AFPYvZKVJ#`_tyuzkJGz-d3*_sKOT4T=%hm!XrD4{BNBB zi~!B&ktC-1Wn2!JbN561mTQ*vJ%L?qO%&}u@uR=7fy-Wk7%0|MXFxfZrt)e<{-T+A zEqxME>!%OT2l4ADNuNXw6#u>I?cCz%R)@TlN}#y=#oWvFzs=wTDwWhyxHKP7sp|OQ z_e0@Gdc15M(>Aw0PzJcjWY8{><_&4j8=WG?B`xQ}^5V+-OO4laGAH8 zr(rploOJJd`a&JspH3bx-_O@@m*M|;q;T-*4A2Ox7(cf60Yf)Gw)oIM`rmPBJKuK* zKPv=!-z4KdJ>Ra6?lCi2+kM}+eh*DP6#pP-ztHsduD|`GL>8y~g*a6I5IQKhncF_50(42}QaJQ$Zd$ z1%%4AX?jn%u#{yDPX_7W7PTI;Hfor+P{JJ1wG`4un<_KUCKJYk8H~# z<0_K@BEB|y02w|M?VX%K#GmMve$csYV1V0pG!)r@llMLZ41YE*HKL7;1|_3ADy zYkvw)R3oeaLly;w3Zr?T*hn_*06e{ML&Z5#9f4NW7}5MoUrUkxwU4y(EZz*mURzvv?v$IYcHh?Lz$k(BeDMyd34|!SCO3jv znw4DX{8gpSwY6)zQR(DygRF1lC1VS&DDs@~^0fPc(H~|ZJV#t&MOvNmjcNc`PhW+CF1&)1&bDBXmbNcA7_8ZRNu(;{Xt zVs{aZk{=TGF{7q3Z%_&$NTlPanTtVx;GR)a6XvAD8buJTWx%~R=+O(@_>F*4a&Edt zu3YNKUET(k0on+A<}y6A<8~+KZKN{)n9{&OUt)CXmUr+NlKFhfZVx0}$-lLNFBX7V2%84`$VMiDOAxj) zd>fw#NQ0$dZg)s_d+dAv{6qx)40gUpEAT1kI^vnfO~19^TYz`h-6EX81V%#-v5~H( zZBttMlqT7wNe`gcjYzaW3bfiN1&uyb$|vcf#^fM440T!W46Jtsqdu~~{CsQKtfn~u zLDw`Ap5xL>I}Nc5mj$Eo9hK|o1*_E6^V7T%>r^0xyz>a)>QR4*n=PxWNCKC7L78wt6K911TPy%IQ<*PFJ6W2VE&}hi ziGPggNhdS+0`bE7n<+I{qbcG3eywccQuYg&2RhpHhP5#}2ND3{>7NEN{0>*I!!7`T zc;`~i*rGB!-n1&)<<0e*7<@P=7%^@H|@N_@)KaN>3Imm|mU9m=$0>*N~L=JZud;w6wIcd}opBc9Cp6o>Kqn$H8aOH^!MjTA_~|OYsXR5th{TsiwZuG|!7ok!bky zYiktjtA0ii6;n&`@QY=B<^#J$W_&R_t;K}bwXB8uhu>0%`HjtqU-{e&e@7z01odvH z{8o}yG?7&Zv6ugyYdl@i2crf7hDm#F!nMnV?Z}-h5Y~u3t%cAY-dBGEh+(cU2AL$i?DqawYibnKE}${|6v{7l{+C6R zuGW?-}3Y8ArqQbT?JCKYiWLvHgJ703HmCCHk(=DJ4mlcSV`4*LqeUfc6az> zo=x8^vLHsW00T$RzJ0jBAp#;UZ>e8gAMMv2y((v+%uO0Fsn(V#dMA`rqTrM zif2l(!av*eaZ!6G35`xLA@!whv2su46m*@tw?Rfs+mvIcpUpMCJCyH9z&)A@)fad& zI9idIYAW`pN=jvLVNz#V7)qC0=JzF2FHe}bDcBvX4=qqLkGv^Nr>eR|=%(F#!rmpZ zzQXZy`SbOmD|XdM`KRI|{8|Ww55VFlkkQjPnAu5;@0OQg_K7I$bcs>f?d)eu4=H>-CS1eBnNXLS(6W=v1uYL zQW7ZV1E;GrNhBkccz00i9=)UACP7x8-(}m zW9cvfkPXd${?%Z>+EL&w=qCfqaft>Zla&OqVz4%Gp;Nt8Vw|Z-*uiuyMKe_AVCInQ zgG>kU&_bcktK8_IS?u|8)T_oGoPeUe9}CQl4)O9g>uR&6^xi~eQ}kKq&&S8dfVEEs zq)Dg#fw_gr$IA#4A5=<$?V@L(R?hCc*Y*Sgpde;hC{(Dh0@+ zWuda(;ZJJK%5GO|PDzoN=pCLxx6%57@zzc^{qN7|KN_DE9`B`ht|7IYDz(E<0p$Y% zn|Gq|P}}6iVc0Yx_AU|X9^E>}9g*cQh>C=Sc@~0#j&2+~63Ffpz)^#oyG*ki>B}N% zfB%`jvv=8+Nv;!*L7fCg*)bS%ENr*T=;vvZ8DF!AhH16?uUc`~8F z0!~Z>kebE|eV0zXPW@`Np442F6zR6cz`2LL@q06m;+qgj>pVnl)6zePYCxg(1pI&k zc}#&lso+yk-U!GNtK?Pr+?JV-xemPeCfU&rs)z^?t!_W}rBw%nupenVk_`eqmE(g5c<6pXV zW@`deW*D$R62x!`R>ZhGLVQcn$;*ekU5&}2sbNiu@SME1x}`J-V(sjYEwr6-LgCO{n%nssG)52>3yD=-e3>TdOZ;OEqUv#c*#Uq=Sx+AuN$|tY#&qd!tssdmeAQS0aS%Y zSsR2IA}z$iCey)O4H7BVxKFi-P(Y?6C`SUE9dpOIs+I$Bu+TP6Y!2iQX2KwsjH0G2 zI+hSOUL24?$sjz{tuW<9Zi*D`R+gO+J(|X;9w@UAxCzW;pY~7+(ACapEJvFRxYj+e zc|7DaAx@SMzo4sPpg3Tr^-Ik|XoWJe^@IY)TD=;TOv7vwvvCR8`UI2t19hMBjRZ;j z#mV0>3Kv?R8dxtYQ^mkA8YM%oxjE1b2M5hM2%&2jO`1Yo2~}PTQ$;NU03lpr5+paK z(8Ns1RQsJT%CC?T7j<&su4zuziJ~=PJEyJ!03Yz>g(!r|R&RkGh7Qge06vXUW&j`R1*>A=XfW`29mZQPQSWBID=y205{_0L zJF<|iNznReqf(~I^7kMsfPr)(DD5-N(=Es9Cy{O0_~RsuIV~SYq;R{Ce8wqLE1E$p z6NTR(7=MTBqFbybc^Im&LenQ1PXuN@^aO@ThD0dME|^RjP=;2~ACZUTd1Ke0g=`_0 zT4F?=qMS^H!-Aobn!aoOuL?RFcY~4)!HtCTL&|2bQB9|$rM=LGJ_%?TQVrZtg@uci zMp)_LKjt(9`csuRF(snk_Vy`` zAUZD8u;x=}ry1O=To7BRS>wJ-=2^?eLjkp{TQG<)xlE+j|65-GF!GK85>%jZ%5eC_ z_=G&COvqIco=9J~%2^y2&7Szt&)D zCgb_SDFob3>?4vA9Bul?v_ri^VSF~4zJNKjcl_k#K@9p#UR2+G%wJW?LXhXw+r^u7e7AbzjXuSUWPluO!DudwX z;Wb8Etu{G+#-5WFp|vIOXU)I{8!U%xX(r$E2CIr|)SJIEh3(4MHd2nhrhG*NPiVZZ z@x&<7@B!IHB1zH*O=qkmfV2ED1$bTqvZxkYQa?MF`<3&3JVMMd!qLZJ4!#yg9{?v; z<069bMrIPD_*h4K9&usT$ZPG)sjifQR{;B|L4H-q+Vns?0rVA49>0DGktgr6_U%C<&p}YwQT)mSoQSo+!)lPxmDrdXe1d-@0>yXg#bIp} zDyQfN$$ppA@EvGy@OU_CKy-ni+`o@YI-4dM%So|PoN&30EYZjqgfEBmnp%rEL+qK> z!ULeKh6b?dGQ=z;HqJtB0g5Zf*l3h|$$L-1i2!2~>Ukj_Ry-t_E91xa0Wc+pHdOrz zvua%D(zD@8frT~)b!`OeifRX4^}@utba3zoTv+YdLd1ZniuGHX;BLVT{Jt)z$Ut&~K!= zYwfDpS-zq20;j8Ioke!cSAMHxpJ@BSKsKI9oXWV$P5gBB_XrIyZnq5hUOq6HDx`E7 zcCuo&?&z)Y-E71VVuT|vYe0M*HFv5&?gJTZQc;Z+Wn)RtJi~x3UXuT}D^v(nG=xP2Z9;;jO|ST1tvM>I>4h7<7fYMZtM2 z55rr8>ZXq@qjamrcD-*zq2Yijd*SnL2yZy`&IO%(8L+iVFxq@1O<|6@V1AU;)0-uf z1%&^_!9k&_bmuDdS23p2jBmS)xLfPT6H0GR* z2PNxringeNARad}jRBQiG%S|9$2N{os4@lhnEJ06Y#?k`5Y}^uQ4GM1b*l$^pK;eI zJ2v#&Dl@<2AiEpFDz}!F^ulQX%_%ck3W9})77)WHi+CEfdAB*J0$T=te+NI+FHcOdzr;wHQF^+(AHMxw zj^7=a#1kKz63;0U*E<%iXNGd%#>LfRJRCW_$ZIfbWS(LRUQf~ark-LO7P>Uh3sDBR zhsa6`HAeIzR2-`+%*CoBEfUU)rkYEtLf9$`yjqWP=3OZ_L zO_`+!n9TTI<^#krabNIk{rF1CVPsWE(o5_Z<-W9sSR*1{Q##e)ybb@}%QiVDH&A&7_GVXu0DWm|>4ob-VB}Ru zvYH&}b$=lWCSzu;!S11^fhZ}*}v5Rmro=PV7R zQ<*(5@}>2qmKgtKl-X49rKF>;wSdTH4cG7g&jhpX6(5*c7xy~5@Xz`7c(MM*2O7EO z7(jCu=vmW9OYXte+cx~u(XsP&YqoNssK9ujLu=7}MB3q@Ngd$LK! z=q}wpITT2B>k_nk*50=OmofI?uiGAx>3RggWG6=lD;*%|R8-?R*Q8x(r7x?;$)i3; zQwgawvZa~>FpC5qH)|@90^05Oc}g(kCiY%e#YXtm5m}KQ)aK9 zk=W$5rCCdyw$DIEbUiFIWUbXFYI7u$-cWV}97m$+#cl3b^@4u@-Rre69GXc|HQcg5 z*i7TA{&48>?uVN^?frL+Q=-x;WeoXg5%5;%4oLLXltGi%TUM_ja$xF>Iv(;5~t zLO7I@`Xv3{Bg+eLI)saj1_=q{%c9&HjK+tBsp2ZY1`$%ML30QrR8}&d_=cV(U6ZhC7BPv>UU2c}U=Bk{iRG)RoE7 z)S(;DPrI!e`z}{d^_m3vkCgx=O}$l<2_&*R7~M#{2Y841))>}XNFIDP;rHXemV+!J znh1mJD&j69uxW|aIXd|LMlj3-?q`P#w#A0rh%dVp8BavXxAscxB7wTHY4rYZ;~YU5 z&ps#4m-BFV){JwNc<%k6LNdvM#xqv+moTtym}LMpk9*Q=rK+AZBMmUzGHLn$O z`5^9ztD>Zr1TIkGFL)d)DLxdoA#A)HoRzWzDuP)3?AH^WSd%?PVv4Os@I+LRXS9~e z@`uyl`L7o-;SD(plbRSHaE|=e7(fD(@}n%0S%v7j(NDMTov8xX8da`I?1gO){ibb9 z%XQDi(T-y^QscqIz)<(g$4K$+c=&B{XVU}!*OX2KO^R3)zkfdWCI;!qv{gD)rE*#+ z<%ZL|W1@l_MoCGoE_SX+XzB4>qeo>uf0)VIP9CF8VPA15yXgNjH4*b)Ep@`0@b{pi zR+A2vYet^bPCa9imTnA9?wO!}96f9InuD33YPF!ll(=$ihNE1M`cc#Q-swkx|NUM~ zc?kQ$iBb#jGT{lx4$iBBr(CkemyWNO?|TnccE*RKUa^K+B3r;$Y!Mu$3yjVL$7*F| z_WJ}9L%hOQd^AxOG~GlD7D?F5KFOVe!{LN5@(2XqKm!8duhN0n@vOn&ef`4Y_D`K@WiTMte;LwSeyd?0`86z89uy13 zs5c|@iXd=Utad{-4Z0r~4Auq-bCsR(_Oe34JOCwM+bMAieH9O48}&<|_LE0k`w90? zo6o(b8B3lWCrq`30|ffHD1@>}5fk(w^-8{XzImt0N6-KAvA$-=Kx-V(m3hc(DClYC zIeojAFrF-})99x*zxFxW*W-UIGwe5RJ>ApXeZv@V4}6zrXAVsYcySH zO8)--caaBYR)e&Ek0iW*0Xp(1&yru}dyxzULpfKku>droD8X8Ec^5&V9T;3{AEwNivepMG#4-S54NBQiwbItCu(`Zv2vUiFu+Mi2c z3pn!gfH$Lc)99s*S)lX!leFn;fs(N`hB1G^>ev!f=@z3?hHL`w6w`|ksc8jq=tMPnk^#=G zi-Xr*H8{*nT%P+#M1}pPiw*FK2ZlCXPbS2z`_Nl$yVB zfkP3}pTSqER&jL`$+yyr48a zOc6u}fpfbx?LeZwF5Sg_U+REcbf7`*AtCm=69)eQM%+&dpCq}+dOfj(ut#fAuw+C* z<(42m-?eu$*Phej_B;-s@9cw{HoE|V=}|HY5;n8vWM;A{WTVArXGWiwB3?@;4XV=u z)ARtXyTvou^X%P+5<5%~1n(JLL*?*MSb=yS;UlBo!(t}n%7*$q@!DcEj+T%sktp=s z1pVkuI(yS0*z+f_%`cbiaELZ*63C>+d*o>K%QOoMUij7ZiOZ7eOeI;Zb_xmiwU#)7;A;%EiWmX3XOS;Uq0othBc%gX@mi0q4u7?H!Tv1) z%rYE(E+@0WiUq{P9Q(Arqv(Q6A}nz(HR(8sWb#cs zk+%-8!AyW!m@8b(DNqv{PAt$KL;C8N0qX%ek5xAbj3zWkwYUyn8)=pu8J;nxE**reUKI6k7Hb5S3d9KSSaccbgjxuav2StDX z^B=Y}u-{^&)$maKowx@@b%Rm?ga=kCq;^$Uq7N9EC#dv2Uh-jX9ubvD5W1R=$oxE_ z0*+P~SmY&fske!`1+(f&^MJl$4@T8INagvf(baIbQ&Ce-QvOBx%iXo_=Ur)7*v7|H zrN#?^y}kW4zTS6x$NR?8(?rkr)6v^hn8t~K-q-i#`TJ5B!rRS(y?e*i(7^S;)yLJq zbw`-JeXGE=p03@Wwzdwh)h~xuo}RXj*FA^|pMbsAV@>S}n@A!M`+4i~W;Sg3Ckv1L zk-yq-#(Yx>er30<{=4?w13SP`J-+#=NR1B4DR&68&T8|!A#&KZ+e1akV5u2R+(pm# zHduK~5Bb7o4oR5jh0@t2nP5Ch%Vs&Y)9dxw^!OI$qm(DcCw>>ki$IfvbhqIkQs8?V z&>t|6&lud73_jIeL>VDTR*7xbTYn0|2Uhl+3DDF3KF$$eM67YyOf(AM?eg zNWCpiA3+(57Ku*qT8ozWTnvy9SRd(k1eqG(^!og_L>CXod!aFE6IXuvQ=YcN;KKHHW zCL!3sBb>Iy^s%f_{1qqrvrCX}G*-UoyUpz~uF1nIKT>5nZLVxHd%X{MWxW{l2yH}L zb!MUcdJ}PX=1ma!E9bd@6Q_~dU1D#u&TuEEEGFW0O)ASbnEjQoeT4$zYu6#Pvl)R) zNsjgR_rOA<(eBuWW1>?g>e#>~?y;DwXjX9Zs7px+xybS-sG#Deskn^bNt{*Q3Gdj- zm8KYiH`VV_P$J1Y5xRSaQExEuA3Jf19O5+rsi;?umwqT4_36p zmW61&oavJvhUS=VI-OM{VjHJC)2^qpcC1X+m2=7iX67CV{Ym1b3DR`}p+8dLsWi$T z@J-fwI<81=G;$p#kCp2GrzNd*EyuD|dAgJ(!n$VL$foKs{QW`yhXEl3%8xw@$@1$; zAEVYJ#<6G8!*XZk%KXERVxo&T$Q@kU*4GMv5on|cL6&c<>4P2bW&o0O8;nbQcvxN+_p9r zrNUx-$yfXP!*d|FtAa}bjDRZt)BLxD3gH=x%6Wzgrc{aOU*8_8%=mx2N1Z8dSCjXz z7UiLRm0CYjv|lA%8w+F4zqMNDtgi4=-XXbJ;*=hpapbTn0QLZgT~r!*?C<+t%Q~){ zTZ3hD?NI6sX2P}9{D~IWxNGS@(Lin{%Va&8oEKE$s+}7yEq$M00z^&(qheS-zhXyE zoa;x4bklN7KV9h6k-s}=S2zmS{c{xXlP6G=9-gMKwpaEi>ByxETTTiQ?xxsI^m5E$ zDn<#8KjnWjk8DfNN!C|!Ur|PO#=Q*9%%9V)c%M=G#shWHlCpdlUM4Cp2b%NjB*MJ6Fm1bp@psY-f1*)nNgVs!_#iF04##tG%cbzgv zI-WQ$3se>%5~f!!?c8dv!BcuAqTYC*5L#YJYK)zv+q=;{h!|^u{$Pr~jhbXG;H3F1 zE>PKfT%`nz9ECFo9it7DN#HgLh>Fh8&u>%nq^Jy;M{*Kp+qf%dF3Ho2YvndeznAj8 z*gZu&Nvxjc(Z=hhEn%tS@SLBS{3q{<=TxS#b5D+Zh3ZFN5NdlqHo{&gdM>Z8Ywc=! zzQnsxcYH8d()3iJv>E(36xO`%I(DWSTXxd`GZX}VCJ26N1-d`tXgGfE(=40L9}nN; zbS|$I^p@Wr(KiA z1~3saIXaG!qG;1JBQ9$}M8mRU5Yc5|5oOKV7MZ5V;Ku9h&mJL%QJhL9!HtwKKRBlN zPPSVJ1bF8}Y-LL&OxWxUkE-JBiI3JZ6E(ty1J2VZlZL!MkdX^rKNOT$a5JDoNp z4xq69dn2{!=%jByBXi#C7+0EqSd%tvOU>eOt*5z-<@%B?1@~k3XMhf4K{$ZMxn~~BaxJ|u)aA?)38tz!t!li~&d#NDlTH5*UDp&|SJ!o8+qRt(+qP}n zwynla8(U4o#?Fb|IBA^5=6BwU|MGvHeYbD+UYcW$ImTRg>7mK<4KpTJDsECT)a+Q1 zgG2O0?MpGdUa(T>jJyCGV-2uETc^K#Y>!;}P*Uk)%FT7kZpDMOlKF!IUn{MJ`v-rX z>+~;rj`!WG)akK*m}Y-UkyaE8#`7AOqZsy@3U)<LibbW5X_ZZcPe_HQ2gork3~QI+ z<-M@SGyH+hRfEA51n~pI31a`~?+UEpcAL@5_0Q%VbL2D=aBDqDf^(xlk8R-Pha$xl*AQD1*KwS$T&AC|Sf1`% zW_8;H)#sAW%ZH6tVeu*TlT}dhT8F5~X zi=NCTOB4Rf?*zd&gi*?IyW^o_DB??D@Yp&i48z}@wCwg)y%WB$^ zj|JIu#N1{&d;8cS`a(-JMm+7BXlp3O8Zu$~RarqU3gXl^PaAN~pZZkgZvMmPsN_>MqwAeIr z1owp^RjOx3xbOohr}CDB$##i8jxhT<0Ly|~u`%uhZ_dqfvf=A9VM+Opvz*7KHVkG* zp|2GkFU6FI{?2m}=%~l$z@HL|$7Wd_HZM$DBm)o4Z3zorL563lcc<#o!Bgn{9#F1& zEd-BAEs`#C9mj;piP#X9KOkmh?5}0sLw#nB$6Zg{D4hbSo&48y;&2`dL(a)q_jnDn zx>5M@84J1|d}%ML$fHHwEi-(`lbK=YYj%5lc`Kij8%6~N#OfYv#{|MO+fAm%HwJ^5 zO=M@H4p{B=wExCzTu>4FLY3sxy2ch37m~ zyBvrGSfVvZ_{IB0M^|1*?}-`Ns|?b?(|$q9!ZWIeCD;yE;^8!8-{PCW4|eIEVb5ex->jD%V2m%? zvF-L3U19z_yBD;pJ;aA;SIR0R@y}WHFj+CQWn$CrPbGaq1HZzzU?~sLnsCMZPYHJY z=erNP9VPLOZ;pk3Y1h2u*66ehkKa#+&q@AN@r=;Ir;k?04q&61z-Ci25ypH>}rc~v$ot=Sl+GfN3opdGtJyn!P z;l$G2drZ!Hk+Uk7eu6m)A*fDx^xs=)ve$%{ZExSBB$h^(VnI|2)XY%0&7EBA8|f=a z7s*aJrv8fSzc=OcL9R9bs+D=6NM67$GxF|xT!b~Py0iyt~4hiBh0Cyn|G_50LC5g{6?^GA9EMp#`o}^&HKpBAq1lJo+S{!7NQ|k56l9$j zqV5w1Gd=ZwR7ca>-AUbJ9SZ5-+M{(Hs*F#$#v{3=LdwDbaO1)0wE3nxaaiO(@b{6} z(Xs{P6J!R4dw($oCahx8r>s(4#THmhWUm+_G`>zvzP`0G#Zh5Li?;Jg@)Jpn!osg` z=?+_5Y=GCI$#@F!GcbB;Qk+y>%&EQjdM*j1_1E5a@{2bUh3XowieK2j4Eh9tPU@rP z+MGkjYk$&Y{~>()(m6kR(7`sq2VbIFmOO~7Xu7|qZizNimC6)Hrq?3T^7jA{PXyV9 z2tMOxwp9H{Bc1_Ub1D*n&_-N7bS~E~@)GhbasS*%AKVK!_r4k__rQA3(eyJ<{j{58bRy+{E zIdmCt>BUvhzyoP)(4XpN%8b8Ps&)ng-8j8VKR|^axyXp5N`Y5$!6y3hEXPEIoX42m zI0e+YGjN(x(AYRbjAil2x8|9a#$@-gZd3c||DD3Qx_|yxR;+PD3|I^T1Q8mXsyEv1 z_46q~v7|HmIR#&2NRi%M{brIwRupX{-4F4ZUfn@kr`pv8Z(?laFHyckJ?kMe?+Au9 z9-`cwPiEw2XEER7ek%@N&oHV8S6yg06gVmVA+?^^lxOASDgF(M05rfO!D+;gD7sV?fj zjkjn@i@o1`j0gOp4x@@xM5wV@~{9+%>e_h`)(3H_NoOtH76}eiGW2&;Hw;VLg z+Y`HVbt2XLVp})Gz~4j@v-ZbB_0j$qe1|>mX*EUI<>Lm;(Q%FKd#L0=3=4tCwa}E3 z{J?TGGT1nm#KaHE^ZJ}~=`i+XUG6_^_M?pI)cy?HG;Q{mhfCC|SB2cWS*U%)=efya7hlfjq(r{g<8`r9amx~4ahhAGEhJ{}}-9xAV6C&7O zM&^3QSZdiLs;9nSULiZKmf;brwtFGgXe)S8G{?Q=)ga9uI4UHBAQJI4TT}lK0;5MR z46~;WC;YThwB;$+l}$atJ=ya6(y?Pw2K15~2p=4P^&OxMo8eWR5kx2IxSfH;>el~O zC$VHRgKCf=ibin51HC;#ivhuo_fMC#i8q@|Kpx`SBz~^7gJO|&ckSq`1o1+3E-HJ? zqS{v1`g>aST`&op9gG%k+(IE-Cl}9V2@hmZ)MRQ}iDJ~Eu`b9;HNZD4@R@3f=3MpT z77`OK!>vsneACgxGRShevFlV@ zVb?I4iw`RRcg3^UI}+-V&}SW$5rw(K;*SwkLvUwUQJ z79+$wuvUWrJvE)d((cL4?hQ~IyBs_Kj3E!{o&HbMrbaP6!Shh6hzomcF&$YbBQJE% z2PkyUXqew4o4+UEd>r<#V3*urvpQ{B+oI)v{~eblELGN)`a;>v7nMYn1B|a|quWPG zR%zjWFA6$et2e3;Th#{O_6q#7XPha2yO}MIL@i?uN8uCPf490Slpt8v zq|_PG@)#+=VnH9Iv)(GJebNiQtC^rU+ql#(We)Y2B1bpc#rY8%OKxEnwgP{BV}2*E zOO+-J0wo>g@h1#aKWe*T8~pFFCRGmhInMP{nJ>yFwSN^98&z?@Pl^@P77BIqZp2Ta zdD|?+8#RG9CR;jl*r1nJn>%GCx{D*ZN>jv=WN3FdfrwY#viL&=s;t^B-3I?arl&hi z82}=!0$9%ZcHt+jeTk%EZ1Jq&Rpq)``tcKTcEx0~9&IlC&Xn7FoU@$Q#A-Iib9K~Y zUB+jL%*Dm9vIRiqHkem2qGA>u<$f6+S)|pzwz6RBQ_gO}2cH z5&o@)Yzl`n=^F#8u1teQQiqy0oL+1h)^BHq3*D!us)xO!aq^Ok6~d)t-=Q>coq$-C zDlNDsMKdh3<_6euO=x*~s0?*ty7JzY;AG&SUF8|(41wd+eg}+O()gvP75#>Hd7Rc| zl#%JKw;{KPfrIh(mSumqX;zi8(e*!+u*;w8NRm{hxrsLrktK0($hz?*9dm4j)#^k{>GE#BCQbUoc19(vl*>TMVN5jKK8I~uwl}8dtzfpgH5iz-W`nYFB z!pJHI*(<3puqS{tV~E%>eJ?Q(Bp<6la*PWFb0^JN2xx5(zd8JA0z;ODR$$f?31 zX%?6o&kS;=q}NvHh~j4UgB#PI){cunrZE z*ac>&DwbU>>yS;)VGcxfP)nGwiiD-UiLEurH_yq&M_sBj-LL*>%h2PU9&|L8v7QIG zx(u+J+Ij_sYuAH<1YUW4c&np1Jv1+?I7VQLu!)4u3jx8z>YP#U=!Jm^b}>;t)u7?? zWz8I;6%BJ?U@!35$+oYbS+@9R;x-$vA6E5^c>u*-EDP6=G(( z+|no}Eu2oZ<3bruQzWEzP4;L*XhI>R+X_F`*syI)QwBMvxeI>%03HT69(8O7v>fza z9m9wuB|S}-0{gtmoN@AZF%Bf3tC^rm10uGcUBs0AAo>_K3!IR?-?>^Bp)MAEnF`-> ziUCiVlC9v<6f~5sD)dOnkuy2xpVv?fjlgF~;#z213R>n+p9}T#BSWS?RN~U2`R2bQ zQkg8cZ3W+uWoSZaQdkHbi{Ru(Ur=~k>t$Lzqb%*9CKialmG`aenS!?Zs8MgjaQrXU z_V#vaNzc2p&ofYsVr%LPWU24oC=Th_4qgjF4Do$2d%JUfx}CjhU+sTT7mPh{$6a;I~u#(8=x+GNZ4-AfiXq@$ppTk+(0?GFk z;?QPh4o6;II{P%Yi~NE}SXc`d1P;m`bI{*}eDafHVi)kD6TO?S%r#jlp2=r?Dc^4% zWD^=vagxZGyCn2E6MhC(3wm1C6TkImUQxN z&tfFnshR8`vF7aH9IQde|YlFqpi#ze-SXvVF(u$&S|)N+L7ul5=S7odv5)0d7Pe)alf5%YMshIYQ7;jvKnj=4L5a%=I!{*! zJIqg8LFksnW*kV*Oy#pDfp4%zIPT3V7qKzYO>UhMiw&(1)Qk9B(q|hg8ed`Udkan7EI8mPeN&j>p-}#3T6Nv}%KZ_Txn=XNvTx zwMa;0J$@!@&AlFXRW=bvC=#H}I20QEN_@$0=Ow>h%)Vs_6x1*);k)hqs7cozs&rWlL-}iY{%VF7kZt|7Fq-kDwvJ<-L$9#o*QgWG#Je9{%mzi?;S5>6@#d>`21{HU0UJgw?>R_eL4!K z-JidS=dLXLa2jxgKMSsrWuymY5_r7=@tpS7G+>W^JmiE|vq49gB2)}vAtlh)nW9%T zlhEfqn$x zI+9YH_`Gx>-7bD_>F)09>im2pd{Ga)Gg6!nRkfk%1P$F9nY9NTqv|MGN#dy}{$0T# zD{%T`u`6&3^N8x_kkm#)jL{Gj#hn0(i8N(Sg4f5G0k6p~WrGy_BwA&RfqpB%wfax@ z!B^gjiP6hGN#B_2yj{(M_u+K}?H0H?OMcx6VVh+r502a6<^(3BP2$vQL_a~eg<|a> z;2k_rNS-cc?|rqu4-^OK9+WAyI_z4%YDsKmA25WuTyxYbQ|n1&>s>z>_rT;l1i#Pi?&kH!i~NVmLBO`!pKP-_X`Jz- zek*W^(XgecA#!Nn6LIkNl671cK0qCYi=`Mesy-CSPhvsaz7=&G>%B6EQ4zN1RW2G> zapgoA#X)og$q>D0`!P)zR4jmHcxzg9w3|F!k1@rigt{1Bh4?q7aH@3_xxAoS6LZ|K zAs&}pxOyyKJO^QW@hCwfl?uVEYGpek!DBq;4!)NQGub1qht1f^aZp0#L53tMj!)P# zmmJEA2XN$U-CIMrZh_mi66l{22Hzc-D=DA8^}2dY8>6#YI`6ySvo@namuOqxFea$*y=ctS(tUD+ci_=eQthaG8!4mahEmSq$TvYX~pey2a`TC7%Y&zMJP zP@HR_S7M>zPqyKCUUK%@9xI<*ta@$R4d^9_CwMBzNgGRLA0TiQf*?8~&-;c$-0}fR zUN8KhrSzcUTZpl&`c}5fLBUD*pqWRl;NDDlnxeb6v)g>54hbnb(!ojAy9QSS z+5nq9Z(Uf$!nRJPAk+>k$_HR+%F(})gzcj2%i9vIE_q(7=Lk)!2c_IXTwqz;%1Y?L z@kiKLD6qQY3xB6TUu6w|u3O>E+49qWR&bFU09iEoK_QP;fiOz;co8xOMtQg29Z?b+ z(eEjMDb}Bt$$`=#_bMtkD`W05tyk^Jm9T67YiRibbJrdT`4z6|iRBnj39Ix0V^G++ z#?td+QEI8>Uz&lLXZ2K5*d4s~yz_^<=r5JjgsBTTAAY25#8mRqffJaJ5qWq*`y?I7 zQiEtg-*uGh7Qx-Ns7`P!G&Ii*X0c8uuFkq9{Ra$XBjmCP z|59pw3p#GPjo*NwV3sx|-E(-#cple76; z{L|0!z-B_`6Xtat|e|O%6-*1SD0sUAlw;1y*`?(QjhDrSZ7} zRMwYWIWHFmDl{-zaSJ_z%+>^*ssQZVnL-VTOexB!S>2M$4VcwbB>2Dz868CKt3POC zRvVH$OM(HC*O7je$gG4lr-(8zNHVTbSUoVlho=3d`?t(WFnfm#d6%iSUFSbeFX4Zj zA|dB_tp|9RH?;jmbeLTTWW<^LCDasJ{_C?uw`aYi>l6gKyak~SwEawP2kcdSI*vif z0)C+X!tv8pIl{c43$x4b|9dQ*Z6yD+>I1H%r}BQR`r2C;qhX z1x5AeoYI_Z*!mu$@!DPN4}J^4le6!Dx)CxyU}l6`&k2dn8U1bv&cQDTZd;4oHzsn| z2shlv5iU3ihY!#)vy*R!jN+|CP(*k8Ub2?->yJ5hoi)N#4wt8aQi&fC{=fc5^#SPX z<+_J(Sy>SC2AaefVhmm%quos*F=7~r2qc)>C+7&C4Dk7)qZ_PQ7;B)!s2>vn9zn%i zb**m~IB}8^B2wzYZ9gY=8_h)2S8Z1xX@1|WUDT#nn!5}(J-a0YuO@~kan3u+iZGFXMlCOwBV5}@ z$C6x~79?c%spo)%7xv}B#9S^0??GQD>mGaxl=c_qw9W16d z?*_jYit+f!%S=waI?0Thbjr_65-+j7W9Ri7u=yd7;4KXNhx{Y^^l}bcNyni<9?~GB zmhLj8nbuB})(2*!7Cr%@!IU+9yMaTUy7FtuK(FxKD}~`;NY5|p_TNON0vs?z3VUo! zUjdg{(<|Q!weSEe!(aHWSrn3ZZJgU-#Z(cFPT1TJvTI8|W*T1wW*SGK2}8Eak2U;$-c5FQfo&E~D5!P{u>Ok@Lj81Pj0(3wcXwbBcbx8E z1As+L-L3UqG459UN)KMkG5Y8fo{Ghb+fV$uxcx1~w z0iwX~!|}DXEG4|TNA>>4fc6v4H-^-UG|`qTh>1@=$O#befE@YBz#lZo@_1JOoH%#F zoF$mGtHFZRCR$aquc%5lrXiD04;R*$1^U6CO19I7=k)F<%R0(y9;R-?Ch=rHOne`8 zpap}y==?ycSq%QMkNI%_@&i*H|1lpCiBC0m9SQ%~Jh~ui)vO%jIuG73j@-jkyryv% zCZ!*_H-hlp!}^_rr1X;>rQOZMa2yu
Pr3=%isx zV|+j}?`AkT$)b3f&$Th!v6oQK0i*92<#qDaF7a2J@{1{sGUMan`Lcz}O)5IRMLk7QfjHz5ig|rTvrK!{-eN0nBl-XiI`w{Y;;&{us|ECIrag63lg(jW0!hRH1 zL5?r&&_9KLxG?PgGKh!IKmg&dX3ZO13F*;r1loQXSP#qCu|m`Q2VRXT*NV_x#onRZ zL62X_=FZYB$lc>J9Mc_~QG zDpSBC&0`@F#!CszvdqU#S6sec{4U+6)i`WqU1Ee` z#wMoUS6+QF4-fE%kG>xp@FxNtY|LQ42n{60Yeg7EgiFNb$8&kCS79LpZSy;r_VHho z+$TaZKp==t2~eP72Voa*c__510S9mdRm>no5NW%ueQhYZ+c`Jj5f*jqi@$&OcmI7| z(n)U?3DnBoD@~cnW2>7>+0hX*ec_-D&HhzT&PstLd$;bvQKX@rVW2jVh&%9g zUGF%E6Dg-;){fU_pQn=m7JtTll@~a_nPXNkv=SXxbtkV#TYY=gM;9v28MzOP)RFhF z93940wcY&&Ltj8E>JA!08SDyNG(}d=9An?`B9-FEl;k=}vj)hhMq*vPc-a(FmMb5U z*}y$*aPRa-@xfY%v9SbjY)Kb8!1#>Lnxbe^?wlD%*od|8;tVPL!S$>LM3GX1#Rd_} zvgyG^Gl7Zhg_z|pfMrHTKj}58nT1#jUTknFi1!g<2qY(a7C*U;>fb{QsATe8TK}*~ zhWVYj`P(2y@Ylp_`7k_13Vnl|Tp3t@Dg>kv*mqwr>QpkzJWTwl$Fr;a@ArfS*%6$5 zSLa4C^Dmn_DpCGK*4;C3RONZH>5%w$UfIDhn4U1j+(I%CEgZopPnmC$K?PAdW0#bO z>BQ-H00Jg{3ybMe;(ol|nkZ z*0y#PXOoFt6pt~PWemqQR_XuECK7`;eY_Tx3hz9MX|%HP0-Er6LNS^9ldflEDbnIV z2Xg?nIjU@|5U2}qzjUL>$S+cSdz02RzRiWdZ<#r?9p_|#G9F=?bYu#kj5;t6fI0tC zQ{^nIXqaU#m{}kxREA;zcsfnNxp3gCiM-#AMD{z1QgK__EQjLEEj0G*2}AwHzAQa&jt z)M~+v)r>s8Z3Q^#TkyV7@J^E%oGzcExu2{+nTe!k)SotQq4hi5D%1-;|M1#+od{pM zgDYG?JG>UQ|EDc@6G#p-fwt!?k59pfvjIG=S^&S3B+5+Ikc=>Xq6kkGQdqCVNc!bX5lbrae<^y%|MVE>9E7R85`{eosDW*C6vgvQ|{^ z+jCNColBmy$9&m0CJHC&*UJMihts&x7AAaO^le?@eMdv)12#;eI^l%*6nt`#6BK6wH<7ZnghBPx{l9 zI#(2M*<&fw(>fc#4zA1P)YD0I57iy+T)cp&z^8T|AJm>UF0)RGY_9NtJkFMtQ>F^Z z{Ur>x21<(o8k^iKl2JbrIsEgVF6o8&<%a-ydsp9lq)nMXsd-=@ehBC(o_aRO#XlJ9 zif+Q63!WsxU$aFJ){|1^gf{+Gvw4mEW9H(30yTPnAIMYssqr|Wgi2inv zDD(L=chD-xE7?5EMQAq2N9@n!H{|z7ZXKTlrl(0|td;1gfP~99$?8r0{WI{T`@8Ui zqPm5CKcX5R`(_2f)we!FqJfx~6+heiSyr<4yx0R+E1+}T$mQC{mzYZm_t}yT{-l8E zsx%bEyUwEElh$$YO-IRn%DQa=j`}BZA3emur6Jf=rzw2P$on*f>R^T-#?pC$TSs zMvE7ek;(HrF3ZeD^0z=_vgMW*%R4UNuxkrv`CH*WU5Lj5e+HGy-~d1=wl5zdtU}cA6pu3X*moBn@Pf6IZ19YY+6Gknw`>iGEX0kcGET%BIOm z$6o-{t#|kr*sN^lCjDNz7T~VW%mO|Rrl(@I9$qeA%`PB2e*X^gY7ScKeLX#R+&h>? z2^XWIdyfI;*Gzc_`dWVityCFkH|F=eGwEFR0#+(9x+cbs`DT6XSbe z&VOv)R?Ahj#G2;T>J%WaSd@`*4Z{@r-b7PED)(f=WCU}biIod*;=F;_q$aVbG zOk!yUy+luFLZ-zM$Rc3WZ!xbQvxm;9xVSX2|FrS&cK(nyEQ%5g5C}a8r{)Tr z-D=*@>v7GX#8moWTJ9sRODh(tF3?Rvl!?vDfbOd4y;~I+-nBnlijjre+pj!@OL6h{ zx4N+8Uok#pk@NaLMRLz7b2bD2nv6iaiqepTf5hXy-%whbaqT!iIPj6zU+R0^Gw2Ji zRilb!p+wS%gDFTwx|2)A1h%JEKlWDt?KJvm6mQ=gpne@Vw}1HUbn|%Ul8R)?e!pp8 zA&I(+Fa4oue_=FO(ahkdrQ0g?Y2~gowvsCskvY0=e)KGtIU05Nx-gMuZ@4va�y zKfgU|Q;SiiS&#N=~9f& z}!kH-!wM* z>PW%%>iFc8?jAKz4+!cRAmV#WFz_8xFS0cpPfJ6PG;$onE8W(Xs^L|rAKSN#8j*ua zNGHajEe1=lu$_B%vla5q?Bz=VQod#%m6anX#!<~;MspSLJD3Y-4ffIIh}4IH>6x^1DIz#Cs<&>pK(gED^>zY!Ug{GadjO%1xDQD)EM*Vr!4ji3-F8*QkDlM!v?dEQtix ze-F0a<1}eOHT=VK^C7K3#@ zkqn@l8IZ6s*vMr2=g7f_Fg?jW1mE2^BgHSfe7>3i0r79T(v(;kiFDs(+kmagNwNep zjXK#nD!CXQKzJdjdG_Rc+#L9z!GO6}H)4r`;|osm`Bh4OiKr7KxE~yzu`~VI1;oxw zB&&y+CJLD$4c2~yhaN}i`vw7UbLQskl)Y_8_zp%)XatZfgLW!dfOHVFsSnKp2iK2A zvBfU}vo*7wGnfElE*=;b5h`I&DYqBpWD59GIoMdUJ+yw4YTA24$f>?p^|4YEb1bG<%=sFQHwUab9N5YEz2{oPRC*2P7jfaFNbJ+ zPo;ifK3vsE${oEBY$Kaa?)OY7dPjIw#S;4+?Dmb?3pRs5|Fv@z0TP@&n`hO)_4BXR z;y9m_NQP%vXZ4y5%~QHJcO6GUfXcs^IqpKbxiiOtdem+u+_ z2U()nU)N{`(J4l#1*-h7ffI39L?l7}hH#A-J+GGqz!7Th1x7{QY2nW3m^j!WwYn~Z zSvLeckxqp3KlT`_e`$33dC5BaEbMNk2in)jcKxbs*5wUiZG)Up z$dML@;{y^1FqUE#YHlDDS1id*F&&?6quE75-Z?szD-86@4<$mx{L&4sexJY=pa-Vy z1Rbo^`HxxkZ#yzwaA(=I85tZIj7wStlFW9pM&;>5aGhND-Xj<&w`IN899O>rDb;oT zbAin&l{uuXM1Aoams5-^t24$A3m+R6Y4Vq5Z?Nq3q&gAjLi^_ z%AIJH?R#nr-;jR5Fv@C>r&gSiO|Q2nw?!vMvaJWGq&r*ef1C?*n2X5r@yIZ6dA3@P zFP1|wTO;4qlMq=w0xT8L`g;&EdKXEOO;UNW0C zQyRhr{-D{vn}AfiyLBTals`*Mh#VQxX+;D)q2n|ZT|j~2WQABYc6QZFA|!kl^AH+c z&_PFIrYCla)KhM*k@=+)bXw>t9Yxz)^RO7t6IN8VB5 z$3G4Ap42qesC0rQGJdX~C^{juLTNYu6s({9RnM~Ez-6{V)08$$rsu>gb_}x1FIe#^ zp3l?|MjGgk{TOCG7wqiXGA=l>PA%2YeYIEBS_6(|a`41r@;OGEMfmf9Ks{ilT2)$a z4SCNA*fTJ@>A$I?)zK*KYO=i7dj{`n5)Bh1ycTfvwyAT6l5SGW*_@|GCSeDg^%7Jp zA#Pp+B*?4RCiG0%ZnEt0YM$GMMgJL5NdSl3L!zODT~ULksO6PY;}451GM@w9tBMZE;)l`-6nIKCcVn5^xKi3THtG;SM6}PnSc7z$^;gEbp z1#?pczr^w+JE0%T7Fv+9J{rzTx73a+-!) zXwGk}CEbDGzmbmKd)^Mu2yEIZ9o}=!pVdMG5aX4yEH9TYN=pg;HCcx1G`Fa(HMjRs zAkfMJ#)Y**v!%gUx4?~CU4rD)Pi4`Pf{MK5(O2AiiV)}NMNC=MTJ;9PI0CTCw-B1j zdcMN$Hu#sAZ}QPKKS(7;p>P$z#E|*F@5;#ilp>oTd)NN%Odz)98Pj!Yb7re?HGJw~t?g_VA|Hbe7|@ebYLC34;gN)@8FaQasQw z*0+f5-~bV$#|RUPaNjBgs8mEqCf+!2J^YL~IS2j|j78AQm@|rsAmQ5B1oQSq9z(QS z3KY~D6*N}f@R0zW>~Zk9E#x3(D5fmS)Qk;~Y3a3-2gI^`b230!NH)sY4(j&;v445? zUOIGIdmuUUEl%T*!ycke;ZZ?zt|3-HW2)nYo4UfFAU?b>@EkMnYgJ6c?rT~!9#kNr zLGgo{l9xwzHwRP5MMFRTPH!ZpK@e8q39ED}BcZWtdu+(c`ey9Pdqor{(46pZ%()5( z?bUzVr{&KWs}>>~)nRdZ2G>&H*m$W7x`mqRcRY=MsW3HMEE|m%5(I}`?{QJh5jQC; zbty70NF;6U;e_8-4bM-4z_)9s1R^gt7*wSxOA;?d@jp(g)y7;m(ws0rnQVQ$i}0nN z@)NjPE&(R}o}_$U;m45UFj$%(K}7I`_T&N7YO=`E;t53YIqrg4_?V(?MEXn9g#Qun zZ{lChjON~_2fH2kotk}28zPV1qM-Ys6PleIu*|sk8;Ba5>$bAD{9$W0AOc zpyhaijLTyV8k6Qs=gR38PXy#sD4B4&t9iCowZILB&9l;KcdiBeXQi}^Awl|%n*WoL zl7dF*ra*(+49VoEY2D!#H{Wl(nY9qV`;CuAsiMB;*~hFg9R`!W=Z|L*szAAEu94P` zCs=Fu1sbsyPgC<}&a-)h>G4U=FM=Zp;@SodhkychKtLOd)vKR9ZrV)ARtZeGmnh{I z2sX#E)T_EAm27uO{C>bJ*%qdczkQ*q;%Q~k-(oR&a!%@sf|WA^XT1wEGCJc7!A=Ro zJWe3n9ez}>sG@?WPLm$~w`^NR? zgye6AgA!&7izgcJ*|_4o2eO_9QQxG{>n_N>2h1h5kZ&3uRB*F~?Uze*Ho`l0_%6zY z-`>X-;Q{A~L)L3c!Vgvj*hc9m))>bmMQ=3QY6%U^2Spbzi>{SK@?88eoDvLUkhNro z;z!~!jwCu$4L{A_%I>OM28N?B9{$#A-%z$sz6i-dX&u_|)w45OwTQS=ANTlUbgF2~ zce3i-ooXfiaOnMdBaf6l+#vmWKVA&F$c@Es#|Mw{dfb)!6WjZEr}y$b{d}6{@8)cl zo3)FB{0YNW<5cA1P1FIusa1=_JUBwJVOy zzU^n9FPguK;27r)(rcHgE0?Q}Rid@xxc<`1jZ|H;CR>Y^6Hm2}BRv7h#D02&V{n|O zqbX)anx;}gEmD)`jAefYW6Wjg;huhHTm3ML#M6kGT(2u(k)f6d-c&5%gSkg7DAYaz zL!!lyOf9eR;{!C2ONXjC>_aix5a+2sWtkwSll^fu%%m|*>iXUFHG69y^Hh-P1l2!5 zWeZk^o{4oZ_8<3aV$LeK^lK@W2_nueF10%(4J6xFqb9wfIlhK-wIA{Ox1YfRpG*?3 z2A^D?xBs=vXjbg){qhY6@OZkuUENyVX=pI{d}utlKEESv3=RS5pU;M3-k)yTySE8{llnP~ z@Bt{Ak))CEqXM*47wr2SCprP@{zvVtTj-J=Mw|@_pdpqq{?IQ2_?|UH$d$83eA6Iu<50{_I_oyN# z*&xSWQ+LSh*6;OzPITXTR2l2*rX8}YsQ7hWc5=v__lN%P)u9p*U@;YtDANGN)}~gO zl~%y2S(;uhkyPVtj#{;QU(r$=O2!dVsV8tRy5{_5fVPJxh>I! zC|V>!k3qsw=x-3HA~ZHLh8gHljPb)qx%=}Ji%@i8Jv&!|E#z~xVqFTDcKd1FShS(& z$?WbyLh8<)t|C;Qp=zt4`L<}UUifBpYS;B^+KETo(y9ZK=Y7Y$xp0)5~qd(Pbub}g!1zXbsy=v4`H7O_@W)2Bi-Rb6O zh9b)Ty(dMr{B-GVe7SF8k->}!TL{&iEnqL=7Phq}TI61Ozmot7e-}PgXpoPGmsgj@ zmZ*|)f-K(zoCOEm&=Iyn7spkv`9&t2^5S>)P;%=HZVOhKB^~qBm)J40Ph{L+-S>?% z@T=63RQ6q=XW1$J%0eBC!k-Ty2F}qdDpMDVv6)yK@V1ghgCG&HeRgxP{yReT)krap)>9a= zwf1hP^e+stzyrvsX2B?Bx9`YD+28XdNkbF6&cLLm?fv~c``QRIvWOcE0}|_8F~M%z!W!aK zHuxf6R?_kdgBXXx`c(V`GLByo))%F) z!vx!S|2iHaJxiIV?VEfGcl*=H!EP zK7+qA7gDY=kK>)kjv%*41W;&Sosdahvy(+4et+QoUhgWNup9Yn2>u_YXXA&U_{liH z;)oyrZbFk2-qHoUQCL3xV*|_Jmka|g-IYe;%{LB1{sIcF>2j&%Ge<)EeV)6#JW4cf z+u0G2TXC&@9hqTm4a1sEQW#neiVqAM%Nm^y=&hP_Sd+E7wkq?(9OxCB0t*nQM)|f| zIqktP9@N0au( z>+<)>y8qNQv*z0~yL{)IS?ipAup-g&glpNvMefs?PqqAx2>yV-n88by0Rtw*DD{wRlAduEKc_oVQ=)L zrV2<_)t&tLlKPYDiLla;Y+-usAOU>iyrs{U$4F;%XTKYUiGq`La|d(RPM{PRyIsNp4YFxd8FSgr~kVWm71_q$*Qu~rqC!v^&kdUIjV{XK$Sm1}bBJhq(96v=6 zI>j$)+#F{s299PefVzeU4VN-hpJJ0KGZfK|IXSyBMjFU{rY|+6cVY|73e4}G(l)XA ztVi@JAIYaAf4Ej^=asOXsfH0_#aPN|5mWV>XUgSF`KuO?rX%6B*g=%hjba1uUitOm zk00iM!AU$@0jl3vTL|4O0zk%l*8@sh#Cf4+ks+?qcVR#;d}q?%3T$~yCsIS?lSvV+ z?bA{wKCiJ+3Wd7Yg<{jAz?T}YoPk~q*FmP1s=a&cyuXwhKcT+|Y(3b;X>R|3Mh+c! z*lkBIw3-gieXqLO-m0XEpeqXtQ{ojmdWSr7SzO|+x3tP~pVp}MMOBO&T+cdJvpx}u z6^#25vE}-Dj>kskRzSpfs&RN07Vjp2L2)f~&{%j3lUNvZ{W2xx5%3^k=v?(R zKl_HsHl1Een}b%fB9ipXpKY;|CM_xGF5P0IeBsBMpXzwdZ_e`++9RjFA{OG?Hl80e zTX3H79UbAV`$RQ3c(7WbZOX?yn8S?FeErGgeHKlcM{B{3od2y9>pg8%&*?0`?&ZIr zdOJgz(m%|nIIl)RF)rLW_;Mi3m+DuJq2!n^K_V<;bKr93@!^Td{+{tC=pK`wBEs!D zBw%ZJjU5jjLd9v%y&CB)eR6AUW21b`i0kOwkUm8-tZHDJz2@FGou&HJHy%lN>%=_& zPLwSt#&Yi5MGxD*)y;cdsxmE53g`wCP69`3rjbeb*@!wMkg#l_5PdCNoUIOQ-s{mG z;w-ACJxh}xBumQq5l(jBQpmGX&!i=!`076J86LjhC)v(a)&vvU&eLe;I!5{rzbJ2b z#&F7;4NRs8wRe$*yO~#}yjZ3Fu&4DAfwhe8ZkriLmT9;d0#l9W^uKO-Sti~Vqc5gW zsHPD5-MP>+_!M3>A0mvh-069?SG-) zQA6xoPb9 z$>sH)iv5IjgM+J=z}wa%^=HaTR}98iz`Y?DK=XgENMD42(P=5QqiT5i(#I8EPjuN)G~U zuz^4vz+HlioEP5L1>*%KxVns)SjA8vT#fJqhPWDYP2w<|3o9WGy+Bi6UA%;JYS(D; zFrhVifih|tgh5TNaa2^X6f(YQy_mQ4#KS`B+IA}Lt{So~zbk|CS(YqGJqrGe`CBRX zzJS*HT|K6Prv)T%HKhm5ugma=FuaA*NB+9}68EFNMZ z%PPUFC#*`ef-`cs9kmV05WxEoI`lD;goX zPSx;Q`Y=}OG7tQoAOp4i*SX^(iX?xc4&?Tl%Q zph+Z&A6DH^6`w>A?8(d&npnDkiZP1c!*8hhD?Bqv`*ha)?lfKwe5bQAvPP7jE82g< ziPn-^Wulr_XW%4wTEB=XFSG*R)gh}ET?o|@$o}KhOjH8=@ug{oY$3DfLLJ*m__^?@ zw#`x&%hVUZyqfgqmTVmv7Q?!uQ-cmFl;`|rF701u-b_}~t1jDj072_hQH3qjH%lutV7iY- zO+z&3`E!X{K_0?vli18GD7mlVyFKnq4yx2|2#R^LSUFl`k zZp7Jo>v3;wzp$;KW1!HHHHwrPM+o6+OOoPxmT@~3QU z>Vwuf=Xbm_^LEoNhgrS0Ye7O{a-_qca^L(e>c%aKyYFl=Uy<-g%YDEI31sw$5^)#w zV2lLWy^6c+_L3+ykv+efP6`YBR>b@}4U$Rq!mohvKLJnyU;@b66XW6~2mXFce_ZR< z0%3;+zV6L{F!zc?C}O_wGH%nEWF4b&Gm*5?UzQD%J>u8|e6Ol;kDkUtX_s?qA`AHU zxQwtCAO5D(sga1qc0bZAeJ^ubDZC$ORoKJIEo9W8U;&^5FPb;cE5|g#axk5IbwtkK z8ZM|zRo_DstD~pLx!TnqsIa-luB7z|E|!QABv3x>-}|WB_e|7`_fM^MO4ccI;HkG8 zag>EJd(o=C4XMD5~0yz!gX@r-b_tv&BhTc+2yg|%0)(i?ej+$wen>jinS82tX7St8NR&Lw! zSd2Y6_|Yt{n$#cCEn$g!FB}2_+tIqqGE%B~;HVn)6SrB`FCzkO20wa`?o{3&-7X-& zUq^XA$eHu?Bov}L#?M}3B-Te-$eC8fFPzT=X+bO1qKNi?kPn{6LR7S4Rh-z9QyiBC zuiN!zHC-@F;g4uFts0dGH$@ZQYln)JD9XF=z5Phfd*+RH-;6=Z&RuTwKCJQ)F#7RH z`Sm&2TGnLp(ih<^k4WC&#%#`y_s~Hp*;>&X7yI2wc!?Vnm`{yF%$S2yPGu|oy?itN z@@KTZ;Fu#NW#t>975$*pJukn#-JQvWFU#ArgA+TS`J=063!??76L73sRD-+M2UXgV z^trx}VTU)H^S5VaG*N#&_{wWO+pn0KYvv^N_Jwgi4>eznc7Q8>Ij}P<6yx{TxTBvR zFzu55gvg~=#jl^~P4&%C`CU0*u1c9Z?nOH=-;2#z9A4f}SYZ3zZQ`d>vq}JWZ2_(m z{Nc7AA^N}0`zKth9|6gQAnc)K+@C;7h6OMteJisIU@oRLF>dbHrL528Lh0gE@wSy2 zvVkk@$fu4xK5m&cYvMPYk945lEve6J{j)|CULB9(+I;tkXxMauP%9RP=}C z_9^#8zbjDq4Oqpahj+;KiSs2;Rf|{mho?FOU?YM|s`)RblLYPQ3o01SI(+WK%OfN+ zAW=Q_L%U6PS=%}gtjAR<7z5v?i?xs4MvLj7bIS-KmFr78*N`Y;af?k~rimtSgBGz=gG17{;AHSPogmZYQSVfa+arTCuICn2OTX*;GW<89?%RWKVfafj%rNr@{P~aRy*Ydw;dz>fc-{2{hX<}SQ zK%g|KACCMfA&71Qcsz&m1GF+Yy-|0Y0Y;l?e>OAshVg$cy}6aD@D!Dm_i5%4|i zy&N$ZyqDZRr+<}lxNY-OP!OGT+o6`uVFMhl4}L)*?|!Qt4g(LDufKo-o&WdcKTF%g v;KMBc1?~m>2-xla;rwAahl%t{PIdRc(#lYe32+w(bQDL3Vhb`D zYzK%%FhL|Fh{S-BkVN3Hbob1eyfbs&ks@cT)^N_FyDeGz-@&JU1v`ZB%V`z0iFSzE#5=@ok{uEjL2`FU zN!|__$=@N@vRkGz$;N(LX2#r%>m?!cnD?>YmxP=Z3&FUws!v$h&HR!AQb>wE;bPw% zDKClZ|8uH4QeTozqIyV$Jc>yPDgA^O$z__Bm9Q2|m~zH`NtQP46KGX*K}(=k&DfDa z%64RunWX#}YeyETI7aNqCbLK-Jmru{@HCCgCX?Z5I+;VN;CBXuO@UuE{HDV1O!!TM z-&`^sLg#7o$&7t-34#)`32ojdI59}Ai`~U8m}cyPDi^O>rw$L^48Ly++7XX#dOCy&>n(iE|EhUEN0Y zxa)54R^PbmV;t9n^Tfot%Ry`Z#Ao*>j(k1w?lJ5i?CT3XaKfkJ(EYQ46L-~(It{7S zH&MDygRY}pKP7>QV_ydP&jc>M7kKMJ!0HTt@ZR{Hk0vgE7`pXV;O^PrJ12ryKKQfc zh*%8S2!4LPQmj^Yb{Y0|w3nlZ^~ScgMoQPM)$Gw~$=!`j`-(fe)H{ocP$AUY;VRm= zv8cLw7wt!N6;a0aT@Z!1iGt!b?ncoqQkO1J7t;Tjn2U>xOI{lLiWTaT1C3NkYe#d* zAzfp~KBG<(AGjD^sLNK&E)|DSYt$ET{6dr+gRV{M=OUM1gxsXI)zH|Tr{7mp(X?mj z!tw=+_UtY#TUb%Pd+DOZd&n{^S=P9i+`VAY?(Xcp21BR5vZSQ3Q&&uCwViscc3*K* zM_b8((ryLgQFLHoQ76^W%`PtX^E-@&PNTsuCmVIGUD4X{^Y#05t*!d*ls#IVey_2J zskS10S9_CRfSXBgT+AVe@q6~5?bf)<0!-@z1s}MAB_1*EicLTTX zgl=8>%h%RG->uNmdx75Lf&Nd>E7!+?zJZX#0%87aISf9bdpAQj9if|d|MGPY>R;m{ zXU1JOf_?qa{h*_bkGwNJG90||L0||1p>UAKpDn$C<6n*6I~(boP@oaZ_#Nw?EvF$0 z=u?onK;MTb9_VUx*A2Rk2S0q5?sK7!4hKIyf=W_atPb>ji~~fX8X6AW{RAQzcb$fC zp<7V&uY%Th0wZ@rH*bo|-~(KgS5yA>Cmm)Fc?tcU)uu5t>F_e79GJM3k;=+ zD^N?QdU0mO3yalwAdZh5k1uRA=Yf-UXteQr=L0>bC%(2oE+)QyC(!p5%H7xJ!2yK| zo_;@crB}S@#T*5WJD{P1gZ9A9_d>TFfwztaZr*{E!-JoN4xdC#`q7cxz=!w1D>pZI z?n@Zoxw!3cj&kACpbh01S81+zak09vaNPCb#7Bn<3!$pwMGBN3S{W)PlG_1W;HwV< z*Ukp|p(#;P!A~y-zr09i+aCUSXyOL+64X&pC+j~A6_h)1(G@uUIeH$jEAX3OW&PVwDOM$EJK<^3M7=%vK6p{C| zAVzaLj3naeVi3cFgb8MJT2`}3c00_~X10M2hHfqK-$i^|B6ChO5I78c=E=mq2(!D1 zfIIIJmzihGoS%tP#C#w7HF203S+6ii7=My);#?#yv6*);rw9x(=BI@Q#GDkIKN`52TSvu zN6&XggpSl|^`G9g|Haj(MosKGIqo`zM8i8L#z(%aRM-1i)N`KEu%~Frb(UYKZExxz zb?wasB0sxB@8@bT08p#44o+C7R1LYS$_S@UFt$uzdrQM@DM5RKu{H#5C)EyvuYW4HgB~(X; zp`;ka)708{u;gF|wNKyK*rY9rOi3jXQU20-%r8X=Gt)km3vthbKm9SdS%}943!H1e zEm-D}&2q2aVp;P@BI~Q@spwnQvusG>;M)&5_B%72V%IG9tXI8~RhDWdz>1y~w)|1a zj7LJ5TUqQdIQF>Zi$;ZueG1hhk<3c=SJ~%`iV7zQ7B9!q_(-AZ>+0#UC7m+;zyY5h zkoOaGd#;y4Mt-{>b+v-?I|XlbhM*~e9>JR+P%oxO)=d~UgG4i7W|>$m@geA71fVVx z(GuyS5ik0OWRo1G|Gn7DUlI?Dw1n~S{)_SOUlI>s;r~*8M9gSnfm}&ga&cUU#CexA z6HJ=b#4bBQnAs+F!ct0Or8IM15=I7CJ|e};+?RxrlZt2<-b=zL$0Wb(dhgq}@YQbnd@5oBsN^bg2?;yO(;@j>3EBgsf+ zn7Gh$__12LF9X)MCO#cOZ<+vCHg`~6#uVgz?<`E_!830MFMl{O zau%Qv1Q7$mN1_ivxDgEq5O02h4qjALq{bK{bkiBQcU}!1eqozduWxMD>H#xq+es~w zOK6Dz;!D`3Z`K&PIswk2B?H_6&VmTz>Du4}zqqqQZ_r>j4{)xo(a+tZYt;h0H0YZ4 zX{qoxkbHgkpWyzS16cbxYiBomm-;!oQvIAIhKTr$ogmmqKc`u1@bf?>>N@?LR&6_# z2A>oNASZay;^(#M+98J=$Pk652?~iYKd%jCjw%MX9yK{FGu3KpCVH8)+o)?LHAX$G zd2lsTtHFOU3S0*Q1Z1C7ZmIEcMJMVG*Y&?*J9zom7k=%ibn3k`UU5%f=1y8Z%3Z;{ zUSg}gyy3zIhuB%=%~|5kUg}P&9Ob?edF@usaR_cnu1lPC4`+Gju655@=T2Hb%H6tVrwobH*|)T3Y5y<0l596O`zcf^ z(G)LzQKv=EPdjP3ZHP+jMEJ+RMc<i=_hkC6Lid*Jmw#^-nuLkolPS@dAw(14xGe;i=t|Ec3^`0}`2Ch-+=IGG#Dumg>8+8G=`3S+ID>yb@lF~5`;}l zVCml33XA~oASKA0;8sv4G7QP|F%OF7jsRAUOfet{pvP0LT)l+Da_6s8Noi0~5 zKX*=Uu3BtFEf3-{f`C!Y;MxkGfHmiNHMIoZ*N0IA1<4c&?B|ijwobiYUR_huu%)JE zgJ$EV>Y6%0ya*a={XD9%9p(hSk!o$#?e+^O?S7+H51H8bjpi4d>-@^7 z7i2)Qp=P^Z0H4#CnTJ3t0Bs7&N}&S!MKy<-v^2Fup}tE?eV8*^p>+!+ei?4Wh@|&R z;>5mRf*Oa?!t4T52zPe}+2t2B8c_2Y{2a(9N=4sEZ9%cp^9n06r%1pjGN+&)Jg>-_ z8e3a|>B8g;MM0RY@Tae*=ag}YqOY>2@=?-^$EnjCMIPxAUuw2P;*l<#9#w%O&q=ve1zuI9wfd1NeXw$%(nem^UC>?J=T#M2 zt09xNr2`%IMo-#YN2VvO+_}z^wqh);+LKo8Oe*Fg?BAD(su%Ho|H^{u1-yS;zytRS z%LKGsrKg+6&Z_h&^(}FDG6Sf*XU-F9`t?8Uv1B z5<>8^aR`4lgy?5Oh+`p0$sS=$y!M{v60m$pRDLNbVe$^sZIrlZiP9BJO%bqMVPZru z8=yCfl+crp4BcsBgclbBf(%nG6ALC0m=sMMm=+^x0kBpYUx$Fec84CE14en``rQbl zH~1y61>h65Sb&0y$bZCm0x^nc&?rBO*kcqFb9T2*hprt9STEqo0gHEWL~LqwBsCXO z!?1HcauuN)Eht1Z>eYbI@+Pz*%Ah6vtTsOf67>t2sQeH{14m#WO8cj}&=hisc@~a+l7lSZi7P zhrIdyBHPRXsqMA570z7Cx<`^3W0GYa$uigWZ-nm6JKe4OCkdjOUCVw(5Yn}5c;KyN zQ&mv%7q~&xZE4YT42IJQ5orF9eh96=2|fI6fnh?OHlPsn^-1IxR^O~dD`ArJf&ib@l8x?95{ZF3I2bD`-wu?;;bY1x<%jE>koli|DQ867jsD zAv&N*!LX3w4*`e6%GJyR@sa>(!(fkb3q)@kth2>tJ}EKrQMV$c=x!G5B}mx^tdkzw08T4d`xxV>c_`-2eXoM|?Lzd$Knzjxc zeitdvuG|DF8W?u^YtS1+RARU81YEArwZjlL=AwF$?m;Ke(k_Ya4U z06pOf9628R%o@CSKXC6xp#Oa6R9^rz4sV|dox2jceSh3_IDDfo^v=aV-s9M}zO&nYjFU;2KE!8-bB`!bk2*ymc~s zVjz6st?b>{`(dkAFqN66+kWlh%-7Cunba-@#70vtZ|gn}MsR8E5d^9oiWm?a)`S6I4B)+``V2mqG0oaUzmE;&e=$ z8^O-g=L5%&V&|F5Fc)HH-|6s2)`$}+?ywU^MV~X`ycIa7i}xpbPGINz z?*XfiogX;Emp{i&dQe52pN4LKh@CfVpbf&#o4ufPjyUfGE<}94x*oWA7yI7%Jb38= zc76@Yy@9Cn+Np^12()0tc|LIKYuX8s22SF#1$)j0zP4cB9^1rCT-Cvo9|i_aV&AuK z1kc^a&aPJ>Dn2e@=Jd;u38QF}wUKv;K$1AJhC7ue~z5_m5X0F|1fs;Siz_OJ5PQYv>e9H zGuHz*zl=C<1>VQqXo6OEV&C(<;Y+xCPFxrP?h*UadOGZ+O#!fz)@))YEu^v2aVl^Z zSL(#@FpNCxJ3Jh?co924ADI}z4LdOcO4>+vM$QH=F}`O($%?~{+?W`_jTO4~R``9~ zcS6_R4)uIS2MAsJAn+FMsi7MmL6^Y3H}8icy##4yZD+9Wt@|M6u+w=oc>Xrygq1XQ zesL^#7q@2U{!!5EV&4b-plgjdF9wcBl6Y{Dsr9g>Cwv79g|Ow_&;vZ2!bcqw_i!d* zYM8i(+ZfjE6GtLp&s_-J!ebuKZgdjiAq(iHvGelhOo<`>iHkR1SV|!zqJqDth$%hK z0&QmEg+L74gGQ!@eSk%QwiBTlm|;2f^pr%MfG7%BeqJ-xVeBm6P``m^KexRR3?yU` zl34>9EmE&XsjAf$j539=TBk8__cWRl)}Sx+#mf*vZPl+RW?p{F9_~jWzl9qV=&6|C$^RfxfI`hG`JPV*6_3)h&Kj*!UsA?k_CU66 zha=gWH2(>~5zVo#@~Kh=7Y!@|>bT6SnmwkP?@`V7s*0`EeuZj?W2?R>vcGmw?o;NB zDb*gO+Me>Aa`vPEK7A%6QnPK#hPSx#M^jdUN=~#G7XLs9EE`y6=i1x7szp83lN|5{ zG_QP=U@f$!hy}X;n;4V^H>7_BKOvbCM0Tv^L6~N1XjX>f=tJgS43L6jvCV?^B%r9HGI11Nk9(_{`qmI7tN~PWhf|oP1>}a)lFpQ`p;&f8z+@G$Rrd$g-`+ z0>(91E=Dce)IcR*1_AVISmUHO=D-IqSYtK<(T{@k{9jKUgb=ixGoq@7u#=aszN5yg z1&CXnMhSpoAn7aB-F!80#gv}mWMcubt}gukvCuVZ zrJ7oZVnd6ZSO}aaBdSi6*Gs)>I$@ll7^@q&iV#+%+K7}EJHa1QBaC;r47{JSb{S_z z;=y(i@dOK4!eCwnB0*W8OMCWGq}nRg1uU9aC}7jI;+Mo(0v1TIutlT~t%9Q^E=`>J zWm~py*;=zv)3ABd#)hrbUI+q0*Fe#fFHI-Va*?J&Kzd8*Ndt@*!MYBJaFXiMfT177 zhoSD5#wDqzGecQWiu=$_1R<#X;L@X!1)0Ye7Q?AgQsadv6!6V`^vN!8fVNPPJ*Jr9 zQOvN59jm>H5}*hqDrEg2pFb)r0xA7im1?Q;sj{CC*}SzZ(ALRQ`}Xzhv(2%WdgZgM z9NJPM&t7F;Yqv`X8H@aT&POt5kd@m)G z+4gy3x#gbR^3mKykFqLU0&mu<)(vz@i=6wMyWGiD-$|?K6!Psm?Hk?6Wuww^P!Oi) z+UGeBj;5`&N_@hUF=4hxm~C%z&GY1}`A%3nS%FG8SxHDU+}!lPJ)1$KOnXAGQ3jN$ zHmQA!y~bUz%=Mb9%ANM=sB)E0U3R$$pvOJN?s(4IRO;3-!XY-yJyG%l6k;M$ zJS<^I3NWzZ8={iE1&!D#7f4nnLgSWI#8piVL6N~DlvW<0ZyRGEZi3c_@tW)zZXv@0FdnA4_2 zgFgS9^e|re28% zyjZU_N#pu#v~J9@pNVtM)Ks7@WlZj=ycm*cL8R1_D;5&)Ruo^5`6k(m$b`%>N%p|v zA}-9V#PtZHU^YSo@wf&;7EVbR9;xiO*ybb-lPI>Aw+CQ2I+s&T9Q#?l-$WGCbB!k< z>3GFN;R`y6q9UXl?kZ~3sj;a%GD*Dh0nPFONI=$tmFirq%*a)P!LB+NTR-N~L9jkV zJ(uig(il6D3A(0Z-+VQ;p6}AMkp*g?cwlwRaF}?RhNPKa5HX{qwH=Qc#0~R$SAlZ_?@fe5CzoH`E&u0DyUS z^77mFBe((hOvH2EumK86rxhKMOfcr^pr?tv_^|?~J8!CSWD^C(_U#58ED{-ueSb#X zs?8g={9@hK8ckK*It>_Wu31-$Y&E-i^yhx=+D#j4x@Sk?YCizB_CS;(jeSWwD7H%u zlr1bSU0A%JWVf!p($8&JwRJ75@9@@y=X|^ap<5hlxUJMLp`2hWAa7~}(=Mn6Y@&}> zkw|gn=V;px&`>OjJE0;1ch3QfOj~UIY3R6d9@fL+v1XLEfWy1|j7r=UeR^0o=vG9HY)PxSU zX!yBJ9i3e?PV|dm(G99AFkk?KFMxNjEH{wIt|1FsbTPeo55VZCSu2_>{CrB=)^Pxg z5OA&w4?S#gH~hj~_)D*H8|d89XE<{_@)ed^WR0t{sq6Jh;b zz0|SDmGqtP6=amVY@91{OJ~`2_ML8V=_t1hk`^lZ=YA{5dX$zi*gViY*gDX9wbEU( z)| zc!Mvw(zWHmwmaJ%{_>m6-sKIRDl&tC)>q&#^cEOmNk=7LYQMaaM^sp>=Dd&@?2>Trrnw5S+Iu2*{_TWmyf5GIEAkH z-w3>^4OX$Qbct*2x24sd)FSu#omTOq^vuD70|y691E#ARoa>#-T>BqpJQRO3%U#;w zO@GZQjkk23KPs8?NGk7J*R!s_byS*1L+GWh`L5~ig`zZrr1Ge|tjXT&0ou@ZV#7eBTg0U3yq!eJ4Ea{v$X zVrs<}G`^->F(o9Z3dQIjgC~*6bT!c@XkzO?DZ2~iIoceKwn6}$Cq*;TS$40COPGab z0STKYo7rZOj==v&`4HDE{tcg0pm4w}^}_cOlOz%ELMj=|bBLu+hIA8$lEk5ADIn7* z&W{zzBqft+ET#euDT3n6GLwu<0rO~9Z`Dg;P9>vT5Y6(Jgh>YzIwnSiNnsM3ZqC~L*c2?rB(8FfLvuLE+oMKY7L{VZaC!a)|kQ%VMzk(8)Q_Wyp zm?(Zz3dB3plnMwjj_Wg}!MCuofqG8(6`4B~k@jW)mz6@QyJ5;Tr}Qp|r^H`ISwX0! z6A&s1^>#8Z(c07$HTD1THW|Q>doYGXCYMdX6CNZA@{ONC(P4Ysk2c86i-CrSwRvRn zQo{_kkL)-Idp@lIH$YDdrsbeJgDqRIS&!b$6;*K4kTTfY6H#-6X}bDPZ@sO?w&?0{ z*H!RA4< z=vuI40OkTgO;1CuKfQZJ-B1d_k&)#`hjDNtT2N13KHIBqD1%q1qO8L&zPhAtC`YgE zor&%dShKa8U06tMfNx7@f*i>Lyr zt#qipje1REJJ=$0YFfb>p%n~O8x1HH>}WT((c2qny$YC{LK1pCf{}4pD&9%sDyjfw z4&8F#PhU*~sYx+WyvQZ|w&+z)Qh|HTHp}`)s?@=XfeNJ5xGHgq9VS<)>vh-qhgx@0 zomaKdQa5$7_bHOb0XVhVsvNM5sSE+9Y-i&md2*kwM`vT5YPE6@X37SPR8htHH${~* zsh`z92kaPE+1flg^F7M>Zbg-4E!-ZNwLY1$KdVRc zgb?vc!6Hho=+pLS``4Um`&Pcdw*Rv6g3-Rs(deDA0Ja7w()&z3CR>%g!cp#+<=F3@ zS?X1kfvQWQaH|SEl0szVA5j8jf#L;hIEAt2H@vEa@GMc;D(p)<+4DV;`M$#W*4qBH z9_cjOUXOH+51^jVBh0kT^$7FEgoPeqp#u#57fh-kbCVf_VuepW%O{@=|GyXU6nsnV zq?}NsKp|A~o)A)ACJ>&qRgI6*0udwpERkjuBXmcYg=kxZ9imhac7o}O3Qp1z%sIA zMg3f#G8MsJo6)}2zQ*>(cgp#op^_Cnma6*q_tf>&PKqEd=mjD?X_BHd{*(R2m4;n5382u-}XUq(kFuv%l0&^U2FtlO+Ps9O+`@l!iSR(^;Oh{}_ zxnlYkn9~Yj<`*U03MF95{8Kpwt`kiL^hHXJ5hg+PkGC*@){J7C#4psSl!=|LQJIN< z0I=Cl@lLrCX~RfWT;38enWs8lY`JO1!LQU^_UIa(vD7=71!agLMt&te1UF&P8P; z3*veN$CO1D4sn{}N*>pn6O0vdo+;U+BIggWVHEI&i3UT zQzOls^D`qSf!>>3V9Fs&O-jT;lWAlbls0~(PWzb{6OF}b@ng|EJ+71q#=2>G%YS0D znrE11w9NYP=pf6Pen2YeQ5-*uEo9z-%v}^WyDff6TovRJrftZjWaU&|zKd7zitz;G zA>e!q!}#EU4S+GWo`n?&I@H727aI5i-{C9|yhed_1h% z)*502857FvOqN%K+Vo|w2dt>M7dU9XYp-mmTx75FONV|T0b^2*8&b8YzSRpw6%ttdQBo3*ZO@w2K!p5RuJP&qd3S?)^|FwW51I zse^+J3{86@hy8THemV`ku!tFcMMG0iYkJhpL&#L>Th&G<*amnkk80z8=uzR16wG58*U;(yT#LZ+4H$DUwhNA2ol?`mOIN^H4z1=8*&e_C>n{0E zs3Kr9VEZ0jGkpSup9^$wWP=_Loa;!x2!6I`L4{%Hu3?S=LR;aAvF4+=sl5a}f`Uk= zFKL9`f+YvaOJJLJW4l4q*o4?}yaBNU4xRwhv&L4abhN)3R=|ES`qk5sQw@-JY9qS6 zhHjhT7DmQt)Hb;JRS9CG5JEGeX)vu_B3pp;D`Tp^N6g$+{m#McQxjk(z4cv zNw^oNu)c+-hux+IY*AB*f*{5L3?AFNXw?j+02XMuBE7{Cwo>T;S*9K}P)&WoH|@b)Y=)=)Jjc6iVZ6ZEHkvLp7qV3-TW6FGwGT*D5J*GsYhGVN&Sq4jWUOrF{c-!dNWi+$kPG9AbtU}9v zVcM8*nnwud3VbKbgQYkxA99wKHMo6XyX{SHYVla=LQm>KZ|Y)8{kT#ELfX|ns@mvP zZnUiXgCz4xCY|43jtaNo{K|7|Z@OhgwCW4^m+d{<&l%h~8@=iEUfCwg8lOznzozF6 z+bWN2y6vDxHV3?t(rx^K>2{VUDcAmrC#eJoAhEKqxTknbtoDf2KH;WEvZTHpJv;1+ zU0I%tYOkzjOjhTS)p=$0zN8uMndNTfLf0=R1%zbgQ-UkuTdF`g2cN9(S%2=p;F|+) zj-?lQ(u*8Tt}=IekvDzCSbCKwy~>+j`Hff8Rzl~v@Eq}b#h$!uSC!B}>QC%eQca+P|s zms{(68Tt0tE-1z_iaZ%b-i#6}==k#Ns|J39v*JxJv9A52BEzSghMUZ>$EEuw-?O6L zGkcSJR>P?BHE2}zY)6-?{Q7S^=_|oB3%2d1&qjt@%lkP#W%{6eKyEjq90?B=WQskbk7E_BWPbfqV|YE)Y7lV*-d)gGzZp8lP*00O1v zjit=>q|9}scvFgzRq;9&m=!aj9J5{d4^!^U^W?5^&#e7Ux)vE2uS4d;NtN!(jqauO zZuuslmbgh{+zbyF3YF$oFYySM!U-65sqIb2UdIl1MT2|VYwn%9J;El~Tb;#!MsRon zXr`15w3!+BEZZV50#ABnlEa?Cf1Hx}jK@yNw$wcnqQfg-kG3yuwl5{ir<(D-fSb+- z>*my~XCkgN`v)PBlY3$D#U+y>v?E&zCe3|t+R>O~rbjZpn#)1eWGLC3sT4rFzOYNNwqs%=Aji;rJxn?`+)5q6?yn60a;Dx~o8TqWf@n z|7@=y)Ari8g6Xsd6An|V0JS2mPMqsVyOni4%URx`)iv1Ka)+a~Y_N(=9E$&<_U@(O z&|#Z!+$J3G@q!&2#F}6|&frlRucDGoxhNTMX$kzz?Dhq57Dx!@Ou3ktV{0l>F&x$9 zb;B2lwkd)ZFH)ailg>)C@epj$IixhggCqkFqJm@7qFOXEg|-lc!!UpoNxKxci85xB z)PknzDVHI-8m8Bj2uZ^Qwo}N)g1$^}ILUA(v+4pKk_W6=EZr<7->`xs3{kr{uqaG; z*y(U~G$y`@51K2`rzScSmFhG^d9W6BBr9=0iFlZ}vgFWODIP^azC8)tz9nD6T@8q0# z{UFrUJSGK{C%TSdT%n8BH;R#7n2NKxC+Eg$+JMwW^abBa;=iR^A(nDM?3=D19hBF* zIbuUrSWhdiz;-AeEdqw6jhvAh#HfbU@acJRXQP6WE<9p`Gb4jGN8svp*q6iIt8MM< z7J&^DJ~0(7*#PTk43tqzo2|o9lGyqj&c4JuTO+1xu)wC57XZmS+9?a9iK2;EsQLML z$%5Anh|s_m^FfzAeE2NVkI~ss<4~}k0>~{OwR;-D%7)qw!RZL;l`qO9+1RD;7S7sU zG^?#>7HQ-|0K5*Nop>2yL_`d|3Yk(ZpcU(8t9Q~GzpW6PkUpRftm2@)5L%6b?_+l& zM*#-zAIEAtoM}{R77H9m2_MLyoD?Yc!K4V~5~&X<6?#lTH?%sBvxB2j!PAI_Sj=1> zZ!!R2kFDN-;=m^PkVtUo<9Lfd<4pJv3gkfQRv<)>J~zT3Fq&F8P|JwWK48eiECa+E z`s#C7%Hk*r(gC?r&46n4TEBc1)oeru1~i~Y$}ffePa1ej`@zXx$QM29X>gDn-Cr1#Z4dOu8;Xi z9ChxMyJ+7x;(cF#DEwxwd*v42v=x&af|v0OR7tP09!rwOBsm^Qj#o0>QvFyUIni~b z3xVdP150~^~t?#@0M>E71lwzO#58N`iFvl6RxFWSn{2)@`p?mAx;n*L;X`pR&5sNpR;(i zc>=#s14?CGyG8>;_9!$n{Op7dQoyP&V67>b{y%!Kp8rqF$t-UB$=x{tp z7Rf3q4<$Ae-PGvzYvdjaGh z>Hhv)xC{=fGPY`0P(u(B{u6p6zW`~oSl@HSEbb2(1Z(9Ou>$^ki535gDE1J=fWT9h zx(TH(rPNI%`I2%i^2c&zUvp10>Wj9r%M}+YF0Z_>(ouG+;(EocmDg9gmU!n?d$VgE z8oqhmy{*|R-)oWhWQx9RJ=^*;JsR8Q%iAt&yR5mOalG!Gw%9AHu!wyzWjySqsdmnF zFWc86*6wdP SnSbC4kFSAo%FUvy>;C~&9<>hu diff --git a/scripts/detect_p0_realtime.py b/scripts/detect_p0_realtime.py index 2043059..9c41cdd 100644 --- a/scripts/detect_p0_realtime.py +++ b/scripts/detect_p0_realtime.py @@ -127,21 +127,68 @@ def is_probably_p0(cluster_msgs): def _clean_summary(text): - """清洗摘要文本,去掉用户ID、话术后缀等冗余信息。""" - # 去掉手机号/用户ID(11位数字,可能紧邻中文) + """清洗摘要文本,提取核心问题描述(处理转发消息、内部讨论等噪音)。""" + # 去掉 [聊天记录] 等转发标记 + text = re.sub(r'^\[聊天记录\]\s*', '', text) + # 去掉完整XML块 + text = re.sub(r'.*?', '', text, flags=re.DOTALL) + # 去掉所有XML标签(含不完整的) + text = re.sub(r']*)?>?', '', text) + # 去掉残留的XML属性片段 + text = re.sub(r'\b[a-zA-Z]+="[^"]*"', '', text) + # 截断 "↳ 回复 xxx:" 及之后的所有内容(内部讨论引用,非用户原始反馈) + text = re.split(r'↳\s*回复', text)[0].strip() + # 去掉媒体标记 + text = re.sub(r'\[视频\]|\[图片\]|\[语音\]|\[文件\]|\[表情\]', '', text) + # 拆分发送人标记(emoji/符号 + 名字 + emoji/符号 + :),取最后一条用户消息 + sender_pat = r'(?:[^\u4e00-\u9fff\w\d\s]+\s*)+[\u4e00-\u9fff\s]{1,20}\s*(?:[^\u4e00-\u9fff\w\d\s]+\s*)*:\s*' + parts = re.split(sender_pat, text) + meaningful = [p.strip() for p in parts if p.strip() and len(p.strip()) > 3] + if meaningful: + text = meaningful[-1] + # 去掉手机号/用户ID text = re.sub(r'(?:^|(?<=[^\d]))1[3-9]\d{9}(?=[^\d]|$)', '', text) # 去掉话术后缀 text = re.sub(r'[,,]?\s*(老师|辛苦|麻烦|帮忙)\s*(看下|看一下|看看|看)[。!!]*$', '', text) text = re.sub(r'[,,]?\s*@\S+\s*', '', text) + # 去掉残留的数字+XML碎片 + text = re.sub(r'\d+[a-zA-Z<>/]+$', '', text) # 清理多余空格和标点 text = re.sub(r'\s+', ' ', text).strip() text = re.sub(r'^[,,\s]+|[,,\s]+$', '', text) + + # === 内部讨论话术改写:疑问句 → 陈述句 === + # 去掉"这个反馈可以跟用户确认下..."等讨论话术前缀 + text = re.sub(r'^(?:这个|该)?反馈可以(?:跟|和)用户确认下?', '', text) + text = re.sub(r'^(?:这个|该)?问题可以(?:跟|和)用户确认下?', '', text) + text = re.sub(r'^(?:这个|该)?(?:反馈|问题)?(?:可以)?(?:跟|和)用户确认下?', '', text) + text = re.sub(r'是在进行什么操作时', '', text) + text = re.sub(r'具体是什么操作时', '', text) + text = re.sub(r'是在什么情况下', '', text) + # 去掉句末疑问词 + text = re.sub(r'[??!!。.]+$', '', text) + text = re.sub(r'[吗呢吧啊呀]$', '', text) + # 碎片化症状词 → 补全为陈述句 + symptom_map = { + r'^闪退的?$': '用户反馈闪退,需确认操作场景', + r'^崩溃的?$': '用户反馈崩溃,需确认操作场景', + r'^卡退的?$': '用户反馈卡退,需确认操作场景', + r'^卡死的?$': '用户反馈卡死,需确认操作场景', + r'^打不开的?$': '用户反馈打不开,需确认操作场景', + } + for pat, repl in symptom_map.items(): + if re.match(pat, text): + text = repl + break + # 再次清理 + text = re.sub(r'\s+', ' ', text).strip() + text = re.sub(r'^[,,\s]+|[,,\s]+$', '', text) return text def _pick_best_summary(cluster_msgs): """从簇中选出最能代表 P0 问题的摘要消息。 - 优先选择匹配 P0 关键词的消息,其次选第一条有意义的文本。""" + 优先选择匹配 P0 关键词且非转发/非内部讨论的消息。""" from priority_classifier import P0_KEYWORDS # 收集所有 P0 关键词正则 @@ -150,17 +197,36 @@ def _pick_best_summary(cluster_msgs): p0_patterns.append(cat_pats) combined_p0 = re.compile('|'.join(p0_patterns), re.IGNORECASE) + # 判断是否为转发消息/内部讨论(包含 [聊天记录]、↳ 回复 等标记) + def _is_forward_or_discussion(t): + return bool(re.search(r'^\[聊天记录\]|↳\s*回复||.*?', '', text, flags=re.DOTALL) + # 去掉所有XML标签(含不完整的) + text = re.sub(r']*)?>?', '', text) + # 去掉残留的XML属性片段 + text = re.sub(r'\b[a-zA-Z]+="[^"]*"', '', text) + # 截断 "↳ 回复 xxx:" 及之后的所有内容(内部讨论引用,非用户原始反馈) + text = re.split(r'↳\s*回复', text)[0].strip() + # 去掉媒体标记 + text = re.sub(r'\[视频\]|\[图片\]|\[语音\]|\[文件\]|\[表情\]', '', text) + # 拆分发送人标记(emoji/符号 + 名字 + emoji/符号 + :),取最后一条用户消息 + sender_pat = r'(?:[^\u4e00-\u9fff\w\d\s]+\s*)+[\u4e00-\u9fff\s]{1,20}\s*(?:[^\u4e00-\u9fff\w\d\s]+\s*)*:\s*' + parts = re.split(sender_pat, text) + meaningful = [p.strip() for p in parts if p.strip() and len(p.strip()) > 3] + if meaningful: + text = meaningful[-1] + # 去掉手机号/用户ID text = re.sub(r'(?:^|(?<=[^\d]))1[3-9]\d{9}(?=[^\d]|$)', '', text) # 去掉话术后缀 text = re.sub(r'[,,]?\s*(老师|辛苦|麻烦|帮忙)\s*(看下|看一下|看看|看)[。!!]*$', '', text) text = re.sub(r'[,,]?\s*@\S+\s*', '', text) + # 去掉残留的数字+XML碎片 + text = re.sub(r'\d+[a-zA-Z<>/]+$', '', text) # 清理多余空格和标点 text = re.sub(r'\s+', ' ', text).strip() text = re.sub(r'^[,,\s]+|[,,\s]+$', '', text) + + # === 内部讨论话术改写:疑问句 → 陈述句 === + # 去掉"这个反馈可以跟用户确认下..."等讨论话术前缀 + text = re.sub(r'^(?:这个|该)?反馈可以(?:跟|和)用户确认下?', '', text) + text = re.sub(r'^(?:这个|该)?问题可以(?:跟|和)用户确认下?', '', text) + text = re.sub(r'^(?:这个|该)?(?:反馈|问题)?(?:可以)?(?:跟|和)用户确认下?', '', text) + text = re.sub(r'是在进行什么操作时', '', text) + text = re.sub(r'具体是什么操作时', '', text) + text = re.sub(r'是在什么情况下', '', text) + # 去掉句末疑问词 + text = re.sub(r'[??!!。.]+$', '', text) + text = re.sub(r'[吗呢吧啊呀]$', '', text) + # 碎片化症状词 → 补全为陈述句 + symptom_map = { + r'^闪退的?$': '用户反馈闪退,需确认操作场景', + r'^崩溃的?$': '用户反馈崩溃,需确认操作场景', + r'^卡退的?$': '用户反馈卡退,需确认操作场景', + r'^卡死的?$': '用户反馈卡死,需确认操作场景', + r'^打不开的?$': '用户反馈打不开,需确认操作场景', + } + for pat, repl in symptom_map.items(): + if re.match(pat, text): + text = repl + break + # 再次清理 + text = re.sub(r'\s+', ' ', text).strip() + text = re.sub(r'^[,,\s]+|[,,\s]+$', '', text) return text def _pick_best_summary(cluster_msgs): """从簇中选出最能代表 P0 问题的摘要消息。 - 优先选择匹配 P0 关键词的消息,其次选第一条有意义的文本。""" + 优先选择匹配 P0 关键词且非转发/非内部讨论的消息。""" from priority_classifier import P0_KEYWORDS # 收集所有 P0 关键词正则 @@ -144,17 +191,36 @@ def _pick_best_summary(cluster_msgs): p0_patterns.append(cat_pats) combined_p0 = re.compile('|'.join(p0_patterns), re.IGNORECASE) + # 判断是否为转发消息/内部讨论(包含 [聊天记录]、↳ 回复 等标记) + def _is_forward_or_discussion(t): + return bool(re.search(r'^\[聊天记录\]|↳\s*回复||= '2026-06-01' AND msg_time < '2026-07-01' + ORDER BY msg_time ASC +""") +rows = cursor.fetchall() +cursor.close() +conn.close() + +print(f"共 {len(rows)} 条记录") + +wb = Workbook() +ws = wb.active +ws.title = "6月微信反馈" + +# Headers +headers = ['序号', '发送者', '消息类型', '消息内容', '发送时间', '消息ID', '引用消息ID'] +header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid") +header_font = Font(name='微软雅黑', bold=True, color="FFFFFF", size=11) +data_font = Font(name='微软雅黑', size=10) + +for col, h in enumerate(headers, 1): + cell = ws.cell(row=1, column=col, value=h) + cell.fill = header_fill + cell.font = header_font + cell.alignment = Alignment(horizontal='center', vertical='center') + +for i, row in enumerate(rows, 2): + ws.cell(row=i, column=1, value=i-1).font = data_font + ws.cell(row=i, column=2, value=row[1]).font = data_font + ws.cell(row=i, column=3, value=row[2]).font = data_font + ws.cell(row=i, column=4, value=row[3] or '').font = data_font + ws.cell(row=i, column=5, value=str(row[4])).font = data_font + ws.cell(row=i, column=6, value=str(row[5]) if row[5] else '').font = data_font + ws.cell(row=i, column=7, value=str(row[6]) if row[6] else '').font = data_font + +# Column widths +ws.column_dimensions['A'].width = 6 +ws.column_dimensions['B'].width = 28 +ws.column_dimensions['C'].width = 12 +ws.column_dimensions['D'].width = 80 +ws.column_dimensions['E'].width = 20 +ws.column_dimensions['F'].width = 22 +ws.column_dimensions['G'].width = 22 + +# Freeze header +ws.freeze_panes = 'A2' + +# Auto-filter +ws.auto_filter.ref = f"A1:G{len(rows)+1}" + +output_path = '/root/.openclaw/workspace-xiaokui/output/微信反馈_2026年6月.xlsx' +wb.save(output_path) +print(f"已保存到: {output_path}") diff --git a/scripts/export_wechat_june_csv.py b/scripts/export_wechat_june_csv.py new file mode 100644 index 0000000..1265bf2 --- /dev/null +++ b/scripts/export_wechat_june_csv.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +"""导出6月份微信反馈数据到 CSV""" +import pymysql, csv + +conn = pymysql.connect( + host='bj-cdb-8frbdwju.sql.tencentcdb.com', + port=25413, + user='chatbot', + password='xhuBx7d@uT2gUVv', + database='vala_test', + charset='utf8mb4' +) + +cursor = conn.cursor() +cursor.execute(""" + SELECT + id, sender_name, msg_type, content, msg_time, svr_msg_id, refer_msg_svrid + FROM wechat_group_message + WHERE msg_time >= '2026-06-01' AND msg_time < '2026-07-01' + ORDER BY msg_time ASC +""") +rows = cursor.fetchall() +cursor.close() +conn.close() + +output_path = '/root/.openclaw/workspace-xiaokui/output/微信反馈_2026年6月.csv' +with open(output_path, 'w', newline='', encoding='utf-8-sig') as f: + writer = csv.writer(f) + writer.writerow(['id', 'sender_name', 'msg_type', 'content', 'msg_time', 'svr_msg_id', 'refer_msg_svrid']) + for row in rows: + # Replace newlines in content to keep one row per record + content = (row[3] or '').replace('\n', ' ').replace('\r', ' ') + writer.writerow([row[0], row[1], row[2], content, str(row[4]), str(row[5]) if row[5] else '', str(row[6]) if row[6] else '']) + +print(f"共 {len(rows)} 条记录,已保存到 {output_path}")