From e874999bd11fb1f23234eb4cecb977292bd8f53a Mon Sep 17 00:00:00 2001 From: linyqh Date: Mon, 12 Aug 2024 21:35:06 +0800 Subject: [PATCH] first commit --- .dockerignore | 24 + .github/workflows/codeReview.yml | 24 + .github/workflows/dockerImageBuild.yml.bak | 35 + .gitignore | 29 + Dockerfile | 45 + LICENSE | 21 + README-en.md | 170 +++ README.md | 175 +++ app/__init__.py | 0 app/asgi.py | 82 ++ app/config/__init__.py | 56 + app/config/config.py | 70 + app/controllers/base.py | 31 + app/controllers/manager/base_manager.py | 64 + app/controllers/manager/memory_manager.py | 18 + app/controllers/manager/redis_manager.py | 56 + app/controllers/ping.py | 14 + app/controllers/v1/base.py | 11 + app/controllers/v1/llm.py | 44 + app/controllers/v1/video.py | 271 ++++ app/models/__init__.py | 0 app/models/const.py | 25 + app/models/exception.py | 28 + app/models/schema.py | 370 ++++++ app/router.py | 17 + app/services/__init__.py | 0 app/services/llm.py | 477 +++++++ app/services/material.py | 335 +++++ app/services/state.py | 122 ++ app/services/subtitle.py | 299 +++++ app/services/task.py | 473 +++++++ app/services/video.py | 520 ++++++++ app/services/voice.py | 1354 ++++++++++++++++++++ app/utils/utils.py | 271 ++++ changelog.py | 17 + config.example.toml | 194 +++ docker-compose.yml | 26 + docs/check.png | Bin 0 -> 444809 bytes docs/img001.png | Bin 0 -> 134967 bytes docs/img002.png | Bin 0 -> 55208 bytes docs/img003.png | Bin 0 -> 55657 bytes docs/img004.png | Bin 0 -> 712178 bytes docs/img005.png | Bin 0 -> 147544 bytes docs/img006.png | Bin 0 -> 146062 bytes docs/img007.png | Bin 0 -> 307049 bytes docs/index.png | Bin 0 -> 96935 bytes docs/voice-list.txt | 941 ++++++++++++++ main.py | 16 + requirements.txt | 26 + resource/public/index.html | 19 + webui.bat | 43 + webui.sh | 58 + webui/Main.py | 746 +++++++++++ webui/i18n/de.json | 79 ++ webui/i18n/en.json | 81 ++ webui/i18n/vi.json | 80 ++ webui/i18n/zh.json | 88 ++ 57 files changed, 7945 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/codeReview.yml create mode 100644 .github/workflows/dockerImageBuild.yml.bak create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README-en.md create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/asgi.py create mode 100644 app/config/__init__.py create mode 100644 app/config/config.py create mode 100644 app/controllers/base.py create mode 100644 app/controllers/manager/base_manager.py create mode 100644 app/controllers/manager/memory_manager.py create mode 100644 app/controllers/manager/redis_manager.py create mode 100644 app/controllers/ping.py create mode 100644 app/controllers/v1/base.py create mode 100644 app/controllers/v1/llm.py create mode 100644 app/controllers/v1/video.py create mode 100644 app/models/__init__.py create mode 100644 app/models/const.py create mode 100644 app/models/exception.py create mode 100644 app/models/schema.py create mode 100644 app/router.py create mode 100644 app/services/__init__.py create mode 100644 app/services/llm.py create mode 100644 app/services/material.py create mode 100644 app/services/state.py create mode 100644 app/services/subtitle.py create mode 100644 app/services/task.py create mode 100644 app/services/video.py create mode 100644 app/services/voice.py create mode 100644 app/utils/utils.py create mode 100644 changelog.py create mode 100644 config.example.toml create mode 100644 docker-compose.yml create mode 100644 docs/check.png create mode 100644 docs/img001.png create mode 100644 docs/img002.png create mode 100644 docs/img003.png create mode 100644 docs/img004.png create mode 100644 docs/img005.png create mode 100644 docs/img006.png create mode 100644 docs/img007.png create mode 100644 docs/index.png create mode 100644 docs/voice-list.txt create mode 100644 main.py create mode 100644 requirements.txt create mode 100644 resource/public/index.html create mode 100644 webui.bat create mode 100644 webui.sh create mode 100644 webui/Main.py create mode 100644 webui/i18n/de.json create mode 100644 webui/i18n/en.json create mode 100644 webui/i18n/vi.json create mode 100644 webui/i18n/zh.json diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..df67e1a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,24 @@ +# Exclude common Python files and directories +venv/ +__pycache__/ +*.pyc +*.pyo +*.pyd +*.pyz +*.pyw +*.pyi +*.egg-info/ + +# Exclude development and local files +.env +.env.* +*.log +*.db + +# Exclude version control system files +.git/ +.gitignore +.svn/ + +storage/ +config.toml diff --git a/.github/workflows/codeReview.yml b/.github/workflows/codeReview.yml new file mode 100644 index 0000000..88b6c2b --- /dev/null +++ b/.github/workflows/codeReview.yml @@ -0,0 +1,24 @@ +name: Code Review + +permissions: + contents: read + pull-requests: write + +on: + # 在提合并请求的时候触发 + pull_request: + types: [opened, reopened] + workflow_dispatch: + +jobs: + codeReview: + runs-on: ubuntu-latest + steps: + - name: GPT代码逻辑检查 + uses: anc95/ChatGPT-CodeReview@main + env: + GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + OPENAI_API_ENDPOINT: https://api.groq.com/openai/v1 + MODEL: llama-3.1-70b-versatile + LANGUAGE: Chinese diff --git a/.github/workflows/dockerImageBuild.yml.bak b/.github/workflows/dockerImageBuild.yml.bak new file mode 100644 index 0000000..3fc14bd --- /dev/null +++ b/.github/workflows/dockerImageBuild.yml.bak @@ -0,0 +1,35 @@ +name: build_docker + +on: + release: + types: [created] # 表示在创建新的 Release 时触发 + +jobs: + build_docker: + name: Build docker + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + push: true + platforms: linux/amd64,linux/arm64 + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/${{ GITHUB_REPOSITORY_NAME_PART }}:${{ github.ref_name }} + ${{ secrets.DOCKERHUB_USERNAME }}/${{ GITHUB_REPOSITORY_NAME_PART }}:latest diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c51c4e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +.DS_Store +/config.toml +/storage/ +/.idea/ +/app/services/__pycache__ +/app/__pycache__/ +/app/config/__pycache__/ +/app/models/__pycache__/ +/app/utils/__pycache__/ +/*/__pycache__/* +.vscode +/**/.streamlit +__pycache__ +logs/ + +node_modules +# VuePress 默认临时文件目录 +/sites/docs/.vuepress/.temp +# VuePress 默认缓存目录 +/sites/docs/.vuepress/.cache +# VuePress 默认构建生成的静态文件目录 +/sites/docs/.vuepress/dist +# 模型目录 +/models/ +./models/* +resource/scripts/* +resource/videos/* +resource/songs/* +resource/fonts/* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8cf53f0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +# Use an official Python runtime as a parent image +FROM python:3.10-slim-bullseye + +# Set the working directory in the container +WORKDIR /NarratoAI + +# 设置/NarratoAI目录权限为777 +RUN chmod 777 /NarratoAI + +ENV PYTHONPATH="/NarratoAI" + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + imagemagick \ + ffmpeg \ + wget \ + && rm -rf /var/lib/apt/lists/* + +# Fix security policy for ImageMagick +RUN sed -i '/ +

NarratoAI 😎

+

All-in-One AI-Powered Video Narration + Automated Editing Tool🎬

+ +

📖 Simplified Chinese | English

+
+ harry0703%2FNarratoAI | Trendshift +
+
+NarratoAI is an automated video narration tool that provides an all-in-one solution for script writing, automated video editing, voice-over, and subtitle generation, powered by LLM to enhance efficient content creation. +
+ +[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/linyqh/NarratoAI) +[![GitHub license](https://img.shields.io/github/license/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/blob/main/LICENSE) +[![GitHub issues](https://img.shields.io/github/issues/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/issues) +[![GitHub stars](https://img.shields.io/github/stars/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/stargazers) +[![Discord](https://img.shields.io/discord/1134848537704804432?style=for-the-badge)](https://dsc.gg/fuji-community) + +

Home

+ +![](docs/index.png) + +

Video Review Interface

+ +![](docs/check.png) + + + +## System Requirements 📦 + +- Recommended minimum: CPU with 4 cores or more, 8GB RAM or more, GPU is not required +- Windows 10 or MacOS 11.0 or above + +## Quick Start 🚀 +### Apply for Google AI Studio Account +1. Visit https://aistudio.google.com/app/prompts/new_chat to apply for an account. +2. Click `Get API Key` to request an API Key. +3. Enter the obtained API Key into the `gemini_api_key` setting in the `config.example.toml` file. + +### Configure Proxy VPN +> The method to configure VPN is not restricted, as long as you can access Google's network. Here, `clash` is used as an example. +1. Note the port of the clash service, usually `http://127.0.0.1:7890`. +2. If the port is not `7890`, modify the `VPN_PROXY_URL` in the `docker-compose.yml` file to your proxy address. + ```yaml + environment: + - "VPN_PROXY_URL=http://host.docker.internal:7890" # Change to your proxy port; host.docker.internal represents the IP of the physical machine. + ``` + +3. (Optional) Or modify the `proxy` settings in the `config.example.toml` file. + ```toml + [proxy] + ### Use a proxy to access the Pexels API + ### Format: "http://:@:" + ### Example: "http://user:pass@proxy:1234" + ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies + + http = "http://xx.xx.xx.xx:7890" + https = "http://xx.xx.xx.xx:7890" + ``` + +### Docker Deployment 🐳 +#### ① Start Docker +```shell +cd NarratoAI +docker-compose up +``` +#### ② Access the Web Interface + +Open your browser and go to http://127.0.0.1:8501 + +#### ③ Access the API Documentation + +Open your browser and go to http://127.0.0.1:8080/docs or http://127.0.0.1:8080/redoc + +## Usage +#### 1. Basic Configuration, Select Model, Enter API Key, and Choose Model +> Currently, only the `Gemini` model is supported. Other modes will be added in future updates. Contributions are welcome via [PR](https://github.com/linyqh/NarratoAI/pulls) to join in the development 🎉🎉🎉 +
+ 001 +
+ +#### 2. Select the Video for Narration and Click to Generate Video Script +> A demo video is included in the platform. To use your own video, place the mp4 file in the `resource/videos` directory and refresh your browser. +> Note: The filename can be anything, but it must not contain Chinese characters, special characters, spaces, backslashes, etc. +
+ 002 +
+ +#### 3. Save the Script and Start Editing +> After saving the script, refresh the browser, and the newly generated `.json` script file will appear in the script file dropdown. Select the json file and video to start editing. +
+ 003 +
+ +#### 4. Review the Video; if there are segments that don't meet the rules, click to regenerate or manually edit them. +
+ 003 +
+ +#### 5. Configure Basic Video Parameters +
+ 003 +
+ +#### 6. Start Generating +
+ 003 +
+ +#### 7. Video Generation Complete +
+ 003 +
+ +## Development 💻 +1. Install Dependencies +```shell +conda create -n narratoai python=3.10 +conda activate narratoai +cd narratoai +pip install -r requirements.txt +``` +2. Install ImageMagick +###### Windows: + +- Download https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-36-Q16-x64-static.exe +- Install the downloaded ImageMagick, ensuring you do not change the installation path +- Update `imagemagick_path` in the `config.toml` file to your actual installation path (typically `C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe`) + +###### MacOS: + +```shell +brew install imagemagick +```` + +###### Ubuntu + +```shell +sudo apt-get install imagemagick +``` + +###### CentOS + +```shell +sudo yum install ImageMagick +``` + +3. initiate webui +```shell +streamlit run ./webui/Main.py --browser.serverAddress=127.0.0.1 --server.enableCORS=True --browser.gatherUsageStats=False +``` +4. Access http://127.0.0.1:8501 + +## Feedback & Suggestions 📢 + +### 👏👏👏 You can submit [issues](https://github.com/linyqh/NarratoAI/issues) or [pull requests](https://github.com/linyqh/NarratoAI/pulls) 🎉🎉🎉 + +## Reference Projects 📚 +- https://github.com/FujiwaraChoki/MoneyPrinter +- https://github.com/harry0703/MoneyPrinterTurbo + +This project was refactored based on the above projects with the addition of video narration features. Thanks to the original authors for their open-source spirit 🥳🥳🥳 + +## License 📝 + +Click to view the [`LICENSE`](LICENSE) file + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=linyqh/NarratoAI&type=Date)](https://star-history.com/#linyqh/NarratoAI&Date) diff --git a/README.md b/README.md new file mode 100644 index 0000000..547fed4 --- /dev/null +++ b/README.md @@ -0,0 +1,175 @@ + +
+

NarratoAI 😎📽️

+

一站式 AI 影视解说+自动化剪辑工具🎬🎞️

+ + +

📖 简体中文 | English

+
+ +[//]: # ( harry0703%2FNarratoAI | Trendshift) +
+
+NarratoAI 是一个自动化影视解说工具,基于LLM实现文案撰写、自动化视频剪辑、配音和字幕生成的一站式流程,助力高效内容创作。 +
+ +[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/linyqh/NarratoAI) +[![GitHub license](https://img.shields.io/github/license/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/blob/main/LICENSE) +[![GitHub issues](https://img.shields.io/github/issues/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/issues) +[![GitHub stars](https://img.shields.io/github/stars/linyqh/NarratoAI?style=for-the-badge)](https://github.com/linyqh/NarratoAI/stargazers) +[![Discord](https://img.shields.io/discord/1134848537704804432?style=for-the-badge)](https://discord.gg/WBKChhmZ) + + +

首页

+ +![](docs/index.png) + +

视频审查界面

+ +![](docs/check.png) + +
+ +## 配置要求 📦 + +- 建议最低 CPU 4核或以上,内存 8G 或以上,显卡非必须 +- Windows 10 或 MacOS 11.0 以上系统 + +## 快速开始 🚀 +### 申请 Google AI studio 账号 +1. 访问 https://aistudio.google.com/app/prompts/new_chat 申请账号 +2. 点击 `Get API Key` 申请 API Key +3. 申请的 API Key 填入 `config.example.toml` 文件中的 `gemini_api_key` 配置 + +### 配置 proxy VPN +> 配置vpn的方法不限,只要能正常访问 Google 网络即可,本文采用的是 chash +1. 记住 clash 服务的端口,一般为 `http://127.0.0.1:7890` +2. 若端口不为 `7890`,请修改 `docker-compose.yml` 文件中的 `VPN_PROXY_URL` 为你的代理地址 + ```yaml + environment: + - "VPN_PROXY_URL=http://host.docker.internal:7890" # 修改为你的代理端口;host.docker.internal表示物理机的IP + ``` +3. (可选)或者修改 `config.example.toml` 文件中的 `proxy` 配置 + ```toml + [proxy] + ### Use a proxy to access the Pexels API + ### Format: "http://:@:" + ### Example: "http://user:pass@proxy:1234" + ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies + + http = "http://xx.xx.xx.xx:7890" + https = "http://xx.xx.xx.xx:7890" + ``` +### docker部署🐳 +#### ① 垃取项目,启动Docker +```shell +git clone https://github.com/linyqh/NarratoAI.git +cd NarratoAI +docker-compose up +``` +#### ② 访问Web界面 + +打开浏览器,访问 http://127.0.0.1:8501 + +#### ③ 访问API文档 + +打开浏览器,访问 http://127.0.0.1:8080/docs 或者 http://127.0.0.1:8080/redoc + +## 使用方法 +#### 1. 基础配置,选择模型,填入APIKey,选择模型 +> 目前暂时只支持 `Gemini` 模型,其他模式待后续更新,欢迎大家提交 [PR](https://github.com/linyqh/NarratoAI/pulls),参与开发 🎉🎉🎉 +
+ 001 +
+ +#### 2. 选择需要解说的视频,点击生成视频脚本 +> 平台内置了一个演示视频,若要使用自己的视频,将mp4文件放在 `resource/videos` 目录下,刷新浏览器即可, +> 注意:文件名随意,但文件名不能包含中文,特殊字符,空格,反斜杠等 +
+ 002 +
+ +#### 3. 保存脚本,开始剪辑 +> 保存脚本后,刷新浏览器,在脚本文件的下拉框就会有新生成的 `.json` 脚本文件,选择json文件和视频就可以开始剪辑了。 +
+ 003 +
+ +#### 4. 检查视频,若视频存在不符合规则的片段,可以点击重新生成或者手动编辑 +
+ 003 +
+ +#### 5. 配置视频基本参数 +
+ 003 +
+ +#### 6. 开始生成 +
+ 003 +
+ +#### 7. 视频生成完成 +
+ 003 +
+ +## 开发 💻 +1. 安装依赖 +```shell +conda create -n narratoai python=3.10 +conda activate narratoai +cd narratoai +pip install -r requirements.txt +``` + +2. 安装 ImageMagick +###### Windows: + +- 下载 https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-36-Q16-x64-static.exe +- 安装下载好的 ImageMagick,注意不要修改安装路径 +- 修改 `配置文件 config.toml` 中的 `imagemagick_path` 为你的实际安装路径(一般在 `C:\Program Files\ImageMagick-7.1.1-Q16\magick.exe`) + +###### MacOS: + +```shell +brew install imagemagick +```` + +###### Ubuntu + +```shell +sudo apt-get install imagemagick +``` + +###### CentOS + +```shell +sudo yum install ImageMagick +``` +3. 启动 webui +```shell +streamlit run ./webui/Main.py --browser.serverAddress=127.0.0.1 --server.enableCORS=True --browser.gatherUsageStats=False +``` +4. 访问 http://127.0.0.1:8501 + + +## 反馈建议 📢 + +### 👏👏👏 可以提交 [issue](https://github.com/linyqh/NarratoAI/issues)或者 [pull request](https://github.com/linyqh/NarratoAI/pulls) 🎉🎉🎉 + +## 参考项目 📚 +- https://github.com/FujiwaraChoki/MoneyPrinter +- https://github.com/harry0703/MoneyPrinterTurbo + +该项目基于以上项目重构而来,增加了影视解说功能,感谢大佬的开源精神 🥳🥳🥳 + +## 许可证 📝 + +点击查看 [`LICENSE`](LICENSE) 文件 + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=linyqh/NarratoAI&type=Date)](https://star-history.com/#linyqh/NarratoAI&Date) + diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/asgi.py b/app/asgi.py new file mode 100644 index 0000000..aec304c --- /dev/null +++ b/app/asgi.py @@ -0,0 +1,82 @@ +"""Application implementation - ASGI.""" + +import os + +from fastapi import FastAPI, Request +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse +from loguru import logger +from fastapi.staticfiles import StaticFiles +from fastapi.middleware.cors import CORSMiddleware + +from app.config import config +from app.models.exception import HttpException +from app.router import root_api_router +from app.utils import utils + + +def exception_handler(request: Request, e: HttpException): + return JSONResponse( + status_code=e.status_code, + content=utils.get_response(e.status_code, e.data, e.message), + ) + + +def validation_exception_handler(request: Request, e: RequestValidationError): + return JSONResponse( + status_code=400, + content=utils.get_response( + status=400, data=e.errors(), message="field required" + ), + ) + + +def get_application() -> FastAPI: + """Initialize FastAPI application. + + Returns: + FastAPI: Application object instance. + + """ + instance = FastAPI( + title=config.project_name, + description=config.project_description, + version=config.project_version, + debug=False, + ) + instance.include_router(root_api_router) + instance.add_exception_handler(HttpException, exception_handler) + instance.add_exception_handler(RequestValidationError, validation_exception_handler) + return instance + + +app = get_application() + +# Configures the CORS middleware for the FastAPI app +cors_allowed_origins_str = os.getenv("CORS_ALLOWED_ORIGINS", "") +origins = cors_allowed_origins_str.split(",") if cors_allowed_origins_str else ["*"] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +task_dir = utils.task_dir() +app.mount( + "/tasks", StaticFiles(directory=task_dir, html=True, follow_symlink=True), name="" +) + +public_dir = utils.public_dir() +app.mount("/", StaticFiles(directory=public_dir, html=True), name="") + + +@app.on_event("shutdown") +def shutdown_event(): + logger.info("shutdown event") + + +@app.on_event("startup") +def startup_event(): + logger.info("startup event") diff --git a/app/config/__init__.py b/app/config/__init__.py new file mode 100644 index 0000000..dd46812 --- /dev/null +++ b/app/config/__init__.py @@ -0,0 +1,56 @@ +import os +import sys + +from loguru import logger + +from app.config import config +from app.utils import utils + + +def __init_logger(): + # _log_file = utils.storage_dir("logs/server.log") + _lvl = config.log_level + root_dir = os.path.dirname( + os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + ) + + def format_record(record): + # 获取日志记录中的文件全路径 + file_path = record["file"].path + # 将绝对路径转换为相对于项目根目录的路径 + relative_path = os.path.relpath(file_path, root_dir) + # 更新记录中的文件路径 + record["file"].path = f"./{relative_path}" + # 返回修改后的格式字符串 + # 您可以根据需要调整这里的格式 + _format = ( + "{time:%Y-%m-%d %H:%M:%S} | " + + "{level} | " + + '"{file.path}:{line}": {function} ' + + "- {message}" + + "\n" + ) + return _format + + logger.remove() + + logger.add( + sys.stdout, + level=_lvl, + format=format_record, + colorize=True, + ) + + # logger.add( + # _log_file, + # level=_lvl, + # format=format_record, + # rotation="00:00", + # retention="3 days", + # backtrace=True, + # diagnose=True, + # enqueue=True, + # ) + + +__init_logger() diff --git a/app/config/config.py b/app/config/config.py new file mode 100644 index 0000000..a653ddc --- /dev/null +++ b/app/config/config.py @@ -0,0 +1,70 @@ +import os +import socket +import toml +import shutil +from loguru import logger + +root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) +config_file = f"{root_dir}/config.toml" + + +def load_config(): + # fix: IsADirectoryError: [Errno 21] Is a directory: '/NarratoAI/config.toml' + if os.path.isdir(config_file): + shutil.rmtree(config_file) + + if not os.path.isfile(config_file): + example_file = f"{root_dir}/config.example.toml" + if os.path.isfile(example_file): + shutil.copyfile(example_file, config_file) + logger.info(f"copy config.example.toml to config.toml") + + logger.info(f"load config from file: {config_file}") + + try: + _config_ = toml.load(config_file) + except Exception as e: + logger.warning(f"load config failed: {str(e)}, try to load as utf-8-sig") + with open(config_file, mode="r", encoding="utf-8-sig") as fp: + _cfg_content = fp.read() + _config_ = toml.loads(_cfg_content) + return _config_ + + +def save_config(): + with open(config_file, "w", encoding="utf-8") as f: + _cfg["app"] = app + _cfg["azure"] = azure + _cfg["ui"] = ui + f.write(toml.dumps(_cfg)) + + +_cfg = load_config() +app = _cfg.get("app", {}) +whisper = _cfg.get("whisper", {}) +proxy = _cfg.get("proxy", {}) +azure = _cfg.get("azure", {}) +ui = _cfg.get("ui", {}) + +hostname = socket.gethostname() + +log_level = _cfg.get("log_level", "DEBUG") +listen_host = _cfg.get("listen_host", "0.0.0.0") +listen_port = _cfg.get("listen_port", 8080) +project_name = _cfg.get("project_name", "NarratoAI") +project_description = _cfg.get( + "project_description", + "https://github.com/linyqh/NarratoAI", +) +project_version = _cfg.get("app", {}).get("project_version") +reload_debug = False + +imagemagick_path = app.get("imagemagick_path", "") +if imagemagick_path and os.path.isfile(imagemagick_path): + os.environ["IMAGEMAGICK_BINARY"] = imagemagick_path + +ffmpeg_path = app.get("ffmpeg_path", "") +if ffmpeg_path and os.path.isfile(ffmpeg_path): + os.environ["IMAGEIO_FFMPEG_EXE"] = ffmpeg_path + +logger.info(f"{project_name} v{project_version}") diff --git a/app/controllers/base.py b/app/controllers/base.py new file mode 100644 index 0000000..122e341 --- /dev/null +++ b/app/controllers/base.py @@ -0,0 +1,31 @@ +from uuid import uuid4 + +from fastapi import Request + +from app.config import config +from app.models.exception import HttpException + + +def get_task_id(request: Request): + task_id = request.headers.get("x-task-id") + if not task_id: + task_id = uuid4() + return str(task_id) + + +def get_api_key(request: Request): + api_key = request.headers.get("x-api-key") + return api_key + + +def verify_token(request: Request): + token = get_api_key(request) + if token != config.app.get("api_key", ""): + request_id = get_task_id(request) + request_url = request.url + user_agent = request.headers.get("user-agent") + raise HttpException( + task_id=request_id, + status_code=401, + message=f"invalid token: {request_url}, {user_agent}", + ) diff --git a/app/controllers/manager/base_manager.py b/app/controllers/manager/base_manager.py new file mode 100644 index 0000000..462589e --- /dev/null +++ b/app/controllers/manager/base_manager.py @@ -0,0 +1,64 @@ +import threading +from typing import Callable, Any, Dict + + +class TaskManager: + def __init__(self, max_concurrent_tasks: int): + self.max_concurrent_tasks = max_concurrent_tasks + self.current_tasks = 0 + self.lock = threading.Lock() + self.queue = self.create_queue() + + def create_queue(self): + raise NotImplementedError() + + def add_task(self, func: Callable, *args: Any, **kwargs: Any): + with self.lock: + if self.current_tasks < self.max_concurrent_tasks: + print(f"add task: {func.__name__}, current_tasks: {self.current_tasks}") + self.execute_task(func, *args, **kwargs) + else: + print( + f"enqueue task: {func.__name__}, current_tasks: {self.current_tasks}" + ) + self.enqueue({"func": func, "args": args, "kwargs": kwargs}) + + def execute_task(self, func: Callable, *args: Any, **kwargs: Any): + thread = threading.Thread( + target=self.run_task, args=(func, *args), kwargs=kwargs + ) + thread.start() + + def run_task(self, func: Callable, *args: Any, **kwargs: Any): + try: + with self.lock: + self.current_tasks += 1 + func(*args, **kwargs) # 在这里调用函数,传递*args和**kwargs + finally: + self.task_done() + + def check_queue(self): + with self.lock: + if ( + self.current_tasks < self.max_concurrent_tasks + and not self.is_queue_empty() + ): + task_info = self.dequeue() + func = task_info["func"] + args = task_info.get("args", ()) + kwargs = task_info.get("kwargs", {}) + self.execute_task(func, *args, **kwargs) + + def task_done(self): + with self.lock: + self.current_tasks -= 1 + self.check_queue() + + def enqueue(self, task: Dict): + raise NotImplementedError() + + def dequeue(self): + raise NotImplementedError() + + def is_queue_empty(self): + raise NotImplementedError() diff --git a/app/controllers/manager/memory_manager.py b/app/controllers/manager/memory_manager.py new file mode 100644 index 0000000..cf7321f --- /dev/null +++ b/app/controllers/manager/memory_manager.py @@ -0,0 +1,18 @@ +from queue import Queue +from typing import Dict + +from app.controllers.manager.base_manager import TaskManager + + +class InMemoryTaskManager(TaskManager): + def create_queue(self): + return Queue() + + def enqueue(self, task: Dict): + self.queue.put(task) + + def dequeue(self): + return self.queue.get() + + def is_queue_empty(self): + return self.queue.empty() diff --git a/app/controllers/manager/redis_manager.py b/app/controllers/manager/redis_manager.py new file mode 100644 index 0000000..cad1912 --- /dev/null +++ b/app/controllers/manager/redis_manager.py @@ -0,0 +1,56 @@ +import json +from typing import Dict + +import redis + +from app.controllers.manager.base_manager import TaskManager +from app.models.schema import VideoParams +from app.services import task as tm + +FUNC_MAP = { + "start": tm.start, + # 'start_test': tm.start_test +} + + +class RedisTaskManager(TaskManager): + def __init__(self, max_concurrent_tasks: int, redis_url: str): + self.redis_client = redis.Redis.from_url(redis_url) + super().__init__(max_concurrent_tasks) + + def create_queue(self): + return "task_queue" + + def enqueue(self, task: Dict): + task_with_serializable_params = task.copy() + + if "params" in task["kwargs"] and isinstance( + task["kwargs"]["params"], VideoParams + ): + task_with_serializable_params["kwargs"]["params"] = task["kwargs"][ + "params" + ].dict() + + # 将函数对象转换为其名称 + task_with_serializable_params["func"] = task["func"].__name__ + self.redis_client.rpush(self.queue, json.dumps(task_with_serializable_params)) + + def dequeue(self): + task_json = self.redis_client.lpop(self.queue) + if task_json: + task_info = json.loads(task_json) + # 将函数名称转换回函数对象 + task_info["func"] = FUNC_MAP[task_info["func"]] + + if "params" in task_info["kwargs"] and isinstance( + task_info["kwargs"]["params"], dict + ): + task_info["kwargs"]["params"] = VideoParams( + **task_info["kwargs"]["params"] + ) + + return task_info + return None + + def is_queue_empty(self): + return self.redis_client.llen(self.queue) == 0 diff --git a/app/controllers/ping.py b/app/controllers/ping.py new file mode 100644 index 0000000..a3eeff0 --- /dev/null +++ b/app/controllers/ping.py @@ -0,0 +1,14 @@ +from fastapi import APIRouter +from fastapi import Request + +router = APIRouter() + + +@router.get( + "/ping", + tags=["Health Check"], + description="检查服务可用性", + response_description="pong", +) +def ping(request: Request) -> str: + return "pong" diff --git a/app/controllers/v1/base.py b/app/controllers/v1/base.py new file mode 100644 index 0000000..51794df --- /dev/null +++ b/app/controllers/v1/base.py @@ -0,0 +1,11 @@ +from fastapi import APIRouter, Depends + + +def new_router(dependencies=None): + router = APIRouter() + router.tags = ["V1"] + router.prefix = "/api/v1" + # 将认证依赖项应用于所有路由 + if dependencies: + router.dependencies = dependencies + return router diff --git a/app/controllers/v1/llm.py b/app/controllers/v1/llm.py new file mode 100644 index 0000000..e841d68 --- /dev/null +++ b/app/controllers/v1/llm.py @@ -0,0 +1,44 @@ +from fastapi import Request +from app.controllers.v1.base import new_router +from app.models.schema import ( + VideoScriptResponse, + VideoScriptRequest, + VideoTermsResponse, + VideoTermsRequest, +) +from app.services import llm +from app.utils import utils + +# 认证依赖项 +# router = new_router(dependencies=[Depends(base.verify_token)]) +router = new_router() + + +@router.post( + "/scripts", + response_model=VideoScriptResponse, + summary="Create a script for the video", +) +def generate_video_script(request: Request, body: VideoScriptRequest): + video_script = llm.generate_script( + video_subject=body.video_subject, + language=body.video_language, + paragraph_number=body.paragraph_number, + ) + response = {"video_script": video_script} + return utils.get_response(200, response) + + +@router.post( + "/terms", + response_model=VideoTermsResponse, + summary="Generate video terms based on the video script", +) +def generate_video_terms(request: Request, body: VideoTermsRequest): + video_terms = llm.generate_terms( + video_subject=body.video_subject, + video_script=body.video_script, + amount=body.amount, + ) + response = {"video_terms": video_terms} + return utils.get_response(200, response) diff --git a/app/controllers/v1/video.py b/app/controllers/v1/video.py new file mode 100644 index 0000000..0430707 --- /dev/null +++ b/app/controllers/v1/video.py @@ -0,0 +1,271 @@ +import glob +import os +import pathlib +import shutil +from typing import Union + +from fastapi import BackgroundTasks, Depends, Path, Request, UploadFile +from fastapi.params import File +from fastapi.responses import FileResponse, StreamingResponse +from loguru import logger + +from app.config import config +from app.controllers import base +from app.controllers.manager.memory_manager import InMemoryTaskManager +from app.controllers.manager.redis_manager import RedisTaskManager +from app.controllers.v1.base import new_router +from app.models.exception import HttpException +from app.models.schema import ( + AudioRequest, + BgmRetrieveResponse, + BgmUploadResponse, + SubtitleRequest, + TaskDeletionResponse, + TaskQueryRequest, + TaskQueryResponse, + TaskResponse, + TaskVideoRequest, +) +from app.services import state as sm +from app.services import task as tm +from app.utils import utils + +# 认证依赖项 +# router = new_router(dependencies=[Depends(base.verify_token)]) +router = new_router() + +_enable_redis = config.app.get("enable_redis", False) +_redis_host = config.app.get("redis_host", "localhost") +_redis_port = config.app.get("redis_port", 6379) +_redis_db = config.app.get("redis_db", 0) +_redis_password = config.app.get("redis_password", None) +_max_concurrent_tasks = config.app.get("max_concurrent_tasks", 5) + +redis_url = f"redis://:{_redis_password}@{_redis_host}:{_redis_port}/{_redis_db}" +# 根据配置选择合适的任务管理器 +if _enable_redis: + task_manager = RedisTaskManager( + max_concurrent_tasks=_max_concurrent_tasks, redis_url=redis_url + ) +else: + task_manager = InMemoryTaskManager(max_concurrent_tasks=_max_concurrent_tasks) + + +@router.post("/videos", response_model=TaskResponse, summary="Generate a short video") +def create_video( + background_tasks: BackgroundTasks, request: Request, body: TaskVideoRequest +): + return create_task(request, body, stop_at="video") + + +@router.post("/subtitle", response_model=TaskResponse, summary="Generate subtitle only") +def create_subtitle( + background_tasks: BackgroundTasks, request: Request, body: SubtitleRequest +): + return create_task(request, body, stop_at="subtitle") + + +@router.post("/audio", response_model=TaskResponse, summary="Generate audio only") +def create_audio( + background_tasks: BackgroundTasks, request: Request, body: AudioRequest +): + return create_task(request, body, stop_at="audio") + + +def create_task( + request: Request, + body: Union[TaskVideoRequest, SubtitleRequest, AudioRequest], + stop_at: str, +): + task_id = utils.get_uuid() + request_id = base.get_task_id(request) + try: + task = { + "task_id": task_id, + "request_id": request_id, + "params": body.model_dump(), + } + sm.state.update_task(task_id) + task_manager.add_task(tm.start, task_id=task_id, params=body, stop_at=stop_at) + logger.success(f"Task created: {utils.to_json(task)}") + return utils.get_response(200, task) + except ValueError as e: + raise HttpException( + task_id=task_id, status_code=400, message=f"{request_id}: {str(e)}" + ) + + +@router.get( + "/tasks/{task_id}", response_model=TaskQueryResponse, summary="Query task status" +) +def get_task( + request: Request, + task_id: str = Path(..., description="Task ID"), + query: TaskQueryRequest = Depends(), +): + endpoint = config.app.get("endpoint", "") + if not endpoint: + endpoint = str(request.base_url) + endpoint = endpoint.rstrip("/") + + request_id = base.get_task_id(request) + task = sm.state.get_task(task_id) + if task: + task_dir = utils.task_dir() + + def file_to_uri(file): + if not file.startswith(endpoint): + _uri_path = v.replace(task_dir, "tasks").replace("\\", "/") + _uri_path = f"{endpoint}/{_uri_path}" + else: + _uri_path = file + return _uri_path + + if "videos" in task: + videos = task["videos"] + urls = [] + for v in videos: + urls.append(file_to_uri(v)) + task["videos"] = urls + if "combined_videos" in task: + combined_videos = task["combined_videos"] + urls = [] + for v in combined_videos: + urls.append(file_to_uri(v)) + task["combined_videos"] = urls + return utils.get_response(200, task) + + raise HttpException( + task_id=task_id, status_code=404, message=f"{request_id}: task not found" + ) + + +@router.delete( + "/tasks/{task_id}", + response_model=TaskDeletionResponse, + summary="Delete a generated short video task", +) +def delete_video(request: Request, task_id: str = Path(..., description="Task ID")): + request_id = base.get_task_id(request) + task = sm.state.get_task(task_id) + if task: + tasks_dir = utils.task_dir() + current_task_dir = os.path.join(tasks_dir, task_id) + if os.path.exists(current_task_dir): + shutil.rmtree(current_task_dir) + + sm.state.delete_task(task_id) + logger.success(f"video deleted: {utils.to_json(task)}") + return utils.get_response(200) + + raise HttpException( + task_id=task_id, status_code=404, message=f"{request_id}: task not found" + ) + + +@router.get( + "/musics", response_model=BgmRetrieveResponse, summary="Retrieve local BGM files" +) +def get_bgm_list(request: Request): + suffix = "*.mp3" + song_dir = utils.song_dir() + files = glob.glob(os.path.join(song_dir, suffix)) + bgm_list = [] + for file in files: + bgm_list.append( + { + "name": os.path.basename(file), + "size": os.path.getsize(file), + "file": file, + } + ) + response = {"files": bgm_list} + return utils.get_response(200, response) + + +@router.post( + "/musics", + response_model=BgmUploadResponse, + summary="Upload the BGM file to the songs directory", +) +def upload_bgm_file(request: Request, file: UploadFile = File(...)): + request_id = base.get_task_id(request) + # check file ext + if file.filename.endswith("mp3"): + song_dir = utils.song_dir() + save_path = os.path.join(song_dir, file.filename) + # save file + with open(save_path, "wb+") as buffer: + # If the file already exists, it will be overwritten + file.file.seek(0) + buffer.write(file.file.read()) + response = {"file": save_path} + return utils.get_response(200, response) + + raise HttpException( + "", status_code=400, message=f"{request_id}: Only *.mp3 files can be uploaded" + ) + + +@router.get("/stream/{file_path:path}") +async def stream_video(request: Request, file_path: str): + tasks_dir = utils.task_dir() + video_path = os.path.join(tasks_dir, file_path) + range_header = request.headers.get("Range") + video_size = os.path.getsize(video_path) + start, end = 0, video_size - 1 + + length = video_size + if range_header: + range_ = range_header.split("bytes=")[1] + start, end = [int(part) if part else None for part in range_.split("-")] + if start is None: + start = video_size - end + end = video_size - 1 + if end is None: + end = video_size - 1 + length = end - start + 1 + + def file_iterator(file_path, offset=0, bytes_to_read=None): + with open(file_path, "rb") as f: + f.seek(offset, os.SEEK_SET) + remaining = bytes_to_read or video_size + while remaining > 0: + bytes_to_read = min(4096, remaining) + data = f.read(bytes_to_read) + if not data: + break + remaining -= len(data) + yield data + + response = StreamingResponse( + file_iterator(video_path, start, length), media_type="video/mp4" + ) + response.headers["Content-Range"] = f"bytes {start}-{end}/{video_size}" + response.headers["Accept-Ranges"] = "bytes" + response.headers["Content-Length"] = str(length) + response.status_code = 206 # Partial Content + + return response + + +@router.get("/download/{file_path:path}") +async def download_video(_: Request, file_path: str): + """ + download video + :param _: Request request + :param file_path: video file path, eg: /cd1727ed-3473-42a2-a7da-4faafafec72b/final-1.mp4 + :return: video file + """ + tasks_dir = utils.task_dir() + video_path = os.path.join(tasks_dir, file_path) + file_path = pathlib.Path(video_path) + filename = file_path.stem + extension = file_path.suffix + headers = {"Content-Disposition": f"attachment; filename={filename}{extension}"} + return FileResponse( + path=video_path, + headers=headers, + filename=f"{filename}{extension}", + media_type=f"video/{extension[1:]}", + ) diff --git a/app/models/__init__.py b/app/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models/const.py b/app/models/const.py new file mode 100644 index 0000000..e7540ef --- /dev/null +++ b/app/models/const.py @@ -0,0 +1,25 @@ +PUNCTUATIONS = [ + "?", + ",", + ".", + "、", + ";", + ":", + "!", + "…", + "?", + ",", + "。", + "、", + ";", + ":", + "!", + "...", +] + +TASK_STATE_FAILED = -1 +TASK_STATE_COMPLETE = 1 +TASK_STATE_PROCESSING = 4 + +FILE_TYPE_VIDEOS = ["mp4", "mov", "mkv", "webm"] +FILE_TYPE_IMAGES = ["jpg", "jpeg", "png", "bmp"] diff --git a/app/models/exception.py b/app/models/exception.py new file mode 100644 index 0000000..b186cae --- /dev/null +++ b/app/models/exception.py @@ -0,0 +1,28 @@ +import traceback +from typing import Any + +from loguru import logger + + +class HttpException(Exception): + def __init__( + self, task_id: str, status_code: int, message: str = "", data: Any = None + ): + self.message = message + self.status_code = status_code + self.data = data + # 获取异常堆栈信息 + tb_str = traceback.format_exc().strip() + if not tb_str or tb_str == "NoneType: None": + msg = f"HttpException: {status_code}, {task_id}, {message}" + else: + msg = f"HttpException: {status_code}, {task_id}, {message}\n{tb_str}" + + if status_code == 400: + logger.warning(msg) + else: + logger.error(msg) + + +class FileNotFoundException(Exception): + pass diff --git a/app/models/schema.py b/app/models/schema.py new file mode 100644 index 0000000..25e3ce8 --- /dev/null +++ b/app/models/schema.py @@ -0,0 +1,370 @@ +import warnings +from enum import Enum +from typing import Any, List, Optional + +import pydantic +from pydantic import BaseModel + +# 忽略 Pydantic 的特定警告 +warnings.filterwarnings( + "ignore", + category=UserWarning, + message="Field name.*shadows an attribute in parent.*", +) + + +class VideoConcatMode(str, Enum): + random = "random" + sequential = "sequential" + + +class VideoAspect(str, Enum): + landscape = "16:9" + portrait = "9:16" + square = "1:1" + + def to_resolution(self): + if self == VideoAspect.landscape.value: + return 1920, 1080 + elif self == VideoAspect.portrait.value: + return 1080, 1920 + elif self == VideoAspect.square.value: + return 1080, 1080 + return 1080, 1920 + + +class _Config: + arbitrary_types_allowed = True + + +@pydantic.dataclasses.dataclass(config=_Config) +class MaterialInfo: + provider: str = "pexels" + url: str = "" + duration: int = 0 + + +# VoiceNames = [ +# # zh-CN +# "female-zh-CN-XiaoxiaoNeural", +# "female-zh-CN-XiaoyiNeural", +# "female-zh-CN-liaoning-XiaobeiNeural", +# "female-zh-CN-shaanxi-XiaoniNeural", +# +# "male-zh-CN-YunjianNeural", +# "male-zh-CN-YunxiNeural", +# "male-zh-CN-YunxiaNeural", +# "male-zh-CN-YunyangNeural", +# +# # "female-zh-HK-HiuGaaiNeural", +# # "female-zh-HK-HiuMaanNeural", +# # "male-zh-HK-WanLungNeural", +# # +# # "female-zh-TW-HsiaoChenNeural", +# # "female-zh-TW-HsiaoYuNeural", +# # "male-zh-TW-YunJheNeural", +# +# # en-US +# "female-en-US-AnaNeural", +# "female-en-US-AriaNeural", +# "female-en-US-AvaNeural", +# "female-en-US-EmmaNeural", +# "female-en-US-JennyNeural", +# "female-en-US-MichelleNeural", +# +# "male-en-US-AndrewNeural", +# "male-en-US-BrianNeural", +# "male-en-US-ChristopherNeural", +# "male-en-US-EricNeural", +# "male-en-US-GuyNeural", +# "male-en-US-RogerNeural", +# "male-en-US-SteffanNeural", +# ] + + +class VideoParams(BaseModel): + """ + { + "video_subject": "", + "video_aspect": "横屏 16:9(西瓜视频)", + "voice_name": "女生-晓晓", + "bgm_name": "random", + "font_name": "STHeitiMedium 黑体-中", + "text_color": "#FFFFFF", + "font_size": 60, + "stroke_color": "#000000", + "stroke_width": 1.5 + } + """ + + video_subject: str + video_script: str = "" # 用于生成视频的脚本 + video_terms: Optional[str | list] = None # 用于生成视频的关键词 + video_aspect: Optional[VideoAspect] = VideoAspect.portrait.value + video_concat_mode: Optional[VideoConcatMode] = VideoConcatMode.random.value + video_clip_duration: Optional[int] = 5 + video_count: Optional[int] = 1 + + video_source: Optional[str] = "pexels" + video_materials: Optional[List[MaterialInfo]] = None # 用于生成视频的素材 + + video_language: Optional[str] = "" # auto detect + + voice_name: Optional[str] = "" + voice_volume: Optional[float] = 1.0 + voice_rate: Optional[float] = 1.0 + bgm_type: Optional[str] = "random" + bgm_file: Optional[str] = "" + bgm_volume: Optional[float] = 0.2 + + subtitle_enabled: Optional[bool] = True + subtitle_position: Optional[str] = "bottom" # top, bottom, center + custom_position: float = 70.0 + font_name: Optional[str] = "STHeitiMedium.ttc" + text_fore_color: Optional[str] = "#FFFFFF" + text_background_color: Optional[str] = "transparent" + + font_size: int = 60 + stroke_color: Optional[str] = "#000000" + stroke_width: float = 1.5 + n_threads: Optional[int] = 2 + paragraph_number: Optional[int] = 1 + + +class SubtitleRequest(BaseModel): + video_script: str + video_language: Optional[str] = "" + voice_name: Optional[str] = "zh-CN-XiaoxiaoNeural-Female" + voice_volume: Optional[float] = 1.0 + voice_rate: Optional[float] = 1.2 + bgm_type: Optional[str] = "random" + bgm_file: Optional[str] = "" + bgm_volume: Optional[float] = 0.2 + subtitle_position: Optional[str] = "bottom" + font_name: Optional[str] = "STHeitiMedium.ttc" + text_fore_color: Optional[str] = "#FFFFFF" + text_background_color: Optional[str] = "transparent" + font_size: int = 60 + stroke_color: Optional[str] = "#000000" + stroke_width: float = 1.5 + video_source: Optional[str] = "local" + subtitle_enabled: Optional[str] = "true" + + +class AudioRequest(BaseModel): + video_script: str + video_language: Optional[str] = "" + voice_name: Optional[str] = "zh-CN-XiaoxiaoNeural-Female" + voice_volume: Optional[float] = 1.0 + voice_rate: Optional[float] = 1.2 + bgm_type: Optional[str] = "random" + bgm_file: Optional[str] = "" + bgm_volume: Optional[float] = 0.2 + video_source: Optional[str] = "local" + + +class VideoScriptParams: + """ + { + "video_subject": "春天的花海", + "video_language": "", + "paragraph_number": 1 + } + """ + + video_subject: Optional[str] = "春天的花海" + video_language: Optional[str] = "" + paragraph_number: Optional[int] = 1 + + +class VideoTermsParams: + """ + { + "video_subject": "", + "video_script": "", + "amount": 5 + } + """ + + video_subject: Optional[str] = "春天的花海" + video_script: Optional[str] = ( + "春天的花海,如诗如画般展现在眼前。万物复苏的季节里,大地披上了一袭绚丽多彩的盛装。金黄的迎春、粉嫩的樱花、洁白的梨花、艳丽的郁金香……" + ) + amount: Optional[int] = 5 + + +class BaseResponse(BaseModel): + status: int = 200 + message: Optional[str] = "success" + data: Any = None + + +class TaskVideoRequest(VideoParams, BaseModel): + pass + + +class TaskQueryRequest(BaseModel): + pass + + +class VideoScriptRequest(VideoScriptParams, BaseModel): + pass + + +class VideoTermsRequest(VideoTermsParams, BaseModel): + pass + + +###################################################################################################### +###################################################################################################### +###################################################################################################### +###################################################################################################### +class TaskResponse(BaseResponse): + class TaskResponseData(BaseModel): + task_id: str + + data: TaskResponseData + + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": {"task_id": "6c85c8cc-a77a-42b9-bc30-947815aa0558"}, + }, + } + + +class TaskQueryResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": { + "state": 1, + "progress": 100, + "videos": [ + "http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/final-1.mp4" + ], + "combined_videos": [ + "http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4" + ], + }, + }, + } + + +class TaskDeletionResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": { + "state": 1, + "progress": 100, + "videos": [ + "http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/final-1.mp4" + ], + "combined_videos": [ + "http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4" + ], + }, + }, + } + + +class VideoScriptResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": { + "video_script": "春天的花海,是大自然的一幅美丽画卷。在这个季节里,大地复苏,万物生长,花朵争相绽放,形成了一片五彩斑斓的花海..." + }, + }, + } + + +class VideoTermsResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": {"video_terms": ["sky", "tree"]}, + }, + } + + +class BgmRetrieveResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": { + "files": [ + { + "name": "output013.mp3", + "size": 1891269, + "file": "/NarratoAI/resource/songs/output013.mp3", + } + ] + }, + }, + } + + +class BgmUploadResponse(BaseResponse): + class Config: + json_schema_extra = { + "example": { + "status": 200, + "message": "success", + "data": {"file": "/NarratoAI/resource/songs/example.mp3"}, + }, + } + + +class VideoClipParams(BaseModel): + video_subject: Optional[str] = "春天的花海让人心旷神怡" + + video_clip_json: Optional[str] = "" # 视频剪辑脚本 + video_origin_path: Optional[str] = "" # 原视频路径 + video_aspect: Optional[VideoAspect] = VideoAspect.portrait.value # 视频比例 + video_clip_duration: Optional[int] = 5 # 视频片段时长 + video_count: Optional[int] = 1 # 视频片段数量 + video_source: Optional[str] = "local" + video_language: Optional[str] = "" # 自动检测 + video_concat_mode: Optional[VideoConcatMode] = VideoConcatMode.random.value + + # # 女性 + # "zh-CN-XiaoxiaoNeural", + # "zh-CN-XiaoyiNeural", + # # 男性 + # "zh-CN-YunjianNeural" 男声 + # "zh-CN-YunyangNeural", + # "zh-CN-YunxiNeural", + voice_name: Optional[str] = "zh-CN-YunjianNeural" # 语音名称 指定选择: + voice_volume: Optional[float] = 1.0 # 语音音量 + voice_rate: Optional[float] = 1.0 # 语速 + + bgm_name: Optional[str] = "random" # 背景音乐名称 + bgm_type: Optional[str] = "random" # 背景音乐类型 + bgm_file: Optional[str] = "" # 背景音乐文件 + bgm_volume: Optional[float] = 0.2 + + subtitle_enabled: Optional[bool] = True # 是否启用字幕 + subtitle_position: Optional[str] = "bottom" # top, bottom, center + font_name: Optional[str] = "STHeitiMedium.ttc" # 字体名称 + text_fore_color: Optional[str] = "#FFFFFF" # 文字前景色 + text_background_color: Optional[str] = "transparent" # 文字背景色 + + font_size: int = 60 # 文字大小 + stroke_color: Optional[str] = "#000000" # 文字描边颜色 + stroke_width: float = 1.5 # 文字描边宽度 + n_threads: Optional[int] = 2 # 线程数 + paragraph_number: Optional[int] = 1 # 段落数量 diff --git a/app/router.py b/app/router.py new file mode 100644 index 0000000..cf84037 --- /dev/null +++ b/app/router.py @@ -0,0 +1,17 @@ +"""Application configuration - root APIRouter. + +Defines all FastAPI application endpoints. + +Resources: + 1. https://fastapi.tiangolo.com/tutorial/bigger-applications + +""" + +from fastapi import APIRouter + +from app.controllers.v1 import llm, video + +root_api_router = APIRouter() +# v1 +root_api_router.include_router(video.router) +root_api_router.include_router(llm.router) diff --git a/app/services/__init__.py b/app/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/services/llm.py b/app/services/llm.py new file mode 100644 index 0000000..d260b07 --- /dev/null +++ b/app/services/llm.py @@ -0,0 +1,477 @@ +import logging +import re +import os +import json +from typing import List +from loguru import logger +from openai import OpenAI +from openai import AzureOpenAI +from openai.types.chat import ChatCompletion +import google.generativeai as gemini + +from app.config import config + +_max_retries = 5 + + +def _generate_response(prompt: str) -> str: + content = "" + llm_provider = config.app.get("llm_provider", "openai") + logger.info(f"llm provider: {llm_provider}") + if llm_provider == "g4f": + model_name = config.app.get("g4f_model_name", "") + if not model_name: + model_name = "gpt-3.5-turbo-16k-0613" + import g4f + + content = g4f.ChatCompletion.create( + model=model_name, + messages=[{"role": "user", "content": prompt}], + ) + else: + api_version = "" # for azure + if llm_provider == "moonshot": + api_key = config.app.get("moonshot_api_key") + model_name = config.app.get("moonshot_model_name") + base_url = "https://api.moonshot.cn/v1" + elif llm_provider == "ollama": + # api_key = config.app.get("openai_api_key") + api_key = "ollama" # any string works but you are required to have one + model_name = config.app.get("ollama_model_name") + base_url = config.app.get("ollama_base_url", "") + if not base_url: + base_url = "http://localhost:11434/v1" + elif llm_provider == "openai": + api_key = config.app.get("openai_api_key") + model_name = config.app.get("openai_model_name") + base_url = config.app.get("openai_base_url", "") + if not base_url: + base_url = "https://api.openai.com/v1" + elif llm_provider == "oneapi": + api_key = config.app.get("oneapi_api_key") + model_name = config.app.get("oneapi_model_name") + base_url = config.app.get("oneapi_base_url", "") + elif llm_provider == "azure": + api_key = config.app.get("azure_api_key") + model_name = config.app.get("azure_model_name") + base_url = config.app.get("azure_base_url", "") + api_version = config.app.get("azure_api_version", "2024-02-15-preview") + elif llm_provider == "gemini": + api_key = config.app.get("gemini_api_key") + model_name = config.app.get("gemini_model_name") + base_url = "***" + elif llm_provider == "qwen": + api_key = config.app.get("qwen_api_key") + model_name = config.app.get("qwen_model_name") + base_url = "***" + elif llm_provider == "cloudflare": + api_key = config.app.get("cloudflare_api_key") + model_name = config.app.get("cloudflare_model_name") + account_id = config.app.get("cloudflare_account_id") + base_url = "***" + elif llm_provider == "deepseek": + api_key = config.app.get("deepseek_api_key") + model_name = config.app.get("deepseek_model_name") + base_url = config.app.get("deepseek_base_url") + if not base_url: + base_url = "https://api.deepseek.com" + elif llm_provider == "ernie": + api_key = config.app.get("ernie_api_key") + secret_key = config.app.get("ernie_secret_key") + base_url = config.app.get("ernie_base_url") + model_name = "***" + if not secret_key: + raise ValueError( + f"{llm_provider}: secret_key is not set, please set it in the config.toml file." + ) + else: + raise ValueError( + "llm_provider is not set, please set it in the config.toml file." + ) + + if not api_key: + raise ValueError( + f"{llm_provider}: api_key is not set, please set it in the config.toml file." + ) + if not model_name: + raise ValueError( + f"{llm_provider}: model_name is not set, please set it in the config.toml file." + ) + if not base_url: + raise ValueError( + f"{llm_provider}: base_url is not set, please set it in the config.toml file." + ) + + if llm_provider == "qwen": + import dashscope + from dashscope.api_entities.dashscope_response import GenerationResponse + + dashscope.api_key = api_key + response = dashscope.Generation.call( + model=model_name, messages=[{"role": "user", "content": prompt}] + ) + if response: + if isinstance(response, GenerationResponse): + status_code = response.status_code + if status_code != 200: + raise Exception( + f'[{llm_provider}] returned an error response: "{response}"' + ) + + content = response["output"]["text"] + return content.replace("\n", "") + else: + raise Exception( + f'[{llm_provider}] returned an invalid response: "{response}"' + ) + else: + raise Exception(f"[{llm_provider}] returned an empty response") + + if llm_provider == "gemini": + import google.generativeai as genai + + genai.configure(api_key=api_key, transport="rest") + + generation_config = { + "temperature": 0.5, + "top_p": 1, + "top_k": 1, + "max_output_tokens": 2048, + } + + safety_settings = [ + { + "category": "HARM_CATEGORY_HARASSMENT", + "threshold": "BLOCK_ONLY_HIGH", + }, + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "threshold": "BLOCK_ONLY_HIGH", + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "threshold": "BLOCK_ONLY_HIGH", + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "threshold": "BLOCK_ONLY_HIGH", + }, + ] + + model = genai.GenerativeModel( + model_name=model_name, + generation_config=generation_config, + safety_settings=safety_settings, + ) + + try: + response = model.generate_content(prompt) + candidates = response.candidates + generated_text = candidates[0].content.parts[0].text + except (AttributeError, IndexError) as e: + print("Gemini Error:", e) + + return generated_text + + if llm_provider == "cloudflare": + import requests + + response = requests.post( + f"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/{model_name}", + headers={"Authorization": f"Bearer {api_key}"}, + json={ + "messages": [ + {"role": "system", "content": "You are a friendly assistant"}, + {"role": "user", "content": prompt}, + ] + }, + ) + result = response.json() + logger.info(result) + return result["result"]["response"] + + if llm_provider == "ernie": + import requests + + params = { + "grant_type": "client_credentials", + "client_id": api_key, + "client_secret": secret_key, + } + access_token = ( + requests.post("https://aip.baidubce.com/oauth/2.0/token", params=params) + .json() + .get("access_token") + ) + url = f"{base_url}?access_token={access_token}" + + payload = json.dumps( + { + "messages": [{"role": "user", "content": prompt}], + "temperature": 0.5, + "top_p": 0.8, + "penalty_score": 1, + "disable_search": False, + "enable_citation": False, + "response_format": "text", + } + ) + headers = {"Content-Type": "application/json"} + + response = requests.request( + "POST", url, headers=headers, data=payload + ).json() + return response.get("result") + + if llm_provider == "azure": + client = AzureOpenAI( + api_key=api_key, + api_version=api_version, + azure_endpoint=base_url, + ) + else: + client = OpenAI( + api_key=api_key, + base_url=base_url, + ) + + response = client.chat.completions.create( + model=model_name, messages=[{"role": "user", "content": prompt}] + ) + if response: + if isinstance(response, ChatCompletion): + content = response.choices[0].message.content + else: + raise Exception( + f'[{llm_provider}] returned an invalid response: "{response}", please check your network ' + f"connection and try again." + ) + else: + raise Exception( + f"[{llm_provider}] returned an empty response, please check your network connection and try again." + ) + + return content.replace("\n", "") + + +def generate_script( + video_subject: str, language: str = "", paragraph_number: int = 1 +) -> str: + prompt = f""" +# Role: Video Script Generator + +## Goals: +Generate a script for a video, depending on the subject of the video. + +## Constrains: +1. the script is to be returned as a string with the specified number of paragraphs. +2. do not under any circumstance reference this prompt in your response. +3. get straight to the point, don't start with unnecessary things like, "welcome to this video". +4. you must not include any type of markdown or formatting in the script, never use a title. +5. only return the raw content of the script. +6. do not include "voiceover", "narrator" or similar indicators of what should be spoken at the beginning of each paragraph or line. +7. you must not mention the prompt, or anything about the script itself. also, never talk about the amount of paragraphs or lines. just write the script. +8. respond in the same language as the video subject. + +# Initialization: +- video subject: {video_subject} +- number of paragraphs: {paragraph_number} +""".strip() + if language: + prompt += f"\n- language: {language}" + + final_script = "" + logger.info(f"subject: {video_subject}") + + def format_response(response): + # Clean the script + # Remove asterisks, hashes + response = response.replace("*", "") + response = response.replace("#", "") + + # Remove markdown syntax + response = re.sub(r"\[.*\]", "", response) + response = re.sub(r"\(.*\)", "", response) + + # Split the script into paragraphs + paragraphs = response.split("\n\n") + + # Select the specified number of paragraphs + selected_paragraphs = paragraphs[:paragraph_number] + + # Join the selected paragraphs into a single string + return "\n\n".join(paragraphs) + + for i in range(_max_retries): + try: + response = _generate_response(prompt=prompt) + if response: + final_script = format_response(response) + else: + logging.error("gpt returned an empty response") + + # g4f may return an error message + if final_script and "当日额度已消耗完" in final_script: + raise ValueError(final_script) + + if final_script: + break + except Exception as e: + logger.error(f"failed to generate script: {e}") + + if i < _max_retries: + logger.warning(f"failed to generate video script, trying again... {i + 1}") + + logger.success(f"completed: \n{final_script}") + return final_script.strip() + + +def generate_terms(video_subject: str, video_script: str, amount: int = 5) -> List[str]: + prompt = f""" +# Role: Video Search Terms Generator + +## Goals: +Generate {amount} search terms for stock videos, depending on the subject of a video. + +## Constrains: +1. the search terms are to be returned as a json-array of strings. +2. each search term should consist of 1-3 words, always add the main subject of the video. +3. you must only return the json-array of strings. you must not return anything else. you must not return the script. +4. the search terms must be related to the subject of the video. +5. reply with english search terms only. + +## Output Example: +["search term 1", "search term 2", "search term 3","search term 4","search term 5"] + +## Context: +### Video Subject +{video_subject} + +### Video Script +{video_script} + +Please note that you must use English for generating video search terms; Chinese is not accepted. +""".strip() + + logger.info(f"subject: {video_subject}") + + search_terms = [] + response = "" + for i in range(_max_retries): + try: + response = _generate_response(prompt) + search_terms = json.loads(response) + if not isinstance(search_terms, list) or not all( + isinstance(term, str) for term in search_terms + ): + logger.error("response is not a list of strings.") + continue + + except Exception as e: + logger.warning(f"failed to generate video terms: {str(e)}") + if response: + match = re.search(r"\[.*]", response) + if match: + try: + search_terms = json.loads(match.group()) + except Exception as e: + logger.warning(f"failed to generate video terms: {str(e)}") + pass + + if search_terms and len(search_terms) > 0: + break + if i < _max_retries: + logger.warning(f"failed to generate video terms, trying again... {i + 1}") + + logger.success(f"completed: \n{search_terms}") + return search_terms + + +def gemini_video2json(video_origin_name: str, video_origin_path: str, video_plot: str) -> str: + ''' + 使用 gemini-1.5-pro 进行影视解析 + Args: + video_origin_name: str - 影视作品的原始名称 + video_origin_path: str - 影视作品的原始路径 + video_plot: str - 影视作品的简介或剧情概述 + + Return: + str - 解析后的 JSON 格式字符串 + ''' + api_key = config.app.get("gemini_api_key") + model_name = config.app.get("gemini_model_name") + + gemini.configure(api_key=api_key) + model = gemini.GenerativeModel(model_name=model_name) + + prompt = """ +# Role: 影视解说专家 + +## Background: +擅长根据剧情描述视频的画面和故事,能够生成一段非常有趣的解说文案。 + +## Goals: +1. 根据剧情描述视频的画面和故事,并对重要的画面进行展开叙述 +2. 根据剧情内容,生成符合 tiktok/抖音 风格的影视解说文案 +3. 将结果直接以json格式输出给用户,需要包含字段: picture 画面描述, timestamp 时间戳, narration 解说文案 +4. 剧情内容如下:{%s} + +## Skills +- 精通 tiktok/抖音 等短视频影视解说文案撰写 +- 能够理解视频中的故事和画面表现 +- 能精准匹配视频中的画面和时间戳 +- 能精准把控旁白和时长 +- 精通中文 +- 精通JSON数据格式 + +## Constrains +- 解说文案的时长要和时间戳的时长尽量匹配 +- 忽略视频中关于广告的内容 +- 忽略视频中片头和片尾 +- 不得在脚本中包含任何类型的 Markdown 或格式 + +## Format +- 对应JSON的key为:picture, timestamp, narration +""" % video_plot + logger.debug(f"视频名称: {video_origin_name}") + try: + gemini_video_file = gemini.upload_file(video_origin_path) + logger.debug(f"上传视频至 Google cloud 成功: {gemini_video_file.name}") + while gemini_video_file.state.name == "PROCESSING": + import time + time.sleep(1) + gemini_video_file = gemini.get_file(gemini_video_file.name) + logger.debug(f"视频当前状态(ACTIVE才可用): {gemini_video_file.state.name}") + if gemini_video_file.state.name == "FAILED": + raise ValueError(gemini_video_file.state.name) + except: + logger.error("上传视频至 Google cloud 失败, 请检查 VPN 配置和 APIKey 是否正确") + raise TimeoutError("上传视频至 Google cloud 失败, 请检查 VPN 配置和 APIKey 是否正确") + + streams = model.generate_content([prompt, gemini_video_file], stream=True) + response = [] + for chunk in streams: + response.append(chunk.text) + + response = "".join(response) + logger.success(f"llm response: \n{response}") + + return response + + +if __name__ == "__main__": + juqin = "" + res = gemini_video2json("test", "/NarratoAI/resource/videos/test.mp4", juqin) + print(res) + + # video_subject = "生命的意义是什么" + # script = generate_script( + # video_subject=video_subject, language="zh-CN", paragraph_number=1 + # ) + # print("######################") + # print(script) + # search_terms = generate_terms( + # video_subject=video_subject, video_script=script, amount=5 + # ) + # print("######################") + # print(search_terms) diff --git a/app/services/material.py b/app/services/material.py new file mode 100644 index 0000000..7eca553 --- /dev/null +++ b/app/services/material.py @@ -0,0 +1,335 @@ +import os +import random +from urllib.parse import urlencode + +import requests +from typing import List +from loguru import logger +from moviepy.video.io.VideoFileClip import VideoFileClip + +from app.config import config +from app.models.schema import VideoAspect, VideoConcatMode, MaterialInfo +from app.utils import utils + +requested_count = 0 + + +def get_api_key(cfg_key: str): + api_keys = config.app.get(cfg_key) + if not api_keys: + raise ValueError( + f"\n\n##### {cfg_key} is not set #####\n\nPlease set it in the config.toml file: {config.config_file}\n\n" + f"{utils.to_json(config.app)}" + ) + + # if only one key is provided, return it + if isinstance(api_keys, str): + return api_keys + + global requested_count + requested_count += 1 + return api_keys[requested_count % len(api_keys)] + + +def search_videos_pexels( + search_term: str, + minimum_duration: int, + video_aspect: VideoAspect = VideoAspect.portrait, +) -> List[MaterialInfo]: + aspect = VideoAspect(video_aspect) + video_orientation = aspect.name + video_width, video_height = aspect.to_resolution() + api_key = get_api_key("pexels_api_keys") + headers = {"Authorization": api_key} + # Build URL + params = {"query": search_term, "per_page": 20, "orientation": video_orientation} + query_url = f"https://api.pexels.com/videos/search?{urlencode(params)}" + logger.info(f"searching videos: {query_url}, with proxies: {config.proxy}") + + try: + r = requests.get( + query_url, + headers=headers, + proxies=config.proxy, + verify=False, + timeout=(30, 60), + ) + response = r.json() + video_items = [] + if "videos" not in response: + logger.error(f"search videos failed: {response}") + return video_items + videos = response["videos"] + # loop through each video in the result + for v in videos: + duration = v["duration"] + # check if video has desired minimum duration + if duration < minimum_duration: + continue + video_files = v["video_files"] + # loop through each url to determine the best quality + for video in video_files: + w = int(video["width"]) + h = int(video["height"]) + if w == video_width and h == video_height: + item = MaterialInfo() + item.provider = "pexels" + item.url = video["link"] + item.duration = duration + video_items.append(item) + break + return video_items + except Exception as e: + logger.error(f"search videos failed: {str(e)}") + + return [] + + +def search_videos_pixabay( + search_term: str, + minimum_duration: int, + video_aspect: VideoAspect = VideoAspect.portrait, +) -> List[MaterialInfo]: + aspect = VideoAspect(video_aspect) + + video_width, video_height = aspect.to_resolution() + + api_key = get_api_key("pixabay_api_keys") + # Build URL + params = { + "q": search_term, + "video_type": "all", # Accepted values: "all", "film", "animation" + "per_page": 50, + "key": api_key, + } + query_url = f"https://pixabay.com/api/videos/?{urlencode(params)}" + logger.info(f"searching videos: {query_url}, with proxies: {config.proxy}") + + try: + r = requests.get( + query_url, proxies=config.proxy, verify=False, timeout=(30, 60) + ) + response = r.json() + video_items = [] + if "hits" not in response: + logger.error(f"search videos failed: {response}") + return video_items + videos = response["hits"] + # loop through each video in the result + for v in videos: + duration = v["duration"] + # check if video has desired minimum duration + if duration < minimum_duration: + continue + video_files = v["videos"] + # loop through each url to determine the best quality + for video_type in video_files: + video = video_files[video_type] + w = int(video["width"]) + h = int(video["height"]) + if w >= video_width: + item = MaterialInfo() + item.provider = "pixabay" + item.url = video["url"] + item.duration = duration + video_items.append(item) + break + return video_items + except Exception as e: + logger.error(f"search videos failed: {str(e)}") + + return [] + + +def save_video(video_url: str, save_dir: str = "") -> str: + if not save_dir: + save_dir = utils.storage_dir("cache_videos") + + if not os.path.exists(save_dir): + os.makedirs(save_dir) + + url_without_query = video_url.split("?")[0] + url_hash = utils.md5(url_without_query) + video_id = f"vid-{url_hash}" + video_path = f"{save_dir}/{video_id}.mp4" + + # if video already exists, return the path + if os.path.exists(video_path) and os.path.getsize(video_path) > 0: + logger.info(f"video already exists: {video_path}") + return video_path + + # if video does not exist, download it + with open(video_path, "wb") as f: + f.write( + requests.get( + video_url, proxies=config.proxy, verify=False, timeout=(60, 240) + ).content + ) + + if os.path.exists(video_path) and os.path.getsize(video_path) > 0: + try: + clip = VideoFileClip(video_path) + duration = clip.duration + fps = clip.fps + clip.close() + if duration > 0 and fps > 0: + return video_path + except Exception as e: + try: + os.remove(video_path) + except Exception as e: + logger.warning(f"无效的视频文件: {video_path} => {str(e)}") + return "" + + +def download_videos( + task_id: str, + search_terms: List[str], + source: str = "pexels", + video_aspect: VideoAspect = VideoAspect.portrait, + video_contact_mode: VideoConcatMode = VideoConcatMode.random, + audio_duration: float = 0.0, + max_clip_duration: int = 5, +) -> List[str]: + valid_video_items = [] + valid_video_urls = [] + found_duration = 0.0 + search_videos = search_videos_pexels + if source == "pixabay": + search_videos = search_videos_pixabay + + for search_term in search_terms: + video_items = search_videos( + search_term=search_term, + minimum_duration=max_clip_duration, + video_aspect=video_aspect, + ) + logger.info(f"found {len(video_items)} videos for '{search_term}'") + + for item in video_items: + if item.url not in valid_video_urls: + valid_video_items.append(item) + valid_video_urls.append(item.url) + found_duration += item.duration + + logger.info( + f"found total videos: {len(valid_video_items)}, required duration: {audio_duration} seconds, found duration: {found_duration} seconds" + ) + video_paths = [] + + material_directory = config.app.get("material_directory", "").strip() + if material_directory == "task": + material_directory = utils.task_dir(task_id) + elif material_directory and not os.path.isdir(material_directory): + material_directory = "" + + if video_contact_mode.value == VideoConcatMode.random.value: + random.shuffle(valid_video_items) + + total_duration = 0.0 + for item in valid_video_items: + try: + logger.info(f"downloading video: {item.url}") + saved_video_path = save_video( + video_url=item.url, save_dir=material_directory + ) + if saved_video_path: + logger.info(f"video saved: {saved_video_path}") + video_paths.append(saved_video_path) + seconds = min(max_clip_duration, item.duration) + total_duration += seconds + if total_duration > audio_duration: + logger.info( + f"total duration of downloaded videos: {total_duration} seconds, skip downloading more" + ) + break + except Exception as e: + logger.error(f"failed to download video: {utils.to_json(item)} => {str(e)}") + logger.success(f"downloaded {len(video_paths)} videos") + return video_paths + + +def save_clip_video(timestamp: str, origin_video: str, save_dir: str = "") -> dict: + """ + 保存剪辑后的视频 + Args: + timestamp: 需要裁剪的单个时间戳,如:'00:36-00:40' + origin_video: 原视频路径 + save_dir: 存储目录 + + Returns: + 裁剪后的视频路径 + """ + if not save_dir: + save_dir = utils.storage_dir("cache_videos") + + if not os.path.exists(save_dir): + os.makedirs(save_dir) + + # url_hash = utils.md5(str(uuid.uuid4())) + video_id = f"vid-{timestamp.replace(':', '_')}" + video_path = f"{save_dir}/{video_id}.mp4" + + if os.path.exists(video_path) and os.path.getsize(video_path) > 0: + logger.info(f"video already exists: {video_path}") + return {timestamp: video_path} + + # 剪辑视频 + start, end = utils.split_timestamp(timestamp) + video = VideoFileClip(origin_video).subclip(start, end) + video.write_videofile(video_path) + + if os.path.getsize(video_path) > 0 and os.path.exists(video_path): + try: + clip = VideoFileClip(video_path) + duration = clip.duration + fps = clip.fps + clip.close() + if duration > 0 and fps > 0: + return {timestamp: video_path} + except Exception as e: + try: + os.remove(video_path) + except Exception as e: + logger.warning(str(e)) + logger.warning(f"无效的视频文件: {video_path}") + return {} + + +def clip_videos(task_id: str, timestamp_terms: List[str], origin_video: str, ) -> dict: + """ + 剪辑视频 + Args: + task_id: 任务id + timestamp_terms: 需要剪辑的时间戳列表,如:['00:00-00:20', '00:36-00:40', '07:07-07:22'] + origin_video: 原视频路径 + + Returns: + 剪辑后的视频路径 + """ + video_paths = {} + for item in timestamp_terms: + logger.info(f"需要裁剪 '{origin_video}' 为 {len(timestamp_terms)} 个视频") + material_directory = config.app.get("material_directory", "").strip() + if material_directory == "task": + material_directory = utils.task_dir(task_id) + elif material_directory and not os.path.isdir(material_directory): + material_directory = "" + + try: + logger.info(f"clip video: {item}") + saved_video_path = save_clip_video(timestamp=item, origin_video=origin_video, save_dir=material_directory) + if saved_video_path: + logger.info(f"video saved: {saved_video_path}") + video_paths.update(saved_video_path) + except Exception as e: + logger.error(f"视频裁剪失败: {utils.to_json(item)} => {str(e)}") + return {} + logger.success(f"裁剪 {len(video_paths)} videos") + return video_paths + + +if __name__ == "__main__": + download_videos( + "test123", ["Money Exchange Medium"], audio_duration=100, source="pixabay" + ) diff --git a/app/services/state.py b/app/services/state.py new file mode 100644 index 0000000..51904fb --- /dev/null +++ b/app/services/state.py @@ -0,0 +1,122 @@ +import ast +from abc import ABC, abstractmethod +from app.config import config +from app.models import const + + +# Base class for state management +class BaseState(ABC): + @abstractmethod + def update_task(self, task_id: str, state: int, progress: int = 0, **kwargs): + pass + + @abstractmethod + def get_task(self, task_id: str): + pass + + +# Memory state management +class MemoryState(BaseState): + def __init__(self): + self._tasks = {} + + def update_task( + self, + task_id: str, + state: int = const.TASK_STATE_PROCESSING, + progress: int = 0, + **kwargs, + ): + progress = int(progress) + if progress > 100: + progress = 100 + + self._tasks[task_id] = { + "state": state, + "progress": progress, + **kwargs, + } + + def get_task(self, task_id: str): + return self._tasks.get(task_id, None) + + def delete_task(self, task_id: str): + if task_id in self._tasks: + del self._tasks[task_id] + + +# Redis state management +class RedisState(BaseState): + def __init__(self, host="localhost", port=6379, db=0, password=None): + import redis + + self._redis = redis.StrictRedis(host=host, port=port, db=db, password=password) + + def update_task( + self, + task_id: str, + state: int = const.TASK_STATE_PROCESSING, + progress: int = 0, + **kwargs, + ): + progress = int(progress) + if progress > 100: + progress = 100 + + fields = { + "state": state, + "progress": progress, + **kwargs, + } + + for field, value in fields.items(): + self._redis.hset(task_id, field, str(value)) + + def get_task(self, task_id: str): + task_data = self._redis.hgetall(task_id) + if not task_data: + return None + + task = { + key.decode("utf-8"): self._convert_to_original_type(value) + for key, value in task_data.items() + } + return task + + def delete_task(self, task_id: str): + self._redis.delete(task_id) + + @staticmethod + def _convert_to_original_type(value): + """ + Convert the value from byte string to its original data type. + You can extend this method to handle other data types as needed. + """ + value_str = value.decode("utf-8") + + try: + # try to convert byte string array to list + return ast.literal_eval(value_str) + except (ValueError, SyntaxError): + pass + + if value_str.isdigit(): + return int(value_str) + # Add more conversions here if needed + return value_str + + +# Global state +_enable_redis = config.app.get("enable_redis", False) +_redis_host = config.app.get("redis_host", "localhost") +_redis_port = config.app.get("redis_port", 6379) +_redis_db = config.app.get("redis_db", 0) +_redis_password = config.app.get("redis_password", None) + +state = ( + RedisState( + host=_redis_host, port=_redis_port, db=_redis_db, password=_redis_password + ) + if _enable_redis + else MemoryState() +) diff --git a/app/services/subtitle.py b/app/services/subtitle.py new file mode 100644 index 0000000..ba6e224 --- /dev/null +++ b/app/services/subtitle.py @@ -0,0 +1,299 @@ +import json +import os.path +import re + +from faster_whisper import WhisperModel +from timeit import default_timer as timer +from loguru import logger + +from app.config import config +from app.utils import utils + +model_size = config.whisper.get("model_size", "large-v3") +device = config.whisper.get("device", "cpu") +compute_type = config.whisper.get("compute_type", "int8") +model = None + + +def create(audio_file, subtitle_file: str = ""): + global model + if not model: + model_path = f"{utils.root_dir()}/models/whisper-{model_size}" + model_bin_file = f"{model_path}/model.bin" + if not os.path.isdir(model_path) or not os.path.isfile(model_bin_file): + model_path = model_size + + logger.info( + f"loading model: {model_path}, device: {device}, compute_type: {compute_type}" + ) + try: + model = WhisperModel( + model_size_or_path=model_path, device=device, compute_type=compute_type + ) + except Exception as e: + logger.error( + f"failed to load model: {e} \n\n" + f"********************************************\n" + f"this may be caused by network issue. \n" + f"please download the model manually and put it in the 'models' folder. \n" + f"see [README.md FAQ](https://github.com/harry0703/NarratoAI) for more details.\n" + f"********************************************\n\n" + ) + return None + + logger.info(f"start, output file: {subtitle_file}") + if not subtitle_file: + subtitle_file = f"{audio_file}.srt" + + segments, info = model.transcribe( + audio_file, + beam_size=5, + word_timestamps=True, + vad_filter=True, + vad_parameters=dict(min_silence_duration_ms=500), + ) + + logger.info( + f"detected language: '{info.language}', probability: {info.language_probability:.2f}" + ) + + start = timer() + subtitles = [] + + def recognized(seg_text, seg_start, seg_end): + seg_text = seg_text.strip() + if not seg_text: + return + + msg = "[%.2fs -> %.2fs] %s" % (seg_start, seg_end, seg_text) + logger.debug(msg) + + subtitles.append( + {"msg": seg_text, "start_time": seg_start, "end_time": seg_end} + ) + + for segment in segments: + words_idx = 0 + words_len = len(segment.words) + + seg_start = 0 + seg_end = 0 + seg_text = "" + + if segment.words: + is_segmented = False + for word in segment.words: + if not is_segmented: + seg_start = word.start + is_segmented = True + + seg_end = word.end + # 如果包含标点,则断句 + seg_text += word.word + + if utils.str_contains_punctuation(word.word): + # remove last char + seg_text = seg_text[:-1] + if not seg_text: + continue + + recognized(seg_text, seg_start, seg_end) + + is_segmented = False + seg_text = "" + + if words_idx == 0 and segment.start < word.start: + seg_start = word.start + if words_idx == (words_len - 1) and segment.end > word.end: + seg_end = word.end + words_idx += 1 + + if not seg_text: + continue + + recognized(seg_text, seg_start, seg_end) + + end = timer() + + diff = end - start + logger.info(f"complete, elapsed: {diff:.2f} s") + + idx = 1 + lines = [] + for subtitle in subtitles: + text = subtitle.get("msg") + if text: + lines.append( + utils.text_to_srt( + idx, text, subtitle.get("start_time"), subtitle.get("end_time") + ) + ) + idx += 1 + + sub = "\n".join(lines) + "\n" + with open(subtitle_file, "w", encoding="utf-8") as f: + f.write(sub) + logger.info(f"subtitle file created: {subtitle_file}") + + +def file_to_subtitles(filename): + if not filename or not os.path.isfile(filename): + return [] + + times_texts = [] + current_times = None + current_text = "" + index = 0 + with open(filename, "r", encoding="utf-8") as f: + for line in f: + times = re.findall("([0-9]*:[0-9]*:[0-9]*,[0-9]*)", line) + if times: + current_times = line + elif line.strip() == "" and current_times: + index += 1 + times_texts.append((index, current_times.strip(), current_text.strip())) + current_times, current_text = None, "" + elif current_times: + current_text += line + return times_texts + + +def levenshtein_distance(s1, s2): + if len(s1) < len(s2): + return levenshtein_distance(s2, s1) + + if len(s2) == 0: + return len(s1) + + previous_row = range(len(s2) + 1) + for i, c1 in enumerate(s1): + current_row = [i + 1] + for j, c2 in enumerate(s2): + insertions = previous_row[j + 1] + 1 + deletions = current_row[j] + 1 + substitutions = previous_row[j] + (c1 != c2) + current_row.append(min(insertions, deletions, substitutions)) + previous_row = current_row + + return previous_row[-1] + + +def similarity(a, b): + distance = levenshtein_distance(a.lower(), b.lower()) + max_length = max(len(a), len(b)) + return 1 - (distance / max_length) + + +def correct(subtitle_file, video_script): + subtitle_items = file_to_subtitles(subtitle_file) + script_lines = utils.split_string_by_punctuations(video_script) + + corrected = False + new_subtitle_items = [] + script_index = 0 + subtitle_index = 0 + + while script_index < len(script_lines) and subtitle_index < len(subtitle_items): + script_line = script_lines[script_index].strip() + subtitle_line = subtitle_items[subtitle_index][2].strip() + + if script_line == subtitle_line: + new_subtitle_items.append(subtitle_items[subtitle_index]) + script_index += 1 + subtitle_index += 1 + else: + combined_subtitle = subtitle_line + start_time = subtitle_items[subtitle_index][1].split(" --> ")[0] + end_time = subtitle_items[subtitle_index][1].split(" --> ")[1] + next_subtitle_index = subtitle_index + 1 + + while next_subtitle_index < len(subtitle_items): + next_subtitle = subtitle_items[next_subtitle_index][2].strip() + if similarity( + script_line, combined_subtitle + " " + next_subtitle + ) > similarity(script_line, combined_subtitle): + combined_subtitle += " " + next_subtitle + end_time = subtitle_items[next_subtitle_index][1].split(" --> ")[1] + next_subtitle_index += 1 + else: + break + + if similarity(script_line, combined_subtitle) > 0.8: + logger.warning( + f"Merged/Corrected - Script: {script_line}, Subtitle: {combined_subtitle}" + ) + new_subtitle_items.append( + ( + len(new_subtitle_items) + 1, + f"{start_time} --> {end_time}", + script_line, + ) + ) + corrected = True + else: + logger.warning( + f"Mismatch - Script: {script_line}, Subtitle: {combined_subtitle}" + ) + new_subtitle_items.append( + ( + len(new_subtitle_items) + 1, + f"{start_time} --> {end_time}", + script_line, + ) + ) + corrected = True + + script_index += 1 + subtitle_index = next_subtitle_index + + # 处理剩余的脚本行 + while script_index < len(script_lines): + logger.warning(f"Extra script line: {script_lines[script_index]}") + if subtitle_index < len(subtitle_items): + new_subtitle_items.append( + ( + len(new_subtitle_items) + 1, + subtitle_items[subtitle_index][1], + script_lines[script_index], + ) + ) + subtitle_index += 1 + else: + new_subtitle_items.append( + ( + len(new_subtitle_items) + 1, + "00:00:00,000 --> 00:00:00,000", + script_lines[script_index], + ) + ) + script_index += 1 + corrected = True + + if corrected: + with open(subtitle_file, "w", encoding="utf-8") as fd: + for i, item in enumerate(new_subtitle_items): + fd.write(f"{i + 1}\n{item[1]}\n{item[2]}\n\n") + logger.info("Subtitle corrected") + else: + logger.success("Subtitle is correct") + + +if __name__ == "__main__": + task_id = "c12fd1e6-4b0a-4d65-a075-c87abe35a072" + task_dir = utils.task_dir(task_id) + subtitle_file = f"{task_dir}/subtitle.srt" + audio_file = f"{task_dir}/audio.mp3" + + subtitles = file_to_subtitles(subtitle_file) + print(subtitles) + + script_file = f"{task_dir}/script.json" + with open(script_file, "r") as f: + script_content = f.read() + s = json.loads(script_content) + script = s.get("script") + + correct(subtitle_file, script) + + subtitle_file = f"{task_dir}/subtitle-test.srt" + create(audio_file, subtitle_file) diff --git a/app/services/task.py b/app/services/task.py new file mode 100644 index 0000000..2f9e365 --- /dev/null +++ b/app/services/task.py @@ -0,0 +1,473 @@ +import math +import json +import os.path +import re +from os import path + +from edge_tts import SubMaker +from loguru import logger + +from app.config import config +from app.models import const +from app.models.schema import VideoConcatMode, VideoParams, VideoClipParams +from app.services import llm, material, subtitle, video, voice +from app.services import state as sm +from app.utils import utils + + +def generate_script(task_id, params): + logger.info("\n\n## generating video script") + video_script = params.video_script.strip() + if not video_script: + video_script = llm.generate_script( + video_subject=params.video_subject, + language=params.video_language, + paragraph_number=params.paragraph_number, + ) + else: + logger.debug(f"video script: \n{video_script}") + + if not video_script: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error("failed to generate video script.") + return None + + return video_script + + +def generate_terms(task_id, params, video_script): + logger.info("\n\n## generating video terms") + video_terms = params.video_terms + if not video_terms: + video_terms = llm.generate_terms( + video_subject=params.video_subject, video_script=video_script, amount=5 + ) + else: + if isinstance(video_terms, str): + video_terms = [term.strip() for term in re.split(r"[,,]", video_terms)] + elif isinstance(video_terms, list): + video_terms = [term.strip() for term in video_terms] + else: + raise ValueError("video_terms must be a string or a list of strings.") + + logger.debug(f"video terms: {utils.to_json(video_terms)}") + + if not video_terms: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error("failed to generate video terms.") + return None + + return video_terms + + +def save_script_data(task_id, video_script, video_terms, params): + script_file = path.join(utils.task_dir(task_id), "script.json") + script_data = { + "script": video_script, + "search_terms": video_terms, + "params": params, + } + + with open(script_file, "w", encoding="utf-8") as f: + f.write(utils.to_json(script_data)) + + +def generate_audio(task_id, params, video_script): + logger.info("\n\n## generating audio") + audio_file = path.join(utils.task_dir(task_id), "audio.mp3") + sub_maker = voice.tts( + text=video_script, + voice_name=voice.parse_voice_name(params.voice_name), + voice_rate=params.voice_rate, + voice_file=audio_file, + ) + if sub_maker is None: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error( + """failed to generate audio: +1. check if the language of the voice matches the language of the video script. +2. check if the network is available. If you are in China, it is recommended to use a VPN and enable the global traffic mode. + """.strip() + ) + return None, None, None + + audio_duration = math.ceil(voice.get_audio_duration(sub_maker)) + return audio_file, audio_duration, sub_maker + + +def generate_subtitle(task_id, params, video_script, sub_maker, audio_file): + if not params.subtitle_enabled: + return "" + + subtitle_path = path.join(utils.task_dir(task_id), "subtitle.srt") + subtitle_provider = config.app.get("subtitle_provider", "").strip().lower() + logger.info(f"\n\n## generating subtitle, provider: {subtitle_provider}") + + subtitle_fallback = False + if subtitle_provider == "edge": + voice.create_subtitle( + text=video_script, sub_maker=sub_maker, subtitle_file=subtitle_path + ) + if not os.path.exists(subtitle_path): + subtitle_fallback = True + logger.warning("subtitle file not found, fallback to whisper") + + if subtitle_provider == "whisper" or subtitle_fallback: + subtitle.create(audio_file=audio_file, subtitle_file=subtitle_path) + logger.info("\n\n## correcting subtitle") + subtitle.correct(subtitle_file=subtitle_path, video_script=video_script) + + subtitle_lines = subtitle.file_to_subtitles(subtitle_path) + if not subtitle_lines: + logger.warning(f"subtitle file is invalid: {subtitle_path}") + return "" + + return subtitle_path + + +def get_video_materials(task_id, params, video_terms, audio_duration): + if params.video_source == "local": + logger.info("\n\n## preprocess local materials") + materials = video.preprocess_video( + materials=params.video_materials, clip_duration=params.video_clip_duration + ) + if not materials: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error( + "no valid materials found, please check the materials and try again." + ) + return None + return [material_info.url for material_info in materials] + else: + logger.info(f"\n\n## downloading videos from {params.video_source}") + downloaded_videos = material.download_videos( + task_id=task_id, + search_terms=video_terms, + source=params.video_source, + video_aspect=params.video_aspect, + video_contact_mode=params.video_concat_mode, + audio_duration=audio_duration * params.video_count, + max_clip_duration=params.video_clip_duration, + ) + if not downloaded_videos: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error( + "failed to download videos, maybe the network is not available. if you are in China, please use a VPN." + ) + return None + return downloaded_videos + + +def generate_final_videos( + task_id, params, downloaded_videos, audio_file, subtitle_path +): + final_video_paths = [] + combined_video_paths = [] + video_concat_mode = ( + params.video_concat_mode if params.video_count == 1 else VideoConcatMode.random + ) + + _progress = 50 + for i in range(params.video_count): + index = i + 1 + combined_video_path = path.join( + utils.task_dir(task_id), f"combined-{index}.mp4" + ) + logger.info(f"\n\n## combining video: {index} => {combined_video_path}") + video.combine_videos( + combined_video_path=combined_video_path, + video_paths=downloaded_videos, + audio_file=audio_file, + video_aspect=params.video_aspect, + video_concat_mode=video_concat_mode, + max_clip_duration=params.video_clip_duration, + threads=params.n_threads, + ) + + _progress += 50 / params.video_count / 2 + sm.state.update_task(task_id, progress=_progress) + + final_video_path = path.join(utils.task_dir(task_id), f"final-{index}.mp4") + + logger.info(f"\n\n## generating video: {index} => {final_video_path}") + video.generate_video( + video_path=combined_video_path, + audio_path=audio_file, + subtitle_path=subtitle_path, + output_file=final_video_path, + params=params, + ) + + _progress += 50 / params.video_count / 2 + sm.state.update_task(task_id, progress=_progress) + + final_video_paths.append(final_video_path) + combined_video_paths.append(combined_video_path) + + return final_video_paths, combined_video_paths + + +def start(task_id, params: VideoParams, stop_at: str = "video"): + logger.info(f"start task: {task_id}, stop_at: {stop_at}") + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=5) + + if type(params.video_concat_mode) is str: + params.video_concat_mode = VideoConcatMode(params.video_concat_mode) + + # 1. Generate script + video_script = generate_script(task_id, params) + if not video_script: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + return + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=10) + + if stop_at == "script": + sm.state.update_task( + task_id, state=const.TASK_STATE_COMPLETE, progress=100, script=video_script + ) + return {"script": video_script} + + # 2. Generate terms + video_terms = "" + if params.video_source != "local": + video_terms = generate_terms(task_id, params, video_script) + if not video_terms: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + return + + save_script_data(task_id, video_script, video_terms, params) + + if stop_at == "terms": + sm.state.update_task( + task_id, state=const.TASK_STATE_COMPLETE, progress=100, terms=video_terms + ) + return {"script": video_script, "terms": video_terms} + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=20) + + # 3. Generate audio + audio_file, audio_duration, sub_maker = generate_audio(task_id, params, video_script) + if not audio_file: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + return + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=30) + + if stop_at == "audio": + sm.state.update_task( + task_id, + state=const.TASK_STATE_COMPLETE, + progress=100, + audio_file=audio_file, + ) + return {"audio_file": audio_file, "audio_duration": audio_duration} + + # 4. Generate subtitle + subtitle_path = generate_subtitle(task_id, params, video_script, sub_maker, audio_file) + + if stop_at == "subtitle": + sm.state.update_task( + task_id, + state=const.TASK_STATE_COMPLETE, + progress=100, + subtitle_path=subtitle_path, + ) + return {"subtitle_path": subtitle_path} + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=40) + + # 5. Get video materials + downloaded_videos = get_video_materials( + task_id, params, video_terms, audio_duration + ) + if not downloaded_videos: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + return + + if stop_at == "materials": + sm.state.update_task( + task_id, + state=const.TASK_STATE_COMPLETE, + progress=100, + materials=downloaded_videos, + ) + return {"materials": downloaded_videos} + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=50) + + # 6. Generate final videos + final_video_paths, combined_video_paths = generate_final_videos( + task_id, params, downloaded_videos, audio_file, subtitle_path + ) + + if not final_video_paths: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + return + + logger.success( + f"task {task_id} finished, generated {len(final_video_paths)} videos." + ) + + kwargs = { + "videos": final_video_paths, + "combined_videos": combined_video_paths, + "script": video_script, + "terms": video_terms, + "audio_file": audio_file, + "audio_duration": audio_duration, + "subtitle_path": subtitle_path, + "materials": downloaded_videos, + } + sm.state.update_task( + task_id, state=const.TASK_STATE_COMPLETE, progress=100, **kwargs + ) + return kwargs + + +def start_subclip(task_id, params: VideoClipParams, subclip_path_videos): + """ + 后台任务(自动剪辑视频进行剪辑) + """ + logger.info(f"\n\n## 开始任务: {task_id}") + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=5) + + voice_name = voice.parse_voice_name(params.voice_name) + # voice_name = 'zh-CN-XiaoyiNeural' + paragraph_number = params.paragraph_number + n_threads = params.n_threads + max_clip_duration = params.video_clip_duration + + logger.info("\n\n## 1. 读取json") + # video_script = params.video_script.strip() + # 搜索 ../storage 目录下 名称为 video_subject 的docx文件,并读出所有字符串 + # video_script_path = path.join('E:\\Projects\\linyq\\MoneyPrinterLin\\txt.txt\\txt2.json') + video_script_path = path.join(params.video_clip_json) + # 判断json文件是否存在 + if path.exists(video_script_path): + # 读取json文件内容,并转为dict + with open(video_script_path, "r", encoding="utf-8") as f: + list_script = json.load(f) + video_list = [i['narration'] for i in list_script] + time_list = [i['timestamp'] for i in list_script] + + video_script = " ".join(video_list) + logger.debug(f"原json脚本: \n{video_script}") + logger.debug(f"原json时间戳: \n{time_list}") + + else: + print("#@#@#@", params.video_clip_json) + raise ValueError("解说文案不存在!检查文案名称是否正确。") + + # video_script = llm.text_polishing(context=video_script, language=params.video_language) + # logger.debug(f"润色后的视频脚本: \n{video_script}") + # sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=10) + + logger.info("\n\n## 2. 生成音频") + audio_file = path.join(utils.task_dir(task_id), f"audio.mp3") + sub_maker = voice.tts(text=video_script, voice_name=voice_name, voice_file=audio_file, voice_rate=params.voice_rate) + if sub_maker is None: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error( + "无法生成音频,可能是网络不可用。如果您在中国,请使用VPN。或者手动选择 zh-CN-Yunjian-男性 音频") + return + + audio_duration = voice.get_audio_duration(sub_maker) + audio_duration = math.ceil(audio_duration) + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=30) + + subtitle_path = "" + if params.subtitle_enabled: + subtitle_path = path.join(utils.task_dir(task_id), f"subtitle.srt") + subtitle_provider = config.app.get("subtitle_provider", "").strip().lower() + logger.info(f"\n\n## 3. 生成字幕、提供程序是: {subtitle_provider}") + subtitle_fallback = False + if subtitle_provider == "edge": + voice.create_subtitle(text=video_script, sub_maker=sub_maker, subtitle_file=subtitle_path) + if not os.path.exists(subtitle_path): + subtitle_fallback = True + logger.warning("找不到字幕文件,回退到whisper") + + if subtitle_provider == "whisper" or subtitle_fallback: + subtitle.create(audio_file=audio_file, subtitle_file=subtitle_path) + logger.info("\n\n## 更正字幕") + subtitle.correct(subtitle_file=subtitle_path, video_script=video_script) + + subtitle_lines = subtitle.file_to_subtitles(subtitle_path) + if not subtitle_lines: + logger.warning(f"字幕文件无效: {subtitle_path}") + subtitle_path = "" + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=40) + + logger.info("\n\n## 4. 裁剪视频") + subclip_videos = [x for x in subclip_path_videos.values()] + # subclip_videos = material.clip_videos(task_id=task_id, + # timestamp_terms=time_list, + # origin_video=params.video_origin_path + # ) + logger.debug(f"\n\n## 裁剪后的视频文件列表: \n{subclip_videos}") + + if not subclip_videos: + sm.state.update_task(task_id, state=const.TASK_STATE_FAILED) + logger.error( + "裁剪视频失败,可能是 ImageMagick 不可用") + return + + sm.state.update_task(task_id, state=const.TASK_STATE_PROCESSING, progress=50) + + final_video_paths = [] + combined_video_paths = [] + + _progress = 50 + for i in range(params.video_count): + index = i + 1 + combined_video_path = path.join(utils.task_dir(task_id), f"combined-{index}.mp4") + logger.info(f"\n\n## 5. 合并视频: {index} => {combined_video_path}") + video.combine_clip_videos(combined_video_path=combined_video_path, + video_paths=subclip_videos, + video_script_list=video_list, + audio_file=audio_file, + video_aspect=params.video_aspect, + threads=n_threads) + + _progress += 50 / params.video_count / 2 + sm.state.update_task(task_id, progress=_progress) + + final_video_path = path.join(utils.task_dir(task_id), f"final-{index}.mp4") + + logger.info(f"\n\n## 6. 生成视频: {index} => {final_video_path}") + # 把所有东西合到在一起 + video.generate_video(video_path=combined_video_path, + audio_path=audio_file, + subtitle_path=subtitle_path, + output_file=final_video_path, + params=params, + ) + + _progress += 50 / params.video_count / 2 + sm.state.update_task(task_id, progress=_progress) + + final_video_paths.append(final_video_path) + combined_video_paths.append(combined_video_path) + + logger.success(f"任务 {task_id} 已完成, 生成 {len(final_video_paths)} 个视频.") + + kwargs = { + "videos": final_video_paths, + "combined_videos": combined_video_paths + } + sm.state.update_task(task_id, state=const.TASK_STATE_COMPLETE, progress=100, **kwargs) + return kwargs + + +if __name__ == "__main__": + task_id = "task_id" + params = VideoParams( + video_subject="金钱的作用", + voice_name="zh-CN-XiaoyiNeural-Female", + voice_rate=1.0, + + ) + start(task_id, params, stop_at="video") diff --git a/app/services/video.py b/app/services/video.py new file mode 100644 index 0000000..3daf92f --- /dev/null +++ b/app/services/video.py @@ -0,0 +1,520 @@ +import glob +import random +from typing import List +from typing import Union + +from loguru import logger +from moviepy.editor import * +from moviepy.video.tools.subtitles import SubtitlesClip +from PIL import ImageFont + +from app.models import const +from app.models.schema import MaterialInfo, VideoAspect, VideoConcatMode, VideoParams, VideoClipParams +from app.utils import utils + + +def get_bgm_file(bgm_type: str = "random", bgm_file: str = ""): + if not bgm_type: + return "" + + if bgm_file and os.path.exists(bgm_file): + return bgm_file + + if bgm_type == "random": + suffix = "*.mp3" + song_dir = utils.song_dir() + files = glob.glob(os.path.join(song_dir, suffix)) + return random.choice(files) + + return "" + + +def combine_videos( + combined_video_path: str, + video_paths: List[str], + audio_file: str, + video_aspect: VideoAspect = VideoAspect.portrait, + video_concat_mode: VideoConcatMode = VideoConcatMode.random, + max_clip_duration: int = 5, + threads: int = 2, +) -> str: + audio_clip = AudioFileClip(audio_file) + audio_duration = audio_clip.duration + logger.info(f"max duration of audio: {audio_duration} seconds") + # Required duration of each clip + req_dur = audio_duration / len(video_paths) + req_dur = max_clip_duration + logger.info(f"each clip will be maximum {req_dur} seconds long") + output_dir = os.path.dirname(combined_video_path) + + aspect = VideoAspect(video_aspect) + video_width, video_height = aspect.to_resolution() + + clips = [] + video_duration = 0 + + raw_clips = [] + for video_path in video_paths: + clip = VideoFileClip(video_path).without_audio() + clip_duration = clip.duration + start_time = 0 + + while start_time < clip_duration: + end_time = min(start_time + max_clip_duration, clip_duration) + split_clip = clip.subclip(start_time, end_time) + raw_clips.append(split_clip) + # logger.info(f"splitting from {start_time:.2f} to {end_time:.2f}, clip duration {clip_duration:.2f}, split_clip duration {split_clip.duration:.2f}") + start_time = end_time + if video_concat_mode.value == VideoConcatMode.sequential.value: + break + + # random video_paths order + if video_concat_mode.value == VideoConcatMode.random.value: + random.shuffle(raw_clips) + + # Add downloaded clips over and over until the duration of the audio (max_duration) has been reached + while video_duration < audio_duration: + for clip in raw_clips: + # Check if clip is longer than the remaining audio + if (audio_duration - video_duration) < clip.duration: + clip = clip.subclip(0, (audio_duration - video_duration)) + # Only shorten clips if the calculated clip length (req_dur) is shorter than the actual clip to prevent still image + elif req_dur < clip.duration: + clip = clip.subclip(0, req_dur) + clip = clip.set_fps(30) + + # Not all videos are same size, so we need to resize them + clip_w, clip_h = clip.size + if clip_w != video_width or clip_h != video_height: + clip_ratio = clip.w / clip.h + video_ratio = video_width / video_height + + if clip_ratio == video_ratio: + # 等比例缩放 + clip = clip.resize((video_width, video_height)) + else: + # 等比缩放视频 + if clip_ratio > video_ratio: + # 按照目标宽度等比缩放 + scale_factor = video_width / clip_w + else: + # 按照目标高度等比缩放 + scale_factor = video_height / clip_h + + new_width = int(clip_w * scale_factor) + new_height = int(clip_h * scale_factor) + clip_resized = clip.resize(newsize=(new_width, new_height)) + + background = ColorClip( + size=(video_width, video_height), color=(0, 0, 0) + ) + clip = CompositeVideoClip( + [ + background.set_duration(clip.duration), + clip_resized.set_position("center"), + ] + ) + + logger.info( + f"resizing video to {video_width} x {video_height}, clip size: {clip_w} x {clip_h}" + ) + + if clip.duration > max_clip_duration: + clip = clip.subclip(0, max_clip_duration) + + clips.append(clip) + video_duration += clip.duration + + video_clip = concatenate_videoclips(clips) + video_clip = video_clip.set_fps(30) + logger.info("writing") + # https://github.com/harry0703/NarratoAI/issues/111#issuecomment-2032354030 + video_clip.write_videofile( + filename=combined_video_path, + threads=threads, + logger=None, + temp_audiofile_path=output_dir, + audio_codec="aac", + fps=30, + ) + video_clip.close() + logger.success("completed") + return combined_video_path + + +def wrap_text(text, max_width, font="Arial", fontsize=60): + # 创建字体对象 + font = ImageFont.truetype(font, fontsize) + + def get_text_size(inner_text): + inner_text = inner_text.strip() + left, top, right, bottom = font.getbbox(inner_text) + return right - left, bottom - top + + width, height = get_text_size(text) + if width <= max_width: + return text, height + + # logger.warning(f"wrapping text, max_width: {max_width}, text_width: {width}, text: {text}") + + processed = True + + _wrapped_lines_ = [] + words = text.split(" ") + _txt_ = "" + for word in words: + _before = _txt_ + _txt_ += f"{word} " + _width, _height = get_text_size(_txt_) + if _width <= max_width: + continue + else: + if _txt_.strip() == word.strip(): + processed = False + break + _wrapped_lines_.append(_before) + _txt_ = f"{word} " + _wrapped_lines_.append(_txt_) + if processed: + _wrapped_lines_ = [line.strip() for line in _wrapped_lines_] + result = "\n".join(_wrapped_lines_).strip() + height = len(_wrapped_lines_) * height + # logger.warning(f"wrapped text: {result}") + return result, height + + _wrapped_lines_ = [] + chars = list(text) + _txt_ = "" + for word in chars: + _txt_ += word + _width, _height = get_text_size(_txt_) + if _width <= max_width: + continue + else: + _wrapped_lines_.append(_txt_) + _txt_ = "" + _wrapped_lines_.append(_txt_) + result = "\n".join(_wrapped_lines_).strip() + height = len(_wrapped_lines_) * height + # logger.warning(f"wrapped text: {result}") + return result, height + + +def generate_video( + video_path: str, + audio_path: str, + subtitle_path: str, + output_file: str, + params: Union[VideoParams, VideoClipParams], +): + aspect = VideoAspect(params.video_aspect) + video_width, video_height = aspect.to_resolution() + + logger.info(f"start, video size: {video_width} x {video_height}") + logger.info(f" ① video: {video_path}") + logger.info(f" ② audio: {audio_path}") + logger.info(f" ③ subtitle: {subtitle_path}") + logger.info(f" ④ output: {output_file}") + + # https://github.com/harry0703/NarratoAI/issues/217 + # PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'final-1.mp4.tempTEMP_MPY_wvf_snd.mp3' + # write into the same directory as the output file + output_dir = os.path.dirname(output_file) + + font_path = "" + if params.subtitle_enabled: + if not params.font_name: + params.font_name = "STHeitiMedium.ttc" + font_path = os.path.join(utils.font_dir(), params.font_name) + if os.name == "nt": + font_path = font_path.replace("\\", "/") + + logger.info(f"using font: {font_path}") + + def create_text_clip(subtitle_item): + phrase = subtitle_item[1] + max_width = video_width * 0.9 + wrapped_txt, txt_height = wrap_text( + phrase, max_width=max_width, font=font_path, fontsize=params.font_size + ) + _clip = TextClip( + wrapped_txt, + font=font_path, + fontsize=params.font_size, + color=params.text_fore_color, + bg_color=params.text_background_color, + stroke_color=params.stroke_color, + stroke_width=params.stroke_width, + print_cmd=False, + ) + duration = subtitle_item[0][1] - subtitle_item[0][0] + _clip = _clip.set_start(subtitle_item[0][0]) + _clip = _clip.set_end(subtitle_item[0][1]) + _clip = _clip.set_duration(duration) + if params.subtitle_position == "bottom": + _clip = _clip.set_position(("center", video_height * 0.95 - _clip.h)) + elif params.subtitle_position == "top": + _clip = _clip.set_position(("center", video_height * 0.05)) + elif params.subtitle_position == "custom": + # 确保字幕完全在屏幕内 + margin = 10 # 额外的边距,单位为像素 + max_y = video_height - _clip.h - margin + min_y = margin + custom_y = (video_height - _clip.h) * (params.custom_position / 100) + custom_y = max(min_y, min(custom_y, max_y)) # 限制 y 值在有效范围内 + _clip = _clip.set_position(("center", custom_y)) + else: # center + _clip = _clip.set_position(("center", "center")) + return _clip + + video_clip = VideoFileClip(video_path) + audio_clip = AudioFileClip(audio_path).volumex(params.voice_volume) + + if subtitle_path and os.path.exists(subtitle_path): + sub = SubtitlesClip(subtitles=subtitle_path, encoding="utf-8") + text_clips = [] + for item in sub.subtitles: + clip = create_text_clip(subtitle_item=item) + text_clips.append(clip) + video_clip = CompositeVideoClip([video_clip, *text_clips]) + + bgm_file = get_bgm_file(bgm_type=params.bgm_type, bgm_file=params.bgm_file) + if bgm_file: + try: + bgm_clip = ( + AudioFileClip(bgm_file).volumex(params.bgm_volume).audio_fadeout(3) + ) + bgm_clip = afx.audio_loop(bgm_clip, duration=video_clip.duration) + audio_clip = CompositeAudioClip([audio_clip, bgm_clip]) + except Exception as e: + logger.error(f"failed to add bgm: {str(e)}") + + video_clip = video_clip.set_audio(audio_clip) + video_clip.write_videofile( + output_file, + audio_codec="aac", + temp_audiofile_path=output_dir, + threads=params.n_threads or 2, + logger=None, + fps=30, + ) + video_clip.close() + del video_clip + logger.success("completed") + + +def preprocess_video(materials: List[MaterialInfo], clip_duration=4): + for material in materials: + if not material.url: + continue + + ext = utils.parse_extension(material.url) + try: + clip = VideoFileClip(material.url) + except Exception: + clip = ImageClip(material.url) + + width = clip.size[0] + height = clip.size[1] + if width < 480 or height < 480: + logger.warning(f"video is too small, width: {width}, height: {height}") + continue + + if ext in const.FILE_TYPE_IMAGES: + logger.info(f"processing image: {material.url}") + # 创建一个图片剪辑,并设置持续时间为3秒钟 + clip = ( + ImageClip(material.url) + .set_duration(clip_duration) + .set_position("center") + ) + # 使用resize方法来添加缩放效果。这里使用了lambda函数来使得缩放效果随时间变化。 + # 假设我们想要从原始大小逐渐放大到120%的大小。 + # t代表当前时间,clip.duration为视频总时长,这里是3秒。 + # 注意:1 表示100%的大小,所以1.2表示120%的大小 + zoom_clip = clip.resize( + lambda t: 1 + (clip_duration * 0.03) * (t / clip.duration) + ) + + # 如果需要,可以创建一个包含缩放剪辑的复合视频剪辑 + # (这在您想要在视频中添加其他元素时非常有用) + final_clip = CompositeVideoClip([zoom_clip]) + + # 输出视频 + video_file = f"{material.url}.mp4" + final_clip.write_videofile(video_file, fps=30, logger=None) + final_clip.close() + del final_clip + material.url = video_file + logger.success(f"completed: {video_file}") + return materials + + +def combine_clip_videos(combined_video_path: str, + video_paths: List[str], + video_script_list: List[str], + audio_file: str, + video_aspect: VideoAspect = VideoAspect.portrait, + threads: int = 2, + ) -> str: + """ + 合并子视频 + Args: + combined_video_path: 合并后的存储路径 + video_paths: 子视频路径列表 + audio_file: mp3旁白 + video_aspect: 屏幕比例 + threads: 线程数 + + Returns: + + """ + audio_clip = AudioFileClip(audio_file) + audio_duration = audio_clip.duration + logger.info(f"音频的最大持续时间: {audio_duration} s") + # 每个剪辑所需的持续时间 + req_dur = audio_duration / len(video_paths) + # req_dur = max_clip_duration + # logger.info(f"每个剪辑的最大长度为 {req_dur} s") + output_dir = os.path.dirname(combined_video_path) + + aspect = VideoAspect(video_aspect) + video_width, video_height = aspect.to_resolution() + + clips = [] + video_duration = 0 + # 一遍又一遍地添加下载的剪辑,直到达到音频的持续时间 (max_duration) + while video_duration < audio_duration: + for video_path, video_script in zip(video_paths, video_script_list): + clip = VideoFileClip(video_path).without_audio() + # 检查剪辑是否比剩余音频长 + if (audio_duration - video_duration) < clip.duration: + clip = clip.subclip(0, (audio_duration - video_duration)) + # 仅当计算出的剪辑长度 (req_dur) 短于实际剪辑时,才缩短剪辑以防止静止图像 + elif req_dur < clip.duration: + clip = clip.subclip(0, req_dur) + clip = clip.set_fps(30) + + # 并非所有视频的大小都相同,因此我们需要调整它们的大小 + clip_w, clip_h = clip.size + if clip_w != video_width or clip_h != video_height: + clip_ratio = clip.w / clip.h + video_ratio = video_width / video_height + + if clip_ratio == video_ratio: + # 等比例缩放 + clip = clip.resize((video_width, video_height)) + else: + # 等比缩放视频 + if clip_ratio > video_ratio: + # 按照目标宽度等比缩放 + scale_factor = video_width / clip_w + else: + # 按照目标高度等比缩放 + scale_factor = video_height / clip_h + + new_width = int(clip_w * scale_factor) + new_height = int(clip_h * scale_factor) + clip_resized = clip.resize(newsize=(new_width, new_height)) + + background = ColorClip(size=(video_width, video_height), color=(0, 0, 0)) + clip = CompositeVideoClip([ + background.set_duration(clip.duration), + clip_resized.set_position("center") + ]) + + logger.info(f"将视频 {video_path} 大小调整为 {video_width} x {video_height}, 剪辑尺寸: {clip_w} x {clip_h}") + + # TODO: 片段时长过长时,需要缩短,但暂时没有好的解决方案 + # if clip.duration > 5: + # ctime = utils.reduce_video_time(txt=video_script) + # if clip.duration > (2 * ctime): + # clip = clip.subclip(ctime, 2*ctime) + # else: + # clip = clip.subclip(0, ctime) + # logger.info(f"视频 {video_path} 片段时长较长,将剪辑时长缩短至 {ctime} 秒") + + clips.append(clip) + video_duration += clip.duration + + video_clip = concatenate_videoclips(clips) + video_clip = video_clip.set_fps(30) + logger.info(f"合并中...") + video_clip.write_videofile(filename=combined_video_path, + threads=threads, + logger=None, + temp_audiofile_path=output_dir, + audio_codec="aac", + fps=30, + ) + video_clip.close() + logger.success(f"completed") + return combined_video_path + + +if __name__ == "__main__": + from app.utils import utils + + suffix = "*.mp4" + song_dir = utils.video_dir() + files = glob.glob(os.path.join(song_dir, suffix)) + + print(files) + + # m = MaterialInfo() + # m.url = "/Users/harry/Downloads/IMG_2915.JPG" + # m.provider = "local" + # materials = preprocess_video([m], clip_duration=4) + # print(materials) + + # txt_en = "Here's your guide to travel hacks for budget-friendly adventures" + # txt_zh = "测试长字段这是您的旅行技巧指南帮助您进行预算友好的冒险" + # font = utils.resource_dir() + "/fonts/STHeitiMedium.ttc" + # for txt in [txt_en, txt_zh]: + # t, h = wrap_text(text=txt, max_width=1000, font=font, fontsize=60) + # print(t) + # + # task_id = "aa563149-a7ea-49c2-b39f-8c32cc225baf" + # task_dir = utils.task_dir(task_id) + # video_file = f"{task_dir}/combined-1.mp4" + # audio_file = f"{task_dir}/audio.mp3" + # subtitle_file = f"{task_dir}/subtitle.srt" + # output_file = f"{task_dir}/final.mp4" + # + # # video_paths = [] + # # for file in os.listdir(utils.storage_dir("test")): + # # if file.endswith(".mp4"): + # # video_paths.append(os.path.join(utils.storage_dir("test"), file)) + # # + # # combine_videos(combined_video_path=video_file, + # # audio_file=audio_file, + # # video_paths=video_paths, + # # video_aspect=VideoAspect.portrait, + # # video_concat_mode=VideoConcatMode.random, + # # max_clip_duration=5, + # # threads=2) + # + # cfg = VideoParams() + # cfg.video_aspect = VideoAspect.portrait + # cfg.font_name = "STHeitiMedium.ttc" + # cfg.font_size = 60 + # cfg.stroke_color = "#000000" + # cfg.stroke_width = 1.5 + # cfg.text_fore_color = "#FFFFFF" + # cfg.text_background_color = "transparent" + # cfg.bgm_type = "random" + # cfg.bgm_file = "" + # cfg.bgm_volume = 1.0 + # cfg.subtitle_enabled = True + # cfg.subtitle_position = "bottom" + # cfg.n_threads = 2 + # cfg.paragraph_number = 1 + # + # cfg.voice_volume = 1.0 + # + # generate_video(video_path=video_file, + # audio_path=audio_file, + # subtitle_path=subtitle_file, + # output_file=output_file, + # params=cfg + # ) diff --git a/app/services/voice.py b/app/services/voice.py new file mode 100644 index 0000000..287e22d --- /dev/null +++ b/app/services/voice.py @@ -0,0 +1,1354 @@ +import asyncio +import os +import re +from datetime import datetime +from xml.sax.saxutils import unescape +from edge_tts.submaker import mktimestamp +from loguru import logger +from edge_tts import submaker, SubMaker +import edge_tts +from moviepy.video.tools import subtitles + +from app.config import config +from app.utils import utils + + +def get_all_azure_voices(filter_locals=None) -> list[str]: + if filter_locals is None: + filter_locals = ["zh-CN", "en-US", "zh-HK", "zh-TW", "vi-VN"] + voices_str = """ +Name: af-ZA-AdriNeural +Gender: Female + +Name: af-ZA-WillemNeural +Gender: Male + +Name: am-ET-AmehaNeural +Gender: Male + +Name: am-ET-MekdesNeural +Gender: Female + +Name: ar-AE-FatimaNeural +Gender: Female + +Name: ar-AE-HamdanNeural +Gender: Male + +Name: ar-BH-AliNeural +Gender: Male + +Name: ar-BH-LailaNeural +Gender: Female + +Name: ar-DZ-AminaNeural +Gender: Female + +Name: ar-DZ-IsmaelNeural +Gender: Male + +Name: ar-EG-SalmaNeural +Gender: Female + +Name: ar-EG-ShakirNeural +Gender: Male + +Name: ar-IQ-BasselNeural +Gender: Male + +Name: ar-IQ-RanaNeural +Gender: Female + +Name: ar-JO-SanaNeural +Gender: Female + +Name: ar-JO-TaimNeural +Gender: Male + +Name: ar-KW-FahedNeural +Gender: Male + +Name: ar-KW-NouraNeural +Gender: Female + +Name: ar-LB-LaylaNeural +Gender: Female + +Name: ar-LB-RamiNeural +Gender: Male + +Name: ar-LY-ImanNeural +Gender: Female + +Name: ar-LY-OmarNeural +Gender: Male + +Name: ar-MA-JamalNeural +Gender: Male + +Name: ar-MA-MounaNeural +Gender: Female + +Name: ar-OM-AbdullahNeural +Gender: Male + +Name: ar-OM-AyshaNeural +Gender: Female + +Name: ar-QA-AmalNeural +Gender: Female + +Name: ar-QA-MoazNeural +Gender: Male + +Name: ar-SA-HamedNeural +Gender: Male + +Name: ar-SA-ZariyahNeural +Gender: Female + +Name: ar-SY-AmanyNeural +Gender: Female + +Name: ar-SY-LaithNeural +Gender: Male + +Name: ar-TN-HediNeural +Gender: Male + +Name: ar-TN-ReemNeural +Gender: Female + +Name: ar-YE-MaryamNeural +Gender: Female + +Name: ar-YE-SalehNeural +Gender: Male + +Name: az-AZ-BabekNeural +Gender: Male + +Name: az-AZ-BanuNeural +Gender: Female + +Name: bg-BG-BorislavNeural +Gender: Male + +Name: bg-BG-KalinaNeural +Gender: Female + +Name: bn-BD-NabanitaNeural +Gender: Female + +Name: bn-BD-PradeepNeural +Gender: Male + +Name: bn-IN-BashkarNeural +Gender: Male + +Name: bn-IN-TanishaaNeural +Gender: Female + +Name: bs-BA-GoranNeural +Gender: Male + +Name: bs-BA-VesnaNeural +Gender: Female + +Name: ca-ES-EnricNeural +Gender: Male + +Name: ca-ES-JoanaNeural +Gender: Female + +Name: cs-CZ-AntoninNeural +Gender: Male + +Name: cs-CZ-VlastaNeural +Gender: Female + +Name: cy-GB-AledNeural +Gender: Male + +Name: cy-GB-NiaNeural +Gender: Female + +Name: da-DK-ChristelNeural +Gender: Female + +Name: da-DK-JeppeNeural +Gender: Male + +Name: de-AT-IngridNeural +Gender: Female + +Name: de-AT-JonasNeural +Gender: Male + +Name: de-CH-JanNeural +Gender: Male + +Name: de-CH-LeniNeural +Gender: Female + +Name: de-DE-AmalaNeural +Gender: Female + +Name: de-DE-ConradNeural +Gender: Male + +Name: de-DE-FlorianMultilingualNeural +Gender: Male + +Name: de-DE-KatjaNeural +Gender: Female + +Name: de-DE-KillianNeural +Gender: Male + +Name: de-DE-SeraphinaMultilingualNeural +Gender: Female + +Name: el-GR-AthinaNeural +Gender: Female + +Name: el-GR-NestorasNeural +Gender: Male + +Name: en-AU-NatashaNeural +Gender: Female + +Name: en-AU-WilliamNeural +Gender: Male + +Name: en-CA-ClaraNeural +Gender: Female + +Name: en-CA-LiamNeural +Gender: Male + +Name: en-GB-LibbyNeural +Gender: Female + +Name: en-GB-MaisieNeural +Gender: Female + +Name: en-GB-RyanNeural +Gender: Male + +Name: en-GB-SoniaNeural +Gender: Female + +Name: en-GB-ThomasNeural +Gender: Male + +Name: en-HK-SamNeural +Gender: Male + +Name: en-HK-YanNeural +Gender: Female + +Name: en-IE-ConnorNeural +Gender: Male + +Name: en-IE-EmilyNeural +Gender: Female + +Name: en-IN-NeerjaExpressiveNeural +Gender: Female + +Name: en-IN-NeerjaNeural +Gender: Female + +Name: en-IN-PrabhatNeural +Gender: Male + +Name: en-KE-AsiliaNeural +Gender: Female + +Name: en-KE-ChilembaNeural +Gender: Male + +Name: en-NG-AbeoNeural +Gender: Male + +Name: en-NG-EzinneNeural +Gender: Female + +Name: en-NZ-MitchellNeural +Gender: Male + +Name: en-NZ-MollyNeural +Gender: Female + +Name: en-PH-JamesNeural +Gender: Male + +Name: en-PH-RosaNeural +Gender: Female + +Name: en-SG-LunaNeural +Gender: Female + +Name: en-SG-WayneNeural +Gender: Male + +Name: en-TZ-ElimuNeural +Gender: Male + +Name: en-TZ-ImaniNeural +Gender: Female + +Name: en-US-AnaNeural +Gender: Female + +Name: en-US-AndrewNeural +Gender: Male + +Name: en-US-AriaNeural +Gender: Female + +Name: en-US-AvaNeural +Gender: Female + +Name: en-US-BrianNeural +Gender: Male + +Name: en-US-ChristopherNeural +Gender: Male + +Name: en-US-EmmaNeural +Gender: Female + +Name: en-US-EricNeural +Gender: Male + +Name: en-US-GuyNeural +Gender: Male + +Name: en-US-JennyNeural +Gender: Female + +Name: en-US-MichelleNeural +Gender: Female + +Name: en-US-RogerNeural +Gender: Male + +Name: en-US-SteffanNeural +Gender: Male + +Name: en-ZA-LeahNeural +Gender: Female + +Name: en-ZA-LukeNeural +Gender: Male + +Name: es-AR-ElenaNeural +Gender: Female + +Name: es-AR-TomasNeural +Gender: Male + +Name: es-BO-MarceloNeural +Gender: Male + +Name: es-BO-SofiaNeural +Gender: Female + +Name: es-CL-CatalinaNeural +Gender: Female + +Name: es-CL-LorenzoNeural +Gender: Male + +Name: es-CO-GonzaloNeural +Gender: Male + +Name: es-CO-SalomeNeural +Gender: Female + +Name: es-CR-JuanNeural +Gender: Male + +Name: es-CR-MariaNeural +Gender: Female + +Name: es-CU-BelkysNeural +Gender: Female + +Name: es-CU-ManuelNeural +Gender: Male + +Name: es-DO-EmilioNeural +Gender: Male + +Name: es-DO-RamonaNeural +Gender: Female + +Name: es-EC-AndreaNeural +Gender: Female + +Name: es-EC-LuisNeural +Gender: Male + +Name: es-ES-AlvaroNeural +Gender: Male + +Name: es-ES-ElviraNeural +Gender: Female + +Name: es-ES-XimenaNeural +Gender: Female + +Name: es-GQ-JavierNeural +Gender: Male + +Name: es-GQ-TeresaNeural +Gender: Female + +Name: es-GT-AndresNeural +Gender: Male + +Name: es-GT-MartaNeural +Gender: Female + +Name: es-HN-CarlosNeural +Gender: Male + +Name: es-HN-KarlaNeural +Gender: Female + +Name: es-MX-DaliaNeural +Gender: Female + +Name: es-MX-JorgeNeural +Gender: Male + +Name: es-NI-FedericoNeural +Gender: Male + +Name: es-NI-YolandaNeural +Gender: Female + +Name: es-PA-MargaritaNeural +Gender: Female + +Name: es-PA-RobertoNeural +Gender: Male + +Name: es-PE-AlexNeural +Gender: Male + +Name: es-PE-CamilaNeural +Gender: Female + +Name: es-PR-KarinaNeural +Gender: Female + +Name: es-PR-VictorNeural +Gender: Male + +Name: es-PY-MarioNeural +Gender: Male + +Name: es-PY-TaniaNeural +Gender: Female + +Name: es-SV-LorenaNeural +Gender: Female + +Name: es-SV-RodrigoNeural +Gender: Male + +Name: es-US-AlonsoNeural +Gender: Male + +Name: es-US-PalomaNeural +Gender: Female + +Name: es-UY-MateoNeural +Gender: Male + +Name: es-UY-ValentinaNeural +Gender: Female + +Name: es-VE-PaolaNeural +Gender: Female + +Name: es-VE-SebastianNeural +Gender: Male + +Name: et-EE-AnuNeural +Gender: Female + +Name: et-EE-KertNeural +Gender: Male + +Name: fa-IR-DilaraNeural +Gender: Female + +Name: fa-IR-FaridNeural +Gender: Male + +Name: fi-FI-HarriNeural +Gender: Male + +Name: fi-FI-NooraNeural +Gender: Female + +Name: fil-PH-AngeloNeural +Gender: Male + +Name: fil-PH-BlessicaNeural +Gender: Female + +Name: fr-BE-CharlineNeural +Gender: Female + +Name: fr-BE-GerardNeural +Gender: Male + +Name: fr-CA-AntoineNeural +Gender: Male + +Name: fr-CA-JeanNeural +Gender: Male + +Name: fr-CA-SylvieNeural +Gender: Female + +Name: fr-CA-ThierryNeural +Gender: Male + +Name: fr-CH-ArianeNeural +Gender: Female + +Name: fr-CH-FabriceNeural +Gender: Male + +Name: fr-FR-DeniseNeural +Gender: Female + +Name: fr-FR-EloiseNeural +Gender: Female + +Name: fr-FR-HenriNeural +Gender: Male + +Name: fr-FR-RemyMultilingualNeural +Gender: Male + +Name: fr-FR-VivienneMultilingualNeural +Gender: Female + +Name: ga-IE-ColmNeural +Gender: Male + +Name: ga-IE-OrlaNeural +Gender: Female + +Name: gl-ES-RoiNeural +Gender: Male + +Name: gl-ES-SabelaNeural +Gender: Female + +Name: gu-IN-DhwaniNeural +Gender: Female + +Name: gu-IN-NiranjanNeural +Gender: Male + +Name: he-IL-AvriNeural +Gender: Male + +Name: he-IL-HilaNeural +Gender: Female + +Name: hi-IN-MadhurNeural +Gender: Male + +Name: hi-IN-SwaraNeural +Gender: Female + +Name: hr-HR-GabrijelaNeural +Gender: Female + +Name: hr-HR-SreckoNeural +Gender: Male + +Name: hu-HU-NoemiNeural +Gender: Female + +Name: hu-HU-TamasNeural +Gender: Male + +Name: id-ID-ArdiNeural +Gender: Male + +Name: id-ID-GadisNeural +Gender: Female + +Name: is-IS-GudrunNeural +Gender: Female + +Name: is-IS-GunnarNeural +Gender: Male + +Name: it-IT-DiegoNeural +Gender: Male + +Name: it-IT-ElsaNeural +Gender: Female + +Name: it-IT-GiuseppeNeural +Gender: Male + +Name: it-IT-IsabellaNeural +Gender: Female + +Name: ja-JP-KeitaNeural +Gender: Male + +Name: ja-JP-NanamiNeural +Gender: Female + +Name: jv-ID-DimasNeural +Gender: Male + +Name: jv-ID-SitiNeural +Gender: Female + +Name: ka-GE-EkaNeural +Gender: Female + +Name: ka-GE-GiorgiNeural +Gender: Male + +Name: kk-KZ-AigulNeural +Gender: Female + +Name: kk-KZ-DauletNeural +Gender: Male + +Name: km-KH-PisethNeural +Gender: Male + +Name: km-KH-SreymomNeural +Gender: Female + +Name: kn-IN-GaganNeural +Gender: Male + +Name: kn-IN-SapnaNeural +Gender: Female + +Name: ko-KR-HyunsuNeural +Gender: Male + +Name: ko-KR-InJoonNeural +Gender: Male + +Name: ko-KR-SunHiNeural +Gender: Female + +Name: lo-LA-ChanthavongNeural +Gender: Male + +Name: lo-LA-KeomanyNeural +Gender: Female + +Name: lt-LT-LeonasNeural +Gender: Male + +Name: lt-LT-OnaNeural +Gender: Female + +Name: lv-LV-EveritaNeural +Gender: Female + +Name: lv-LV-NilsNeural +Gender: Male + +Name: mk-MK-AleksandarNeural +Gender: Male + +Name: mk-MK-MarijaNeural +Gender: Female + +Name: ml-IN-MidhunNeural +Gender: Male + +Name: ml-IN-SobhanaNeural +Gender: Female + +Name: mn-MN-BataaNeural +Gender: Male + +Name: mn-MN-YesuiNeural +Gender: Female + +Name: mr-IN-AarohiNeural +Gender: Female + +Name: mr-IN-ManoharNeural +Gender: Male + +Name: ms-MY-OsmanNeural +Gender: Male + +Name: ms-MY-YasminNeural +Gender: Female + +Name: mt-MT-GraceNeural +Gender: Female + +Name: mt-MT-JosephNeural +Gender: Male + +Name: my-MM-NilarNeural +Gender: Female + +Name: my-MM-ThihaNeural +Gender: Male + +Name: nb-NO-FinnNeural +Gender: Male + +Name: nb-NO-PernilleNeural +Gender: Female + +Name: ne-NP-HemkalaNeural +Gender: Female + +Name: ne-NP-SagarNeural +Gender: Male + +Name: nl-BE-ArnaudNeural +Gender: Male + +Name: nl-BE-DenaNeural +Gender: Female + +Name: nl-NL-ColetteNeural +Gender: Female + +Name: nl-NL-FennaNeural +Gender: Female + +Name: nl-NL-MaartenNeural +Gender: Male + +Name: pl-PL-MarekNeural +Gender: Male + +Name: pl-PL-ZofiaNeural +Gender: Female + +Name: ps-AF-GulNawazNeural +Gender: Male + +Name: ps-AF-LatifaNeural +Gender: Female + +Name: pt-BR-AntonioNeural +Gender: Male + +Name: pt-BR-FranciscaNeural +Gender: Female + +Name: pt-BR-ThalitaNeural +Gender: Female + +Name: pt-PT-DuarteNeural +Gender: Male + +Name: pt-PT-RaquelNeural +Gender: Female + +Name: ro-RO-AlinaNeural +Gender: Female + +Name: ro-RO-EmilNeural +Gender: Male + +Name: ru-RU-DmitryNeural +Gender: Male + +Name: ru-RU-SvetlanaNeural +Gender: Female + +Name: si-LK-SameeraNeural +Gender: Male + +Name: si-LK-ThiliniNeural +Gender: Female + +Name: sk-SK-LukasNeural +Gender: Male + +Name: sk-SK-ViktoriaNeural +Gender: Female + +Name: sl-SI-PetraNeural +Gender: Female + +Name: sl-SI-RokNeural +Gender: Male + +Name: so-SO-MuuseNeural +Gender: Male + +Name: so-SO-UbaxNeural +Gender: Female + +Name: sq-AL-AnilaNeural +Gender: Female + +Name: sq-AL-IlirNeural +Gender: Male + +Name: sr-RS-NicholasNeural +Gender: Male + +Name: sr-RS-SophieNeural +Gender: Female + +Name: su-ID-JajangNeural +Gender: Male + +Name: su-ID-TutiNeural +Gender: Female + +Name: sv-SE-MattiasNeural +Gender: Male + +Name: sv-SE-SofieNeural +Gender: Female + +Name: sw-KE-RafikiNeural +Gender: Male + +Name: sw-KE-ZuriNeural +Gender: Female + +Name: sw-TZ-DaudiNeural +Gender: Male + +Name: sw-TZ-RehemaNeural +Gender: Female + +Name: ta-IN-PallaviNeural +Gender: Female + +Name: ta-IN-ValluvarNeural +Gender: Male + +Name: ta-LK-KumarNeural +Gender: Male + +Name: ta-LK-SaranyaNeural +Gender: Female + +Name: ta-MY-KaniNeural +Gender: Female + +Name: ta-MY-SuryaNeural +Gender: Male + +Name: ta-SG-AnbuNeural +Gender: Male + +Name: ta-SG-VenbaNeural +Gender: Female + +Name: te-IN-MohanNeural +Gender: Male + +Name: te-IN-ShrutiNeural +Gender: Female + +Name: th-TH-NiwatNeural +Gender: Male + +Name: th-TH-PremwadeeNeural +Gender: Female + +Name: tr-TR-AhmetNeural +Gender: Male + +Name: tr-TR-EmelNeural +Gender: Female + +Name: uk-UA-OstapNeural +Gender: Male + +Name: uk-UA-PolinaNeural +Gender: Female + +Name: ur-IN-GulNeural +Gender: Female + +Name: ur-IN-SalmanNeural +Gender: Male + +Name: ur-PK-AsadNeural +Gender: Male + +Name: ur-PK-UzmaNeural +Gender: Female + +Name: uz-UZ-MadinaNeural +Gender: Female + +Name: uz-UZ-SardorNeural +Gender: Male + +Name: vi-VN-HoaiMyNeural +Gender: Female + +Name: vi-VN-NamMinhNeural +Gender: Male + +Name: zh-CN-XiaoxiaoNeural +Gender: Female + +Name: zh-CN-XiaoyiNeural +Gender: Female + +Name: zh-CN-YunjianNeural +Gender: Male + +Name: zh-CN-YunxiNeural +Gender: Male + +Name: zh-CN-YunxiaNeural +Gender: Male + +Name: zh-CN-YunyangNeural +Gender: Male + +Name: zh-CN-liaoning-XiaobeiNeural +Gender: Female + +Name: zh-CN-shaanxi-XiaoniNeural +Gender: Female + +Name: zh-HK-HiuGaaiNeural +Gender: Female + +Name: zh-HK-HiuMaanNeural +Gender: Female + +Name: zh-HK-WanLungNeural +Gender: Male + +Name: zh-TW-HsiaoChenNeural +Gender: Female + +Name: zh-TW-HsiaoYuNeural +Gender: Female + +Name: zh-TW-YunJheNeural +Gender: Male + +Name: zu-ZA-ThandoNeural +Gender: Female + +Name: zu-ZA-ThembaNeural +Gender: Male + + +Name: en-US-AvaMultilingualNeural-V2 +Gender: Female + +Name: en-US-AndrewMultilingualNeural-V2 +Gender: Male + +Name: en-US-EmmaMultilingualNeural-V2 +Gender: Female + +Name: en-US-BrianMultilingualNeural-V2 +Gender: Male + +Name: de-DE-FlorianMultilingualNeural-V2 +Gender: Male + +Name: de-DE-SeraphinaMultilingualNeural-V2 +Gender: Female + +Name: fr-FR-RemyMultilingualNeural-V2 +Gender: Male + +Name: fr-FR-VivienneMultilingualNeural-V2 +Gender: Female + +Name: zh-CN-XiaoxiaoMultilingualNeural-V2 +Gender: Female + """.strip() + voices = [] + name = "" + for line in voices_str.split("\n"): + line = line.strip() + if not line: + continue + if line.startswith("Name: "): + name = line[6:].strip() + if line.startswith("Gender: "): + gender = line[8:].strip() + if name and gender: + # voices.append({ + # "name": name, + # "gender": gender, + # }) + if filter_locals: + for filter_local in filter_locals: + if name.lower().startswith(filter_local.lower()): + voices.append(f"{name}-{gender}") + else: + voices.append(f"{name}-{gender}") + name = "" + voices.sort() + return voices + + +def parse_voice_name(name: str): + # zh-CN-XiaoyiNeural-Female + # zh-CN-YunxiNeural-Male + # zh-CN-XiaoxiaoMultilingualNeural-V2-Female + name = name.replace("-Female", "").replace("-Male", "").strip() + return name + + +def is_azure_v2_voice(voice_name: str): + voice_name = parse_voice_name(voice_name) + if voice_name.endswith("-V2"): + return voice_name.replace("-V2", "").strip() + return "" + + +def tts( + text: str, voice_name: str, voice_rate: float, voice_file: str +) -> [SubMaker, None]: + if is_azure_v2_voice(voice_name): + return azure_tts_v2(text, voice_name, voice_file) + return azure_tts_v1(text, voice_name, voice_rate, voice_file) + + +def convert_rate_to_percent(rate: float) -> str: + if rate == 1.0: + return "+0%" + percent = round((rate - 1.0) * 100) + if percent > 0: + return f"+{percent}%" + else: + return f"{percent}%" + + +def azure_tts_v1( + text: str, voice_name: str, voice_rate: float, voice_file: str +) -> [SubMaker, None]: + voice_name = parse_voice_name(voice_name) + text = text.strip() + rate_str = convert_rate_to_percent(voice_rate) + for i in range(3): + try: + logger.info(f"start, voice name: {voice_name}, try: {i + 1}") + + async def _do() -> SubMaker: + communicate = edge_tts.Communicate(text, voice_name, rate=rate_str) + sub_maker = edge_tts.SubMaker() + with open(voice_file, "wb") as file: + async for chunk in communicate.stream(): + if chunk["type"] == "audio": + file.write(chunk["data"]) + elif chunk["type"] == "WordBoundary": + sub_maker.create_sub( + (chunk["offset"], chunk["duration"]), chunk["text"] + ) + return sub_maker + + sub_maker = asyncio.run(_do()) + if not sub_maker or not sub_maker.subs: + logger.warning(f"failed, sub_maker is None or sub_maker.subs is None") + continue + + logger.info(f"completed, output file: {voice_file}") + return sub_maker + except Exception as e: + logger.error(f"failed, error: {str(e)}") + return None + + +def azure_tts_v2(text: str, voice_name: str, voice_file: str) -> [SubMaker, None]: + voice_name = is_azure_v2_voice(voice_name) + if not voice_name: + logger.error(f"invalid voice name: {voice_name}") + raise ValueError(f"invalid voice name: {voice_name}") + text = text.strip() + + def _format_duration_to_offset(duration) -> int: + if isinstance(duration, str): + time_obj = datetime.strptime(duration, "%H:%M:%S.%f") + milliseconds = ( + (time_obj.hour * 3600000) + + (time_obj.minute * 60000) + + (time_obj.second * 1000) + + (time_obj.microsecond // 1000) + ) + return milliseconds * 10000 + + if isinstance(duration, int): + return duration + + return 0 + + for i in range(3): + try: + logger.info(f"start, voice name: {voice_name}, try: {i + 1}") + + import azure.cognitiveservices.speech as speechsdk + + sub_maker = SubMaker() + + def speech_synthesizer_word_boundary_cb(evt: speechsdk.SessionEventArgs): + # print('WordBoundary event:') + # print('\tBoundaryType: {}'.format(evt.boundary_type)) + # print('\tAudioOffset: {}ms'.format((evt.audio_offset + 5000))) + # print('\tDuration: {}'.format(evt.duration)) + # print('\tText: {}'.format(evt.text)) + # print('\tTextOffset: {}'.format(evt.text_offset)) + # print('\tWordLength: {}'.format(evt.word_length)) + + duration = _format_duration_to_offset(str(evt.duration)) + offset = _format_duration_to_offset(evt.audio_offset) + sub_maker.subs.append(evt.text) + sub_maker.offset.append((offset, offset + duration)) + + # Creates an instance of a speech config with specified subscription key and service region. + speech_key = config.azure.get("speech_key", "") + service_region = config.azure.get("speech_region", "") + audio_config = speechsdk.audio.AudioOutputConfig( + filename=voice_file, use_default_speaker=True + ) + speech_config = speechsdk.SpeechConfig( + subscription=speech_key, region=service_region + ) + speech_config.speech_synthesis_voice_name = voice_name + # speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceResponse_RequestSentenceBoundary, + # value='true') + speech_config.set_property( + property_id=speechsdk.PropertyId.SpeechServiceResponse_RequestWordBoundary, + value="true", + ) + + speech_config.set_speech_synthesis_output_format( + speechsdk.SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3 + ) + speech_synthesizer = speechsdk.SpeechSynthesizer( + audio_config=audio_config, speech_config=speech_config + ) + speech_synthesizer.synthesis_word_boundary.connect( + speech_synthesizer_word_boundary_cb + ) + + result = speech_synthesizer.speak_text_async(text).get() + if result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted: + logger.success(f"azure v2 speech synthesis succeeded: {voice_file}") + return sub_maker + elif result.reason == speechsdk.ResultReason.Canceled: + cancellation_details = result.cancellation_details + logger.error( + f"azure v2 speech synthesis canceled: {cancellation_details.reason}" + ) + if cancellation_details.reason == speechsdk.CancellationReason.Error: + logger.error( + f"azure v2 speech synthesis error: {cancellation_details.error_details}" + ) + logger.info(f"completed, output file: {voice_file}") + except Exception as e: + logger.error(f"failed, error: {str(e)}") + return None + + +def _format_text(text: str) -> str: + # text = text.replace("\n", " ") + text = text.replace("[", " ") + text = text.replace("]", " ") + text = text.replace("(", " ") + text = text.replace(")", " ") + text = text.replace("{", " ") + text = text.replace("}", " ") + text = text.strip() + return text + + +def create_subtitle(sub_maker: submaker.SubMaker, text: str, subtitle_file: str): + """ + 优化字幕文件 + 1. 将字幕文件按照标点符号分割成多行 + 2. 逐行匹配字幕文件中的文本 + 3. 生成新的字幕文件 + """ + + text = _format_text(text) + + def formatter(idx: int, start_time: float, end_time: float, sub_text: str) -> str: + """ + 1 + 00:00:00,000 --> 00:00:02,360 + 跑步是一项简单易行的运动 + """ + start_t = mktimestamp(start_time).replace(".", ",") + end_t = mktimestamp(end_time).replace(".", ",") + return f"{idx}\n" f"{start_t} --> {end_t}\n" f"{sub_text}\n" + + start_time = -1.0 + sub_items = [] + sub_index = 0 + + script_lines = utils.split_string_by_punctuations(text) + + def match_line(_sub_line: str, _sub_index: int): + if len(script_lines) <= _sub_index: + return "" + + _line = script_lines[_sub_index] + if _sub_line == _line: + return script_lines[_sub_index].strip() + + _sub_line_ = re.sub(r"[^\w\s]", "", _sub_line) + _line_ = re.sub(r"[^\w\s]", "", _line) + if _sub_line_ == _line_: + return _line_.strip() + + _sub_line_ = re.sub(r"\W+", "", _sub_line) + _line_ = re.sub(r"\W+", "", _line) + if _sub_line_ == _line_: + return _line.strip() + + return "" + + sub_line = "" + + try: + for _, (offset, sub) in enumerate(zip(sub_maker.offset, sub_maker.subs)): + _start_time, end_time = offset + if start_time < 0: + start_time = _start_time + + sub = unescape(sub) + sub_line += sub + sub_text = match_line(sub_line, sub_index) + if sub_text: + sub_index += 1 + line = formatter( + idx=sub_index, + start_time=start_time, + end_time=end_time, + sub_text=sub_text, + ) + sub_items.append(line) + start_time = -1.0 + sub_line = "" + + if len(sub_items) == len(script_lines): + with open(subtitle_file, "w", encoding="utf-8") as file: + file.write("\n".join(sub_items) + "\n") + try: + sbs = subtitles.file_to_subtitles(subtitle_file, encoding="utf-8") + duration = max([tb for ((ta, tb), txt) in sbs]) + logger.info( + f"completed, subtitle file created: {subtitle_file}, duration: {duration}" + ) + except Exception as e: + logger.error(f"failed, error: {str(e)}") + os.remove(subtitle_file) + else: + logger.warning( + f"failed, sub_items len: {len(sub_items)}, script_lines len: {len(script_lines)}" + ) + + except Exception as e: + logger.error(f"failed, error: {str(e)}") + + +def get_audio_duration(sub_maker: submaker.SubMaker): + """ + 获取音频时长 + """ + if not sub_maker.offset: + return 0.0 + return sub_maker.offset[-1][1] / 10000000 + + +if __name__ == "__main__": + voice_name = "zh-CN-XiaoxiaoMultilingualNeural-V2-Female" + voice_name = parse_voice_name(voice_name) + voice_name = is_azure_v2_voice(voice_name) + print(voice_name) + + voices = get_all_azure_voices() + print(len(voices)) + + async def _do(): + temp_dir = utils.storage_dir("temp") + + voice_names = [ + "zh-CN-XiaoxiaoMultilingualNeural", + # 女性 + "zh-CN-XiaoxiaoNeural", + "zh-CN-XiaoyiNeural", + # 男性 + "zh-CN-YunyangNeural", + "zh-CN-YunxiNeural", + ] + text = """ + 静夜思是唐代诗人李白创作的一首五言古诗。这首诗描绘了诗人在寂静的夜晚,看到窗前的明月,不禁想起远方的家乡和亲人,表达了他对家乡和亲人的深深思念之情。全诗内容是:“床前明月光,疑是地上霜。举头望明月,低头思故乡。”在这短短的四句诗中,诗人通过“明月”和“思故乡”的意象,巧妙地表达了离乡背井人的孤独与哀愁。首句“床前明月光”设景立意,通过明亮的月光引出诗人的遐想;“疑是地上霜”增添了夜晚的寒冷感,加深了诗人的孤寂之情;“举头望明月”和“低头思故乡”则是情感的升华,展现了诗人内心深处的乡愁和对家的渴望。这首诗简洁明快,情感真挚,是中国古典诗歌中非常著名的一首,也深受后人喜爱和推崇。 + """ + + text = """ + What is the meaning of life? This question has puzzled philosophers, scientists, and thinkers of all kinds for centuries. Throughout history, various cultures and individuals have come up with their interpretations and beliefs around the purpose of life. Some say it's to seek happiness and self-fulfillment, while others believe it's about contributing to the welfare of others and making a positive impact in the world. Despite the myriad of perspectives, one thing remains clear: the meaning of life is a deeply personal concept that varies from one person to another. It's an existential inquiry that encourages us to reflect on our values, desires, and the essence of our existence. + """ + + text = """ + 预计未来3天深圳冷空气活动频繁,未来两天持续阴天有小雨,出门带好雨具; + 10-11日持续阴天有小雨,日温差小,气温在13-17℃之间,体感阴凉; + 12日天气短暂好转,早晚清凉; + """ + + text = "[Opening scene: A sunny day in a suburban neighborhood. A young boy named Alex, around 8 years old, is playing in his front yard with his loyal dog, Buddy.]\n\n[Camera zooms in on Alex as he throws a ball for Buddy to fetch. Buddy excitedly runs after it and brings it back to Alex.]\n\nAlex: Good boy, Buddy! You're the best dog ever!\n\n[Buddy barks happily and wags his tail.]\n\n[As Alex and Buddy continue playing, a series of potential dangers loom nearby, such as a stray dog approaching, a ball rolling towards the street, and a suspicious-looking stranger walking by.]\n\nAlex: Uh oh, Buddy, look out!\n\n[Buddy senses the danger and immediately springs into action. He barks loudly at the stray dog, scaring it away. Then, he rushes to retrieve the ball before it reaches the street and gently nudges it back towards Alex. Finally, he stands protectively between Alex and the stranger, growling softly to warn them away.]\n\nAlex: Wow, Buddy, you're like my superhero!\n\n[Just as Alex and Buddy are about to head inside, they hear a loud crash from a nearby construction site. They rush over to investigate and find a pile of rubble blocking the path of a kitten trapped underneath.]\n\nAlex: Oh no, Buddy, we have to help!\n\n[Buddy barks in agreement and together they work to carefully move the rubble aside, allowing the kitten to escape unharmed. The kitten gratefully nuzzles against Buddy, who responds with a friendly lick.]\n\nAlex: We did it, Buddy! We saved the day again!\n\n[As Alex and Buddy walk home together, the sun begins to set, casting a warm glow over the neighborhood.]\n\nAlex: Thanks for always being there to watch over me, Buddy. You're not just my dog, you're my best friend.\n\n[Buddy barks happily and nuzzles against Alex as they disappear into the sunset, ready to face whatever adventures tomorrow may bring.]\n\n[End scene.]" + + text = "大家好,我是乔哥,一个想帮你把信用卡全部还清的家伙!\n今天我们要聊的是信用卡的取现功能。\n你是不是也曾经因为一时的资金紧张,而拿着信用卡到ATM机取现?如果是,那你得好好看看这个视频了。\n现在都2024年了,我以为现在不会再有人用信用卡取现功能了。前几天一个粉丝发来一张图片,取现1万。\n信用卡取现有三个弊端。\n一,信用卡取现功能代价可不小。会先收取一个取现手续费,比如这个粉丝,取现1万,按2.5%收取手续费,收取了250元。\n二,信用卡正常消费有最长56天的免息期,但取现不享受免息期。从取现那一天开始,每天按照万5收取利息,这个粉丝用了11天,收取了55元利息。\n三,频繁的取现行为,银行会认为你资金紧张,会被标记为高风险用户,影响你的综合评分和额度。\n那么,如果你资金紧张了,该怎么办呢?\n乔哥给你支一招,用破思机摩擦信用卡,只需要少量的手续费,而且还可以享受最长56天的免息期。\n最后,如果你对玩卡感兴趣,可以找乔哥领取一本《卡神秘籍》,用卡过程中遇到任何疑惑,也欢迎找乔哥交流。\n别忘了,关注乔哥,回复用卡技巧,免费领取《2024用卡技巧》,让我们一起成为用卡高手!" + + text = """ + 2023全年业绩速览 +公司全年累计实现营业收入1476.94亿元,同比增长19.01%,归母净利润747.34亿元,同比增长19.16%。EPS达到59.49元。第四季度单季,营业收入444.25亿元,同比增长20.26%,环比增长31.86%;归母净利润218.58亿元,同比增长19.33%,环比增长29.37%。这一阶段 +的业绩表现不仅突显了公司的增长动力和盈利能力,也反映出公司在竞争激烈的市场环境中保持了良好的发展势头。 +2023年Q4业绩速览 +第四季度,营业收入贡献主要增长点;销售费用高增致盈利能力承压;税金同比上升27%,扰动净利率表现。 +业绩解读 +利润方面,2023全年贵州茅台,>归母净利润增速为19%,其中营业收入正贡献18%,营业成本正贡献百分之一,管理费用正贡献百分之一点四。(注:归母净利润增速值=营业收入增速+各科目贡献,展示贡献/拖累的前四名科目,且要求贡献值/净利润增速>15%) +""" + text = "静夜思是唐代诗人李白创作的一首五言古诗。这首诗描绘了诗人在寂静的夜晚,看到窗前的明月,不禁想起远方的家乡和亲人" + + text = _format_text(text) + lines = utils.split_string_by_punctuations(text) + print(lines) + + for voice_name in voice_names: + voice_file = f"{temp_dir}/tts-{voice_name}.mp3" + subtitle_file = f"{temp_dir}/tts.mp3.srt" + sub_maker = azure_tts_v2( + text=text, voice_name=voice_name, voice_file=voice_file + ) + create_subtitle(sub_maker=sub_maker, text=text, subtitle_file=subtitle_file) + audio_duration = get_audio_duration(sub_maker) + print(f"voice: {voice_name}, audio duration: {audio_duration}s") + + loop = asyncio.get_event_loop_policy().get_event_loop() + try: + loop.run_until_complete(_do()) + finally: + loop.close() diff --git a/app/utils/utils.py b/app/utils/utils.py new file mode 100644 index 0000000..229d667 --- /dev/null +++ b/app/utils/utils.py @@ -0,0 +1,271 @@ +import locale +import os +import platform +import threading +from typing import Any +from loguru import logger +import json +from uuid import uuid4 +import urllib3 + +from app.models import const + +urllib3.disable_warnings() + + +def get_response(status: int, data: Any = None, message: str = ""): + obj = { + "status": status, + } + if data: + obj["data"] = data + if message: + obj["message"] = message + return obj + + +def to_json(obj): + try: + # 定义一个辅助函数来处理不同类型的对象 + def serialize(o): + # 如果对象是可序列化类型,直接返回 + if isinstance(o, (int, float, bool, str)) or o is None: + return o + # 如果对象是二进制数据,转换为base64编码的字符串 + elif isinstance(o, bytes): + return "*** binary data ***" + # 如果对象是字典,递归处理每个键值对 + elif isinstance(o, dict): + return {k: serialize(v) for k, v in o.items()} + # 如果对象是列表或元组,递归处理每个元素 + elif isinstance(o, (list, tuple)): + return [serialize(item) for item in o] + # 如果对象是自定义类型,尝试返回其__dict__属性 + elif hasattr(o, "__dict__"): + return serialize(o.__dict__) + # 其他情况返回None(或者可以选择抛出异常) + else: + return None + + # 使用serialize函数处理输入对象 + serialized_obj = serialize(obj) + + # 序列化处理后的对象为JSON字符串 + return json.dumps(serialized_obj, ensure_ascii=False, indent=4) + except Exception as e: + return None + + +def get_uuid(remove_hyphen: bool = False): + u = str(uuid4()) + if remove_hyphen: + u = u.replace("-", "") + return u + + +def root_dir(): + return os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) + + +def storage_dir(sub_dir: str = "", create: bool = False): + d = os.path.join(root_dir(), "storage") + if sub_dir: + d = os.path.join(d, sub_dir) + if create and not os.path.exists(d): + os.makedirs(d) + + return d + + +def resource_dir(sub_dir: str = ""): + d = os.path.join(root_dir(), "resource") + if sub_dir: + d = os.path.join(d, sub_dir) + return d + + +def task_dir(sub_dir: str = ""): + d = os.path.join(storage_dir(), "tasks") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def font_dir(sub_dir: str = ""): + d = resource_dir(f"fonts") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def song_dir(sub_dir: str = ""): + d = resource_dir(f"songs") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def public_dir(sub_dir: str = ""): + d = resource_dir(f"public") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def run_in_background(func, *args, **kwargs): + def run(): + try: + func(*args, **kwargs) + except Exception as e: + logger.error(f"run_in_background error: {e}") + + thread = threading.Thread(target=run) + thread.start() + return thread + + +def time_convert_seconds_to_hmsm(seconds) -> str: + hours = int(seconds // 3600) + seconds = seconds % 3600 + minutes = int(seconds // 60) + milliseconds = int(seconds * 1000) % 1000 + seconds = int(seconds % 60) + return "{:02d}:{:02d}:{:02d},{:03d}".format(hours, minutes, seconds, milliseconds) + + +def text_to_srt(idx: int, msg: str, start_time: float, end_time: float) -> str: + start_time = time_convert_seconds_to_hmsm(start_time) + end_time = time_convert_seconds_to_hmsm(end_time) + srt = """%d +%s --> %s +%s + """ % ( + idx, + start_time, + end_time, + msg, + ) + return srt + + +def str_contains_punctuation(word): + for p in const.PUNCTUATIONS: + if p in word: + return True + return False + + +def split_string_by_punctuations(s): + result = [] + txt = "" + + previous_char = "" + next_char = "" + for i in range(len(s)): + char = s[i] + if char == "\n": + result.append(txt.strip()) + txt = "" + continue + + if i > 0: + previous_char = s[i - 1] + if i < len(s) - 1: + next_char = s[i + 1] + + if char == "." and previous_char.isdigit() and next_char.isdigit(): + # 取现1万,按2.5%收取手续费, 2.5 中的 . 不能作为换行标记 + txt += char + continue + + if char not in const.PUNCTUATIONS: + txt += char + else: + result.append(txt.strip()) + txt = "" + result.append(txt.strip()) + # filter empty string + result = list(filter(None, result)) + return result + + +def md5(text): + import hashlib + + return hashlib.md5(text.encode("utf-8")).hexdigest() + + +def get_system_locale(): + try: + loc = locale.getdefaultlocale() + # zh_CN, zh_TW return zh + # en_US, en_GB return en + language_code = loc[0].split("_")[0] + return language_code + except Exception as e: + return "en" + + +def load_locales(i18n_dir): + _locales = {} + for root, dirs, files in os.walk(i18n_dir): + for file in files: + if file.endswith(".json"): + lang = file.split(".")[0] + with open(os.path.join(root, file), "r", encoding="utf-8") as f: + _locales[lang] = json.loads(f.read()) + return _locales + + +def parse_extension(filename): + return os.path.splitext(filename)[1].strip().lower().replace(".", "") + + +def script_dir(sub_dir: str = ""): + d = resource_dir(f"scripts") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def video_dir(sub_dir: str = ""): + d = resource_dir(f"videos") + if sub_dir: + d = os.path.join(d, sub_dir) + if not os.path.exists(d): + os.makedirs(d) + return d + + +def split_timestamp(timestamp): + """ + 拆分时间戳 + """ + start, end = timestamp.split('-') + start_hour, start_minute = map(int, start.split(':')) + end_hour, end_minute = map(int, end.split(':')) + + start_time = '00:{:02d}:{:02d}'.format(start_hour, start_minute) + end_time = '00:{:02d}:{:02d}'.format(end_hour, end_minute) + + return start_time, end_time + + +def reduce_video_time(txt: str, duration: float = 0.21531): + """ + 按照字数缩减视频时长,一个字耗时约 0.21531 s, + Returns: + """ + # 返回结果四舍五入为整数 + duration = len(txt) * duration + return int(duration) diff --git a/changelog.py b/changelog.py new file mode 100644 index 0000000..31a1337 --- /dev/null +++ b/changelog.py @@ -0,0 +1,17 @@ +from git_changelog.cli import build_and_render + +# 运行这段脚本自动生成CHANGELOG.md文件 + +build_and_render( + repository=".", + output="CHANGELOG.md", + convention="angular", + provider="github", + template="keepachangelog", + parse_trailers=True, + parse_refs=False, + sections=["build", "deps", "feat", "fix", "refactor"], + versioning="pep440", + bump="1.1.2", # 指定bump版本 + in_place=True, +) diff --git a/config.example.toml b/config.example.toml new file mode 100644 index 0000000..77a5cb0 --- /dev/null +++ b/config.example.toml @@ -0,0 +1,194 @@ +[app] + project_version="0.1.2" + video_source = "pexels" # "pexels" or "pixabay" + # Pexels API Key + # Register at https://www.pexels.com/api/ to get your API key. + # You can use multiple keys to avoid rate limits. + # For example: pexels_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"] + # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开 + pexels_api_keys = [] + + # Pixabay API Key + # Register at https://pixabay.com/api/docs/ to get your API key. + # You can use multiple keys to avoid rate limits. + # For example: pixabay_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"] + # 特别注意格式,Key 用英文双引号括起来,多个Key用逗号隔开 + pixabay_api_keys = [] + + # 如果你没有 OPENAI API Key,可以使用 g4f 代替,或者使用国内的 Moonshot API + # If you don't have an OPENAI API Key, you can use g4f instead + + # 支持的提供商 (Supported providers): + # openai + # moonshot (月之暗面) + # oneapi + # g4f + # azure + # qwen (通义千问) + # gemini + llm_provider="openai" + + ########## Ollama Settings + # No need to set it unless you want to use your own proxy + ollama_base_url = "" + # Check your available models at https://ollama.com/library + ollama_model_name = "" + + ########## OpenAI API Key + # Get your API key at https://platform.openai.com/api-keys + openai_api_key = "" + # No need to set it unless you want to use your own proxy + openai_base_url = "" + # Check your available models at https://platform.openai.com/account/limits + openai_model_name = "gpt-4-turbo" + + ########## Moonshot API Key + # Visit https://platform.moonshot.cn/console/api-keys to get your API key. + moonshot_api_key="" + moonshot_base_url = "https://api.moonshot.cn/v1" + moonshot_model_name = "moonshot-v1-8k" + + ########## OneAPI API Key + # Visit https://github.com/songquanpeng/one-api to get your API key + oneapi_api_key="" + oneapi_base_url="" + oneapi_model_name="" + + ########## G4F + # Visit https://github.com/xtekky/gpt4free to get more details + # Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py + g4f_model_name = "gpt-3.5-turbo" + + ########## Azure API Key + # Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details + # API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference + azure_api_key = "" + azure_base_url="" + azure_model_name="gpt-35-turbo" # replace with your model deployment name + azure_api_version = "2024-02-15-preview" + + ########## Gemini API Key + gemini_api_key="" + gemini_model_name = "gemini-1.5-flash" + + ########## Qwen API Key + # Visit https://dashscope.console.aliyun.com/apiKey to get your API key + # Visit below links to get more details + # https://tongyi.aliyun.com/qianwen/ + # https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction + qwen_api_key = "" + qwen_model_name = "qwen-max" + + + ########## DeepSeek API Key + # Visit https://platform.deepseek.com/api_keys to get your API key + deepseek_api_key = "" + deepseek_base_url = "https://api.deepseek.com" + deepseek_model_name = "deepseek-chat" + + # Subtitle Provider, "edge" or "whisper" + # If empty, the subtitle will not be generated + subtitle_provider = "edge" + + # + # ImageMagick + # + # Once you have installed it, ImageMagick will be automatically detected, except on Windows! + # On Windows, for example "C:\Program Files (x86)\ImageMagick-7.1.1-Q16-HDRI\magick.exe" + # Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe + + # imagemagick_path = "C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16\\magick.exe" + + + # + # FFMPEG + # + # 通常情况下,ffmpeg 会被自动下载,并且会被自动检测到。 + # 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误: + # RuntimeError: No ffmpeg exe could be found. + # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable. + # 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path,下载地址:https://www.gyan.dev/ffmpeg/builds/ + + # Under normal circumstances, ffmpeg is downloaded automatically and detected automatically. + # However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error: + # RuntimeError: No ffmpeg exe could be found. + # Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable. + # In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/ + + # ffmpeg_path = "C:\\Users\\harry\\Downloads\\ffmpeg.exe" + ######################################################################################### + + # 当视频生成成功后,API服务提供的视频下载接入点,默认为当前服务的地址和监听端口 + # 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4 + # 如果你需要使用域名对外提供服务(一般会用nginx做代理),则可以设置为你的域名 + # 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4 + # endpoint="https://xxxx.com" + + # When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port. + # For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4 + # If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name. + # For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4 + # endpoint="https://xxxx.com" + endpoint="" + + + # Video material storage location + # material_directory = "" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project + # material_directory = "/user/harry/videos" # Indicates that video materials will be downloaded to a specified folder + # material_directory = "task" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials + + # 视频素材存放位置 + # material_directory = "" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos + # material_directory = "/user/harry/videos" #表示将视频素材下载到指定的文件夹中 + # material_directory = "task" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材 + + material_directory = "" + + # Used for state management of the task + enable_redis = false + redis_host = "localhost" + redis_port = 6379 + redis_db = 0 + redis_password = "" + + # 文生视频时的最大并发任务数 + max_concurrent_tasks = 5 + + # webui界面是否显示配置项 + # webui hide baisc config panel + hide_config = false + + +[whisper] + # Only effective when subtitle_provider is "whisper" + + # Run on GPU with FP16 + # model = WhisperModel(model_size, device="cuda", compute_type="float16") + + # Run on GPU with INT8 + # model = WhisperModel(model_size, device="cuda", compute_type="int8_float16") + + # Run on CPU with INT8 + # model = WhisperModel(model_size, device="cpu", compute_type="int8") + + # recommended model_size: "large-v3" + model_size="large-v3" + # if you want to use GPU, set device="cuda" + device="CPU" + compute_type="int8" + + +[proxy] + ### Use a proxy to access the Pexels API + ### Format: "http://:@:" + ### Example: "http://user:pass@proxy:1234" + ### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies + + # http = "http://10.10.1.10:3128" + # https = "http://10.10.1.10:1080" + +[azure] + # Azure Speech API Key + # Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices + speech_key="" + speech_region="" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2983a4e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +x-common-volumes: &common-volumes + - ./:/NarratoAI + +services: + webui: + build: + context: . + dockerfile: Dockerfile + container_name: "webui" + ports: + - "8501:8501" + command: [ "bash", "webui.sh" ] + volumes: *common-volumes + environment: + - "VPN_PROXY_URL=http://host.docker.internal:7890" + restart: always + api: + build: + context: . + dockerfile: Dockerfile + container_name: "api" + ports: + - "8080:8080" + command: [ "python3", "main.py" ] + volumes: *common-volumes + restart: always diff --git a/docs/check.png b/docs/check.png new file mode 100644 index 0000000000000000000000000000000000000000..f460f7fe7d68b9dc0ea738a22ec2a79732c75711 GIT binary patch literal 444809 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.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

HAwKp7m;DLK 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%0Dyc`ANj~B*7dJ9Mlo&5%mN&4OER0bI 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

7hQR*(r6J^%0Sd;mC@0BD+fohjlwZ^Ii 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%0DPE(iO>zPZ)O&ITIJtZ&<6rw{u# zoPz2nOWOl@bGg$WINCUHSgzO`MB^u_3Jds#M({$m?7t-pQGjWtG1P#MGPVYB0<(=w zl2<3wceoji)dXEiJBT9ye9mg(QIdl?xwOfp-2i|ZsMeTjj_v!QmFR`$9upUS^sJi` z0!gI$E>`BehpI=qz4`z+|uZb7(Vxak}g4iB0B{_qFwF>XD*(tvko ztZp`0*rXYxavDMDu<1>nP-*Pn58mz{Y##pl#o?zm56+(_P*|vLlX?CtRMYI_VS<%X zgj9FN07XE$zaA2#95!*b2Wd`OQeyRA#$GRW#_#IK_|n+%^wHSEDx2(l@T;B4)XEF~mgDXWKRL$s8WJ{1OzvEl^plCvrK%n9Vi6(d;FznkvajkIvOUcJJCFQ{gLF(~ze zXgLWmxA@BJk{wF-t*{vd4_58hC0e_JQL#$A37Z;F&9lMhTE!aB_N8!$$E5vwKLUDB zSHK0S|IC)(|M{>kn9^nwhP1YzR_7jv&b8i|_G<0Cm4Ip_;?mmVpZpuBW+*aD--6|{ zr_UC^YH<5=V-GK45?9C|DhwscTBHW2C&guv`uH=i$BsVpan@<*VAaaR&CW3aIJruf z)2L-EvI0VvZo6B!Ez$=pky3|ZnhxB$h^X}RZ_=hC{oS>{2E#e z0Bh-D5L!gj7;n#eatZS_bR^<8gt4RQI0o3v_ct}?Q5R?=^VtP%4SQuCr$P|)Rc&M zT6d1s(BS5PY9$RR2~ekC@a~)TRj&)uB5MY@ri?e=zzaHruQ3?(y=nIHYov@R%wu=P zk0#3Bj{SCv)#J|M`ugPL{_FAA_Ap;?tXTPS{G~Zs_r{O*_g{{G@A=-ji8$g9*zYa81wVnVPFR>+m6Cb;*)t8bpQLEyX}vrm6|@5Yb2`~BQ%aio~@+Q(XrC(iC4oh zYWNnZ|NMP$`^$%H@l0Qer=5m)q|hrel}%YB)8a0q>Ho_3m5O z*n%AWHJ$9O)$^F1X*TEid`K|6Rapsua~GZalEy;04Lfb00y2T0uZ=xi+Bh0JGBE2e zojZf+$;lx~RE+)rfwrY9%3q8fRkSo{XHmQy|7~I6?#bh$@voKTSJAoL!)3}Nu$UT8 z7`um>$TNd$l<8Id7UB1mlzM2;>S@VDa-P>W?CsKf7;pqxS1B$lnKV~}(w1Raaon3~ z&{tJBfciRg0SDUnf=E|X+h(^SyPhxY2o7GJ`>Ux9P!*Fu_)dYj1Yz~fT zZZ}Q?t$3^6F}H782?U@7v-8B)@co#<%}dKpWM_qSGO|rYY!^xzD5rg%L8=eF@P(vZ z;B})YvDmJimIiAz+0*mg$Hxid=~*)sQ5TJw(pmd*q7TL%!MYL|Bq1D3k(PutGyA`M{Voy%S>c?s55?0%)*>0kA zxeAtPV4XaE2yjjHLV{J7=oAOr%nWt1Q{XZRPY683eBF5(wh| zQR&C+CD01yn#|x+7uN_ipT#Ua4^;P5P%j!WU4*8iy@>JeR`$cQH&0sh6?#G>87}C^ z9z}}U6r%>S98hg#u!u9klr)+rYleJq$xUzIq4TrvnX?sVyOD=!{h>K6Om>edFsU&VixQ!v9d_&X71T1?>bg-(Yp?&xxDax7qhxc#T~Jj!n})@ zsHePHo;*1@Aw)mI4s=drHrj%3@3?cBFEJ_d&pOA?Cp*g=F|q&0@uTkK@kI7o3wW0= z*3>Xu%?FnAzC8iTavS~rxxid(4i@zqQnD<(_y`oZD?*nGwrqx zjhL|YoQ6Xu6xW0g^-+IJ4&iDp&SjqTNV zWxpGBA6<_UfyAMP$}xo4`Q3w8yPLL?fxzc&1X~FlOi)}ybvrv%tipn0hX@H(Po8}L zRXPeW6FLF>NpT&scl{1P^(MaR^AGSzKiEWwFWaRL!O-AVn|t@&PrZ8g)wNA5;GEIg zN?k(I`oHR&VKsjA)aA{hbALBQ(l#%$P^-nBbRS zNYja<`B|q+ZYVk;M%SX3d3@ul9J4YS9+$d(maCN9(LWHXPh)X2EMx=IOx)xoR?idq zD5-8h)!F^cq;roqfoW6^9B;kN>FJUG5vprrJJK9>7T`Um1?XC*l`}erBt~nJGY^*K z(H{+^14$5rj7`FAywZWv4?4#(YfxH4snYAxdX= zG0!j2Nt8I}393Vj6lY5A4vvW3;&4LWv`-6o@a#~n`XEk8Fzw5wGMXa-v8F7%r9<1% zWKj@e%3!eYTnKH_TEm{z0RM057eypgbajPicil4A+Lle%sfMYKnp6Y~&AvbSW^mE9@as%j@NpEaMFZ9HNPNs?Fn%}n2bV7|-eW}e?trYI#l`Nv zdo=!QajUcIvIqnNSk?D{>WGmpSOQbH7EmXi=N^np*8e1f0nk~hmTZ|cj0Y|zO!T5$ zjRmg!#v{O+8hMc`y+W_+PTKV~xh)a~@~BM0&>Tltu-B7beywwS?i^74E-E`ARCB*} zGRKYr^@Zm>pn4yJBuA`22ddA#=-iu_JnB2hr5v4X=u#eha6n}E0UP`0SP-HSz*=KC zVQExLi?s8E)kX`j8fCwso;NRJ1z#Tw@T>#ZTtj-jb8~pvUXzfEz-TfJkG$a1a0iwK z4(g?asp`S1MO+bB?p<La*5Hm(F4?iH-xn?1z54U9>aL6I6eYR)JMop*x*VW|K#%g3Vw=0SeV1 zc9>l(_=IR#hNoK2#?1)RN}Ec(;>!lXhE7t#6bueM$ywB~7G<2v6u)ahonBG9;w&2; zqY@<=w9T+MM^iNHY2AytY(tF15*!_Bguhk=uzPsE(+(1O%K44`f#tvESJvMp2Z z+!ePdGHFGqKHPl#)?s7(=1`ZE22>l^{qqliD(xMdHGm7% z0hcV1^rL(-?fRY-K~X!NEmQ-`4OIV~X+X8?`s2Y##Ohe!D}-hTRO6GmoK*qU<&l1B zwuSPv`lK>7i%$F#$nQc+h_N0)A8)g{Q+qcXK44Y1a>Z$%i1 zk9KFV9}u@vyto{8@qq_~UI5vNv3PlH77HV0n<{=hRoo}b4TIv9G%(N42ItQsKh22=+H2cq%!pF4*J?+Mj>7>M@r z*7Kjks$WMxmN(Lu3?eG)CCG@baG>#RTN5N+O-QX%v6Ypr8(6)$z5E8IbibXg8_%OB zL<+SPLv&eJ{hR&x@!<3Q!2a!nrCbT!CmuN$fU=w=WLY~{u;&QZ8{{)-snmA;R~R;0;<3Cm(EwS7OK%of7!lJT|j0$ zHEk|R+%<@sQn)K_X&#PRHLUECJ5&H^RQy69c#NwBiLH&`cE|F#iP+-*)CSIYgF!e* zrhE3)+?#L`%SoP~T3p68+>fN3AyT=+&F(J1>mHYPM5Cxx9?^(3RI6u>0hpk=APU&# z$a6-7E2gB?DAzX28*+4%QqoGA+itVq^*M1sdz@nEnN))y7MY4CR;Sbs#dx9G*_Ew_ zuiD>Tgl0)$enMhTi`J1D-F6e3#myF~sko=t#l!w3ma*31Q&Xi??`BbHO-a6-hOfHW zsI*3%vruh>L|DIh6p<2~3)RZx2UxY|C{zp7C!xBTo`mY4)iiVsRCjF>{ccsdQ&3&g z=iHYnD36RSz7&5Ixv5ZHA@%MWcu|(<1jd%!Nwr!vP%Rr(8L2TwoDATuWVvLzHxr|> zPlXRYdScNh@Ha04s!NsGwu~p*+E0e8OzzyRE_9bXA?_O)S_Q(8B_I>5HiVM#=4~?B zt-%=a&iGeVaf->}I;Sxa8Z-+;6AA7JI9`IC(^k-p|2MB-KYkjHjrxGs9i=n#9{Hpr z*?Tcd+&jNo+>?kKHMn?&Jvvo7u>$#J#|yZ1=~A|Gi!xV_2BFh_&P-{za-i$JB*~9k zOr)Zt9I2FXgxj1El~zT&Kb0B2lCDB~a)b*@Yjfltdu%RxzG0}A?S~N@I?G#EHfH~X z>dWy@20L>P3Nh%hdn*FRHkfurW(`3?b);0|yyi4ZN4pl?`SWw3_lKvKT}lPAL-+ z6|QE@V=iZ&)F=k`l~z}tSVO)Qh5R#!-xkhtpEB>^Wq~+sp0}FJsnQ&@bABXZr|3}L zObZq1WxHlZ9i&!K=oPdT8&k;g89oh}Aju zn>Gt@&cI=@lE@aqo^Aa?P})LKVr5p7gUFqUCdElmAfGmr?kFivh(X5g7g8dYxigf} zCsJ7TwkJhKdWlpkjxA7e0RbAB?PXjJ#p5E0lAHL+eU{z_Jc>67I+BcWY6<8qPU9!% zp`K!maP$_c)25c_|2tM)C>Xd>>OB*% z=_4&vhk-{!DoE`^Wd67y4Js2pCNc}vH)}GjOio6Eb%JW5aQHUWTkVccilR}(9C0C8 z!?VgwA&K-UMW|b)Fi*c;$-Ji7rMj0U@_+euz-=kgGJeO*v;iA6RAb$l0jztLvA0;b zKXSlKUfGT(4v$t(gqCYkuZv|Df;x()&yG%N={b*_xs90aeVip#9Z=kFa3k z#ccFV^-lyW%i&aDB}1H=G`@K6&b_bRx`hG!)oiseq{Y4ft=CmRE}JE9B`ubPYe zcKmKt-0M8F)Ys%OnD(&q=watx1ysKbs7^s+z|qSD)klf61XSk_Z8d30*%H?d;tBx( zyey6u8%ofuSD4wI>YF4U!Zo8wtZ7j|HKIbP6>5RB+8s@DEqV8b+HjJS{-BG!$fnj} zDC$jBKWQmzI47!X;C;9_j7SK_|7Rhx&IJ%+YXIXW*l0Fkv5WIzVwafsb!x)(mRBqG zdPiQ6-l?5|&}k2%scd{!D)iNS`J>XDSu8n*Jz*H8)?^0Y)oNgM{GIMx#W2ks_V#Wzoyzz{7(b8JMwN~ zxQ<|;yiTk-{L+&`HLV;^q55?o^=s!s_3H%H8Wq)NkQF3iwEGKZYo7hK50EX06*urt(vq{{H`ep{2P|exlsy0)} zG!#`Ps6vWT(Ea9}g|@|r@Ws4j*Z&A8)r+?lkSxxV834|>ZLSC0GDCpsQEE3m+5*a} zwrZwV8zHbT1Hbn`8&PYc`i>mh*ss#KIx`IKk1fe}EOjiFV0VNAMQ*x)=zXZEfxili zz)i4g5rLA^P{6B3(C|)eO>n02m9Z&ue$5k7u8L+iN#*G2}-`|BLq5yBUl9)PY?TIQ?N?)_!r5~2Ie zU(vzhjih=eWk9v!VA^#!5E?cgN>{t}ojDh(*{h*vSj9VQ2RHqcuB+d>|E4G+3ZE{R zS!G z{I>IUxtW|r^nb^yM@mRIt(>d|R3B3t%c^1Z&ztOL$#8nUgMAm#AZ{J z>oyx@WM}W0IiNxK#1#X)!~UJ1T2@`~s3NA?GyU7KJIb92-PSf$XY1R{O~Ue^5h2=j zY^-rk(}|t^j3sHK z2qfb8VzOd0RPg6;-p_}5Lc$gLGx231nKb=ih41xE`>MH11*}{NdJ9TLvesSdzkrlV zKfa5m9}X1%gSK;5ou&w)xFWbSvm-{rAY&kkw@5G%2Ql!13Mwopf`OO{CbEf{h8p+^ zK7)^7B4X$hh=GYO;rX4aV}H6{1MB<#Gd)#;V62SdM9^h9s?Qj}H}#ZRxCtf# za(EyIr;%;E$CrL)3afkkD7_9;gVjo})C7PLN@s1onvm4X_@U0Vrb;eIIXrrqKzS;8 ze-cjZS*ob|e%YNme7)aTQQ-UAfod@C%08Y#02(378A-71(sZxvgw>SXi~Tz_g5@KC zs0!X!XUUPfO&z}ND%X1fYsHmauFt;q_S^g0SCD4qE%#?Z^+l|@aJnxllu8CWsEZ=X^sE6JIe^ud0?VB!_&Mi!HZKzgA z#eMP}-t|?Jc-Mqh>sOMv6P)of>t_S1%bno`2Mx{`zgjrm4<{X@m!TlKyNbhpwug#7 z7j|1IcUpc3&-mO+TQDG;S9q_X8nixduCxHPEY8D4N><1as&wuJ5^Z=FeewJjSGQW3 zB(gCR6IAmxm~^Xi(bqYiHq(-N7Y;9%Eh2dAGn8;5a+KFo1fu<~lAZH=aYn1-fcW9Z zhE;zG!`2Y-?VfIUO^n4qLiND&k8f~0>7UK2Gdzs^8B{Mz-Jf2~T?Yy)L+P-EQxd3_ zU;+nTPYUvk6gWq@GTzVrJGafA9EPFB$BS#JR zNO2fqT|X*7Nj}%#Z^$Nd@*AX?dAMTCwro8uY%{kOm7NT1xNM<9)!z{&Mw<*fm5(1A zGchhhuo>O6sbSg6jJT1q1SZ#RA>4oJmAge9oPRVEf@YbbTrm zsdlG4MlUO51xu13U9W2A^6)qc)2;N2GPzp~(}0C{bI5WHnAMn|dcSD-?vEZTDm^3E zwf#pBH8D{Kk?;l8nA1raDpW@jZn!5FlUBG@w4upb%oRA_-^_5v6D!#IzgacVc4+MX z=6R#{*j91Q_wM@eA(mK$QSTV2=ghr^f8VE8MEIq_ryp!4KaNN5CRU7Ei-?ZDEx!vj zPk{R4n`;QbpVD4PO(!wi?@VMDbo1f$5QDX`VfTj}rqmhY+$o-M{(7_V%Y|=%Ay#XZ zUCY(*q8--CxIFacL6$q{U4-``2=f!$b!UCJ^Sp0Bbw3NbZum0bAbt2>?k|dqjC{6ySsrB`bxVXiw$q$oOX&>feoV;7|%?BTR%gO-N z310MfRlvQ4`Roc6CKPpppQ^LlKfqT_W4Ce>RtCz^O_ewyonz^a3el=E`}51jh9>EE zx$o}x9wtcad)@!{(5T6!M&!l3dZXqtp!!R-fbPjFGe>j|Yk`U@fXa>xRktQzS<_y} zWlz2cgP^c6Vn=V231gs2AC{u}~NzG)rK(C8-NWd-GM^fQh4`=82w82g?BRk|;eFn>~} zU$f~!uR9s6jy1dlxJ)uzOB~kPzKzbYc)Y0fpCE4B-sqgXE#IMYL0@n3nUOn^=o~q& zSn}6UZD4qg9V+*n0OVDajtmzela_Icpi1ln+3x7TXOxbzkn5AAJGy)563cZ>bL90} z>(+2~LsTOfb@zRUVw6E=@J;qBUi3nB1{UaAiM2(34n;<`;k=+)z=$j4bD$b<^Usdw z4Tx(-UM}nj^`TH({oA#7N5;L7?(`COR8eOoS2dpg`(MTyU3rW5*v1+CD8u?I_RTy6 z!tE1Jk{vD@1P75_^Po{tX0jt zk9}Cy5gv$F%dh~rz52TfN9q+zns}l3;8cA|OdlU}h z*s*h;zu?uLF2Vf_3Ld+^<&q_H)Di@k&+|vRY6XQiT7%zy6WHrtyz=lgJATYqEqIr( zgjp@iYNVcp$JZzJViK(w_`~%c&#OGuvP(`oKXgwrwLPjY1yWqL9kMHvBR^pGyT1L> z$UHYz*P*JN&P|UG>0sa(qzDIVe+Mu%FmFxA6{rrw ziSIB15W6T)%~4eyaNS4nYW0IZey3E*U-0hUQNw@8FAde&{e(}v8q?f3ZAA1hZ(Zxv zcc(LN;bpea^-|p?E&LNy(*-d3a+cKdE~tKw8x0@56RKzS@ftglA5nrwTjQ?X&%S7M z*z(5sat>Pwap7e1;V_uG$F?NiU)Ap42(8{6Rtp3+GzSFxFi=g`2Djl#cv%sQsJ)O_ zoH--Zj*nbkc_LHIdGwWO+I)vSa5!YuMs1BBHKu1P_dI4hRnB39lZBEw4(tb>Kd%vG>8`@!-U%y}y8 z2Up&7B5jt8OYfZUQLl95n@bcfuNXrMIkk-o^$t-l>QCIHPE%z=^e6_IX>2d9TX_Py;(mf3%GQ)N_TH&#B zfoiq2k#0wl8dU24Hh?d$6Ex_1wyzc(Bo4JZY@ik_M;l22&KDkUG67<*<_SM$x|f#U zBmdC7Fb{ZFZ>H{>^ zMlGxtW%=`G&xlu;97G#&(`#wpcD1`&Ev$G~4)<+-V9~N7$c#E$5e*XXtUPU%L$7KU zt^D>*(o8EK5sf-_nd$*e9Gs{|f=7kf86tR4>hp}XXqvEGVE|vQnuGSXEDMVB(f>%g z&|zo{Z)V@@V-!b{@%Fbb+;p-rq?5cosdE%G#@;XM@cWD}LMnT-=neFzA5aGHT**H` zHDFlxrj1L(2pEb(QH0D|*$I3`7DvEpmF<=A#INomdZ+LD8mul>-oi&^{D++VYJW;N z0dbgurJ&k{>0^V29P&&Kw+SHpkQuA#kV$ycYU{|p9*(GBJyJL_HWmKw2(%lhegZGK zMKv0$bwV9Oh1s|DwC3-$vj%ko`llYL^aWdkz3?PS1bZjaE@_@8wlxB-lK83-6X`p} zx!O57a;+RW9@0^b;IiToe|$+e4N_llq8O|P2Or8hIChXYDn8mw?JkS~oODhKWZy#d z-0U`9V*hbi*#)W~^}iBzbU^i=$<&QTg@=SZSdXt&&%o*d(O&t+EzEe4sW(^>O2D7AO7U|t>$SJ{D|Pq0iTn^g9{2mwvi6VsYM3MBE&XCbd07z|_RX%mPxquZfm^d0oE_DDclf~lRD*=W;RO!0 z^(U3Hnjyu0?NI?}&eyqrwUz%WB~%@yt+EE)rr+*Mn`R>>Mdr`#bsFm!6nq$)dxc)O zmEEiy!o=MQ2Q!Zy6(k-XW>LK7r1ylB-EZ@^;~Yi&cTIwNi+7rY+aO5}dHYUO4)sZ1 zB*&x3+dkI-oz$%~{<8zAF9Zg>{q}lzwXRuDSFk#rYsBe4XVrK-9P--GnI~}$DhC$h zueR*QX9*EnjtkWkc}_}5ZCf{_hwWAF>;~LMYJ`^D1?da}T>b1l=d}#WqjRk%V@|&s ztnS)OFLiIVqZu4R?Um+|_Z1xFWDf@XuE|2`W1X0zxJB--SVfv>3n*|~egc3Q24y+B zQ*z~gn<}j*41&Fp8tGvoNZsrMnX>afSna(4`6yuioxY9tLAoRxbi?Jh5{EUfOGWff zS0#+pmf;E?@SAN;uNv>Cf}wgSYxdFF0r-Co)uFCd3GZ@0`V{$xKPsf^K?<#rw1TBt+r@k9S zs%_#%i)$K~FF|{fFe#g)6zij?6oqy0+U+Q54It269Ld~4H3IO~txdCo1!Modf1xXv zK$J0K^){II$53FHnB z>y$tKBc^dOu;$X+*zUW!7W?c*X!HMO)qIW^WOsJzLc}(SGvU4~?G7QH`(pVl% zy&PP{y4kuGR_nrX<2(D&J9J5JW`DZO=I4VOtHittc$wop#FScpnd?SE7sz(n^;c&~ z{4TB4H(nQ|OpN1~H`^fxntP!hgD79imVBL12+>e&<5h9y)})xghj;btAjb&s>^xF*G4C$?S?8(PO&&ZC@LZ-!_09>+=kjAVp{T-X`nPxX{hjVOcX~ztt1zGIov29W z*x#i8JSXQT@n_YC&-?NLY+4~@`@wzP9YhCI>$#OITwmJqW&RzjKDU=Ozn+C;cTM34 z)$t)58>^w9HQRIn%64EGseX#S1$fX131+ zfJQXXEBwA1Wp80Nn;}8w9Q;MSlxO#sP#s$f62o-uqkbUuf05H)(dxu9)z164dxi|8 z_RhMWUdP)kK589E_y)Mh3m{XA_2a1+BbB4Rc!C%}YoB09>h5zIZYstRuvnN{Q&eM8 z+T2&xD3LN2r|p?jj0FPwoX3+Bk9dt+=lHSm)TP5e^Pa-ysg@$=_3VMx)23dqhY#xn z?{~GKz@dLgvZgg_iSboN0LQr;u)L+YNk4X4p~Gnrqtf3#r7bqd$v>$3)}qz3)p@2eB*$s1 z7;`=F2zzj&Vn7->X4CEjb5}TbLfB}g79Fe0XQo6ys%tAK>gSK?4t}cq0oD3z9p!q% zs(Y75(Nd*m)psfy36B1lo!sO(Yv^IZ!IZds#sqvBzokEyXj_C@e|?;_Hk8@IbYSun)zY zpU%sJUGq~r+IosG5@@U|qGb~Yy5M%>#H7TdRDU|5vQ3Af z!nqw4(v~Btx81R!TCTt|TTVsgak0mZ%Kz}*-y`+1;yX7g6#cn>)`nJ!ceCEhPRgKi zAY7|*B7n^A1^=|p*#KoGA2B2*f2RW>Ghu6~zWl#X&6hQ77-dK{~{QjKH0Mw^B_zIBFc zQYysYRGfLrnlk&FlLQ^9sF|G-vWR%ocMz?Y@3l!aQ?Q^WRC|zcMa9;L2e~5^4d#n43~H_7p}VQI=-t~X_L)_U8ZRD zTz1A>q&(;&{$2V1S zDXBSBIt4i+YMR1ZsGd%~s~L{x=WIC54?A%9-+=YN>e16rrEO`|i2$>cW43QefJ{aH z;bRdh0Q8@7k{!u_16NM_#zU3s>2be8K^u(2)&tdK)lr-5>2@6eY0#fgFra!q7uGYN zgswi#V^0h1*{P;0INMHOp=Nb=9dqQtCK>V1C~w%OoalL0C@!ztHdIS$h#5kCD21%Qk>BB0-p(c2aUzJKgC4YPdI1c)6Aj-Eh@c0|SPDBQ&&@oM!ZOhW!QZh_Sr|MRIB!Ag1a-@}kr}noCxd5jFP$J=D-Kq@&w4lcnjYch=$0r-WL!1-O{mbpn z*y-TOjmuDV{d;t^nP$vJh?Ak%7_PXmj}}b*{ouEu=$wLEotmA)ANA@pFrh9y*AP?z zXSIFQQZ=sXP5=bHPbW$<$K{WnDFeG#6$gLtuhHj=gH>KlZ7Re9FCGInfwmd6;N3P*t&ksz1J$tNJfw z4WekjhlDGGJCc$+CxhK((zCW!ScqQqEUvDT3VbxfJRlU(m_GctJ%p=*le5*KG4g~Q z+I4aGOVw+x1mD2u5zPC!-9xmxjLgz&b95Iwss#5~v*r+(nWe2yI`lzNL)EG(o!z5C z0>+(zdD=J`RfIgXw!KQ!16eFeHGs>JjfX@HU=fkYLJby zWB4Ib430<^rJ?G9ffxx~`{py)kXNZX3UJ8RCt`*%DdC9cN#L2?d9y+l<(o|K1Il_y zoni{-%_J3Op367ak`tAmvdInOedRVC&R6#W+Q)RsO>a7>19&U-HVNQ7e zg&5c85oXz0#8>gH2{vC$IOk#tPARP4j|bQBdn>+}-*-5!zlFzjd~#UX997oOh?gcp z7`c4NNgt_i3pdA}9|5OwY~5HB6giONZjE`sNz1g>f;(S7!?b?nm05h4~H(XQw8mI<6V0g4zc^WWr0m3~#5mMfB}7Zr_G^{i)fr{1|O zk?tXFokL!A8k*9qBnqK)g4_>+L$S_dCNYp|zT}~2$HzwzBg2tw{X?wQ0sgS`MCE3e zxjQG!FShM3dGsv5HIV>AYH;cd4}JpU@_yVqs^+Aqz1GPW4w;(jW>yX;8{K%c#ty>4 zluW}NY-3es;ITWW0O}Xw9vya`xO`*le=3lsPQ7ae$ffG#>g*9;_DBYRlGVvko)4;m z=Y%UB2h07L$uNejplQDM8V5D)`F8mrZ>3Q3sthsgL(0yJ=J?d!f_FqMyND&_4}W;` z9~Pe~Ov~KAs@n$ADA%C2AB*K^xjpF@+J9mFE?Tm;hbdSA53W?L81Qn={Q^WW9LNu6eM;>)wq&I{ti=9LuD=t z{pfRmoSXt3UwQhAO7+}TmB3Fr^VZznR*g>ouXSAOp=hdRb49hE?&BLJ74qXM4=v3R zZIq_m^tn{+DY!$B?KO|(cqmj`KTU|NZA1V4peTs$o#y>Q3^{JTRLd~u>Y5i)-H0kMMgPP6d?({l)j1jq%NPJM=cLqo%quv}$DLZQ$7^715KcTNw2!b8}&N zrJvztuw0GVS&|3zVh!=B#l}~!D z7Ds`CgD*gFSb4&@K?EbnmRfBl|*FI5c5UGi*Vlhf{oyC+Y%QFM* zd7kmT<3nN4W0|pt4+|N_N|WieBVjtHF5*UlG9)l=VvyE;`>Fu*y?5?Zm}m-R`@U4@ zGp(;e3_&G176bO0-M`&fN0&C5<11%rbnr3gHl3&fs#o@(I%*!7HZl7$%OFQF)!n+b z;*+&%5BIkA?42(iA-O7~IKtdt5^^?RKud0_C`~t!EOGQ~M7uV%=$K?gLf42ZTMIeD zFID$qU7yB$2+tKgMocKTmPf~-*<);UFz>5qSo+b+J;-n2*cKS=tC1l&sXFNh!vonU zq{e%UbOf;pyf4qe_0fl7uS_ay6@g;;R-11(sJis&TP-_IUWoXr;IJg~AA#;1v@yt+ zAOupi;Uo9b6R*egUaMXW^a-mvU}d$jvOV)Zk+}Cv=q2X&s}7JxcjRXP=}U|S<`M2c zbG6Ri2uS7j|Bm=UoVdx=r0ucb5CLG|pmi6tefK1GQ9X%<5Vh}Ec`%e`(n6x8%t06A zOvH+q_!hn5E0I8|&KFtFy$574?|ebR@&fQPi|MyG6Q|-Q)dF~$$M_t-Kf4tA zw&5EgmY0Q;Zq@=JE<0bTdX!!5mr6z;Q&)9V<#6!67GD5sl3%G~(=WN&J}+}nSIT6t zwT>9(E!bV8>W7;7P_;ierF+{-@(4tJ?MS!LI35eKMYme`+KWOl7e{=^I($%wjqNO~ zdmnn74o5L>wZ7S{FsFdt!r?=+J2Nr(ov)h-fg^pO_GX5)Y2~*s9Gws3TKFHS!q=7W zXvdz)i=G}(Y%^%dTd|(2g{!}MK>rI>d%fCnj{cn!Fsl2B+~VDJ393@R;KF62$O1`%S6jgli^yaYfCkV1j>qM5*p^ zvWHQIE7tGrk>>v^Ts{h=TFU}(;xRTN^_(A4wPX#PVR?ai5?NLx7UNPwr9KEXIO3@Y zBx@aXz^Kvveb0Ke>L)*#F}01mMm&cUwfDVLRt&12=~kw1oCIYN`h9ep$TSjpFy33?4dm;iTD3SGPlitGDC+^9b<|>7wR_xY_v&_< z&9jhI?gXj8@Ta8r?tD9l5%Zvl5-N(G8?;v(NPYyjXR9=%*^14{-hs7K&vL0rDXU8h z%hj&(sqU64nEE4*+Kp$`T*Qp%pK8_B+yI%&HDfS|_P;4Rqtw;{dml%RD59a4dsFSo_$iQL&ucaD_wS~%txrbDsa+C;n15`h%OfW}r0xJfk#f1dL*M{0K^?q%$tlR; ze0;z4;3<8sfztQym2+4HWXvbUGM!K&?6Dvhi`A{n`q2QUHjZ_e%&BI~vL6|Y?U%!Q zN7Wi_jkgPKuG6db?{#b>#S-SivC$6S7{GTh^v~JGe6twa=Xt#D&j)AYyPW4wyaviO zX)3G%g^V>_XY6jbZp+lk&Z!x4CT@P@^9Z}!ox?6bxKhrRE=jK}eR&CNjudH-SV%D> z$V%Ew3PZAo62$sd49-Q3Bs$aP?c++F)coCSaMQan>DH93<>?XN-8mWS-%_=s6JYCR zFMNmZ4-DJ;I>DTf%ssEGRx2dJQVVyuv@Dx`vDz`Gw{ofyVyTL+!;0aPYlZ3Gd&jHZ zcr-iy8fJErs>!NUV?Q5H-*mLQ>#~;Z>0x}>z)86eYHN~l_bkqs_spF|_YR~BLAA6n zst>82Hp@#reqbN#VPy*0=iJ4GW40j8x9OuV8e7@i+~-m?AJz^FNn4seZvL+Q#k@Oh ziF$6JT4J@>@l~$o>rVbRdE3^&xJe0}S9V)2_vly&Z5UzQRT6wAN}AFs!Zr0?Gmtc; zc`G%6O;%lARVHQTNSj)XhXlzbXqy90wR@rT+pRwA!a39grCL^POiErpDs{ZD_-aF^ z)-Q~1Yx}VgiG?Nhf6!E0GFY!d&U6&OWqtd;44a-}S;gy8T(xLRMxbOdW3vqVUu!p= zdXd?orVa}!Xm+boSyieVP@^{E&RM*LaGFJ}o`J`i%rTv|)F=pu9%=iZ1Ts7XYr~w; zl|d>T(N(u}4{To^_uxfi=tbIYnnubJ6QO*F%hc{7KD`CUpTwPAj@vK{gbUy_=NiUk~7gDo7AU3 z8yl)#-Cj~m8&?m~j}WzfF`GL`k|Coy7dB*FlrX^gIh${2LMjGfJp$cl+SF1GHM8pO zn=t)2HzY=nfz`z&|C{S`eu*04Hknr|lPgK*Xw z>daJhY6`LV@<3dY#?j#-kal1NR(Y+^&-0}}=pud9pvd6@72s0)waf8twM>rmiJnl= zegA?&HNzjox*H2NXKdMk%dPYp>b`Wth;Sn-u*0puD?H1o>`8RP&`q`u8e07d9{ZNgE-F57Bd5Wp{WUt^bXE*)p zRle|-A5B5sg;d$ujje)C49hPMBac9wWUAUO#HyZKQ8SQjRTjCHwIQ{`={4V< z1~eXtoNxA@5;!Y&(G+bd`@WE9i&4XxijC95Vxy8l5F%Ev(_{yyQSEEo~*4nD#hzb>ge>&$6YH18t{W& zevw=yqtNEgVc1>St=eUY;)8vCKrdb`xHer^t-ym9A{*k*NS;b-$rzJO`u(U<7AlUTJ z(;d+1B2*zbTDxx>-cvQe;Fjbjs%WyE*b1bSva@OFuV(75Ov|Qq{2<0ufN`Ms$|mW( zuwq(A*X2G^I=O3%NMD|swBcAck%Uk{3=Iq}6tM^3iJD9=n~$>-@31NChzaH`5?hP* z6U!!m;;rNObA{Rn8~+?9@)%k(g&mtPbNL8uZGe^EEn}J;%72<+TYI?RF-ItcFoeHW zVz!=4b#iTc$|13cokJS_JDM)67YQnNc9p7LgC+Hetv{>iz%uuAhq}Y^V}$5|NF(CQ zruvchAtZl%7()`+#CIONo$4SkeFC}g=|!IvG0W0EpW``t-UA2Cu)ix!ApQANBteDF zL?|d?e~lFRckr*c+=Bwxbzn*flQWb>648h{viiz0yDJK4SK~JN7t7AP)1yBrV-~yv z7T)^ee5c}eq@&7PM@#cnZhqt=xl6zL5H*LXwQ&y>jm;R znsT0=j%r7I9(^_qW%&L+TMof`u$BHrn_||7DB2IL7+@z^oOb7>xk^)ke%f}p9m2l1 z1hYG_HOk4sOS|BfE0;>ufE_Vt*ehrbTaJN`EZaa74H%a<>8#k4xo9b8j*oaPDp?#s?t zEl^;H1=z$ZAK8YXl~oh=2UUi5=k0s4tK_=}^|<}mXr!U}=a4)%U!oYp2Yzug3jsq} zKWm4GGC?BN)E{lcoP}6wwFr^CY+JrnQ!jFqXHP;^Q7=nJTn%*V-K%eQd;+f)(-v2& ze>I}~Jdt~bCP{`V6^kH(xD%t3`Qnic$U=3;YJ1JM9~>ARXsHXGvH&ZBK#lUT`SNWd;RR{9 z2qX3vOKfnk3Qp?ij2w~_nP-<2cus$Ua)M>cCZOJvjnHsE`DyCWNz*kTQ!qrY)fhjL zH3mvJT(d(K!sR9j+VxM!A@NkCgpdYGB6*B23c4)qckNALmmTUpwz=z!v3$564EFMv zxT+Pf5H|rEG^<*BXT-k;6d}Ezq$&eU(uBnVadmpd%CxS@@(5MuQRs?=-gpg9B@$~1 z+#rE$GoH<%+u1WaeLQH#jj&H$5h$)KFM;YWwM?<=`Q1*P@i+M58yv$NXp3ZptQXyc z6!T1jFlq^%9E%acoWPD-XQKTy2}J^K=TT#;wO|!NI}EaspF+7Z8HijQgmU5TtF` z2nr&@N-u1iU%vd^(in14^3SX5?ah;SV<@h7E9}%y+f~t~US={=BU?@<-4HU3egqYS05Y%MMK$N;D7DOt|xaT7;%WM1n1BaK5C0z(#_PhR)O(L9v zW4Dj2AK>&ot+PIp*Y*O(Fyp#yhs1u*%+t?=xr+I{x~7Gh zpdrfIhg#WZhPFO78&t|c(e(|%R;u}y4@)<7=!@Zgy;U>Y0s)=)Tbu3m1>Yux!&v*C zLTS=k%ip&9DjgKJY;#v1Tv5%r@0Bmfzw3wlh^NBSI9;g?FoE*T-exbtLs+{p@x;xT<~S^Z%1_dA{;bj^`)1$=A`i`)Q$!6UnZ4bxuJ^&9t{dXt_U{$pMd7o#Vfyv6Jf<0AE9S ztCg@qjxcEyxsy(qfp)Gshj<`_;(k}V*uN_T9Kxo9+{Ku9@O-R|gd%yWAgrrcqAdlU zyQG_`e@Ha`zM{d%ycE(&U_|`;J8A-|U=T_PJXV}mi-NxbDFI~hah5)9gH{ur<0;%i zz4M!^^eZ8ebfn24Q^-f_gCg0u`PS`N*%3+BpHvq^(ZCQ%N9$pF@Zyo=4ov=84GeIq z+s!g3eMzmH3+f-Dn+RRS-;xb|i}(oD0Bin#6KHF?hX5Mz8yb(n4&0*$ObC?C9t_!z z3XRB0Tt34k^&2BOm>?n%sDbHn`866VYC*U1lxjL%?i?2kR*fUHN$}4?!6F(qF90s= z@%Hs&m3Tw@@(0zTL+}J`6rCxJNen@>Dzi{^#xmm=7WK{aP>1TC4 zU8;&)gv#O2KM_fN;R4q5KUWqGn!pfWJ@Pa^U=$jb;u<$HHK}H2RDsUW=Zs)L1Z@Xd z9)wMm$EccH8T1hFv7Rko2!_Af?(PtJqOQET4Ven;%jN}mn{}TBGntOuIKj$x2dYS)qL^ zt5$o~&Hu~pHxifXu(yEkrymt1kBjGuXg%E%a0i3rT;s(FuwwVziUh&ON&0);V(O}P zcvXZVnf3f5h-WZjm4eL=iEi)0rPqz2IbUEZjbKoIu^$Bcct+8*iSb)`4iJ4Ou&CHT z#ZnJcxjgfQ*`eZ+9vpJ{K-N#Jju+WgXlc$I*dcQN%^2XK!#qEBLQe^jnKsJ!Q z>nv6G`B9LJfQ;{ihJ_0_;UQxfXRki_YcbFGp$F>)S6IA*KM(=rlm9dNJyiBEc;-g%i084ccOBG83c+#r3zV zyI75O=Wfq7^0ns};qghd@nw;jjMdcFsl}pp@mKTsnG!=9d*Ug?67XPi3`Yo*?4U%# zhgzpGtYvlC<$J|q8h%BrwxDG3(p?wK%j(Kg=cHhR{fQWyCKH+sG8zxYvaNjh;H}VT zq1Ftw@kB2FIpmv34C&UWuS+eWn+bIU)h1|Sy+0m9CwJ$T`JUzXu;h{GP5pZeCb1*) zWK{Aemg10yNd?ky`=7n2rBmZ#p(rFd`%v?HcM*iNHSFd!Rr_`97xACrMpv9-&G+t< z+;W)}5#qnDpDSbgn$}{ymDQ}OthsB5+^QT`Da6L7L06%;wscz)M=~;@S(nU492~xT zjKYu>DKE}(T?CLivbjqWbCfB*_maBIHr8RG*Vwy`v=Xk?G=>CeTFYpf;MOi!(u68A zM+JUH#6zPT72kT%q(oGJqCQ3ltWB}r;MbLbtTK6=`XF@yj%l`0=HlEiRzg75Vl~1MCpUqLR~L z%V#Nr;z;t_RK*TsJg}lomQ3p*lQ_*q@u8uu%iv*P=%?O}R6c<1^5ZU#^IQi~qsvX+ z&%@2ljt_ry4_ic|vu-j5pr(g2Pe*xsCQJX*C?{shX368=QpN=q`LBILt!cPg%%txh zB`S=_HTLkN?UBK!SJBz)W)2^#j1iR=-s^+B*yHaGfwgs!7Fc3ia~61RId{ErnmAhF zYT57!eueiP-nDKvGqp?r+sD6GHs%jQKkg^VBaG4Ef=B%DKR(pJSmF&0JX%AExoYx% z7!y&b)C`ftU{Demlf@kU0UIc%cYMJ;rM#V$O8V3F6MZ|2w)IM^Xr$AAlMe_ZQ%X0u zv!=MQdZ%BuqwMZi9Iu734a$JJfUCSjSZLGdGkZ$BssJK0p3X$jmn&V9jF~&vp^|#~ z0piNHLzoPrW6)UbZ^XJB>WLDp&#p1&PsyX)^eqH$wqoOmOz4S3D8MkJZEL% zP@RR591zo}ascxkg!_x?|N0cYKgooFfPgb82v|(KerGZUA)OXXQpL?q~ST#`v*2k4)4Z$rq_ew{W>Iuq-W! z>;|r(wqXkG;uLfUc7=)cS`29*Ujzwq64lE~{}8lG<=fUlbu0`F7D6>eNy#QF1#S$C zxgrj*q@-lb@P7-|0!js9Av$tHG<#d74@Qbrsb1d;#9aQ!ab4vf7Ulg4w9znZbD> z`y+(8x13RDoDHsMyVo)ptBxw{3Ol-b-N$sTk`_xi^moSRKC|t6P_Gd-wg6tSZY-(~jzUBISt299kH@ z+#!n*PTM}nD+4U$A+XZq-{Xr9*W~P7BaoR>f&IHerkO-5CiZBl*@;n)D1o*=XC&G*?)nrUB(?AgYBOq{8|OjzvCji$18bpyXMrd zAmyk6XIJ8CvJC3fw*dtuk-xOS>15TYOC#GfAAZgj*6q8h-kpEeW(m_4sG;Vz)H}ks zS~I_Lx>G=cLMMdo5m7j=RP-3GZRBX+V+!E&w~}>an*Cs$-CIaLU>?OWhU)gM9f*rN zBX)~%^NL(N(s)bv2f~91b=sa9EIyh{`5DA*mq7B=G2$>Q-U(DGN^HuaiEJ>$1x$9E z?@?e?+_#T9CDpluKY)yx9d>TQ# zIYafY!eG9gO}Ee87QzFygz(d}*^q-jO`kq=1>C2-Ae7<$G>*&PK%aYZU?-d^%6o%N zcqeKwJGQ&5*N0{vi6B44bU>opu3(!Oj_DhHr6-#>Lg73mfGQMSy!1Or3V|Y2E=D~L zT^u0|w}Ox&6rHh}rlJFOzr|HD@uz%EP<%m%UMW=jm%a3|6aR`=p>okhKWcK`3_T3I z$|V?*J@N;p=1~?UaKgrplX4BsSWZ4M!l)uOo-{Ox7<@Y;tTWbVwG#L|(tm8$&4;Kn zAS%qRw=e9w;`}h8KVv>!6*Nb|O%9{g3gF#u#O_m5PL55*Z?z;5 z?j5;`ql&b6Ma6l4*02kU7={81OgqGDO8lhl^+ETDmRfr&Xm4fq4=q$N>$xy{7D;M> zNO{2qHe*xh@elt3T9E$RiK2Uy_U6hH{QLtH5hk=41!3(bd1cB_nO2Pk*uX)#FPooUTb`HpX?Rxbb*KQr@Wq?%8B!@Vzig;l z9VB4ZxY6G$#S~F2qpvE&&1WS3m^#KeaR64LXEe z$KD-0&P2y}qryI#)#Ya`{xH9`2bdEQ90*>WyHoRI+&*FAtSo)MGuT={4q@n}J@SX8 zHuHC`c6;}8Y>7V36&lp;mr0?Ist0M{Qo~xZc&dF~iK8}S7<|Q! zyqdTTgJ)RhnZJM=%%3eNlFX2hjb6!pG(BIQZX2)s&cW^Zi4f9M9z@Qdz3SkUqQqr} zP2ynAduW2(a1PPuUZi6lao73n%3r6aSbwBONq09EJizakT>a#!5{!2P9jwjUI}zTk z)o-ag$f`2~cB5Cm5@DxF#hFSt5%G2K#k;02D<4dI1AjL@87+7{^J?7b61WF3n^bi6oC()Jw7>%N6*x6A-;Zk|rw zd_}QUiDu}NPWnmFxcnJF)2GxClopYQB*EIS_K;OZq5PI>kQ1$^7{9vIg}~Y%hfXt5 z&zpZgcBG8oM257t!{rPUE{!@b9x0)NC6>OV z@m8jm_-WP()@xbjd*7oa;i$w_!W-dSAKZDcYwi)Lf~#y9_hC7%1hc-2(hyOKD?HX* z6~y5rchpxoT$MTD7v`vA-`t}-eUOcBlOeRklrRJkS^ZjHOF7BHqy9rgwxEzp26yy$ zV%W9rRW`MRGNfN?znMK$evhKP3T%>Ril|zR_%#c-wB2w+e7(KusJriqHXzNVZCkm#QQ+=7HmhvwRrxlSY-)f8z2IEpcUXP4UY$?f&HU^_jt-lqoglNicrqcypbbddInp z!fhxi><^O`EW=P}2BjVzA+4AgdbA*9|e7{$eO*I-MU2ZMQ`L{EV-<)-(rASW? z2%urMT=op6s1E?uj4#%HGsj=E(``{v<+hQbEzjW7wxJA%-n}mCA)0y^*asQ&*S_;v z09k9?#EBnFhsa!zhpfo_IfXxkXNMmjaV|5v2&XxO+*|yEceL}Qp5pWTi+_@zv{OPg z2o^-}2C;(9zXVJ9eDxxy`{w4F((c2ks**&%R_tv~aNlBb|GMZ(W1cn~&C8*VqxkLo z!FXSkvg7DUaZH!=C)JLvnb!<5W-)QWr6XL@5XNuWQ}b_e^r-n!Ly1f(5VMhbGZalv zUe_4eTYNBU2d9^k@kD9H(9r|S2^Vz&wBq+_dH#zmtoIxF&7g{-%oFq_<~T$bJV_V6 zV)CH7qVL6vrQ^x8K#Z~ArYvIVZk(RU8Rx<6E*un~{){#Rq^67_iUTP=!sw){E>Sr|XCQ_OAkTqVy#%4Bi#=^nTW4UnD44vQOr6EM zEW-k8ykHHq=esORR!j6Z?}-I;lQUyU-SS_@*cGM59Zl_fqe?{4dT{lFC9xrC?Yw&N zwXLedu%1+}2?F;qm*a)vlR=PBC$z~@UMUnR;Osz))2*HHHz%ejUU_BlyrU|05Y5joPu>wi>C`mVDOK+Z{L zYoxh^KJ^0w+$-(Mx)>O#{&ChVXwR35JvjZvhm|RBb&r!@1 z%vyu%bjISnyShOb`-I(o*2(Zcg6Bo&~D&n#1@$X+w(6!F3Qie;mb`{+Elh^O?7}F;P0c_Z=`Sv(L|ex6nW)uO1@*IHmQC@x+_HPG}j~vGBp<&%w(?Y9oI-zK#wz zb3atm0w49c_BeG|ByWNGW>Qu+96j4NcS-A7g@b;fwW3E*Pt;<>y-};IZqf+gV6@j9 zDu3Y$iY{x5*KmtI6i}xtKN-Y{4EEGmJ(&=#>w@esHA;V+MtZ7#`bCJ+drt*HSky6x z((q@yyj;o3NgLt#g+t!kr|E|>v~0jFOk1HU{aXZCZhMCh(4u3GeOS2Lk5Cv$kSOz* zAhg+OBOPaK&wxe2Cm)b5x2pI>jDo>-gl5G(3ZWD)>btd_@!rrYR|aWPB?Rxh{OY#sn_)(`T(7it>OeD~uY&pNr5jF&QGpnJZ{ltT3XMkqua znXs?Y%a2Fg_V?(^@xYCW7L!L0-wQ`MPtM9e&!AHj`QF{j`)MpUgLHsn*}&ubP@|m> zbWVbY;ujS24~|QYLM?t^0^3KLcpjtLB2-DfVKSH9q8DG?PZJIqw!9^TP<4MDpAm?X zrcl$_vCz8Gkv-Vi#W?5(On0XwTQ#lu;a2W*h8wD)jS0i1P3424a(7Zi5j+A)%Z(l$ z{XyY$J@bFHLhA?rh*I4Tw(jRR+^(;W{VJp=gQ)fF?m{8x&NkAm_%21I)F(giqNZ;z z^YH?`hqTFzHsFT6Mwr?Dkx`n>f28yBK)2 zcw|2=NT2X`|9bqU6NzIsK`aUi{6aQIJ!)L_F3#uxmBn!kko*ewk|wu-vd)t_2ch*# zylNCuspdy=l2tt)yQ2Z+GUaJg2^0fJ!_E3bsG6vqJw`vXy*xhNo%aE>nM(DKRAC>Y z1{?g1T3Z7p6KCr)*WqcFjjI1et1*HE7ikmC-d0@!0Z|tF8P>@(3}O^{#GUL8xHUX6 zoVC&GGwk3zf( zNINpC96#U?+Ux6^ZTp%(kAlSC{SzUAt*h-)z-tT(!YrM#pUC1&f&I*QePCXZ zI>~ScCrCB=L`$5wUx6!2D_%6XJbhxvqUk$TdyYh9HuKf5_eNZgw3|NV0i2p{QNUJ0 zdslWd8O+w&1cuYkh-|8i9EqxOf+DAhiO};^BLOopk#BQc$(ePsv4l;q^CA{N4CY=A zV+N4mzYt}ngfjc1S2!;Li7_a9(#yQ_+WrCMN*#Y*oWq`ADd0+D{Sgeqnf)2y^90qy z;VpSof)1W;so5EZFvaFSYhU}rz;z+|2On$Ypw%as&3GfUM+f7pJIQ`Bi))U|P-V4$gn0oYY)1)q^l}lRZ~z7)gkF zxB8w+I3W=J<2!eTb|bLF+=11NgcidL)pKGh+G_kaeHIhcn;sTsUvA%*DY&gz)qXB0 z_I~gK7Ea7#jHG2gD4m@fCglwVwCLy9)$B=FIE{4-||_fcjt$|I6Yz@25bn1v!?^UbP-|Mtxv?Z-Tq3Qk@aD3!aKEGXt_ZvLuYw zVt}U%+^9wH23R`*)xcfGjx5ObM#S~bm5n14qN9riN#{u5rnG>E{cRB?gQS}ojtWbJ zfP6IYg37o-T?bqd+Wvjer3>d+zZ}mUv9s~GBV26qlf3bw44j4-(1oC7^d;xLPu%e= zKF#MSPjZkAE+65Tjm4WuK^x|AQ3qD66=huWeU?ZEc5Y=Ma*7)-au@+{(bv3<4yNi` z(E|I!(dAjJ20G3fFUGYLiP@}~k|_rDY2e}+u2O3)Y_M8=ce^K@E>Pnt?ChO&IpR@= ztcf<+{E>5hgC4<@A7FF=H1I$yVs{%+(td)EY-n<18I@XH(Pk2)L2958WMX14bVyES zW}z=NqfouZ2#X7&<{6b{Fq`%g$|L1mepr5a_y3pM?qPA^_fO~{$7`CO(*fTDZ5y`% zq7^5{1(CT0#`09$o;LFKZX~@0R^oT%lvxhbgl`MY3+3J_Qd)~GEc6U# zgA+@_Wmp)i3mfSFdLTDK@NO~<05V38B6rUXujiZyr_+kRmx_@dBmfdanUG!KzFpCE zg?KM)#9smDaE>SnRB`>Mq>3x!EOs|siv0pIfH*8FJjJ@=TMh;u_pkdUyEBUp z;#KxkH2KR*x4x_wW1JWEe>)ucs#yOvQF|%^9h__q*9?9amf7w)=eXZ6=@1BaEYsOi z@Q*8_;P%sN%*X?XDu>U*XFEL0bgWfPi~Exr*iQH=-Vg3lZ>{qZdsxdrG1PE`c^2SV zO!SQ|HbGH-(MK?916kx~lmm70EB)T)yG>_T7;f%W>A6+5R9XSx z`i$H&kVkDBx*xcv!U?j8ZC;*QgGI-VGwVaB@<98ls-3F@*g1g0A^| zL$hBd#ti;Ipp^qdW#gsA0r`GU2$2zx#5bVLKT#APzd3p1yE~MWFY2W0jD#b6YocX%7ae8r!GbrT2Ge8+x#3Be2qc3KnsX4$vm-$=x|djpdwA7 z7t1%EtzVI5vh5rP9;>JdNPeHS`?g((OAplM?o1GrLT=wn(sVZ*_EK|NA;{=Yupr^wiS~{(<+j9PquxAs!~ZoiF$HVVZ{@h%PMy2$`Aqzq z&7a4;gL;YmesJY7At3H%#?RU1@SCH~I;|k}Qm?e~Sa3D8!aJwfA?<5AAYhC^i8w0H zAIJQjj$_)l&sG(Hmeb8k?!^SclFAn!#e$suF441Z`qK=oKoWNHonp$HyfU86)Z}6S zMXCiW@48CfyhFPB)k}kgZ#FE&uiq}!D4VBP9X#ns1e;dVPQ32PEBL6>KivfWHY}p8 zAJ&9ZGMfm*&4`&!-B8%?i4^H&@PFIX0OLaDVLCDG_FlJzJMio(lX+!R)1yljf*j(c zZOThuK$R42$px!XmxDqe{imJD6*X{}k#x~FfM8|%E`qwqb4wmXoFp2Von`Rpk`fbf z%2*s^7paN>%b-A{QY6-!Z`dE!can&)i=1<3Lf?OpSs>1JX7Gp&2_vI_ zRjW!@Jbtg-W|$Rt9ao!OmCYne{ar~K`dj@!$y>o`oUN8pryg(Nz$dRhwl?9zcgql8 znT`1cOECOrdQ(u*U1@e}Zzv*0uwuSsN)c5?ID_t_KYv|VX8-&42nxa3eBvmlEWnWO1 zw32%Xm}!^CPyyMvZ)$40wXJcx#_4E%x(!QWeM)c`T{RU0-k&xrd1A2s!MC2FAu+|^ zac%(f4{l@_2c~F6bK$~*bD|%>95<-n`n{aR$N;JgHy>?}w3m0Hutvm%i?893dNx9H zE_j%;>US8w)4^0%v^K`kaF@PxmBaa!Kv!b2Uw$uG237aNhK8`qK-^Vl!TW7Q!2`ixgDzmcQ_S5D}$Pa*zsgik^Q2U~K zSCE5fpxt=1u5Y~N2(KPFw{a~ivE3hm{-4KQ4JSNM#2E%YJm8~xw0sG&f#+f?Z1SYd z+x2BCpIE5}Zg}$V0&BCFdEE$?i!W9UZNkA(QGz1_q`0~t?9@ZH)$;jcSaH9Y`|SD! z=R52$ozB<(p(e0`oPFDS9oaT9E(p0vB3bnGA(!anG}F1p*|H zVMoflyY{iGP8haL7%(x#^uqkJYvLeA+6tFUHlqO2ifUk&gbQvatkar{@Hdj(1c#ed7Z22)WP6Fuc{U8q1A{*|JI0qMXv`84%nMgnx|OQ_C8OrZI(Z`#$WN=SxC#Lx~Jofc9#g~+kiEw8N?(2JkrG` znh3y&W9*}-Dq1k5k{B-^#msEYiLnpP^pEK&nciEKlXE$>R=pK>s3UQaeb^y*Y*HK{Eu>hF zz}t3&AMub+6No=&dm|N*u*`U%>a0k-z6~D$Op}+ByuD`UhCxW`ExGo6VEw&Cy+H=c#r*?9FaZ2wQEf(09S_7EPR#eOY-V2JNPYHwO{8sb5LV z1iQ!~PoYHxZBbf!k?b8WnpMwiliad@pDh;82>dn~5&#i8QdbTSnBMVyE|hXrxD5!H zjI$7^RYxFQEVS!{sO47hEIC;z(yu*i?d$u@M@Lj(UU6a-m_rB>)x46Qm-}TT;&;~< zc?ugTTmHkBKw~L9O{oz$x4LCwlm2_0c4LWLw-m1`*8|bMij~h2IWwE3x8ZT`=&u?) z;N`_v6h;Iu5hz8|E}8Re{F#)A5?{1qsGZ0&<{7!6SFy4zfJB z2`colh?|I5yG02bIu5t;{rPV6_oSWNBUWk|)%xxfF`~J^7F>ABI2rCd&yH8-E7-iV z9n+!__9vq)B~;fejxuSDaJLn&wgK)I?v}5!=hVqARX;;pC**Ki8KSisAzmYnn+Vaz z$G2IWZ7q5F!#X%pj8I}<9V9Lh2^|?f$^_QI2HDu>ngE&N)RJFSr;BfT?F=#2p5++& zzA{Og<&Zi~Y24;jIvqZH71*>esXuAi4h>`h2|bhbB_EfE+T7M%a6gbMe=mtj*at13 zOj`ZSmub`^Qd%G0LVhD(akof^*=?Gr2kdREvl19#OCQ?67pwIE$s$tOGK8MKCPYfr z0k2@|Pof8Oq;N(>gh}D51e^;GDbVZ+bf|)qj0RvfoV1pbAOpp0AhZ{E{GbkJBGBV$ z^pMMch=g#C1DQ$3GG)S$E2MKxx!4YIA+XBIOi%N}*qQVlcVK6~!xHEb;v1pYZX}>WuhdanQ$Nzom)7*=(JNR40MSw`1f*rb;%(uePFlZ`g71!^;i{m(X9$35e zOGKCwMH^}SHYP3GNslVkK@W{t2{ZQdjrk>--s*=v=jbf~;h+Tc_Dp?o^#Sjc<0Lrf z8b-q&rCbPZLe3g-IHIp2OAwCa^g<(y@jPhVe*5?bWHIQGDY%9J5+*R-D(ixSWu1Ka zC`$&EqGqRh4{M~hO_AFz7Z5c*Q||OB4&`-e!}4KYh#B=KX+ncMy3+_XuO3K=MO!8m zQGddhH7=i$fSLJCYS-s!;ReL5zF;RNH=o2%^ByOsD7Lxmc_mOH7BNM2dbBI`j+4Is zOL;7OjiNgF9^x^rJ!i@2)&>IC;u5pcJ-vFLun@HS!(nS-jou={2!4v1E5X(;A1Q5W zYfVE9$g#{D;v5E?f&il9Z>gF(FZ~XW)sfe&v+;6^eczcVD((?hQ8VU|L~)cLUJ-GX z|IoZeP+H18*`Ph>;8OQO^p)_~b{0*NwXLjWTg&8_Dvyu*#z!K=Ch3_U)V~w%c$KY% zNtcKabmH|b3XI~f^TF55l4s=}sYF!1WA|}?=eu`~np^`HL=KSwaP)a#6$+BRMyz4} zVf0j2dCElFG4~*SBLigyrHICvczIswz_Z7>cTSk|s&PL5r_2qxJj2|5crm~iEoj@! z=k)-05UF8p^&E=5{oV@4C-8>w(JRl9Z`y1ziR75N^e5+XXQa|IDr8B#p&Z9XB8Lbg zxz(zER$OdVB{RQg-&&CT$#=uyr4* z^T8KdFT-%MaG#O$C0mzV=$4$pxXD-7*ur2b?> zzyt6Amlp;UopIXoaMvfucB`=l*Gjezw!8Oz3B`+f`N-xb(1;lgdzDRqZnb_v_7g!h zxH!U!ZSqNLs2+^s*(ZW%R4#NR-`aSpGiqQ$r%T5^M5VFt2$}ISXA1qsIu~ZmHgQz> zCEKp0qWwN@C{*tA68a zs})WSY4u?RO`oiXTi;N24?iZ_(BN{F;u&M=%l%yhXzT4Y30Tx zVm{yMn%VlV_=c9sR4hoS@4cF;ta{n~=BmGxC`~h2J!9|LQc&F1mL14%0@Ze}6i)$y zgN}Ln=UZ@oLfX~Ff0bud@R37w19;=9Io1Q(dl7KAWC|Vaibcd5tHM{Wj+FepH?0L~ArHqbTW zz8dJ1KiN{JRQrT-3Q*hR-e#60mT_dpvnio#*UD`u{0Cn)8i>#CB^H`jAV(w}7m%x$ zQz7(&5Z)`A+l!sO3B6`Op)ac>z33$wpGT(v-xl|&3n?Ww1!IlxQ}TWSdnH--(^n_j zm1NM1P?HrrD}Hg@U~0Z$G5}9pQz+Fy)Sn^mJ8ZTm!r}INV}ehjJ4g84_6P{K_t0zWAJtx>33wK(miDAj64cJN7RArzl(MleT(&|?(`QEGhL z0rEvibeIhC*b9Lx(6wxQH0~d{z(|YOMc()?MgkP1Z&nmj<}_x~1(qrg>SZJ)f0MV` zRj*cN%^06@zrnV>VtuSa#ye33(@vNa!(~2zo)aM<@$FQq#&dBjvN0w9mLg(QXmdvw zV$?c(+k1h>${=6yM(XYoF38|vxPTI>TF-x}STYN;y3{Laop{pQy`pw;s2Q0~>+S+!k3axMy> z%>(0zN3=*n$J6{=y8kYH!rGT0_7`$BBRe`3kA=s-3!A^D2a%>!N6lMdQ?5^uVr3lT z96M> zV9<%hy+*W}!O=lM2K(9E3aF@$Q7XBf@=)~wa>Mj2DsVrUuJ6_!71K$tdhVZ7f{IZz zl68=?6}@lz=pnu1jY{}jB(>4LB5Y=7Na6+)Nkp}51MBu7R;TEeLKjKBhc_k}v8Cg^ z5Lf}CQ5-gICSNE$QB+H=vz5tJA)=2r48ngpdAkGfTu5hiV?0Jq>cWa_BlXu`D`{uJe;-G$f|nz7u~jOtf~=3WxjmAI{dWD7x*10t|(_pnLrF_ zA9bzU9MZbGytL-JtnVwY{iaEp;GK5Ss;`O@9au9=lvBP2W@A^}uzbXn*vuj(>D zzX>O#R6Edq#FWKA7b@_v-*RET(G^L6THfLehcU+nKPed?zVpDh6J&`+7+E$^8jki@ zSAo3P#JW(|{HCn(m?J$HzOu&DZ9iy%AqyEtP;^WQ(*&AJqLoxomXr9-udJ%q*rS6B~ON0`77sIIR&4U z@>N1(v1cM9+d+iK%k93~y)Sx7>z9TePj*izWCo?o#*U&(0ynQ}hs_b@znwI#7ZORG zp|L=+mfzpJutashQB>)n#voU&4h{<095vc0QFz4IIf?dUf{l|$OYh z*bWE$ycTX#N0^6I$0JKYB z8^uBRi7Lj8JK8=)tmh@z8OwK43ihD=eIQn*|a9g8{9ce3(s3yYys|!6oYl`_PDm zXD~;FT|1cTIO6rFM=CmTTqMD6PU@Tw z)Ob6OI!#zxocJCn#c{hg2!SJ`VKq!|K~~V)_yGbfss+k=@KAfcfXU?{sht8!5R>G49N;Kt_ z78FKX5C1q5XzyZP`>)RbUgl6WZj$h~)%qdDUAc_b;vd+MI(if+IH7Q{UI~to z7*S|{+BVfYl9IazGHQ5H;IO5Ekn(dRzQgCbWUQ_S5ryh-N)@L|*?$|m;Gvce(%>NL z-wdm=$^Z5dP=6J(^i7+&!VZc$rMPmm4q=xI{RfliqaH^kl5QlvNM}z_jx#d9!DnXm zqbcRw9`W_#Eh1o&S)1c2bxH(dGD75C{rx4Kx-s~b#4O66y_lEZbrn$y7coXRt4`xJ zW&D?`$o=kRw_m{DA74zDH#;_OtkA0IUTC?aYgSL@jx7wa6miFgPKUyQouVoM`AJ3n z3#JI1<{8D~bdfFb9`iyimZ+9QIokeG1#Mr0=H%t*vhgdo++bVegQz!K=&Mpe(~(|% zna>Yl)Z@G*O?}~bsiJ(^1-Cttc@n-$d@TN& zt)Z>}Ex?2IoA!=Vn9J#d1&VFLXENsYtYT>2(w-B}hr+DN_kw2_jUuUz8GYy5Myly< zm@Tw{h#~kQl^k?3w7~>r%tl`(ZOuPVHk3Xph{gbPvzM<>cERjnt5-pfuRjqndKl}( zM#h8o<@L-<-DfCNLpMG`04_~RMVwQ=uRzvtHjxZKzlj8*6w+TbmLD?=`ZlKXxi%;w z)Hj&g`5S0gE7>)9y{6zhjpBh|c<8@a%~QiE=Z^|A>`na^pWEMyo+2&>OjV zWB~6%JiJwebuMfIxvCBx&@&bHxjqPJxkaD+PnVa>PI9nQKN=zMDT@Xz-_bs$z0Li9 z09Qb$zX%MH1bs}_-Sx08CPeA`=?`aK<16X>PcwQD@&AgT!>YZq%T(X4cLk4i zyl-hX-TRJ^-a+wn6emG)@j`@vNT0|Jth(3GhB0BmeI9mbkQEm;H@m`|qQb!8qMInw{BU)Q$GDH#@IH3aJ|oVVAi`V7c1O@E+#9#>sboMP3oOgr0E)}5E9a9ecS z@ts#TuMBj`V>|M0f%{{t0QeWhhcwHnF{ge#j>5UYy4|>HbcVg_r;a&sA2pf^7EV2n z9gt`6@m<3X$eDI59!K^JlU4Jc1_thlEE)*ft#nrl2~yRWU|O4Xqu!uP%WP;CY|{Mn zH!2Wnu`mh)I2t_WF}C?zjO^gyWs)X1wk4MJDpj4}uCp;N&zsuO$nBu9I2k?JN5*v@ zDB^Pap~&Ry$#$7#(gLzTiGj?rpFLVRXrBO~*MS+P-3^b-f$-?YRV{qUvAgq6Y$$MxIj?!)~{ zD;!oj!^=b0yoyEv%T2B&=0*_)>DG2;-vqqVs-qL*NUuFv02#@1=e}g>#M`WBhXDdL zJ}yyN+_i1M8FEfpR;I9$s@A5dJfO%*lT+N@S1@~nG(hTHUt-x4ft3R(%BEzD{G7?v zJvt4CTE5G0&k%XH(jrkWJeaEb`)_QWKX^G}TRY2*$QqvbX*z}yz-|&P@PjTUW`M(8 z12{a38zKSO$&&&UwyE%cF6eZbd9YMriIB^{s)K>YRvD;jtTC8bHSK8_kY1^(#j3@6 zj;(!(XS3w>52{+flFU?RmMjVRFOE+_Wh3!CD};|QiSK2xe8t=r56l! z+{^d;*PE?D$Aaa_B;5h$Judv>vsZ4PtaR#!ejJ!3jdp)!;{NFM%)#*eI}cqi5c?Jp zluz7vBT|s=8SX=hSiTbqgBYUp90A^yEg23gV^345v+V3*gbK8SqSNpY@y#s5tS!|c z*HYCtbW~>Vl82hB)~4%`&CP)6s+zI!DkR@=%4-Mq3hD-$#`V8 zFLkaNb9mt0%c{W%@td}7>k66S+}ZVm7#oj!@F0Q)^%x_&PPv^eA(&a8FAqKmuHzpG zI)V-hvPu;`^79i)a)r6-Ra_<2hg8*ENxlknR_$4K zczEU31gl2;o?!Xo?*`DQj#+^XAAz-~pRWA{CS*rR@ocd{E z`B7DqRm(p9tAv@9xZTnYx?hfjSGYq7dP zSJe+nFI*#8^&GsbZDar&?c7F#Z%>~V(t%lA&UmAAq_oKk z1;F!Dnd}`VU`Uexo>e1i80>)EMGH8bg<#FyaJB+kw>k9oP(wj3&gjnFf;H2jk?(59 zN2rGJ?hzKEZ~Rqk?KaD_s!mMGUi9+;s(N8K&qMX2yj6A94OX3cQz>27vv9EUSzcEU zf@Tyi$MXE{#~XQdyMJ0Y*PWkFD_7KGXhKFgWOX;qGYW`!b@b9TuV*9s6C`=BJ_O7so`-KJ^h9}eOG zWSClu>Hc!R#Ywb`rrsl0CXjo`jh+{^6`AI)eY|Ij668Ca`gi*1m$uNvfCrkHxCRlX8#c<=}C?YV_$} z41ufS|C+0w&584BhOnu&xj=d$Af*yX@ocSWKEW_zgVncXs0fZj2Jhmo7s+iQpfR}K zU#O|#1AFwsY2ZPOMXFrXcbT6RqJp`=S$>aIYuYg9Rcb2cFTfUep660pGrq4+9T) zKH&5?e#1T&$-h{+DX4zE*FURoDDmj-|kY7m~`pI+u2)9obS39M1ja!%Ht-XrK*I4ZH$)gi|vT)2Sl+Qi@o&-_VM!{1?- zCBxEVLLk{F8JCJY!D?3R_CZyz=oMwZ`KhsL_mg0!@`b#r`~^Ro6cqmlt9JN7L&=AL z0^X?OiTfU&B=8(ivXZXvQ)DBa7xEQw#op{DZu5DMpT&_=+ju{xVUfNq{8UfN_PCI= zPJ&f$=husr23a-B(*WLCby;b0dbymc)lcfYe3yWb zeIx~;1B0ciJ{`@fF|Qwt0HDU^d2xikLdUg2#=ppuX1NvGmClx8W^|gZjV&bzB%fe zqp0qhg@R2C-*c1u>YWa~iuIn?{GSGa#bDNsXm>bPBg@kOPF9`Zjf~%us`;`C#3olF zx!}J4)Xz^`PuI)wZY9Ho$N7k<{V}w+Y?^iFv)2WYRc}35)9~oeQ?oSea$WMAsd=v- zDIv*}11RF2a8A$%SkvUJ+oW*!teB??xe~Y2z1guu-IQG(&zn{68NkbH|0w@%EfdXw zo+PA3jsaGET1$Ws~=;*=27Kle# z&J;O|3019F094eb#^VsDJAmU11r*m3&MR5E#6WE$7beUGCp1Ef5NCUWb#(aip_+p| z-zVr$cXpv!Yj%YvH41jwFx%*)s?S%m>OfjxtuwX91566KW2CBfPD(KlvFejOz|p>S zS2CJhb);ZRneUoXZ_c#+KQ3x-gBDChDE#(vN+VaCXss0 zs%VsYBsWBMYY7xS=#7u&_yZ_0Q$xB2cfv0OrpmsS8E47WG{3C(B|z^K>p8&=rAflrPEH|@v_|$uY7mi4*7I{{@ND!@k%ofbJe*? zRVQ=STKL~1KAkCR+iK;COZv+@e^%9Zpw_zXpSC2_x0s_D9wG`w$wRXGu&UOm^?XgD zqeU^_f0N-c3PK98BQw>yZc^2^p+SN(2Hi6|GLr}^uns-JO13xuhvOCXjtQy$=E)pj7a za80akTD_2`Qmjc%l2x;P9@Ql$KGz&JS#^Tc*=tz7j6Pb!_07@q`*bD!k6ATT3vky5 zaU->D+PjSj8wp`fB(BNo^gO7`H&Q0o&{rq=auOalkI;rwCb2sLI8cnQxs$d=$tO9# zdSY+^=5l+_iNr&Z)uXezw(?C?Gr+{UIyp!#fnFBs)TbJg-d@ryo^C*C`)tYr?h18?Q^hdL*kwokF(j47w%?-rP$>Cycb|C%=Ob^OcBuCV8pru#0DxGL<{VB z-*?=HM9~~}r>7wWtFCv213zDLIGDze5~J$A>g%GpaNu!$b$Nysld7)rl8_^-uC1h; z11{&)YC|A;T4GdNWc~V*I_d^+4l26d*&&B~KnJ%NXuWBiPZ`nddO$JnrW$6vOrtzX zrM(otY}aTh>?;z9MVc6}jS=MJwq+fCE@h^94=y1p{G4A%ObAPdYK`pMuYUNFOzB>= znxD$FvS|<)n~dgU)mLfL*1m+GjDqK5PGQ5XEZY;lBg@+fy!h7Dqbf|x{twa0X7hA# z+RP{hT5z`6l}N6qB-O02Q=BO>>8x_w>ck#zkhWC3Ky$aKLL-FH+VMF}0Nmt`Sao8{ z9x`PLE{1xW7tx{z#~@+(76L_t){aCsb9S!FNkqN$URl*QiPM_sDUaRDA%1@UPsbI? zz`%>4y%%w}?e1COED|PV_o5$BG-(Hjn8SeiG~va|Q0L@ft54lofI3(V@5>eiXZdt- zPh;B<2IbAx>*v!4)8h)k309p4S_!(e+l>TV(3Ct%lM9}w@=ti_ zU{{x{!ICD~#>uElT$)!GKM{GTy^9?uQj@2E%9q~0RKzvvD}&>@A6Ru>VM`Iq9}0R| zlTvxjS)jN7oK@3oL#XhLltM?wJbE3$ONf6yE0fOa79L(p6)wR$Pfy46H5z8QIO6Zm z;kX3RuT(5z)j1xs&uwDWiwbY&1Y`Y*(aL+7O%)xs;DQFRpW1gqLG1X1?qApO{xuzL zr;oH6>B&p|05CwqaqA9MkUULH&dZYxi*5ZQr_NC#$YKNBn$Ko?%jzWlG%A0G@*0{a?rdt4?%+RVRfhS?ai^FFnz{cfqPX zm`0*bw3~guMilrPYD@Fu@#v zv|KNYDhW&fZY)h2*3Vr;P9A_WYdgTXvueplUET?Q~?Pr?Yd^I zOfUwGv+$(?p%pBK;B^%+Za~*{jz$w!=PD$S2aLLU1pP@~LIv;UqqFZHrqe}&i&y7W z0%|;}04!+7rt$+MjdY-Nj1h`HHpAhCB=@QTAGC6VQI%Na#xPjbW$uZ%Lz|fY3W%!3VsMjKC*(tNkwB^&KyCX53`BCzEI)9t(^KroKg%X2 z*%_~n0^s}{)Y%qqzb8f)6C&LX31 zoTRyM10o$l+9wt6K{DJbs>433O*uPc1E1zT=Sj{H!2{=?-9n`ip_%{#Yvz_cmY`Q% z?f}0LXwe4zlLr)gY+N2CHPAgp`Q4)bm?}9#ZsH-pT$>GyF3YM>eaVoSOyka$LoYoMMj94dhoV2Wt%783-pDYPydu#L<9E5(}PSI@XDf*Ipg< z76;iNp?i-9__o_vh-7O7LLn^p056L;pJ)Hz3fFBRYBUi@dhI^{8)X+KYpXrRoCO9GUEMHsns(L2aNQ>@h%wsj)>B@QqA=eo_$D4MP6iP!UE;a)9C&~zVO~ZAgq_F7qD-yBz zzylPpMd~(05tTY$IaQ-P+`c6-wLdQK`=0%~d7+K4=Om6V8>6<3ZW}wno@uj$)}*Bt z#du#1QvE4^$=;?Gl4kO3+5UT0-R(2O%6=cr80j>DXIYw9;|V~u{Uf+|KeiM*XfN2% zsP{1-Rl$i>vn-=L`%~5vO=tU`(A2p-Vcx}t(1eS-UNY69c!gg+Im6&822*%&d_D$; zBCa_vmMuVet$JqWy|y#+ zHg+P>pnDn5{KLS07C>Cas_TFskmh;aHT6&c@3dvkn4A4P)$guh9_n;X%|WU>J}}N9 z{Lou8)66jx$od*lN9%}3^J;(jZioO}{s&gQHGkPA?M6ECcM}zK=LVPJb$;m_-2X-% z+GQ6tU=wF9-F-3p*PB^2QOkVzzG{pb$eEWu_ZcdWLt6~%LXj9WfCe`efxaR5peevh zoxs|cx2_iKA-Tx0+s4wWFWjA5x8lq}nQ;o(fhcf46P&~zg(dAOxDt6m29gDn;S>rj z&+__CYA0?egpmVF^deRlb&Agixt>Q{ol|s#<1|Nz5~a4%Qf6*=z(N!UJ2a@N442&toH_S&}0%q7}MI%cBxRGCQ=2>Nuz11_C+~%Al~=w z-<)K$VhgQdv1p?CX!BL-<50KDgsDntX;i&d#hhVx4QRV-V`sakRGDs3W!+pGp4yk* zx<3jv+W*6{Pw}%-*^>f^SZ& z8Zg&I^F$o|CMNo!U5+mdFTTz`;`qGN1-gItRQr>5p7UQ5fjyS~J@!L=IWT$2qKyFC z2~>{tE9(W5#rniG8aN0%KyTc@%y;*$0OgNtbQq886BU+UW4O6?RpU>~H+R5)&Z_6A zu#{e%1+mw982mm617=NArc~9$tQ6?(yvv+Kcr40KNDpW#nPQu@jbFr2w3OspT)|Yx z=DYQ*j=69}>4B-IRb`dq%r;n|A?^S!nY$E>`t8UAmfdy*td4|=mz?C>5&nN`RK`=_>WMy8s z92qX&b<|av%0Eq;r)!?N)a4c0R#BTJB#lCSA?^7`1Yr-A-&BxmZD$Qk-w|%3U66hR zo;_rpBs;{IJ8iJ%6Rf_FXf{jYeH#~Ibz@Kg3Xhl@M){2IzZb5I_d*}|Ae69tQi+6-)4j1M?+*t40MU&nGC) z=Alq-vy(Ev5(y+Y^A9(NF4EB;f#^;@rKR*S%&8L#8*NDbBhtEMrxB|`XN!+c+??U^ zN0*6N&~c2eAUP6G8I!og#OY|<__uK2n$WI9OI29;e-ueP9DnpVNSX+tTryCDgGhnq zW66*9h};br6v9ucwqhh7szFgPnOA!r(Nv7l4Wj{F>;DfA@a|?vHDroQNrfHM0Y^KY z<*CUFf(Evk&eNJ1efWv7#N-s@xZ%9i=XCJbi$8>iSi$pB$~hu7l=b(wpr4Msxb_!p z72|FzovNr)ilXy}RIO)bTrUBbLboJwULJ~)7t+d-($%y)nT1-eVc_8Jls_|1t*3GB zp@v*y&t38*cmnjOaI^Qd5!y#~8@+=%ZQ+q=v#uK-7|v;rs$6GbLquiWZFBzR=wg6~ z+Ii$O`!5}Y9&Lx}R7=c-X>n&tiv1Nb}#+~i_U zYTf65yuZKRnBZgNP$HXFNd9Kt8~xBJO?4gCRB$-1I$8H#BoEwP$btrElE{T zgHp?mtbH8Rr$x6i(C;^}zT54aV8J zgciwe6t#J^Z9uB+!s}@6bzW8NYs*8N6Xh15wUr?f zTbNaDp%j6*baAA_ti*JJTG7b`PYdE0GNDoi#Q(smgWXHtO6Hp)iW;+Sf8gaaT@M3? ze=`y1KoM2%1qJZ6EZi@`bxkwO;W06Mj7nSa{mmS7sxFpDuCg-QU~{7XLdXlhF8HLF z&EpCZFKz;U6v$n0tc%V@*t#g$$?;CbVsz>Zux1?|Bc-8nw|rgDRCOb~Gpn}fVd;4! z*OACi=vK5%OS}8Jg`I_~yky7vJ~>?MIQ!65bkBLNxis&Oar)dski`}xUV2rmnxi_+ z&pe-b)YN|$7qeJQg*0RxC;+uyt0QAUWhU7QylJV@oJX5=)Ni_$)HLMggt8 zHK&uRI_C5W%y0nvj@qC z(Br%__I3t2ZieI>EHNct&WDmPN81L%!@E_-a12zu1h0X9(+Jxxrk@ymRBW4?drw3(-qrrRaV3vsZ{ zYN=|mYMU29s`oZ$?7vghuYM*IBsW*gaYszq`Bf%dK16wt5NDD^Lq#ewnpeoASp>mI zAq}Bd5y_cR?u-n?)#}7$&tF0{l0D3EaZ%0e?ZcZ9#53yrcQ30>G+ffgU1If4^;I{X zkMZ+Ds>H4)Ij$>->Jn%MgZ&7#No-#4!1ityC#$v&F5qUvPDiuqrmE}376G)kRJAg{ zMrBu@*XZnz52x4#zBJn8ciHE52a&VhgH^B3FLQ#B{ja^4*D3hBvYzfrOVrn^uki{$ zT6N}84jxtMFwIr}yf|~FufKJ9_BvVhA}H(h?f)NDbxOeMedrY{0}o{`RSV6Ge+c0RJX z2wI?W)Xj5X0z3uq%;X57gMNDUalx{ud|!S1)i;NQUoYp&W`Ft03xxW7DE^TW96z;oA*~)F6=%W=W;>!=SkF>2ctLN&jA8)Gq*p~x5e@oC?YHw84>tg7}I-erY z8})6NRSygV{4I*?lM-oC@l*~TWsd(oap}95%>po9ok;HbpR;QAG=R@e9Sx8?=6JMm zU%!f)%&?#1h&LVvx-`cF3xL$c*>Wm>zVAA!;66<9e|r6zI13By+d<+&+W35}B+vJ$ z>YJ;YY7TJYPO&d?8w zJh*+h#Nv8eMa5}8d+eK4a9B%QF5{`A3v|ajs&Xi=S+u8KjhbVf1*^`cB;50&byB>! zx3{tC@W6JZ44HZLCFu=XX zAY+j604wjR`t;~`hx`_)s>Ai!T<9MX18Z86Jfy(wljJ2DWe{I)>rPVDd4AQG zmnHIBdmF26Hje#?1G;gOJrj2>ItUzJxZ~G~5AoM&vc=}u4x(G-I+lTE)S^!i%c)(5 zi~nNkz)m+7MOWkQ)3<*!Cr0jio~-(|pK{3*AU(88Rll(yp=o6y!a@^*FssnV zE%)0+Wpx2n^=E)k?)3lUs}4%7ws@7UxbuWE{T@fq@~!)RjfM6C zk|NyY5Z=rfWdaSKL%=gWTFt^VBA8Pmk^CY7_{%#fX)x|iM=e4o2cfmf;Rf71XI6c~ zCJf;5!1)fCCfy(`DHcn+hJ!$h9vpBNlKTq$y)oP_}&1}!k&V1I~Up|`j zTj+;uUp|HkOw&MMaHGcBEaeNYFfe3V@+b`5DUo#5U*?>0jG2r0EMl3)QYI=l>qoi5 z@v5J!%y6DrH3{BfKymU{8|98!YHPct_UNqGiu*!MlMqKYQNW7Em}vA__^;D1c;D%-$PYjyyok!?ELz>hHz7Wj3_C zY%#4?&E?m%ex){Rvnev-Sq+AqyhKsCjK+Y>|8A>@=|Ihf^>~>E3D-Zd%>el9;Rh zKt{TY5Z`g#^H)%%=TA>c--%Ap1AM{qs_I%Npmi)(67+w4!~}OkPLgtsIq8tzSGB4f zG6A^5--1;aDW%a$Ozyez&*x0%u?@fCFGWty>Ci={hbW@om6!fm5N=ij&k1VPo^e<`EwgEa_~O)KK>mTS;pq&yYO#SUHz)zq9Q)DTbF#t zpA;a%VMlwodCA2-_+iPpHKC}8cxX=;zy(g7@Km~sZkg0~T$RRQt?ip02VKwtd+UPE8I-EdWD zH=Dj_eh`*|*5UWo~Y)Ooh zLZ$diYE{DKyrglHaegl}DO+1;KC|kFHF~p&P9Z=Sk@;)s-iBhkd^Jg~kyTrh!oK(v zsc+Z-DQk~Zi+tct6fJFK~vZ}t^$Udd#Vl(xpCH14d zR@L(RfPc$AKUC%{&sC$*htu+$sV}Dzeis~lvLCT+iLu(HZqu2V#KnLIpdw642=iUK z4waUmGf{0nm?fA_?Dg=heI3cFKhVscRduZ;t;N~rK~-0e-4wj^2v)7NDAn-*>e)i? zpz^h4)h0C!F3;pN#Quq>_n;VP2?2D_o6J=Y3vEcOBdAh3LvYlAk(dA(^K-FGfvLLY ztQ#59DkXN#LbDR?5xuVGg>}_X{fC6t!?|Xw=Y|_Wb_89{w#KBqZZ8wzQpwX|ty1vC zeg&&;DEY(YHyA5Qrz`dfAluOPp+dapCkgQ^f3{sh^VjRqtQ@@Ujgh1-O#Ka}6jsI! zCnenIq+Np^b~?iMRkhix zVxOFl`}gvy2AT$8U0?}IT}oqY@s7K$rvY&97~*J8y9IT)T`$&pe~4AzcNDVI_8F>L zn)oK#8>%|&Yc-Zy>b;C1a&2`&4o8rhrfxDKX{>`g~{8<>#o17QmK8@`A0jS{iQa4MLz88guxYz)W)G6u2{u01r*do}=7c zf6X;DL8ts1d2b-)3D0dH=L2(3xk0Ij6W=y#kRk8famv9)18jgjwY-E^6NK}aMzrEL zFS7lh8Ji-j?m9{os9G$3XbhTFca_}|uw*Vc)S560B@l}dyp12|7AjD=&^4CquLx6QRXLRe`vT9eMTrW`0VAUrYvE7KJKJ@U5 z;qw+X>0=(1&sSmSO4gV6XEXq;5L}MnI{$y$^DW{uE=e2iNdIxQd{|)Yy3yX=r`Ot? z7;;iLxp>|Oj2s!AlP}wptbkV0%a*GG2tc0D-)5xJ5PL_gWEeBjkCsbH-~n^=x@>^- z44wp;mJEFO^sQC^KCgfA%-|ott-cqlUgj3nMOLjY_9u58QFaw~@Bl;V0T5rNACJ)6 zoA>tJajNQfZNFp%ZPq+-E4SMfdGvhSr#oMzs^OQcxYXs-ygsXD09q!&vb=PmT-cvt z$XB&VWQf#ZJ_*bTD43Z<7_Y+BW6;Srxs(z4?=yi)(BQ{?KCb5Q%bo zQJW0lhK#Mm+i>CjJU!uLl}tG< z`kOIWXwnYf&Y6VMy*IWbQe}h7u_RLO>07}qQ%QOtpi=t61{P*rRmnpiYll)&CMfM* z#k_FZiLBj-;`-rjd9~d?TPK3?&K2)2{rPib7j%{`1|j|CyhyW(%~#J6G|U?*P;d+@4{eseoGK=!*fk3u$w9~SX4}!C)OkrK4XRt!eF*d8tVZEkvOzXFKz%E z?wc`*Q8Wb)2sd(S3o=20=+Z!pW;2LB3$X6lg*x}C@sRzj9R7xx_5`V}kLQ=La%G1I zlt8HpRRx{wB9-ZDlAhh`} zgO;;Zyn6ETymN>nZMDd(oUVKowbB&Aqz73?zfv^lTOI5#J#02)MH(yoq?yA^b<)E? zFyEK&(*8j+$u)M_-1wRk!Nv~3l$kwtS&;BU*0FUl({-o~bn{L3b~YkG=K@56O0X3q zWVw;xSyS~-!^%AuU33&?Y;=S{13%=h#5z?N6KQ$RQ zMU$AEfPmO%T@IO+pacE_PXX4P4i0l<3KYNUm(>GHHWxrf;g~RS;$3*L3F3SZ4i&0> zv@%Emkptn?OU_)xQ>N}+iZFdnp(2)`S}}wac*aqZX^Ec_NLt5Ybel@Al$zT27w{4> zl-!orRn^_%G|YswNr}g!B8-dwflK?tfPG5CFc#92jVgs{;!S8>cer&D^jlNY%TqYK zKfX3V2KcbB^nnY5l$V*1yAHi~wUPMTaE5p@FL@yZz|UaL89% zWM(o!{g{+F+xNfTAR5g*!m%)ciAuxIQVvxDs*hJj;1^6j|=}&Lz0`1v(n*n3!R_VlC*_DSV$H zXo^fviX2`*v{zDFP&*N~8I4U%0(25{00qZ!lqoI;;bqL^L=g`zU!o;Th#x6dCZ%vu zJkG_AWE6yoAs@vy9>tW6!2TPt>QvIOW`^8@2+*@aJ(^k`P}wCZ@rn8Pjn4z8EX|5U z^V8og!!plP;$)J0v55f|5Qe)Ltp+9-x}18C@pp9q2Y(celH3#nKsO#Iq`s#qdY1V^ zEZ4l9=#khE_bEbzamoT$78Y=$fNyeMFKG^==**NCPi6Y>;BwLPq(8x+k8x<1I%5wy zzfy9lv)R#U>B(0XWQanh?D?07O!oS+zxy;<-77hKe zW7oVz20dmk3&TmAAog;YKv9}Q)MU+=>Q=cqZ-P#ampQ#W^?>**ce-4(5BCzJ|yk2dBsua69FeQ*fCmJh&*_5<(k?=}d3!lM7^~%#q(K@2E)CAmny zP=m@QX~#}p}HwgV6wn-{;&j?bJf!$NSxw`auBH7>P zqrhBkIx!~b0-Kq!Z5XL1&!w>~l{ejHNY*I;Q9-Wn=STCkLt)PDMbnVnotjG`XF(T_ z3vJG%z4$VOIz_Q}ayEb9O@IjuRm9PV3=#L#RBUI zxxfjpG%qhQR%bB90$$UG8N_J@KbSvp3=rf}>M^wWCj-GD?VHz1c|X4QNf0A^#rW($ zt)F(z|LaG=ql}G~y=FA}Ja+@M*^P6{V)<7 zD#IZnNZzy*#jK)Y72xRg?&seeUF`l=s=ApL{p&kkL7!~N@s`k5)#oc(aTPftg~`@; z-qK|v1~rcIz@oOsW&&$AFN1a@6tEH_z@Zn2r9F=)&t(x>l3xZL-8ro^pVL{E=UjRR z7*NEz2ZZ`^JRPkreRrzzQ&nGqC)OEGRjs(mYS6u_sGx_T05=QIJyLNkINtSv%AxMz zG$ZJuNmEd~lv-J4e`0;KP3IPA{e#1W8wq(TWE;>GNROxzqnth1B{SyAXD0t4k4nR^ zJ|IO3f$t2`tWg!d;t+qd+^a;+NTffw;9IZGstLuJXcYR?Me$jZBm9QF z&wKm1j+w956n)_3c|tL*;6G@19{@DAQD~kvEcW32EfWL3I~19=i3#8LTuB+RwbE?- z&E6T~IuXQR7^HQ{c{mDp;1HBlsZxQ05Y0P64nWTZprnKrQ6WUugZ1<2w*yV6GVeX* zZ89^vnf3ag-{Y~r3(U!?Jr{6>2zyik&H~A%m9S7zq*C4Hf7xaMub`S+B33FRLG>B| zL3Ko4&pFewXO*mhTl{1%{aW?3PH3w^^QJzhw6MsTIx+z8Xm+7?>K4E1k?_Ng#N$2N zI@Pg-=J}h@@k_;9lL_3!yjKb|s|@`a<2V#2egXKqZGkXkP^|iQ{mi(wgo-Y;%oOhP z^UleINM(jpz0%2ZPP#D(9j?SA$CWX$6R-j`uFe0(-^Q(AMk!r+bvUouKoepRZJ_RJ z;X6OL%oj78^JRfN-{?C;2=&1+NEna9yLH31-~nA*%jkIKlp7qXiJCxdBy+cfYPynA zy!cK1hOoLDyc9=!j7!0ne*CtUof}ue7qH9qkP}V?7+6iqH~Hr!Xc!5D>H^n_kBH;q z(lS*h@D{7Cqy*?R->Q=7kdBA!b*br%me?RvM?v-8djr))$mCYMGR_nwyPP{)WE1uK zHs9S(Rjq3TV-!^wAzNl~)t69BF{uY}q2^$JSBanr(8hDRVcV}YET5N8ar>}pCUjP~ z&Vv8V+dp)u0T9nzLdgTn%mluwaFV*K5S=8&i5Xg5X zuV|ly#Ww0kt}i0g*Bnij!eon9>(hd(DSN5|hFbxta@;J0!KJCeHVXRV)2maC^ftDvQyMq#0?x(q+mUG#M57R$PZ_hS8|jFFvLo&o<}Rfa=r! z$zwsag~^^oH8{pTb90H@IJ*T7&_pHaXtGuFVY6wbYc}_<3_Z%6!VamC+#5q2r`@)G zRp?>^TgZ6J3Dt?8{Jtp!WYtXHu{SWNexr|%d-k_IpR{uP9#gCZ)sKS1=I*)}efTi8 z?kDbsOC5k+x^~8^^Fwl9yG6Y7L1smThz32`Km*7)AzQ=|;5H;zck~uZhw2-RwhTa| z7T08M&e6_m)X6<`Ym@nXww8AmfJRHuncwdu*TCt&;!ZHWl3<9#ud6}4IaGTzYpw|S zdVaG zbU5k?E?pfDA*c>IiAGA>*M8)%2f(v*kW*~a4jxLIKh3@>MG~SZVOadLaMIwhCjc7s z9v=3%t6F#{md%mci-bFKpuhXFpgMC=)@UkTB3N~qvr`=Mo|9E;wWB_cw}(qwOZBj_ z41raf(P0~OEgxiZV@}gqcXlb3xQWxxLg$-7HSW_61795vGlj4fhX8%5YM5`213PIf zuEi*aQpQOqbCe{%?7=CCmm%PaPBsNg>({N|N6yN$G=T3>3QR{}^&*)`7z!q~~mDS#a#kb~= zkQ7qKD8OJ6WdK(>?k2+@Pv2x>w+BBCI>M#{4-y9@qF(T_a?51O7bTQAomal#<4TTB zJ>iKJl2M(X{|VJ#SX!r2ikbIM|A6X8-=5L{etP-#A))$VucEC+r3s&mN|Oq=4_G%k z0JE7uxLPz2&^mwOpK-fE>k0{Z8uK0z!|hZgiLHrk+qQRXO)#;&W7{@Q{{Q-%Q}tbSbyt5~t8uZ``##i4qw1k2 zXbV81@1S&q<6DKg6ZQywcz&-mcv@PG+5k=K}Z9IEn3A?mT&s2GNehCWyP%i<$L{GXJ~E^CwwC8gMMk37sz z_<^sly?8D&ldj!1_e-$vGK@^Pt31U+~vUvB@|vq7NKcr-u5P73XF zxxwAGDaq6^#=e!%at0rWk@#Tmr+#zgwTb`c4I3PZPZYXqO&fR;aKfr|(2dkh@=(jq zPesC{#-NZdVtGQWLKo`DL9OOpo>e+pL!s8GE)n>2ef<6$na8uG_V6paA}<4_?{V?( zxk|d@qeCjKD@rdhCcz!t7uNUBUEW&XFq@ysK^hGaBJW0T2+yc-k`?@3{v*WkicW&sCKjQa@+1h=xAILwOK{W zER$54n?0Q-G-5q4eB!p73eT!3BFvg znP{~1n=#Xt;TmrSMq-Pvh$EKDKbe>ClMAx-;D@dB7GfR|NvIl}s?;twZ&uKQd*yH0 zp#*dn8&Iafpp;wKOk)tDa#{Vg=v_>@3|hT5#g!HU%uqg^9IqhEzaWPr?exlcltj!O zN`*Sw8pi9u0C=@O@+CtfNOv-P&fZ5)^YtivNxb98iIy^k_{e;DKSco2WqqkbflIM+ zS~tPO;YifXa5xwdKa-k#juFVm8{YV&UvKyYZ}_U;X^eO$fFXXyOznK zMoyx7CZ5j2jE3t7O!AfG4z)##?cBhSeT0_QN5Wp%$aND#(XkkzPZD=BV+Z4GczRA9^Nn#G|6>{O>fdC{{g5RE#~|IY!0y{tWsQ)=uWM z?|Dkyu&SG5oooO7-VAGEEWp5i6Muhp)kPz?Kw}2i|H51b{-2;s{9mrIbQ}oc21{aB zF4UdqDZQxXI&CAO%?0dw!aU?2mOZM zgN29#Ai z+)VJV`^ZifPwO$vyt{O$yAIEQ$I@!QHhG}w{9y3IWGz;>Irw3ci+@$tv|s7g(DtnD zxqUe6Q{44;Lg635!iir#u-&}P>F1Jkxyki|L!FEr0sW8%j@$J4h4=iB(Ef$(bA`)s zm538%gXNCH$g8)*#cM&1e5T`V<_Kda=-BRzfuGQ@5@?&=h#~>2W?50qaTouZR@}hV zyAuvmneTm|GKt>!oLPF8~3O>hM;I}``IA##L$0Ad62>uPb5ZJ&) zGB69@nk9}a$E(HRX(Lkrysq)+-FZ70)BUnwp7jmD#Q3YXDz5wEtpV_?^+&GLZ_fQ9 zZIhnUlBkIx9XLo0SpSnQazZv{;VgSygJ=)L#geM)f40!qaeZBCAporC76Bb##m-(6 zY`~6{1@xb-AhUpjX@Dw1M(tIcda6|=kjMN`W-@RPkl@kEkn?jX(fcQ$iEzJ6pb+Sg zysFEWweu#Yu+s)C>}@HVDYrz>0&xOD&*Yp-1o+aMau~Yof=U^=4%Txhe%3K4K z#z7MbDdGT*M}W~d(003N)zkw}s)asf%rfzy_)7xsYx%O}&G-*MTdUIK`%Al)=z+(Y z)n%*_OPzz)y@<_H!XkVv&BwedkFqxhwP>M=FI=MH*Wr0n_+QS6Pn|jp7g#Sd0+>qp zMK>!li*VUn>n#~U576Jd1Q)Cz-4ZO!^b3xgQ4a0*--dS<&?_pA0$}dv&y*EuDjcHq zH`N-drq}Iu$49!l$u^jp*|x97C)LY#OJ~b)*?k*8s^+2X!?@sp0rK|(!n2Q0rcGyu zVd6h)7~vsZOQN}%3y883QAv0lsSL;j`(TCId;ke7J3G-(9)l;{3(L`Tvz3;ZVGJL} zP+ZK31!f+%+?lFe;C^OK0B|E@+qG@a03&6PudLa(Txb69^k1b~LXYzx2X5pTZ z=fzcnhE_%7b2&U*VIbF6$8wLg_UrhQHYohLOy{R`OW6P{$PKP#v_S1)gh$J~y5HjVazx!;JYETZwVi@EO& zoUYUgwY$}IEvr;^F<~o#v5#&g_aglQw0hDg8F?7Vr9VQ~?IHx;G{bXCIF4m0;O7^a zd3HLYZQp@BdQwq85nceUvj+l> zaP+_g8hlw33fqKV7_?!3{qhq4e9SaiY9T)tZsRc9xq)SXf9&nR^6S zpbxLRYX-OeQOv_rV*DWMeZL79+;!e)`wT;r-pvid(li$V2vW>V?F0+3vf46wv)LLe zmlHVse1Joe=;G}dQ25Vy`1KDnkPqT%g&97&V7?LhcQu4&MB6u!Dole>N61sR^Zc*%&F_YJwKpbvep zE8$xAQU5qfp{H>$0SE389>U62uE0PC6^yI4>L_|TY@iL*5k&{83D4%o_HbLs!2wb% zd%*Ku&D#3Iu3otidT*@5F$>n^9|i|u`PV(^jS3%R#A?{+YZ@#$Tog4pHG}e*x5&kE z_%~6}o9m$I?X&#pHXouK9WwRxoVERE#;GMwhai-_*7fc?qVv;&k*vR~d+lVZ_x(@Q zKPihi-d9O8xa?l^;ccQmm5)^2bdDYbDjwd+zzej;ztu9{R~)dGFXt7oz96h9FcFrl z;M~WyG^lstelK{!sBgJ-UX!?{p!b51sZh00MeU~yM*2RC-OdCo+0cW zT!)V()Jt*4;csPI*&KRLJ6W^+88!Np4yc7^e+A4eP-}X3J4X@iC3&9F z?{szyr>_nek5io$|H-RnFcYoblM2(62CRC3jy+F)i5eX!AW-n`jQ!E6cJ`Aiw% zWe{1TkJ9UM{Ohs+n<8q&$Oz%^tpPEa6tfIu6kwzek4I_z7jY*{fTcqr{13@V5Ojzf z#_h1l!TSai7MDIKaGC$HeV&VOgQrY-T2x$A%g9sN=rlNq-KE7PggyJqyUg!96L4Q4 zqac!)PV8vgemC-`(_+VMctU_*6xoBN6 z5D&KPx-`74h@;I1v!K@~+CQ%=wUja*a*Zv}M?;FMZ6)?yK&Y$nazV5+aB|ndo-=NG zxiJVfyDH{3CI5bC%dARZw&h^gzfrVIEUKcNXM&Euo?E6r*o?umForc+pe%Hm)rsEGppy#M5rtTR?vqEbIG6h{ilj#}xQ~52N zH)@8F_qY{Fw;+=z8r&r+BgDnW?57e;qGekG6Y(xNx6~*m{4cu1wF&}CJOycD!ARNZ zJY)|VLQyBJhAGwenfG*py~24&n82|^ zAbFF>m{jE!H*L#3e)VY81mi!CWPn^Hh`ogx(I@Ek!2)Qoz{p9XzB{2v?#w$zFMv9= zTlL|fe)%Y6CDd}F!j^Vy*|Pqi1nZNfyRkfzb^4qK9AYtRp6#MMYX(pn-NMgi*3Glt zaD3@z7rde&m^TG+^E2fwkU`)GL!8s6Od@PW+(pH0`myVF!H#s4xr?fSRm9a`#US&g zte8_nQ0Y9O{a~X2%8C;1hq)&oxJqRm*6hLsj2q`=vBt&KQO!U zH*f4<)xUXSzG*N>)P_dqT?CekkdDFY`)qm&Zc5`-b_rf~%uI$Yt6*iCe~BG3HD~T! z-4QS~3!(01T;K@E&B=fCGUlT4I3jzwIfUW@FH`C<{&!UP6&Cb>(iG6uj7L66WwcvH21V51-IK5fcSt^a*wesD zo^%Zs=TmQ+!)Er2dpp}lz%Njq?mM7=DrRhm7(uu32Rli3F8JIB|9$p3+Z*m_hNbu$=qQ?d z8b_~+l@&j2g&xxIUY9)3fS2ZdBhaqJw3=!=e+fRxbZU)jbUBvuJlx<+mREApN%6^- zWQXM2cqJ1rrp}nxO@8>07Htz6Avaufa*i~?W01()<@nQ}zU9>7qP@d&mFX{rsKq$6 z8?u9)+jP2C#_9fr+X<%cuT+LqG{sh|uwF%x3|Iou>@aX+i7%bo+60vgXS)1@^S<{DT9NOxYfnxx8lSu~r z?4ss7*J>@@0Q^Ro!rJEkw{JCH#+h8ve9$6JHu4Zp*tg^o1sOYughofF{Y~N9_79at zDXI5;_g%o=RUU2W5D%LU?nNdqZX*e>b(z4eD@S#X2%3~%AAbdY3296;_Ii15(Ig{mGWmA%#VGcexnCS?K4a$T>ojd8&n zZJ-{TrJlp;7VFk?Xqm z^Qxk;TmscxMC#hgT6J4fYk-czGV2)QUTZaed9ukTCWazo_#eG@sk3t^H@CVs4@%$2 zt*(ftTh6ln1bb)vN$7J|2YT-U-QbUu@}o!o`BgGr~yXh1+> z-7&zIIwlHuHc8dJ7uU43Q)CZU;0W~I4@!@$LnL4`EH0|1KeH%9jiK0oNcS;t29Xgr zSoB|qR^$kO#vDuso*TAS3^H98SHEkPm!iDYZhpQjK%bS@{lk7Snf;`zcvwVM&}kYc zC$=8qt(T_8e{WpQwa&Ao`tAhPGtt!3CXAwapXrKcX}dT`yHav`5U11Bk35*@b+;UB z^ps$DlX%V{?8_z;sFJ-xz5@LmHY`WnX6d({!aEU*Pw}I`n2NM=a@ckFGSJkULVbPO z`}*O26@zRkp327W*GSqX{MTmj!ihsvf8XA&a6P4L z-ld@eYv`~fXDm}ucO1%ck>{=8UuWJlJ!~1gxFyUxmiq_q%9YGXue*Fvu=I29me{!i z4p9U9%vaw}ucN|N)k{@?EnG68#x~im%j3?>&`h1-zzTK2C%IpoOM6<~ZZU`0w}z`b z;5%7ZBY1W2cSSRJ`cYtMv(wy@D<QUCDuTF%)h@Q=dOeSjrK5rn&tl}Sw|u+6@`I%dD0_F( z3^bZftxLEtfRBfIgJS&g-eAdIfbc{8eN6}Blq3i_vR9aI>Qio}w@KTouu!I%fKUhuP zJ|-C6#Q;{5T@a}!nMb@um-9bgj~A@KxHh1N)l-P8_o@=9!A}qAU#PKi{E-C2P^-Ro zip=-Oddnwl6i&TXYFxBsA9?MS@QiL~=`cC8dA+`%8Sj}K{v`6hFq4IO_2vRqBoETW zy1fq=F=}*K03G=c4mqh3C}o0ifH8$jdQg5Pd`8=+s2@tzE9&3j0gl+f5Lysy05xpO z+q|l0wHB;SE8JpEF5(m~xBLF__q2P>WSN@r1tcYo&%~}~7SKha0;R42>6O+$l(>QB zN?EVYmKPDQ#R6ncauyL3g0%%lOi(e7PZ3pJyWbo3W2ha{kB-|bK&VhFUSMm{&(jh)NU62nO?-Borp3qnF(rfcns_5MP zvs0$}lM^^dt4s7?G(n!%VxrlKrwfbyc16EJpO4~+^s-T?LOOxSzfhoXePesU}pTs z)_Eu9?Je15JoCNip$${E{CcIo+G`$;;t<)nxZf>SoTN*5jtQ8mqpIb87`aTSvf0PH z?0EeAb672lGqRJAoi)?Z!uYQ`G!^?|aBX+T$E`(O6Q|?_a#Y?6rOboc#d;|D$nF5x z64BLO7{E>9q?#wMTDF^;ccKO7$_=(rSrk5JkFDr76;b@%Z%nl>+X9##b=}uX3S=l0 z#*uh%o07))|@r*Z)ND^K9K|Vg$=NuRh(G^Bv(8RbCiu9m0GaN3mz}5ovz5aIVJzXucBSk2W16bXYi&7y#b|S7B?8u+bu8*75_F%D)U$=XRLP}9nI$WQ@lfuD zhvzBuihVHrB`;zARSdJ$zXecBrTz@0PwE*vXb9c@h-eWGGX6YyWk_9EGKb+VcpcJe zz4lmAB^xzNIhdpEO@U%>^>$-|V)nVrQ+XGeUNI*i#p7WH+I4-iE3QtU|D& z@Z^~|2(|HIkOFuQqj=0qSkkWM$T95CGLoMM_OOs^<4G7B_$CQ%FOqy)wV8({Yg)1> zZeJ5mr%zgA*XV>(z2&vWgqpMQx>P4&;e>Jac%8OKC=BYQxJv!9#RW-5;8Zr>WStMX=$_0s zHvYNaT~wR-Vf|AP{4h{ikEDj4b`zTOJSlF%^g_=vxmZ{25D7xzI6=L_e2u8&)nwGc z^NQ}~n0U^yT_Qc+B=?L2;;08T1sKOow0*b}mCqSR7*MY|))I@_>0-|)HH9lm5vKH+mTDOoTO@zHO@d+b3&D0t7taA8~aF;S0klR;<#%sC)62(Wb|4pu&l8NJH^q* zl^7NR6|^n{J4`JrG<1XjiAZk^fKzTguYmDVBDrrz#-VNmWf^!p7G2NrW(9q!L#7hG z1b{==PB=ifn~qj=wpCSGavZ5VspVa&+jDYomIHZi+4Si3xm%%K1oWGdKdMQhrMtVu+98->u-#bGoxdyV0y@*o0b-#d)Ws&REWAQ^8Nj73r)w*FYFX?u8^-?FX^Mwb(^I@;eK5tC3bJ0B29OG?_q zrzBoP1u7hR$%>hMv*pgsm;6n{>qt$fSeF?Qdy!7+XKUM}+Bl0}As$tMG}>K8-AYnL-}fmpe#EKvh|Ji_lSn!Y#6I#0_WL(N6DDh%kAtQa;V_MG4E zwxz)gL)yGrK2MIZwpWyZ1bIwQ(ks*i5e2PpVP9Ka<-x%cg9?V>>}_gWw)|Vo7-q)6 zo{FY+B0mpafmWi;Wh)Pd$?ZLcEaKg0V5y4%MXV}@!~)E3eA-p%TXlOtcN*0RMT=Cj z&3w)yD?M<%W>0l^s~?$`Yu~fiXWoRKx;9xrHzmm{8Gyzpd5)_%A?0!eguISSDAsPZ z5X|Ck2*4w~{~*Q~=G_&R#bs;Sg=G)O26y8C2skQm1`z<%G1Mu{GlJR`?;q%PcH%m4 z+bpGFkkCawq+u&jU-z77g2kNm$)GUHR_J;Fc1l@soHb{-6b7jflzY*FehP zw9W{oBJpob){bWp`kc_8yNKg-&Z-)kz|mzt(MT_)So@jz&2A}|0?PuG(Z^dg4l-rE zxr1>$>s_yk;C-D#DhJu0eJZ#r5PUsyE2mTBdtVV`n`+LA;KeVn`#)X^a;g>IDrU$DvrS9 z2>x8Jf~{7bWvb}LNJZzq04q-cQFm*74iV3~*cnbR+iySrevFl9Sy!WkuaEZ7Xt7c( zu>!Rz@r-~514M-IL$Lg*$`x z6D78bz|xskqfNe@dzRqFgmlhS2{R*Gr{!BSE*as+;B1A1T&+s7-ETS7Ck_iE-vvIl zLI|%QPgh=BvkcmzbjVv%A2Gqqs38FYArzuKyEYgnF~BO>``0q9I=f{Sb7DQ|f~242 z_7PBj74Og5U~td?+E)(Z?udYvFmfxL&hqtTLk2hPVBoiDlC$5z#28E(_h~gV2^AyL z=2!VBva3q%^Ms!@(npp*EcRMPzGRDi*TVLcOmg)UMixK-A=QwaUu^AX4h;(IFTW-5 zH4N0&Xwi@KpjN2Gw8Q2V_oPh&YaHszvGBk2&;7(^hH7e-BRcI373!gi&Qlz|o2q@e zY0&UJTIPbpIXD@&y_FUf>NF7V+jaiHikk77xtd?rHSMAxDW--Peq9-R*<#H6!Aa+6w>;Bx-rQ%QT(LUq2?wzMEOJ=_&!!j zdV@_La9*OG>12^fc#kBP5ZOe|k`al>mjGXt((@pNb_FHx-jROZivl{YCpD>p1U$yl zS`SoQRt1*bhw;5W8`_J~_?oC3^EC#SbLx+l*YL11h-3&aZMRpCNY-Qei3#!YL+Fgg zC4WK-MJ^;O<8-J$+axMg%Hj!N{~Ey#6dzQj)D%1VdG}Ob7FtFViYt+1zMy*?ab54 z>%Urgo}_hAhk2&?XsT9XacNg)m?r2Ag4w`l2)4DB2X}c`>)DBIG4JHu1_NOLb9Z`_ z{A{ae;w{RB1Du$_a5mZ>XsU=bHy>>340we*_0S8=Cw^Z%Ca%(tz?xHgu>MTD^K;{N z!%DrpA)Y^DiC(#$>&hkp|B9+{-{vEot4S}})n$0G0BSc{9+UC4=qodMQ;`}^_@oaB z3E3#D_OQ`M7h$}UAdD~*`8^ArY< zsgF{~pm@q_#Y;8MAw^0qVOpX~+oeZkFS~-ya&j&Ue%qRHi@dUT01|_2bHT@-j44l% zgCkJDA9}9O{aB;Q(Uvy78f>5@F*{IL*+H~(N90cTpTR9`Bgv%D0cCNcW;;378a*lBV79)m`LorU zh9l?tDe@8ykcZfoT`pUg8J9GiRgdEI@-wvIWeRO~d|&%}Vjhu`oTRR+q&b>MJL|Ve z)e}5tUwJE6)4sdTgkAIb&|&#L%JCQEE=Nx|naDR|TEXZJih3=bbB^tB%$uO^Bw!7=G#AIG8^Q~vVspN5J`L@e>g%gaBiWq`r81xj zpOv}e4dmzM)6YGA_d0FwDKfGBW!xfl#6?In*%GU{mQs&}47Z5E48^#GJ1O&845Fvt z4b6+tr`6E+PkS`D_kAli zdiPk-%j)l5>LPCxu+M4%X8X``zV@;Wkoj26x(iyTT$ zU(x!JFZ+49ldC>1w}ksF$|x5$yxEThOjTIy+~XQ+;U9ZwdhXJP6`{eZNUfVR&HV|p zV5S9k_m8c#zLHv)2%U5*+Cl+0D>A_dc{zKLPz@UA9(t})cd#437P!M7fUyXguV0Q< zPviQ(PpB@*Z|piPvxbTr=I1K@g3^cUvaU|uRxBgc6KOGFyet~L+6OH*6VEA&J5vxb z^MmR0$$mqgJ{I&4NFqxYJQb?`7XP9shC0n;7YI_;fE>Wr!}VYyazvJ_g%GfhqVAAy z!h$ijD^qfYZRUpFI8z0xDkMz*KsY;cZ-~P;XW}+w2eJq8C z*q>D!r*$!<$*%JKpcqg8=<7nNWFpD+J@QWUML8><_DNiJ0h>$|mlT919n7d6!=EOq}r3@VsAL>Mybkbl8K-*rQQwX>`wFNVea(xK-+u z6ENZ)Ch0En<|on3ewRE@9LJXJ-9|_eWJob4|o!`um$4^j}OAto%Se_Bu zqNLHfBGj&E^0owzGAJx`vr&C`&zl%U+eRS}srv0xtt_9iRxxq#1M5qoz?}(-`4v}u zrrZ?+9;D@-@kW_)G`r#@sn6=SA^-c=J}45sHXnp7kj9D3UlJ=_0IT@+bGcmLMuI#) z92STOj@e1J$cpi0<{37f4iz)0bOVDr`y0sDyTuFIaU$jN$+uBSE8` zfCOGE+Yb!fikl5`M$$_*z4$EHuwygFpMTblCiF!dVjz7-tFhiILxxNQ1FlqN)HvTT z$%*r+g^aRlzEgJ6*$Y>3>DrGAQ!_jYLl5#0fCxYv~lZxFaNY<|L*a-p_$-tzXZ zxjRBPXkoH`zfGBX%PBV}DRFz-#>_QRtL$I7O~<~6=$F9zG{m`FF|mZ5-RdMri=+Kk zFiM;8OlOc4gWF9*1&T57mpb(SZE)|2mGlvRpp|coy8M%JV{AJ~63<&=NsXY8IH z^*9JJK9ZtD2%!_x;_MRV ztH{byOTzF?vGmWfb(+?#S45~~QQz=JXPcmAMVe$Ru6a}B?3+`Ns-%J=Nsymd!A~Pq zmLJ**jq{u5EUtbS-$gIO!4uTI$_raB-lb+Gih4!XHfOmo9ZCiMegBFzy#nn z{?looc;*zRX(QFEM2(VCmP+h`O#vnJTQE187X?t$*FlY`U)f0nt@dw3mMVo-ILJB+ zp8b%elb+W!1G^0BY;#MypLzsJ1b&PoKRm|V}GjT&#IA8!8div!cd!?nX9!-szoUl zo?m^ih0;^Go7>iFfkL*b)T7Tl7u92SgQA6O%jhFFh_J^t(xj0p--y)>uWGJzK;lGfwrBE*(*2c&>mVrzg2ri*M5&T zAmCR-NXlz$5V_NlC@9+R;(Tb6ni9brgNYMlSilSyCvUz=fsrbjt7e{%r)0k16YjVX zWHGjj9&v2FwMTGdx@x*e!4qRg(bdlvlkmJX>Jyhs;V?M*)l3oISHk6rg?TsO zO1ty}UJc@HhdzpFMRNO`h1$Um4LO*ADn-*w)M8Rb5|)ugEAL2A{(ItItldyVzlw*E z%CxyC(dQqIoN8zj@P)|br7l@HK?KhvT%N7^pV0(7sIoa*0 zr6~~F7mMxfhA((8R0lz9q-t!SM9K>ej9` zo5505%Nr1dq?>YX6J$Bj=}28vip27Cg^es-a+nDdKb7Jv%3^}y&N(H!<#svoxG$wO z13BNz+YlvyfvoKIbw!)i9FD|O4IoFqTnO2@lnu<7R8_1ui_cljRPWE}eeBv{wa?0g z9!VCF-9DRoHaee%Q5B48=hwEo)VjB3CJG&1lIz?r&kdju^x#e?0jC8K>Pdopmdnz;mH)%;0uRJ9`2*6Omdf?7+KAk{kl(1 zpZ;E@tJs%;xJqTuBG48)G^Qab<7D?L>-H>Ts^rzNwCu**2m6$KlZub`N)dtw`>rqr z_Bb=d2dZI8Bw(C6Ohx1OevbdD9!oCy%BK*?=8msAFb#MjL)P?6n->fSri;l^UO}M$ zC#53B%#4AcitNh|rPO~sWW`yDsxC&rO4~NI4Jw;G2Un0&3WoXq z42$k+x_z$yC}H~yfT5#!2aO4Q??YS!1WanT#HTG_s^xGCRW<}E7KD;|%Ig!r@B(Tt z*RT&8WcVic@shs^uH_9^##2I=&aL}Kgun*tdt_#=TWS5B8H_?Z-xp7OA!%R|vn2uaFA0bQ(P*kt0{| z_f%hN;BYgjtJQ0HwD3>VDa`*{WBvg;gKP7>~@F=I4>WdAR@Miob&6fwv8 zGdJm(ass5%Ybn}4WL1qsH1p_5lMd%{mMitPgi$n7@Bk_YmEzxfbmbUV(8wvNzJ~VH zWOkyS$n+C_o)A_h6lenQzQZla+MXzx+$NX1nMAJR9Upx*ML2Mn|5R{WGc;k(N~i2N z3g&p!?p?ZF#j&b=TQa`ci*au$AS9qz-QK{65u8ud7&H!UWA)zDkHnSs5f$pH)nDNT z24+{T)+|tIv$jSP)uN$DXjI6C}N@!Oi)J)@UKK4>-g8f zbL<(pu^bRdf^_UhKtWHG{I6EB)3~bE4lX5i92u`4q^&W>N{mJz)w9HrYF ztT`MhAQlj8#%+cWBC(@F&8B?UBo;WF5@ZxPk{7^D!A32FV?W1UO`>gxTn?q+EMnj4 z#D3{TNMsy_Bq5Ezq(_mNc|$V;V||dUY$h}-G@3N*>MR{-xWJFDZnu^bg_`8eU5uux zk<|4SvMP{dHj~3BMeM{VdSC?P+#Cx*^&ebKEhsqz(a6CDqCNy6yvTq0HI75oQWCRPpv=SHwJDHxnwEBxd|F_vv%U)xR+0i;Z2X zJ(NzII<)Wc?W*SXWMTT4^3Z4)4$Hd2s$eW5Zu-{!YdBtgVb>J1*<(5x9Gs~J1DtZb zA+Au8o(1?1mlm$CGs|d7-I9JM$z;(n>X|b!%xKqE`o=xGc_%{!T77sl1Q~q682w^W zXK;A#3P%p^c4T|@&vVK=!k*HJ4WHiqwco?;GE-pS`5#POOeQIKbBW#`{@TKUu|CeC zm@-(COa6|q$z8Tl;wt4l zCSgkDEdytE?U}^!s&>WnaLH^kh@v)iJ|@r#GzB?bdg;thQ&wqnd-a>XZXic!k%K=5;QRsq zcz1NKYwJHuNT_NyygBW!CCN^kR>kNi<~Pxgvglm!9|Y;t2+-_ndHa6&vWkSk&EB2w zUmROI=Ehpu-syeYg#FM?8+PFn4$ptNyiJyA$!XpB&Os|!93iKfsE8k1d$Q3#{sX!q zgfR|sBE3TAkWVXdBITKN&|oVaNg8o?jUwCpOWT}e1KZ{lPsfjJWiWv#95NrK8cqDY zqD08NHA!PnM?oEuJ2h4{r-)ah-)cRc+-Qedp^F>)WArnj5?7|?co3yT^zV;$r|sqg z=oz!5Syz!XA1W}`^7fLDz8SGSqI0aul@U67YL9=OHTv4ND07h17i&v#-bN^(3DFWU`Ukao*r4yl`$C+CtP)tO>DrF`!$#4Ua-fpSG;&xR()fye&Cu-o!{*lcP+6Uxf zX|`RZA;^#-O1S{5;-W_Ibah1}m~?xiFs(_kpRAH5D7O!`Ta>ztWuS_paWvGu5N^6o zhfC&Z3YF9ukT>9ew4i-;!*$FO`Zhg>Ug5f2R!rd*1ep6R>Ib;wdfuYe-E}X?IOUqC z)Vx9t#Pk-#Z;4L#UTMjQL;v;;(g9W{9O2BV6EE~;%%HNCHL5YFz2~F2Vj)khhzF6Y z3n+lK-|OV8i|_q&{LrAd=O+a~E;=7B8patG6DiT9m{?KO&Tsx6n{d%y!rrGVw*0$l zUd(kQE<|u)q2S*NW$m1?Y3{`gmG}teciaueg};yqHP=z<(qG zUq#z3#eelzhoK@+z2+Yp&p8*6(tA2+{(e7d(SHaqI~sa28g=u0e71|s;5tA{9n!c5 zoZG)Ks_FyS3&#L9Bn5CZB5N{2O3tjJKJz)b_FO2OKmKT6-0CvLblo~?F!GO!%~gh- zn8NwB(PwEEv$T#_51z))N-@6;V@W~;|2hApLEp;%=Et&AY+o9e&&#FMX`f-SAS;CFI1ar$(zJ#^^+p27Wr;$~*Hmdv zxH?>EfAtv#q1sB$6=YIVWcpo8VK$)uEvdJ#9G8D{4f<)PMW!s* zq*QZV_}MD^8fKZW+y&L4FATW6A{4*JjwYd3h@gQOc?aA z<=8q)8>~HbA6K>a?TT&&sGTIvFO+tq46RcU-D{Y{#gu^OQZ^uw?MFE_;o%#eeG)C# z0C@7?$>``{Sq50YaF&^M_&-dnpS*oDAuL9LQ!TcKR*uZpENRi}8d z$fwm~8*M2Arhq0#)2g9IDM9ogkSG<{{bAz|_%!&)(SLd82&slX*BDumW;!^j>%>%b zlydDQLyb>nog|ib>Zai~bwFWC6YUR`63@UiHffjA-W*voJD^jpMoK3Jd+2pWVr&1Q zFnm$|CoK6nOgBEaU%x4H$1?B7O?65YkKIxvlx}k!&RLDv;iVozd3(`8jSM)W%eY_A z+J%Z5BDt*)nMRW|kgk{NX_uDfRqfTYC6(B1))5ECH|I)*vgN&FyLrK8iwr56*Hy!r zx~K3jM*2l(pp;-)2*le2qZV$($45)14h9!+s#dOJg}gE;+3685js7(*{F_jTN8j5xo8y&%5SuGaXg$`nY+T+ISyflQc%3@>!A0M568M+ zRZQgKo_nfLhb$mzeUv^uGno-?bNP8ny4;)a#U%m?a^An?zo%=}oSc+j#?5yU-537A z1364CtDQ)c5c2%zg56&4zYKPt?@DvKf~86!{uU{%stv|bKo*c%VOBs>{Fn!)Nr-{^_>|3XEsKy@8vA2s=B1E?~&iTn~vK@fs(yTMeyIyy`@O$s->QYum z0#thIvetbr`}rEdPH8?Vm;3{iF0DWYtJ2g=Fn`a#o^maU9i_t^(@HIvM6arL5?iba z`6t+4DPtDyZbNLA89cJy<=M9pg`sBU?e9LVdgm(~TkelIs=fZWl`mP2CiPXdCye9s z&8#baLYZ*(xS6kFX1kO=Vdzmm9}rYh(V5I57yYZtWn9>N+rlbRBa+r;9i>7tq#)+g zZneF>y@QSF@K19)Y_nxr7}8Kw*_hhYOPJz$ugpDF#P}mkMhDVD3gMU#V^#-rsCqwd z9V#$(_W|*2_noDKj&_MBY*$B#W2Tj$9j+%6RSBR!6qN5Dwm#z7vaTY{X@n&~d6F=4 zq$dzG5b_CBZ=`E3w)-Lx7@bh2Mk4=!DnMK4bh|z6rlju`A!#ga*p=-^X9Z*ngM1hW zx=*tAa+O)O9o_Zhe|~N*bbrt5Tr|?NVCQHNJAQhiI*kh{QRXQ8=fbw}u+rajo=kB! z)dMJm}hL=5p znaTgIj)XK2XXa6dFk)mUl{q|;H=uI&d~8yIcEQhwHYO4^b!wgGlmL}LD`^lyJC_7e z_shPPa?|6&2)fUlI_~67%J(x4wI3IL6gV*nMTDLwD*d|*brnrp%1Y4s%4B@p0^_KE z6$=h{JjPc{5z7?nO$){DT`rtRquTdPJE;By9K+dHdP^M{draN1s+J)Msr!kTdPWqa z6Z|vyvYh!h;S(CA$J}@|tkqOA)vv{oXtPaDz z{;5V-Wuu3z5$0R||8#biL6yYbg2&z68QgssTm}YrxG=c84esvl?k*R1cXz!wgAVTQ zEdRIr;nmjrvYV>zN_UdeCv}qUbh>kXjGGcY1J;G20?@93q8YZGv35I|MSm}Tje_}&L%eRmH`$6x$A}LqsI6N z2=!FuSQp$7Q!sqfB%kUwbPv5K-!hW#pLx}4I4h8h0F$yqh1AbhRA?5=uj!qx0w%sW z)DVOS|F>tB?u#AaQ`;MNBYtwelbAeoscA2eevQC3SCrMcp}zzGUVzo@`rbW>)3gRk zRjE2QXCRD>gMv@Ikt@2pUuEhnHUG8pRfNE>V-iqY4F}EhW3;wQ=L(M^{p+*;Jxkw` zhb%+x_Lii4Jh&XzBjct((~*k#_A_fE9agug6wQO2V z23Gb?5UCmy32Q2FCsLm|Da&pvSk@c!1DRa4(qsL;B0VzU>29mYQrJCO7CO?F1NvzI zTD(AR*EF103Hc!D^+y15uJ#k9atH&(40G9Np#=7AME&&oI1Z)7+NoZ#Wz3URS50VZ zVs70@twtnc%a=D>MtZNGnFTx!@>6-RInJY1nbu2J1l(?}b{^C!#p4I^3OTVgQjots zI;mZA_1Gox#FE4sm&iYJ;3Uf%sWYinIiOwnb_S~{2G8ZaC4W%M@)wMIM5&VU8eajF zIgwu&B7(U58Ma-kz%*trlHM*@__nPa*9RlYFg0`c5C44xm|B6NIg=q*b^Dv#M&k^mE<$kyv3FSAZ=i(Vsk zk-DM%Zg@IhsaF1c(ZpjMnXHBY05Pp5FU}+2Q2j9QNMT!}A{dtF2rOZ5*17=@eMdvr z)KDrP^I*00+Euk(F9phWRKVJ{Q4E3fbaypL{OZ7ghgMHlbiCTEfVE9TeF+%cV5!mi z{S>zkIJPZGH9c8>&MYrCQn2H8OuI^HMGodD5sN5OpM4&NZQJbLl|`mnCADOaIjKTlkj;D%O{r9#RQh&C5z1XPK(uALjWED4zNtGu5P-SRg^3_?2*v{n|*kFiA&!M9{ z?Zn|2pat{JLwALOV!X`-v@<6ld~{zmn^IY#Fy9)Fh@st7equ1jX;G>sW;R$F>O(+_ zAP@)o%!HJ6>zHAq^m%X(o?p=rE+Ljc7hTY5PalFD5+|);Tdi>AD>Z{|PDx3bO>Rzi z{^fc`&L8vvTbghz2Hv1=XT8lexa$j{|M(O=p)bUI17ofW1|#wkG=G!B@pFS;rVP#& zmoR07<`&R6ryO46tOEnHqU_0+8GEx(o>hTqE3cmNqSYf7aV888U%ps`y+GnG$l|&i z^wnY@JQ$TGSmwgkXw`9*W$gtjTyea`3bm&pX4g(0JIqf&of0iYd(y^SD7C{^q*#jZ zb-oFAstJ72ZQ~Z%H12iR$3uVtTh8ICde)u@#=W>^iH}*eO!sqRE#w(P_Dg9Qn}E1- zf10>`_cKbA$d{3u@$TEw%H&iWkxu&^ew?cnx)as~9DKlrVqz{=%P~nN_UE7S_K4C! zTmSB6-2m$m{2)l1U&weBL=b0b(vutDDA>Y%MSJOVA>kfQu{vrrdO)%n87(e&n z=y?0#g^YiXd2j}N8#mUV5LcJZ=-mqjB--MJFJM|6Le=LAwQ#DlJc%RZ=mc)pE^mTmh+|GP^-u$ zqTp+jAsfn@FN8C|b4QZCsjTHv<9vN}vyItRkkj42A&1ah9EK#GSvmkVz} z$Zuv5ON3awcI#qkZ)eK6P?wpf+Xd~|*PKQX5w>j3%#J-Ila%A8jB z?}`ajDiaX3U=ah6V;b*l5<0uW9`oV1fggq4L_dw>g;Ih3YvnMGIRubKrsm^o#zs?X z(YWhJ7Cujg-eg6V9>aslM*~h7#q$Op9!pO|<;RYQmSwO3D?9%XcB%WV0ZQ{UHO0gg~`8+LF22v2we;oOJVzc10f_Zu=XQg6ZW*h z`^Q6q#ct0+OAD-S-n|Hg;JqM{`LV|7mW|(x>V81UN%}f_#(9^KPG$)<+d4(+H!r1} z!PwgQLI-&6HOqaROdiLibViJn26m3Bak2h0AGiR-0F9cWOi$34ogz5LZ+hweM$bS~-*$NG`fOMh& z$6>SC=o6HFY*H`=d?B$kPk`cuL!{=C%sOc$(mjYMwDN+$9HKF-ZM#aaOJ!$Rrq753 zv5jsyK$>NSrsnRw%%(o2HDL+r1`wMde@*3mUFOHy$NF0=W+l0t@BDCPJvNUE54}RC ztF$wH6TRV-a4~YPLsf-k6~N?W-0|mfIB;!pPDDX9p(6YVml@Ps$zXMc))1dLl)YzC3dBwK6DrfI(5TwVmuR6()W_!T43oIR>{EFUZUGuVuPC>gFR% zIq5x=kSZCX^nD7!&z>>?=NfsOlajdYZ)L5Gs@p72m;QWeZ-Jb{3?Ly{2RZ8q9_(9X zQ<PdnTv5y3vTR#eA-e?u- zh`mSpUb;dB?4<7sOhB7AI^^pzVB3STD7~?fr|cEe`zTM)G2U3YEYdDc+AIkt(Lbgs z*L#Y~E`O|v^1L2lh3*e*gDq$!2QqF z7{Nwu%a8B8qBq5+^w=tI#U=PIs+9MZOb?xf$ITjJb6q*dPJHLc<65tF{nzX0a!==J zC>IH_#uYmp0_Q$TXYyJcLk5}9TgPfkelr0lN`tIJadZqXrtqb1iwbf}ktpG6CFVZ9 zpfCcSFBF>ahU6xuRr~;z*u+^164aVKqTgOu*o_lS#!! z`^-rL{;`akD<&x#4fz+G3~Sc}5N+f}p00FGsa;nKV_6=yxUJtDUwC2f=v$K8i@1F@ zA#dDq{oweJ_jG1`e%E#fa0?J}&zovB=%HWp?Py!NneI1~bBU<3hJx0e>04nuI`J)U z<8IRcuY%Yg89_G7vp;CDt!0IQ7HW|&SMLh)dl%_3Ix_Xgk>!TG`0Y+wpg1eQ*Z|}5 z8B}U^pB*IO`UFbeg9})U!&**h*sJj&+oZzOUszoTIhujZRRIz{+-WZvu ze7UDXMx1qO76eFmNpkVd-0D^a5js#|c7CqrT2UCDb_A3*1wnpscgjWgwIO--M5ns8 zc{JyyU8>HCKAs^ad>P{*d0jA1rTJk}1^CGUyrudpBVqy#UKDaa_t5HKtMqB3nWGj( ztKqZZH41HIW~qM|j53Cm-dx$*ECdtmcgK8UDH#HNuEUp14orcQSbb*+&Px+&wMcz& zuH^}bniNFgcfhRpvj?x#=Ytu%!f9Y{7~p){{4^NW(C&s&e?!)@LWe-g3l#*$v5n5xH935RpTw2BO)* z3}RI>7@{*&`3K+Sb7g8LgZ5A@dPY6F`-=kL_1d)*kb}g=B^J>yYL4~naC)xFXX_~2 z`Z3%UC_&9m5zzQ&zVX-9cf_GPJ++Tm_JINm0Q>+NyO5#RgtsHjIJV@W*RKSrHtOI z=1G;8=P3C2i77cY3ygyHMz*D?Rx#>GXev<0l4h4@@g>P0>b#l@b!3atr6mdI5f5a; z)!DjJH05h@%bUG%zHmLR_~U$&-&(!_R{{e(24W3P0+tT}K84qGaNghdzoBkWbzZtm z9_zw{fg3O{{zk@vr>o>^%H!umTiqW=4nR?Jq%l+M$4TDsqzOao{5x#t4r1dZ3T)Tf z9Wj*CNTr1}K_{(uWk36}hC9+06mMsjRW>7A6y+Nj1al<4O45(2eDc~LeQ7C=!^}Q^ zY!#-ijP)pJvI#hB;1zRtAsYYMfj7l(oA-}lLxBOF4cPKT>V;it$X7|iC;o3Z=v>G` z`cXOY#>myPY-^a^Y&yyt!!^t<1m8bui3@b0n53Fj&&9_~+b$r!CRRd9FBZ`dMs*w| zGap}n@*lk4VCe;D&cm*U2^t}0Y~fU{1I9kASC(SP+fGB`8vbf1{|*AP5Y^4?;o~Z3 z+(vjirnGD!y>kfE8_RZ`6qh>?MR?V~OZ9Or{9BiBKW9naa&BAjaP-#luAqAeHA4>w zC*5=519mvtHM}golY{AIB$qw08}D(ZpK$UvmP?}NV{xP+PXs{7Xze#ciGH^T36Ajm z8ft~&GtAysA=sg-nFTtf+I4t1kS@KG(-zH`c0k|)C1)#nq2~S$Y{KDkicd}EB#ZMP z))~>z-l$?ot7Qiukz4pNKf-U#)5}5QboGLBS_W*7JPpOJ$F;OiGcDW_rG59EK51f8 zrR?r)X^o=wmHh>!At&+{xMCTT2-Q=Zos^euAIDnxqg0P*Vy^)&8S97QlKJ0Dc3rGV zq&_)axmyM|hQd}aVcjw9xF%aT@fsOz>I;F~d$-#=Dod4F$|xKdVHC`&!^61WDaom#x!8eL8O%KgLtTfpB9$4LyB1oc!n zs)$3U!ad$0rVu0C?pwY<5k4zZDLRd9Tj<>F%~Fo+#VC$^G) zg?!FT2~)*W<&mJ)Pz(S=w~{1iZ)Iup18ROtu;MK_R19K9fOW--?uSh!`LA9J(-yP< zp+!6lhk{H%JQ`VBZ#D)TfVHk5Hp>B*&Z73Dcq8V*^QDKM3Qkx8e)qGllIX{_FF-2ddj80$F8e(oVIW|Eigv`{{Obh^B2}yOM9rF5; zO*F1h3hyKkAXN_|#OYzQLelj_GKC`d?5pb8cZJVbfI8G1O}+ErOPs~MXVTqylRwot z;^>RL;)r+75V~@?#m^XmB1{Fpwl%Wo@DYVChCQmYIqE7FjA;{M?7ideu)D+z%2hL&{jkB}#n zc_z*nCa#x!JM{E>WR!*@)~Iu9j^NR#nJ+oP>1xTXGIDHqUE=&%b4?XmIiux_mp;jz zg_Q_yAc}kf27Sjz!6=K#c$3gNHAI+h3yzx!TK`}v|h zT?blQ4ah^$TS48=aPEM6c#k@@Gev4@$ifez5O3fdEc7Ml*}i1sflcFVoLFKoGfpV*a%XAnMnWp`;3)HJ@!mo<^iNY(82#ddX{k@%&G*I~?fj^;&yb&|8ZS!E< zPZ}ABJkkF`tv$Cd)-bp~X#Uq;+xSoiV$lC_qQYkwQ#+|U^+({v!4hO74q2f@2PA;T z*d4uTc@NaS`89O3k8f480*|&G*2ageE#0D&lokYaOWedONkxt@irTfAe!XR?DL<8K z7n55pDnk?qCmFJlwSt?)PNq+@zwmC$`V6KO4uOaL;HY3keY#Gw^$)Tc_b&abxV^$G z0rLw%QG%sobs8KUWvAa_L-fn39}K_s@kRC%bj=I%i45N}{W)V5mSlg{3CCg)>rE}X zoeArGJadEcPcqrf|Ntg?tBcf&TC%R-cj}&NhRE??vfPDLkCd7ph zev!8mNlAK?Aw$W-C;H^IlJX#B-386F<*@~7T(IwCUDo~2+vIn?&`pbN!>vLxHT2; zY1p}0*({iOYgC4zyZ#(E?(W1itQ)d6WcII$Y4B<6Mndj=D!T&fgDXoOhHw6*!Ot_K z9%8zY34^G1Z&QR~2?`!hMT_{g0C3X)Jp4(SuFT?W-n;GSq@;THlECIF2n(Ae+K;Tx z1AnC1nHP&o+PbU|uYnqbO4z2WQhA!2#5(uUAgv=r88YM5WR^N`_XKA zBtKdguh*3n4dNHolqX~`>DM=`!Ba*Lk|dP^As3adGqMq?y~&)dre?dc!b29Cu_DPS zXZyC@eQ={UP#5VUjCch3Q@1QL1LeEl%s_iW_}^&kpVrI=dsBV~K@L8f46o)@3SYhk zP9>o<4S9M*NYUOuGjhmDw-1E=a!j^PE(sRQ;fX1I7xcJ1+49f+e9**0Kb~!g) zc6FNrtGdsdN3#w2OLdVc-^T|yY|qeZUiMt?b}@pd{q!+|dbL#x!r)8@QTR<1?w-M) zdgR{1Np$p=g-9dUkf*$Q@#o??M9F3B=g@lBKWXGaVKD4@w@2x_;hg5*dYYU z+wC6Ea(pt)g_(7@tQ@}T9p$jLPmR*(EtO&>ek=Q29+k9RPdkswjM*6-j3D-IehuPf zl8M6Ah;A9+5AB-JicTIN_`wBaP6?`GjO`{EPVfO;LqCmC++47SurQbYO}e-+T3>&t-M^Rbu#J zJMkO26O(7Y1*k60ApAq2*18U`Muwn})p5anrUQhCQwsj-lx@mKde!kLFWu9C&Y~Np z7wMTYQY*^DSfNvH$cnvmdtRasMbAnX3^FNqf7jVOCVI5fQZLbf9l4>xOgBZaF6|I% z-{|~@YvNz8!XDjC%ZC$arCDk#@WT?xKeD4^l!DA7x0{@(OWNFOr0E&Fx`&G?H-Xv4 zo1@c@uMyYVL|JJ{e8P#;4)45E=dS4YVC<(7WalLz*Vo)*I!ctPZe5yd(e@swvK*xn zJv-q_-xXJL)CQqM{jH?bglc8FUpT4^U<-(Qe_)jD!K?z7otwHUo*^~m1Q%7dkyPdg zVzi=)GyFXsx6awxFCb&0C#u|tNS1$nK+^mm$U=kpgf*Sp>GT{qj|%CJI`)^tvw3xh zM>6RUM|d!Bdv&VTdv2pD*0thEE%}LoG07H?Mio*)yx$S)q=Y~RAn3x4qI0$j{etc2 zR`bWg(Fuu`@VhoO(9J4Pw5TiQ$HpaBt)7=n6eRtaz16SU4Euma@11D!Vp8=#-~WVH zbwylu+J!W2k0TbDNOW+lIhOR?7;(>x?%m=Mh;Q*o+mWU&-?gk_B&+k`@k5Hr4?9OM z$RL@0re&Ga;v`VxISI&63AMDd2c1qMl5!tHM5nb(Rpt{=yo~D?DLi9Sjn65dkyb~< zOj|zlFliTNYgUkBucsPoNhmr;Cvc7!B8^;XL5D%TKn0#p7o4Ih!75;}BLad!;W zG#7TV@Fy!Fd$!{4j}0W<#;BM&2dO!Jb}2-`Tf93BGsc6svvE%ej=fy`_KNb7-n7%= zW2~%~r`+eNU_tN3ecG4saA!?^;Ng{HhWs2EaD32?(neD!Bo|F;I&M`Qxw3)2>=Prp z@k%xpB`sva)kRWN0%zpMlp0CNM*$+q3eUWbor)hzYf98j<%YGZ^+(fY&P+_!9wVaA zx_bnsm0c5p$Cejelv&L8<7_%?lSgk2XSvwy5wyJ%9c+k>Csg;CD zo`~9*w(T1Mf5YhpzFR_nMs92vEz1U?dK3*ci@Cgr#Kj#;gBw=O!+mjl@KQdsIwNM4Z}faLu&r4_n_Kv zp;ybkv5LAx0D53~3OD>dH34YKYBci^M<0|ZD_d0_$D&FqCHigLG~0F@|B3`g<>r6G z5Z8q%?N-l^`)FWBfresf%foq47xXAMknaWeleMat{6~4ow~kJUg*N~L$+r7cfZm*) z#b09Zgn<4^K=_q@qccv1R`=d}KS9UwV*#6m3_DyE1&JK2U zx$Kv=PSy|Z9!&dP%-zKBIhmLG`(t$GTDIR8s8$lecnwqu5yn}Q=_fEL8ZP3$>xz>q zYKTK=p{O+O^9iA2NZ#aBwm92QN3(-Miq-1Wv{jMfmS0pu)n_#OC2MUDCi6;=X!)Jc zZmXP9_B+VCzU!!fnU9T9T7`9-pflL{o(klp6`mL6I39;Y-6#z8$4|9s2xYv%qhaW*PV(74dritNRbp5e{c+Kvl+VfaIzkvuqvK>%3N#Q`cq_(O933CriNj)hc za2(QFXxQ*QbtD;8C4ER`(NL?UBT7$+5Zhc40~5lCB~kUbVSYCXLuc z?@rq%)@|NX<1dkdL?^)gwnkNq9D7S5G>6KQAXN($Z2*Z`g1o#SbOQz)c4*dGr4eqy zRE}lGoN}@Acuk5{q2#sy$N1RamHe~2GuYB*v3xPnQ%CX zs9t?A4b_?7_m`D;;W^R-XE0KI$don9sgkzxFV7aMeQ1z3R1f8=-hfAdInHS{m;Il{Sgz;ZmV+FkHo8(UtRf_)ER2eqnI;c2}`?fO6cDq3) z@C5egH9MXyrclENK-F-7q~h3*jM9oYn?TZ!0VA|Q-PQ_l9uTnBuAWm%CviWgKtY?O z6$&98e|t*FSq1zGBYmN-w>B@t5|6tNxS;d<+Ahi>x1vxW`thtL;&^ z;Q@xdfTY18(wsixyOq9U5}}Rck>NK!)OVV7=)gYdE1ZO_Z&9q_KVqd%%AB28IX1Dj zI3cjwWXK*#6`NF32(oq9s{L^$k!;dc&uhASlH8r=c=52#&ympyPMC}J20|iw;VZ?g z4=E3&GNuUfu_sq@%4pX6h$-JM{Vg@GFgX`a4P!axH7Jf^ku*^vUE_Osqri9_75kA^ zK}G3@p4AymRqZ#M$5gI{!AQ$CdYdjrkpuA1l=`?Ilt)gn5RDhAqHQm50OXqE7vVqL zH*xjcbVfHh*UxQ+`L%aw)qzZK%<;*(7;@C^6Pukh-iNpKc~F=&Gf}igS9q1M!F2Oy+>w^?Dtm^u$2Xb#m1b2bzWopHCUz62aD_*}NS`;q ziI+&B)(pN489JvRG=lg<;o$)@shMax+-De%SXFyV2l{wi6UGn#`4+v%72%diyhC0c zzT;ORy7q6x3^5xlkgV@zD@sNA?xM&L@oNh^$xnk-_(HlzGS{T05$@L5UEVpso3-pE z__qM4r8ELUe!1^jRd9Ug+WR7O6?DSzX)jUyY{8 zs*1~W(GQpBbwcjCY{d+EyR!m$PBJNkTD$ITlI_0-uIL0xA4e^5q*pVzv~ym|#SSu* zF?S5urJqRm&ig#`xRvV;0y0nhZQ$#sHU6xge-fz{27uPPhS?yR%9)MP(@II^7v7CZ zogtaM(R_s>t7I5pyrnN+anrJzPvg^4-&TOLRCa z602^ZHDgYQvns5$0wPRxW%NVW%HM2utB{9Gj>aTiVEL<6Ncw>7u5sMFIuLw)h8vUYqm zn)zbFMh_SkCuD_-+tK;x(a~L{wMv z+jhR}R^M7yJ`zl*)(A*xNw`=9)3byLrwro@kn0wQm7)VxdD(C7SXWTNc~jou|CqE$ zqOSZXBDRuGB?8W0hC*GgasOT8+76IzBi${jDc((ciBCz7xKZV6{pBWGCqv2e27#x7 zcccpT^LJomTQSk*7~#v3rJ7Xh8OjgcGJ-a-J1t%_**yH;ie`;4${NUq-YRv9lon=d{@u+Y4TX^v3RHH)`{Sa`QOzEr8dvwGqw8OFgsHfw6jgh2m zD^7XRCJvs`_D$9kRnS3`gZ0` z7`%^f;Px-O%)&)*iSMd0zqsB?e=k9Fj}AC5p~;3V-TMFJp;xHp?^Z~Gwh9wtyq7Jq0{jto*Xo;RvO@OlKs_i*iCB~yUPGn>e@b5fhwy`{q6-Vk2sk(xS zpDhB^+QO1OYJ4^B3B%fy<4lLp7k~$iC+B!2wgr?DgCJLFs8{mcv?u6icAva3Ppf%QP1Gd6$!nMKD*gGypX-I#Txt}l$&5EbTbRJMb{(i5Lq&FUw-Qt2@wuZ zxcPDz=b|HNKAK|kGK0W@W#V%hswGfHJB0~K_kI8o>nh$1`BsXOhlDSsV6?Fb7#ACJ zxfjpdYp{L(qzcly{S`vxv#lPsTJU2QG2tcXM(Y{Oz6O(XCtltOR;OOG#EO!FH?O1>CgI1{9#!IZ*c#t&ftTwuD<2!zy6b-smY{&e&>qr$DS$M zHxy5qOD!Gwj$6UU?=SjEdek$GWpg3dYpuW-+~LXUS!hiy#~G;!_Q07+G19A}u<~9NbM#8t z)4}udH#vm=cqxQNnYOFwKb6lN>;!$n#`hVAe> zrm#Ha>nyBuHdcYJcwVHA?&ZcJ3xJ*i7NWH)%mXzhn9@2n{#k#vqUQtb##G~G$mf>p zMO;h+2s>zghZ!;b^#>-I}w1b$H8REZ?w9tBqx+ zuaOS#ZtP2P#Ljfs%VPVODCCgrz~6CuUk`{e))6^$aJjNkV2V9)u`F20A!6Nng$7GyT|d6>5CHMXcvjsj)|Cm|8_+_l)mn~&?oYS_-lyi z$zjktJ>UG$a(r<3JlreidYE8dVpk5m7aLMLXAJoI3s)M8rF5Wf1FFCYtFC^$oW~W; zqVv`1yYQjpkZ%%NqpJ_O*4hh%$IFO}Qmg-Zzj{LwG5eJaY5gmEE{Lm44~5A+Z~@N6 zOgPCrD0tSJpu%(>OT`7@0v218)lz37OeMdY$`6lABnWYFiJ-1*fDJS5+ZWE-@-O9^ z{0IMjBbfsO_Xa$g8w>ig(wNw;qB(mJ z=~Q4+z^{$Mj4Oxl)cB*s^flsE|y!0Ja=oC|HinSNiyAEeYaMn)x)Hvjz5p;4ks zhC>tla}&VmH36sQp*wJiyi_M-&ZevmoQv~}ThgVCzN@xK-~3L93(Ev+Z_S`zI?*BB zB0=1hEvaI}f}oWM*03x^W`7bw=8}onvd2uZ89q<7295@_0WH_P8GJk`k9EN^o9=>~ zo28{&%2>f|a%`DEddm>ejVRoIB)dR|iJ3qxU0$qO=F;HvEAt-o`_0l%_8>V>FDa68 zXs-WafjXxT%qfxxkEqWp=7qI;jI{!u3~tlR3N%xb@lz}?Glb??YEJ~m2fGXueHt%o zqQjpxYhIG+nKN{9G;rm0ubp?U?)7_4jvj)0GvP*Vck(e_^BwY+rzYX(SoZ{FIc>e5 zk&ZDBbIB+^ShK3#6$g%5Sm!@MVO=oc0`Dim9jI1q@%NWX`b+6f?!uqO;Ub@gLUC7C z-~I(!%Zc_jGp~Ca<);(&gvn?>x-NAZ!0nR2f86N{baDNejo%*s?yJR!B|`1pdyrx6 z++;`Nm%zqf2|qYz=uk4SLQQT@K>qXj59?d8pQzm*PNd!il_iw@Yb8^<{YqlUI*Krk9owdckW zfc_btXS2)EDUezAI%^OIe8a_Vf9q+PiAv3Qkizo`QCERe$X38OvN_bKg1b?Ed9flXgVy^5)oBshZ}xCDz*4NKtj048v6V`E)5 zFz~Qey`a`g@CImm)1gmD{~ebUvX6C__(#90CFP-shuDxR&=M9s=(ZcD&%Ea&g#(rR zC%!7pFt3~cb;J&wSni>Ea)kFl8y;fJ-HB9S74k3G_odOty^PsRLUBiQd zu7)J~L-rb+m<-H=S_VaeUO%pif28+Su_UchD()Oe_q$7hOXW*=n}Q*T98Y$(4+}>< zY+q?iU+uz99)TQPtrr*0PN@mOor6TlZKCooq70?FD!-d-4T|?g6wGg1r0Q&LgfXpP zDl)(mD-oz!yWO`YVtx%smBu4pFp4s8>aJBbN(+}g;yv7x)^<{EuW#f+UZdFZkOVk@ z*_5$^GEjOFQ0X}mO1XhLCWBBbNKwWfZ#ZFgj|zsx`0eS?C`PB-YUlljM!#BOb`|*O zS1qHqIMF&ahaM&zZ&91?e-p!{`W6L4^;#;tSFiE+K0iyY2e8o0c$>oM$tBftX}QU^ zgh%i#_2Esfr^7i+lG`oj74#Oh=OH^*pTc=?603f{dcop3Ie*4wm%u%FV{S2V|I!G_ z!Q}R@bvRwnWA*o~OALj4`aAFPkT8yS^*jJh9`-lQ^He+uHMQ4^wyST2dL>3z;2$%pz=P`{J-RgSg} zw1^fd&mWT52^mh_gBdR#s(o6<$zH~bKRoTbV~k~d!Y1WjP|ty-wR=;Y6_@-9qMFWf zr&k;HCv2*>3TFtLyf2*d(Ag(Pm5@bE6dTtURFv_H8BV42%yS6sd)hs#=lc5Jht#zR;MPO)f1P+GUH@+f)3(F};79|)Xi>uYFMqgZCr5L5 zYPANeWa%Mg1iGAYX{ZNgn6G1 zm9n?6ZMR8q9>Avi*d<{J54)A#-^wqNoziQ~>`-ui@~-f@##nCBov<6sY!flo5p%_% zgjudoal^`3k02L877)0=PxoQ0+e04vm4)a8d_{Ep5F~vJeMZ)bQ2d9HWVp{0b&5q z(%Ugz@Xopfdb>Oc7swhgf~#%tkzJ*~{fD_XZE0nPVjCw<+Cb~`a`&tl3&|swEWybMkA)42b_t*h9^q15 zodAzMv9O*WwV2jt-T0P&Qt~pEiSiTW64jXmG_R{gLA^_)&5&(cjhNAYY~!(Hxa-dd zEEX8G5OBoL_bU^u0&)Vy&dS5aDlBp5D~w>cE31JDg}h<96dJ0V&rcE2cNw+az@;*r zo#C|U3QKgBE=G>t{Gk67EXCi(01^C?PAgc;Sg~SfhB~b{v4Cm)<&5*sC*s6y);%lm zUbTt-fD@P)j5&n`VjirsFA9Vx@F)SMOlhlD!Gx~dgi|SQ`=~Zqn^su9MXk) zL*ABDgB!s%zPjiC6kz82pdb#ThjAaDVu8x1F9iC$ne^xM@u(Z}*?uEN1J%mdp`@(D z5K6-S;ylC13Z!b@gP8|cLhgV%)DJ&z^>-2m3^4ys**~d(xkvI!sqmgKhx+(MfzghK zW!*jfFTUVVS%IN}PPM;Qm8zJ;bg0eIZ=Ze0lqEeh-zY@R5qSPQT zG`auKMFEh)-~W?A2-JK62Brqwp>_g;TVhs+_S5Io4nYBHqYiRu`~-p3ir>R^>Jx*x z-JE|>P5-apN66<|yGIWPqmL!2{&Hh&#}<41H*Y!>2iLcx@-kEa>vcU3u>?!gxc(xcmVD{T%K4>Z`Iqvt zUrOs+e$_@L(NcX5-_ir;1b>`cip5Z_cd&>+&C%pV092PFv^* z)CeUc2kJ4ie~ao$1uQoc^Zuza5K%_93U4F+tKx0)+`T6ND%@8_=J*mX?YsAuby9uD z7|M>~3T&DEr@kHl7)bik=#E{Lw9R{X*WLM5{yq>e&{;%)(-5pB?^|x`9OItEd*EXK zw;V+kXke<0%+OwX^6|@S!YIRbu9|7x{!e)~X@m^tq#V#djHNur^EG5GRSU?X#o|if zAH%ccQux0w;q>L8c!b|OM%2BC_w1cFHguPBc?y7>_@$SU%>AttqCL{T@w@nu`x!}B zEx0}PK%t*Iq`Xy??01KfPce-$cmg=k-0dUUE3B$5bo8Zn_-D86D(WP>&}l+w_U%QT+)}t z6#vt*{`0Ia{<2z9%I(_;nBPQG)?p7Un0EDuIx?7Z6QykhcwS{^+Sk4;<aF+@00fM``%iylT-QE42ocrO{^PE%l z{sVW{d;n^w-^}jS-D|Dx9i}KRg@QH(o&js(e;*JU zx{AcmkNH1NnDq4P)A%1JPivw>iS)cnLYQX54=YFO)qiO3LI$4UZe{z{|5bI z%l|0jVR?kQdvWF+lhJ|AcNkJaEEqnG&=Vb2_7Su&AClxWK**WvX=lb# zgGTJXKfMRie?GlR@a5%?^mMCj5sY{{8V(6(1QUOC*2bjNzIw@sI&Y~-V> z(Ov|nrb*W)m^%z^x5axOTj+xpH1xR}QwY09hloHTugRxklR*JU%D)iS=Nv^a7T)-26r7=5rw5QV#PMBATDhA zwTdandU|}w)OkhVrR@j<=237{t6y=bz}hS~hRxEe8z@yW=LbDdGIe5AwUfZR)PaXS zMZ~727B>w$>NYzekiQDCOcICDD43b#FBXYxY6y*Kv>7ll={J`)A^j^_7%y`FDTj2~ zI=uA9FN6b4m+Y6(BfW7aw*%Vz?=&7+D;2$J%W)S!R;wDf44_60IHz4TXi`>xHm>qo z#&ch?iuJUkyJR|%np-&<81&9@_n^zBR>)i*IjBkI2J+h5_T=e5GZIe^3t%#GLlUQ<((MUwQ7?1B99Nq+x(yminWO6j}D64g#-4WI0`ckiuu9$Z7zo;(yO}!aBR?G0-bZ0%U3LeIE-pk z=Dw}?lGL7TBe!cB=oZ&g(W&2GWYO-V(ku8kpQNMPzK*^Z;s2W(OX3FGGCmt z2F59*#O1@D=^VaoHxI~x_$g>9iXK2QJA4nR%aS(qcc7;s-~jMMwJ4_Tn{n8eY8@A; zxpDRjo}JX)^ZgGlrwc)g2&|!3&VEhNTq7t>zql;`q9!S`<0#+S%R?{h1KO&XBvB8c z0w$piO0Q5xZh||f3<8y+>$r#zw1L*2P))ZCiiDx`nCg?UHv`O>sZHh<%GSkR^*nhqil&hJAn_ z@<-F_mq2%ZO8H~Fjg22}!mfcli|f5rl=mmg6&mRRGDK3k(HWTA0ReD6lSBmn&b&6N z{{vUjW@?2WA=KROBVgaxs2<`Q&F>_sm}uTq4rqc(C|o-}uu(ztw)nNO8|?}AViMvdT1BsTLEU~uHXegJ)hv>!cA(Pajj$3CQHwUL8ejl@Sh2f1N8H}s z-Hk~_Y;k@<-5p5{q7}(JuWIPM$d$@$zwLST1}qdHrH@imtd2u(ILxUlPy@`-y3a*) zSqzOy0a5rcSS#5qvxM34z)@;1B$*dOmN|Sx%eadns~V8aZRmxII#!zJi}gFjm;)MyR_y)7Zs>w;{C<@wGME3`90w8NM!>75kU&0pe znqAHPMcVi%M|uz@g~me9o%}-<#Umf{2_?}^-b2uCSjrA#x)lPg6NGG>NUcEX~fYJl9o zIb{Xbe|V;-o( z^!6MHfy0{k*q&6P9#Vlpn?Ufg-YGR@3}u|}2z9~i;3Cv=gYvl2Q`~?&NRDDy;-|4l zJroJCW*GG*fsj-6JJ0I{`;X#5lnawkY4c^@<_3>f>yWnU;EXiZT=pwwp@_BT{Hn&j z^gc9`kF2~0QJC`euo@ZQ?MLs!1+WGf2-s8(pnvknZ4b_9@?+DsN{&D=^43{5Wkc=p ztP2>MAYma|A$6h3t@2&7+3}*KrG>w^^Gga^01x9o-5&2Ecl_5~!2f#}uDgcaok(L` zC7|p#f%f$Sbf8hX8-^+=iE=e4Hq73{kRQ}ie#=?nKIjjc+hnnK5d#~-NM-KSNC~<~ z;nhLPjmY#!bstPL?7iGem!X5ks`S&9)1kpXj&VB6Z2hnvfN|`LLsetnXo0?!eR#YF z4Ip9OL%4(0m#1W2AeE`a2a1tl1lO}w)wws1TVw`gu#x#2DqyNW5cb*}p^WQhqDGni zenFE=DTQ+m<8L+KZ^V=ISwY#7LjBRTUy(o)14fpJ4WZ0gA&y@(5+h>F=C7oeytYJZ z!)Qw|D!pi|*suWpN>|`>zWj*n+%D1DfQ2avZGY7t)!p-NMw7$V|CcyRz@V@e0AfM)Di*rfBO$>=(U`IubQus^00>9Ua_HQ%#>ys(u6Rny4WbzmEje|fI zZhn(F4ehpXfIk)Nl4z$NRxn-?BC%sK7$VV+w!+b=>GOyz1#M_x@2nW>kAe{>pE^Ic zkWxh-!o}I^Q*!kZ;^W7}U%@@OcbRt6^Su^gs%NnA_y?l8{2dyG$AA%4g)Nfv^mJG7z!pB z9S35xNq87;7PeQWvtS?1l`4+Cy|lNn;0qJPwGy-PQo!GxtuYH&{kvt-iT#zHlWDhB6C~6$ z%~uli?GkF*aj{J}Dd&ghkxYXVo(8-*BPt0m$3KnJj_a}{_I+NpxN#}+>9l9vC8jtM z#|@KJCb#W^H`ej>G>uNE`E4pR_W94tQ)ArE@R^yG0k?Z}O-;?zw8THNmg*RUB>prC zo~1g~Uo?|`{)FO&b3{Iz#SQSN?f-FF#`2i~?nY7gY&sj^4@XH*S6d6&OdoDn^qkRm zXuRAD0Piot;G2U$45I@hlhP3?LStJ-xdO*lS4)$*a>)Jpgl3PqUbU02g49 z@O@@|qbE1c;^N}Di=%%@7zsr$uY86;_K3~DF(qyi^H-Wb{=y!?E{QkFy^^W26t52> z!fg7EYCMd2j9HaVpEyW?G-IODBu|@PKEhl)R65LDVKc&9i<>E@mj8=Eo5w-7>&W5h znav7BQ7RBaB;$k6Wkx;&{Hhki=t&a$slJ8uefkhH7dwrzb8X+| zP*v{(uectp7_dfCo zi1eY6@LKXZ@F6gJp~)nUE!so|uSZ3S5J4|mqs55U!O;;B?Z5i?5d44YxX7SvQ{Xc1 z%MYFl3?Al=FLY+%g5*C5-U-O#robA@!B)qK=SPg7r!cZf=}M{&6;=P%QcO%>Z^9j+ z(Pk+rWoR1G)HmT0-mCJ`O|(EtGC&%IFZpeUpq8l}EfOsiEfZ~D3^>AG2e~oI2?(zt zEEFl>dB;g$s<^S05tHZ(zch>zdETuG67kx-J5px?w-$wc2}h8K?BLGvT0uWO@keKt z3T#}YMYwSi4{Ttk@J`1d-3-{KWz}GH#l5w8K<&s9u5jPS^Z1z*qRCzWbofPWDjTjc zH>hbL_98e@;c0n2YZ0}os~v7q@?0w}{Lm`Her>S^Z%v>MKKIc&=g5M0twA_`F!zhRr!*5_{Xr>YBzjFUSw$mis)p;~2YhMvKnf#Ir@e9_`S-7(qf00>q!aSGy zN6Db{?d$>hmNIw#q4@NJnUf93*r7SnDT;KSIg$KYr>p zxUC&b=H$ds-ps+k*oRY)vRnY{cTbODSGC(DZ}0hOP8#0ZoJi|5J8532j3X*6 zxe0SKq;kvrr+`d{0Vhj_)%Pc>c$;0Vf=Mz`>0>+xz{F|4JVU7Vr}BlgIE(zgtz8F4 z6utKf@JDB3$8Y~Sc%CkRl&Ne=Y48YjFGbzGvI>h8d>yE^^teCY_9^)Kdx)VozkyrF z?R~v3btKWkR|bBX7!%F8Noi8ovwXU(uxMnl_yR$S6=J)m+p_K+>VHKdhwX9<7icz` z8KY+H5zn)MagiEA$LV?&O9A%PlzyVl3EO`$HQH6&-jn#cxw%{6KEP&Tv!Sw`&K!|Y zSF&rkTKHEezs}i_iF#ej;b~G-i)>d8ph&IzaM&>;yP+c+2fj zqKW2cj@5>y$=+vOi&5rbI`($l5vG!q?oS#i{?%myY9a_~R2?w%PUmhkP*W#cnYNBZf1Ci6FC_IGrmNQds(z#{pu7HZxo-rqw_i@#bG zX9)Zq(xt1NYgUlIKV63pYf;xbzoNZylv&2|Tb(1Vsgi(2p%bSX@1OA3Y5gpPTNtVhB@P1e|wA@L`(yDQ5a$4Vhe$ z2?&0C|F&VrHRHF{J6SnTdczToRclya{IRqjC7^GC+=!QmNgfqGg%_DgZt9RPsgMzdY`5ZGgRNYv=@(5dOmaomp<(6-9LgKyqrviSw0ii0SF)VeVx(ywJu zLpBDXr*^FVVf8kxuN2e4 zSz%Az4XbaL!*aW~)K%hJHk%&U4rOi4^WN6OcFyv3qq5c zBa64)O%|V1OcF#(Obu_{-Syt9k!&$bS4wXKwl%hsdlyJriokSWF9jX3@Bv0RXV%+p zH-n1C{#lAa3VVugbOMbRX}c%136YV=RtuHy!zK+wQP0Iglh~n_iO}~?f7sdLi9a-N z?1OqzTiRy&<m(Zql|h4a1vEso1+VhuzNAZ^tukF_RN6~DpKpct+p@l? zcNMiDU))D$94AOPkK4A=X7d)lQd~hSIF-9FotY2iX;8lV?;DVRV2iDngBH2~5F$hx zYMlH&X4FqM;#nhNp)jII(}m(go@SEpaLM=x3;l4JFU~`AKXRosqIBcsLUpobny9hR+>tNL&YyMu0X0)zeKr61hoH{jBQlCr6E1X7}?@1U%7v1ucJFE1By0>JsTTGc& z9YGu=)CSNNK}O8`W3M=!eLa^*V+<11vK0nxVpVomqx)6#2{mqZuPMt3o}$w zLgl=7M<#|aXfk4X@JEKG@3^tN8vzGhBECc;k|;rSDHzWMBmTZq0t>-?zZ@%k_UFn7 z`_qzpmgY%a)YJg{9@xQ_F-qZ8(MB1$ujckdx^AflVX}&w*5zoV7`8|^)$3JRc|!gs ztZIoS)^fd$g3pzfPwZO-n@t`!e7j@XD#fB!BC8=rr3|I8uo5^;_0`d>;~{9I(*iI2 z8=HB-9(T^dSqi9bYXq zitRhnMHO3GrybNkS{oT zUaDr7aiXpS7xwlnroGKGTdKhZz~v&4PPt`hWgMFQmwdHQ?a#I&JUW?&w`Zj0=ogso zSNx`hb+HN-$w&6w(sp;+5o`iw7AUZ(hjR zqs)gCRUAwi+;F~9)eA1m3R;%7!a2+>pyQm{AV}#Um_-S?z6#`jloxGmU}v~-J|7+z z7QFJXus~cUw#GO(Li9DW4D{qBr<)+fW72Um<(I4GdFqJ~rU#=qRet^zhal<2*8 zwonnzNX1DoDWl8!rPcRlkQ|K);oN~{qL|B@`JI$P2)A7z0L!y>t@Rqoi3Fd^VPyLn za&Uq#jg{at%a;;jt(me&(;NC+ldVJZ=~}8kTqR+*qaB|^aO);%g)_A0`v)pownmEL zG^&hvous^?4EUArwdFc_tD-Z{USBw5Wm2_^v-tZ4TXZ5_Hb<$CdD;nZ5YE#I4vtOdtptw-pZpCIXY@W7$4?%W*$K%|E_N>Vu#_Zz;jD4$+gyAFz^EpbfMrv`m;iIDNr5ss7U3D>qcdiSH0+BH3xBqS`y7aE`IxvFa z(F$|q+1S1SO5>ky^n}!%R^ue(6PB z?yof9J;&{K*&bRo_I>OYbg8b6uR=l$$*d!;MUiD48^PpypKXU4({s<7JK3SjUTdKQ zP2B#7srzRpNUbG!f3jW3!^J#O52DOnpZfQwA+CqhcPK|_>*W?#1^k$_hzzAj6qm|Q zVpc8>Aznxe8;`3VY0-+*ZLv`XSw8Snnia`?Z7bm|Z3upTzye^a8ZY~rm6qy8JnMY? zM|02V$dY#KYso1MuWH^JjTe>s4%r7F^}p)Sr@0jJ(JXZH;dT2x&_*AT&hM&srBZRM zOW!|4dUV&G1qTxv)AW@BNkXjz;@Q_I+=$N|pt?ELLr?jh1j6mLkiCei3p6fZeV=b8 zf05+=y>c1`N85I>Z$oM&hx_Vzm#+8i(nd!>M$9VA5FMtxsxoZ>pp{O$_dsn`ALas8_r>9+B8_g3wyTkIdK16L37mqgsD zSM-<)C*^YT7g6pT&X+%`IzZ|jEk}80I8=2wuHCf=9?)kTrG`GbyF(M>$)j@+FcbwX zup@()3M@&3d5HSyqys@;n(c1t7DP8 z3a-Z1h8{gsSC_6rX)g@K9X;$}B13*Z9k+p*@~$CSSf;9c^1===CJ3m(K_r&DPJ~}l z%3WI>G}hS;xRWET{jP;XoaX%=GEez6TQAhyU>T}+LP)!_kV#CC?YbwqKVQTO)k>6b z6bqD1#tzU>And(wqP()t?^pfy9v2vqn$+4j;M^KEFz(;+*zOg#eb*dOq7S-g4;xsF z{^z)SfAn!ZqKd8M&a1-x-so>%fLS|xD;jvZH_6@%3(r*AUQLiN9h06Dn5Fle53fqO zD<=aMyD>{bAfbV?OIWgA`oe1EoYrG3O9+Uz`7{NKCD{ht(fNsq&ilA6h$49)B%AKH`hG(kEb z@QYvM>tWu{_dz6h;mcGtXtDEW<1blGJw2Wob{9J8&zEA{R(fkF5xcj&+sUW!wL!tr9vLj(3fQl~&i-8*H$dQyy%ZqEntBR$m(SX;Vji~~NN3nm(?~t7 zGE`cXVqX^Pv$Z2(!7F1d>IJp=vbKj4-}bd+RiuHY^ZEUAs1qL1nbam09xGpVLb;l;GpU`5w7S0o}~e)39c4 zxD{MC#N%^+U?v-dAXXbko5-AgrIv`ahRe_|WI2E84dDrL`L!L~9r6`NSGBe7X=Zc( z9Iid0R|4qSbhJBEd~f6XG#=3zwA=Il1B#?LcC#U2nKJjYA&T67fJNqMLYrmZ0vsG3 z4SSAJIAU6tBSUROy9iW|i?Q^A=5U%jFsJR0>X0wE^-4_RJH_-~`* z)H}uN(}=2lM|FyAlGZaNYw(QPJ|7s%TmWp1Sdml~o|L_n0PT5B%T1Ead{h zYUXpLyoYnvp%$}8IZ8WPg=GC&r_*#a%>CN(zgyjOL?Uad8&TZ_FPkm4_4PNrl=4vj zaF+xhbsc)f?G<$Qv?*t`xf2-sIljG;q7xpXsmCEC6A|7_jmz?SZcTj{wBwi$$%1GJ zVg~ee^C)ZW1|em5@B4G|pZW4)fd!PyBPj7FrPR?q%))Qi%ZnyRaajf5x?ay4IK_-( zV=kY&gOFHeCnZDUP};Q{Bo|K)XXz*KIk86x=R~I;ITc&9+>s~eg4H)=d4d%Dff}V6 z{en@BzehfT+;*yR-HvhjKdeR1b`9uhu@G`Yp*{i)SzTx#RU>?i@hH>;>-u;CTab?n z>%0G7=IOgXIx~Z9LNu&iD(>}zUmy~^eqDqW#2my?33y_7@TLHlx)a;dsm+zA zig|7MyuEB%KFKo5ZU1{JeZ5-=NXt6ovYi*`lYtB$N&OqYewA1SGb6Pvr?7Y6HrX~C zWT4-ObI4lveS1KA-V-L>m{y?w<&Z#EsMp44F;^VK++J8FE>x~o#wYYtiYWA0DDZmr z_8RbZ*Fjw_&!A>=usPxX=4@$+W^k5W3)fA&?RfB2YiDD|?fd1Z<≨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