From e7a0ae20ffe0f73025acb0e9509fd8384599459a Mon Sep 17 00:00:00 2001
From: Gabriel Copat <copatg@cardiff.ac.uk>
Date: Thu, 30 Nov 2023 23:29:46 +0000
Subject: [PATCH] Created barebones Userpage, added default images for items in
 page. User Class and Controller updated to work with page

---
 .../java/Team5/SmartTowns/users/User.java     |  12 +++
 .../SmartTowns/users/UserController.java      |  14 +--
 .../resources/static/css/templatingstyle.css  |  26 +++++-
 src/main/resources/static/css/userProfile.css |  88 ++++++++++++++++++
 src/main/resources/static/images/users/0.png  | Bin 0 -> 22268 bytes
 .../templates/rewards/userProfile.html        |  49 +++++++++-
 6 files changed, 180 insertions(+), 9 deletions(-)
 create mode 100644 src/main/resources/static/css/userProfile.css
 create mode 100644 src/main/resources/static/images/users/0.png

diff --git a/src/main/java/Team5/SmartTowns/users/User.java b/src/main/java/Team5/SmartTowns/users/User.java
index 02611fe0..66722239 100644
--- a/src/main/java/Team5/SmartTowns/users/User.java
+++ b/src/main/java/Team5/SmartTowns/users/User.java
@@ -4,6 +4,7 @@ import Team5.SmartTowns.rewards.Badge;
 import Team5.SmartTowns.rewards.Sticker;
 import lombok.Data;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -13,6 +14,7 @@ public class User {
     int id;
     String email; //Validation would be done by email, since they will have that
     String name;
+    String imgPath;
 
     Map<Badge, Integer> badgeProgress = new HashMap<>(); // Demonstrates the progress towards a specific badge (0-100)
     Map<Sticker, Boolean> hasStickers = new HashMap<>(); // True if User has sticker (key)
@@ -21,5 +23,15 @@ public class User {
         this.id = id;
         this.email = email;
         this.name = name;
+        imgPath = findImagePath();
+    }
+
+    private String findImagePath(){
+        /* Finds the image in the Path folder, if image is not found assigns default image */
+        String imgPath = "images/users/" + id + ".jpg";
+        String notFoundPath = "../images/users/0.png";
+
+        File imgFile = new File("src/main/resources/static/" + imgPath);
+        return imgFile.exists() ? "../" + imgPath : notFoundPath;
     }
 }
