diff --git a/Variables/Variables.go.sample b/Variables/Variables.go.sample
index 7533f10..0b1c858 100644
--- a/Variables/Variables.go.sample
+++ b/Variables/Variables.go.sample
@@ -1,14 +1,32 @@
package Variables
+import (
+ "github.com/gorilla/sessions"
+)
+
const (
ProjectRoot string = "/path/to/project/root"
DbHost string = "localhost"
DbPort int = 5432
- DbName string = "personal-website"
+ DbName string = "db"
DbUser string = "postgres"
DbPass string = ""
DbOpts string = "sslmode=disable"
WebserverHost string = ":8080"
+
+ AdminUsername string = "tovi"
+ // Generate password with bcrypt.GenerateFromPassword(pwd, bcrypt.MinCost)
+ AdminPassword string = "$2a$04$Q.FgFAfUfqezReI3JyStD.VP8KdjB6UXc8s.PgTgflLG/2yFq.4Hi"
+)
+
+var (
+ DefaultSidebarLinks = map[string]string{
+ "Email": "mailto:email@example.com",
+ }
+
+ CookieKey = []byte("super-secret-key")
+ CookieStore = sessions.NewCookieStore(CookieKey)
+ CookieName string = "someones-blog-auth"
)
diff --git a/Webserver/Admin.go b/Webserver/Admin.go
index 97f9428..35c4d38 100644
--- a/Webserver/Admin.go
+++ b/Webserver/Admin.go
@@ -14,16 +14,17 @@ import (
"github.com/gorilla/mux"
"github.com/gorilla/sessions"
+ "golang.org/x/crypto/bcrypt"
)
func CheckAuth(w http.ResponseWriter, r *http.Request) bool {
var (
- session *sessions.Session
- lastActiveUnix int64
- lastActive time.Time
- auth bool
- exists bool
- e error
+ session *sessions.Session
+ lastLoginUnix int64
+ lastLogin time.Time
+ auth bool
+ exists bool
+ e error
)
session, e = Variables.CookieStore.Get(r, Variables.CookieName)
if e != nil {
@@ -35,14 +36,14 @@ func CheckAuth(w http.ResponseWriter, r *http.Request) bool {
return false
}
- lastActiveUnix, exists = session.Values["lastActive"].(int64)
+ lastLoginUnix, exists = session.Values["lastLogin"].(int64)
if !exists {
return false
}
- lastActive = time.Unix(lastActiveUnix, 0)
+ lastLogin = time.Unix(lastLoginUnix, 0)
+ lastLogin = lastLogin.Add(3 * time.Hour)
- lastActive.Add(12 * time.Hour)
- if time.Now().Before(lastActive) {
+ if time.Now().After(lastLogin) {
session.Values = make(map[interface{}]interface{})
session.Values["authenticated"] = false
session.AddFlash("Login Expired")
@@ -54,13 +55,6 @@ func CheckAuth(w http.ResponseWriter, r *http.Request) bool {
return false
}
- session.Values["lastLogin"] = time.Now().Unix()
- e = session.Save(r, w)
- if e != nil {
- log.Println(e.Error())
- return false
- }
-
return true
}
@@ -107,6 +101,47 @@ func AdminView(w http.ResponseWriter, r *http.Request) {
}
}
+func comparePasswords(hashedPwd, plainPwd string) bool {
+ var (
+ e error
+ )
+ e = bcrypt.CompareHashAndPassword(
+ []byte(hashedPwd),
+ []byte(plainPwd),
+ )
+ if e != nil {
+ return false
+ }
+
+ return true
+}
+
+func AdminLogout(w http.ResponseWriter, r *http.Request) {
+ var (
+ session *sessions.Session
+ e error
+ )
+
+ if !CheckAuth(w, r) {
+ http.Redirect(w, r, "/admin/login", 302)
+ return
+ }
+
+ session, e = Variables.CookieStore.Get(r, Variables.CookieName)
+ if e != nil {
+ log.Println("Could not get session cookie")
+ http.Error(w, "Error", http.StatusInternalServerError)
+ return
+ }
+
+ session.Values["authenticated"] = false
+ session.Values["lastLogin"] = nil
+ session.Save(r, w)
+
+ http.Redirect(w, r, "/admin/logout", 302)
+ return
+}
+
func AdminLogin(w http.ResponseWriter, r *http.Request) {
var (
session *sessions.Session
@@ -154,7 +189,7 @@ func AdminLogin(w http.ResponseWriter, r *http.Request) {
username = r.FormValue("username")
password = r.FormValue("password")
- if username != Variables.AdminPassword && password != Variables.AdminPassword {
+ if username != Variables.AdminPassword && !comparePasswords(Variables.AdminPassword, password) {
session.AddFlash("Invalid Username or Password")
e = session.Save(r, w)
if e != nil {
@@ -166,7 +201,7 @@ func AdminLogin(w http.ResponseWriter, r *http.Request) {
}
session.Values["authenticated"] = true
- session.Values["lastActive"] = time.Now().Unix()
+ session.Values["lastLogin"] = time.Now().Unix()
session.Save(r, w)
http.Redirect(w, r, "/admin", 302)
diff --git a/Webserver/Index.go b/Webserver/Index.go
index 38f355a..c43f828 100644
--- a/Webserver/Index.go
+++ b/Webserver/Index.go
@@ -1,6 +1,7 @@
package Webserver
import (
+ "log"
"net/http"
"PersonalWebsite/Database"
@@ -15,9 +16,31 @@ func ViewIndex(w http.ResponseWriter, r *http.Request) {
v["PageView"] = "index-intro.gohtml"
v["Posts"], e = Database.GetPostsList(5, 0)
if e != nil {
- // TODO: Handle this
- http.Error(w, "Error", http.StatusInternalServerError)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
}
ServeTemplate(w, r, "html/index.gohtml", v)
}
+
+func ViewLinks(w http.ResponseWriter, r *http.Request) {
+ var (
+ v = make(map[string]interface{})
+ )
+
+ v["PageView"] = "index-links.gohtml"
+
+ ServeTemplate(w, r, "html/index.gohtml", v)
+
+}
+
+func ViewError(w http.ResponseWriter, r *http.Request) {
+ var (
+ v = make(map[string]interface{})
+ )
+
+ v["PageView"] = "error.gohtml"
+
+ ServeTemplate(w, r, "html/index.gohtml", v)
+
+}
diff --git a/Webserver/Post.go b/Webserver/Post.go
index 91cbfbe..8bde5b6 100644
--- a/Webserver/Post.go
+++ b/Webserver/Post.go
@@ -6,6 +6,7 @@ import (
"strconv"
"PersonalWebsite/Database"
+ "PersonalWebsite/Helper"
"github.com/gorilla/mux"
)
@@ -22,9 +23,15 @@ func ViewPost(w http.ResponseWriter, r *http.Request) {
post, e = Database.GetPostById(urlParams["id"])
if e != nil {
- // TODO: Forward 404
- log.Println("Could not get post")
- http.Error(w, "Error", http.StatusInternalServerError)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
+ return
+ }
+
+ post.Body, e = Helper.GetFileContents(post.HtmlPath)
+ if e != nil {
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
return
}
@@ -58,8 +65,8 @@ func ViewPostList(w http.ResponseWriter, r *http.Request, subject string) {
} else {
page, e = strconv.Atoi(keys[0])
if e != nil {
- // TODO: Handle this
- http.Error(w, "Error", http.StatusInternalServerError)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
return
}
}
@@ -68,15 +75,15 @@ func ViewPostList(w http.ResponseWriter, r *http.Request, subject string) {
posts, e = Database.GetPostsListBySubject(limit, offset, subject)
if e != nil {
- // TODO: Handle this
- http.Error(w, "Error", http.StatusInternalServerError)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
return
}
postsCount, e = Database.GetPostCountBySubject(subject)
if e != nil {
- // TODO: Handle this
- http.Error(w, "Error", http.StatusInternalServerError)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
return
}
diff --git a/Webserver/ServeFile.go b/Webserver/ServeFile.go
index 9b81784..311fdba 100644
--- a/Webserver/ServeFile.go
+++ b/Webserver/ServeFile.go
@@ -1,6 +1,7 @@
package Webserver
import (
+ "log"
"net/http"
"path"
"text/template"
@@ -18,9 +19,11 @@ var (
"html/header.gohtml",
"html/sidebar.gohtml",
"html/index-intro.gohtml",
+ "html/index-links.gohtml",
"html/index-post-list.gohtml",
"html/post-list.gohtml",
"html/post.gohtml",
+ "html/error.gohtml",
}
)
@@ -42,8 +45,9 @@ func ServeTemplate(w http.ResponseWriter, r *http.Request, mainFile string, v ma
v["SidebarLinks"], e = Database.GetAllSidebarLinks()
if e != nil {
- // TODO: Handle
- panic(e)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
+ return
}
files = []string{webRootJoin(mainFile)}
@@ -64,14 +68,15 @@ func ServeTemplate(w http.ResponseWriter, r *http.Request, mainFile string, v ma
},
).ParseFiles(files...)
if e != nil {
- // TODO: Handle this
- panic(e)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
}
w.Header().Set("Content-type", "text/html")
e = tpl.Execute(w, v)
if e != nil {
- // TODO: Handle this
- panic(e)
+ log.Println(e)
+ http.Redirect(w, r, "/error", 302)
+ return
}
}
diff --git a/Webserver/Webserver.go b/Webserver/Webserver.go
index 5a36e7e..34d3f50 100644
--- a/Webserver/Webserver.go
+++ b/Webserver/Webserver.go
@@ -58,13 +58,16 @@ func Start() error {
// Interface endpoints
r.HandleFunc("/", ViewIndex)
+ r.HandleFunc("/links", ViewLinks)
r.HandleFunc("/programming", ViewPostListProgramming)
r.HandleFunc("/pentesting", ViewPostListPentesting)
r.HandleFunc("/post/{id}", ViewPost)
+ r.HandleFunc("/error", ViewError)
// Administration
r.HandleFunc("/admin", AdminView)
r.HandleFunc("/admin/login", AdminLogin)
+ r.HandleFunc("/admin/logout", AdminLogout)
r.HandleFunc("/admin/post/new", AdminNewPost)
r.HandleFunc("/admin/post/{id}/edit", AdminEditPost)
diff --git a/web/css/main.css b/web/css/main.css
index 26f0c88..9f04fb3 100644
--- a/web/css/main.css
+++ b/web/css/main.css
@@ -243,7 +243,9 @@ pre::-webkit-scrollbar-color {
}
.post-icon {
- max-width: 200px !important;
+ max-width: 50% !important;
+ max-height: 20em !important;
+ padding-bottom: 2em;
}
.icon-div {
diff --git a/web/html/error.gohtml b/web/html/error.gohtml
new file mode 100644
index 0000000..276dfd6
--- /dev/null
+++ b/web/html/error.gohtml
@@ -0,0 +1,3 @@
+
Whoops! It looks like you've run into an error!
+
+Please click here to go back to the home screen
diff --git a/web/html/header.gohtml b/web/html/header.gohtml
index 2ecdb50..4a3035a 100644
--- a/web/html/header.gohtml
+++ b/web/html/header.gohtml
@@ -7,7 +7,7 @@
diff --git a/web/html/index-intro.gohtml b/web/html/index-intro.gohtml
index 4b65e26..2f45057 100644
--- a/web/html/index-intro.gohtml
+++ b/web/html/index-intro.gohtml
@@ -1,6 +1,13 @@
Tovi Jaeschke
-Hello! My name is Tovi. I'm a 21 year old programmer and computer security enthusiast.
-My main hobbies include reading, programming, pentesting, philosophy, and designing websites. I actively develop in Go, Python, php, and HTML/CSS/JS. I enjoy using versatile, minimalist, open source programs, such as vim, st, dmenu, and dwm.
-You can find some of my portfolio and some front-end demos here
-On this site, you will find programs I have written, CTF walkthroughs, minimalist programs I have found and begun using, and updates about my current workflow.
+
+Hello! My name is Tovi. I'm 22, and I like to code.
+
+I have been working as a professional software developer for about 2 years. I primarily do backend web development, and code in PHP and JS for work, but I like using GO for my personal projects.
+
+I am a massive advocate for using command line utilities, and thoroughly understanding how the computer actually works, in order to have the best results when creating code.
+
+On this site, I post about computer security, my linux system configuration, and general programming stuff.
+
+If you want to chat, you can say hello to me here , or through my linkdin here . Don't be shy!
+
{{ template "index-post-list.gohtml" . }}
diff --git a/web/html/index-links.gohtml b/web/html/index-links.gohtml
new file mode 100644
index 0000000..8186508
--- /dev/null
+++ b/web/html/index-links.gohtml
@@ -0,0 +1,8 @@
+Links
+
diff --git a/web/html/index.gohtml b/web/html/index.gohtml
index a7d9642..2561317 100644
--- a/web/html/index.gohtml
+++ b/web/html/index.gohtml
@@ -1,8 +1,11 @@
+
+
Tovi Jaeschke's Homepage
+
@@ -21,6 +24,10 @@
{{ template "post-list.gohtml" . }}
{{ else if eq .PageView "post.gohtml" }}
{{ template "post.gohtml" . }}
+ {{ else if eq .PageView "index-links.gohtml" }}
+ {{ template "index-links.gohtml" . }}
+ {{ else if eq .PageView "error.gohtml" }}
+ {{ template "error.gohtml" . }}
{{ end }}
diff --git a/web/html/links.html b/web/html/links.html
deleted file mode 100644
index 4fa9766..0000000
--- a/web/html/links.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
- Tovi Jaeschke's Homepage
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/web/html/post.gohtml b/web/html/post.gohtml
index 6601fbb..aeb1f49 100644
--- a/web/html/post.gohtml
+++ b/web/html/post.gohtml
@@ -1,8 +1,13 @@
{{ .Post.Title }}
{{ if .Post.MainImage }}
-
+
{{ end }}
+
{{ .Post.Intro }}
+
+
+
{{ .Post.Body }}
+
diff --git a/web/static/1622082948272.jpg b/web/static/1622082948272.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6a4cf844aba8cf00b78d2abfa03655c1e10f28dc
GIT binary patch
literal 646140
zcmbTedt6d!`}V!q2=29_LPOLvg_=y0DNr%g5d;+ho9Z^lES&_~iI^K48<4byh*W4t
zgp{DxjAb)6*~ZdJ$r^X)SeccHsbpp*wy~Odm(6`Y&;5I!f1dZ%&r-y-xy}WjwZ7+Z
z92b8-_D!=00IF32>1>B{RoHv5O6Dm6&!)ELLiX{Yg=bqTN@i&l%tcq^FkCF
zy%4ovfvejRch^N;m<0{oM%6v9?}iUk!sS2B32wusM*wZv*b&IISRGzJPy!L7*^jyhv*sTRU)ti_QQP
z0)s)}Fe@uK99+8q{67GnV>Q<^APg~&y&1Wfk6I}%J!S0`exYeTr|Y$M;Fion8`}j7
z(Jrn_e0*{ErG&3nttOI!BEE^F(xT{$__g1zTfgC72`Q=HZ%yO!(gj(&vvYFugp$2Q
z#ryXEBrQ`Y4<9*t?6~T5g-%~tRek2{ufNq@{QXk>L(hjtM$IoK-%MGi-@beQVP>{22mt%1Eb!+)h5f(kngiAag~MTR>L{eLbHu1=2v*pbVDB`8iObc-Ys1#paPiX9z%;EE%#pj}cxr?mn%h2Zo$
zEmX!1(?X9Z^e$SUo6kHgvggyK2{@qH2WO6i+2WePtr!V7XC)gvmR<*LuVUb|n0~4^XlrffXoa9Sh0^j|>h7Iv3pUmt$J#2z4Ci
zV-+Zl6u<|B>9ue@Sg-?BLZ{erQOeUITSh_v#U`50)WT06kpc`n7knV=QUQ1z_|N}d
zA{aazpzVqbC<4z^VcC%~aS_V(pA%DovP}qgw#7}*A}DsvOO`JI5M@Ujz;jr~VL`xA
zd+5vz9{wQYv?LNhvA6`NEv{{LptEbZ;+#1g6%MUrM?VqG6;pBA@J@cDZvw^Tv@{{v
z2k)?ai3cPS=){XoD^OLat)jU~IX-xb%7q9F1m#v43*Z3;LJd8N;^2mB;kNK(PG%}E
zgXaKvVJ7M3=sqbN1B-g_5_iXD9N-Aij9Ry<3-%cfWVH3=+Y>m5oc0`FOaD*wn+^aV#j-ry+xPd>Wl-!6VUaxRy8}`gRL(fST58a8q~?;-4ey3(b&5483-a^Z!ABa8CbqKtle4*>mXKTKvZF^cgzva
z6{KPDyDNM;pjPyJjQ?oN!kAP@mpg3^B9VP3rNfO!Bf3=^$lPQ=AXdNAdC7T#!VF%R
zch>N}YKK;sl*2#RA_{!Zfhg3f1%(a0k_S_xcqiDf_7Wu)2Yhx|dE^$Pb&T@t*F3$K
z+l`>WH*fGZ{p_d45^Qc8dHym@()^5
z70R(8ASRhKrtU@2-i|f|;
zc*adGMeq_&{kGtY4UpA3U2)E4j4@D$8ZseY;3f>|%)bGnz9m@S1)dvM+wBxBRj
zkfF(_Tz5ZOZ;7ZnUdqX^4sk`^Ae`KwTIGsyL}E%~d@m0wMZs_KIqK35Sl-hDbVzy4&bOK{x1Hi(>LK%EuNbSEfwe3K|$
zJvTtjp4JCb+VLAI7pvocLJzAbE!0@I+>XV^J*vE<**0$G0ExV3FoS=`4KI`>16d)R
zRhsli%%>#B|kLF9qvFfZ>My<1*OER>tBP76^%ZY3K&zecXiR%PWIX2|82L*4Q}>cz1y9u8!Qk853v=*tV};8I;jOz?m~S*`xXDgXaSvq1
z=&*N0!^^ZSk7tHp`#JpkdIy`rx6N(>+K=gRRYJe7wN>if28LsR=Gfq&W3X|i*K@Zp
zZG!dXzQFsvB7bHa;p!zwuPCr*in@QbgCQrWE}#QO(o?Kk^4vzZrvW2l%o(eiYFGyf
zOCy`t+W)vTKpxfXvv1S`o-g$mbfD@jV~joQsPNSMN#-+AOWt^tVsZRWyhZ44E5|8)g=NRDSh45;Tj+uGB~wwE#zyA0l}`u_YuRk*laF#hCB
zV#sZ;;f|UpREfWkv*1H6x*})Gnx)@GgvGIJbkCUrM#jb(Jd4r_bSoBUNn`g>%aTVF
z6pw7wS){LO<4bbTL0I|r?nd~eQI=X3#C|^+j__$`(tMQTFiqWa!+COO-4oMd1tbcS
zJjwj1wT-huj*-qjP(ZNtT_k#i9VUDtM&E
zLE5d%xeDVKF?OO3hlU(^j1HRWg>G;4S)|rF2pLYhP?_y
zZAXWgP|h`SI_kTFc7H}qPcS1c77IEq`i6
zpFgt5k(fEML8WtG$x5EJ$D2HT%QHzw%|a*kp7&;B31DL{m@rd3d=NYXklM9_>YX}I
zHe%5Sj1OUBaZM(%nGyErKH_k5PkNgBri6@^SDDrp?T)6Qsb)JxXY$*&fD3=vxZ}-H
zt0DJG>17!rymhh-XgB^cg(}qIlEjLU|Ha|lbI1%
zJmB#Sis4|%
z4dyt^G(qH8v0UDB;ybIYeov3On4|W|95r<>MM#&9g!z<_*U*!O+Cy*XhHWmTWpaY5n!XZ7H0*rxl1fi?q>0iclQ;O3<|5@4ql+u+ki>Ci9Ao78P
zxCFXD8q8KvK;Z0#;M};UMGK^Xk)9wK#-ll1;DhKdOvReTvOtOzI6|OKSqJ_&$pz65
z1@b5S^ilB1e{&)TuBRmwYaZ_OvBs`Q)Ls<3R|-T#;&tOOTT~H|Zq*>~QMt}r)*0LtO-l!{aXb=6R;P>P4
z+-6u9eHI@0u-nE$rfw<(}<Fm#P(b+icL^6aJSkou-K20qA?F;-t?F+8C1rKTR!gL?)=QyW~@`%&TZb7?4
zy3{jUORO{b(f3Ivl>bnCT&VKpnt(mZ0R(9*DpQEX`wI+l@wDnIas$AzPn}_x&=^z$
zhEI9$OwwJY_j`H*2F!Fbb30J{mcVjhPIwPLDUU=*d958;TrxDIax32Jk<*H5$V;MV
zEtQ2(lQeAeA51(QZqWj?CzT~RyNO!JKEz28(pPHJ*oeXcjoNjc%%C?sen(7KXJ(*^
z1d}4rW6c=L^hB83XpyJRD1ooAp}mTLU`@`pO7aMC#C&RfEE
zXsH2pY+4UHpT3hg*6iw!DpkAMgenIhF6P+wxSCZ9>=jSZ`oDo~4Y*Aw`bu8kPFsA4
z#ZAiZB!*1JA~7We_&l!?JWy5oNVO}a8`XehI6zS;yHF>Cj3Y1~Md)MhB9uH&Hz8pf
zGH@`NqRjysA*f@^GnrN^kUi3z*PVqo`A=0uaxBs+_YMKph>8DQ>q895(#q8DW;kUw
zX2u4-Sc-T_7?3OLLy}WJcE&xYTEj5ICBL8zrm%Nw4&!}8ER~ZAGxO~O=WD6Pf!z~y
zwWY!wov{#ZFP_$UsKrcRT-WGzo%a$5gQ<6F@oy{8um)l|>$!n}pfNbX
zDTLo4#J+%Nu{_9_yi&&R69MKJD-R$u@@rZG{}T=a-fmki&iM(RGO25!1~5n?dSKx7
z8do@c2W+ugh#6E&xF6$)%WRs-`?S!&js!#XRJv?GXuGO
zx9+jT92LIX+^bpm+&5$<9w3gjLH19F_PmAU-RVFmU!hTw^NWw(?=1s76nDnxA}3#h
zcAWfIog+23BJ2UXwCNLW#Mhhk2XB6ByjbOT3?YR44UARs>kbW0>tJLe!5?;xURApt
zAJ!7<3A>a4+->aVPw
zL)ioi8X`Z*b!j7}h3v_aMJ3948~mUOzW2axO9c`JhlH!M%#=&baq8r?0hT{s(zf(mSgVV6VD+ineLHc;2nYw&ba$a@-x{)5X+1gGMpn{eleKn^GX*Wy^-Odh1_B@pR
z0A!|NRa5ovIua59
zUnEl9Rl8saOU994YNKp?EW-7>#uSWXT2DmkZJGEW4X>~9B9PfH6UNsYJdE?rGD$>o
zGN$tc_bZo2eR4s^^Kgq7YA(Oq7knoM%A`4ym^sZpHmDT$<@W39oddx4f1;xkVsGMH
zx^GYXPbQ>(Iri4Yy-A<>(hLBii6o?E>pLzzi{d7(NRsp_U?Bp=lh0%v`USqyGp{4Y
zHrN%Gx_iWUvL)cj0p;P_Fj;AvRgNEhgj^ju2tL_fU=??Kxpkn7ZSYQUGp|jN_c)x2
zY8pN%Vb3GJCF39GHG6Cqh@000Ur8yAEO|+gXCev11H!F}^LsSP`uIbegaD#nmh*yV
zO==uI%3TLi`OwkUfs~8O9}t$lSs6gv$@}?WV|*lpckebHVq_#0Oi-@2+RV=k^P?sCE4MwC-Lxg4#GJ*Hmb1RfhzoD!XEZTcQ9BL$V{=O_+Z!t9ik;y*W~uWEf(iO
z&aE0qBYnb;-YTFL0SfsIz26`27R$AhMs?#$c)_cB!igR-96fhuAAMZ)-Oty`LeszX
z!pOPalcmvjmRD9pwE`w-2K%aamevFx33;pcf~%7?mV`c0g>1xyAjy9GpdC-kq!!@A
zeAUT9VYkK3fn8n`BBGeQj0zXbnU0Hoook0o4>+}*`>rG6cBOMFkaC`ouOai+^E&>B
zT(IC4&_{hHd7_?wiEk`Hbe!*1huLT5jmdjxVOK5lxV~!sO!s8*csV-?(y|C!SCoSh
zft@C#dF6ZWRGHBpQi$w5I_v@K?%A!ihxM!;X$%^t75~NjwOF
zbES#wm}F4O42R8Zzj=vYuC5tG*)Ke*^AwEJ89^K@2ylmLJi$>W^6AY`7?rE5gk3SR
ztPmwuZe~DV>0eQU5QCy5xKl=g)vPYcj)F=Vfo=XM5HG(_rz;~6dfmaqP)wtE^x!H9xkE
z_%WW}40Wnm!C+d1ozM%Pxgebe1W$uFYwk#Zy9}0m=H=?fqms$hUJZbNKHcW;xR+JH
z%M36oCbbj?j4RL~4A0=%b4Z2+W|;mCc%Ng-G`NqKDZR21|od2bBf=
zIhBg>Cn9^XoX?0OSCfB}hBI@~r}Bzw>V?Kh**jf}k=sIPw%%wr(W|KTkzZFD0?Gm{X8?;pcA3?3~i1;<2gE$fUA`FRonIh|^!E*=!
zFZ^BsKWvqaR57ea9L#j}*9#%Hvqt2Wz5K>OWm)5(;*#)d$U?Cqt|J^|-lSs{M7BoL
zlL$tWB66{$J$o|p
zr9aFUS^{}ggEO6f9yXxnQ%)9*0GARXPMVD3ZVeZ{r5JkXIYYSh_*FS6w61<&M7j#{
z(9~P>f!2GXXG*mxr7c)Am`SY6r5y}Mh*dqdXQ#^q?e!~tzLj`C2Cr3s3gah(Ou$ScS2x^V?cy@5u9EWt
zr#Lgi;+Med0tb+{vC26e?^)A!Qh|&GvT;SjYV=5rpLGc9SkXAhTZEe#nPG%iP9a@<
zDHURtGUF<7zHWHIn}U2c-@zR}G_7~Tp&K3AaLY
z5$ApwKPKzq+uWCwGPL4uy$`XejW{G|aZ2V!tp*wzc=a%Or4o}7BxFmj`l8;sS6|a`
zlOiD(N+JoM1f@)BT;t7;$_F(+*u48*Pn7b;EhR;Xb7^ByR4eye8bNri!FzHn#%eSU
zrAr;+$bi{X_Y!IlM`(Ydz7*sE^Yt#{6a9w*G
zZAPS2H~(N`p)PIbkFJP7ahp%`sGresksf0&&&ZFbhm_#MCfXLdmpmU*i>zQ{&5LWj
zq|AsEOnm(>#5ev#?c{xF&~EPne4Iy032s1NCj>{Vq5Q>S{B^5eP*IfA!pM)c~F
zan-_0sB0^dcup}=VeRyM3fT&OSJI3u-<7b?;YC1XBgFf4Zk0ftHi>FkB>XE&TS#
z`;T>#-sxL}!?L$##vU_ywBcqi$}fPjQ|(ma@$qsSOkym)`@mMxIjl3>Qyn0+8lEx7
zUvXo?6{T_q&w*sHBSL#`Daj$^Ax516$2`;kUt{Ti&ZEW5iQc?SP9z#kRLCeEAd+$L
zltaBI@7C&4YJ5p>eiZ7w3sDdAo-x)JArB>F*190|0n7mA&C;vAs^q07Z$aht7A+1a
zAERxT?$Pd@xPM3(4_XB-1o!QOhYJS+E;V=oLo8?pVAuLizez|T
zhFU7B+zQN(=T+V`tx#`~Wrh)FjItwkCE)dxv$AoLVzB~d;;)+Q9_rtIDSYQPrCzP}9Dw1{d=Z(avT
z!vpS^WnGf`)RZ3EOc8S>`M2hU=wq+^dp>0?1;}Qg3GJ~}#LU<*8P|5;oahEPi~&4=
zDd1(lMyFww{ZpVM%~|n=XdhzSp^~(!+I{Z*3ts$fczPrPC)W3PBXlRS#hS#L_
zYzd@Q-{Mb;t65!rOqM-DjuS9B%z}WhU^yP}A`M}0Dhj?Sf)&!1BA+uTTOi1c=~IEV
zux1=9QK6Pwo}A(fAstxd54SSVfN?0fsA;A%G`@AlI9w~-AC#P|+VCOdtv1D5&Rg$2
zDdSvDc!l%$7{Ach3vsx1t#f8U5z@oNzcYR^
zwF=gB^9@PQih`R^+V81Iv<`-p=Ax$7G5oTA-pH1wX-1VlFd{POEuPFw;D
zL3-9u-3n|0dkn0_0f47mFW|Mk%XQzE!1eY0cwKq6U_pgwsrim;xDvChI=!xuHyXjG{aN{y-tq;!2KqGIv2R%EK%7TU2))ZAWhkW
z&ohACsN=Iz9jKMfN_%}}O5;|s70MQeo&~Z(DY(Y}()9jeuP=Y&XK8G9joIb21XLHl
zkR?c;)_6P*2Z=;T@n7szC^)7@a1Y_2H+$?>!xtej3eS%UQ-NNs{p{9t$HDyuMxtDS
zfaoaP{}B98K&67<8r%t)CA5HMbOk}w`9*z<*$f^4NP4K#w;|0@6iPF)3Y9&}l}SBH
zpa3^42FH_KK~OeAPRlJE=K|bmNsLvqC+fyQmuAnOXs9e*oBzTFl(K;faeyA31R)i)
zhe7lUi1eQ;i3U|iRNa;`(Eq4X~gpe~&90j|e
zH9^kWGgJKvAdX{+3v5)$oq4@+dyh(k9|pyx>pgc~>WbcSaPWJ8o^(7Ba?4CK8w
z{g-diai4P8S1&h2r;8PHyAiiTlJ)=1fFj8vs`q1RG(7>p0{Y_rptbDl)7*?B`m6
zj`7zc$L5-yk7&sqOfI~_tps?|{b}5CGi&YM;dXv|-8iooWy{#-9-04C>y_8wd
zm9lA*nL6-CoY2pj6K1CUctk|yx8MaDC7D_xam#I6K_suSMgHK3!@!=LY(zW>>{WP`
z;NrVw@%1CVdJmUIQ_TuDLD~{qRcx-(@-^4G6z$x`#~lR!0aNeZMF$=!!bVDGx>|rSTHJQl!tgnofH3rsYfe%F
zUU%{un=kxH99`NuB87}gzq{$yq9)nHlVQ0po>d7|x{yYn+$)-GEEtxVb%Cs3F
z^b49j+|+M}sGzIBRwZx)3Z1Atu}nFpaX>bIz88=gX{o(
z;TxvPd9o=cM~C*F7-QO2)$40-cie>xDkOaet3oUlCvR+G0GXB$drnT9PaL!7*}?kH
zyr){gL%w$ob>f67U_#{xUJ%rp_Z7v@bKmMQvfXWjA1*h-#^^<{&XP9%$ozvZha
z1H{aW%)B$_dMtA)(48NxUmwfG3w>jKW5%MO8
zV~_By@sGI9BE85rrf9CQqP%(!GjrD@By4x{^8u3)zhpQN(yF0HL(&=+LTG22F}p)-
zDfc=Zd5?ow*F?@xozXs(6?)Azac-tRWlV~0PD~^7!r<5n6*D+R1(1fi9X8Z|xJ=j=
zk`Y=r7x`YA6ab2l-bxed_`r}Lx)p7HQg|7L^if1SVp|WSz1F*}3}EDX%%hi|;F`x`
zkQsEOr2-He9GofglFi}lY#acbg!Jnb*`vNp5yoi65%m0}R8N5>FuGA2Zn7_^evyaiY7by6
zglB1WzAlYb$vfVmM41~g5(cC_hacaQgM!lT5~p=YSQ$Pa(x=2hHG|WOWMX;UEA@zv
z4A(?BX5a6+T+2mcH2A-Pd>}dBHhtQV!dMR%G|)#Mlbv3QEOebjc&s4y}~|#2LrBlvAx0+?j6SeiBAOL%RFV80Q9p>f?$Sfw8J{
zc{K(UySS{Y^02oRfK1#*ytwF9@CIun(HsS|)Aa{4Hh|Wo;QpIa>5KMX*QN?NBZ_Xq
ziUE8kvR71_s(3RcW^$mS$W&fPCi-mZ?3Go(};sSgy!A2fmzBy{oyT=&e6!Q=q>mSUz{W{5c89rWaWJ2w=+K@y8j>NCyJZx36@qabE*V%|u&-f7SR?9XS)g=Xy-*s;5zgx-
zl;3uWagFrCl!exvY8=f(^4t7Q<=fTCO4hid-j1~`_20eD1sGOlGMPj(tzqQaw?4*ZN59$!pvNyDO3tmrnEca#buPSzQe~xszNJ|jPk_9
zQC!laD_x3{2J{3IzQDyW5(UHLa|-=)M{1{a2<4EQ&Y52>L~hOuC?-w=7QMag>!7vi
z$4&D+Zk}^O_8!|nY8vkl1}GFg{4md7`$q^bPgar1qX{CBbH>`zF{XJuDr2FztROaM
z70Vh{UPCDUR1A~bfJd{Xf3Ws=t0U(jRsNuv^l|OO#Gnmp6LCu@zSntwu;dH>2JXkQ
zNQMEPi5IV7^1PQ*&$NdbVmL*BDMXs+hfec-BKl?R^F8dgRZX6#xpwxJvA(0jkEU=P
zH`0?R_HlQAT*_|sR*y8y$#$Sxc@)yXO9Z~rR64_Eyt8{SSbbXh!W*O+HU$JH5JFCZ
zK{t>H|FeL0D~Kg1j`0h&K?lpE2>|22({E0oAO~d5qFX$DR+BpYA2IFUD}kHZevue~
z2s#7I(CNW7!ACqC8Wv3lWjd~I)~f}NR|cl+W-V4Nw8RJk5AO6VTNO*=DgP_p_ispb
z=CHv1fPZ`;$N#Y57s6vlF8*fr0N`*C;JBe+hz|_V)%~M07XI(5K#h{h9j8FRBptwD
zd@-5pD?rAif%@NUDPNZ6<(}YhQ4MEs5aQ{hQU<6|@&Z60L^XioV$X3@h2GPqPf>$w
zhTDU(qcjLi5`rngF^UaX9bRJ3rh$>g*-@paaN`t&c%P7iN1|LQpxTKSDcLGe4s`{~
zmeUb&RDsHxpxE;8g6KBD
zSLlE`IqE!TJkpQ1<|F`s$-mqR6|i$QAvCBM3nOZ+V5(pfN;E}}f}PTPYp!uXC+w*4
z*ljR9BIDiWq##xB)x_bG;8jcWP`|jOMJ%DYnR&sTo)kb3>!P2C^mnXK@j@n_oP1;~
z$piD~@f9=xIcARXU$`iaU_TQt*+IUsG{WWnDZN|4XYS79*t(kT
zN}L1Yoqi@u?+uYgy0i--MdTSyMt*072GsW)3>P8%hAV%et{pZ>=hGsLg#ghF=XTo#
z25{cwlF#hf2Z}U;PL^jNrIFO}jEdlTU_W&N)VMu7ny>p^Md&9MV*R0B@rBI5ZYd8l
z5|ST(;QQFoNk8in=uY`Nk17M=hM9hHf7g%_oAOf!+Az=ozwk
zl~`gJiCK6otDR3Fk?~H<3e7T?nUU*p3v4RYDVZM-4AD%^=CcZ*SGw@v6^Rc)1Sw7dQF}Wd;R3(u2X$0A2y*j
zUU|k>m2;n;Ubmvu>-M=&WYWLB@ww77=wIEsl=SnuA06sYk$026yKBHcJ)FPxV_HWa
z=)ax{as7EoNqB;b%uar<3{Uu2e3Y1f2tMkHJz@9zLDV~Pg#Y7z1@#`@mX{iHd_b2p)+nER7i
zeprMk`1#4!ix;oPEq?w@X}#gpdD0}UaHRI+2}Uum!gv48@*{Qn^%a3Xrm7SGReX($7Wa{Dpik
z;Abvm_bMZxn#Cz?__cJd?Of6>yWHUTNtEPevxn?&;2u2_GP6D<=k=!b((WHz57rq?
z!4%Wfxd(g33m;JaxFFk1gw3D-s;c^0GVNGTcFLV!$hxa1GM8av^InfMXO~=?(9^xQ
z{n5M+dF(c
zJsMeJ6$)NTyq`R~b7;k%*PU|(Bqv
z*YUE}N|n4iJ1O^E;O$Us_t%SuUoHMHN=vxJHmvje=51)conkzyF*SL(VeYQtqw}5y
z^?mo%D#NSeh^QL7A0^#UTDN~uf81{ne>=YA?UHWpo150yp45D&8sRrLY);yyllz|1vWfS>L(io@Vv_LetZ)-8Z;j2=U4s`X1yd=e+TxTm08E
z&B_zX4QTl)b@Kfc1+QOBwLhv#yg8`PQFYC0``z;W+KQ_}K9J((Sn#_{M^5
zVWCdjD#>jj-Wt*Fvv0e6%V?^S?5X=;3OKJ#=w`TiFtg{cnN;?n!K7u2*1irszuEoR
zeBVuP9k9mL{baR#{MSpGul;Vcs{g4|{zm}22tNID!`me_5uPH9G{ch`82i0j
zF)yHTXYT2@z$aqG8SwJAVO3ysrySqE%6Zz$=j0_X7|MQx9O>Z}<*Vr_+2?drUU{NK
zIIMKIrXD<;hnbqLl+JTs0ro1Hzz9~Ef|NSu%aQ53YE_W#daNZQ7a^j)U?DQ&_9zwM
z^V9>wg@~|Myr{m1Zsy#_je`g5cL889FA`JENTQFaxTfG*F62=?5n3{3(ItM|q5;^H
zmVp$o<-Bd5%DH^ggfTwPo-!WW`<<@)x8mkNFT&qIST{jfbmbs9Palp5x4f;awdLKV
z3LUv{yt`jMCplZ++S-V^W>VX8AO{YosLN}}SF%vJ$M;p7%W!t`q7o-&-78T_gHPCi
zM8yh9o}%8m3arFKrZL9aV0j#2?`LPj~WLGecGZX{_b
zROYi{m_*8<0%QmHryIE8lZTG_HaOi8?kDQKe7zcQuw9#ktEw?u4*+WUjl+I{Jw`}3
z8UJvZMW4Lmr#{85=gh|M2T~ertvf=x(+3}LEqb)?Q=>W)Y0)ne8xmr;j*!8ULIe$k
zJzW?eiY4DlZh2LuS|q=5(68U*J*<@R)yDiHiz|d2Ji{3%%yp>(=KtzwWgq6{7C_HK
zy!=jQKVvMTF(Wi-{o=zXk{eMd^CfSiS`$UoE^=L&hd3#>K}uOp
z*h1wS;he}4&$HS?U~632t)fJQ_JA^VoG?Lj7U3A!>_a5_D4~HZcp3>dsr`<^ZyZ*f
zLoQbO2r;G$sAuxMSkkE%z9ujBI!kG-B02S4OD>589jromrrS5RO?596Gv6vaeb(?B7q5<35u
z+co21kJ9$;ZUX!sG?&b4gsG>d^)D7|Nz-D$ys}J_&q>>s47x_2QZy|GQCoP~w7AHt%A!5TjAH~9?ZaS$Qf}1vV+#=Y
z58r>(mc}MK#T$Pj1U#!Jy687$+Dz+4Lz8IfYlDleo2^3{O`iNR-eV-G4d8cv=Aj%O
z_QyITuD9+i9vCX%t<{*u+WaUldgkA09l4<=LlQHB!$NkOU*Po;OsV=Up+d$H*$L>U
zPN9FOPqKM?ijq{ZLjJhgU{aOfJrwU~dK(z`;2k2c_2m6wqN!G!Qf(UJe4k^&q=c~d
z6i%hsF8pw`+N_|LtdU>`mDLW#fO|NPNe$@lxv^Nx3@Gv}DBwNy$z1Cv+*%@$BSS~@
z%d%UMAzP1g9y#bmmow7%9P;L9y&O?
z288t}UL@eDYYVO+$hjcxTj8}Z0+^I-CV(xK%V}9BC<=Rk!G&TKigZ?akh$J^k~(;Tb|)BogHDT$QB>zqD2fJQ4m;==qNlF;*`L^^JEOL
zTLO{8mfZKz!Q_>R{DNZ$LHy$sT1?1}VzJ$G!m%+a#n)x9umBe#Q6ZW52XH{;xDuZki|i{whVu}P
zLZiw*{TJvKakq43U>mX!Ow|#l{swxrpSxQPMx`Up*N$;(UK!#?+kmlNQJzVU9_7ye
z1(@m}>>~{rOVy4RP|qV5-I<`~+w!n=&l*40-Qt7cNv~Q$8aY6R7$C>5_rP-Rgo?Uqi!b^1
zD(&Uhj1~;X9?Ero=}e9K#H%`U2O%kY92l)W7v-XbdlB`9z2`bHc)ouF=VP#v`bN@lskq|_VV;^Jk=OaSS~KxsuuIswgR(C3DBh}Q1hZA)
zZM(*mMQU5%>~x+m80@^pmIr1O`Rb{td}*$BZX6l+B70;?d$1ws&kgJCQ;p^6{@~C<
zrlL}!$dSa|piWFA;{_dV$aDe(0t?|Y{3+z3#UkP4``(d#*OvdhZEA1r?_1*=x8PTu
zKG$;iZJ?zs)D&MoC*e%UK|}5N^!ND#kMa=*M|Q0e^sIcnY}>P^w^|8n9nO4nJ%>}U
z&A21$5m#rAB%b4~j_-VekLW3omp^Y5%?J4A^@A7C_SQbS2v^ew&gXN)o`C_Ugg>eH
zxsSHfiVkm71LSS{@B1Eku~kai1ejpb(G{P2tEL}BIc2T`lmuzo2AO5<0|L#TOs}_DFDou*#hei_r28#E%(R282!#8Aw=t%ir
z(=RTBxv7_7*t&q~7UwOMtMgq~mHkF)b*rlPi(jeHIv!5{Zq=JN{)ZNwHA%X^KDXPt
zMm&ciA#cQ}POUm4;N#b({ML6qvZgim$Z|q+;Sw5GJTt{y@cK8j>xRC-Po$P@LAzB^
z8;UXu_=yeA8wL>phGng4S=!etvwLqPoJ@S($9wf`xhEiJ*q66oUi5S8ZilFU{p%_r
z^^IM!?bRLM3p8RXYTHu)V@cDH-_(gB{;Kf4wdV*$$!#V
z(`P=1a@*JDrNyjgSMknZfVv3s1F33+RrrVXc=3mh-y@emNG@HYWgB^e8!x^C-tg=f
zn4zr=(TdL9^DpfRdDG%>uP}~6{Jd0QZlSBI*1c${<7N50yt^`R?jHlVm%?uNW0r|N7{henj^-@UScINEBR~1wB>CxsYy0m;)njsCcolVWaAAfZkp6
zlYGH3@jJcw!+OtMXFJYbI-Kzlt%<%rqr{=zJkQ%$1WedtvmQPa68~T#81MP#^vqh_7_YO
zIUT*fUcVHnKh?!sw%~H$%BWxR<5u6-quW0>P_yk<=)-5uepT&AC6DdMI?i6@gapy^A9cg
zmHLvE1v-Y9FowZlaFcz+%4mn1-p4TX{`FB~gq!gC(IdV{uZ{3eN#6mvirKJ%P@nVP>w$wNuX}(lNrL
z9d^+drgqegAAW4|y=+cu458b)iFd%8!hOmRUmAOPsFY&Y!Ith4
zh?#E0sugZL30gZ+8ZA>iDfSL9B(RuZDv1uHcwO{N%D`t(JYI7*?a7^>bS5XKxoD?{
zOY?lC>zdw@M}dK%T12N+SRXYYj0;3P<#v49S+#)=b4)Nw6y3JZ71yLDo_+hvxWXgE-vVQYV
z?FDTs+8$vo`;N4e+`yY;uQ)NrIdn9n`zmHGu61z{`+WhgSR3~-k%a{No01B+xP!ql
zEI#1W$>VG!f~msNUdi+bVUXwz&TV`Fh1{PpVjCQS&quT&eG7SYqR3&TW1iM=r4#BZ
zIM?NfRxzjeiFI2r@&-yhj#Nvc6^B$OUt+akDQ$jETbTHY$_yTb2xdl#j#A)i)1ex_
zezh@YOcBSS3@fDAinXS5yncUek?-g8Nj=giG<=8UlwZ@HLb*-zVo%sDw`+m$L5+q)J!TgY@=DG?1d=*(bYY#=3Nnnn`)Y!J_!9!(KJZ
z_bwjTLpI+k{vgbGSMhT)$JFx|YIXltw%0zJ${C3MId$N4ZI>iG{llJJ4P#@}KXPi*
z&bVNE@L%PQl6mZmm87gcy0xQZQ)nv_wDgLXIy;Iy55SIUDTVU<-%_&qfjl^{
zWuGrB-K54CHTCh#k&wcIJbeLD>-?}Cz}D?Gom*LeZ%hW_Tqa_Z*VZ;ZdeD_tzszye
zvAeZu0o*FY)TcNy0=TDt%OSbfEO>!wq`)v~Ay~`O3(H@Sg`D{jN7x;`C(&rQqCA}E
z8BksCMTjrGJe10gJ?K?DP6spW-+XCwmM_6+t!6)A;olC5ZiE1UAEAH(jyJpU;uv9|
zyQPC35&gRf1UsPrwy8ju=u7&E02)is|8|LH^W|U@2H}BGBj7aH?BRKMJ_Vu!XV}de
zOyK0irG&_Crziq8A)|L|dNQq{!ftsDkXrBP~ceAz_FdK4rHiDn6VFiAC#24!d
zw4DMX0eC#03Fg#sW-1uRLa=G^VW<{V0}rS3Ac74b4gAAB9XvVD=yEP9jj(scc6Myl
zR*|zsrw>&go9$AmvmVuKlUR84|KaMaqoRubwLj$0C7mh=3`lnmAT8b9Eje@!AR!_h
zilmgZNOv=YG=fsX42^V1`yPMyzVE&3{bN|HS?kO?XU~~^_Orjw=lSkKqv&;mW?PRG
zAp{D@%rxo(K#n4*_yMpfm+|5J;Q}*aW~fK{VsoQS(`ik4Z3AlM{4+
zv<(k(Jl$PoXSgHgbRzp8k19w$WhUahm|2i491kk$4G|cB3>2o)r@i8SO3wI~+0EFp
zrOA;HLByofTM80$rgzY75@1TTf_NZe@(y<*#oxd}dkRqcsRBp)y^W)d#RV-r86GZcHxNBn#<=`lC6hL$vu{^w@a3;M+S
z$8N$*O;AFZ;D>`L9X{$FK~RO5n52$v4MfkeljE3ZjU9~-mW
zIEkVzfZg*jj1%Ix!n3Ms$&c=zoLj)h`{tP8Sa&Z^Uz>h3V^kvv`0V?*q19qSDaR`9
zKz;OZNHJ7mq1-rxZZ7j^tb6V$yZCDz0rQEJgIar*6n4w9-CUFt983cyw`6CtgbNg8LcUVMO0To6`eh)64<1F1_;LS{Z{v
z1JO^J@2r-|Jt#&aN>iD-r@cGt<|y`?UAukjy~xb76i5HmXYWaZtkz}|>=pUZ7*r~}
zUAVlxi}Ly^xT??3j#3i%98(e1!kIgY-z%unwsRCaTPB>j^{+Sh?>W?bn&WuJJ8tHV
zHhFt`*g7T5aRqRmynFL1WCdQ~Kc&QONZ6P@-+AzX-LH=A^V4#uZ9J4)H|X9=Yt}UV
z16FAU!_ZJWje;0@qx+XfF1Ak86oRv#mPpZ2iD*@JsfM1Z46#$^pGI)^4D*(+qwDis
ze0uL1!O_xgBR&1#XA?2uAe)!peN`h*2%fz`XQ$8keqy&9afTcc`k@GAyhpI--5ZM9~WD5P(^acj8Xb#TDQ
zq)#zrq-d%Ci0`??!hBVc^uysRqr?5rJ@S)leZQ8*JlPBqv!KKbzUdv)xt%+8!hOZM
zpD!!k4aru}Dkh#F+8p`Em(#M_ZR*5_C}B@9vZv@!$j4|DjWvgk!JHJSj|if^VLFyk
zyuu2T-S8{#_)yYoeMXeyTV-ysWME@~{n!U5_o3myO{KG6`^8F=2;|AbV;46z`3QNn
zfXOG))n?yU4vU;h9GZ0>Gi8{?4p7P1D)`2A-?C-DMunry+foa7lc6P3D&}-o0v7y|im=^0sJ6@wus8YK|ktql|Oa!9ime
z?XTL@PFstX-7fX)Pq~iS9S>F;1d|9e2AUISlEfxWekEx(yb99g0SkS1?cU@X@18Ro>`;`pWVGV
zKh0%SZ{Q8YA{a9^Que+WTPTH>Q6xFz!S3WbrE$j(ItLO)ksLJ7_g^4hF7ge;Ct
zm0PU)F%p_y^M##x6Stc7Doq&-)V`%sMG+fgOcO=5E`we58K{6ySWHb2i0fzRVf)cHKYabS|O$
zKM%-W9_sRKYiqU=H>8n7>TJ$Qjx9+VhQnZJ+$r^{Wzm=mT(!=MEQW7z_!;$VWlVxQ
zUwp#{3cN{ObM&9-LUaqv1dO)9PN5k4;x3uTA))R&!U
z-r0LS0^^Y12hB~dR@F7u6jEMIQcG19blmd42&s%)`C&z{z!2&oN#HO7%PY&KSVg%p
zi&!4tHQ6njKr+9b_l%hIQhQhqwO8U_+c2u3pNP?=pI7~&*l|Y3UlNqo_3rVjwq|W`
zP`A{B0a#>^PQpe!k*DyP+7EB3eIExw&*1IV{L{<*crY_|w#G8C1q9x$X+lgbR^&%V
z&Ab|kD?JA{L-&>uhw`pyIJa()YT^;gPj;d=Yq0@7`r@@yen?PMycq!jqqAA{_kjaM
zkPZeTOc~o#ASp;2jR@5v($I|a%Ionm4tyKl>IT3(O
zxMQvHVas^>mxaorj~!B4STL@&FzS*$v8chxXhnIQqJ^^CiG2G|Bl7}pY-a(urvQ}2
zr${ii1$e)VyxTX_nW~1k%tb>4)k#Hh(6VXXUjrc?8{SIy0+2N`SX%FckFZ39mTA{7
zRXG_vv>RHlVe%W?cZ;j9#jq;@g7NbIyM-@--l3AegF#k`$yTS%NlH
z?f||!4L&QNq1UY$ATyOKx7>|Ct-#?LzQDG58+x
z0X36OPrR?thqOY)-0fb8mL`bE0*mraeCtwn23%x1kM6HVYGC(uHn&Jh3UbK8j!{@d
zeKZb&t!DWVOX}@+A_|JOUXghzxr-;6XjT3=Q;9SM3tFsOtLBME9VodFp#eZHLof0j
zExsRhm<0emXR>UQdoAl6Q~M(3V+NAhz!-uh$`k7Wc%aN!1cL-qPucy@Y{YD3N!2w(I_S8(I60nNcu+5h2mDp?W=b4VqiwBMsxH;
zL7!<*Q5RqufXa6E{-raGtj%b^Zj@RMv1PSjL?SW6
z4#h3eqKGHnZPa`Mz0aMqmi;lm=+R7;my{v|MlOgFrP*CA#%pgKJ}(6sZtiIYc`@8h
z1B8^@5b-XQxvuA2kez`at(Y2rczgcs+ky&N`iJx?X^ReCdU2W^~}TsI|SgBvj^shO%d3yu6%HN{Y3
z#q^Q1X%=Y!~o7prV=4*BC-7xxm3C@e@c4ye@qn!fE2MLjBL2Y(USI6D^pEt
z8zC0nVh5^4EIji2I-B+dCP=i@_BOw=WOOEX_^dL$`^B!>tXMDGd>TkQ{ThxPfe;({
z&5n`O7A~&$>}w0gYCd$y8okc;$7Km;UMqMh-iwYYC&33hr^<*-4=x@&WAaLvmjHci
z(mhx=7V}m+CqaZMnw`!Ymu6qF*S#PpCy`w?WkNtz<2OteN=zSaB20-g!~l!Zl#v)G
z;uelr6%aw7i{fMoXd5`v+NrQz1sO?OE|Vt``^$$z^MgQIkYF7L|_4>(0|wb
zA0>?qCz%G!kPM&yov$DeO$adOKwM5~+I*Iv76!CH8z`iLijP!@8-c1I2#AQlQ2$dx
zJ_K3Q4HyIxd!V>^qFZqBGevf`Y&kr$t+Z70GTJ>m<5dBv
zqAWS+k)MBV|1L8Z&GwG(ux
z;Utj0_e2s*eYw8?Gb1Xmfh_1DJt4Fl3b=2m{l}j+Ge9)I6r3Yup=iDIQEH2k{9?Nr
zbjpW>IPz3U)$E`|MJIYv=vvMcof8J8LsSCnT6@`RVLp=I8I%Ld2Gb{%NO-U%HlQWx
z#`_UM8G}xg3dmbP+XhB_+>!kdRj^NCSNMOeo7D~aB0nds->pS1E4#H#|{D%EeaYovW0
zIEcJvzNDph5*9ffw04#ay1JGqV0smZ(k%5<{4rD^Yo>OOx^rQ#$&`R9?|5Q4tO~4r
zlLLW@>{l8R~2F&2h3xcq=iZVK5
zed5@RJosm=;lDW&^UD_BEXvXlF0odXzF={~Je&F85!LSrQ?FUeeK*Uj;4XYx)M;aG
zY-~A^y231g(MuTL>8ad2af;0sKb9#>x*>wvHRO7uSiM?gUA*Xk(<8c>B(yDlG{9?~
z`OB66oNli>DMX(zH_8;3Ohsjgsxk0c?z_uE&lzK-Ry8uS9J~)BjZQmyI?G2&0}QG(
z8O1)B=TO)A4$_*j>fP1gAyojW!tPL0IyRp#3dQudi)&dP*|oSXaQ4f7_S#@xjP&U#
z?u7aax-@P-Dkupy3>q2d}p($gf>DtGYvDtIv7yk=qQxJ(~WcP)!0N>s7F>@kuWYxK4;G@SVH;qJlumHXm-1>SCi&iYR81
z8BBYSg9aVW3l=RueZL;}iKm4hKT9bM!;{IRYJm<{!G_$ovU$FJI;8dcn?1BaM^RpG
zR`anvEL}f}IK&al1``SS-%oULvdvWT<&@V$UgerOl4e9{C33o3)(D7
zjD@R{JkKI)#?lTLS7AX*A7S~Z2kWiK3fg>EWk*-=c1MGdl3`pSk$njiBQ;X?ZH?O|
z1%oKc&6_MB@B7&s3Pjyj!z&?I*Vou0*PVp)V|J7d?}OhXd8B_T6)=@(-I|(nK5wc9
z?Y7{}BbN?NmxYS(JtI>9tTBYX3-gCCw*8CblInrU0A
zHn?)vWql;`PP_d(`e$b*=IKh-*&oy9^f9?Ev{xO?MD!PNc^qD}roZ0UvnUde76y#V
zXeHt=6~SEjS&H&nszTMYsVJY&09XngNG^Z=(*l^2fv6Gr{*~=>8a1ptEN|hP`>jeb
zt1Z#F1u3LmhKaCk26Ks4b2lfcQ4Dd=%z~Vbxu(vSc?v4qWkieLxZ6*cy5TT`mr1%7
zk0eh8wgb;3(B_*P2*Cr{2`8P^)vMpmm_sUL#JR@WF>C7%w3sJ3+#Ikv33cZij4$iF
z52bFuFA=t}X5g7A^YBETKB_yfpvrz|=jUr~Qcm_kaVenYOn%8{wSVbyda1Sh?P`sL
zFMCIlw9<}+PnUJ?4zSiiUePKguE%X)L_!v5b=zpFsX2Z5(&SB+
zd8X=vSq#0X^j_TLDZuK5zGmqx%l}Xs(veh#i~S
zwx4E=IoZsXT7SbVRq@;FnwP}TN-{0}@PO-}k&eVag_i-R_@k_Ve4Tv)(Ne6CI?P3N
zR(|a8D388@{To#w7`rIRDD&Y3CX-MQC*#Er7iru)b{2=cr^VY*@hD$&x?wQbmB->|
zWpv)!(vA-;QLV4gbkp2-TV{ahb#ZB;{8|}y7R1;dFzB^P-9sy>G|J{ja}X(ENpZj^{`-y*8o8JC0U86y=!OMHRY
zw`|fOjr)&n&e?F00hK`2bQEuh$V`>gKF&sCKDsc2Wut^TNZAA`&*Wkb(+Er#rf7!~
zs#;uD`OV75bi7F1%pj&mQJ}4P;@)x2g)j-H&`}>fw+@s$Ye83VcjYYY%s^y$IHmAz
z9H4dMEiKlI5DN@G+RrcHBvD3Cmvheuwk1QupaGxbHmqQ#T-xu2p)~i-7`D|?@S`Pw
z^<1;lu0TUWiI&h`-m&kmMx{)_UUGv=4U=3nqT<7XPm~1`d})daadWi)#DE65p|3oh
zUZr~V2Wz*0Mji``9%)h!@}}irWb+3(o)!{Hpf~@C6)UsKNdZzc#uu|>xWUyD_}^Yo
zPsk4M#_R4UsuWuVJ4(-OZus8q$y!yzHD@BIKZ{d7`UBl~S9fYQ&G#J;bb)K%*}
zk_F+(_j^Jq44dFI+d0!m`%uX|=bsle1=KvN;F%cf9NTJY3{04Ez@L&YgHY#<{C0Ki
z3?TM-DtKzjOtVr155Bk#0C-mnHxpwuoJf@OPG_Sx59|I!Y)-m4s@iD(ZwXMK4R^pkz)
zON_~Fl@+3UL^)`?dnTC}c@N?BI?^D_u{$sA=z*#+$sQ?V8`eMufMCE;44;j7jeZi_
zwrvK8-^qjmM?$`=vW6vS1JCe~3kZ6}kdlb^PRJwD2%2pH-OjL&h?1j2l^M&(FP?mn
z$>rsiMK7kt0M}MieVHX$^Gbw3j~0{jTIgpom*8Lu$!|Q0RC4n`u)nY6SV--GM`NqAAV-$C(b8uIsz^314~qM?rBF0ri9iz-0wMnGX0<{7=dJ-xp9lW4yS1
zYOc}6GhdDQ?$W>R>}4RzGX*4*MtjEdR)lQ%PUVC?ZFr*ZQUNn(4FfL2aUTAY>OpDT
z^r5%Ku>X8{Iue6-;5>6$Xh)j5ii1dx}h)Z1&`@7-T;Uk}2Wex%F*v_c7N|a>RLa#Jo
z+XtH@q&nPoYNT|M`fdrmHJ{1J;DPqU{4mAQ&x5&Xu`~okpFyCEaCgnCq*_R`H2ZL9
z8B(IJ#<;G>eh(_~;qQEPWvf2xYkJW*cM<-(o*66AFzQFqU3a0m06px6;E_R&Hb*WmbbQ8nsC4A7pWvTbd8C0l<}1M&DU)COm^u*
zsi}v2)nhLI7oF3Rvi?P@FZwQ5ZE>N}CzI3{lbE3{#ciK-cP5h7^CP;~#oD`?lC*CL
zGLt{XrYhsVAR!^zUgiy4v(2I1zLT{rH8Q96>C|t0T&2HB`Jm&qqGDqdhTh3Mn5A~S
z-@_ZA*c-Wj^Ob9&j-M%8ka;6kMlM`n-;4?#A|~=y(!6x%3z_sRD?@h++&*ayt*|D_
ze5?!qn6Vo9xvV30+jB*B9z
zvO~XJ2hYf8&+}SGWGW%*%Aw;gXi%E=dk1GlSANaU&g#BXfzg(S)0AF{T-!h|>p;Sl
z^hvC5&l$yRMeVJpqAc~zk5~MEXDXK6<Txs@iwEF~~#N$~1UY+ZtwWF_F8!`JRbE(1D#^V8x}{51liK%p&%&ROK-T{2T_
zc>-I)jrw9PW<)B{xKegWvRSeBt`RFstjNCAs5c@p?*}(TE47Buz7eNSNH>I
zZCo~M!O>S@NqN3WM$^0EeCwPC^30oezXgyYuM3VXT3M49(^f6z$Vc9KaDkYa35>RD
zOT6`uWEyMY+&XkiU2)#4wMdr996Ujt%ajCczdm>FkVmRZs5FDWwSTZ3{w*+ahpkR#
z;71l@HZ^}o_j#9*Xj)Rio6otTAyQ}v&rJp*a|BYpr1)m|!-Bhcro;ERen6Z%65bqJ
za{HVEd?HtramoBRloN%-VIh%acqgXVO9h(>V+fImLQrO%n(RkTnBru*rbw0lsDKSy
zEuWuL4DOQ{Em;Vfxc$!hQp@PtziGGqWjUbMXbLbPzLviX`p$E$EZfzl+cxB$eKfe8UTePRL-krMwyQK>M=HZptkWlSHQc3c$vs_F
zh-)HO?`^qb$_%!YaHN}(PKyOYL%aTI#HAy%|D2ck5#nuJ2jRLpRZkE;wRJ$(bm&vh
z**rMkQ7Y~oRsaRj7}O-Myx{6lZx?sENr3AhY;n(Hz^|>kMgGaTfo^12&aEK>Djdr-
z4}T7;w9~<6<)Ow-q9{G6GF(2&?6><#TgR*6J$X(@FQz|sSKXDrKh+S=>#QK9I2!x!
z&;Np8moZGduN=grJCkZ4#U%x~)2A+2+=V0hlPm;lp`71CD2}t2hG?hMg=p>rYr9LWB11Ufc=No?uR!n
z+J=6%ug>0a_E=EQ^Q4YxTt!(ecr(;hU6S?Hgkp$LB%KhiuePsAyw5U@b*$)ZN<8IlH8h1N%8}8mQBu0PFMp=_MDUqcN4f-dp0{(=N
zN2SCspU6ZvGEv^yo?z#fKBjK>&kiJFj^z8ke2JcqOrkOl@Rv{Pv%vm%Pks_!!8ZEm
z-7@5NZs+b#ORdSIyAr2D%RiTp^0t)yqoGw_J6n^~-_Lt#@b?V^hu?ivQSg?1d;F
znhs6mI|-$x;o#O6_V9`Chri$>hZHBRTZe^@H+@Flt>>2n)6g3|t15T!%G55x2+UwzL&9Kx}=G5uNV>61g$tfd>t(Hr#Fe0|;
z-A;Wp-|}COqpH9AZ8y6_>x}{HhcyqZRdW`3q&^%I?!SAckY6N?737~JvoY7e^oJ|_
zL+uB3F=HRHc5zEuC*d%Llg@{P=2R7XH+ETX5()kcuqOxzEM4#@x_jLGy@P@$zPdw`
zY?pWFRMq0!n@3jHSx&IYGO58p^NZz$1yp=JA#a(9H
z&o8g8+fJ<1K2Xj$W`n{E11<$Z4cVA-#Rs{HTlKqIQdfyil}M74u87v}_V75cgSIM<
zgO*+%>xFUV5Arr8Jy&`DGV_&P=wFbJ8#iyTZ|$@9Pro6l91|Wje(+0`@=8mZ=*l`N
zyUX@_`>@&kkWl-fqBxa|ti6+XeG~X7gz?EM_cfz$70IYK%uM@q(m$C}YM$a)AOqIl
z_^U8uYVWD^)PCte3oYHv&JF=s=%-Ro?9x$3-+uC!UtAk8^~}EZXc4hR70z^W${iEO
zZXc_cHX?Z_{J`6;tJ=sOst@>Zk
zh*2kihXizIm}hbQ<}TI^kvv|wdulRYU2-+^%b=|euF*6FwYCvKJL5b{bRDY*R%@+(
zfu!uo7I<`9J`|oItF=g7+0YjIOfOHFrsu}6GDPZ1$qlsxITU1iG(h_^a#`NXK^ryU
zmjiwr6%~~?)bXh^_|j?txY4CqO45^>e(6P54^Pq|zQyh*E8XGcxCQeGjNj>&nmR3x
z59PZCa{X-fOH@kzHPVlfh>c3QHc-Y)2D9XG&V)Oelk9Yp`>K~WagH~u9JRo1qKvz-
zJH+!?P7V?bq2Z1{qk{cR3*x1fWpo?D1Wiq`&IKgB*6!td|A>c(XNp*ul+0M!qQ!EA
zBIM0}x!lB}=KS)ct~AT8x|I~I9iQ0no#A|F%DE?+J!kDQ|D;`yRlX}u)gR1Y+3VlM
zW=Zf`*FG>C6GM)?Xiujle-nFywgfb~xX&?M6nrQRJ$v31c7rBGx*@vMWM69J`t9u&n1
zH}ezQw^07E?3b!!qsY0N|2F^BEsO;C&Rm)9$vL-PX$z)Jk(RCRGstLltGTIZr}ik1
zzInQI-OqyBx{kmod$|yPLbd)<8hy6fy)lWDr8dCGRKdf^XruvM<=GHu^yY$Mt1bNQ
zwOjap#a|GgrQE{;(<%P3(mky8FKEiD@R>vJVF)Vw{8vmqzU@_ntM`pTN3xm8!P$D=
z+`INR5_$SW;*!AR+E3xOzpinwiXK{I?^ffASKdpJu7|PC9tc*OAV-Jpk6x1rYC@t$
zvC`KL=n|C}0;<}kPuT7fOlt2#)&7DCvoDfALbr61-mg4S`KAb*T$S*$LyqTP`0G|Ufa~P;U4IlfMKQ~Xf~oo@H8)~4x~@r#2;2q
zr@z5^kT2{-A4jE_F!FxSvN%yJuc-K1y>TE+SIZ_SoQ*Nn!E_wNL>U0=lf66~
z&(U|CkE;u;8XD>7omgr2
zzd!iF;5vd+Tk`5JXk+RqEb1>vRVS|a$kTCrK@HDLd`b1Rk9hR(BR=uJDY5WKO*v>T
zL3iI=1}-V&iX3*x&Rz4necojE=iIwZLPZ-K*y<-T
zJ)Qx0_k#P?wg=g1FIZ1MHF3ljC-ZN%9c%EJ@nXf{@oR#JE`EnMI^Jb4-Fm&fZVU{M
zVQG#X$Tn+^r~S!o>x@Q2=T9)3I^So?kp6%^b0<`4yb^Gx-%{V!k)TGDYmbxa8CxV~
zLlKti5)i_$wgQv;UMnetl-N1)*;nzP9n)&kI<0`PIqN3L9^_^GeE2R+HmA`_9AB+{
zDEOgJx!C9WHKwP)PFZ4*LkF8icgyT%rkdg6jQq3q8*(3x{!`YE(?2LnbXCQQODLY<
zQych_@#(P<0M^h2ihV}HD+M>?FT&;hAj3CBYHB*jO~LPbR_PwLSWkrxfBH~Ts8@sc`J%jq6nN*~s)r_-IEsUJY-7fd4tA~I3
zGRr(J6NEjuh8gr!>YZfbTM^xzlKNuZb7%ImMovo;oTQ?$d^ezq4evF=)4BI-!
zE1NP*&s7o+JklR$?YWo)-92eIX?o*d?i|KOD(^JtX#88*4kflep~(4E2K$Ob1=IC}
zW0+6$x}h?f=>v7G&V5GshVn_-_waMwg>elr858#rRtAlBq-OLh$!FoECcBGYUB-Ov
znjN;Dq4U$cC+x^S{Bu#`p*HIwWG;u#z`tnvvGwCCFU3{|!LiDb!%q!~{@hJN;(Hn%V8ZYAtE@@<^6{gRFsbaG5<;~K|>6-A9b+_VPsyEQ7G+Ck6h3_Ycn*mam6f6csFqM$0F32eyfp>1g+AC$tez_!-sd+see02YD
zTuzgTZy9Hs;a!kOf;7?215w^86IsCF{HR(q4~h7z8F$dyeV^AtXJB|V@I$ko3Ew|t
zx+gGf3;VI`x=II3M9$&o&wz(je{~|hHn8O4x}&LbZL>_MzKE?;KJmb+ms`qHfEvk&
zZd@K%I4@S2T4=g?_!96_#P4FlcpS9$P#0P*oodvEzQ@}=my9AE>e9rdO4b!E&)g2V
z5*HA5p36C~1iW>ZV7jq)(wF${kUV^VL8FiJ9PLk5!2d>6iA;*vI3|u`o+)b=@fMWR
zWrq*NN@bKQ(>{5BSlJ3C3YB`8_h=<(7T+?ygk}x-qZVHh?xtc|m)D5{9
zncNGWFZ;c|79eSe9BCxf#@G!~HnuaMmyDIryY*DL(ROWre8$_L3DC!KN#-XGMIP%b
zl)ATBtyrZkN4G7pYWhbz~ENPyT#`}%0B0rzN
zu&Ru&ZQp5NgI}RoTk7W1zWyM#2#<2Db((SMCKlQ^52Aj!uT0|bK^20#>jnd*4yp&=
zEjKMBk6;bF)KT8hsVeq++D07P#XToUfpj(3)yT+@$I5$tSFe<(m$bR#x)Sbugm1Lh
zMKgQnRs1Q&nmRY#_S-weFk+bujM5mXERYU5Ud=Dt3ra9(ODuW@&zKiXaqHN`%(3sX
zg5EfEf{`+P)OTp5^8VEU(F`^82m*sk`?n+l6J}P1>4tORO(J&@cM^X==D-7aN&%Ns
zm_ajhKe&%pD5kxlw`>)-fhWB<2Ju6I8yFGMa)=2_9QvZ}dL{FqxI+BUT>wm{Z*}0i
z(rf`_#GpOg(iPXIe{`MZZOIJ=we?c5&6+K6hd86hgQ*UTft5M%+8<)N&+hP#(lC)g
zM^m78$W_Lkq4g?8Yy*4B>;>lqn3A-XeQDJ^CQw!>CkCejr66qbn5=7UbsSaki-L<1
zDMAoyU@;qcSGo=w@vf4rYQQe=Wflw|YE1y3z8a(D0Q&kUUUxz8b+VKbSIPo8sJr?J
zz3->wc#saCvXV3qXE)9lkFCJhmHyin@Vng3fWS;MQ3$XgqZl$_BLPJYN`MXpXX9)n
z%%Jci0}5_V($s&*IkHi2DRoV*igy8pqm}Z4N{dqaXlrV?JdEGWi&($7Pr4oVb_5uqo@TW&ROcZ;C!4w
zR8&&$#@f{&f+CNx()_2Tt{aoHW;N$6Qfn@bO9
z{Rn;_$yl#i%q5!v|as!
zO)pM}3{OF&q4s^A@G@fG*g)h-X`0jUqz*(4s<9P4u%yK*wy$?L$pdrWs
za%y?E7@eV(U-T|-OPtS?d0QAe792?!Eltk46AT2*0=y00s8}iTT~ynDdcsH==ywx6
zJL-LSFa@)Cx7JCi!W@Gg&ZUC6RTm<$9%b7UXzS2oom)NaIujyeck-j-tKv(zC)lMQ
z6-38oU;f>>>39hZt1ZTU|H+Yw|4VZN7E#+jiLMwg05+bG39
z8?(g}Q9TV+>TA9kT$*H9s@cA6Wx<6Lv13PAD99@{Y1H%_Vw9#)8{qn
z_>=pHtpxWj4!)On4w&e%TT6+5+uy}McP`ObKmXLbcuhHAFxbVkS27rGFbP|2%_qNd
zSkQU-US4!JLS3O?t6hSac<<>Sjd*)81BOseTbpI*be;;+JI^qJFDvBPc
zjvkNCGE@-svt_|9kdjb5e_nj=0Bd-;o1z*I
zp;?uxEJv98-1kod7cWi&`Va>PPR+ROqATt3KfcZ}EMeZ26^@6DJt|VzlJ+i>NU9F@
z=>M>!eY|W)%=(*5d|vXPUPCWqqTcd@WVBi9@V3zC+d|BxG={)&H`l5$TJ&w^vPPJ;
z@%<-*5eZEl!bk4wbX2}{fk%el$gZ_7dXCJ7Dvszs8ovc-&GU~E_HH7h)OL)GLjf_P
zJO^(B&Z6CMFv!cOT9ESyO50mAxDqqEn1u7?jnP}5;ldw`{!JWn?XP@k$S@aWnW;Cv
z>v^9Ie-!}0NGYdoc9U%(r0J2g!nC1IRbFOPtzGT;kF2>EU*1Q*-6qQ5N?25OQS`DvqMu{+Z_LMinj;
z&oZ!mQyQ@o;O!RbdAbj}lR>nlsQ_*523bCk|k5w
zx1GecS_#2MDbR#BL_o!T&^I%!BlGu37b@YzND%qkDKCp`-=fX)Stc$Wm<~sBfeKk|
zVmgw{^>GOv0UIaSL%
z95dk;ax6?+`#HeXsHN`OZFOZ5;~VvOP~C~F0W)2C@SJ#JyPK~I@W^MN6Duy?FJd@q
zlO$rGGMK6LH!~f1x{a0Dl#r(B#zIWT$<&^GSj+Ro6XEQ@oY&XdX`(4||5Da(n?TC>
zOe%7Od2(yY-9n7*oywvHbnDA7$DkRBY%j&mjrTbD#~QxPl=#AmRLqm%r?DpSJF&
zOji`?mpQ1#3L|hlgZzsy;QWNnE+*zfIh&4J(1&Nc#ytdQQw!?f8~9v$-irYR_z{e3
zJglKrDspsz6et+BC*=$~Jr%tycofM8#k>GIn0_HNbEly$i+P02|U@(3Tx2;;0>mOg<3je`JAW>{zfCeDJ
zX!#~ke6pZ;&+`LC)E8J!5r&@zw7_a6RRCy&F862_=sowC#AzjE2y`yk^`p?35I2!8
z6%v#PpHfs7Je74xONbe)$ga{FN(dnOLUSU6jCJCOJ0!I
za#;d8#OPErhsyRYiZSf=03D_O6oU%;{r92Un+!o`>ey?6*Lpcq{4j(@!+NsUO!`B(
zDlJy$YctqthLYrYi5X*TzKISY7q&<%Mm5KFf;X|YviMd`K}0HK*^mO3D0&dDB}%jZ
zQfpu<-7b}wyctaccble+%m_uV!@hl(O;_-kKJmW1oA;#`9kwzisq7j7ftBOFIumd2
zIDK=t%g4lFPaBD2fIIj`gsrLSydyA^BfZ0ksBw;yD+8QgGQx^rGc64$LdL{-LKJmU
zcnuhVusEcxQ`9k1_10$LYwm1Gx+*Cn^zo*LtnI|Z^rYiYbJFq%S=Yc}p%BBmULnS!
z=_gAXUJI?IDQAvAXoj%LFs2oNT6j%{h3*~FCF+}P*yWwOt(~Oos>{QBHfYVlso3&{
zib>YGg#{v1o^G~0=oM!?Jc?S)d5`s$5B%k#5R~r&2h1=zzeG&Tw#y}THKuTnj-WSq
zl?_arIkVTyv-{dZik{+n3H^!TcrTUFXePBF8n_$l3W5D^w92DefZ>N{7Y~T_RhDrCx*QpG%^aAtgWUaf2*Tr(=R;f}jwa3djkqS8K
z*h&ifM`|NOhh6D~P?ilH?f?!T(|1p>;VahqgO>D%g5zaJ!7WM0W>qbIzC6CgcfHqf
z0#Om!ILlzc*K1ZpT@6K>)SOpSdGKZ`HYQ$b!76fsgj?-IoO>tf&d>NbK$Dha1@iSB
zrxHK9-+}k!+U7CV3gAZae^frfKfVGBpep{8?X2~WzxOREW>6Q0(+15TlP`eiWkPOI
zz}$oNAFkv7ksAMnocz)J|D8L9|I4}KIxAzR6}~S1eF==AZl!tOnAkCi%v2iiAdTb=
zTlsHmk7-V4sM7KG-?sPfFQ~qM%5w#A6HNE4Gh~G;u#gajv|7Fl5O`3RH=g{%9eytU
zq(%8GpIH64=8thhQ`=030;czHd6#K}4`xnC54&g$cu);9jP3i(gi!oX?oFd2?Y;tU
za^il9ETy1KgcU&W6U-dXH~Oz1_)Y51E|-iqL@eZW72J|q>Rly{^=Dt^7T+0U@_poF
z7U)f6^#xmb_=Y5fwy13Io$I&B=LxOni+mQa>>H}f;^TTvp`--CFKl&r&*G8F*Py>3
zjP0qYBtWx=Tx5G2STjUZT(JFqBl&JUHwYp#hwzSu9hS)q8;?dI-T{I?72|mS7}zFo=-}wAy@Y4@OyXZr^`Y>k-lb&w9F{~zgHK&f
zwDq}068p5(RCKh@w+8?V!0Y`>-h&9*rXcXutlr}w?zy=#4cB#UIRk~uS(eP-s_`}rZ=3(-HJDtixgd+~O)i7&m%
zcnV$<)q0A~p3Q#)e!Oa{;63f
zmE4Mrr?`A#@6j3MzqIdU(OTQ-TC(ZA|A}^!&z`Q<`OWgBhU;f-_RS3`$Hz8l
zp`3gp2vM4KQzyu_&2Hsf^OJH|O#1<#GVG=l;f6z?BbSxIO?@Rl3X)T*))rEr(<>Uv
z`u5JXPByX|3UGngBC8c#wpOcP^|6*v5=Tf5y#*Q2jzpR)_3Rcu7z)MtZTuAJHOyZ?bVRS
zq|(2j2UK9b=b2WLwZLIR$2K+%FxK$YygV!-`eOdWm1@Puq_m5Lhu6k`D2SMkL$AfP
zdNL^|T0X7C67ET0wmdwq=KKIhVZwIWxTU(XFa8;8yQJG|_nl$nDZXnH%Z|Kxy
z9eb2sA6D(mB8Ly_D<$H;+9-<`TujD&|MAJev(o5{ChQV7#*bLdx%*tvYMs?(et*e1
z_R7iIi(l)eRauXQ1@ZpKLbY|=RrvCc=CZ0ygKlZx1`5r-_VJ1{K}l&E+V?qr{oi?Z-7vtXpR#*fBr0zu)d|
z-pI$U^!W7W_K0Rp;c|9vUt0z-@
zn*YVo7GIxGsFy(~JuwFlwbf)?>Jx@od4x=}6Tsv*)-(m0LwlWg#Kv?Z*O*iEc&
z8=bx4RnR9EHg%23YueSw$X4ie!f7KAGkRDm*3{~}V1IJZb}903N3;4`GHa|ydW)R*
zY%QMDXw>dGpJJ`=3fsO-D?XYEq+J^Sp`N->Gq@+fV=l={Go3M5+$
zPQbTrl$ct>@aCoS>_(#6B--=H?o1zf0CA8SPUKv}WQ-O;r9b$Y}w{
zc+&ZuKasf}vDaR+61vbsgJ=86BPylII&Dy~#JHjTE8ZRXKHKA~GjiO>gY}8Eh1?Z;
z-ue^hHjjhi^3xvOkG=T6pe}+3abs)njaODA2Qk{H!V3=nLcrxe*>f^?eJ)_FRpF%*tC^G`=
z*IJB+Y9uX2@7Rn0`MM$jnAzW1A=l{}>%GVRJIkC~ki#&oAr{O0vOadBF*un^v|YbO
zVBMe%k4nDx3+q@fSt%ODrzvtDugb6%?)3%vA(eKE_<+NMR!KUViwYWf|6AEM^nI_e
z#mPqq=WO$ITbSDpAg{M!Y7Gj;3(mvzehO4y_9YWbV6AP<=LD|k1sm-
ztdefbhr-$QOk$zy+iRar-)qlUNWA)o_LDd@#nZ~3qAnwG1ixmlEkc8;<0|4w`!R5I
z660QV9VZ(6rA4{&Q9k$=8KR}xNp!J&p!}o{7xAU>TedhEFhKq6o`4h{A(FQce=RCN
z{1$bWSOQ19-n`*8X^QD@Wm6~ReJfUh;~|NvvxgtL8Z8w!W{E
zorej_!p?AS-#pR-;?{=xUr=Xs|6dT1QPr9AlUijL&D9a~FDN&}=a-J4xr#X5uRbGu
zn*~?nFg>TLc&U%Yi;!h_l~$k7i}4TK`$|l@Aun(>x`|y
z`yYeF@cx1fj{Pr5nbprePTu|Ezf?T*1pbMW(0>L^@{*}CqjWcG_Tov#h*`WPTrzF4
zd!1tTG#1}~pclx%m|1MUC#%eV0(Ds2Vy|14OKuz+!?XLrj4w#CN-ERDl>dV0iGlcQ
ztO@*J%v)=&wa&hfyOn#cHQzmZb%wu?BIX%jQn@afEaW5OP5sR4VT^S`LfA*N@zglt
zn1el=Nv0)k(3UQSew2}SFJ^hRlDEWq9?SI=l?O6o#R0j?yh0v-^0*eC?o#azO4PProrx@
z{Fm^oM;O(~nE#%N*4IU{3qyf#bO|-gvW7+fmwHga(<~WG`S|{{O>*aorQbp1FKE8z
zNhS7AL+|5!i(PBtb=l5(IG_!Zwx{VN?&-PqmAFh_e{IqrOoUF-@n(&yy=!~P9-A$J
z{s^rh|7--Le`v#5H>F*f7ejC<7_N`9Myj7gA8Ep*Y7=`hi8SYxUl!FvQe|)zw3ht8
zAzCP1D+~QCvhaSD`-q=u2UiNGsaMrHQLD@J>@Iv``q_D}1xZt2DlEQ(ed7y_4C);v
zx|})uy+_kkN!n6{4%LZ=@i?}id6FH$?vhSf_w47|pOi_W+mGs>!heKr{(_D?5^QiH
zTRqX%HBPor(#n}=TOKdlGXn*DHV%&ZS>$cx>UB;YD{@n>rd>)~AbbfK2wJ=7_)eqc
zsdZq@+u8b#W^TerWc1NfkN-FKH({(0qN>q{H;QZOBD+1868e>8PrQ(|T?yh_vD?DY
zx6O4dXwjbwbyEcsgkJ>?^!j`^R((RyoGY~u`~`jXzm#V_?96nlJe}X^f;~2=rYc@ED
zMbI%z)oWppn6wR-d5r0r!eF!gK-k?
zY+u}j;!^UEjJ_;y@q$fTq8<)tJgHNeNMvw5KPr_)7t2=tZO)ob@JWUOikQWg1;$Da
z|NcrH*_Yc`Y2+sf)Y4PwRy;lV{6|_rSy_S$DF&ju2OqoGX1&*-i#x$QGbEV!NzR_|X{duMqHi
zKN#9{?{XONZW>r~_p+HOl!j_LFGxl^Oa9aGm;RrQU+_OVKF$B=_=&)vLN1ub{M9zOJ1g}^
zY!dRHt)qRRO5)qEtHX*N%XHt~OeV72WT)e%m>qWCM{4RBen$Is+W#2U1o`6&Xw^B9
z_t0xt<7qm1Td0^;(f*86D#N*2a+e&T9obT&y3Mvf7W4_F)&hUVe?sCSSW_GNbZv9_|+2Y#%fFS@AYDJeTD
zYH85-)}8-gEF{10z~ldBk{^4K?VtaimtaRFrSfV!`9f`le+}mclSYG6Br(ZV|2H#b
zKKh8-(U6p;r>dL)SXTJTKs|D7b>6d23wwzZ6GD}#HhZHB;3sJ#AgiDv!GD*of^*5#
zJBypT<%<8x{;&jtCS;l3vVCLgb<
z74>TZiHz_w3hCNNUfKsumD$5$cY^zO?0s(S|FXN>|AkxsYwNQy*0Cqa1H1!&qN~QE
zMZOo+`Y)-jnYI3cVxL!#-#}V_>XKh0yj?TI2BNBxm)r8h<%R7!iM$cx%JccA*ZBot
zxet>qL5cO@9pM7gBj`-lnO20caandGp_pg()M^DP0R1koE$c)x@G+
zSjpS~=BztX2J-!~()739Z@nHgxu_axRQP|2%a2O;G7AX})855Mtp@?8c4Op7okH7*
zfYnh_tct+;S5PWbd@l&(jfmg3QWQUB)(glF5Z?7=c`g$>8mX0zldh$xm3Wzxjdk76
z=Nv!lr5WcSyq$C=AGFGYhH`3!)(wDK@5ekl`H-a`q+|t5Mb^?W?#|Me80sD%*KEA{
zHGAB}+n}3)Km*P*E`!K>`?ZJE
znVhdB$537sumW{;AsY-hW
z`S%Zewt<=O{bfr3+oXl&PpN^^g#t-s0x$)l*7mvM>xRzDa>69OG#S7n|Ib?_4~Drr
zuPM>So);v2IIj^kj5oqSe)>L-G_ogWaFlBwOFND$V@#jCPfgXn4S}9>aTv~TR>e+@
zg4R;DFDXQ6iB2r6?CPaj&G-r%j--^4BQ+`9mOhE2!s|bl+Qz!YXuPZ+$HGs2J=W6;
zXOlh)PwSYoWjptpTXW|(qP*D1w6V4#78(;+6>lu_)joZltl6$z@X1yoii!xD)%#X4
z=na&Ax4v4@mcE%EcdpmCrXtRJ*W!qc
zvft-Jx9ouGB#nxhRUC-*ZtHk*3|4=&eRD#KvuV>
z8?poaQF{yP%=e|oCKC4LA1!>bX}*U-C5%&sdPU5WU5-wVUK9DMX`MYUhUxGQ)^U&i
zwn=Ee4YZ4^iagk&1f04E-(OKJ=ustkxx@?O1-!i>qSI$ED>dV;CWC+T`?
z(ph7=TCMxeXWrFc*v{#4-Kps*?*anS?_0Y06Lj{04gQRZ1=6wwdWM+f9InKp$X5@)
zmTTe9;R2qHjn^0bDx=>t8*9b7WzNkfRR(LZHWhmuQ-aRO4X^iWpuX`K`s?Ex|8OrLCDZag6U?}14pW!A3t)0+3
z(a-naW22YI;5Dq^t{Qgt&OAGPFwlQMP2BDi9<@F?qe(C%C9cH0{peIT12K>JjZ4oI
zd0j3cy~za~5uH}nmsPAN4kfhW(6&8FJ`~aZt>QBtBmvj!)uHIzbiFKf6uLME^@$>=
z`^ZeQN?VE)Zbie@+dr>gU5
zr|n61MT$I25yL}>U3>zeiLe;#(ipUBmAhLlN8#fA73-#qCUhBN%2vJ#@%J7nkh
zBf~!@$+jdZXebUK(gJmXo79C}6Kh_~Fo%F6s!^34zCoCwidifp-)fduW93Sk*?ZZr
zH~^mj!J1WKxXYrYI_3>f!?%8811(d^t*enjXHyhDGV)xfh!yM+_{or?WLF6Ec}Gri
z0HquMmd>|!`!m8=GV^mB@sf95x^!^%+n8QdTDhf6da0`Ir%xh3PZ5v8pnbI7IO#sq^s+S1EuCKiiB}o=KV}m
zHhp6H9y59e!jk*920GGfM@|5V29ktjTAzd;J)ZQb{QGg;{CDp+wzSv$Oi43!6+xeg
zk5QfUAZXfI%o1_XNp52t<+FLlNcj{Eh+>Ra==}
zEuTX_kz^aa>$C#!j#8nWTvSfYWz(!
zmI)SLZq`sgKZH*8BC@K8A@gng06pALzu0y(b+Zt3ErtkxDman#^t&QIZnQJ;^i9>uX}N7v$O_2QA+rp^KWcOKRe-CTIk6ev0aa@zhovT}
z@r6NLqG%V`WR@SrU7?FECn^ru<_Pm!{{^XrKCPO+X%h+VwOF#L?i$<+0%(#Muc)<2
zKEv(To$V>u>H>ln)2AykiazY89JmvXQe;AYbx3@#kktt?`LghA-#b=i|B1rdQ68nq
zcOOgg_2}{sE4?!`QCOnYpe@crE(ZaP3&zEf^P4%gZvyc@>zTw{XhOW;{pnF3qluv6
z=ww704BAz{2VDq$eY^k(m2EIlz1^a=9i;;$rcVR_klU3r>S!z-2uB)EE%v~hbJk4S
z7}2NPruE4fPlfIP%5Q&IW;+f#3oGfLCshcK5~*r1fXOK2DIg43>v71vlsiF=@1F5K
z6M4~|D4&m@WW~_6jf|cXA%&HTKQH^oA*3H4fD8
z??q^FoHddx)lUzD&I<21=65WlU#OrxTA5w%sdU<{yVDGPD`%48o=(rEvDP7%*}xne
z$j&M$yxf~kvY<}ZA$d!oC@a;cMg?xn@z`ZC07U`HHySIELq@&Es=Xv2r3)5*KR7wTNQ7(l?
zyB=ce(N`#9NPyvUQso$kN3k5|xnEL-qK2&7qByDnaKztrX3Xp6uW%+X+d$L=^8p
z1&Pu;&M;h=a)a;i$t5g6YG+Sf29364@G37Ga4WC`!?8pup9s^hX)-`UnVu)ZV6wN8
z)GSq(^p!<$A#WTtViRE{l$hJX7cI`|6CLwBvx9}JFO&)zFbExxM)}HvaD@BIk-W?%
zQdc*TRE}_^Nw(*?q?yWvTn@(W--14GUhF~abWtUf`781)W9ds!CSnAFz-_2B+?s@0
zF;Vuex@SRIzi4fH;bwNc;q<~
zbbplEi+oSH6QxPfO!$JLX!vqZn%1cWY57~5tXq!6E=q#P*t`s-(uNqq0T($?7HJX-
zQ9O8muh~QuW)fwVPQ3#ojXE1`EMT2eru9M)bsPjg7B?K3Fg#!Nep?Vs&3jqE1|hp1
zrf>^D8b(LAW(LuurC$Ra!XO8AQO#nMOn(f&MU(jc&*MX)ZNW&wBaTO^EiV0hPw2ZW
z+!+lA$`zfCvI0(0!!Jo`al9w$E{26dOq`SetDJpea>&|cjsni{(`ERV)i~iJ$R{w<
z&tn!)Wd8jN-aruQYz=^L?ofTSUtx>#{loQKyueE
zab0c+QvyKH3hE}KnT9z@A*cKCtzrr?MH)fS3_OA*9^Bh^{p`g)e8fYQlx)Y<^pD!=AKA_3r~h-3%pj?My5
z;KZ{;>?6$;Iqsn$5~d*W;#Ueh8%%Ios?@iB(6QJpz$^{9P@jGR_F4g@xPvq|t{gfN
zrh?5}xC1-jp^~R6k>`$(XW>i20z?HAcEaFtb`Xkrq-^G7`q;A_m>#4n=|4Pa>ehb_
z_82T8>#8IR%`_f~Q8S_Ikyf*6233A_5l-EZ1W)z{zOyg(1Kc#_+I*Ukvf`?1^?jHp
zSXSk^HriHYyEqtsGL2iwGjo(zW1)AE{NBbPA}!_4Mf