From 64bfb21bf0410b523cb1d288d2e2e814d86c639c Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 13:40:02 +0800 Subject: [PATCH 01/13] optimize dockerfile --- Dockerfile | 21 +++++++++++---------- docker-compose.yml | 5 ++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index bd871c6..16a444a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM python:3.10-slim # Set the working directory in the container WORKDIR /MoneyPrinterTurbo -ENV PYTHONPATH="/MoneyPrinterTurbo:$PYTHONPATH" +ENV PYTHONPATH="/MoneyPrinterTurbo" # Install system dependencies RUN apt-get update && apt-get install -y \ @@ -17,11 +17,7 @@ RUN apt-get update && apt-get install -y \ RUN sed -i '/ Date: Thu, 11 Apr 2024 13:44:20 +0800 Subject: [PATCH 02/13] fixed an error when loading the config file. --- app/config/config.py | 61 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/app/config/config.py b/app/config/config.py index cd3ba6a..2afcdd0 100644 --- a/app/config/config.py +++ b/app/config/config.py @@ -1,28 +1,45 @@ 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" -if not os.path.isfile(config_file): - example_file = f"{root_dir}/config.example.toml" - if os.path.isfile(example_file): - import shutil - 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}") +def load_config(): + # fix: IsADirectoryError: [Errno 21] Is a directory: '/MoneyPrinterTurbo/config.toml' + if os.path.isdir(config_file): + shutil.rmtree(config_file) -try: - _cfg = 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() - _cfg = toml.loads(_cfg_content) + 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["whisper"] = whisper + _cfg["pexels"] = pexels + f.write(toml.dumps(_cfg)) + + +_cfg = load_config() app = _cfg.get("app", {}) whisper = _cfg.get("whisper", {}) pexels = _cfg.get("pexels", {}) @@ -46,19 +63,3 @@ if imagemagick_path and os.path.isfile(imagemagick_path): ffmpeg_path = app.get("ffmpeg_path", "") if ffmpeg_path and os.path.isfile(ffmpeg_path): os.environ["IMAGEIO_FFMPEG_EXE"] = ffmpeg_path - - -# __cfg = { -# "hostname": hostname, -# "listen_host": listen_host, -# "listen_port": listen_port, -# } -# logger.info(__cfg) - - -def save_config(): - with open(config_file, "w", encoding="utf-8") as f: - _cfg["app"] = app - _cfg["whisper"] = whisper - _cfg["pexels"] = pexels - f.write(toml.dumps(_cfg)) From 56a6d5c523cebf66805c6f996c755aabd750ae6c Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 17:09:10 +0800 Subject: [PATCH 03/13] optimize the position of long subtitles --- app/services/video.py | 55 ++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/app/services/video.py b/app/services/video.py index 6ada901..e05dc12 100644 --- a/app/services/video.py +++ b/app/services/video.py @@ -124,7 +124,7 @@ def wrap_text(text, max_width, font='Arial', fontsize=60): width, height = get_text_size(text) if width <= max_width: - return text + return text, height logger.warning(f"wrapping text, max_width: {max_width}, text_width: {width}, text: {text}") @@ -149,8 +149,9 @@ def wrap_text(text, max_width, font='Arial', fontsize=60): 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 + return result, height _wrapped_lines_ = [] chars = list(text) @@ -165,8 +166,9 @@ def wrap_text(text, max_width, font='Arial', fontsize=60): _txt_ = '' _wrapped_lines_.append(_txt_) result = '\n'.join(_wrapped_lines_).strip() + height = len(_wrapped_lines_) * height logger.warning(f"wrapped text: {result}") - return result + return result, height def generate_video(video_path: str, @@ -199,23 +201,15 @@ def generate_video(video_path: str, logger.info(f"using font: {font_path}") - if params.subtitle_position == "top": - position_height = video_height * 0.1 - elif params.subtitle_position == "bottom": - position_height = video_height * 0.9 - else: - position_height = "center" - - def generator(txt, **kwargs): + def create_text_clip(subtitle_item): + phrase = subtitle_item[1] max_width = video_width * 0.9 - # logger.debug(f"rendering text: {txt}") - wrapped_txt = wrap_text(txt, - max_width=max_width, - font=font_path, - fontsize=params.font_size - ) # 调整max_width以适应你的视频 - - clip = TextClip( + 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, @@ -225,15 +219,28 @@ def generate_video(video_path: str, stroke_width=params.stroke_width, print_cmd=False, ) - return clip + 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.1)) + else: + _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, make_textclip=generator, encoding='utf-8') - sub_clip = sub.set_position(lambda _t: ('center', position_height)) - video_clip = CompositeVideoClip([video_clip, sub_clip]) + 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: @@ -258,7 +265,7 @@ if __name__ == "__main__": txt_zh = "测试长字段这是您的旅行技巧指南帮助您进行预算友好的冒险" font = utils.resource_dir() + "/fonts/STHeitiMedium.ttc" for txt in [txt_en, txt_zh]: - t = wrap_text(text=txt, max_width=1000, font=font, fontsize=60) + t, h = wrap_text(text=txt, max_width=1000, font=font, fontsize=60) print(t) task_id = "aa563149-a7ea-49c2-b39f-8c32cc225baf" From 759c1ce652e64aa9d4587fd7b7e788166b27f45e Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 18:25:15 +0800 Subject: [PATCH 04/13] add openai error logs --- app/services/llm.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/services/llm.py b/app/services/llm.py index fca6bca..49d552f 100644 --- a/app/services/llm.py +++ b/app/services/llm.py @@ -5,6 +5,8 @@ from typing import List from loguru import logger from openai import OpenAI from openai import AzureOpenAI +from openai.types.chat import ChatCompletion + from app.config import config @@ -133,7 +135,15 @@ def _generate_response(prompt: str) -> str: messages=[{"role": "user", "content": prompt}] ) if response: - content = response.choices[0].message.content + 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", "") From 1c7d7e138b768c443a9dc37de305c761a9b2026b Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 18:27:14 +0800 Subject: [PATCH 05/13] compatible with local whisper model --- app/services/subtitle.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/services/subtitle.py b/app/services/subtitle.py index 5ea8028..d19ac59 100644 --- a/app/services/subtitle.py +++ b/app/services/subtitle.py @@ -1,4 +1,5 @@ import json +import os.path import re from faster_whisper import WhisperModel @@ -17,8 +18,13 @@ model = None def create(audio_file, subtitle_file: str = ""): global model if not model: - logger.info(f"loading model: {model_size}, device: {device}, compute_type: {compute_type}") - model = WhisperModel(model_size_or_path=model_size, + 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}") + model = WhisperModel(model_size_or_path=model_path, device=device, compute_type=compute_type) From 09285954a8ae8d2bc441156a9bba7a6c8ae3ccd7 Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 20:22:27 +0800 Subject: [PATCH 06/13] optimize i18n --- app/config/config.py | 2 +- webui/Main.py | 2 +- webui/i18n/de.json | 2 +- webui/i18n/en.json | 2 +- webui/i18n/zh.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/config/config.py b/app/config/config.py index 2afcdd0..19d4a77 100644 --- a/app/config/config.py +++ b/app/config/config.py @@ -53,7 +53,7 @@ listen_port = _cfg.get("listen_port", 8080) project_name = _cfg.get("project_name", "MoneyPrinterTurbo") project_description = _cfg.get("project_description", "https://github.com/harry0703/MoneyPrinterTurbo") -project_version = _cfg.get("project_version", "1.0.1") +project_version = _cfg.get("project_version", "1.1.0") reload_debug = False imagemagick_path = app.get("imagemagick_path", "") diff --git a/webui/Main.py b/webui/Main.py index 2712b28..7eb10fb 100644 --- a/webui/Main.py +++ b/webui/Main.py @@ -38,7 +38,7 @@ hide_streamlit_style = """ """ st.markdown(hide_streamlit_style, unsafe_allow_html=True) -st.title("MoneyPrinterTurbo") +st.title(f"MoneyPrinterTurbo v{config.project_version}") font_dir = os.path.join(root_dir, "resource", "fonts") song_dir = os.path.join(root_dir, "resource", "songs") diff --git a/webui/i18n/de.json b/webui/i18n/de.json index 63bd397..d68899b 100644 --- a/webui/i18n/de.json +++ b/webui/i18n/de.json @@ -58,6 +58,6 @@ "Model Name": "Model Name", "Please Enter the LLM API Key": "Please Enter the **LLM API Key**", "Please Enter the Pexels API Key": "Please Enter the **Pexels API Key**", - "Get Help": "If you need help, or have any questions, you can join discord for help: https://harryai.cc/moneyprinterturbo" + "Get Help": "If you need help, or have any questions, you can join discord for help: https://harryai.cc" } } \ No newline at end of file diff --git a/webui/i18n/en.json b/webui/i18n/en.json index 47bd073..f30e4e7 100644 --- a/webui/i18n/en.json +++ b/webui/i18n/en.json @@ -58,6 +58,6 @@ "Model Name": "Model Name", "Please Enter the LLM API Key": "Please Enter the **LLM API Key**", "Please Enter the Pexels API Key": "Please Enter the **Pexels API Key**", - "Get Help": "If you need help, or have any questions, you can join discord for help: https://harryai.cc/moneyprinterturbo" + "Get Help": "If you need help, or have any questions, you can join discord for help: https://harryai.cc" } } \ No newline at end of file diff --git a/webui/i18n/zh.json b/webui/i18n/zh.json index 7d71d05..24f4b22 100644 --- a/webui/i18n/zh.json +++ b/webui/i18n/zh.json @@ -58,6 +58,6 @@ "Model Name": "模型名称 (:blue[需要到大模型提供商的后台确认被授权的模型名称])", "Please Enter the LLM API Key": "请先填写大模型 **API Key**", "Please Enter the Pexels API Key": "请先填写 **Pexels API Key**", - "Get Help": "有任何问题或建议,可以加入 **微信群** 求助或讨论:https://harryai.cc/moneyprinterturbo" + "Get Help": "有任何问题或建议,可以加入 **微信群** 求助或讨论:https://harryai.cc" } } \ No newline at end of file From bb66b7e10c136f67e1557e32a40a125e12b7d4a4 Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 22:02:00 +0800 Subject: [PATCH 07/13] update readme --- README.md | 20 ++++++++++++-------- docs/wechat-01.jpg | Bin 0 -> 163285 bytes 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 docs/wechat-01.jpg diff --git a/README.md b/README.md index 7a829bf..17e6cbc 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,9 @@ - [ ] 支持更多的语音合成服务商,比如 OpenAI TTS, Azure TTS - [ ] 自动上传到YouTube平台 +## 交流讨论 💬 + + ## 视频演示 📺 ### 竖屏 9:16 @@ -102,8 +105,17 @@ +## 配置要求 📦 +- 建议最低 CPU 4核或以上,内存 8G 或以上,显卡非必须 +- Windows 10 或 MacOS 11.0 以上系统 + ## 安装部署 📥 +> 不想部署的可以直接下载安装包,解压直接使用 +- **Windows** 版本下载地址 + - 百度网盘: https://pan.baidu.com/s/1BB3SGtAFTytzFLS5t2d8Gg?pwd=5bry + +### 前提条件 - 尽量不要使用 **中文路径**,避免出现一些无法预料的问题 - 请确保你的 **网络** 是正常的,VPN需要打开`全局流量`模式 @@ -375,14 +387,6 @@ pip install Pillow==8.4.0 - 可以提交 [issue](https://github.com/harry0703/MoneyPrinterTurbo/issues) 或者 [pull request](https://github.com/harry0703/MoneyPrinterTurbo/pulls)。 -- 也可以关注我的 **抖音** 或 **视频号**:`网旭哈瑞.AI` - - 我会在上面发布一些 **使用教程** 和 **纯技术** 分享。 - - 如果有更新和优化,我也会在上面 **及时通知**。 - - 有问题也可以在上面 **留言**,我会 **尽快回复**。 - -| 抖音 | | 视频号 | -|:---------------------------------------:|:------------:|:-------------------------------------------:| -| | | | ## 参考项目 📚 diff --git a/docs/wechat-01.jpg b/docs/wechat-01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96add1361b4c3fd0043b7a7a8571a3d9d48cb54d GIT binary patch literal 163285 zcmeFZ2V7Ijy6_zY1VKc46QUGBks?Kq7LhI@f+9_bN+$+%BM_uSlwJh{1OybMC?(Q6 zp(7yDL4pDy2qFX$#1Kj0Te{u*oPF*&_uKFH-u=G!{?0dKSS#x{YckKQSu@W(|9NKj z-R?Z-;5kDRLl6T42xJWWfp)PfQw9hRR}jd|40Id>0n9ZzpECR{$ESOK%aJkfDdTVF%>B>z{!9a8_9N_NVElPy@86f3;lSU@ z&A|VMax?sv8-v)M-+x6J^)tUelzaEx?hGglsJHK75Ab2!vu6(@6C)6qn3=u@=Do~6 z!rq^O{|G=ifr7EH?qg#=2-?HI$he1zkr^m2kTUptr899cb00aWyO+n} zI*a&iUZv2aXRH!uE86)iM+lP2H-5RlkBwhIP)JznsI<(n<0`7B)YMOF=;<368X23M zyL8#=inWccos+YRtDC!rr_UW9Qq$5OXJqE(KQAaODt_^@ zvZ}hKwywURv7@uAyQlYcU;pUX_{8MYyJ-w|0k`;ZY5CL2XX56Ut*@kQ^0ytJ75pj= z@c%!^!v)B*hlz=iiRHUI414^6$jHUSeB|U_Ze0tO>$iEtl|os0&n7*qXx}HHY)Rm| z@yiGszoZIQiuhfm9}@jJf$sl*lIVAVewSw#1KQ8X06Z{8E)WDnr_1EUfPRfHMJRll zcJA$>b!?zIgG=<`v0cz|Gje6hAdR~8%M5b77H61$M)2Ig2XD3^~lr^PpU3~{$gPl6xq1_ zpc-0{m2EdzX5|YqD`Amsa0MND#>nK9)U76KP<`F*igw{Lw!Ca_)a>CHdk?&R$Th?h zb(giv39MV){@^_(!V!57iqeI8y$YLSJMW$d;U;`2kI#qNP1_h1b|0!e_3fSXWwsIh zP=3`ouGGVv=Wn$5%v)2#YQQ@m!CzFZw|$QfWZ3MSi;*c-Ws}Lf_dP;(N4`t;w9!8S zV-u49}pYP2? zd=zhagpykgf21bJ&3An78HlB%t|VOOQzze-_qlr(zwC>(VDRa2S_W@V1O?~OC&0A> zj*cF6$bE5}S3Mcm_Cl-eqPA8uu5CKk&+xt!W_5ANW(>&r<<$7*_^Y8NS``vDP=9n- zV4m8jQ}LqLXYa$x_d<`~x5G(=N=6^^!fcXWpXe_;5^>`GHxA8x`D?o%vV}iniyKP$ zx(k}Neu`kn?t-XCez|&K8{!_&fnu))p`%ezCv;RoX6;nVQ;Sx2L7aF6lyhoc+T~PS z;>|qU8-YnoK6wEaCrqSMBpxU$3SPYe4MTb&XRIA2t`U}A5aMrsY|7yM(05|Q0LIr- zz|oj-u%~;lE(xrc&9f>-gULk+-1kF1yI8N>}z3t^e$7FuJ@gpTsfKD#LyZ1Oa@ zzkhbp!%_J}tK}PpSa&I(G!`wk*W^ITCHh3;Z1#av+(sn&-32*$E!qv2#)J>fF>lVh zo~%KykM67DeYvbqrx(I(n}7 zfs>u`N4VtBW8zU~D=+(vU*DSD(O=vDdCSpTGOwR9qvFx&rE-V$3bsjg^F{>M0K^~W!GZVpK>m*c7iL4sJviH^4NSL->Ti4TH(E^ z*Rk(vWHxG=VqZw5oNvy7b^F#~B$Y$CY&k{zN>I#3TO1}yn8X5*9Pbm0q%(U@ni}we zEDU%VcE^4#58VSfUxltq>_JZR;KZs*-Dgh|St5c2=7IMu%~7I$jH>EZXdW1d3|lAUgV*Lx-7NhDn28tZjkE}~v#lEeeSR;zg?t;Rm z&Josjqr(lGK2PQT+?Z^7KhgVe(9eMopZ6pW?f-W1hFl;ujOrdAu&qXtBbV?)5El zP>i=XqLH;=JP)y{{bI;iZiRVIuun(pL2^Km*+MQ)VwBk4rn=D@hl2xhi*S$Q_Ig@z zuar7#_rAYwfNV7dFY}P{$p!`VPBDQI^!!s~wR9-FH?rmf6t4h|RMkwB?b^0Z8xs{% z-zaMxWEp@jJ3`;yydV6MRpMaSFS74^NvAwwylNm=lU3n_{hdAz?giq@C_n zPmS58m!5XYD|dsNHSSzL0t{f;N1CqlTEvH!tHB?hxhIyp3u4*@0sRq~K1^367Z6!G z(Oh(e&tP5@Zp=48OBI%fIKK8yk0Z;z(NpcAuE31nxn$#q#n)avdP7y3nuZe21Mj=6 z8$Oz7kDbg|7)r=d9NnM_;V5(bpA}&m@jcmY3vl+%oddakH~2AHx(A*GkfNN@jA8`B zFCk`n!AHm}XRCnUPbOz!&Aa9V$lm6J+{mpBRw$x`!q{P#=_#gyu4sYDT&o$AQz5Gm zy+8K34t^X`St}lmFnrHO;fzGP%tfMW6C*=ZsXhejNCoQk^3@QDWv8_L{ zh1XS;aPn{w>Gu^XlNaabKCyTBeP`>3cj*de#CAaxMP&O~r1u;~S4W_o!X0$3j*Opo z@a|E&(yBsqeD?HIba1}i%2|=VGAq#=b(?M#X^N#6`^UbO2(?{AOCgl$Y@HM{pcmuS z5egX+lO*@yii2(w)!M;?bfW;50-#qBertPE!8^ZhS}Oml3XJ3sDc8g?*(^ZchrxKS zNl|o$DCc!?Q1Yc#u~F5&LUKWoX}xgH=o^(lxUyO1f^YJ&MFYj)(b(QAHu=UC zlotHgskK3YHuI>t%3V-&t29Ed8_lDl5Vj-LQW!bE4_+fGzqD#!JAR~buE@}NG>pV; z+fm;TJCxFwa8|EY@eHKY`yFyYA+}Y4-n|QArJo2o(;(2e9ZeN_=GhqEW)NrUA5he; zvd$G^^+AHC`j!UUPE4yeEkT9z0QnNhkZg}dvKE_3n-S7tVa|EW_^0-rPHg%*V;{Sh zu^`$;S{9u&@s?%uXa6$(vwyKf&Nm|ob-tV!P4m%K5sw@ZV)I4B9@EH?ApKfygJ{el_B;{=}o9)dzsoou!pN0g1t~TpVwxdN|k_FA&)Qd8ztOoj$(KgAJ$%7C+O+UBQbn(5e7~uWx5SJ6iYG}23MjXc?b^E_cW_i%E^n*o zE~vw{km^8t+$`m+lC+Q&TPD?Pgl#fqYBIZIQ5T_~hCg9v>pl2XR;uUi=XnrkqK0Me!kaK@0w|;zVS-teKi6oU=21)))*=eygpOb!U7b)bBleZN$vL zEeniUzqU7>?Ih(Gm4T4H_E7=9L5$UJtS3KM2!N|*TbmQgQoEl|Iv$(C>tjq;gllu+ zy#sg!csdW2Z+=s=QCe3!5p|~-MvNrIk%x!}c0t(0&fEvv+jHFI)RS-=Co^K;(ko!R zupB$nIFh4VJmZcD-UVd{RYYJ2f|rXjl&?ZC>@SUKm(YaKp#_Dt(pi-jA~a4%z>|J# z*og?~90HL8Eo-K}CJLDc7X-jxe(=b#*Y$ioT0v1wZf8z5bdBdWPJP5kn6oCk0i~#K zXdyEa-kO>Ba=~`M)T25Y!Ft{4+`R|#;Ne*g97k+E3s`!n@q25%(r#!_c>E^BI67-9 zmvoc%5((#=j->B1C0LWL5xgU}IO9!l(d()(I2)Z<&^S>YG;>xZUha~Dw@?0%q|()A z>{?PdcdH~t|q)otxS9CN{Y}|83zlUH!*Xv56?h`ktDYoVto1ksodnDb#h`Y1LpMaD&XJIrgtan4beatbzgp!pI-lg!yQ$3hGVb~jXcU}SlQ z$ek~br09{k5%eQ=?z&lsqq~F`iYKu5J@>9UvHAW);DrtW z&E8Esp~Q;zQcIPh8^lEm)4D`dz)n7-A0k3$yqb04PNb|rbFz^mY{22v0%H02c15=9 z`~ag7UnR>K`N#M3w|nXAZo%b2Vzgo%(V$<*3=5omo?w1oQDGQ6gpq7#&w8P(2od5D zq>m38yFsuukwT>?VIFQC+w7HQA+Vc`(Us_<81Q|%5bPpZ54)V8bKE^WE$28PF|=8( z$Y??P+~9_=X_kre=KdXrPv$4yZuiKl#kF0`(CP=#q$iOsLt%Dvor$p;$PQK=P7e&E z10^y8%K;N;&+U>|GP8`duB36pKIY#b&e**-b+cTnQkG(a-Y0R;myUkQb_4! zCmhYZvvIl0ToiWK@Y%~jEV4@XuF5WGZIuy*{h$GhwwT@Q9>c@fijt7*J!L9}hL<Qqzua?`qsDjPtR}Qs~#w)q5tDKR|vgMyi8WHiHwSGyWc9=N}d&AI_ z8{OU_)q*C@2HKo>G(})0q;qcXoy3G(1{G1p1+^|sa71HB#rNrwR}21+uHypG(ya$(Y#5E~&A{%9SA+68$GvXjEdC<_0K z!F60UIg+TnAeLX)p4VGScG z&qy_2LS?hsj0=O->4y=^r0cW<zG&>N}Z z%{J}s=a0M=du6;_>zz1#)U=`g&2Up&aV5w^Oc^`G5Ok1$Zi7bC)oJlAb)#RUh*z4B zg)0Kv7i|p|V7#Lzc-F>NMg%`jmhFP7lfRyjD;sst8d};@xJTB9WI#-v>SiB`gVYqQ z4S44vN;*R%MsqEi32L!5@fri2q$`<0#9k+?X1wrcM6xW*yw+60Appi?X|Ug~{N?6- z2HGUO+l)nx12JpYvnxwRzy zx6)T4mQK9R(q1K|(Ag>|22@T$c`R;YCXxgtKM6T(XHWK001d#dBhqrG({tol`4>Jg zms;P_z1b+Qo9Xdp){k$jA3j$IC0uPnM`uFu24xtk6ft`j|UwGr#XO5Gx-_bamUGK^8r&>FRlEqKR;C;~le4y^SQ zQL79)QwC}G+hK`N9n`cP+bEor=drf;#)prF`DI!?zmhO!q{ZFXSU7E65Re{)_CRBh zq_5=L6eIfRUGO~}@OtBzJ)Jw=sY7_Bj%bzpU~9EUZPL~BQ&Cjmv!b36eS(qT?Zc0r zUFi;ff@W-Xpor7k=6K}M^N;CllL|G7oF?;>0C>%ZgDbUS()R;T-x+&pRCxG_r)e?! z!?77h*8L~)Y!#hARJT0DGMx=gtRfvIr&A!kgpE!|aHa#qv5ELGH(aG;7sTdSo7Sk4 zL6Q{_if_4he@i9JMrmE5=L#Vw~kRgq*^lq+%Ze}r2`*3y(Om#`0WeAwPxaOM)TFvptKm| z{9`n)%3K77xeot=$lmR!MSe3WJlO1~bKF)HeqiG)MK0eIUYOsc2hYl_toFYoSZ=D{ ze+1J29)h-+dW!(l6Sl@zw5MpdT@WAjB3!daBYq>MH=)$a`g{v9(Bo3gSU>6D-21DB z;8T+^uWCxi1j}=bXYMg<33MW-z4ggZin2#$VyJ>D+}yT~+X1Wwq>hS{jm4^-7O313J;isgDB-9$%g2AVJh13f8G z@9JK2fRJ9hpvu+~csczI@<2_KY*GNnT*RG>{A@4rChn5yuJ-OOu1?XHH0i()Rrw^TbulLa}2u?aXn|&9dk@PNu|lf8S#Fvp{1hLy~A+_ zW$|o3%&EImK-W^L!0qYZsFNuFtfq8Wdp0>FsPOzYD3#Cak zic<|1u&H=8b|PeqV>B(`w1~R;Jm>Y5%Yedhh45`_4zchacxs zKTZ#hi^feSf-0F-?(KWLMm`(zPZ10V{GTG2-7Zkg|3C}_6dU}XqL}Y;{ZGU(Ga$YH zZK4NYLB0Pfs`sDbAt^fqfQLAVPucHSLGU7+-!{OsEl5vM3__Zz?en}Z=068Sez##q z!0)|3Lic$zUh>?wJd!4}M`A#->Xp8gqiseai1QNE@53&rw-mjuwuu^qM(Kbjw4j7- zM}l80N!h2ww&i8{(|tA9)|%3;F-Wo97reH3`|{$ry&+!#+}xvq3@fq!6u%%?Ser9! zw6stB7WUEBaYJ1eOjBa0WW1h*ZrdhK9si^zKpxR+cs+Y}W`)&80k0`jV>hpK3h=e4++~Q;if&j)CdHamnWjyCC zK7_+l=Dx35U!Vuy1-a9jt6>hZ=2LVq2I|-+YjEO)Y_HgK*l5?bIO{r>R&knSdS6m| z#^e3+va%hJ8VJ4w<@pNXZ$&n&{pG{k7_Y@l_q>`IoMps^{ZUSSKHhG}GA*C)byn|K zEM9yklfShYL!BGb(WXze9-_Y?oGO{m&@w3fERZDe8P1e;MPpV$M-m+@MKNH=IFlYn2XEummljt zID90xaLc+K{A#M(I{~oO;sZiXp95x$RWQHWgoVDFZn8>MeaG|mB)V^;R;Ty_#At=j z=40#j(>*aVPdR@>Mkft~7|V_tfaHSU6t5t8as|-`d)|?UtnM0XmFdB^96?=KlF6C1 z8ZdtF#@9`zfH&b;bVm}@dC@mt{2nA1wLhdMmvAxI6lZ>4%eD-r^v+$_Dl+oMcs_b^ zUH*BRnbKwe>WV=fM#`ftsx<7LwP)iKrNmGCDTlWTUTe#M^5SC7mx1I@8t`6Z03yr3 zBu8|Oe@>2&zmlUz%Ex~tN6F~iH^@DZ`Jy=iNiru+0VB`@jP@HUiTh{BvK{nO!{tFP zg)2+?&EwuRB|<7$QPr>WJQnIt$;_W&!g*lM?3Y~`BFn9#2t!!u9wb|kTkRC8I+qXX z?sj%kv{}#XsRw@!m~!cTrw>w&lwI7lVD_CIy=Z#l@@X$@laXXk-XKKc<~p;TNae%} z;k%%H<*C@2cmb=%v|Uh7t#I_HmzK8N&WeR+?ZZ!`VOtMPl-Kk6Cz4HS9p|Vx5IBI| z4<%goCLg!%^$ry`zJuOJ-Y_LNK7+Bu2f?wTc0KG(f;W$N)Tm$S*)%eZ-hRnfAIi}@ zETk2R_7I~H6-b@5ybv|SaZZd6=@@yW9AVu7=2TgsURtg=BELPBOLp;sH?4WBWvB4sAHWtcR1pj+Ppu+@xOfuxq__`K~=YymD z`8x<)Yb`|uELWEufIMBfk5qg(?kx9N&IbB4xEkDpj_h=#75Hj1LJ8>|s01XdTPXf( z?9#Yzi~r^EY7dnbomo*0#fO*~`}dM+apEzG7i)SJDp?OQ0+@duz()kA0tVaz=50Mp z_FpjS;m}*irrz~JNk^33F=uwjV!d7k^EWfxWEH3Q^;w#5^X=#7H=8=7VLgrf2Xr*| zJ389yOp%eAYnw^=3dHt-dM~E1`rz*{! zeTIxDnYd4J2-DK9OKl&VehX`d%x9Ms(mSA4KsQ?bMoe`V6t0QIOI*$Lj3a$E!dJ-g zwa+-FGKvgGSI#bU*sEI$oDA3uIQiPxuSbw^r-v3v7bl~E#TaW)LgGSi7yGk76e71h zlfUG}RVJIRI{(Zd<)Om{->mN>^t#Wx?P<+JW$l8T;u$+zd1*G&QEyPk;GYZGj^zhfifqjM#Gmp;d~BsIx#YgyT2nO^gl;P=>S4H;S9h5jTEW! zYVk?u2WBn}j|;Ppd}$qiam;;q-g?0;7684-85k*t+((FQM^^YpHlNH#M7B@*r-`XG zjrq7?MP0naj(K_Gt3R?k6??2jhy={O9+WlRJ8f~cJ9lmlK%E`v2r(I2^BprM9ID5h zgQ`Mst(zBd;JiHQ+W>b4hOhgBzF!+#D$_9Tn9K2HR&T5?Hfs5VFWx{uhC~a;7xkbS z?5HM$srx~&`Cx_1M4{mjFrq}SdQxiK>qrWs_F+p|zsKIUKHlP{Zr9=aH@}^%ztKJb z3hpgLY?BOWc~pS~?|117`3MwlvW7HHtb4GOW!vO_m?)Z=tzpK!q8jQgm0I>F{jg;E z3Y%kzliU$2h-b(EvQ{heZwRUIZwN^dKuGHVLYg)BBSMM}ufMhI)nU|*-iLPaegLU; z>&OMuCjhfY_aF**R~AZS&G`|Dm&Q;by(Q!;(1T8w6P89lL$-p?c8~&Xa0xvhr5fu} z$0G!pg2P{gyoVCZkr>_#hHnklW=w zZQJY-xPTT6lAqMN^t5*Y8JWXCAQiz-t2#RBU>}n76dU&{ah9 zQE@lXZeWltRe$v3Fje;lN80+8BgFz7Y1Xt>^1X_sm*L}NX9>RmloyJRmZiE8>3E!$ zO=Vd?J^&Oh;2kx!AdoVA@@Q3qYT)TjOb@BmKWFeeNt#oqz~o!Q|5aiINr|QCBh{-DQyTIk--`a0>xT)O2juH1%?RRZSbe zpgPK|NyUUIJTt+F#6>jkLPy%^k$t+6UQI-fnnX+)9)cAOK*`-1h{k27Za8TScAEV} zNf{4hXhh(*r{`d37PKd4B=k@#2=So%Ze(}1sbOZvP#c{;v*YMQ^#pP3F;Bwb2ksc)*7$`O|@vHfP z)m$zu-?A0qh%&YC!D@j{bNbs?FzA7mv8(+F+iCK-FdHkaShAyPK%SCPQ7UW-y+?}$ zSgEi~N+3VOnS)mD_M{hkwDOHsQ`BsNw6P9>))nJ-U{+PtQJ*I#cVaLq`?L6E5sU7M zDd%GDD$F2B3bnMz*8MABQJp>R!Yp0hQE3p4J2a zt9=LbA&r%Ol}2G#EA(A2wYH*ZMJj+wyntS_hx0`y@+^S6hN3dlvi8P`RbkUd?7K8v zEA}S?K z_4t%8hng|E@qWJo&%45;Yq_rVV|niXktuO2H&Db8{i_S%%ROMs6v?G-1ZeJPZV&U~ zS%gS8rYGA4OOZ9xLEtI~1wHY;S|)roMKe-K<#9im62FNa2&^#W`%`RF69T7hP(k@3{|+P(U_L@ zZC`BJQQJE$+{PcrPB^SBxYkxCi#r9nn@qDGIqt-EIVon_^HAM(lm&`Z`@0-{L`g`PheUnLdywXPZMVdC`=CyO$iO=SO!zo^roTVHM&O z=)#EnE-2dx6+Cr|6pMCN#|5TaNLBMRk~B+hJkQ z3jJ`%2QgkEqz591Y&Tb(6Cvlg67Z9`^G(5wox~tzq2J9a=r~Aq7hEDcAKYZ5aYjQB-4*A94q!9R$FLs^&B#mlCdH} z-4xn31VUb;U#WEspvXrd_iJMDPMxC&omqQ$puPq?GI~Det%GWf@m3d4yooP^Z)+f| zogw^@=@AY=7MwOuFR-i^SZbJC!O}G}O@~B=2otEID?7Bg#1qtG1;ENKtLmDOt)U8= zcW>Zp`U36GtBi4`CgsfI2G>%Yjov)v%&X4DY>?*2aEdR&bfFiYnvZZYo%{-6T@B$N z#I z_BXiX3-noMPt_*M)n+DZ>cJbA*UCi4mt^xsl)h!FNfxFUx zf-#+SemrPjK*{IKL3H<*yk6`ED|y?1q7eBtLqVMWn*WP~hvj?2w9Wns6Yf*pTtd;} z7j)`rVMcKf?1fcim2|f#W4kc4Ya<-GpNi+PC(u5Y)fS=1fp$5^l8L@0B>^|f;u}5I zy))M*oivRjRHGi`zAiycYj)G+2%=L|KClHDiTiNC!MsQ6W|@|R@5`&JIXs!hcx?5T zG8BC6!`t-D!5fnuHXoVn`y^!ropua}xOxBXxqIje>DbmoRDE)O84NAjDn4fm6Mhn+ zIqKVTZH}z*c5=-_!+?4>xPbP=|J;<4=1;oRdQlie|A2N0zA^(Wr=p9({H(<{MTYjT zC>!0X<8p|;VygaFz5c%XjmL_ozevQW1g&4bct-3iQ~(%K)Kywc^?=v)ZqUAwnk7>{YKwNZSVv&-T8r3_5h?!o?3zT}+N*DJV9ja2RbOjnqyrg7A0 zI-FjYW{qFO`<|9q5^6tmm+_2P{Jj7bIP~0?Y_)Fs;c*42TKXFVsn~gz?ZKCqxmi!* zi~MeB2*Z10sYdXn)X_IsXLym0%}E)`w{Krk9)4#`nV_xsk`=>=t?~n3x`mfqW6j4N zS0gZ+&JscEf^Hz^<9k=Bdc+7QKRHzLVB!hsbuLvA|zuAUK#yr*%= z5A_tKHrDJ`KI=I*{bi+0_~0qDgk(9unYgCLGG7!T=DG!xF;b-D8@9PO-+iDwqpjg` zSaFAjSzf}gI`Lk!&L-#g2=~O6+Pw2fgLp=)m}+GlE@DamkwkA#7JC4OE2b(tgW?tV z!R*A$_xGaf4##bF5jSz#?u-*MD0MW^I|^S|bDu*o_vE2BZ*EEWTE1IjRi9s+^b5s# z^L_RwrA_TXAEt1O=9nZd9cJtU;g}x09{kg^>3^H-F!wX&{k?O||4(-QM>*PjCp&~#eBEN{5wR(-Qj;Tc}M=uO=Z^;nZNHaNWW{Z{x&b zEJUiFHGl2}4VF=29MOHE_r=lVm}61DE$8@G$76bmpKhBNfZQ>kF{xR5>*{@bZ+=8d zbl-K0q#B5oqTQabu3vUz%;&VA83gdzR5v8QUD7PRAa-;=q?7o3cuadU#@VZ~r&7TP zl=!S@od3Ij!(SDVyMOKY&)Dgk(q!EtO%GJ3KAwcTf8GUc^0(}Q$~Tdp4691c3IeXE ztpBPa|MB{^!-@4VIl=7+z+{yWgSOof=IBfroPMA1nXA>ih0rtC0M;ip;NP za#OM7$^;FMR)15qPpys772(r1xYOA#0R6I+oAgrbpx~qcZ4zZ8xCWDV3ltE1|HWy( zq!fog_DvXqWo?9PZssPT40N!Wxz% z1}A^pb3tt7Ir8<<0eZdBF6e2@a4GHYpSqq3@QytEE$M&t5xo1?>S2HGF&9=y6lgpg zzPA!2X*|iBxUPCPkKaXFusgsytn<{XditvMi*s*S+YkE=jTU0kmfaJ$4=N&5g>u&! zCeQ^zIN}_x8M5yt9(5$zn^7bBjF*+M7Va~1P|I}+qPNU51+(Hu8WdvR>^n7O$)dG? zyVTSCj*lL9L+Q}iwQnElo?Obvibux>X%cdAOC<{^?)P$A&NGc^7WMdx_U|((2c~So z%O-KBZD$UNMJ5vSlDB;|%5!?p9=MYr;3&($|fjc?CJNLP#@&gbHNF_7?*F)3?=&}C{D zxQ&E5Nl2%LPkDo7tqTvn)Q^l1(}2kf5_ksU-%9sHCN(&%uLT5zpMm z(n0}qt-90rz0+S&oWRXI>9|4^VP~p$$F)jQID3)(RvPy5Yp!n}{g;#Ot8YNBhm1FF zcg6dY!mA0YZzBZ>03VipujtUGN5MX5O1S8U8f!TE1CR$sBD?JKAY-@B#|& zAXgfMRhh)ska8D5u1#eI3aG`_ipDgE6uYVS$2i3(o=r8!TLyYXD|h`8-N$r=Q91Ws ziRw8O+&NpMa!KQJ&&eys8S+JAwk{b%DAiAP=5aTLr!B1+Dpnnhj`wM@B%OOn8uEN% zCs`~RjS%%reJfC+6IwX|S1^1HUE=fiDOcN1lU-glZ5jx8B_{t6Lwu#x6R(EPKL`iPLhc_q@pX_PXFMs5LWF z>gF$(EiEUKe^Z143zK$1hqDxRuweRq*|Sw!iQkx}kyEU@pe-&tzWu|%aCPRlwExvd z7h)AgvY8LCM3vdw0lHt3hq?O zZQApuD%>_J-9%`G!WpB4A=R@Fa+08Ne%@!+_oVFLFJu=hb|3m% zGu>*ZTcb`*@N?=%Zamx69eTQA-zx1vpYlpSWPC*QH2o+_fR-DgfC+LT1F(al0T8tfIJ7&60NmzY%2 z4e^{~M8qx_MWlDq5B-v2S8`$Iv_jgY>P<+)&Qw;$HMgk3m9s%*8P=U|FM5D;>^8E4 zeRxxX2uG9{KhKyW%beal-w7`n(26}lY`yW$-#9k;K(MCuD5R=xZF)i5`ZC;Ufya!w zC4$Inf5w)zWBx(P`yAOZq(@@tFox_kXH8&!^3Zdi_>ly@`THkRdIIlGEzc1-Z?C9p znGGe-`%CtnmM`+5$RP@ML00!S&L@8w;>(n|?37&pdL;$we!NgW<6Fs>64GU|J#L5@ z@pjdMXrUNfxhJUEiRG5oW-x5aMs#ui?NzAnBNtW0M|{GgO%CQ|ZS6hDmdd^k>W$@tBXVNJF8@9M>@a%sT4<-FsJ^rx9f?}>n|i^dL^b>g1!=c+U$yAZ{`eL@IT;U z{g%avZ2hvpsZ~0hszDfv^1d;usy|-N-Md!2H0dxsaGYSRUFGiK`i$i-3&Zt&|RG+xp?PmnK#+wYhD&d53ncDbx22L zan`$8zS2@ZF`m)IF_n=+E460b4X0PFeJPxEHi9Gm$=C)`ITIqwu19ACSXc<$@(596 z-)5oS_Tx*gWP{px^k!wJJ0`AfCE$UGnBarBxT&J9QZC+{2YZ_fn$63^w18z~A!F2I z<}s?RV~G?jq$4l&n9S#Om*6|vo+>>?V&i-cGg&Ed)+wBPum`0$I@z4?99Y9wVh`DT zkDS{_=PQWM8#2u`smU={P155TYPo9T6t7j^X7Ne3AB{aW1zDc|o{aZFx5m5WA@Ftw zGMxW_)6~gOM;Dxd#f!6`-gP5-*u)ufiGu_U0VWLsf^XEYx16)eByLxh&xQt@U*9kj zm+Ze|VPJ9OH_wMgk3YxKp)%+O~#B-JEi+e8JzR)eF z(*9g2{WNbq?~PcwGv2(|(KyRdJ6Y!YDT#J==K%}EultOB-)ro*$grOI_ZFL>QOF{X z3*a&(0k}*VxL;O2lNWRBx3vG&M~45y2AqP@_{Nq`kT26iOFdPv|3y33AIvisM|(af zjhMSTfytjrzW&vk?O$x2c^zcyN@{FQ#x2$}j8nECWj?Cw8s(|pC3aZ>WQo-46XxGO z%l4zFnlIm-=Gd32sdepDFZMOnbL>d|ftWzUPq+FnQ(|0xw{ZMxvxQ~2)3ED3?ovB@ zlK>ylQV9iFW-yLymE|C9*?g^*v_8ENr?7-Tod-5=h;$mY#`7de4eWQmWAO>{;`zH# z4dam;@lK9WAh51^Ud;Utz#9vAwf~aH`4?MC{<~3o#@)Zx7VzIs-oJLT_}@?7KRZ!q zb*7aGkRrXq-auSM=Lng>t#cw~47E3>jwIs+t4g(`O+p^)ig5uCH#JY7wT%pq=qpKqOh%DG}0L;od6@B4lFt(-yj zg!Imhct`0J{4CJi$@Of8vRLXog7PiblGEg{gY9BFOx+yXY<` zC+u!o2DYX#_j0o-Ec#l4+3_~k6YwR2d#e0Q$jXMf`Rl=G8k%*P;K=_ql6QIree zp;P(MY`>eQm|ZD0;muE2`cu$?`%kWRBh?SmC&2_u_QdGk`7Rx)W~6YmFi%0en#mVx zSJc~q+$#L*IDX0p8O9xtJah(1IAkK1Uz)=HMDfCVC+t=(sdtM zJuZjZk0AlP#eJV;@tn~R!bNZ#w9314h>@xVJfpB&dva6BC)`DJ{kWaF9M+?J{d&0F z>>Gv0lgVs<{>nZerxG>W&@5DN0B$a7=cRii-vj-Ws~RTq!fsqoxjIl1+;7ya z)Ppow;a+mUo0M1e0}??N5Ls_X3A^*Lv$4zCZl_n!-KWdx<*&wzFR zPF?zsD$rF_JQapbjMU*7r{2bCjug3PsvHe$dT=QDo5g(wc#>?>FGg(7r~24;LCi;J zv9>XsQTY;6=O)fj2Mc8w*M(&lnjmDE^fg$p#!M$soZ0o0%d2s5X!rA4D{wTbL<@{V zvIOalh!dqleVeqArjM~+H{DF5>OlJ}UmNdN?tjAd{vr!dLZIIGzKP5O+khUIbUa2Y z!0T{=nZJn%O{k_0$h+*rb)RA9<3H7m`7+92!rqa0 zV7s7$Fy-K!&hvF?pBEfTXRj(g^M}7=KO`d!;tpg3jpelhm?JXb``(pX7Ab&;cZ+sG z;ugTVdr=zT<@YIHn$GssoUZ?rv#uBwg~Z~}6-XK{;GWm+_yVA5sT*jPRvoG&`CH*< zVRVOC5NtB@@&NNdEG)}g-pHZ9z9B~Zm(#DAF0#D(o9>F(?%jx;L^8B;AtDzhpB46% z%#ec*`_;tg^7JjgHv)COx~AwnbYYxfO~v{(y3z>m_B>=#gC$B8FVR^=4!Fbq7@i?r zZ~G?Vvb-RlRnN(oozFiul={^wUk>YWlphXa#A-u(W{=gM%G3#m$$fm^F06Ox;4%Me zQ9@ZDF_0vQmtk}S%7p9$TnwDNcSNNDiLL-P)7M-7Y~H?=ED5 zqYxQMxvonbnD>rer&?es4hE{Gz6}Bv&9~n>JKAvFd5LAK%6rJlRT;O=0#O7`7+)04G(gA<`*;H;p2x!0vX`M8_4t!6~17jH3U+ za}v7Gw@)?Tj!J~-D^fcDtle81L){z|j^y|;^uJrpWh@Ro2~eM@b~`;J2pQTBj9Tx;Avb+#rC*_J z!39nY_F*F-AL_hQZk)hEYXVr-`D~RJzrDoDmrE+%5oq(pK6ZUl=W8=x!a z&X4H~k%nqFHaBLym60iXm6vc{V`Hb68MmuQwY0Ko?`cf~!g^IH*$>wxyC4#cACX%& z-fzfcEt!7ht^Y-qFD*C+9#RD@MMatr8IxB}kk7^ydo3i(h`p|%9_N$iHj#^M9hL&^ zy?$>_;qKR6&;w*uI+a%s+nPx~LO%KQv#=B@x(r_wfLEwqR8xd2Fz7gU-|Gqs?R7MS zJ)zYjZ<_ItY8nZ?J@MG4L{3ijf}Q&MdK2ngtsv`6g|$df%9F2y!5;{9bhh?+JW$re z&K`1b$QQerl^xqBP<`G?aor{O=9l}1w=+Ssa554cb%OwoSRmf^DKE@&ZH#=}KSZiv z+gHcepR(lD$HG#B)R^O;%YB0GLC+V79U+%3*qdhI)pRG020W`~b-S&Tu_)gzAx;?G z^GoOd!`^#FH5IPiqCt>eq&Fc-R|KR9A|xnE5fLni6p4sPjfhB-kRS+1Zwdm^n>0fQ zDG40`k=|Hg?k8#hpf1GjtQLJ0l>JG-k%jmtWPjc^aoPX^k)#aK>z`R~QgP|qKsw_jkB zQB$tCzp(@u5ko+?2l%40eIsT%1zt|}MCV!FxSdNL!iWX5WO2=(fF@5s%PJIKYDSav za$m~(>GC=Ot-`BzC`WQpO0)JXi!N<5;`jxY5w)0vI#UxHvLLMOMOGwDrdg*IIi@l{ z#-|p1zGHDO>+karAKrCl^jv_&!;yU*#Xak>LThU=h_IrfjAuxU+{ea7@GUc=EUtD_ zk~|STH{8**qOv%0Wl2F6W#kETc+^R3+(iwMkd&bjrbp1Gb?MxP<@ zR2V1UQ&!Mn8dnVX^nodV<|*e4?ZIypL)nB0vWmj(sU74HCr--t#*gRoY1Xf|f3*Hs z92bm*I>Q2C>|UN(zI)vb`mx1|8q`9vZ3_LCuuc7p9T1~|6gJ=9ZEl{lS zu+Bq>%J|ls=E;@@Y-4>*bf}?OufuG9%%JWi)*$%+pOo2FaPQ@1_ugb1D^I`AveF1Te?J!Vo;ki1>ln>Bh7|9Wek-ey&`;|;D z{$733uWsckxSMB9c|b`O`nPqf28mcWRL)+U^{oo~#Y)`RDRg~AAC=HGB9`q$Vb{j@kCk>d#>fskU(m8j` zQYiIV8sWUXC!o0~LkmBhpf#Nm{DVbwn^Ghcf8Rao7@&6{rAQIhV!TF^6Unz5JF7ia zg)X^0v#-(Tk1=JX^O@b=3y35H(^xnbOJEH18_?6*CMCv8#&TAV%hY}9QrWt$XI`)s zda8VF|IxK%O$NFo5V(4{@2qmu$YsOj(<$LCpw~u_pr*REOfe*@@1A9BJBFD+3|``R zWbSBe%yD;m!~3D|3+_%yW!9^*XIUx5z>9f|9JRejkY3FtUq#$(PC9;aap>E=(ci}@ zxuJ8PWGbI6s4}pNpYt>4{65X6)G4kxvOom92!et;i)V_e2j6VJ*3sw4WurzHuiOdW zkc_Z=cAO7FnW?YR)JWa#d5`kLvQ2lHT6--*a9G7qUOaCm7BdJ$iJXwOsSuip7!v zg}0ArLb4;@e?t1J6s{riQ685!V)AulErva<-DA}+Z7ET6*W#se)R(m=XC&L&-`M0#JGmQ^-p)dlFDTQ8{15!s9PKhC_MrLB&BvvLL$ARGKBqJyz5i zEOr8N?IW9px~2A_C*O!#!ts56-eLBBZk%WRDuu?vII6inwVnfy41{aj;h;=TJfxD& z>HduHoEAwH+xY>p=1RX(ZVlt}4@FY~Z8D5NuU#_+X-Wt=f<{;km!Pjt*V`+F+3O0m zyR;dzx}@=`K#uSN1Gz8;@aGt2bS!i+$I8(20Qm)(#hNy#>Wgh3 zAw9v!8wF^oal3pyH2!+Q?y5DHcFrs#N7IMkQ1-i`GW9?|rag`22#1>TSz^!RR*Mz1 zb)BeMPjnt`*QtKhfmoM_`;lgu;_=&_q0YAENCTfqyPx6(BqoPI01z+-LK$FGNx_Sz zVOnll-5p?V=XsIx`j6Mey7ImF^GuZ=*@-m$EPh;E(Q>s#w#HG9V2|_a4u&l$U?ca# z5%R)Mr;A~_-oXBklhPaOaPb3 z%{}a`ci6HicRy|?1VZ<{A!u0iGW%h}rx9w7_w?^L6{%v3>jk=3AM#R!K*&X3cVZeT%nceq=$ROOFW zZf?fa7xpb6_5|Nk*mUd+n8s33Kw%)cdI1lS`2nq-E^nA1J?eJA|6$;)s#Zsp!6kW- zatjCce7e@TFQ??UQ6!nPJe^ z=3$kvAgqIedz*-3uzG;rqu7o|hn{!5=vn08^Xg_94?XZcU)IzQ0kt0>-(*-JS)g#S zA<$~64C(P?E0#P`;B6BDIj_0R^?6xBkg?QZdF@o` zKIwzLaz=^N-`gcI4<(m5s$)L`*cnMWCYm6MTTLNIE*E}Kzs45J-BwrI;Qe{%)+Mt$ z8eNCHrhHR=e4&$P;0z9t4!TU+vVjmqKsK$&U45b*#lM~*WsLC4>DstDe`$Y@+vxcK zyu~70_2LDe^XB?S+Mv@Y^@SRXt@vfrN#hQ2G13^`y3=R)&+6V5-WJk}WQ{u7XB8Q_=TK1IGo%91d4-Q2Xy#=hfxBs%kK=nm7X(!OT8 z9_GFbCwdG%tZOG2cE-y-3rOJJ3Vx_j7QF+1vweGd1Es*sPP4hM3TKG=^7J{-w2CFZ zqoz^}JOc2p=A_8Hbkh!JnV9kMy7(Sw%G&}i1xuftUgJf^KeOD^*yNq5+U}*b4>SoQ z{NZ9YHz~4fTu|hiNmJ*FW$%6K6zxHSq#Vr;-tA%`K|#M=i556h3XgUBJRLzcl;T=S zx!EwP9?P|H#VRglzV&>qV|9wm?hik)AJQI;k`wMOpluXx2wDZEGByFA+`DlUB?K0O ztvzgkF(Q9KMHg`0?-bo%R@aQc6%RLf3@*(-|9!|Y)XlSfq|Z1@o;WCh{j8(#d(!SU zn3Cz%7k*iRsGP&t#ROE9&fjE5zbjQs@1*eElFx`E!VV0}RIWnxeQX=_J+x|JOCA?+ zqX%J64KMIbB}l1~5&``HZGyh8;g|e|%w#FFEcW(sUHif=Xau!64W@!DR?rjyC7Kb_ zJLuLmSz1DmF1XZIh+q+_4bPq-rL{IR7c}PCy6?JQax_l!L)0l_dh9Qi)r=OkE(UQ) zvcb=^A82iv1jD5lCU(Ek`s^&3@9N{ zw*kGOyUFIms8(In$^b+fHIZINOS-NLHt>~Qa&M0fH=DCTTqE2~Uh*xqypP-O`{6Di z@alHh<*L({=vs7MxypAzMKGL{Yhw@e2!}Cmpd1@29aZ_Y`Cn(O?hIC`l)jVpdX`rL z@(8*vREfl-5m=51nsV;{t2kUsvD3L+L5C_T<*q-BF|71 zt81D`Vaps!x-mx#No^Y&YJP)&bB$5@U(5zG8UWJZ17f~b}Qf>Ab8F@f^y6x$*e_Tc-KX~0HdE!-eB`9@@$l%*9XV* zpNzm45YN2;Md4o5V$6L5L146adRw{GuU&az9|(FEE|n2z@h5s>+ns!Q%4K0P8OqnB zRrfT`<7>-M5fg)2cGT10Q2|D5`oJW)1tpAiGS+b?!ttD?7%_ZIk%s_!N#~|y#Ti}9 z9kcRBu*=t!Yj`=;ve*QFlZSTbDEUs0({5EAb=Yu-Tf08-y{6d2)y zzqUL{O{4fr4gRs(-amexB*+0!6}KIPa;l%Mxu-}R-7S9A`KbX7En2{vaZTGlpr+B- zA~RVGD}3uZAJk?R{J2q3OUE|whW{P=Gn{ffd5i#Y?7az^*b}leYEa`5aL9bj#KBTvJla>u^rUOV z;9(>uz=WFKiBv;Z2LwMHRioav%#R^ju$=XNm6KWR2k!_xTcH^%{c65~Yz16y*knYw z{dakBV5{}?=v(iCuHGk)9(YUOi4ZogUb$`AD2$rnCZP?bpUbj?U4THegmcmdUQGj zgy_M05(TO6FxtKsC%Q8^(jJb!*^EuPsg+pPS=!=|T_4NPEwL8oE6JW$#6YdVGZF8Q zpk%dqSBnL9Pjo1=UeA#DUY=@f zK6>5~>aEz8pjG&p+XucriS$FY+PraRTF+!_Vv`Nsa#N5Fc=2>~SS~(-nqF@X$1 z4c&pon?8XObMY2!nc;%An#t|4Oz#jnh13+ag9ZjY7paA&0WeHeXr@bRPZunOYBj^+ zbg7NF0g4=&q<_WlEqVsfr4c0ysHVYW2gqO)whBdlyaOx5vKCT9$}r--khKSixDKl( zt4A4oP2C38pT0jn^ZoULW*o#wc6Dwdm2#I_gSC%@PKmFz2@o?bCIZJE{-g9B5AoSZ z4_P>n{h6iD%f04`n4{%wuG7GBJzpIwK)QB=@PJ~LF;$bsW<7Fdn7`x2l62yWof`J- zxu`|Q;XtTIwF2q}K|j$Q?dy2Ic5J_|{Eo&WPw5VxkY{;$@kx)`PjPaY-9o8jg^^tC zgdG~I=@ROFvPiB|1u6JJJjYU-tg@eo&$No9Vp`SjZF0NtfSbi%z?Fm1d7;v0YmO`Q z@5{dk6MG;!Fu^t^S^K|XWLA30HEtk&MU6+O@{zv!0t!{5{i%WAQ}t8e-Xwt-W-D;$!@)yVKNV{MuFkph{R9nMZj++OcyeAtkqEh>j@KSZ_{=EStobNc5lg z{}^%Wo+P(W`|Z+hmu>TxS>TV*DnR-)mIpbE!rwaqF#$rPjL8D=enmD$ay51H_vQT+ zRABO#)-K)g2(k|BSOGEf@4)^Ei5}x3$(o1e61s_(vu}@tT+o`$)xFw%1BUx65?GvtR9|45=6Nx1}JM*FGNIaVDvV`Y`3+;u3(RdXkX?qY;WH@&Q= zKFbf#@x=(rZ|eIK&`U8_VsSGNk89iG$Z%1s!R(lA>2ha|>hWD@(!g_N8zQ>8k8TlA@rR@>{)e0(&{I|l7}!~_p?Y2r zx~YMHn9}W~EG__43aaY!lifCPOV;D=#BH7qo`+t+#nK>F*xUhD>q#qLYyIlsKx;X- zvSCmztHk3`8PKw*2P{4l{|GuYU`xmd%cl6@LlR*oxHO;gamjGD-b-vLc3fZpPMHH~ajHGxEI&#US*@ z^A(NWkH3P*xkP+j`FCnOM5en4^z4cH6Cd{2D_57C8V>hPEze_hpo>un^P=vNuP&c} zZdwdZndZH>4eefJM6vFf&P))2Ei$$n$|wsQZpw4>&RU;3R9vjy4^~56&eSJ}`kr^6 zKjXl<^|SbOw(hw^SPmF}*L`ZulEi|SGF@hS;JAbmn&r6rm+5}x%=L2Vnx??TF!R~1 zJO?ZN2S2j7exQShgHM31K12Q^j|6GWHjaMe&Fi@a@Ykozhy2v56MM3FDD8fv5;bOC z0w8zp$RE39ajhEASmQoq)*OtS17VW$tGH*kC1vp-i%l4XkLdaXYd^r3|CKshmufWt zkV0uwqFfY&0@4`OdLMv(b`+so`~@f(^dCuLFv-*vC}(#^BKc>3#9^AB56$$Qla^?V z3Ww)Cy*iyJq1>&>7zoW6m;_V+Nf6NZOX%~p2q*`ppa=2Ti5$J#&JEo?!)W8@_IYO4 ztNU8X=721XP3HupgQGMl1E=UjAGV@5j^aU>;|rHxg!{vDVY3noH^S4>*e2=B z(^>`e|=67X8 zdDW6H*G-;r=Bm8&p?lJdsc!+W)QYqt15(B>M;$G_z|4PC zr)`+7Dt&b>hG$yqdFCO z>i!2%Kmod+%oR-odhS}>1(5wJGip~v=D)jsolSmS#x{MyD9fp$C&6&>nGZ+7rKf*^ zQo$W?`A(Y>37892&|r$X7gJ*K1`yg$Pk)f)AeK;!Yq}3}qVf!=y`UNEgfqyy-j8m7f&P6VQ`4nbfP+7QZs_29F03B7~pW z`oxJbqrW$%J9H^3u79wk3t^O$%ox<>Hz1KOly^B=pfPWsfTUnu!2Mt5qDqAZLTyWq z5=p>tT)5K!zystC@G;~swxE~xoW^?s>V2Sy-9i$WXt9l1T!XQsOJGXc0&o^>IR~GB z4Bh3&faCDW;C1qOC!V%<;>%{ED{(QUZMZnzof_R^*4@nibio8r`vclg9p^<(K6{>ZH|CRE4G(R=|P)hD;PowXXLLFU(K!hr=l{=>H z!lqNF6hkE<+iTgFsGh1ez^>8VXE9tWfWli|^JjCqB=Zh#A1!b$w_S)kgiiP9?K6OR zB`>?RhW72gIY`s-z0rd%!1p&!x^j1f{1!O>vFBJHWt`NEZmOMWq%P4@q`u zKA}NB8&c&H0Oy%)^-S}FD=h!o^pm=`*EP$VL2BjSbKK?!p4|>l%jC!iBP&mH_}ou0 zSKSav&nt3~Tw%@*tbU*!HF@+|jy_N*GkHI3@k#|DvIE8d5E!@-KGn4&2K)^c z%B$I2+17f(hcfh5-RQpXuqI9GKOAIQT%hoHtD&Zgrbc|#mguGcVXlIt$*^~CeOKY!0tzY_dJcipj0y$$3wz+75@_WfN)-wEz6`^};Lh!>I zdGGIutqplvpL%ot+PxSuV)zDHV}5R6Kc&apA`_@1N@FR$PK~6{#q^h;)`vG5Oi6O0 z7iry@JdtOZCbz>N1-l^mJy9YZ6+;t7@R6Pa5idb565+}Yl zepR>c{0sKt>m0#Bx!wcYX!6T-a5bu}-xCLG;kZbCFj%@A{D2@{=D{_!6w^Ds1XbWZ zyL0r7U8)MMeVTPjT33huU%&G*$R>kiI>39O=R{$!8TqY%@umg3x3}m?LUDKEirr+I_q1 z36UozV3VMe!OIg-D2IMib5fOOw#_DtqsC})sHWY;;%DfZtBI>b=sCX#?Uw9_+)#&E zpqy6LoX`nek7WiFK5}uTcd!q;);u(18G(c5zR_Msg zx{Y_Abj4-HKwZGoLzpY123|-?_J;eC*du)Q8TBJig_@>-I={xpGRVh+WXA(08mj|Y zYco@n#%>89%}H?7679sVg}Qb3ZssO=R9-!GaGo{r@jCz?rgeK01r{m? z+UoZQ84TLTIcM~l(xk5cUZ4G84LMlH3Mp(U(s)SI6Xu{PlN=W#O}kIZ>ecUdx!~W? zom`VZOeMDH{yvj)o5qgtAe%>LeAop#WL@IgCYa-Huj&UaY3|9%ZOsUqR~9<6RSW!u zx&d$Tf@!;w0Ois+QUJk}v1ZXo(B^XVD>ibME^88a9bF~mtd)nBD*E`F-~4f$@l!LV zAYjdae>cIVZ&ZT3)IkChr~YMX15e(g$S%)fD3iMhod6LYz@ z*Y{j-5Ep~R$^eBYlju2t5haOQkvf;J$yAIYoZ{LGudDE->RjQm>1{37t$!_ied9x^ zrX8%Tnr;`>vM`BVG~EJ3Wz!wIFw8?gQ-76ssKpIjxn29! zvlgvT`~&Qitohh;*t93^$(PLOw=NeZa5X?SOm9hy7mj2U`$0x`TTLt4Q`QAa#Ur{H}toJ#Dpyn!3{oHT)fm2)M5dQ zlX4yJf4`oz`BgD-X@|)&EYnGNJl94-r}z~|dj*@64SVM0XFBt+wZq_jrEq||44%$` z@%hHg8*?!`M+?qq*UBhp7)AHQ3}5B4T)XzY%ebniT4Eclej*S<)&j6~9-nHi6|8cUlLvFkrVRemwuqCbV%q=uY;+);G20i-CH5pu!Tg3N0g zv0({*TplvLyv;f3`Bk^$$5#Ce24Zghpm!M{MrSU=fYY3lg2MMM%FG>*p3Izg1qZE`>?mqZaj;A zAJxbgu9cxWjLq4Qqd&@{<^YbG3%n2xC#^?iiySw|OYmRWuLn(B3!Ex*XY{{5zD=_k zNzaRJdN=Tv_720~{5B>W55=uUmRcJ*pzLsSGV@C;AM?ul`M($v8ouy5JiX2or!PO| zlm+nBN%BCWfjDW+jAS#dRGVx4O(#maNB^N$dy{!3*Q%i*ENHTWy zw8xjUCRvm>H+Nzp3k{@RUobE*c50Wu(8|Ca#C2{WYe<)WM?nF-EnCqX{-W-?evILy z!;`aiA7gKDa`>Hq0%=@`3nUmQ7`O2L4VE+TN^)g&gs=^&PU71kWUFH$51`V9L+fPQ z7Q!*|)CMF!sj7{}J+2B2ZyJ^mWB@J&RqZ26#>F$z60_F$JT+V@piKc z(!FdBg&IeL#tfsp`ueoKU!BgNTcxWLBTE`%XL~m#bEG?lrJhzQ&6;ZpoqcXG^wI3Jj)7_QST#9a z$tkE&B?=%09jq|i+!}|~)keKjHRu}?Tn<*R6W9uUF2|M*tnhf6_ zC+UUF)UNtHMD%j%GA;1$tMh@PiZ|}HIM@NRCm6;@IswsG*2pr58)Gu#I~2ZDlkL`@ zvH7M7QEsMJcO~pVvfsIb{3oXO&6s)t&zEO_Met&6nc#;e-o+oBRWDnYFqj1Eb)46q zA>pZU8Ss4cL-NGfLts*=I00OuEgTLTA-k*}i33-Wek|Cy$N(Vb;STMSw@trn!XYF0 z^N$6^{#A`(<^)V3D ziI=8tk6!}zKkbmqw0;;pP3M*nsStPV$+OkdEc}xT?tUVt3~zmZm+&Mo!COE+!FLsd z7(^|m0I3Zz45_q&e}9}N8D_YnE?O6ExWW-B!6-gZFMe=X!$+5x?IZ#Y*-wMhw_62Z zJ{4G=i(#{VoWLw`opJ#Hi*y3fTBH!d<|4N3E82RAEBZ~kz_Mv%f6}=BkC4^j#*fnF z_NrB!=H@IqA#dl9-n795{M}d}BdmsXMq(o}WC*rJ1t$Kdn|Q3I4HyS&|45#;z4eTR z{!4H_2&qcp$4ek5QMJwe+o6d>caDwY?S&8OLN}u0oFiX3K2JQ$m@LmNNm?1WO)Cxr zJ+%l#0x(FGMjLFZq-MC=en!RJ-U*MNh`aiTv1wwldus%5O7u^(NX9XR zLCZy-oM9Uw_BEo_tlf99%Nx$#+k4=@%U9Plg$}L$4=1KzQVPBg=7MBdE9j}3N?;hZ?@_n%ME1cSxKRKtcb(vbQIstFX z?E-sMS6n@kvI{a?)BM4Y#$$1?Kn%MtWTpl10l{tsF!ujWkavf;Mx#}eJy&hC6V6u1 zCTVVWzUAkm>m@C>LWD@MIE4o-^Qx7!p}~W%Ce3r$6e-B_JJ;ngG6uHk=I_v&BxSM& zMUa{?VPX1ST#VKtLI?!t!})V_egzXh|F4mR{huQ#B1fM_a1W-)FZVNUw#};#D|q!w z?88&XccoJWyU%@krGI^e`^P`Fk-98o3$zjz(ge%*U2C6b6wty%`kX$UwEVp` z&X_O5+J^7ilk3y^BQe+ci9mz(xVe|yqDpxyQ`~iQ1i~N4?FiHa+PRHHSD$%S6B**- zs{ZgdnTn{4@4%vG1{OWQUaytQ;!48sAv-gx3|a%Ml(>CGTOX~L>cuJ&cP-I{(P4y} zFKusyW2gVI=tu8&CF&ClRbp7S^*0cIwUTSam{B>O~mOCZt?^_06s;PTYaijQy%3XeaP|sTarNMSj_M}7Z(u&*p zVrLm2JrX(>+{)m^ufRu#&y2t>rlBg8A`ZT*Pidc*Nxn3IF?>Vr*)E&Rs1LEppAoIlh|c+% z#l=rjCu<|bsF`qeW3KlQFs(J%(l@^mRx|g+FP7OsFRjQyKCl~j&#T{2k=RPvEdpVo z15fH(ssnJ8I`v5Zhm}UOg#dV@@7&76DY&-bt6}9Ho4uYE{{2sUbXLEH=i7$aL~rgc z*4~Oy@40r5k?;A+7rOcH&<|Kn;Ha~2O$DNg4r_&%_~YXnii?u_r29vO_fefynh7POKz-8fD(s;4h+ z8PM@VvjAXFkRz>IL#vKhNI741^L@hj(1uSRozz-kdJ~t!Q>OfY&0CG%e(paK=Q0g8A6m@o{jByzyoQ-+D7j;bU)t%2xGf%a~ zM-`rbud4k1vUce1F4qnDtqtJZ_wOwCOcqAHQd(KKsJj_pf*6h5TC= zEj8?4F=>7ajR4VHDJD2D=|bW5tuhw~55c^)UXARU0)P1|t#7D0@Y(Cwk)DX(e8E8& zXUX_46BAfE=wbro41T+_?gIp}8Qd|UjQf>X=pNK@d0U}%My+J4MDV+01T`@yP+408 zhvxFVcC#8k5u!E|05&Q&Rh%CmmJSt4{>Fa>bamwzkfYdL*ybRgK`>Ku1>mL~srQBu zCg+a4(pB9w?zDKUMG38)r6YG=iEwYNS+yLF2+KZ++4DcC7x=cmU#^@yJ{_LtD?MX3H?N!i`@?@jN!U|vWFwR zt&(xsPzm=QH&w@%!>H?j{^f>suK!|H#{a%anSKS#jhtPm$_zoO%eHL0ceuKj(ET1j z=+gRY8)rc^smtCxupOQ&=Z~JWI~Ytv^lpeTJJ`h;0P#!;wl)@E6Scv_+;(W^5sGzT z*GZw-`Cc}+oJ%gRlrI0x+oq_pKPSjsXV1{X?MxLCHxr2v{7(C}MmMh$M80-BtEsk5 zBx+nk%R4G*f;;W1yF#Se_fN}S?|<8aIA%}la!p;NjMo7RBWM6lw!TGHCN;LSw-1Tk z+s`fPL#?SL7`~q}j632EF-~|klPtwTw;e&rrDpHLW;}`Z!3L;slyHr`$2Ya0>GAH4 zzZpC$Gu#Gi=|vc z>%6^<#F))WGa(PT2k{_i!EO1Y?naUV+3PXlW(CREhkTuZ5R=Q7cs>6F)aFnmnq)ZP z*Bj`a@ZI52yGrOq=KBVJ7Pju;Rf*N4djOoz?SiT{h;}6CCkH%@o4R$S#;54RH-_w# zHk(%|Hqq@FqjW@6CpHSk1!43xB&{tW3*JQYnTpkAl$*RlOnFv#>&8&FwU_Ce5zRp0 ztw4=J{qau(&=M^GPLZ@IM-H1I`)wuhHHCoyn*wfcTt0MgA!MwkHn&*p@_;n@bncr} zL3qZ~9~`lt9cxgK%xVoFB6lbQ6RYqR?=jqS&fU0Av#BaBRWlovPp0W~mKBzDW(Fkn z1jFv4oSRWzUrFQ$Tw4Hz4^Q46?IOa9V8tRIkjwKq8 z(M0Dcas(n~x*%=2S;jb0lq$phb>>2h-}wmN-{BF0L93@cGKzwMcG*erDWobO-2}WX zs_0VedmjVmVo4VGT(GgLhw#iL9(z)J7*lkw9w#$8HX*&T`9tI%-9GB9ace+YMZPvAJ zUa2yKR%b_ldhQp~5iLu{k0G=bU3+yM2er$L2JlA=AHrnMk=z3CFb9)w(A6 z_YvJ|Y_8hCpQe3$dsMcr3m&cEkH*dUm=X-a_6K;KrBk~tYC?BUZPr9tFiYJqu&)U< zaGCm-x0wIG`WgQ=os6%mDj&YI@aIo^he};=^GKjO=ZI#^%L#;n)Uh)f#5!sc${GF) zI<44KqeE}~`PzCMfc-~I70sMI)-DUYqGZ;s_*#Zd_9wP&&8o)HJN9E! z2^ZA5qhF7d#_onpU*1@dS7M4|&doxAsOer@Q*!`}VHNNVjh|i>T0vFL2?|EDM?$AX zHs;1M^b^!yc-f86vw}e2Uq7K@6k);|@e5cO>r#>yg6}V3NxWV0el|2{t_oh*#bQ?R zJn2*TX&N%>2wd_OP2oQzzO97G>fzDhO5W^>q)Xe&E$hL=WPqO(7=a&{4AcJyIn8-M za1$dGOGH)RSKjhR*!t~mT1;ohXP8HwHzL{>UF`w9(cQ^X2or$fsDW@FgK%5Yeqn?F zP7Kk!?04@%!}YJ%M6c#X(#cfcZ>(E8PwKjw#ntCN4PEXIM#>;wnno`$y}7n?YGb%h z?01ib+}3o|9pRTtyJLttw^Pfqmo&WWGymigFH*m{L4j7t_vM?({e0pIgS}R+-W8NA zlh_2DVD*Eqmzsl_uBU&8YPFN^Aaq8dF6jnDc`$QzT7c;N)HTEJ*wDvImgih$)A!(F z#rXCM@05gp`CE(t>6g-$KfaJ?T|1hOH~c=To({X<^>rSyo(k0GL+;(kk?T`5rx#hp9YA|?|IKcwa!lb>bQ^~;(G0JR zt$Pjy>c#4CeH2$@J$$t}K3gO0QH$;DCwZYLzVo9F*F00H3sis(={SjUS_qCO-QDRR zkn~6NMtQC4F-eni67A0LS23(C5-lB#kuMjO?)uUYsOPa$Oy<;5g!vL&QlD^UPz}q` zdUgP%kW#Ory~`J*dgjxWEyMH3yZtpFq>fn!Zqm!iQPri8nq@ABuZ=Y)WSeaiTQ zl;xGbWXmp(sKw=B%ow#E`vM!0SsfNekOGYgq&M{IA*$Vj+ zEP#E{7t5|kc+fGPA?bcbVcAO5IxQ_$%IfpYG|b3Ze;>b+=Zantgnp?m@X?Xiv;L&|gjVZZYfsgFAC7Zm<=b{BYdG7MjB^c>!KKl1r?)*DNdFX-q1dX+h;7B`znp$1JQKRNKvFjh@uizvzK=cDIX!(Kk})G+Ok|*N5JIS8$-Ajp{LL_(O`3e_6puK-3|GJ4muyC z`3l<9E#?PccIa_+t{Fk%{xF7}jPl)Kc! z%boZ3$w!lo$Fs)gC|3&CYyolsLl01Q9wS&#gAOvOmx8d5pijYpK3EXSF40euPRmk5|DyJX56DA~%cjgO z;!;?=S4^D)q&c6#wOL0|QsdR7ua%NU%-6;&h0YkZGL@lpkQWKvp%4L7>mzlrsPFC` zS^n0DSD|ZKn7$p4jWfpTDl;2g=2j1VpyzOd5;JM1J@YJTu{6~unnLG8&Ci~-rFVb* z^+%;ap;N(yvrMcr#vPMV>_LF{*_J8kBG)$55kG><%cO78xQyZ@txlFrJ?Jk;_<3I+ zx^2Vn^bzIxQ>NAqWRn~31;;@)cLt<{S+lrW_EVlcQlmU0u=Sz zs8yK3;((suPJBi(C7`<@?4)J$CyUILzXNkuyX5F2sHIrD0bW`! zL}-v=QbzhV0gJV6@>h$QXF0F@F{-CN`2~YVl*KHT7xfYwg{=w$)Kp0HEw)0#HPKg4 zbiS{th0Q@5mN%=c-5loF3Eu`K892VL>;dfR2_Tt&vbODjd&1N%2w{(Hm(*+aZ@mah zt2*!d)8G5E#7xxMRp@OR(ChDLdZaNB3MI<_!5-^zfKZngYD~9bK$CV(X8Qw*{$Mqg zyGgUo)$Nj9{RczEpSKQ=cKgyX_m^L4eOZe*PHtPkKU|oGwu=i5YpWOfN?y+xF{-Mo z4mGI8DiT^nx=K4=>Pm$$EYkgvpF}NIp>}ylKw;db21{k_#oE(2fJ*s!Jd_$(JwTO? z3DjJeid;(mKvScz;tM+fA%e-)f{o*?2Tep`kA$9Z#OmXR7khs#UkvyT9uT=>{dOQf2wbz4${LBzLn87z)9b9|=6q(=#Qr!wVk zPoDcxECiH6R*Ok!q8&+n85Y$b*zL~kWaPD!ev0?3qQ^?_#`PfQ<77ok#ATQ3dU&fYB(YcEaUQZ#T7c3?W^F^%~G zz~NBR4w)S|d8;+TQ8-mXSBjT2y2+VuqQR@RF5ykoX;byvO>XA;gEJcN7OB827>SL{ zkD#Z1IY>d60Fj1K2K@EoD6l)WUPCp{^VzLx{!#X9eHr3U8r2WZFJA}SM$7j~p-#;!M4BS3miU1uo62qxUNMYKD z73U}10=Or@0iHWsGpbNv#K-ykxtv~##7F+tKcKZ{f1ltcr9xkDn-(~z+B<$r8)^?P zoT>gP@_-}Hm`Cs_pTNajDGgD@dv`kI*dFQSa@X{)!n{oOvgsBzV#v)P zdm^AY?1g55Dhz&0ll=j{EbvX#4warRVh6{D2;~I!nT&l+N7L`)=a@BOKM1|t(Ek?SwO_@npaZ{q2zB} z=q+KV$){fkBMcUCsP-YK-N3Qj!qM$ffSoFUJqKL`_|>~_Ab=!O#ciNYYm9c?1t{m} z1=3sDt*a-XTcQBn)(XH#B>;vi*G*~|^iMA8xBLTucW6b^1!_v0hcxkUGAC+CAE4kq z0?2efs{hk}iMt30HBtf1yBuVD=KekG?k9lnx~l-j@0(6~(jqiy_iLcETj&*5pz47| z;r?WnuTlBjDfuoaN~8frhnIL3puz%x-^Vf_+lY5PIt74OwWdL^TBa=m`IhV9ydX&j za0=NrHK`#xbikf9)=n`V#CmUjuz#?p6?Mu~M;UgsPr2~!Yy@fS_8IKb_W-?7!_&b#s3#ek8**%%dC#vvr`1?gmg z*vd71ZEL>s>hA@Inki2k0daI=w&t{1xQnSNEJXKz6iQ+ zWyW-%frkG+yzd{+`+3(NYqhS%IIr_O&hPO(_Ct7bog>Md#2NZUgk65Q3&{L^ zyQIe?Al#9LYKyG4WV89s6;%FZ-LTfF#pL79^M_;Vy;MNjltJ3WAZ=Y*#kmLGFFU(o z>6ra{o#9iX=&@&MeEVa&m-w7otkY?+R?_S$Iw|soFfEB%MVT0cm_o1ddyxY;EUcWP zSpzffL+0z6D-y%f|Lyv|i+;g?pC$Jdq#cOCH}TWP6tY991=Rz01X0x{)N&-u(FlJp zP|j(1lu;nOfSLUks(bwh!O!r;{4#CQ^{^eYPE)H4FK}V?;JHZbLSd&Jm}2XZ!kLah-< z8`WcD*Yody6g>j@+-is{-uG9Fj{5}zIm1)85D+TsC*Ud^P1{p_xFMTayqsdf-W9q& zoHW&^a%tGsa>CYq7lT*#Q(vYbK6DvYcapC${_=$no@i;V88q2NlxmE5iXX9@pC*FXcC0KENWihAGJ?3ubq8;j{DP8BmS#t>d^`_FD#(GC1T1W_;z|ZMKq-yj&Ivd zB6xRyS?7O^)l3d5iOUj2+5x)+Nr_;Ly~Nky?>Nkwkm59!@Z2qx)Fo0OT>TeXeB!c~ zwt`G56@Q5g`;lefZWxmAsPhDz?E(Y&M!1oPlBo>e{^dki1rlMGEVK;E%boq~`EUmP zxAZL$X4`gu{QPm&oUV1Iwy&sv-acqa#oxymUqvMSAh0r!uT`H|mmd;vftfmH$@i>e zOSw|zX(TGt<@h3YmI)0#uMUDG`@-&!utN%2d+Oy2}A-@w#IEV z*?5)vdMHD4fZnM;Yq9@U8t(k851CjHB%1yADDc03%L*pj3Qg4z$C`TbVzf)s=L*K! z3}eoHo1wmzoa;RoYl}*juSosWvfpR5MAH0OJxbVV4hw%x8a_*!4hQO958V)7EG6LF z$s_$w8Lt2S_kVMal;k+XPJ=;kYwA&Fyi$)WUS7;#b6cFs9Ons!21)$3Qrhwy2g@zZ z-}`4+*E*lrpCWU7|JjAIPoy+{w_wy8p!#GijTnjy?8*H>Xy|W6FAA3cP&}IiJSQW7 zk~__T$(gV|)f+arZ;Qgd{$%P^18*3;H>5^$LgZZFhco!k|Oh`7kwyjE$q9=cd*p!~6Z& z1O4#F=_pY|@x>{jKL|4izh7gzWZz>g!W$MZ7(Q}r>v)3etbtc6R`%BsfHlo(7e^qy zNi9f+!x&Um*$yX*w)r}5ixiTimz_B?=K5x{)Sq7ZPYuuxYUL?h>>guS|q{l>c39@PEg$6x)%~b*!Vc zwbwnD(^OiD8Vk1#cnm#1u}(KCwwv<>GCHR$hPEU0r@o6kKk$(C7m^ z;KZxD?1_7CPsc8nfW(X=-f=cwH`a+Vi7r#rKH^a9&d9 z#o2lN>S-H!L*$9 zuHDe|d%5T0qDJQd<@(;{=5Gdz5H3t(>I_2qvCk2idRV zdG{Zk)w?$6G3}0*&a7kc#*bgdTgAs_Y897PllfNM)~L?0;O|58`ZOigjZH#c zh2qXv%H7nri{`Z5*JtjO(AF&`_)##^Fkvf@;|zZYXC{%cIBGo=Q&j2FtzgAcb3-^W zW_oT3z8CG{9Ex=i0p#DK&fCbhZYkynTCDF=b@Z=l_zHL>{nJX^B5NCRVCj8IJl zCa3YBK=Vd({=F|%b2}AQFHvvtm>U$-w1m+U97w(&*P-ZSlZhdPov4t=b3pXQXGusHP9(aq|+j>+A)ks{jE$r#u#GQdcJt8o>i&`*;2 z?@TT3MI89_ZGF@OwUwssbFLjaadv%ti{Cu-3u__NVtJxVYzKx!W_VqRGD_*Hbw6X{ zxz(*}{h^l1Wm1P7YE9hFrOAvRcK)pKg|)F{DpG0%&hfZbb>6wF{M45RTD#AGdQvb` z(y^sdj$m&-Mtt7vqum|d^?BXeIT907sX8cEI7ggVqK)S66|iGUH0}CQzU8h=|MvBp z$GeOxfisk>u38e#PASO;H{%)9N~A-3%bF5kMUH|->&v<2FDmPDTWU_v8C#WWKJd6E zBE!4%*xnn?vCL6-U_;fKT7aiCyt-r=Twxx4HfEGp^xix50mGxmE$h9j$8wDtz00{F zQ`4Ydv5ujQ&Cr|C=J zjQUYisr)^Z7BVkvklI0)_Vw=!cyZR&PWjG;_oYqFzO$=!)~o!st-FT3%lsy>`*x%l zbaj|9jYAq4@1$dM*>DA#kn+??1i_$nuN;t_ZYZasbZ`gt1m(gDaR+ zif5Ngm7LE1q{U9txYqWCyu-VPd0vF~d$5YND3%t=?~*!IDn))fk$ z{UFdM`&@TaA^28CB;rbe0E6W~R+m1s#8fo}v=n>-?( zRqyaJC#~P@5C`J}`l*Tmew{;Mjv6k>`vr#L{M3`qN8@F_-930``OB3vo`-IemSobB ze|>$CA}*5)S>$zOC@(#sN7BG{^9}QhAJ;ylzU1ur=&-eFvBSpYA2POdkhY7Lqkf{< zcr8iR^mt}~IqKgr!$G}5%_9DhN7u8$bK$k>o4c1KuDWq2XP8K}!+KCfku_!lhwSD% z#h@ij7#=y%Q>ARIcrw8(OxE$xg>)<|T;_PfH2skEp>H?XTyW>x;eL_>a~8`WE?}m& zlh1`k*S$0j2$*%ZLqlzZ59F?Iw34I|e|Hla{Hi@)Q-a93mK9WVQ9)d%IFscPvCJcY z}}Nz|8A|f-uuMy&`&cSD6E-UyHfV1Tmt0*gUE1%sivoIV>W1yK$2$=ro6wQ$mVgM z$<_O58@JDY@yyTZ)6FL{nW5&o(#75+s5Pk-s0%X%8Dl|as#d=#XJj5MxwWKek+0V9 zo^8Cf$6`0ypN*a)C@aFgFu8-)a&+F zuz&(ATzQM$o38X!PCj?!NeItadE5Lechs*g^jXllO?6%fVHXHXF6|v%jpf`e)(oMGhXxr&x7_4db36}e?mIv_ z_Ox4>@PkkbAr)*+u8@sdi0lppY$!kv&3d5dd(>w4W2i51zf&OPIO8``a?YXEct-9G zr${Wn0qI@>kl+CJSbYcq321)9_EdaYb9@iwxl#wD>LbV5fpij6pL`HybX3;zR_zv!Od3MzpI^*Ik4+@3neUxGv+U#mYc-I(3H{Y($;k`p5F)6cReXs z_4Hr`=Kx#5^N0*w<(;#nPvR~}XC0SWjp4qq=4pU5!-j+l@E@t?;smlYHI|!;KZR99 znawB=C_i=Q%}8DQZDINsqk{^qE$>&#-G3%G;1xa6T=HCehjon6!WI6G&g(LWrAlF{ zo}Hc=s8J;&FJ`Cex8n&7pAYTZ_P{h}YsEBexl3LR#kROio5&E`EKb5@`sl=xg*A{7 z;P>d`$?0duQ+$iA9|< z%i7J+ueS>KADt$>>s}x^iHQ0U2O&LY%XXlK63dWrO=zzF)02|GUoibWpHxi``m{!z zMqAiNlBLbxaQC0A`O2d;>K;cACA#G-&~=l;id`h@OLSvYa2|9&%9;dg>&Fzbpe-bp^r7&oGakcCSj2);#$;9HHY_YuNEZrdM+29iEp zEZ*{$Cyuv7*0d&MCiys7)|IvrO;f(5AIk6-PTxwOLYaT9Y8ZPxymiXprni)}yb^Fi z{9-Lgj7tCVrN90fD*0EqBL8eH5H3jkVgT&^<%w;`L8SCIuD~GGTWfP_ z9!mH)FvnS}d(VdUaF_HjcwwjRgUw6rAXOR2_H?4b6f-8Jf&i zd>fSS0~Gi>!cj8xwV~m}Z;bwPtONseDNv1c4j4=Qwc9|9=ekIa1W!(2W7z`lh+z%; zsL+MW`p6Szt*pg*-w}Lz8*JEVKcJ*<0TAyD-j|$6WAOAQxk}<)v;ZXkz*8``&e#h3 zsTH=9=wNm?d0?YU}_?=U26L+6Nd5JRWsA-8XwGOw8a?oO}E>a$qRPi*IeupWf)wod+4r zPT=5P3J&hi@Oy8!vVu(}sO4Oy?w~%x_?mCbRVvzl+WoYb+?nb{%=52$ze(yXNtT-Z zyG5Vg#AoQpvP+!I>W%lc2DCg!#!d#3S0EkX$gs5;T&52v8bO`K(Cz?i4ZD+-SOfc; zS)-A57!d8?dws2$19e?L2$H?j+_aC}8KdoPJDxp<47Kw7xS36Yx~DqVm%Xvpeu&+= zrXa1vr@W-Ls&{c?&DI8x`P3LQZ8XY}j~6q(CYglNFFb5N-0Em|_+zz3Jw+~ImDQZ^ zN{6{h$8}~~+$2WyG6qL*)lEW2c)=~52AKSZ9|XZea_1HD@u3MFN3eKH=f(XXsNE#; zW<}!MU;pCHuRl$|=l742fA)d1?s3uM#1@Dps9a+4E#dsCvbrd3qE63pauAZkh$_*A zNd@UwI}GN!?)jSKoZV}*>+6e{7ayq>Qe}Fn$7A;?Y#xYXhJHSp8N7u+%XmkvP{9n5 zL2x!~@v3B@rX?`{0fI5McoS*V*3=$IaqSSk-kj7nsDxSk^4#**pM_ozfBB_M5!_{| z^Jt~OjptlJ4>uyq7rADmw_9timoTy@)n>_gu|kRCv@&@zD4Q%0kY$_PT;~RXa_fV;)EiLwujy z``8ymUpkqKoeLxvwBpB*4p3ObXB=lv#;v%3EJJQ1<+vJ4coWX;Igg8JQV~Jxh=F>* zW*9*5X!|^8o^FI8Ns-%Drq6rU^zC!e)dg~IwQa9o4-P%CR$5hO>?YAc97pc%$BD>? zw%g!aJ+@z*&*AIc=~pWVW4dkdH!n`LY0CSWz-#@|x;4^eQN%@^_*a)!9sd=K!xd~UTmp138)*~csCgp;zBPIqEcy)=K!PK|-TRdc-Zw|&}}y|x#^40i9a zc%&56M7OXAENVwPOZ;*KE1(r8`{uR>-@&D!*AG)KW^4+Ejq83L7W}|7cVh71f4w z>DnjJ4bE}ye{hc5_K`xd)t&5Vy-6ji{Mcl-+h3KJ9{BY3^_+r&kV8?k;XsxB%O7;hv_#ZGNY+PXc>tJ0>I2M{4r0CGgmG3&_mkEYzRzO;KnEA9g|a zf}(m1I`i)CUD99Jm~tb&O(h5!I6<1&a++E<6S3y$>vL=M>%89sih>SUF>#!$LbdXOl;Lh{I5u0;OH)OCxh!!1+Rqt%P3G9 zFNN;4HT417@QnqVU_rfEqX<3&0BhmcOO|k1oLK)E<1Mje6Tb6eCkdi^Bs_V`B$WP_ z&0POAB#iXq?+w@f|1we82_p6X0#T6^6zl=eYz&yzXsG_kh$@L*{nTI^5gD~iQC&&r zL|3NLIGo|sS>gidz582vhYLo$*>`>kKlkJ`WKf-3~ozx)(XG z8Q)T=;9gChbkz4E1J6a)zI%n)sH;K6khH7Mi!GPzE=~A>)4x{H@3M|ZohZ}0b@N4y zo{Q9qtH@p!e=B!?P$OKhD%*N~X#sEQ4Ng$cA2nwZ>z_g#pA z2D;T>PEH$wbK&$-Fh#CV7P_HA*S*Sg9RVx+Y}yIp?1L7rvaVHUdIi>B6!5dVqvac= zIDL=)7|AVxp>Utiu)6j5p7^tV?u1edZ8~Sj2UF3*H?pQpwr~QJyLFJ$5%a&Yc9jOm zgc7-aR-SGpn}})h>%QlwJwPLRws{yBk56|W?0)8s+vT2lI(tQC!g|{{+jel1?_iCa zk)c~#8;E1$@pi%mK;>E1DCp5moKR#v7q`6g=Xa(ye4itMU8XgX`8JeDZq8WQS6t7x zuu^S#R;Gowr^}J2#*2=QNrh9*OI~-y@6-tpy zl~~=MivaeIGOO{VR@<(+e?7z|A3mCVxJ!C;kQ(Qx1LyW8K$g!AXHsUiquLb->gjyqwRZUEKZow=+*OpS+MP3LGp~p zGJCcXw~O<@p+H2OSm;9dXiKf|5}ytHW)8~O)HK>I?*-B42~?=(s@HM zNyGM=(qwr43W5XIIv#Ng(7SsdtMC7U9aZJ;#WQo+gdxNW(4krz70)!anu0|`Yd_9f9f_?IIAbv;Y%%R40#-!3C%T{-yMP_}LGap)`&^L_ z)xpr?%mt@br4as24s#?0kx$YPg3^tn{sqeKle z6xdc6p%0V0%1s=;-2)o=^bO6YWr1rEsF0KHh521;*S`JTMN*)^JoUZZb7$DV1nt&o zH|TY+Mela^_qBVbxh-YwL7ZSr$XzhDGRqE?EV1nR&VLoP_gQ1f>$8pLD3{~mHC7MG zdylM)DRO#5pt&Jshj{b}xldq~ZKh-UN&F<=O#GrT3zY|bsze3HIf>j6UqF^DndQsi zHDWt$j`$v}dt7(3VaGK0Y!%Pz!sIs2<3?%>5a6G_>jG#esnYj`8+?TC`OA|ZJKEeo zR6FajHf#`we?8G% zEp&^R|ATNycx|MxwtZ~t>bUb0Y6c(fL0IL|MPV(yGD{#~DlbaB{V2ZChAk|>taF8l z`c-U$K~3k0d>9(5`idY1xA-ONGS=uc;8HJrp^iNN(cs|V0&BN}NptVa-M2;d;RXVX zs3QU?=xPO1frMc5;_yw3mbgGf$+j!5lr0-zXS1fat3qgfPG7DBNqm0&+<59wQjfF?*of{t?XI@5c*I92Kh_=Wp>{@D3t%Ozov^B^M7T=CEZdfddS7njK zI)#kSeSs!K)Y=q;%OaJFO;3c@!;Cf}suh}>)rZWX=~zCXQqDcNW2dCJy@5ch_mhaI zbe`;_8f@qgum$z(q=f4U_Air;7)_nG%RWt`rdymZMX%)wGujJitAlPhPbvIhD#ztp zE+Q*D_LQ!)5D@W&Q(6>7+5>dB65B?M6TQE9ylpSEo#)jWNWLkn$JfP4ac*FuT>$=Z zjyyh#<^M=mv_IQ;ZCj64iAmS*Z-GUP!va1duWUQGV#wzi)lu)UzQirdcy0LsJ&84;7;n2>4174?91a$g^q3# zo;GgPzx|w@Tw+rg(9ZJhQ5}jTi1y+#8}3ulFkx}y=pgNj!}fQ17p$U5|5jwc0u@D?R51tn>_tdq9#s$$4?; zh1xT)Cp79*uICOsDmeGC>vZ*wl#wO4A(Yn(EC)v1@6tmCJK?s-7zm^4#Mz5xBe(rD zw^=(p7abTBy*29cTt^^X`U%z!E+5j)OIUg0C^&c$&L>h!==`oI*2FRykmgMwlvknc zN3k60RB2Kj8qIYvvH4t?nOfj^y?ficZ*7UugKt-zHYYtJ@i*J(TE91>L~Daa8nB!d zQt&qBSX)x@TVu&+9?PFemGyNvTUh0w`9@yulDsErjKZYNMoMQQ-FkvV{8=w~Lg_mV zpq)D`3kd&s71FyXkbE(Vp@iN&{ASuyU&6T`gye_~$fs2K1905Vc5!we_Szr)xRFH%2^F2STPFegxoo!qf_ols&9pz!- zG%b+4&V}*OGn~xds>hh(D_v2tmaNn;>g%(ks3{AbB+~(+>TGD*(TN@OUuPbGg zrx2F9`A0=rC46Z<5PI;FNB*o}S*~Q2jCwkJO4&-79THKKO_V#tY{^rz3an!W5002M zh|W(Ai5k|%71(ot0G$AmG(`v6mu5{=!MW^rbfn^y=?c$F(ygzjj2xKSeRSZo|6)~L z-AH_^+eABjgaSvGfNsKB-iUa4N+8*?mqABPl4ENiaw*TjSD8h73vMwVio+>FC*4*L z?Tg|QH7g6=w2$pP9d{m!`U(4Q61gWaaOnouAT@VdAWBe|iS$N26jejm^c5?QSW2FO z9kp59d$Hn4t?`F9T$dH&duwKy))}!HCg?tNGvBZXD}c zTLayNQ$#k6%(cz>+ne?BHa&xaX2SVn)1*`0{EV6`S>(@rt@oD~1-kU_m-ZLn{cpbF zbSGuT1GyI)u4!N1QiOEce@6k{|4f}MF|sBH4+mP%F@OxuBlxl=-D}oE;9fgKny^1j zy+O(e!_uV7$RhQ#keC@+OcAz=A3KSk;PYJ^*T$7gmz8g6oR-$D&SH*VOSdWjA*-Hv z<0O60%kj|9KD7Iiq6>es`s(jibxDq21@WkJNomdy?esl)!K94WXUNaEofN6-Eob1l zbJfl05o$b(AAx4#fgBb}1WKhy{qz|Ob9ta3x6i`B(f<=Z)ryoVpLKBF zfsS-VF!f{x<*_yU);u*mLeFozG3BKfwZQ>$zW5h;3|Ze>MZ2?C^^RRquMM7Fkcgi* z78#1-K__f&@OD@}#2XT(U1?4~>QWfc+q&U{v0qik>SzuGV`w57IkN)LLVlCZ z|ISQtkOw%R?%IB?9w>kSranIt0+=cg#W{MDI4Ss)O7iG5fa8~bWHbf80mpNh)9k1r zzVdDK2VwR{%ZzrC!pT`$FHTFP${D>h;*`QajOG;lAT-OT4*Mu0!ew8%6K0UDc$(}< zQSd!CBs4{{+}$49)h$a|6SP}5=6c+<8-!Uli29Yu+-wG>z`=K1d`TMWV@;fXb_bVD zboN0+^5}4LmGragUm8}#KRCCxX)xlYs;MlwBZ&o55ePpB2)JGvV=8GEAv|FTwhbNl z!A#%>fx`%-g2m&d=f;%jPkYL;-0r8SI=#Ci7n^a2at)j9r}VvUj>I@Pzo%Yl9Qtn1 za?#@A&U~0m#EUZ0Q&|0EO2dG&tW34xBxU`RfP(XSm-Jh1u1`3&!AZ0}KtHGWz5bDB z1^mYm8u2wI+IKRd7hJt^BX~MAP;?va!e=;Se^sNGK@d&wwV>W1$IbZorB&INBt6!x zx2mKqz#Ea_GgRPa1MVDTwB#gzf}kfFfP5S!V55h@7OvldOz{>AUCG0;z}X+K1bU+t zNG2fvfkti@gURv}CEYzaxM3lslqFPcWQ}GlmW0U9mqdKVmfLP7$%FGc#`F4TMBV3< zU0&jH+ee~=>-+om;MH}A_1Rt00(;Q{U+0P>&~lVA)o*LEp52bCJimH%p2E_HQLk!r zuD+bYVlG{LllXZCE;|D9l=uMopl%Hogu5fqFRAx0m^tDCGgSx2H%a`vtw}xc!HeHs zKReB;!^@EYX8=O^?-9B;vIKmL+^G)+|Flyqz7|=)=#Il>H{Cti${oxS=`y@k z!!i$3zjBP;%~ap3{yF5`nccsydMS%PTnsL%2!l2vzLV8Og!lpnPqL>IfO0Vikvj)l z&9jb+_+*eibLqEjcbg5T9XP17^tFdZ@bts8EjKw@QQLdUJjWNN!}6ajPXmouV@?8& zve`y^f5Uf5wC>)V^m?m5=+&L}P@q>5H%_qpzwg?a>?^HPu8Rks6a%CxIrzfeJ(-H@ zjIl1TK7XQ6$J{0q{xgP*&0^gkq53`8RdOg@IJFQ0F!8|d$a%y_)78c=JtJ0BX0;Tu zLYX1^?ZazyTDB7inpO{*>jZq7`oSCrv_%v%@M?qLmNrRwo_H>yfjl zyl`4{&Mjs6BhdnEZ)0BZ#!tiFx-8?JLRI%z%`3>1eQ2foK^8a60{-+t5iEpGvN-e( z2#=>ZX~oa?4=z04+F`FvJ=uvY^EGAgqltI7Ps#%qk7Eaq@8aZK-o8%i*qOCosTs__ zh~1f!3ZNebads~t-BWU$`zhvn`-rsB;s+Y922S6%PYj%O-gbBkM6txNaPG!PcMS~! zwVbP5Jo&I~2qfp6GGLNgjNWo71qpq-c@7)$H%AW!O?|s_j$-5(SmJ+9mlDwe$-(5G zK>ZFbPoCs;YGdHo>IPotCi)11_kYai82;j`MIfk1t7qq$k;&Otq{z{&CtP%7Z#q_3 z=`aYk!t%f0H39j%mD7y*5K#~)?nN#6*3~4%QF|9p1I*yAL*ML8rweNmtbJ=AmXtlp zi+?-a?0f(B5$VB4lWA!Jf4njcP;Rp!fi@p0A2b6$Pd&_Sc@3ML0BQ|FI~OKHJLTl7 zLzAJMu9@cxLQ14CD6Nc93CC1A=J`7|JXUR9UpUX`%NJ>v4_Q+a*0xw3kkZg3LfUOS zP`SLxXv0Q>P(+VASt~+vg$TwdPq}7yUbgj)**x;~3YonyutE;Il%Ouvme07t^p`sTutGN^M z0jtM>ZVhiCL7*Xy1)(+PVNmqlkr=pQL+!;GtlleV7JzmE3p*Ky9%r@M;t`Zc7T+55 zYSn$oQTm@>8fI-aLRe{fi7LiG#cd8>K}L?J@G6-6dwHPf zKTYQI5b%$A_FoM*sFm-zx^Y8$5d{4LUj>D$4%X4mBBfw{x+5f7^<`9zBH3$qA}?T1 zYam^;c}D;%XS&hA@Ub{Xir07>qR!Sw+GBfjmsFc#puybyid(@yJKyR);Y|Z zJ?+5WMHW&=F4l9pVPdp*qcEWWJw?y0At~CMyYK7ME~g5NjgEHP`Z!`u@C z9<3kV&LsG9{`^{TKW!fE6jH8_H*iO{2LK`k+jDV4OKcT)P#=UZvyzG~ge`?&K9|-^ zXO6}EAh-?5yO`++N@6ly8c|xa^|rk`6{XH5QC1|6+`Zhbc}?pXsRim*?K>&r7&`+z zsq&9+)BE>t+ux56N+bfj__o#Lu#y#muyXEfm-EVDyqU{|I6h|mqJWvlEO-%Xm6`6U zy)Sm{JL~mNCCqhh?2;Dlr`D=W*4ORivEhQO|3R?)$QcFoJkwgV26=aY&%kG8gUezN zAp^SZrA+gkoECn^y~u~JySW&R=zKP+r)SiJZSY+5;6%Yn>-APL>F3~~`R zz=9a$QkK)uMY0M_h1LjtL+4}L`8%1NR5_RPw-29GyZ0dTVkG8! zoRCbx)4}up069UQSo#UTx%5391}WYoRxn7kR@w$Qi!s zyt!&(?}PaziEl)v@mq$A2C|saucw_k;|4JQGbYrK`FqGps8bayUpLm&s$67Esh^5Z+RF@*mJXiI2bogluCVSm-EZGsn`L|;QXge zrZz_kyh_~)Yhqfi|DM{Cs^PPU6=sL$L*S6qs@`D`0z-R;Ld{45g9^`CU+pqt6XHMG zwV%v?!k!W4#q9EvTq4v8+%Q9kitn2`h!$b<8fn_TtG7RGHeh&PThko2OX1q3Go_{( zVOM(Fg2E-C38lQV(|zI)5^trEvoYm`v!KTvEtsO0~FF+WBe_S*%)jB1*;K$t0aj+4Hy ziD9_zc9_||GoN-en%v{r*qj<9+v}u%U%|@HPLi#j3fVLl0id zs_K0?Irl>9nEXWtaxktDV1dSYdmZPC%1x3ZJeJj4nVxsQ%kflL`O^8|{>Wfosd{M@ zD)$6H==>~$i7pZztcOPa4{l}t6Sr7T=B*dr6sI0(96UnjWrlPmtc^cpe<*kA!NpRu zk9S-&C&jY(hZ*CtnEE6`9K%DLs3A1<=5MB}dHMzw=i;+-zuN9{sESLA=C6(4bmU^N zi&jt1BVRHj`ld|u*fg4MS=efG+BuhP;pu8vHZY=;oD?p3)l~6Q z&Oa0Y6%@eIe<=V)9*ADr4+5cN9Zb!Bg?jNQ%Gd_Mw5Yo+HuqJ(4V^8_^7p;?m9sdb zJHc>&?TX!rHS=Ly&N~WvhWgTALbJ$byaj>swRCLC+~9%D0=B#S(@b%N;FwlsK-WsrsXjs9Pm>b`kk@U-OpD!sHhjkBTd{ zG?@&=T1hV7e^D;h0(SQN=gDFReiJL#Qmo`D3k&XJLxSGBUty9Epeul6QhEMf9=!rl z#H^c5kMq>6hvxLzp1;9=>27-ebK%vD<2LoH-KRcTWmUcRu)$BbXT_R?usDD)rGG)# z9b7G0=mI+OQ709fcL;Q3D*77x1#llS#3@K`majcH_YWZ0x#FtkzSfCm^|mE@{QWN-(oQgf z!Ah&Lv%zM%Y-vZp;KhT(C-GApJAlb}bzC6sXilv>12dwUHdkz27V?~8P?JC|?$PMk zFl{~O3;EB=vE%{#`0IcbXuLqz2Hi;~n(96Dy`DGDymMwv?YhTrwD#w=eDPb_=Hu@E zyz2MU4Xhae;gclcPcm|o*ns?`W&NGYSW=J_PhDnEqK&zyQ>Re_$XCy%ZVT9uw`Gm3 zbx&@s@acLFxfMp2SGKa$|AKii+7NW1W7a*G6+*)83t8tsjJ4q3dkuNyB#b zMXwq8ALre@FD<2U)({)C75*mR2(OCMzEgwAv-64#cs`*XLk6bnvo=Ys=o7~2 zy{(mfDRnn!IQDA4*xoWbW!*=za9=145VTG}ghqKh#j9 zcNCTA>&7z<^LE%XUU5#C|Kd@0CF&L(VqXuOheYK@r}JNScChgYDDUnK##V4^>ok{oS?ZhD!Ig9Bxkt~(w%J>BnyrN)um)f!WGt+LX+Ii<+p zFCY#jF`6UARPCwe(KyJ!D`oN}r<%Z(Tb zQ=l2)ps#Z1FQ@1A$4x~~u3i3!Y8NzQ5S?NC=rF>jha!9juuXL8r9mb0_mIXnFe0hnMXul^Gx`p7TJi;8 z+l+v1V+poRn{AJ06*)?CG5T3xa2S2mwYk8?twO<4|5aXeCBcQaEwtjqnQ2X`wVG~O z;xxpCLBijdkrR2AYA3 zb~zbc4u(epDD1FTI22mTjP=>)Y!kzK=B zR@&`Hc5b2Pm0;i4bF0=7KIO%-U!StyiB1atnUL%2!oJ6A*!X8e&C z4sMpCkD0LTdpNJDd>dA4`9EsX=b~Y}OLl+Mq)&bHtnua_HR*5p!&Zsum*lB5-<~ox zN(E_Z|0gL%p#tI@qE z0a2pt$end8XupB`rb5N%3S?OSLY>G2+P@RT*8(JT%aPDw$J)EK{)XemBg;no8Xsy0 zyo!%`7JbBtlR_Aww~gRC+IZFCpu1qeL{O`gpwUP{4|ctvGEO9E1tneztmvix?6$(X zO>A+)WxT+gbrPpzGX&(y0=o$}P3^{{zFvFkCJn8vC!~)u3umwGJy;Ku&iGrP4#30# z{7&|4v0fgdPpxEu_y+WDhWa6HtOq_HTl1`W;d_H+#~MGLR5{I7Nn95H>chU!)rDu> zE~a1Sm3+EM>|_h!y%G~p282jG3L#r_#J0}|lPBWaGb>o4DXqv?D@MJi8XVCgStKsG}50kusLjD3_2p(jv90t z$Li%`D3rwVq{u5PQ>>Me?8Jlf?hRZ6QG;1RKaHoJ$^8h9cjkdK{JuQL>jMSF#Q>hqm!mSMwNh{V!sn zVZo8%Yx*9Vi^rbG&T!wIK&Tm{?nX*Y$S0^_WG1<4gV#&C;&E1#O=F%Fb9yX&m4(5L z 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 xmGHmH|M~ad`QLpw=I`-*D>Ge*n;ZQegl9 literal 0 HcmV?d00001 From 05da4a37669a48c8e9b9298fb5501b09706d84b0 Mon Sep 17 00:00:00 2001 From: highkay Date: Thu, 11 Apr 2024 22:55:08 +0800 Subject: [PATCH 08/13] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0Cloudflare=20worker?= =?UTF-8?q?s=20ai=E4=BD=9C=E4=B8=BAllm=E5=90=8E=E7=AB=AF=20-=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=BA=9Bgitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++- app/services/llm.py | 21 +++++++++++++++++++++ webui/Main.py | 8 +++++++- webui/i18n/en.json | 1 + webui/i18n/zh.json | 1 + 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index dd7e788..00b64c8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ /app/utils/__pycache__/ /*/__pycache__/* .vscode -/**/.streamlit \ No newline at end of file +/**/.streamlit +__pycache__ +logs/ \ No newline at end of file diff --git a/app/services/llm.py b/app/services/llm.py index fca6bca..fda371f 100644 --- a/app/services/llm.py +++ b/app/services/llm.py @@ -57,6 +57,11 @@ def _generate_response(prompt: str) -> str: 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 = "***" else: raise ValueError("llm_provider is not set, please set it in the config.toml file.") @@ -115,6 +120,22 @@ def _generate_response(prompt: str) -> str: convo.send_message(prompt) return convo.last.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 == "azure": client = AzureOpenAI( diff --git a/webui/Main.py b/webui/Main.py index 2712b28..9631d39 100644 --- a/webui/Main.py +++ b/webui/Main.py @@ -175,7 +175,7 @@ with st.expander(tr("Basic Settings"), expanded=False): # qwen (通义千问) # gemini # ollama - llm_providers = ['OpenAI', 'Moonshot', 'Azure', 'Qwen', 'Gemini', 'Ollama', 'G4f', 'OneAPI'] + llm_providers = ['OpenAI', 'Moonshot', 'Azure', 'Qwen', 'Gemini', 'Ollama', 'G4f', 'OneAPI', "Cloudflare"] saved_llm_provider = config.app.get("llm_provider", "OpenAI").lower() saved_llm_provider_index = 0 for i, provider in enumerate(llm_providers): @@ -190,6 +190,7 @@ with st.expander(tr("Basic Settings"), expanded=False): llm_api_key = config.app.get(f"{llm_provider}_api_key", "") llm_base_url = config.app.get(f"{llm_provider}_base_url", "") llm_model_name = config.app.get(f"{llm_provider}_model_name", "") + llm_account_id = config.app.get(f"{llm_provider}_account_id", "") st_llm_api_key = st.text_input(tr("API Key"), value=llm_api_key, type="password") st_llm_base_url = st.text_input(tr("Base Url"), value=llm_base_url) st_llm_model_name = st.text_input(tr("Model Name"), value=llm_model_name) @@ -200,6 +201,11 @@ with st.expander(tr("Basic Settings"), expanded=False): if st_llm_model_name: config.app[f"{llm_provider}_model_name"] = st_llm_model_name + if llm_provider == 'cloudflare': + st_llm_account_id = st.text_input(tr("Account ID"), value=llm_account_id) + if st_llm_account_id: + config.app[f"{llm_provider}_account_id"] = st_llm_account_id + config.save_config() with right_config_panel: diff --git a/webui/i18n/en.json b/webui/i18n/en.json index 47bd073..f9458a9 100644 --- a/webui/i18n/en.json +++ b/webui/i18n/en.json @@ -55,6 +55,7 @@ "LLM Provider": "LLM Provider", "API Key": "API Key (:red[Required])", "Base Url": "Base Url", + "Account ID": "Account ID (Get from Cloudflare dashboard)", "Model Name": "Model Name", "Please Enter the LLM API Key": "Please Enter the **LLM API Key**", "Please Enter the Pexels API Key": "Please Enter the **Pexels API Key**", diff --git a/webui/i18n/zh.json b/webui/i18n/zh.json index 7d71d05..7019c27 100644 --- a/webui/i18n/zh.json +++ b/webui/i18n/zh.json @@ -55,6 +55,7 @@ "LLM Provider": "大模型提供商", "API Key": "API Key (:red[必填,需要到大模型提供商的后台申请])", "Base Url": "Base Url (可选)", + "Account ID": "账户ID (Cloudflare的dash面板url中获取)", "Model Name": "模型名称 (:blue[需要到大模型提供商的后台确认被授权的模型名称])", "Please Enter the LLM API Key": "请先填写大模型 **API Key**", "Please Enter the Pexels API Key": "请先填写 **Pexels API Key**", From 91218ecf95babdc8a6067cbcd80ef6244031d4de Mon Sep 17 00:00:00 2001 From: harry Date: Thu, 11 Apr 2024 23:39:49 +0800 Subject: [PATCH 09/13] fix webui.bat and docker-compose.yml --- docker-compose.yml | 2 -- webui.bat | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7a69c42..2fc8a2b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3" - x-common-volumes: &common-volumes - ./:/MoneyPrinterTurbo diff --git a/webui.bat b/webui.bat index 03e54ed..fd97514 100644 --- a/webui.bat +++ b/webui.bat @@ -1,2 +1,7 @@ +@echo off +set CURRENT_DIR=%CD% +echo ***** Current directory: %CURRENT_DIR% ***** +set PYTHONPATH=%CURRENT_DIR% + rem set HF_ENDPOINT=https://hf-mirror.com streamlit run .\webui\Main.py --browser.gatherUsageStats=False --server.enableCORS=True \ No newline at end of file From a7466b2393e6e4b452c4b09fbfe237ad1cea0422 Mon Sep 17 00:00:00 2001 From: harry Date: Fri, 12 Apr 2024 10:04:52 +0800 Subject: [PATCH 10/13] add qwen error logs --- app/services/llm.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/app/services/llm.py b/app/services/llm.py index e622818..2e4eb8b 100644 --- a/app/services/llm.py +++ b/app/services/llm.py @@ -76,13 +76,27 @@ def _generate_response(prompt: str) -> str: 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, + model=model_name + "dd", messages=[{"role": "user", "content": prompt}] ) - content = response["output"]["text"] - return content.replace("\n", "") + 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 @@ -122,17 +136,17 @@ def _generate_response(prompt: str) -> str: convo.send_message(prompt) return convo.last.text - + if llm_provider == "cloudflare": import requests response = requests.post( - f"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/{model_name}", + 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} - ] + "messages": [ + {"role": "system", "content": "You are a friendly assistant"}, + {"role": "user", "content": prompt} + ] } ) result = response.json() From 24a9ca514ecee3706aca45c17b1ff24b1efda983 Mon Sep 17 00:00:00 2001 From: harry Date: Fri, 12 Apr 2024 10:05:14 +0800 Subject: [PATCH 11/13] add qwen error logs --- app/services/llm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/llm.py b/app/services/llm.py index 2e4eb8b..9432d73 100644 --- a/app/services/llm.py +++ b/app/services/llm.py @@ -79,7 +79,7 @@ def _generate_response(prompt: str) -> str: from dashscope.api_entities.dashscope_response import GenerationResponse dashscope.api_key = api_key response = dashscope.Generation.call( - model=model_name + "dd", + model=model_name, messages=[{"role": "user", "content": prompt}] ) if response: From 7a8e25dc3654976fa9b7f8e05d977da371fb522a Mon Sep 17 00:00:00 2001 From: harry Date: Fri, 12 Apr 2024 10:22:01 +0800 Subject: [PATCH 12/13] update readme --- README.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 17e6cbc..4b17930 100644 --- a/README.md +++ b/README.md @@ -242,8 +242,8 @@ python main.py 当前支持2种字幕生成方式: -- edge: 生成速度更快,性能更好,对电脑配置没有要求,但是质量可能不稳定 -- whisper: 生成速度较慢,性能较差,对电脑配置有一定要求,但是质量更可靠。 +- **edge**: 生成`速度快`,性能更好,对电脑配置没有要求,但是质量可能不稳定 +- **whisper**: 生成`速度慢`,性能较差,对电脑配置有一定要求,但是`质量更可靠`。 可以修改 `config.toml` 配置文件中的 `subtitle_provider` 进行切换 @@ -253,6 +253,25 @@ python main.py 1. whisper 模式下需要到 HuggingFace 下载一个模型文件,大约 3GB 左右,请确保网络通畅 2. 如果留空,表示不生成字幕。 +> 由于国内无法访问 HuggingFace,可以使用以下方法下载 `whisper-large-v3` 的模型文件 + +下载地址: +- 百度网盘: https://pan.baidu.com/s/11h3Q6tsDtjQKTjUu3sc5cA?pwd=xjs9 +- 夸克网盘:https://pan.quark.cn/s/3ee3d991d64b + +模型下载后解压,整个目录放到 `.\MoneyPrinterTurbo\models` 里面, +最终的文件路径应该是这样: `.\MoneyPrinterTurbo\models\whisper-large-v3` +``` +MoneyPrinterTurbo + ├─models + │ └─whisper-large-v3 + │ config.json + │ model.bin + │ preprocessor_config.json + │ tokenizer.json + │ vocabulary.json +``` + ## 背景音乐 🎵 用于视频的背景音乐,位于项目的 `resource/songs` 目录下。 From ee7306d216ea41e40855bbca396cacb094d572db Mon Sep 17 00:00:00 2001 From: elf-mouse Date: Fri, 12 Apr 2024 15:49:23 +0800 Subject: [PATCH 13/13] fix: response parsing bug for gemini --- app/services/llm.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/services/llm.py b/app/services/llm.py index e622818..40e56da 100644 --- a/app/services/llm.py +++ b/app/services/llm.py @@ -86,7 +86,7 @@ def _generate_response(prompt: str) -> str: if llm_provider == "gemini": import google.generativeai as genai - genai.configure(api_key=api_key) + genai.configure(api_key=api_key, transport='rest') generation_config = { "temperature": 0.5, @@ -118,11 +118,15 @@ def _generate_response(prompt: str) -> str: generation_config=generation_config, safety_settings=safety_settings) - convo = model.start_chat(history=[]) + 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 - convo.send_message(prompt) - return convo.last.text - if llm_provider == "cloudflare": import requests response = requests.post( @@ -180,9 +184,9 @@ Generate a script for a video, depending on the subject of the video. 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. +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.