From 270bb92c4c18f921fa35b811a0df343338cb50fc Mon Sep 17 00:00:00 2001 From: Piotr Szkudlarek Date: Sat, 23 Dec 2023 17:01:39 +0100 Subject: [PATCH] Add results page with functionality --- ...move_predictedimage_class_name_and_more.py | 26 ++++++++++++++ PlanktonDetector/DetectionApp/models.py | 10 ++++-- PlanktonDetector/DetectionApp/utils.py | 3 +- PlanktonDetector/DetectionApp/views.py | 15 ++++---- PlanktonDetector/db.sqlite3 | Bin 241664 -> 393216 bytes .../static/DetectionApp/css/base.css | 16 ++++----- .../static/DetectionApp/css/results.css | 33 +++++++++++++++--- .../static/DetectionApp/css/upload.css | 3 +- PlanktonDetector/templates/base.html | 10 +++--- PlanktonDetector/templates/results.html | 16 ++++++++- PlanktonDetector/templates/upload.html | 3 +- 11 files changed, 103 insertions(+), 32 deletions(-) create mode 100644 PlanktonDetector/DetectionApp/migrations/0011_remove_predictedimage_class_name_and_more.py diff --git a/PlanktonDetector/DetectionApp/migrations/0011_remove_predictedimage_class_name_and_more.py b/PlanktonDetector/DetectionApp/migrations/0011_remove_predictedimage_class_name_and_more.py new file mode 100644 index 0000000..e403469 --- /dev/null +++ b/PlanktonDetector/DetectionApp/migrations/0011_remove_predictedimage_class_name_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.7 on 2023-12-19 21:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("DetectionApp", "0010_rename_detectimage_uploadimage"), + ] + + operations = [ + migrations.RemoveField( + model_name="predictedimage", + name="class_name", + ), + migrations.RemoveField( + model_name="predictedimage", + name="confidence", + ), + migrations.AddField( + model_name="predictedimage", + name="prediction_data", + field=models.JSONField(default={"data": "no predictions"}), + preserve_default=False, + ), + ] diff --git a/PlanktonDetector/DetectionApp/models.py b/PlanktonDetector/DetectionApp/models.py index 4518c20..a1a6b39 100644 --- a/PlanktonDetector/DetectionApp/models.py +++ b/PlanktonDetector/DetectionApp/models.py @@ -1,3 +1,4 @@ +import json from django.db import models from django.core.validators import FileExtensionValidator from django.contrib.auth.models import User @@ -17,8 +18,7 @@ class UploadImage(models.Model): class PredictedImage(models.Model): original_image = models.OneToOneField(UploadImage, on_delete=models.CASCADE) image = models.ImageField(upload_to=f"plankton/%Y/%m/%d/{original_image.name}") - confidence = models.FloatField() - class_name = models.CharField(max_length=100) + prediction_data = models.JSONField() date_predicted = models.DateTimeField(auto_now_add=True) @property @@ -28,3 +28,9 @@ class PredictedImage(models.Model): @property def get_original_image(self): return self.original_image.image + + def get_prediction_data(self): + results = json.loads(self.prediction_data) + for pred in results: + pred["confidence"] = round(pred["confidence"] * 100, 2) + return results diff --git a/PlanktonDetector/DetectionApp/utils.py b/PlanktonDetector/DetectionApp/utils.py index be0decc..94ded7f 100644 --- a/PlanktonDetector/DetectionApp/utils.py +++ b/PlanktonDetector/DetectionApp/utils.py @@ -16,5 +16,6 @@ def predict_image(image): name=f"{image.image.name}_predicted", imgsz=[640, 640], ) - x = json.loads(results[0].tojson()) + for r in results: + x = r.tojson() return x diff --git a/PlanktonDetector/DetectionApp/views.py b/PlanktonDetector/DetectionApp/views.py index ef076f7..76f0fb8 100644 --- a/PlanktonDetector/DetectionApp/views.py +++ b/PlanktonDetector/DetectionApp/views.py @@ -9,6 +9,7 @@ from django.utils.decorators import method_decorator from .models import UploadImage, PredictedImage from .utils import predict_image from django.contrib.auth.mixins import LoginRequiredMixin +import json class DetectView(View): @@ -37,22 +38,20 @@ class DetectView(View): ) image.save() try: - results_metrics = prediciton_results[0] + results_metrics = prediciton_results except IndexError as e: - PredictedImage.objects.create( + predicted_image = PredictedImage.objects.create( original_image=image, image=image.predicted_image_url, - confidence=0.0, - class_name="no predictions", + prediction_data={"data": "no results"}, ) else: - PredictedImage.objects.create( + predicted_image = PredictedImage.objects.create( original_image=image, image=image.predicted_image_url, - confidence=results_metrics["confidence"], - class_name=results_metrics["name"], + prediction_data=results_metrics, ) - predictions.append(image) + predictions.append(predicted_image) return render( request, "results.html", diff --git a/PlanktonDetector/db.sqlite3 b/PlanktonDetector/db.sqlite3 index 47ebd67fafc926dd0409058a13eb8bae472920aa..8fa877f4a83c1f5b6c70516b3d24caebff0133d0 100644 GIT binary patch literal 393216 zcmeEv3t${Y9rsOg@4MaYlN9>8rqA?|?(-g@J(A|pB+a{zq@{4ZB$wpcOD;_=ZBkxM zt{^WF5wM~{MMP9YL_|czDu`7P5D^g(E21JQA}XSSezX6%-0j`%-BmvMK7lW$ki7e84Si;l3|7cAw#9hWiVKOYcLr0;Qy!pLimGm`U_^H z`JCe;E~C7&(S%crxL4IYYq)=s4>=6zW~u;HfGR*0pbAh0r~*_0ssL4hDnJ#W3Qz_9 zn+lW&xU{(?493Nln+@Ezx$C)JZVCG&dnLPxd4u^1bC8jpzj5B=+~J(*c+_#Rqs>ub zf5d*&zT1Af?S$=o+Xm}N>kZas%Ny97{!s;}0#pI209Al0@LyG6=VFs#dAO=36btpl z!qK6s;bEQ^guqB>FnS;q7#<1rhI?Wd27~>fKu;t%IvN-X4u%53q29n?bR;D5qO?vB z*9ktCC{zea1@A8RdVRb{X<3Ae-kMo7kBf!^dWlOYcWgKk4H6&8@+228RPf#kSt=J5 zkIXAu7UJ@nGs@$AIjR~xI20Pu7RFadLWSZkce^FQ?WtLS3p*>bFmGmqbxIL^6^c|Y z_;8)1UGs4%`!Y-MOjk+U#NJ>`BWJdJxVe0Vs8k5IUJMLJM`HmZ^;mb(y`b7EUi=ShBZxj(o{Mdlr`ZaDFfJt=OjR0NDHXCqM{W9`9OFEcbY!`Ll6B%QFkgsDYq%DZy7E zdDMEl6`w4)rCBD!!sS(?q0v#?S4VM^b&YUK1*}!Mh^yfC)Xy{-=5|&E$6^CG|8#Z7 zMsc0{!XsEO=#GQI@jxUr)E^s|uD9wwSrRX~d8u*+E@|_0NkU+3I1$y+@rl52Xk;)< z>ZMnL;1vX)Sk2)Qnx{+P6VmmMM8}3tr5b`;#BJWp;zG733c&{eqCYeUAD>RCJ%Z%* zc-(aiE@@NRM9a?Y79$CD`MKrj-<`b0-Y1HsvQKF+nG7YkPQ8QSAzXwMzEq|58c>y;(N%W#~*&OTz`e#-^8uW$#rE4bUaTJ~k` zboLSUlmFEd8Cn=sfGR*0pbAh0r~*_0ssL4hDnJ#W3Qz?KDS)q18w%yY>8_IE>LTq( zdB#{Q`u)Ng#T(OeXhyb+j&kb_cH(EwX~pYp$)QU;wlg@0M-aF!!)e*|n8_5EY4WN= zoZJlt3(h#VsCZpb@7~~0zdA;MM6NXvo zt{8jqVq&F^?-Z957fUEnwsvepZNS`gOLYq>UO%0CFx)>9RPQB>E><(!x#b3~mOGnU z&JA%dao^*f=Dx-q5l7)3LUB@1mZ4lz9;LY@D=)@C+v z&v18fmvY@)1?Oa+W$$LMXGho;ww#^Cyv#hp+{s+bY-5%>Uv)m=yxn=kxyPwEjgB8W zZgpJl7;w}%RyoY}XYKdcudxU1t8IU_9k*R)>$OR^VERWDpbAh0r~*_0ssL5sZK=ST zwI%~v=dm0JhYsR7)5%92s)Iu=b(@Q9bHVA}`ZYMSaHgd<6u}QjWM(H@(+yS=gPs9= zA1KR!Y)vyLE5inB6pK13IiogsQ(9JG70xPcv_s9)PfL@PPi`jlS5{&ZPnA7U|70pO zPBlt2A(@acTS3ectw^RO%@PesCM48aj?IKK?P^<+Nl6>EImxZWpmZ5FSia5%ElQkA zC!3P^zG5lPQzqCFP0-{@)O|W%Dan_pvnF4nvWYFOB{<*GHTcxHclu7B>Qb#;BF6$3 z&arrXRL86LUgEIW!%5;2Y zv5o5_|`^lOmuCiR}T=Vt#Sr9CbDN#Mm1(=#WQN=U^ z{0xX{kf>*dL87i&gEIX52iDW1RyZTKT4`<81^59E9EV1zxq8``tg`yWg&*F)EjK2r zI-Q=VBjmtOW~ez5b(_wSsFeEk4E)FijzgnbndxM;7V76k_%RB!q^uac!)0dDJ$x(0 zPe$OqU7YZr%#o-7$%7w#Q1c{ekj#^)0(@V9A8o*`ELQ7~%%D~RzO2HJEub}05!51e zb(^e8YSUT^&bi)Gl&DWCL9^#l8`t9J57gX=nxzud+==R?Hm<|8LQb5AQp6`%@G1*ig40jdC1fGR*0pbETY3Y=y{>rmF%+S++WBp{tpv^69lae<>5 z|5`oQh}NLYQL(bqjYvXz17NG>8<7X;k8`agX$dFEAt)G_S^*W%8L?VE%ZQevw2`T0 zbBw4AWeh|uB^wikCq|G;XByE`q#a^f!Wq$Glp0cUK@RO8(qgh@x|Vn(Xc22f3sG{A zXrV@1%}C6GG;K8r^V77|B%G1bRX;m-nFY1Y950y(dZva(Wb|DqX2+j0oO=`HI0|6+EbfeWzrW1@dl0jdC1fGR*0 zpbAh0r~*_0ssL4hD)4SpU~*A0W0>4nWi4SCtF4L|?%vniCk93bf}-MH=Ef`Q@%*w- z)7ILiXm@K}Xxm7ayJhG2U~_x#&ShgmqkEegtNXThjBMRBsE7kzsb->jvrykqv#(j+ z6l$*rFmI<&$eh?yU^a$(iN@=ZQeWR>)kuny4~BoPaN*+ ztr>3Vs~_J{8=Vk(_hnQNF9R#{>jT(TQ2b)UQl4R|Mc2~BCNA2dn-h~+=EvD z_9^Q9|6=Z!2JUa%FS$Rw8-tv-nJPdPpbAh0r~*_0ssL4hDnJ#W3Qz^80`CX~Y{ht4 z0CgOtSp5V87Dd+L60#0}djH=r;~mjX+6bxuRe&l$6`%@G1*ig40jdC1fGR*0pbAh0 zawwo)|C^j02KH&TmwAa9#~@$FRu zKKY<;e6KXt)PvM(%vC4Hafmd9yw55b7({!>FjlPwFe}RyQX@7%cy%SSiOVqmfN>? zS9OlmR(Ef&tvXm0J+OWAX#b9|*t2V(xoe-)5p1d5SFemTG>&%;^oi@*n|kZE^=_^Z zMrzvXy%nv^E#2O|&7rEUn(bmk|CaHlPNliEsddMAAXwEHYT4Oxu&K3UU)!!t2d8JQ ziyqCiY(WuuPt0g+o~Y{XiS$JIXm?*IHnw;0P%JXa^S%9p;hz1&N?*5pFeLHVYgMeX zrovl0a9|j37;E;71X_1^>%xZy_j-c;z15!jQTNX9t{&k);D9oAAcQBLi_$tlTqp7_ zL8;)q6^f@^^m)8qK31%H^&ONCVV(HC(L>Q8X{>J~I&vsF*t2in!HJ0XfIKnnb=!DF zP!M~9+s3+gR!`Ko`6G_1`3A%x-}aqbwrt@8d}m!}XJ=b|qW&SH2fZT${RjDjBR#wn3;!?1p|b5jL&Z@2{?>jW>TBQ8zR6SFx5c-wpRb$f zn5gRauB+a!bRFUcCW6hr{_er%X_a`zCAcfp`TyQ>!Hpjf@Tv3vOj0%l-nbb^$hJ1`_ra~h$ z#cHNP11d#Ji<@nQMnCBM|94@q(k4>{r~*_0ssL4hDnJ#W3Qz^80#pI2z`ITXdj0>d z+vT*uQ~|00Re&l$6`%@G1*ig40jdC1fGY4VR6w2ozm|Q&z`c&&0PqU;2ktlAFSws_ zKjI$czQaAheU1AP_j&F!+$Xr3xDRn3;NHuSF zdjJ3J7L>F;Q~|00Re&l$6`%@G1*ig40jdC1fGR*0`0p#A-v6iX|NHOjN=u{)Pz9(0 zQ~|00Re&l$6`%@G1*ig40jj{;NdbEO|909Nv@TQussL4hDnJ#W3Qz^80#pI209Al0 zKoxjv6rk7tZ;h_BRH^_~fGR*0pbAh0r~*_0ssL4hDnJ#W3cQ^Zpx6Izr@cYzLKUD2 zPz9(0Q~|00Re&l$6`%@G1*ig4fwx8hdj0>_=t@ha3Qz^80#pI209Al0Koy`0Pz9(0 zQ~|2M+erb&@>c^}e8RvjV;{Hu$ox&_p!0I`98;(9I>+B^XIX0<8;Vb$Z=(f<%M6bh zHfGe^@sj!Cj7@L)tL3l7XT51-YDg7$cPlX2SYj!OR-wuL;i2BpcyKH>5EvT`jSv_P zjSPlIN5j#f(Lm~RAlw@e`ntQ7KCvga!5P&ZwN=|{T@5WYwOy{#+!=F}Tr_!>?vu0UJ_N_ycqZy6qABm0)kCHaw%EMQ+6+T%~_#VC|Fg6t4pQ<6rK0DEX z?JW)M+jZJ;N`+>&f*7fF2bIIUrE6WK)AhkEsF-Of>Gz?@V5$WqHPzJ2UE!5`lpdcL zg8FA=o~5%JvNC1tg6R@9mCrKKlYh+&OUXI7^3C}wPfEh#cMBrl)7|IOulLMTs&`gl zg{nMlP+B&{J1iyZ)}bS_W5MnSQ4jVBWEstj24|u^+p0D-)oSCCWLM?DJJS^&iiP?^ zBd(U#ZLXH>O--)0j)vx{j-9S8wL4u^+qbngwBUl8Yg@MA{XQK6*;XC3b+sL}E!DMK zHLemq%3L*SY6n!Lp`~G4Lse7L&cw#r8f`qCLcvh|Q!Ba5vBJ>y-#lDS9-M0}nY2}* zsr9Ld(Leemq{;|XK@PgR-IAEme<8D`!^}(UyIegvGk@|xktzd@d0KCpK+~G@L|}<_P6c6rUo?nc;YvPWJ$JxeCavZz^oz6K)^w5-nCs ziO+|Qcv4-0q^7D*I!4x3n@;!0%Jil>NwRwX-C)kzC#O(+N`+JGFu1dvmfc|{y{B19 zdhl=V&WxR(GY*43B^2xxx>He*nf3Hs@sOD@8QarkW(G#4fi{rKCTGmHl(gcw6*8(0 zdnxq`>kbNHsMo8hFv&0{S2c6kXI746ORv&i4j)8{eQ0WFs!otkbFdgq^{CWNRQojF z(<_NeH=jC!WSP!L)LG}~k(Kw9+-Mq=Re;(wvXPt`q}3Mp&@QK?q^b%XIWyHmVTWbz zwcL@y==4=>AAJ77C1p z_K$^zdO{gri_;{`NL)1(91N|+mSvMWk)>q)dNdV;GJE$1hx(&|!EpabFs7bTXKg4- zE4MT&{Y~wW;P7y%>p*a%XCOGTN>r4x0(PC}2|-4pVLx-&D*FHp5y<>ann zhDB*v{KENgEBig`wFAvb^)hR;NOzbynf*jSY>4`-eik$uVbFb$xC17QBnn^7}Ws z_%iGX4{s0khXRA4(a~T(9@8eZNZf^2)6;jC=1#qOmtK4OAR(95;M8s*U@z0ra|$;o z)U2mmZlcNR7`)zS{NxH<#2d&eiJFjX5Ft z(HdX9&Qh{?F}h?av^ANK{9s9MVRHMM>Z`-S(b0p^5!_X$Zwm>cH?2oTf}=6@xEmhQ zMjP%ZSex)@U~~-MT_f?^9gRkkJv7k)(r+pWidJWG6BTC!7kP5xETO?*IFhQQsK{xR zR4Wn-_VtyzGAn^o)DCk1_m#{f=mdLl1nS<_!cP0bBe?B(Dpn?~HJ5B&l6U`-JGf*A z!{^15GuK#3mMlS&gQ-0XDX=Ty6Q{F}A>mE!GM!@4r`!@8UDK7rck-9JEb9H{BPbORDc2c| zH0gv!D)XC)k4%~K|6(PMw_2lw*8;cIwQWuvZZb{)(qlF49(CDd{bD>pRYH^JX@A!eQpf@)>5Yq3)6SKPL4OV`&0GHxmQT7^^@uS|9A4$7;PI>fGR*0pbAh0 zr~*_0ssL4hDnJ#W3Qz?S3efrgG!&=;Q~|00Re&l$6`%@G1*ig40jdC1fGY6LSAbss zzw`GoZ6Q^FDnJ#W3Qz^80#pI209Al0Koy`0PzCVyKf1$szk&NF_gC(Z+;6#GazEpK z%>97-9``No>)e;QFL0mbKFNKI`!IJM_df12F3w%R9pv_N`?wGn;C6Cbxn^!NSH+#l zDcpLlj9bbr`&Prv5&IfVIN?>#(s(YJo_2;6YNdw zhu9CW?`7Y^PO|5*V{DWSvpwuNY$w~!ZeeTLvsfQ1vFq5C>=Jf9JD25H8(Yl0!TgQ+ z6Z1RfSIp0upD;gUzR!G{`3Cb9=8Medm`^buXFke&ka<6I1#>ZT5i`MzGJ{M%6J*Y2 zwll3v15?dxWIT+(tYMZji<#4z*$l&27=!cg&R3kjb3X6~?H-v^X|9 zDjhzD=vd=e=2+-B&A~aW4rKp_{m=H_+ka($*8XGrWA^XZziI!9{cihb?YG)*vLCg- z-+sA0Za?2XW*@Tm+xOUa+B@u9>^1g{cDH@KeU*KQ{S5nTyVGv6{mb?@+sn4!+Mcuh z)b@n!`?iN{U$@zFZ*d*Ip z+j83?TZwIk&1NgI{?qyw>mRJYw*K7ul=TPJ?^++Qe%1O#>mAllT8~*jWWC0Eh4qN_ z0_y>5)H+}dT6bBuTAQr3R=?F_<*jAbQtN!{94lirTmEf%&GIM9i5e>c5i`km={)6Yy#njSTsFnz;xpXm#x z+fAP^-Dvut>1xwurYX~TrkH8a)MpBqx=ih+MpLzEgGn)!n^u}!rqfNcOb(OL_=fRS z;~$ML7=K}W+W14`!^Usn&PD&;A_dIFsK|ouAoN*6w-fpdp-&U~6rtM)eUi|vgg!y& z7D68HY>j+&-=mUhVA@qJiR}*?4 zp{oeJm(Z1jt{`+dq00zeO6Wa=E+KR=p(BLigr*2h5;{!iB0?7ux`5F6gw7*$h|mO~ zaY6?P9UwGDC`M?M&|3b zLIFbO5;}*_ZbD}h+C^w5p)Nw5gmw_xPG}pUt%N!VwG(P1)Jmv@P&1(>LR$zm5^5k+ zPiQltIzqLCY6w*m+C->|P$i+W2>A(ZB(#ChnS?3``3QLlc?h`)DTHJ~5+RY0K!_)_ zo=`cVb%fRuT0>|xp)x|N2(2Wvg3xk8%LpwcR7z+GAs3;=gccE6NN53}`Gn3ObULAV zgh~jVMrbafIfP~tnnh?Pp&5iYLM$PMkdu&uke!f?kd=^ykeQH)kdaU^p&~+vkO9c> zZ$kef^ai2V3H_7MKM4Ju&})SLM(9;SexAwn^ff|XCG-_S_YwLsp?e8^iO@ZSzDVe9LSGvjF{o8v!=}o(Wh1=mYcudH~&k3ZM)q z0g8YEAP=}6upDq5;99^nfU5z^09OI71Y7~Q9B>)nQovHcC4er##ej76TR;i;>L& z*Z<~-fqR|%8}|zL2kr$t0`M&N6YdG_QSQ5V4B$BT749DH^W5!t6yRp=quf#M1Kd@3 z9N-9d5qF3icx<4H-O9GG4Qve_9jIUxmS@+nEAaTh0=9&m#WJiFj}ZKe`8)F$=8w#a zc#PmA^Hb(Y<_FBfc$DCq%-5KEnJ+MR;BkUmn46dznCqCU@kqfX%wgsb6Jv&$0j8VT z&Fo;>m`0|C@iSgVWY#h(7#DK}GlyXrD^uir-TA8XW#@}{tl(MaQ_jbo4?7=n9>=2v zcRTNJ-sZg7`4Q*!c)Z|p=Mm?H&T;36GlEA9_BeMrw>ev!_0COr%)ssBovWS8oQs_E z@Th^)X?7YM|8V@p@e&?4c+T;R<4MP3j_=|%81Hx7>$uBtyW>{JF~<#f?BFWLrH(1b z`HlmQVLW=!>p0iZ<>+uUIqLBEL4`whlsi^AN*xRE2*M19-C?x<%l?}E6+DLUYx_z2 z)AlFqkJwM(QG~DB@3G%$|Fr!U`;B-U;Trpu_Dk%C?T73!Jd!YA@3!x@@36Po8}V3z z-|n@G_Obj@$0D-EF(WcAM>H zJf?8H?P}ZQwj;I+ZR2=UA!6&Z?Xm5$ZNuwH*4sAOHrU)Y-nQDd438|#v(2(OZDyOn z`VTy|@RIcf>vPs;tWR1W!=noiTJN{sYrV^QyY*H)zHo!}TI*HTORZDZ^YIA7uywDs z*LtqC%i4j*80xH*)(Wd^Ew`@1qYMkIr&(uM?N+1ZUwEA170d4}zqXvTJZ*Ubk2IXH zeADt(%RQDmEuY3?4L4ejTCTBNX}QF57>_o@EJKz7OSfgWWd|N_XtdN={1&f8w5-J= z4lc_XmN^#IVzm_EF^5;pFPmR9KW~24{1hH_c-Z`q`MCK$^WEk<@VLXx=8u@KH(zbO z+z?%U- z26zncCcqm3KMME}zz+l70Qe!mqkta-ydLm6z-s|N0C)}H`vI>8d>`OdfbRvo67UMZ z%K!>ZUfv3*a6rM*ap}N*aFxL*aWx*uo18UupV$TU>#sBU=3h3;3mK-z)HZg z0R4a)0XG1i30MK>1M~uV0NsEJpbRJhihu$j54aw%9B>`rTEI1cs{zXZR{^dBTmiTo za2eoIz*4{^fG)trfQtYZ0xkfY4|oRP>45V9O8`#;oC`Pya5ms9z?pzE069PwkO6c8 zIsol}Hb5(&1<(v=0yF{^0~P@yK!b{ge*^vt@D0G%0sjg355T_zz6SU=z*hnP3iubm zKLfr3_$R=Z0sjd265t;Ie-HROz!w333-|)yZvcM{_$$EY0e=bj9N;eiPXhiN@L9m0 z0X_rxQ^2PIe**Xv;Ew^H1pE=;6M#Pid>rrxfR6z_3it@%_W>UU{2t(U0lx!y0`S{_ z4*`A)@Ik-_0KWuK>Ip@G`(l0pA073E;(mM*!o1 zQ-G6zhmFNHbdd@ds&Ih{=c{m@3WrpfP+?q!gDMe2=c;gy3cFP}TZLUJ>{Ovkg-#WA zsIXmyZ7OV4p+kjs71~s2RiQg-t3{sZgoH zSt|Hd*r>t=70y(lLIs}+UKKnlxK&V8kX4XW5LFOV;8j?!Lb(d-R9LIR8WmQnP^Q8v z6;`USLWSijEK^~r3Z*J6QNg9cVigvtuuz2sD$G~m3>8jSVV(*lDx9XmTovZ1Fk6LL zD$G=2h6{NV3Pu%*RVXShw%OG6|Lxo|1HSVA3BKO{ zDt8liIXB4d;%e|l`bQO@3Qz^80#pI209Al0Koy`0Pz9(0RDpMq0*mZM!}7A4Pz=8r z3BQM@YIt~fB-9)3iD4MTFDaU1Ga44puZ|85jtzxl6Fv9?excM%E8aRcxpg=?8k=vy z1ufMUG&UTG21zNi%|^q*`H45yj3#)#NwrA4T0nh6)u`sP(`YozovXfLLVbq|Q;ffr zsNdjaBeRO|*Cp!L)C(qNBBP;XA-o_8zZ3@7ab&`T_oIb-O5K|t{0zXW+{@gH-1B$_ z0Bm{}?PS_issL4hDnJ#W3Qz^80#pI209Al0Koy`0{BJ6-DZT_(+&|Ta@vNye7;7en zF;-717}p-cuyi9`{}0PR|EK~~0jdC1fGR*0pbAh0r~*_0ssL4hD)0_hK)wDqaeW5v zIqm`O7VcvFk^WHyr~*_0ssL4hDnJ#W3Qz^80#pI209Al0@TL@4R9uBbUX<1e;yTge z5~K>zQz5&{B|#B+k0~vgcL_=b@2yZg<)Y8y_3}oYWOs$+Dfjsl(Zd((Br6q)fRnv~ z&r`IpxXL!|n^#h~9F+E%6?odj0>R{fL442lp55CA|9IbKEoBliXu?Er18P z`?-6$yYR|?w{pk08@Oxnx__5)Q{4I70lezpUaprrm+Qi7{xxxRTqRe5SNtpIR&k}= z0=(Ye49?CO*?-~H{$62!&;FV{iP!pjf_;QN!G063^mh+?C;Msk7QD{iQT7`4O7;@G z%HJV2#tyLqc#Xf^><+e#ZNw}5`B^V3vTO1BelGS5b`Hzp)%}W?*O^zDm+{(u&oj?5 zPce_X0FODp>wM68zw=(_UHBaUw>pnG zZ*X4gyvlhgeha|)&I8V2=U!*8^IZHMfDUJqv(8!RtZ>TsO#rK$rOpM;)0{J$cKj}Y ze>q-ryyE!18V`)&4{?H{pUZ@(J99pH%d({K0x-c)CzMpOZ+09Al0@GeuJsOw$U z;CD%L)iuzHU`@6nSd*;?)?_P!HQ9<_O|~LfldTBWWGjL-*@|FIwjx-Qtq9g+D}puI zieOE)B3P5H2-ajPf;HKSU`@6nSd*;?)?_P!HQ9<_O|~LfldTBWWGjL-*@_NBtu6w* z5by%P^8wETJOnraI1YFa@BrW#U<_~+a0GBa;4okma0qY^Fao#_a4%pOZ~(9$un#Z< z*bCSL*bNv2+yfW@JQwgBz}pH1GpNn3~&|TO28F>%K?`GE(I(FTmt943AObX~i2e=u zFTghdUkCgr;6DKW4)_}2-vD0){43yJ0RIg53gDjrUk3am;7fpi0Q^1R?*Lx}{4L-M zfWHC!HQ=uRp9lOU;B$b#06Yo!bHHZ-e+Kvr;79{~I&;5Pt|1AZOwe!#B*eiiU5 zfcF7@8Sq}fF9F^I_(j0G0lxrv7vSds?*#muy8hpC!&eO4`?*r~3v3PZBc{*!H+-FY zI=(_Z6JJ}NV|&SVk!^yO7p$u2Gi4~ea6>~j~e$B|EYMYcy`e(MGATd zbsAp4Mg70}TOHqOGIZLQ;Ye_3Uo1MbULECFFNo^}-}>-ie?SN{b?t5L+*)70cep6)TrJf@%ln_ zYn4XFhDXHwb<2DZxbAjb01(enX=qz(jxJiLhhRTI(F3!59M#2CR3I>OBJrw1bsOH*(C+mX2xCpAth#B^BJs*X z?nc6)n%0<*UkXj8EO(l;Nc^lq?zYrUgd?#7`Q2$UWx3O&MdJQK?&`+*s^Rehaiz(W zchYznGd#S?)Axk@%T~+#TE$ z>D*e|nctlzQwwy=3Tavwqy96 zZZ7Ld{ARX2Ru_K1+A+%>iwnPp{g`==*=0IuI%e8qav4t=j~VwEUBxGhj}`AJb`_m0 zI##r&$c0X#V`vX@8BSu?dH?(yZHAd=A_m#26ossu*r2Yt=!$ml#mh0eRw+tZv1NLG zgCM#@u>#MZ5b)#)MfQq5|Av&kTi4#5%U<@lCBc7Y%HE@E@5yB^`S72=B4zK@wfE+< z7iB^A`%?BkU3*_Hdr=m7#qUkpyLml(H=oO1aLXRS?@8GUy7odYd*17lMZY^`FY4Nh zIqi9$&+S)I_L8o>l*3-|iHaoq<&?dwYcJ=r_sSlh$1kPqb>q*SEB*wJ+wE5TV#;1O z{@l6ZPjGwPlGiV!>~-VMoh$wXH!q7`KcBMKjX!s;_`_3^yx4wy%3e4A+_~aUkQG68 z`^%H|9^Lr!Uzf7ijXzJW_!A^v_K5zqDSO@c^W=&@L6k%~-VMlPmssujCUH|B95oZv1(2#UJl+^SJ*lPuc6npC?!R@oujyDgI?id#`T%d2_`d z@8;bekAG>(UN`={x#EvkM8zxkOH=l`@#oDIf4nT?9^hY+ve%72Z?5>`B`kp8cctug z~-VMryqaV9v}V$um7}^y>9&Z^y3fP z%U++`I^S8D?*U^Jn~B?*s^M);$BlEx`BFB)O8) zl%N}e0-q}e@fn~;@Kmyz5_E%5;B!Tx*X#D;5*SShx?w2rx#G}^&*FHw(y1vyHxLCr zS0s8pqUe?@9hwq!Ls8&!#iAFVO7p%-yQT!)U=;XV(dbq1*`&MDrYS);90fjCJbGn3 zmt3i|YD&-zNZf03!~;H_c}20(qA5W)Bn3WKOnN1m7v)O)zVGRn6!c?K$Q6@bJmXyw zD@~db^kY)U8Iyuf@_8zaniBM5Qpg#Tg2?-%%3@6k`Y|cwj7eTryuQjJO$qujDddVt zj}QO4%auq|f__X2xndGOS|Ey&I{zPWuN&|``bQO@3Qz^80#pI209Al0Koy`0Pz9(0 zQ~|2MJ5Yh*Vw+99|BtvA4fr4ZqY6+3r~*_0ssL4hDnJ#W3Qz^80#pI209D|BUV%Bt zWLRUf^+X2;LqjoFPjo1T*@W9==AKbocaC-q!2kK?(gsikr~*_0ssL4hDnJ#W3Qz^8 z0#pI209D}Kqri@f&A73xNA_T>Ke7R%@5nriay*8yG`^M2|HnGeKdJy#fGR*0pbAh0 zr~*_0ssL4hDnJ#W3cQ0AQ0M>C>;HG~4yH|`3Qz^80#pI209Al0Koy`0Pz9(0Q~|00 zRv`8K|8oZJIVuTNfGR*0pbAh0r~*_0ssL4hDnJ#W3Qz^80{^=TEI?*M$$Z~9cbBfkUwR_J z(NT3f58t9gec|5FP!D9~%kg_nM7JV~ZnvbCB&vD3qvL9RT;#Z*eh_@_a#8kp6t_?D z^1R2ZW}1K`QS_9{5`JAAe&ZH?<&or3)UV(TCs1gx{w|(k38HbW7MZ ze$SpFiZXs#nS8+oYgLD-Hnfd~#(JYY1Ho79xiqdIZHMx&{2E6WJ%| zwg$f%vRv@sH#`Xve$5!Jq&w9d$-|fPBJalU|HE$pN+gli$h=gJ--_kodBLYhf(Q*I zjgbYVT$X(v+X8cg<#$5W0Cy*{t{G9_=KzN9JYPQ&kE@yb4|d}5c8mI#8o zoELCYy}TFp<^>m=Q;MT_e&HzAyyiSBiZyBI8yQjTt`NZ|-e)w5p_`V|C{7+<{;N@Z zM&T$P35RN0V}kmA;H)Utq@m*(QLI#mzHP3R8pSk<-^ye0>4l?sOYKBB5`(wP zXGO6l4ShW;iUqzL|MuZGjnOEkQT$d$@w~!OTsO{F4UZ4$9*Z?;=>Ci-mMbKwT=XbB zJujX<%co})Z^0P_W4X>?GyTxOewLlVOgK9n->}DRpECW>)?vBMa-DUh=0cEuqzX_4 z-VO>_FEx(59qREvPzPHhe$neY{Lk_#`hfw%!=#<@v$j}Ds;ki@rdY5$5+d(>4o8Qo zhKExp(&52if4-!3)g84}+iG3gsx~#%x=QmDQtDb&8tyH1h4Ff_{h<+8OY1gQ%l4)w zS6fFzb5+Mq*OuCyuBz?ZS{qt$na#B=+t#{D!F{RgKyU;Pj*YBR-$9);#L3Z-aDR9x z7zseWfLeUFx+Rv(Xs|co2WnX6s!=m{K#Lk$ z8n!i5H8t%_Y^<%pZhM2VP)edwm-;;x9t;7NEpXda4Z&u?}0oWDUf)PwQg4}pOntBlms`T$?Z^3S~rh&Tck{AByL#$O zzolg3Ms&oMeZ0~XoU0ux@*Jr&=5NViDxtN`!B2Z!!h3%pFg6+*Nz|e6fhcj13H2rp zfMX+()WK5G9xTfyS)Zk(wG2%P5Es>WdG9eiMn4f4j*iCEz#E7{IP`?X-cYYkO3$z? zJqXehb*#z0PtT^dD(R=RY-*X;Qc_lijugZ0OwXJCtt@@lr6<0r9R@c!b4Y~`-ih0v z83%2gkg9+7@7Vv{t|Y%HW8LJ}B>78HHaW**DQRDiCY6l+)3|IRkr~JGhOEr%_Y7K8b?`LMatY%m=+9X3^(494TeDPxV%TzsPV z^5Ujqw&<~zClpRRS;Ko6nU8 zH6?iTOYr0$ zzV|1sB|U2?r?r5GYBvlgtz|vyv>4RZ98X%ak2Y)zauODu?;!W{+6-D$9r0jJAPRJE;ijT)rE&Tl{ zd)<%|a>bm2Crj{>zb|F48+1ahsDqg@yg!t(*9|)%SKKLXbxMZ6H)XFIctWnoQxp%L z*WvF;+3SX$kSq2S_1=i=?@rn42A_~C`f#U{v3)RQuN!_suJ}_Ve2Y=`?@8K=y74FG zia$JMN$`67ft0;&{E0c^Pw?QQrT^TNy>9%8IpdG_`2@j#PRd?4{=}T|$BX!o>EE5Q z*NwmQUtUfBlYO$HNdB`^_PX&W=88XAomiy!cctug<4?>Lf3n9X`UL;Zl)Y~JiMirW z_J{(G|E`q1Zv2V4;!noEH?rdIOxf$kpO`EDWW|H$rTKRx?Iqp#OaHai>M#2weEiv- zve%72DOddA=*PeJ{%t9H-T0Go#UGw)=MlaBttorm_>*$QpE}*oC;K~6_PX&WmOY6@QY9=YC55`jowH{K>iEPm=K2uGhagWv?55 za<2H3L@&N_@zmOY6@QW_$X>}`o3hu9KRIXo2@;-t>aR)J>&Bm)GyZtDg8N@} z%3e4AuwExNEtqxJ$Vy?tJb5H_YwjdbxACF0O-X;_C3|K?Nss z<=iT+loVL_%AMw*3Qz^80#pI209Al0Koy`0Pz9(0Q~|2M+d_drydT%&+;|Y{IMx>AcN(%z4y#wewOu zhhf|~>>P0JadtV|ob`A{gV)JBS2);)$94^N^#|(!R&x?4?{<8fA`$_v# z_Q&ie@GOaY?RVO5vmdh`wO?(&6wjF$w-4I~?0f88_BMMxo}eo2?$tyztt1 z+bWyOHqSQ0X2tU`Uc)<){!s;}0#pI209Al0psRqTxTvV;DEd9{2hs0eG_oEZQ!|2<qx*sT(AR)N=&QiJ=qtcI=sw_X^kv{6x)*p4`Vw#e-2;3s z`XcZ-=x*TM=nKGSqq~52q0a;FM0Wyrq0a$#qC0?hpw9wtN4EoSL!SZOiarh8fj$M? zj&1{PL!Sh0MYjUCpicldqg#NR(8qzdpqqgk(Z_%r&@te8bQADqbR%#b`Y3QM`Ur3h z`Y>=cx&e3-`VepxItpBgJ_vjkx*ph%t^?kPt_9wJJ^*|sx(2ucy&u?zt_Jp^_W^s* zRlsiaUSI`X2`r;4fF*P}u!t@L7SN@@JbDlCdUOeJIl35l9XbNM7R71dd z8Pp5xL_NR`)D3J$L0}u&18hYBU<*1I*o@8rHlf|XMszlCG1>)OgmwZW)CFunohqY$ zqaDEiLfe7gK-+*{M_Ymai8_G)f!cxpj@p1CeiE$%{t;RW`~+G9{5V<-`~y@5{1{pV{3u!p{0LeB{C%_>_+hjR_0sb4GxY#~5i>#w^X=m>B1*74n?rq(hb=OhRq@jB=9`f*3D0odP zpNOZ5o_!vy%!e2Cn_gQGFD*z`7R1}|!h-7KVTsl2)D1ez3aV?@;iU8Mnu3^gmK4M* z3gQI41qJbXf;dHQIlAmFCCas_2jyN+KQ`-24>bgd&$7`n(HhVNGh(g%o?e9_ELeQ-g*lK;%J;%I2whf z2C2GDe{CvF8v0UJGz#jfJ|5ZUrO~MANi-Vq(L`t2N*s+d3P)pILu;?l(W-lF)TE(% zvZIm5>uY)ik4U4DMq^?b)x5_>u5dK+Jx$wp)I@coQIm$gm=TSh3PmiJ70K;&(`cm8 zSTGt7O|ceOmfDx=tWgXM?H`u6gu^>%{Pm0)c~H3K{;wTK_JlzsR)X&IJ! zCdVlJ1Vgzf;&r$2I@s8y0xMQ0PdlrlBca&9NOVYBUv+Wm%nD0*32%?$^C){i#H_6WX21@Lw_%U7GIJ{*W2kb?!oNp%%`?uXZ; z_IU*vALj64)_7g&3#S|;j;eC+$lj3DKeD$@cSmZ{(C0FCq);Jv%RRCi*CH*BQY#qY zKvu8+jpzk~^N{r~rXl=+{=Fj=cu&#PI&#doGS4dh!QndJ;8=rBs0jg08hSE4)Fe-Z zB$xX{FMcGa^z7Y3F1!jp1{YqhGPM?dYCZqyG|i&^$xX>CaI$i3*2@0V8Iz01gCEsX zu4Vp-g_^4RuPkw8rfI-sT{f98Ia16MSI92L-00*?-mlCU}%Qe+JhOlQm`MfRwH zrWNoOi0t8mRE`|497tuz@#X=Nfe5jC=$umA3)dFzg`2x~)rM6(aFlxVmsJY>fncHDaG`FVv)=$Fq8&AeSq6jSR1k_CneVwZTV!3tg!*QhNRW zj=bE@Y81ZmC@XxlmD-v%9T;iXJ=$v0&=0bXw!BjAmhpO8^qhxY{|oeJoBNz+RpDN^ zx$}Tr+pIToF9bAc=&_7mC|Ah%WtBW$R*a|TJoKE0_QKq~aAo0M*w;8ZAT;jM{Vmj_ zp+~cNA&+lxdGQ@IItoXB3+Zp+^jmnfhoi*x|BAxBaNE$$+Q=YNgJcNK8IR&5OvM zbww;vGXccR=~t-?iHQJN^RQAm$o=ok30WjP|2%-?G%Y;=@N_LwM)nMVtXW&r8FMM1 zGmT4Af0zQ0HJ>Y$Au$6WePUNCnY2G^h8M|@8g0d+aD3r&9uVmJmTNN^1{9Fpggc+r?^-5w@{OYew@(@y=pJyW&Bg7ibK(_QYztbbn7ae?h^{V>cw{R3d4t3=Q}2q^1@Jk~vcl&)V@iMZX7@JTXw;;k zhclv4Q1AcaNAF}$?hz;Y6iz993MchY7SZC}H~)WW;a=FYrFGwd{rdC&HEHO3S-lX? zh4U)-=}-DB9KHWf?>y!ig)1%G3x%z|R(I%-?r)(c4ShGG7xERNQjT8{il4xy*Z=hT zpI-mxy8h=ph9!n!1NVNsYX45=Mdm!l>HMg(-0^isoBbE|5qq)iTHA8#J=V>Zrz~Of zKg?H{7nnY4@*5vD?kWCL@vfrp6e;K^LWW_k>r^f&Cz*K6Y#6jno~d`owK_W56CR58 zhDUqGMgxKp;Onb)_SH6(4-fVKr}+bkbq+$k>+=;mIXgaTHte@eR_i&a8jXcU!qK5n zBoZAS4dXfmM!U8u+xrjXs#1OnO{MZ@oIE`~Vm6G~Cb#HSE9(?CAc}$EzP($vct&$o ztdNbSYK5{+&WP_f8=|(!v-B!gJ%LvV=^cs220}f-fGCTB-kw8!tzv7gn&manR4Z>j z99YBuL12xE{H8IfC1;f~15uM-TcbSLa9~CMqrj?b7^-XB@}C5j#zIpmoxsv$jKqh` zhECfgr?>0EgZ%+9(8X^)G*mUB{^p)iCXMf`0wVFj{O*LnV5of}wlkQ|U0S9LcWG&n zcqG3&KG54+*X-Tbmd{;UrVMv!X_5H8{O-hn*uQ<3BzW?g3(EZBl+Q zHJLKpr4{+7}(O-(Ba-cp3hxcrVMv!X_0s!zdIqYW7B4-bI1OC?$R=4xJyfm z#Lvy|P7L%n)(o^wz&+;N9YK>R!(Cbdk@z|J-3bAAk5B0qVPGkjyR=Lh?$XjC@!k2| z;opzmCZ%)hKt3_kGG(|+ON+$M&hJhLcx&ZN<2zva$K0*cWXf=tRzM`aE5Ez68JM}; zrDe)+mzEZZ@67KmZTejx!q|pWx3O&MdI5FxzjA2l-r#qQVUJnvFus64(m$$zMuCerO)Vkgw3p>sIj~h49UC6e zU$ab;hEAl9(~5X~eyNDlM$uNR1y?$az4sD8^>4K8byK%6Hz4Ls+QesMZOK}vPp2)}OYYtqoS zvZ5F-d+qh`qJY<5pixYt7%#Q1o|=%8qyOp|#lpf-+}zi(t8REmH;OfB=)sIA#&5%L zQ%Tth9On z!3zWr5WJVGSr7-WA;1G90jyT?dv7Q!zGPd9W0$HDJ5{bYivLkuNjY|uR4V=_wo`G% zaXD3yoj9@`#j&jHzh{eAtNk-Bb|$rRt; zYnkH11>&^*8cJ`kggC*GTl*afaj=>oKh8wQndmqZ9jAznYu#xzid~pJt1`6AWLcC^GQ6Jt^gk)tX4QTlZNQ+Bg+EJ>9yFyDq;h)LUUMV} z+mBTXTP{dW+J!>=TkW^0T^KPZ3e>xB!-wAH6}I{Pe{lDY^zHr1-j%)Ko++VvfMPkyX6 zSlcm-h`zJ8(}k&-qqnB6&hA^da$|OSao-2=^YdG_i}yUnIwhHWhefQ>{s>1Rq)CJ- z5}xOHcBB1ajzmP0h*Tt8KaAr>`$HUwm?jacNI0SA<3(O5NjNr1!m(8(V3}~-M*De= z1fxkXB?*RJ_Ko%jIT8*{!cmd1UEjk~e1Ie2(j;63i4Yc+{G&d{k??2|o{B^ix&c1w zvm6PZCgH0{gfWYwM*A6#1dUEdg-)1@!q{oF-_Mbt(dnqr83qn4?Tz++js%TPM}^K1 z-7y2!@&ETd-#7SuI|sJ^(6*+Tdd`p!zX4X( zRX5EsF7TdnfxlF3mFLn*CBz9CqqX0p5Eliu?<4Ubx2~?1%;zKCO|djnENy>}7fXXx zeyG|i&t+RnyHH4^u6>Q#g=m$As)fp3*n?Ji2-~pxb}c&M%_0YJ z{_3O82-}_$wo$dP<;o67h!ZLb)P93PToBoTr*^&>VQYkKuM1n8`(gFD&sF1)cA-#c zqxK)VcA>-SzT-tE&REwUXv6x(W(qSAf9_(cV<$|K*a>54_LQETow)JH%=j(3^vc>|a+4%> z0)aGpi=Lg6gbz-P`nNj`lDcAJSJ?@ZBzD4Bnmws!$C7K4@ul$-7xjzDO_JCN1k&uy zdUkel^=^3Ug4=1rrg}SJlEh9JOS3oW**VF9(W9dmZ*=P1s@MsWBzD4BnmwUs$C7mX zz{Hq+TfdmxB#E6sAkFsb+1bg6f8^>tzmr$5dOKl~#7-DXvpsrtPIBVpjq8hZXLWBU zOp@3MV`(<1XUCH1$y*1{PR2TR!X$~EFqUS!_3W@qXCJOyVx3YO>c!+HN$dmyX|_wx z&Pn`*hss$trahvCNfJ9@EX}s-*|FpjTRyckc2oCu!X$~EFqUT9^z5(} z2PO_)d~jOFPM9RI6UNf4U(XI}aV=W8{Xi=bgh>)RVJywI>e;d6%<{u<{BEZ$hicym zlO%S+Sek9ov$K;c^Y@O#3l)pWO_JCN1k%jXvvZOoM;4r=l?mOq6DCRQgt0WM>DfUT z9~pHnozWg*!X$~EFqUS0dUkfQcq3+q1G`?G{Wp4JyEL|3L zO*P^sN$dmyY5P-pb}V@~J~ui0pp#^-MkY5&VkZzt+i&RE*~y%D_u|sHR;?8#N$iBN zwEamvJ14nu|LWN7OLz6idl`Crpyq31gG(<^I0II~G(R&~CTRphUg%+hlu5OO@%Ky)!6L?ff>`eyF9Y zRX93>64lOcD4YJ^n=G4tV%(WHd}~fs3A`&UB`>wk{TuEns-~iB`u%UFZ2HvI@XnbV zhgDD3T@Ic52i#+6=jHeR{=V-*|G%9B+ge+nz<>TF{XuW6pxOe>m4@YBF*ha%RbOlW zp0a(RBXAt59ZkjpZ7k5n0^RbfEzs*MhFtq~X&15~*RR9xXuFz>=h?eci&OW}Lt+Zm z61(!=obo3r12A%Jq&qvY>pQW}Y=3Q{G6N9BfPBmjBiFG}U*++?C^Ju;Fs`#G2!qfM zkvqmuSk3{_VH{v{W=!{)k9av`0eRJ-cbHC+QpZi=bd1)64W#VgJ?b?M%fp?K8?WuR6i8$%G zh!dy!++Sy>fZD&K5a%#E(4>2tbKji%y?*ZJ_y6tIPxS41xclq7&hPkxZJ*lu9{kn( zF)Q$GwE_r3o+zXRQHg8Kg3lRKCH+LOlh*#{V`<^AeJmJqgCY1+Bgc(Hb$sH6FJ+sz zI7s$t>(utX1#6h7dimImksE)dweDDrYyU%9V{ZsLAg<;tHc`i#GDsVS*=CGB`^=rz z$qvAXBA1VSEd;W2P9sT)P1o_S)&7Lq zbPQe@)HBf*AVSlNAOXDHVfK|@13Y5aeemECuuy6uKu==+f$!w%1z z+4G{J?Om;Le2|ahgFH`t5UrDx`x@GLwLhXhMPQ?zs#+uo6sga^Z1s0=V*Ei?4LlG* z6oqRORW1+IzpJyrV-EHf3a|!(OQYzJz)+CWc0!bbjbdAzP<{<~T3jUbdolSnScGqh z-UWeO%pg8Tf9n`N$4jdHq3hVre+{|+HrFq{_J`ERz%u!MsMHSxzSPHf?BMBcb(JTt zM{y7UtjKg)hx>^+Ky?s=4xsNy-lf$~0dHA|GTmVmu&ybOKSl`ml22``PPJVRJ}$>` zqcAAyQ_B0I*4erq*~gHyriHTw>sZKKO`Iad3} zT_|QgI<-YCMl_Q_u|e^-4#iJZqxj)SdVca?C%C%nEat{)KP#aa(LiB6K$9yM+Oa{g zLGiZ=#XDPXDNy{`^VHq1&>F5E4jv94TO!Y5Zmjk*5{m8IcfimZ!?#~~y<=O#ZFc{v zp%LwVi*CR8&CdUO&BT%afIb*LqQX4f0#GW>bI_+Q@AQkI*U_~Y|HtA07vC`Sp}pfy z5u(Q~`q*K>!F}3uaR>MCznu#&MwT3mPz{UG7&renxM4@I5`!mhi-<^j&a>~9(LWyv8lr(8o9CBKk7mw zuJ15_c%f_1$n7M9MjDOz{ePhE=O6d~+tRvc%jq z>s=`&R(omZRV)1{f_!9%G%jsWDl;GIJ2@fhW#%?u(#RJ^^}vN8HedmQq^L$to`*>7 zyk;j_HKA6N%eri?t`nfuQ{HD68XRHb8*ClL_xR>a;J4>)96J`?lfFoowK~ti;ilI9 zyYx-GAs_wNAyH#=vd&FjL~*|^qSQzED`o;ef)Dadn80VISLRMSC#A0;7_1W*noKJ6PMI&f1qTKS|95&M?8)yQR&FU zjj;G9W%^&Yp`x6zn*V3||G@&1-%`3vAmvgmcP4b%LW&7RBgA|cBE375xYw{$Di%^=^giXI0N4p_{o9m1J7;$+V&sa{_6I3Zu`}3U)VOWZBPF%^nbSh zV86BXpKkr+)_BVwZ~3V$x3_%6`W@@&Hd?bB3A*1#r0Tcfgy>5Q5;G-bHURCy|4-c#R`L_uGh7{WcJF~>`)$Okej5mGiCENVeS#xF_uGh7{WcJz1QUCs^(se#?za)E`fcP!k{Dm)GDm_& zXRJi0?FQ%u(|Uy?L8CKPp%d-^7GpUtt&uoI>epa+ELGT>h360i8js%HL1avA% zz^a5Va)Bd3q7x^uibRMwZ9wZhM}kBr3{NT&uwMB9_&JUQiB88>p%bPtl%#I7&T=G3 zbUL;Qov?i&?Z44F!;v7-i5s`-Md0J5sn0nPNqVq?FBKzM?K7upwY=x=!7jB!K{te zp^^mMNejg~6aYt5Y~X{$L5>8CPDh2#yiK?VXpM3tXmmPCbTUNmg2Vxi1dUEdiB22M zqX4ZDjs%TPheoH5UQO^^Llg~jBxrOxG&(^dLe>CCG&mA8Iu)I?Kq8Df%E8Au5;Qs$ zowRZih>6Cj^)g3-MyH~a7Dxmx%hk1yaU^JTIy5>#0&R#wkoagx!llnnmqsT@c!&eX zi@d~_m238-56W{)`%G&)@Zodt;yzBJ$>;z-cw zbP048B=TT*?2(WoL8H?p(78&2+30!K3OEupI$c7t7bGA>@>9#_NYLnXiLxf}@^oi2gSf`k+2y%1YYNy4Mi=@IB$C4mA-5QvN;L8H@C zq7$Za8*5>6BxrPcN_0XN**L*p7l-(&E zk4C4bLZ^?CRrwbwyHg^hhr9`RDs!xUDRlm%`$Nd zrb(za3w$wHl}4*98sF*pe~foYqZ|Sk)YA(tI+A?`AH!0-jYN>qcc#U)AK{r)oHZe!;zrT8K}_dVLc;! zk#}<>XmkcDbRxeIag2@DyEqawIs+9tJ>*p7%lS@@1dYx>g-#FFsQ>_f2S;a5;QskB|4c6h&Nhq<4Dlx43y}!9T+Yft+#R{XmkcDbh^7vbmC&;<#(GWITAEFLlrvR&|v{K`*t1y?HmajoskNi=u7V9VtE@!f<|Yg zLMNi$Js(F-KSzQ_XQV=B?i=v1N49b#Xmmy@bV9#FGGL>%g(E?uGg6^5&q)t){8}6d z8l9Bus&hR;@z{=CsK$|?(Mh?k3K9;goZ>0^N)oi|3IOUha1|t2gq-e1^V1v&8l9Bu zYL!ICQPTVrM}kHt<+>_JAdw%gtL7UV2^yW0>#9QnRyNoW8qH5~BxrO}uB(CsEKB)X zyv~uJ(Mh?k3KIEE5l^wgk)Y8@xvo}8z_K4Tn#&vs8l9Busvr?~VT2c1;z-cwq+C}8 ziCp7z8_kCt2^yW0>#86De-G{>%?E2FT-tSopB3n2xuyhM+~-J;=!E}OMZ$&F=r@{+ z90?MgF6Fu^UIfQh6f~OmI1(f}UCMP;kU$A67=fF2IT9o~k>8_w5tfUyM)M9wf~I{=cpET&Mp3z~}o1tuNv)=8v=j2u(S!3{6?9KDW;PF;?H>(3GP3oaYU> zb{#4_x?n2<#5Pa2?mA9|Zw*iKdp+jVwXtNkx=(ewJcZk^>8Escg_gzbiL zw@HQV>1tuib>ow^xzK2@_GjIQa}Z&|d{@2Ajj%Psw%3KNx&KR7ee$ok|G!$Tl5p*h zrL#)tY;0{4&#Iz=fRCPKzNSiO@72)7{r_^cO2RdPmKI&;?`-u;i;fZj5n8vQq=Kg8 zzfnngO(l7yS|#E7fJ=xIT6|kuDa6?*PoI}N%M-AOq7+6YF)B%~t0WM%m#T&BIy>K6 zTe^24N|7V}-Ph#*_oT4BSS@Ui99eLdRwjt#TPNYhEURnL;o*QIGj`NRpXvYCbN&A= zR14c{M@F4XXQ^2tEhm<{RxY!kW=pOZZtuB2R_DT9gsiNb(?Ggvwg#Knpb; za1u1yWrQ_+Kr{)}+391OIZ>lsMp!dCYY9KAUIb}|sL0SRBdig3NI!)NohS>ACvUXN z2y1*HnuH3S$h(h`65K8$tQnoPgr8L}f^bJ4%UMQPGoMB$m982lD9V$gvy8B20eyB-SxX%fNUzTG|J!ARHLB;*PeDZ9 z7bH-_H$>Qc8DWj088itMI=v8Gw~#_mMp&bv7fnKiP7gLn9DJ=Z!kPs%I;pIs;zj%j zjmH|TGQt{ig?ia>*6p<*ZJdNO2^Bi? zkQpD#xxkU2(Me@36>E|AkHB)ymn7({CA6?mpc7&QjTsxQTO0`*omAFR@f0}sVys2V zk)Y8@Wi1sX@*+n-=S_|TjZP|SsUU$fKL&{#90?koRMt{K0u3+oT+8bm2^yVL*3v2o z+=7rtc8w!Jqm#;7>X1M|hB&VTc9kPRqm#;7Do7yLCuYU{{|kM4|HXLkR_?!USFmECXO^((u6aM#IQyLbMJouAoxU}xWsuk2Xa5f1#} zz?TQ+2R^j@>)U^P`<3nQ+xFFMKeFxIwkP|4ssDTX$NIN#{kg5ptuJr+vn@Zp<^C4O z`iAwB)^+Q-+Sh77T6?wj&c0vm`vU1~?`t&uwb#OVMC};-+>KRx$V2PO5GOioG(C<4 zxww!$DiY|)7$R52jO)wr^uVY zB5$Xxn1NG`Tuw?b70U^U0KwEOD`p@$izY!R^#uvX4^ft(Sys$If-OygP@4)8I6QEY zHp_|`E-jewvuZ7{68UnL6*JHzg?DxLxc5hOS_%Muk(jcF1z zIza-aA>@BH%MulCL<%PSta=d~XehteEK5`%;hBC48l89w2SudtQA-1=8`0>b1XHmV z4tm()DM|w>bTRrVl<0(^1GkfAX+VWVl_sG?r;S8b966-{6{;~!LWNG;P4W!>W@$i0 zYhId!3Z1a1_(=9{mIhRG)*?yJ>9l|rHYzO5jb>>;bz>TxbUJNLA`EOBo4qukqBIQs z6e@H=oAyzf4xp#cc4Sc%uW>2%usMLH^ZqgfhIq1n<;p+aZmM5qzmXqE<4H>S}^r_<(7fy%tO zKr9WYFw@Xap+qN4)i9JbO9Lv(cTyzqv*O4>=~FlVBBcS1u)qgfhI zJ)1-)epZqIwD2OO0Tl*S`bAV{Co(xuv$4@E4XBo+59LjW1FfP(7POCw^9u zK=C{jdux^kR5X33Uqp3wqF4v4tBq!9K=o`Ao%mVx6h1Or@I^`kDvCJMPoX+HLueN$ zb=)issGd!t6F;k-0(t`~wKYovD)dnDDX2=Y9Z?j*pPH{lX+ZTDjZUf(>?#Qu(m|p$ zprY?R{S-=cLQTroqBNl5M5jq8(P_i94uF>iRFBc;pn8l(Cshfyc!~&B>Y%Qb22|wZ(@&v7CpvP$(%fj422|L+Xc8)P25|Al zQKPhV;kTs&8Hq+2Npjo;EfVm&|Mp)^%NFF@)@Wyu*F)U1qyb;&)Y1GWvG-(lOSQ5lR%X= zZ1`qrEQ5!TCP7N~oCHcgW4|^_W0^~zpZHm|7EW>Lo-2(p^!bTXR!M@Pa&x0O%aNeb zNmbJB6b`XrH_Ua<8IA;be!5g8?Sh0|RK}U+NYLn{DrtiRvg%?Olp)=(lqBdA6m`GI zwa7`}n*bM690~FWMRf)hiB40>M)Ng}1dUFrl6LVTFcs!ck#HnvbW)YH3lb1Vc^#Hd za3pASQkAp|61gW0%lRrtf|TwqRY`l51mZw&@LlFekkTD3J5|exppM*Z`U*#aMkiHC zyLbxMhc4e}UgAj5=%gxX7bKh@cNI4;awKSUQbAw^30x=gFLI$IK?i}Md$wvV5crha zJkN6^XmnCRU=Z+L9g7J!ZKHXPBSE8+3IZ!gI3Ws)HJWER5;QvLO4|8TF!*S3UYy}b z(CDOsz>23p(dArmoa9K*=%g!Y=TCv^tGO}eG)IC)CtXP!B=X?O{NS75NYLn{g1|a2 zf;I*y4B2R&;z-cwq=LX!NkCWvohLaGG&-puu!02Q$nwHuCrT1@5SU8^ffXcR&+)Jp z$2k%-I;kMART6fTi=uIk1dUEA2&^E1OJWYKV;l(@om3E5K?1$&bMM3$M}kHtT}eB~ z1w0A)Hap6ZpwUSMffY~TzW8Z2RITm zI;kMA&RU=dAr$mRbA%&7qmv2(D@dSGN3Q)2b0lbV(xt2O7l9Evw?a2K5;QugAh6;o z@_OVT@o|m>jZUA`JM*W&agoc^mpKwNI_c8YISJGwcL1%AaU^JTQbAzFi@=7DE(Fbw zawKSUQbAy=B%tx($a#q)L8Fr{U7f#(gOE?W$WTdw4g!OctU@P35A)+U=19=!q=LYT z7qQV)2P7hn1dUF*bTwWC6*6tKqG^U42^yVr>FN#%Tm>MO1C9iZPP%k;P9j1yimCrc zhagD5A|-LUIwjGaeYkRoQMpQX!i`zGrCcR{$j##xa>uSRF?hpy*qgc}(Ut0yM1NuV z&dP0@OiAR%tXJ`+(SmD7I6MSv#m*2+bZ&eC00O@S(S6zT zY^Nu0on>PS#G<3vPB~@`bS=7rq6&MG_M#;i9>XH_`l z`6ylh)0DaY?|UP!ae@DNbwBF=U8`0}4vZchy?A4VSac`h#;i9hpfG7#HUC`8l zGAc>0sU%mcRg!f4z{Hq+n?M{&5|?Av6WxgO>qs68BlXS0s3b-u>2;L^!gj7&*pB!| zuHN%65WCP$xG`%lwF^Thk7`g}3^sh|ZR-2~Y_+gGaq`CX#ksS@qB{vUX6@--bgz!6 zbp#=+7u^Wk4dZT;-v4K+g)OW~2hUE%1mak3ae6#v4N{0h2l3ERt9M4&8e!Y(!q(jX z$qT>qBUF-wYL(>l+=&r;=^k-b*$Fphy|pW!SjgR z9wp+8N@7%!UROyVY}0CC>&7E9rO@05rSuJeC z2Pa1T+gFLB&q=s3>n&Z2?&ZdIly5M?)&$!X?j1DSy-_V}uT936#!p-%5QqBz<(Tzk zH{yImoS><;8gWM08e!Y(!ZyGEKhrnUxAzD3?%(rMdqxL;WpHlypX~nZ?sx3^(yo_w z{^HJ8cl`d2Pw#kQ;Kv4>?f-oHnQgzd?ZLL~{Xg9Q{MMh@dTh&Ax7@P+-1?lgulD8I zNZ&7m5b-C?KDw>%{Ep_{+v(K&&BcZJ7xT^fB6D6`?Wt`iXO2gc&fI9e&DS+aYP=;7 zNVAvp?3{$TOVd~FyE=BlB#E6cmS#hGb}YGjd*Q_R>4Q3U!X$~EFqUSqo}HbXJms>9 zD@?~um?W_i#?ma(vvZOw2PW@&hmYvk36mst!dRMxdUh;%aL^8q9|(2qgh>)RVJyu8 zJv%!&bob%yYjL1sCrpyq31eyI>)AQU{d4DnvBQfxcETiyoiLVWo}L{`mT+O6nd`)| ztM;8RNn$6ArJ1W|XD74g4$RM;TGqXtFiB!3jHQ{QXXhkWZ;q$_^mQFOVUom77)vvz zXUCGM0}rQ%r(7L7VUom77)vu-&(2OR&QBh_dUiy|PM9RI6UNf)MLjzwxpOt0IIws~ z$4;0eu@lD9tgdIrl97W)z2Td4I(EV&iJdT(W*^bBL&&%@J~x$i!iZEGL6{`56UNf) z!+Lg3vOID=zBsKt#Dqx_J7Fx%KBQ;IlIu4|9!B>o7L%JKu@eZS*$aAhb}}(?fBeFw zS>3l2CQ0msu{3*L&(28>&oAFuI(19OPM9RI6UNf)gL-x>iBAk)m|wb~V<$|K*a>54 z_5nRRJ2|=(ElrP}(6JLHN$iBNG<#0Z&Pf)}Jh=Vv*l`^@VUom77)!Hf_3T)3;_MX` zPIk;Vs(mL+lGq7jY4(hsot@ax@|B|_4|Q)ROp@3MV`=t&Jv+oi93DHdc;<|boiIsa zCyb@pemy&uoc7~~)6tTSoiIsaCyb@p(|UGxGC#6-bLPBOA_$WtcEVVi?bEY!5Y=<# z+Vu1t-P;M1BzD4Bn!QiY4y}A+c6IK$R#y=wN$iBNG<&a}ot-S6yLkS_aV=DYNfJ9@ zEY04dXXhm6j!k)Y<7@iG8$ot5hh9Ogt0Vxm!6%SM8Wvf zp%a}DP1UI)Op@3MV`=tIJv%2k@6U|hnyFCQxk(Z`fk2wQL(h&SlQ-tWo5LNOnCk6> zNfJ9@%=rHagGJX*a7o;+c1dtsSXy#ncUte|ZI$7W&GJxm^b$bTDdUn5;{O+`T@vd& zqpbJviyokk-H`30Hj0Nr`|3qEA&DDyg>BN1#Cz2)2~L(t+guP+*1NkA=b?K;$U?Q} z(YPdxOQP3Z5)ig`tA#D6;z_$u(B7(pVbcZ!Sdbs`*5 zwUEW?(5C}N*!G&Ry^$rSgs16xKrr3@q;^fr5+50mK)7PdJ;g+3E z)2Yk*Km53H{d78Y?_S>AJ}!S+n4h~oGrQLG9(~d}ea4~ExM(KltWCVKu$2GH*SUuE zEdK#5{OahV=mco2;2>Jc4p#q3+4bHH?YfO(mH`5yZD~f)^&TBU>OQF0Hk$dNCb`ek zaB?;%Y+v^f+>8EPUW98EE1sjcTXbfxKH2477q;g9-*wq1et=5ydbLWz8JDHAO0XMS z&+umz?*GA%7ok=&+S6&IV^69iE7d9qXJVHYU9g^8@0S+cA7XJG{SD9##N7W){C}t7 z1VR#*t5p)t%OW98aG+TGDa4_yFfJcT#F_iQx&QaNN&;cKR4r^d=cBX>1;3*8G_?z% zIfj~x!G`Z)n>zmgVYRU3T(Huj3*J?0pS0*54@ZbbJ~|D@-2XR>yG?3re^4!KIWN3~ zI2hYY554t13UNM~A8N{c8ewaMZLbSkbN?r<`&~b^?zC&wDhU_%D4kV8M5FbBcvdlg z$oK2$WF7>@|1Z@4Yxh;FBwX;PwCF-yr}ezF=qxX~h=zYoVCw&C48*;rl6<;aCE?98{M4=4JY?YVs^T$!eR1X9^tJ0`Bm|4rA{?frP>8%mZHVsQ zF^gRMKU)o1f3%10nJv>*oI7b=fC=!2N%FwMxPz;-L zP>aF(2(=4+v^i($!eARd^fvSTzrCee*m7knq(v7hQdl1r7rpRs#4ZaRbu_lQ|M%Mc zzim|u+jSNtu|7m04#JjcbZR4Pjj-)?VQcRH#C5;xC*1!Bt5p)NRGcIog(`4XAf8oD zG~|2r2z|kHsp!2J|KHwSt&(sB^Q1)=YT;Ra*P`24^cW?HHAWY6|KG4Gyg6MG?OoL> z30E^wLYzyh%yq?7k4TJFA5)S4vdcg+i53%cXW90)ri0 zE4rQ(wmYhYEmu%gT6CdSs^v(F4iAS{cNmLo6KrRK?Hev4RRFWsFRT8d=fpk_0{Rym(N@rC(WJkIGKQ=9i zARP0p+R4Vw=G$+sR!O*44$`6vT^g*Hq(z6(C9a2|@0$Goe8E*WkY2n0zo}X!;ktQ9 zh!YxhSVI)z0%Rn{CL~dVI1`fC;~|L-HoePH5z0h24nDi|ry7 z+uZ++ur>Anbn*Ys^u6)_s{h{`eHYel)z7Z|m+C(zv)B6j4)0j#?qcA+c>UJZ#HQO* zaD&pB(D?^xmgqYuILVEhV;2{fr)cu5!&{gnu@T17>=Sx+EMe1&{>@|ebnJvl5<6im z&0f{Bvy*$vSFhd;wY@!rNfJ9@EX^+K*}=>H@b>J)u(m^zIY8o48?XTW1NABzD4Bnw{6Pvy*ef)8pr6&gmDEn|obaQ2wC51BAYVkeBH*=apHmJHt+JvlR6ab|LpBz6LUG@H<~vy&4m)AQU?BdPz?)@veQ$?60u@lD9Y+TQd;a`tkx_$J# zj-4<`VkeBH*)cskJ6X8B7~MFpg^DmqVkeBH*_fUkZ04i!mHSKDR*}LaiJdT(W=Hkx zSaQR+A5NS)tzS%TlEh9RkY-2p?Cj*&og0_jNo_}1VUom77)!ImdUj3{Pe%{uQ|-PJ zCQ0msu{1lRXUCE;|H|z7i54HmYam zB*zX6A6Pm5K*vs)B(W35((Hhq9ZOD*92z|~r){q*Op@3MV`(;`X9vyZ$n0=cPgM(BPSKSXUC?2zm&HYQ5aAf397+^KnngFs zcD)vC_m*m5%iVP(#0l3J>tht+^6F})*^Vx}(*)b~c(9$h|MT~J)qg`Jd0(|k!WoyP zvr4cVTSvsR3ip2>WgKI~Dyc698x{?lx+Kwit5p)t#4atmU_G}EcP+XbqjqNKnvg`D zfY>nZHfjFalNon#$wm{%`L8=KkM)ceSwPoR8AEFZdO$gVZhz zBil9i|4yD==YL+^k7T=dRSR3r1uHGO;9a#wyB6JHb@cN_2>@j_wlTK%oU#3#)xwtZ z!b^w~9PHMCZp7L3D2PMfG}|@t|0e!l7yrMl_FUiYm7N0vpYI>EzKFk=Khg@|{{L*X zO0v#~M(c!hRyjkA)xFRTnWj2UPr4+Ysa8q2;7>_F2yva(acR+6o{|WC#Ie-^!l)!Y zr;@zCS|#D)eIt#w8^tDGU%MN8tm5v1BW-jnzL z7phefE-hJFbRpx|n(SJ1hN6pZ-T_d(=q4nw*Hn_{t5uS9CY@WSDZ~W`J!a}{Zd4MZ zlJvSt0%7~XYGKP2Y>>`jy+9dunix2n>yI;1J%NoD_bEgx=@kAI@P`C z3>}V~K-b~O2-^+gZj%PvJy$JkxymIH;t>B|RyDCsQiuy&59W5IdS`^K5w^W9Y|Z_j zyzomuLM368x_|`u{8ry+~cFbi<-yQ>!F)wMxPj%##*fsD)=; zlos6?@}qj-`Mz$^jY_g%+-*{o0gsYh-AxWjgK54}w-Y(G*hY`KD}($Oc>O0~{)ExL>Te}T(96KrSv z|3!PJ@3h(7;F5Bd22P`dn@zjm)c>$P^c zy>G!9&YsmaFOZ~Ur$2%9+S*y=?qlAN?+*Dkq+`rHTX|OXrb-f2t0Y`22Whc|E)7<) zw&-jh3lVWK1eL^(eT0aq7v0?dH;lVYdjI#URT8e7hlDtxQHS*j3UQtjqSL1mamFQK zToS$RlED4nD|R6zT#N2JLXR407Ybw6tJE%ZT+g;m{J$9g?^X+2uGNpU=t37C>vGqk z!^7cwr~s%AeKN^*J(q0fR14d6Hgd9Fp%CYWcAzQmY=o^5w!JQF^ZWmEeV^*v`=z~S z_WahK2Ya>;{_x=QyMJc)v0Y!?b!+FJ@BG}(eLKFqV`Si$2WGba(e}@5f7`a7*cSKy zeE%z3e|PH}TlZ}FTU%`FpIN7CU#l(F`uqNE-`@kVb^m$c(YF4+^E(EWcjzP>8@YRN zq|?dag-87rlh5B=aF;Jm=6x7mc(k=*@`W=Cr_Rjy`Q-G`7FExMqSv64JUo-$JbSb= zTlKKQq%QHu5lA0ddUh;1AKf}|$qng_62&tKlO%S+So)}@XJ;qD%BjVPi;A{5tL+x~ zNfJAOK>Dap&(2AXj6Y;^2M_7qPM9RI6UNf)(|UF+IeNp19xQ2_NeYuBcEVVieM-;H zPA*+z3rn%04cz0!)zOr+b6W_gh>)RVJyv- z_3RMAI5|0cY+liY=kYe@CQ0lB0%^9SXJ;oXN7&TVjhp(#3EZ*Z{;2Nlgh>)R zVJyuS_3WHvdTQkGGE=k?E8b3+B(W35((Im|9ZL>G^K&;RD$Y!9lEh9RkY;!F>>xjG zFz43A!}`VKCQ0lB0%>+f&(29E&p)_y{mKy?J7JQQ+J z(ure=R$`C0IX6jSClE-pRL{;%mad$?G-;pFy`3;gVkeBH*-bq=Cpq_EWciq{Xvq6` zn{$&Sb^?JkyP;>tlKI8^cZa=5_jbZ0iJdT(X4m!X?BvGq!Ncc9wQ8*}Nn$6ArP(z- zJ13brHa#{ysfCI#Nn$6ArP)TwwRt|or2Co2Se zRPD5QEG^f0CRwx6qI*NOSGOaN1)8)B6Cu!R5dtr%ofZY+1kod(xx8GnX1WpQ)&myX z#%WQu(*Z1~XI#2Esww&PC7<7eNe z^nm1wt+du1-PO7xtuaC#S>5rX*mU2~opc+9*=CHs`^=qo)B)J{9998Ld5y8Ax&da_ z!_fCVb(oLw{~Q0m@&EVrnfm{0*LcN$K;bx0t#ELrVo3-JR$wdT&nkb&W<$1Hht7}V z$|xLfT+RjJ<@ruaqLJ#`{W@*o)=hrVk#rH~@&8cq(3MEN=;n6cQyK_T5{IjA_ngl} z+U9~g#JWKt&U0W-QU}2rmBgqdy{?i#*fy$#E$2#%!L5|5IG~g`c649IaMK))}8@-Q~|J-2a0iH>k4!z34TL z=AQKKAE{PJxKK_>KnPKq)}5|Jx1GA}gfUYah)qgj&!r?Du2xC7XkH0%LZGg7yBl$= z?gx%(&Cb3+*uQ19cUS4d25y_5J@~wXj`h z6u&huEjm0L2&J&hjptPac&(}KHpU%&fNda{omaGjsIV` z>XUzgN^-JVC0S?YthFSbRj!@)|8tzkbxd@>Sd!>OwMxPz8B2PgkUwla6c^ozhCGxc zc2Ne}-2aVAvZj(8uU1LcnL=(o=ti82kVF>6#wDRaoVov-`~P^gu;t1xNawy#S;4wb z?LyZMVvS?4H}C()s)a3AghE<$p}vH*C@y;L;Rx%DvC!6}R2cvNhH)8Qy8`|K|R0?*HcgPhR@ze zmpQBdBA>C`nGxa|7a=n~iX9)OQ^)6KEIBz1_;~9Kh2Fh5uwysmCoFd+ASAbLqt%V8 z$?iX0Eo`~MpwccBYJOU;Q@hZKeAiJs1~+`@ZE9gVQ7vq_@~G0H3zbi;m99lcvK@1$JqiwpC!X-bNicujCjOA;n@ zLgvR#0K=Z^#cT57@_vl7hs#OxMuR@nf!i`yNanW<53sMs8AkxKw8kfX| zakokD{}-!O60SFgggBw?hSj1F=XtKLsW@R=62>Lb>n;fh+Y8mgmTOrf?Lwg&jn(Yl zg?TC6h=m$gbWbMRov#+QT;m>T(S@Eo)^~I-x>JWy2=Z2~;TU1tYr^(iwXo%SH%W*S z+A>+6?nWGRY7YUP#{X~b|E83#%GjRY|KB{|^zHqDz5Dn4)Sl77Um2X+{U^IWyZarx zzO?J5oxiyA)g8aTJiKyV$4;0eu@lD9M{m}%bCQG0r_W6toYJuqCQ0msvGmcK^z2yTo?xSF_N{v49jKn7%r256=CQ0lB0_mfjdUkel&P(S;{AnFKVUom77)u}R z(6e)r^!CZ=2lEweoViI7JApv@Xh6>ny>4gjq!*8#(!HH9Nn$6ArH{7j*$KX6m3S2< zN$i9%?d57= z%U!LcZ7$rJtj|)2V^I{CR=T?MPE%~B$BXTl`~N!c|5vM363&(_omGOF+WNe7R(V56 ziOf%`Se>i1VbQRuQxfN@RT9pkFD<%YthatpT6A}a*(eYj+qU{PW>OM+E+uicS|#C} zIuhape~tA66yj{(jx|NF&Hdlp|G5i6p`P_#{{Kw1u;qN6(k>L-nAZ1q?Ls?--Pdir`0M67i%i%fkGIm z^}~{Y@Q2)}jzU*9(*#`@|9`KkBsZ&75-!|WLYxpuZ2gUH#D(?1iEK}eIHQsnm892I z5(L}bD0X4?tUA7ti^7+7p%7qi{SdVaQMAgn)fa;eA9|bG*nYiQ*mAiD(xMA#2G(Df u79AdrupYUAr)hm+jO{&VY`<15Y}c7-Vts)^Tn;#mPt6EhBW!zJ*!~~CN~Guj literal 241664 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 diff --git a/PlanktonDetector/static/DetectionApp/css/base.css b/PlanktonDetector/static/DetectionApp/css/base.css index b750861..d8b57bf 100644 --- a/PlanktonDetector/static/DetectionApp/css/base.css +++ b/PlanktonDetector/static/DetectionApp/css/base.css @@ -1,10 +1,12 @@ body, html{ height:100%; - margin: 0px 0px 0px 0px; + min-height: 100%; + margin: 35px 0px 0px 0px; display:flex; justify-content: center; flex-direction: column; font-family:'Inter', sans-serif; + overflow-x:hidden } .top-menu a{ @@ -16,10 +18,12 @@ body, html{ .top-menu{ display: flex; flex-direction: row; + position: fixed; + top:0; + width: 100%; justify-content:flex-end; align-items: center; background-color:lightgray; - margin-bottom:5px; height: 45px; border: grey solid; border-width: 0px 2px 2px 2px; @@ -29,14 +33,10 @@ body, html{ .footer{ display:flex; - position:fixed; + position:relative; bottom: 0; - right: 0; - left:0; + width: 100%; flex-direction: row; - justify-content: center; - align-items: center; - margin-top: 5px; background-color: lightgray; border: grey solid; border-width: 2px 2px 0px 2px; diff --git a/PlanktonDetector/static/DetectionApp/css/results.css b/PlanktonDetector/static/DetectionApp/css/results.css index fe8f81a..bf6a92f 100644 --- a/PlanktonDetector/static/DetectionApp/css/results.css +++ b/PlanktonDetector/static/DetectionApp/css/results.css @@ -5,29 +5,31 @@ form{ display:flex; flex-direction:row; margin:auto; + overflow:hidden; } .side_menu{ display: flex; - justify-content: center; + justify-content: space-between; align-items:center; flex-direction: column; width: 25%; background-color: lightgray; - border: grey solid; - border-width: 2px; - margin-bottom: 59px; + border: 2px grey solid; + padding: 0px 0px 40px 0px; + margin-bottom: 5px; + overflow-y: scroll; } #description{ font-size: 40px; text-align: center; + margin: 10px 0px 15px 0px; } #submit{ - margin-bottom: 40px; background-color: chartreuse; margin-top: auto; height: 50px; @@ -62,3 +64,24 @@ form{ } +.image_number { + font-size: medium; + margin: 0 0 5px 0 ; +} + +.results{ + display: flex; + flex-direction: column; + background-color: white; + width: 70%; + align-items: center; + border: 2px black solid; + border-radius: 5%; + margin-bottom: 15px; +} + +.detection_info{ + font-size: large; + text-decoration:solid; + color: black; +} \ No newline at end of file diff --git a/PlanktonDetector/static/DetectionApp/css/upload.css b/PlanktonDetector/static/DetectionApp/css/upload.css index a7c5132..35e4672 100644 --- a/PlanktonDetector/static/DetectionApp/css/upload.css +++ b/PlanktonDetector/static/DetectionApp/css/upload.css @@ -5,6 +5,7 @@ form{ display:flex; flex-direction:row; margin:auto; + overflow: hidden; } @@ -17,7 +18,7 @@ form{ background-color: lightgray; border: grey solid; border-width: 2px; - margin-bottom: 59px; + margin-bottom:5px; } diff --git a/PlanktonDetector/templates/base.html b/PlanktonDetector/templates/base.html index 0884c38..a5764e0 100644 --- a/PlanktonDetector/templates/base.html +++ b/PlanktonDetector/templates/base.html @@ -13,7 +13,7 @@ Plankton Detector -
+
Community Predict {% if user.is_authenticated %} @@ -24,17 +24,17 @@ {%endif%}
{%block content%}{%endblock content%} - + {%endblock content%} \ No newline at end of file diff --git a/PlanktonDetector/templates/upload.html b/PlanktonDetector/templates/upload.html index 74f0d3b..8f8d78f 100644 --- a/PlanktonDetector/templates/upload.html +++ b/PlanktonDetector/templates/upload.html @@ -4,7 +4,7 @@ {%endblock extracss%} {%block content%} -
+ {% csrf_token %}
{% if not user.is_authenticated %} @@ -15,6 +15,7 @@ {%endif%}
+