From a488ec83427f81a80d0380437ef49fa1875e6693 Mon Sep 17 00:00:00 2001 From: iftaken Date: Tue, 20 Sep 2022 14:50:19 +0800 Subject: [PATCH] use cmd for voiceclone , finetune and ernie-sat --- demos/speech_web/.gitignore | 3 + demos/speech_web/README.md | 141 ++++- demos/speech_web/docs/效果展示.png | Bin 86155 -> 108750 bytes .../speech_server/conf/tts_finetune.yaml | 12 + demos/speech_web/speech_server/main.py | 27 +- .../speech_web/speech_server/requirements.txt | 11 +- .../speech_web/speech_server/src/ernie_sat.py | 182 ++++++ .../speech_web/speech_server/src/finetune.py | 94 +++ .../speech_server/src/ge2e_clone.py | 59 ++ .../speech_server/src/tdnn_clone.py | 56 ++ demos/speech_web/speech_server/src/util.py | 19 + demos/speech_web/speech_server/vc.py | 547 ++++++++++++++++++ demos/speech_web/web_client/package.json | 4 +- demos/speech_web/web_client/src/api/API.js | 20 + demos/speech_web/web_client/src/api/ApiVC.js | 88 +++ .../src/components/Content/Header/Header.vue | 2 +- .../src/components/Content/Header/style.less | 1 + .../web_client/src/components/Experience.vue | 13 + .../SubMenu/ENIRE_SAT/ENIRE_SAT.vue | 487 ++++++++++++++++ .../components/SubMenu/FineTune/FineTune.vue | 427 ++++++++++++++ .../SubMenu/VoiceClone/VoiceClone.vue | 379 ++++++++++++ demos/speech_web/web_client/src/main.js | 4 + demos/speech_web/web_client/yarn.lock | 5 + 23 files changed, 2562 insertions(+), 19 deletions(-) create mode 100644 demos/speech_web/speech_server/conf/tts_finetune.yaml create mode 100644 demos/speech_web/speech_server/src/ernie_sat.py create mode 100644 demos/speech_web/speech_server/src/finetune.py create mode 100644 demos/speech_web/speech_server/src/ge2e_clone.py create mode 100644 demos/speech_web/speech_server/src/tdnn_clone.py create mode 100644 demos/speech_web/speech_server/vc.py create mode 100644 demos/speech_web/web_client/src/api/ApiVC.js create mode 100644 demos/speech_web/web_client/src/components/SubMenu/ENIRE_SAT/ENIRE_SAT.vue create mode 100644 demos/speech_web/web_client/src/components/SubMenu/FineTune/FineTune.vue create mode 100644 demos/speech_web/web_client/src/components/SubMenu/VoiceClone/VoiceClone.vue diff --git a/demos/speech_web/.gitignore b/demos/speech_web/.gitignore index 54418e60..1e961a38 100644 --- a/demos/speech_web/.gitignore +++ b/demos/speech_web/.gitignore @@ -13,4 +13,7 @@ *.pdmodel */source/* */PaddleSpeech/* +*/tmp*/* +*/duration.txt +*/oov_info.txt diff --git a/demos/speech_web/README.md b/demos/speech_web/README.md index 3b2da6e9..87a92583 100644 --- a/demos/speech_web/README.md +++ b/demos/speech_web/README.md @@ -6,12 +6,23 @@ PaddleSpeechDemo 是一个以 PaddleSpeech 的语音交互功能为主体开发 主要功能: +`main.py` 中包含功能 + 语音聊天:PaddleSpeech 的语音识别能力+语音合成能力,对话部分基于 PaddleNLP 的闲聊功能 + 声纹识别:PaddleSpeech 的声纹识别功能展示 + 语音识别:支持【实时语音识别】,【端到端识别】,【音频文件识别】三种模式 + 语音合成:支持【流式合成】与【端到端合成】两种方式 + 语音指令:基于 PaddleSpeech 的语音识别能力与 PaddleNLP 的信息抽取,实现交通费的智能报销 +`vc.py` 中包含功能 ++ 一句话合成:基于 GE2E 和 ECAPA-TDNN 模型的一句话合成方案,可以模仿输入的音频的音色进行合成任务 + + GE2E 音色克隆方案可以参考: [【FastSpeech2 + AISHELL-3 Voice Cloning】](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/aishell3/vc1) + + ECAPA-TDNN 音色克隆方案可以参考: [【FastSpeech2 + AISHELL-3 Voice Cloning (ECAPA-TDNN) +】](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/aishell3/vc2) + ++ 小数据微调:基于小数据集的微调方案,内置用12句话标贝中文女声微调示例,你也可以通过一键重置,录制自己的声音,注意在安静环境下录制,效果会更好,你可以 + ++ ENIRE-SAT:语言-语音跨模态大模型 ENIRE-SAT 可视化展示示例,支持个性化合成,跨语言语音合成(音频为中文则输入英文文本进行合成),语音编辑(修改音频文字中间的结果)功能 + 运行效果: ![效果](docs/效果展示.png) @@ -20,18 +31,130 @@ PaddleSpeechDemo 是一个以 PaddleSpeech 的语音交互功能为主体开发 ### 后端环境安装 +Model 中如果有模型之前是已经下载过的,就不需要在下载了,引一个软链接到 `source/model` 目录下就可以了,不需要重复下载 + ``` # 安装环境 cd speech_server -pip install -r requirements.txt +pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple -# 下载 ie 模型,针对地点进行微调,效果更好,不下载的话会使用其它版本,效果没有这个好 +mkdir source cd source + +# 下载 wav +wget https://paddlespeech.bj.bcebos.com/demos/speech_web/wav_vc.zip +unzip wav_vc.zip + +# 下载相关模型 mkdir model cd model + +# 下载IE模型 wget https://bj.bcebos.com/paddlenlp/applications/speech-cmd-analysis/finetune/model_state.pdparams + + +# 如果不需要 vc.py 的相关功能,可以跳过下面这些模型 +# 下载 GE2E 相关模型 +wget https://bj.bcebos.com/paddlespeech/Parakeet/released_models/ge2e/ge2e_ckpt_0.3.zip +unzip ge2e_ckpt_0.3.zip +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/pwgan/pwg_aishell3_ckpt_0.5.zip +unzip pwg_aishell3_ckpt_0.5.zip +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_nosil_aishell3_vc1_ckpt_0.5.zip +unzip fastspeech2_nosil_aishell3_vc1_ckpt_0.5.zip + +# 下载 TDNN 相关模型 +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_aishell3_ckpt_vc2_1.2.0.zip +unzip fastspeech2_aishell3_ckpt_vc2_1.2.0.zip + +# 下载 SAT 相关模型 + +# aishell3 +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_aishell3_ckpt_1.2.0.zip +unzip erniesat_aishell3_ckpt_1.2.0.zip + +# vctk +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_vctk_ckpt_1.2.0.zip +unzip erniesat_vctk_ckpt_1.2.0.zip + +# aishell3_vctk +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_aishell3_vctk_ckpt_1.2.0.zip +unzip erniesat_aishell3_vctk_ckpt_1.2.0.zip + +# 下载 finetune 相关模型 +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_aishell3_ckpt_1.1.0.zip +unzip fastspeech2_aishell3_ckpt_1.1.0.zip + +# 下载声码器 +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/hifigan/hifigan_aishell3_ckpt_0.2.0.zip +unzip hifigan_aishell3_ckpt_0.2.0.zip +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/hifigan/hifigan_vctk_ckpt_0.2.0.zip +unzip hifigan_vctk_ckpt_0.2.0.zip + ``` +### 配置 `vc.py` 相关环境 + +如果不需要启动 vc 相关功能,可以跳过下面这些步骤 + +#### ERNIE-SAT 环境配置 + +ERNIE-SAT 体验依赖于 PaddleSpeech 中和 ERNIE-SAT相关的三个 `examples` 环境的配置,先确保按照在对应路径下,测试脚本可以运行(主要是 `tools`, `download`, `source`),部分可通用,在对用的环境下生成软链接就可以 + +在`PaddleSpeech/demos/speech_web/speech_server` 路径下,生成 tools 和 download ,可以参考 `examples/aishell3/ernie_sat`中的 `README.md` , 如果你之前已经下载过了,可以使用软链接 + +准备 `tools`文件夹: + +```shell +mkdir -p tools/aligner +cd tools +# download MFA +wget https://github.com/MontrealCorpusTools/Montreal-Forced-Aligner/releases/download/v1.0.1/montreal-forced-aligner_linux.tar.gz +# extract MFA +tar xvf montreal-forced-aligner_linux.tar.gz +# fix .so of MFA +cd montreal-forced-aligner/lib +ln -snf libpython3.6m.so.1.0 libpython3.6m.so +cd - +# download align models and dicts +cd aligner +wget https://paddlespeech.bj.bcebos.com/MFA/ernie_sat/aishell3_model.zip +wget https://paddlespeech.bj.bcebos.com/MFA/AISHELL-3/with_tone/simple.lexicon +wget https://paddlespeech.bj.bcebos.com/MFA/ernie_sat/vctk_model.zip +wget https://paddlespeech.bj.bcebos.com/MFA/LJSpeech-1.1/cmudict-0.7b +cd ../../ +``` + +准备 `download` 文件夹 + +```bash +mkdir download +cd download +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_conformer_baker_ckpt_0.5.zip +wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_nosil_ljspeech_ckpt_0.5.zip +unzip fastspeech2_conformer_baker_ckpt_0.5.zip +unzip fastspeech2_nosil_ljspeech_ckpt_0.5.zip +cd ../ +``` + +1. 中文 SAT 配置,参考 `examples/aishell3/ernie_sat`, 按照 `README.md` 要求配置环境,确保在路径下执行 `run.sh` 相关示例代码有效 + +2. 英文 SAT 配置,参考 `examples/vctk/ernie_sat`,按照 `README.md` 要求配置环境,确保在路径下执行 `run.sh` 相关示例代码有效 + +3. 中英文 SAT 配置,参考 `examples/aishell3_vctk/ernie_sat`,按照 `README.md` 要求配置环境,确保在路径下执行 `run.sh` 相关示例代码有效 + +#### finetune 环境配置 + +`finetune` 环境配置请参考 `examples/other/tts_finetune/tts3`,按照 `README.md` 要求配置环境,确保在路径下执行 `run.sh` 相关示例代码有效 + +`finetune` 需要在 `tools/aligner` 中解压 `aishell3_model.zip`,包含`tools/aligner/aishell3_model/meta.yaml` 文件,finetune中需要使用 + +```bash +cd tools/aligner +unzip aishell3.zip +cd ../.. +``` + + ### 前端环境安装 前端依赖 `node.js` ,需要提前安装,确保 `npm` 可用,`npm` 测试版本 `8.3.1`,建议下载[官网](https://nodejs.org/en/)稳定版的 `node.js` @@ -51,12 +174,26 @@ yarn install ### 开启后端服务 +#### `main.py` +【语音聊天】【声纹识别】【语音识别】【语音合成】【语音指令】功能体验,可直接使用下面的代码 ``` cd speech_server # 默认8010端口 python main.py --port 8010 ``` +#### `vc.py` + +【一句话合成】【小数据微调】【ENIRE-SAT】体验都依赖于MFA,体验前先确保 MFA 可用,项目tools中使用的 mfa v1 linux 版本,先确保在当前环境下 mfa 可用 + +``` +cd speech_server +# 默认8010端口 +python vc.py --port 8010 +``` + +> 如果你是其它的系统,可以使用 conda 安装 mfa v2 进行体验,安装请参考 [Montreal Forced Aligner](https://montreal-forced-aligner.readthedocs.io/en/latest/getting_started.html),使用 MFA v2 需要自行配置环境,并修改调用 MFA 相关的代码, mfa v1 与 mfa v2 使用上有差异 + ### 开启前端服务 ``` diff --git a/demos/speech_web/docs/效果展示.png b/demos/speech_web/docs/效果展示.png index 5f7997c173a685ff546664925a839527bd639d49..d166f0dee498834e4d9e96b67886c36e46ef75d7 100644 GIT binary patch literal 108750 zcmeEuXE0o0+^-fTY6v1aK@vgq-l8SC5G7g=MD%XeNOWO?h)xhC(R=S@wYAavvdZcf ztE_%c-uJ#A?%d>^xik0UJF`2pbBuG&KIi}ZpI>`6Qd?7n^!EMRSXfx3FP|F<$$&f`xT^!cIX!`-Or6i?*Ayjh%xv7S{8~#3TZ3-A$SgH-2OE97HXl z@HkDZN7)40U&wMO=3va%LNkQ$kE)O=_AI1t5q`(b_Kcnu4UL$qaAD@*jpMqV0+ z!W~kn&b?L;3MwghBfXgJcddKfa5L0^rTt9I(v_wdN3Qmv0VVYg#obT9= ze`C!ul_KADOkF37PN`4p=LWi}~&k*~75v!8a(stE# zEKck#i2Q^tQ#-^3yAy7L9Ui{#8sb=4MLP((XF=R;PJ(qyoUvW~N^R(hJS1*313;O>aFWnHiOjeEMX`^zq*-` zO>rmhQWf<9`WFAeSUT6|G)d^_&_+2Ob5N)$TlC9u811bK=ql;UqfDMFwYF!qmd>Rt zoQflow)ugr5yDiusox7@AmoJU2a&HZ(e77w8@i3+ZU+VGmv{0)qxE;7N;1PKEpbtT zLrWpbnu3JbaUZa8g4tb^J)R!oHC*O394cSZMkl=p+5BjNPu$?>k8j*vQ)MAGD=C4) z($=J#)s-fh;7$1w0-HXZi=%JG!cyP;%oB&-Zqc3KBx5DWiSzw6uAJX(1J3@m%Ir0A z5*8e5IfB=6%=d7K-$akE-W?c+LSp2+pX`@t>dDVLD16A2J0zcy$y1Q!$O%0s7WkmfYTtLq@)=y4 z7>aqEtT4W=x}`vjxKtRxfDvex2(= zLOsgIq#W`kiizI`bc73)^$32^d*V)jeS^;y|A6DPqMDedBzg8DSG9YPe2+?HGJ-@7=6;9I> z4s0U0O$<%gP4sgiyWJ<21Qk|d44TBYG3ZXEC9!%F6MiSIJ&L`%dlF8Br`TGZ^h=Bf z@|XwBgys=^kf{}|<+7EmWeCw@Jl&53tRLIipRhZy?QnTelv0Kft|-3B5g&=Zr!d4) z%BoL6AGsbu9^w4_LHwQm3?cA?2PK@ZzQlgv{eu6TxnHl6dL}Df{ac)9Joy*Ne(!$g zhj*jsdXnN5`|})rjOz?*GwH}Y9QnHQby`&_@0IE+RUXx;M6<_KUo{eq28a{UiGzvY zN9L~rv!7}6>mC>&3XAoAzO*yg)TPtS`zcYVTxe6|q+MdrQYfL`qXR7r)?=!PXaxI) zNjz5=`D}MB#Oui8D7(wx7!jM7Ha2ra;``|8X-l}wFXdP6`q8?^zx4CGo|Tw0<~ijL z>%(3y{s`2&sy*i-l_vd$Z*JA1oZIUebDAoV+M4PQrG#=qjZ?F#@4XIwo$}ha`gIM{ z``nt6>UBH55qNHZ=0zx(DMUBCNH@n_Z#|Q@*glUwugSzaYma(?Upk=WjdTTEvqjLC z?`YyU;8^geZZm6~ng2VT4?Q7iEnT{RPp`IB`8}i0w|k9x3$sftBC>~E$}GT$`nU$2 zVx4TAgb@X+9R4ves85<}(m`Qla6dx=P6B>{Up}60{?B%gaJ#xqKSB2@pDItA5}Ph$ zD$)V%kH$w6(A*_vj%J9yAD#BiP%Ym&f6ZyoUcWpsI7DqmzqWl%zJ}GsfGD z5)5XNuf^RMix`|GbkaYj>xamh^`8YR|#! z_5=#LuX%6{Z(4->4qwq-K~GOjC#@TAUwpOhA9%xP*>Y5Mnt&0$XgNLIH%BbeeYj0X z_K;|U=m&l;zCOOpZGqdWg?dr1_ zu}HK4ca?NC5)Bxpi`mrU$fKi)L?H-)w%2Ca$5i;gPC%4!UDIQgK&Z)n7GWz*ZBlAWZPv zfaXG?#K7_T-jdAv*Wyc%6&` z89_F*98yu=Utd>5Mv|k+RFT>`YM6J@yxGIGZ2GmylRel$-%O_9W1@s{Rn|=$J7Zo( zy7jv}{M>puGRi$z{H?_NL`e4GP59cz+Wea7t*~46xAFDM z^><8(O4LnfY6g5>jr_`<=qMsDWi9PDL91m4SQsJZY7XorqmH8VX-NaAE;SS?URM05 zcg|RE+;SdSyxq2IgsKi)KQH5Gj#tY&$y>|I5_J(ZIUhzeMWHxF@*Q_(RvYbLHaj*W z$T?>81aOJcE4n^Afi9gCf1P@s7@Qe6xWS^9{|u1g_x@DnUv3MkELz2mZSsc`}w ztV6=LS{VHs{=WZjo4q4#2tk)afF+nu?zRe<%tAm(>(O3yD!lW6#Y z&bv;*+_^-#3S|$onE|n~%I|JHlv@u2PGA3fhvz zRw|$_6+Aj22XL;Kwc!gJ4GpZvz-K}%>~K3QJm3>H@V*bcu>jEiM+V0G@I}|KIF^W7lqYDcd5^_PUn%X!=PdG{5pKyP5R8=yv#4l9XT`ux3w7_ zvTYT#t&5?ryS94E#)9+D*B5y_FW7hciM*%}gc1LIaj;nE63OE!%KhWTvO@TLdZ=C{ zpO^;w4#huSU&?<9{dafbiub_5W}bcQR`fsb1GtLb{ePVwINm3QLn$J-7q|IQ>0h@h z2VCVb>A$}!;adi5qBOeGK97!n4jKz^l|=l1j)okbKYN4`hgdHID=cEQH!ss!$RBsgn_+AiU7x@JaWbslJ>f$lq|$f>7O-r9gTOb z%aj&#U-)Unr@5|QdOt1qnyWl#!_DgVsdUTV$m^EQSJ*KYxv$3tUxCH*zcw6=a^qOM zzVolz4!(IDeDk$j+@ce+%jvLJJLhCq5bWG~Hk%$4=;;>|LoX`0JL`EQB}6`W;HnaH z->&yFNTPg^*1T9qg~>>Wg2wD@ugSbq{xwViN1bDT1uUCfVqDi7>-$??3CiU6BMW+s zSs|~o=n@%eebdpR5yv*y>?e-sjiGO;KDOVP_uH*W5?}g&YqfpWQXY5(%a;q59tynJ zOsglguX}&%A0qsG6Sg{H5KDMk~H`;mkvEIXj*j64?GrHDp_K3{9ueN7*t)y|6MBLaH)v}4KnKIJ=6+Ds8ixA&$ z|D?V)@M`D)lJ(`VRZ^kbZY)1Fny>Uu{nt?9BwtFS5XWBjupjr*mqpLl z3gWjO^ls-nFA}&1*!dIw)GsL-TJWxeCED7TYNZb{);Y|?4@y@p@+4Y0!<)q~a2?n0 zaT}CA{X`(^pmd>F@a#jD?2XlhsNJaISe_c!SWb^AT#vjY9+|BO(e?4gn=D&ImZZSr zs_XvJYj+HBZXQ{nduR)MnCH#}v~5P)!6jM_t@;shawAe zKQbS=UNHFWxZ11@)WG=(dLjcBgKjeHet*y8I`ZGjAqc#qd2zI9-RO;?B(%-*-1ZxS z`=J25dzRRgM#-&or*!{o3_vy+pILZx^gvB)CH<-ooFPfyE)$7 z4UJ21f|dyso*l}(st{j}V0W)9TK?-YzLNvYzfL5bZMq$1ka*6y?FzRO3EUL5w_zBQ zx!-OgKkNFWvGZY=SzCsSrV?J--h!X6Cg96F69Sq=x}TEf!cS|FMn-Sf$< z{X_Ur!0Ey^*wSV=-GV8=quy@3(2hl_xsxFt7oS9A%G3Zd@2V28?b=T}brzvA&8d}n zm+QTN3L@f8t`rOg&$ohj*^K@$AYuOLdeX;E?g!6xpZ|5$a)va<-9D=k@Ys0XWs+*~ zX>-av$h!4>i(B$7a~!wB>HJu)dYZ`CYEO82CuGvs7f-^Yo@)=QCyM%1@v=!;=iIVO z0Ct6HyAfFoI4$YOt#@9OaozmtF_;eiL6!2CssdWVgFmY?c82unykL0`Q5rCB!Wy4XHVYqWf;@idULu*M>QN&tzUCuWrq=Ic*uV#gF$kAkBC604mnY0_+{Md!6iND|w z{rkS|lp?~KmrY9_tDs*WIZv}Tvn!Jvx7NZ%T$1%mX7_};{I(}sII>lWnl=Kj@MkUh zfhOr8e?rT@6C-LSNNZ*&NKu-2$x;4pU)0t%c6_U)a;uYqBMkr9V zh7h^*(VHLITeAB7@sMO;`_^bsd4@OqmRD>4AYU0>+F}CvE(xQ=bX%Hf;9)<%O;*53 zBrz=H!}&34zcm6b;qr4ZiI2QE+~D5m@K-GRsZ##Mz@}mPlgpNvmyI5FpZbh}m##y&km8GMPmqFcvYkin)0sysf~Ex z-f`Aoq+~sXO^NJzbrGp~m5t~8 ziC)Un61iv^o|etKocOT^drc@j~0B_6%dHQ1$x> z+HYvCEPuTxJ%=1@?QPQBpTuWw18#CbJd?~*>W}BxJ@5(paWOv|MoKTm zw`t&bjsbe%kVQD-iL;EvFp?uPOZ_j{;xHNj*?6nEcfLw^Y&h&Sqj{@tt}nR6RG(u0 zAfc`SE_EL`y@ZT-J%3uwez}QEj-c!EU?#@XYc69hV%3g+}M0FRY)SeFI(eIRZjZIyut+|T&|#o$_1xA+MIT9P zB=KgLXwRcOrxxBY1&W#J#YW$|y=3Op_)~NBE}r6=+R2bGsGlP#^kgXQRY=V@p0pW@ zoBr6otAi14snFafs@>_r_W4}HnfIurc|Sj*d;CfQx=)hfIA7n-Gi#1qU=VjRd{S&b zwTC>Jqfbk7ZtZA3LvB~>?>~#VPdj_|PM5k$_QwBb!)|Swm9A_E7$N~G0-^Q2uC+(s zc`4uDnkuVX7hhnt)00p+KiW)k-X#pqK(}K+e-o`lX2jgr6h7s&9cIOMx@GKV?K$_ z*XDEmU|fcRL2A!*s93qFyWGE!Z$6+D79Vax4GR=xzJ8S0wL9**e-Ay^da<`{UNh(; zssGdM7d1=J#co~wE&@x+dGPBa3p4+N(Ea>&2}mQb_{T@3?(EOITMca%7}PS$-ezFw zAJ{Hy+X6k%*L?WClH07a#@^gQRxfc?yI~fu>enl78}9dRE_-DTGr6SbL1j8Nzv6pJnsiiN5OlHtd^GkS=dh&k@+KrT*gPX zJZO9%glI)t3$~H~+=WV`&rJy4cyat81pL#%@yccuOC*BN3M zhw9pos0y;o9vSN-nC5F`*}R`@X8HMiQ?lArabAP-J!Rx@%5Ca_o`Cr${!dE&!gUR@7P!t4V%D>QihcHf zE3^!y*j{H*Q{j{C(9)g8N~Zd_CglrX3LUneQS?z*od!SfKBv+wT%y_KGYh;q4JzpE zAy!l^cLT_V$g;$i58-p*!0*3+8zrtu}VKPB}qPP~mr21^Pq z2Ezm2^a`(cC!33?vM4?W-{14UI<6^sdO0lVOdqDUo)<%h_Ndhrt4GI$4NIR6)g$(t zB-?z}*eut(m%OjfY&q2Zen54#O5T_Sc&ciW*<-%H%(;XH-^&O3U+7oVVn+JU$A4CM zV-1X?JCcOkhU@dv+=sroiWTWr3ZB0Jo%Y!OSWvffl%kcLimKhT}-!W<23#8 z{7#*{@{P>C+-d!`EFxsdKX{?ZJ0`kI8z2H{DLT2Cl@7K;n07L0u6gGO0cqcP6nPYn z;19;K`tpe)gGH&cRl&@5(Wx~3B}c9C20jLkO$m2Vfno^ z;ko-VHsca#I}tlKzj@A(egK@0q6hq^t~+882n+j(U!l~qT?lg7%jaT!r7O2U2R*{g z;P=$WhjO}to?FIYAZ_$$a+ce4xyo*Hl~jUR%lY&plFs#alf@M?^{!T8(@!s(0dnPv zScL(k&>8f!M4>GZclQYEI%3FC@{ODa7cPW^82v*&EX`fY5X^YdY*83Az2A4e*W}#Q zq0iz3Z+0~iTXutGwm7Dy3vaWdhXi3W4RT#~W|A&6ChqNN(Fq5fKS|@v&980ers3D) z{EJo~ncD6|FY0tM~1UkEjfr~XNhPX zV5=8{R4xfxyHT`jOz0U0q#_ICV%7u(pyXvDlj|QFF++g_Kj2lic|JJvo-J zpCMVt{UO|?OG7{6h`D>@*1UeNFf|7#_ ze3z=LX&z*24|6Z8x+;9`lNNLp&fE&VD{PXk*vUDU#IcEh&D9T7blRO9$^9e!xn3?(ZQ< zN`DezH}UwPL%_{dS+A@&msvV6Jzblo&6|(+aWvk-WF%(;Jvf^e_#7l$=a>oNP=kC^ z9G7m=3iVnNoAvb;D-CxU~VGx*^`{E>oz&a!dM`-zeyH#YgKO+3}a$28BG)14=NIa`{m1+BzP zHT!$GF1@^?1}xERT?z3G99KBv&saZZ3+8_&^fTZyEbk6{G2cUUvm7v=tMVHcv^$GZ zAITw@D-60k2!CXB7|{-z*`a;#-?sgd|A-&JX7d%ohb3zY?f9gY&0(1f#qXwD{F2)FGBa{j zWK*=qyXl?UKgb8O>z4)Aikh6#qPNR}d@U!Yz6~ZCOpFp(;G={#09B}*wODUfVy@dmK4IB)Y956D`hmt6(e{J_NMoJh4di!1MRDm<-Va(*Re$Av zXaARR%@#3i<;2ff6Cz8>lpS<)RcBOXQxi>j(UUOh98Jr2Smvt`VsE`26OCn5w+D6Y zs=XqJIyclRd2Mi!tH{efd6>B6;dpikTOkXczMipFTkgEV1{8+2pb6ftlW8k(G_g0f z6nU6Gy3T9&KKgJlVW>Nj@4?;D88BkW-;TlJD@d?PFl^S=*1+6!?r8Vo4ai{ zE)8Lk`HdIfmC)x01O%)_6+}ysC%T#>Bp?rAjI+jQ-@L?B%v?WSxI+jse9Rie54D1x}M=J|7)Zw zCj9$Mwn9PQ8AF#OyRt?)ra2?ceI#c`dbIPR$usOCOcwL98KdLmKDxLgCDMjjj;_A~ zOH~@07>Z$m2P}J{(mZ-{VKULDm2V#gIgz+Nef7yaS6O41+1&-rK2znhx%)kJ>!8%$MYK0J@TQ-TgCq&AK#^o}jOf+*EG;1qjJ8{n6R*ko*t^s_Ct; zPh%VF>;nErYbSHgXylonG!2*>H1Cftsqn0GfrBQXPSAWc zMilOFv;S*%q9|N6Yi+5%o>5|c*OTc%WC$kV_QPHcQOH=b)A;!#GJdy$7OVwsbFaem(T{TYvty+|(nbt@8BoDT+}a<7#_ z`fVS}Sgj+s-;X$UX7I%`LHf%sk%V-CJdMF`J>-ux?Nsrb5Atx z_WCFHf4)qoavpjM85Q}9T;C@IxKIgF{H;tobq`%BQBWJ`o{();K$nk}o1s+U$Ua zbgt2JyHh@HTL+$b9brB2^`LBa?GM|(`{?BZUMU8OlM@nWE$fVG@qqJcIlT}NgtMGA zEfJSYti2brS-@N}RVnL>f(K}zkw(wjWTi&j0AUyEhk`x@U^a=Oe7n{IheHNk{;<~Y z5+J=JLYSShiF@gubr@WZjk_%UybBWX+Iv&>{oaVv0@Hq2y+Q0O&)ickvu`}cBD}np z2Okq7|8FIyz4SR?mcnOi9!Q87}f{eX^G&S@ybS z3)w}!zCMBQ#<=2>2a4^b6Q=sdNX7-6Z{{ebIfyZ1Kbt@F>p2|Kt=L&sf_C)pukDON z^EJ|NmW>}zQBrfMx^U|(ze|X{XWn`l>002smiS1VQbfExl-BGnmjh>7BR2oxAAK9} z2n^=WuCR5OqYufgAl!3&4yDGY8nftbty>kfeqC!LkzkGIQb5 zaOmpvG~x*aC$5_9Zx~uUxS3wCAz|^I6Cdic;4sOKg!RCW_C{m*x0~>mqN~@w<1VPh zphbt5XY|5bkG!8>MBk&Uwe0z57HS2N$r`O_yF5($P);Y~lwT5rLF}}1bZvDIT;O+h za{J)h*scvQ(nlOFNAo2=gvkc|fToG2sW3Al$fJy7DMhmU_GapR5FcpG?$MGBOh|lm zobF^wN9-1}e>M#SLE9H|l!zVmLYCBc8=jQYD~wfL{PKB2;Jns^Y9%H}*+GICBu`T6 z13Ix`(xM^^Z(D>+mx#E&dPkomX@1@b3!-wp#8hB2O__SvSPW|xdu;k(yKRlv?bg1% z5pkM-Cl;G^T<Ff|?Lrc>7_xL)?0E;G-n7jt^&Js%c? zyVp|J(vc<{*WtO;9vBSW=QG%=H#E#sJ?QGPh#wMj8q4?YHf#?8Ujmj=-(D|4cBff= zM3g%cFBG#c&IDSuP>^u@e74|+YOxv__$EE+`vrp29E#`)pKf@5WpQoYJqf63qs(th z8<4(LFqsRy&c9Y>%AXl1q7_q?brEAxq$MLh!2CAp3eA0(w`O2Y8U=Qh#NYr{&ro{M zwNbwP)Nre|6~Lk?#Q7G9GLvRj`^#=EvmLs8)>~&H*-6jl_LpC91{O!Phm>sZ%|L5; z*BeAh&JAm|V%Ud(a#O<`88sV8zA*2z;;EB{V-fKJXfi}02v#3pIV0`#nV$B73fHKc z1whlmrb-!Y7G1{d4URLFJ<*FDw;iwTo3?)0<1iC6?srCCrR@rw{ZNi^ZwA}9P|Vzs z`;irN-A^W4X4dlljhNWnu=u(Z)mnC+h^;!QD;nxK1PERx+B-?C8^ZRJ5hYEbv5b-g ziqg#*z>{LAo4E#b#iD#$m{Z(T4B=;kytK^DT^|Ue#(d6Iz(zK9u&4gkR2v7PO7V9{ z&0;eCN=`Iyr1rOSmSX_Q?UBS3$iP6{q@1NQxR| zU=KrC=aiY>+--Bsw`YLYw-fH#=&^|mkSb70_coY+At3d^4(Bq5`57&nMORpil+Nz6 zE{Fw1j0!k#KE8Ul6X`x?QujFzGE84L*M0b zaWfqOL@Xh^NQOQ-`)k$4kt|)Xa>Mc z{9Q>u6|R$He?<(QF5Y~gcDw8{GEKkfbY5r_P1~n%RqSlqdmp!dvP5sgL`|pj{t~mk zjK|e1cs5wVS}Swd=K`~LO5(*aXGw19sb#yg@_&;^+iU&VpV}|;H=hC2>2%bC)|uxW!(5ikC*zeVCjWg_l+`og710NTh!g<5o;=$CgD{lKlLuI&(dCMk znq$GZ;fBtJH=6r^3L+n*y?QuZ!Pgx&q@t|-{VyilTMBGaB`t&nYo&?T40UiadOgTN zQ)1Hxkgv2r&sM8Wtk|vz0gK`nzxg%>)w z^~6T}_dDk611M0hYu@icxeP~d+sp)9_A>G%1Rg}~PVrrc3ob|_j7~cUm6q%JJBP{c$tnKZfbA7*t0u(%)p9a{+ zQJx2tGmbJ6?(3f{h$hQ)&0TFrY(zBwjEMLFwI0;>>l)ZTC%;oS6kgCe_z$%$XxV#N)aD(a6WXhWA|%AeE2? zg)s9)T@3h%F~NwjPp(d75A(?iDd7x;T+W*5m`Xa4osoKwG47of>Qc{<9N4Z9A>npE zN$}xz#%%$ zV)Q8eEDHrf8bh~eyMwSL{H*|igv7@u5DlHm{H`y>04-esiM(ll;~dzI;nSxIE_+G) zSdXO~#T?|o9|?R#JsJFjcZ9p!Wm+*8hN??Tbd8lDv`v-I!86GMmduKMi$Fc3r(!p^ zVfmX`@7{1LnJbUD^-xjRa6^Ovueqfxph}EMoJ^J&?|Sl?)VBv-61iS{)qVWBgUr>_ zkKWEAquOJW z@_wMhJ zAcDb{ChpKR^@k0yiqOF-SftTISvn%C4Nm`ou_{*OsXvqjpnHh5l zl-?va81<$Vd+lyZk(XL~mCA$-PyX`se2r#CA|i+K=ZT>M&@Y$^NvM+qrXXG&-Ya}Zu<7dH@@GZlMSa;y|B!*2zN6}bVJT4^jADr%kv;1Owqi^?(E zEFS){77-4Wi-Imb6|UP#*H@>c*V;beexa$=ivOf}Zir_kK(0-5?$aX+B=<2xO>}X8MW_z-v0hy6@c>$zvcbmAT zxJY;VnlJ$7CJyB^gBD$00M0vPEw9^lp*FMC z>j!YZF?R3ubiiF4{vt{>^CuAk2d$U%Sv3XxQCiSmPJ<4yRUq^tGB3&Oskwi}D5J>Q zVzY1HqpaVwam~wZC@q;3=fyNdR{yj4Ie_&Ij@}=pE@WfFO-WrY0RynRKorFnDxC>**|xpoPndqJq3X zyBJ&jiR=IorY#Y!%QZU8;L`pvFmeV+zz;nLCGLYH5~r47oiZlRLQy_1M~C_9|#+kUd7 zrGi+AN=Cx=%~ny_&>aGnPVB~hO)Q+uG%?yjePKoW(zZZsW&Bpp)o3!4Sb15)$t?X)53RXPeNv`0 z3LL#oF1A;{0?qKQt&smAetlV+mh_u~rk{%|%VeajpBDuPMqy%+pTlN1Mzp3Y54)+f zH1G0QV8*n-fIj-_w~5CH2hj>f^hX!!6S++)kPtm5Pl6sgAt#OLXOD(J#&u3ky!A`Z z+*e}i3^|LN+&D*q$)xsKP;|#Jj@LU?T8=%fzQ^vxKK<9sftX;&FSNWS)4lYPCw66@ zA36fkjeivorAR(p)2c?0OZ}eMCXA%1C6~cykCmEo%^}?3pqr|-{twsz>Scgd1cc7) zPSqEPFGcocXjE-kr?5!=`I0%P;ntAaK`U(gwq92m3h@*Ry+`eXI&hRa5P? z9s|xNFxX`RhcZ-HZ|IS^e#v>KOf=4|+tZgX%<`K_jMoNkY!_)m3etj-_-^J~1@931 zWSP44ubp^kNgWhU(TNHAZ%z9ywtiBttOS!ae!O)m0!Xp6b6g|OB+jOS)bWY|k~*&4 zN)1SOz_2n0`G?A3Xfr>kEG$Ly>EDyED%5Jf21*TlU=10`WfldZP+3PUO6-|#m|sPu z!b#?V);seI=r|Q75ulZQ6h{wLSt6W*Pj9%()CCO8jOOr1`c(S5AL1I6nOT41HMP7I zRqW>N4OG<{6o|Duuha(tj(loBV1}gk>ESk$S>wz*Nrf|x0M~RN0%a|!F;~|HE4umW z+0+~O$Ki)+Nr}Qy7Au!JFu{!VB+aw!Qq+R?Vg>BobUDP)=okR((-+MK{pYPG~+BrM#et&m;+i(ZY_dZ~A6y~6!1SIQbd{^CJ(pKBJDoiP& z$If_ViWvqTlV7}w^v=ZhMhkT@gISwn1t7*dR8S+^45|n>OZ|I*4odJwR zJ|E9&oP3YXN`3lzRO?BtfBofQ5za+^Q+(DLt;{&p=WgVhmb7VmQ#=1fkJtyXHcP z_v0?cEUYwVCED3fvV+Tks5AGT$#p&9oR2RiRHL)7SlsXCimukS_E~7c5D=nV`dA`1 z+7{%@{hn<@GwtMCi^^W;(O30p|BdX-Nwo)FYLVM$zne_^~2v)xFU!FC8EcBJyb)oO>>t40|s<}dO zXXqQisM(5~V;ueEaSlWGa}nMy?7ONTef*?vZV)* zUy`KpwgCyy+NmM0HR&7JC7hIya-Nn6sw3i$Vb|%%R{_h^#(^JF4<|Sg+~)<$%5+M4 z)}SUZb@^FPKX%pL~zmUySxUZZX_>p(N17eRJXIL6%&m?igPain(YRZuR=xiO5svP43yIc|eLf{9= zt>prK%)!jCIpN_tnM7gX0_28#B;=4SZlo_t;50UR_FF=E(DlrFRE*FLrd;+k=AJ7Y zBy1Vpm2gMv&Ev1bqmSCel>?E?W!LtZAmocGAX#ZNat5><{?mE)G9K=Jc7-r0hcR)S z8o~SVdf!YlI5RE>`9WpzwU2C{JDZD%*88BZ|vsJXxS1$|n`H(UT#)uvwfg~N~H>`zgr%YZcMzyy>QvD?HxOGzc) z^3x3Qy|dp3QDRU((E%W1_iYVcX>HYXR==WIo^iie58(0C;YmEk@9Tg~OfzPDcB`0` z!MUf`2%adh*MRJoCJRjQm{_82?8DnrG!xh{?GjeKLQV8`Yy&4i8|(A-mVohP98Q_C ze-t@gm3Tvu!u@JMwQ0O&g9J6QBGcuU*+@8y1G0!{`#Kf5({c(whFc%NZ8%gJR`L?j zRJ%45@3VX#7x{a~r3(E-(P$)a@>rfG0UeIE+wUCMo>9?B=eYp*4D?&|gqlFwJK9u` zm|o=4W*fj`zDnxTKge7U`wQ-Oi`wpGyl6xw18B1BH1_^G$#~QB=5wfX;Pr)JTVTuP zWJ!Vn!OYw9Bf57PB0!X~aP3=hLJ}GAz+Smd8C$w$+W9d(orLfm2GEqmdfL8>xY2q& zy9${`J+a-Jj*lSMxlM-b(p3`hTe$3>&0jo&$l;6?#{pl+%3b-Ea59Q1n{2D&>akz5 z3xeWTYq#1w7H{_GvjWe2D-J?qSS@Ef$&;c&4JNN76F*#oJs(MkLMPk<@*c|!j8b06?P zEqQP^PtmS>>#ncf{nR6@i9(&R%5P@cuLc`_Y%Bs1^5~IW#H0;KFNcZhnele@JP$#C#k9#1&!nRGc6ddJ; zMtU3Sd=iMZCP6gn{S?rDV%1_)6?WN80uC)IYZa-Dtp|WfxFIV=2lhysRTDlx^@~w* zeD1b;{&S9X#s`-`&#ScND890!q-N?SyKhNr@?`?!Vz!+X)Y?sQe_Ym!QHMAJZIO#D z;kK$Pf|)Sjg4{p6_R)(vix!wFhY<(reLm}A3dFEVnsCmK=(GizDlior3Buh^j>cfs zYcHK)RlXxRT05=}MMVHrsl|4x)YP$yq682RD@?u2T)*1+aPOz@J7tO;fYL-k1_=I( zS$jUen7HCFg^QCC=+6TE%FKonmYZt@!faax$%F0$sS!SVT!avfnA2lGY%DWuTuMPR zb*l9d3H@YX&k*yOIpZGo+lk}o)pqslZ3!t5dtPwq1%Z}bDwug@1Uok${5qZ_pVH-R z#T+Kn;!UY>l`f9zSI9(XxDpe2_eg#VT8axrl<|ri(o?Gf-WDG)GtbL3*LiO3sJEer1X0nB1{9 zd-KM-7nv8!jr&hsdt0=_g5!^jfk$QeGZr^x#+zu=~Mg0hiAced)I7zobe>X`($Q)HkMd|`Qa(Bc~WP-{FqJ< zUUMp^!kj_-C(XRR+mOVwO)pyN+_FhY#6C~Y^z+Z=L1|gWFkn}ivHAl=OdiQ%y=%hM z!Te0G>&@ZvS)TE=+m*-3@3>DovN=1RpNSM0Hb>X6=Lqw%Qw%yeJAHCkSJRW+l{EOZ zzspTFC2QW!WX$;VLw*YbIN!gfHoYy2t1`U1fU4W^{4N~b(xsNf+l8?DX1sGDs`|%;AiZ*kPeC?jma2>Ew?5Rw*8=}!EApEC4HT&M^_Wl-!6;^bH z))6@qCOXjbFW)J1x6m#o`6y{kb4>Hu(ehji%JW*J(Xbk2krltBGsg z*LhXNz-~}Snbiz2f6SXX8vC*Q7SAON!0a{>ZiSvyOE z2T1?4A1@!RB7KeB%P0hX*RW5*QDegXRg00HPf^D&EA#*QEdV|7g`)A=%3EDQM$=LN zL~l{m)Nb~GMJnIQ(f8_g`Bgr`a^i;@TIXEmIaS|DkAo5p`&Q$$z{~l*5xv|pS?fpu z+qSGEl>mTFvvMHFIIhFW6*)v#8=feB^6p3shF2Ff&d208 zFLz54TOAUy@G% z0PjnEleOX$_rF+s%djZlu6 zNtZN3GxWd^!w|#1eV_e)+t0WCm4gETZ?5|~*SXej;qgFe+iH;`^!fZpR|s3Hu4aDOP-)Y){eCBAYIH%%6)ZeGhC{nc!ozxHQTB4?10d9wB7dUQ10rpu+}8ohR- z-I`2kE*LjKuXZQf;(e?2$tsiCCtCn6# zH`*;BhiQ_kd~EX!!Q#?80=LN$S1(nt603%bR9hRtOK>6UOAsFQLRUC3y-dz85jtXn zXZB6PQ%Ny)fVIUcmsgZ_XZ1VR0~cjmgC9U3#L2&bzzRylR+)um{Wr8%t;UJ`@Q+8( zTV+N>V1N<8DLiq23e)eU7wwhyIvbEd{WDJp7l=D$Sst;c=w@8R@2#m2iSzD~*b;X* z-W{Cg7p$j8?Q#X4*rWN-aI>cdEW>%en{?nNJWXrQa~# zEi3Yxcn-(V@MqYXJDwtr?`eE2D{51|lCFA-7VF{!O#+gwudh`wV`XIDe?X+&F?2dF zJ!9~{U4!n1HD8`M&cE{h)|R5o#~qs@0=e^+)_oF^VC>w|KVE z-m4PLn>2D-S~F!~`g6r=KD|$Edk?hezN;-gh5PQ5y1x5iU_Yv1m4ulYlv9gX=)7Ac z!z-V1l@d*Be{qGvHvPdD0#hBIR5Y5MbcdG<1N;`BrTl~IY=~1T$ei^_n&VwXY5p-~ z-v#$LvD!*qg9{4U2R7CaSSL2iImo?e6otH z@*mBXTxzcZX6KPt5EzU$BI{^Ha#n!}Ne&M7i>6XP_V!r&B)!P!GvyI`Zu+Uj1kj(O z+@@#*b3=bZy9Gph9-{N*$%~qd=f}}m%n3xm1-{lxH~Z<)OA_MXLrxwm-&>J;lqe4= z@tpMsZWK*j?DH8x_X?SQi|vxpi#b;7f1D-tJ*u)BFKDo0|EnZ~Di_&Rievk!_x(rC zz$ej9>Ad#Q?k}#7U(UapvdyvayIhx>SOv78JWSuek%8-ikjp?Y8j)PYu1Y*cX0t)z zv8*S)8MvpK?Ft%{LAme#f_d;n`hv#Eu9t5G8nmdo|7Z-NuIar%kYe{`6MAS6JId0T z7j!H397!5%`f^qorf3bPBFvJ;DDm;LNwEkAVmEn5*KHzlvi_X09Tyaz@DTk%6t*I zjSe#dWXuI!J7y0aUyNjgegxjS4fnK1`{rzy|MOQXEz%!%nb^>xr$(_7(ekUsW| zm_qeZ^=e~ApBXQ3>eXBJxElv|dqkOuL=3OEDUUwrCH5Hm7UUgb0b^+r=Uu20ng6g;tVJK(|TZ@m`X-1RLAm>JFh(mmT0U-(VJZo zORv?ZahB~dQcLYjR|HshEy_QSFbG2A$D-B?B}nf2uLM^fCY_6?UNg^j8t2C;R;OmX3!&t>y1bM0we@9w<9ndp)wfNI1Hwk_k*xiLKl<=1`djZnrutG||Ed=~8Ag1a08;mOsd7l0@oa2Lk$? z=$N-Z(s<>Sm5>MhH9Obe^rJB^XD#--d`C$Bepe**k!s@BSHB7>B-sFEeny()25hGO z5n_$91w8PI?~YU?e0p^_VKfwm|4gjuzFR4*&y5jIvLg~f!t6H|9IsPO>E4jf3f~P* z?xkY10kZ22JAJ7(-Lm`D>=%FZ;rFWnkA97no+4-7r3&$YGSoNQ8Jn|=#it~!A)-I@ z&C_RMbxvwuS!!^a_Lsrqs7rFjZ89pr*#}A|EjDCfkB>PIXHb;dq60*U^ITP3dcz&r zsPfv8ddBjU=S62WgJ~bYu>qfSpSZzFd8jD_c&h#s2J911rsJ7iz-7)A2yt#^hH4(V z+l#DK6E#eTt+k`rZ4KYJjLv#}F+Eh#VW%kbWbvDN8?sF{)ti`gDHk)Dg6$*CzS2=J zBxp4ECTNK8Qv&sXOoFymnwF!uylo0i<1L+DV9-ulM|QGsl6>5H=NGcK5eHD31lQVxWn2p2->C9JxeTg(0Uxfj(6~I zKyFu49FiOP5Xblc`~f6EcR}+n2L!Cy z8@dbgWC9ap5g;U3T!&KW_U^ zMe>CdpIm=m!T|A}{j1P(8ncFtO+fr!c8GMWk$QM_vJXjo=Fi0`1vP*KA(u-XS}u1T z+Aw3NhNZdkIn%WJ*;g3mHOVZ;U(EFJ^V(ovB@1K14Dr4}Od-pJU>F%(#qXc2USOFs z6fy3qya7By$hsOOZ1dgm>a<`s}>)q;557HW@1F7hzz6MZxP2k!H<++L}baH zHMK#<7T;FBHMaftw;W-uJl-4cQj5sfbkzc#{PP`|7!yQZ>yGz^H|u>LsM&K<>wUW% z_?#^9ciZ{=q{k+7(!{OjZ$p>jYFD~M4*tEDgayynMtTs7rcvMKdRD`mf#XTKJa64n zbY-E=e)Wa0c>-Zpm_CmiXxM!-p?(NrkEJi^_SmYLl>$9zd_Im!&)r@L3on%j#UpLJ zmjI=QPqtq<=g9X9tbdOh%j)N@?n}54b{5%zFWD}tn%`+FrM<_=;L>`KFsr6dAitTS ze^7TnYLd1f1`tDwgm}9k?XIJeLPWah%(IF9`97x$E;H}JIe1U)!_!G*U11QxEr#__ zd4hI;xzk{7H7rmevJt)xT*a3%#E&GA*~qgM@fuPM|COIZrP*X1>Rnh z#qsaz!pI{ow3U*`VLEe#BKO#bkMHHm`lnHgQC7UdkX*UU{i=wE$EMdQA|q-I&>gXR zL35FKTnHZmJzBGIf-FtY-E`}S>P_f*Dqr5#=IYP=>>nmoP&tDE{PZVB1Z$&&8`)N; z+g$s~d&Uip^(EFhiDF>Lxmyl_`B1tlM`#C37|p4Q?Ke+pW=+vu;3hBa?;3gg)dJo} z_~pGbR=2G1_^BB31(LkaBT2qoA^4tm(_`PL(+C0;j%-miGdCs0ov3fCTX9t;lXL6h z6BQ!BU#ZlNb?fWUgp-TsKh~mc1*rCt4GT$FVx^ndT)Tma~IO!Y+V)^pWRb%VO-$Z-#=z@8jJgDlDg;4OD#Q8 zFTxT5r@;Hkr&y%w5DFbT;)=UIBfs@xSH>Oy-hz{=c^eF3jq$bdvqi}!+3;aN#)*=i ze+2WdIci(@JtkkwQ&@RG^CEh!Dz7>L-@i=H#;7i5C`EFLxnQCsKBc#VN8jvMVTXx- zq|)(zS;=KpvY_%i%n;AQHtZR6%-1~>6KsME-<9H{6$&%NUSm)8sW12LXXfG<(2Hmd z%#C)*3b6Lu|65BIoqaWJns?PUPjxWHGj<;W)&02oO1X_$_p4vAe}g6|u%sV1%V~<3 z32Gi`z<1?;Dze4%GfUY^wB@AeGHV$tKIio%q0IOP(0m$GaJS3sX+oBZ zzdq&0sEffY&*QRhU|Srk+| zS8^;ftjd>t(B^slnH(bNG<#%R&KiLf1eF;~NVy4N^sF*PU;4RPQhrY*kpEC{BcK!|>a0asDVd+^>^IYz)Wlt2S}iNuj+XuP#nDU0!V7&2{h1 zq-$~THkz*Mx1yQSXVI@Y)#~Ij&>*-+o4{>HK$oFw6&Z&P zA$PR4Eqc!@7CjU#l0u4mEpW^;Xt(&?GU`7qBUZ-o74?tJn~}EUW}+j99r6y_xcZro zsZ;{lwppHUz~h`I8`=x4q(UC zt$}ZG?*qVrr{jGO*7Swe+E&B?AK#1v;E-TuFpgkGNzqPVBdK}5aJ1L%S4RJeME11? zW5`KgPtd7`F1^rG_a7M?bRH^%!m9d9fHC(<2Y2_m78tZXzRGkg; z0n};Dw}20q4V7tFTd3cJCsnk_@D+#rY?q0_J0t9HW0;7Smw7#Fk+-;IF7pIC0E&1u z`%RJEczLxgW|cH_MyQK;Cr^vBTf?X|afJ0zlDweuYq>Gx7K`elN5OsHNFN|?;%!6k zJADf#^QTzuPz=4inr?Wmm+P}X+vClD5@b|knK_exQcKMe`$Tqj%O=B}S@0Ru3KAm7 zc!zN!D%SJa31VmNB&anffe*Iab$*4SU+Zdg1`?!18_?ahDKEQE;HkH&{*0Czpk3nY zV;Rbr=65g)`zAfx9`~zj^pERJItXUcExMCcrr^$aqe5`D7uiDS_akz}7{9CB@#j^V#$9{MYGg5M7XeGVhjK=xEy4V0$)Osw-l= zTQ;~}Cd zbQ|J#w{DO!OD$gK137I@YUNqzPf}9YaN$@C{|<2>zbd(#Qyf5Rs%AQk+O=c!W&LlS zO67XtGgf@<)J+jKgINImWTbD@z3Z#BBG2Whm)V3Km>1G9c=bm|bU#~Hy*t(KV4h!b z)JC~M-~IxNWOgzjvhG;@t9o}OF5NX#cysZ;{q%tssjJ*df}IpY1^a*=S)Xb*q7vMx zqsArk{Ipv|=6RXt6|zp@*$KS|7z}%sQ=M7r{)Pb~{N@S%M^|)gQ+6m#+$~4w(QBKT zr--Wk$W{m&oa%3zU9%c*(c2%^(e;6sG8VGlyMG-h8e8|U61`cse**2IX_(;+$66}0 znbJN96{jBYQ4R$5413=~V-Bka9)-7xD4+Q(=lq9MR*_NQ&e!e9uF_TY%al5MzK}uW z5?OnaOX}jWC#YcI-m6h&Hy&yQV(zlUQa60UYFgh`4W1=L17uzhi_nH(+J3z~_-%75%^feMTpoXB5E zdYC0ahU=V{79aKn`b3wNsI5zmds(nmeq6$4ewrTV1^+|7??GQXt8N z>M6EY)^<%ta*G@Ve;NLZu5mTc7Q$q@9B}ehLZUjskOBxs2f@9MIy>uV5V<3M&RA*z z6N%{zwJFt%A`^LZ|61^1Ftx8F!yy~%Ju-&bQNL(P)yoY@9ZodtVvIVTazIB}33E;H zz=%_Tjqo0i*_WtwQSXZ%Mf84VzpT^x)pODGxtCFTl>xmAB#DL*bx;9b|Bm<1ix;lMD*tf)7XS#HPcP+m*X5E8QaC$LakUjbD9;JZRa;#_!MzTYo!9$q)p?a>zbTl~Oj;23xTl zO0G*DM*>^@w{p+Wcf#m%k+k<}_O`3e`*86}o$ZN|M+kr=|9_tl$)VA{bH znt(t?4_`zjp1GTud(Iy13!JO+IDra>fBTE8ox*j)?mlG8kh> zd?e&#+}}eXHpYdM!bqqX3fY_n(b6H(|R{G}1=AO19U4^Su)f zLamZiNwV9&ze40|6lOQ!iP%XfGb0H1i!+7?JjJ1w5WrhK=T#)qSnWVV+4+X!W#ATI zdz%{}km=;XpeHDLO3gv%auN+TgIlxtzTQ6#tB9s<%aWPAjdU`KmU@#;vz%Lo(^iR} z1nj>VJ+E$~+49Ym3;bF^Uk+RpHb0YOrr;(v@sB(axBJ?@YjvT(ePE$M@od+&Z?~+w zv&%kGN(5yw6i;V?#jmPRX`}v}Ga}fb%Q<;Y+(>=nHt~KW@p`YrOjTu#r2EyE&+L)& z0gA05HuLvr&q4t;ey*hsYW}=L``@`U5qpUGL&V;76~@}Yy&VrjJbyrHR(`55NgvD_ zVY!N3ExnWcUL&Rdzf=8YS0;Y%Na$@i=ES8iGRFgRD9ggq&>~?14aF0GkJ8)nL(_ZE z3)KPfvzoh|_fR=-a(Uq=XA3U1%5M+hHf#|~YSe5|&-9C}eRVium2AG!&?xybGHdk{ zQ{!oM_rGzGh_}YATy+tT&gD~8-W!R{e3|Dfa}&|Xab;ofxJ*-zQhCaHwt-3&pLEwY zGMJ6lE&lWgT4fcF^l-LPRu$*)y`a;>CtUiaz{9Ga<>MBLV`ucB`(_5Tpa7hS%2BM#mPOwH)+fg(?9^@qsp6!C-F+NX#Q7`BYNt4MZ}f9p)=L4ZJzsi{PIbdYHRz^ z%^D?gS<#)gqk|+3BQf*&T}8QVdb+6FwI$aBN=Fh{=Z{ z@T7!gMwUZT(}g6~#+)wxR3^E1=cX9F9kKUJY8syz#!SUgu=eaL?5ps&5CKYUT|Bc| z9Xl|#Lia*|1ohtxPh$2rnx~yK{UUDE9$W!fu@YDYRZxltE#qs+7u}8Z4u*X)44Gng z6+eq6NCfvoa>cuonOr5BMT32q3PMF5sHqZPI9(idB7!(9JzRb{?M!e?!((g)#FaIW z&tDr=e5jYLYAtSX`wi;`Y`is4M`HQ_Q~Z~If0XnoQ?2P9isanO1v?A$8svd5WTK~+ zq<@0py=m#Okw{+n)S?}67a;r7Am{eikejH40eKRRk8%seZ;atjxKjie!MFNwSAy5y^uw8KkxKeS$i^!R!x1 z`N0I*mASRdh_NB&!l5I9Vu5u8bx~g*6Ft*asr7{s?u_wm5O#FOe2eK-;Re0bUTLy^ zB})cyb>nzKJsvMl0#3HCJ(}pI5L;?n_{4YtlD}}P0$$45M*?o2Sl)yUds(!KF)<#{ z+C1$oRZ^8YgN4B&&W9Jz)_2pb5d7$ zZMRl8IqwXhjb>4sX$z*4S%kn2A-Hg%Cn zb~v$oO>FjHw3P`}yrZo_L)j~lqNzYe;Z_NekF*QKtA4f;(<`0#9j$`8qqvsxJ#L6y z=w>TBSILy&qk-x};j6+ZzjO#5L55&HYiA_n!b26r4W)fZbke<=6Qk3=_%6uBjNV@Q zx{#tIc!k$d)DPHX&QG1d)F@>yJkEP)_}cPSm&z~x$iX)Lsj&18kPq0rwgs-7Fw8>btNZUGK zJBBp|_v8d2OBR-Mj<%vbk_|IGPGVXl z%5as&={-Zkp$F&i*iQlB7we9p;xd?F@ud%l+r#baP#q0FCD+xq{WzcZ&ip0V^s7xt zJ^61#B_p3o9_H{I&V6aOub%jAEzL-V!%#5Wvkub$d4NTZ$;=JrzrizNCttYG0SVHd zXp;WJ*_d}@_NuDry=bq3h+J5-DVGUT9euh=wSO6Wui7oS0>*=~Pk%@l1j*1HL8)RxB&X8a0xS~hd@)OmZ9Mm+=HwrIQ1z{IftvHbiL9bZ+~BXe zd=yN{unL*0ILY0euP@;$MXYb;1Du9&gvB%El+WZB9%fhpGT+1&jn8cFCrO)*_Je#p zvDEEMQVJP#A!KH90jZn$>6xf zU;{oq#*If0wUYHwJ#ao`cT5SUJu_=hUh&x=>>KVrO(*L(x+23kc?%A`?1Yf;P>?zeYQJEBxzaDRg;% z7&*Y_u<$F9oZxCtsXKl1d9bP0Y|+}V4n8lyz!mMzNJf&Hhu-Ukj3w!)`G*({e@&l{ zJER$m3Td#8W<;ak3)(>D&{sSzznHATjg(}5U)<+3U7k6eoJ3UPa3>rk{@2UQsOjU0o)SaZhqJg@nSy^> zu+rd7A3ByD@U%CWt9&=ihzWK`ps z{>8BE6|~V5+l_$QEH5`W^rv6sBlq=R#B~x0 zJX6%Zfbk`5<+Cu14dbYu-|3@Fb4MjXFSCNx3ydErFDyeHxq(l&9t7W$%3NJtr-<0Dv^W7aQ;9?#0Y3(DCU*4PAL_D2x%QbTrvItc7AXl-RPx{)HeOa9u` zoR92cy~XAN4Fq|U-YDftuK8gO!OMySmOv?%hg|i}i;^p+#0zPuTNBsLTQ+(RoPQy# zzp+i#~e^Dml;ii!mC34cthxH9?xh64tiPW zW4^cbaI+r%`TJ)3Q!yfpqU(x?o!p{soVEh)FUtR8mH+{GjpYv|uD8VHZ|jR%G)+VN zL=W)i?f>oQQTp@ZVE}wK<++F*AMSkNdBcH*E%zDuZuAbi@aA=nP)PwNM$NQ$vmO8? zSuCUiF3B`TUG<=R6ISwMTv>_d?$n6)hp>_uk8)ul;Bqs%)Oa<#bG3ZX2O3e?c!PG# zsM>>oTkdy^_p%&FDj6#-v&aJ6gJth8LTuqX33e#ecu@`Un`V!bEOTtSZsb(w9}g|V zZ@9#E_^ZTnG0$m?!uG}Msi2eP*fb9{i*zcnGK#eqkqUhq1GKx6@j~6owx{LmPeV$G z!+BLzm|4f#T+6b>o%~9~`R%LIGk?)l5yS+1j~~bv5tf4jQ%bwC48*nL6Ac?F;Y{cs z-wby5{n?T>@LKYIp7fJk9d2BZRq4QbVq&$~-7t2)dZz`UwB~--P*`sR{k$@R@Hc6) zOu<%wkH{`|x;MioSSATlebBQ%WOJ%~Oc7tE^JTR})AtYB+D_ENfWdo~si7v%&OGc< zcZkMXdt=2~9Yzmn9ZP~g&2065R+6DPeSUubEE8HQJVByWPeT({y85GkCeBJe5TK%d}ow6xE4sWmlLcPTdsr~jGjC@BWHcZ zQ8Agc5?dK~c^dVdlJ_};Hx4&r_2kKsCzds}u1~Iv){+iR2v)Zt1D>?i*FDadC7)XG z^AB~$=q{!6bq2BDSCOTm1Uvkx*Qf;KQo;+lSKV!FWBTLWP0$EP@q|)et&fu4{sq+w4e-nl24s|1<)C%bp|EBV- zLQ=9c=@RhWg$r4!I0Bji+i&FtrGHnnE_+@C0@=e{!I>pFklb#ne&KqQaO!J%Hav3* zXlK^DP|V$zJfz}M0)kyylHUs$(~wdo*GP747H2&kIw{X@jFyKo-9R>I#n;2T9y|HM zQ&K=F;szeEbj*$9mIi2}>mimMB+uDKr9e6|8Bcjpbn60aeZW31I>)~nScD49;#wlg zewMrQAHLwS;bi1B_*&H=H$OO%lXM!I(F*9w^cw>djk3GqT$?^Yo6HkR-VsM3Mrkpd zVz*k^5{Tl56I%f9#!|c9eo}QWut%nvq*3+Gce!pu9c+`YX)*tyOJj=ihL@MP6|%O+Jm9i5EfKpQ^gnNBo0CXd1C4PO6Uz8Wx}AJAz+%Nid5z z;XV25mOAo(4x#Lgn*@c)^7k57l*%#>u@>}}Y0O*8GU=7Wv6&-41+X(#n z{w^r)3phcOtD#9^?xu^OFSJa5xlTXC74Up%E_a==_Om=O`1x*W8XxZAq}pa&7MX;y z7q=L3;NAUz{(0>_vo-=y_|+G33qqN2Ub~AM1+&X|W|6Y?0sFJIQ_C-_?F^nDj!MjhW_+bzCU{eSxHXoRoAN z#PByoUm7siIqwD6@sve2*iUx-M9Ns45P9j(vlvNTQn=Qu+S6WDZLJ_*^e6q-p@3*=z#)t(wBp$za`Sxm|VX$gQ|tAKrFpEl$QQ zdbJ=s3Qs^Yh>C^KhTH?h@KM;z#j({v>(pPTEKz%K2{+I*(`;i>tohytdpWH1uO}rr zci(^nC5hwKu{U4|07Ez>3SX*OZonB0TDCvC9-A-(*^{gxMm3rNCv^peXf;Y}B!gtp z#h~=!f;?O_wG&Q0dMVr>Pd20WFshj&I&$oH{Uu+QfLvxMxulMpjoIgFwZ~Vw;KI+5 zt}juxt6iOml|_#tW7wIb9(VuCYg7B$f0A~XD$O(|x&DYT*&4YSdlErVce>9;q{Gt_ zn?NK9lJ@)UOX+cI++a=k;JZe84Jm=vInXon-sR`-=v!08S;AQ9$74#7AAMEAG5He@ z`68_KgfzSa%8uNw_lmf>J;DgXT;rNs1(gNOxJgu=4IlFt#2t|_9@dtt#?v{=v-P;X z=Q?NoWPxLV~|><0*$k(HePCcZPAZaa$-)e=5IA zLCDLii+5KY+TkTD8;Dwz4$chDlwS7D%{*MFxvbbFGSB%Tcg_sfc@$}lOgpFTq6rj- z6LY)=zk2qPllnKnd5m;CDiUEI?usB{F=GqM^!y8~D#k`(uv?gI^y-=GF3PCH!BfF&gWjdUgWf8iA!y@*JO+t4Y zjnp(xWv0QZOjIw>_ljd!pwIH6$@IG&zT1w@CcQJV0+y)>xw$1?=wN!6{jK-&0j(Qq zx(gqIApD4+t6|)HfE`~+{`vUToK!p!nw!p*Ljz5xkkdcS-gK}2iO zFG4CajG1usmAX=jlEEwAErYdI!e2#I-M@M&qtl;bF~%7NuUWZHaVr!nL&_n2CL~G-Ub<0xDZ}C%(y)C!MBTw|4+I!84{OQ*O>} z^@c`>)i(9W=kZU_+Hwfhc~$E^K0LRR_A9(_uiT>GKYhIwflw+JMa1n^Ruz}Cz^~<~ z_Zu@)+D8Mwr9^zIuXocx40nOZO)_3FcDmW+M(heYLh9>04w%vK%+;5-=gb|U_ zOHueF;Hh%xZE(AyO^1^@BYdm4!D;f|aj?9I%xg-#qlx_Wtbin$a6c1IUdpx1fIOek z-M}!B@dhy*(bro&@n;7J?}Z%1&!=F5cb=l3xw2f}%)M%X0C0lIA zb?W>oBaO966?b*94wq%la;dlKOMVIBG-~+Is|mxMBXwq)2ThLDN9`_M9a@}@yaesD z>TtMoBwAGlb~{OJMo$`SPM(i+a2EnC6iA@M<@uLs2u*2+O8n)MzBifZ1fN&GeZ!=V z9@3aRiWnGOgj}LjE`*aIgdEx9_+5+<#nwbNrsd5a}^7lxE#*s!XZ(0o+rbNR|&eXNFMFk2D!M5(7_*y9+`e-%Z7C`!-g@ ze@HsD#mwfSTmb9PbJ`&F%OX<+`pXbv0itD*fwH^zna;^9Q+^T@L?e4mU&%MbC}h?< zh`Y@F5b>Ju=CUAtq|76H{pG(?XTdn`519?N@0;Djnd#JfzQ!S`A^s?NdGXFwN7vD7m>oR^^;a0{DBHodB!`$a=G$8)voC@S@Nq- z+JV|OR`$ZuT|L3a|H*SJcx9<33qz4GFB5@Xw{cnPE@fz-Ca?N?LUch_F1a; z%#=ATYng@4H`Dtr*Y)34?!@PaAX^nS`gfaF+esX{sFDY43WOeq;t6$erMgJjKZ=LN z;SsmBmXV;&hK7a|KJinL2+44dtmC<~ha9cr{sB?9J5%^cG+BY<@T4Q@i^E}&1{bKM zPV)k-VBTuUM70A2xoD96xABZu)P1LQBF_j>V7gg|2j?JFlfb03U>=_(p{Ay2ga4L| z`enXexZyRhzu#0zutrjLKw>6ez4**>ED^!H+3Nq*j@D#(XSrD%ADwjQU~t8LfSjLor+(w#&ZS@^_`0d7db7g zucOHp@bOjaSKefn*9b{%2Ur({k*3DyMwW2q&~Eu!UgHY0TBIleHA6Q$DGwn>Ge2j3m#D2rU#KkIXU|#t zY9>En*@@XV<-7>9e&!tzCFIVB2;8pQh3g5C=-d6luW(P*{MGuz#}H9e6FEzEf3w;pBuR2kn+- zX8v5CUn%0rQjL=mw}Jffn`yByz(0F1!JPA=`6(83@MvhlQE?(~$;H2;;|W>XWQZ2y zK%yP?(GvOnZqs>^v`7_T$j)Jh(8rD@7!W z68?X&QM2zJ7~meq)m=oJcM?3_cl_QFay&VA419^+6K>s(?dFokS|G8bccTH&BC7v4 z8rDOgb+z`}1F!b~FG$k=V5EMFaV1?7Q!dERw&efspY@4gBL}ETg4IrZ{@?yB;Nv}E zz~@*#q9ls=-@lRq0zhvKN%JxC{IBpUHXTi%rIjDx_gnmbv>yJ?xBdV7H}q46vDtIS z#aBw8>Ysh%k+|P!vNIOF=_|`2;|zd44+lZ=oB2Cs z1B?;VhIKRl0~=s=T((}wUBJs-1@gC93t+b^=xt!?Kl`I$x6|!f?C2su3VPc3{IamA zdwD1`@0krPse|*LelcvlY2>^bSY@{Yiv4c@G|O>#4qO6;_5A>YRf0CgjSF8MLbEk` zE9X`l^bZQAz;G8Wht4{%r{dCb{rRrqRM8@Eyx^fRWA;-KIrnSoZlE)Z1_Mwkn*hpe z5sbtJ1BBd@4{fDKYhG+_OqJ;``lH^c`z;mBUM$}R?Y7?rnN_CaF8Ai{&Ln!sRtl2! z6W_jY5MJ8-+ribg1cZu0L{o01<|CQ4e5g2Kxu;*}GgN?(s^no0P2S*q5}w2D)v{r` zfMeoI)2}V>%?^NiGw)j4(HQCLEEgQISTpl+D}<{QUF( zQ}mL=^kCq7pOu6ftE6T3SW%(}4olNglE<_I1b~yA04|3a{S_AU198mx6kVhYYF0*gu zB@=;H2jZzu1wt8ix0uA@-sIj}LhH~{{? zy@B7mJ8&2>Hv**GRv^MJF4GQF?H$fq-BRKbDzA_Gm=FJOsWoZKVf+97sIUF`q5cP- zu^62B7o1GG2`FTVhy;FYl$lPBJT$kXqvs6Zgdpb|<%MJpD;g0;dshcO3QfcB8hozb zOHiBv7-mJF5{agHYZybc=2nrYL6<7}Wff>hBR>S_%cpLDhsaj?g-I7+lw`uVsY_{! zu6+cG27R7B70QjiYTUxC^~By|^{ACU15D*7$8CF+^`=<#`#BQ(QvjFf_1qYDP-UFr zMoK5@S%gZIANk?PE_XsgN`J^ilcJuCaE~emUclAMBOZXlL)j_&OWtZRx@QCbB`AkF zEZwII@wtMOX-4ET7@%mY`^sK)Rd^pP=`khGH~_=`ANl*JbuH<)3-jOhV0y1U$#?@= z4(1b&+=}s7skPm-lxb}o@N2c z*xp3wUuK{+)a4Ku9{P_Nc0D%Ed}}&x+ur={@M=)XgIG2>Oca$>^#RBcMrc4J3#fek zhhfzr@ILZm`847My;{hhtJIyPM|VLt`d1J4s&0{f=dj7YK=0Fx@iG+p10b!M0#C7t zdGSou@>u71TtJ(CN%Dd1;upV7eeHOX!J(#{g;o5sOaM1MmwxcD44Q-|A|i6r`qn71 zQ+lu!3KW0ROmj41y>Qnafl0X?KEq!RcJ_Q=YITHm=@z5%^7BabKZvL2Cx^pd&mR6n z6l+6AXWpLA*~%|$P-v9-u+(LZr~Nlx@VzR10{0tWXmc3WSaPTZGX4Z`A%!D}z%y;F zmi0_%dCjzKEk@&7=nu~8z^@+q1pUwCur$M*%vj>|Kktk0i3(|JI$e1HXJD(+ACnar zepJ!e+gkhvbBeHxk|VGnFr_hrWP%_Ex|G95|MBw|eufUe5N`sCf8;3$T-+KF^U~bk zs*YE`RWk{GtCHR=wKCb8R^x2rko`6)Bf`5Q$6J5RF)xX{&MW+qpxb$S*y<9fc)JpM z-z1UA=fP+rZ)wUtg8>_TGq5dgxk8~(^jrYIw({z@PbK)`^d&@HnOhkV$<#8s_Q_emD+#xN@K^e@rkMw4Dqnum!fBkg19i3PPUE{n);r>7n;LZ8T7u+Y6NHxja2T(r)DbHrQIi4k;Np_qS` zM@WZKKj>YB<6pfIu^l1s>#s-gM{Ia z^Hs&wzcI@|s(EG|bo+m*vu!}N<6nq=>?qWjkY=+V&Go^G(k%5|K5sNZ(Kj|OPVhO? zFun17&9XLrtPlX)T>Rg&>wEe7;m5xUQUzo{OsXXtCoifHZI`kPg%ux~UYa|y#fM`y3a z`&`BFRlXURPU!p@LYAz&0FE38{=GDSj0Oq=WZZm$gC@t10pfnM68W$IL>c4=D_rO= z0m8y4GWqNNlpKNa_1MYFibij8<m^8$+YT7K#0fM@kpws|F-XuYIHYj9xVrQ^qJ`u^Q)$M+wygYs z11b(a`D@sRXVbMMI7FZ`RY-AGW?b~E!70%T@S1AZOV1p5W`7=K4sad(c1Z271|jEx zsvEZ+yz4VxpVYRMkdnYB3+VPSLi(*f#+SLh?g({&QcB?!Nt7EojW{$LBq;!4JkeJ( zJ`b^rH**M91R)|25!&q05!?FaZ1+V#V6OK)o3^KC_PBxt#~cpSqmLsGB$QYJR4ZJT zrLRZN541@bSzo13nU*WHYUTKW)z0VZp%Uny){GWY(Er<+loY2hPml#M*16kV7|*0g zWFL0_f#4oB4%3lG#On=;VAwuh@)&LFS`M#yS!Gvc=F|!c=w|&v=ty{IX0S;F-rA=j!U~K$cIY! zgz6|tEE9`}%20^e9gWBShxv8#-kpSPOo^QI2;7@>nC&5O^l}}5i?_4~qC5bmQ38fR z!QcgmhIbh9kcIyoB`-*!>T;55&%4$A=Z(1OUf$-X`($Kv8ip4{r$C<@b6Y+0N1%65 zDd1srui-*N-$TpsW4BauDmEz}xfh2fYwg;3cY_vy?%nm#RcsC5O^j5!Q=#ay;3Nbx zJKvYU~Y7XZmK)+6bG?MnA2(Dk?*6#At&ARO(@VD9mE@t_VU)vlM8d8=l+ z_K0+o@kHYtBMMjldZXHW@UcB(EXx&NM7K9WY2)dLX&fn;w@HFQC}*&kk)6c))2ys& zdzgLHN$zJe2tN4b{rICZ0;#A+>!LfM&dB)KP%=`qcbsQ9M$=w|mI5<<#M#E?2rdej zJ&z(Z27X!>BX3p~4v`5v&(ig;FMfu4>IgVzZBj-fPvj<=xR|*TzYP_Ym+7*n(WoW< zn+HOCIy9RIL4m3Uu4YrT*iQ2)je&DxU!!Js>X{#Z!3}euKY8yeVxq|jvZC;!b9ACY z#oQmPo&s!6!hz$~fM)HWa169Smnri&D2_pLJ}5#1?It7h^o1p(fJRz(@yu$rm{S62 zVtnO({R|?=Q_a&jXqrnqcjKYOfJY_uAY3~9rMOo|L3P)Pc3Yy zTMbXYl*$ipwHZ{ppIAS+2t3LclxDVXlJyH|IwXRY--{P>gvw<`gb53C+9a}5ev4{MkGnhztf;ib)yVbZexd&~H)Y#9STx*6Vz|EM*rA`{7{ybLLWif+F_j_IzT;MPqw*my48ROT=e-qtE{KvzZD$BA8ob<++TjN>T3WuuBZ#Qe2cERD;(9 zcMOv~0*sC;-0oLrn31CcI|gr<(2uka@Nxy&58ea(p>1hWBaPk{v#cbJ;o!MC zmncN*z9>YZJs{TkW-(UQjL;Ho@?9Yzi(i!eD}?3}Us&!y`S)khOyZ}5T|s3%q=Nla2T1R z>{PVMnsa9er5@-0#P*U(Ue5#=40|G#n_8a_g}%g_VK>gW%uok~oO%Vui|}JE`TC|P z!=7#posdn2Fw2lHc4yv{`5vs+Mv&ebF#w|QTAW(R-F}f#z+D=RnpQ7FL=re_3CLy30^0TsS@e7x#Ga&MY+6|n1%tM%4u zm5(UrP+pD{FuOdQw|lk#&qJ4Kyu%|ARzatjazjhXvT;pkGfq*f#Ml4bq}x-`-B=oy zEX=ObJ9MCjoP2A2Z6|mBCK3aV9ID%?I2B4PNX{s~`z!kwC-b}f;$`y|TTOsoRC}mq zgCu-=Z{~z%xqiSNni+~sf2E|b)v&(gY$X-ku`ZXfb54LgeRK6AZC{04Ot!oMaUK() z(XC}}yC_awRRTEn*E5{6(j5DDR}VQx1bgl;=2@GmaqLS5SX<_T1q8D`F~?CWWKLvD z(EEN3Lczb;{ER!$Uf~-{_0=BJJ#y z$$#F~82iQ4xzNBlQuT>WW=B@Ez$&OXOo6HE&Y{gb`FhlChD_KGPmOq6k##8@zBdJAr zsscSBB4P(J;VvZXZI)U9nO7D}0wX;y!Ly?_Oytu&W(GK99|+PArmjUDTOuwM1)2#Q zH@Lv~s72&w)6E{Qz=HDBNSePHNOU|})Y%{e-YkNP$#hKa3PS`^jjsgU^;d<)=@dXi zi3pHm< z*}*5j;>cEf6V-T0MUsn1h``WPb_3A(KJ>*8zM{^!s)KVdlR)uafnJpXdKJw^awGf> z9V%ji?@q=$>+AplUkQw1K|St~U@Y~#?}cA{oL)o13e}83{mDFRMhr`D0o55-5dUsG z_;rRas+$Dd;cTUuj=2=*qe)OV9UAUZ7?7h*g?XPMb77`Wi@rlZ89_nxwy(e;bS2#) zL{F^-D7K9g{UhxCkKA^;B@Jg9HhrrSElsLw-Qc^=U>rS#YxXVmP2s?im)x0_*D8?5 zf51c;LXG*;Fu9R#fsDNk<*yR~Yp7iSOQu$Tcfa~UPT z!4C)d!iXJ;FNlYwVi2sDdQr-HThG0T(<6C`y0nX}w6k&8z}zUK35xASUh+=Bz?2Dz zi2DNBhREyqw%lJ_DgX`@dEnRTqa7Mjij~;uYAYAVjn5VD8|hkld)$}p>NhV&_s!j@p#b1|#qzV?rOkN=~D?G%lK4<55=-ckYE<8=vL@-yP7Wp-^1ED%{knbM zFu3|+seID-s4h2C`6&F%5E*01g@3}fpCDhMZ9Nmx9e%@09bMRXQu@VSQ)@K^A`xo% zYx+p(Q4m6I2Cy6KXU5*ezV_!dCv|sK_-5J@nZCYdk%zAEFkq2asQN(JzG;%@Hb?g4 zLFc<`{Sv?+a0!U+*#W2Z)9#&;`|u7WlE#fWx3a~@Y!YG!ek@y-b{8*TzVtY5qm(Q7 zDvK-KFP-$ZRF%$%J0`rLripdzv`?f^gm%9wuT%!13yJ=2BJ*vnU2(cUN5{AK>`^;_ z3%GbxxjcmzwnY7tKb>+Qf#r0mcj^^|a@VZicEQ90fFm969soLSXD&->)8nrH2nG0! zi%|gdbI7Zo+t{oH-xrT5sMR3CaWXv@d8q4ES1Am6*VhwP$QJ$vBi?|0(Y5>H&_i`Vz4IJ~JwiTE!q>zrt{-Bcxei8qHXc^H3u#y^l`xCm{ z*ODDX-(Q?fI{CI+O0NeWm+7|*t8+eH8AsSBQP&uP0>jpb&FvfkFyD9k*;aG6o?969i~7oC*vLf(79 zg-R2}iwYVj313%b{irb>r<8eU|Kd9@@UU~A|5gXHBNYt)`eYF9IMWN7jh|zA2Cx{l zp)et)KV5mY0XVq)i*n}kdh@kpd2e5daoIg)pXg@+8j87$4T9So#k{zYMP=eqK^dAOLaZv{1m5Sg1UqDLv}} z(0|_Eu#)9SfKidRzXU(GOm!p8PT3CgP~P55Ryd{)_qqzJqkJ?Y^bS7Ig2W;wJ~6!m zXf6iF9!uOTuu&d6A-3G?)s>@(YQveMZ!ty@9g!SWS6l9gZt>|M3p0JD1iu?$>mUqp zZtW%A1FKR;1$P0c7oO`Reib!^hj+=JYBq5SFqS~!vAfa-tj>w(_UO=)YX({1e(SXf zDbI=MhxbK{Q`aN>F8emrXDeCt0S{+K;ibJ^7-s{!549i_DqU)BKY3iRFRBFj>kY~y zp@5H0LtMH|!DJC~OqptS-{Gh}5jr`lGIHh`4v^!{0BQ*B_I9|SdR440`LH)gXkpBy zb-V;-%OfMzazP27=^`wc2mw_m==NA^1X0IaVIZxYe#?Whe(3ji1xgH@s=Gv_AVLGq z$U>U&D~YsLVgn#7s25&&{p{YaO@s(Xtq}7gJJEg*=_N+XkbUpw@#aKsVhbNd- z3vUur8SCsgD~u?kLL=w$`G`EkFfa3DUH@c)^$M*`hwhd`zG zMaR+ZnXFfBu3@DM-1GHv#;dyL?O5QXp~f(*>CR_P-?gZN&mzi0M}rB($v(NgCgmZx z^E}%*Tt|#LJPp8LP(_c{uh7GsH%&~c-FV_oe~wMG3(^7#RIPnAB^yh1S)m=Vwvqa- zD#M*17pTPju~#STb9<`r?n7WAe-Yaa8i&^kSytIE-*ybc^HbQ>WvAlzABzw6S-gzV zySyLZK*9I`hL4HjwEPi_f8Gm-RGr1L*;0WWl>^B+0+r#AiQ-uy$7$plBX?!hR$csS zbq@gXHz{JWe&<&NA}DZoi1UoY0Cgv0N(tMUhLNh{3|yZY!#n~^A#1E7_ThIl{EwN- zNo(X}Majt(!*T+FP-5!lK@I!K!Y}t{?lM4$1dQsr#qy_ui7%`5bTcv{ABgg4+Sn4UNt+#pbJ9^G1VAEa$)!`>CytjI7jp3iYo&gGcK__?@o#% z3&3b@7;D~HmsU{3E|EE)o+w$=1m1OVKhoj@y#}d98ML!bbBv*DRDOuFRe8^K>k1EIAy&O>g*em01 z2bIXE%>vglU%&2HFIf*~40zQdxJ8@#>t^F8gd<#1yy^$EW2@xru)~;C;`KX#>1cbu z7~m;w#^;XJWu4`2?+k8{wI{eHo2aM^HAVaw7b}Qu8Nq+=eR+-o4YX{I z<$PZ+neO*GE>Z`DHC=8pH7Ro$d~sUr{EDdOP7t4(c&9MuWf!C2-lUs%Qz*tS+M2{( zSWpyWW?x4|R~Y^c#{1WfL5|?pJRBAi(FiL;%HG7vHXM>_OYc3&+Lh*{>o(o5ZOO%e z)Y6<5{0SA+Eg6BvqUjf|`)B4NwlE}Y9?=LhOa?`?6&thBB*U*m{PK>@8CvMI6OcliTJAL4F-0k zHtXGJdTK`Lbzh&^Ii*vrtss4-XTqhQ!s>GTVN2-Cxrb@J?8(}lvMM;}i^DbEy){Jq z!**MPXf&AA6@)qB>2XAiO;xD#w!T{cyKE|7vFv0dY6p-|B{?!QbYhk|s^;3~%mIxM zz!P)r?&ep_C@`;8DJc6{>&yA2}yz=VUP4LEu!esYmllc!AWpDi#8q3AC@!PGc&=Tq{-wT0e;Amjxy#4dY3j=IErT=bS!zSBs9>lTy2@wH%J-))pYX_LK*)5~3A zLnr7)sGr5ppP4>@&ii#$6asbo>myqK5kQ0H1`;g@`;aD2{iPoBdL0Cn4-~fEanz~u zQ=}HQ3QS)8N@w*WN}BNq*+@$@1*w`2Iv4C|QI3HArhabxYs)of0&f|Usm<&U!qqCc zF%;DV6|*tIke=iqKVt@RIdbPW$r>ZBM4J!{=Oqo{Uf1w1@Teu-sVGy3Fm&A~hnVJR zVHz;og{$vn=*NMW!S?#lT6aI(xU(6>8W#Z1ZayPeu$fN1k1@AxzxIVTMkxNqCt}V()_FOg~bmCl~fP zOpaXD$vbZ-e>;t}HBYJ`v<$m6*Brf0(O*yJpkB_w#y^SVf9_J37Vb49`8u)^66z*o zwNX*TPw=Y_7Q<$>AbG{u!}%3dX&GdUF`w?}4x~8Tdh^mpM@28s2}JZf`n3s85^S!t zA@uND-+{gEsCC&%QNpqA^*wg4R~Gpu!-naQ=Qnw~`N!>AguYJ%dC(n^nj%P(NhNI$ zUeoPzk^|1p2VSE;4AYc2`la|KWOFe@1P2p2jC-1Q1gduh+Xh$t&$@b1`$@*xTtIuo zh^g|4-FxuPdDwJ=P_{>j$3Gf?#C7ljP1ac{Mk2A=l#XTsOQtHw&Y z2E|(QGoLfhy!V1Fble0Pc10@cQ1NTzE?$gWL9y3ye2xbX7Qm_!n!Fg{p@E>~Mm~t3N|2O_CA2?ANh}ta-apDbWJVb1KlX1q;q# zVNo48Qt(#&5pb6JK)gWEAP=9rjiV%8>yk8qn52Tn7C}=uVu+qyCyR%C^hnP6M7Hp51EjLsS z6t`2G*_Z()uN5UEbenQ6Iq|g(7Pp=|?RRYZ)2$ijmmxPF^t2GDjRdYSeF@s*LK6iJ z>)x%DTq-}VHg{s2v*z>!rAlZOB-mb2Jt`~%HOKp?FzChdp43E6%lTV zWUL^{R+{(lXC~V*?kQgGeP6#*BX^ce0r>f6KE%F~bK3ezEcEHMopsPq=l+*wMv+rv z$o`~p4tVBsdFWMqYI$FeP^@OAa8sqNQi6yK2302Q{TN?_8#}nJuZk}us3?5ce6Q$2 zPm65eBu|~A)O2?N@VPD9GlTrxm9SnO5Jm}IT-6Pn{c?}JJT##uOQy@Gx|sU*egGv3 z5FWW)M#=JdIH+9?q<)@*pCWYoodUw{AUwwxj5&lbBbynA<;=fZ2r-=Q!Ir9Qj9AA5K&){6E7*x^Ux4GruN_oOmf+0pq)xksQr=)}z8F zi6Hn4^O>!$sx)7O?srj|Mhvu46TS2^y>UbZvmy^@(T3_M2TjZp$ipHz0OcghetD_+ zN5rV)kwDH+DE$M+VSrfZrBR)ro&}K0ec5Oc{hH=%E7cyOi%uYzZS1>kd$g^xPD%kb z6>@|p)5=})n1<)-bFk%i!S8FG%kb4j&er3=4orybrCG%?z@6|} znmnAn-A;n#9^CTa(4^O7cS1JB{iy5gtF-SG;ng4K2B82?=b@d}IDy>Ehi=;4tX4uz z0a0Y9dnQA!fdefP8ES;GU%*}P`tEciR=IMb)cYLO>gt45NKNMpo;*|vK0}$s$4qZE6gcMOQh>VKJ!8VW*iUvh4HFjqq z%M3|DG=og*V9+J%IQr;d7RNF-V6jgNR_D&gA{~s~2UQFgKIg{?MkT}v@2(ryhxSrO z4NrUpzI-EiL^9gMsTjc)?VdpJM&?nV*7tPl#IM=Y z|JLUC-8Drab4Yn)`)ZzGEh$_(YUL@weFoo zCfDOR3C8f{yy4j8S75}x&JFN)=CfM}Yb(s2_vgzZmuGqd6%2n#r3--e?}d*_K9n?& zD>_{+Hmx0EvvjPx(%i90+qVc&7LIuB3m{+4F%QVWDBDB5pwEPn<9b8glKDBw*4Mk6 zFgM&Q91|m*`mLZYff`Va@P@q5Ogx-GM}D>9i3qj|w2lellVs@TQ*@UsS@j46RS*9- zwrhSOL631wD6N}tgLeHYy(CFddBb-n^B>90qD3^(uI+TVwhuY3K%m@xM6o&CDuWI{ z`*%^=sUvxrhON<7quOKMyb%lk%#slb$en;&21{x$kWnle4}n}J)9Jl=L4=P zF=!wGT~Ax}76kU#H{t^cgNc>H>QhN!k?>48TR?V@EF+Muvegzq4ut_D@qm1dCJI{i znI|4(jxoS$-Iyx5Ysm*uuS&+-(}dLC4ib+G-c-xCdO4Ea^f^N zrVAlDRnwB-YiKGTe*~29?nqR<#FAJej0OclLS!KH=$^S13oVbjK9MuS>B=Z@gNt`6 z5-7xIzU>!fzPg*+BjNJli0_zoMJZhgn(-0U zMUi{bru9>^SnigD$TXfMG}-){hy8mnIrU4a2)8tN;)tU=f^@E@ROy1ay0h_8IbucB z^V~0B^8_@RuYP``s^6!ER~NM0>+uY!ivd6fnP^b=z6$9Y$^M%$mZL>oEM2dgW%1}I z=}~s}D0m==R*$^%ve}1#ZH)b5|AJ zQ(ZVd_iS*Tusd|V`Io@?q{ggdZd_R+2RRv8btf#iP|i!TDHp51-p&r3HF64Q#?q1K zDeF)VZghcM1D~N{jf{)y4Q~=;1b}j5;iwn-I$2vdpcrDbT6ErbC&7A?fw;Dpp~ z5xB?ymh9=d*l_Nnr_+xttrZSrxgBW?6*Ws}9M@zLJO5&nycia^eLkYM?9^@?cISP% z#lk31{4(uY^KJ0D9^DUmfkZdoD4~=a=qFC`1zIA~IRaDCwJ{)f;~a+5Uqk7`sADyd8ItdHtC<=Uh;ht( z{hGZ5`-7wds=a-_r$J#uvLbnVqxiOSwH4Q0sd=XNoNsR|`G$6$NIy%z`JTAWv<4t} zJ}}MBkl1@^XuJzP1@iUATjg>ZFWXJ_(3ea(AOZF0?!wfO#jv5T+xBizt<68<1EGvg zbnd;D$NQu3tcS;18@(o1R+j$?PKSxspLvkr<7Cwap1xPjnkW}IZVm8ilcohP=`!tt zU?u?(v@2^&s;sr%a#;_6fs6?60v(L7VI0)`3YUXOi~u*dGh;06RgXG~b`>wpE@g=4 zMNmg4><(Jf**LSm;kNgkjylL}e15ox*Fw}dBw8&msf9is4ajQq>=`?5`;J=qh8CCZ zduzG(vbQlgeU@1722`z>pnaxtJH3r-Ef{GPOGYA$HUGtw30@PoKS{iKGX-Qs_||=d ziiiVX5!U79jIvfi3UD)=z4+YHjx3@_0&?n<>`eNE)x>Qis|IJLZZ4*;y77`auQ(kS`7MGt`ts7BJ_@G+t2|%CnNF}BLPwc z6ug(mXi>m@ja`l6nah?evGl2X~Ah0rN6CXw3a`j3%-{!x)fG#B=Cj26S z9$Fws|1i#(j|q(#yNA>|=c~|XljKCc2~Jlumskp;O^`>-Lc9tW%|4VQ@WmcfNLT+l6!G0Fl8R;!e)bC&GEzQEq`;ftEI^&$0}v+td8{XGsj}PkxZu1j0!Q zb99P+Uzp)$A}k7D>UKZvC58hJKp;Cn`e3hBz^0-st5~n8 zpCGtVPK`ij(3T6`bwOh&yBHo-gvJ&)jj*jHc6usNd zT6O%4&wZUzNNAb%nF-gNs8sC}79u;-FHpwVXm&-<-S=xQ-nnS!EkCM74n-*?2_~%9 zMKsit<7_|5UePZRuLj(QWFe*so&q@l`vqbIq=XMj1V9!q%kdu(Ts67VVj;3-oahz? zGmXSe8KhA>ck!FsO$X$)xVm02M5p42pSVvuxy4VI%;TN z^`%~OP}^re8@TlvWIwnwBMOGBZ;WkKAjofpaIg|hWqR6G*_+H)V}8VB8kEIGt(P99 z62`Q1e7)Ym&dG`8ca8XFa-d8)B1Kr41W4EwfsB?;mo7T+c`RrJ3`Hu}(4+&^Q^N(j zKvmgA@bOdmnl3{(ZHA0qs5#q_#N;}i2Z<$~VJt>@x);=PNt@6i1&U-wUMSFxKx$LPdEjh^Ov*MwW3-jWT)^!iCMj;KzLGdaF2Ngu_UOXdy*x>6_%whLN zwS=Qg!GN+4AsN|KISlcI@O>27N-7pa&StX;*`CzIoD4}V+~mYbU4J1!(0tF$J;G$! z4#i#bSCW=CU`u3j*I8^}ulRKR_>{*bfDAffyBfoixDP=O02l*r41WNnGn>g*0S`Aa zbIpehsSq|ST>6}z4Ri1H?uf`b@jpHb3!D>4e=#xX+~aUnJQdtzo+;4+YVK$hHohWO zg%gx>N-k)be{xxv<3f3hjtB1x72V>h#FF}~8vv*+^ zsb4qaeVJAEuRpPIB~lex8T*%n;O!s6bn7;v-@g&hfIJPOA#S zvh`uK%!x^-F_HYKjfswt7%5P()Dv+P*;MFEBg?b{6<_oXR@~ z)IM`7L}9x(^o$O{3~%PLoMLvJ3oD0H&c7<(df{gLAP9yJ=kEnH$k+D`HewYt17^>2 zZU2DN?l*-bX1Z@7>9cO?{aGLDcSffI2niXWs-|ev+C3r@DK`cRg{y5H3-*?;d4WsF~2apvq?hYwfCnXUjmJjER` z5jsnYnvpOLuV>Ab(B9qcI;EcDT_Zz8;4BB|x#v*=y%$yZJ?b#3lse;N!93linfzNM0?mks=Y@K6u**!jszVOr_UkirF={I{ zXLQtN?mitscifcg9Bu$ofDHxrJbOxRragqV)SBO6eVW!I-VWlpQkm`2W~7(E6t|&R ze0~0h(1IHL37ggOLm(U4di*6&czI3c>Cs;Fk%QbahrWF(-?z@emx%me-VK!*8Yna? z6D7Nin5|}obwB7CcXhoU#nt@6`e>u7bsqLhdjAi?cyqxBAYOyTX$9XM3Lv2lIx+O@ z2m~2~gQTg`-EYJ)pN|Dft2cR^*Uk!|yx2;LK6!^ZHFNB|UmU6zOKA<{jHTL#e}z5( zNf1fgXlpWZ{(e4y+`jwMFWc_IT4NxMPG$2@?c}na*1A(QHRR`!J75#kL9~K{BQ%&w6?2g5+g)+x{ec|z#DIQ zN9K71m}m zh1X&!xICe=8#jrfIJm?4*tF;g>KN|)yyG4x z1SDiJU}i<3pK@;{=1qj$V7;4NIRN-GX6r+0^AsO;T3c@?ZL9~{fNT+yKhBkf^T(_A ze>O*Q8+Br`%3{|rcn)CqF|V2##S6in_X25C%e4DL0WMYw^!wY%Ed|JF?v<(HaUZ-T#VMfIH!JFN=sZhUWz2W6^}NP-rhXU>rvs+ zuRBK2e=K`%y#CESCA)T+%!zs~fGg%l) z&i71voT7=AeR zDti!6k)G=;uB-f!?%mz#$dxJ{Vs-eZfuUO=K~3gA>j!BQM701ec3Adl^my2C80W#H z$1BQQ5NX~IfJ^2|oYY>);}zrCkig5Ie0;VAhGzcHm;O+DNoYlgOUajs%!9jUK^x%o zl$O&a%XHBfj!Y8&_)7QH1xzSu$MFj$Hq~sLk*06&-OkX2Jmz-2r6^45a5AWG4{BTR z;eQeFu^5K9AqWkI`fL0+E&QmxNes^!QwuRO^oZU)QRWnMsIi$%o7|s>T+}=1xi8vSm2&{9bRRYi8^`?Poi&@i>dV`e*W=*- zh!B_eb$t=h0_-XME!bSvhrbHUML|(oViO_}cP3OALPr`s2E#>?K(V>44pBbLP_!x} z8BB@Y0aFY#2K$#FTCRWSBo5ZX2+%4tHco z21J5IsB?AL0y(yHNt#@3l1!%V3Eo5m6J6I4>PaH5Z4Rg-LW`&Pkf%Y#&G#39I{TEU z9h(6*MSIAu_KRyL`&Hbr!|#M8e%L$7sV^wpHH2gkm21W_5$qRC=)L&DkDyFW_)WKZ7h?g+X|8SPTF`<@a+;jDr0zaj`@zR0G z(azoVGQ!cNvV)7++^da_K7MA|5kLt5>i+ToF^z6VR>sSW{F=rEM1q|oouT9ze4{(L zBiLab>-FXM?eaQ*mGXyTja7jU7Ymi{qlbkDM_oPOt)WzG#9kC{UGlOsi}Xadz`KMW ze;jQY!$i5yk^S@BivG}UCYFo5YIpIg%xjgLg$Bh#H=PxR*6-7}uUrUikm^%nf@D@9 zVj+ow5?&kENx%o^IF3c6^wGblA%H5DnGApk!cO_7q4s|eE#Nr8fDYH5g#jE)J)Qym zNLfiTDgN~T#k27BiJal>i!l#{|Du=xzUSY5Wa(i}GLsYv=qD=w1Mxy0%QK`@OX6w| zwtxTse}0{;KFka52_Cz1lRvHZZ+=JD0FRJwJGs~PXH4~Pep7e@R1pfxbw6YObV&ZD zPoi@#qRW$ORKFwqS>E%{9{lTt-x)xH!Qs9BLHSRj0gAujov@S_Z8w{fE+JF+$LIqS z@V|b>6M^A7i_jKI{vSjB-~04`>%agAmUk6IXjYwLx{=kq*vZN4aTjl7c_-n%q3^!J ztaAPbt^M|X;RalPoI|N&{EyP9Qo>T7b;r`#X558mzTY=41oDia*j4ZUX4wCn2&h=r zAi%pIpB{KQ(H>#f9+qqe-M3yC*XQ1ZO+;s5@JqKgud5;bUWZ~n60dgcwh3gs|C#P4#iee%9lnP1GDzw--N}N(WZ-Jw zN@X=|=sDEgoied|^=#~|hrh;GD^0iAp`W_9@4hEw1W(0&{)?*Qzb_KtHBORf5hgcz zy>&f=6D3XU^92mZUT^Wc+1Qe#`k!IPf34oXY*dyQ#*)=$$^G2^Fu)DS-wFJB8c=0d z8?b-h`)ck<^uOwI|F@k*e-@n^s;D>GrE@z$ z64~G1E;51y+H70zQZE;-Tm4E?6&Eiy_}!q{$irA}SMYiCGKHqhzkZH8)&vZ^Yv-x?^5U7gNdS@91Im3j-7zU?bDe(d?E?fg}|>-AyAm&S&z zTXjU9OouTgAMH9Z=2=9W@4Q2<#2m#NATe3N*=gZMZu@X&xCx@QP;+<3uycJ~uYRVX zfnEFiRTA<-Hnl8AM8GEA(@JH`+h*&g(VD-r>25||xx_W#Q0K7WymVKo$w20^Wn{Xs zu~c*K_^OlXK&3m~y-&%m>xbguPxDIfSPS&%r`>EB`W?;h-Bf(dx`C(fO6OSAvt0w`4qa6AkG_)C2;t{0omRE26i zewtlIdE!RB}^mwjTsJv37%x3nrUUbvm8Lge- z7Er?e-DTlbHOE3xO!gSJ4!kj9!tF?7hzUzNQSjqS-fHG@qq5W37nC6!o|=v zYR{u(TX$=&bME?`>iT|n`a2wv8q)uaN75w%1mug*{0z1u`hNHCnJ5 z8^S@`vToDSx_82o5cFGC$L|R}!enYfuM5mebUFOpg^iVJHksob;{EG6Pp#J5a*e+3oKL-BeAH37+;(vdyj(Z~2I44eYLTO>u z@*8UP=5;U8Hw|$g()}#$ERlCV60*F=mw2>6=35eZdxWsRkS4ldVsVq*Mv^|bnB4!M z)6(T>JY}yoyg1X6Ks?U6g_g1hs%a6iED_irhaR?#RWEwlKVbQ&F`T4n!%sp-Alp8; zI_m~xDuSXw98z)3Fz6=r|Ik4O>7k2~6=4uP9j`QbIm48F)0z6wEa>rFBe;F5DENNI zYI^8n$^1d|I!lyb>5uQatn#R)1U%%J{MGWm_BYb*y6E?tg13&JF)t{Gao5>3S=~h4 zAGeW*Q?4$1pBL=Udlx-6xjQAO(-IRH316RcmFgBSm98hhU#x8F@p}<~X)yb-x>u!lQp?-5gvs-*nnQWB2=8 z2qx_lunG76WkW4oi7%H^)4tCGs}#}NGv!}SOX4Gu)*7Obv*Fk3Z3WQG3vr08+SUSgWnm75KnR>=js;b89%9c~~pz z{F2F-fuEfF#-Xh{uGYXpP+~Gy-$vQ}Bjqmw0S!g{`P0@jUN*_{A4&lZLgH?QDJtXJEE4-?*Jc96>*Y>X0T z>j0<6%WIEd+2mLN1k5?f&LEsvD@z6`7~Uzl9(C^HoqJ`D-C`BI;L4S(di6K{+LJ%| zhhNpn%!Z*fy3Vd1LGmVTAGc;7-N)`Of%>pUb=Fyo?9o4qjsCR{{B<42;rC0^ML@ZC zmGW!@90ry-;+?(uv`=f!snpYGe}Cp=Nn!$*$ykhKXF>Tjvrt)gcSIToxwQWOeN_L~ zClp_v@G8LtcXc(V_uujtjcL2J=N{?ML*;+(KhjV~yCNF^ET{{nJl0CxCSP=8YOsR; z4_90P!`NUOU#s_Ma>{t~v?jz7qoESNZzAs>7j_I!m$H;nmqyaJLbWyc?_fF!9q51W zKc^w)m6Z2MT>6;cho>fcX zh=2b-S$UWY0B`>m3oUK=bENJ6?pXDjI@?iVuk3GoF~~Yu;l0+-1yt|#|eQ-Cjd^P&y6DPS^n#j1Wv&m$t3!Hd5_uZR1mEO#Cun!;l z4%}qB+MB+V{tm2AVM2=YFsxMTZXnb8`=J0v;|;H0)gzM!QWW`f{onqPBn1)xJyGI+!AO5Ig3(XN5{*ig-0z#p0%1p&YeLp#vVXhIo?*#~11QW3 zhB=zwSp3sWK>$eT<j%Plz;>0N{g!WBcMS=lP#b)jwY_EIpC29$l&K{OxM` z^TQZS09%6l%>5sl!m$T{t}wSd2Is#Sm%ltfX) zQT%9tKGXT-DE^10x>A9uSR)ldPX7;c`U2>4tmqise`sn=5txdTNb;cHnA_8%{J-V% z|D)yO=a|ZafAj~_U+Yk19MNV8(go0v=I1@vUd8=4Q}BBsm8GM3ZIe)l_|D+ZBk!|_ zAB#4P72c!9Tf~1m1mEyK>r43$Xb50d3_-x+OlX&#rvBZj8zL%459}p*Jz4Fnzcui$ z(ZKqBOR(!<^4rD9u=~`~8G+i>zxDE8=9Ps5pu(ES)VfhGf7=r66Q6MmSpag&Z!ING z9557l!@T`3zi%n;XA#@_Hkz+&IMNMd znt$#26heqL3v~{SLcP$<0mr7xe8toSKpvvKMMrt`+5c!O8UuLP(`WL*|AP8N#gKGd zXQfIFI~MPj3C+_WKNBS;Z5A88TL0Xm0LV{u0ruqM zTiJDe-js46)_wO^=YieKKmd!OHvRDX{D13J5zX;_SxX(j6!cT%7P_g;S|xOU#=v7e zmH5E_GVzt}9vR3$$M}SNkTewnv~$D$K9f z-O7hGcKrlH$hn1BkoWpjQrTwyLIdFUQDQ$LG9dgj=R0G}3;DSJ z%?SKr6h+BWX$2l|JpTF=SXl;}{kVq-+IEPUUOl94&O)9S7cC+H;kf`n7qs}qc78Zw zxtXY+0CIo=jBy_URxfRU2C^Q-S6P^lm8QnlQ%9+G=9@PP{wrr7e9b%E0*JDiG(IG- zXfK>kyA9ObX9vUc&-{g2W8X(NC0@uZn6E%9!}BmXh>S_H z5nu{j@Kl)VLO=zz{w&sH#uTu3KA5{-YmZ&Vjr`g%o2M)YwP!2UZuRAY=AC2dT4F4ZoPB!E2d zE_VMPn>eCFDKIjSm{6pSH_M;`g-%22EscCjD+pZ6x2~^Fg!spL7I^sq`k>m#= z)jw-?HUoA%QxrTaj`M0P&Q@;AZY`cCoekT<^SX5^QGNy+UXV{LOjO)?_VMy}Y4hf& zaOzJr?_Z|e>PBiF$I|BtYtax-N&CSzd(gQx<^JJHFt$6aGA_Hm{bOX(eYTIWqaImi z)nTaoBZik*Vg02YsUn;hu=_`Y^gW=B-B1TBE8asqH@cRc``1~mwY;YQ@8z6z;_ovE zapwSV3TJ(G*W^TKs$L;+OYRLKN3XC3H;b+rsR34>=T9)wm;(gRKjHD+JGn4Lw>^dB z9f^s$rxnk7_Qb-Qw_~qv3~aA-YdVZHFgU04HG9l@Wa4H}>l>E{3#!kDm;SNSZxg|q!I}ma-!Sp(Xds;e3xlTkN zOgZk1JxJuBhHxai9^+M<{?v{JT3=|yzqPF>~kQanF9d7@#*!ewdJ!!nno>?Gxghf zW_N%~^$g?flabT-3zzZd$$l|xFPO6EL2`d@vYSWGzqx#z{lYq6+*;mvFVpLOf}1wv zW7>S(Vd9;H3aJfmiBA{@=jZcX*`+TU4sCIIzce@{rUIQ_%F1fUuSWble_wWe^t716 zS~I_$QShO%d8@ARlXrN=P5j)INebK={Nx(}{vWTC^7X}Q84Gp9lVhLE0HO5{K6Axs zKt2ulH*r2gG}W*=%D(es%~eO9Cw~ctk+kpd+K1Wv+j~Gud2gwmJ(>B>=;^)Ofws~0 z7J(ET5Q`2CRGk0Zev-L^-C?RTUs?z-iQAWY-Akvo5&)+Mi-bBR1ND6@2sc2)@g;AO!mP7W~Tf)WF24shB`qhX%#Lpc9`xOF7ZP6)5zr`{%DReKrT7t zsyD<%9=okBrGwJB;y?$Kh1c|?xn}x;rfcn1$(Ihlctou|Qr0u7K!*DvADh(3>uk&P zoR)h)BkAofqsW`a?@P_)&fQslWAbp<8)~?JlA)UiUvcgg7gv>8dH#+ZE9dI&*rn@M zx{NPc0hV%b^y*W;oNSkI!4U=B^oC0fL+%9fPsO29#DGilFm%|L#nX4Cd5lXA{f5=@Gp3@3iMzL1B;%2Bow{ckA>e<2J4++NG#B7oX> zXevl|?ea<5J|+2n8c_-;_{m_)uVfZ;6bU@t8cpxqP=sFQmv}V@s3YzRHL}v!D?}N- z48Tr(jZ@$kc=zub?ETffY)RMm%IClHii?T+_%}uK9%iBnHZ9!lLb<_B)CL?=NDzOv zsFFX?s>b>`X2{zvXjJ6GJkGK2aP;Y}WTcigp?;RdQSI2mkF|N(FGrDp@ZoS7ahzKU z#9wD0sc21HA3)=n<@twuUJ9k<=mV-|aI^q{swKNY7`>k%j^%1&5XX@F#lqQBRFY@mz1>bz#gA)AWhC=@C)7(rr`STAs-_K3? z{@aHzGqIINk zuD5q~$O~N8AE%lwGq~4`MOn=O*(pS}R~mcZ3h?9su~@YND3V_#W&d{^QrU|`;Q*oi zJItoOV0lz*=0#$WaNwaTe~t`quvAqIoxhKrBhvU{r&c$nv&BhMKlBe|B&{z5)cyoq z0`@l9jbigS@1FHV+A2$XCnJrYOneG3;!FZcrP024*H^|33E zpW9L=bpXX?cSXQHm3gFK({+nVUogZ2&xH|7=M+)%gm`JHU3VoFJ^`ec#pS)-T*=#RuUFYm=V@SC^AKW?Z%h z?Hm*2yh;K%bCzzhL5}ln)o8!m+@S}n-FS3NaS@!gtS?f5bhjtlyQLt!lzlrCK&uOI zx!AyHKKU*QdvEV`G-=$aDA%b>GsTCrya5fDtW^o}7-h z_9R)dsN+zT^byHM+E)v3#s9hNeSwJrZ?=U76Ft@DM1SAin>Pny1OiT$nR1;MBbf;_ zv>lI^=0?i(2wNLmzE)R~}omg_O42jw?4fki9D&i(8iA zuzl?%LuIqc!n3@xl=wh-54zdcSIEAC4yH>&06}S~hRE7mJqWz!&JWuO=4@8>?u zB&#j>BhyqAF-lfK0lf@paVvj|nI7qu(1g<9aja9E5qL7{_~kn9yx)SNOb+0 zeD1Hea-8F|xTQ|d$uAm@GEfapRO5!m)`r-|($KKjg^uw8!}5fIQmcdx#T4sH8i_v} zYC#SvP{9aC%m{g$%Xs{U&&Z%%p-T*H-Gal&>22+4niY*AAN1H2pU_KL1CrnVJs5!` zHeeC))2_;uU#WUxgC_3I8-2zPP?i^+Lu78u;ILM4!f zU*UISGxQ1#@yp}2aeLu~T)yq69xpZ!sXr~S(~_cCYsyBOG;~~LR=#iVv{3D*-tsQ< zm%}Va^0Qwp6Ek^*;(K|wp~TZ~VGe66fJZ$A6$SeQBHV1Eb%I+q${M`TNM@;Qb)=aD z-4~DogY*Zo)#86qRL$RPX1S)egjxSy_xlb=!_MfnlkC^He!qsha)H1FYS5w2DnZQR zxVWCNd&tIOqmpW1Rzg$dv2xdT8Y`gkN}bwixWg1S^3lea_X@u^69Ai{a!U zQ^Eyhi2iomd;dy*Te;R^^E+W27GC=03tbkP<*p1NfM;MYu(Cn+vyp3cqPDJ50kvK< zVV(pfYgTRl0RC@;_-F+#1klIla{U$FoY24T5i!xjKz#ei;8;rv66EKH2$IR!2J8J? zlD4PvC;zpL+gVc0#3z%)*G~U+J3AJEk=)RPg&L&QMB7H+RikzDA}EO2ZBs%fK0pLH zgFP?dI>w%exn}!g|KVHFDV$|pCLjSr7i>nLZ}ce4JHqO61ivRpMoR$+g(6eQ(rQL` zWbM}SgA9x;H~`y5!tQ8VvJL_1>2#~W+Oeu@(FkO zwfjU2#~0zj>^&*#c)zXD2uqPdgR%taxuQnew8uzfmSzgOq{^lrjqE6>lXH6L0_ z+i{&$)b=xgK%Dj1uRiE7Lo8C#j?YN;cB66sj-d`+dic#6$CVH6nvlS5(-nZRD zm>s?`{64bw1@fG~`PDK?8a{XVuibwks1Ec3gN?O09Mp|6METejbCtzOmiW!V z$TCh7z$I8xsRPwlC{%nPve;|sYiz;+hV(p{+T9&lS=`2Y4t*e2DBE;TIHEyVb8J85|DG>K$)ia*43MZUStKs$Nf3lN4t2|uv z#2i-R%K!sff1blhGR7l)dEdMBLT#1ubgd4TkN$g`vA*;lPZEy~tXBOq?Cd|dBN_;z zfpc_k{=hW)SFzJbe)D^yVzWx=-K}qH{)YkAIyuLwLqxA^f<;qqqA;N=Gx~_ImHS9q z7@uTu^lrPXqXjpDGE^2m~5DF}MJO z2v3%~8)#E(_BD8Qr$Lfnv><{_f!Il2d8ljO^(nj_bw2v)Z0Mo>YM*k$HIl0c!>mMd z7C+1t22syiz(9Ye-So{CVtHU{|})Bl%@MF4U+!mc~3EUC=bq=!GWdg4?SIV z7RHPBVV8;3^hnF@EcsE}P+EcicCDo)b!EjZ=Ho~98av_he}-o8ur5^GoY0-D zh<~y_#2Ii}QCAExiPPPae6Fj#gm|RG4Ch>k<$b-_70{PV06_&8-v>9&ExrcN9l)+u zg6wCjer-p2?#nIzN^G#*uOz@>X}Z=mCJp#Om;wk{oSUAbJ!wvE1TF=Z)W;^ zkOu~+pTS27yx%F5mtl_hGwD19nJb}|jI}4dINWr0+w?%pC3PpZH~Jy(=&sobXRJV1 z%_uG#Fc?Gw|mC-VVmGW_5XDcHE0YvMmI=wIJmcneaaQ%P#a|4H)x^(o*_pXpcoAdYwb zE8qL~-vxW|7TAmT+{C0=e=o0p{qFvQ4{twzEDmp%Xb%7HU;8U{JarV@`j3_|t$$zc z-yd+74LpkfyXn98@?IJA|K*zw3^4qeSD1wa+3l@))!iKtB*?;UT_eT{0aWYth1y;8 zUOoO1xx3u@aF5*{PsVxPvCpsoMNWjlniYDkzqk=J9%#-BW)zYmp2Jiv0w?S-0{#^n z4p3C|aL$@FEZ=cp7dARkwgo!q@k+r%Q3mWj76TyMI?lO0wv*ES|u=IkwTtuDPAhGn*yI6gXXE!n1B(>BF<%)3mU_o%Gh?WaGR&a}b< zLBpW0G7Es!t?WcL?W_TwfS3wX@3w7wnf7}zO$!V7w)a;|<62?_EPQ0;tuT(e=7pxk z9fssw2k7IQ0i__TMDRB{7J|UyC?g zD79{^k$G5rbrvcGn$^cV+$P!z+v2S-VqrWk)%7#(*mF z>s4?v3}D^!raMPUa^|-_G=#jyrsh6vd6;EV9qLfr0B49)Pe`Od>D`KKsx@27uAt6p z7tc-}Y_lE)dTvt`&#$jc_o_-f!L;KDUpDARPNW7OKaQSl03H*@*S#8<$Qd7-ap^@X zK$!(>&m|M2R*}CmS+$(K%eM8h8Hu!99 zaa^t_bz_yVn&r758#IpX%!P5p$a*?(YbfxSRoM~vvV1pQ3G47e9o&jEniGWd9AH36 zyc_`vJk{16`YWeRpT$Qs5 zw1hFy$X5B<1|c_7Q1iQX)bAx|dX=r9y>|3fo=z@TnMT&_*X)cR$$qo~AExoLC+l0A z+=8DH75rY=^v)Q$*6lxBG5nT^+n<^joYKs1+6*fCP#l;+kd4pG=*@VJ0FTlR)^$5S zpmmRTZch3M9sm2teUrg(M9Ot#+I;fQcyX5}aDzIDJ(K+~Q_vE0JxEa-GezLCRN<*t zZghEoNs`OiN6B(tZ6IB@fp7@_a)5d*Ppa;ZZ72f%S^c4zk!m3jHuB!!OBDFie8lBD zqMTqM6N@7$6&9#Pov(xD(eft{u0SsK;90#QCq?1QXK)~?H2U`0kA56h?(m19bVV<@ z@%@z;<2pixbIeaZ>ZIbCihM>?GOROuH0M!qiD9|ZNVL>dzdn)&QGTLRB|~L+uuM}7 zYSaQ;II~`_F7EqN6lz|MkJ6~HiiY*=3V0M7bXr5Ja#Rf=faV7jX6CBtpPA#z_DI0U8n)A!=Cf>uiD&}>1rG3`axOHmmWISt{7$hf?X#Cuk z^0w$|OdcabXO)oK{XweY)j`>e#aZ?Bq%y}kI zmxDj7HHbFzSb48hH1c+XLF|~|O(3^p#+|b>BB%*SITNI+SYlLj~>WS^_#%j z3%!T$d$#hU8Qbg%?GJN=KrB3g#5?w;=X6(!I(>~d`1!za2p>UjNHAi}etXlsetFU9 z07Q-(s(@#R&wRi?asUg8f9?&G&5^+2fL-!@Vf&JEbMKm`4TSYZr?KuuR6@fY`DlZ3 z2Xi6TTBnYa@hIfR)Q|HdDbV&v-v$SXX|Tl%rtpLgebjKIA;kDOYId(4WK^}tP3=<&lzv4EscRtS(KPO7Z5E`rklOGUlW zn;!|ISD^Z53l}I+w4g0$U_8t}JahA=7G#XWQMI7K} zc#X=3?PGJ`!fDs{CP>;DUC&rz1eSx(nTjA4*V`SDV1T5To9)mJvDYm$nZ{6OS7GH~ z6F7_8_2~)cKfIj1be35*|LKXBA?3q_R#QJoyjtRoA$yYy)oZR>OJ$K*9KZ7|&T_R8 zJw=hcmDxd3LoZ1e-#owUNfd`^+zs`wb+GSj-#|kHu%azB{g#VIn0njpnm0dGXAzI+nL$w zKJo2*D;B>(>I-9lJDV52n4w=v~izr4FCIasd|m z3-kfU1SO&NgHOw~IHn|EIa+6lY(5E$Gj6hy4Dj+H?^s;^Pfa#kTl1y}mywJhbxFf- z8`%khLxOtfUk&#{9zdkv;gd-0-DW8UtS#4h9eP&QeMR_t+x+`*gP8|3!}ME6sY}hl zk=T^H`&uIjAM=Ronu^yv;O}H~LlS)KAj>*GaflFfzeT;)AG-QzF<2U? zuFrKWL<;)#uB?NKoCh%}g6KaH-)TEkH6=XGizwuwhqqPJumO9-dYpg}a>^d7#R zU!+KqavYkA0uFqA^=1sI33cC~m0iEfjlid;`l%?n_^4Ore^pL_0ctmu-e5O3oh4W6 z65I{VrTJXjmQ;J)QIxEICi@}D+W`P8J&XLP_0)R|9+>^Np&P1#SUN1xv$Cq zOIUBx{P>ICye;mo=O~+y?v{OX-uD}(yxF$W46dj%Jl9hLNX>}8xroO;k=eOR0`78L zG1}yDIB)I=O}N)Q(R2nYAhf0PVFV0Me<@4ASH@e!dl+gUK9ZHuH9fxNQ~UogDIL*$ zdbI=eJDnT%f!cgHq!wE(coHvB-l6|zaiTBFXWE^(<_aJJmO4J{aQwxm5b zp+P)S67^l#)C+}DgOBy)x|SGHq&^R`t|{zp!Pa~oU7lbB#n=#bb8Sul6<`>ghkAMJ zuovV@Z-aPPULHnJPE&5_DM!R+o%FS9vD}3{!}0BnO_AJlH*#0E)72C`7ov^}vawpR z9Sfrg`QG7rrNo9rp{mz^X<**1!ppHr!LVTb*0Xf~z#s%!LtUw$DYkn2qlrfYDr+L% zim#llV{&k2#Mz(j^R1{ zXHmTS?ztcn+a`%$jmNz0%~}4688QAWYXWO~)$R^Xsy}aBncaP)?^qASl@$ZDkMM9P z5KbwReb>mWNHW&b%A(B8*z!0)Zo|{EC-N2=W_R0LXS~rf`2K-G#f_&g3rFoRF&wNpplWzhWng6ETH3a$|3lm1q=|2zM?3e`H%4LWNo<7Bv0lV79P!u>xBylZ>2(}6rVwdQJaIruuKOBc zZb{~lB*W_w_T=ztph@KLA^CxKO*NfjC=3K-A?)xLRF!C5;8C-P&SLkwYX2~ea+z)drYd(rqG0W9ya4d zKA!y@PoK`M}VaqZ-P-e}-KcC9)#2Nb3I;7w0*uRvA5bbL=-boTl`s8euQ`3~sYS$I+(SBIX`dYnstsP}AmT)w}~ zL`!nqCOc^)^r%+(GEnm?OgbnimX(d^UOjjF)gfrEY3^W*O z?0{+kA%6r6Bv6d|8b{+dWnpD$QSc5%c}3QpTpSjq)ax=CwKHeJa^p&W&r=z$b4vT& zK;lbYM}tzwB|48nYj>LVKnmlFrRPJae26#fc8{->kqbll20eF|fEG|y(r9wwGmfs>SHE!q> zebSGUWS^*Terx-{efOGaP5LYv?aVA0-@5-WtJA2xV5c^1z_!;G>(C0ZyZ`a(_@yZA zR6-?H5<_1!!sGN)2-{;Y zhG6%Z#IZ#1|6pXztjIIg9(L*CAW^|OLX{zciv#|l;_K^JCtSAQ@`o2(jIc?ySup0I z98hrg(zW>cKtz6)xtXCSf!Daes)L)np5~3fL(rnPdwY#K7#Us|WW9Mff^4`0*FYKW zg7&>RzmQo$krvCjT=~ViYKJyWP!It!t+u-3l|(Q`+~T9C2Ocj0cz{T!g$IK#$( zahz1aJe6L6xVFocX6D7gV)e_kGeU8;O8hw+4!w|MUs!*oZ7;;IIKEl^g6qb(UZq0| z10%bexrE?}hdDXd@tVIL7X7T(W;wY*f4Kgs=mFUmZhzVVbs2s$i<3x$_Ul|mb>175 zp^LX2;7Ng2^9LBEd2WZZ?!*h51*}hCC=H?3ifQAqN3^y8wx(QRtzrxmUL5tq#W!fS-T2-QS)gwMpdcjeIpyg#DFW*bE1;;J%*6mu0!{v;>(d?d^6@kO8ih`+z^jWwykm=z>hY_hc>v) z(?8uCMU1bsqGf$Ml066MGj;-{-rtM@{5)y0rxrx@|2e8J1Wx(ONZWJ_=>0B2?*{fe z)cFwash79_dv5GcRW=L%hWLKs<({sqL@;~6#GJV8nX8+c`Lk2==R3s!1zGLyNmBi! z>4pX;nwk4oxTH-L1z#M^>0=yIzV2kR*UPe1OnZxF=32ops=sEBbgR{6n+BboDb#f^ zB&^AC7(l(y`8wUmOk?6xje&$T3&F?p1oyEe&OeCx0mibpB_X(TuERC}CRF2cDR*dv zq7POxJAW+T+9b8#G~8oAXAj;>W_>RBJRhVuj8J$cD(l3<kp9gwqv&nxzxM#t>OIq-(&vEeia?*nI=16v8SEqW-r^%?M6ds`W$$dcSP_;LC z_CN>d$$gVgv^?)fs<2t?gpk;j0fNA_UMyr9h1wnoOMfjd`&$cOfn36(ku%z^RHW3z zuz-dT!15|IMAeCzz{=f2Mp5f4{0FC`U4R@NwhjjW;jNH&MPfB@4#4_JC14JOqk55? z%jPdAhxK#zEx2`5hO;ye+7kUzw7!!$hyN~44zk`QVtZ@2KK+?7fnj`(nRq-lov5s2 zczabOXy*a5ym^xjca6?V$mC}st_Rx28NI+h9=0zFBF=D|&UFLzN{bxK#&< zxjj~-*5^n_Dym;6)9S|6o=>W%8d#m{R9eWd`F4eCu#h2AUF8L-rfI8VxJfeM; zqe$>^muRkC1s2|HXHZytb)H#PV>Gb7B54W3Bm#RZYtwa*yT3OYh3($HlGr2N8JEme zDuJQb@M*%+XQJ|dcKXjI}z)fO!roDC51M>te{3HvLMSyKzNqM*_W9t0&>3E2*Ur~;h;i!uxfz`kP zph%9mmQ}YG3fi)%q8c74n{ncyD}`LOLib!El>v*wt}FH)viA7yLW5+MC+wANjJo zF8w-E|DRC)bU*y!-*xC-{(DCH;JNbzf#zZ-*55(k-yZ=+ZRfzK?TSmfwAx?${%`cj ze^$)@t1a>0zx({=D*)Td`W8NM{r6q`uA=_)DR(dJl~OWD9>)K5zIbKthR+EkG~W8% z1o^#4|8wQ>V7?eLjc~d8zh3yKm*4@tO0+)C@?U@Qud4?oIG8VHm9`ZBh4TCF3;(~H z{-00$|K9ZfSStUwy#MFk`oBH>yV3B^vGjij*}o6&{~Rpss^5;s3hG2Tv7 zudBGONY3qQQMOl{F_sI@dM}yx*^62>_N|*99*16vm5Q)=P2i+1_DhtbeSgG#;M9Ze zK4~jqYTB}0AO_fzpS0BOae0A;7hT{Ryf}}UMYaXx-01=QK%}9R5 z_8k%8)8n#p*MTqw7xha_G!p3C##MPy6ZY7sRg1r1r}%-|xq%7F#B|oWQqu}=yd``7K&h`|tl$8xxw`%3 zP*}D7u44i0(R$x=sF-|J!~HVTIqtUpKA_eO%eTI;@3h#{B0w4Wnq}VH8iZ#Ri{g^+ zVvrO_dgf9@GCeKp@wsxAVlpw;HyH;&kCNO{i0d4tU44a7n_eqF?jZe{<>o%FPI<*_ z03>93-|Y8Q!mzc5T~|-d$>b-%zQYV4daPO7Ox(vMDUq-&?hE}v#pca%vI|)G#fpU* zpSI67uu@WMJ-Dk*fxf194RXjjp4*QA|ul0o;Wma5?lOB7c(tw;_E%Cn-79iF3+1|5w1M%fLhi=vS zue>blA6FH~1GClJRH5Dc+HIpc1|)rRi*WM$Mm23nG^wznD^!k%$E^jQ2vH)IJ3>56nTqlK$@A51>UrmeM{n@&^Elnd))o4iXe&)1871Xq!57Oe4@xuYpRr_uLdop~B zK+>E-{?Xw=g_V1&!^onr+O4l+9po?`P>_EYvkq9w>BzL-2!ShP-fCzkAZg6NZsLuN>qQ?D=C?k;(CVE{u0qO*AJp zSX5KvuDBjS6KaUC7*AxganR38z$BDTC36H_6d$58BV#T7BLMelz@aUy)Lxm>cKp@l zel@6i^nK_k$EWyn43W}Jhms(0ksHF~DyfTj9(Y3>HCo-1EyMKceR25QD*xQ<)I6r) zUV+kW2GkFltc`XP7Vg6@t+RTo%3T&iJf%m}(a(WC zB;#mqBIv`%y*uCo)?_fuGO`G3xH~Lk)b*pM#L+TAQnnFMs z9G6*t+`ZaFS&Q6e&-l)DZPvY+yrynl`P1qC`yx#>Vki^0EdWF@2aoRrId~F`J=gOn zR;?ec80s(WXiH3_tkI&;T39+BngG0VklD$;eb;J6n(Wjkg_GJ?q7_FQ>}m`AXVm?w zn9tTA`8PfRp#R~7?;lVV!!3HIJ_DbN>$L%BxzY3Oo7mlZ0Sx zMw`f*o|DT}kh?7l@C5>KC74$-nB0ep4)prATZR^X1mkM;AvrJdVU|63AoH3}KdazV z#oG_wN+H&@Xyt|hwVL)_XIeA*!k*}vx&x*79eT!_e1qN@OQj)xwdpPt#dKoFk>qbE z0xPFn!31HRWzolImsna9M6|xSIny5)#pO>H4|=Zch6Jf>*8)Tl#ckJfD+yDbQ=Rv@ zXCcx*z=P61?H~5pgg*`djDr1PGyoR20fWO7m)O;3pr@=K@O9icVn=np=t)I_KMhp# zHY@cx2|Kal-;-K<3JG;O1qOHt#Zfh!{|B#~4J-AfUvDRskW!OKY6q?}f>ZYUwtPc(U0pA?-4;VpiM_+;-_}#gUNf!oLN#(Wo|<2e zhYtVp_9D61F;nZdnd6%xHJQ-#`BfPIu_?!a@mP0{!XG-kK9;Y$8<7WNR|5^UH+}dz z3bk%;0;3@!E^+-; zosS&@*qO;h(DV3>>uU6`Mmb_tuO^!XeQP9xiAUOzos&~YWVp} zTnXobil$&J1tq3=gv}}KKd-(ifddoYme*{dkIM9 zvH~Io3l;Z{L47|l+^)EA09LGg8&>b1Yj$57+}CtPo;zVkqT>j+0F-}m! zbG<#wZ&LE%V>P7;|5>`QEbqCUUET+Y&(9MSuCD(KRuW#kqAhpI!EOUElajfS_Fs|M zhk2*G%bCu&beVoq9Nh)!7IAX3Mt;`{pFHiaH$0k(S2|V5VT{=A{^AS(8x63C zDsOz5GpMPQfcmD>`*lIx@`+!6u^06cY{;NVmv}`7gvM}To<1$ny-vSmImx@UbY+*S zS70!%yqSLcb>*b{Jj+bQ;!;L*Sj8^y^fWHA-Mt*?aKz(hzAip;XJOYixFi+_Ql3e_{!_we_{1#F2Yd1I& z*Z`Q+Yd1J>ZI|dq%=9bBv%TtiEB-M((M73aUf3A@YS6fv4+34a<-D=jnChwaj65Vf z>!=Alobl}R0Lxc?#@SEquPC(xz6l3Ot;tG4QM>}p=)HZC$ZBaixMarhc-W6tP1$V) zGlkLiO2PZ9^%@m^%hPu#C=labqL{s+iYNE$ZW46(P_&ve0ivEjHNDd z3EHcZJDn%C&AqN9-re^3;@ed&N0@qV{3ypQ;XJWYWz~hY)mq}BmCe(Q8h_Ig1@8wT zC?eu!!f-OV-<|7f&*7{e<@c-XAlFy3L`gdGx$HRKa=)02Ea({&pO9%ymERBVQtii! zgL#f|GgMpb{WgsxVNb_7$&X1W2_4Z?XbHdXdW}~{sEn;Qj1JsWaiZm1LO^MNAAv$9gQ0&kY=S0xjij;bH8ZnPZZv&mY z@|k>8awvUpg%d{Za2{>q^2@y<*L5RmUG_L_K4lFU7Nt$oe*S^}t}g5JG`_^L?m3h; z_omwIgmn!}EHQY-W-kD)y^(91dZwnf644`eh8Gx4)t{=PM_Zi_aQ! zdn)=PZ*6brtuOTPn-SN>Hwr~11p-9z+wwr zJDT&c$&L^gw$7>k*UdV*6CEkT@2?rQ%Qpoc9f;KN`4rkIs<*_dzxh^jcR{$ zjwo%FGTY$m?^yLMIc0M=ZMX6KorvPb{ZHL2S{@agF|h>0EvNc)_SwpMjG+X<5JfPM=;pfUV4@3&9Vv>Mifz)9pPku0WAk_AAx{Xq zn|bI%>QAz~`GEovo3L8%>~X(Gp9p@N50N*VtLU;mC4TF^HG-uh9+b7y$`CGw>Z%(X``mV)dLJXv*euq%)eAtYgM<(=h>G1>glCEc~^fdqh%>> zA;6~^B^6*4_jbp!RNN|s#Y;3fYphQS?lbi@A1gD0UoTkY^42(wmP)Av7*3I4#HHLdGYO(ngw>A)v64Fe&H?O*k zq^u2FD+?;A<}L1wA)o#Y>E0;8%Bad=Dl{5SiF>-5c=ctuShEQHVMtN+U`kk_jWy2MAe&#NA@Hl!SV6`8~#N(z8S$=YAtvn9aZ@miG<8F}`0>@^vLP zbDHU0fJ#P-n#7fsc)Vdn5`mi?K8+}Iywt;L7R67i^x6rrGUgCf@5#s#mk{ZwWT{MZ3tOdo}=qzJ5y6d_oq`_t?0XN&ruk> z0uLOtL7`%MB=zC3J}sQ2*ejdh%<$qx^7s7gZ?OmP1?z`@Y!W9J={ z17R9oq@D7x4iD%zb-ZMkqD5pl$;2f=Dm|}ngfh=_^ySdlCEPw6_%Rm+Q-LOWSw8Tz zi-b=K5M;g{;*d_;X4?VcT9`DozB}CXEy71G0j>IP1Cxms0!M5eCjy|u8az)G^PqNDIoN?b_ewt#ZRjtQ8 z^PQRCe9vLtr$Q~~jnAX!T*~OrRXrts7C`ZWvQlOh<9Lpvlja@eP5sBhq!K=BG(p1H zzHETS9otWZ#cWLltPC||T*^+K2*Lvm1@{kbkW5X*>dMObK3OBlRKZt{GajW(Gy;-Q zSdJjyA?bm@8k(=XqqR5oi}w6DnJh^%S2X3|@D zDZJ;CwV(aCbxKV&d15BB8`~>AAxF%+;Mf%Az$Nx8M)Q2(Dr?E??z<*^V+>+iVZjp! zt^J;6h6~*+s*Ik@dQ;F@)!QCXQ=a84=Etp|c#SAL-aBVUO}Ln`0Ao3J?NyZkW5aj- z)^kePO+O>-4O}f(fidPJr{0x>4&B!~2%qs4IsC!V09CN62|bc(^FfTeEN))Caq*+g z(Tq*14=+XrsSoQIrwTH{qjOK0hx^5pb?Js!=ihW!ucFoXkj|__OdV!0+2@*v6}Dh$ z*;t8oq$0sDgs?G?#@3%RYhIDNd`n&Yvy^TB4O)+VI|=CR zrUSEU941cMIz^l~(H);#I}QQcLlw=>te!LN%bN50c_UUsZfPvFHA~mAe-TNXskAb6 zV<8#Y<6=-KEwcEkrE6kRi(#z*SMAm8sD*V;y3l(s%7zu`pkzb7gJP;SR4?Qm7mk)A z2u~`mxpL-FrHh4=aXbs4P&P()S9Bne_p?dTe z-7SiTI`Yw;r1>9~=*#pzXnjnzY_G@Hq>u3Gp(oHyH zJ*J)>I_^yf`Q&L8QTj|bPkes&SD)(H@&rM-Vc*h#9w#Zt!(QG2C{t-#RtseX=e4~G z-Gn;_d@Qcb@V-{!VBGW?iu&|c60r5aGhSS`tgfQFaIO%J* zx#m?zzBTGAG$w4C7Q}63tiqRL!vlw#cK_9zw7Z3m^`6-CwL4_Cg;5L>Mf`68m& z^HFh}b8o`P_>6vz!|>7|6aSam6fR6qx99B?%!Lv>wDmkqYrXCnjkQ{hh3g7WfoXl* zXzM3r_N7npfu`Bd@mqpw?1+Bo8JO6b`4O+8gOohA$!Qcr zi?dX&{)I)g{&CPTjvZ}U2J@aYv3V=E@DLkhra6ThqD@I339OlD zH$Z30#)(aJS6zU{$@C8^rSV!dr^nVj-xYEw>;4;gw=#umx;Zq9jh%y&rXV0Xt@NRH z(cygBnRDo#u8gY=mABgi;w!}SEex~!+r;W5i^3oW+u+wv#P8T|WwOr{tb;<+2SD@Y*a!%~N|OwpKzZIsxM!PU{m;el9wE~ero<~ywDgL7f< zGItOTvogy3%SO7qr@sPT%FC;5s?o91P?=$-A9Ym^X2-T$z_%pGr4o(BLt#tO?3Hma zvTUrv$-Z-gAwXN9TCQ6V`0jt)Q=~TBQ-rrJK?!x;jsSf!2{sMibnWR-L}O5T>QEx6 zRek%+qTQDVRb%|3OSjzM9oTf50TLn&f(NF(1_<89Tm_b{!-%DofoOBKa<@zXIdo?E{KcF4WlP-Q{EJu}O$EmLFAd`$cIwO| z(08Br3q9m z^N8_9mPP7P(z^%+2?R3;*1aD$r8RblF*JE<3_JZNd-S$59f$SRWn<6K69+MU4U@}K zF8Lymt5ynT1&x-1 zs#FQBjt7%wvZ2_DVMYbLfnENNe=ml@QA`=E$(D^tR4k3VSR|S}b#U4` z-`+@xhY!7@x16|;aXrms`6O?E($@?{dR?nGVxXVz#0)w&Fz0jl(~Mhi_vg|&RZrp6t_(oOt zlm3%Ndc3;ho3BIt)6aN!@aOe2rNdt+J@g%~yDps+5Uefxpb+F0`p8Kwo}GECZCadO z)r9G_6{8C6_@*T6%SH`f=jHcTy?{X^P48ZA&L<&4_m8ch-n3!O4&D(yZ08u*I-?=r z*@T2hMkml_s{a_uri|h7u+Za(Y|~PijC}1auXDA+#6Q_nk>}jTqnu7Y^qd$HZ(Ax% zkcV1QDdk-@E@>dreym%)f4Mp$!sxYOy+!S;LNDcH%lz9wxOmEq2O2`jOxbM}(hE;6 z>FPOU^xv;FE&4|B^e`kiVTdwqMg32mijO>MeE5{Lt@pbpD4TcW_(R;@|I@@D{zl^R z`-jtIY;+6XUHUB0HHirl+JB43y1P~Ll;Np)`{}O%6h&9(IB`TbEqBOMAAQk=p9UfU z@OTxT*2afpwodU4ksXul7fX-JmcJcyGWe8UtK+-y1#N59?O`h+Tl)F;*Bxr_wk#Sq z42(>rPRWG4Xtp$qkGHDG^HQnhZgcEPH<#TzS7j$(_xN`>gxsDYv%6<8LGM73HPWXl z_&NEiv&jLImd*tdJmkg)Pp$m!* zVk&-a$AYsDh#6JspWKJmd+XNFnFS6bt90-nlzNP8YYH)bSxKnkCr=>9OJ1gn^*rK$ z{O*%Qis{I-?;Am!k$>s1U%X!lS&jZ;HCS5>={+8Xr59@Pr__11lcmhIH}fBX!OJYY zs|O14iL!Bnj_pJl6Y;dlTh&qvxqA8$QzwpG{cB$#R_#+G*LJ_t8876hqZX6Vwi;8X zK7^EvUwoQaIPnn?cEm6K3MNw)XP434#ycsT=-a^HJ9Nj-qDCS1PE( z;pN<7X!7z?o2E7C50u1chA88ESV*6^1?o0^x$~ne^|x!y#!m$+79TpjBXB)^mls6f zwGg|@bwA9gPKC!6G{MN{#(bA1+*_HR7pSo*mzcN=A++x_9ICVn6>{5Y;IkZYKpnR~ zOC7s~)_bTq9a;(omDvoubZa}^fP_giC_J|M36zydxl_ijr1(CbS&joD_| zCUUOL{fjY#sp(vM%BTLSt3|jVNAH9vomhqvt*&N82@ON2>gL*N8n-OG&JCu;+UK0J zWmLz!*!jqn&!>OD$bwEm(De+SW#5sR>*hSzG2B4!gk!`G5gtfbJl5!e(A!->kZJKC zJZU&CN0SoKf)^ttywRLOZ>6^S_;TAg>OzsADDMADsH z)m$;`krh$S)Gz!a=b>~p^*pU&8SCm2ldkr{);l~wxz_J%CeH5KK2<4>vre)#6}trN zghg*fk)49tG?Ksd-fgZJGqQ{mS9EtO8IwQT=!-eg7+z4G(v+4V{R|KK=MK69vE;6u z-7__tZHnlYmBVQS?&34;xSj?4^n+U4q@}x8f@B}KA%~&xjtX(PyOJo_!Z!+mf4&zv_ko zTU;@v{iYuFN%ZT|f3c-K;#gG5Hg>OF(#&4uw~qhP=QiJFp_xEQPDm1&tI_G|>dw;w zP0;x*!{vvTnG`&IYJW`Jfby8fi52;`St~<>0%zv=^B4r{r3qQn4s}D0I9Npw#O2x< z0uiaF6Y*e=eByY;drVQ43SJiN|HN-Rs3Ie4pPk(fshxvKc~;T`@fllraz)siMKtcH z;h*=$3mDMmSvIPy;zJR9OCZD-aZ8g;*rn24E z8xKAt-&=OKc6U4b`Hso^x+o*@_m*~M3TO>fQi*#1D_pn;H^;H#jRD!S0`RtFacAWd z?^^R4^;!b-z;aoa!m#9=6e(v<5W8qFXa(jnl0+)b~VIt zn@Gn(^x+I;y+lx!BopNhwi8Yo!Oh>^up$4ZEtuw4yKpg>KPMzh+2AV3-!Dp~PUrHV zcJg+(E~XDHBT9@)d70IO0WY5xGXd?6n2IiC&&zt3{p7s7bFY`5qqv*$jw7nJ2<+f= zdb@oPesexA{AuB}qvDKcaSmgpqgYNb$rf1ff{#x>^5_O6te`H-My+B0~T z={IwER~tjbb45rOzF~0wYE8QstRWOSbwc^tl}_6unr@dNZ55D4N3lX*UYX`-D+;L0 z>06kfYfjaTP9LX@h1BJ!eMFAyr`#W5IJB`JhR_#uS_H*?5wRCdVJ5zA{w04_!3NwjF znr6$ew43P4@ffsTYP7zm@tsDQ8WVz6e5B&SBbXHm%mWfe4z(qH+%KPoNK=+`oT!KS zFC&h(E4K35P7ZA25mR{@DrKcEdzhg4;fA}$B8rrdH}Xd*UU0%&Z!n#$=x%bo)2Z*> zLpzY5!m1-mC{_f9s_~7Rjo5jA5~9N)RzZ)$%K8cHolRwElHN1H{yNR#R(W?QS)pS` zXDy$P?+l_1R?w7~^T2pu`tfCP=*$qC?Bw%|i>d0%tviL^{#6e)Cv;X8kz`x0FDYF{{_w7AIeS1y*S&_HJvKH4_+vF5n$N@D5`#ghzd!bx@@3N{^Z9A7CkTca z_nGb$sckZ-ykm_>%oeBT|59w9pqxgMEY&a!`St!r9qow#P|ANdehY=|-^-0xX`6Bx zIJ%JB?tTCKcrSP?b*5>vkN-c9Pdf(Uhyu4A*842|sN4Pf>KS+(b8y7JoW(}}GKoKZ z_tEY?u2V8s|Gi`$#D)Ang2(DF<}1zqt$O_Luc`C{J0wV3_Q(BWpRYy2VuP!}xUD|V^lcbXu zb9>}*`9C&p`^_J|8wd(F52}(wtmuBus6qeXUyTmWx_)k_-yv1jfo-2y*P{)6E@>x0pa|B(4{=jSW`E1)n!{k>Eb3&^^0Prb;6{Jfwatne}mj9zrb;m4g{ zuAT`2I<>KWLjMn><^Tw_K=AJ7e}>ETbASu3$RD5N`sbzH11XXi@jZVd`QJZJ`ORu0 z#NI=95dUFm#;f&S|3&!*C9uGB^uH+oFPHzSwEma5++SgA>{*f8e`52axgP!sc*gbM zdj-n=@5=>5?Ei7QrSef*_PHZ3k;c;_E2l9vi> z>ippfBcaFtQD7al1kzAvSl2b_-^C4p*ohDz4Cmt2g4zE`)cS|7HhqoJY4rb3Q?tj_ zxk||G{YPPVO9ki%%bU_${?U$8o?A7fnlaz6|D&wCeh7%VaJh~n>#e$f)g*PtfgJts zqJIY6e=+^51XyLF|7G&FxrxB9_X7BTgw$7Z%H=nOWr|MLz`awfp*{C>l=pk=wsgJt ziEoeYzE5zDFdOx62Q=#6LVsc>x^Bdi6s8y{l9F{MOdp zqXL^gSTP%tU;RD(ug{{-vOQ`Pk?Q#U#=pLGR5=O3&K^gXic-1s@6XKZw{De5ZP4XC z`RjQ9UEu%c7&OmC1l;{Wp~lB^{oo=V19{nf_a~?>H1Uc0P<&T}rCMiHss4^AY5M?F zhE>DClddB>!#SR(Mts6+O5&%_l{=t^-sjttj#Nq2+ul;?(h~^)2=PZeAkm+V}=$BHkAG@gJZ)yQCXrA($NF(P~nYaR7ZWgDR-{Qy@o$rNaOB{%o*QHy!4bLUxg+BMSDvwCU>vP0~T)2C) zjxfL#Yb!kx*%B|jCJ(4)KzK~<+b$DF*5zf5lr+TFg)Rz5dQh~MNwWIk6WL}uj>6NP z!ZK~s3|5@jy)by+3Qh22yR!dzHOrHc8=Tg(WhJGMW>Qf9*?w9EspwBL&lAN4p)| z53|QLdS?W&L}0E4duO&IM=XI)R2boGyG+zHa14_XLbYz;JB=!vBxgOGf97hWX@0=@ zW~YKp)Y@C!6d)6=f;fI2sHM14FDgeuxE!X68TGjw)YY%S!%ux8NBoF2GvS}fjp=U} zhp#W{oDleu7x@|2b9*vVd)K7?Cbl5XQ?~uG^Y25%#jO+beOnWq2D;6KZfhr|FftD` zOV%QDb5A+-hirgmAq-G@PtQIFnTd26mhwIXForOT~_G_G;3sm&mujd)-6p*C+u4-^$iK5FFaGhvv~cl*Yy zp)LA|{~$TpcaU2Rr#fwVmWWP-+5Vm{P5&q>E+Oejt~&b_(KfI*YJQDil@DwKT$K>+ zPsDXCUd@$*4Ja3!wL8wDa0d(jzRUCP7Eg(!!hOeNoYJuw5Qg-2+%uS&$=(N|>ojk+ zcejI#yfG>7XFPN7y)AdnWPn+OuQyE1iEbfF92R%}et*86mymZkM)6v)oKcPN8a|Wa z{swNahQiM@d)5C*EOP~o-X@JcDb3*Ed}47>?J0|(mCfzIcc%`Q@v>yiX;n6q!Okdz z7tWCwpF@yVRUAcHSscVguYcqwHXTjnTsiV^-=8c%s_wnr<^6RTiyflO5v+Ut2HN+1 zJe!iIw~jUTlt^Gq*fpZRu#AbYlQYj2B}Jgjl{wYPiwGIMw(g%sR|BIL4&!Y$Mqi@Z z;&9fG2O}p62bhgDGBw*+wDhpD9hg2h6EHHj*4A$x$}YkDk}(H^mBK@fkQW+j&UgOw z``=?L$#UG>3m-af70ub9JG8Ju0N6ZvTR6Y~dlPE%m|-`>y=j z0V$#MEwSsypTntK7fa|zXI?Ic(BRv7a;h`ykEjOb{k?;8B-wtU_V|w?O>`NlEiv0S zP@V(`_QMtON1l8YEqAT*>tbDtrIgNf#&PlM{P%DPb8 zJt_%AJ)$x73k#%xs`3^M51oIu66e_4=MY(|%36Z5CLnPim)-}lYiJsk@z30t3>ki7NlRF-*qqL3U>5G?%nUa!{UC@$}5vvOyT!+UolF$}cc-Nf`DhcAq?C$ISxQBJ4@(D*L+T9v5 zl1qq`hfQZW_Hs&xcrUNa)pwoB(6=6F2imyqlNheUAX`+H?qq6M@c?d_iz7X@Y%bq| za-L6mY;Ax#kMLw@Eq~lXnyhnn{X%KO8Az1DVr1Y|I+K^y(PhD=?;xXMsCVy^RYBsq zyiJL&%*npp@A}#*WpuW-iI-D4r^Llgj{Mz{n9npcbfS@awWXGxccwl`;yV98A45tj zBt}~|i(ON=@8rg8M9>5AxRxniwia#Z_%|-jBq?hy&+Y~ZQgZgX#@ecWrE+J0(3|gv z*B5-A4Z1v;f4}L$^dKJza@*{FRh3<`)uqNTr3cn>BjH5er?KR%ox65ML49GC%k5Z6 zkyONeFSn&Xg&V~+;UCJVp^4s8pX4S)%oEl*{K0jgb&uIJvIv|moNLwSyi76BU+Ak$ ze9%yq-(@D1;YdU>mReoDbdh3P4$kQ==sv>?R@yA^LWjVaS=mVQZzL_tav% z(_`XS;ihy=a)bTwDc95=vaAT07U&Vp>2;aCZ;2%94J#bJ>9bQGC0*@KLGHN^5X6kK4KfJy)57EE@C+ z!@u)))E!ge!q8sJ9Y~OW5MrcyFxJO4WwK-24WGPwq_cq=!d`iLmFGQ33-N1w9DT)K z!PIBDb-?=%&tmuT>Hfu!M`-K|S%WKN0c2u@y}i7*WMqTsu+|SCnF1h9Hzg$g01{c! zd!9c?%6iwiH$}c<0b0%<9u3e(?&UPyInJH7cby^ywl0vcS7^TxcC!TL08jB!nNLv= zIJ~D1p(qAhja|D@Y2!~YMO!UwLVD|0nouU&$Ih=Q z2j$AYG_b78hn1b%R!H7rGU(1s;~d$j{tHr6mU`OVo&S(0&RE8UgY{eUa4_{0$=sE2 ztx+@(0y8@lFLgSDkg$?F;xB~@GgHVp)#vCf9M?ZyR05Ykdn;G4Ah;BR8addM zFy-2FX6w#%IpD2T`Bx)<{5jKgNE?{fIZgt$h z;tnUAo0-z3+IqXzZ>0oOE|C2AZ(>&RBRZ~3_If)v@3JU*L}=N6u4v0kV|iDaK<=@! zGEx`smMHT6rOeJ1Vu-$@V+UV(1%4#|?ZLzA#_>WlkRG){>K-iVQFkC(DyNjmNeE}a^9e;gEZmC$f`H-8_8-clx^L-F0;vCXxt2Q3%qcy>g6zQUSYZ!VD z^^0A>=Zr-zf)(_Cdnd3?mQMRdNr(uKx6w*0;gQ{>+ zH;v7nh8nsphjvMv+HP#zDQv`#m@ErbK1b}E9?;wSrYNc!sf0dt`*hYlUg{##=dwU= zvj?8$gv2?`w+gJw9a-Skm)goKue@aYO-*AY>y4SYHnk}2lF z@G~`RH;TDnK~csKl%(p9b0wH2`hD-quMTd*X=F`Ju4=zfnO@vmrt4&erO`L3xG_6b3ls7=E zi#C;~vjR7ndJbr<3bD5mb(^1>we~h82L4X$)q#{|P9Ou!xRMNp z^GP`dEUNjmzNM7|Q4fIVENQ%}bfYESmQWF{DsFHWIhbYekCpJ2M+5a*R#0vF?t`Jk=r#NOac4?r#6Ds2MTT9>7w)&M$!koP9lW20e zTy2vXhB*-yqs3n_)6ckD5rgX!E`fOI4K#>hwKmfcnri4uhm5XmfB9- zd+^ASlcl6Hx1CDvIBG7?Xx5o04gHt@(*G^S$5N=T?@p~P@tc0MoXq=%zZzEhi=MtB zii~Ue4VS&zvdt1jRTU^H=xaAx?hzAojmGG%3kG&?9bnbP&8Kv+)Z>Zm3XCyVoNbol zK)F`FAe|R!X68n|D%ro=sek-xI^?e!cAnkgb{hOzqo;nGl$2ujX_08{b$ z3{>7*E~L&brF-s$x1<(l6^6Fsa95!d3F4!NEdFPE=DJw-M1;ANx?6D!%}R-U$Q7k^ zcJY(K=u1Ol1_%ePIs$zQ_(IF&{K3^ot4bZog)o-Ilh}r%$nPp5b;;dUR0IbC+jfMt zAv_1_=OWr7BOJV@3q$38TCD+CZK-SO$oguxO)kDX6xK~uw7)PoESGvpQr4t2#e`9; zm!;+EUMNlfvy=Oaj#H_dsbNuB;m&e$ubF$lWA0@4HW^oe#_%{Jt|Qbhf*ujujWn-g zNBe@%1!x31jjmcd4FgOq^m|-x-#{3WRpQsC1ryYF&eT zleJuK{i4Z9XfP-l*G;ryJiKfjLFZR^JK5vCmztfmWz!U}3P1}2Bj6QW_-F#m149rN z^O|t9M^(<(5VFJ!(E6Tc^UpiOS|v^U^(=a0n;M|!vwZ2oi(;D@oET|`Y?ft5O0KMr zfbXg9S9>~K;q=MMHPVh{*rmKwX3KjUf`lp&jxY8ck(V|s#|)~Dim4?!`5`+WKXA9@ zh?BD38J@~7jaC>w!&_v_90`mHcYtEc3;&v56_N-W#nU2O2gb>v7;ZZX_0%|I%~Cqu z0UUiD`T_G57Vs7Kd)}Q$|5|?7p@_@d*52NW;io6lC+ynQpBlm*2c>_`r>N0};lH>F z{L^MkmJ0lM+?sf!!vZiqgkl}I@v z#uU20jilWcQ_zs`!%oG6@W3KvWo$iMP{-EnHTGyONb(f&yO{%K+09SJRKiT}-`{+5H0|L+YtlKCTByy)8TSs06SpbiL zitHgrn8xEA@9H=CL&4lTWIRe~$UlWwmfvv7x>97PMF}hSJP2V@t`TxSEeQIRgeasi zZok;b7~J=_&B~mKK;)&Z(D1NnPrPy4SEnq!XxcQy-oE0NsZYxXZsR*uRWvZf;{kcb?{Y8{SjUFPttg{N>=^AXJvzcFHurLSf=7A#zZHVcp@c8K=V! zx?rPko%t~AMc@~eHO))0Pjv>NYq|MQTIAE`{ZV*vDNBOHXR^e{9=u}p#I>YJmVevc&|72i|Ook;FG&5D>A8Bh?OPm${K^siY zB?FINexB?6<^3EL(e1R?Cuz*xzv1fel^@O@WD~P~;^$BlN8*6DR^#Pe@zQnWExyA? zU0<)$*w%&A%F4fZCIV@9Y+OfnEmWU=;m?96w?A*Tsg4=EUBj|*ykaR;zqzpZn3l*%;SUO(Q&L%)Ul?FL##e5G^SIt5M{J z0`2uE@+s$q*?F8A6m1jg^99>j`#%PTIn3xapNOLewh>|z1EOp6H&7jI1V}DjnxMi; z34&j=+y?QQ2j&H;5$KN*hgo{9zKDN5F`b34ZC)6*oah}!mZTmL& z$UyScW(r>r7jeg$9%(5AAhJqT`6d0dc>QZxL0~-%?Bm6dhus!OX>>+1pGTtEz!Jj! zOLafsM)x-t{jPipxifh?qO$t)V=7Z3YCv`|);Z>AA`z0rt ztHGhatB|e9HL%`RSX|s-<$>EFGf0^R9Qu0Ogn1O8b<)>utXQb#jQ|J5#IqT zyEFApQA1Hvmf#rj!7k3LD0Z5j6l2+Bf|BxCNKIx9r+gUzE#N5gcF-@`%aTjx9rc5v z-DTf^kJh@~AOdQdSJF2}E3_Qrn?S2F|2a9|9WQMhjnSyoWBJev?|>}qvE}|HJ!`P- zp7cnTY))2H6Tzgk$Yc@KK@8~JPa)z0aHhDfsEDk2l+of;gAAq6UTxy_72bd|r?cKC z>YCjs3Tw9O=W=zo?;!Rq1Gk7{vt>wUU0}u8{uahP zF#z^I<%gTMX2PCE{aSC)x%tmXaYHD{=*zbAT@J;XBQFkR9d#X0Hq7-jGVJr7X{N|) zNaCl?XPxSG@{Z};rnpYNzxhAgzEwupN&1x-M;y1d%T5+L)-5Zb=lp#{0K%dkT2zn_ z)&iTq9sl>AY+~zQ4U{qDS}(6Vu|NN)1{4z2K3rmP+J?+ty-;2R)0ZNG7hbMO;q}PO znqWNxkbCB+(mKIy=pAs;LI=-C$m5DE3jO(+viWMM)Q&${me8*wKfnT{(nhXxt;hIS zbouuO9|Ts>k^e67{}zj*QvRi+5|r;GICBiLGRQSO`}ro=RTqlA8Q$ziDIg|H`&t`f z{pc!<3GThN#4V7e4=S~;N4s(i3#{H^Dc%*cL9lT9Y>ZVH!Q%&ER1UNM9uUyU1tUE& zlamD*+MEY^5SAVgk(ddDth}Bqn{OgU}U%Bz#PbSUePrA6-Jydyo;ExfF7@c}Rl8?dS5N$}{_>{T9WrO#1Y- zZ2D3y#H<_~iv@uW%qK3sID-5fCyQNfBtDh&9lRppw$5xxZ`s5QC|7rMX%{p~%M@e6 zn%14>tq$`3n(%QQL4<|cC5(=yqTBbGYY^&}eD|r|SIu6oIB~Qt5Gn;H#gPdXqV5&0(EmPU%uR7Pe(!-b5TUl`XmDq zT-ND7R!X3gT$YJZQS5J~eF(Jr%L3Gv@mK)UL85kuw=U-EqwV#p|IPVx`6l&wPh{!Q z5OczaTl~wPuSH5VD-#DW8H zr7~8J^>l#Se3y3nDa|Zt{>h5joVSO?>ZU?kIo-Z}L;MD2wd>E0QQ z_kANui#;}$mh^sf8Bv_bq+^)|pb6o4sLc3W05l$YHZfZB#ssSVatL!NBqMmSVzHbEdWL3>ugpW3^LD(n;hJ*i!K%5W zEsAL-558PI?&x)yB}GTwH;Dlo;TZVy!_F}eW8`JrGG{d{fhNXGkCh5}%L><(p4lWB>uG1_MINa0Q@0UB^ zME~=e!W+8t+v$R2cwML6pyt*C*sSI99^N zHo$dNPzqnQAt=@e{jB_zaRclH(HEKMI>gG5fB;4YCC<%nrDv7c%9uwo%PvImgnKz_ z(i2`uzAyK};|Geq=+7veI+^U}Sn68+W7e5vk_Xl}Xh@T}pb0|4 zl-y9^G{op-0nt_6V%RYT*S^r-XGqmncc=RZ3ihF4r5>;{g+ldy+1C0hJhe z9Gv19_u#x^vV$WXQ)>y=Y%+GjBpZo)XxeEe2VEi0fo@B40DO-=M3|GfECzMF#aV1XNb zRe~0lGv2q|L|tll5-!3i?%K$tLYelu9fs-4p;2Y;;^CAY;-O|w6)z@@0C8ccYI@)D zBBP+DigZOhq1HI>!W;)|!zQJwR4U5QtVDM{VMU=pxzkzS{s}V!w~6v;IIOU0X4S&r zsS^C|3pA4H(+8{C85I$?s){ozr(sMA47aL%wX5ssVocIB!|D5Nea)2j0;uWxaxU5v z8v1{NGuh8{yk-xVpDuHyjWt$iGPzF*eO5OxD(*zBIjz?V^2WV{xkz-l!pBhrg`smB74hUm51jjot z6EJS}a_rWl#`$Ilc4hP$BxArDPX@=kn>_VH%pO2!D=lK0^#WSm5}HeGQxc%zx@*U%yIHE+ouIWK{X2rJ$IED-$;YVJ=&OcIH_bJ>U@Jda(Ml zw=5sEP(n{jA>8V8`gHOg6&8DZ0VA6Lq3h9+ic&6sZ>Mtk%{+E#*S@AV!kh*cg`od* zx0aM}sz#hXN7)tuUuQ3pE7I5n(yYM4sMGYDyWamJ4Zna~6`8~Bf3Bh1Ut-T^otgsg zT)OR$VRFoADSz`zB@U>Yr=zr-fi~|Tb1HGSb`bA}_?VEjUISZ#na1TfC(ZSx$09@# z*q7UI3SUQTHGO*1hNc7tW`jN6BaV0>9S1mXLYdSqgWA37!?*c=3m2c~l*6NoR*lOX zQUWG@%hBXVFW@#dX&@gFlFo+n#Y*%fLbs%l^Ip)VU(hG3(g$mi3CZ zpP#V{iGpo4Y2gz;eZ__|IeHiuP>y(6}rTY9d>c$}F1Wy+8(F!L1y!9USFV z@t)aH4a#BMFr#mt*8>w_;&M<01DKtX)=0Q}hr7=w0O zz)tJwxQ}9u!oQe{4q*8eU5(vS$DC`l;uw1j(%@`R+Be{`yS8&J_ z6yoCR3L_zyw5a33=kK-)f*xDh6^OCqsK{$dbFVruNFV|9Mm>RN_o75bV6TeMR)v|$ z&A8Wr{6-ZFa*n|rvnFu3Qs%bnIhf&C-^_X`s}v{oyDTJq#GrxSGM(E(kH{#EI_nSbWt-%jO|=j0+^P^1}@Zk>D{9b=1xVrnd`#I$l(bB0R zW7Xe^@70BByA4+tc9|LT;oPPK-H0A~QO&><5Ija4zCl~*>=JyZUYz)wM`xxX5eIay z&}IfWEUQ#uTstJAf-k?x0xt?G-3;f+uzRUdFWTF2h}Z+0}F zq9%sulzof+D~mbor9IAqjTw+@QiH^d#_t{5FF9{`n!~tzKZT^xbdD{pUbDa zx}H=ztz@^GELyTEr{4xk8of`W#^)}8hz74*R7w6_NwJw*doKxYy#X0_SsDy97`)Av z&z{AJcQNhF*__@jBQ=5Uu-9)+aO*S_w5a#g*?Zoq!=~yZIQU$* zcAWW+@!`V<(HS)#PFZeuK?QkYxXw6E#cY+7qP((F1%@gCd(QlenV`L`j4fd6^rz^zr&< z{hSjHIjQv9<$s;29S@~adaRLqyI}AM``vVcAa8Nbu>wnd!@Q9T@g7UVN>jk98WSkuj96Cq;%A z@%+V1VDgEB6Ut!N%x&S^M-ag8$YJ~5Kn_b>c()n?3O13IdBQI@xDj;W0-6SXK0RP9 zol$c2=m*nF^_hR+I%mQ!?DlPW%&(ijP5gs;w(9Mkih9XA`ix%OYVayFB7i*pk>cuw zY#I666gX;#)Z87}l2d--`VBhgmWfav7tZCqhpogs^nFrJ{HFd=A2HzCtcZG;#V|9& zg2}U;}$oJh-D~Fdo_z$$KO{eG&)Cz$*P)i@=csRfAN9o zUeI@GV)vPmBD_=osiwbGSXo2WcvZ5Bbx|0? zw>7+|ZAi27VF(%K^}SMn@ZD3tT^_6E$?pgDtTScg7#;qk3{FwyP}V9?|jT$Oo+9cd6C<6NAIrqq-hY{v*I~#Npr6N-sv(9lX;_o%$c#*FZsmB3 zn@*r>k9(qHmz(NuhmZ^MZi0Q8umf699hhp4LF2IJxTbQVxfK4>#B4jEZiIs0{JrXv>n`KZj7twKqC>#6r z+&nVW+X+;zjxX}%Jn6Q0+-MRt196R!Q>&v%~XYA^N3HlZyx0I*=yEu$Al!c3?fC?5(VSd0=wLS zlDH0EkshJM+({2C&D3qWmOakRIeeZ>_JT%HOF3VU>pftC;F%6b5TNDC(--Z>HRzno ze7Zty8}^9i!N_UhuQyK0%A}$28Bp#Qf(;FHQEr>z*B3bt3(QB?>e3y#_D@W==Wtri zN6B5ciFBMJ@268^+3&6Td@41G#_Zn*Krm(TH;t1qw8#Iay(3(1MZ>AV3&|pr|Mi2rcuh zVuBQ%j}M}DQU_o?i&&)R!^>)YR2CtKk;T#M`!D?4_7-|UCn z4BC?zJQMyBO8u^-BZ+nu@rERTW+M8Wi~HYYI>iK8%`>{8RMUx!u*Y~LS}94+^>uy{ zkv5|E7G+*Pm7ER^z@`xq$+YY|XO~#xtN|-ls`?wSB{qu_T{0_zP8|imb_j$=8t!W9 z^)`X@4uzW!gau(|XF*)q;Ala@6aA;SGqnP5e81Wf*1VIokcxdIt#>~XxVQ_5qAcB+SXXus%i({rF%QU?y&20(V5CBh4=X&1Vr6C<7*<(Rgz-ypxqlCxt z-K9wHAWvk7(nIU3&Y}aDcAIHGq>0i;>X6FI+LS_xv$Z;ITD@+;IAd~7I$VV^*YWnk z48Nst(YCePO40r7%sKNI zH6vP)NKK{zA=&`CHDnR3e!tDj0%cw_m0(6Qj`lH46$y9ui9?v9N^I-%iI``h@|+Mw zA+Ucuavq5Z9tn9lQAM-{)4JhI=QugIoXR;|DAH4@lPwY?ryI;KQ0|Ta9d6z=g;Ur6 zq4)(RpO%~vRM5%#-B7|EXUWy@allZ_u4D0lbHw9YJt8*5uyJt3>NgocI7*~RS` z)D`YZ2a&t(Wy+L+10mb96;9H|u9IalTofr{X;7>>I0ZY~nP4{aKGF6kT$y-p+SJHL z1Cjx(z$IU7J)Z7F1G@+e;3rRAZ=JU3_ohZ5DZK7pciqz6mLZRw1e^#*h#RC>u^<;7RlI=O+O7;Eeh+XdOqGcbH4jE^QR=Kz z-j6&DF^|>D22sG@LEb4oY1lnZ>!xL?5&)XaSzHUgupYo4~Ai-ntV%aU!|C7 zV!Y@OL+@KSm?S^Pc*I9oaH0w=;|rS&xF`1F8HrRd?lLY}aMQq}SCc|=0Qz8Cb8*Ia z5Y2}fk>g+PjOGO_u4l6nQ9fVI{mG>Z)x8m zv`DWB^G_?9)T@-X=UsbcM6RrA?TP7$W-a~L z%!zc>fTnKSFbnMMxSM{t&r1mPIG!GU&r#*_s$+ySZCO`F4fL*GlyLIE z-4)T#hv3K^aSk6vzx}Xp(R8&AN_Oo|zpA2ECvEgVp|c^SiwG4?_0s|yZkB@FyI8KN zAb;=7P_#_09PVS`0S_c{GwiN4U7P8I2MZXvhxdE*N>3CuNh?)AMspn7mBH7m`y(7b7FDE66G>w7?dI6cK=fSgPb-hHUEs%7CL} z4KYNxmn#NwUH(eT`y487i_})y#hLo-i!kMpP`Wd&ulP-DM9st}nE2GdJ9#V_7l?Mn z^Y)_}JF)v(L3gKjywFwioQS_ed@?=af5GoCi*`2FmYJixy>V~!4ldBAHBJ1oKTLii zbHI$};rroef5_ftf!SmQkUCUla!qXeH{Vim@(!!R(>#YpY+$~lG1)K{4Mr_>SN;O) z1Yq|e3HzE-(4DUKUV>CT$TO55D)|&-c4F_PUxY`7DL)In1UOjDy$XfideyQp#k2TI z0>Un3ijk|a-$@KaktYCpZ-H^X*gE9JQ7CzA2+P#&5P|ac6}P%s(Cg}1AdHWm+6)6@IB4>9 z{28^}s+qzGniq_Dn*`F0I~!G>fnrebXu*t6c1DQuB*HSIK;xJ%jHjLng!48s9~4hU zJ5(}0L#xR|a{0dV=HtEY&`3X;&C!wKgq-A|;P~X*2ASor%8EWSSW*|NJP)f`Lgu)o zq&70SCuve$O|iv>XH?Be3i~SS&dgN~w=N)!Zo2Ks#jN;zW7F zfgVSz@vMP>bjH0S$HFBCL9^31ASg1Go>JCt^4C`k;%Q2y!`@J)0%v{?SKdDioKRQB zAjAD~@r%k;fVQYQ1Q2fAu9o0M@gY~z#R-{zi0a&@NP^!;vQv}Nud9MObeHxieX%~7 zc;}!L$x20+snE;*hA4f7t9h)o6X%D1;U@V~oO#pdfSLqkD-gbhw7W5CG+b{$G}_cA z_)ZU|!~HInc+?bCu=X~zR8Lfa?1ayJ?Y$-0AR2grpYW-8OB%R98m6=-&C+T-H9$Ku z0J%-c5w1^8IIB4rhp8zBofA5+AkP)Y>#vN1!hG@x+d|Es5m7F3uF8IL1tF(mZ|vT zJ7s0fkrupQ=XqA(&x5x6q|>t%6o4&REY^cO``YhN>uQib5GpxD6b0#1k{K@h)83d+ z0|d%{c6j*msbl*n1INw3evRc1cra^AulJU_E%Shr_y5jLe@ocY`LXNAIcE`J&#ff^ zBH^Ew@gz(u_+Qe+Z4&NLH8dhz%OREM1=bU^VTGSQxlPRW`a_>OM6rnvz!}m;02v_J z8m4oej&OfX=(~<+OOw~7!XTHk6+m#alyMccd3))ybJipHe4FCg95(|}K>^{^m7ZY) z3o$SKLDBc3R5f)77^$1kYH$|B zk{6sZ=cii9x!F(T4!ee<`dEPmK|{eh%s-phC}R`G7WI3){#pGT!LjgQ* zt%}o2X_YSDSN1yV zx&TYF+*Oq=)^ur32Yj3XTxVS$w~z*K{f^GMJ`M}`INqVQb$#4*z{kl&wJ#+!tUW&c zuX<=}PG;p6eB9Pk&^04my8H;BE%$A*N37TOU!^)&GfYrS*|yz0cc!xp!)lOrSR_!iia{-6#q1C2R2F@#WS z$`A>a}Jd7%kQhK<#{GQGUsJG3<7;lDS8YWoCf6Jf0f@Xh+n|2ux zM}P(GQliE&^`Z;|ib0VnPkGR#ls@@lKBD2|N=>qbP~$QcpmtW5iCLbpg~jxw4Dbb) ze9~9{w!Gx-xB_Rf8yEh+o}6zx@&xVlz8L}{i!dgzThVQ z&guaBtS8X;he7$x^@gaifO7uw`mmA`yt)%)p&$pl&S?#XSq|lI16b{r(sAcigIrm2 zB!H~IdfL#})pXqg0NI%%vK1>Sva9Cv$#b9)f(?{eZ<@|105svfy5^OnveliGfW(4y zQX+M|;e7ZRz>eP|{zYFsEz6EZOB>MTJx@QqTytvWCV($y-vcDb{K4HeMk z0gcMM_p0j(-xdnEStQvLA&Nnz{kqM L<`=s8*{FX5QgeZ4 literal 86155 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 max_ckpt: + max_ckpt = int(it) + return max_ckpt + + +class FineTune: + def __init__(self): + self.now_file_path = os.path.dirname(__file__) + self.PYTHONPATH = os.path.realpath( + os.path.join(self.now_file_path, + "../../../../examples/other/tts_finetune/tts3")) + self.BIN_DIR = os.path.realpath( + os.path.join(self.now_file_path, + "../../../../paddlespeech/t2s/exps/fastspeech2")) + self.pretrained_model_dir = os.path.realpath( + "source/model/fastspeech2_aishell3_ckpt_1.1.0") + self.voc_model_dir = os.path.realpath( + "source/model/hifigan_aishell3_ckpt_0.2.0") + self.finetune_config = os.path.join("conf/tts3_finetune.yaml") + + def finetune(self, input_dir, exp_dir='temp', epoch=100): + mfa_dir = os.path.join(exp_dir, 'mfa_result') + dump_dir = os.path.join(exp_dir, 'dump') + output_dir = os.path.join(exp_dir, 'exp') + lang = "zh" + ngpu = 1 + + cmd = f""" + python3 {self.PYTHONPATH}/finetune.py \ + --input_dir={input_dir} \ + --pretrained_model_dir={self.pretrained_model_dir} \ + --mfa_dir={mfa_dir} \ + --dump_dir={dump_dir} \ + --output_dir={output_dir} \ + --lang={lang} \ + --ngpu={ngpu} \ + --epoch={epoch} \ + --finetune_config={self.finetune_config} + """ + + print(cmd) + + return run_cmd(cmd, exp_dir) + + def synthesize(self, text, wav_name, out_wav_dir, exp_dir='temp'): + + voc = "hifigan_aishell3" + dump_dir = os.path.join(exp_dir, 'dump') + output_dir = os.path.join(exp_dir, 'exp') + text_path = os.path.join(exp_dir, 'sentences.txt') + lang = "zh" + ngpu = 1 + + model_path = f"{output_dir}/checkpoints" + ckpt = find_max_ckpt(model_path) + + # 生成对应的语句 + with open(text_path, "w", encoding='utf8') as f: + f.write(wav_name + " " + text) + + cmd = f""" + FLAGS_allocator_strategy=naive_best_fit \ + FLAGS_fraction_of_gpu_memory_to_use=0.01 \ + python3 {self.BIN_DIR}/../synthesize_e2e.py \ + --am=fastspeech2_aishell3 \ + --am_config={self.pretrained_model_dir}/default.yaml \ + --am_ckpt={output_dir}/checkpoints/snapshot_iter_{ckpt}.pdz \ + --am_stat={self.pretrained_model_dir}/speech_stats.npy \ + --voc={voc} \ + --voc_config={self.voc_model_dir}/default.yaml \ + --voc_ckpt={self.voc_model_dir}/snapshot_iter_2500000.pdz \ + --voc_stat={self.voc_model_dir}/feats_stats.npy \ + --lang={lang} \ + --text={text_path} \ + --output_dir={out_wav_dir} \ + --phones_dict={dump_dir}/phone_id_map.txt \ + --speaker_dict={dump_dir}/speaker_id_map.txt \ + --spk_id=0 + """ + + out_path = os.path.join(out_wav_dir, f"{wav_name}.wav") + + return run_cmd(cmd, out_path) diff --git a/demos/speech_web/speech_server/src/ge2e_clone.py b/demos/speech_web/speech_server/src/ge2e_clone.py new file mode 100644 index 00000000..18173bd3 --- /dev/null +++ b/demos/speech_web/speech_server/src/ge2e_clone.py @@ -0,0 +1,59 @@ +import os +import shutil + +from .util import run_cmd + + +class VoiceCloneGE2E(): + def __init__(self): + # Path 到指定路径上 + self.now_file_path = os.path.dirname(__file__) + self.BIN_DIR = os.path.realpath( + os.path.join(self.now_file_path, + "../../../../paddlespeech/t2s/exps")) + # am + self.am = "fastspeech2_aishell3" + self.am_config = "source/model/fastspeech2_nosil_aishell3_vc1_ckpt_0.5/default.yaml" + self.am_ckpt = "source/model/fastspeech2_nosil_aishell3_vc1_ckpt_0.5/snapshot_iter_96400.pdz" + self.am_stat = "source/model/fastspeech2_nosil_aishell3_vc1_ckpt_0.5/speech_stats.npy" + self.phones_dict = "source/model/fastspeech2_nosil_aishell3_vc1_ckpt_0.5/phone_id_map.txt" + # voc + self.voc = "pwgan_aishell3" + self.voc_config = "source/model/pwg_aishell3_ckpt_0.5/default.yaml" + self.voc_ckpt = "source/model/pwg_aishell3_ckpt_0.5/snapshot_iter_1000000.pdz" + self.voc_stat = "source/model/pwg_aishell3_ckpt_0.5/feats_stats.npy" + # ge2e + self.ge2e_params_path = "source/model/ge2e_ckpt_0.3/step-3000000.pdparams" + + def vc(self, text, input_wav, out_wav): + + # input wav 需要形成临时单独文件夹 + _, full_file_name = os.path.split(input_wav) + ref_audio_dir = os.path.realpath("tmp_dir/ge2e") + if os.path.exists(ref_audio_dir): + shutil.rmtree(ref_audio_dir) + else: + os.makedirs(ref_audio_dir, exist_ok=True) + shutil.copy(input_wav, ref_audio_dir) + + output_dir = os.path.dirname(out_wav) + + cmd = f""" + python3 {self.BIN_DIR}/voice_cloning.py \ + --am={self.am} \ + --am_config={self.am_config} \ + --am_ckpt={self.am_ckpt} \ + --am_stat={self.am_stat} \ + --voc={self.voc} \ + --voc_config={self.voc_config} \ + --voc_ckpt={self.voc_ckpt} \ + --voc_stat={self.voc_stat} \ + --ge2e_params_path={self.ge2e_params_path} \ + --text="{text}" \ + --input-dir={ref_audio_dir} \ + --output-dir={output_dir} \ + --phones-dict={self.phones_dict} + """ + + output_name = os.path.join(output_dir, full_file_name) + return run_cmd(cmd, output_name=output_name) diff --git a/demos/speech_web/speech_server/src/tdnn_clone.py b/demos/speech_web/speech_server/src/tdnn_clone.py new file mode 100644 index 00000000..4c3b3e8b --- /dev/null +++ b/demos/speech_web/speech_server/src/tdnn_clone.py @@ -0,0 +1,56 @@ +import os +import shutil + +from .util import run_cmd + + +class VoiceCloneTDNN(): + def __init__(self): + # Path 到指定路径上 + self.now_file_path = os.path.dirname(__file__) + self.BIN_DIR = os.path.realpath( + os.path.join(self.now_file_path, + "../../../../paddlespeech/t2s/exps")) + + self.am = "fastspeech2_aishell3" + self.am_config = "source/model/fastspeech2_aishell3_ckpt_vc2_1.2.0/default.yaml" + self.am_ckpt = "source/model/fastspeech2_aishell3_ckpt_vc2_1.2.0/snapshot_iter_96400.pdz" + self.am_stat = "source/model/fastspeech2_aishell3_ckpt_vc2_1.2.0/speech_stats.npy" + self.phones_dict = "source/model/fastspeech2_aishell3_ckpt_vc2_1.2.0/phone_id_map.txt" + # voc + self.voc = "pwgan_aishell3" + self.voc_config = "source/model/pwg_aishell3_ckpt_0.5/default.yaml" + self.voc_ckpt = "source/model/pwg_aishell3_ckpt_0.5/snapshot_iter_1000000.pdz" + self.voc_stat = "source/model/pwg_aishell3_ckpt_0.5/feats_stats.npy" + + def vc(self, text, input_wav, out_wav): + # input wav 需要形成临时单独文件夹 + _, full_file_name = os.path.split(input_wav) + ref_audio_dir = os.path.realpath("tmp_dir/tdnn") + if os.path.exists(ref_audio_dir): + shutil.rmtree(ref_audio_dir) + else: + os.makedirs(ref_audio_dir, exist_ok=True) + shutil.copy(input_wav, ref_audio_dir) + + output_dir = os.path.dirname(out_wav) + + cmd = f""" + python3 {self.BIN_DIR}/voice_cloning.py \ + --am={self.am} \ + --am_config={self.am_config} \ + --am_ckpt={self.am_ckpt} \ + --am_stat={self.am_stat} \ + --voc={self.voc} \ + --voc_config={self.voc_config} \ + --voc_ckpt={self.voc_ckpt} \ + --voc_stat={self.voc_stat} \ + --text="{text}" \ + --input-dir={ref_audio_dir} \ + --output-dir={output_dir} \ + --phones-dict={self.phones_dict} \ + --use_ecapa=True + """ + + output_name = os.path.join(output_dir, full_file_name) + return run_cmd(cmd, output_name=output_name) diff --git a/demos/speech_web/speech_server/src/util.py b/demos/speech_web/speech_server/src/util.py index 4a566b6e..773d6ec9 100644 --- a/demos/speech_web/speech_server/src/util.py +++ b/demos/speech_web/speech_server/src/util.py @@ -1,4 +1,6 @@ +import os import random +import subprocess def randName(n=5): @@ -11,3 +13,20 @@ def SuccessRequest(result=None, message="ok"): def ErrorRequest(result=None, message="error"): return {"code": -1, "result": result, "message": message} + + +def run_cmd(cmd, output_name): + p = subprocess.Popen(cmd, shell=True) + res = p.wait() + print(cmd) + print("运行结果:", res) + if res == 0: + # 运行成功 + if os.path.exists(output_name): + return output_name + else: + # 合成的文件不存在 + return None + else: + # 运行失败 + return None diff --git a/demos/speech_web/speech_server/vc.py b/demos/speech_web/speech_server/vc.py new file mode 100644 index 00000000..99e56b40 --- /dev/null +++ b/demos/speech_web/speech_server/vc.py @@ -0,0 +1,547 @@ +import argparse +import base64 +import datetime +import json +import os +from typing import List + +import aiofiles +import librosa +import soundfile as sf +import uvicorn +from fastapi import FastAPI +from fastapi import UploadFile +from pydantic import BaseModel +from src.ernie_sat import SAT +from src.finetune import FineTune +from src.ge2e_clone import VoiceCloneGE2E +from src.tdnn_clone import VoiceCloneTDNN +from src.util import * +from starlette.responses import FileResponse + +from paddlespeech.server.utils.audio_process import float2pcm + +# 解析配置 +parser = argparse.ArgumentParser(prog='PaddleSpeechDemo', add_help=True) + +parser.add_argument( + "--port", + action="store", + type=int, + help="port of the app", + default=8010, + required=False) + +args = parser.parse_args() +port = args.port + +# 这里会对finetune产生影响,所以finetune使用了cmd +vc_model = VoiceCloneGE2E() +vc_model_tdnn = VoiceCloneTDNN() + +sat_model = SAT() +ft_model = FineTune() + +# 配置文件 +tts_config = "conf/tts_online_application.yaml" +asr_config = "conf/ws_conformer_wenetspeech_application_faster.yaml" +asr_init_path = "source/demo/demo.wav" +db_path = "source/db/vc.sqlite" +ie_model_path = "source/model" + +# 路径配置 +VC_UPLOAD_PATH = "source/wav/vc/upload" +VC_OUT_PATH = "source/wav/vc/out" + +FT_UPLOAD_PATH = "source/wav/finetune/upload" +FT_OUT_PATH = "source/wav/finetune/out" +FT_LABEL_PATH = "source/wav/finetune/label.json" +FT_LABEL_TXT_PATH = "source/wav/finetune/labels.txt" +FT_DEFAULT_PATH = "source/wav/finetune/default" +FT_EXP_BASE_PATH = "tmp_dir/finetune" + +SAT_UPLOAD_PATH = "source/wav/SAT/upload" +SAT_OUT_PATH = "source/wav/SAT/out" +SAT_LABEL_PATH = "source/wav/SAT/label.json" + +# SAT 标注结果初始化 +if os.path.exists(SAT_LABEL_PATH): + with open(SAT_LABEL_PATH, "r", encoding='utf8') as f: + sat_label_dic = json.load(f) +else: + sat_label_dic = {} + +# ft 标注结果初始化 +if os.path.exists(FT_LABEL_PATH): + with open(FT_LABEL_PATH, "r", encoding='utf8') as f: + ft_label_dic = json.load(f) +else: + ft_label_dic = {} + +# 新建文件夹 +base_sources = [ + VC_UPLOAD_PATH, + VC_OUT_PATH, + FT_UPLOAD_PATH, + FT_OUT_PATH, + FT_DEFAULT_PATH, + SAT_UPLOAD_PATH, + SAT_OUT_PATH, +] +for path in base_sources: + os.makedirs(path, exist_ok=True) +##################################################################### +########################### APP初始化 ############################### +##################################################################### +app = FastAPI() + +###################################################################### +########################### 接口类型 ################################# +##################################################################### + + +# 接口结构 +class VcBase(BaseModel): + wavName: str + wavPath: str + + +class VcBaseText(BaseModel): + wavName: str + wavPath: str + text: str + func: str + + +class VcBaseSAT(BaseModel): + old_str: str + new_str: str + language: str + function: str + wav: str # base64编码 + filename: str + + +class FTPath(BaseModel): + dataPath: str + + +class VcBaseFT(BaseModel): + wav: str # base64编码 + filename: str + wav_path: str + + +class VcBaseFTModel(BaseModel): + wav_path: str + + +class VcBaseFTSyn(BaseModel): + exp_path: str + text: str + + +###################################################################### +########################### 文件列表查询与保存服务 ################################# +##################################################################### + + +def getVCList(path): + VC_FileDict = [] + # 查询upload路径下的wav文件名 + for root, dirs, files in os.walk(path, topdown=False): + for name in files: + # print(os.path.join(root, name)) + VC_FileDict.append({'name': name, 'path': os.path.join(root, name)}) + VC_FileDict = sorted(VC_FileDict, key=lambda x: x['name'], reverse=True) + return VC_FileDict + + +async def saveFiles(files, SavePath): + right = 0 + error = 0 + error_info = "错误文件:" + for file in files: + try: + if 'blob' in file.filename: + out_file_path = os.path.join( + SavePath, + datetime.datetime.strftime(datetime.datetime.now(), + '%H%M') + randName(3) + ".wav") + else: + out_file_path = os.path.join(SavePath, file.filename) + + print("上传文件名:", out_file_path) + async with aiofiles.open(out_file_path, 'wb') as out_file: + content = await file.read() # async read + await out_file.write(content) # async write + # 将文件转成24k, 16bit类型的wav文件 + wav, sr = librosa.load(out_file_path, sr=16000) + sf.write(out_file_path, data=wav, samplerate=sr) + right += 1 + except Exception as e: + error += 1 + error_info = error_info + file.filename + " " + str(e) + "\n" + continue + return f"上传成功:{right}, 上传失败:{error}, 失败原因: {error_info}" + + +# 音频下载 +@app.post("/vc/download") +async def VcDownload(base: VcBase): + if os.path.exists(base.wavPath): + return FileResponse(base.wavPath) + else: + return ErrorRequest(message="下载请求失败,文件不存在") + + +# 音频下载base64 +@app.post("/vc/download_base64") +async def VcDownloadBase64(base: VcBase): + if os.path.exists(base.wavPath): + # 将文件转成16k, 16bit类型的wav文件 + wav, sr = librosa.load(base.wavPath, sr=16000) + wav = float2pcm(wav) # float32 to int16 + wav_bytes = wav.tobytes() # to bytes + wav_base64 = base64.b64encode(wav_bytes).decode('utf8') + return SuccessRequest(result=wav_base64) + else: + return ErrorRequest(message="播放请求失败,文件不存在") + + +###################################################################### +########################### VC 服务 ################################# +##################################################################### + + +# 上传文件 +@app.post("/vc/upload") +async def VcUpload(files: List[UploadFile]): + # res = saveFiles(files, VC_UPLOAD_PATH) + right = 0 + error = 0 + error_info = "错误文件:" + for file in files: + try: + if 'blob' in file.filename: + out_file_path = os.path.join( + VC_UPLOAD_PATH, + datetime.datetime.strftime(datetime.datetime.now(), + '%H%M') + randName(3) + ".wav") + else: + out_file_path = os.path.join(VC_UPLOAD_PATH, file.filename) + + print("上传文件名:", out_file_path) + async with aiofiles.open(out_file_path, 'wb') as out_file: + content = await file.read() # async read + await out_file.write(content) # async write + # 将文件转成24k, 16bit类型的wav文件 + wav, sr = librosa.load(out_file_path, sr=16000) + sf.write(out_file_path, data=wav, samplerate=sr) + right += 1 + except Exception as e: + error += 1 + error_info = error_info + file.filename + " " + str(e) + "\n" + continue + return SuccessRequest( + result=f"上传成功:{right}, 上传失败:{error}, 失败原因: {error_info}") + + +# 获取文件列表 +@app.get("/vc/list") +async def VcList(): + res = getVCList(VC_UPLOAD_PATH) + return SuccessRequest(result=res) + + +# 获取音频文件 +@app.post("/vc/file") +async def VcFileGet(base: VcBase): + if os.path.exists(base.wavPath): + return FileResponse(base.wavPath) + else: + return ErrorRequest(result="获取文件失败") + + +# 删除音频文件 +@app.post("/vc/del") +async def VcFileDel(base: VcBase): + if os.path.exists(base.wavPath): + os.remove(base.wavPath) + return SuccessRequest(result="删除成功") + else: + return ErrorRequest(result="删除失败") + + +# 声音克隆G2P +@app.post("/vc/clone_g2p") +async def VcCloneG2P(base: VcBaseText): + if os.path.exists(base.wavPath): + try: + if base.func == 'ge2e': + wavName = base.wavName + wavPath = os.path.join(VC_OUT_PATH, wavName) + vc_model.vc( + text=base.text, input_wav=base.wavPath, out_wav=wavPath) + else: + wavName = base.wavName + wavPath = os.path.join(VC_OUT_PATH, wavName) + vc_model_tdnn.vc( + text=base.text, input_wav=base.wavPath, out_wav=wavPath) + res = {"wavName": wavName, "wavPath": wavPath} + return SuccessRequest(result=res) + except Exception as e: + print(e) + return ErrorRequest(message="克隆失败,合成过程报错") + else: + return ErrorRequest(message="克隆失败,音频不存在") + + +###################################################################### +########################### SAT 服务 ################################# +##################################################################### +# 声音克隆SAT +@app.post("/vc/clone_sat") +async def VcCloneSAT(base: VcBaseSAT): + # 重新整理 sat_label_dict + if base.filename not in sat_label_dic or sat_label_dic[ + base.filename] != base.old_str: + sat_label_dic[base.filename] = base.old_str + with open(SAT_LABEL_PATH, "w", encoding='utf8') as f: + json.dump(sat_label_dic, f, ensure_ascii=False, indent=4) + + input_file_path = base.wav + + # 选择任务 + if base.language == "zh": + # 中文 + if base.function == "synthesize": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_syn_zh_" + base.filename) + # 中文克隆 + sat_result = sat_model.zh_synthesize_edit( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + task_name="synthesize") + elif base.function == "edit": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_edit_zh_" + base.filename) + # 中文语音编辑 + sat_result = sat_model.zh_synthesize_edit( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + task_name="edit") + elif base.function == "crossclone": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_cross_zh_" + base.filename) + # 中文跨语言 + sat_result = sat_model.crossclone( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + source_lang="zh", + target_lang="en") + else: + return ErrorRequest( + message="请检查功能选项是否正确,仅支持:synthesize, edit, crossclone") + elif base.language == "en": + if base.function == "synthesize": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_syn_zh_" + base.filename) + # 英文语音克隆 + sat_result = sat_model.en_synthesize_edit( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + task_name="synthesize") + elif base.function == "edit": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_edit_zh_" + base.filename) + # 英文语音编辑 + sat_result = sat_model.en_synthesize_edit( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + task_name="edit") + elif base.function == "crossclone": + output_file_path = os.path.join(SAT_OUT_PATH, + "sat_cross_zh_" + base.filename) + # 英文跨语言 + sat_result = sat_model.crossclone( + old_str=base.old_str, + new_str=base.new_str, + input_name=os.path.realpath(input_file_path), + output_name=os.path.realpath(output_file_path), + source_lang="en", + target_lang="zh") + else: + return ErrorRequest( + message="请检查功能选项是否正确,仅支持:synthesize, edit, crossclone") + else: + return ErrorRequest(message="请检查功能选项是否正确,仅支持中文和英文") + + if sat_result: + return SuccessRequest(result=sat_result, message="SAT合成成功") + else: + return ErrorRequest(message="SAT 合成失败,请从后台检查错误信息!") + + +# SAT 文件列表 +@app.get("/sat/list") +async def SatList(): + res = [] + filelist = getVCList(SAT_UPLOAD_PATH) + for fileitem in filelist: + if fileitem['name'] in sat_label_dic: + fileitem['label'] = sat_label_dic[fileitem['name']] + else: + fileitem['label'] = "" + res.append(fileitem) + return SuccessRequest(result=res) + + +# 上传 SAT 音频 +# 上传文件 +@app.post("/sat/upload") +async def SATUpload(files: List[UploadFile]): + right = 0 + error = 0 + error_info = "错误文件:" + for file in files: + try: + if 'blob' in file.filename: + out_file_path = os.path.join( + SAT_UPLOAD_PATH, + datetime.datetime.strftime(datetime.datetime.now(), + '%H%M') + randName(3) + ".wav") + else: + out_file_path = os.path.join(SAT_UPLOAD_PATH, file.filename) + + print("上传文件名:", out_file_path) + async with aiofiles.open(out_file_path, 'wb') as out_file: + content = await file.read() # async read + await out_file.write(content) # async write + # 将文件转成24k, 16bit类型的wav文件 + wav, sr = librosa.load(out_file_path, sr=16000) + sf.write(out_file_path, data=wav, samplerate=sr) + right += 1 + except Exception as e: + error += 1 + error_info = error_info + file.filename + " " + str(e) + "\n" + continue + return SuccessRequest( + result=f"上传成功:{right}, 上传失败:{error}, 失败原因: {error_info}") + + +###################################################################### +########################### FinueTune 服务 ################################# +##################################################################### + + +# finetune 文件列表 +@app.post("/finetune/list") +async def FineTuneList(Path: FTPath): + dataPath = Path.dataPath + if dataPath == "default": + # 默认路径 + FT_PATH = FT_DEFAULT_PATH + else: + FT_PATH = dataPath + + res = [] + filelist = getVCList(FT_PATH) + for name, value in ft_label_dic.items(): + wav_path = os.path.join(FT_PATH, name) + if not os.path.exists(wav_path): + wav_path = "" + d = {'text': value['text'], 'name': name, 'path': wav_path} + res.append(d) + return SuccessRequest(result=res) + + +# 一键重置,获取新的文件地址 +@app.get('/finetune/newdir') +async def FTGetNewDir(): + new_path = os.path.join(FT_UPLOAD_PATH, randName(3)) + if not os.path.exists(new_path): + os.makedirs(new_path, exist_ok=True) + # 把 labels.txt 复制进去 + cmd = f"cp {FT_LABEL_TXT_PATH} {new_path}" + os.system(cmd) + return SuccessRequest(result=new_path) + + +# finetune 上传文件 +@app.post("/finetune/upload") +async def FTUpload(base: VcBaseFT): + try: + # 文件夹是否存在 + if not os.path.exists(base.wav_path): + os.makedirs(base.wav_path) + # 保存音频文件 + out_file_path = os.path.join(base.wav_path, base.filename) + wav_b = base64.b64decode(base.wav) + async with aiofiles.open(out_file_path, 'wb') as out_file: + await out_file.write(wav_b) # async write + + return SuccessRequest(result="上传成功") + except Exception as e: + return ErrorRequest(result="上传失败") + + +# finetune 微调 +@app.post("/finetune/clone_finetune") +async def FTModel(base: VcBaseFTModel): + # 先检查 wav_path 是否有效 + if base.wav_path == 'default': + data_path = FT_DEFAULT_PATH + else: + data_path = base.wav_path + if not os.path.exists(data_path): + return ErrorRequest(message="数据文件夹不存在") + + data_base = data_path.split(os.sep)[-1] + exp_dir = os.path.join(FT_EXP_BASE_PATH, data_base) + try: + exp_dir = ft_model.finetune( + input_dir=os.path.realpath(data_path), + exp_dir=os.path.realpath(exp_dir)) + if exp_dir: + return SuccessRequest(result=exp_dir) + else: + return ErrorRequest(message="微调失败") + except Exception as e: + print(e) + return ErrorRequest(message="微调失败") + + +# finetune 合成 +@app.post("/finetune/clone_finetune_syn") +async def FTSyn(base: VcBaseFTSyn): + try: + if not os.path.exists(base.exp_path): + return ErrorRequest(result="模型路径不存在") + wav_name = randName(5) + wav_path = ft_model.synthesize( + text=base.text, + wav_name=wav_name, + out_wav_dir=os.path.realpath(FT_OUT_PATH), + exp_dir=os.path.realpath(base.exp_path)) + if wav_path: + res = {"wavName": wav_name + ".wav", "wavPath": wav_path} + return SuccessRequest(result=res) + else: + return ErrorRequest(message="音频合成失败") + except Exception as e: + return ErrorRequest(message="音频合成失败") + + +if __name__ == '__main__': + uvicorn.run(app=app, host='0.0.0.0', port=port) diff --git a/demos/speech_web/web_client/package.json b/demos/speech_web/web_client/package.json index 7f28d4c9..d8c213e4 100644 --- a/demos/speech_web/web_client/package.json +++ b/demos/speech_web/web_client/package.json @@ -8,6 +8,7 @@ "preview": "vite preview" }, "dependencies": { + "@element-plus/icons-vue": "^2.0.9", "ant-design-vue": "^2.2.8", "axios": "^0.26.1", "element-plus": "^2.1.9", @@ -18,6 +19,7 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^2.3.0", - "vite": "^2.9.0" + "vite": "^2.9.13", + "@vue/compiler-sfc": "^3.1.0" } } diff --git a/demos/speech_web/web_client/src/api/API.js b/demos/speech_web/web_client/src/api/API.js index 0feaa63f..5adca362 100644 --- a/demos/speech_web/web_client/src/api/API.js +++ b/demos/speech_web/web_client/src/api/API.js @@ -19,6 +19,26 @@ export const apiURL = { CHAT_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/offlineStream', // ChatBot websocket 接口 ASR_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/onlineStream', // Stream ASR 接口 TTS_SOCKET_RECORD: 'ws://localhost:8010/ws/tts/online', // Stream TTS 接口 + + // voice clone + // Voice Clone + VC_List: '/api/vc/list', + SAT_List: '/api/sat/list', + FineTune_List: '/api/finetune/list', + + VC_Upload: '/api/vc/upload', + SAT_Upload: '/api/sat/upload', + FineTune_Upload: '/api/finetune/upload', + FineTune_NewDir: '/api/finetune/newdir', + + VC_Download: '/api/vc/download', + VC_Download_Base64: '/api/vc/download_base64', + VC_Del: '/api/vc/del', + + VC_CloneG2p: '/api/vc/clone_g2p', + VC_CloneSAT: '/api/vc/clone_sat', + VC_CloneFineTune: '/api/finetune/clone_finetune', + VC_CloneFineTuneSyn: '/api/finetune/clone_finetune_syn', } diff --git a/demos/speech_web/web_client/src/api/ApiVC.js b/demos/speech_web/web_client/src/api/ApiVC.js new file mode 100644 index 00000000..0dc0f683 --- /dev/null +++ b/demos/speech_web/web_client/src/api/ApiVC.js @@ -0,0 +1,88 @@ +import axios from 'axios' +import {apiURL} from "./API.js" + +// 上传音频-vc +export async function vcUpload(params){ + const result = await axios.post(apiURL.VC_Upload, params); + return result +} + +// 上传音频-sat +export async function satUpload(params){ + const result = await axios.post(apiURL.SAT_Upload, params); + return result +} + +// 上传音频-finetune +export async function fineTuneUpload(params){ + const result = await axios.post(apiURL.FineTune_Upload, params); + return result +} + +// 删除音频 +export async function vcDel(params){ + const result = await axios.post(apiURL.VC_Del, params); + return result +} + +// 获取音频列表vc +export async function vcList(){ + const result = await axios.get(apiURL.VC_List); + return result +} +// 获取音频列表Sat +export async function satList(){ + const result = await axios.get(apiURL.SAT_List); + return result +} + +// 获取音频列表fineTune +export async function fineTuneList(params){ + const result = await axios.post(apiURL.FineTune_List, params); + return result +} + +// fineTune 一键重置 获取新的文件夹 +export async function fineTuneNewDir(){ + const result = await axios.get(apiURL.FineTune_NewDir); + return result +} + +// 获取音频数据 +export async function vcDownload(params){ + const result = await axios.post(apiURL.VC_Download, params); + return result +} + +// 获取音频数据Base64 +export async function vcDownloadBase64(params){ + const result = await axios.post(apiURL.VC_Download_Base64, params); + return result +} + + +// 克隆合成G2P +export async function vcCloneG2P(params){ + const result = await axios.post(apiURL.VC_CloneG2p, params); + return result +} + +// 克隆合成SAT +export async function vcCloneSAT(params){ + const result = await axios.post(apiURL.VC_CloneSAT, params); + return result +} + +// 克隆合成 - finetune 微调 +export async function vcCloneFineTune(params){ + const result = await axios.post(apiURL.VC_CloneFineTune, params); + return result +} + +// 克隆合成 - finetune 合成 +export async function vcCloneFineTuneSyn(params){ + const result = await axios.post(apiURL.VC_CloneFineTuneSyn, params); + return result +} + + diff --git a/demos/speech_web/web_client/src/components/Content/Header/Header.vue b/demos/speech_web/web_client/src/components/Content/Header/Header.vue index 8135a2bf..c20f3366 100644 --- a/demos/speech_web/web_client/src/components/Content/Header/Header.vue +++ b/demos/speech_web/web_client/src/components/Content/Header/Header.vue @@ -4,7 +4,7 @@ 飞桨-PaddleSpeech

- PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,欢迎大家Star收藏鼓励 + PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发。支持语音识别,语音合成,声纹识别,声音分类,语音唤醒,语音翻译等多种语音任务,荣获 NAACL2022 Best Demo Award 。如果你喜欢这个示例,欢迎在 github 中 star 收藏鼓励。
diff --git a/demos/speech_web/web_client/src/components/Content/Header/style.less b/demos/speech_web/web_client/src/components/Content/Header/style.less index 9d026137..cc97c741 100644 --- a/demos/speech_web/web_client/src/components/Content/Header/style.less +++ b/demos/speech_web/web_client/src/components/Content/Header/style.less @@ -43,6 +43,7 @@ margin-bottom: 40px; display: flex; align-items: center; + margin-top: 40px; }; .speech_header_link { display: block; diff --git a/demos/speech_web/web_client/src/components/Experience.vue b/demos/speech_web/web_client/src/components/Experience.vue index 5620d6af..4f32faf9 100644 --- a/demos/speech_web/web_client/src/components/Experience.vue +++ b/demos/speech_web/web_client/src/components/Experience.vue @@ -6,6 +6,10 @@ import TTST from './SubMenu/TTS/TTST.vue' import VPRT from './SubMenu/VPR/VPRT.vue' import IET from './SubMenu/IE/IET.vue' +import VoiceCloneT from './SubMenu/VoiceClone/VoiceClone.vue' +import ENIRE_SATT from './SubMenu/ENIRE_SAT/ENIRE_SAT.vue' +import FineTuneT from './SubMenu/FineTune/FineTune.vue' +