diff --git a/src/main/java/Team5/SmartTowns/users/UserController.java b/src/main/java/Team5/SmartTowns/users/UserController.java
index 602fe65d..78c1d94d 100644
--- a/src/main/java/Team5/SmartTowns/users/UserController.java
+++ b/src/main/java/Team5/SmartTowns/users/UserController.java
@@ -2,6 +2,7 @@ package Team5.SmartTowns.users;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.List;
@@ -10,17 +11,18 @@ import java.util.List;
 public class UserController {
 
     /* TEMPORARY USER LIST --- TODO REPLACE IT WITH DATABASE LIST*/
-    List<User> users = List.of(
-            new User(1, "johndoe@gmail.com", "Chris Redfield"),
-            new User(2, "johndoe@gmail.com", "Claire Redfield"),
+    static List<User> users = List.of(
+            new User(1, "johndoe@gmail.com", "Claire Redfield"),
+            new User(2, "johndoe@gmail.com", "Albert Wesker"),
             new User(3, "johndoe@gmail.com", "Leon Kennedy"),
             new User(4, "johndoe@gmail.com", "Jill Valentine")
     );
 
-    @GetMapping("/allTrails")
-    public ModelAndView getUserPage(){
+    @GetMapping("/user/{id}")
+    public ModelAndView getUserPage(@PathVariable int id){
         ModelAndView mav = new ModelAndView("rewards/userProfile");
-        mav.addObject("trails", users); //Mock data for trails
+        users.stream().filter(user -> user.getId() == id).findFirst() //Convoluted way of finding the matching user to the id, probably easier to do a hashmap
+                .ifPresent(result -> mav.addObject("user", result));
         return mav;
     }
 }
diff --git a/src/main/resources/static/css/templatingstyle.css b/src/main/resources/static/css/templatingstyle.css
index 1ffc84d4..e2955d7c 100644
--- a/src/main/resources/static/css/templatingstyle.css
+++ b/src/main/resources/static/css/templatingstyle.css
@@ -1,6 +1,28 @@
+* {
+    margin:0;
+    padding:0;
+    box-sizing: border-box;
+}
+body {
+    background: linear-gradient(135deg, #9f74be, #3e126b);
+    height: 100svh;
+}
+
+main {
+    background: #1e1e1e;
+    border-radius: 1vw;
+    margin-inline: max(1vw, 2em);
+    margin-block: 1svh;
+    width: min(90%, 90vw);
+    padding-block: 2svh;
+    padding-inline: 1vw;
+    box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh max(1vw, 1em);
+}
+
+
 /* Header */
 .headerBar {
-    border-bottom: 2px rgb(230, 230, 230) solid;
+    /*border-bottom: 2px rgb(230, 230, 230) solid;*/
     margin-bottom: 20px;
     display: flex;
     background-color: rgb(84, 33, 128);
@@ -63,7 +85,7 @@ footer {
     display: flex;
     justify-content: center;
     background-color: rgb(84, 33, 128);
-    border-top: 2px rgb(230, 230, 230) solid;
+    /*border-top: 2px rgb(230, 230, 230) solid;*/
     font-size: 1vw;
 }
 .footerBar{
diff --git a/src/main/resources/static/css/userProfile.css b/src/main/resources/static/css/userProfile.css
new file mode 100644
index 00000000..f86825b1
--- /dev/null
+++ b/src/main/resources/static/css/userProfile.css
@@ -0,0 +1,88 @@
+
+
+.userInfo {
+    display: flex;
+    flex-direction: column;
+    padding: min(2vw, 4em);
+    text-align: center;
+
+    & #userPicture {
+        width: min(20vw, 20em);
+        margin-inline: auto;
+        border-radius: 100%;
+        border: solid #a2a2a2 4px;
+        box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh max(1vw, 1em);
+    }
+
+    & h1 {
+        margin: 1svh 25%;
+        color:white;
+        border-bottom: #36454F solid 2px;
+        border-radius: 5vw;
+        box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh 1vw -1vw;
+    }
+}
+
+#badgesBar {
+    background-color: white;
+    border-radius: 1vw;
+    margin-inline: max(4vw, 3rem);
+    display: flex;
+    flex-direction: column;
+
+    & h2 {
+        margin-inline: 5vw;
+        padding-inline: 2vw;
+        margin-block: 0.5svh;
+        box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh 1vw -1vw;
+        border-bottom: #36454F solid 2px;
+    }
+
+    & .badgesContainer {
+        margin: 1svh 2vw;
+        padding: 1svh 1vw;
+        border-inline: solid rgba(194, 98, 188, 0.7) 5px;
+        border-radius: 10%;
+        background: linear-gradient(90deg, rgba(255, 215, 0, 0.75), rgba(184, 134, 11, 0.75));
+        overflow-x: scroll;
+        min(18svh, 12em);
+        align-content: center;
+        display: flex;
+
+        & .badge {
+            margin-inline: 3vw;
+            height: min(18svh, 10em);
+
+        }
+
+    }
+}
+#stickersBox {
+    display: flex;
+    flex-direction: column;
+    margin-block: 0.5svh;
+    margin-inline: 0.5vw;
+    border-radius: 2vw;
+    background: #9f74be;
+    & h2 {
+        font-size: 4em;
+        text-align: center;
+        box-shadow: rgba(0, 0, 0, 0.7) 0 2vw 2vw -2vw;
+        border-bottom: #36454F solid 2px;
+        margin-block: 1svh;
+        margin-inline: 25%;
+    }
+    & .stickersContainer {
+        margin-block: 1svh;
+        display: grid;
+        grid-template-columns: repeat(4, 1fr);
+
+        & img {
+            width: 20vw;
+
+        }
+    }
+}
+.locked {
+    filter: grayscale(100%);
+}
\ No newline at end of file
diff --git a/src/main/resources/static/images/users/0.png b/src/main/resources/static/images/users/0.png
new file mode 100644
index 0000000000000000000000000000000000000000..75a9de71d2fd7e9b4f8e5a0992d0edeabe50c888
GIT binary patch
literal 22268
zcmX_H2Rzho{Quq^=j7~g_8HN#_sZFOXJlTKy`nM_$Eob3LI{yPvn8A|i|mnkl?d5n
z#NGev_y52CUN7!^pU>xcKF{-f=KFcRv8Kj4wC6a^0RTX&r>kiW08sEN6hOeikG<fr
zWAK9_P+jjj0{jU>+=>DJr}o#q5eNWux@W%-FF#r`_>ldsmd#xYKi9iKHv?`1K|w*H
z9==|IE;s#ei~0q)Wo{^Q0Dx79o~GLM;OX_(L19+Ej>zo=sW}x^?>y`8y|ndO=jV%7
zQJ=a}9xX1(ck`(@j6$6WElHtvL-N+e+&|w55W4HL%x0#^Dw>$L#rOQlUs-ad7$mdr
zeBI3o+&JLfoGcSFNLg;)SbKjhCvamwLcfFz10FC-$S()rGm#`81|J5up&9fS?E4OL
zybL^(Hd``y9{Z%j4z5IdO+p^)KTAyL2*L9zXC0h0{>+Zpja_z|-#JNIR%s8cUG}@W
ze==}&&@E;+tne~ij`Ji#0#>a`0YTS&BwfL)a!O17zA4^8yoq<CotKdR&FKD1yiHdA
z)>dVQ75*2TnRW!p!8z+|`iu)806>!^@d|3zb%=oOLig-aoJQ%)M%>M9%Itc|^L#6>
zLlSR~zmC6%SJnH|%LgC<9CK$|irPaw3BF6~82Ed%<@G%O2jA);EUrh>L8B6a1pxI6
zd+pMPnQ9-F>;JkA&MM?_b1e?^xnxg$LCs!pQTK&{H2th6cFO93IUStv1@y;;pPYkJ
zv&-ydcD)W~V^o<Oe9xXdyrN=~i6{?TIA6Y(a9iGw8W0BnElTobd|@`Fd(94s>*I>;
z*N|@cNvS1kGZ+p640&0G8$CsQC_K6xHg`1q9M+tjg`GT;$zJGKjzjQ)BUO(2VeWb3
zkO0kqU)r8jV259sPrfM6Z12#{%QoSfBA?oCEgH88r-|k_05AY+GTc7ByVx*6yb6U2
z1x`G-OL4Kb2n2^hRQx7S<YsmV;mQ2w41%P!K83#41@ri`rlj9a-@h%lCY>H)pYKvl
zgaquI^E?j@wG>CHqE+N5|KaXXEwQYkF#U{^5ds4krtY^c!LLkZ($lE~Vjl@V`R0f~
z0f1Pv)5i0`CGUs+j8w`B52a-2Pyo*0=|bYRed#VN3L^T8$|R}B|EdHQzyy7-@&<Pt
z@dL=X)A{`0%N0sc4hK!LHT)giBoIT7QKMB}FNt*;762#Zd!DqWyqhcRehgd)_-G+8
zIV^Sdl!2s#T;d2b!c%R<RjJ4XQmIgg14Pa5RbJKEGk*c-`wCOfVo?=J@L}}$iDcT*
z<pEB@b;tcN))p#|zd<QG2-o4rA%iRUvpdGoLkEKc>X%QfLs&&#7fQe=UXEr@x5PP8
zpa8^Q=7_?MOB@myU4>sITJs114qRm+eW8WdzN9Cl+93*L#fq#UaG?J@DGvTn;T=7J
zQ5dOTVf8i$d<bPEeL;>irBe}}u`%eaJ8Fx;kia4TNdSvqUPqC%IiRy!Qk2@9f)WQz
zD-U(pKN$R^@Mkd}HQSRX02mLs-HHM;Xj4Z0ECyWUi|0vKXm@Da3KXF39gW!;?I}Dl
z5J2S-nGJpk-s2tv*aq~E!ot-|Isx3ZA5J|)S`IW29ID10DgXy&MNS$y%HMv6V5oKd
znqE4_LV$z05xIV%vJoBdnfRf|+J6lV2kg<Ln{dC8DS$xr)-8HiLjoYq2L2Of4>OU1
z0jh`dqZ&<4;QG-i^}Es2A^}4z{S(AZfI#}_)Q64ipv+(e(t9aQ{7N*dx&Yj1XFI;b
zjDrQRiP=l1+p|XkQyPbU(l$CSP#l_HWm!8^99(u`k_24XLmOa#zCGw1ikAQw?7x!}
zJCr#XfGJ=_tNo3f3qT0nuJYWHFrosyqxasH?ztlY8-WuRq&6x{rxpTm?z}G2vCMS?
z36;0ozhOCP;Q$wIuQYRI4%|Welb=ZA(dz&~O?NOZ{|QK>`n`PwE0IV6a3$<jUs+i}
z0b7nIo6=KSy8yt3ZvA5%sssl<vytz^-8?t|BLCZ>`urXjAa~D_bd>dz9uRFaLFYI?
zQ9zT;NtH}+92^30pj$U=Lsj9xHhBe`b1F><48@#saYaLh98N5dZEx5C++*EM12r0P
z;5~JO7G6Ob0B})`HjF+5;5V8ihx(vC3<FLQ_BuI-5J+5R7g-cPc=0}HM9K5PY_^dQ
z|NKKaX?cxjFyKYpUhiXfIGkYgBj<dFNH_q@qgy4Z*9kzA+DYI=cL2!gQ_~O!j2&0n
z6ZjuvEn3OC<8_+=%R+mj{%TI;`-9EO(7#4jr^k0K@S#Cg8ll~#-&fWxU7yNQ_L5V{
zLgbti&ZEX1sh!##rNyAWO~D2RXzDu+07jJFuDZ3w)kRa7B4Iqf`ua^CGqYuy@A~!j
zN~3Y&l%l7*VH3yfVpXZrT&Cs0me+Otmt`Vq;f*J>M|PAEqlYs)?2EO%ZYhI8InUlf
zpFeZ7rS|Cn<ke2D==eY9rO-_b7r2gJ+$g<mpP=t;VYi>qX0adBG$DCMj^-#~=f*Fo
zFK%g@=!HiTkAP>{w(N-=z|@Ts0i>~MIq^#U1G?)*Kc`ER5<gn%?{oTy?Ok&T6F&0Y
z;r`VkxkRKIu@e~LK;pQ&+I=Y|52NT!4in$sxAMuHw4xsO3&<g+;ltdHHke@Z3^;n-
zrxo!_Sm2K!$q4z?BFl8iBD_ki)Y6c7y!oqB9rMXfa=Na!p!VXq7x=wtA$NK>f$qn`
z1ko;zNuNJ}h#GGS6lR$uZX#OKbjt-@nUn$$`f8!RcG3tKgZ}oW^Oi~%qN`*k|7o1Z
z4U-F6_D_rd#daDyUwkK6luPmU;J#YCIPivnERE;Aq<-<Ot#*UwNC|$`e)&Gd?B1oQ
z85-v+5<-)?h!OngkRTEx-lh792<@VJ^lz8*UaYl)*L<9fT|%dg^FRp9lwzfe-JKbZ
zM*UEI9EDfs5E9z%<js?VGCc@jh!ck=egteTk)B_YWLPaKEHmEUR8P=INQg|JRG{V&
z%C|%ToxE4ySZ#Kcy4+>yoOJC?@107{$59i2t!ZAvqB~*b`lX@VQC^b{u<of|)Uz_e
zT>wt#r;IrN;%m|0{lV+p9F|(QxT6wYCa^b`sa!>N0u&#{pN^9_m|wmqXW}R0sukCZ
zZ@To~`qO)JJ&3AWivdPF;8XpxJNcKQy*x_8ox#FQz~!Qgp0U?MW8ewpO(5*rd>S)J
z`dV$fLB$M%X&Tz4j~h0fgX(?PfdZ<;{(kq4aCo|9w3g3QIv3;r-bbH+vS7ChuwQF|
zHDM4i(~XyHv#UjyXw5^5-<D?0ZO%JDC)pAtnk)B3qU<juKrWh{2q*^`SzJ`i{+*Vb
zoAN2*iRpVTb{BT907tvGJvzA|C|uqTr*A}xt~Z+`(qgqf;;pC<0p<0TW{6{D|K;#C
zBrYc60^Z^LqipHTAr7;#^Xv~iF?Mg4tv>?4MMx~P+4-oww_5*L5pR}s=}c*+`CHrh
z;TR`abprp;^WT*Y448|UfXIxY)Y~XPrAzh6;$%>nllftN4DU&u5}}u}0pV#x2gitQ
zoA9s5s7$sm_>Wf{8zFe@qZgwW;WBw5dLUnC`<sp+!4KirIi<Dll?Dk%QC;9~=2K9w
zaF2CY*FfT0&isp%U`uwLmo4lKUh)~&8>>34y6>V$oKhDVjvv$waIijU)FcwVyoQLB
zus>u>Y=XduZR_Dx$+PbrS2CljBTaO_nkr52#EH(p?nwZFx}FcK_Sda`x@yvf*`0S^
zL{1{S2DrffI#nOtnn;ta$YYS+qUq!I)b%nK2fnhBOW_O2y`kn+I({!dvXhBo+8erb
zW(L#z(`GC%qTzP?1XfkAd?mF#!5cKY^%xXI^kVWNlT3j~9^a%hkadB?g3RU*x!1N>
z!~*6!4jf}~86%v-Dd$kYG71-#V&&wy|CLzmB)(sa?Yrb@;I$(Gd}RQAI-9P|!`Q@Q
zwvUvB{0dq=9*OSyN=RI57ugtJD_GVhy)i=F0X0aT&FikyuKQ(-#Hn<V_3;jZCG#}o
z_Y+N&@6H;X)pGyFblb;5s&gPVh5@Ta`J&qh7Mr+5RDGce7{vZEk>yjE-j7u#=tdUk
zCYgDmGw_h=Cx;8({u$9@nUATd5$7o=`(!+gA7}>pb_3Dj?PS>$#vf}WmOD|o=w|JK
zNSz0lv4FZ8pq(5&gjQg=8I{YgptBz7&HzW>T|SA>fvVf%BhdN`*9Di0RkqwsEs+@i
zF0ve)_j#CU)dLd>YW1i^9vK9W$T2M(9Sq0v=uxTn{1)#-{NMAXn?RHRNkWhlQU8Ee
zGY0)um(Dz%$OngED-IXj{ZlkyZ*I>N#xO*m?^E++RF09Ii-A;s1<D2ba+51%{4}D`
zbv-an1ziz!#)+FiIU|`)knOyAqYf_x!aH)2Uxr%iHx43heR74J>%zO-<cSJS{%cqo
zLADaTi&5^D7m&CRI2NKusrp>P_+D8!^AA`9CcrEpWjdPwDgj6rAen(Xb@AfcaDDn{
zD(^>&g7wr|3<Gf=0SX~f8s{IrSGgA@L{`y?*eim<B}Nw?yHEZ?0c2W&U<xA6+-Jz<
zCF%|=57wX_U>@+C<B_xBN8nHxOl}sQWBiBf+hb!9bW^(-SOK{bGmzH?1t-XDlM6aB
z1?kThIgGBx&`vS+8F`-9$JG5vLjjw#1o0HOXvk^Kvx<~b$0t+inw}^LappdwJ~K}i
zeJseXwB0^VRHlZd&7VxtypeeJ#;lQnYSa($N2@|zFQ#xV4svk;C>OkuE0_`F9^0F)
z>)5|wnZwa8%qqmMpkJYWsk{?-Aws&R%XD#nb>T5t`<CIY&}D>7-f&LLqgU1xoM%Mr
zV;#VYtE6`EU_1q6iH!gBInro6L3BKZat%NS$8?`UVg4l$T|R}}u_H21KRI(?ZM3Cq
zAb*;Prgjpthvf!d=$(TTowwUZh^Sad!63O&-QI8xVygG>oom9hOcn38_(N{Y6;IaB
z>UA6XNCFv&xuyrX{gtd^t!8g{OW!{IcyLMip07nE2hT%J35h^%+_SQ=t1mRJ!HL4#
zRo+`7)R2BM)zbsl{mbIO$I+iZVyHpUnqrnLy8-0a8wQe?Z@c7HMpkC_g}=P2@$LTi
zKgqu|+jMnySyjZ%kBPqMv8|xREtfhmK|a4C`z02qe>kivhA`M5-Tx}$CdNdAHD08`
z35P#ekn<NHxFa%AqM^%4j4|T--uri@5fz-VjQ@=Xw;CD-1SJoNw0ew_0+)rhN8WZa
z(c-G_UsMt?w4=f<UahBbOeuZ|5pUbN4bPF>GUcg1Myi<_^0%L=(pa6QxdONB&`QvL
zjes-`xEO=T2SZ_4a(6CXPV>SA0U;sr;tiwKDFFck7P9(%F;wnInS(*UA?80~z0r>V
z%Be1|0|Mvz@a9I3Y>XamuQ)U@w7s{XeP=3T@>SC-+@h!q(vd&I#*7L!l-2?F^O*S{
z>&%3%`M6-WEq3dst%@@nI;CYy{1D@0%?bRZarE_%j)eQIT;KGI(F6Mbu&&e|(l}M}
z7S-61UZUXt^>+<D9o(ErOTfa}!}uhk{;i%~sJ(Ohp69wvI}+!=_2y=&-vDP!L5}W*
z`6r?P-oXP%5WD}VgBp(dP~f_76A|0~W1+Z4ac|4Ny{kRhfqw627!FA0DopL5(iEuj
z&xiEh^6y~d5De1MJi!|7Dt)ls-W18Xmi|U^bxza!6cdnc3+L^-d$y=Umhd8!&DNvB
zJ6tAfy9#892y0<$w^u@>M_e|t2~yCL|0QOu`0&{Xj?Pr0bc*%p)4!Wjd6-yX?*F#x
z+YhJS;g_#2mwj`Jsi)Vav-m=!`c^3pWH*yXkrxm3?eXmb{MX9=s<!a;NN$TQ?po$s
z`g+}W4US(FuSbUaE26w0Q8xj&csh}udfX;#iPj)g?&@xgQ>{Yl{ql@?g{Y|qk^hlO
z5{5y2g0@Rf^<bi^#(w9-;$CQghAFliz*`pLeOGBbe{~ZTACPQcSlB_YsT8qt3&!vT
z9i=+9HqX3$5r0Qy^Ey>3E$ypAwmBjBa=v)j7xjQw8F1Cudo_^Ymk^2w_w;03@QaTl
z*M`+zZ62^TYi+efuO=8>(iOEBB??z5jsPg$52ARga6ibOF`n&<kF!2Ex_H+3M7PV^
z)wo!OQpiy|*02oq-uC2x=2kM(5<=m0Ck3}#Tw`<?g&O`nQQR96pNWg$d%#L}s|+h4
zm{#I}!0jhV0^L+?pNKkeI(Zmc{CNDmnMx+7--GXBpRG9q$GZDb<5D|{-O058+F#RP
z(?120{v}rpeb>ETwl<`setcU;M?wE2-bv`LNs<40j~O_p$H1#K1PmKCw1#YRC7>A;
z$J-6o>`vyJtBPD6wabec8IK){Li*0+)Rf*=6h;9_r;l(ewifLbw`*{|`^l-Re;(hd
zWF+S)Q7#hlHom{C<Fq~_{}ZfS{p|<23{iPP$*fx%+G@owk#8Wg|1E{Dl9}`)Y!9RQ
za)Fd%n^>_ZDMKrSo<6>!#0k)mB5|=?(%NO?r%KCz@3d~QEhnzb(Nu~|+|IgCRN_-T
z(}8j2#1*ll5ie{XK5lYkxK%d0HfmnaOv=lec~Rt;K4lsIoZ^gBJhI3Kv<7;sZ$v1J
z0>TTM&2RL2gmoXQSZ&^RIM-?7wk;Ny<$2hdPUnezt@{2z9xHIh1{t3Ed|w)1MsbP%
zLJ>PPC#eZI#fXbd$~}oRC;cC8`>zjKQKoS<Z~Py9EOmn<kZng!5*Nq9jeaP-FWjd0
z@HglfU4OOzE#?Eg5?nUH{b#8hG-Y&5HocRv)|XoP3(zTk5z8tv-RK|oiT7Jm&2$Ev
zlmBI&ybWIGjE01D8*!f>dtu30g$*5=&VOzJvQlU)tB<XWzjywi@AhOA-Y@;9+^+j~
z`~BHyQO~=hGu)YM|8?K%YKH=T;%B|LU@)lba6^bsk4*5l8B%xa9HV!95N)qdOo&fb
zkpA06>3Uir{)`8;+(<x}99dH5W%Y^C$bq%2Z{<E{{*f4}S93J*;zuj{mYb_z<;C>_
zGN$1zuaT(YLu+w)0tWZ0&d+>cVnDfQeBqq$Z>8F#M-SgDjZMGvG`L^BPS28ZCi^YT
z2Uns;0BJV{g14e{%>r#eD}R**&FE^$)8zx5V4t|GVtKLpB>k%U6{o%w(q}`^xbx`4
zs-qx4ZLH6s-;A_xNX?6vziVV@pWTCl-i9TsS-hq%$LG1u*>r6PamnCx>B-YXE*Rj-
zJW1qz)B18SI4Ud6*6xec@mzPy!NK)fCa+>1%LulStp9|9YT_ff&%uVC5%DZ{OAi{8
z*XPoNbwZ*vmFK!Z17YD3Jzx5OO7KkCVv^p717!$h8?~@GqR8(Q%f-MHFBauX{4YYi
zFNE#R^Q?kaU+PxB7M1GupFEwVxg4N8jyL_Y31IIfKI^kSp`G=f+LNB1|K3tq?RbSB
z5O$ecN<FqMMRNH6+hBgp_$ovpBu4l*mc_v<gPhTzGwwC^qDj2oC(Mm?Pc4>)DyMJd
zt<b%b##J82zP*#@XG^R81MdM$F#1==`HuTZ7OWILwlrs+IkixE$z5iwta$DXtV;fG
zZ*LS$R(H?ITrXcB5_h)ctTmz+LD#6!E_3)8hqn~G-XcN7hsr+nEK4d!MdqquxE!z9
z`}8N6eG?&bm>TOFTg+hj^7`6oA47g?S9j>A@Smv8@BiwHMX=d?<Q#4J_d4yri5oUz
zQ8*(Cj&ebT4=0p2=053X7pc_nGrxm+vC>v@+O1x<2syf}VB~}E@~#;JP!U8=JekS8
zI>kIEuhg;1{Ih#Q&CpY?;12!c@ylMJr76$y3;aahHgq^^W>z(f0D{c7s#84i-K-&=
z@3rrh-T7kjar0MpxaPTX!TjtXn(JMNyJdF*)#%tra(zCYTvvs@fm)Ob;9qLeapnKW
zBbB_L_%Oa4GC}GdW#^}~l9XO$T?hhD+UUxT1)6|N4yyPYUa=7I@a@}hH)?ST{Im*H
zaeC_hb@QeJxfa^e2h9AGsglam|D-P8npZ8<;<oHLbKOzV?t8bbP`G0XwkV@S(yLOf
zmZi%QKMsD$+J~sb>qfo|4ot(9ANqZ3C@CHGqmV(q$!%kSqjL!A#l_#;+&jF+YB>CC
zJ2x3FRlm3<6Yli2KsBh;ww21FmO+1~LLBg8wn4DeKVB*xejYIP;zh9}r?}ivq-EBP
z90%78BjeJdfTARe{l{ii4CeE);{d9COB+u^!K&WT>CwFU`#o9aN5R891D}r%*xb-o
zSZXR>4lB=j5&bIiF6-EH&YiJ8{{k%+89dq4qulosT{(aTvYKx8@uX<4$UAm1-7;%u
zf$-&PmHU)lQwohHu?li>1y-@kCf;@#WqFS+daw)YxOooTON#SR11|9a1`*sXqIQYy
zdqoBr+Xm0&&!Nh{k3TRM?P~<{=28o<p44NhDzU+zMnH7b%R<m>*(}B7wJ?0?w-%RE
zXOdOZ=l-R**fcJ634o%CEd^b<Pf`8hj=tEzvXIeWK_TB%jH|WyCtyr4ox$)H<9KBK
zyv#4qJ&AdKe(F}QQ%+#Y=3xsms~j+>SRWsJ_>Rw{o=eL?W2nUAF{JlGGJ~O{@UPIh
z7pf1%f94f_@D29rJa<*CGF>#oi+6BybAQk{r^60FC^oyIaFYl@isy+mfe$_VkJiaY
zffkN3O$yGGspzE|@xg$Z*<YiB8^Q8VrypZ?Z84xVQChQ~=%V@Dg~_yiX2KKyCem+z
zclz#w%MoEuu!+1q1B?oUD`p%wQ#*tmf2)%HRq|M%*bi|zZ_b+18OUJNL<p5MD_oOX
z3d{@`2V>c|om43LI`)#^py8D%+O6?!`<#gTQ*(we%#a6b45U{8$6%;!^i|89@Nza#
z3=TvYJEGxOPDnIXa^DdNG(Fd<1tHhF4M(>D{_yvt17)zK#$OhMg5SsZgAjI9lKbIp
z5(=jqMb+Ut2R-9hPICs(f||!JfFyzotV>k6-vM$v8~P1Ub=}^r9-y4hpTWC9v;zRK
za)Rc>p$m}2D36fMWCM}n*MEW$Fo5rSx(T=xku%gB(NUJWAj)jq@D9X+d)C`fI6)}<
z4YrT#Y@{CEP5{%ZyVC{q3u771EzLfK06{gb*Fe(lFefB|iUO(Lp&|vM{Kh=lPawGD
z?MQ2|-zO}zZD;g58yx^nDFn+3(m!?&)$&7PSfVK3<ZV)boij@`j>$(SU!F(dG@;-_
z2P-;fNafpuU?dRzLemdPIDhtZX(%hIWt0)=&*`IWvA|$n80-QxFkD1jcwjBSN)+uJ
zv*K0v(a`<&BM~C6pNoFs?bNLZ__O7d|2U69DCm5V2D(+7QqgL~A$RBHHDUH$G+9u@
zU*dEP5~Bg7c;kB0iYX6L=}hSc;8fggQXwc^9QwtWiIKHbixxiz@$yD98+crS#omBp
z`5;lIW<Eox@q!7Tv$U9j)}IA0<O~p4uU`EEd@#nLuh+$SyfrViuXz8&DZkBr5R`;o
zMB8iuOXDau44}w5l=xi=gu2@6z3|Hl<>rwPhHF`qY~KNEe|HfjfFK*wZGEv1nAP@2
zU+<JT>>2zarmWB)@B>nbU1M@2<13mf1Ytus0_Gx^(E2|+q@llC6(5Ydl6<AIB(R#1
zR$mghL;;U#-|{P8wcVXCKoZiIg3vs~bCMwRg1ur6wkv?`M!R$sqKpx5bSzn+P#OSo
z6<s6<tA0Vih?fleHGzoY!&o@(5snC_t8#&$r;-XTu;bVeNQ&nT172yDNgr8Rp;4c{
zbwe@LykakI0d!0#1na%g<I)%WGbDXyD{~`F3a)`xP${rVbdI-x1oGAuJTEnpB7W*I
z`Le~yBT~KJ^<`N;exkjio5dPdNpmg2att_mm5Zq^o@{k%1`7`z`aKO@!aFL!GJn1!
z`=q%T;;xB72b++|f2V<R&WUpp5S<!dNENxGLHe>M5X!)S_&gf%)X_1%UHsjgDg(2>
z;H&4L0Cu70WdLRbf&!m3Y#AmA1n>|_>RlMm`=596`D`&PP#jb(!W_qedqRz{A@42B
z2!n+T7%pSZ$;VCdxRO<;GM>b9;N1Re<y}gHq%*NSF2?1fq#jL@v0m9Cp1?dG8oS;`
zz7`(ap3HH-e!Bhc#gEV=;_vs$mJcq<&^Ii-&V%DLa0K&dnTqd?5C)#rNyHt9PPMzN
z37MGi33rZ`5CVl-Wgq2mky>y_OuMaIsnl96BdS_v8R@KTv5S51l?`;i5%$L71by2&
zFP`K>ww<Zp_hXP#83Xab$5cK3%_v+Zg2G0tKEeAX!;y{!5;NGlHWqoioD%r=^;GWb
z+ocYPSwT2)fdX2dXErHX7!$z<y2`Fo0BfLavb4g>)z#hwXfh+J<3I>navV6%MX&rp
zCJNTz{8PP?mrJJ(g_DOuCcIDAyxt$O)s&mmDK=hW+m1|@im(z*BjK21nPEej7#vHT
z$2dU}X6lbI^=8@s`f$aN8lxNR5|YhvU(SR?v<Z!e^zt)cDd$QTZk0eT-tx!Wjb$y`
zdfutJSRa73sOOV{M?x)bV3mI@C`noWGWlY8!y>@)-_=!4E|XLgZiNE+=kAVE?p^w-
zx5kxU)td<Cld1+So@o?&_;ZhT0aq_DU}Z&SWT{_47#hIH<cK}zwX~bTYu{%s0eB%O
z(v8xlUut*)V96%@gR*c)fF1@^-bzH_1}LEYZ|_&B@v)FU(nQl;<$R1&!-Tz8e9A&1
zTFJ&kg5$sp8bp&XFTyc4GEJ2HaEQd(wQN#Hz48S(F$4-J<RMvX8rz|8VDPNbVt~G%
zDw1LQhkFp>h$PTKA+Bb%o8orhss|VY&T!J!h$P56{)Yj!#Tp6Jx=)w1Rv-zpFQ#MI
z4<G$GC@Spe`fve`6$aa4d=ACz*nwuXEihR}a2$5_(T0?M6<=kyA25~xau^We_*Iy8
z>0-5)_iZ5BEl`0O2y>BnK<+pV<A)Q0NI=Sc?85y0ALP+j02wnzXlx}nk4ZIU!<>O6
zW{{aKQNY^+STw|)8a(0mCbB%RdUwEEM{Gjjq`);nm#pqLNCO}9*#{Wqw&MOx{i6@{
z*G7UG3yCx@8)TS?Bb&HEXFt9Ih~x8QtNdcOp{QMFARNuWaM3JQuR#|0I3op$^x0ME
z0a=YVoB-hTddLlRt&sFgbDC#(Np=->7!b-16ar{0XdpKqz|d~cuy?LVb*c+H3Lwv?
zO8_fGop84@uw@+tk0hkv@9<1F<THyRhWr@OGXNjD^!BZ?#jOQ}j{vfKSLdGVL)j=Q
zwmYFN*`6tSBKYtbKmmb(=G`BJBr%ZHvr(gvVSIdWFpmj2cNxr|DUlGyxr(xUBq15z
zSX?E$gbp($d@~9uy<kVijOOE-ksvdO!h*H@#|h;PDqN1ur)F}luu?M}%1|EKRQeN%
zan1j{I$LN@VH(&5?(2-3*{9qKl#`H6a1{{XY0wf_{Cl@6K^VufdRVvj=%;Hmkc3?d
z=*fkEA=FDItG;J&G#E|fd2DuFB7XLmf65gZ{9l!8AJf}h*4+-8v&9)TulAp^uiAK)
zD~^?yD9#o>QskP{<~CS++lET3Y_k_HCoa6W62}=ZmbUw(<hje}x$wznNfqO7tOmwA
zx)aBTJLy)(I_D|LkDDWap4}J!>HJASxPC@HEg|>4T*;_ckD~3N$=sYZ_sV$-^vLZy
z#kZyIeTcBWciff`uX!@tZGSIx34QN_ll8q~t=fQy!S79|{a>?uNvvcs*~Jo9ffA>o
zi~(n0f&sCWR{Zvs4ksY&#1iIf)Sx&aP-)*GI*de_><hy$oHsp;-efk)C>GlZz4J>9
z7kEPej=dBKv=0Khzn6kx$&Tx`_kxf7-6|ZNWNU~l?W#ZggmT;pLuKl*!q@Dc7kSbb
z+*f;$8V5-?MiZPk?!^XufH1fUPu@+y_1U*OnXI$&jh-{MWfPC%Bm>ba&Oi-<;?Usv
zVG@X5mE5#0qhJ18Pkyy81!w&b-WY$##&5xBEDrIzI%qLoYzOceATfSW2x;W1Y&Q!W
z)9V$OR?$cqenc?6R~%xo(AjJzus}I?`06zLB<m`F-R@nS_dkQLZ(JeDd#o@99Z(_=
zUS8pVVVC2hzKZr;-L7v(?6>`P-}m_R*wf_ti)o)NGdz6t)A9cJ*U<ejD!5W2`Se)_
z&(DS4b`{g8rU=)QMw0|G+2yAjO++QpjrKmf>J_pBc!<k+WcR?}NJUtuAmBSaPAY~O
z#$bfT6g>bw=UFe_TOHE)^k;wZy`mkr@4~8E2ix}P6vI#Yctm~GpB=<|v}?!0f`ICk
z_Ma9%rC8cz<YoH8EiOH<UM_k6sn{9^mbH*#bx?TQ#@PEWAq+x2R_|U0bMvO!qmLsI
z_o|Z{DgSZEnY+2(p1S<_VfXGHy=lT_XTVp8fhgu<I}!96!jL^s-$Nbgq@t+3?uokn
z;Cp)~LQ|)twru?lVZ_t;1a>htvkN%Mz~I{Jd>m(9!gE0=bnF?+tH1K~zF)EXH}fAS
zF-9Df@4Q-PXn}d{ULW&cJ)cVvej1^FNdn@;jNE$i*N7iPOruv`3;d~tVY}Sx<(ga9
zyPU4&hgr3BiU{NsMc|kYZR^^H04{zsF%9BwJ68`U7+XM8tEkdPtk*p!dc&(u5(foy
z28`eR7+1xVaDmCg`~@^|lAka^>)-=~TD2HIeD9vzngnr_v3fYs^4zD>=~{f4kW!cX
zvOq{FT^R|Y|8p)6j=chbkiSCQ*F9nA1n(WUd!esSeUZu`Wc0pXV|p@m`-#sH^8SaF
zs-GxN=3Hb0s|@gk8u2@f4HMFDP~o%iGm?$g`rp6Kve#y`SJ@sOaqcuO`c2F5xD;-!
z^5$}-vVmy}HR4bMzj$2)iK~_oo1a*o&3Sk?K{4x<cOM7j==Dy^FTW`TxL5iC)z;%!
zEm{l*1QJm^8i<pH6Oz^-`pOFa50eyA7wjHpOc}2y{3RnHM>meRcUl&MrcWP8ZPF8E
zJU}iND3oLhUQqBs;>63pSFHa2Y&aADeb5!_QmH5tQLHH0&@!FIQ+91-MEl`vL-TR9
z-X8hyIw#qVlz9@d<F~l*d9Zg-@z(<$`^=*0ghC$3hqrgkVE#&=FnV<4*H%JjzHO{;
z{6-REkNH5yV=f*0?{*s#z55}hqc*Dy1S(%KPvA1giLNPu_x*U&jVoaGaL>PgVf@v-
zZ%J$>MS-3!+4|q(oB$_=imJm}2vHo3h&JBe82bt!EPj3*1CdmQAEqLqvoDH{jj+SK
zIMpWriyR=vgxY#SmssWr>dQAhnek?$m^(v7Vn}Uc?Gwleu`2~hkc7fW#0gGF>uoUo
z&{XI(%zAtXJM61TL1IKBArbDZGge+ObUDum^d=os?WV>F1d47HgeB`^3B0TOzbjfn
zl?TH~WJCIsWj+!BNwH0V#PEv~>Br%T<Gxq0dT&9HN6hd~oT*)B_oL>^0f>D#1KJEs
zrd1hHTM@#9g<u-&Q2wgS>i!A{_dWmCAZR^~If3*OO+cD+a3^N2EviN*nm;rvjFY9y
zA<Wp-=Mfce#!xtFuuf>|1cD6-oD_%?zV}{io$aVAR5Bt{m5*cowU7IC8!nwd3>Opg
zGMr|CtNa)uz05zP)}8@2ET>_$U%PYGTF{mKC`J|6clGiY00|O^Q9p~&+>0NUzh+gi
zyi{Dpb@!cd@iQB}{^Co(DEswPNQ@AMNRGuZ#)M1UihtX=G_G}H^~*jNr#%moKrG8X
z1(tgFHal(&!Ek5*mKTht&YE;62ZqcWqus@L`b6`hi6o8R1}#%PF^QeJ&RQxEn~(Pj
zIDn_r^7_f(auyW|9BU<CdiHVZZQ>VE2D$IMmM)AZ&bo%@ehR$H%LWXW-S4!D^#R^|
zro@FvjLUWN@im4B`gdmJ69w6tM4!zOGu8OncRJn0ftfaJXo+N-^W9p`ovEsT!4y~-
zrt9YtoWT4d>F`0aK}uY=>uy$g&Ld;_4`FqRt;P$NAmGIle4fNJl$j2YDn8B$OV$M$
zz{?u^B%X}!`j(5bK_)y8o=vd?%mzazJkoGslRvexkK_3z@{)k7e8ZeD(?^&{@+jb9
zY2LYy0`Ty@61J{FKi~VYdBR+w!7q-TjT+XvoZ9lkCP#jt|KoZSCkM~X>o}mGImw2*
zTQS41=qCa!i3a_}cM8rq@#$FKDyik1ZFDegdmh%f)7IV@!vPiN9^Q-lb+&AWI9y~q
zco60#Myf&81lyO=_nGC0a9UO(SU1kgH}=uSpNKkscVcDAT(v)hVJUfEyxlKg#~o21
zp|9Y&35Tr{aCF-S_l54IUzGW+OrJh#MY(Z((A_emjz9UV?yPYN*n9*Fd<+u=k8z**
z&@chdefYeW>F3Vx(;JR7&U`vnw@OCo6fwHj)}FDnMVQ3W*2A#WdLVi*Lye-4rcKT&
zt%t;T+^FhoGR#!$cDs4?SR2DS{Oyh>=GyZxS*Ps7c!76s?gLl9->;&@^-ypLxDyYg
zG1?9K<@fOo@LWs7e5Rk0!C?&x(4%&4SU%0t_<Hp{(`)!J)+58naIyc!Q|!?nJ*q(x
zIG|LKXp@fj95~i>yHwQkrt&)wn%ia|u&Vu#J<0*LBlpWM^T<I^c8nIcQoh{-++vVN
zL@TOLxrZT4|1r6kKX6Y{#OAq^lvS|Gk@4s+E1_0g5?9+Tz@VG>Nl1B}O~=_hQve4k
zM}OjlG3XJ|rp}xsI|JBIu|ZggL`dMXBWP$}2=q!V=;*#dUSC3kaaJQdZ9K=?S-lmo
zQGcrnCrW~)KfOH1R8Sr>lYU}f_qPce&ut6%({fZr61%#n$(FG7Q_G@>TWsE=%!?6U
zBA$~?NQoyiHO6bT&{*nyC{{7=d)kpVpe%F-9$^M4bm>~Om0&}H*BZvs%bUcS-~?)2
z!(ujI^qW;`cbXfpgFsWn{fV9QJ(ugXZ2t3Ia5qY`9mT}#NlCc71C;;<z;^vak^rq)
zdFOfDlaNsfpzB$>=@p=G^eO|)|7FKh3Pz|S618tqfy7*Q4k&q-9zqY#m1kmJr663_
zY^mCrIdef?6im>9`&CGg=u@<BLAUeHi+7-t5EL4t#+7`q%5Hn$0t8SCrmHP0M%?7g
z?Ksp!;eLREG6EKTGG_o`G8Vr7{$Rw74O2u{(0$YJ+J9qsf@64Q+ypM8viQ>pcEF|w
zE2o7g^05g4IIrWZ{t!ri?0)|d?o4;e1#_{Vw+Sn!b!{{lRC-$CZ#IqpD7y9i>gMcV
z$%dGYt3TFG$M@m6U@Bh_PF6$V3{cS!K>YbFDOy4zoDFd~y;cC5yhe*zlN|;L-jzd|
zqQO6aIL+`Xr;!xE!@MOMNm(0H7Lis)i^;U2)j!=hF#OK--&AM-i{KeMhl4I)k=aH(
z9)yHjrh(47VvE(FoIyQYnt0B00MgIDa1LggLx_5HH-Rp&0`eQ>P%yT6+Iwmbzs?m)
zEd#-x+Xq490F|v9Q8ccM3jTFoe&_z!{~Ig_-xOYU2I2%H-UtCuZRuml(f?+Bfq)gN
zv7JwZqu)&@7KAUSu_b8l#q&wL;Q^qo6=E41We}_qI^9@(k=MZuSRByySO{8nMq=)O
zTLZ=TH;|9KfJ)gzF*Udpco(km$^!H{=iQZwhR2_J_znxu@4$XewCj#MzaYUi_U0eL
z%5vv@0()9z?=Cz%Fy!pv!xZqnd&3HxxIV86-FONfIplWiQAT!;1_T_|S4sllZ9vBz
zmCfw_|0gW86GsyKXxsRvu(AR8>`WwPW+^S3vN}TqS5T8tfdfeV87FpM{+pfv5liXd
zX?Z^p663XXV9>TO6K@09a4>Ot0tB&%qx@ea4qPylZX$~z{br2Y1#1)zJX&e{-6F%$
z0VV7tqs*v)Ys|ccF#ks#AyITz=$_y2ov&aIH${&f^MxeIPGH;udlEi7&dGpmrQ<9q
zc*=9ZyMFqhbG%}R*(V7^kQ|>5+$6Ot3u=!6IFs@n>mHZ{z)h`eqXnjAX@4l(owgq4
zJ$Y*JFO6^O7oSAjk}?1|{YIUGZF%7XDR|32(xy?eIG&Rh%9$k3^S|RKLq4cWA5N;t
zf$DU2X!fNL3Qx4uv#biNgXqSb;7eV@(zvt8n=(vgo{OqDxpIW&CzuQ{zz$TW{PvyW
zBC+PCa3o8?Zyr2@gk+sV5Ge;VJU|QK!ZHx_6=j;f3=3h`n>01&bR3=1yX*j54dZ$R
zgCvY70r`fcun9HX!VOc}t!8-wOGP>YtJiimKD;T_s+}m+==oY|r%ylL>J;(vT3FNS
zD=Fgw!>r=zWh3)@lES9Exl-RER~y;kL{~g73R#`f{n~}w3wSJZETsg5VHZ*i_f4&W
zSQyQU3`?!6s;28!a?M9VOG&R@dHRzmWPZ<kTt01kReCzcUOIt5LYr8JXEQZ?&peqF
z3~I&fv}vrvf!p{#Su7HCpf=mO_^ssB(%7~rfEIH@)2gh@w$Zcd{lV`NIBE$y6s<h|
zU`LQe?z^w$gJ98p3S+lg_Guq5Ke>q^9GBqCl3t&i3J;144g8CxX#3DizM<N6u_2@u
zMAmLxm+Du0URYtdytr|BPMpevS-5oS<WgyOwel)5OFiK=k|0K#1RnItfXBk%m4K_O
z>=l1S*-Nh3DKfngdt}1))RZbU(Y%F~PEPZE(rtLIbY6aD*~UuicyiVq&#l(c>y0at
ziQ?JsVJ&>N{|shOV3<xP5HS9QP|~VAEZK~l3Vk-y>Q3S81m!>Zr@Z8DWIUJ~AK@YG
zGh$n?zfmT+6L7uV!@}}O%jV4>Xmkd(>q^5bcy3JxC7i0fup4J~xhv8F;x|9@W%q4n
z>~FUG-<i)a%jAket@wt^6@IERXgQq%lUL;&w~gM4^4Y|6TQ$5s(`@kgy?W7x=y6bT
z$;8*xE~xcQn|z3=O0rbv9XR%8=omRWnDNxy<>s%Gb{1*hG4qFaf4kKGs9zpSW}z=R
zzHu~m)uwCI)wAIn9Gwb*O1ZyOHTvaiUy&Ug@kBA;ht&RpRF9bR-vsu{*Z#nD*m010
zaxMs=#Zq6yn+}kvK7Tj4f0~u)lyj|ceun(U_GCw@bRngyRCbvK7t%TX4LJEsq`*_O
znFoz&zC8MUuKsVuy63{Mi74aAkG-`yr}3ELl9aOR0WYY7!}*J#sgGVSksp5l)+3je
zQMPQ%ZC17U&}862c)Wgw)YDL^2u7dNmp-(BFf7XC%5h*(act&fDO*sx<&fYP=F>ds
zgyR*NJEL3e3ZH@g-?rRu#PG9w#!1pZpzGH?#h|BL3q@A#M^USdcVkPxPG}&0^hI=t
z1C#7w16Vb^y4R8#1HnrY`x9;SV{%1Lj|7h&{h2%3&>Cp0#TP<DwH%B7UX$l~C-$g`
zb%4tQfba7zT8ri=f@^)$QRca~`m&VAiz@f7rbSh4>)FOMBT?s5#JwtQn@&CI{|)to
z%k=&5c5FG$Te1_#dz@bg<r$3A`r{x?7L)dx79xHi4X)&S{>yH(B)P0zADu1Pqr3Ro
z{z~2SWtjhyj;F|swz~A-rx~s5clKAFsT9V9n+X~9w%_%#Y6|=cPoLUwLWJw>lAFI~
zk;N9L+MXJHxf7!FcPBgO`b36~jV2<mAV|LZETV_Pjl~vsSUhY-nob_JZqn*emt2q~
zMqh3Z?4JX82bXQIjs0Y{os(4It9=Kf!t^Ekety<-yf&De;ph8SD|KLLFA6K7D%o9P
zE1yq0GAz?<Pu>-NTAU%1ukTHu{X||*Zv@sJH)`!UfPT0aR_l5rn_Q#ey0L4*>ixXn
zz+J<khaEJY;FleN!e-xs%KkOl?#8uWoqw?YOES|xt$IP}Bd}P1q?G3r{gg`??1C7H
z$6HY?WGfUpp6<;>$@%^f^p~l!Eg7}~@2J27*w+jDP0QxP)LyIHlP~`0)Ejpp{)_j=
zdVx|9H9V`*T9#<lPe5VB>b!?#1!e9W9=1WHcx0A*L(fx@r#=I{B9Z@4n#<4Iux~;)
z^5tl<mDPtA&#_BMmd$F<O8jxvNym+A*b0zDUx7>8NmAh}ORRO`vU=LKtsbdY<klSZ
z&~@&Zjp@u0!%(_zObXK0i8uZg9}@|c$#LOk(~a?08mV=(#{xPV2!B!|G|psk>iz4M
zeJ&(1MvtvFyUm~PVgEN|wQUamCQvCZKY&&I-Oze7#B<t$bNtQEf8GKolurt|rprn#
z%hoIfe7Q+(|4d-0FmX3vmn@o27Q6L*wz;A7)oZGtlJ8Hi7F8+G5BFc;@&n{~rWATr
zmR%-QO6j;}yvl^Ez+rQCO4x-ho4fxC5ud4v)XM>04&tCZ)g7O_ZzyeUEZh)J)X5n=
zm|8I9z?C75C5r!Q`HKA8BI-1FJ3dkt_i8X1Xfiug_4Wg5GUhr?B0@iSAu*W~+};iv
zVqqt#aXAw4*=~NCSE>RM&&<FOJ`sL5Q$}a~aFN?iu0mZBe(P{Hxy7n^9u%PU#%Ve^
zC>FxdCVyB`v8GG6GQGF)rSzBPSElMquR2D4VL5PDnl4XW)7@6x?np|mT0M9qlxTM}
zoABCSe(2L_rUZGDAGY<m!HvtzBmlNt!)@0b-5YLAa{R7%wjX$Q;*iw#yL+qsY)`lZ
zPCj<bDV_TE-dE)h&gyP~%u0jv#?vbki>Fh%+F-o4U`9!W$CvbV$O37cTsM<7H2U8@
zpfRQoG!MMI*hjl|;@dmm6K-Z&)w?zh-Vb%qSgJPEnV53fY|YE76&}8#@x=Y-uSyv(
z0T@b)q$918N=$q&%3th^P1H-54bjIKecM=u{(etK@YyA+x1`(jOnloOJSgkeu^y7s
z&{)8(-MNUwXyIYV`~L2#_X<M;7pRhabRXR{(W5E8)DvypP!9<XwRc<ZB)hPECDR00
zb*%{GD7>F<*a+2-;Z%Le!=bFneC7Q-Xy+IXn6FCyWchWc*NQ)ax5-OmW|l?w?_!K@
z7*o~NLTn~LBoK~ua1@)2jo_<ltsdCE7qqho8F$-u4)yTYrFq2q<TGIJx^)TfJ9mZr
zXeP&MLGc5GW#@ZlRmR8*mruSm6_9ieYfB|q@}$&!Jsi98k+QP5waSF|O8T|8Rkm^N
z-)~Q!1xejo#DSuX;#kV6P0||EHk*}LMDL42`z!n-4RG)Rn9npj&R7(5TDR^lU9=u2
z9yd0!aWNV{t&i?BUGcw2i=o5^v4`!Rg{AeHBad)WvXszFUH7cQpM!>0p5RUVr&r`4
zYVMhymP)#X>4QkmEU8D1UZQ!CEOlpjJ%biBU1Rmb5#^QOxrw{c#_t@Ay!y>7%clN{
z5Ryt%K;@%;HojUa_LSS-L4-%K!TMgaADzmia-Mog2jAI7R;LOg65cB8as^dCZ43*!
z+a8xt?&cZTuy#RhO{eZQX+i75_Q-B!x!w(~sTIc!X7R}SHxo`uDBNfGLJE?^D0g~o
z|7e-Y{+oNWwbPU*Y3)X)C_F6p!9!4eIzPqp-t}?dQQ3YK_evSh^G7u=<Rxg3Jj}@^
z>W9W_Ek$LYdJdW!`VjF;15&LLa>X331~74@k_Opb@=o0BIvo3__^S2f5-C5Y)b;1)
z8@7KsZQON}qHv-<-bL`yfpp*NyuaM1o#V9Hs0@j*lqK(;=Mc9G6V9O6z0)j>lgk^Q
zS`@BL1!=BTb^`X^P;*`6X5(@5o%#s9I`8?3GX^Qh#$+e(TbwL*y~@$)wbGs5eVOBV
z620YmKlPsLrrx{wjp;t%<Rg(bB|nVk;ZI7DPV(>hr&qncnpv&~8Eu_XhoW$YsRQ-k
zedU=d@5wwX-syKQ=l^i$-DxKPFTA0v$>`h9+x*`g|LvC$$@pCR)UT#aVaA68YrCuq
zE>idB+XnT;<9^1x7MFIHM)SWECB2rOw1N{{pjIh@7cATsHTS;_o7B5s{Mi4X@Wyo3
z&yOVcE3o9brJPDRU`+;e+M0ClMhYBN6+YOFb4X-6Iw)RQFKh&_6*h8Y3EvRC-Q_jt
zF=`m?=+P?T^L6+;x$Y&T*FCspjg}B>v_z&^Vamz191smZVh_F7_uozPt*;bFft#W#
zD<)~y<d2O-PfL#XIqV+TW)Aow{y3frfl_NHa_o;s81qaN`u^I<jlL1M@-0oWKgrh1
z8n$JCm($B2e{Y}(|2*foH=n8IF?3&%rP^z1f3-D4V@`?O?jCKmOMdj>VET*g_(tmM
zs*zeT?f)*yFBoFdI}QX*k~}k%#{DOB>OJ|_cy6%2SOV<<K7+y;-;6N*(zAypE!^()
zNmU%*h)8hkDo|4u;9zyNeqCR2=8*LSO_R>jhzgDvaS36uivtQmA8LG%n6)j{GP6tX
z`pGQ`+dl*9%NAY@UVD5<?i5t=Dxaez{DMEYYr_B9io`ZjALwkF5%_5<;#)V+`;Eef
zL(UZ(Q1GtNL}mD|7v`Pqm=@6<fFk_%7Nx`U;=vzX(=zl5Dn_g(l)t8}I7KL44D#o!
zIIva1hVGG^if>5izg7*=Y*E}eCGx-SBC8iy9p8I&CMo56p%H;9)hdUd!Mg=)QPa8W
z)eNTBJ`FbZ-rhf(V%XtQ+4T6kJ<&v30#w+&3_KdYfX`PH8lj@P?=dN#Dq@csTk?ML
z2v-Bk-P%nsOajgIcDX~ddW&M}d_l=!yp`ogAl(b9_&azf$G439sQ>0GHJ`8dn^46X
zQzEJn*%OHzQshm^on0Y!>z<L8w@*CW0Y!N&Yi^gb^5(U1tYDz~dl}j{Mr(8+-}*;i
z+GdD5Px!J{PM^^la5tMw4#~L0XZgi;!k?R<DC|)>iUjcp;d^?8&4a2X4xi-TMVJg_
z)_S+o)I*9H&3@($E*9Pc-Vc&#>b>NyFJz5u`eg5kCw4m3t!N{0^+IUvwCL%!WuJA9
z?p?cVL};Kd4{37fE7`i4lrktS*(?C213!NT%@0*(7d-K}1vqCF7A2jzLGi)$zUu?T
zu|E8?OoD=x8ys{d=g2y`w3ynhc86oDk6NI(IiM5%RH{=~=C*Qke2;+~VmxME#DQBt
zh5cEI2E)3+7llvZt^cT6B_^vlSS7bjD$PsA2KT>$r-W?exqdRae=+vRcA{=iGA+K{
zeb`SN=#YU}(zXS9ng3F4F#h5?EM9tJh%>MvrZ<@#mvmF^<#F?DH68ep0eM(O!RSjy
zs^gOLHXCi}>UHjW<!1`O=xbEoGyg!VMf+XQatohF{~KxG9zVbSslBfa72$+TF1BlY
zcD%GFvA${>`YN85fDra79zBa0K476uCtKyfozl%!dI=YOc{25=*;Y#_f*Z4J1?IQ6
z2mkqbSWk|8vA;~pQ(*z$2$X@yac14OaF*eayYa>P(Q~22CvPu3@npotZ?&iX`*!U{
zM9y*8nzK&8)^-TkfrepaQoV@E!0jJm8G*H<`=i@u9_h#I3;TyM9{}CtPv+{wFMcub
zw5Xi2)%?4#oK1P>_c|NHsq<{$fuM+&U1-J^BqocqZj|MWkG17Ov#WCLjTSgxV?keq
z#~b(06`%a*-$Rl;sQj+Y2-I%g`IGJ&63mn5l(4s<QZEgRjM@v5;^*=*eI)^Fjz7+j
zT&a-F`ZSG+7c-CMSg&tCrTv#bnIlpk=+=|8(i{E<xM++&HX3WZN^w^*Pr}+6_~QZH
zkd|ND6a4pksApOxhQ)yON%^H9<d55!noU*7yi}8%O;w%0^1jOLM<=*a#vAm*Vvuj^
zd3FyCOadbh;~QpIga*KO5x{K%U;4_*xFz%WSII8NJRt9S%c_?npz-n~<@QKU`|-(9
zR@2!gkAyhm!`;GkO`gv$VYk_gJeFl!@BUZ9h7}3fru|!TSJ0VibFlB_s8N1NrE${b
zez<#N^)>tRNqc-#(C6zSUiP7xcv?&wXZ=V89P^bb_;YM*YOPwkk9rZ^rp35=or59W
z59*1s2nGM%oWb-TgnNL%zXR<*25*8wc|~Y(d$LdB$QH&6n^pfw?M3@nN#t8<`+K97
z?yZrDB8`azyGP^;7vZ^)X=Nk>2P*&Ir};}{FDo}vyYym{7x!5YRB`R@z4gB1dXpSD
z{sYRepKqfdtdAblc_HchGq`J9XD|JsPmPZlW%B*Edvy8Rx{182GJX3lzq%9MKh;pD
z7R9vrCGl-?ci-}fmmlav&|P|Z2hH1iZ|z)qQOW<)!kGs${r?Yq%u%_LPmv5IbhwX{
zFcBrOQc=kfLd#l_Bj?;wp;YcGR|mObu5F4&x#m6=bIvjM#<1D@`_}LG|LghQ`}N%O
z`FuT}&-d&35G^-NzdbE!{tFI<<da!FW;95q|0dT(yj14!_Y40g3{9Bu33~Rg!aQer
zxtc1r)V0><*rQNv)Ez-HiLgDzd1|o0RQ1hqD)ei9HFJUrv`*t6_EZ*m&pj0u1<vWZ
z=c?>}nmFx)sJ$Sf+VkzG6vxG;CG|;BBnzmEvO{mr===I%HNl<tUYcsnaaiWum4tw@
z`$M{7V<jNIDVQUI1{Gct?V}qJK0>>-dd*{2R?+Fw3A*lm7+8_m+Z!GnF*1kB>UU5l
zR3)E=tJHq_R|?b#b_{B7We#tpf^wWWX6-y*!^VB=-HjBRzwlohlUt0ntv&TgQp5Bd
zpLG@e4&sFB@RKCVRB((4w6Z8Z%8)u2ynkiS7#_DBnYZO5T=(PIYLarKbujffe-Tt-
zgdj4pB)_&{j`ary@t3$?Droguh*a(dzyud8Pm$|N-)FgD?TFc^_V7_Zn(0k#J9b(G
z<>0%{$1~m#O1fSPn;_Dbscu~7pCoP5p2;U`c1gLndpDbo%Q&Fs+Kn65h7Jk9Vu@t=
z1!lqC5Ucl(xDBS73%wz#1|4jIxdh2K`vVP<H!yUS?e(nh0&2I{sZ?QpKseC-v(M`>
zu!IO3eMURtgrYjZ9nc#B@1~gu@a&Y|Z4!YB!*!TW5U#oj^^QPVHX3FY5@LF?`q2j0
zR802z^t@ku?wU?R6X$}1VfX$U_>HFn&}4x5J~v?9mMMqpP?!MHRmeMPko+{v6}~#7
zj8~6F{jb-Vk~Ed8`H3;^{PhIFAMap?dFNqWjB(v=+T4kHey^@J$=(gRnw05a=DXAL
zuXK12E|zn(Wq>*F&EK$_-SDla@f3IU$9xhc;X}5D`p2<kBQ1mSaa~N~^5aXS9mmlf
z<|8+7+mW}~`2#klEH#LUg<-^xp=<KfU1C`e`*;kt#!$^l>_jnWxc-0xRTslrzzUDe
z9c%+w#zf4I;lq$Q@1y^P%&m&LOY>zP7rQnv7Fe2CZf}kEv2dgh_g#2YuH3l1LiYyN
zd2RU?6(skTJ>5tHWCq1AFco#uuzj9Kvl;dKV+f3mT6Y*<wvrgBX^iZs;JTLnd{`TE
za?6)L|HmIrphF})=g;!1ELL4{<YfA5;nz+axSHhxCD(4pyi=fj(;R^gBi@J9t8<}*
z@FLcpakhjjb$lfKbM0$HNf-x_72!~@_v051S@dHWEwXvHd{8y0Fsa*4$`rr2nq)tE
z2-OJLbmFd+U`xE>30lc7tUSd*Tf%O6(=OT$-#p@1Lvc97^cJi;Idz(qQNJ4&8<ODx
zRX%)%{`Lt?4*q`PT0+n<uxiq*cJzL0P)GAFjs<dk?Xm1nlr?L1>)v40Pr&2ruOLf1
z@Bj>P6l|CHLQ&2(?Gy;xG+(wfZdHSXCSwG@ig{yQlOV+bF8L4IzgMjuclfaB`_<Eq
z)Ui15&qqUh3T_1~3N|c_-P`vrH0nO2O^wUB=t_4>PR)EeC^<c2QJVMW4?D<gBJ1|F
zFYf@O|8>lh_fH1z!x}`XfW`RK4@BiWS2sP6dFKSjnFLNYrzkj<%O^oB`j<^h^CJGE
zXMOw$-1CqJDo=sIY?8VWG@g@^Xk_rAv*<Pklh)8m&g@#YlFen_InGJ!QWC_-U2VvY
zPI`EYF@uo4uKma~rT^>$VS?A75HEt`*+EF}S1jbr$x4ps5~Bk3ng!>h!H0Z&zK!Co
znzfQ`l7Wt;&tU?xMvHEBg{%;Tdr}MZMp~^2x+(#c%RRc7a2c>wz^xG-M_SfU%Vn+(
zg95#gp#=-Vw^{u@#j(NbYtinT3Txx^G|)4+P|mtY(4v_s)x%l5ArhEuw5Z@_I!0#$
zUvjH!CayhaJgueturHV$a)V8oua+`hG=u$fK?;j>x34mMvM$lQyw9A*)Z10K<_}~U
zHtNvd<_hno))BBybl(?oDFL=s_VT$YeyC%#bNEi}`D{F>bg;O(+~?Ra_zb`Ahb{(<
zkhZEso{{A!l)L=kUM%36XN8<3VWpN|a+UV*8W~WICF|LgyeFUuKhw)>`?;i^FUvcj
zHF7V#>Rz_WuA#GWeeo}Y)F4%LS2l}OU!+&uueAP!clzxliQ`qm>1?9kW(K(&Ez?O6
zUetXE?v;Q01jntWTO8_WBewtklb>W4dv>{fbcjp5v~eyL)3F#%2n$rA0|jDtiob2I
z%?20yhcOIgK%;%ca~GVxuGss@qqH?GVzibfR2-{c<?JSj6X@qs1JJM%bcp5GOj&)B
zIT&aDktNRl;JK;c_wBDaMtHfufJD&qF*Gsl&;4y%DLhuw4k`*0Epsn#Am7kbgki+a
zPqH?$1(6#XTnB|dJl#t|v?K}%jlyV<Dh&XA*xA(e=}FSB%Ob@w1&)w(B#-BnD+^UO
z7_~g^Lq-=Hm1&T2&22HSmoc<Kle$Puw}81QAf?3v9peL!g%!K5De0midBfbO_`Dys
zIN`Ad6)KQ{->+7lxjnymq1Zp1@zd$2>i;7^e)DK)oxPDfrJ319JCMDBnsi?|R6(z?
z_z*vNoeC(=EZW%je$lzCs&tIgEqCPOVF`#%DyB}*An~FDP-OuA#k%z+V?|!6b-xsU
z^ZxV1{tC~z1I2<EhEe>cIl5k;7zB+B@%(jM`I9DT$ISp+TkZ=NWbvo~+6=(2381wn
z%ZbPbkWu!WRklr@&PP!Rh_cTfkHF>WPVbW|CUk1opk1l(7+EzL5cw0<VY&A%7+fQZ
z7|js(=K7>6y`5?CXgi0o#%RI9GX57LRjBWeIlxZRi>Lb&1S&Z6t)t8=At#2xT&O!2
zpP}tq=54YYb39(Px`t$nMIxL<4!kV1*cItAX*zp(w?tKeLuMxhx>+QMAZCLR;`bXB
zA5uD*eneo04$UHw!fWFH{`7_nh4b&9lwF-QUK&wQ!dd!D<7A)^z*hX)eQH&+J)Bm4
zGE_Wk$jDek!%g`%zbqZ7e54M@D6N%y-BV<Dlk=L*N^)mFNDPl@k-dQrbA04m$^k#e
zekIA;e>Ns_uh!ellbiyG=V7}h)gjk}S2f)t;TxROl-isXO+LYb9R3vkLJP2L9PceU
zoZpf4tl92pcWYi@7g-%Lw)3u`q!3>Bys)Q`CspT>G58u~hro<NCt?f8&RW={3O5th
zlB5-IuQKDfAV2|+=f>G*SH{3Thx=5{UH($Q_{I!C>viS82aE2M{Vkgy%oN&i?oq?J
zFottwPsZ&KOM&b4J*f@-iqg4nqLHu$YdYw$J7Wi(B)Ju+alUz*<|S`4O_qre%<~)E
zgk<_eqH31@bo$BAAx&3Oi!taH(x8NgGY5YBxP0DO+IvD*THYnIl8<g6afe&M<Iccx
zqFjKKx;zP-tR?1rbiR7Nhp6t>VhH{Ka^UeN{5kJl(Fs+3Gk-CCNhst{;?Cwg+<@Li
za~Q^*)QWw4LC$v*j5&m}ZS0UeL+cxls>DO)Ou7?i+d;<9F_C(9@AjnP2D$vC)L&d8
zpS05`r8aacB)Wprb;;v2yE`C{ziSsRbS$dK|3o02Rg%5~wsUN?qYKZVvqPhkO_)6R
zn1z~KA_rRcYdkc<FGe`{zh+3y=`$QbZV_e`QIzqZP>jdzDlVE&dfppSOion;;4!zO
z5_<EbtIl^J{Dt(vQH?XXtveOyd*zcu;SL%5cJ?~qdRU|eRGF}&A{`Jec%0$B-abbn
zj3j0r!<qOC;tqi#uCuu!B7W0}zQKDQG{(dtO`+IEU5wiROFs%cz_Gk_lmN}V302%h
z|9!ZFP)Nr)ow2otogV)B|Gng4E(InLQDTQIVV!J3<Is24TP=sS%tYSU8zDdf6VxmN
zP8cHkI&gH8U-HN}V57jby5Hkg1Ejp7!N|m4Kt=4^J_esV+<ksFM*{MML&iA7*<(G|
z!M0m?x8YKXRtga%hi5p$Fm1p<G0cSRVR#qW>8P@Hqx*E88|ge~n#b-=BM8o`ac*&U
zahFRkA$4DqP3vcxburE|3$i|Ea)NQhdE1xb+*c3@qq6#8yXYx#&A|0FgYyPK%z)F9
zFN$t|v&D*nQcB5hXIN}t{#R3nX<#iK)(VF1PzKK~zlu?NZ}#(KR$ATVYt~9VrHdv3
z@P4i-A!iQ7QV$<oy!Dd(3cM%SFs&~EA-!X}>HOVl>VPSBWSyDme)IaPbpCzvQ&@xB
zdGO>^>rq6gTWsd{=Tq}H=0ZVE8IV@`0JZQz#6h3wjq!S&NJQlQTdqmlU5@Ma=T~A|
zk*y}JXbimuNQ3;VdsxrGiaL9sgh1v?6szkgMb!w)CT)fA%ke+rEiXnO?;_Kr`9WeA
zI><2c{?`u_7P}c81Qe?xBpjqpRyU?cq2R-nvG+k&58UWt8SDd|%4;iCDrsAwcllsW
zJSs;jeWtn5;QjxVcAJO2RrdTVp*D12UF~U=ODl2R07f}od0PAGE=`QbiRV-txf=N^
zjWr718!4!8{pBfH`T99C#e2FFSa#u1zO~i6-L08a)IL>tO51!H9N|j#Cp2s}4?GS;
z1JUyK=k<;%#+#y?sfbe{um<|qr2VJUx(jV6R?QYjD`cV<iwg>|J`#Fb0d)spd<&Pc
zbKwC)*~jbT<SJ$IyGIbBNT;mznf&X|UYZllk=Kydk#9$L$!U^870chW7KbcUgFO8@
zBY||iB4q#Ak{`JQI><Bty@5KGnbqNykeWE0D48b?&YBsSvI1P~^}QSAN-Eul;uKI`
zqtE@7!IiFkwU<=ef>wVoT6r;~!E5}emV5XWY~ymqn*Bi2f2oxg&mFBS=jgyA&|glM
zWz>FoWhUmck*cvO=`Z96Y3O$Wbzm0Hf#OT9=Nbt8wWLArzQYSUa?^pTV;bd|SC;x_
zSl|dnaB?O{^?D*@CZ^a__*x>^+EOF;GdWySz6g3E87L962=p)v=d-xQ%rWj%n4&(*
zj|NBFq!2fO@sKNj+St_(uJWhW3k`5dQGOq_%rQk8BaeSsCjDUug0IY~+P@)bT^2-4
zkcZXE2O)Yygy>87XRro=HXu3z3HJEoUi_x`wn)@oM21Uqfp#1=oA<rnZkq`|G*T_^
zwEv=0sza@?<Ig=H_rt#i@yzQWrEqz5HjiP=;0B+MNAv0)x4tT+kMwrx9Hk5t{nlsv
zu;0zWpM1KW8#@1Cl+KE1Ytt4*=>l-1%r2f#Txc{yW(1D@`=;7*WWSL409Vl#g$+cv
z0k*iv5{JhdT}>~<j$EGv`FtmU>hXPY($zrMtD-K7HnQoz(DyWm{q4GU$;nqIiOPLr
z>USt+!d?eeL4YCKrQv6d&U%*Cczy&UGySyVf#NjmHiaERb#!v#)(Cn(_?5|o7EGa&
z((`>l>vE*-Ku2mRAG9>+ksTvF_^<6X>!HQaK^ABwp|QcmC;Cq2vwZh9Mx*2BQ@0iW
z@d<w<E5t0XvQ$#!q-p(MJF%XA`@*J<py8EKTOsgIHiQ@R!xc<yMzlzX-mx>&d`MAn
z!#P^ehv6lQY938%5gaI|r~2Weh(7{UsvDRkFQ(()+<0pXixPG?3etB#Yix*fl?`es
z8Fm$fr6s?4`td=Uu=xJc?g6f;r<{<_-(%<eE_hz{H1mud23-o%7&AvEc*l3i!LKg$
zu~<<;X>yNERMS6OC!PK8TsZt_@r=ml6gi*DMV$nwKZwv9Q&528s93of3PH~~u;cR-
z!yevWLg88M@m3+&JHLN7O8c2z|FlqJrv2Wz;6`Jc>)-`I2q}Wkxcr;N;VhlP=9V_O
zjJH-HpW0*n2CSMT$eUA3@Vvv$%FZgz2qDleA;EXyB#ost>O)-gvw1R*>tiPd*urB+
zc;kY8qDdDkb%>>209RdVArscLS_hE;!Ev8P)ysSek2an;E+ie;?H9%_yRSvtvk>*l
ztZ=GVCQ*YgYeCCpHfkOwHlOfMq9Xnz=K(u;Vbeg2Ud4pzueIh$&%w`7O&hbNE7IQe
z(~T%a*B$;yNH}-hAx8Y=X#lCH84v0*>y*5H1dVK8Z3)stO~n}h-q{X;k+oNiCKZbJ
zEd^ex4pOYWZr)es^)s>wA4Hf_ciPOsi+N>9)U0rLUTB}=2X#@(B8Tl0)z?_^7)3uZ
z9cX)lI4*RAbH|9lnQ;<(8{$5E%oNPnd#uNPNoYTm&eioX-_Eh61OsMLx{L}HIa7~^
z{W{K<FU~g*yj}={`f9-O<rq((kwk?vC>=-A!Z+in`b-Uv!Lp^phaCzTb1Y+QUa!C+
z+1KjzN87VV0zS}st8H=E+saPthU#(VJl*(D_5}w;5twIv>(~$UcN+YOWqWm=E76zm
z_8+~}aIQyyP{XVd8h4gXr37sLO{s|bdw%-Gg+v8B8Lq=}Tz->M*dy4OaOMfgcW#HD
zozRb^#DAW{sT?mTu$xUy_^9h`c@3uPW37&IzSa6+@#ZA4_~y;<f-jbfvtd|~F!u7N
zPp)6g60LawQ%*7aYGBeu(I@X+*x!0HajGrLmNIH9(cdo+DUy1dfmzq(5F#x{d}W>2
zntY?$lDC^;o@=_fDch3VwyT70O>1iUKsKlV^m%5$DHllYE~yq`W@35qn~`JK{{Vpl
B2IBw#

literal 0
HcmV?d00001

diff --git a/src/main/resources/templates/rewards/userProfile.html b/src/main/resources/templates/rewards/userProfile.html
index c1eb176b..82c203dc 100644
--- a/src/main/resources/templates/rewards/userProfile.html
+++ b/src/main/resources/templates/rewards/userProfile.html
@@ -2,9 +2,56 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title th:text="${user.getName()}"></title>
+    <title th:text="'VZLA Profile Page of ' + ${user.getName()}"></title>
+    <link rel="stylesheet" th:href="@{/css/userProfile.css}">
+    <link rel="stylesheet" th:href="@{/css/templatingstyle.css}">
 </head>
 <body>
 
+<header></header>
+
+<main>
+    <!--PICTURE - DATA - BADGES -->
+    <div class="userInfo">
+        <img th:src="@{${user.getImgPath()}}"
+             th:alt="${user.getName()}"
+             id="userPicture"
+        >
+        <h1 th:text="${user.getName()}"></h1>
+        <!--TODO add some progression info here?-->
+    </div>
+    <section class="rewards"> <!--Reward lists, badges on top, stickers (larger) on the bottom-->
+        <article id="badgesBar">
+            <h2>Your Badges: </h2> <!--Shows first earned badges, followed by greyed out badges-->
+            <div class="badgesContainer">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge locked">
+                <img src="../images/badges.png" alt="Badge" class="badge locked">
+            </div>
+        </article>
+        <article id="stickersBox"> <!--Need a controller to show earned stickers -->
+            <h2> STICKERS! </h2>
+            <div class="stickersContainer">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge locked">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+                <img src="../images/badges.png" alt="Badge" class="badge locked">
+                <img src="../images/badges.png" alt="Badge" class="badge locked">
+                <img src="../images/badges.png" alt="Badge" class="badge">
+            </div>
+        </article>
+    </section>
+
+</main>
+
+<footer></footer>
+
+
+
 </body>
 </html>
\ No newline at end of file
-- 
GitLab