From 754af542691c6b83cc1f204c14aeac19f6ce1b34 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Wed, 29 Apr 2026 23:46:10 +0800 Subject: [PATCH] docs: update README with full feature list and high-res logo --- README.md | 50 ++++++++++++++++++++++++++---------------------- README.zh-CN.md | 48 +++++++++++++++++++++++++--------------------- docs/logo.png | Bin 0 -> 32083 bytes 3 files changed, 53 insertions(+), 45 deletions(-) create mode 100644 docs/logo.png diff --git a/README.md b/README.md index 79bed2aea9..a86ff2918f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
- +

DBX

Open-source, lightweight, cross-platform database management tool.

@@ -11,6 +11,8 @@ + +

English | 简体中文 @@ -19,20 +21,22 @@ ## Features -- **8 databases** — MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server +- **Multi-database** — MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server, MariaDB, TiDB, OceanBase, openGauss, GaussDB, KingBase, Vastbase, GoldenDB - **Schema browser** — Databases, schemas, tables, columns, indexes, foreign keys, triggers -- **Query editor** — CodeMirror with syntax highlighting, auto-complete, Cmd+Enter execution -- **Data grid** — Virtual-scrolled table with inline editing, sorting, pagination, column resize +- **Query editor** — CodeMirror 6 with syntax highlighting, Cmd+Enter execution, Cmd+scroll zoom +- **AI SQL assistant** — Natural language to SQL, explain, optimize, fix errors (Claude / OpenAI) +- **Data grid** — Virtual-scrolled table with inline editing, sorting, search, pagination, column resize, row numbers, zebra stripes - **Export** — CSV, JSON, Markdown -- **Redis browser** — Key pattern search, value viewer for all data types +- **Redis browser** — Key pattern search, value viewer for all data types (String, Hash, List, Set, ZSet) - **MongoDB browser** — Document CRUD with pagination -- **Query history** — Persistent history with search, restore, and one-click copy +- **Query history** — Persistent history with search, restore, one-click copy - **Safety** — Confirmation dialog for DROP / DELETE / TRUNCATE / ALTER - **Auto-reconnect** — Transparent retry on connection loss -- **SSH tunnel** — Connect through SSH port forwarding -- **Dark mode** — System-aware theme toggle +- **SSH tunnel** — Key and password authentication +- **File drag & drop** — Drag .db / .sqlite / .duckdb files to open directly +- **Dark mode** — Native title bar theme sync - **i18n** — English & 简体中文 -- **Tiny** — ~7 MB installer (no bundled Chromium) +- **Tiny** — ~15 MB installer (no bundled Chromium) ## Screenshot @@ -40,6 +44,20 @@

+## Install + +Download the latest release from the [Releases](https://github.com/t8y2/dbx/releases) page. + +### macOS Note + +DBX is not signed with an Apple Developer certificate. On first launch, macOS will block the app. To fix this: + +```bash +xattr -cr /Applications/dbx.app +``` + +Or: **System Settings → Privacy & Security → Open Anyway**. + ## Getting Started ### Prerequisites @@ -63,20 +81,6 @@ pnpm tauri build The installer will be in `src-tauri/target/release/bundle/`. -## Install - -Download the latest release from the [Releases](https://github.com/t8y2/dbx/releases) page. - -### macOS Note - -DBX is not signed with an Apple Developer certificate. On first launch, macOS will block the app. To fix this: - -```bash -xattr -cr /Applications/dbx.app -``` - -Or: **System Settings → Privacy & Security → Open Anyway**. - ## Tech Stack | Layer | Technology | diff --git a/README.zh-CN.md b/README.zh-CN.md index 3fb9b8bce0..b5fc3eb2c5 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,5 +1,5 @@
- +

DBX

开源、轻量、跨平台的数据库管理工具。

@@ -11,6 +11,8 @@ + +

English | 简体中文 @@ -19,20 +21,22 @@ ## 功能特性 -- **8 种数据库** — MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server +- **多数据库** — MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server、MariaDB、TiDB、OceanBase、openGauss、GaussDB、KingBase、Vastbase、GoldenDB - **结构浏览** — 数据库、Schema、表、字段、索引、外键、触发器 -- **查询编辑器** — CodeMirror 语法高亮、自动补全、Cmd+Enter 执行 -- **数据表格** — 虚拟滚动、行内编辑、排序、分页、列宽调整 +- **查询编辑器** — CodeMirror 6 语法高亮、Cmd+Enter 执行、Cmd+滚轮缩放 +- **AI SQL 助手** — 自然语言生成 SQL、解释、优化、修复错误(Claude / OpenAI) +- **数据表格** — 虚拟滚动、行内编辑、排序、搜索、分页、列宽调整、行号、斑马纹 - **数据导出** — CSV、JSON、Markdown -- **Redis 浏览器** — 模式匹配搜索,支持全部数据类型查看 +- **Redis 浏览器** — 模式匹配搜索,支持全部数据类型(String、Hash、List、Set、ZSet) - **MongoDB 浏览器** — 文档增删改查、分页浏览 - **查询历史** — 持久化存储,支持搜索、恢复、一键复制 - **安全防护** — 执行 DROP / DELETE / TRUNCATE / ALTER 时弹出确认对话框 - **自动重连** — 连接断开后透明重试 -- **SSH 隧道** — 通过 SSH 端口转发连接数据库 -- **深色模式** — 明暗主题一键切换 +- **SSH 隧道** — 支持密钥和密码两种认证方式 +- **文件拖放** — 拖拽 .db / .sqlite / .duckdb 文件到窗口直接打开 +- **深色模式** — 原生标题栏主题同步 - **多语言** — English & 简体中文 -- **极致轻量** — 安装包仅 ~7 MB(不内嵌 Chromium) +- **极致轻量** — 安装包约 15 MB(不内嵌 Chromium) ## 截图 @@ -40,6 +44,20 @@

