From 3ab559785aa43a54daa21d7273cada611d2cce29 Mon Sep 17 00:00:00 2001 From: AnasAber Date: Fri, 2 Aug 2024 02:30:51 +0100 Subject: [PATCH] Modified the Structure of the project --- .gitignore | 3 +- README.md | 12 ++ .../chroma_search_functions.cpython-310.pyc | Bin 4284 -> 4275 bytes __pycache__/get_embeddings.cpython-310.pyc | Bin 792 -> 792 bytes query_data.py => app.py | 47 +++-- chroma_search_functions.py | 154 ---------------- data/__pycache__/process_data.cpython-310.pyc | Bin 0 -> 1710 bytes data/process_data.py | 53 ++++++ .../data_level0.bin | Bin .../header.bin | Bin .../length.bin | Bin 4000 -> 4000 bytes .../link_lists.bin | 0 .../processed/chroma}/chroma.sqlite3 | Bin 2396160 -> 2396160 bytes data/{ => raw}/ReAct for LLMs.pdf | Bin data/{ => raw}/generative ai.pdf | Bin data/{ => raw}/monopoly.pdf | Bin requirements.txt | 168 +++++++++++++++-- setup.py | 174 ++++++++++++++++++ src/data_processing/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 153 bytes .../get_embeddings.cpython-310.pyc | Bin 0 -> 771 bytes .../data_processing/get_embeddings.py | 5 - .../chroma_search_functions.cpython-310.pyc | Bin 0 -> 2930 bytes src/database/chroma_search_functions.py | 114 ++++++++++++ {images => src/images}/RAG_in_CPU.gif | Bin {images => src/images}/x1.png | Bin src/processed/chroma/chroma.sqlite3 | Bin 0 -> 155648 bytes .../tests/embedding_model_choice.py | 0 structure.txt | 26 +++ 29 files changed, 571 insertions(+), 185 deletions(-) rename query_data.py => app.py (79%) delete mode 100644 chroma_search_functions.py create mode 100644 data/__pycache__/process_data.cpython-310.pyc create mode 100644 data/process_data.py rename {chroma/1bf717b4-2400-4375-8363-fca32070ff78 => data/processed/chroma/be23e90f-70b1-487f-afee-13fec0ce30f7}/data_level0.bin (100%) rename {chroma/1bf717b4-2400-4375-8363-fca32070ff78 => data/processed/chroma/be23e90f-70b1-487f-afee-13fec0ce30f7}/header.bin (100%) rename {chroma/1bf717b4-2400-4375-8363-fca32070ff78 => data/processed/chroma/be23e90f-70b1-487f-afee-13fec0ce30f7}/length.bin (98%) rename {chroma/1bf717b4-2400-4375-8363-fca32070ff78 => data/processed/chroma/be23e90f-70b1-487f-afee-13fec0ce30f7}/link_lists.bin (100%) rename {chroma => data/processed/chroma}/chroma.sqlite3 (85%) rename data/{ => raw}/ReAct for LLMs.pdf (100%) rename data/{ => raw}/generative ai.pdf (100%) rename data/{ => raw}/monopoly.pdf (100%) create mode 100644 setup.py create mode 100644 src/data_processing/__init__.py create mode 100644 src/data_processing/__pycache__/__init__.cpython-310.pyc create mode 100644 src/data_processing/__pycache__/get_embeddings.cpython-310.pyc rename get_embeddings.py => src/data_processing/get_embeddings.py (94%) create mode 100644 src/database/__pycache__/chroma_search_functions.cpython-310.pyc create mode 100644 src/database/chroma_search_functions.py rename {images => src/images}/RAG_in_CPU.gif (100%) rename {images => src/images}/x1.png (100%) create mode 100644 src/processed/chroma/chroma.sqlite3 rename embedding_model_choice.py => src/tests/embedding_model_choice.py (100%) create mode 100644 structure.txt diff --git a/.gitignore b/.gitignore index c4c8c5c..eb3abb3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .env FlagEmbedding-1.2.10/ -rag/ testing.py +t.py +s.txt diff --git a/README.md b/README.md index 244b466..6104d46 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,18 @@ Retrieved chunks are reranked using the Cohere API to ensure the most relevant c The top-ranked chunks are passed to the Llama model (via Groq API) to generate a coherent and relevant response. +### How to start + +1. Clone the repository + `git clone https://github.com/AnasAber/RAG_in_CPU.git` +2. Activate the virtual environement: + for Windows: `./rag/Scripts/activate` + for MacOS/Linux: `source venv/bin/activate` +3. Run the `app.py` file + +The reason why I'm using a virtual environment is to avoid any conflicts with the dependencies (I had to manually change things in configuration files), and to make sure that the project runs smoothly. + + This project's RAG uses semantic search using ChromaDB, I'll work on doing a combination of Hybrid Search and a HyDE following the best practices of RAG mentioned in the following paper: [link](https://arxiv.org/html/2407.01219v1#:~:text=A%20typical%20RAG%20workflow%20usually,based%20on%20their%20relevance%20to) ![System Architecture Diagram](images/x1.png) diff --git a/__pycache__/chroma_search_functions.cpython-310.pyc b/__pycache__/chroma_search_functions.cpython-310.pyc index 5c91055fee5c1186819064faa80d1f3536d913be..66abf60c3700a36ede4ecf317729a087b057b117 100644 GIT binary patch delta 823 zcmZ{hzi-n(9K~~X>>B^3w5g!wMg25Ccq%{SQ1LF)^^g4EH@p5C$yy`F!`@yN}Nwi~XV%S(cvT*Y2@5 zo1c5uQS`QVw!8FdlsK=Ee~4(C2pibkL;e`Hu)UY_$4LP@O^Mzn<4g~AINP>iP5?X)>wHC)D#8d(M1pAR+ z9!|0g%6p`<@5&T1n654xCfG(mTy{fU820v`sZY@??C2rU?a8S$UruEl)l)TS*CR?Y zpp1&GYCEcvRlUTL4;DJ5n|GT zGWOh@8XLml!7en+vrlHRERJ2ON50BGzZN#>B46`V3Y+*wD+;#)zzVnM0)$G;wo1k- z3@?M&?2`5Jyx3FDGAowd|suwvcJrn8-BMP;sbv%Sa!he9r~G})-_lI&}Qiiar< zJb5S|ig&?_mqEdk|3NRFgNPua|HRO|UkcWPfjnRGzR&Z#4=>*!|0%C|nkFZr=i!ex zJHx(q8jkwQ2Ui}QaCBRF1?Hq9?SQS?+98-zcG}ht6XvutV`thNx$jKBNI=3C@3Gg& z_P@SX3e*PiPkcNYh{N05XGhE(uCH8blcAgDpOQLN+Rda@X&)0xNKO0hz^u z*zkSFwTXcAlk{h@Jg%gM@DUXHO~`>tkAsjVS#>;PK_H^@{CKh)@j_^kdE_&FY=XZl zG$mJ|NbksV|Hz3vgeAJBtc^m2LN_2S-{6?rf2`gsz1b4F<{~hK!1FCP6!tvZ>ChX> z9Nkjqvn&&YLd&(C9@^1oYHn&QP$WG-kBjt3%@^6?xu$1|(E=K7n_P-|hDdOXsdPMd z*TP`#E?Gso0+Xf^=R$}wl5>Zv+1$+{K6*oc)}KY z273i8a0E4E0fCW6iVx}9<~bw)xgH-VGz2n<%sj#(!fk{a!YByK_cwq}%labJsihBV z1TQ(kn-ZorD%%z7Ze_b3iq%fbaRYJ-n=D-&8IonWjXlS*#$t`KJ5{I^9dHnqRX8gVHee;S|t6{+S_sc)dzj6)ZPxW$l zSn%>K-269~h(SW8>9oz4~TPW^fuoC7Ndux z+aI$ci@@4Fq49+A5yHz?vs zMssllLG2M0AvuyE~Kr{^$>8jiV2m2vfmBXgs{KA=zl%@kyFNp<8nBl{6ZAv@bK^j zAD--eH&p)_uF!|-B`Bw|y-IjV3V);!gD?yasf)G1j8!_-aKNa;tyB9243!!&Au)^C z*Y*O9jD;yo;w;k~7(eeUtU0=|=GJTb7QuUGVb9GQN4RsFxZtf3cgIK&sa>15K+T)S zZ#uBv)9X#3sD70E1qj{|_}TNGEgSK8l3#>8nNi$Y+QlVhX;k8kl;$Hb4$mifERrI} zTL}+2EkPn6f{@V>eLMSTsgj3OOP3cD7So<7{W2QSFfMXXfskHCMWpDOJ*l+AyId)) z%O|mt!ucdkr$NtS>hwqpKrls-Z0M*^fHK*pa=1}h(ws0wBHMzg=g4|hOD_aEC;)$E{MWWM)I8?lce;9gyo zToo)`*Joe|5UVh+pt{%Q0tss+T=d$WS6{4aXa-PQ=N67NMA)ikM9JDY0vb0u!NEa{JTsgA)Eb!lb0{{!sETO z1E!>`i-B7aQ3rdab6i`21DvkrmE-#IJcs1fLymVeiZIGasQ>)`KA*$>ybY6yT;#s@ ztS#W#N3093-nQ(fQ9g>tQIdn4vTTwkVj5iPmZUf08Zv&g4h!x{Knn_gw*Go&lPZ%{ z2jIF-;GK17z~eE^qM(Y?nv-V1<)@s*fzorh>IJ}kaK901+N8T|gRBO*NEafYC(2q> zCgBC0vR&n^5BAPhOsh_zWuB{Hx zuFv^CUhmiYsyl9yuHtj|Pu0aAoG*3dG--7M;ST`bvjYs;QmlmnUH1KrkqB``~ht{QsL zbW}QbExqWLbhqdkmaKZ3>)N4{oBVUYblL37iz6{ywG_{DD}60))YnM*zAPhD zRoe-Qh92t0l4;PF&p2wHs+n4;q&i`>tC4b}zJ}BHCA*631%Xx!b>A$OjFMioLq#o` zs-alEBWq6JS6*wlQCH>t)A!|Qma2rFSqvS+Wx7JE$dviTFkpon25Vi{Dt+zWsINs0 zx+>4Gw>1$!5z80kKD^PU1q=$Y{@k34xUki(t!nzL~TQ^M2W5u|+@?>WV8uhhr`o2O_ zaRSFxIOf6<@5NbV^EO4#vt-B6%)qm&%W&ViuFCQ8YHygIzAw|V702hSP~$OVREu^= zb&C$WSTC`W{lKaW;rzP3DqYP>c2(Z{$!q(jrLx|NjvOkiA12MQN_Nq30@Gz271OJp zhV!QPWo_6e*;k{k%C%EoS9RagT&w8VGD}|NH(OQABJ*e%uIhNUX;$8ApGJMnovp80 zS0zgi98ci}DZ8f4EhToAVQEE0cP)f)Jk6?(;oL@j4W;kPP<_r^%`XNFChMGA&XqYt zd@ryqt?YV^zGr(4HR@|l`o4Ul_&+gmNUwr;w%Su)g0UxSTaYas5b-0)VOdQ;k^lFb3( z7DG+vqV!Nftbj4pwa_s`)3!=}^)wu4)K~wEuT`F=Z0M}M5PhSlyDB3m>mCXW`hag( zs_*!k$AMgVul`1T_08DVw60hSWlau4?ngUTeiW~0sg_by71vQ5wWNi6Zj`=8ef6gA zEAT?o2v7h}*f^nl)F+!aEEl;wEg4lrQ~l~z?rqdpPx`(zPD0tR?P4hI<5Ix7w@gPa z>bj!2fy^xsRxgxtPouuN)AwbWrNEI5wWug1mWE@}S11SU0G+RN-L-@2lJ9QNRe3{K z`o7fAL0K~0Vqj^kd!~+w(^!>WsbsorJyn$}OQWknUmH57cU7KA=atde0yprBrlF&- zncSHU!&a1SujJ~g$Awc}@|}(P>X_bFqpr$Azg88CliYHOy3Ltb(wRBebV{heYUnv7 zUG;st@?IT{`f5+tm*~poQr0=~m>&kNWR+dF=-LK0ge*=cleu%NW7yuPueS7k$tG*v zG+FW{Tdd@=J{+H}90MJ+B>QGy`jz`X*Vd@7*7SX;A=B@oIXS3IEJKIaQUe2h-mpA& zfTCJeRlYUZRk>ncZD>i~m*VKA>RT*B)e|RgfDXmQS@iik(?mh^Os_IsEy=#BT{S1V zD$iniVHlvt1ek;I(r`RsdRg4jZs=*c?zr4EmA;xA^;Jmp)u^j-!pu{c5EX^K7?f0Q zN?XUgv@E%(gt8w7USK#@Rf#Gz>Z@s%zLH(JoPCPv6wBy0?2D2v)Lj$+(^YIol`Y-2 zs_)g*sIPqbzCy#7xj7g(UFK5uJT4U8r>GdVs=nE`jKFcK@0D-Vmz2J*>DG5Hmme5g zp36zUy7`Gy7nZ#f`SqLw^2}LFPe1>W{7t-%#Upusy$MD`v?n%Wlc`6=QY!=4>w%_e0SR0)#_{zy`%6 z4Rnv27k5Qa@>Zp84Rg~qbYGE+s*YQr#2Hz1bk`{2@UTjOZ5U2TE2eHvGq8hj65(m^ znN}r0sgXIXFz#ee=a_dbXJxXr@?QN+!Z#&r9IQx#RiNV9vR%V2DjuE~3mw|EN-L7h z?X@-3VsuHIV5-eUP*POA=#*VYtYO#kTt#J~yn|CWSHgE@mAEdIfCYlFjM?WSrj36k z#PQ*2fpO4mt)cE#d}_93D6(bQMa@9T!0*NkYb6gWMbQ*rReaBum(SMRp4Keg#gGy^ zf+1%KYZy7)4n<2hw9vPFIdHuLX|0@Y_gjvsDh`{$ll1`MEOx)k8g_+2Pn)W&+sjf5 zmvA4JXY?N)kh-}v9>S$Fv{s((+!S8G*_?n&W@v7DYcu)zDsH}V?B`pYy16v2yphzc z$!>XeZ{2X}=F<4%_OEZPycaKX8kgIm`sVi1T4SeLx!$X`U+U(jInEmR%@)qyTDj^` zPvIL|Fne>A*3x*t_KjOhaJM${Va-e3TpBOcJ~Os9E!r0eI`x1shdotf6?Ollr3VmHZn`5 zStZSw>`QxB^D}?K&0Xgn-*f4v%P#Q(-+8O^#!H+lCPw$2J9yu%=iVaCTRzw-&0oud z9n&9~bKiRR2_EUMJknnO$jztv&b;Nll`q@sznnO|k1l@bx98_A@2))3TK~v>e+XYs z>z$QvTk5}^l<~6jxARDQ<&oz4M{YLX{K~xLt(7ke^yIN21Ne zp?{U|BT9eVdK^D**ovbs-?a4ret*+ed>_(_TMPXB#+J+Y`S=!GbJB0NyqcfC+;TKO zpWMRp(tm7O%Fk!Ei0AL$(!|dXj$O*nd&clyOCJ~$&;Q%lQT)7RjPQf>i80asePiPJ z_l`B^j?YPVjEW8}7{!+)-8_0GKd&A=hM(7t>ioQ7RQ!W~9NmYX?;368=cQNhV^heF z;B0<4LipF3_x;bNIjfhZ+37d0x_!l|DG(u}lGJ?WhWTf@U_k<6+C@|N_^_u#Lce%S z6%FSeL3}Pu^X5<7uCGqfW`|gry`RbTex~1mnH>EQz^9MGa*`7v}doL;s z-&c6}U)HZmABZhuQxmCQX>OPK^j!FA=HHlMY?T*61QFxtn zhgA4!F8@;|_Obl`AK0Y%HE|~Hy&i<(7syP`++)1x^_x`?k}8`%b&#rot$6% zp#uvwakd_nNt_fBfauw0s^X07ZeJNK`qkb{ z^YhX8h<|$YWPbnl=#l*V?kJcA>B|$hAD-WD`1VmDz(?N3k9UiIdXxBUDb8(+hZ z@#yix^9K({Eq6D)A`Q3HCh+PDGfiNM&{TAto3E_wkyX9Q&CAa_e`3w1{5PtLyR|0F zc&5d@M}gf-OfLHN#Z_S*cvJt1sC#q%Pg3E}x%{75+|P0PG_}>l8GT2Vu}Ptx`_Z;7 zRdK{&IPs0^^J}7()0zTlxV28MQV_XrZ zbkxMz)(9_<8Zes1q>2u^t4^HF+wMhPx8NT#-eXG`4Vb!h;E6Rz&aKnSX~=h;mZI*nFC? zIkvkd&NeBFIB6{X=;%l5#JT3l{8dun_MCJ(;=B)W*7qdDQL>1W#*GoJe5OvEjl1$6 zkUrPa@=O(~)}w5qkO2>zW>v3Vu%VS+TE|7T-F5C?QU!oPk;0 z)_AR>=TEN_M_u3a1IDGV^GIpLn46FU@6G>y$)<6~M?Y}tBpKS+^gNQpYj&T6Aeq)| znlMAO^Wr)|dN;FX3+LtX=P^U)pqS5{R}*LJNS1M_3!=;rLy7({Ruun`UM~vZ! zUKptpL|aw(K7vf%hf5NYWV#R2fK#F$D0PwyttmVwHRpEca=UNtzv>T*Z!IsaiF0ix zi#`qXCVKbUsyNP??iJB@Pbt{>il5_vnjqQy90^F#jEJJ>x-+VR#46?Y))!1>=}EusDqJZIA6ye;Tc&N3Cgc}&-c={a$=eHG6jRfDi!{6!&(;c?`+zx6_CxR{WmQ9?=T zWts*F8|{9iZc+|^vhZ~T>1)1B8eUZsWZS#4OiC#Q!Z&JprYeXyLMG4z4x0Gxi$jCa zZMzERBhn3nM@b|4>Y7aBZ^|Uo-ayP140H4!&sSxN_wd}^+&hJdoHT*%_8xS%P_Buy zZEY5D(jc^>rTONhiW2lR-^su{+`ma0X;*5JjMwFVB-86t>9n&$&p$uVoLsy|E^7X& zn4p16rIBW}CdW3gP>pr#G}`PQMEza>^-=TUx)C{cRkLtq+>n2>G_2JG86V6dNSZ`} z=r2m0AcwAL{uY8f*ZDeWWdBk^5-p1)s$r;}N1~?zP@Aj(7eI*zzCBRLw)6SUF|6n} zYwILgxvu#!B3}t zoVC9BZXrn18}q|PO^~gbR07@Cbxj2e1Y{coJRo`?>#|*xJx5VURWh(yqyKi3f=sO1 z)cm8uy9rvciAUMQmzXtaw!JRP{OBh94K6$cp5h6>j}1^qaRKUBilX|ur>mhK&AX&3 z4d>jk(Pf*PZ)8{|RV6DSNv3fj#7kN(XeQJ4!QSfuKp~s_NZ*6j!XUGijTsfks*;G) zZQ_WYo|fpX*EQcHW=Wj?c0!s==fCHx@HF@i>11SRlUTsGSmbSzs9^=Zt&;)hL@hT} zrHR92$KTexLkQA)vosPMl91%^EHh-uCCE1{uNZ>CB8iSX2lBtjHiw|VR>=%B^&mRn zuBs&QsUL1{zC%dTKPHV_{;Gr|Gul0Aj#;QG99S$!fpl5EB@+0_JwPzWftQ5rJJR2y z!F%h@*)w-E-y;=zfu%(KS9P@HM>ZZ>ljiEvvy6-D7=m8{=&C1Dk}WMJXdsbMmKD9k z!D5%(=)(_I$K~k@J6A?O+1Y#`<1*ZIq%?e3O^|Ufiy&gFgqBF5WXX^W1i6c&kPPIL zqokBb8u2YJ`u-zTL5R<CGZZ-~_Vk0lGr9)w!8T$%#H5bq>2iMLXZ_%1R*!gPz~EH z@*lC8VHAN_Mo?66A!q>?ff+=rkE{w3pZgcDi`UDfwtq}bl5E<(s%f0HC7^%-d5bZ< z1Ckg;kpilMO(peMiT>mCsw9)z{`!{Z7?S4-CrHD`CImS%%aC{q+eDmiM!Z~1aRHHo zDG~rfNUorMQq|}&ry@x7{Dmz;xR&A|;c*EWG6e}OQ?(owBzPFA;_7j5ShF^YZeaL^ zLINNQH)^`1ZZMAC-11<>dwzUPj%_pA$!Rov&t~8`JBqq2I5)%^aiR4n`l=z5F{?SU zYDEW))yeVZ>soN1pOuqhXc#fV15c=lGoA?=mIkgJJ$qxFI7@G9d4@G|L*Z4@@QDdQ zF3z$>Ox{~DNl-TpnfdWpBXFIRxC29vD@oqR>y zAcv_2_Y%hp zWW!NIVFigJ&Js#C@<0Nhgr;sdFuerP51+0VXBXmd{WQN_8a}lq$hOO}jEgH{v150U z_MkCMFf5Uz;ECMzlAs9kOf=r8e(#QR^F-p@*A~lZMZz2{N9|PUSj; zJr9dR7VJ4Hr;LNPQq*99gQviPUQvyHG*T60kIoXEv#RxzNOO1p3DU^wS0}`Ib(RGK z$)c{nAW($85#>Pe!dP!YABQ0Fh`s?brye1(?rg3qhr-Lez z?tKP_aUruvLrZ{x#P>|cLJ_y4AFZtuWd6F=|K2ksXC@@cG$bh!eeCGRr`JicaD6-^ zu|0NHLXb@Mm<^8|+?NoFlu%k=O<~Q#GR5A8i<6VzlWjNpzEda2oQHA!a9 zI7p+mlsMKL%v3m<1UH9jAc+QDqoVjQ3Ybbs^PT8`v8p7oR(sxcts0W5BHy6ir{4?!fQ35V@l{S#+4aOp+tQ=zBL+C1D@0nCQQ~^+j&x_6^eT z>uYk1H{ykh0}W|>87Xq-qCef)I_Wcx5aUHL7BQ~s4G9@$^rxho6$27R7(e)6Ysen_ z5crjf5Hac`+sO*-8qp8#sg6Z_hz#v$6^?`Fn$DMo->I6AtXX|(N49PhONiq$IhJ#pe5W(Rfm{7EoMWy4 zed#!D;cSQoo~a5F&&{iMwcb}1jPHrl6^C(uJYVw)O-ikKi^6NxYP0MhL3i=)yDV z#M!>S?X^;2M^4&-IG;tF!^4C)ne0?w^GVefPC#7{lIoDVxp+>CkWtB2tVG&gbdp;Y zN8E5BvOtB$<5Jj%qp@Hc-(B1*bZSiC{V6^d!w^B(Lqx{70aVOVc(kyUEhF0JraD1hdt2M~`e^%` z6XIm@sGFR6%mbb$O&oeKyyDh})YcCiHLz7Ujx9Y}dRLt|!S*&0Z9k&rBhv5%2|-4( z>}Xt|kQm^XG$FcSN8{19uuY4;AcL2og7p+XD&1Qr$Ynd);)r4AGHK+Dx6~xLc77H~ zY?D|V78j)LP_ZEwn>jEA$(E2&=MQ)E7apie!tOaX8rs?Ryj0jHC+)*#?#6TvFHDG& zX@)!)8X;DHR>MNBZwH0GZwXfRw``GNn2U6S91Tn{gQ+@=VcLxD;S1$juPJ$ zd)Y#XvSDl$&IH3%Le5>qjrtew5l5uFoUuxXvnwaPVc2Pajwba{0dbU0!vt8 zagL%aXaN%j?qAb>tW-E9mp=t@jzY1M-&zxAYo@?Q z=qR?PXfP+jdxGM^?m%o?q8KBo$WXq?Jgrn4{(N%W9Hb zo6SH|{Qzm8&Ub|Ftq>WrRSlvW&o9ALXeyKyiT?HU>cDW)l_uuxn%_5Z?yka$=Zq84%T&X8>go`LLOicQMC{wF77=6Ov@o zF4139ctq@C;EHTa1h^r!Prj6S@*{mlp` zH(enOzoRDHwzp@QFTe@FCScKpKUa99i2YKk2ZM!?11dm)0!543?oA38ov@?*-w`A> zu-};wB$I&+6D@!d_>rhC!s$n#5rvaV9pG6YOL7J5NQrtLtO^q2NKV_?{&}fj=JF$xjK_si$9w}F>Gy65^QaoQYh4bpk|Sx;nQ?+d>cXZ)kmx1h>-k5>rdMM zT7?~Lt_iZu$udDq4{Y86r9Bj!Vx=fI+Ci)VLct+M3Sr8&zBbWjwY&F zWkZ<;q2LR5@vNhW<0IqFwy6riogM0)jH&H8e)O0AI#CW?)FDu&=XT(lN>Ima%d~T3 zu0JAGpn5`TY=L4S5Mv1J9w0(W6HuMYHlm)zdj#3uT||xP_$-3R{qL8Cn`)D@?Nym3 z$JS7qWcCbuhZA35<>2h*P6SRa6C>w9i4Ih&g2dP1hBY0xN`-@S(!p%uVQI;&XN)GO zW3pLDen4p<%vCtKxs>A@z&0Utx2PVb%V2#B+#O$7Ta_oi75{WfM>i(PRRgE7Y@2H% zGk#2#k-@Cj6f}Y&)SBXWj_gGG-?02hDB5oMb~&Kk=R)x)T|#Y7Q=)k@LrV^w)LZ!4(} z@7ZU;MHBD6zT*3I80x&{LkN1 z6)0ZCYj5lLnpD`7%WquAF6<;V5XWALu!$v5_F-sIe8q=#JanTU z-;3se+*kv6C(yz(OU4crDgdz^=83^;&;P>p`@K%F2% zJ3Da1M7ath%aRWtGn$}exh7K{hE8EIl{f%*QtYClAPCrci;^dhTY45m_=*u7^Jr3@ z31BYW6C2;M?^)5Wp6u9iy&Q6b25 zd^LJzaZ;X%C96B1E&L)U{Q_~Gkd}OSXf(mqa!oedmN6&^n?wVzE67|iQFMwC5EnxJdBHdC<8uq_=5Vp4c~QNo1+A0z<)_#nrLI;2FJOzx*o zUtArUSh4xtyE^yD7nbFuWyrG-dCnS5@U>h!l0~t>?_l5xA!cF{uOJHm5HVJ4QK8UG zK*WvgFhBb2XjL9DRTJc=w?(hKr?Wj@Lu4+wRUJ)`w`2phDPTWbQsO8rEK2L*niska zfKdgFnF?8sqkGYhZk#66#5b?+)T6U*>%2SR+FSDBU^GGDk_|M(g=GgK@d)SzD~aeb zffn3HXdG0(1O{QaHi<`dl8IY1x^#Qz&1|$gdJdI_6HG4SGkVU`TwA081SJ8nQ*cah z^f>5%0)BuK3;rAGdpUaaoqIYf*H%p_eeL!Iax}K1b1M=}n&Jscmu#kZ=ukHZbhFR{ z3Ha!!88#7k5!(j6LNE-dc=YlE$pMNE+u12h@zc65ujh2hlv)zvUj)=eAPmz*pfp9f zP!E&b^g~Jusu~Jd)cRTcxYGW5n^CE&XR_cd@h;nao}$Fu$UK(G$7&|oXdbn zsh{Nq2t|c#o5T4R&sPPB59j5(JAq$+HYa_Sf%y~zbNpzM)ulPh3FHt0Ba&{36A^h# zG8oV-P)t$&a310P^W^Brd{;%;dHUAA717q7t}zDYh#sqs)g>D&!=d7lNzqPf)*51+ z;9Ya5M?~Pq4$+cva%ood&Hkz&@xXK}>Uvqs(7;fBWHdqRa&@LDqK>VnX@*JhV+-5P z15WF3w-+g5<$9Fol8L59A75ORB=&m#YE_re(2r=jOIm#9XoA;eTPE#>ghtX%iDRIQ zvyBW!#`cLu5xdp(kV@?($B1;bDoQ*km#^u%0a0#fIZIkRGMeCYnVF9v4Ky&oGb2+8 zj|zimTf~)1=rP!}u ztW)HkWD22pa{3Z6C5Q`fKg8=PN<4=ek=(1#sFUZR^<82|-_iTQdTJLf%MOxJh{>)* zry#h@(SinQQ4*G#SU$iA96O=sM=RW_AhF`NZDUs%L58~_T}v{%WHP>ey%ZWu2HJy| zAxjjjr;dOCTcKi61{!EjwBVAeAn{^(@oEBXY=XT>?dVQS-Z{#cvr+a=V<8X_es6vqgp7z`&HGb2L4& z+0ht8_CI$5xRGelT~$%y*u{fCT`)57&D*>5DB9k2s#I_(Nx?>XEjsAFqY1K?@l5%s zf$N3}W*a+)^l2awpnt*46csrz9XvKJ*%r}r_f#c|2T9q{^&bq<5nbohGrklv4G}I+ zD#7YS8B{zc3|?W(ZTJv~f*CAg0Zoo}Jx~=SM%wB-yB-mOh^r_``H~4CsL5(b#Y2LF zDxf0#YV0ABUGUCwuE5yfhhWpc`AAiectkp$jIW|2I=wo|mu%#3B%NBWCtRKi<`chT zISHsMS=B0f0^mw=wf^vQogn(Ictql(CBgHOjn5Io!;6w-jpzUia5UgnWYY*|8u%S6#05d6QOXAkcSsPe z%y(DRm73ChMPb3k6N`Jhe_A>I6HG7LG9LeqOy)pbpizY2xT1lKkeW(x0li!_Bwy&^7TKv}0B-u+Q#DQsXuv%P%ngB|I4j~TalPL^N+bI!c0kf?} za~Ic%a`vijfjD@$<6rB@UarYx@!RB&Q`B1pQ$!6fpbu#Oq@D==flyNk3Ig(pPE;#` zMC{~$k_tb{Nuox`PSk{@qY1W`YYxk@V8A_y;+8hvI}uA);2yxWM+!00; z9$7agA79t~CNU=c7uT`9jAv4`L()tXKxUX`@Q47IL8}a~8*vf=Od*^>VndWaqbf*z zDIUGP`#}VGuJ>Fi$@VgyiN%-lOn4iBq}aAdXduQ9az|)Ss!ZTZ;CF}!KJQcoi5IN8 zvHJ&7;YKPRFhkpzp$kTnd@q@TJ7gij)WM}FO5Soaaz{E8aL4$Ax=}JcDB5vpWXp;3M6BYyGj!rn?lB6$smeC=S6p~OUVsOOv$#DcUiT?vE2>h)&$Rfv8ql53N z2okN`-c7V?R~3`D zx-t3p9o;8Xee(&zmu$XyGE68KPNJ}7iz%UYJaOBSQ8Woks=iNA=#m{h{6JNZSoL4I zv->e7XVT}JWPHiw^9AHfra$ltL)bv1k|7hLQ}j7@OzLRkW;LQ`AE`wBA^t(BlQrX#A;lE@FklX2bh2|e5_Z4 zgB}F|n6D)e`zC5P){&0>goQY;M-YKZdDEhvk4uGHa`{_0+^)|r`JgwNpnchr$~~J|qqh)&X=UJJI9H9yvDl93Q=EP0zQPpws54#BLH~FV|**xCQuCTy`wM z5n+r8f+8$dlm-fI+)L3{*Y1%-AVHef^+>>Dp6dLgG<;0Ly^`tPDN&7q;F*{e zqUhMC+|Sg1Lxr;`H!I+ga9NF?Q76bZ*Y_O8ki_>+g6m~lrhA8cU>pWO(_Ls)IP7tl zI=J9OlAne*Sy3S9j1G1yf<$XK_HgffmAXNc@ZZE_HOKTxAHE~y)nn>Y7d%9vc$F_<4taK2ou|GAW|4OT>~8b#63zd&;aIQY{0|^jtnh;Tau%PA4y6R z^*`AovfVH0zF8VhaJ^*96fjF+=-3FtU?2#F4`(eAVN!S%q49?Z8ZCXMDoAXRg}Zu0 zroi1@ejV3KHhezbCh*;0Iz$~t4t<t zCTdb{7)=npY|B)L0j~jpRTMaG8{B~k=q;8G&@!3eG-*-5muwhO z+YA8LfJFjVjD|0=e#kr}920_S#z%`1sYUH--Ef?^rWcIpL%IAzocUkk%r{08G%sV> z5Oz=@=p=oTk%r7wvI-C1_rWZ0vmrLE-}?N%N8^Y)IA|#d>jF zn0U9?I)dKI5S)r0ngL)teCc-d;>C4>7@K>=fpT{Td@~7_m+=#_94A1}-I54%aE4WV zO+bOja5p$)i8f;?M^BB`2{LkBynkZfPJ-kmn}!dVnfNxQPDmmyM=V}i7!h2s-w=AK z1{a}fM~~l_5M)KP=(gTpG9rDw@2g{Z$yP-Lj#$mp@m<)asJl-12VexqZ->nt66XLV zt4GW3suSe=?Y*~&sp(uR4JWByW>jX=pjW^k0GxyU4QL~4gy1$hq;LcJ9>feNmxdZW za!+p(bUC=A_xH$g?wsA2JPE3ot25~Xm=pMsOz1?wdg53@VZ)`*u=s?!xpFXAt>}ga z6C-kP^vKR$eG14ZLHLplWCSu8`%@%62?mW)hyrIjsB)iEE9+uc|pRWo6RAgnedUx*+ zrGlQ5bZ(#(xJHi~P0+t&BNwr`^a77Ss^F=`PDQu1MCLNU8glSW)8X)mz9RM2bd?oR zb5EbJmCx;5BMm3mU&b>rNJ0J?ke$rA0;4xdko+erjQ? z(i6Nd*^XPo5?(H0uLI2Bhalg?3K7~q#I33p;zq!sQYXlMYx;hLAbqWmON$qbCg@(S z$%M;=2NgX4y~!|yDF|&MCksa}Y%c+3GRs(XqD@EEiE{V4zO%&kX+B$8JUklIlsQ=+ESz3J5Xp-h7la*|c z&t8Hp7djI`4Z)rTya5PC4&f9uBTl3|bz5Sen5X_X14myBtZ(2Icy=A z@X>HQV6=Y*Qhh5!yoG z=i$63x-7CQi2@;u?~$(-{qDh}JQMQw`u?+`@F$2~vUw0lkP9_eP_mJOfeFMiaX4ZD z|GGfY+&}{q7rppMRgPF^IrhoE`^9-X2|`Fvy=1e-;2k5ml_d(d0Jk!QDLDE?DAmAj zH%W^VMKk6;Qxzp%D`)TO6Ci{e29HLuOmMx7&j^P|qv1mIC3|dJ%9;olw#u330LLhj z!6H2Rcmy446ZIuE+3N$vThmd9z%wG0VNw=D=tLnpxNXK zg%kTL3KN{dE1-Jm7fH!61R+84k`01@A4fI?LlU(RaHN9~XB$IY&M8Ya9N`!EwW8-o z>IBhN^?x5vdW zGyAUV|E*M5m}^?du{O}O~DFHV7%$0csnx zxhUL9|hh7(LK*~)nl02IW*7UbJv!J<=(!;O0xh8LVmp@()E zHILN^vi7?EuZbNTlRhMwT(X6H1l@)X>cI;IZ4_V!mMk_8v~Pip)`BZvjb6U7P7>?3 z{+-FvJ2 zr2kMq1$pqKQ#XW)D%{g({^S6{wt4#tRe9o}`SI@l6%5UDgBM7{e>V;nF#5U)P>7uj zunQ=nAVmc-LscFi*cMJX7$07i2CAxoIN_|Gft?6)Zs%dr$XJrXC6hA+Tf%_@&jdgu zFd=BLq-dg23oas@`LJqHf#G}ob&_;08u&}1AOzWvV+kggY}t^wiG5qkBap;jX#NxOEQ^L#4G2o?8wRNVmSl3tbO~|J8U#A;Q4@l239T6rm(aN#?_`P+94^_&ZEQR$%o1Fz7C^7bYE2fH84Cxt28h&P zJ4HQ5Rwao~mXp^F2shIm{eAh7u>^<9)iWw^X%r_c3T{5JVq-uPX$+|N=ySy1b;>3| z*QaXHU1uaDSr+|d{lI}pa#i=Kj7fsRWjs@~5>Ez^1!C+_qu}=9mc|K(@}%I=$9s$8 zl&S|$J5@>IoxI=10panwV}LA*1b54LrYs7QRc%~bfdI#7y8bkpx!WLj!yxFPv#X7t2p zRgn0s-S@hI-=gFXTvSih(wgb|0sTO@6gpTeaISj>#R@s*#q}eSQ85Aoe4}Jpi^;dJ)}>fr2reEb11uspdf}1e zm_)0d9Qct~E`!HN!%2FU8Qm9Y&NlpxU{J`pvEf5yv4973$l(ynn9@jgC^$c(|9rYC zh_nX%ZO*QN7Z7CfY)kO7WINjg7zOMbW1xzXJ0W)vac!$ef};-PiWNli^wZB*C1EEo zkA`;-{G6TKX|qiFYRe>B?J7d2A*p=8QK-wo6$swh5tpI3{tQaL;f-{oZ%czoEv2<* z@UINX-Mz;kNs^T%la^0jw9K)JAx6?Ew-4zQ)L}(6(11Pb9*ZTkq969xNiw)-@b~pW z!m$J^OST{(xeG)FDWW2Z9*EEaUN4_Glqm={-~u6c%#EHKsgq~rszHH7pNw*hB^X(< zMLEc~#AXL7imR5@f>lbq5;h%+EF3bCAlNjN=+{a`l!$d3M>)DLV}25BEZHD$FetlV z>|iz41Rh?&G3!$J8Q(s%H4uiu@1{hpN7jwUQR@c3QeCo1GL{*+jgIk1K@J3wsi*L! z5N+|2T>O+EB;W?eiR$8OB#$z{6)RF0(XIiyVZ@h;o<{)@3e32A^v%-;7j!jU;#@Hi zYXzzZ>nH)Q?JLAaUU=39PFGe>(8iJ=DRoL(#!?t9b(VM;M zu&|S_Cb_czWTqy;!7_eImIIawE;5iRsz~Z0k;KEJ0^u~=cNnZ9OHF_{qbDz}$`Fsq zzMBVsD-PH=r+q9zzmn}f#`MC!hC7AoysQ$LyT`^pEE)>ldr+Ft2$!N?jn;{Bz;%O9 zBg*~K8fmdTmLy#{FUzP{ygUahDU~8)uY@}X_pnGR2joo9(1VU4h#tAIPL%H31}DoM zyoLEmkgSZ)s1&5}yjdJ0B6*Q4>6oFB;G84Mh(Ko|%D@r8#9F^|u;Q(br{|FEgK^IE zfLl+mvLwrhP<)Sb4D7q+#ZFN&2`%7UB!`u7$FXV^&5M42Pu+;D-ZA(?Cg&m{NRm`# zMnTdH2yg;;oJGDK>JU={{tucC4{A?*w&FB_qvwSO>IP)>&RCA;I$zJs?3cLyG668) zt%IAAfI8SZ)(9|sGy;?+DoYxM@8kUgX8qeo>PBSwlY>t(BIh<8CoPu85_~G-XJ(ol z-w79i3l9zzHc8?$@Keh{Df;8{b;F_U9{hf7_a<0W#xw0+g)3hT1izpzD8EF( zZPz9LiI^8z0uBkDu$n$1%}FXI-92+CHhNete;7)vMqKjnv60$J$yRL?<=Fyt0sUbp zay-TH%4q`1jFUHx*oImVeS07&&qV9~bN*VmE|peDtdtbjM;u~kfbvlN|e9i|7kLB`@Mg8XvK9XO&cr3xGGL{Jf zLBfIvpL3{aY#`Epur+K{6@yD2rC-!E_M`KUN{F)!JV^UWY4J&82_ltiJF`pZnsXL?{1u9ONC$N^1no$Ct1C7 z#uB_LWBX+pAgYg3xmN^T0!a0UXp4m_3^7PENOv@SZh`3XOOx_Ue4#vNUE%6n{%XW| z2jW~YmS9)ek_iK$;$R|*j+O2~_*ybZmA3F4U=xuO>=E=3!PCJl32|0WyzcrrpRPmU zjU_l%vZ3&BK9c=|gGnR^u#k}i<&IFM@AkEF$~V6{PiK3lPX81Om;U%i19Y6m{3Uw@#k7@0fGf$j~LZ zoFqOjAD_>8d@hRQr{?@*^+A71{vE$x%tt)?RzC0Kvzbph2O0B()i<=Hcp3lqaz1b4 z^A0{+`CP+i8=v>_xs}gteD36P;ly~~km-D!Uq8v`Q+)oJ&vrg{^SPJL4n7a?`4*p@ z^itrzKjrf*pC|bIoX>ypd5q7G`G~(4-;2NhMdkU2CWiZm_L(nU=N9t&Rd-~3R`P*-?@YL z-FogV(!Aw^l}9?JKQiaO_3jfq(qDO`z5bD#PxYO7%X=$dw$*<*ae5zJ{LpXD&s*MI zd8D=ek^BA-zMj@QE8n)%e>*ATW#@0_k@m_X&GnDmY`*!GdCOZXUl!`Woc#B1xZq{} zeRJiJrUs8hn~Ou==b5I;Gx;gc1gnQG-{(N7wLKolDPQhdJv49Gx?IoYJtueV=z4Fb z)bYdimF@Y~b6bt(FE!s(xU2BC{H6I5a&OD6yO|<1^Ohf2>1EE8hQx$Kx5z^eBgp}k zX9lM{BStj3K^-bEq)RH#4AegpeWEm!r-_lu*Zotz-k}fuBVX@d`MR(E>v+hbi_M`s zd1k-LGrd!uQSuAsM2FZzpX8YZm1laUJQKf7$E${J;+grCXSy3b^OZw~-orEdRG#T- z^vo4&hTfwr?PLG+tm-LrE$)1&qow`v)+bu;Yk9ckV})IXuQpxV^rk!yd~W&BMN)WP zbIYqo&uo%56!PzC%AeXKUD(uOkMZA4QXVeTu@jr}7fFS&{hFkUnhIOiO8HkcNtZSi zM$c}NF3;x&oAM8SvQQWuX=-}rs=M-qFjJrvozwF*R{nwc?{@#F z`yUGJ-G_GV>bkw@i(RL8<)x>j8>J&VKie5}&h7X{$J_ZQzwbD>{qgqqv>)E~eA`|5 z%}op2Ufot`{e0_rt@B&H-SW<+3tEcJKWVD*lhKOuUc(hqN9y)4$7T)0NbS>_E6?=0 zX^@7wUDMi|xw*!kx^m4`rcmJ zztCJc<>E_`r=NQ$wRklcKzU{yfFz}EPfh_s$-UC3xpKq3mIhsudl_YBTe`(EvyZ7< zbu!t~!c*A0QktVc#YyJ5sNo{8M(_v#5{!1xeOTc9!L}=mZ!22SuV-(q%*jGcBP?bB zijGUJ8YEG|Mnsb(lK>WEjCd@_qtXkPq6+=lds-{ccI>HkND&27U=&fa$!GxgtOA+0 zG0%XBleAm%PT14j?5$0yA6ITrK<@HJ3#H*YNyCMi`^4UwE7zUzY4~+=JJP?cVF0)V z#bJmt9pHW#I}hJHRf;G;$#;%Xwo2)nBQU2@_O7S^i>EnaBaSFMM{=@2I8mI$RgT%) z%htbZO!r;hJKuNigXyJHummA-ECQJXS|m{6R1sz=YicNPMNlEw)337`@1Hc(T)BTu z{kAg|5GW@r2;|xpG&{K6rcXAG~9vbptH1ga%R)Nvi=kN7GeoHX1loOKqCH zx$133@pe@JX@R;4*H=vB2w24D@2E*=lmFwj#P7=cr%-)Tl)1`nNiUsA^hXv6FD12% zD}g{AM<)b=6yorq!GTA^@(bywA_b#qW~W@o6*-Ie}rDG=n#aOzNzR(OjA zKZphe9$ss(cx9>(LUEwYAYKFMX6MB>b013GTsciGwcJ?hw@p)d_o9S!<-IH2X*gPQ z+tW)&l_C-oDaxZmR))JsXZ{770kAsUe!yWU=$u}M2SGn8?Qrf>dzG%7G%;l2$N0)A zK&z8&RI)|Hlv*ROs-X@*o^<39oU9avcbbhWg?3^c^ z(DAK~cXSlnpKQM&_viK_TQ{|iv^?6frA2T4IadGS>8<`W@f+!Y6azgu&d>&n$ZmPB zp^t}A^zEfUGD=;|v#!%})u{t- zvTRcm1JpUV9mrQnrKctus9IuSib1tK&!`zovspKq2Pz8{ooECam%vwW%cEdB4(Bo& z8KrBqSBaM`r!rfK>CT!3l>5`HFI#b6w5^pPV)G2h)=|l0dNj%jgKncnOh8On1Bpp72U$=3vS~QZa^I^p zSDwY!nFjnJ?T`QE2dNhFG>X0=3n@&L?H+bH!A`zCV0DNHI*tWi2&dHs0LV z(o1LQq(0&UgCv{%8UQ=B4O}@2N0uNGCylsl&HWpiqbiCe>^4;xN&@{xK_pF-d!WXe z3Wu`g9k#cZtvj41NukSt8~4HroqO^0KvJ*Xwg z<%aGhbZA}tX^@>}Z&=!rJM+wiS|e9?d1{#7r<#vUW{Ggpiu7BwOwwxL2jm__>!jYW zW=wXKTRI*0Xm40Db6-=tq5!s0R(w%O&H^S269{=lIOu^wG7q56nO42hR|AZ_yH7-Euqo+qohs1(aNEGP4d->p?7_)uVzPScfR~hWY9HqE?aO;EX7$@fb3yq?y6=1Z@xA zK!ODDepLFJU)NWqt9i+;W{JOu+lAuKB0C3*qGU5^4wbwGyS%7*Nx;{uo`&AU6n)$%C&hE?a|6;EYS5=-fO5)Uvtv;1>3I+ zdppym3Kk0!4onMzMShc66o&9HRZreIlU?D7lht8aiPwg;VeoJ0%O+_K@^nIoAcU9i2tI=z9PVZ{QNQ|5!gjVURQG(Kjj_G}g6*kpW z0e=7hEd_L^(pN{L_i9hqm*@&+H&IbQcr$PmmaH-s5)3Y+b;F6_a@#-{C0F`tZ`4;? z`o74UoHYPmx&L!*jrwX$-&Y#nW#zT%_*Tl*leZ;(U*rnUitefO)zav-niE~k76|}! zfF47f1FQq{MV%c?FN-_cB_S3vY?qs+(pPh%z6y!Hru*TGayf~xPT+!Of(2FjDm3b= zX_mf{T~*;$L?Xq>+YoP6>8q(xU-|TX3Hz6ugMriGKc@Z}7YZ;ZG6E_1UM8P5aGa`g zm~YgVl)f)`nMAc4p;QYl#XzLWQluNT)C1X$OM+_UmDiHuu7oEfp#XG9C*%&u{W;h6 z(YCWi2)^|#t^2inuVu7FZGN`-ea*)fUh2K40?fanXLeURUUB`cl)zrv38|=g0CT>F3e}9f?0T&%Nr9 za_hpBsP8n%i_)^x4yj7!Y^PtdsK{B7gb1uMB_%^&WIejxf$5tgAQD1eL+xK6Z7`;x#i;O|iyF5Ev1I_9 z-esv;i|-%{sxj(WqDjiol*0%BkD-oZA0<`;vPdCpH+);_nN3q|Hur@}bLH6)kZBlT zq=8g#D{ev3C4riWA_hRvie(Ux;H$x&6*Yw#xfnZmhJtscf7=uZ>C(uI(oOS$S#k*{ z7{G-PhZ~2!$egAk6#g75v{i0sO7$I*TDn>JcgtKPxj)P(-c$wMr09bv>%qEph1Bio*Z{L?{Qaq4cUrJ})>t>uu)X9RWe#@N#eW*by312* zy#IZJ-LuBJlR5wg(%(DSJ&R{+zjfubIa_H6ex&q~y{f~byf=@>KIzx7s%dy#!5qoL z>JqG3P5?<1jAo8**>F_p>KToeapP!w8urxOUr%Q2+8a66r|#OlXeQ-7s!8g1CCY14 zn1tO|z%O>7J(6Medii=4R8u({R;EJ!#*Tpc%S6jI{713JzFPNB^-%T4LQO1gb?P zLR_@zn}gNEgLsk3K-?IUe5L#q^r|jUmDEF5&*zT* zN!WH8p?mJn>Dxx;2MhP5#-e~+gqRnUkI+zYYGGSAPMNA;QbOc}2 zxK2H+tE@XxqG-k6pCIP3fgeQBXDaXg9WZf6mJF{#Q@? zvE9#f&F_4nj>})1KQZ?vp82wxYw0bYc9C8f-Q2Wv>riWc zz6iufQ%FCe@%+e3(!NW#4ptwSLirKBzcBKwc%Z-fz!bud==zqC);tgNRv(x``Vsw0 z+hiBr)d!|fenemF82PK{qOPhzHuM4@}|whz{-<`A_jcYxRLCydTlV zbN7EjI&kUM=IR4eSU=u);iiq7F52{#x39X$4?q9hP@!*WU+$J%kKNPT<#d_2M{aMs zzwP}kKX3U`;g5yy=6{oaAorErE#xI!Ja74N6^4YRjTjO>J}~zcSQL(_JhPIcRe5G{qi4Q9ckWktW^Lt}kw(w#m^b$`Jac&Enc@0pBG@4W>BC`_ulJww^)(CU zUd7k1s(ihu{_9D0isGWVpXM36^2~mXo;l*8p@*b30y?sw^$WS)ds@GM_i3o-p`N$( z9Mt_-_dibhp4wXRJ~d6IelWc6!29$B-lw%~zsHYtRm_dOubu zoXUIUaFWs^f&S0Q^nXsKbl%ASb2250JpF&;WJ<{$L&=`69Abhbx%1dJF!(AZoA=h3&yFjb3M z?|5SXE>r%iUc9|ZH)|a+C-?i=q!Uh#NzL4(Vggwcg031+8WCf3-w@1%A3&{VQ(}qQ zX>U$1o#lt5=L_>!7(PB~oFzyMA>(!g;W9}>YVO{3g>u@Zl7gR6S~lC;)?T&>7Ao%r zEi^y<+d`uZJV)fU3CJz3eo>6qqHq}a58OC_*0kKtM$$EQGKsn~u)QmAL_g%WmUCk80Ohar`d9R}y^>t)}z8YXyYyn~gJTj{rveMU)jrv-f zvM;&{sQYThCD-r^GlYJbQ;Sk~lqMkaNC^y4GQHB*+D3gHk-o3J9ck4QtqNj2qETOm zr|*l*B(S46M=dy`IXaL8P!Wmu3|Zu9+lTRysoP%h;>c+z94SJvChq*nIe$} zGGx3dz;r1g&*CU$cN%UB?hm za9+t1+slI0i|k4Qz1(QjLGT>ARE47*+NiHr&DK{9#9GTX=lm1LVWV{O%6q-4QD29o z?`!W7;qqiixYE}ljry|F_eH%MfEgrJfv4wOqEHe#22ma|R)jtviqut?Mui`|4#aA2 zu+sMh`UZe3GldF_{-Fmb(xRZ2?~!0)fH9?>a^6(*$xWec^(b z-j^}sYyIyWsFl8qMt$is_BG9YNhW)F)>QUNUk%Eu*c(de`=ZE9BSJOO`D%=6Rb_(! z==3qv()Xq8mA7e%k&{qnMi^^-Q zOm70VoN3E?DBte421NS>tDjjO1D3B1aC9o(p|gA#o;h+o%%Sg9vIbKYkq?X%L? zL5=!aK1*K-5UXtwQME9c%cxA;UWALuSS9%q{Zpf$s^UY^U+HUkqrMJI-`9-bL4h3v z#2SMKD}5c&pqQpyVb+D6Hy>H>H`k1tWrRZks=)&3`G zpT74$H@9W+_FVU~-T&J44_)VWe5B*;ZI8Bn0urcC6mBhCn*ZngXzoY3?eAMYbj`fw zXIDZHD;tF%tfS_Bf-uFIm1kBodZzW5xnJj*S67}nc*-*|vHFY0&h3C${q)K+2Tge< zrrTb2!rcF$ol`5%EN}G8;*;injAu@%Jab^9XMT6`+%NIWNtI`o)jtz`dEMN#e0@UY z>jS2Ijkv4xA3JUCX*bI@Ss{L10S9ecO+-1Ye?Boq>fLXeyrxS6J9G0AOM|NOy z0G8C-Js|SRtBA_z`>LSg0wRimZGs9)F!2&33IfYYPJ#j|BK*Fmx~iG(xwBLA$8SCi zJv(*gp1M`HZryv%bDl?Z4?fTLm*WthA7Kuk;3*yXSo=MC`+`E+cDc6NWjP_V`xEW= zic!)wTB9;r@KpQ5VsyG~v|44<`*iztVsxr)v`S_4<}>Y&iP6cn(aIVl>#n`}Y!poRNzJxsQLTAq)0>SbchraL19kQOt-heoXAYQkM#7N8HD9IF-)8=a zo0_#xG^{#@)O#}@#KyS`11g*2KbR?U1_p@5f^%;7~SGa$z>7gYd# z&1|y}u)K)jydGy}y1?~LBLbGs$M_)^$ZOmo!thU$B z8Oi>pyXQc|NN4AmMU6&g8xh0E%E^XxW43ARROeez+}ES;JliZD?=y>i9`UU#DR#TTpP6IgYNr+U4nSulw8nE%TKl&2dzIrurS$ag+L~pmauhm_s4=p}$CL-!{va(m5*>%Dj64sv{YQ*C>=AO9 z%4q0_wvWZg5$RZ3V`R;-Up%TUU|28hO|9-?>12y0M9kRp<0{o+WaapakukCKs6g~4 zKYZ^sUh^Mk4KzYDt$zG8vf{Rv20VBjro%i&R%GWZ5tMOv#h@mCJ15lDg za{?5Fi$)g3u)wf+i9p?!iC6YZ%T&J3RQOVCrL9=H8xX#I4Hd$UiJ_cJUu>l_B-3C* zBz7K=I`v2doJ@*1bUzXOU_3cUAh5DGqg;CI_BQL@mm5+uCzcL4b*!(9dtc*WT}MM* z?Ms-ca^=L*)06O33+PthxouyhXvcOdHQLn#v2-`c1KSr>Ok;f|NBf!}mQElRTq|Y% z3DV0vUP8qKjWsZWP!a-r0%ny`VJPy)`Z{AGU!TU(si+l9Jn0AsaoBT0!$XBK7}0b@ z>a>tAh(?^a{TV7>r@QwB>qAIj0Rj;q@{txA*03Z@Q}KalD$oB1Le94Rbd|5u-1~Av z8)e_F)5@-DV(F(&!j}scDBIVms&1WPxpEgvk7vVV_u(f*UcNS%E-i`!r*AzfM;9I%!;AV`AyVF!Kn5l8=bM_r-KbtQ5s) zN;P84l1QkgsAaHyouu-0qI+LLl?e3%jFA~hS3x<^A5R8Td2lcYGK6z6#-o$&J5lB9 z1oyt&P^;P9%AcU}b-a6DZYZ5?U&kw4<%f=Q?<)b15Zq(bYz#tSFgO6;V}hGXSp)L) z)C;7831`+gPT_0l*s-q0jio1ZD1IU(&p@Xfe-J`C(gP$=d4+~3>`fzk>8uSE;?s$t zW5)U#HJOt-rDpY|MEmiqC)V;4< zE)-*3GsxRYO5I^8W9AjPq<9W2RXU!`v5Bzzb*ReMA?|&-DQdD^9b&nviKTD3WyU4C zXSqi&UH0P{8=LL;Df1hn$D%@UQ(n{TwfgUv;@&0Z=S&)cm}Vsn9QvuBNs7121bx78rlztOhY zquQo)+U(XtE8)s_dWcz0oszFNHfcfaeNn#5)YY}j(6=@Jrc&mxr}n6_kP{xy5sdP`_J-s_#W_G>#SL!}5S3so zp*M_aPxXS8mmYME#6;l0MfOi<^+hET4aIA~7 zvnwH!8Hf^tNiH09Xyi-biA{zQtU`k+wqle+g1gZkanW8GaGlIVh?2k@lt~EC5avB_ zw3Jw~%4Cfh&A}lU)IOHx-05N@(^2SAnKfCclFlV*&C3V`HtQ{_ms2?~sA=sP*Qnu9 zus76r#=*Vq<-WJ%ltG6=cba7o4~hyKq*wGinjWBx6w*m36aS%ZPNj>HWGwR%=TQ&} z4p3fnl>K9Wj!ZddJrq&GLG82Z_7p6~JQW13D0SzdqRJJ36E}l963d3;1b?7|&146( z-%O@GR)j2UD6rA#XHe=c=?r&~oV?X}B{)|d%6Y}D_iTDjwnwyBnehi^3_kRqdY>)fqT!aXh zZTC)8RpJwIWP*nWT4r?aYzhdT`~>A9HOSBtX5(q?((Sf4x)PrmB%FZiQn*8j^s($= z)kCRk8rt+^ki{edWqIxYCevOpCb4TEvYcLm)hOU_3h7bU10)73Q7Wzd&2@8$DCGwE z2rIr2mDcQeXp|=zdZb)D$n*~V^k7(buS!TgP9_lq77q|ZFegFcwS%aYKvgkFoIMgm zky1BmPEVLHk z(idu&EyNj2G(mz>NaBfu0d1S>vFC;;wr#?*tLQQ%08+!=IDk+e7h{kY63Yviu@ODU zg$KgS52>W~Q}<`*B9fS-wY)q1-wN<%JGh$#?oaO1cwk-;5G=<7PoMDGIps|WxTw)` zqiO|kEAIXS_tw=seMKb#sbgy#0ttz8o?+&V6Ue zRI#0oLed~K*>KJCwm{Dj%64%1EcW2g)*g4=Ts{H$Jpr6JTW3m}*xmAgp=S#eS@!Hn zI1l47?Vs*@>w>p-hf!xYLGV4n-OB=46Mz@%G8Q|mZ^Kba&j>HTj+{i5THEUW>}t3; zQw0CUaB&9QH|L_VWZ&(#Hkt{lvLoNlhJ5Mvo2%a6PZ%&h#XS>L9QN=aE6skEIZv&4~@B(Rzy}v?s@2yz!EcaTka@_q2;3?4f*Ta~84c z>ZEK8MmdNCgZU^te>`T9P+I%Z*wY*5)#!!-xXD#(3uSXQUX|JCBC`V=jNzd-X-%Ir zJ=XAX!=r&m12_0zLbmcB-Um#t=V|?M{rlPz+D+FS@vwt|nXCDmUpcTCikXFa-RJ<# z(qabF>$7_r#{vxrjr=^^*?W{nUmh`wpjXxnn8j!Vq#HV57~LG!L7MDk7Iy(EvpiuI z{9dzoFyNE{vv9O-c=fsk1&0|TT^(>3@os2)nfS;)c03|gbJ&VmOgpE|6lBQWwo$Ui z$O_l&bza;35^34XHabIP)PH{4uf=E&+vs$aQR{_equp$y(^N+K#ciKRO9|WPRF%=l zrnbk$C}ta-Qf*W!6x*g5cHrtqZL`g5j(>PlY2Gbu&$k>tMcY+tZfe@r@LIz!1NR2L z?*E#9h4(z~QqQ+M>x{FFC0Z7PF<%P`5!=_+x9ozdODW0&GK2e(BV?=lD3yyW)Ex4 zCpIr`T-@lX4+Ng8Yw~aNMSS&UtLIJqCH)TVhuZMSg4Jy&uM(#^-Tb;}vd zu#X>7eSGBGtLgCj$Cd~3G~4Ll8Y62U_np9L($ZAh=pdERZYQ<!qXSh&EvK|u zfYc`2=m3?G|FrV;ZLp2@R~h|gYpXTd1GdqADx9%j1P%_& z@h|in-f8BW#>>WC+DqCmM;2^tyBgY?h{I~rQSH6--qyBPgcm357|g0Mcy}Am83rN8 zpuNUm)=O<4NejC;25mJ4JHOIq(f{;22CdZwBL}_KwuuIIa*ofeK3;nMwYFJu3iPc^ zQ8c5*pykcB=j9aUI|kFM4X!ueZZk&Atuwm%0pUKsiT^##ae?Mo&@q!HDw(2^qy zdfO8WTL-d!c6A@i6HL>*_8VnvJDByeR7TJ3*!~MKI?^7ILn@&h7stEjhULT(wc@(#7o;$Z-d_o~=2~RQfZVpW zt=X_2i@$2kp=Mv>9*sNHe^UQgU|QX)&|SalZ8hKUOf_E8JG8&bwfxPjg+(EI+FRZP z!!>PMv&rJWxBpJZ%HvoSRaU+4xBp43bjPZovYP!5%c_uftTt6!m8Sly{aLvRPL?8H zeY|{oXa2kWZZUGw6c<+;mEQQMeV!b5QWO_eA1^l&|G53PV&uT1FH{*#+t&VIC7A*C zdI^OWuw6aW{M{z4@v-`s>TeI^0=xRZ;7@sP@LuS7(DNPrKK<*rF6dk%*WzfWm)}>l zz1v?p{w!8UI#xHTtd_jgakE$*?pWQRvYPoy$L(UZ)Umq0#wuiV%qV^MYR8RYb%!QgR{J?t->tSPHGI2cAAPP& z;m!IQt@#_xt0`tVt^Vx#z3L)$0q;M(4|sm%`Kta+eNAcZruGiK*=W|y!Zg;4Lo6SU z8|nC7->kV{osTjLhcugog+-aXtzrB>)t*MC&hMUH+Gn`^134d=!7Zz=*H~E##nh$k z^#)cljayb(HF_ZoT?3LEsr%%YkH;eq{hYdch-Ng?zXxsd^h?o zGJk7+!?@nKK>HDkkwshEPNczgPJ?$;H(0*YFMOx-58`%>V|BaA>hbG3-xI4Kn$HK@&{~Gu<7#h)Igk%To39)VdPaqqi z%*fG;9*6<7$)FnMAg+H_<126JtQ96v0q!aYZ4D3Yr!~&XzN#v~ zCy4FE-0(=1o&7}VY@!nI(XllooCy(AcS`_U(&JT}*K zOupGDbMYXwHYApiI8T8iW_VJOo^_Co-&Z=Ds1|%w%sCBtH~0_`o1hp``9S}Nlp+W{ z@ZHFurexA`(7ZP)olT+`d;lOtG7OtGaAjeyh9omiF*wQ+Jkcn$#Paae+4t-QrL##? zgJ&Yl8CjrzA@U@Qe37ut$cUt79(4jv30mk5!z`0-*v+Lv9XrLmo3m3EcZ2pK@H=2)TDekL}BNozmGP#D>H9 zSQdU8W{h-P@ZM48{6r>6nL{=TCJK3|!KCBtyGm!1P#cDwI~^7bOpqj%fJ|5u_hQLP-XiPQ-vYcW-h{nrb*Hk;ReT`Neo(R~R%_ifKxTP~JY*IKN zT?7Q2cNzNKWR0R3ht%v_N@o*D4p(7Ia!5O&u+FprdP&gHqWVhOm85Mhl?{UY%Q}eV zZz`QlLUTBmWXVlo15_jN1QSSv3!30Pz$}82P%aS;@pC zPfWvr=uk$dcgcK~Jq_y3lp5L2{#WU25~{-k1MHAQrwNr|=6r-bsOAL0l11qyn?y`8 znsUa+{|qqyqT)AN?Tu-860*Y~bnAitFIqddI_8m8j?xCJa)&vuIgC6 zP$fLP{e);b%E~kq2JjJM28P3v*EE6(yl;4;QW=Qkwln8{P35dGR(P1g(sA;KZZtyd zo{cD-xl$gsv6VbmX#@g7{cxOd&rmgEx@Td)qYl|<1e8I{8TnT$oy~ARGxF~LRH%TF zuU0B3ckQbRXPa+npJFG@9-8Sd`R;E2xMjzw+F!Mn$D7Y@KD_D3rX7*{dn>SKV4D97 zf5dy7cPCGuK?sSs>7w5D`v@I6tO*y?gaxdyY2d~7XC%Jp&?cN;V`PP!8eb+vgwYy1 z2EDPy$ZBbiSKFVHmK@@Q^HfIryx#s3F>;s_&Q%$8z1eOh-W&pjb83vNbNc&RWx@}K zL19C+QR!=sv`-OF4tv7-n&ZFtWBUp@p0)e5uI9L~D@?h1%B+jr1x+%%T0^`cVqr_T zMCgs8s28C%4e~S;XQAmR7Jo%?mxl_|#vM|MpotAt*e+6`Jfyy?bhg8|&c?(sGQoU? zM?x@%XcG$dl^V4K|6_3$7o8HM zoGKjz($$ZoCtCyHh_Z}`_eY|#KcUVw9CzOAm#c#&b?%*IbFl8`(AuStLFU6CJ!7Us zsV5Gf#sFe@VJEckIc3N4e)rCT&_1AF6=w34*tJ!=D_c6)%0g%~MFuJMu&?4}N@u>Y zzQzrjxT*>$d;6@?nRl!+#rmimG;xIlFFU(b>1-ku=usmdC8WM(%B?* zpo0kFQWXjveNG-}sSZg*h2|F4S&3?7sj#)jN73Y1APu8Z(hFQW zNd+ta>EE^_ayS`oM+2n--}lp?V0 z>mrq}3*Gy2Bf8*R!V6WtE^zOQL>KQy>VY84l~om~J@m;Tx((+NJX=}9hR)M`fx=aO z=zRCSAj=Js3?f86n8g=+NT}@xc)(JbNH&(0x>{$4dcMNf(8jT@#+`qqhAKoKXk6%c zWR@b#idX99qcIky$!y5Jh8tDB&Kv7XG5sP~Z5!L3c@Gr{+8 zP=rvEc~I~`=vmG2gj1;#VY%wuuX9zt&T;Pxf&{9=p!v*Yh)T+%%e>2+55%4vR5%*R z!Ukmb>l~G@4eou#U5J(2t~QKzRjI~b@7@=p=n0>}2ve64oxOXNKn)LgiTunY~v*sGxSDa2aY-0Tz?fJ}ve zVzt88=H6MoTUNK5Q%dF$vp#Csyn2>JKAS&TYxXof+3;Ay4fU;oH|iQ8@SNs-#q+G^ z$NEirUb{>?d6Q|;B5KVKnn4z+Nh1eF2mZmKv@tJWEHsRvblSIL@odNgm+Hnc>a{Oi zSe)koExueGGdShU?8@xgq@a| zcdY(fW%cojS%#c_t7CPA%F4Gx$43=_npJK8PS2NnH}x&AZ%I>e|2=QhpS163?=_#( z^k2p-w1CQNXn=SC2J|_u%Rxv6Mq;r+d71Gx=FP~YD_dD$6QqPP6t~AyVO?|I z9%V==(RfCoL1qF17Y3kzP)IS02(!Bk$99< zU^K|9K4TH_u@!;BBSMrxd)GyCb_6&>`UYz5aDPZdXwd}W<_Zi0q)aqQO?R5Ts`jR@ zppChJsuhB~wW+ITfseZ))HO%CKe>v; z2GxC%I8bS9#9dszGMNBlg$zp!_B29QEWAh>fhHjo!z~d}u4pV2*Z!<*j_T5}IapVz z?Cah4wwBLu6rEw-;WNxlqB(+*De^k0uq0gugaR*2$^bEHwptMayy56vWoH$A&9iAC zz$gM*>5#m_DU#-`C(lPZlp%=BiaeOq?s40mR5nv*N$iqw%SeX#hugra8|CIK1#pA- zN@_1wIy+%?eZ~ck(Gl*?4%|Rh@R$tX*y!<9mD8K3THlRg!A{$2El-u|r!{|R5}*@t zy{_hk~r& zLNVIb9;<0?JJt2oQKxZ&PM6fQH-2?}MwLqlYUvk|ZY&AJJUL=kw>^Oh`Nc6&t z5hO8>Kuj>jlcwD<(O4mvVoPAUkyuJh)ZC}75wQd183OGguOFy6MZcWsiW+M8PNJD` zIMhjB^T!(Sxxp)^2(*uWFsfivkl%#ua0v|CSo#f$p!Jo0P{DZqF`H zoKVR*Sw%T{qTA+ZZQ@X1epG7{B$H~H2nqR(AtF55{iPd=V91Y!Fnn#)=}qudxX`2A zfBUVC-psqvsoQ<~&5e3wQ}8ckK=c4)gGO{P$%Y^Whc5Xs7!zO_NwKi^F3rR6W_w424&fMq=JLGitB`A zhU%Fm#E?orF$~6#ecm99n8Z3{yFnHt%Mt;qosjN+`;#F{i5?&n7TGA9DbXU1i-al3 z^caa8UX96cP@nI*yTs^%Lh8nvGtHK4fVdz^d=STkAqb76VP?z4^{E8UzB$poEhm%4 zsAn=A*NSKE?fUFw5W>MKxotSD*zB=HA*TZ)JH-|hl4Qt%Xm^%Fd$;;qKWstMW^Rji zfYy9qb7y0;vA%wG-~<0_{$F^X^Zo?Qir*VO`row!p4}w%usx-HjE)~j93tsN7=EmZ zFtnK+-xsUX9jjYZR&RJa?i8z29jhOytRC`rSn-jQ9jhPKSXls+CjuRf68SjMvAVg& z%8JM|Gf{$XN_JiMOz(W7Q)^B&M;qrf{G;9o zJW&_$KkK{AcZK(8?|jeUo;k*WM&~t0Jho|M=UX~X&gap_NS|*O8j<_(8|HDa4z9ew zI0ov1wMGNKTj4Q>r|U)-35=n0%woR;zAi9!H;m=UHO49m+Rm;wq8>fF1~Cu*H3cD% z73hO>pzpD^uCQyNhiX|0XwNl^d*}vVE3yU6EG#yRRYT|16%QY2IcQEBQXeZfng!uY zxWFvzqx%*X8!3@nV-7db)C|sIDNReQ+{I?`9DY1)T)<{k_4#m!EnmrIV6iy{E*tjrTX$UoL0a$RM^)reAE`V z;-ZPuXMhVC0 zn+l`SKW^%N!!vy)UvJ09Epw-6w`r15+8o9oZ7`$ApH_usyxdAs@F z5R-lf9)jCt-u=?7g~OFn>R(s8ETMt)5d9n0opbtCwLy7s-EMaNQm#U!iu!Jq)wRCP z>&5CKr>(nGR;%ke9}}w!9IIcdtX9-_z9Ci{9jjlctO|{tAB)wwj@8ertx8{Q?mSxz zHaG@%RvVPN*YfSo8}%($T3LtQ&Us5p3vcQEb4$s4cgMe5c9s&?9kesF=FX;fsBNEG zKO^v3;LgAo{m=ThcwhG3<$23%3VR741i-Ko|mFn0^B$Pjzlxb z9L8afAAqPS=cMnRQ>31T3ggQ&j73fWPYb2u#MUE7L$Wz1_?$>WTtzH~g0)BrRF;E0 zepczMEYRQzev*miU4&`N%d$T!osF;1Fb1cg{(lEhho9yw#3}xl6J*jjykxIkp&8`)F zoGAEMcJ_qQnL?*wyj)DeW+aqg@A#C2WoM5oow*chu;3cwhe1J(IdRakv&WRqj&`3Y zcSS5&_VuV5xp|a(XF!J2)F_Aga~6mq1_UJq(=jt+6xp9}l-QyJ%=@FVWBEyFHMrut zF8Ayar89+A!??*#5hF$^hZ1&+{f=Ee1k94#%>a)kffbLX9puo%N@t_h8paQ$mN(nf z3SFxR63i4Uc-cJ!g=U~ZD;?dbT$dW23Q@_@QeaY%0jt07$wg| zAIYIJ0i)GU@*r)kTk!XQ|Jx8EwA9pK)Xic>vb zAys!c)yvL)qja{vduJh1ThRLwfXh%niI_R1Bh=H1QdyYt$xw(T1FkIO-2F;t`?+^E zm;k^jVrYXbNEsht0=qfNLo=xaiFg524my~x`>K68<*xg>cSf+287fBD9rkG^s~n)O zID+l+BBSUKajc5O;l0()>~hzAM){fuIp-=BUcP1bD4l&~lrzONTvhH06G}=*)2V-^ zdWn@W09YV5$UmS0B+Kzo+^InQwbI$%+jllPuZ$=FQemMy^&1xcB?D|Oo?{IegVBK} zjd`q6FaIm0vn7*o7LUXrgkS^1>QK_U%p^%*=FxaQm4uBQTua7zo87H+wwHTn)L+?| zyzM0N%D3z;b-C-F?wt`Sr-~g|FF0RNKM>FKg9_x$nN3hT0;YycbJ>^nOI646g+1Im z1A|3o4(xnXxCR*LRA>>~}i1^^BOkU0tn~{WV8DCLF#3*j%8Q&07mQjy!oq-%d-+ zV0P6xg~jG@7d(*J0&>%YV7-2`kR#Asm~9qzCsbQN={fB+3r8Bpnhk|{28z^$*@TdL z3v)*9`BLAaK0?C$qKSy_Ui>M6=;2omniHcw2^a1F8pd=mzNNDp>O1rk-j;E zrH7>To`A1#ddj1(DC}q!PA0@nGXoxDHO#;l>qZyAQ6k!_h*$5AmURKK>P0%iY{JGf z@X;-&*k=|HcUs41kyFZf>k4NTT6AAap_e%K>4xb!+M{nQ1kGX1;-j2x?C15JUmQta z+t)YUI&HJCMmO3p_Hp{Fe5F_Vx_X*NeDCyhm*!6C+S+ox8SI)u#${ivxw&auV{5}3 zftLceOTxhWvG8**9tXZX)Bdq^q-Z{%5*`N^!V?Tm7Rd{<3`Eu3N>bkC2fS zn0!QKb@2XOTg0k@TYXq%weY|$$+!$xaH|igtbzx3{Yb0`h?YG*SYu@cOzRHq5cU#u#q8 z!uVs;p8n;QDAX}6(|r#%`WkN2ul9F&`uuk`4EciEKfPBOgAKE^8@(?e6m?PkE_L;0 zL*RwLmwkEjq`-c4CwhLazf|`@-3>dE0NHSn+-*iccJUemYHIo2p5$XTjO35#TI3$M z>MEf1ocruvIb@X&Z8v81to!yLmjm1l^LP}Un!zX}IdBg}d0jE@B7_Z2Kcl@ornzzV za<1Yte;U)?c(H@=A~5-?5X@7q+jF(L|NX?xxU{2Qk5{`ojDkIVtU;;%_;U$XujmaEV23_#9+H7N^B(Q0bo!@6GxVuQudVYAE&*s z+a=B_$_|$_dQ=eDRM;W4Ox3p3B_d0Zg0wA`)jiFNv_mJ#@>?`pE)dDC;TzdtJ_W@H z@MhR7*cXVl$^Uo6K-HDY!=j~F;*?h%JY+IhnNGqn)^0H*KLOM;r$h!&<3v;vY_0AZ zqYD8+EEE)Wns8dkymD+BkmZ7mCmkp16=vIj#F_R%)%k7z^x&*YiP|)b34rrtps;&m z2%sfQy)xLmsP@+On;RWVbw&4h>-O6l6*O{1{+7SVeS2;wwXSpDoW;PD=XP$7g6SIf z?YSXY`c`dow!Lx3vQ3p#%ajCgYBW{SH(Wou+f_PEmxWFbo%rmW_m9Jh zuw7Dw&$~Z67lnH3rM0}PIgb)az*@Y{!eF9!(y04OfQsu+!_EYn8gzCdGt2$S!R9o; zK8yQ%Y}0swB$FA#eRD1f1=o$&+SpuTZU9ZR9AVxBl(Ou!Agu#r z27^Qhs=g!>OD+-|HP zI3Iy$7ZOW2xsnM6WpYpV%{i5v+bQH+Gf``w0@tYqi&8O8_$)-l6p;~Lwz7KHPslzgQK@+appOx&(N-SF&u(fzQi za0KPILlSf)@rl=6%}9~G^=uy4kM!)3$q5zq&k$>P6=Fhh2sPX zw5zMd_I3*}@(%5X`)el*9%(`Pb3@ta4Kh=OiA%yEmjVGBr(hzdZ?{-yba72SrEj_nhwgB$$zO ztlm{wHO}i6Jlb#t*7{DhRSD4mQ34pQAX@)gV-Q-{{YPoxWXI3j)dpoS)6P3}KO%;IiAd<`G#_vOS^*!5RzRTX*{0*0c4}DNuy0`Zz!ZPN-{f6je&jKXC-fb) z54F1nw7TZM6dDUh6?Qd?hnvPcLW3K73n8;GgK*zcPhH_)@SjL+*A;dvH0qvQZ+#(b z7WR<%Ueqk6OyeT#dI+Q)uW@|7bKZ~D9Jj)BmoF)Y=_)1nkJea~ zwGFm*b&d2L(Q`@Zdt19MY|*bFc-*y(xaXAaDGPSc*J>??wajh`HF@hluK#1;vw@TR zKlB&9A9)`(ziF=VJmLAi{w;m&Pp59$Uru<2b3%Wpab

