From 77196d97c935871ca0aa8fde6555ef42d110d678 Mon Sep 17 00:00:00 2001 From: ma-zhongxu Date: Thu, 27 Feb 2025 01:24:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BC=94=E7=A4=BA=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/index.html | 16 +- frontend/public/favicon.png | Bin 3624 -> 41494 bytes frontend/src/App.jsx | 10 + frontend/src/components/DefaultChat/index.jsx | 2 +- .../Documents/Directory/index.jsx | 2 +- .../WorkspaceFileRow/index.jsx | 4 +- .../src/components/SettingsSidebar/index.jsx | 64 ++--- .../SpeechToText/BrowserNative/index.jsx | 2 +- .../TextToSpeech/BrowserNative/index.jsx | 2 +- .../PromptInput/AgentMenu/index.jsx | 2 +- .../ChatContainer/PromptInput/index.jsx | 4 +- frontend/src/hooks/useTheme.js | 4 +- frontend/src/locales/zh/common.js | 122 +++++----- .../src/pages/DataAnalysis/DataAnalysis.css | 5 +- frontend/src/pages/DataAnalysis/index.jsx | 163 +++++++------ .../Appearance/CustomAppName/index.jsx | 6 +- .../Appearance/CustomSiteSettings/index.jsx | 19 +- .../Appearance/LanguagePreference/index.jsx | 5 +- .../Appearance/ShowScrollbar/index.jsx | 4 +- .../Appearance/SupportEmail/index.jsx | 7 +- .../Appearance/ThemePreference/index.jsx | 4 +- .../GeneralSettings/AudioPreference/stt.jsx | 15 +- .../GeneralSettings/AudioPreference/tts.jsx | 15 +- .../NewBrowserExtensionApiKeyModal/index.jsx | 13 +- .../BrowserExtensionApiKey/index.jsx | 17 +- .../GeneralSettings/LLMPreference/index.jsx | 4 +- .../GeneralSettings/VectorDatabase/index.jsx | 2 +- frontend/src/pages/Home/index.jsx | 4 +- frontend/src/pages/ReportGeneration/index.jsx | 114 +++++++++ frontend/src/pages/Tendency/index.jsx | 218 ++++++++++++++++-- frontend/src/pages/Yuqingfenxi/index.jsx | 57 +++++ frontend/src/utils/paths.js | 3 + locales/README.zh-CN.md | 4 +- server/utils/boot/MetaGenerator.js | 16 +- 34 files changed, 646 insertions(+), 283 deletions(-) create mode 100644 frontend/src/pages/ReportGeneration/index.jsx create mode 100644 frontend/src/pages/Yuqingfenxi/index.jsx diff --git a/frontend/index.html b/frontend/index.html index 22cc5b0..29aa5f6 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -5,24 +5,24 @@ - AnythingLLM | Your personal LLM trained on anything + 琛海AI | 大模型私有化训练 - - + + - - + + - - + + @@ -35,4 +35,4 @@ - \ No newline at end of file + diff --git a/frontend/public/favicon.png b/frontend/public/favicon.png index 2dab5365010b5c3bbd0a5a0133be5106d95528d0..e3a787f8451e3fb9a8515490ef02e0f20cdc7054 100644 GIT binary patch literal 41494 zcmdSAbySpJ)HXbHr<62(&>$!w-K7#k3reRjFf=04 z_1*lQ_xb*Q|9x4Db+cgZefHUB$F;A0h|$qfB_X6I1c5*#>S|Cu5D3%#{u>_`_>H^( ze;V*0c&BFU0RjoI-+yEHmdbg9K&&8jsDi#PVz1M|lW{8dEZ8;0Cx~qWLB~+Z*l6fo z;p|;gC8qg=EhbxC*g7j7H7HE?#BokoZ23{WAf_hWlN7(a+SFXOP;W6}+(q!7F&_qj zRQed#U2O^)0XN^;_;Ke^;oA7wbZV(_@pIeR^qGfNIKSr96#u8opWSIRggBUhVj$2j z_RzzJ_dkSW%cJg}ASxU%-u<(HiyU(Q1Sy9iG47vSgizA^r@SsJutVT0788zj|J0#^ zG2TBzivC{}@s~Sb9RzColXiD}^@uHE3BR;ITqB1pfpQ%yAtFh?@Z448(0Y3$pNM)~ zIgADA{!H&86r0T|BB?g)=%Q39UAAA&&iaojFXz#BTo5?{KNXLlDR9KJcYkigi4}OM zIQR!kc}FAT11llAmd0t5ead63AUJPel`?85F{38nd03L0(%;zpr;7NNVdCoCHo=eY zjuP~l<-$N9&U>Tk{WzW7<$FJ!S@5)PVRN;l~Q7KrNp)D%md@0>niau3p{G(RdWnUjvzV5=X}C02H!Az0sy4@PKE;kZWp zC_>e8t(<*vdRTv_0SZaHUog~dwD?QugNPC}-9~O?4OJFGZE+W9z>5h0}ZyCvTlYYxl+? zmfZSd9)4X9Yrf+hrs%|yce{T_+pP0&Nrg$VMJ;fNbGp60^h@$qBbeD-AT?L+8dII0hPsQz=3D3<2u2RLy%2gR)X*qJ z@v(v$9$QIYYDCH&w0P}P7_v_f#nbJAND5=~CeZM}a<(h(Ck-J74uxDvcE%!ATv1Kc z&u4ptNEGUF>c-~Y1U7u1dfiIDK_T_ni_VN#z6a17Mqqf_ZI&#qVIOxvv||>wh6?6J+B1Q|0MP|P8Ha(b6KXknN~`lDswSF_tnO1R?9j1B zq;Z!|KTA~W?8a%(5#O(A3|0`JJiYr|xL_FJ>FVq4||w zZ|1JA{s#e3h$?VM_TOyC=qJRdYm!7&B2(41E&xr^Sn$B&SMqGI#SyC_PlV>uYPf~O z13kPDBH#rs(zq@+KanEW&EilbBzOey06aotRHcQOmc!SiHoR(u64H?Oz%F%C8_7C; zSw0oenRh(HXLTQA5dmxx3Z{Z6I&51QUwS1e?=rXGih6-&fzy{~n+y~brP-*;l;xln zoHzLYKmUjVvTH>zR$6^{Y*%ze4I%}y6^`0jXKKT*Zqd|kd?nOg7b)2AN`f#Jaq>m! zZAI^mVSZM9uqUV&53mJg%E1-WgBEi|`}Pw)HusG)%QG+X*7*TlGZddGhf!)G>2mPN zL$%H@BOvR^D^4$3P_*O$66Y&II%i$fY6B z%C1A7L2Qmr96hR*h*2WGP^1Ei)!iFx7xXrEX7XgEnN(M@Kn}>Zk6w=kc5BkaQ}H<1 z33`^&2E!Pk)qew6-Nin{%?FIEvZl0MP3MN1NEYw|p9Wh4pLXJ#?tyDnbSR)~Ly#{K zWYDoqx0lqAW2XTE?tdbm+Rr|V{5T?Pzy#yTV^_AF_4Q+y8rKu0CAs^BBS%5-3JDe% zVs!m8uluHqR;{FDx_2kqL#-WCCIoO);fjO6+TvNHd`{IFF+3;m874dj2M9_x2n}Qx zOOuHY9P|A)KQCo$NRUI=z;?ImPdG~M z4tTXynV57a0fS?BY|9ANNlF;x|1{S&!iNH9v){!x5Q-!K)Mu;9^6d1n@RRJ%0F~bB z!kV#s{3cyogwE?7IRr4v*d=xE=`NTOlHw+Yxi!Yi>M2hGI30EmhYwkqF;$}8{2Lib zKqel%J_x7wrVXY%Caub@h*yYJhXtG;YsR9C89k@sPRF@C>T@nHbnNuMwIjjqkJoV& z{SVvLp5ikl-Rl|Ff;#w3oX@rLnwbI+7mmydHZVZNduac76LF9@%;qUC04#itDtbfZ z@RynN~rKcre;vb-H%% zd5#of!2!?e!J=IjUCiYAsJmdR9*P6(loYU?u@qe7?x`77+fS9fL#B||K&-DO6CLtQ zf8!XLG9ho}8K}Kw0;K*lK#h=*=xWq8SILmHn<Sig59SFesh8CWW=0cTP@D}4(0h+p@4-8NYN`<{f*z;;)3tnPZ^QZ-{kUkAF{q?6|C7(84{6Uv!N z9R&RP4@scadmZry(=yvOTP`??fNgcYw)&vz2^`f+6;XT^hNMufhj5XsHCLTWmaCn= zJrPC6s|$Q2IRbRh)F2q?-iFoFI$%A8DAE6{w*Sb*Gmz>5NqqI z{jI-94(>GG=?x%n|L*r=3Ke;6KdjARvjq>l{vILq-h?6->lRpB9^csQ3T_>ycUm;9 z_*MW#4r#9sK{`BDO;p{nKLE;LO8p(7o9E5W_#mcGMB*@$vw)oVzH;K9EqhmOUPp9@ z9IHF)X=Td|zQ52Q2N(ZnR5%cadx;gbNMo{IYf2gDrF!ktxHZ*i7GkfBEPYp3kS-&Es_ENa*Qhi+f*hu+sr0)|4kHhJ>G85uf$ zj^#OHPS8z;iU!fgU!|k{1PRKCLTLphR%h8Zp{h!uLGmd1xA)sokWE+u0e;K`#JEtu zKC1Fe)TAKwW*NoYb-LG6npk@w9&9_&MryJLbIuAJ>ov$6x_uc07m<_gnXGD`VU@%~ z06sM-^5u%$-!2a_(Oj+6+gjamgYV>sq~#MN#J-R7MTakTnxn4)>XAtb6#3^K!cMCeLZuSyhjd z+K{I4*ZZ$g|JjWQUeQ+MgqX=9C2fdg_cF~BP=A$8KCj{^YfuVJ%uFC}pDCcg{DlX` zD~VA3jmtm0eTLXFMLV79?KH7}!eqNhu|LWrhg=;;BVPu`lS5S74F)dg@)zYzCAMey zwY$GB|FZ!qupWg2r(-O_Z@EAA%d3hE@D$-^ARFj?Eq>Q;QW<+};#=gJi>8hI<*aIC z($p=l_FbJ??=>cn6-eO~r*v%YiO@tNS;=fJl^%~93qsW$7sx*??i)vq+;3pj7CJlc zD)U%<-Ws4Bl~|ge6+X>q*^Kp|mzZc4*gcURZ{1fLP>*0_y)GgE@|yxm@d0EvR>0tD zD!<@S^I4o-B&Fq=UPfuEEk5_t6rL5OLFKU$rvcOEICq|W5x-(;jc@Zw8VYz(7NyNOS=;%90A2!|qT9PDfAZlNoZ z8(y|oYB47l0ITeE`0k!ei-gJEJ2C%YQYDanFg`AUPhM8Re zh`64Nsun0Sh&A1-TfAxrZz|VPRrJd9$FWw=G;}3nloJEvOHF=C2`Dd_nE|`|kvS6x ztC}A)R4)}K&D%1~IC7VLwiX|l)DRFw1%Q(ydDPH{dwa2}19dZV*8SpZ*LeOz4N12F zkHhRn&rTf091a@Dx5$h^#+}VKKq-#+2Asg&(tarYnN3H9^hER6NxR02wb_w!V_J0} zov(-fFZQF1MO>&p=D$fz{(AL=v@G4_%Hy!qFSYvVik>iB#JGE1@7HJ_35*dR;kOh$ zl>T#}M_@!7(eb^76S0|4O|A_lwe3Yc@Oj<6pyoKx@PaXURVIQ!=*DXw+q@S+%PdzNeA3b0{ zEF~!9Q=H)mMG8eVy^4Q~&jb{y6$!e(ri1f9Y?^gT$>yrA@kA2br{F6|nA!e%uMTQt zT!^0i;KIyE@hm7?uh?b0t3K~e4jXQDX2ZACee&k1!WK4^^!%H$-RGDx<#Rw03ynEN z02SXOCo;GQ!ON}pe-9a+QxKRegJ|lI6dtym)>6jM828wLO!!~dERI9o%Wgt@Hk*;nu3;cVCx;P+pxD>{+dW3(DB@Z z-_`Epclwx9T+b#i|2|8Jd7}i)Ia$Y0MO9X=yr<|-DF;Xy30w0sHt)i1&x`ohJX)Xm zYBU2;!>qh6l#$DgvX+_JwWx6xKkXy06ut>{9u` zUo!Yd$^I?^Z%>c!qN5apNaqjzZ`hHDH>{0>pTF7lp7^Iq%oMAnAG{aHVf~d!ZTAt8 zWWpb4Gqujz=y>O)Ry8e4s#hU`_c_HxbgXmDYCV;vuGzx-{n#yYpWD@;ELW*1mR6NX z_j0DF&v0a%kdqb$;5am7;Xzd`=3g5*aA31_BQ5;poY0yRaL9vUBc_j>_&pI`Sol=sjyr-g9=+CX!xyKcLBCec=s@3Q%r!qdOfdq^L<5Z zD5Ot=4T7iCK3zzW!P%FA{z=UA*?5G&56@jD!N8ub;PBMxJQ>yNIL6SCK@un_9e$F; znpkO@FWO^|$>zgJ*nNsq2fJ5}r3@O&DscNNFkh(;w1$#JB_uNheSP%dvEM%d<+xWV zKrcH3Ry`lrKD^gGKx8yma2$$Odk2_YkUYC}BTU(7o8uulgjHiLO6y;hhqQ>x(byXg ztWPZk@<7I*h*^9W7RR6&dHeRpFO>F6#kU0QuC&cYzh{3YaWr!5qm zegi$0Vdsd(q=KAE(_I;}dAMW1;~-&=#$IOZ0CwT_%?WOgij7R?f!(# zU(!BqL7bI>4Ks_Uc;puEqz!0pw%QI@hkg1Apic71paSG@hK~_-`6t)GK@4k;vlAff zju~1y*-hU1im0KnxT!3!J#{>W-1glxvKP{l;=A;`YN*-6T8gajkwFZoz(@R43B&N< zj6I1(i-Lx?Q?$_PYk(|Jgu2A)eOorGF};m(&Hn)2C*PJn_wHBwPVa8m(Jzl8{z#en z@3cXHsKfi9+EA8nzn@edg+JaazxfCR_%XJ|BGsXum%es`^?+ruK(&sWSIB?rj@2U* zJluwFuBFiIJC6zGEV@QDxP@`vKzHZg2)J*$8SR^?YVX#`I|&`W-%vV5)DMDG9>%?f zvu`@dpIyZ1zMuyn7u}kbk0Zw`0B%Fx+qK#c{O*Uky;Z^j2%j4Y09XjA2f{@*oc|0S znuj1mP@cDc$KSeGw{dwt5_!SNAO+yCu*?x0NuPVgt;ZqlAErS72rpJ|8y~PwE)PNW z5r z4|jXkGGUBzO|^7#3kz+0Iuvc_DYAMTMU4bm40wQI;a5 zMfV+bE1_&xSVEC=%qgjHi|;~{zLs_Qd@b0=N=FQ^m8X=Kz;@Qe|P zZk<3wxP1nD0pIPcLWLdM|G_UlBNVK4j7XSPmb^8S)o6`zJl?cn{Ym>fMh>wepex{& zV*%h)cWt9#IDy7x{`E4>WGoWW%%q;zi;7P|sW+SlizRa^a95~0s~hDLbvZT44+q zII3Q93UiKVxtbzNNFa}iO(1_P3r(c@S^2c{qC+{U6`(x(LICWS>B&U?PmO6jUeiU+ ztX8!V|9_6$Y(vOc=zR6X9gpF^{eOAr7coU8rIe{3DH~dD3La@(qn$Rd>||YTeZY~( zw7i?iz*O1s^E>;ne>IW?DhE)@SNc#eVcbXK#`|9uSO-9v>keh2UI<>2n$WS*ac-Y-#^f2Q_;aUp);p zueiC6qPX}(K#t8Xe2!M!48sMNv0_ER11boJIG z(aVGH3Y~KN@=}3LNt0aoz8h>1JL;N|NU~B`%} z=?gXps>O~y9xLJ|;?hfZ?Q}y26#x=mDr?D^p*Xg9{#)S89|^wKeqrEiK~<`55OJuB znw>>ZWl=z;8|RTM+PqM$a^$EqOJ6N#cxuw(4*+r8`ORI9NbxCVls2p-RKEvG@_ehK z!)l}5S@)6dr)N>;w5{9*8S{hE}i|^p+wEH4+(h!a3zn%DWOj2bOP1xM?l&jAro`161meKGCziUt||K;p| zn){T+a?&<0A`GlL!c-<@h_it0cE`Yyrebsfc$aT{kNnI~WTp@&IShe|{e*YS`Wm{@ zR+6Iq%ta0%zA#fIk9q^Jjs%Kz-CajT^0cADBSQ-xGIN+F2{ckR)}OJuPg_lqLv}s9 zYIMvl^Q8WaQh&pKy-=?*-g_aLqgj{$8FlOp7m?$H@X# zeTES^5`zUUlQ?c8OB1EVx4i*?oEMRPj%#4Lm*m`7ML4og0~IgXva(DUz#blp2)4_c zIw-|o!2gOztb}5WLHM!oi4H`#{E_Q|QyTo~-v85{&_Gu>oV}Dy7{mCR-9pmatnKL! zaqVZDguPq#&PUwt@!_v{X(hA6Ks#9Q7nvdb@tG2_{h}+EZ>`)C$ef$5d|+mL(8Q{r zL${lcWqy_`xJ@j5Pl#D#Y}c>t`tUcjvQH`kIZ6qs*h^%%QY3hIefFg+qQu-)=DNBS zQY5Z0JdmL#;Qn~m$BcgO&+66kc}uOtb?cLg!m(1IH)t~u@caeEa|D)71xe{Yua*Ib zxC5zR#--pff2Q3f(5 zmm$wI_4psa$lLE#ox4uv^un>A0^Z;O8h^X|WnZ^Pyp3x;*;he!P#9s~=!1tE#wdVq z^wzqrJ-PyTry#K(rz^K^tx5m7xIF>JgPHat~oM;CIw2{B8gbIrr zde}WDV;O&AE&XIeGFI%5P+R0k$1wUoj;iCWdA&jeoX+Yf347Xb0nYkUdb(;1)%>F2K^zSjVAY}9XWabL6BNSd$c*tLrklAF%!obJmRtajmepOVNp|6zAC>8r%0{&Jl1HHl2 z7P__drtT-+#d)TT^d$%Tvr5v%d_N^z#n4=O(fTB;8H;9 zhw2#!|G4|pXm=I+WB>i{P8E%W!f)wLjZ_q^leI(mq6YOpiiALyMUbnP?ZatVQIF~AuFb+Y|VZK1zC*LR}LZQ||{LYq@n z&)D2coqDNCOY)Nx@4Di7wCZJOwDfI{UH2559SaS~{v*SSsJb_aH@Rkp`Tm*LMo65Kv# zN^;1t2jN?!*PZ;rT-UHFFhvp^-9?*lJb+L}jmVrwe_$ZsXE8Zc1o)C@$rnTu*Q+2H zq8H$ZpHi-F;_`a=d={9!d}b9kDg5ca56W2si@$3*rmP%}c{n3|olPObqcceg=arQV zasfth?^ztB7JU4^0voDNT+>sEcm$ZpmY8(;z3#jEP3G(M0UHLGSuCSfpdDcj%MJ!S zC6zqtHXBHb{Ii$D{%7U}Wq9|yiBxvE`8}rjt~OpMKN!_$9hQ^`R3mIQ67tr`i+Ec6 zQPO~IJ`1cG|G$Uge@n0DpvrARia_tOx*B35FvuzJ6lk!m0yORyaRe4gBHvx3yKiHr z_=0REB+}QO>zH_Bgx&8a3_Ku^oMl&^f&Va_@E1B;)xs+7I_s@9(I#DtZybWHA(aM? z=q&h%&!U@G=He`cpqR$hw)0IdSXD8(^$ixZ&k6sNpnK`@?lXSqpepr~AgHkKD>I|r z4@f}C>V)Axo6i#m}0%rLML!5M!aq-i! zYcjWN0$Wn@k6Jn8|06y`p@MoApJr|d7WNn7EPbod8bAG_WnjywwT zrfoU{3jWlz{5&RZA43D&QE^XykY| zK5EZc8^g*5HVkqhgra7N+)m$}>ZvjQ>216_RjGR&&(F3ml!%09MPBp^Wkq=X3%q@1 zf%Vqa|LBG|*uy!-Ad(&~(!Ff|q-En+3lln z`|0pi(&m+!4fp&9diJHZjcp(4L&Bv_+d0&M=x`n7Q>B{n*SELgn9u9$wyZLu1^4~z zJ&AQ8MC7fo`)c~aY=e@=ODZJ0Nj8PB)tn6b`;X&SNfPA5-RH|V)1^lR=TX-`(>plBuz>^Gskp*j~AK4UEYYYXW5hPB2_IlG?f zeZ2cgQqV&Eq3=P{V&nTy#1pMp3PX%eG{2cnT($!2Jx4s~O*sLcNa)LzPPA8>4@}}= zB|e5uPPpLPu-;I6UqBlAyd{~dPwBBy%n-84ZsiEEG5dccopm0$vCgFJ5n4HgXVg9l zzgmXIQiEwR0L;h1o~gzQr9lG z)87x@Cywo#QTurc$Y+_NlsDhxzu_QnMZ&{%y;;1=AeLv@qV3;|Ha1RMw-?WBJ6=?h zwff{pR&Gr zFL1Gjfo#U;G}pw|=ys`ip#o6f3`c#-)kPq5L@iL-ojA`)V=-f}CXaufptE+fbfgS> zx85$@F8b%q1k`RVCTeEbN{?9`YbFV2c+Fuj{U^h$NaGV_w5VU#DQ*}N*-^7S+4Hyt zi#0aCO3wAK-L9^bU1%q>bmQ^G*`<%{T^<@X35YpWr8**hwt2n_&&h|+el%ipXZwnG zr!rBhA04z^%9ZR%x}8y#vL+oGKSIdU z`uKAVo(2|c1RzuDV*S)ZBw&!!y{avIDRhBHPMgxs0d8n8ghS_`(>d$r8RRxmuFoSxg&|; zROR2Py4A1>aOAGhX}YC2Hj!z+F@2Wj4f;3E%NhKqDowWpko79%!zpUz4B@yGG?>h#SM|*% zac0=7#h2KbtXq^hN4%Z96$EHiKBJX{N!jH1+8bf+xzTP|*ot94{G&O^vFf#}_U+9g zFnf_HGiiQhrqLKR#T~G!a3qZOHhTAVCz{P2KuoWSJL7on`rYbRx!APU98<~VM8J*j`tFbXO~Ve2)gkZX=f5I2zj58(+~3B;yK_*+-R;zTG; zN{gYsn9;k{9$;c}$SWMY+o$>3{)K+I+^eGH-zF=pE$OrDM^Z3k zNL6Pz1)=tZ_?^D7xv!C5741H|_u&i_ia%P9GF}y9YOt#Xhx;YS@#xS(I}7J3sTI8M z({-(IJC-5$hw-QlDAcXwc|X%TgC!qVa=%-5FE)4S`C4`=`}Z^x`Ky{r9)*2>=A`Dn zJIrWZv4QKG&~d34BwH1aAfCly-MoW7b%@b%aM!eO*mH6ly65CRoqr2ivWSWaiUJSw z6A3hZT+H%DB%;y9blY9zK2r?GBSKM?rI%(pDs2O)o{6Nzt~+CBuM z!&`HL7t{zN-$K6`ko+3>G~60}0GVlI%tswuW z*`2NsR=D4>l8lhGF2vcuM*(#WPkRRYczfG}7V?I^s_SmYAt42wM-DUgr;NN?brBM7 zHvi+7RWmd3^|qLWNZrpptHP_AB>C-YN=)b&yNCFl!N=d-kF|(UkTdHW8;ir+F~IlV}{A7oQ~b={{RTPAaFJ_Z8|)y-^{o8y+h z;YV!l%Sruf+}xSsWhZWG6+?JMZXj&r?H4|l(2+DYfXxih!oySP<)7`|X0&?!XPyU5 z2#;gXRbJ=&X5d{P((pOE#-6c10Yv^Jsnxh){2-9zmeL2O4`8RM2~@ZQx`%KqgS>NeHN|0F&#jB8~x z@K%N&r?K?mz&%2@>=CM#6;UY-z+_&%j~TiS!p~6c4j6mXB%f-DTnu#eWx4rkBY>~q z!a_&Ub`d(bh)S^IG^RQ*5%ARVZqOj%M+)^C5Nx{K?ibL)kGbs=&lj*}bU5?H0hm%agZsW@ffNK+ccgVJ4c{+m``Ge`f*h>fEIc;UF^DH-x9iW$! zxt}7n!l`SqC?L@iG5r^6ahH7)?FGPCLWhNu>?TP9RJ0Bcmbb3PWEY+}^FMT$9!2w$ zu0g2H1rBF#83tzC4<#~p}vVk)rU9zBCO z!6_vrKLlbL<}lzd;tDgGsuiA+f(U%i=j+)#Ht2*6pQXHKXU*CTu-9J0934}W}Z?eeEkx5S7y6gd^Dy#8ouO=r!O%xvBB zAAS%d0$hnrSO7MmD+fZgioEp_*+kb( zDc;S>{~JMBjsbYI+6d6SGf{i=uRXg8U$d@uC;wtN&rHvha^nTjXLT2q@H=)j!q(g( zW+<$g5Q+>d-XdM8B`mU`n~(sd7GQ~baLlt@7n5fV<1^APUj5jjbL@fu*QKpXGcV1k zn&!k6k(_kcm6Wi4i~)LjM%Gm|kj=u{do4 zDGaGRd_KG|Em36yFxewYNv#^Bdp9ZF{6qld8JpTV9j!8e8qJKvhgK7Ey55ppVK|WP zk(v=Ma87+dJ$)GsGizX_#|wG$FPK2s5F-U*@skXD*zB%LeBcdB32--Bb%e-uzoDGL zvVP-E<{YPzAD++MU3Co#v8OwqG)`)DcL!3z1tIaftOr651WvgPFyZxR)M&SQdtyHh z-`kh(e&R$tbe|A9|0_le!j*q{*^Qr7--F^_3I1ngF^UT)S*MqBf;m>^ypm&88x#oK z?|ISLIA_Xas#AcaM^ckW1nR3rBFcs6d4Be=dvr}^1Fw)0Cbt@?Zm_yj|H0^S?pN)b zs>Q*%$1vA_#o`$;c z$6qYjHQ9jd8&Ox?YCOmI~aFS`0|4Egq`YjoM$4@Z5+(!-I)=OZ62 z#Df&oq9cIv07ao}cQ%}z?r-_`1Gm<2vT_OoU!yV)?Tx(qz}*a@^lK*lz*Lcwy$|#n zT@YgK!s-UHC(M9U#_~*xJXv$?XB;?GNiY(V1umNDZe}FY5bkYqfum2%;P)5yt?r2d z-M&l7cdLcE!B*;Zyb*kJA6`{4LKBa(o_A{vw&>>(EmShBANqH1Jq1Tw_WTyP9IC2P z3&bjb1m?@VfYx>ipjhZn#0$jR-~4{`VZ`sbY4d@i_=Hs%W&|$O7 z&GZuVWd2@kBs&&+KW1B75 zM)Vfc7AC$wL%)<8*$pK@(wk&ge-GyXkgH?;qer%t8&edLnxJG*p`ZbyQQ{o1L9H`1 zYfRMUJW{&lRbTyK%AdCEMZ`#ia{@8#FyCDu+1es~%T}88hx{3d{N}!1c0mn!K)1&i z9!uP7zMqA1orDcnPTHt1K-;S;PTNDCiXQ_3?__7l;0*MFdw--MC5>ma>TZ@{?vfVM zh5SNNAEg;oy&Rxn-7-qcm_2xzJ0@C7gnnVEfxtOkn-j@(qR$x=-lGlXUz4?+auc^{b0fOiM!shU zCZU4;JgiGyqyAqc!_|9hu*>v_Xudx8%J25A0WgrC_d>w(nz`(<3e?lkXy*zLy(fVs z&`k_3WA|teqMqMtc`Z+9r1(ahDt#CmDqxn)uiJKOqI}yy0WQ_iSHs?~dn#*$R1^3$ zXDVRyw4%x9*iX^GHmgAzK-o!7eWUz?m6{Njz;pgUpPGIMxC|L~t(eA;lq8{osw+>3 zi^rAK+Mv^JpC2M}jd)EF<7D*m@}?p+7d>JpEWQsxD)hxp)k5kTTv)tef{d0C!($ zKaVKwx*&Wa?!I`7T(GKBc8ny~gs(eH;m?$_4t->Ei|;Rd@lw{2@YP6vs@hDI?|51n z`q5iOH+|R6?M3AxXu}P>c_0#hYLs8Sd6djVWn+yVPQ*=*XBkIP`}xCqGWqb7PV8$J z>6-mDl$C}aA=U4z!k10ujO)OEyd0+S@$9s?RXc5bLqw}!Nku6C6&KKMa|iy6abmA)@MQ$XNiROlG&PDw%G#7uE~8Xz{sw%_}#HV zGP7sU*S({uO6fJq=LX1{Puq>E-Uc6Ze#PdO)zX-I8Izo)IWdy|AbrCUA58 z@!l~}$+blK7p7(RuWz)s`++eKE_dz)GxcF|dhWnTD-{pR%sj)GBMr0l?Aa#WgR{K9 zGbM@}kXQcebL!5^Ap<;M@#fu(gb1qnBpMvd7}KX(y;~rf4dbt3WWI0-;Rgys$NM;L zOZ+?0pC=#>S63EDL)$eqmN8V4cF66rUXiM z!di$iNpfaOs{B%W$CXzejh=?aLMql=bOk)XZQE;5tS`B{886*^sh&rSh-&8br+OK^ zdtS#&qou*4e3Gr+;OGn7kHWJQL=?nJD5Idi==UkO-5yITW^A-8Q{;N!F|eng9Xz&I zg*o4tsTvqqcCP>Z3H^oe+q@N*{mUno%WVY@1ZZRuzN*6l^XlI~JTx4Iw!|RnXvQ=+ zd0biDRVa+%6o7Y#aQ( zW~>4g=(K(Reb?{GP5E#l@mwp$?&&`^&PDFE6!!^J|4sAf+?tngvF4Q8buly_@!BsE zz9KP!r|PeD5kQSOm8uKtmH=xQvUmqd_cSRYz29`C>-CPm{t!WQqPZ9}x2-#ch=KLD zLC$n=!7H9x9?luoIuAJRSoF-S=eH;4mveim*&c8I}Em&T;X_eooSfw<^3*wVu{Nf5NBrR z_#35EJRo^~2<`Nst#h4Xdw6?k=%+RM_T_AXojC8^JRK)IjxT=a#cW7NF9(BjB=4Sy`F_TE_!MmqrSU7Jb9=3RyH!XBGt-a zkv#6#&SJI2$8WxPdtiQ(e$JOJjc(4-bcB5AM!yD*>=7#~xopN3Pm3c6k|Bzb3G=Ua z>i{^xrH%ImEvl;fF(Sur3GsA}c=?>Q=u~I~mgMAO>hxH+iu9m0&6%4T&MmE}malOqKd)(QAIyMQjwm5NTOW_lcoJ2*yx5`ryQI3Tt!uJa zLb+;-7i89UnodOHaD#gSIDYcRNp%1E-9HjLQQq8F6S82##Z8?%TG{IcuJl9R#A#Y- z=7i&`A{haHLQQ3(?0L#srv}eWTp5?r7e$E%6t1KuHXnwTn!K}S9y*&RHRTvmiRa}m zC+The?_B`K`qpah{H0hW$HqO{m+Y3ue_a|(7{uNUZ0%mo3=nLSrg~+RY5mcE+w^8p zLq~5$AbjMA)ShBSWP8PaPhD`AYUT^C{XO3dtdN?e@fagOznhytxGnwV%-(`|gqNJGRVoVdc{>b2J@vCFe~{Ue zfp8#OKxpe$`jimX@6ecPqRbbEmK*))0WS804>KM{(6D`;oOySkE=Xh*Y4{cZ&}NxS zvqR$2_WbUgcEN+tGUYN!F_R!5+`^kEAj}C)XMUM#QFoaB=gjj#%%!G+Po8rsSyvm% zmwe6|FH6Y=CVj0T;^3$MZf=Vu2F)7bkA?~xk%5Y8CJ!ummw0--qyJ>R5A?4X8!v`! zVYlgXM2f4I_|3nJ_@T_>fobS-GSsHi9aiw7(v87ss^a@@(ZQ#w*rZQ&0H8Mn`xLn{ zf!%K>AoLkD7oe3=LQU~s`4u;G;cdS=iCJ@ha28in0gtASr zq1v#3v+U8|1A^i2H-+`Y?DVuEJP~8#jfJ`6OvFsf5Bb47886v*W`K*N$kf++xT7oY z(l6T$8mS@6_~e6c9P@RXcxFF_beegRryWP9Pdo;EMd~$mMawzq%hQ1QrAHDnrY%28 zeMxd>whXlOnF<278dhu*aU+*uFy9XE2EZEZ8|@P7QDd6NSiyE|tVISm0~1Puf*tIb zlXh+@h7|og0?~iUpMQQc7dQli%=*N1reJE2CT_XHwT!GzCp% zNS~pz`@tGt&Ipal$D^3fhHs;+fq&pjY3@7^QcY9-6J#kjW8zvhLE>!a8Ti;gDRN#) znNbtdvZC)>_n94|h3BRhiw3RzQ3eZd8-gWz1%19NH97xW4y{YoEf`|*Wo>P#w|KgCb(1=&rNG;! zRwVJ(s{jD0vmYwSC1;R+8dlgk12mp?l?zdLR7L)H6B7O(Jzw?p{Vd+|*`#B$c2%QP z_4WLc*8R{XInYyb=IP*AMK_ z6%F4ud%;FrYbCPfyEFUT$BF2}W~2tfz=tC54asYrCp#!Ar5Tvn_LBaSZz|UGHftPH z(NTD=_SB;&iU-|-M(fv+<_s;1%xP+?j+WF?G__Xn8q$f0Cm$wSn_#&6u`Sx$v^zO_ zCY?`V0tV0xDn(6raYPBVdR%OeCLw71rR&z?9z~jUB1u|qa(zKMYLX6kOzz!X%}1Px zS0(9Nh@a)R%Qca(na#d8UKuzO+|#UfQy5?ES>PUt|GtUkto?s9y=7Qi&+|TvOL2D# z?oym$!L_)iP^1*61Sswn+)MFd#ob+6Af>pw7bxyl&4eXLojXcITdZ z=CJ#eEdu#?N!^-LWrq~09Rez@!Is{bfBI>n5=&lWWfWyZI=2IbZtP^*-`EcR$Sae_ z46`!`0=!3(97_dxO$K+8HcIKR;a8@!y1C04Zr5tJE&t+h@MNpKCkf=YZ3>qy{oWPg z+Z4qMsmH>ir$&FN*XHFr&_L8Oe^jS$Z_C|ah^7jBK$bAX)Tk4dK8s9fJe-&(IhJ>J zcE#rl44zV3un)SjKeN5`JBO#FQ&qVplYdml*OX%e`rR}Bljux6`Qrw_&cT0NNn@7!UPt&h@*D{haF1rQW+ z>J{{HxCi7)NXfSth&M2V5Ldu3^cz%7)jmTwxCUM&>7vjm@MO|;+p3*r?tR{cbWJ}k zKOGJtEzOoN1G+v0@qo;fJu2cF2=b5jJ)MYiqWm|uhJI8hrwt$>$KKG@PqvU z+EbyXCL(^4TTEvcp>hpcBx!%lz+Kbk>+wfiC4(FrGr9EJr9Zb674$R_8wuOm79lz^tZUfz*Q#Fk;c`B+6zwo9`|a{xX6KqzRx+Hb&fiVz zG4AKa&a>9l3?X@p1cYC38V1LCmwAmrpn>w?@_M5}Q~9xF-i#0;6-OC)9??`f$q?IY zNv_c$Ls!|YBa03*rB3YYKLY8MggA%TZRfH-531QvW_Sa1D*^6QkTcM7AyN|$fT|D0 z+qQ3OVys+S$lMdjdYW8yIf}p7_o0M%+Si{R>PA;?MJL;IBaL{t$BQHuRlp$&KZ+ET zjXEr~#d_Ecc#-#H;rlGm0lwO`egmu`!%*43uX}XF9^HaZnMd)x}X8jup>JmNt&*PbG=jqBd{<~_ZYZc zVA5{C@Zq4VzpI!TwcJ)qp_)TL4`Wp&{Cx3!UDV)trpO%0ud!Q<1Q5doOK#Vr_vdW; zDv+Cn(w{+;Q6pUrj+SFf#({(DYzAm@VH|w)c*O4Zhk@Ke`Q#_)o~{{B^b(g89>ND^ z!x>Az#X?t-iyLA(FRp4|8ok1t5)+#FSYzuklOQ?;y|L4SYAsYfloqqjqV?@-?1mjC zr4k_gl6LecaCDaS(dXhgT_>(1?=c*-rGA?QUMnaG_iPdmU>pt16(G%cCBeaJ?~xAu zgGRf)zyM+u6OYQil6DLUAN}(7)rrE%oxdSNmkA9s6^&QwPfx*kJl(XAXy<9hL=ijN z4G*{Y4#s<1!owzxqf$suknB2lH22I$Z82UeqcaH>fI^2Vqug)fYjrJ?*LKg&JB~V4 zaZ^f}bVx!FN94}ay)oHB-L6r*7o?W)`_jXVsh|`BLAUPsGLHUo$6o*?L{7R?0dPuS z%?I*VCah&+&Xo$|2l?4Iw!ubMRougFi18Kzdv|*gFR>W{WcH&JJud72l=WkVow{s) zeT{Tw;yBKTqY;mSe3O$5jj#76Znkgju6+y~xH^y>zs0Zy%O7i6{|IaYnAt&oRJp={u>`V;=VA%JB<4WTq)SZ{la)R-MlFOoN1$-_xR`u&Cuqy;k;%j|73!RG zqUR6^)ye4$A>EFojN3+zNw8QiYgXoULn1q%q`=dzGL}7=x!U~IW zuIr$9T6thmSvG%ZKQ@ z-(SFN+1Qy#Dy@iANuoUb&mT{HYbXiMPG+#U9z3`itgGaksD}Ty1?Bv@4Zi`!YK2J* z21jXa9Vs;@(W_v8%_??u-EsxWZ5R)M*!XD(aZEi$D@@#nLJkc2%09$H`WMf+2Xwo3 zoW8f-@pOU9~$oLyEeb(B- z9S=av2ojzpJ$UU5WH+sW@~6v3v|wF~KME(WMWkmjEGkqESF-Z12oK0yW!=D|;3ZGz zj!uz+OvwV}xNO+K9kQ(AHofb&5K?19q*svAgy0T(L3bEjh2ndH%!2*qLxF(nseTH> zJI5S%dG;nGRxT9o!Ms-&3Xz_i;4K+ur%omrMR~3nJP%JUn231QesmZN@B_a_y6#nY z%VK*SB&FK7quXEqUTZssYBzB@CrLJOSn>x*Cx9^`=fTG~TMIH+KGvx;!C2S)!-iPCI3)*^E={e}xwh)oR_ghyogSPV5<3{RAb@yPB0J|JMl!z|>_zC1 zr2A%g_lpg0q4G1Oqu!W)@Kc8`4;^;hIm66;9u+W4JaNiMWt2~^D$-M&XYdn-@4MCn z89C5HSV+rezhY*Ega3>==#7m+KZtmh$zmPSRF53rg1`8olf-Sa2@#XX$5%3{gaJ1M zNGTpMxWWb=BI_~F)852=JvC~U2jw9WGt!eiOjRF9!*9Diwxj8ISi zAzFU|{A5$vh9q0i3D?%KjZLT}C;{@m6}^WN>YJlzbgQo6^DwP!T@sMlkyZ<`wfrz~ zMJa}80hFE%SU$UUuMVHo(fnHd!dWFf&7F>6?HcpDbjft|RSh+3^{Q7Uv2+H4n#Gb$ zGPDmLh-hWC+t50Lkz|9#ph-ku0TY}?{nG=KRcpRCnRf9vm>^T2aM;m1C~ym&W#Czb?e0rubN2^Y{162lP2A&}Y9bdrTbzY)8fLn_f$8 z5b7w7IyOW)@Wo?%Z}301I*Z%e`_4cDnv^bAqnDy#OFyawu{~7Byu@&eXRiy0UY8bW z+0Obh@yolPM_nKrN}Xnt1zAL^z=ebAk?au^(3}i841NzvZY*Up(i@u&PcAV+_sfku zr7R~`_#@9Xh}Wf?ro=ym7*~ynMH+7W7UTX3aIQX@HU;yMKSx92f-HsrBJlWZiT94P z^7-B2;tA<|uxa&-@E4po%A_(2$5@|hp zQp#m}T(U>bo!w0rvFrC-lY!>W`_<36<#EYc_M_B%BMuurKgt7%G{Ps!^g{Q)!1spF zZJXf^v9%Et2*hMW$B-rXh6ng=2o*wngoT59R|Zu9UMRJ;JIeM=yn+ zSLP+g0J+)J9f!k$bn{y5`s#{PbZg!p5-YOY(*T0Vca_XIb)NlH2 z=I#X`SuExO4F;>2?)C_`$F1*fC8l&dzMKoalSIN>94HhG{-JASML-gRcOJiJ)b}y% zZ=w&CqJjWqZpx*?#Cb;lnLLr`dI zNJ9xQ2Xb4xy)O2xbP5$=69v%6TX50OxZ#OL#4CVuOF)Q0bzd|bhd(7YuSDjM+PUbK zvA>H@wxI*M2>0gOXTR*!ojZ+J<*l4=q8(%JWE8228VSGn9{M5$QxBxnFf0G8gnS%vh*?>QlTK*Y9pP+06(GLvU%>~nIuNfXT$d_v6eNwHb}vQ0(C(lpCNQ|t ze*!3QT1E@y1RkD+AJ>lBxLDs4M>WO?J}UJ6R*bV3M8EFZ^-$!NrS3qJOKgP-Cb#t# zKp|TfAym-%c9Dgk{a|>TeDeQ19+m-b$pKcuda8-uYFhjTFD__$UDl&MB4_ChEClMy zB~WtFIY2*M@f5P|{!NY~3`xEkEqT5!T;U%i@A3}_{9BvJ0Et{}YD_5%BiM5>g8k?A z8y(E@-VZ#5XQzs4_#Y4+KkDy%P0DYb{}^%>1pk{sN`l5syim2bla;G=fO;{S`07%yDug8I*A}44&ES{p80yy{ zyJ-00Cee_Qg9XSYa5t#C1x5kS@tY=6b#EAC=1{U3OomZ*Y*nOq0FV#17>K|4^061; z7l#QiD^N=jsHre4&4eo-asi4I7xwjgWy-zqrnWA{#i!suL0T3HnR}%x_ny1@R6WTA z3uy}@huB>cR8YZcI^NuqI(O-ch*KB@!AcPWn2KI$mmr;;c4$yo6)8^V_nie`HvDW2 z6J1TdRe7b^Iu*l6Y}PIw%fE&TsX;M=hx{bzr4IOK?v3_pH&l1y8FXlq`LEm&M{$MO zAVZ|6$E5iwLLsv?cW~69vv;X>!2swjlQ1VYs>-3cJs6E1n#9F z%28c#*@dvaFdp8*k@HfBBTwU-E=GY5pL{{$vjCak8w&pljo zkj9Z|$^q&gBb2|wDkhrLxJ5Sh$V{U25_e7&z`mg&A4mSs2ug?LY*8y|B=hMV0x4hU z;~trWUhrpIR%oeJOg3rM$FTu>qsk2eA|b=(b7iH9Z~vgt^ETKPwIUWP0yBaB$Xfql%n=Oa!7X={F4?1G z#46%|O`sJ<$IKxV*XlEk-y3A_UW#M~^N-6mq<0i@UBwX&{IUJ(o{ARlO*wzNuair* zPGvT3u$789r--yXaU5eZEZZ9wr&H=vSdFg^t{G>E33`RDI7&RFY$QkGD;R`^-f`?3 zNsG6L6=%tZRy4M_Df^S8av!N~4F(X8@RstE@ObLc( zDN}DX63hL(OxQ)E=QfF<4jZMAl?U*UjF4A3VRU;tTjoJ+%ns5vbG|AB9={pnqFDBMWFN>#0{H}CF#yPK;7q;>IysN z>d6-05`hgKT|c&;CrC_}cP4s=klEw0c^wGoo_-vh)cQcNQC~Bq-sW@XzXsTMk>c^Y z3VdNxCemj65z0kAU;&-8nEhM8>po)vH^qs@9z3%8}q9Adui~z?R^F5c!S2!C~6V#p)U1a1zAXYP< zq%EaRh45GV-A*H?a=Hk&J*yMA^oxD8Wv}BA{+lmMC*#G_he=o3v{KYYk$ITBQ*Yu$ zl4Y3jlVUKM!bY1KF})EntgtchrM@t6S(Es)PL3KV7Ifi!8|G)bG4nlnEt)8533I1KiH3^i}8w54czBJF>5Um1^Mt%x1j`D_sQn9k6^~ z9TP`&uYmUE$K~l>593d5{V{cG3O>{bc3SUtK;C=AKg63$-<#6vDa+c0T3V^-#V-hR zPF#I!gtw_z;JzQh&>|^TIB~%X6q*o68$DbI17rOW38v>DlPZs8PSW04nK}8zQ&3() zo)dk6ABc<`luX|=99%0_qO;`qQ^VQ^i4g&;m|w@lEin7bTa>Js~>&1 zFcjW)kSI@+<#rUN@u_hXlUunaA^~irVjaEEE=fjW|7iW?-p7UfP_n0R0dRCOK+7bY zm%{i_v1ANW?nJXV1ckw5IC0%9zfYxgPIl-lzK(nA z6YDgKz_N6=vxX7Lo3mr0*;3})cjT{;+`-E;-**-xI!aaP7hAL$Ou(!?@@3R8S^*x|y* zj~2~xGsh(3>oD7YPpZ;3+tGaUI7@($Wn_^ezjOpN??Iwlr9Zrhv;o7lY59p>#oPeI zCTLh<7g9V{+u5LA&Lo3D6kR{A{x=ER&u2kA9*%?nHbc4V;zcdMiupJo$n1(NKki;_ z=O{kE)@nwpaG9bhM4`_#%W7rcWcIF+9g6PVB7|U47z0NYCPnmcJUKg~Zi@r< z1rzuJ4Wqx%4IQ{&rU2Rx5cv_h_!)sE82B#B^GOnkib^kvu#E;vjizbf7H9ePH4H1S z-?LrWoeH;e-8Ge<2}1-7hzb2gO;#i;J6TTu9%=5EGmzTsUw@2SoGD|z=O+0iV$U<9 zbc)!$tEyNYO)b6m-}xz;9|MmQrGaBwxFuLSbjDsCoIlO0ynxABN1P34yX*}&@>_hU zw>U!>6sF1rs`0bRXItOf{Y0b}-cL5kxgNs;W}$6M##sPO?srJGUK`~=7N{h43yB3q zq7fi)08qMZaO^k0-1}Z-9pYN@{>1|dL(h2nNRs1OqcRc0cQbyGFM^q9gI+bp!J`yL zy&e0M79PisB)VV3d9%bOx;Vr-3x(Lv1LoMi>abBNfz&1EkqE>9$qG9tC&)9b+#I;` zAgVz)5-fYCw!ICY2$0S$65Z~F6sjY3XPvC!Yk#oDLdY)&htmY^&`Cn5lSp&oYDdW} zX6CGGef4pG1K-EHTz`&$*7b+%i0(_E3eWE#^_{ z7(x!){PFQ!`4eGwB$f3efOt_O2-`9NcY+3`?$rjQU^qL<+a?<;(i|!srw)W=ONLGQ z_eJ`Mr6HOGZS8hgGj-t+%c&*v?fK2X!Ith}%U+5UGxlGec`dbTusb94FbH zKm!3R$C||1Wh!SP2wmyUx}B~JDa|f8bGOp@VS~X^a!8_Hk_l(aQ?5YLLUocq3B;rT zSVhT>D|rZMn|}@Fulo4NoUwuq_KA~-L_>>~FN#C{%0oyN+A9_OWGya%^@DS7uHcB*dQLI-^jU~}?EIegjB zt1NBAL=IA((AcqQDv?`wv|x3@bzRZ$@q6(A6_CS*?Ost8{hq1@o)!l=Kw}~|@Bay9 zh@rLD>tW6k)X4vZ81&$$TCxWtwTa0Vy{b07q|k2oacq>Ro!3xNPprf-&DKoDmU(Z>41Gje-#*317nThZQX2~slC+LL?ZG|W zutEw<8aFN!?mQIu&?fY7)K9%TpO(F)fqk9GO({}szsHMUQJ4j9Yn=cuAPpXO&vpjY zp&J)jZs8=P#_2y(pY7+|zs@K>SF}ntS7H(JpqSM9e_Q~v7D8a>SB6cBrm7-r;G3}R zGYhh=pWRt|`zX9<(-JCY(G;@MK4n^EWc6&i-dNTf_C8gMcE7Y6bs`{dknyxyA(j-a z_U{f_Oo$-hPF5`jM=dL7Q{pkDi4tCXM&~5Q#}0BsV@_#h2Z{(jMFQ<*0{6;~*jOC( zGdzEcugv_4;-GaIde%oc0QjGl+BL$za?5cAMG-b|X%sXw8Z&u-%h^!b?DoGJqD55L zqAtQrP>J3L2NqG-W)DIuI*5$$KjeBvaWDdPmA3$jFvAiF6ean5%Yi=~Pu9dKh#^X$ zX$yQ8A98vtaVdCUZ%;J-xia-q4ELc=z`@C$G>3E5SEXa4E~$UA2Wf-U0P5-DcmNDeE!gDnL7 z&}srP7RO;cG+ZJ?0ElamFbuT?f+XCZxZQI4&F&mlUci3nNkPB>nfe|PR$Yp`iKoz~C#|*U`OodkcEl*Wj&2u4_*u{ZACLl(y-yv*sovE`Z9VJue2y4e zt;9x_5%bbT?zm}E^E%P}N`@Zf)kxAtln~&=G~Cx~0g9^C|L`1<*A5^gOK0zkDX^}C z$IkRPQd&t>=vY!jtyK~5W5)=@3QYAhKU-7;FWZEE>voX@hH+xRftZ*HQw=V8tNc98lI=~4Q9as@%AcAqwh5y-w-5?Z_t8$B^VZkbG`KeVGv zwA80F6Eznb4#6A?1^}WRAgIinP566e#7)qO9Id<}%7h#ADF}X#(7*f2n37g~iO*Ei zA2==+#(()_q4!&NrQkz>(_XM&TwFgzeC_AN?;<^hV8&fsePwEdP5j6ijt(!nOE>Hy zg>b&-mM3%1Yp^&lbXnl>aJz+{#*HQU$&ERxn6852js*I;GZdP z$R~{V1gRWtbU1*tEmJaj!$pn&C z9;lz27?c!?4ddb^#KCEJt0P}2VD#fR+iMG>+UB-wvN|iUJ7SIlQF&{<#b+(W%yD7l zt=?X9dLb+Wk9rYTrFX)TvOC1GrTDfcL!@ZV)BF}>`NF?5qtQ<`>Jc-D)WoB`eGx=0 zfa!6qhi#F5SpWJ{W9JQ~EcW3-h~mu^$L8f9K22HVyDx|{QqdNY&B6#2n;JMrnO*bS ze`R;{HtwEl5@vip#)~&kXfbrDdR-z%w+RJ}i!KBAsypU_qaF{Duyk$X$+X9xHk13DiHo63{bt(vBS~l1Ze-2@YxQNHH)0 zz!UpfvRPaaauQ*(G^#)e*1omJcxj}F83GD!9-gO6FH3qEu)YXMy5T*?FFs?wo3Fz( z=tpTIkd;W%tjMDJbSHk5zv;YZ2;D^=0w6tQ^qNRF0lG1ERgsnf{wCFfz-fRt#MG$8 z=i;ouGi)wQ+B`0|I}_;%u|&&!Jpshz{Q`8=`WxPWCd2;kx1<)F9mckKflmoEF_XXs ziBo`V&x8n>`2cy5zO~VsgnyS>=m6qTChDO-myKuWH2a0@yPkO_om!IBUwzeAy2>%p zeZjS};I!}PDL41?FW5Q0l)Vysb%VcY|ATNuJv^GvXY?0k6D~Io@*l^&A&gKIWb>{~ zAo;&pPILlnXsE?lY6a*)eRra-1ko>U{?kfcrKz{+&n*Bvp{Vb3+g)k=nQB?xPJv2cW$f^0JxPV!iTp z00@}?eIwd~QAg?e=o4C0C@w!91|E4?@VodV7BokZzCzc$pU(sD5=W9<4?X=`2nGO3 zAw`bamoI3n*e}<`!JW8(F~?+o`KuoVBnG>9q@~YFvtty$B9}m3bg{7w{zvT{tmgcV z*ApWhfB>@UJE%UY)U*G@Ywm3BRuoP;rE9PK=}SyQj3^Cu%xz8^Wx5G-939Q zqi6HHbHfQ2NG0UXb`B;M~Z;f-)=-Ueo9ZNwx1i$f)Fm zjOdG;zO<$B)Pc=UjReP>oSGYdN`jR1Y$dBx#S`cdzd_aD|KFLFj-ivQIf+Xt{$66EFt1b}0 z8}M}f+>kS=WSF>&RtKiClu+>Qs)iDWef5uFUGSWRm$+YSulB5X9A|CM_#WsJ#nI_P z3))7WPy|Z&_>;txsbOKL4(-WU2A=#G2W8$bTjr!C?&Wc>0o>CSiSt4sbyTQ2;8#KX zus)(d31Vlc?tCNToJ+8>QSG3u?N|LQvqOFD_x_L`T(@nYY?P!B+TDUG0|2IIC>`9L zxSju64{no9q)U!~&ZSu|U3s>;T2xARndOK8`w0*;VO;yY!nH4x=f9bn3(70r)bQfi8ml5CWm$XyfZLGB@DV5HQNRiqhc4WJYkdl6-R{0Lp<*ytw|h@~ z7-OeEE>zRtKPmO^N52oEItbUz&y@@pe9|;i9q3-E*M}^Psf58@HIH5f$+?Mf!Al|e z(Y3Sfye&=8uH+g>=m>i(nnP!809M#=h)~u@9mwOO02+i&r1&3<1_lu;r6LGY12CzI zQfk((xCXb^u4pe3|KtFB=CRh)2Ymh@alEa?6DbBNZTO+5hyl|?uS!ik4leK#8q#>_ z8;x}hJlB4?)KP97_gVuQ6i2nyp>bU_-PEYR?0cygk7Hq20`_+>)<$TmL#$O zCXzHaj9Hn`&|%p`5gN+iR-T;HN{oEiBJ=Hx4HEBJBpkSPf6bUUPxD1*);Uy8h#q=l zOO&Sje@{;*W8Mxq+&;416o}-;k7n>@jomiO ztyydcH2t%0-jxFlc*+@__}d48w9}eywP$V!u_TkIt!@6q879NMZug~JEUPy58o?6t zFXR6fA?&-mCvQ!-1I{+Z&0RZb49~18Jyc)xc|nBHe6ZRZnER+RR?B_j`|;_!RmF96 z>barC$@j6W_hWe4->S(wUke^AnE(QPc-UR`MMVK=im|071(TI!Z+c5h4gPru+Ef+WpIyzEDmdYy3aSiO^+wkN{yZHEJ$oKVs%S~fj=v3L64}lbe*Xs zs+c(m!5H({V?k`5CqziLMPO>Ok^q03&t1&OAwk4EMS2bTbEBfx z2lg}V_OyU?C#Kdp-UA?pW+8 zTOii);}ogF&YNZSIA&tklN{r)>=yP6+tsWxKNE)2PyC+5tOuK$0;D2ArP%NMFF_3M zNlH*&uNs9-u%^4lG!YaWnBATzu?NBpM5Zn>AQAI@nJr|attd#eRux3W+eFQoRn6#0J_S-&lGO`$ZdpMuDkCNner#goz$7wtnfF*CUe~^WSYYuP*a(N#eBU_SFKYKQv&|EuMGxCm>6nODlcjs4Q2 zrYYWwGQ8C>jS;laHisiGotI$I!|)u`XiSPd!SVu#7~k7TRilX zN`&V78!z8izF)Y^R{}*;U1+MiJ71-buxZ$;tp{G|;}4%^=k%>Vpa+#Gfkb{0{#%&ZKzhq8zg0PXExV+{ zt`V4B=fu_}B-l|WA=p9Clt!V9mzG<3bMOWxN*{{Zx=FTXd0WUx*_g<%@nDV+xI%^R z+9w0I`*ibM(cx-P3*ycsPm+*IjQ=X3D(uL6leBLpvpOlw&SmMxC)g3}E|05y^s604 zQZ6%iMz(e!-0X=V8qS;h>Z9HMR1yD?#$!9hETh?AKKjafghCjGMV`uEz?L^k{x*|!;#pFP{ z^jkrA2|-jsb2l7$*V{(}IQuK#(83_tOQ~FaLtoUK4~mS$x-9!puZJ+{Ts&j1^Ki%3 zet=-voA_=c)#n28)Sm<%!(D_Udd^0>gJRSfo?I*4kUR6E-_P2sKVQe4(N^NyX7tAH zY-=0V380z%Gi_Gh=q>QOHblDKUO3DqnO3FHVcxH~62sD@7 zUPR?t+qqsW-M?Rx3$LIPi7Dur1nf{MX0;Jxs-Vqsroe}NZhZaal986dHUB69tB-R_ zocwmkR!l3xcANx7JmeR?(2t%U^Z+ zH48TtzE(XRM8~lNPO+kOHgi4cc=>3!$L;c$H{(-qQiiw^*cf6W1tV|3?`q_EmPQM0 z?FT{8CFWQ-Nlm~?;q((pW&M9W3}16m*~4&<-jm@?_TXnWh3{7wQGBd0zw`*$pLkml zVX;QXN+;M$M;1ntL#61B8#H5q#KfLc1E8_PdNaX3YNep6pl*((NU{|K4rGWDqzWwo#U^-gkpZbL7r75D2XSX>qPE z%S8=gFwrFi)#C&!S^Ss@{z|P`bnqBGvPg5nNMIp{2qsLJ!X>*(!;a)jW!FugLd?yw z*8l-@tC7Ri{1Y>KQmdW*xp4ne?QBXMYnEGUEzr^T2u@UN* zT<5X;a&ZKHis!9mu8U?{ZI0u~oc6@my9q?GH75xjOH1a8X!I=j&gFVjfvyM7FWAf@%S?IcL%FaQyuyh-3s{-N_E^Ykxz_x6{z5?zsnnS^#d6q^v&b+LB{6AXz&}iHt zVp!b8xFp~No*%QA_ntW?f2Oh%9J}umhZ>l@Lr>uzOw zP&xvz6zSfkMLJpt!K6W-E*d^MOfQioJ;X(-kutZa9wZ#bY0|8B(=1oxgVS>zxqGG2 zgF+{zpPF-|oYbaDWC_}$@3)0b^SG$6y!a4@$l_sR|JMFKN8f;33J@655jySuX^Z2; zjcPmgDHbU9@#Ix$I8ZsFlhWRZ`w;ihv92k0(kYqfGwm$A9+7TwB&hepmPO|nf#(He zDU?weuoAuIP%}>M#B4iybZzb`zW!C8bU3(iDe?p0uDiDP=sc8Che5#DD+^{j7S}7< z{CzAxoHsq1g{%B!DU7@p*wu8*0wJs)PL_t5Sr)}0;%g={%%8Q`6~!k-Sk}yRE^_XmG8BDpB(nqy3l)-~C%-tlwXW&sT9;OP?OrARrY+N~LmL=@a|I z6faJ_dvFA^!r|2J-)B{YH;4Gps3aRPLJVOigR!~qWFF=aQ?FhgF7%u5uE%H5jKssS z1yc97^!qYVSTdC2au9!J!S;t>app?BS5##t4I4 z0Qzu_j+Q%Ynl9{+b~YorNFR3l#v$HR9lgRYhFmh{}^3%~U0^NFg%(|YNK=#tko zm6awYzbpK@0KlPIHl&@*NnZbX%^aQXPqJLeNCmDTdzg=|@*>6JcaNjaR1KxUiQ9l= z)il+RM77{rsY>OTT_l#>!7Z+U(oyNJOkn{={DIjU$`1(_Pql8p3*6Kv^g*+T(S7^r zPUmyRtuhj3^Sy695);){=~$N)>#w7a3$4tKEJ$`S*FaXx9PjH=W^eP(y#gP2}aYg0- z6?-1LoOhi1%^LAl8{anF#+W!`;;bl7m75G%ow8kFQN7LQxj1yrUaHvB|693(O3+4J z#_bqM!mFNP-+4<(mY-%2n^qb7@c6Xm`%XJBn+vq(e=l}9S;w}Tf*zQEtc}teBiAYP z_~F~nNv7k*@(pjKKZnt{WW&}qemtcSKj7`v&HDAQ?ibP2S?l3umZ-T z>)_!~&ZX@#!FmMutE^g#9KMzNQo^cMYZ-X4x)Z~%B`CgQL=^Wf+Fo;((|CEstAE=M z(%R?SMZESI>CSt1o8}z%4l+U%|Awn#;#2Kv^pwy1x#_^wBhR8+cRKs4iZjLseU$wuJ8!c0rEoOFCnour{q~mR0wSBdloq#h1;(b0Mslj_8 zEHjiD?5-D_Byj#bqp={ynw&U|ukzC_kREzU@lf&5q9Oy=FSp4Cbb(#U?ReXP7#6~2 zI!I39rf@Tq86a}=kPuK>&27VHFvJan1UjGwW(Vd5Fzo%&E}20DUZ_A4 zjY|gG>-O=@R$5|drC2*D-+1PVi7#mdSC0+_OY@MXy(>OI1@p++W0?}@RNfbbg>YlY zSvptjWpK(C`XRa&xNb>$hC_@}LlgW*4h`!9C6ogH85$vG5#|1CI5j`2hU`d*%#|3` z`tYm6QT-k^5~lH?QbNo3`W5)KkL1{|+Eiubi@(`vPXk(Jd2(f9 zve*9<2q9*e4^@)F<+hIzzbUr6y)%5FAm~WF6M4Bo=TZ<~BXCK*UwLD0@}y0_bGaQUr2>U3+I;9k8%S-=UX7TVt3nH7;W9;#|1t>w|b(z zt5VJrHU_1k7dL|SJIPr7zBvNBW+TQfTdFpC!Z(@(O7aEjAkvM5OKGO32jYu?8tdm) z)f*igWH1lw3~BRV%E7>^zAxliRZSTST~BB=E;o{HB-cX(s0?I60PUkFveQZ;V5y;E ziU|61x?w#2d7i4+jQMt@=Y`)?NPI9nlY5ShxpML`?L@fWK^2xr)Qv}&gcg|nOs#g5 zAhFA??`0+_1OEeC>Nhwt13dBfcz*tmuKd7R5V*$w=o$^yWZOb?40kl7AA9N6CFA;?uxE(!uO`2UV(p9J_eZAhB z?#T7}Sn3n7v^MmJ&frJ;EGn&VHuOgeuHWq|hmQ{xD{QV68tmCzR=Y?d<;GV033;L< za&r&urJJXcKn;W>gU4QfxfObTf)9Pc+S)JEJooF|#t%-MR;eJI6bqBqv+gO z&q}`A*0N^`lODc4;(#wMT_q_f{}?WY6($GH79Br}ysoWn13upTW50mN-XfrF@lD=@ z?P+U2j%@ImZT8W3x!ZgEDoUkZmx)j8Okw4{Fwhpb3F7!$Lh*f z_%xgfp+EFu$W_ttvD4<(?S<#V*!DQ@uCg+E;G74`EQl4!)eC|IDx+VQjs6$ZY1&n3 zG`KL}I(bpqSzVD{rSX688(GEBaJk0hU3)At0T(^&5EqPiiqG$DX{3Ek~@4 zYN8UI8WbTp@^?!8713KGiU(7}#lcTMwWjG>A_s5|fN_7FTe?C_7*Rmb7G}l7YNl6@ zYWw&`;1&+Av_t}oTKa4VwFmdPwKm7*S`1z#joaM{10qDkQr@eq%G(m8Txor)Im9Gu8a29>XF4*li*n>Yvp zX^{rOPon&#bR{Ey04J?OwknJRf`$k2)DN!1YKxOeg@QOKeWLK&O|x9$hgMI24Lbhl zC?I(jJwMz?cjp9%T5ZM|GXON>bv7yf}1#3POmMGX@9D6*fmtdDSDr8VNl z-3z!y4gWKxl!24L=9aK4cs)BxFXuI4zDE-Dk)jZ}QL+47nT~TbAXkl`ef7q8p6V(ww4NB{&ZQcIrNqS%N>)P}AL5?t==^=loH&{=qP{1~*#Umbl-dFGJw#!i*6PN-iOB@8&hwYJ^Rx zt7mpzg4%bgKSK$F_qRHoiuW@wSq6&)FWoy)Ahbga}KG$sB3TiGA6daIU zjcPZ?J$9)yXm`J{EG3RJ6nBr^|mbU`*A}?LBj^KDgG`F=Dh$ z=&>FQwb9{_sT9G$V@4+WeBGyp_xxcPZ5qIA0judN<8`ce5j<6tj3&HW0KzqqRJn_$ z`(38f`Y^z8= z>d}DGCv=Jc`d~Nvh$VI`7O~PRNp+q3_H~tNe;DM8o&J#A5?B+^Q+#4dfd7RbPrZ5t zVN#;oBL@NWh*AWN;3Fy5XEwyDCJNGmwF+fP;fNcB4acrJ-{!UVNPG4z?n?3R1BUQ4 zQduqDIGL^E*tgfHHhL|+R^02-hTXx?br%$ARz17`P?KNMy~D zB{G^wC~G7}DrG54gY1kfHOLI2l6?zhU$SLQW-NIVl0ufTWr@aaW_+&i=llI9zW1l+ zhv%;6+;d;&bf!vkY zEGA`eP1%d;tyItDGhbN__RQkE&s_hT5F=&SXicGtEb#K(-fDQ4D5x%-Mq#xG@fn;9 zOx(R1_rJ>>jx00bDi>ICdF(Mos2+>LnTSIhcsstJaRX;x+mCm{G3fer;_90$F^f0Pzo!C9NL+t*@_9kyi_|vca zMZ)Fw-^rKs%gF0$(<5SmE!R{&3(1_uOHRn5C*FF;x0pmFw}Dj9{^pr{xkH)e?mev`rWYfS)$g!fl(yO*;|-wooDdIhC| z$A%Y|+Yymj-xvD$Pt4!zx0cYN-vzk#q;@EP=o3m*Oj2l!)603%UpCrcE`GY}M7G;P)3c&=b_ki>P^HpaSTyb+seuFng>U+=FAjN@4G77m)2ZaDVlHSSxRS<+n(jPuD#F25$lm|t&!z8!#UpXa36dKND1NsALKnd2iaHK+ zFnh5*Zhh%|IZPzNJ3>J~b|H92vb8I=>s6M?h$6?@4g1}_rGwdA1A0k?Yq|vcaHxbP zLi$h)Ft>ZT4ple@y?hHv#HfI`F|k0|(9w`J9;DHBCIA933hfbE_2Rp|NF)v&t!3}E z!at$0a7*g#&kj}*Fhj|;ER%eCI-^j%muWCh=f-xti<<)CDYAbhq-TXNB(+QGh-!fC z&Ia|NI_H@5$>G;MTDm>QH7G&qh!W0>c)oa*<3cw~bZBYnKNs%Zf0$w*h@>E$)DeYi z1PUMu)9=Vf@3q0Cvm}8jcZ|_S5cScXW!2WKD6Y+^56Co;7%ow!0v+3jn7$j8Xsh*Y zI}?%oN=MI$O3Cs>kyN{jQ&JUS&nhdBsY|jWqRy{Scw@YF1~BvS|C;HV(1x(s z3$-<}7A8BQg5KO1Ev91YfymJ`lVVnvd&hj0@^9IjrhL!nQgP(QXwL07?eBDshe*u)>uxlwq5GB>tH4xOI&k(Ull0@UQ#2R&<8m~Ce0^*C1` zvN(4ilf)q*EsOi1AY>r>H{OMB;j_$47JbJTO+_cE2S5K;0WE0&SFg z`@jg#`z9_fj!7&Y$sB^x zH4mv1PGE}$U-!2M@uU+1Z7_}C{q82Ph%7u>-0YP8j8cs*1>?yI*PQ)YMW4icCccYx zyRBx+l${fQC_C|+=eH2Jfd>=YCOoQ{6*W}MA3*pY+nwe2d&^e2;KRjplT(5muEO;> z?A0mG+{f@MMAmZ1{XtTEd&6qp&v8Ely{Rnw(S%!tkIp080Ry}Y{#t35Zhy9Gx?&@} zzHRZ^!#3D!LAOGAqgZ-v zz7vKn-E@Dez`T+tH#6Y(K>|oc!Os6AE1rub(Dc~DD|1Cti1~lJ6@qBOvd^!t`{S=X z0}1Bfjiyp48&^3}ua)`tVjxk-mR_F?YM9bWHr zS=qB1d{FS2SQbHTh~)k8c8M1xgNR3z9U%qO2)~AsSAnqgrhE_#LgMxk2&O9r`7Hq@Cm{R8H8x4R+rZDPEe5lh1ze@ zpMLyh-cj_kYQ7d;Ib7m*sy?yU`V22}h3ed*AT-GDZDGR_D?0aluQQ3?`v~W0<#{w* z&9;^C&I=hk`0BqHOo~bvdW3@2Tn|rB{VvnG(*_s9H2lFa4TmQ%#Uxz5f1CGd4ylWO#NcEYvNwSSu!1d5Ah9XINjBFyVO*n=l!am4x=@OWD< zm7kO#OU$ry>3B=HeDBsiT@^2Thct~|pEdabW97NYC_&cCtr$rPvFMx=OIC=fVjmJ{9+F=exW$d} z@Tm(^z~inFzy^t%R%q^n$`2Dv7;7t^e0lB}q$YfM!Q_E1!{t<=v|FKE$;1gA+U^7f zS3ko9XSIA&D-C3Pq^`RQn%Im)_`qdp{IYi`M=`5&G8?940C(C?c9{YTYuK~5G(=#cXdF>pa#oroAFs1C}&wq_g4U*djpV{dz-`U{=4fvfnavpMo4 zMv585Ma~2#eussehrIsyDN0LjiPQ+*RCyeb;)cg-Wl*M%DU?F%i{(De&i^5N_m;ZO zXZYDAie%V5Sg0~8SQv7*OUXY&jxZ22av(*=g$)z<`oy+ouZM5FZHs3mU>8Ib6x*ukaY4Ta`c9V_(^wadx z7Mt#wI9og)YV1&HbN*66-OI^J;6+e_&rYIP{~TVIEB*8Pb%=XI!VrZhB}e`g|IbH? z9D*?Vcs*QCAsUI-j2>UZzV%0W;uBY-ax=Wl6$_WRs*iG~<7CWv`VT~gIQD9_3O zmZ~+ZpB|jHzPBjE$n~Q8^fi>EY=)9GkITK1DGZsgTigw%nu%Dtx&*qFclS> zO>uq>erA^N&j%k^%97&0D;kDPr^KWNtcL0PK*Qt}W?oF#@caGq0KdM?{XZ^O9N+qtAGU`E# zzy9{J&2&vC!4|%tDL&C&htGZ&xz?5MTAU93W^z34iY2gBO811-Y_>SeVQN)iMu!NI7Av#r1{b?mN0Bd~D+OG=VQZ1AyJ77RtL4&KSus zuN6eAbW^Kd;_ukVVOdC&nnLu)JAo8p_qOEwO+dY0qG2N9hfmIZ=$8)c+ne=0TY$uu z-iAfun839^=1)NTf^0cTsXE62`UNpL#Y}VjJV6!nDt3urGDWeth8Dd;@*_cGUHaND09W;Q!d#cbeYge^CTOZ|nw zr;}-eEfh|~bSPxpvzCQIP+T`+e|9jRHCovZzU4@m9YAc~mSpV@3#+@IA4?&i5U zg4HQGe!!j9P;UES(PWnsfwBU%(|Quz-r2mI@;YMGP>*L%JSD(b44CNk*`=|IpautE zW;dvqMEZ9xWGK}~-W6i3M|%2AwPHQNfm_I^t`qnDSc?w5ez*D=(p1fFzYSK{^jqv; z*7jE7mqG#-Uxm;U0kSgwqaj{}XpL8|JvQ!|?gR*0Fvh-qR=Q^UGD0WK2b;bc9lXE0 zu-@^Mbku&k!FZWLcfnd^jMbarqJi!nn9D;mBXehLy5a?Ty&3@5>*mw{RS6WwNfWSK zN@4?yD6V84!RV%ZAGE_?=c$P83vceV=7ffYN>Z(guLtQ;wd ze@O^qfr*{N3s4Q2^^`@>0Y9ihC}-SFl9p#a0+zhTx(@F=?c?tZ zD|3BCSLCo2RP!8S;Yayyxq}V#O^{<*x?QapQBZ6t8&C6fecorNeni33aAi*?eg0l# zk-dI4u1hfRI8*Msi2t4<5ruEmdX%$1FOpHr-|a5*h3Q zV8y>y-^9mBaRfTLlfd^}0%~@1k0{8Y)h>+pF_rrDY_+gDu7a|bMW8mOK1;CTYrI`q zEJ==9FjMiXNZ{Dr1TD1uy{`h73N!nqFP^9>Prfjxue*QNvPc30&hUacN^N=d$ej`` zx<}aE_$ZyPryI3;ycjVLKgWFB@I1?lS>h4@8jGs&bq}~98zLmTaIrrGk-JKG8MBhT z^me}_AI1q4SEh0#3Vo(){$ge2Vf_Zaz%^%k$Z?_zDpm415;@VcafR&r?Y;ivS?-C` z@{Y`xFE)?HcRg9)YaD92v1+&67t#+sM-UFRBwn)RCy99Np3b}Z5 znn2Mt4cXBjLiJ~r0g~WQ3qX%U^S4IOUn_#8+_YX=D zz4@G7E6>du0Y3hDQ6Np$cQo$6cWA{gq7;qQ@Bmt7I?XVymBXj>6x;5xn!DL8m#fdp z;|5A$LWNy+wzPVA4u+RWBZRm*SS`s}MPF3fl%_cvhTs$}p?po3PP{o>7aw$PHr-LW z3qGTlsi)5cG4=2~K>QtQbmj480Mm4$?csLVk8J2&%JN@Dlv@9Wc{0d!!j3l>c!+lW z8^ThTT^L@nNbpIJA?t0-83v08p(jEhydAN3RorY0CVjw0uMa?R(KXX3>Ny|7wf8PE zi;|3p2EiTqgaQ5gC4(+ITMY>>0Q4{O34lrqqJ4p*qNAx9r6uF zFhv9LK@31duu;c%oftUJhDG0{VWR3K0|h7`25+g~i)(v|V1%>k>A%UYhTd}b&-E>X zX7KIK4ildt6|aGy=IEitnN3FK_W_@L;w+(><^f>31NmX4-3Z^~;yI#QYscuCTa_cx z=n9- z)w5(2^Fsj|hPI#`9dbBLEMj0aJ_fK5i^!+%=_@7P1!cF(jt2jS*L!b==oWYV_)!|l zF5CldxFk+!S!L$r)VupMfk}elnX^XMUI$Ku5sRMsu}+L;(|VF4TF3nuXj+=bnW?ay zyvT3{1{oc&lBY=nD_z2r!41aGLPvaMfAwraa|g_janh^h@`Bek`;EAS`HjC}QM`z3 zUf@k8@J3eeoYXP)@2*Mc{RuO?$Il2B$hCZ($kTnWI<}P4yuay>j5s`ggA3q8OXtVi zlTik4d1-#DydMX0(&_b7js_5)$L&@pdSTIp;YtP9+Tfw=vVfC-h$s)&f4I@2Z%F#` zzoCF=uA@+Z-AJp_-Vbm1^DBE88m2jmE0E!LhIA_p-t#=X2b}kMT*98?8B@9V(x7Gu zlMlS3*X7!y6LN~T)4oe&ikf%T-=69|Xj&|)b#<1iJD^V_gj9>RIlu#s?vU9G{XCk2j8QH9D+jbTXrLBq4=G6t|AqfDqK$6psT+BWz7YqC0 zu_u2n7?!}|C4r)LsVk7#7YN#CqSpL|-Wj$w#9P84`OHAj0#2JFJ4Ee>{@dpUH%8p@ zt&KRb>9OW;OStsgybvUSTEGCxft4j3;yCIi@_x(1AF%6PIhyNTkQPJ`kjTugNqbgM zW^)&Sr1U&J?$;#Xnh1CjTW@#BT0y)SK_}Tn5|#>c8o%jsSS_>6z=2J7J(SuZX80S3 z!pT$Bj=v)wGf5oLR*?J`VKlEd6{7yQrrXci0A?cy{D2X2Jy@d#m{8qoF0C!m$JinK z%s^N4PItA?H9i(S;#2Xo=+U1nqHcj47WIUc^8#43S6$8oJ3`e4V~2Y-(%ZzVw>3@?oIFWm?gt^Ems9Mud_-tS?jOgfP7 zdA)GVIa8nA@WcMG1sXdJCuCMCoM=S)>%VROI_Pq^;GsVZIl`L^5ccjL*nqm_ue0W( zf2lv`gX9_DF2Msjh<;Pdg|49Ov3`xpYzQRbXkrpAXCql<){(Wse@r z&4B?uD(vh)SfJ=#0=DbuK}P2P)jkH65R~lfqpm^W=l}nr5ga#)j%2Mg+zEfoT5~in NBLh?YGSr=j{{i6Zjw%2E literal 3624 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 OfU$wOezmSk?Ee7*nu<;U diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 813a6ab..5ef3649 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -23,6 +23,8 @@ const Home = lazy(() => import("@/pages/Home")); // 新首页 const PolicyLibrary = lazy(() => import("@/pages/PolicyLibrary")); // 政策库 const DataAnalysis = lazy(() => import("@/pages/DataAnalysis")); // 数据分析 const Tendency = lazy(() => import("@/pages/Tendency")); // 趋势洞察 +const Yuqingfenxi = lazy(() => import("@/pages/Yuqingfenxi")); // 趋势洞察 +const ReportGeneration = lazy(() => import("@/pages/ReportGeneration")); // 报告生成 const InvitePage = lazy(() => import("@/pages/Invite")); const WorkspaceChat = lazy(() => import("@/pages/WorkspaceChat")); @@ -104,10 +106,18 @@ export default function App() { path="/home/Tendency" element={} /> + } + /> } /> + } + /> } />
{/* {t("welcomeMessage.part4")} */} - {'很简单。所有集合都组织成我们称之为“工作区”的桶。工作区是文件、文档、图像、PDF 和其他文件的存储桶,这些文件将被琛海AI转换为可以理解和在对话中使用的内容。 你可以随时添加和删除文件。'} + {'所有集合都被组织成我们称之为“文件分析区”的存储桶。这些文件分析区作为存储文件、文档、图像、PDF 以及其他类型文件的容器,使得琛海AI能够将这些文件转换为可以理解和在对话中使用的内容。你可以随时向文件分析区中添加或删除文件。'} {(!user || user?.role !== "default") && (
@@ -172,4 +185,4 @@ function DataAnalysis() { ) } -export default DataAnalysis; \ No newline at end of file +export default DataAnalysis; diff --git a/frontend/src/pages/GeneralSettings/Appearance/CustomAppName/index.jsx b/frontend/src/pages/GeneralSettings/Appearance/CustomAppName/index.jsx index a4b928b..b465519 100644 --- a/frontend/src/pages/GeneralSettings/Appearance/CustomAppName/index.jsx +++ b/frontend/src/pages/GeneralSettings/Appearance/CustomAppName/index.jsx @@ -60,10 +60,10 @@ export default function CustomAppName() {

- Custom App Name + 自定义应用名称

- Set a custom app name that is displayed on the login page. + 自定义应用名称,显示在登录界面

@@ -71,7 +71,7 @@ export default function CustomAppName() { name="customAppName" type="text" className="border-none bg-theme-settings-input-bg mt-3 text-white text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5 max-w-[275px] placeholder:text-theme-settings-input-placeholder" - placeholder="AnythingLLM" + placeholder="琛海AI" required={true} autoComplete="off" onChange={handleChange} diff --git a/frontend/src/pages/GeneralSettings/Appearance/CustomSiteSettings/index.jsx b/frontend/src/pages/GeneralSettings/Appearance/CustomSiteSettings/index.jsx index c4b766c..5103710 100644 --- a/frontend/src/pages/GeneralSettings/Appearance/CustomSiteSettings/index.jsx +++ b/frontend/src/pages/GeneralSettings/Appearance/CustomSiteSettings/index.jsx @@ -42,19 +42,18 @@ export default function CustomSiteSettings() {

- Custom Site Settings + 自定义站点设置

- Change the content of the browser tab for customization and - branding. + 更改浏览器选项卡的内容以进行自定义和标记

-

Tab Title

+

选项卡标题

- Set a custom tab title when the app is open in a browser. + 当应用程序在浏览器中打开时,显示设置的自定义标签和标题

@@ -62,7 +61,7 @@ export default function CustomSiteSettings() { name="meta_page_title" type="text" className="border-none bg-theme-settings-input-bg mt-3 text-white text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5 max-w-[400px] placeholder:text-theme-settings-input-placeholder" - placeholder="AnythingLLM | Your personal LLM trained on anything" + placeholder="琛海AI" autoComplete="off" onChange={(e) => { setSettings((prev) => { @@ -71,7 +70,7 @@ export default function CustomSiteSettings() { }} value={ settings.title ?? - "AnythingLLM | Your personal LLM trained on anything" + "琛海AI | 大模型私有化训练" } />
@@ -79,9 +78,9 @@ export default function CustomSiteSettings() {
-

Tab Favicon

+

标签标识

- Define a url to an image to use for your favicon + 为你的标签定义一个链接地址

@@ -94,7 +93,7 @@ export default function CustomSiteSettings() { name="meta_page_favicon" type="url" className="border-none bg-theme-settings-input-bg mt-3 text-white text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5 max-w-[400px] placeholder:text-theme-settings-input-placeholder" - placeholder="url to your image" + placeholder="链接地址" onChange={(e) => { setSettings((prev) => { return { ...prev, faviconUrl: e.target.value }; diff --git a/frontend/src/pages/GeneralSettings/Appearance/LanguagePreference/index.jsx b/frontend/src/pages/GeneralSettings/Appearance/LanguagePreference/index.jsx index 46c38e6..9c2a3bf 100644 --- a/frontend/src/pages/GeneralSettings/Appearance/LanguagePreference/index.jsx +++ b/frontend/src/pages/GeneralSettings/Appearance/LanguagePreference/index.jsx @@ -12,11 +12,10 @@ export default function LanguagePreference() { <>

- Display Language + 语言

- Select the preferred language to render AnythingLLM's UI in, when - applicable. + 选择渲染琛海AI的首选语言。

diff --git a/frontend/src/pages/GeneralSettings/Appearance/ShowScrollbar/index.jsx b/frontend/src/pages/GeneralSettings/Appearance/ShowScrollbar/index.jsx index 361c7af..840128b 100644 --- a/frontend/src/pages/GeneralSettings/Appearance/ShowScrollbar/index.jsx +++ b/frontend/src/pages/GeneralSettings/Appearance/ShowScrollbar/index.jsx @@ -30,10 +30,10 @@ export default function ShowScrollbar() {

- Show chat window scrollbar + 显示聊天窗口滚动条

- Enable or disable the scrollbar in the chat window + 启用或禁用聊天窗口中的滚动条

+
+ ) + + +} + +export default IframeComponent; diff --git a/frontend/src/pages/Tendency/index.jsx b/frontend/src/pages/Tendency/index.jsx index ed13570..ee1d549 100644 --- a/frontend/src/pages/Tendency/index.jsx +++ b/frontend/src/pages/Tendency/index.jsx @@ -1,29 +1,209 @@ -import React, { useEffect, useRef } from 'react'; +// import React, { useEffect, useRef } from 'react'; +import React, { useEffect, useState, useRef } from 'react'; +import '../DataAnalysis/DataAnalysis.css' +import sou from '../DataAnalysis/img/sou.png' +import home from '../DataAnalysis/img/home.png' +import tu1 from '../DataAnalysis/img/1.png' +import tu2 from '../DataAnalysis/img/2.png' +import tu3 from '../DataAnalysis/img/3.png' +import tu4 from '../DataAnalysis/img/4.png' +import tu5 from '../DataAnalysis/img/5.png' +import tu6 from '../DataAnalysis/img/6.png' +import tu7 from '../DataAnalysis/img/7.png' +import tu8 from '../DataAnalysis/img/8.png' +import tu9 from '../DataAnalysis/img/9.png' +import tu10 from '../DataAnalysis/img/10.png' +import tu11 from '../DataAnalysis/img/11.png' +import tu12 from '../DataAnalysis/img/12.png' +import tu13 from '../DataAnalysis/img/13.png' +import tu14 from '../DataAnalysis/img/14.png' function IframeComponent() { - const iframeRef = useRef(null); + // const iframeRef = useRef(null); + // + // useEffect(() => { + // if (iframeRef.current) { + // iframeRef.current.contentWindow.addEventListener('message', (event) => { + // console.log(11111, event.data); + // }); + // } + // + // return () => { + // if (iframeRef.current) { + // iframeRef.current.contentWindow.removeEventListener('message', (event) => { + // console.log('Received message:', event.data); + // }); + // } + // }; + // }, []); // 空依赖数组确保只运行一次清理操作 + // + // return ( + //
+ //