From 72aeccafaccec4eec6126ad34ca4d2c332dbd11a Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sun, 18 Jun 2023 16:53:25 +0800 Subject: [PATCH] docs: add benchmark report --- website/docs/benchmark/report.md | 233 ++++++++++++++++- .../current/benchmark/report.md | 235 +++++++++++++++++- website/static/img/benchmark/1.png | Bin 0 -> 44635 bytes 3 files changed, 466 insertions(+), 2 deletions(-) create mode 100644 website/static/img/benchmark/1.png diff --git a/website/docs/benchmark/report.md b/website/docs/benchmark/report.md index adb41c04..1ff1df3b 100644 --- a/website/docs/benchmark/report.md +++ b/website/docs/benchmark/report.md @@ -3,4 +3,235 @@ sidebar_position: 2 title: Benchmark Report --- -Coming Soon +## Cluster benchmark test + +:::info + +Test version: v1.7.6 + +Basic information of the test cluster: +- mongo: **0.2**cpu **256**Mi memory single instance +- redis: **0.1**cpu **64**Mi memory single instance +- minio: **0.1**cpu **128**Mi memory single instance +- tailchat: **0.2**cpu **512**Mi memory 3 instances + +> The test service is a complete service, that means, a complete service loaded with services and plugins, without any directional optimization for data to look good (better performance can be obtained by controlling the services that reduce loading and turning off some unnecessary capabilities ) +> +> Among them, the cpu model is: `Intel(R) Xeon(R) CPU @ 2.20GHz` +> +> The server network uses `Singapore Google Cloud`, and the test machine uses `Telecom Shanghai`. Actually, there is a certain network loss. The cluster service is provided by sealos for this pressure test. +::: + +### Test method + +The test mode consists of an actual observer + several virtual users started by cli. See the test method: [cli](./cli.md) + +The main commands are as follows: + +``` +tailchat benchmark register https://.cloud.sealos.io --invite +tailchat benchmark connections https://.cloud.sealos.io +tailchat benchmark connections https://.cloud.sealos.io --groupId --converseId --messageNum 5 +``` + +> The following descriptions about cpu/memory are the average value of multiple instances + +### 100 user online test + +#### Online Status + +When only one actual user is logged in, the system occupancy is: +- cpu: 0.90% +- Memory: 176.3 Mi + +After logging in 100 online users, the system occupancy is: +- cpu: 14.80 % -> 8.89% -> 1.33% (because the actual observer gets all 100 user online information at one time) +- Memory: 179.37 Mi + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 100 clients have been created. +Start send message test: 1 +ℹ Start message receive test, message: 0c55e168904f02a3 +✔ All client received, usage: 420ms +Start send message test: 2 +ℹ Start message receive test, message: 6f000fb91dc85fe1 +✔ All client received, usage: 89ms +Start send message test: 3 +ℹ Start message receive test, message: 79cce2beee015c5f +✔ All client received, usage: 89ms +Start send message test: 4 +ℹ Start message receive test, message: 8df7c58fdadb30aa +✔ All client received, usage: 96ms +Start send message test: 5 +ℹ Start message receive test, message: 97c782b36312022c +✔ All client received, usage: 98ms +``` + +### 500 user online test + +#### Online Status + +When no user is logged in, the system occupancy is: +- cpu: 0.92% +- Memory: 208.5533 Mi + +After logging in 500 online users, the system occupancy is: +- cpu: 3.30% +- Memory: 241.1933 Mi + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 500 clients have been created. +Start send message test: 1 +ℹ Start message receive test, message: ef39144e96ce3ab8 +✔ All client received, usage: 497ms +Start send message test: 2 +ℹ Start message receive test, message: 5a86b397aab8ff92 +✔ All client received, usage: 406ms +Start send message test: 3 +ℹ Start message receive test, message: 69066c6d4a4402b0 +✔ All client received, usage: 403ms +Start send message test: 4 +ℹ Start message receive test, message: 3b066befc54b4835 +✔ All client received, usage: 424ms +Start send message test: 5 +ℹ Start message receive test, message: 3a6ef9cc7e8e6eac +✔ All client received, usage: 752ms +``` + +### 1k user online test + +#### Online Status + +When no user is logged in, the system occupancy is: +- cpu: 0.88% +- Memory: 202.978 Mi + +> When I establish more than 800 connections, a large number of `transport close` errors will be triggered and the connection cannot be established +> +> In order to be able to carry 1000 people at the same time, I choose to expand the capacity horizontally and expand the number of instances to 5 instances + +After logging in 1000 online users, the system occupancy is: +- cpu: 3.27% +- Memory: 210.876 Mi + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 1000 clients have been created. +Start send message test: 1 +ℹ Start message receive test, message: e65050aa6d4237bb +✔ All client received, usage: 2194ms +Start send message test: 2 +ℹ Start message receive test, message: a7b02d30e25f02d0 +✔ All client received, usage: 954ms +Start send message test: 3 +ℹ Start message receive test, message: 75aa655a94cb308f +✔ All client received, usage: 988ms +Start send message test: 4 +ℹ Start message receive test, message: 106b8830443002d9 +✔ All client received, usage: 733ms +Start send message test: 5 +ℹ Start message receive test, message: 0593646f9c7da288 +✔ All client received, usage: 738ms +``` + +## Standalone benchmark test + +:::info +Test version: v1.7.6 + +Basic information of the test environment: + +- NAS deployment dependency (DS220plus): Intel Celeron J4025, 2GB DDR4 + -mongo + - redis + -minio +- PC, cpu: i7-8700K, 32G memory + - tailchat +::: + +### 2k user online test + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 2000 clients have been created. +Start send message test: 1 +ℹ Start message receive test, message: 8f4edd63886d80eb +✔ All client received, usage: 244ms +Start send message test: 2 +ℹ Start message receive test, message: 20e0bc3e2ea1365c +✔ All client received, usage: 246ms +Start send message test: 3 +ℹ Start message receive test, message: 7bed6a2cb12238a5 +✔ All client received, usage: 248ms +Start send message test: 4 +ℹ Start message receive test, message: 6f49353efa2467fc +✔ All client received, usage: 245ms +Start send message test: 5 +ℹ Start message receive test, message: 850bed7ed8fa860c +✔ All client received, usage: 248ms +``` + +### 5k user online test + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 5000 clients have been created. +Start send message test: 1 +ℹ Start message receive test, message: 85e2624234b8c66a +✔ All client received, usage: 933ms +Start send message test: 2 +ℹ Start message receive test, message: ae025dd881ef5ae7 +✔ All client received, usage: 714ms +Start send message test: 3 +ℹ Start message receive test, message: 55a6c359fe74c90f +✔ All client received, usage: 691ms +Start send message test: 4 +ℹ Start message receive test, message: 9eaefcc761c77c8c +✔ All client received, usage: 644ms +Start send message test: 5 +ℹ Start message receive test, message: 856a49a1528ad5e1 +✔ All client received, usage: 787ms +``` + + +### 10k user online test + +#### Message sending status + +Test the sending and receiving of all messages 5 times + +``` +✔ 10000 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: 06b6bf829b66cca9 +✔ All client received, usage: 1219ms +Start send message test: 2 +ℹ Start message receive test, message: 3a544d3c0e6d8a14 +✔ All client received, usage: 1189ms +Start send message test: 3 +ℹ Start message receive test, message: b1d0ea01481b6717 +✔ All client received, usage: 1089ms +Start send message test: 4 +ℹ Start message receive test, message: af3512e57ce2ad0e +✔ All client received, usage: 1142ms +Start send message test: 5 +ℹ Start message receive test, message: d09db4b9a348b32a +✔ All client received, usage: 1232ms +``` diff --git a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/benchmark/report.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/benchmark/report.md index c7da9fb9..cf6ade07 100644 --- a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/benchmark/report.md +++ b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/benchmark/report.md @@ -3,4 +3,237 @@ sidebar_position: 2 title: 压测报告 --- -Coming Soon +## 集群压测 + +:::info + +测试版本: v1.7.6 + +测试集群基本信息: +- mongo: **0.2**cpu **256**Mi内存 单实例 +- redis: **0.1**cpu **64**Mi内存 单实例 +- minio: **0.1**cpu **128**Mi内存 单实例 +- tailchat: **0.2**cpu **512**Mi内存 3实例 + +> 测试服务为完整服务,即加载了service和plugins的完整服务,没有进行任何为数据好看而做的任何定向优化(可以通过控制减少加载的服务以及关闭部分不必要的能力来获得更好的性能) +> +> 其中, cpu型号为: `Intel(R) Xeon(R) CPU @ 2.20GHz` +> +> 服务器网络使用的是`新加坡 谷歌云`,测试机器是使用的 `电信 上海`. 实际有一定网络损耗. 本次压测由 sealos 提供集群服务. +::: + +### 测试方式 + +测试方式由一个实际观察者 + 若干个由cli启动的虚拟用户构成。测试方法见: [cli](./cli.md) + +主要命令如下: + +``` +tailchat benchmark register https://.cloud.sealos.io --invite +tailchat benchmark connections https://.cloud.sealos.io +tailchat benchmark connections https://.cloud.sealos.io --groupId --converseId --messageNum 5 +``` + +> 以下关于cpu/内存的描述都是多个实例的平均值 + +### 百人在线测试 + +#### 在线情况 + +仅登录一个实际用户的情况下,系统占用情况为: +- cpu: 0.90 % +- 内存: 176.3 Mi + +登录 100 个在线用户以后,系统占用情况为: +- cpu: 14.80 % -> 8.89% -> 1.33%(因为实际观察者一次性获取了所有的100个用户在线信息) +- 内存: 179.37 Mi + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 100 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: 0c55e168904f02a3 +✔ All client received, usage: 420ms +Start send message test: 2 +ℹ Start message receive test, message: 6f000fb91dc85fe1 +✔ All client received, usage: 89ms +Start send message test: 3 +ℹ Start message receive test, message: 79cce2beee015c5f +✔ All client received, usage: 89ms +Start send message test: 4 +ℹ Start message receive test, message: 8df7c58fdadb30aa +✔ All client received, usage: 96ms +Start send message test: 5 +ℹ Start message receive test, message: 97c782b36312022c +✔ All client received, usage: 98ms +``` + +### 500人在线测试 + +#### 在线情况 + +不登录任何用户的情况下,系统占用情况为: +- cpu: 0.92 % +- 内存: 208.5533 Mi + + +登录 500 个在线用户以后,系统占用情况为: +- cpu: 3.30% +- 内存: 241.1933 Mi + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 500 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: ef39144e96ce3ab8 +✔ All client received, usage: 497ms +Start send message test: 2 +ℹ Start message receive test, message: 5a86b397aab8ff92 +✔ All client received, usage: 406ms +Start send message test: 3 +ℹ Start message receive test, message: 69066c6d4a4402b0 +✔ All client received, usage: 403ms +Start send message test: 4 +ℹ Start message receive test, message: 3b066befc54b4835 +✔ All client received, usage: 424ms +Start send message test: 5 +ℹ Start message receive test, message: 3a6ef9cc7e8e6eac +✔ All client received, usage: 752ms +``` + +### 千人在线测试 + +#### 在线情况 + +不登录任何用户的情况下,系统占用情况为: +- cpu: 0.88 % +- 内存: 202.978 Mi + +> 当我建立800以上的连接的时候,会触发大量的`transport close`错误无法建立连接 +> +> 为了让能够同时承载1000人,我选择进行水平扩容,将实例数拓展成5个实例 + +登录 1000 个在线用户以后,系统占用情况为: +- cpu: 3.27% +- 内存: 210.876 Mi + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 1000 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: e65050aa6d4237bb +✔ All client received, usage: 2194ms +Start send message test: 2 +ℹ Start message receive test, message: a7b02d30e25f02d0 +✔ All client received, usage: 954ms +Start send message test: 3 +ℹ Start message receive test, message: 75aa655a94cb308f +✔ All client received, usage: 988ms +Start send message test: 4 +ℹ Start message receive test, message: 106b8830443002d9 +✔ All client received, usage: 733ms +Start send message test: 5 +ℹ Start message receive test, message: 0593646f9c7da288 +✔ All client received, usage: 738ms +``` + +## 单机压测 + +:::info +测试版本: v1.7.6 + +测试环境基本信息: + +- NAS部署依赖(DS220plus): Intel Celeron J4025, 2GB DDR4 + - mongo + - redis + - minio +- 家用机, cpu: i7-8700K, 32G内存 + - tailchat +::: + +### 2000人在线测试 + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 2000 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: 8f4edd63886d80eb +✔ All client received, usage: 244ms +Start send message test: 2 +ℹ Start message receive test, message: 20e0bc3e2ea1365c +✔ All client received, usage: 246ms +Start send message test: 3 +ℹ Start message receive test, message: 7bed6a2cb12238a5 +✔ All client received, usage: 248ms +Start send message test: 4 +ℹ Start message receive test, message: 6f49353efa2467fc +✔ All client received, usage: 245ms +Start send message test: 5 +ℹ Start message receive test, message: 850bed7ed8fa860c +✔ All client received, usage: 248ms +``` + +### 5000人在线测试 + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 5000 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: 85e2624234b8c66a +✔ All client received, usage: 933ms +Start send message test: 2 +ℹ Start message receive test, message: ae025dd881ef5ae7 +✔ All client received, usage: 714ms +Start send message test: 3 +ℹ Start message receive test, message: 55a6c359fe74c90f +✔ All client received, usage: 691ms +Start send message test: 4 +ℹ Start message receive test, message: 9eaefcc761c77c8c +✔ All client received, usage: 644ms +Start send message test: 5 +ℹ Start message receive test, message: 856a49a1528ad5e1 +✔ All client received, usage: 787ms +``` + + + +### 万人在线测试 + +#### 消息发送情况 + +测试5次所有消息发送与接收情况 + +``` +✔ 10000 clients has been create. +Start send message test: 1 +ℹ Start message receive test, message: 06b6bf829b66cca9 +✔ All client received, usage: 1219ms +Start send message test: 2 +ℹ Start message receive test, message: 3a544d3c0e6d8a14 +✔ All client received, usage: 1189ms +Start send message test: 3 +ℹ Start message receive test, message: b1d0ea01481b6717 +✔ All client received, usage: 1089ms +Start send message test: 4 +ℹ Start message receive test, message: af3512e57ce2ad0e +✔ All client received, usage: 1142ms +Start send message test: 5 +ℹ Start message receive test, message: d09db4b9a348b32a +✔ All client received, usage: 1232ms +``` diff --git a/website/static/img/benchmark/1.png b/website/static/img/benchmark/1.png new file mode 100644 index 0000000000000000000000000000000000000000..61067cb94ecdd195caca1fce1c7c067ada039253 GIT binary patch literal 44635 zcmdRWXIN8Bv@VK@B1J_(kfPEAq)6|eNQp?1E>#5SMUh^`0*V4kmyYyaL!>32BE8p8 zgh+>k&_f82a3|__o_l}Y=bl@hbLWS|?Af!|tXb<_Yu3Cw?{u}*X{lMLDJUptAsTn} zC@4;Vl?KUT!OI_s*jNMNI zamdYII-j5vX5B85;~+lx8GG!{w=aywv2^1uF+Fyg2bc3No_(!${e0b&5N<7gGLJkp za{J{gN~02~rA2+>rH3@DW1AQ~l?pd(GB&6HV&7d`+Hrq)Ti9i)pU2rjYO|M_xI_ZysnXs6K1HBe>>GHz0CUivFi9Y-M=3n zhCaIS=i`eKWs!@2J}Mhsz5G|es{-d}{*LhR(&@0{e>${NpHTVx7~7NoRfkPw3wqg^ zW;jvfr)hf7o8(>Fn0_cZa%82WmSml>728IPyN3-Et*-MiRs_s%Dq-LmsFB5goXiM^(0v>S`%tM=a5MG1m*+Y0 z^vQ+6vZ)5#jCzK{;E!hz*8u09i4W=PMP0&`Ytz`+6AX78yyrLE4GW_$8fSErIT^H@{xZpnvQ2{u~VW2L6V^e|fH5}>Vz zlRklY_|Zgu;qquTa&Hccveax+kdp3P?Bqh#E}=~hQ&U)C{_0e!gN03?vhUc(Z-TY< zN1-f1b7+CM6pXf$&eh8X(yRkJj`qAKP5Uyuqbw~d?~#STzYzVcllDfs44(CJg@Q9S zZOez-y^y`Rj&)w37y&EKL0y6~eeFS@SYDbS@K#F2kW;28=*gG2>nwyy1*YN*YMpQa zV2usG-HLKqeMeq+FE3ht8QgrY+r8*odsOh7=JOcE=$o>T^uyo@9DyA&I2yqg^Ek9M zd&TP4$Vn?jWG6kFsK(6GyP=PCV@fg?=f&Ct5LPHgOh=Cw=DTo)^GV$ln0idAcDOtr zx*dG?gJHiIy*;&JF8f>j3t}hA)v|EXQw89sF7^wMi@u)XZ2f9L2jg zbR;_|75RR(3<`>uc!S7mE%%E);wx0pbMc2iOz4d}VqQwiHY`RB)pn+h28Sx^PV##@ zExs9oI;>Q^CXzkqy`^lGV6cJf_O7IR#zPX(%zZedCuE{Ne^Y;RZZZQMe6&v=?YNpG zyfT6`cI?F}U^MLoSAr~(77tSCncuds_B`Au)&ife$v&tyM0tHNw6 zbar*Q4h{P}zi2Z6QGw1?TZ|f@7l+_So4vBGa;)=R>qukmaLz)y?XlF<>14kdPq1pv z2f&>QJnZ8oXyt=V@dJ6``9r${oazqd9fkYAnmh~2v}0;~P)tU0ol2x(r-OpoFR#xR zZ6cqnp(co$UK!!QGD{}~M*7d`jx04u_|Lz6eZC~GYAYJ}!qI)d^k}8=qT6pMOR$UW zV_{)0Y6A})zr*b^cUB<`v1?{3D$3s;wX;CbO1@ytxAZ9UvQ$nvsyKe88{UiZ8$a=T zN&6){eMJmpFYLuV{?@0J0&B-~AYWJ7?Bv@sncnXI5*t<<;B-)ZmdSbf*Btz~TFKJdX0Y{sT(!L;@J*vf;v;d}24qh}{S46=6elbyP8nql>By;` zUF;hICWD!#3MuEa*Xn;s*e=0|_9!ocQ4|`UR<)%D z=kW+bqyEk2XvGItFAsnG_U6n19H7XwY4vCks&O&v71cu|E6P&rm-Do6>?C%u$p`gW zTq`)p@$;e*k!i}OFZ#mT5qPlK!HMIyNA?a)MMBbZOkUK~8CzLB5q!P@u=~jrCFG2f z4xgkUV)3a+gG4wQJuD?GTpE-jaI~i{aCJN|8K*S;FrR3}T9Id+5_-QJ$;l_F=h2=S zTEEz-SxWJQ(3XMjTGAesFt$t<*P5m|9gM4bKZ5wD7_3!nUN}c_(*e96psXpz8ot+w zVKFq%F>~8X_OcXPMjqCafDtvpW{BRU8O*0oTymo>&dR#2LtOAvz5XftRKVP;?}ejm z3XEm~-Zw5&J39PCML)Wc!(`=Wp?5Qh4e|4Z%;VvZjdOqFZ+#tr7!HnAQLDV2#mRN2 z?_;-;MZE8Scj&jFeJ$kg__?eBr)}YbNlTXBY}feFSBx*ZcCP<}qrGOt$xS;;>8WHR zMaNlbf%YZbyz@@`b?ihFFAfql(2*S>vHg7|Ca01+zbGVBT}(Ln8iYkpT9%b7PUD?0aWG0}RwzA8>|ol*u&(RDl8QEXA9tX;Sb9zt{hqd=+*B2jhZA zf~RMNDJy@|y|J?7xHg%POCe7n4o*u=1KTZmWN|2t0sgQX^6aX0&fM1+eTk?4oEfd; ze6Kw?9?Nr2RuntIn)Ue}*{59E9|>$o)_>K|4p#}-#VY01wq23_bwVIh8eCbJ->J>3 zre`z1k>AXB^i74Yym)>%_7Y84$*18qe%5!(+X?{^2gQji30L5GWJqtq<;v>L4S^?m zk>LdzEg)kE`?(=8<{`<1T~ah`R%Wsa5@fVC+!ft|CV80^}Ue5MR(veUL?Ot z-0?Xpc&t<0BiZi4>BaWW0nYdHxcOp$r4||M19%cP@ytPne9;(nZ;MWyB*sZ7_+De2 zJXFDg*u;(#zM*^6%z0|AMeY8m6E;li%+MIO`*0vZ+tM;4dz9(O$P;qr+o12_#Wmm|6?yq7qHG_!x-i*|KYzv{ znNOd(MDwQR+0f!^ScM#Glnwi}6^{iI&eXYACE4%a*LVfwdSlBJothTAKGYhmO6Q&b zB8=D#d-?67T?no!JE}tAphT?Z@dyic9ERx8WcaPX7iFc*ud)yUo^Ys80rSO3j&XZ` zM2UHdq`OQWtRsa-i#6XXH)Ut_d&@q_RjM%apX_Jc`6~yosU-29pQ+y!fc2iyFVkn1 zc>HxyX=~#aOn}V|rg?HYaLTU@Hkh1;`q};7Zuw1Og0oqRwpP0Ibn+>8kA?XgNNiN( z9alyZ!HvaysJ4?V76lE^(K|Q@XaZMlxvu(Ww&p*&VGG5-=qp#w#C>|1x0mR-uz;(y zY-iwLEiNuLmLA+ky6OOoSZ(Z;?hYUF079{ znCb04A@jidoVGpAQ($VHkE#J0ujHr2=psNjdnO@mmL9(n9-Y+8Cjv%}Ai;%HzSw^G zM%c+g>h+c-$boTOHqwFbhoEV^Yk4$mZx7pIx;=E0f%BiF2NDJ)0e|^ zm?V7k>9Kw(5YiCjvqn#a;epOAbeJa)yGO&R>F(M}O3BtLr_7vvyc2$!!x}B4CFA4s zB?J|wmuJWN9Ghp(=YnL92jpF}ARp4(!nKsokh9u!i?1eBPJ#RaM5{SQcQ#{vIo-^d7r(_HB>admva2z&q6^4Yu zdh|n@(gTa>wq3Wdw*VSrC(@)#m8PVAwv~rZ3{Dg;#+=y1abPqI_#|0yGj&I zZH@VQvy*P#2~7cRG{?`!wMs z3BV~jtpfV}v!de;^)lvWK=jl8D#YjQS{hl_-Q(rlT2l>mSuoq56ARJwza8V}-h+7` zq8W79CkoPQBSgb=a$d&TDNnZeBB) z|4(jSd!tI^FTCTw@UBzjLzF!2pU1rr>b9%yn5pQRS^io1na$t(c-CJzXqt7oE?`&f zJY7WMl>ctRDGHr`P(Kv=FSHMTBXo(Tw4h+PMNC+~V^7RLltkltQ!t(j`~$6x|DdGu zd`aOko0!iu=V)+Vi?GnZEK_2QKRhxwxBehK;Nt01+>l^|4(cl@1%m5I!)xfJBs;ri zfXn->I8+>JU9&!Kk2qJJ?{@&y;(wufJ-!IVc>0tVUICvol8@nMM0~wVegt%C71Ls+ z638I}cOPp^HwgM?kCaE?4Myz2YwD&N+Y0y7-dmZ+RHgeaLVw^9DX@;4#XxKy1fJ4x zy>xU6|8wXuf|-IMQ_So0qh%oEGAhKcoKX>9(y8QYwZPF>PDvGLl)svg;$BsoasX2Y z32fCuIcC=##SiPst=ncF@PYf}Ys)%1d=I{&scF~*GrckjFHW>H$x$K_R&unRoexgD zyiE)mxGu1cKdABVk(;R4wJ7z&(3V6g?jSURYu{y9Koeag8oY~p)`|Ii)4`%+kGeyFhL0t$K`C%#w3JdMT(_zVJ zZEfsnywPpWu1B3MOr2N{Zmg0kx^ANKxqU-#ojsnNmQ`B0rG=BLMK-Zd;Q+zUYLZl8 zWjG?F^;!HO$VXqDq94q>{mMXp&V5J`C~2U5_7fy@)HmyqvSxzN$f|SMz53A+=jp%7 zd*X!)k6|al5i68ha`;qjrw5a+la^V0u{>RKn?+xJU*Bs@<$-uKn4ckb?U7tVVak3% z`#i(d=u#LiL@4cZO;cS&#J!P`5$EotTQND@nu%yLDO6H_VnWXCH*Z)BF3W{%2Nw}2 zES;J{(vbP(Mol>H@3mDuDQ1Vvv@G%(dL@0p-}~b|-#uEc#a<%MX4ns-@gzkGY|FJB zyb#vSVNTe6FX|JojO=??f96(4qt=H|OoD@|Oy-ZU>zlrY;(=d#lRcvHv=PcfdFjQ5 z?oFkR`h8mURM~2b`GFVc!SMR2O2ot0;fPC@;wKt>tOkQOhko=tyaWF0|I3)(@tak8 zbzZ=FVOecnSewqen_^HCVNmldX)9GI-S2boW|z#FCyP7l*|;{NazFLvFm9zix)ZO8 zK(-PJyINS%YMkBJsA%-G23QBM!@;l5=AyhCxLWqB#DweiHkSLwmb>s$K_5Mw;Dx#H zl5r9c&vi2}wpUib`b4=*(#&fHZG)horV$cVFzzF;_n$(EK<#;CEj2MxP`sEc)I6b5 zT;yHou(wgOE0LedQCgi4#U|&Iw^||Tv-sm(vZ!MfSqCIyA|8Eki2cQ0&TGf{~nfw#YNMhrjVW340NUXl4FmVy8~v_wWy%L0JweX z!8$Sy5^HAe@A#Y$Zd&F0Dflp3j)7e*(RI4yy-;Ij3l(1dtgnz2DS2ya-=zA}ec)~( z``bhHTU%YFvW)V0V+(v_xd0NYh$f0segX@q8POwRim=W`V=#um7frWEub5VD(PBtR z&aV_Vm9}xQ9H=Ka{W&BrY>LBH1PM{QQDS&NnV}}7!qb4NUq_(yXz+C}Q zy3u6)27w7As)^3PvrU5@fGk^CXU==UB>Qv<)qajiW`(~y)UAHOs90$ahB&g2fU`gb zYYO$fI=HPqab2S2C>uwb3r4pUvnHCoI@O|fJM87LOLRADc4Kn{gc0)AHQ9BfytX+* zfC*&xQx>^=rBue-C8ex`^$mYZf=vXhvc>>Km`?NGP+F^gnG>zFnPX?^@l3B@JbsUl zz*F94bJ9qGy<9Dt{mB%^_O(MS3T}w1$4M3oV>W$pKdX<5x9F#lXo>Zjy%?_8y1>}F z-C(ozGhiCVzgAaIX;k83YTc%I5Gdp<1K!LH&R59E*CN|!XxJdjC5^@(7y#6kLixVR zF$v%Na#mP(e6hz!9hw_7ZPs8UjHtiQk&uXCdcIbT{#jFaKl%uvUOLy)>u@_%UCw)L zI1IYZf01UnPe&=%BL@U*WgT&weLw$YDTJY$TSks@#znL0tz0HX?vrOzlyZ9GfJ)2- zP=WdMrWkEAi{d90Zq?eA< zJ!ew|VX`g;xz)lL!5zy3*%zksz}5`1zQZHLB?XGN>g~?`%*eoHY4c{Rn&ky454))%to!wgL*~Nst^`4T=I5q*|J*u94)p^^53Yz1_LBuS7|p zmD+@huP&_=fT1}S5&c+!`mBD$WIl5 z{pUW(xtWPv{?z5gg&MwWSU%k`SFJY!3YH5VP~pJy)M{~aPNS{LCT=kOFl!A-v(9ZP z#B|vHTaN?j$88!_9SNSUm2=-aI~=W2uBe>H^*RzQ#U)io8jznP!&tIA-!;IpbnnVQ zaQ%zv{dU`Ukyf5@xu;_b(Sfe9Av%9cijKW(zc1VK1tU`*1mZclue%wZ{C{6clj=4>FT#){v6J@>cb1QF{Bw|_e6_q zot5GlPLB~7$6Pjrt(xVx2Vrqiv1Axr!Xw$^hCWZ*vt$I44TfSz7YeVi3|ToVagtUm zeblP?y+ypW#Fd<8KQF7MU*fO5e6gIe7;Hnpm1Q@81La<=b?t?t||`#`DkG(e=0MZ*h4A zXTFY$t69pQI{6nOm#=*}zq0V=K%8_lIzp%S{YgF=D8_X%2ei_>sndVYF8tpbli)hM zG*4G{-VxL#Cp5r={<%8UGaP~Pk4{U7;n)$ulqoOZS-W)QXKmGy91i1<2AxbCde}~gG^cC zLfs;^FbG|WmUhE%mk_RYa=~LFZb@VqmZ(MaACE(s@wZnx`=)EX@^IyEpJBcR5+Tdl zK;8VHfaIN#5at^Y(GO$P!8~(MTi#-L1mc{hf90I^*A5xZ&KsqSBo-Z}`S7x$M+-O%z ziQ90QSml54TYgVJDQhzO<#n^Q-`2sC#x30fzB#Ys6j42xjBp$*q9XZ2f%e*Zf8ze6 z!LOIiu+21s1tHqgX5^ zzMiedMx!p__tAoviIw>iB-xVX9m|A=a>V7Z-4S)D@FRVF>7u640_rJmTF*&w`M#{% zZYf~mh5fF`Gi4@BAPi)38UzkzA`=3$%BMtsn!@NQWZ%Ow4^F6j=Aoxh7^||dCffUH zFww5(7Ki-^nHkfV{3y#Rsdf3$Vvm<9o6~7ciDN1f-wFc16%+-ASx#Rvw1_o8a*c%3 z;;P2yy(i-4M208b^o7k__z@OitF@ec2GKlDKXxOTB)ROXL-vw5&COzpiWaFyfsyA-sNn)4V4Wy&Kn{Y}k#|Lx?18b+(J)v;H+H!plIWAap!Y~hoGQQG3SI1rp zQ~veR`XC)Mo;#@)9T*^H{}F3x$vWxG#;{_ z*35c)k@^bt6+P(-n%NPh_D=0QDLp*))rr~?um($(pZVBH(=ON(GczdGyp|E4)l&+q z`-fXXjg?w8=atrZtb5G$+bJ(+3U;Y-T)iH=xgLgVxEwKYG2$|H7;W0@vjW+3hQY#x zR_-Z{;YT}Nl>#Wf1$=Estc`xKaLU$m7xYrx&mPVJ5Ov*}<)9vQX)J#CEL}P{I{c07 zPx8%f{hke*<#eQo7CVK1QqwUNygPNr$Yfr5+N|!ZEp{;)3qT{IhoF0xS}kW^tx%EG z&?5WdTMeq?4Q@?lX z1RSSeeO4h^LO_%c#vh5^B~s1*kn|=QQv(36mS4xQ++!jmEA#fZ(6@^&PQ!Jtu=N{U z_7TGTSI7`==9jOJo{QUG(hy~Rwh+ZASMO!55~{ZHC_C$wR@g2TO^_bP$nA_c%-ahz zCtuL*MkAfXckf4QUrvfOdBi{-!6!11NgW`H|63^^b#Z%rU8xN8@Q-8RO4D)&njhu; zwiJXi)@%4se3urzt1X2ob|}mg3x-H&9t*E#3W!=F^Le#&&}-@p*^!PV7`?&mDXHua z>`lv#&-KrY+<0Pw(pBH;(eLETPu;qoKuIC1rea~@-WaINWO+;1n<@iFQJ=h%-{B(( zGVA^x!HIz!dzciuY*UD~+7f*S;QGWvKHym;frJ;@S5P`C@6FNLx2Y(Woj|ZqmfAgx zsvsFLk4CpHIXo>BbW3IAN;j$|F(+D%`#gE!w*bBT>q5WpgFXs~ zO$Z*%;fTbR-VRztvsj)I}W zHW2w#`le1W;)5|ewZxM~ZHgB=KX|oFVM-+&A9@}frLN&xC^PM^wAx>wu)QyGZbU3P zs7x&1-)k$WvDb}`qNYG6V+Y^Uu@b+zeef?3ajG24Od&+m-`T(Ju#DoJzX4+c)1-Kj zj*dsH548&~v>eY0r<&nlPf{f-+(G~q3Fvh%+-A4;3xaXCvrjES@b_0s7u}z`rR)91 zT5TDMs|?e=gcr84z3DRwRht`aB@&$R;O6;;d+;mQfSXSJGdXgeX!l&hIPxjFnA1Nu zLQ7oJ^|$S(>C;g-z@SGPnC-ro_2`sWW`z4Z+}zyQ>yA=)fWg#%G1`M7dD$~{27Y-nU+>fWx7q>+@DPM+ri!3SpL7a7YLFHNGSDd zI3GxKD%J=!eJ>ELMqX}1eG282lPuRw30ubqbg#WeXy0^VmJF8Yao559T2fd=@(MCl zw=fONrfE%7p!%hBywQW!O)kwe0IC*gO(;8_(`krjP-K1kPQIStJtp_cQR7dL3Zt&OYI9F@|%F|`08@*(T>c^`vmoBYYZWOqVzMf-;Lom2MAR2VY$un0Vj8j?8}72>az&Xl zjEub;Zp+apeM0p+rtcED^hX{%yHPX?f43xvS2dhfsKUOYd=MFJ#!&H->A^eXr>EV! zDi0!EjObnSdTQ!$l8GaCCCbK8#Gu#oD^C z=vtCfVG%uS56&<=)VS4D0mE4aOjb|LXGz$!9V)b-{?Bta% z9t-R%S0oWpuSga9eix!O4UI>lGQ%!$TUyDd(bCZ{EUG(M}9Xa>u!`G0v zW;z{FtvoWWlDNt%{GOVzTdpj>stQGxHl*HPkGVdvq=~t3EK`&J=F|M9^{lXpJKx5Z zJoMXjP1F@%yvlluK0XuIrg}XLD4KpsSHG(*$8h?xk;PTjI4G@N8s`X9993S)m;8}l zqDxb+;+EanQP$)|cTzdS5jfKWbdevg~I(d%`nkPF*5yG>#c?;#_syxD* zr@4hL{JBE$*5JP;zxXNpIs=)<#_wYUiBY5B$SW2?%=`W>8UV?a8D+~jRZzkL$b%;f z$+xgBJ%DQrx;_kj@ONIz8f`(zjmX$?vDWxyK*5aR%0Sdw;E2drot06JpQWzxatyTx zhtT?f-tyR5pOY4Ku7B=S*6}ibmBkrGAIn8t8zAgYWp4v+mg(d~_CJ_`s!PQahHW7V zgg8r+`o<~OzxwT$U_(AC01tDwP%;CM1vaWf(FmVnz<%~d$^n9a>l9oCquC|efA6n& z3J<~&$}2rER6Jt$(RWEP1fWtv4mi5b##1-4TPOu2km(fJ>Wt9Kk1PPG1h73JF>x60 zm9++V@xPSJ{7HT;2w+AJdRaBxBmeCS-edDqAZ!twy#Q^3%&=|yKxN5wL8kcxYR2+JId9{B*H|bh9HyRK zVMcEwc^XxxQ`tF=E^vc5Zc`QlNR5E)qyeZcsa1i1R7jRPnzS1%n53iwo8A*Pt=Le7 zkV%Jy-s$7E%E`L%ry6OqYRb(n6 zV|PaWihlm`C*E|utLNglPW}f;kxUhbV3Ut_tUOT)O4rX(|52@HCZJWPhfK?m&4R2A zuoi&y<~g#ExC|K41Axib6^qgV3p@lqVgSk55m{H3p`h8|ZJZx?YoLBmD_PMiLc(ch zXGr@KpjI!91jO!oHCV_JYxHZJ@qjg4HWlEx(js>8^y`bKPe8p6=q~wgF90?mU;qLB z@ksaCe6zMbV2~`wj}^NCs`6*19u3*P+6cfzm^oX2P`2(g{B{Og@BP;n)P2m=!brf@ zihe%i2Amt>=4Zsi?AsyuWl+?nF9Q5n5};doBOXoz;>!HHIq0LA_fFFC{Q9EmcB4)M znq8h#r9S9-v-M$E$WvHnr;?slq|y@$6)O6{aE_qs83-dXiFl{bUNc6qe7YF0x5WKs zPe3Y_9Ydw8++ba@qw%rX=CFpA`W{JzZ6p)m-4&mH{TCM6ZikmMn*t`Cr4Bs!u*r-Y zLZ;Li^*{fyVO_rvRt|}|blG+NY&>8_S^)A9Wdd8W6`gS2X&?&z|LK-kmO?Zvo%{-s2)ASAV z1{S$R1IXZ5j6SsP&;~O2@q1{@k{Tu&k|M1A^(lJ#oRYb^Gb(~qY;jSgzxm-`_MZH~w_ zh5cy+ad5(WtKczlhYDuq?5`+~M?hU#_?>C{Iv98zfN_u=C1x0f0Yu%wg4vnT8@hn; zgeM*fO&#=`3;H`g)B{Ytgs9O`GxtNLo`6H0WRKC;IZQYIqD(u@WLCXDCo3HcqqX)& zK#G3mLnzgPXP(sJ_E)WctKBbp|CS5^Q2sx7twdU`YD+`BNMrb;^<_3c79g4Db#lC! z;t3~?rB@HxgJRt>VPew0JC064F3psjocD>)sD5diUdrwx7x1^Cu)ZWd5Vdmk&w^q- z+r-fN?+YK<>hB<;CH^Pxy=1ANc%swu6Nd)IwJ2V=74osJtn!fcqddxaIYM%U`s@@i z=FI0ZZ1+Vd>$9J7O_2L(gWa3!W0+5LRC#Ijm5--XD!pr^8dKlN%2v5mN8LZVf4a*@ z%YxvehJK5>q9V_E{9`0*&;IK$9BMb1VT`N!qf4z2%BS6cql6QIudk2Vqwd-1;~tVF z;*&u!?HrBjWo%W@D;&I(ay9$oh`+n3Phy#`*biaqB#I5y_H zrzzk3t)FJ+)?-}D#HDw4#V)=c{6uFM_A2W$b$e18BI zgah%usF{^`av`dD?~y~8{~q&USK@|TY-nHD9(eZ6%gKcy;?ilo-6vJD!(7mU4Lu2? zl-E;A13r{cz3@Eo>Kf*Vwplmo6KDQV;quJ-vdtw48ktq^H!N2!xwzbC37trn4UkF0 zk`AMfq9Sai3!dC=rd#ugIWVT)TVz-yt}^P}w|=3qYwJAU`WKH-Q7j{_FSD5UTr^nHN`Q=5 z?|@d)+UJZ{waxl6Vq1Qc6jOH(2O*mo<=)Ws?SA=bfV|c)d)s$BDVK(wj_`rAK9-B{ z43}{G2G4Q0F%?cqY%0;2bc8Jx8~UdE#AQ_XP@$$nWOYY{B9r!V-d}kBAKn#90_8G_ zew9++ZCC6R4AHU`N~t|818UV7igj(3hQK41?^TudX^_toGN~pS+!4ELljYBOGR9{W z0iV-x9ZuwDzjY{GO9Q%Es7mfKH*|{=>Ozw8Tiz#ndW(q)oufgoWlUv*uM$T|rBmVH z`y2}cs4+@1p89~;@EPdWAbVcKqvlikE-`S=fMA2;mhS_gaGMjyETG%0Eb@s2+J z?NRZ8#bJDx!Gj0mPHEs&e18oQY!#d#{G<-GG~{!HJ8&EUXOdOMI#@AwEf^cKES`Sb zK)g|-+RkD;w-1pU_@1k<-oN}%F+<*RebWKtzU_B#I9k9<)xbSV8@c2TPpjx_|Elfk zgZn4w`NS~Q&Ou=P(h*5diLe=MU@rfK(#(4muw@biL$rqS(u%99dMs+wfKm>+5)^GT z>$}_g)4^G|ME!1Zv7w2yZt=8#!|y~WYGAiBjjTBE3Rq=}(t6osQvaqZvI3B+AcG|j ztwti^1UXvXaOGleXOHW8yol8HDBZWk?4KU-|fy*i|axM7H> zg2Lwp_S05w2uzm5+_Dk(u&vzR#TL6x3S8(+K^{#9I5TwiC>A}01DZ?BS|8=nX671c zT*2t5f^bW{f&DpiK45u~S9=itTYx7v84u83zUe}?2t@zw9z)YA+fR}uAv(OYSMrpU zhzLL!^WQ_#qZ8bxa;Vl)vXNE+Ey-#-oyA?^+cD(@f!jQ3ev5a>R2L2uP9@%bI!EHj zS3kqh@Zr#C5Apf)=Z0{riAAEy1OQ}J`hLD_8x(0?iV!?(FoZv|DGZjv)0=KbOOXc*#{EMCuUfT@F5#U~ zq#%A&BgBWe(VJt#emFw(pY0$3mKmTj4TJTMjw7~Fj`|f9<4v(&XTmUI+bZM$NP+n3 zqpf%D`Dlp%*`&G>oASW%IzkDdK~F*lr{NbIP4|%YUeh&&{wpm^I~(O>lAu#%xxLeL zxi}0u?Bi03@)HLyrY)G&I{f@v3G|dK>Q`k{{?I1=AV@K2DL|HvzV|EARL01_DU^a+DOai zP(WDYa%|n%F7Z+tviAO-ua)MM7P7PafL~zJC0CP>lj-;Q+?m|fsYx`=;Q@XW3~?r=iYmzs(-jqwR=!fbT3O;ImSSAQM{N; zim>RR#P?Lb4DJ*3ZAJH)`?Xv$t@OxE_p=M7K1*dv{AY1+1tYO;oII(AW6K>qNK>x{ zK!Zl3#T_=TLI5?-2I_^8EEb%sHD1oKZZ6sVY9TZgJXyNsFCX(*f0dq1HivnruNvJ* zXmxiQE|`72-JJ^FIyr|R+_DRiQ#{>ZvqV>1V%zOFy6agE(ws~Ibgi)Ny>LR@VZ3qT z!%6n9?%Ks|Z;l@eGBV6ff#a~Rv9G9TjUxLpMm0a~u1;rbrF35C6@=txSU&cWB|q-v z%a@FkmKIG&>b$&W`PS6$9PW$URs&>}m9u}f@(ElDm}s(xrSA_NnXuu>?xIE9BCyCi zRIrDvK48RBfhbU1?%uz+6&>(XRu`z%bKngVAS?A@D%Ck0pCLx~{o7_u4$|~it#<{= zg*4GpW&Rk~o@B4wB0wpuc>3r)eX+BX(=g24YT@gYBMg?8r{-R6nO$h5sAPTcB(axF z?Xys795Ph{R3>|;-c&0(nGgG_Q3EEVkQ@N z>6wWbR+w3Sntu`5``TD9-UJW?ENB#rC|0Ni*1_R^$7LLL(pW-5VpOL4k=?+?b?{o@ zB}O^}!;!Mr4`>$|_6@piy06;vlTBvdxt!}hOqBA=LW2!UL%?c(Y>zu1H01OPC{+A{2TuB+XqlU`7L$TwDgBi!5w4@{y+Oy_W3cgm>4G{W^Ru`v!wjR0xb~TuWG)MZsXDso?EnCe>q@ zmGMfXT!Xz_pWMNC?{sh3#gj7fI>dJ;KTW?scZdF}?T}A(#~O)ry1{lxMKY4m=(jl` zTHPl?|)Xl`-N05lN zuyN0pg~XK!j2jJWJ|X%nu}#&B4I}YmhTUghrDq^p&CoGzg~Ofne!SXivJ|!qWT#C$ioptXPh5Yn0i5%M*tgCTbj?M|Raty3{X~$-T7XAf zU+;NwjELKM-zV_h4OwJZyn_#sFFUE!<35%GqMRvhHmlg^4+CA3c>w_d{Xlb<_Orr# zf@l3cJ3Q3R*H_HYu`Ji&i7gyhAOyyA7?4mQh-VA&NI)1rwI&6RiMda8bg&+t8O0OJ z$K|!t!8`OVgmjQqkkPkv){z)UbtF+6Op;C3;`!XO*gt%0<935}FSh#F zZYMI^LBn!_NyN8p7}{}ChplMGl50zwrIu$SbA(skW4|o9UD=xHq@GA6x6{LYOR;Tp zXIA_f>}Z{Ji7vHo)r7AoPa=(?nVn-(5`~MQ!3(wH30V{rHK*VSWfZ!%4GeO6WwvV) z%E&(zV0tT?L+nD>m)nP>CxhVqsU+i@JQr2>F_$`JPjRzdE3sKP2)D3&bB}OG_nR&v zoFq#y<9+?I&)8D09ew!*XU)PJH-#O;ue2lnZ1s`C^O*bkE^YChXAKpC6ss9aRsYv|C7>=nBob8%L7zd?|&E>+)1?L}=!ENVa%h^i3T zYqz#u8aL{eBC{sH-?TBmd}oWeC>*u_;AScSegvK z4KccJNxGN1oFn>V#4$5jS$D3;m^;Las)(Fe`L^})RhRB*f^QR5+XYUVlaKCtHz+(s zEp2x^mJHu9;gi2<&iG#9?m>S)Hk*HKPVm}9+d&u9(u8C8nYbXJvTI3HeZK_OF0r4Az6+}_U5>zF97n@Y}{7<7F;Qm zpI`m=_evg}ehsYnccTdb%U-?=bcw?*%XL7qHN!f-#nWgLoWL;vWk)a)IA;hTh#mK-06P{N|%pY-}oaK zh01?w4$A-jX3PJjL62J(^es7e`2Q7B`IWf%kho^dxXY)8ni>fI9~K-1h1NF&uQjIAg{J71IAO-k@CNZHA)#tGmTK(18n#QS;sh+Z-}Z!`VchFF&87ovgQez$AZ zl4juEyi++@Mn`P19bB;x(UekX4=5@8Zmt)M|E(|nudMR_6%9SYp*9JDTLi9hthcQ+L8sZX z)2MJaOy#}Z*x)JU`ZErNctVFQwe4qa?%X2xN$qNbX$eL7n9JOgQ-Nysn}5s`Kxu61vK-%P44XoXI0G;a-fto##j{lXj`MW&TjE z6zb@1b~ydO#x=^6>g3XUvEf;DeuR5(qlY%zq8_+e!nH3;)lLx7gEw)_maTEs+C%eV zI`IbVc8Ys=`zx2;hUo>}(N%X#CvEm6df{@Jiqv63J-Pya*0{!N(tCAKbxB(exB7-r*>2X6<2pinO*oQTPSG&rg(cQ_sb9b&8VyY?`uIOi@E zYt%n;pP$1AKa6i5j~1xC9-pJCX^gHjo{lk?ZV7&bP`tfhxEh8kR`;3m+m@)Bbj6kF zw7B7;e#$F=sd-&(J73WC4=D(@SAC>cIh0Gq5wKX1@OPnXCL5m=)6LJLyY+QSkd34@ z+Forvx?q z*&(uKfQl6}4xl-|-1bQcMQ>DFVsdVAhNC~k>NtEsz)8vSG}zJH*eE6M`)S*>%wxh_ zOuG9Bj*tgAQ)N4Gwmqra@$e(ZEX%;H^V~n$PJVBXax7$#arww7Xi+RRq??K$kF=b!BTGFoid#)E<$+s}gO*#Boj?f>iWvgG;kvjEqK*lPF z;j}bU%_KYI8aLDD8`M?tI}J#cVT(qmSOt`;U`gTF=U__E~f5h<4b^5|Y^ z!U>r)p(k!rqdDuUK@w(N{dwXxyN${iosh135Yr~NY$3(pkg6CA*qni+Xd; zaN5Cg%|z$JTiKLD0iKvIL)x;I4ORFPor)jlJ_0NFZ_K?1RFliMHja9fV*!pwL8RIM z=~7iXA|hS7lz`G9^iCjP0~7?LOYb#=NR0#nDgshNOOQY)(nBu+DS>bBob$W?|62Ec z_1x>+s&)C^J=EHIIOFH>VxSGuZZAnE~|n+?-Am zm+E{mZ}^)iFn~c>om5(nsz$)@dBM z|A8At&@1dOa8&rVIX8OL?0P041QY{I2seP?Wvb z61lL1E?bOLiVpGxJn!yOSm_3knP7_A;4H6}Wa23k;wH+V-F1 z;T>X{fn0{7?!Ed&pS`Dpt@B>GJZ?(V5{Ao*~=V2 zsuwn$VO#P^?bD5;;L#f=Y(h(1+LneTO6ngu)`%z_uC!XbaN+j^@GK`Jnb)!Do8Gt< zMSC1a@>pVgo|u(TxJ~YbOh&U`u-{E(=0pKh;GV0Ns6Nxx=Kh-?53h(K!M zFY3CH5h>89$E%KXWN%4dDR}YanuW2k@wb=X!YgW)iaaxZe*FF^-Usx$_ITjFJgrxe*6} z{WcZK_vgTe@xhIIytlMrCKVjm74GKd77oH*SPx)>CiPB{z&sNxwwI0c^B{xf?$39( zyLza>0g81#D|9LH+)^gM1zuu&w2XAh^@4+EycsVtktYIN^aIUG*Vi|o@bnw9)E~pU z{gFus=&YCOnfjUb2p;I_vjz#m{G5(b%B-d$a(~zl_{R-iDJiu}ns*^Q9P);S5&7+2 zs?S%_>i3Uhx7(bk`wJckiHQ!64&^XQyYh|)xQLexxP7g=6YoE5_q|Z&-yAsWYOr$< zdvTN9N-`DS=&B6~Xx^z9{<2^eecPqI&y=%M-VhK!H?xl-t!@L`~bxXOLgRtZ5n$HI@#!=z-~Qv&gHRXoSfAQp}U6y$r{|M z(|h5Ahq4e0_(m?r#|_LUNpsyFpd!(Z;URU|?ykp1Ldu9%QkuMKZYaaK`kDf(@GaFh zu<0f3sc&5j16{Kl^H^H*mQ=HP zO;$xf&)r8FB4z?9*i#I1h|K|d2?8qX!$SnYMSq2ZROPp0LdVf_+wI*IRY}wLBg>-B z->bOhuGkKhc*h1Bw6lIkq01V{_mp3m+DN7{vNL+WUtzoFKx)yzZnmgk_8IJ;-#*C^ z%c0ThXTup;FXXl!ctq5jqYk#I_mIYD)jF%Obws$Qxv_pKnh{L48@#W~jxTp6*pAI&_2O$cHy>{)|l#n1kbw$%i z$Nf!)|E5q#SeV1-9L9ARHpOkko?Q&~dVM`&^QXMUV2B=%<0l>2i%d*Hs(gZi{V$X| z#QhXF1ud!-FGR5ln%=+v2);iik|7#>)VXpQB1VH2{yNBo$+AT_Y->7r;p>`}*EZ6K zSGe)ff~2kFSn6v&@@{ET*<-}4xxY5}4kVyz3Wf;fMgjBezP^eq4WbwrappIhmu0*mi$(KI!9^f>SPdwbQs=V@lh;SZ{k!`alZx+;BP?Amh> ztNJKL=0#=c{ndU$j@W%dYdfI+RdFpRyS+=K3qDSi$lLFWT;J?eU$LJp!;*Wkm4H|~ z?vzk4Lq_ntlkd~SZC)j}7=0onYi6dc>^L@2Etn|t1B-h)M3HkGCS!&+3n&Nmmkd$ErO^do>ymsQN3o^dYHdDl z7UBDsO(RkQU2SU~U%bScKM=nqMa{EHsD^{te4&rs3P>{)z|$E)iYB8tvh%+BMY7+0 zeA{A!min_p)R|O+P`iA3&0Pw>FlMg?Q3Zn(NV*OgPI^pET3+O2&8@Y-86~&sO$JK) z*mPKy+mrL+Hiu^f*uS;Wr7U|SlmHZ@et1$Go-U-S3osKw*e?J#Wx$Jbtmc#CR&y^e z2RxJhjA5@w4M6Uyfh`ufyv84vRshn3k6HrM8Ij&zFc=9Wrt?4dEv<4+NWTEye}twI zE}d?IkE?V!qS59k=@DSSZ=x#rg(MA?PHpKpImM?58CCaBT3Xpeynfd|uTR(_Ngce8 zQPXrlf!j>?C;K(G-0xsI@9s8wGg&b46ZHC$q-x*633|}@{&+EMUBGgHXCQSs4>5@; zedbEE6oaQR>gJhf0%dI*Y!}(^2Q9b-K&KeoWqMHGM_d2HM_8iV0+p5xww;Ufo`~=N zg_X5Rv9W(nO031NDJs_A7;--UoPulQ$X;6at54aZFpvp%A=@KznpjaxiD#?6X5FF; zh)TcBY`9L6>U{cMO+Mg<4htoGBndwDq`^DP`M)|$;}MdqX&13EbBbrH^*2GgtB==? ziK2l(ZPv?pJYh`I4xob|h#l$@PHysCTrCR&7ozc;!gtgUcg7eLXQlA$dVcjBl+L-F zQQ11+$J6T|{?*#P)YT&*>>eZ)_@zEGJVM~%oyHvq`Ze$6_a&QE)VgVqKSH;CVf^fPE@!?x>{eEEAq5qpe za}=P^&~$kzK9ikQSf|ZIO z#h99vPJ*wzfPSVq>Ee0wfQU~*>3tV3up=*-?NWKjbeW);An-awfD3tiq5qsqDyJFcrdi&2g2`RT+ zydq`SpItWw)BQ0?*Zv+w_{*)XiKkClKy0a5`JQiCSlQcAyu{qtP^%1KiTymlqkW86 zVS85T?3uHav6Udh%nTBUJc2+EA)?jKkO@~+CnlacCdC)!{77khB*5gEFlbPCfOMdr^dBjn6<}j6{F}KDic3w;aAc)(e# z%ijaf6!Y3IzfJ+jJh!#SF}RgJhhJn&nK1v zJ`PT)yOjAfuFnLB9q%_RH6L3HK6?*Q^zpG_gtF?JHA;$nz)BDtkYRRwVL-xF37RT; zy1UWes{>F%jT1qd4O6xtB^BY35dWJdr?le-(aIWrAaslc<8-2~TgYN)!&vS{$y95r z6|JZL0RaB>Yqwfb{_|N!>4LdoX(dV1SGL^;Qmf3jaw;lxrx`Em4;#qjE5(LGxYl7W zaT9@ZnTBPfS6e{G-ihhMj)2=x1SP>RGXG?H0LfirMPUNcA_0Ua* zw)d)Z$O|cBCw$Edi;8Z_9^eM6gRBx;qRw!%f0DPgZ*~v9cI}II+m79Q6+p#C`JH>( zGTWgXn7s$p>S{$U=VROJkfo4J;Peb|qoF0qB_dV@NIa)9Sfz?G0avz!i!SiPrGv9W z8Rk)Qj#@>0>hnEX(IWwI1n15Heph%YTK;{r@*gG-A(`IO)JcHg(62qmb_ZEG4R{eh z-e<>bVFpiBxtyPv;B!ynYs~sU*x8q_PwBE{5AJ-JE;aGpw&d!wP{(in_nXBK`l zGC2QIWcmP~oZ@pwK$Eky7D?944X10h4D3tm?Z zdyVuqQPxc}=P>-;b~l-r6Nj91@&xY%Y_S)KI^!Bngh#xI!Lt-pRIGEd0FVqldgfeP z!Yne(-pn1&zAEAf(0rIlQYIyHd8h7=YAhVB#3&$Y8l| z1@F0+>s?_Yzyf^2$7ThOp)>W`RppWhGW6d$N&M&#v0Uq%0;9|csJ0Vp)K`KwmD8m; zDu+rf3)Q1W>OV2Ux2YMqKP>Hf6z!E3UM2Qc2H2&Gt=-qmq*_qs@tSW=htXf$pA0fA zgy@0^jcY8&&%F&|ZGblN=^QXme4&w%X5FTYG1Ar_D~F|i)<8bSirhSxkoVyhf?Hcg zCt8jYK66mq8uVYVAm`x!(jkkGBPpJZbcugoIq5Q zg@)yY7^BX)yNjr4x}ZYT4d;vGWF6UF5)Yf8)02^*ivcv^nY$S(`fMvGDW8B>Es^X6 zoJ;}+$*s9(3)2eP)0K_{a1es}$`-MTld)yy+o{*CFR7Jzd6S7zyg-mIn%a6pCgkVR z8ZxRJ85azNNAkl$v=Fbf4t-avAzGlUE*#T9-iGs4C zTmqczU35~L+MYPJ>piO}8xqRW-x>Vs0+Awr%nh5*zb)6dpLuCPL8}bh`+Y!?W1`r_ z1nkpTQLVZ4``5snPyBGU8McFr_9hfhBHo7R#eF`pSEOF3k33xJ!N)NGdQ2fkvPc!V zj{mp-G=KrLuP<=&(ssrGtDIaf{mgUJl|!cAFp`F?@&pwyFI+!+W`1i#ZGW>vlnS2U z3RT{FLW0H(CV*EAND+R7YMM^3`GFAW`Gmb~j$jNH@R6hs#f0hn8)&_i4ASPZiiQ1T zfq?T^GLk_q6%pmYtER1fG#{FNds%1n+GZVRFdYl+fP8^HxEvs|)0ZxipRwYNWnol2IDM^_&7`kwuDD138p8z}dGh^VkEafU=KRaoFp2S|a%>0G1|V zUq6--mk;BC-8pk?&e}ydfj$WX_Y=iD&Hts4n%68)hXi+79fI< zazk1V56aGnD`mbE<<-(QdE6)mRdluW;2w#77ZDB||`TCCv5Fa>IVpOXbQb%X52qV* zWCC$?&k2|9@5aPPVs}Qpj`SxGG}&bxUvsAi-HTj!*E)&sV}#;GWQ}!V!Y~;RK<*55 zHp-;JGBS!oqKb&vRGnTJVZ5Z>i*OCjY207(SM57eA}INKC*;qGS83TBADoC2KG=X< zVNPgoy-1Oser4s=cGAva?0}6#>FMX=b?29;O)vY|G-VQ8Ka`Hu28^b6Cr+CV)}UVK zwS;TKM?r?9N_?aFP^@B>9~#mdA06&Bp2XObFH4k3pFcmbdr+thn{C3`NG2a&xOVBD zeGr9ODhwvUeR|SIbKT7m{uPjXVg`r#42tB2{f1p`!Zi$pWx{!j>jUtau9&xp)6OH~ z$Kc+FnW$cA&Y-g4l>jr_IMow-+l1HIC&+=$@GV)I6btyTX>kz4h<`euqO9WDV7-8j zJf;F%lkoz3e*OMS19vAIm)LsR8ut$c2DKbTYIombi${J6Nwp-1yz zAYU)#05;YI~2JJ;!N}}(> zOF96|{911Y*+6lm2WPMTt%N#9^iP-i*q4*trjK&Xj~=1_iQ47AB^msme(7VXFJK!$ zZ2YT{G(AtWk}5|x`u^G7`5)vq{GVR--%XhKcfa&Sb^fn4O$Sq-Aa$c-nnmi4PT*(P z>!qD5Jqb8PlSRo%{d>{+KT3KK`8z+NWMa*4%B$AE(2&?? z;Lu-6xHaTFQSn$n5W@KE@8pgw(dgD(umWIQY8Vm{qRy?SZdB~NzB5JfKhj>_&)qz( zQ*{UPSD_{v{U2VnHsvNZlBU1kV{NiNN@HktOz59>nJ3cxlQ)t89_>!oBu_I|wspFl zuxI>U^4E$@iBd#Q&jj{9zv6#4=OT*PmlV(l+hWhETgEo#BVHK3{wEJb>1b)KC{@whnhTqA5}#&iJr{}R(u&o&#)VegKyt9rjJccMW`S66(eH3hkfnv*6qd6S}iv z=4{evVgcU?;Rq%t!-6x9QA9R2gu(90<*ZpILGzqwd8$SP(|(rbf)T$2m$Gof=K53N z>(B*5Dz#Uo%7N;5^!a}IokyonpN`E7X%r$%M$49fcSAw-qW00s!qL6^;FiTR!#MmD z_!9+B?`x}S5#o7g`Jn2CSo5)W3Sx3{<}1`a2uR(n5;1VmG1KIzF1FayvEO}bZ1TY^ z+cs#cJR^7_Ke3Gd-uRX|+>2V#?D3JLc8$}1 zMAYMA@LxeQX|~g%V(6OzIF3k8U#Fgpjo_a;m(qM)u6#%f+`2)Xd{a2(cIP-wLVvb9 zy##(xrKe3lf(DtEAgwa}TsE-6yhJ3TpW> z$-ATLcCq@bPzrTA>8O$*%l__lNHd}h97XWLUFm#Yn@OmxtxNA+J>i~h`TZh29<4K8 z8;B7ul;w8gyqGPXsO;MNgG&)Y<@4d+U#z^0_u25om|>_aAQb!FVXz^!0-;a*+a7$z`Ti#idIzT33@++`0fWWl6gXqqH^R$~Ka>dzsbKFx1f zVuZ?2oahGyaPcof&Zas)re~{76G}3NO&g?p&)jeR+VWe5?;Wp3s#cQv5M#q2xdOgNpI?yo+lwBa%pgf? z(ox1xl$V1;vD8AR80)6IpdjT#(rx>38t2g}qr6HX*O_Z=+x_pX&&#v(JVY-&>s9!ortzy`%`vpK+L3SoR;gxjhkYg5#i}tchj}H zcGl%tq+wN(NDE|Vry$0I=q=?kQqFSM@}tiR5gEs=(IciUCsf#xzjv^n)j(a|Q}~#i z5}V@!sdEHFl|n`;@W)U3EOZ-mNQg*4F8B6QIHWi6f~k~^(>%P_rA!JBR zcm@Js%7>&lB=F$@qsf*9Fq#StWdo`lcPxjTC6VTpHRppx$X5Rf zYe{TTYBD#!XX)QWr=qpPFmam{7~z7QW&&=l4@Ppg z!-8WV>-mY}$cJd>F(!LuvRCbt7t=!0NqMjba()A62i@&VmMR(3sTT5_@3SFR`nryL zLkE%4i@Ue;K|tt3MKD1J9-4&Yl-RCtTZn9GJbc(w6mz`_z87WE^r*0d@s8pKx^F%6 zn;^hP#Cyu>5h2M@MC)%&DsTB$@E5(r35$}C8>0R0ESTF2y+8g{V- zlxk_II`k}XF3CRv!xa0XZit6%(bi&cGh9nmmG13Tsah)@?8lwk&cZ^vQNzfU;4uVi zz~&jRvBr{s(1I1~Qj_tA??41Nr0xd8esBg$mk#oLZCwb3qGCw4dM2=xP~@# zNoCyj1Wm!o?0n4dUv~$c-N|1FG2;4za(Ku8v;XX=rD(M4*wv(d-ny=WW7IwN<;=IR zA5$!MJj8thwp95xewN5skk@!SEze*q)@q3}!W(Lal_2p(`>Ac5S-v?~G7K@kVOOlZ zb*nO59bRFa|3f$PT2s5ltiVQ_3tfZ7PEA9YDyh>hMTT8k1 z^o3!W3DSjBXOKJw#`4Qq;ooIA#ND1XP`6AIKAMFWS$)h)m-Z?8IvoqTqA}NzLEE$) zgbBc96!-~?Pm3D8XVQcZ0fMbW%jqsa&9n*uqJx|ezsDVc>+^OL0D>nuwCl*>EVJoy zR*B2ChtEGvG8|BS(vgO}KJ{{ed1d5`>?0VfB04!whDeRLFeWAxds^$O8=b@#eGg%_ zzX{A6@DTacNppDJ#pe61`gIId!%k|Ns>SXaJ?#&on9GhV#eQ*EIU;Eepa$a4cTsF2 z_4Pch-`%TgZl0uh)p97AFjpt&g6tIPZ@8AJo7+V+nme6RsF$WJz22U=L7V-?r_v*B z)UjhR)tKoAy!{@*tlxvnaX@Q6JwHEEf)txqsq}UN`>@8keITd6ZWuj zi!muFIp&E@L2h6&WU>pqYVhENaWXwh^iRR|PM}>4inWz!(zXv!o*2gt$bK#rj9Oop zx}RK)`i2m4XL9b?C<=I?Y|6&b{NVjXS22fx3?tHyuJ(3HiCvCCsz>`mCI^&Iw!bdg z$(>m*7e`c1sc!s^sA7)rx#Tw>Lddy>R-sRdXS3-Wy=IZs9ea`0MYo}D_g1AFw*)P#wATcKq>2R6sdOqdd z`>X_nA#}7JCGI+Eq_|-gG?XvV5Cq&Bvrbl`AaT)SV3P?Ri5|&W<4G&38qmjXe%Zi> zA{C&7(x*l8zhglFK7rJCWW7FsvqkfBOFjToXqLchTT}hG64SvlVpULe-uj2in#63q z!Zf8M{}X;$7QygCs<~{1PvpVfJPPD0>O-l|)NV96G9%qtkchX^R6{4&s^0t|gO)xrO&}C^9Yx?F*nD1I1 z`Dc^fVZy>}7d40YE*Qj(=U45Q>$ihs*S_cemP7N0rM!#xLVk#r@_S8|@7*~Ir&Rdb zY-8JQ>;z6{r-5w~y;i2LJH%$JvLrpp%*W?D#dsw7Xpr_>NfwS@UY!n)jy5XPV)x#$ zNh0i7s;MUl^=~GNogk4aYpmy!?GBAmgY*DN0fW*ZBnnWcv%@HZVH{50&*vc9qbNY9 zd!{_Od(|!)h(no8YC{UaVTb@Q2QLf#tV7F#&<3L>B)w=khm1V@a=w+lUKa%@Ac*b> z#7||tch+x!i1OySl2;q5ac*-!oK9OqzY1S+XuU#cfk z<|F&5+`fx>Usv6_MrxJ#Jv}8F;2xEOtwpEK&7qFMi05o~{{ZjoQ7B~+GAV7d6B|88 zpDAy)iTHUvyYbSOle6ipRgI}TJC~kE`0oh6)wcjdoZkp_+N?YX5Taf0UQ38K*xhs0 z9+1=#$Co`vyuw^I;O6z*x<4;mh-cR3XQuhRdXVX^gjJ-v9&A|rMs1B=W&1Ix1jhT!~c(t^|h5KXJ1e{eAfz;!clAbU{9g z-;3j?rarlkw;Lc5Qj<()7Y?=?T?ejTS0Z72_3l}|`18jPmbD~t_A>5hqPPQd%DZ=2 zdRlU-g<5HOVmujTja16SC#&K>jqqKcr42NJ?XFK+p3Kk3oji~&Om7BW~SmVLcZ5V9DJO+L=F6+3bP#lL(_aUH)FU;r%f`oY<^V9 zVsUinn)jaD=Hv8LDq3wfFf?y{O<7y@?mpsN&cvc*>Vd}!3A0ON^}zn3 z#N1~p>BySF++pcMN5EP>NWYaBROcI8*;O(OzC>+D>QfhBy1JH6f&~*8SetekXtFm3 zqLodm>om6CzA<#VA9DJD`*m2xJH9Brw#~#$`hoG%N^UZEN~#Vq$gaQUfKB!M@zS;7 zz~s@~Wlm0%3J2`r?Gdj^A3HmB-AA{#)+Sr$3sPNs$FrL#GYhDbvWa<~g<1xIW+eF_ z9&T=OTJh{Dd~S91nUiG8e@*bBmeC5(1i+eJtu*2zWnm|UFd)7DSm_ih)U z7rkf{h9BGp$$ZZw$-~%y&B=qYY9V=x05h#xYy;m$JPdnAER~C$sqn~BYpI@3%ml=MGx{}HeKhKak zHUD|7mz?mJx)oNFt#ZaW{Ot>u_3S}2($rHKucJ)@ckb0<&1GxdvF2T!`nvZ&p1RRo zWK?%EGW>O1^_LLYeZkZ-BR1iu(d|4AP{kNb^Zof}9mxBpevdkM4)={|XL&OlAHO+2 zVX|JQOl|gS*8pusyzDA~3nlekzg~^__&E0BC5|!~v}x>Af_0*`Nb=O$&P9jnl8>bt zr_WCiSNLL@t#v;(3!qzBA4hr3nea|sK6T7D^Y z?R&P5_Wt8ib=o0s{Q#}cU?5eij`q&jUq8S~sBf2=7hhF%m#S08z*qz-)3I(CbxE}qTdEN1Bshq&S|feEhs4O-Qm=)vjOz!Ke{>A|)e zjF^s#>@LU}Inm-47~8HioNo=LuWwQy<6G=8l22Umfcj?ZnMQRbu(S7DXP+kZk*ZFnej=!f%KRv(X)<+skGXA6l(2S zCAm}wwcPPo>fD&CXV};rC>9~JxH`}w_|cK|ni02+s9Em!ubrcl{qjhh@t3c#U7a~> z&`vtojfm3LCP=?jsq#AY$(auQbmF{J0sK{z%b3vWzN1RU%<^}nZ;kWSa}pnX6YokC zyS@^Q6%cI9@nB6c1?3SR9BD^AYVay}s?ZMQ5*7YkAw4nCWaI5YoL2$5WWMRb1qm6E znANYJ46T#q4{PGdaT`C{Ggnb(M{1T#nImvK$v;<>z8DR6U$mF|B_bhv8qv1%glTok zO0EjjPxsy8`hBs+4J0tC8n!u!_TSrd1N&ii>(}EGc)6uY@}VbwDTr0vnTy}cph-e~0amT{ z_jPsEjc7kTO(`ejpFKsi7EzZ=evu<#5%R3-@cq2Aoz&YV%krDtQfgXBruq5HiDg=; zV3Q;GJ~gJZNT=TQUx}|KZy0N9VSY<2)apY8c2b#Aew?Sv@VemJ={gNG)5=Z!^$V6J z7(N=7Ht=0i?Luv%eFn$=xb|0Hef3tqv{3SP86%S$Fb<;|;kb;xm1q#qE)K>?W1Yj~ z{QlaV=-~sapdSFhB7c=BVZ5`FlzGv)n!L*)%LN!=^zik0rqBu}-(nYODP5+H&*Pmu z>}t*aBQu;QXo%uR%I`D7tdE_!xE40#tz-r{y@{{GH`p;|{t{>nS8D&$o9vSUENLv< zW1o9@;0O5oKi1B#GSl?boIl#5R(0IhYq7ZggwS*wzRy7M!dxuNFqkfgNmW;>3~x`N zy(D_>f6q9U?{UT@UrN7Sp1)+iqpPg$&@-zaB)n|2#4Je_j>- z_xH6K9;T-qH&Q43z4?ZQrSvLN_QX?r%eTnWCI4)Z(&V{~gRJ=fv&Vwwzi4OM|3Vfu zvF|8t{#livG|+ROaSw1w)PSG1U$+9StpZLxtNGhd#*gNzA7oF^^uT&S?craK|3IGq z^iSeBe$`LL12e+M&+j~6QsrO>eGk0KSRgU6?94xE`=jL6Ngc(fF#?8&FJHcJ#TDlx z1|)wu8=wxl8eSKl-!x$({Z%6U=i%0}Y{UHe^5IYEumV*Eab7-$^S|*qY3aOrvH!79 zv{qK*e2c1kop=9La$2~SJ0G8t?;kRqnuQnArEzVS72ijZUT@39>%Pj-x}vP8cHRM| zm6F%C5*^#qqibTHlIJhW8NEBb%Yh<<3j5FQnpuqh&H?sQR~kRaeRE~=KJz(I7ERIQ zu5~~7+A`fgH{h11@JTrL`S&~oGu?v%R)u@x2H@N*@aSQB@XCihDDmMR|B}OX|7AGO z;{W;lGmgp8y;=L!%SwROc>W+U-njCQNpCW%Cm~-8GzFjf@~`pCJKEy;n^~6rKe+(E zuC>V=$D^q~*07Tz>;8FKG zb;9Sa!XN3f?Rad>=kn?mI2a9;(X)>wEA+dd!G@>(mk-`D2VH|i@n>*HZ+SWG+lN;g zBQeXwmHWh#Ctr%g1|B*eJc&4S=2UaJ-JSEkbUP(Mk1BLrGPP@&)a&bB{-)P}HUryI zSbTdQtJW{~Qq0Okmk>og-_LeOn;a5C(Gt`W2e57uo7Xm$Qe@E?Z03TNt|+UNF-I9T zHW-d&1bL?ptE;0`V^3vv(@KISw?e1e4PXZ$V?N~fsdl4zr!Tbl?wa_H1f^;%1g8Lr zC|}y85!v6m?IoDW9X$Firjs@NrU5<^jH!yF~IN=PD46@AYT=`bfpEw;Hkt87P zxRWsuRJ@y`tbT35G~>D%6Z5Dfh3wj~Y`)HI^18Wxz7G2CGKp+@tPoOLu3| z{~3uW(<*E{NEt0EdR-b&-kA@qPA4CCiMKM?&$Rf+@>a=X@zq{B)`w9p3`uP`qFGLd zWa*#{D?z1w%g$No4Y|Lxiz~)?0vIQjkT|+D-qb*Tl)$h4k&wh@C37xgF3I z8Sn#iirciG&31cKsc#*L*Z>dfX7|yuh6IfTf)@!<>17X_n^US??SZWxd4oy4webK} zA}|x`00e0exCVMEyPfct(8I_O;RCIHR0_dy_ytb}dEEmJur`BFUS9h`S$%~b*k116 z3deeObAVJ&pOTUiwZ4hLvRryHr5R96Fs zdC5o?OI&j=28IIJh5YZ}dT(c-2tQ*ap|u!Nl# zS1s+E?O#NuO30y5XDTYBWPImbJABAvmmsAtN(CS_PqDVHq|z@V?(CzZee!%;4o@d; zBC$_O0cto9Xt^*l!WKz)(o?Ey?=LVc4t{pk)G2Guxzu5XDgXG;qRTeNA&ciR78bdl zrj>r%G0(7}rbMq5gDBaY!FZcg!a|PPyeH<`3rg$seVNTnz}rS(aH?ILS_hMnwTA>NLTNMOTpU#5LjC?a@hfZ+mXqc-gb@eax|E)VTe9teGnE{gW?{AD4a`AY?YNs zSOo{1`N>Y&pE;{?6BRdMJGQ?+*^qG^?LQt`SF!VQb=aj*sdD+F()9=Di~wA51g<_! z_uT6FcC!!X6U=m3nY;#@UK5`K>lfOR2!oC!)WDB?bxO5ZBVk$Mwlkkj^8qzxQf_}P zcXBycKr=&JXXTRffPXGCV>khW)o8Gpn|Hh8HChxy#0F^BJ+=1}svPniW4xTtNN*G& z$+XbEmb4Jg-*DMD7?dng?lyjO>t+S2%Mt&+H@AABUpu<)@Cd>8S{df@FJ(wCdnkX! zMK&uRb!oCKIJ@xfQJ1Gn9rRXq8v+c>n-dLa%@*CWa(129wKKP-?`KBtnLw%L7 ze4vz%{09qp8TiAzz~GjwEc%dO8=4iy$o7>~)KTRXU|TT( zx*dCFe!r0;#a!$+G8pM)g8dc*L6Ik9&B`cN#XMR?5>efylRsxtUwaBhZ;n%NgxN2f zA7i8Mz!86vv(P4*@n>SeYnRVGO%Z+viJP-@B*GnM-~F&o_t z-DU>qSi}?)N_UrR8C1yc2QL;t(zT^zF_$~!1^{3Ea8Hi#s>Aixr0a@Hz^D5f!p|U$ zvG;1M_NSkHt@_{=Z+nif=Ll(ZQr}2g6b;YnL9S#STuxqFK0|yr>$Sey>h4)b!fYSh zjbYf9GSQ7sPaw_6_SjZ~@F7F462!^urLCuROUk=>)wXYbpVS6hoH!D?9Gw|Mqk#LG zwTa9er*z>4)rDnR18Zq|=ng!uWKq2pPrg8+orgJljNvI`U+_CG+AEkTHt7m98Gd@Vv^m7)oobAa;a);I=#H6l*V0QCXQ5R&gC~+mw)*BZs+pJ* zEaR``R08A?(T%GMZ}s{vN)6D5X5=$85eyNE5^?3>K-aYCA`?TsgUYf^2y2Q*Vhv%-mUB` z0lmTe^1|Aw2J+Eyse%O%89+Sba9il{G_%_ z{__*3>;VCYO=;@hdJw7w@Tx0zXVo9G=dk@cGOSxhePM8Au$}=upES!odSRV>{MeF9 zQFIkQT+YBxHona__kg;mJVQ$tmg(y3XL^G6+-pzVyH1})F9*^afLL}udPWIGL zG-U&v-3d??l+C*(da`Q~Fhel-Tz{N=#(Wd``y3u=PIWcT)oK%Ok8z3bee&*Nte2nh zv~yn#_L%C`llNkWuK1sb#g`UQzjTmWxZxiP{SRS{n@?*kBpTky32Y;}g_G&78h3Hy zXCP>t0F<>ays!OTV|f zNPvPo5EQ%BnLK_JTkySO_Uimb$fNUHLCFa`YOEM@5HPm1+7vJ8%-0Lx^ZN91UAxbG zTVc>pww20T<}wDg@M?rp5=YwJ1zFMUiC1UuuV90t5`|2&+v2!I)h;5vpv<6fIBu1- z+A8EM2)R4a^2H%Ic~%KK`+zSDQkd1AIGC(CYSe#4cG|l_oH)(bzqKSSJ{h{=O}=xZ z%q&8A11D!R*l<`TgzGSR>QYwGX^U+@nE~|l0L8buYmgo-Pk(y?AT)G{9cDZ0qbXON z=^@A@NDYjx(Km2dY=dL4^2LsGJ(ZyNVnh{;!UDpls*q9gC_k~NZOpRaGFzkDM`psh z(wEh_u6ZNP2+Wuuq~Y57E!1_+w*wqt>8m;T5ITTarF}8MuvJ#KB^~1o*qmd=iUf45 z=iTQ*MAnmc9-i#&)x+9TrnI2u&kctIQ_Aja_k+l#%(Ae?45U-Ugj>OohYImc|EVZT zJ@+?;4O=F4dsDO1h?Q3t&MJWpn33&cTkT5o&&`|RJrTUK*?&a6uRmZ5_=L-l&FmN| z)V3aPO+wJ6J!TaSBa>X;FildEmb5KUl{m^rQ*9>3^MJbmBU5COQhpy=^J*Px&q%yg;y z$TzzOou-?et{JZA-`rZYjHZZBCsy9X4o!Kz=`V)vW)>`jkK!AJF^`W1CT`5%RD0#; zeR!!MNqo)=dGk<42)?&4CxWr3N>R)k?(1&s=Ojr*AM(DOlS##w(5@VoyVUO(l5Wpl zZGYA4{2)@miC%?)7pkgGd%?2dBl%HYW|H=Kzysiz>$RO6Ja_X9{j) zlb2RMcHbht89Wtb`{mWq@@b$(x2*4|Ojo+EU-;)FriMQlVZVT*})T-l4^_nG{bWvdi*0;p99}VTmNMAgooB*wq zEw5o6P$^nQai_fDE#?; zdqUE{54+pK8-J8vcB2x9NcGw)F@aB3i6_5}J(sOy^Iag$_Vkqrpr^|MJ^lC*Q3HK` zqi@-&`frj~dS~mXj1f=HXU;xZ)ZqM=AX_-7a?<3fQ=w7DMRTQC=dW55q;VAlG{He~ zF1ULp`9z!3Lk_EO-IF%!5L8|JR1ECquhKZrep}ZqSMiQiBuR-P{OQ${q?OJMWqcn# zMx**mqquS!zUKsY`lVzIW)bPk{<}+>fx8|%72DJ6&pg3l7WQ*i> z*RAAfXUEtZ({|QHD11Svg2K^ks=Hqbm9xet|@Y1?u@_<6T?xjCxH?7F%EOZAynQ_Hdxf#HafOd_Pxi>Rq`;QD}}IV~F!eOKu`e|oZ5 z{E<+3<#X3=*8SiErzG2Rm-C8G>^9d)pWkDt-!*Cus%3@qA&^O318je=Ic*mEVw7Vy z^U*py#vt`^vn|G@_jAjG>4L(JE5++Qnf$Eqc1^T>;~+wgFhkq%3azSJjYF}ir!=g> zyui0!>6Vo>7_E(JtkitZ&i?1DzPAtXKLg1&<@dXTv&wZOb5)HU zYz=lmriFmixbr|8VFr5px8v=1HW{F~IZ83q(FggL&y}q28BA{!x6k(1(uZwH`VH_4 zYJ%?T)8vM8@tX=q$)HRRGOv^e>TnKB$s5hDsaG2G)G0snnfgPCsEU`no5~=os|;MT zuTQ{|en{xgGi@u|G4fZr{honCMidxU4?e$4sV#o^(zBx4a%6{WBiRbSuir8Ktn(bi z;?}KY>chP0Ann|HXNp@mdyYjLaRLCi9vSRWSYkKk+%tvBhpwu&C^hn2y=?vHo149= zH1F_3c3aPs7ui{FPdzx{8}j7l&C2B3*7L#p9Uz(b$}#G6rM9BDKrYQIBe z=^f%jS@jx!?*j)1(aZPFTsAr2U~{=`=j5bavs7QA7uII2>tk3TW1hJmWKmxiH_$mF zZewTDZfzMa_#^t4Aw4&%nGiHM$x^+)zv1m@_`n)|)5~6=J;r;;NjrS$q2O@iIeR=$ zq=`3Di90TvvU0Lx%KTdXdkt>MdECwy(YLtMcZ$xCeWCCt$MRL$!Z@NP0ti@ELdNmf=8i9sld+{p+yi zy0dc+k{Et>^i|fZuY1lsK{-d$*7eBLi1W;E$17%6|E0H2=^8+;SJqlt$wi9%Egym~ z@NX67c>h%`LqY9d)!p9x`Ttic0r-Q*f6-e%vmGeeAa7?-|GEk|bYP*=9`}$rCDl1n z(dh3NuK-mA&OVwX`gaYM|Ek9PFZ9M|wiSBNI)z;)3or!Fn56_!M&PH**M(ZU$)n-; zE1Vr$one`~>jxzFcOUb z2XA<9fxg18&Uk^_p(X3ZdyBJ>rb!ApCX;#(XqN>*+ICzjVLU1jEWN*dx#zrk5~^o( zeZ9yVXh{?>ebL|SKDG4oqrSgZVTS)!?S%$IAOd1*$dn@Qqn>LB5C29*BFccK|Ex@6 zJ3DMsQPq74Odg^OG?EJ-Hg!^7fp*6=>quqt)HMbc5zC)%yzZ9yrN|Kb%hz&wyKSq< z7--`K2L?H;0(~7MA;IM?ThyJcb38xFu3F$3)Fj)NHh2du-}w5zdjeEHL`{L=q!0_g zD&I}!JW!q2af8-WALwA+SS9Uopi5gQhqRcx1r6+?CF_w#Gpi8`?qFz6kjSBXEvYpa zx90cX+B?svrm}VcBUS`-hC!(lR1j$a1_CG`#YhP#MVbVG5dkHE;Lu4(P*D^S=^{j$ z^w35^KuTbg8LE^dU}%C!QHT(wMMBBlaptad|9)%T``sV+{$;WD$~kB6{l5Eo-g90m za+{09sl5AbGa%cjr3AeJ+gLGw>^)(3K5nGb4oHyHVjCt`G>}#E^(XnF zaEm9|b!uI103(+#Q=foICP#6^)1IG9UW4}ks4grLNCXpUHmpgW3#ca>jghYq6e+$_W;qp$^NS9p_ifx|dhFB3P*&{~o5wA9| zAE_KA`F5d|2r71cV-oc`eLDS}szJ@fVi+2{sGuJ{d?q<`1HS_P=w=Ysc;biz`fW@8 zi)r;CuxwDk!q{`(e!*82f%0r6@Ie50zrHpKe|k%V&9@Q-ukEcqffb;y{y)#f-~V14 zLiC-)XYh}B1c&gIO1`VHmlqy8>q%?(;xCjVRI({3TmxruX+ub)Ap}h1&;+ToNCPAF z^d6^Tc7L;(gvZSmFo5I6M3B27<{2M30dW9{_;R&!lZoY@E`a5*?~r6(nS&w) zxBVrO^CW`>5F=|nh!9d~m1|3`$GrX4+@jLiz3^o`zZE)G7VR1G0+8|$@JO<#q2zvvv&t)<9SF74BDbCmms5Y*c_F+PFa->PHQa5Nq~^ZE7M6zw%8)uzn~&#mJ3OlFiSoDiWQ@dh6G_a71O&t%`pc)y<8T!nx7T&P3>f(J7tD z)}62I#4KKXE(*|ni){2@=j%D#@>5|2gmH9;$IMIM{F246;Ji!^kPCYi{&@XgLgS17 zUNl|`LY8RKBUfe5nJHDQMO zhzp5)3F6hP2hI}pptL7sSzF3;ACeI z+N}VtgHf8SXL(3i*aCza!QRm;Vp5dM8!Pu3@kT>?1s8IYrPx(@qLDVIf|WnKY&AE>(AUm#MB|-cN8;1oKW3tYW9Xg(Mb`E@bU}sSU2S^sxn?*sA zeFFxKn9=Mei?akqu^67$-nPBid4CeP9A<^V(!g;1j@w3LBzB$IiqiJqE9P1sn?D7b z={Yg@W=x^%-I;T36}rS4oDb_)AD@!R2TCQ5w@M>!h33)@{QRasx#IGN6dx#ZX*%I}$@&_szO>K$|Ky_9WSS^+B{$-u4j5YA*%(Ot@I zYD3@7E%^L$-o4|eB>(#pI&Zn>y6YrogzkE4%bfU_reK@ut^IS0O@t=`_2qtAvhM>f z2o2GY6M|W>}D#kIp8sU1>VQ{0o*>t3`H?jH4{vud`BU@O7;pLd1SL)$h zKx*!tOojI5>3iC_9=+yhtiMb?sJs=NxN~ODxqX20%pw!8TMs|$_V2Q!qdT4o&UdSJ zMLt2SbuZrQL|RpX9bF7pigH2kA{EGs6( zYf)vaX#dBZ^NDZpr>6vIIB?I3dYo@87sfpjGgEyh9Sb@0T6@cU@$%HUm(6$}R?V## zZNag19n)(lkZY(Lt`>TLGJx<2oNZ*bT0&SucP+ld2ES5ct)P=JS4{vl(AcR4o9z8@ z@=Pz<7P)_j!fq|^Sy^^^N-S3+yH>MRnI~;Zu7rkWkps$~{U*8Va#DH`$lY>A8r)ND z7fS$*wlvdErE*2i4r6nf%`f%WYuFS zTS=OR*kCYopD%@jbnb!S8&>Cjc}mCB%^P1QdD0a1t=qpwOt6l__n|?xLo)a*4cgJo zrF^Sp14&*N6_tu=1XT#idd&PQP21;N@d73?Drb*VU%oJnw~`6<@Fa76h%ki?wF2b* z{3dkPU~2{<#Zm5nGQXkMI{Kcq9JZ*jd2 zL6;CU%}$|lvxZudNYq$3OJp%eUN(g=FSMXQw4bG1?C#g~vvs%2EKUjvP;?s9>&leE zKfbnI!M#pIRtTASk`W}1OgiS_i1q{8ZhsYZS~t@J9iF?@9JQ8x)9WffI5b;i?QY4` z4on*~q)ck$5|BjQ^c#OZxOVv42>E01na$NWk*(nx3g~v?)M2>PtHp@#q956W( z^mEY6%(Fkj#S9EDLKfrvBo}~_oj)nT&*u0chQC3J`C0b{Uy`k?Wm`_svZn4E-nCvg zT-@^Si|StNmG zo!!ApGY!cB_BV#ZyR0`6RlY=A`JoyYLIn8^v5f}jGy$#oUGKGkmB%b5ih zL={B%32LxB2VE99DoNn&%0p8d7$v#Y)l8=CMTSPZuX2x9lIbN&RB+^D?aFtHmFs~t z$lL{V@W^s=Kz1v28@V)@yiy-J@nn<2%&l8TQ=)rTSf4%yqR&($tX=2$ZGIG$?Y%2B zt#kGDx2Ml=OU;p42JA25F&faQ<0`8_>SpPMS7E4&Vd?C#QwV#X&(}IU^7!dPTdc%F z(LIgxl#_m=gJm@zWjEVE?74C=OCL&-i_=vRKYbJ);Eq@N;Xr2&d;^+P3M4iEo)99q zNuBTv{t3Eyr+K8nIAHx#6I^?BXhJbmZNfYAK+jZ6<2Fs^K`LoMy2zD2{VoCW7aRTg z$<{n5&pMx@Xqy>@0>x9wBjYbxb2r>%Ed}}8_rYqH$?o7f&uVLR``0F3#ppAq?21P!CXU8)uY0SIV{&VD zpRUVzc$Uk2Y~Bk=t@O8!SWMnKT>Dd#sDP#K-`GAsBRqYcjWc4n?LSnSI7GUFMiK*u zWQbX57!)M(sK`BUn56iDSa03B?e>;-3A?Z?*R_im_22tBS{`>dzL~er#~W=48ZKWw zgns`L$}6?kID!k|Jr$YteX4LzA;$C|MX9Yg`^#eW3?*tn46D^W)8rAJ-X#x$*!OOE zP>_?-5{(>9ZHjk#<_8Yo6(AhvFZUlc8dmOy@!g$UeDg=7iWF!^FCdWe$NDI;ceDoK3DaHR9^VeFYa^T{ ze{P?hb~Cn*jB!znF}?0RtJIHTjFV%#y z`@-U`Q`%ZECrzzd7HBE`f}WY2|GipIXsJIJPs;quEbD9fZEmh<3FVh0?JMn4m<|H2 z%d|esnK_?3yGiM1luEaHo+>I)ZS$w!JH?@m?O(S}`Fu2<6lFAvq&v-{)20XL$IRZ| z%b?QLNMAP<5QpN;FrF*9@cSxGWCq=l#p%iMwNIZs6|Gb#o9Zh1N^!Q()p3zCUl>x} z;=gK@QlUt0zPJl<$w5gW^;KSRlDC$npLy!mD@E6fzD}D_R(euCFv%k#dkeTz=!4x} zs6*I<*iU~jeYLuLb-OS&4jRE(LC|>>PDF?Yd!pM$TlI&O!X%rX&cVA|EfyQC@s65k zr%J6}I&3I?4*3j>hnyCeTXL3*@axcc;ws&-A7k?Es|Pkq?2g_b)q3^KODrPnVX&3PrTcWLXG7}Gd2Vtupv#E+KvP$jy9rf9y=S8^r zrPD!G6Q(^vD8wg_??KY88xJ`!SS3B2puvYAKF^G#DTzc$$RC{Z@w zJ83xQ{aA7q!EG?l0hbBG*kySiu+{kyf>j#r8a40MBr?QB_WHmybG#&nWuR9`&m=pp7#2IOgpXXPbIfM<-UL3 z;!Xtl`MLgvIu@I^7P|K0GEweB6`cJF{?KsnEUIh0aQN}yrFkJgnr`)urjCW;H8*AH z#Tkrz`ajfs1WYUechD+@uMc2*1RE<0FAK+ty5!5(uia8;vw!k8c~>>Y47%dq=<9Tp z&P@tZE