解决 'chattts' is not accessedpylance 错误的实战指南:从问题定位到修复
错误背景:Pylance 为什么会“误伤”你的变量
在 VS Code 里写 Python,Pylance 是默认的“快嘴”类型检查器:它一边帮你补全代码,一边把可疑的地方标成灰色波浪线。
“chattts is not accessed”并不是 Python 解释器抛出的异常,而是 Pylance 的静态分析结果——它发现你在文件里import chattts或from chattts import something之后,后续代码并没有真正用到这个符号,于是贴心地提醒一句“你导了却没用”。
灰色提示本身无害,但有两种场景会让人抓狂:
- 你确实在“动态”用它,比如
exec("chattts.tts()"),Pylance 肉眼凡胎看不见。 - 你按网上教程“pip install chattts”后,模块名、目录名、文件名三者对不上,导致 Pylance 连模块都找不到,于是把“找不到”和“未使用”同时甩锅给你。
一句话:Pylance 只看得到“静态世界”。只要符号在 AST 里没有出现第二次,它就认为“未使用”;只要模块不在它解析得到的搜索路径里,它就认为“找不到”。搞清这一点,后面所有招式都好理解。
问题诊断:先分清是“找不到”还是“没用到”
打开 VS Code 的Problems 面板,把报错信息一字不差地抄下来,通常只有两种句式:
Import "chattts" could not be resolved→ 模块解析失败,属于“找不到”。"chattts" is not accessed→ 模块能解析,但符号未被使用,属于“没用到”。
快速确认步骤:
- 在终端里
python -c "import chattts; print(chattts.__file__)",如果解释器能打印路径,说明安装成功且运行期找得到。 - 在 VS Code 右下角把 Python 解释器切换成刚才那条
python,确保 Pylance 与解释器是同一套环境。 - 若终端能导、Pylance 依旧报
could not be resolved,99% 是Pylance 的 extraPaths 没配置;若只报not accessed,则跳过“找不到”章节,直接看“动态使用”怎么闭嘴即可。
解决方案:三板斧,按顺序砍
1. 模块真没找到:让 Pylance 看见它
很多 GitHub 项目把可执行文件叫chattts.py,却放在src/bin/深处;或者你把它 clone 到~/repo/ChatTTS,pip 其实没装。
此时在项目根目录新建pyrightconfig.json(Pylance 底层就是 Pyright):
{ "venvPath": ".", "venv": ".venv", "extraPaths": ["src", "src/bin"] }保存后 Ctrl+Shift+P →Reload Window,Pylance 会重新索引,灰色提示瞬间消失。
2. 动态在用却被误杀:告诉 Pylance“别管我”
典型场景是插件式加载:
# plugin_loader.py import importlib chattts = importlib.import_module("chattts") # 运行时才知道 chattts.tts("你好")Pylance 看见第一行chattts被赋完值后再也没出现,于是标灰。
解决思路:给它一个显式引用,或者加一行# type: ignore让检查器闭嘴:
chattts = importlib.import_module("chattts") _ = chattts # 显式“我用过了” chattts.tts("你好")如果你洁癖,不想留无意义语句,就改用__all__导出 +pyright: reportUnusedImport=false单文件关闭,后面会讲。
3. 类型提示缺失:补全签名,让 Pylance 有活干
有时你from chattts import TTS后,只在函数签名里用了一次:
def synthesize(text: str, engine: TTS) -> bytes: ...Pylance 会抱怨TTS imported but unused。
把类型引用改成前向引用或TYPE_CHECKING分支即可:
from typing import TYPE_CHECKING if TYPE_CHECKING: from chattts import TTS def synthesize(text: str, engine: "TTS") -> bytes: ...这样运行时不会真导,但静态检查能识别,灰色提示消失。
代码示例:修复前后对比
下面给出一段最小可复现代码,左边是“被报错”版本,右边是“修复后”版本,关键行用注释标明。
| 修复前(main.py)
5nN/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8HN/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5r/8H8N/6X5