>p$sgkj_`|yT7loy5nbE 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 delta 124631 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 diff --git a/data/ReAct for LLMs.pdf b/data/raw/ReAct for LLMs.pdf similarity index 100% rename from data/ReAct for LLMs.pdf rename to data/raw/ReAct for LLMs.pdf diff --git a/data/generative ai.pdf b/data/raw/generative ai.pdf similarity index 100% rename from data/generative ai.pdf rename to data/raw/generative ai.pdf diff --git a/data/monopoly.pdf b/data/raw/monopoly.pdf similarity index 100% rename from data/monopoly.pdf rename to data/raw/monopoly.pdf diff --git a/requirements.txt b/requirements.txt index d1aad4c..6eb2b21 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,17 +1,163 @@ -pypdf +accelerate +aiohttp +annotated-types +anyio +asgiref +async-timeout +attrs +backoff +bcrypt +boto3 +botocore +build +cachetools +certifi +charset-normalizer +chroma-hnswlib +chromadb +click +cohere +colorama +coloredlogs +dataclasses-json +datasets +Deprecated +dill +distro +dnspython +einops +email_validator +exceptiongroup +fastapi +fastapi-cli +fastavro +filelock +FlagEmbedding +flatbuffers +frozenlist +fsspec +google-auth +googleapis-common-protos +greenlet +groq +grpcio +h11 +httpcore +httptools +httpx +httpx-sse +huggingface-hub +humanfriendly +idna +importlib_metadata +importlib_resources +iniconfig +intel-openmp +Jinja2 +jmespath +joblib +jsonpatch +jsonpointer +kubernetes langchain langchain-community -chromadb +langchain-core +langchain-text-splitters +langsmith +markdown-it-py +MarkupSafe +marshmallow +mdurl +mkl +mmh3 +monotonic +mpmath +multidict +multiprocess +mypy-extensions +networkx numpy -scikit-learn +oauthlib +onnx +onnxruntime +opentelemetry-api +opentelemetry-exporter-otlp-proto-common +opentelemetry-exporter-otlp-proto-grpc +opentelemetry-instrumentation +opentelemetry-instrumentation-asgi +opentelemetry-instrumentation-fastapi +opentelemetry-proto +opentelemetry-sdk +opentelemetry-semantic-conventions +opentelemetry-util-http +orjson +overrides +packaging +pandas +parameterized +pillow +pip +pluggy +posthog +protobuf +psutil +pyarrow +pyarrow-hotfix +pyasn1 +pyasn1_modules +pydantic +pydantic_core +Pygments +pypdf +PyPika +pyproject_hooks +pyreadline3 pytest +python-dateutil python-dotenv -transformers -FlagEmbedding -einops -joblib +python-multipart +pytz +PyYAML +regex +requests +requests-oauthlib +rich +rsa +s3transfer +safetensors +scikit-learn +scipy +sentence-transformers +setuptools +shellingham +six +sniffio +SQLAlchemy +starlette +sympy +tbb +tenacity +threadpoolctl +tokenizers +tomli torch -onnx -onnxruntime -cohere -groq \ No newline at end of file +torchaudio +torchvision +tqdm +transformers +typer +types-requests +typing_extensions +typing-inspect +tzdata +ujson +urllib3 +uvicorn +watchfiles +websocket-client +websockets +wheel +wrapt +xxhash +yarl +zipp diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..42ba147 --- /dev/null +++ b/setup.py @@ -0,0 +1,174 @@ +from setuptools import setup, find_packages + +setup( + name='RAG_for_CPU', + version='1.0', + author='Anas Aberchih', + author_email='anas.aberchih1@gmail.com', + packages=find_packages(), + install_requires=[ + 'accelerate', + 'aiohttp', + 'annotated-types', + 'anyio', + 'asgiref', + 'async-timeout', + 'attrs', + 'backoff', + 'bcrypt', + 'boto3', + 'botocore', + 'build', + 'cachetools', + 'certifi', + 'charset-normalizer', + 'chroma-hnswlib', + 'chromadb', + 'click', + 'cohere', + 'colorama', + 'coloredlogs', + 'dataclasses-json', + 'datasets', + 'Deprecated', + 'dill', + 'distro', + 'dnspython', + 'einops', + 'email_validator', + 'exceptiongroup', + 'fastapi', + 'fastapi-cli', + 'fastavro', + 'filelock', + 'FlagEmbedding', + 'flatbuffers', + 'frozenlist', + 'fsspec', + 'google-auth', + 'googleapis-common-protos', + 'greenlet', + 'groq', + 'grpcio', + 'h11', + 'httpcore', + 'httptools', + 'httpx', + 'httpx-sse', + 'huggingface-hub', + 'humanfriendly', + 'idna', + 'importlib_metadata', + 'importlib_resources', + 'iniconfig', + 'intel-openmp', + 'Jinja2', + 'jmespath', + 'joblib', + 'jsonpatch', + 'jsonpointer', + 'kubernetes', + 'langchain', + 'langchain-community', + 'langchain-core', + 'langchain-text-splitters', + 'langsmith', + 'markdown-it-py', + 'MarkupSafe', + 'marshmallow', + 'mdurl', + 'mkl', + 'mmh3', + 'monotonic', + 'mpmath', + 'multidict', + 'multiprocess', + 'mypy-extensions', + 'networkx', + 'numpy', + 'oauthlib', + 'onnx', + 'onnxruntime', + 'opentelemetry-api', + 'opentelemetry-exporter-otlp-proto-common', + 'opentelemetry-exporter-otlp-proto-grpc', + 'opentelemetry-instrumentation', + 'opentelemetry-instrumentation-asgi', + 'opentelemetry-instrumentation-fastapi', + 'opentelemetry-proto', + 'opentelemetry-sdk', + 'opentelemetry-semantic-conventions', + 'opentelemetry-util-http', + 'orjson', + 'overrides', + 'packaging', + 'pandas', + 'parameterized', + 'pillow', + 'pip', + 'pluggy', + 'posthog', + 'protobuf', + 'psutil', + 'pyarrow', + 'pyarrow-hotfix', + 'pyasn1', + 'pyasn1_modules', + 'pydantic', + 'pydantic_core', + 'Pygments', + 'pypdf', + 'PyPika', + 'pyproject_hooks', + 'pyreadline3', + 'pytest', + 'python-dateutil', + 'python-dotenv', + 'python-multipart', + 'pytz', + 'PyYAML', + 'regex', + 'requests', + 'requests-oauthlib', + 'rich', + 'rsa', + 's3transfer', + 'safetensors', + 'scikit-learn', + 'scipy', + 'sentence-transformers', + 'setuptools', + 'shellingham', + 'six', + 'sniffio', + 'SQLAlchemy', + 'starlette', + 'sympy', + 'tbb', + 'tenacity', + 'threadpoolctl', + 'tokenizers', + 'tomli', + 'torch', + 'torchaudio', + 'torchvision', + 'tqdm', + 'transformers', + 'typer', + 'types-requests', + 'typing_extensions', + 'typing-inspect', + 'tzdata', + 'ujson', + 'urllib3', + 'uvicorn', + 'watchfiles', + 'websocket-client', + 'websockets', + 'wheel', + 'wrapt', + 'xxhash', + 'yarl', + 'zipp', + ], +) diff --git a/src/data_processing/__init__.py b/src/data_processing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/data_processing/__pycache__/__init__.cpython-310.pyc b/src/data_processing/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c5dbd5ce7049ea2bd700e411a37101e8145041c GIT binary patch literal 153 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 F{||u$s|Wx9 literal 0 HcmV?d00001 diff --git a/embedding_model_choice.py b/src/tests/embedding_model_choice.py similarity index 100% rename from embedding_model_choice.py rename to src/tests/embedding_model_choice.py diff --git a/structure.txt b/structure.txt new file mode 100644 index 0000000..99747c7 --- /dev/null +++ b/structure.txt @@ -0,0 +1,26 @@ +NLP/ +├── data/ +│ ├── processed/ # Processed data and embeddings +│ ├── raw/ # RAW data +│ ├── process_data.py # Functions to process data +├── src/ +│ ├── __init__.py +│ ├── data_processing/ +│ │ ├── __init__.py +│ │ ├── get_embeddings.py # Functions to generate embeddings +│ ├── database/ +│ │ ├── __init__.py +│ │ ├── chromadb_search_functions.py # chromadb functions to retrieved responses +│ ├── models/ +│ │ ├── __init__.py +│ │ ├── models.py # All the declared models (❌) +│ │ ├── main_reasoning.py # Main project (Not yet set up ❌) +│ ├── app.py # Main application logic +├── tests/ +│ ├── __init__.py +│ ├── embedding_model_choice.py # Unit tests for the right embedding model +├── requirements.txt # Project dependencies +├── README.md # Project overview and instructions +├── setup.py # Package installation script +├── structure.txt # Struture of the project +└── .gitignore # Git ignore file \ No newline at end of file