+## 安装 + +从 [Releases](https://github.com/t8y2/dbx/releases) 页面下载最新版本。 + +### macOS 说明 + +DBX 未使用 Apple 开发者证书签名,首次打开时 macOS 会阻止运行。解决方法: + +```bash +xattr -cr /Applications/dbx.app +``` + +或者:**系统设置 → 隐私与安全性 → 仍要打开**。 + ## 快速开始 ### 环境要求 @@ -63,20 +81,6 @@ pnpm tauri build 安装包输出在 `src-tauri/target/release/bundle/` 目录。 -## 安装 - -从 [Releases](https://github.com/t8y2/dbx/releases) 页面下载最新版本。 - -### macOS 说明 - -DBX 未使用 Apple 开发者证书签名,首次打开时 macOS 会阻止运行。解决方法: - -```bash -xattr -cr /Applications/dbx.app -``` - -或者:**系统设置 → 隐私与安全性 → 仍要打开**。 - ## 技术栈 | 层级 | 技术 | diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..61508574fdf2a20f40050c60385337e25753dded GIT binary patch literal 32083 zcmcdxRZv~Qvc=uqf;++86Wrb1-3f4T4sOBS-QC?KxVyW<0fO7h{draIFSRKUQ%|4qTc;9&jWFSjEStI7}(c;MqYPm;y(@SFKKyk z*mJ0FaD-HSYY&D0R8+sjwSJiy|1#$@bus@Zz}Q&WxENVD7}_J6sKEhd6b%NyRrTXZUAGK#YroUab9wGGI($d2r?IrF-lA%F0PAO%I8@YJ*Ich`IZFHmmY&trbnGn( zzHGW0Ls8)M!%46NqDLG3e@>BL&B|e&cmgY!9?&FaA;ctPI|##5yuiZ9%WO7;10)Lf zt|g~n5$i`OP1M7?y$_Ci-f#M~x+FM13_+Q%_U5meH|;zdlF#3dbxNKz4&eMIjKljm zf8PriZl`@b-i^*y%;Z&~+}J~rC8hp*D@2nHk@wTJ`EVq5k_?p^XB<JbHSKQVOFsi-By(2|>&sa|-g6tOp2u0+74{ZjwpB8O%AX+ptA zz*AvJcRB}g`C8efDIqD-Wu?M76Pfbktn{XNM%D(7oc%_xaDGjrkVv*Dm7i=+f_@1tck~P~V)gQvb zeF&Fy#Sg*IP6S^k`rwEc*zKrpIb&$3B4gCs)OHbei9)7+6jK4c11l}@kE^rfyOwQx$K+om4!_5D*iVN=^l>~OO*&~m5y9kc}WpoFX&HDg>>5h z&HE@hCO~dVO8C=xwG)@A2XC5ZP%lR9K?-O|c4wn5NVs$)UYtOcL`hX$xvety;GlL8`+8g0Lv=^1}5BEB+lki46pB0aV`y zhw_I1eD0@LOL4@8F-jOwfLrh?u`4i@Zdn?F{%&Bl_XG@o>qp~b3wV@<8@|S80~gKo zI0|p^&cf;o>dOxIfqVAYebh?kMW?oZ3gd?Vwp@rBE*x>I5dLQYxTCUEIy=&HvkZTd znJDWZY#A|25$MN*8zhtxu#5V0CphvCW8as?b6VN8dVBx?MN`5_D~7ML?|=t}=ckw- z9NL)49fcTPF1S?KT;v=E8F%OB8r?J+?tdzr7+IocKlyyo9{qB>A2AZY`AG zkGMr&02^@7VTc#81wlYo{R<8tAkAdGA>O%|^KOvuIN!bU$s6pHVgc1c*%56$ds4qc zNB)J>MZ$yT?hS}vH0IPv^~xw&lbGYfaQkWnx}|51Raoy0b=$QO@w?FBdarzjjq(9_ zc(9xj`Pfdx4o&+E%g*h0!@rzNAi}1kkZ)H`P9jD}%F1%!yC4Bfo-Lo`YEM*YdMgne zp6fq^k5?T99+u1q(6G*1ANXH;!r!HN-hC5f@ayXJkvdKK#@@o<7r_ZyQGR`AV}6%`Q=3*7^Lq4!W6_Z@(1ZNWK+Sec zJ}ivO$to7b(c6wF$R?TA3m>!t#DoP#Yar4)mTsDYdu31LhXxt{E|pJn%ME{r1Th&I z_Vu9}Q#+l;M8`c-MOF;mW~v`50++VseJ4Z>qdWNQ0(7229s zs5^)Z<;Auk-{I?+txnL)A;ON!;1Es0)X_cJEBq^jZd=pUwyDwa$eoD-r#pe@8!A&v z9@|V*kblFV5X1F`jR&Am#uAJ)yeP*6)q&i$Klj7lq4R##v#2$?l^_V>bZs*kx-V>r z@89b;ZE+9$x$uBzgUlRBh%we0+Bw&+v{6^zL3*dF(@~et87I?Dxr{Rf!;$_CQx=o| zY9SxL7B&*KWl6vOyra8y&fS}qKSu>=jlMs*m8fX@&|<6g-Sh&6#Y)R(<~fgsuH&I73+uQf1!Z;1P~6JcZh}_U6c1k%RJKp1VCTg z)7z}`V^L@MNiVxgi|Yqg5Kx08$=RICY{0{iAVHN^k#H(ZhBcs3gv!_DF|x^seB?O` zP7FT&W(4NO?+WXTv*h{J22NdC1w3Lqw&PIS7^AnDYRx*eOOp@9#2F!?Fs>Cc-3By~ zYIS2 zTg*oQX{h@ejKbcxS)xXnk_OLHSJsmFW@Ov+xH9wK z*Id2f%u69`r@}&#Es6fHdBk((!CdkHyP&v#C+nL`NdkX{D_gk$n*sNW3Pv|`yxuhG z49?RqJ>?j2cxC1(8SZf}e%`k}(X_%>nfU8QTUH?&RB*#v2wmn*--Ob4kLJlhPE`o~ zofA{b1(|dh;>hI%u!{M?aR=jGccjp~J zK2BB&G5v->Y}R*dUkmjdRcwB4UGdxa?18hltbgL}E_8rjS1dbgaa_0Mho<^v*pGuP z{Wbr|4gSR$b0BZJWD{9ZjQLHr0(^32h9Vh3Y;HmPkW+j_H7$`4?^l-ahTrn%)5z7v z#nrLWFTaEjc3b3!6@C9NHeZ|(ac-U~m>uzrhjVx&taU0(Ui;m7+Q@CRpFgZicB)CPB*-h(RPvm8BR}K_w@!83f)ouqZ3kz@tUHT~KEmDc1&4 z=`?+VO)+dLngZNl#A_D3eiU!=brqFDmcnxO{7}zbR2jaZdem*&HpIO;3*hPsmT|Pw zoaWr^6Oq|;TkQqow={nGPL!sJ^1W{of~c&2QN(4&M>Imc3=+|;c)Kr0pI}r*6kMKl z7il#qFPT={kWPgjU5%VJ)u^CIPR&RgTI1gXTO)R`f>nzhhLAc$T|JGK=IMJabu_tR z@x=PnmXz>LH2wbIDK5!*+u)pV73Z77{mS%h-v#;$YaQ5>8%`*=s3k8xB{8ZG<;Nfd4?v5eyxql7QY@D-_A5rt4k1n8Ir+CDnUFT|q@vb}-{a$kasg1LnZ-k<(#h zuyb^(aRCw2-+b%dus<ID?32bN)i6;aIZblBokIzD}QW4~3DM?4BbzVrz z(Sys_PUAYp7YODHE~{N~X=Rid5{jOxTV1s%w{Q7up=O(sV7=89+!g1aw2>)?yGi*# z$G50IbAA30rMUQJlCX-sL*cD?kv-8yJ{4#YRI{N2J)Qsn&hy3JgV*iIK=+v&D zgPEf)VT})DH<&<7d`Xv*)5b+oZIdNbR$k_SpipcNvs~UA9+wiY+aXjQ1`N}u#a@PWo4`UHlAGJ;Qe5Nj_A`YHoCv*r>rv$*oy zo-Nn|U$aYk#d&fcyg2dMI%Y54pA;ARw&%-l@hm$5TdqzgLPyKp1FtGzb|(0 zl`Nv0>o$lpZC*~n??+OrXf<3@4gOm6mdpAgx6;L=CLQaIk?QuFk~C#3TZy7R0Lep- zLM?oaXnC)0Y7Sh!pgpb_-EeHSGZ+I*&CRcZo!$v}yc=DPC3rl)RS{rPk0%(5$d01< zEU%TSx56yp!s{s#&0r#Pvv6~Khk1J!=OVqM3z3DHRleb$=PLqneWl1~0lkpCk9Si9 zK|$G|ME!9{*xkM?C0i>Q%KZ!^q$@RSTxm|w-_Mds4EW-j8}6y*EA|PsVVVuGox1f9 zC?wL|@{#_d-y2W(ZI6xN;|(EVgRE^z3ACXjdk4vERT%+=8vW%L!K04AM(+L*bEV${ z*De%4aOk46P`~A2LppsX)x7#Di5Y~SqlSJ%$K!*X<$;OE1^a@j0y*#;E_MZI=&GG( zmk(yY?eX&`5t86IY{0%9C-ZQPx9W6iSL066PT;GPit6<=&VKBo*W)M5fFb2DMwDMk zbJ)@I$Z81|v`_|L#sn(piO7`GfYL#Ja(kv!x88W93>EMK}vLk z>+pNdnR^YUdx6z;)}9H2vo}%$1#0gCxoRhFK8PSY_3oLh9|B0!ELh{?JYNcsHQ+H^ zkZ{Wez@N>&ypTu_a1lejd&bZ2f}p|d@tn2bI4H{rn#mYya&AOJ!LZ!yUo2q)dK@!< zJRdl_cIH!_lQzVPGOTq~N($<^SPL$@8C%J?x>0xTuhR-xT?3`P4q9|HWw@z%j7OSH zAf{KLW_W(K{nc7+7?{h(B3ft353pu|d?%+)Lejz?u@IY7*%Dc>QZE3x2mZZek_85R}P-MTH+QgIcCd2B?z>healJb69 zQ@n&H@@lIu<6|7=xfdY{{nE+Jw-#@(_lW6xZk4s@@QkLWtv|_xFGrx<_DZ82o9lFaokK+OD@OlD zR`JjGzA6&%8)APSI#YIETUFt`tO47-1k_w?nzavV0SQdLhlU`exxx%FqGg4F1w{;l z2Ob`C(eY^AUb{(@{;p$KaC^~lE=AF6kwXNv8{!mpr(HE1z*pfZ$F4AT3>{yagTWut zgn;W!*e{pHyQMdyl2F-b_`zHFAsYt}WtsX2yt>O%orOmJP1XIuDX=$I?rT4%?kc^n z(;~-pU*MK()m@;r+w1rGYypL~A1ve zbUh-6{P|of1g-3Z&1})hF}LBhyq(OTloK!vY*D9jMya^hOuLcC({!c|6qZ00&PN@3u)RYKWL-luwqOKY zX=i!ebAJr8zMFO4ofraRzbMDbE*V~$Dgm1gsV1clsSeFpS}=MgYIJ@&cUM21SNLG;>o8aQ*&JD zWu(YLYmd2qcjq=)#@`hpILj?%1vJ)sBCQ=0=cs(1ZHS2O9i33Vp~BSfkZPrWxClfE zplDIlHGWYzgyypZL`1*`aQ5+@FJ_x4Br<*TZfDL{|LDW<6=s9f{J`t!9R%e4UN4u* zYAVg~x}>y8naz6L5i>($LAZ@jo8%Oo?txk+4YnW{U!V4)ts7fA%_l83fC$SAonOh= z4z0Vr=6;HV(TR~4d2}|xlS$0Kc{&q^8^~3)pE!ff2!fR2qP@xq_5XBl(7k;rrCC9; z@g|>#xTw2$y#LT2l`$c|k#oSm+ztR{fZ;El;O(yNhIUo=a#Y@pJTfj?hV5M4SpyeC z2Uf0w90jHJ=VE;!xD&<-dG2-BI})WNk{=iSzl8W#lP0kn%G+!xEwa$MM+hz{ zsA7Jaj|v?b_S9~6rpDpAgHJb;?>!N(7_PRde+a&x5-dGCR}8X3gtp`EnyG0vz0N&_ za(^t3{xn;50E4*92(i6UY&n5R$dnThwik~MZhEY7HY-1wOq_i8ndyKr8H|Eo_4dK! zO-g!3U1zmnS+-#IbH4))PQhtUZJztjh~_As`B}}2Np{`B4qfO!u_Nf??svm-gN+e} z&BO(`KzUpS+uj5et{62Ubpoq2maG{c$?MsBf)U7RqNK!Z7LhSR_o3`2>1b&fJyDYFUI5dHNG8R(pJ^ z2c$inpP-si7WZX*9{Tqg%=EZ?(o^IyQnln&V6n`-xR7z`H+X%n*RHztHtVb zMQ`nA=(_tUJZkBg;#S4hW2a^4E_YhAw4h>-Ez7?m?;zDki6D*b44eINbtReuuh*J^ z5Z@Vz&ZqX+zaQ~WR}eLg6vA(q%}&I}$yH4)+Jz>T?=Ia(&81ESBe&zmi||Ct+k;1a zEx^aR@QVIV%q6LEF=^y(v5r?VZs!DH(b<@N6^Xsd_H#i<-kCW&TvN&_$!-JTkuE3S z=PT~8D~RN^Xn7T1v2HX=7G`EgGVF;Se6u$;`*r6qvYxmXI5Kv2zZ5wwmSNvhR4a?3 zv2J6(kfJYkU*<(jc`$!G`@F3i`O3;4tYX#=-rG9zHPr=_x?T<19l^jiFcl^)1r?N+ zIH<4WZ_VU%#?6k)fWl&4-u~l88L2EkpG`g48;>0OK~e$lwHC5+?yXiXLI0rkol{Er zmabm*X=VN89GC@IyqT_SgSek%j~=ZK-CXaitL^Q`($rTx{UPm!q7p`u=WNW`2h2*) z5PI73gH7q}TRX1xE&_C-%NqZZ>D?0nFAMw+0s}j5$5&6HLpWS30zFD2T7rOZJ91-) zpo>D1-?T){7&%>>`j0$Z2ygEiQJKt9F})bE|04(nE96-B;s* zFJt`1bamf<0?5QfCoQ6nd#V(?50VgA=0 zp{5iIC105*t~?Iib$;!pJZsOsAV-VHwUv!X^uy}j6ndZO2U6s3*-A@OvGACrM|zn7 zV?Q4k5VYIRHKV+-@fZdX6#^T%MXL5~_PEglaAQ$Lf@@f1>$sYz%Y*2tqIW${gyH03 zh;&z|VBSc>IEeGzAkCKFte{ zTpUx3tN1-y71)}?oYf%|uR2{Kx1<^yo-mVtkK#R5zJ9*3fIooCToCuJumHi0BDfLr zkW*@CD)~3Vm=pueGA8(mvO>5u0P0fEqQ+XHC>^pof<1mW@`l72iRJ;{EWNB&{6*)7 zoWkMYl<-;xqr0*2r`29L%_9!PCHMDfeoj2RG8mR9!M97EpDEa0v@{OQcpQHR(xH#` zDfX^#2VZo3G6m(*;EPK+Wa%7bfUN|Q;U;Op&ZHwTQdw9}i|&fQJ;cu8Sd>;&6R9ZW zB*W#!4(ZU>d{I47S%w1LCuuKnX^Dg<*Nr2}tjnU*McxxY|NL`OJZlecEh0{fuEB6%Hz(Q;(Hh5JImVqgf_aogWdSPEYcVf9L#gcIIG6Tf5V1gZ?*0CCV&TSi9ZSFuX?lKZp z#dN6=N_Z}c@^;A4W1 zpgsG0>crliYQmu0M)^nf%QZTH2! z&XTgpzx!Ln)J-=sjv`M zG3ZZ&4QHURq{<6*Y_ZdqGcLi@GBpQ>gNOPE{#S&@Y5>HM6kuN(v@E;#Zh!U7k8ux; zj=#1ProgU3~1Z;#M1 z|I>i&%x}P5{Q!ZkCl^`m(t*=8&fcXw3n%ktyKei7@g5B-gU1ap45hCh8X4uS>1gQv zr>(oeHTPG*wAr|}8JA-zN*9bLb?`nFnzdEo8w$T@G|(Nx3A2>y+4a`2+W0##BfhbE zMaGvo!{qhhn2;e_b1&p%KsN_swCc*?11nHyeK%ye*qN4sH{CJ_*v|*P(7J)^R z;3-KxX>{{_^R>)nqi{UCb8lO)&Q^z)h2}fQCcr*MMItXsa<^w;3cWlm^fIaOemV_V z-loHosm%!OTrTQxi*Jl%=%z8Z(f34arN^J6b7KxIn2yEdZ#ptVh+#LHfh$>+?zV$9 zmZ7)&MM;?x7x83zu5*9?mmO&*xoS;2hQ!!lAe+6FYFbw?u_ zPGT`msT?U6UHeeDNKu_P{c)nOjnfu$a8yhLVEK%SNl0R~L#Hf>@(&lLw9R5IQCQ&$ zoT9KYPa9aQ99=9i*7a)fW;bEWO_*ef(GJn%a#DMSl4B8lUUldpAxzJfy}(z_Yfid< z;^9TdfY68>@YhMI6w z-^|;6P>-ccEN5zdl5}^LOKbQcK8Y_$o0*C{~16oBir#IOME`mJ&zdt2=F3CKL1U-yksQ+C@=lPf4r3aQKPyZg3i%PZ!4<%AX^kh};#jE6qr3CWP$0!~Lc8aY z3yw>aXr;$EHU9HwCMVt6PA3bQjs!6blBf}wgQ&cr9^sW7&|%#QGL#2up2(FdX339> z&optZlRTWYtb@0IoO`D2Q zPtK)rZtb8C}!$qX`A@1KM41M2s&r^-&Az~Ts(aT}mfkWK+;QPhDC@1%Ae7~dLny=Y;%ALPj+8SOh| z*AXe#98{8r#!@rW3R{i+%|^eAZWv{vbJa0HcQkOdJ!mm{$@+9t70>w)TM15>6vcG+ z1ve~OBtOhhO6Rs0Gnja+Do=ov?3IuQpd~Yg-;>vTZuE`4#Y;3XV%-ibf~A{WkgZo( zHSN3>Q2O4Z*&dFZr8)pdCv9Iv8>VGS&OHJ$yf3jQchZ(1Vjl?JV;kWrN z*f9V68TZ#ub(W2_q2BwtaXq|bT152^CdLRXi=ktkY3Lg+&8-l>xEy-&eL# z$7r6bKNvLj^!3)sb=Gb}9oXngY)P_P?4cSg8leX(gRHh8QL(?DK~KrG?+}kOo+Up< z9HwH~cpzGG{Ch2mBlOIh0_=3t|Cqljo(Icik0kKnP4me-PfhGLBpOv=?F-GV27XTj zD`+az`RAT}g{ouhgqi~t<~d)a7u}A{p=>wZiOfGbogj{%;@L{UZ%m25LxKb*&kf1- z;C#&yqK=PEo}NpIxk_8;rKroUA>t&w6Wi!R+Z6T zP*W_|M)KHvv(wi%nOMijT!G765v$6eWo3m)G#xPGWThCPpI7N<4pf0Eb-?%pA?!s@ zjeGatH~KO^7U{ERm$dN%nj9m&@MNCYlH@X2iP4LnHi&i>apP#sdJ<=vQo`?T@RsTJg9sfbZhn8OPr3@>YUXj2x&V)Ba4!` z^%q6{fki~u1V2;;SrPDnxxKlm1e>XTWA*olJmCo;PY zLf3fzoY8zOjl}@S$sl8AKv?hY84*F0J2>tP7;7KU(tZxJP5uTeFw^ZV??8OUc`<|> zLw$eq9D=mWBm+59`E&sCEkW~ z7Pa4-^(F!4ZbJ(9l5BfX5jFR82d*YMjqBP9!j%l}!2ZB{kas%h42$9&)^Sa59N zb|>{yF?RUoN3dK9sry?(wLF&v-nrz*vSOTq0Dc9!oARBBpxgSGW*NhxNk|79CuU<1 zhpv<TPGE=|nObl&mlK;ET z_sEK@HqCs>u{KJRLf zZf?TK1_EgnHcpQ7nvL&(q8z(H4X2+_7u$>lrFXSxxWW}C17i>H1Q0W&6BDFPeQ0}| z=4W7C;v-3P%4{W6+UzE0nv>uxSq{ix6@LFj9q5i7@i}SX)AVfU=S2fV!+Xk4MKlr%Ds#Gv zA8-`H&T;NgqQm}+?WvrjwO5MTC+w&F@{jH>qj7C2$&{y7G09Wb?D0zkZQk!S_2X1I z8d%!r|G-ctG44a^E8@e+>;RH`Fu{no?21KA`<~sOs9dRdzdw%1QNlY&cof-KelTKc~FFlAzk#lC`*y3*=vb^?3S& zAS;Y!P9oq{arLywkN>PT@}X|DVvzupPBI|uC*JO1nE_rN^GqS19$=hC7f3-GlPst@ z8y=$4+kHiR>v19Jls_iKUQC2{yq6b}$Jp>XNp(Ma!M3epnVauCL$dq!oM7n#t91&G zIG@)@%$D1KIK9OV%a$n~h;C_Wn=;ncU#LC?%-4#V$rdWb7#&Y4!x%T|xZ5e5`R1bl2hSza%Iblk0 zp@U#P%qq-eSQ`qZtJZIijr@Zd*Bl2;*#3#?)>Qs+V=1CB^5>me$Fqlvb<{n&UV92% z$9_fSqV-p0quHC+vMa4(1N~l;u)Pf=YA->C+Qab|TNljYPU1Ew?^C!*u#d-=)!g!2 z)~qO;*OXNLwY@w-#RDx5pitQm++0)!8n|?`iPS_|gLq2gA#acV&RTV$2S{@Zobi1p zn^=C?FY<)nIvNylzYbEQLF2l@QAJ%jL;!pyjz5?{B&06tyz&Z1LDoarm!3n2UuDC~ zbl=uOJF4y#Hv^yKz`1|k-_()C?^rfl#Mb-%W` zc>9)R3+iXSf>huByyN^Ad@~?5bJDY9K6-nK1nRgwJ(vz7G-+50Ybw)$>-tI4P%bwg zS*F2XcSw8iG_(iisM(BZ9%w)**1w5w$-V6`H6P;pJioU)%3$a}58B}CJ;UiE1<5l(*EZ#Qj1Sm;MN@ z-70v$!c8LCaV+B1SW*nvuNq`d_?wf|+D5UHcoUD8GS4fvY2D43^4xf_Ue#~aXX$~Q zPniaYvX~QaF>*kctW!9zL~i7TsEZNUL638Ok9fjYOo;MWlm8>-`=rk%-{B8Ae@`?u zMc-cku?4MYz(AB$egDaP8G`o-IQnawsdU-5(2ZNlNc65}(|nz3;JTotA8<{>Q-vBh4WEr4RQBQ+$A=%Z^jB zYK#TQPGO?{xq`b`f?TO{Kp}O9UMWM^DG{N*R;L0OEFNHBl9@hXcxB?qc5FuKEZO~7 zVYumLTHDu?akg9h5F7RwDPe_`;a~@bQ;MZoArgr3=$+uZ7Nr)kPifz0FB=>`4Q@l# zEyxsyR^lwI;oJ2 z`y{;un-5Zt$Z0TBh&Z~DdccENv~55-NT4&Zb~tkij?eT)7Ruu)*uz)6{ndMXQY2x? zvbcR0y$h|l!(#tRQ4|QFe3|w`Y#@LlKKSSA86cvydLDo%0rM`9=->k>ONJ5V#3J>i zSA|V(XCL5ajk@j=KFE3zOraqrH#NdVbn5cPesG`76^t}MOjE-#7j+PH9^ce4fWOPN zRW=$vKjPE$N)WnHCTisJoYri1YRv{~aiRC{B3L%^{yDMiGPExDYd4zm;n}fP*};F6 zqHB?&b~|fI19%^cyX_7wum>nhf#4q*OgHVqkv~ z`++=3s})I&BQdK8d@i-m29o+ao^-{xGFOyW z>K~d0@8lJp{Ny)n%;o@mpeP^iE(lCriyywWTj}}w%4xS>Npi%z^e!P&{LPm-7bhO&UqA5^xV=zq)rJdGX&T}I`kshqSpZ9q&HmUb3!R3S^ z0#^WgHU%B;!9cC5BUeuo_hd8#eCsA+ouquhNWkt97bjiJ4DO_E8yU|QiQouVpB7I1 zdZx2f6+^t!otdv^s8+aq+)%&pGJ7R1)X6XlbD9@6dyp|SI!OlB;)6`VoZDoP!o_}0 z@m0IqIk*J&F=NZEOyc3mvCsM&*M%Gp%gS!W%oR-1j`#3u06bis8)Mg<$=-M)Maxa7 z-~zngay42@HKv9F7NyStxiaQ`=oajrpkb8f4makgVd4|9J=;(l$9JL!%H_$ zk}0VHKq)hHk=<-X@9BznroXN!0LT_VD~R5uj!}uawdlwUku6Ym)ir~u4){SEWOCduK)*X3#WN>DE=@5%&g{SN1&Bm4?^O1^9u2%6jlo?xt=l)aFpp$&T4nh{JPB01 z4{GjGa8riJF~m7Yz|px?unD zI72eon6Yi#VbQ`QHD4oWjT_-g@8P_~{b?eJOji2gjwFe_{2g=KT|8v00(8y1vR1#d zkwCcmMIhxR`Obu}iz6-7b^b*&s8(gL%licqe&vV#NYYSTfcu6HI0nwy?9b|fc;MQS0`;ue@w7g+^ZypT(570-Iy=XQMv)dl& zKIcUKX8Z5dHMM8HkNDQ^P$e@-O5IT zgSVwOltP*(f_J*Q22zs8J9`CYVoAcwy{Cn2382U~-|!Z9J&-e5;sJ6)cLRO6yOAbR zDSf6Z5@-hMj$qqF_9`vrZ0VL&TnRQvr6Dv^10iGNh9_uXHLaY1w zR_B+tL!hI~WDh@sm${EI)p*IG1dDU=GXgfcZfT9&V>U=zYOAtyNiLB%z*nMv5d1w; zL313%4?ZT+$V8_`>iy{mB1)tl((nk(Ryc5Mm@g_Tg?7+@sEQ7?CoKn-ZrlQ(+0fZJ zd7&i*aMOJ6a~yVmDUesL$aLXzAKolI<<GmEj@C0x!UrM^{v8+)UIeuF39O%$O#d zu;!KZjl^IygXgH^KfyCya!%*>j`tD_S9K*NFS>POF$(ki*ILDR{6AnS_Z@h*VyNWc z&k?^*&Ez=mPN7#eXZ{*8r9raa%LDuNal#@}}wCvUI#Z7*}B zElnbJR5G&7G&ox^w)e@DP(|P!2+;yzAl(FmX64?b_Z%%_o`Y}rxidK+gV3y z-QZq71C%glIXK{`u-|y+1;#d@i!N$FuJ+5;nA zh5UwTkCSYWhd}2fW=u@hR7IV8JBR^Sz5V%+&9KcHi0W^el6hUt+PoW*3<2@$tmDy0 zzPZp{*L{j2G+wLx(w=gF7h+H<=c|kP!<6**5{>z$q39oRJ;Shhnce@IF%FE5tyiR%sR4cT(Golc~bgujXxVpgc%!D>* zc7((Hosc&%(36`)ep-1+v?cJlCobO8g|oKQT}cLPnPYa{FfzPUYBHVhT57J<36LYa zyGUONVG@Jzfv+l?Z|o(&&e13Kp_uqx4tVvh`6B|1_8YigA;{8lILw2rzLI`vv#*b; zfhj8KgSP6=%=g0klJ#eN3l2S6Yq-phjE z&&`>k=6}+r_9a9|hQZ4DFN=HulG+Roo(#I@G9cw|*p`0%3t1>P;^L@u#a$dIiVtdu5VQ4vO_dA07> z7*?={)hwE@gp#J{j}ftsq1N&t=kd}U$O>+<2Y3D6v37WnkaT`2%rojO$O}5Y6WVVoUw`^b8d}%4l$!go7rrZ(K{|c7(q%=Yv-m6<%th#%J45}H+l(Abw2W9#ThA0^-|&~LH3<{ER0cQt(K8rdb?&ZHX4cNTyur7X zoLr?O_-{79(!#)p7w4bU)&?%C(eS_XqsA&%=+N*Xzobqt|@i zCCNGzXM=IQjL4zJc?vS4p7}zefPPDwrS}iGp7R?niWgzNlcKU>p0{W#nSSN;a_BwZ z+%0*m+j<6mr*Ir@?@;jJOAZg} z0uKfP-aFjTT_0c>Yb1HnZQL`$Th<@HzB8^&{iE{Ep?>|Oj{^2*fGKwb9AwGG2eJ^! z(oR?v zYyWoKfw3gg-m@;%1ia#7E9~f)thGh`9HqCW(w+ZhRi+VaLuK;NfKmEQ|7bjvO^}3L zu<~-9r12vj`g%wEBwvuTMVN1fqVwXC7p>8s+QOz~x}Ud<5zbkVIwrA#-+5j0wCi5& zxe9n~kNP9FxsS5;;p^s0q+;^qZ#`1C6S$$)gQD@q1{t8z$vUjoFlUWxP*os zLTg)qco**cttmQy8*TPPvB!6(gDp;>yXtVn zSZ3$7GxcfymdQCn3=6d61Xk{SEcBFX40XOpqa(A3;1-N3e47^jExuOVr9>o_9bqLkFmj- zF%|w7xce2d7Cav4tPfvOg*p86o~b{@bjc$0V)P=>Uq#r{PQ@S7Qms0F^HwT|-(&GP z_GZfU-D~gtfI$zSl65~oPo4$+5GPum|E5ssaRo_W=W#IAh)aJWN@ zvA=p%Bg=I{>xwuof=r+66jN`xyjm7avnanO^F=i6_07i3yox+YW_uyS%rj*|q&N$0 zOiLW_H!uHhI4vhrG@a>{&s;#>$7ZM!#cUtyuB?A5tkFP-!A~?!`rc8fF1#?hbO=FMP74{?&m~R0E8t zw1&M?dqdwMYBUDY%ffPxFFuDtK^SM(^j~T0V7@awB;d5@8Q>%MS}8^Jpkqd-|LN_V zyX*S;uN|wgt;ROKVbj=lgQl@<+qP}HF;ASdv2lXNC&oERe!2g9UcvJQ_Sj>OHP&A1 zGp{-4PPjz-nZmZHy5To_>W^1U2C?u@2Du~M8zOvKfyTBiXnb2F*!#Cw38?i%8(8z0 z`Ue4W2Q#!jUr{Lemv&5wz-H?E9p~oLsNct&cg+z|hKi(}o|eV*Z)|`Alj{~19$zD? z^I=3(DPKl*6$((xv<_R1?R)!$6ofmcR;sv<3dd~DyCHuGYj-{KuI}w>tk-|3z?BDb z8XNxc`Uhe6H?u@Z6(i~ijt_PtLFNMiq`EU2K>wWdygg3gIHGDpOfy>OXWXyYeSbRK zQA*I<@E>x+Sk;GB(Hj~zLLiUs#lb0=!`zU3B34)je_K?K&xk6HjRNg&pU5!z8mg@C z-{bBkte__e*qgt{zvtbPrGJe|f03SnXohYh5<~9$3DwN&a5>c?Cgs+eYKF(tvCefQ z>x_T=+&<%yX<%=4G0Y+*7zc#m;b5f#v2gHAe<~7EBz|HP4`_pjx@lQZXDNQK6#6J` zF{3IeHpm1843MK~1;`EkUaseVN|bFUZ-=Dr?qI77$oS5@{9}`HkujopeV=1g;1QSC zM(aLurg(MUz{Q1xE-uzn#F*;7@XR~{E>_u+=*A!OP%@J9B`r&YU`uc;{lhXjp-p@6 zJ*u#8NRqv-2r?PGLe*Gy%k1S57_)i(iBPZC^Z zq}BT7=O8-=!=pHA@!}2l4}-0JNC{gd@14?l=AxJDeC&F87oM>4F$(F3L2$;bj@Ws$ z2HTQMW4}AI?s$s6;pYf(YKtu?Oe}wMOFy15PSBxUkmq|0Xtz<@p-Y6;>xR@@g3j** z#h37BXS7h4rtzPZT>liLpj3$M>Tvoe7*@cd33#PU!yggw&#fQ3o^(+wfu=wgFu{RZ z=u&+skQm*i!ze0DFsyASK_>Ur7sn(5buJOhYaQON8we6N`AT4jzfv=|v-560j+xZowp26`y|=X}C_+IJ6Nw0oBK!9e&43+M1{Bvfd`(Z+RW!lx_^q&z?Or=BFz70DL4p3`x%=rI3QPMts?)WFRu#!d13wW-HS zx>jqKLw3f-{u8Nig?IGO*Ap^k$b2S>is16yJ5UR1cpeAoE6nVqh&S!PlJ*B<<&)zk z0=u{Qs5b%f(d|Lh0Q0|yZ)?8!l*ta8|F96Ipm^&4%O!Cr&A&$ieyk_yRHVMg@xHBM z8|*!JzV>0g zo{&P{mrj-IpAMqP+wdfDA;rFN3#cWOTA%0%%rvo?TXs{Xsu88TzzXQJud3X0Xg}jtw&wjPE z!+HNlE1~zZ;iFmsg-c4UZuUAGhOZ$}2TfM}7>j;xSe|H3$k^*fA>~(LKrN*2py*T& zL(oI1ihx0Wb=#B-A#O3+EiVji+N~?;4m;nzQ10>OeR$D#oBNT0txy)Wvf#w8HT8j} za~`P|oZ6W4zUqU>J@dVO1(Q&(=Fys7oBC?EZ?MqcM98^*?%b$1_@;THrx6yH$^Ix? zd*x)G=GIzfXw#TFP4Z=21&_E4;E}5l)GIF<+$r|5z5J@spu^;}F9jMVKqlcwU)!0l z%N;v}5Ry1|E5tpud)56 z=5-dR+DA|Mt5jC3*0!U3%9ymrnE0kfWou?-E*O`9;u9jlg;pz#%s6Yj!z9!=j=d)EdnR%c1$mgM*^8)??&KV`EC zjv#To1ry0NR`HF4!!goNLP9Rd>z^6J(Bqr?`++eSU!6dM5ZgOTvn)4` zfN3nqmp!-{+wX1skVu1ciR|XG1dcWZR!%Wwp#{0?;B>gPAxx|GKiT&H*_FESu4jDL z1wPV_|BZPQaE#bu50hiPtaGeOFJ zTVG}c&vUN-fGq6ZL}}M+udC08yz0Ip^9XP*0fO}p(qy{=Kfl{!Fd|ig_ru)^r#9>3 zoXa&Rx?igM+^%4-IXAqsk0JSW_qn(vKIz|AvB{ zq0-YK!9#v58pIHzPN(XGz5Sn-kGN{(gY(unwtY7U|` z`x(-T0Q_>;Nu4Wa$0GVnRGp`o2@@5t`Nl&?(Cm~12X>mLg=K7C88f>3`VZ00%MN%! z;FyJ64iY44xXaG*D`V%mP~t`@Pok_vo=n{DI9C}n*3!}vU zDvrInZ*E7~)A!N~ct`*@&^eA2oDi{(NN86;RlUVDmEN=M#|Z_O-^6&pNRM3J^)2t} zuvK_43@mI>JXZ&^1}Zw{`cm??=?no6@dTAHSFn3lENjV? z&Sy@+m4bnq^Xa+(I4=r{ac${j_hVYz1mu zt{%R889t5&#TW-G6mEq)x5Dji-GGW?88X%zIjslA&c6lBV?h~7w0zP#a@fmZ6>kHepOf=MiOCkQVbhg_XOb!3it zM*PQv;Lf}2)r(SX6~(ZvHF1ndwtDA6jt~KDzWPZ10fqxX6>Pd1Iz-ALr7)-aQdvN`u31Rl{<gs8N?EA@3Fb*&Jd!H9}t&2Ot%y@7|i7uF;( zn41o8Nk~_lTEP74z^FvX33-L3!3EL3A&5PH z&!aAT&~Ke#oVm!VW#z?hLNNMm6o#{`1q(!m#6j2q=VD8I*iaR?7{whw40c*Ta@$&x z0{(Dj1~qL+rlIiMJq%>I61~O0Q)qV{tGPPYk=R8tdu?lcG8Gqo$hW~7rkO&J!y1u6Ws4>T^4u-w^r@g8%$CJCaNSlv} zch2vqlWDmTznZC6UeE>s(llVN)i}76Z^YKPBF{BvP4EPx%r`n!Xh*w0#Nkbo%qbw=lpW~+$Z>u;5m?0<5?M^n$RSAAd)4Bcp_4Yy^$OJ~hMl@J`bEn>Ftea$Qs=1@ zYCM9Tb|oo`_vm)Wv@oTOFoUL5tZbJCXmx+_5CjmYG|{*%iWh%Y?rzJ~Rr`4rU==gq z{jp8j(>)b_!sZC>=UMcivMiEKXmWc%(XJ266g9}o3j-#|M^T)*khM+lJRrB6yPIcO zdK9p_z{Q}j0oOVh|G`?o!0vpZluSN>V@Xl$*F-0Fj7sVSMAv{~Div=r91Uj|=SafLPI<3om@8FIxf zksJGJa011SA@T@;E63*FH2{_xZ%tnqZb4r4`x+&Dc{WZ?W08nQ9uduH>yPEV$v2AL}BaVQB=KsZb=tIcioTxnx&xFYe3|4I+g==r=@02u<+@^MFE>%9+;QbDr0 zK&dWf*rz`jpTxu8W|9e(cL|bkeam263U*LzBr#qv)l5&GB`UW^hA^Iri}?qGfhh` zZ}Erx#fpmw?oRrbd|J}H$9pq8J&$vLGSE7`5Jg=zi*S*TT)5=775ub+WMJxQ?xu<5_GGV-v^^YhoZ!Au#(51eROHivK{oVJi<@;}Eb$Z%5rKL&L z78GxA@?4tuiPZJ{JZqkZ!(RNgxPjg1bLP_Unvd3d&U)^BIyNm})2{kAOCZ61yl{4T zJ_6LDE<3s#9Vj*!&<**p)h{rQ}xJQ}qwo0Mc z`VYXnn}19qmcM^R#*02Hpzi z10gY(C}YfhX)xfOOU?!OO1IlIYs8={4k3Q99_O&rEoUgGsjs!-mMe;<00EX5Oobnb zlH6Y7t|l%-v3Q^#-xX#xc{>XvWZ>3CxTOR)4ovsVhi12i7bv(ek3bAlK(N+~hTh*4|FC|;uRIIX3!({;jsyWQRq=K;ba zN}cn!gLCi}$7aN*_&Vo?3Sx+&DZ=0#R~kCAB@>ANqWZ(ii<=+bd8-^~1P-_PIsKKY zYF49p0mB0H6q^Omhx;3-#Yi_4!blX5RfNKKyHFq2^&1`h6ehqyf38H)A~^j6@=G21 zIpzcfXF6w9pX#nz0YqdeN{yoGkb&RpPc#|$_LD6%l!^=u-_t!tUaUQ&!MK+WxGar* z>+_4E_gsN{%gHi-)tGM%&r(~rlX}-Bhcr>(a*e5yT;pggvte&1690L>zI6-Ks^`#e znSkiQ*5q5G-1kQ@@t9%~+bl#p*Vn{9svi~uD9)qOLFsc>b;DchIeW+WEGI{4r_Vh% zUEmEzvZ}RFQ|>)LlO3KV|15^F+MWg!fXd2G+ zFQ*g-1;7v3;qBmEG|sKu2#Qe{?*<(*G1D7Jc52j{%ueFu`TvDu5A>M{O-CM}6z&MU*3JW8^f4NN;#D?uov2)09^)o1#mP>t7iBOd11|NKkdxr2 zqxPeC0khzhR6=PmkTHKnw)6D&XGoX(d=t~VTgay>bwEgKleo&pZ{H@#z{CE}0g(Ha zB(Eix>f=FX1=@FH2R#@Zd%vy&dqFp5d7cv4XtnZf*e=O~x06w+iR8e;Qb5;j2_9*l zb(5<~zR*?fNyDYvsJ1X|A!CMN@3Q;)anvr;Vqrc>i-)(qTrqa>{^I@oOn>eNGA343NyZ)!0yffA zV~ER^KzsN$F;gWB&jcK8d<3;1sd)3nb>1MeNF_`bql7*{OC~?)cg}9}JuUXscVy`h z-`n<{)tF8wE&5f+dRZCA2ln*O5d?C~z5vp_AA$7V2i9h!u9DHwHeh&T#xJ(o8G5ZP zGn0V0(%&)NFIhjpXBQ$1d&wfaSN>K7mqPenRyz5J9&;_eD)H6T2#A*Fq^=_2d?-HT>`{$3@N**4W?*9uxmVM*y7W!pa!||DwF3 zux`#@n#K18$&etouGuvxlW6AY{OBv8SRarii83<>1UzqH*cy6H!_eEa-HmE683sHG zoRAjgjp?v@(&1xe5he=QXr!0&K`UZ1FP+Qx6_e&AtoIGfmHOIT2&tL@8vaYXuy3+7 zj`s(jD=MuDa%fmu{GQvAm@!1NAV>?3P;VStBAL{E)0j;G&M%UMHZ$Yfc%U$0o#Zve zeLQBE2?EO|6R^1_s#hV9cNQLEQ2RNt;X^Qj?<1W}AdT_^yNoWtn9&`QuAVxW4PEWZ z;f@`{fcV60{NZ*B8Jowh38)W}`gQvNLzW+&{XozV3mCMZ)Btti?1Yw%#5lm6?VEdy z2+t(+?-6pi%B%XU6qeZx4Rs^%@8|(5geqVDxnos2kN^)B>ALntndlwsoem=otFB9C zgt7mpJxOJeCayJg%&6tolIE!$6BKFd9OI|0dp})Y7|v|@&0P4+EGfZuN5U7jE%$ugVr$H>qmaxL2)`EZOiTtZ~dye7s^Ay6nU>fb`Rzwf0{fd7gVb zm)HA$RHu!}`Q#y}^4W+r&}8+gNB~S2-3_IwXDGrP{gtx~5l%$47_znc;XFLqH-YC7S~(D-On-f${DUk*`Vwb|=G&7JTq-F|*$mY( zf&~V{YM?q}`d*$w`J39Ff7sa44Y#Qt@9f3sfR$)lF%SB~g#EZY#^dzXw`nVVk_g4lP0Jb3%Xv zW3#DywE6$0-LzAzDVK)UTvRIpB6HJ#cI;2d?6oq!?03R=(92F#GzsU1YzGyXafle8 zIgQ2M_mh|1`%JzjJx|@iqt<5eh-bR-&ZqB)fHUw(1F9ElodrXEu(eR@$*P6RKP;l0S#vn&xj)T<6;9x_!N)Iq9@?^wc)(Vd5D|;ye_3 zvtPBVNJxEV$^J@Ux_u-&{keXkf;Q{_-RyEOJG&eIha6RTV5uxCVbKvfZlLCm?j@dj3po zf^7M_D~}AyS&jc|r!qpUnet<`=wI3U1M39#kjg5?WyCQz9n&4XMK*nD!M4@WT5Bp9 zt(lC{nx@uf!Kq2-QWKPqs={68{B$vpNPJKCfj!1I@nCBQYiOACH_Y&-h3n5;*yX?I zE7lFup0J&C8aL<6p38?LNn#$Pso_uF_Iw0q1wQZILG}=B?p{+d3mvb4)i2fZiTbR? zG|GQ7)zK*bkki~Fd-aFOrk(bIwpHln^KT`KHK+72yy?uO^BqZMD@=09Hk@qT1(*g0 zm7wJApmHcE9MDBxV^fp@j^C`QyF-zTrbV z)J3p_CRyQ%Q&Pq2pUmOMK2C=a?*uJ^c?pbl6u10HC={Y6^DbEPpj6;S!n%Q8x9DD{ z=O`C!(0Ls6JUto)jbVmH8PnTttSNT8sF8cKi2vuWgu%p4=4#Nu0{BU!Ap0Q5OR%Ip#6>KAkRY3n zz!QXRz^{C3yxW^@Ddufog5UYg3Gs&wdlTGcLQ1|_-f%V= zRtPAe^+>q6r5*XJZmM^uGCk2w+UNUEtx*1m#3s{TFTUW=Fe(j#L5HTv`(HE~A^0k` zpba@kcf62GBJm8WE-s1+IIjzGC4ecNSq-7>SBroo`H`3x#qW^<+44*`XL z6}r+J&7OSXXYsDdu-AGwL}B#%KXyLzqk|RxzO#{YHysCyv2iE%KH9GidzH`B7PLmM z4tRY{1=>d$=Mvd|_2}yikwz`-4oDb)fS|7m3oDGGQw0JAT}b?>Qy&P_5~!y!r;^L! zB-9-T=-x4An)k-BvN&`~-*fw*lYJ_J0CsWOL3EWU*S|>u-f7Jr#m`T>+7~uA&a@ch zng|iUgj#ahJo2%VbH;|uRFu{wQj!*yp$n_S@EwSKw~HVm)EcPXU{7F7vXmhi$9(+~ z_sg@UkKzp!O_2!wXU1@eCOzwARFm3k=tu_CGtd$LP&;j!W9LEjWvELFhqq6odCNAi zY0x;pD(BMIW(jaksw=9{x8XD?B7N(->GuN$({!rw4_xoRp!7$jIf-U$F%y{NGX1dX zfHaQDNC$0?t(1d)6L(<2^`!ST+0~RD=UZej0lbm~gCjIXB%?kYc#V)$b`J?_pSuC~9a+b)ng>KbS3W}K8q1Lln z?G?Y^8_oH}U6dHt?%-1I1E_$dS`I=(+=q-Z-25kfF)NmwllJp`whx8j; z*z#qc4Rp4zp}`bT*>F-Q;QZ6BYuz#{G~vrSCj8gazVYtl~B^X)i6iJhuUYqL5Ta)#sm+AFv?Zw1FEu-EL? z1DvaRC+8kK*ML3#`MO{@eiHGIOyB0XEQarA!Zz0sMc)x2Tfo+o-=X(L*sjbl_&+mW zz*W}3>jcm0yB8I5qu|@7G%7Y7$Ml8ntoNfxq|PrppRcDHh=r-3fcF72a#6J&%lzHJ zrE*+}OL07#R@FjBu>mRM+`5YF(CLggnb*FlT+_YW;F+>WY>`u1MYEJBS@Qa{F?rib z%z=kva5rp$5G7TY0M3=`)AJ>~OfWN_j5uUYf+u2llzRpz|LaJ-@Nu)Vd-$&ZrFOyF z;c|WLtE|JKEODzNqHo2|_kG}^-z|yj(lTZ{WeWMTT*y|6xJZomFBg2bJl^)0hvVEk z==^)-#(gX=o2e)OVO|>lzGx*Cp@oSHEcG9{`eI@9@-q&6%b4Smo*#@=yzJN!DJXyP z{5okI1`|SYg6q$zwRI+|9*)KIgvk7wFAH)0iIG&jABdD1y*PalWD0OvKVLPvO<;U# zsAj6AW9mIBm$^MVaro8yy=xw^)YZ*LYteNIEXqGJ;O88%{+o^@B#8$mP4=ho1G&jJ zVqq@9`QRI$VM^-eQOEL5+Mo81Xlq`9vXEqzi{#{2;#VkP)^Bhb^^rH}J1&GEmvaPk zuq(7anL|?+n#iSN(%iiJKk!n$x$=g3@VzdGhH*mh9$Tw$;T<5fB2?r$do8xWB8*0b z^y0lK0b389XH4x8{=^0RmfoBKim`M!tZ&>JojOv}@k%taa_j2T))9Sg7kr<$v=HE+ zsFb9gJ0~ZSrnJ7N95SJiDBUtS85ITtY$eTgURDK8bIe|a8YYHLNL(2&bi5Ga6dOAKA$~73-W(ox z*E-R#61>ASE@xPm-bC-e4~2h!JhLWWr=W)`P_LE5QjbXqq-88;qorc%?n5b&Fx0kK zo!2ln_{vm{{U2?B8t_jh5A(w4d*2}=GV+c9GOcT&Bg$GgQ=JHLN8Wm`Qr9KQd5e=3 zKPE~HIq^T}&o!Y~$ip0bg<<#)Ml;=p$jEQGNEK z(|=7cEHr+XKnkU9}t zriFXIVceez&uqW4LMgO-=d8SBqx3BgtYz4NiGe^XHUZc0T+Q5c+&#np8lMWc4NmeY zviAW`D_b5yVoUhhPZ6G5?!$O|b+KM6I842-F(?2sA~pH)>!H?kN4sElV>0eQ%&Fy3 zI}Y!6z6i(R;E>9*9_OA{C}n1jXwh*~fo}9UKT$hD=0Exy1?~%GuRhEgB_tJ~tTj|k z`5n+@47sG<)hwG1?QFbiyU({DE+-`unMegLj{+ZeytUqdfvaQ7rx`j0j&nl0l=lLi z-Q48uA6YwJcU*H`@fC+P_nht_;0)yGgAO9gS>&UM_D_>(MQPVTbZy^=#RiZ;)yO5I zKJge#9{qA&d(!=W;=Y7g_563opz9!JSW<2DrBc)Dt+ht@rS1~}#8xzYk>9^15N~HP ze6lvT2+VnijD-n%fhPY78VST&c{x!r{(Jc^^?a|60BMt)U5+csQu;_sXsThPL~{L% z?GhA+-_!2M!GdE#Wq?^^@W4RupTJworBKQlRL(_X;3E!QR#gL#U9>lsBtUdJ}@Y0~{HPb3|nZe#~Wdm{}Xk=EeAo__u^Y5~)b!*G|&E|x;@qq)FEZzCJR zdQ*|3iOC0EFjH~?Ph(x=YVSOpdW$~wdH>Yv#1o*VuFY$b za`7Huic=cYD8OlU(VAIph!DZ3b$yQR3|+AMh*u=!m|+Bs_^BPH1Z30`%=uv1^@!(m z!dOO&9r<8y{mqwLQ8ZBMa&Q-;EIA!g3SEXl7>DA57p#E8&&%KRrzyhQ?~o`v+%9EB zx1aI;RugUcdh1HR{=0vsr(tJ=et>tZAhdZq`b5Daur#6ga&JrY8qt%+^S04kktmvN zJTT{mIV?|+N}I0M+~{pCEqsT@PBj^} zIfJ!Ra490HeSlo4={=H;SKuZ++JbDYZrH-!pdRj8h|MXAb$66FSo*|V&c#<|wb>ah z8u9$&gUyjr$yi#q|C=BfKH{01dGxEtv=6x5wVm`8&}IHKr4V&RU+yoAV{tT*XbkP8g1 zBZ0B}f@7-(i-l0P6SC6ABI^myep!e*NmXVuWxIIZ(`WQjnG{mrG@RUGW6Oh&z z$a1{jlP^XokCpuJdG2`^$5AyOLl8KZ8t%A@4=iEiq$P_ONu=OZb&Qjua-6k>=KlJS zp%}WQ(bXz7I7k#k!yHIn0xMDr`H`t@)4B264n;g2tyZCTU$3?s)FvnTy8Pz%`ueuj zXBM0jy&fu4#CTI_1|kd5j@is2v+^MDuXmgjjme5aYcUGV*_4N)Xo@kQC>~A@>P_qAw3`em6acUA6$>y9dpb$^?;3 z$Ja)lOA0FwLOS9w_LuL{SQqGuf>Vr}88@DRPNX`9Efov6tqFD7J2u>_6g%sC_ByjJ z!2B=Py~48%PwJk~VNp08pLm!8bMHmUC+wI?srt8eUWSGfw*Q^#s38~oC%a7caB*@) z59;M3tUPt}VIVZ=o0s6>R3NAZ+6nSs9 zhnO3xZZ0WQoG+gqZ~6);egUqeT`oGEcgpAfyYcR`7entrsoG7=R6XPlUrsd-0OJ{W zpK`BgoDKmUsn)*iM+NTkK!7I%&$shuqiSKJGmG<7DSxsJ>J=y$#8(!xQ_w-XB z-$-YmOH$#kd(veOepa^af-3eoFX+JB5AK*AI@iLkp`1v3y5>_R*_wrH#PV}<_9G<* zYL9Tv351_JSc6VU%1rzyvCtv#0xaeMkjLZ6YRH z0Hd7{ti!;!b$9+zSL?n3E*4|7Torl8W`1i#%tpWhwcG-?fJC5dI$2v02v%7%Xq6jKL& z_|XcwPGljcY;0B91@nv6PsOsaG&`rCXqh#BtTqC5r+vFnd&bioIOb^?Swn;xS77PUdZ2fkhWbtUZdANHZSCWn-S6s( z`S(kCN|S?9w!3YH>k!ej*LwQ-dSBz*k0*8~aNi;X(qQe-b56NQk#BbLe%Q9-)Avn8 z*>!D3x>Nw!pS5vVkG}o@jeUJ4w$X5Y>S#v9{coDFzaF=Va&{h6^Fxj1OFa2@xk1sQdv&F=%en)TsN1_vCOBSFULEUkeJupq- z1<}(YRnG@nD~mLgK$z-aF8?zTXH-!;+%RCY?NYS$XSG&>p$huK_N-aQpLc zJRELyM$v@}sbRB#O!%tG5Zr=4kbO}r5=h*NC+ z+Z7q#kLq81lgGM>ArTCfr zqIyS*0;o%*sw*8b#SPp&I89n;-)`8FC9Tpi+pDS+5m4y$(VF6=u=Iz1r?C!M7aPNi z{ve|;rs4C6EarxaeRf%=LGXv`DhG!43FIP7D1nL9{_##$WH$VM?qf|g9DT-5z1!>L zM9M>z$HQn!7Z~=0r4V=j;OKbk2%-H0b-~#D~9b5Cb=V_n~{Fc zy>n8=<36^dI6HL{b)##K( z)pwZZ9reW8%5K!MKXGJYaiTq80awy?+j5B9<>IWvMg`2M`Kb-$+RL7#Ypo~RjOjDg z>k8-!b5JarwZaU;etiM8QJ=kWWtkSQzu|h)&|#B%--qXq5m_X@3tkk(XO|p5jq!-B z{h5!M*o~fOXI^Q1s%X2v04JG1Az;bC;FM!m1>kwnH#Kf{l~Sd+Bye#B&7QtlT#`J?}PGw};RaZ_+DQ6XvHIH0#Ij5^FR2|vlp`*$xG zE(ZTNJ)`KFtAP4hfd+-asV0f~rTMHUsMe2efsL%wiX6*LB8xNJaz9(zo=BTt?iZ1eQOn#OK2fe7+9vdUGXBI&ymy3(zUtUoe#- zuVVW0<%=d0p5!lHP-V@lMbSp&IKe>k1bxsLwozwttmrk4mAfk7r#~_5T{H{yJ$Aol zm-b#KPl6-f{JtlHTp;(#cXSARc7Q%>H1UH)xQ!T65m3Qi#;Omy-3`7rh)qh~O18Spvuyrixwk(6}8h=rh9HT#cD<5_g>;&qcLASwvs3zlT!v?}Z=$cAQzMd*>sONHQ5z(+ zdR@LthfRfkmz7gPt=2{f65LDFdRXay4vK(^yqZv-;DW{?(pfepc*Y5L_r^JU(*9HM z*;hy7#y?U%sJ+jI{>b8Y0mcNS)xJE`?v~{X?tSjkl~q^A98>|Jx!=iQ3dLKRY6e|3 z9|DVfj*FNNS<;DXO%jhqaf>;Up9X*#f4huTt1f?$VlaQ!+RRgPEpvr=MGY5=NnpU7 z;s7XJ=s@U_1(h}FA@QUwaLcd~2x6H4?EY7bU4rM-@!?^ea&>DS&FV6bk9~27Qx+%G z1V`{M=LXoFm@`KPJDVHThEc1rBVM^ZS;zk_RF~lTmqYPO57$H+A=2l-4VwoILn z_NoW?{HME-A*9Iz(hoRMimgphlcxNUc>CZxAr`7>ICWn)9FVk@KdV#7lUV@%4-%4& zT&W+=J8T5j>|yPPqh118sD1IyjZuE6%bv9p^HO;IFG^mwslg+u&-)w}PzWw<&}z$f zl85m%uM#F^I?eYN?fCPLb>tN2aDUkus)~Po#r(nD>>==jreEq;PMOa&qSga5H5bY1 zxn!hQh>Ds(*(1z7jNpXM-sfB74%P{&!twxx0AEiSTq8Z0Oznc@1W%n={5zUFYiJKa<(z+Uj$~Kq zxh~x-4FD=ZDn_`#O{SR`KriWI!$|5W?Bxc>9M`NV)a7gIB|8j}$W^I8 zV?cb_#D)K${UE#K;jvrkT!BD>WhtLK0>ycl<4N}ttS-ugM(T-$B~ha`Rka*ayMEd7 z8A@>aApRbb);0@uZfM7Wq6jh8jI>2_8C!Lz+#+}kvKxU-Yl0;0%VFam#~MS_WB(Vc z%Tn?d5AHh0$_1qs3Okx);4lkgy@X!Wl><%M2n?MncaoMMw@4wCDi{-Wxhh(>^Y+sz zM+_mE!J7V}fPv`FXfME|(Z-KrA^m zz(|Bf7cqh9Qe!+S&S);qdHRh<9#zsBqe9dlSL)G~>uQ1$X(TR6|BmnmWD>=F%5NT~ z#+96vB}-kIiStzw`g`h33y5dLioPrqI4amoJKh1F6@5lXCDlYpo54XL-GBgI&4{*b!!q}J}w?z@2lQQ zlB|1r*kCF%V>9542XpIslD~b1ksAh){0h=!os4g@lgsGC$D^nsZ6_dv!7zvbhzavVxdN?Ec&!X)JX0H)8(LI3~& literal 0 HcmV?d00001