From 83ef7bab6c5bee689b16f36876b2f955a3a5c048 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Fri, 3 Oct 2025 11:56:55 +0200 Subject: [PATCH 1/3] add frontend ng --- .../src/app/forms/edit-form/edit-form.html | 1 + .../src/app/forms/edit-form/edit-form.scss | 0 .../src/app/forms/edit-form/edit-form.spec.ts | 23 +++++++++++++++++++ frontend/src/app/forms/edit-form/edit-form.ts | 11 +++++++++ frontend/src/app/forms/osm/osm.html | 1 + frontend/src/app/forms/osm/osm.scss | 0 frontend/src/app/forms/osm/osm.spec.ts | 23 +++++++++++++++++++ frontend/src/app/forms/osm/osm.ts | 11 +++++++++ .../src/app/maps/all-events/all-events.html | 1 + .../src/app/maps/all-events/all-events.scss | 0 .../app/maps/all-events/all-events.spec.ts | 23 +++++++++++++++++++ .../src/app/maps/all-events/all-events.ts | 11 +++++++++ frontend/src/app/pages/home/home.ts | 11 ++++++++- frontend/src/app/pages/home/menu/menu.html | 20 +++++++++++++--- frontend/src/app/services/oedb-api.spec.ts | 16 +++++++++++++ frontend/src/app/services/oedb-api.ts | 16 +++++++++++++ frontend/src/app/services/osm-auth.spec.ts | 16 +++++++++++++ frontend/src/app/services/osm-auth.ts | 8 +++++++ 18 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 frontend/src/app/forms/edit-form/edit-form.html create mode 100644 frontend/src/app/forms/edit-form/edit-form.scss create mode 100644 frontend/src/app/forms/edit-form/edit-form.spec.ts create mode 100644 frontend/src/app/forms/edit-form/edit-form.ts create mode 100644 frontend/src/app/forms/osm/osm.html create mode 100644 frontend/src/app/forms/osm/osm.scss create mode 100644 frontend/src/app/forms/osm/osm.spec.ts create mode 100644 frontend/src/app/forms/osm/osm.ts create mode 100644 frontend/src/app/maps/all-events/all-events.html create mode 100644 frontend/src/app/maps/all-events/all-events.scss create mode 100644 frontend/src/app/maps/all-events/all-events.spec.ts create mode 100644 frontend/src/app/maps/all-events/all-events.ts create mode 100644 frontend/src/app/services/oedb-api.spec.ts create mode 100644 frontend/src/app/services/oedb-api.ts create mode 100644 frontend/src/app/services/osm-auth.spec.ts create mode 100644 frontend/src/app/services/osm-auth.ts diff --git a/frontend/src/app/forms/edit-form/edit-form.html b/frontend/src/app/forms/edit-form/edit-form.html new file mode 100644 index 0000000..d229b21 --- /dev/null +++ b/frontend/src/app/forms/edit-form/edit-form.html @@ -0,0 +1 @@ +

edit-form works!

diff --git a/frontend/src/app/forms/edit-form/edit-form.scss b/frontend/src/app/forms/edit-form/edit-form.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/forms/edit-form/edit-form.spec.ts b/frontend/src/app/forms/edit-form/edit-form.spec.ts new file mode 100644 index 0000000..85be311 --- /dev/null +++ b/frontend/src/app/forms/edit-form/edit-form.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditForm } from './edit-form'; + +describe('EditForm', () => { + let component: EditForm; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [EditForm] + }) + .compileComponents(); + + fixture = TestBed.createComponent(EditForm); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/forms/edit-form/edit-form.ts b/frontend/src/app/forms/edit-form/edit-form.ts new file mode 100644 index 0000000..670ed6b --- /dev/null +++ b/frontend/src/app/forms/edit-form/edit-form.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-edit-form', + imports: [], + templateUrl: './edit-form.html', + styleUrl: './edit-form.scss' +}) +export class EditForm { + +} diff --git a/frontend/src/app/forms/osm/osm.html b/frontend/src/app/forms/osm/osm.html new file mode 100644 index 0000000..199c0f0 --- /dev/null +++ b/frontend/src/app/forms/osm/osm.html @@ -0,0 +1 @@ +

osm works!

diff --git a/frontend/src/app/forms/osm/osm.scss b/frontend/src/app/forms/osm/osm.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/forms/osm/osm.spec.ts b/frontend/src/app/forms/osm/osm.spec.ts new file mode 100644 index 0000000..dfd22a8 --- /dev/null +++ b/frontend/src/app/forms/osm/osm.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Osm } from './osm'; + +describe('Osm', () => { + let component: Osm; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Osm] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Osm); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/forms/osm/osm.ts b/frontend/src/app/forms/osm/osm.ts new file mode 100644 index 0000000..9d27557 --- /dev/null +++ b/frontend/src/app/forms/osm/osm.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-osm', + imports: [], + templateUrl: './osm.html', + styleUrl: './osm.scss' +}) +export class Osm { + +} diff --git a/frontend/src/app/maps/all-events/all-events.html b/frontend/src/app/maps/all-events/all-events.html new file mode 100644 index 0000000..b4c39ac --- /dev/null +++ b/frontend/src/app/maps/all-events/all-events.html @@ -0,0 +1 @@ +

all-events works!

diff --git a/frontend/src/app/maps/all-events/all-events.scss b/frontend/src/app/maps/all-events/all-events.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/maps/all-events/all-events.spec.ts b/frontend/src/app/maps/all-events/all-events.spec.ts new file mode 100644 index 0000000..e0ce295 --- /dev/null +++ b/frontend/src/app/maps/all-events/all-events.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllEvents } from './all-events'; + +describe('AllEvents', () => { + let component: AllEvents; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AllEvents] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AllEvents); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/maps/all-events/all-events.ts b/frontend/src/app/maps/all-events/all-events.ts new file mode 100644 index 0000000..6aa689d --- /dev/null +++ b/frontend/src/app/maps/all-events/all-events.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-all-events', + imports: [], + templateUrl: './all-events.html', + styleUrl: './all-events.scss' +}) +export class AllEvents { + +} diff --git a/frontend/src/app/pages/home/home.ts b/frontend/src/app/pages/home/home.ts index 77195bf..8e7d855 100644 --- a/frontend/src/app/pages/home/home.ts +++ b/frontend/src/app/pages/home/home.ts @@ -1,5 +1,6 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import {Menu} from './menu/menu'; +import { OedbApi } from '../../services/oedb-api'; @Component({ selector: 'app-home', @@ -10,4 +11,12 @@ import {Menu} from './menu/menu'; styleUrl: './home.scss' }) export class Home { + + OedbApi = inject(OedbApi); + + constructor() { + this.OedbApi.getEvents({}).subscribe((events) => { + console.log(events); + }); + } } diff --git a/frontend/src/app/pages/home/menu/menu.html b/frontend/src/app/pages/home/menu/menu.html index 77cd4bb..c7611ff 100644 --- a/frontend/src/app/pages/home/menu/menu.html +++ b/frontend/src/app/pages/home/menu/menu.html @@ -9,8 +9,6 @@
- - @for (oedbc of oedb_what_categories; track $index) {
@@ -63,8 +61,24 @@
- (bouton pour exporter) +
+
+ + (actions) + + + + + + +
+
+ login OSM: + tykayn +
+ points de l'utilisateur: + 12 points.
diff --git a/frontend/src/app/services/oedb-api.spec.ts b/frontend/src/app/services/oedb-api.spec.ts new file mode 100644 index 0000000..1b27c58 --- /dev/null +++ b/frontend/src/app/services/oedb-api.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { OedbApi } from './oedb-api'; + +describe('OedbApi', () => { + let service: OedbApi; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(OedbApi); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/services/oedb-api.ts b/frontend/src/app/services/oedb-api.ts new file mode 100644 index 0000000..78d92aa --- /dev/null +++ b/frontend/src/app/services/oedb-api.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class OedbApi { + private baseUrl = 'https://api.openeventdatabase.org'; + + constructor(private http: HttpClient) { + } + + getEvents(params: any) { + return this.http.get(`${this.baseUrl}/event`, { params }); + } +} diff --git a/frontend/src/app/services/osm-auth.spec.ts b/frontend/src/app/services/osm-auth.spec.ts new file mode 100644 index 0000000..136d935 --- /dev/null +++ b/frontend/src/app/services/osm-auth.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { OsmAuth } from '../osm-auth'; + +describe('OsmAuth', () => { + let service: OsmAuth; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(OsmAuth); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/services/osm-auth.ts b/frontend/src/app/services/osm-auth.ts new file mode 100644 index 0000000..764682d --- /dev/null +++ b/frontend/src/app/services/osm-auth.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class OsmAuth { + +} From f991aee8ed9b4b9f55065417edd21aef1ae03ba8 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Fri, 3 Oct 2025 13:40:08 +0200 Subject: [PATCH 2/3] edit form --- frontend/.env.example | 7 + frontend/public/static/cone.png | Bin 0 -> 175342 bytes frontend/src/app/app.config.ts | 4 +- .../src/app/forms/edit-form/edit-form.html | 114 ++++++- .../src/app/forms/edit-form/edit-form.scss | 46 +++ frontend/src/app/forms/edit-form/edit-form.ts | 293 +++++++++++++++++- .../src/app/maps/all-events/all-events.html | 8 +- .../src/app/maps/all-events/all-events.ts | 268 +++++++++++++++- frontend/src/app/pages/home/home.html | 30 +- frontend/src/app/pages/home/home.scss | 63 ++-- frontend/src/app/pages/home/home.ts | 55 +++- frontend/src/app/pages/home/menu/menu.html | 2 +- frontend/src/app/pages/home/menu/menu.scss | 39 ++- frontend/src/app/services/oedb-api.ts | 12 + frontend/src/oedb-types.ts | 91 +++++- frontend/src/styles.scss | 59 +++- 16 files changed, 1019 insertions(+), 72 deletions(-) create mode 100644 frontend/.env.example create mode 100644 frontend/public/static/cone.png diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..2d52cfd --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1,7 @@ +DB_USER=cipherbliss +POSTGRES_PASSWORD=tralalahihou + +CLIENT_ID=ziozioizo-sllkslk +CLIENT_SECRET=spposfdo-msmldflkds +CLIENT_AUTORIZATIONS=read_prefs +CLIENT_REDIRECT=https://oedb.cipherbliss.com/demo/traffic diff --git a/frontend/public/static/cone.png b/frontend/public/static/cone.png new file mode 100644 index 0000000000000000000000000000000000000000..b10b419ac23aaee5605731f620af249873bca01e GIT binary patch literal 175342 zcmYhh18^o?*EJj`lZkE4#I|kQxMSOx*tTt36Wg|viEZ<{GV{Fk|EcQgldi6F?e1QC z?X?jqCnE|AjRg$^1OzKCCZqra1Y+@ZKtTYmbV<$c0Z!j+#nc^ufW9Mt9l$_o85n?z z4Mu9>#^T}>Ku~~xAb^m7L4kk)tFHqK82s;91+d2c-&zN-Ci~w#Ab>S8$p3f0Suoh& z`;7tDzy8Dk$JajpcLtae0|^8MxI)K3PX`?PZw(CC0VwBx*Xil#fOG!s`1uL2Kj+_$ z7J#1u{r{~2TL1xN07zVjU&%G&tV1&X$5QIghmBwlAr%!=pdJ1z@Hh+~0;m|v zx^%(PwqhfO$_7lc;>Ztw7KS;I)zLf9yYGgprmU;tB=IZ^sgXp;I-3`$;f21dF`GONM;NjuP3oZV6?sSME^5r9Vg7lfZOdulqK#$Ga zo{OfS$ji~U)d`Cvm3(ug%`}9tgzh3U#!H?Nkr;KQUuaE>bpvFj)rMj2`eW}E2ajlWvSKq z3~i?4GMF2&wVDj)BA9crP1;PiQDQCy6~u*Hwy@B_#dm-`>VQ*~RpHMvE;wbYON{LB@EM%dADe}>BD%Ih*_8nrpm zIkvS`8TGb>TMyOPw8B*0mYj!=+ALnz0ywznySHs7iVo=3<6%5YX%8F88Al1t_D)hp z7kOryxCbE?mNLX05(Fr(VuZS{(;?JHf51jvW z()-O$))o!cN%LU83}x3`6375XVpvoKoCLXWjtPmoIZSL*Si?+;zd}P=9&-Vfr>858tu7al`scu6XWU-P z(zRDridm%OlJme{$Jo(#{;IqUv|hVxOthBdjU{f-`$*d8}VZyWS5D zn!Rri*P^}dW!vUNyKK>AbyZHw)#s`!oHZ*qR0`dSNDbO&XB4m0IBwN+`r@z#a>)8a zhQ0+zViFmkl3UjN!ABKu4sy&NQ4{R3xS2sv7e3eoE=?^oy($p8YY*Rh#SlCUkwP9x zLr7ALUb_}uS@pSRvkAKSX`h1$4X>#YlxGBS+~ijX7} z`to>a?n?Hv@-ynf`+ccr(pmbJ88aLj%&!_nU=iSCmtcfi=AS*Ek2gb~W8RQtJQgFIt`k1=W(%3N75`v99;i?COsT-473V6;b%h;PQj4b7duMBK}7vU%YFYwEDe{ zTnrd?@VUancP0{p965RfoKzvXR-#yYap^w0;j5H{n7v$>PhPng&L8eRwtwhL^yMyQ z$(XM&l*_w^AejbBvW7XQO7RF{Ty=4%kC^la3_6G4HiF!}3puLqxqs;nEj$#)*UxpW z)6jm-;p41+?p)!&kJxxLA7Q`pp|Ajuk@yeOqk4IBYoy+vqx)SS$)EJx@7tP>8%A>h zjS7?T0~gDlGVh);!>o+ZSSfi3u2HGZ(@apv7^-P93U_;SrApM8pb8L16U8aaQ41jm z+p}6I)q2cukP@-xu=Y#tVlHMdVL)&s_7zpW-#Nm1;v1v%`?Iuu-1rWQ-e`-$Ey-MK zqky|9P56DcR@owe#Ya!zruf(ucY(7r5yhL;#<^z7E8>$HsuQ3o*}gsSDUu#EK_DCt}fkgJ=vfL zVGW@_FzGYwW`gpq?JYJGIV8EaF_`Hf-Y;kkLsJCucZ6sL^qA?gi@#gXz0@9GX9DCi z^q#t#fA3-}$P~0tZnUMNtt+Nd2LeRhf#GpmmW8If)tJgo&kKKI7D)Oqt1% zVb1B1O_hy~b|1Zv-tV*@eX3qJx84ss9=flZ@=ISp_HBryM1TU*MO5mV8-xG6s0`nF zJLS!Mc9PU9=R7Hyi^>?x!eFA64dSS4_*srqXE~R(;))W6C={Arh{U@Kqs0ZW%cs!n zxugh$=)eh0pkHOM3o<}0zpQYl8MYBMd|x2AjmspNMs?W=zSrDyDo*iGFkG7o>|u)$ zt&bcfS_(7dVeyM68s%r4NGSv~0otZB;4w^;c zWgZzh!1WGExG z!ZDkRSHNa)msYX4wfIAJF9fmV>M5C)4T>sV`+L5x5vaF_xUnIhtDojacM#L4jxuMR%9yK-QrJur94m&*+h8cGu&csgBKG;+Q^t)n=Bm(-T#~223IL9G6~k^gC=X6NE!6F51z;*+A__R@-_VSM8}X7Z?bl)Sg(7 zVclt9Lc_ilM!~pOwJS27-=FL~ovKFjxN|;W_f0B%MP{Ub&czUL-l)#~ye)fouoEb9 z-msXtqfNKik7Zw*J1pXBhyetwpv9DU$26(X_Y-m!L@MRVGv(Xp4Hiz0CB$@rAIZSb zZ2N8y;vruN8!&pXTyX8hiC?g-=m42N{KoKjX0_#rnRt-WO2wV!W!a;t2FGy zla|sIiZixRtCPp|pWv>e$;nHzkDPxWb_Vy$XMk1C+v<0#olHb8o2wW{A%&$+&iCS+ ztaUHN{VQro84(!+uk}dewa!W{FM{SQ)g|s~d-8wJg#z~wF$g}qGpxvKQVyV) zQ4z-7co;apA7CxLjDXK9`68L`f`9eYtPjP4wsuo_zGzoO`ao`^jBf)UcfGlcJZ?=v zA)h0GyjiBi(h7{v>)fy7TB($$PJtGM3B^^-F})TesZkNI7)BV4`Z1p=awmU%sjzF( zl0*}CBZ$1D;tETl?WF==OX1C%w|MUegjv^<(V~DIV<1$fwC`Jb&fTQx5rG4KRZX)v<+(wSaztu-yd^isll1^bEv?<1HTu* zU>aliqV>j$D`;qqNvPQQ_{kR@UX>)c%+J$xN>x)E%-vu>Z?S(QMMpQ%H_`o_2Dd+aJja%&eq1UxCPMHOvCUnYGxr3>Uu6D;TZ~9zQC2) z!UtdtdMI^dKn%gE)in2h*^As5nbE9Y#@x#Rk2VJ3VUn42ZS z+~TF9P#LO=8!VEEA5jW>6*Gi;wH%0uah^x0I9=%ooiV{OyZOM@od!+YBz6(xZhfH4c;5bs`eD&=oX3wMxT1*3 z*0mRf?yOo*mnxduVNfH>0j{6sH|yuHa$cpGi>83*{+9!)7{?M#?A@zfP?ZEQ|SL=3KZ9CZx8mimm}6s zHmWMPVJjv9{d0bQW^a|8oCeH`EihGzS91=dszf92P35tC(F3XHkBTN(N#hEy#OXD* z4PFDUM6EpGdkNm;Yg0VCn^4suTro`&GXk66M!AOjNryLP#<%Hyxd;#P3dP@fS~U;1^@32@&B$op^etP2`}bNDX*g6LxGYyoK9um{Z*AJ zKcBP3I4&mNmzkYU1x^a05K#A&pq=-PBc6&(w{V4EN&fn%HU;jcTpiZm9&(OfWh@Bd z$u<5C6^`}D<~dF@yFFe-hJw>4w>5cXg;nxw9O~Z;Ak7qh=Ts3=7)Cso&^+@QVN*9^*v@$} zFrHze#{oA8J?UqpJzS`f??tc)^FToN$d@;!VGCNJb)Pc_1%_Lol2o#ruE_o&}4|9BZe& z@rVP}1-rh3$D@zB3NHukIF$nD~dxC@OU*`DaQ~Ot~i1e9c-CeUME=kWWuaw~;D&xAQW;i6} z#OUIE@gwow_x&mw9koonce&rvf}M&pdMjQc-0qwXj|X%L<9kx@dM)fZNhe01aUCib zl&nLGpi$Q)It)?b7QIP=b~b0(%A972c**VG4D38+Pi9w&{hr@6?&8pbL3*7V59GG) zP=sehJ4+ChB;~26Ch@fT47W2L6i#RWAOZRZ5*SpLRc)Skw8|=7D}(9WwZaG{qmeX0 z63LLZZn1h(Rr0$0v$9AqxTT*ctTxZ^9!CD+|JB%`-KdJXB*?8hx{w>wPGLf(1%^Zh zP@h-$CMe_6-1gAFftG2Vu8~JY*i!QQGBjw_Cm$h1nhohFSQJzR|E9I>989*bK_{t^ET$sz}n?v6`nlG$X z)24zaDVoJbH>dslJS>hqMIh>iVw}h@KO5knv^sdS_O=SJBpQBb1F47Xsi9>6~3#|v$*3jum+$jrojK%L-@ei;r@0Mc{+sO zk?VqO0MM6n1XwJIl@2THI4Lyo6%}gAG;%sGLr_fA_0nU@kcpKC@&lL}>CkaVtVrbv z$t=#r#fQlm^>S!JshlupWpw2l~saEr5!R7?zHMy5P%L&RItmnFG5 zNu;Cz$^UW0y;=pE0Vo{sUAYnb)z{XJdilLCt6IO_{>b(oocxjUFtRGMV;GIOB#s86 zR+TDT1fF%mHzhFx^%sCAv)=1oai8l_;w!|zaiYgon!)vEMX*Dgo5ja%_vXO$rjVuY-1Eco3VQ;k%(m`2#7rpQBG;Gm|xi#?#IflHjTryaX>K5WG~ z`Ns;i^p&x0W8v82ePJLsuH#F;u>Z?8tjSQ7&sZVtnq6;e2=nt*CtXnTcfXaeEQ?bP zfITtK#R#yHDW+PIr7Sbt(x|EHw^=1xmON4YY1qFuw`_gP>%r-E%K0f+*}lIF%kd-( zY0%45U73LoFOUzZzOSRu?@|J!YTAlX2}Sa~oLb$eq*iXp9hKGM*W2k>Z~|-wm2iaB4h7B02t;+Q`tu@r5|^+`n-qvs5No zHJn#}bltSYP%?~+W>!LsfVZzys!H0CB>Jxrge65LwZbhdWQ}a#(vxOC<3we;0aP`Q zqsBk^W^eE)s{i|3xZ(vCRwI!v)_$XIR#yuED8+Ve8+UDyf0ZZWKjpa|qHVG$8ohN) zJEcRPJ14hV5qOG>H=}f+G^}cGO=6$#hSIu(B`0hwH3~z*`Y@Dh#9N7#2-m1gphu`1 zr#}cf=DLQbH7eY8{o#?KWB}W5ujM4ktYXxTO>QnbDgxbEyp1zKU3&4N?*(`tZw%Hd zj0fdkP{kzdVgSUw!(N&Tgee=BWLa;a^nLDgchr|G80hsewz#!#^V1SJ(Biw2^ay)c zWrRBUgCAn`C#W4Wh#DsO`=UXDi_+kZlFk}g!)U>Wd*_q}eUXquQ!JKMMlNO)m9jz5 zR&-!dD4fMoU5w@~?@gN8ynA7wU-Bs8uRP*GS8^P+p}h>;UxAnIvUWV$j{Pxpj6=r0 zWLPIpz(C*kOBzo%Y2Q1hdDO96uT{8ql~`O*NmN~{++lg}y(u<=(35pZ6t*|BwWsgI zG{($wh>4Fil4s~CDzvMI)WsN8U#|OrPI6QU ztkivZQ+pkI3u8SVH^i<8ZW}ucLn9h(=sv&t1`P@9s#8X=KnbDJP8&9B?qNd%J{H0& zW;y4}(Sk-Mw1iZ%3+#P|s?kl#nP};1H`XZWy4c~%rcr9NhrMR}_O(o1u8_E9fL!Du z{;LG0V796gb+tD%v$@=+9LtMxbujyS%;)`y==H?i48(!^8m4YGR|{$~T^8&KIr3#H zaTyrPy0v0xOVqfJ^jjm5X2W8Bx~F7KbuB}aRydC%HJ7_g&LRhAHdTzna+(*O{fBUE z9>>O0jL?;v!ecVR4`Y}}?apCJJpo&KzrSzcRqsyj4f^FgrT-Ajn6O#a!r|eD)>J(q z%~X4tcoQ`YIlFpuk|JP@nMa9&c40+fhu>>^Yl9oZq;p*cYI_=MVg!OArZuUj_^VUu zb{LJZgXdF)R1eEN84+xev8&084H{|JYA4bYBb>{g_R2H`j}P+L4FJn zxFKr4y&b(|hFAGkXBkEPRCrZ(_-gc%LF}DYY{n=E56c2`N-pPL-p;o7{NcTVI;YoN zX}>rY>TgtL)H|h7I#YFaaKG!+(A`Q;)lml(uB5uqM4^F&#&qsh3mnBn^S@CRNf!(d zRe!10>taS}|95GpOfVF~j~*D==@5r%7UIU^!&UL)LGlG*{+QYOuAOA!oimcA@c` zrWzXuY9&8rtIM;<(;5SoHBAZGWs!E$8zU(^^=8G8@XM5cf`ySEQ_!o?lJ!t_D|==7 zXglH5*{~*xR+@w!nPe~E!QwH3WI(E>9ubyXc$o#{~@xe>4D_tAIPErD%`YSUcr5poUZ%~_8mGK5PUW`d@* zMz@#rt@buf_FwYFe1D5bLjOYYw=lmG8d=?zx1&B6(`J@sx%$Y$ka;huAH))qxMusV zyy1$hEge9Hm2h4AZhuT!mZK+tAO_0AZZHh1*d|U$ga)fl1Vj>WxmR0xxcfFHTrKEXsxl6b?{LUAF0Kg6o(T3 z(R&%HDp-eM?z(sVQDS(kVAy^NM70>=pQtx&`%!>TiDiY@^1f^tR5xCX(SZ#NL~!L_dEH z#($%-tXd-@0mP^)@_!DFn&C5Jm42E}%FDb_q}&$e&+eR_HIyNO4J{S*v|@C{syrS9 zQ>Sp4fc7@@UMGQT5H~2hcR~`A*^ZiIQS?w&GMc4kMvj5@iagtfmfkG}@>~*sweDGQ z@*uW5>Xi9Nuao#vdR;I|gWc|R@l@m*XJzbZuTXF#UVqiEHH{pwJ<=_Fwz-L zh;6K<=rq8QNOHjHWwCy3xQEQ9kiK2Qi9J$4R{Bs*~a^hwy9V>$vllsdFe7izZCU=hAcZS$xmg z?K;)mRnTa>ZaT!ub9ksi zoZtJ$IEK>Is?u|u`%SnL2N^->kDW~9mG*;JM3f9$0#Ik&W?`W@6x@fer#>2;#J5ch zaFr-^zOJYddd>cI=t>%*<&obDw;TupJO*+s;Y!4pVqDYdPTWR!u zKk>-fRS(DhnIzA%UXurPUc4ONAHwfi$>jN^9jN1l4#1U(fEPbNjLCvA)t_I_NM78$ zO(b7V-N9g@&?^|An4M+s54`-yP&TY+kbvDC(r7IkolDpnp0AtY$#Xr8r|!)jrWm%_A&6$o*>)R9EV2z#Hb z04VQGExb>k*24Fb&piMK-Gcm$Uhy;R9Z%bR&6B)O+nQD|Y3-`NE=Sn2L&WI}+5U9( zPZY(Plp11@#J#Dh%m>jQZhC3hIbIx=FEHoE)2*B5b_MLBDOcR_CRR^LQ^s#N!&CbYM>>s7&xE;NP`&M|=j9Zr37f~6wBycsL^50A!w@7Jcq+Nv}} z0emp)z`w<*kt2@|HtrXCC)MCltA;hFd9{QlQRo>51ezgdrP5EiRXIUsi0#GQsR}7n zdu8NOf!PP;R?m6ybChy5a(}BkXeBF%z!D<^!3!iY(K4l0yROPreryFRn`fR;4`p@R z<1M!AS@oDGdL?U2X&w>#O~p&acJcB=`*NdtHg-4Gvqi{NC{;iWxcP7H;!2XSMb_17 zz3YChQtpo3Cld=Nv0_Lh=9C>p=1g7|L1kujYXGY&dS;#*rJ&zCC7uqLZOA0_;e%6!9>iD!QLRh_9P_G*D+9cBM*sJ&TUu+N?n|ukUXufyX z1tdAI$)R%cC7or_N%Qo$&b!+d3zat6;;HH>!Y+rZ<{g2@KOONi1pmQ|LPn|^5&MM{ z#YjUg+??$t4$SSc?zl&S^8qrQ7T~`?N|k$;aT*%hTF=VzD*kD6z$hsX34PQ&-c!vX zGTTZf!4AbbN3ppQX0Z90@>_*n@Hx^tiimVDKvsi@QWf<3y0E*sJF`|mpqJv9o7BPVD(YZ~CIJ<8q_Zet*1)`M(AB}G$;RuzR-xQ&{g-e; z{AEKEfpceLhqtF+8?-u1dd1{VIA&;MM`FNZHx(&~d}3c8 zl2;B*4zVbpB4^ypV}7=4GpmY<@;;0STTI^px~5qbuh7o4&S@ zD<&DRz>r~Uobk(x+x+T73 zzR93Lfw2;FVE~w@a(bqGV_;5I)kJg)Dm{^8s}uo59i^sR{iJ<7f4uH-;CEAo&G(Iv zrIUJmdzegVBCY*?DuXEs4FdurAAHcfRFSsq`s1w5zV4i@VOr?XQzU%}Mk|meQmVp0!3x>KVe}{@^XBHRBZb zN2B-;_@oS*ua3=?o&$4wLH{Zf+T3o;vYonkx!FE>dir(3f)@5w6rKNP7f=J4WzxjW z-ciSLrSYu@c_ApJAR)vJ#$h5i9a<(;>9Slz5|g!Jx=RyZ)|FBWN7SVBiUk3;(~$c< zK5qSD-G3_NdhI#7&g(&T$876La(7Bo9uDLt)Uk~Mok+R82A!?j6%TFv#fj&~Di!^m z_Mc+(@iZZbwxSaIJaSx<9(FC@!qV|eNeyNtX3Xm6ri(&()*E+Yw=S>YbN)w7y~9?zHU%TGtEHv6lkFYTDILwt0%24xT?ry1qkQn$T-ZS3j1q27=vplSwQA&uJ`zlD zQXM-p&x5d~eJf}emA%3++el!@MVgUyR#Eanon3}d-JoLVN;WZ*#ky!egC%Mwg(!B8 z{=oppuE-&bz+zRNsb$j8wuZPs4%t2`ddA%HL%1$ib?|(A;d-~31>J(;Kvx)l ztC#COH##;^*`2K%JRi9i9Fo6^sp=Mpq`;DhIr-9BItY;S_nfK1?~OjGI2rA9nPYMK ztiGSP`(6)rH$RD(@sQ)mS0izSPddkpZf&2WrRj+bvi!= zRRC`-$uv&Z zJ8I_e!9jd|hH0zQ%K`D5h^7i2o?1_vIu@_QT#GPJ7ti2@cNiw*Tk!UYc3HAMh%yQ} zH-&;{;y6_Nw1(DUveYWnlY;%s!%4pDR)sU>6I0%}fh>$wuH(-h*Z}HuV0%k3dN`kD z#O!$drGqlt4JI9G4;v$)^e!qdoIM&lDpaNcpADX~l0pN%(pwJuRFCed6i4&+UIdo6 z|CVe|PghRf_KLmSm>t^oCnqnqbYua_;sQtLtEr3ZxRz)ie(P~sAMMQ(emXcS6Ieqe zj2n0qUlOPzNu#TZ!jyCn3KFhd8b%R`6d#8|JiAQg2JWtkQttR^co>mL`X)C|dFD|F z%Wf6my^Er5f4n9^&h{_{JzQu3=z>Ca-U zoB1nxJ{fLx`_Z_ipp4nGJE}FymYPDM2ch{}m*8;tC{IVrc{+?xENK;XX2ne!SsAZ+ zZEY?lgU>dA^M`yfco7{(iM7*1<7qzp7SD7?mOqS}XwU#9*shIG- zT6=SpD;p~u97l_Y^X=Va6Z%X+72I-?5OBxy3PM1sEM?)zP0KvQ9{$&C%jeBzsuebM!=WEK~ z4GD|W#764hUZRVBS>SafF%v(aGa{K8W8kSKAO$6uab|MWrTcPdg*|E%0$V924JEt0 z;#L<8JHclIIJJ#cpF!#d4aRXgdguwWn3O2JK8}RI`+O;awCTuv2vR5th9vN?2V)3K zM_{1!Q!}az1~o=4`%-T_>ezvX`mLmAcDcAQOFYAQMT{BYamakq4ph%eE4?|7-2oB__ z6KZkVfE7ln6=T_nC@pMV8Gr?)#2FO-y9;+X_(RFd`|DuOLrkxk%bD3VN}SVNZpXd> z>JHE>wns5NhrNFis|VfJx2&e6@y2ZX=!&$fS3co;0PwZ%m+qz$ZeAV#cu>Xv*k1@r zOCHbFKpad?!y1+)5q7pcM=^!EEOt}C5~8Ml@K5Nb!jdMa(ncRyb!~jl0a5? zW@Z>5aI9SpXbD5n1TN~Ae07b91p7~&z~RYF)X-sxbe<_GJICG^_FgELI4Ns~a2X@^ zSnSnll>K`W!TZlfSa;NiWrbL-DQtGQN^|n!N^8r_11k0sC+g@Si<9!j)Vl4pd-{SMY4SF3%AVKC zPPMSrZzrnwZ_j;8TQA;$faxQUzXA^o*Fg6ymZZk6DqwsbTV>g=k4!FBg*qBJSI2ILS0rY#%xC(g&_;4pclS*{@6RY1uCb}X}B^>v(+BL zRi=4X>hlJ`BAFP=c{y4=Ps5BMU;bE}v?w!qJV9?*pbCTP&nn(UwTqE6G6Z#Hi5CpJUZW7lER|;NP+GkOu!NwBT;4)x;4o) zU?n~*${2%_Xbgl{!qk|AU8+NN5c~!=5N_aTTQ|us*bi;kLw55gX%QR?JJU)I9fd1b z-d)JdaGPnTVePR{!?x9a8xwfuFnSuslh+&)`45nMo$nsbj6|I*C{{!Uiwy9Pjc^SGl}VsoB{cvP5+2lD_JgtW{yh5{J}OMfgVrKrX?+@ zvO61-#gAAoR1sGgr5MAC0X`iX=F~_7#)9A@;M`&Iv+7ak7tEek&ZdXT1P7>sxYRgZ z#l}5%;Iv|O?zr%cZKk_u)Z@v2H3QFN9mj2uWA{6dJOQ8O(K^iI5r7u1_FqtU`*=Du zs^QS6hF=O5MlwL|O2{Jhg@$Q5*HlV z^wiV6^QQeIXqO<2_%{#ty(wk)t{jkZfsRu~{Q>{A8i`ckH9-uG>xyDF{l+|`F_^fkV7BNhUCh!FMfqCz^0)bW%Ovm)%(PKVU}V`=C(sXT%UmK&cAthD=CwmRbFG4ixrLqK&i-8^2Qn6IjS?Z{IlrJIN9l zRQw?E3+$lh!GO}*v%klSwk!7|D&%XzaRU{mZlqw_s^tjkp$^fs&GHjq1cvB#g}*9K zzzl9B$8|B()9*fPOlx^XfdpbCk#v>N^8sRu$jqB^{@v?2!$OixR)B~v z1)^3qRM#QFZpDVS9?hNHTCDJ72q$JO75VB<^42#FRuHb8QJUE8@52v#OTOqIigeke zr<5iIA~oOA2*jO1jt$#pMfaT!QQyec5_#a9htly)D?){wQt!7QN-Qop1NtDyx=gjt z3Q9lHVakt&6pG&npTJIV(e#v3VFbZDer#AVn}#uB#4Acn(Yk}&?t-s60|1w zJKWWgGv9JQn*mPyQS&!Z&0#6sH($WP$NvcK92>$ z+@JWA8ne7)fLCvjH@?ZxPfr<62c(6G-_kw0qEU$-+~w!!*4#G&tbV%E-4^B+`rokx z=-AsPWU3*5d<0OrqD}eVh?J;cjlNT$4r|NG=LS)9VDyRO^ViIFVj`2ACFS0r1V9f$ zPD(iJ@!t`Jklxi6B>0x(L82&MkY~fDo6Ak*ERxR>S~d7O`V#1mAKyZu80c8V{qal3 zrV}w@6oj5Knhn$XZ?jm^!*$!kic>ND{w1(Jz8=5*`QXtj5&InAthoQ2HBt^ed5M;b z$Nj}bf;_x*{q2e%78-0-LrVcDRp1?olYfqR&<7&AF^g!A<*ZO00b%G@8UYU-u3F^2 zwc?1CP!<2x&Jg_OQJl7N&N`5hXCc`(@xoQ&h@qzm-T9D<;g4bRgnJton(`niCy2#) z1>UEUXCR4exuU@;2K9d_%F*rWa53G^@NYO z`w;xG6#{6U_5H2tZ*PZmeICtdk`5Jb$wN(TpD_*yK?}jyq5bwkK8e2J7>xRcBM+MI z6S`LuT}T`)p{FAR6vY36(NDL)D9-=Nj||H^Uvm;vqa|%cp=z=N0uECE^`a;#(ir-m zFbo~8aC}h8vMgwic&X9&xR^snykFE{!#4`8T!C*C@iYiDXR-WSyZNxha!Q)MOnMn< z?jnLL@OvPxc%eI>dWPvQrOPBhJEQK{!|6mrdojG?Scw8j<5PUap!irr2dy;itV+zH zO^x%9+~>|RknAgORbeTE5$pc`$?kNr4;Wu!)0<`?+G=#@zsmWILC~ z4TbGI!iVgdE~U4St@w`0%Dn$jGOr%9qD3Nx7zDg2E7_(yLLZX}D(D%cXCEKr9VL!M z!_OX8W)K+ObAl=oD%V=`xjzgh8wqb%dplTou7#3@g+S-EcjF4TBvvUc1(Z9Gn?!+3 zA0buW$CNlB2rOwZgF=+dgU&-GvCDrs%cktmh@zXrWlvgiP(}{6b@QvHEvc0{g57Q} z;X|{Nq*K2)d3B$?9<~y?O}pAJ?B(rbr)_NEr0_<`m(P~dN%hjg zfcnvefnJi+goGe03H?0rz>=ZFn!~T(42C1O`+7HsX&E~NTMRB899mC&X?iWj27)4R zoB<{EHqR@xZrb-dB$1{Nf0?tVI0cF$U5Rar2q#Dg3KUWrFbq4+l&L*|qng zNgWRJ-m>o-B)+Ch>)T8e>*%| z2%RfQ9GlW8ed85xU`%tCfUc1lB;F z6~PuMqGKrNhQGiv>f`5-8C4XF2bmA z0Zr(YMhw<;T*DA}9FujKQLl}#avDf0QP*fFe8nQK1uTc|pj@FF~nrR4OosrM3xQUZtJw)os$|ERgb z&P#X&jW#nP4<4zf7j*XY`y_#Jjd+|P;dOLvTEf#+ec--b16pysAYa-DtmKd7ho=Pb^gpC0%j0eTesDZjZ$q6thE8!p3MgD*e1Y5r zXH9!ahZ@ahrO8Od*j2X@A#O(jOgq#t2gt}T7UgFeLal@tmU9Eiqmh2xU=V>(dr8uu zzoi5ayT5tzDopo8oEz|{CXoe~JB~;?F}0+GCYE>#Lm|zyK#EARR#mq$7Tu z5g0RCHJ&v()m$JFI-v%H3VyI3}* zoUed1G?g7S$h+w({_DccG6NQ)-7I;iVvOc+7L=@+kNmCDv+C!j!M3rYA1_{1*Q zfcp7fdhy|*E+i%$+Jb!2tX2LEpsUs`-gggt*0R*R|oiZh)_7wLtjqKyhk23Pc{^^uCClhvzv~{6C`q5U-dc zemH#YSTnll!hQb#i2BCx zy56VjHc4aKw(a!9wv#4}Z8Sz>8;xz-wr$(C^PKi~{onWV`Eu`j&z`kr&6+t4rnZFj zTC_S%EiG=^xY_?Z47@?J7CtR{7)Mu!37s zrg%Qt%FE${L;0&`EWWFDreYm{t!;anSxGRvIs z;`th-&t{(PS#1BjAkK3zMvu1-MY`Q-Y&3S5xVT)hsQOqp(vQG_PYZ%^QF3gi=JLFB znB=enk{tXYP$v=f9h}@Ayf%4$Shxa>l>eHGwqjo|uAZ*rE_HxQ8#q(zsa-Ik`Nv$; zsJW1r(KMS0xk_?YA{Yj-rK5L$Y7n`1e*3U@ zb~ZRV?`Hk5&->Sg^0#?!D>mJ_!RvancR0F#qT9Giz4^!sZUu~rJPI5b@`-`>^-nz? zuQmYPh+3Z!F>eImEUw(_r)FrUcw>Qaz&l^{*MwTfoJg4rc6f4#U4aP$8td8kL)G;P z6e~Lv9?RZWGGdLBN>OO;42KhWyh}9BCE&7+&a%n2NQnp6X&QGrQ+`#NeY?azbDO-~!kB;@ef? zWIVS-*sX)4ISPX`MW(psR*ZwfgDuaVc6Sb?pq}51S((D={mXvXXz3+k% zA#MoTfqC;QzMY-xug{&E9XeKwu>%LydCAl-mnA;5a8U2RSeG`$E7vl3IWFVR9jf{K zy7@gu;%l9V3~yMpr#5vi7+!5T0K1GMWvJcLlnUt%zxJ4`aE0t`FsesrVyW4^xC|Tw zUtl?4Ap%HyIJ01|q;_|9;$V}q z9|pBAA_DJub2)0wgabpD z)C9XXk0^pE4kupe`8ifThxP=vKBq3id`5=PyreI}&}=UIN)FSjqd6WRAyVoI-st2c z3*s7-USqDzl^nJ($8cG=&%ZisVpz$afT#8%9aMdAM2`mto$KSnBROhEU3+AR%VXFS zk%tk5V-VwHQdv>CsX?cPU}yu3q#yr|BXBpdoC};|oE~6>fPfeQF6ek=1;=~gmueGM zTtSu)B3IYPnT=j+u`~}2d98-;D}NlLeqbUpYCd{j@H0**wH8`p&?Z2ux-Rsr?Ky9w zAgJY@xO#pV(v#T&S5$SAFC7&poX^UE8?5-V8{2BIv@8XdGAWXok>T-rb8=EY_V~AO z`rAj?qECToXkFgl?{{x7JF{GXhQN4o-4_DC}YmI(~C?kk{l1SaJ+H2cUeA^ z9Bj*1AzY7BX>@GOf`8jAw2BitL#lu4-Fp^cllr8um@I3XFRXbaUoLAAYbhz5V^g31 zu1!=D&@@jTn9??%t4H4Z?B{TRH}vZ=-T_FGN+C+;PgZYQe*mv0`g7}>FHi98?I;F5 z;JaJl>V3g!8ngUZbZJ3s4LgyJ1{wBXs@WV@ViUy~!y!fu2k9pQ{a~uFiKElT!YeCX zNTq^kWiH-rvZJ*}Ki#tFe)SK6WYMa1x49R@$q^TW9#sOpSb!QVRx+5HIXMBNaLq!| zxDyM2i_5d|Q9v3Tcqjj5>95}Jnd#}C26pW(%dJ^V4ZR)ML0iTU6pKRpF-D3rGc(>d z=*o7uu7O-r(QYx{)hHs|9~1U#H|9&ylY|219jCqRwE@nV?E4Cacu7pt=OuPVC$F?( zr2_@7m)3w40|Ft@HBtsEM;Ym&&Afg+kIrrWc}ka^qH$pi1M@m8FoN^r;p5lSeK&fb z?{n+oZ==9=5RvMn_O{kJ%{d4t$0aPNp0{L_S#b(v;=qm^ISj$jn7xt+P~~<@(2CZl zWo}xQ$Q#YDhg=R-%qTbjHKTbhwTp4qjxsZKw8!ekEI#0GB2H5kn5nh?W$MAIWnlh}!vEB- zT^>tNg-#G%St5$`3&AokxRMJw#zfy4T#8)DF#L-g0;Kp}Mj$ zbT{y1-}1(8XPrpfbaS9VhZD&%ry}FaY0W7VH0y?5GS(nSI7qn3$6@~KfP@OCGb?1) zF>j<-tS?g_SOEBHI^BM`-q&yne)DYw{l|ZL-D;CFwbR;5>)1UPX%I`FEk!GC{fDt% z1fKN=YOW=q+_y2^bkbK=Nm4CSeTIN@n&hlTg><)Yh9PMEmcA>bT#&LN_0$Ky+fBn) z;6?_^5vm%4R2jux?@jMDv`pn@v4gjjiw$O4#0Up9OYXRfl0q4to1e9RiA1;G7K4{n z8>U{NnE%QDAVr&%74M8ivZ4jb?a@hV(z_{^k#B$kut)D8JsM1v=?aUp7 zFVjU#gofU(9jA7VYUx8ljawZDVzczcQ@&4BSk+V{<)(DGM-!2tFR?ok!ZuY6h0LMdmhC@10ez|2f05+AgyIZ))*V*)xGNT!Uxc!;eA!Zqb4~Zim zwfA)R!tXx%E_4TWnROl^cKT8r+O7hk#MQW3{)Z!y#dEz0Mvd+m;Y1VYvKo9UcwIG` ztv<(uu>WDvZEGzL$8s$haJCGU>ikf!yIfty*Di&|6^k%FZEvYQHK#s0c-aD#|7E1Oo13!|NAQbaC06 z@ZN!J$IP{Kt{QOM?rJ#N$C-{B4i@Lx`qGP7{Z$yJ)M-`Q!O`*U!mYiT;VO`xv98Zy# zZQU9Dz8frmHlQ}(_)Xx*Q5mes4cST|L|r-vt*4@QM;$u+ura;YP4QNBw>IDrF7MjL z21i_cls*feUecHahD`mv@%s)1?E-M1@DTFv+iIQDs#>u{=xdYKa1OVH~f%e2;yat+;@7>AYUj6CtS*>R1Xg{E(qwK%6Dx zwEmz_>fm0o#3);?v|>&o_<`GdJ<9ykwe74re~sG>{44zl_DLZ)i5MUI`0n(w$HbnyK2n7WRyQ{BqW9Lq0HjO!8$?(m?W0<<*;*1K*s>~*)iab5hPg~piO^Zl*msB9 z@)vq@cGp#xI=4*jHfMb!N)?sdSv`-RGXOYDrZE3v(YYmSBLCjWN z>1F;jus0o&okeW#=PRCo3^{0QZ^az4I=XKZWYNW;9p5NigWQd$!qYKwsWjIpyd=qR zBo33^Vpk^-zPHRIS*K-vHhg{D+PYqmpisnr_4Xh670v2~aBy>an6Peb4QiuDth-rk z3)r<4zweCbk`7xbJpZ~oj=ZXXeuYwuqtbM9XOEj}wK6|avyr8&LW~*=4Jp4;O!Mln zyW~h|*qJ=UL?xfJ=FQ^H5m(&yL#-Yryhp{(^CF=E;beDCovEY4+!O>m`z_enn!~Wf{jR=wI<*67cUPzdWsaw651LE-nHhnHn0b zl&N4IHxx+21qP9{cdTaDtK7^wG@DDjWGm%JT7mw|{aiT1s*82n5xgkbY{`8-_9BVo zyzsp;#$w^M6Z~mXe;J74IH+wp!wRo5Yx*QklJnN`n|R8+D8 zXwiBer2*Y6c1mQlB;&)8+RI9>sIxte-{_Glax@bsHGFa)Hc6XLTm-A_jK!XtRO+ny;1OxH{d``dF!>U=Uqgw(`<%f&nQdMqXdwt%=UJ$v# zxKG}E*j2CWN|E(Bgr4-{CQZ*E&tt+a3yo%Rr1_TL?ryIu+|An6n@3AyuIdBzH(R%# z90uIh?#~|!Yj<%fQI`=yac<}{Cb;pVHH{n*{8(B!^Xk8Br@$#KhYV)TYnO2|(lR<) zPhY?dE=)W^$_q|L;?)Hcz z+0DuqrcQzV;UsQ=Kw{8)!!^i`7De;+B;>0F5m>#Z)ynPYD8WO!1)wv964-l6`deMO zOnjZsKW%-uJG+x>OkL+QsI3Z2_ljfgm=TBPi=Y3ly1yiyY)+zQpy+S(x?K&%4t;js zxF20dEoEiX+NsQ(U-R!yKNy?j+{9NnPM~_P|nANOFRofU} zo`{=yOf~$h5sbN+x#>xW+xuNzV{5V+&4WVSNMykUj;2`hH7T}z#4s8km%jJb+{h~G zh^(i+F;11(gQ6ODw_*j+mj`j`x_!W-j%lj_{e&D2sT#3%tzXk~W!s7E2OYhZN8@>! z0DH!F9-hyM{r&mHek5u{-p#*o#rr95LSdo<@Up*q?{FUA85{tym|`;%&yAbe0*O^X zswWyDSqE%`&hP#bLCz&M>fNi>d?+E|4TOm!L_{s}=tmA&^&5A12>~b0x2E03;IahJ zKCqt(@a?4Ya@S zL4V=X^SMWyFIS9TUx&2b4nVZMzds`Ipjw^7c(}{a%fQtmtHn!gV2$iWyY$?bzedyxbexIByZ-{MH#!>e`SB?hA_T-TCIB109GiMyZyQYTYSKX-qwdZ}N`$#9v=bev4~!Qh&mhbYU1uGKca zQqUH`!i|d8hch|g|0tK6mjSu&Hs=uOP_X!M&$AvXpq1)@MdE`q&>=q#azx2p%xuP{ zjxSBGMVT(oHM)W?nu$quxBxlPqa>`om^;qjTw#;>-Ro`k{(k3Y@XX(rUit5(A1+-u zoiF$Ix8@C*m!qkX6XncP8oFE=Cq-iN?-0mXh2yLGa(fsg~3hN#}RJHaedbG-1 zHquu+Pm~!0?U!fty5U7vMSY4L>_|pK7omf(G4V9$h%^PvXbPW zF8^$2nrs|khE{p%rzBCf~*3VEZ>yfNmmP!p+v`N084p4DF z@O6WA-<@y75-*glU~h&J@HfQ!;4@|$c!1NX6XD?Gcs(7W`T2ws;T>no{+;c#i_!GNw%)c9(IPx zn4%d9SQR4JY9j-jP~=Fq7BvPe5fX8yD3cu0bl}>>jLmL;N)KrK%vmq&1(>kc(>2tn z>Anf=cB2}Jg}<^26|6(K`s?476<3tuy+{s zT3JG5JaQvqse9Kfmj<(#>F3dZQ|DfsuGYlI*|43OwSN?3gQrW-e!i`N%0=y3RGJgU zzi!{bVZ(%mKv*@wm%-`aUpCwc1n@^U55($2RFbW-*KJsuL=g~lwytvRUg!UnyWpPy zmcWvVt6#sq>hRAY;G*5;+L^EK&%#9PieKluOkNS6NI2hfrK=Y@)xP-cjd!sRh#qC> zi%6Jcg-E%sDCOvFZacF=LYd_Jt2*XMHFE+a4o2#rrD_qg#kJ;zx-PStxE^*yWUktf z**pZe0B(yQ4TiaE(qt~BWwJipVGvnM=#mfWjgd#%e5-w6GApy|*ky7-`tehUqw&sw zyRXLcsDVN_Ybx&rT=niG_&u!hcu?2w@m)kBZ(~~mddSK$k!z!$f-sl;!^zD{`g(%} z{K5Fe;}d`Zh{^80lt4^&2>s6e%g*jQz|G?>4$)WSrQHmh*-2D$bGMzfNYxexJTAVz zh}iX8=ogBDT_&n)vc0sG9&vsuMs}G#KZY#reYYmkycnHq-TjumVl-4alNDnrFeqX8 zKY<{n(wI2R=fmz+$G;jQ30TZZpp?s(^0y7S*$$%jLYSI`^{nF1H?KXgiBs!)sBe3VhBvf8v$QH3ov6$^$( zj0x=pGWlFz7H;(IDnlKC2JT6uzdr5^r7fHDakqC}&tKQt`|ga)Gv#{sklv4_ro)4v z&?PcF=8{Ybexcw&`d>nN*-*moT(I|jeiP=>QAxL9PxgJ=8z@Bj89Am4(w93fJTz@g{pEm>Td7HoM==j@k?pA?uvspP2z1wKKwJYox>`Yl&hw1ZfuQ&n5C2WBOj$YSv-<*z6?SUR`&P(4`B2o%uzWy)@>N{o-;&{-Bk2qbWXt_As9;Mjt4 zRoL)^CU6ZGR4zh#N6$Q#+EVo42VS1H$4<_l)kG~%aqqq=%F1uU^23@U{qE3G8!PKC zI27*}aR{C!uhmSROGvJLPW;mX&>v6{7xAK}lu16}apYeSYjp)ENmpU~;lQLIQ%e*n zlO>^)B7mnblVD7Mp6<#zaJ7UOK~d&9gUKVG_@-iyM#AZ$N+lkLLx~v=&3DoiGrylh z3pqbDLJ*udcDncO>%!~`q8AEAD+@gpDM@Z`=jJOOl#?MaZeRqrsv=S)4l#Xu_?eS3 zB+O6}!fC(Ej$scYAs5;kT(_PY2;KpoF|al4o|DnICVw@guu3Eq@dqob!Hx^_(-6X5 zPi}6rcJbVAe}uO8MZ@{_g=eqxk>T=bu_7mDXY*@9nTm2-A?9m)`|~?Sr~Tp~f!8W4 zIcLsm715-27GquRStC-MySjWBzp7@HJ&8x~FDBIyaQLV%8lYT$-f-HXGvb8l`SQNl zH-w%G*Q{X7aEmYy5GzMTA*1|Ag3AcEBJ%}N1K>oOOXR5ZIA~M^?dG5;1Ph%{m~$|H z(D=5)0^8uUh`xOlj?^%@regPtwYh5(*oPJrPlg0OuOXxzxyy-BsXB+-LKWR)1d0UD z?yn&62Y&SCWC8f(MWcQ?WO3mII6Yv`KAwBGO@XX^LCG%;(kJk1XddgYt+sQ{DRDe5 zY*ScJg`*+=NZA2hRURAFg)}Q2z^BoX(`V{qy0i5)S}hJWHFX9uwMJ=?3&QqbJCw6c z%K7ETJ;8bDq@3)Jv2c4wrw63^!p*!dJ!t522%vCvBqp-M0f~Z`rmRPImXK!?ga@ET z92KcKeyIL%p@_=O->z|;DXr0WOVWY?m`eND%+>;P$oHoDTg$na76H|eIr0*i73{Q- zTsT=?K0|iHj2M^(9`vP3_>!4QyPa-};5CFg@^v8M@()!|&0+ad3Z{6cRs&PN&zZ)B zC<=;nx;byaQGu2t{0>~*K#`}~ql8|T#O)o5k>sE3J%>B6aNSdoH={COIXym2*YduM zQy@Ap6|0CvdNZ)Z?22IpQQZb_{$pVGKca2yTluD^lx8o@*qruS_>`qu+nYI?pC&Wk zg0?e1w!O99mK)9E1b|;ipyUEI^@dn@#=!b`iH6SGeBt&&bLkJ1myERoA@i0+L%B=^ z_Zy^T6M~p*lew%`TdgTC^%+yy;3I#KBy>|qVp0%=Q7x#kex)$QgD>@^+c%WTTpZ%X zRc5qojJ@vh#B}ve0_R&p{J!SdEm-CX+=li62j7Y`2)QVmcQQ$fj01Uy^C_WJYz%#s zUKU-NK;qk~vk}n+KbnyE=NRs*vg1QfiAo0-6wWepMe@oh?Jt7!d_ewmA$Efa}3$*5he|bii%u9 ziww(icG~-NTS~*C9vCvcFUwjRN4HZvWv$)Cyf_Q5twpR|CC8Tsg~L$nO(uuFzy6k8 zH4!c~*^>p3y4#Bmq)nOPU<>RpPJc&2X z+rM548QuR%+hG<(C7HZp7J5D`t!#y_3ksmoWdiXB1QAn^XHpGyJ9C z=IADtAHWW8|2TKiuOlsf3Q}ANjlU+9|ihiy+eu@X+b@cX9sZ%GTE^v)e-T*WX9rH-f&}M*-YqchY?O|wA2Qh+%Ih*W+7OwFsi*AS= zrtct5BO?~Tm0QJ`UCl?->Lv;fjSIPc5|3V3ShmpIADR+pvX@B1>?oT1BW8OMhW=1* zqsS4IR{yy=X?J)Hj%`AABW$-2abt8}BAQ-xqD}ZGBOne;^9>dR)iwit4+bDbL1`RG z`~q^yyf1W0c7&aT#rx|jw3?a1NGh7jsXV*&3kFQdPn0FGfxPjDH(WvsrsG&eow`!NizjqH0`C_JCX8od|8Rg(n&V1(0HrY(+=@5UTP3viLcE6| zleUEEgUJ9yuW#|(cn*Frw;ew6V0(&@h_6f)PO1-sYMchN`Aq5kFvT{_YS>PC@{nJ+ zFP`HL%xL|QOzE4HEWj<3{o-Q)p41qlL+iuP+o4v|>#lsf^&PIP zsOZTcC$>H`^bvM_DRuj%adh$XroXaxy(Jr7Sit(GLEz6p*LEYJSQ$QB-#!;5+rWci z+V-SN7b*=WUmP#yPPvuYU2HkHegLu-CN_5Kw`nJd?lMZwXs&qSKde)+9`2G=BXK{F z=rUup%kz}trLuIR^n1m6ss0G3>xsbr#(;a3B@=J(>(BZ@u9Hn@5nLb5s2R-!Kk@B3 z)DVtL?B}=4TJCT9s6u9-Ee!7T-R2tcIPh-q*a|Pg4MFkjM&a{><|zb2*IwLag2A=o z&D_xT;ejByguy?~Py?JJqS8rrw@OiVD6wo3!3`_A4T7GKd14zg0tMRaXJ%V=D%9fj zn5I0de9%h+u>nhA3>|NF-oM_bZ)&$o*s+wA+W`L(J0EE5(98IJkly=Ct94Vo(^_i5 z*W<6QvDrJpgZzagQH=I{h5PPFAKTUTeIu*-@m}(~TkWyeQtW5L+|MRLyoQWEL^B56 zT*h-{q`k2B(r=c3SOd|%)$YO1P6J408-;rv3DHbSv%md*mZnt`jRZ>w8CH@$(VdA) z93&An?t^799Qu~@e9aY%(W01KCIU!76*t;F^A2N?YL4L_Liff`;KT>?qcrI2n82>? zPa(j}kass^{g|-{EyX2~*rApCPL9tP3dRwB-Sd%01ZoI##VK24Y-bCq518Wb_B$x2 zKn;X2Tt=#3Q@tD_mbJRu3&Lx*Git;*^j_Fp|G1Cs#(&ogY`LldENHV`H)UQ ztAf~;ke`hHW9+IXKi|}fqSund)wNx(zBtY3249hIq3Bq=<7wClMYUfLkaRY17#umz zy5E&A%?VB{!RTbpzp%>BSAfsI?2kIKSbd0|nKPmXlzIZHljD(&}`YVz+ce<-L=^$kKoHBqHuNAkAGTw?-slb!Nnr4X*zp+G-%+{a*?FjN^kc-2Y}Xi<9c1aFxPv7zQRuJ)qw1eMafTI; zNBwa}j^yGzEtsMrqGoM_gW}0?`YZ@Xa$}5P$qkzD30-E6x3QLF`JnUL0jzWYuhz~v%bogwDruh1keXwvuM<60W=A&Q?;a3Ah=Kh?E z75BNvHrA?#ov-fz4-3yn0tF=R#m+D^G&FDAf8d^x4FCYzpDI5mKN+>O=`4?AdX>Oo zxvs#-nF!5y>USpOGq4E_61%1iyW$T%g^mT5%l8ev`{aHL4_S_7Brv~?^=>dVA}e6= zO0U;|fcg5>P)d4Dlr^EmQ^AE_YyFIOfuoc=gYa`Z1Sc2Q=Q0rURIc5b192>6=8Da} zyK$wJ!H&0AfDdq^B$JC~jFx)3s#3tW!G=OdP&3h_D7F%0HAqJLU~_aCSiUw3qy$Y* zqR$`*M)_`G)wz{NAY2ZbmmBancW9Jz?!-Qa`_Uc34%U?zf`XAxxesn%K`25i6 zd_D-9{4BZ0E3m_6Z|kicIDv)Kq_wgyC6kO0$YEd{MIK4&<#%Qpc6g*jWs8R2WHb{> zgMg0N`p(-1wHk(HO8B!3{JQHJO@SYEC{*-m{tOE#JzGJs07*TXttKoYWV(l&34I<@g2L8+az_->Yq0!TTf zkpTrXSyXpudpTj)3=;7s3J0|~c6xB)&ggD2aCbZJkSXKt$3{7Wj(0-*l^jH?wh zkkkPFE6c%l9}7BLo-SORZ?_c(O5()WmlT6RStM`|$U_=#vT| zCK~4P{5e*q>uF7QjP`xAtw;vT521!&!1&3a0f#-10dhWlI}A;bBj_@xJaQOZ3!n=Q zp|tWzoXbT?c-K+P0MoW>Lx|_e-J~6dGcq516}kN~U;?MrBJ7I(8a$FbgO86LMYqK( zZyu4{NSJpOre_YKLt)7?U}D<_h0kloYOd*{B0-se9X4u?k0P_ofm)T9!lWRaj52DV z+eSM+TH`H0sS;!`{6t3{bIo)66zRevNLq~m>khE%hEGk6db_w#%GvJhnAI5w4Gjfg z|0_u|5uKbopKmJDH|euW0=%*c5+Vhqxdb8UgQLPdW0@(UfxUu zf0XYs8{s^TIq+sD9s7S_w_`He-N&2b#YJ!*$@7bQx23GtA45Mk70wkzO>vQ0)BWAp zP=;@RkFvq6MSx#IkAfsWBi#FqgJ{b|&u{lRtHe`}+9#fE8@P*?m6l=uXAE5aG6*&P zg!V`=^S7_Bz3w##M02LXi1o;ay=s!&DkOUQR#zK#?}oM>m~9%gqO(@kau+{4pRNmA z&p+ugN`Z1kaqd6Bf$V6tuF!cqxa@UWCxoz^*0pWvQ{rU5?{y|Gi9r0qONvDR)>l&l z&J7L^PEGie=>YM}^HjvhAQ6-yVZbI>lZ?wy5jwv*!tmRkjX+>4K*Sle4z~yldNn>4 zKXqhi`TI*N|H~C_h-R8Jfbi>Sd9rth^!jD_W+`HvQt+!0W)!^3T-qa z6{tfXP7*dTPZFnOx$@SiNkJt72J zcNrqrEXcePDq-b09-fS+%AFi=U<^0;-e)_0WMeGU7JdK_0oJlMAPC=PHeGqVF;_krtn%S__yO-h@}njaRP>_O8T@kjWsnuwMpxI-a10eeI~O z7Ze*GoeMf@-Mvp}lk5$MSJJ?VKNrnR)?(o*aGY3a?SiNTh#?o+jNY?z+9Y?8eefbS z4+y5i%x!M4F?_5Zdbjd*s&BuR13&whqLII99LUuG6}b?4j7YU%iZX5WwB!6B(S zxbkCYImmsa)K2Q6HD6T1jv;CIC4c2GeZLTCp(VMdEEXnK5M+#JCbP~3qcA>}G{}#C z#0(fA?}`ZyB+Fo5CSky?9f_9=S^kcF4c${{B%ao4s#imBfxkbREi5zAbv+duB$o{+ zeIZ+&b_g|Yd}@x5GblV>>O-zbv=0cDz)xex8~RWRNj$WW2uW;2hoZh57K96DBC0CC zHbM#w>G!xAP_VJl>39o!PaUn~gZU`p#mi1B>kEmFERfN zk0=5jc9aZsQiRn_dBL1HnPZTR$YZ}s3@tL7!KSIyM-1bBQe?0`v=@KM9Lq@VW5f~{ zzfI2?iCFEB2XKiEYZ;9aQ{&^h@%JR0n3Zj_4(7z z+TIEcP6OFLbce~VCr~IpS8wJ0izA;p?c%D?&?p{3fPR$m`p=EJ-pUw@72bpffD9QJ>Y)}=M^ zapCmqe*aG=WNUf7ULJUM`Nq^t`A~{#0ch84JZg?Qz4V5YJV-)OPN$57rY5;tAv8oX zD_&7=Ise_DNCQ%7Oi8E+n+%kSatCrQ%j-juOB^}*j!E|kcD%QC{FCb{Ajkd zn|yuDcID|9r*L7?eMznWNBNW2oz4+q+2Obn>zo?2e!jgw)nc-r^Hd}0M$atgj4e+n zm5MDOM#V?S>A>a@`0>)1zZ8$aE|+YXQ%`&izS_lig}fqEa}$63&#^{=pq|1Zc+bdL zh$Pt4dm3)Zewd<;uBKuSJ>U!g;cZE1ZGZeX^{?0Kk`53B zAdpjp{*z8YF*_UApTjQCCnf>rfg6~Bs>xzInu&uR?G7V9?=f;IR*J+mb=+CzbnJbH zYZ<5nb{NBcYHEFB)t_l&7%I^D{^IXHL{Rt(B!VW74OHF?r`%GsqFa~}03+4C4vD#J zl5$#1Yyy0?ZPxH7LpZZWj$A4$bw5;}OYsdYgT);cDvOcTLmsCnW28sOJYa8uMJFYNkj00OwP2SJDkBRBf}o@HepG(;#O8X zVXxs6)tK6Xx`xMWcS_UPsvl2noidZl4Sp;Q`IQk{!9l93o zeFwe_{o8zY6;;v09nJ4sy$PY`q^sI?W7R4|Y)pHeG|hec!g0c+{@1)stBbml0Z(6I znw@624fp9PblP8xmM+Qmn}Ez=_@Asn5$Wk|GqA4haGg5&*?re)TwlW)4%+;U`#Vsv zBn(P*y~{I`um-LIFaqD8&;w)EO{c&Vo)3z+SUFawRAxaYrX*p>OI0X1sA5*5mBePQH=Kf(Bd)(#NGWkjx)t~4c13CbckAUlwh zxUhj%=yq6c;S%}O)PF>zZAioIY|LhjR)wiwCK#D!WHMY?cxCuo^ncNWbee&$?ad4* zn(=;5_t9i0*>ln^&<#Ny!BvrhV_wMm4IUy6^%aROBXE3RBct;}sHQwAmz??ra#6LMA3LB>Xe5%tpv};L_ zC^Z_3GS~&l#NHQoV0Xw+zJaWj^4&t@wnyMySz;DRgx+qbCWerp_GQuqzZe!R{rR&` z>JMnZZ6D-&BCGD7R4%4pUw7-IX{a@kuy(H6?UFH0%!C#MjbI9}{O}q%HkWkTUdZA8 zJ*-1yQyFzaiLWIc9bgMyn}BZBk_r2`QB zLC5ZmuJ=2C>V7c1TbsCCHoJHX?MW++jc~&t0BEPw+Ri3KT)hi?S zN^WGd2&Bsjt&2tV>3A4-nHF7U*K`+ua)f ziZHP>RvjRl>>ZHAPl#_p3QH6-%*%hy;&$QfD4dj(RR1*!t$~kSxt5dmUH**38AG@q z)@h}Nrd~PESO&7cY}|5dQVF%Dt)N!Up$_uWP0(vj09{9}$C(97s$@OSHM=XEK(I?S-JKNPGp$LtJ~rUUNf zZ-(;41ziHP=u!36gePv4NX^R$Y8e^GUIeTKs~Q2=rcQiabORb^hIyC1b)*KdXEsig?3c3aiw);>6# zZ>DxwF}=voTaAv1CMA-xhvp+YC89>Y*?EFP(eQYgFXgc>=maHQA@&?h24qT}#PZw* zEJ$qW(a}=r4%{R{i($;>+t4&8(FlkX&sR@1HJfF5`;!hzBCdo%@GT+n2`RXtz?I>- zbd^%ol{YJ=MqR(~90F6V=#WrVR#BRZXu;)d>437mS5>>qJKu?g7!VkgME){yIjr@G z_0Er*OzBPydVZoeaTyx3hp%LUs@aT3I8=`@{A9f=tol1$zX3+rF|B4?^pR=Q(jU!a z0tdc5z%9b(fPg}C)rz#|rkSkA*ywyJ(B!7Q8{Or*=y#V}{Zh-fb2tdsW87N1s)*r+ z0*jIvPVEB9H(BuZQ_|qE7iMiZmVWt!x}v3P3fUGb1)+Xj`9#TE-nnim6WUgoLEV!cdX~wh*661dEWWvY}{$q(C9o?rseYq0-G)=Nj zeSTQtc?PK@uvC#*aZ;6D??n3Qx(FH#?!6>2pLI#RhVxTum{>Urvr!@Gb6Q?^AW(WJ z;@irX=t8>@JN$G}dE=sD2CD}xbb`Y}?m0US8* zt&$o8Ht38u^AB_8)7h&gnm-`caoU-W3~hYdtg&Hzcswbaow|XLsD_3O0DI>-&vCRp0iS zk5;2uRAxB1&F(Rgv~Y*?5{oX+Ux5D!1myl9Gp4{2ZuVaZCx>c`JN~e<)7rZ}&N6!$ z!R8Z)WF#L>S2Z}|s%zKG`9~CkYBCwA&c4AY%_BPY5k@Z6Hi9IhR0E@kTJBihnEZ{` zUAad`X~tXnCbPu&nVU3$!7DL^{HEJ<)o3NK=$D9^$#hjTlupY`+`t#@TF&3cqY{NZ z;Ti?QP{~PV_jSrw1uDu4D>W+x`A12q6x~fp2;G%J;a{0#D~@~IYCBzT)3+bSA&l?- zp{(zJC`){o-pc3wT$;aGs{^;2Z%cyUwD$zxT+K2aavsF>TU9cZNhbndwMdf3`#~{b zR8S%ejFMU?AH_$I`N2kX#*7L~^AioJM^0ougX2L+mr0t8A_P6oF&+fB@ajKj8EawC=W|&x=kcMm;}+3uG>dbF5f_BlQNKHgh*2G%em_Vk?zG;3N!^UG$j_^k z-;^9PPO&GniDCOQXgvJkK%a&lDTS}*25x}GNfrK*SrHvY<9zV4RHjSyItuF z_i}K1d>PGDXsq{YtoRrA|HTX<`JJ)%^-1sREr$2Gph^3sbZhkXxfUW!U|N=h^6~$? z09dZ%MQeQlNqaTMYw!ai2})m}SC|ztMylm&jPFX1vmEa$_L+^iT+$PAO&bt$4}%U5 zyCxOsRdUoaiu}*XLrzUYkdjcSL)M3+MD&&8QRj;bWKgi|Gm<4`c$5*`#1C_;jW=ph z+hbnvN9>IYl5hF76d=h`NIX$uAmsGrS;Hp4j@P%CAY8noU8}m4I-6~*bvj?r&Ko0s z-Dkdsh870CG&bbyK=mlfwU#bsJ~U!vW-RIYZYo{zZEn#?Sw_TjhD}H}cUq_w#xj#> z+cn?0O$Z5>Cv*6eWdAhrD_CPkUyjE_PcLk9MeJKTA6_q#71v;%+^!`KBtc-ID^f)I zRItwvA)}2Gg*&C2pf$4(G8#KRRo6%tV3~v_Sbsy@6?LpIS*EpXlP@u-2^F}`&n^%C z9D=J2bLODfK=}71=>Pi?p!Dx}T08kZ1(w#* z*bGe2;gKxt`r^86FAdY>T+N4VC(Tn3G4Dg6E`w(wYJ%giq!h#Ad4+S(u(B1Sd8L&2 zY;bWEqq8`_WN2bRW;WpA;Dq{Iw~0^&NGQ-?gUn?n(u->ZrVW?{+b2rM?)X%5meE!y zkFh?MwFN4js&^mhZ(ZHxa^b}pJ!!>O(*4nt`sIMEShkox%*ZVe78qh*P&APHy9|OD z19uzHESr&bc{cw?$IILM*L5|})%ln8K>lMrzL-G~?zgSLs>~_1f94w~LA;;;%x^JQ z1+}e5>H#*R2q~yEQK7zABfX3i!~_Wqmcsbt>g8FWknYuoB6MD}3X`K*8*= z^sM|Fv{VvD@i*2K68Dx^ZVp*7Eh81igSLc@mSHC9)Y--`R~2b-l55&Xefx^rh+=A0 zryBG<8tp$%8Nv?nyPbF37PtOxcZe#5hgsWwPaXTXGSN$M(^&x4D(7+k?lYT8z;Pvg zhtzt-M=KD``s6=nfQ&)F|NhNXuz*H>A*SMKA5F$Dut*8nu zUtaq=m9eDPTo}5iBB6}rj~XVaA*CF9iLnuXl7zeX1Ev`NO36V9A4f{Puv1O5#I5E( zWyCVMBBZgoj5~#Rqt&QdOy4QsY~9{iCK7-3`)*M`O6IGL%hQB^pahh!J(O`}U6mzJ zZ%t=yD*A+xDs?ja3}ZlHK9T(Bi`jgvZWL#{RvkGQK$nnK|Ba+FlS-Rvm;N7Oa2+0_QgjP1$TwwZ8f;D@RM8Bfrt+hn^)%*(talji^gyTz{&{6fz116E}wRSb~96jc_H{p2v=;yqtV zEXK}0-@1r$Xhka_g6@@uwTz0Kw-0Ba@6~`S{>i^?G&wkS$BJ&IPkVR!i{|)~yOhk@ zoGAu{K6t5PSfEKfAunqKjG-(=GaM6?qM3$j-fhd1g_~TzJ!d?~K~rH{Ssm&gcetU^ z3Fi1tW3821vWSuV@8@}Aoa7F@j_iyn$s-^4ITJGjoH9&(No}e9od+@A42-KoENvUS z?aty_)%gm>t45h&lo-m^8|f|^hp4?pnz|j(P|Det>KlTWIS!&`lDg>nxLKVxE5L%V zqrWVLhL6Y7MCi+Jz(a(6`-=EW_a`!(pMSpIiWRSARbrV98IY{8u((T^E)LksG1OE4 z?wMwsGRU70-%Mcv%2f_$GKxKc82wRHP-G?0zz@#9YzPYm2gYcjeqz`spZJuDxLUa! zmLKHfU8hHzBox6}l+QJK#Kbg?LdIJ7UPlsDMlWZ`nTvBG?@Flx%u(D!{QLGkhy(N6 zI63eO8aG$MB={bDU?aji+?uJ*@>X z_dXjCK>Mwl_J*TZ7)v)8I{H1_m|jL~FJQ1~xop%bm--~?%;;h77SX+xsK&t z>f@W-`6kn_;t^9>S?JZ~LI5*4KxY<5eD~K-z>74dN|7DsU)Gk*vNqAAleQ-{X=J9S zUMg5OWojc8sY*}O0Nim;w*_o8Td!Vpf03Yb@z!sTi0s-kz&jf9gfc8N zs;XkTJG!{tjDEa~cNf~IeTjAc|8cSJ*0tKo{2GHj8;a&3zl|}Cm6e_d-4{FeL;a(w z-Ui*L=r>3nJ!0<2r$5QT@8VgxQ*RVRj4|XeKe1l(vrXm^9eC3g}W?`a<;}vDR9-SIZketkiXHz1p zsg&H5=+_La-!uT*4ZbKqrhy%mhD+E;20jKw4n<@(qoI9XChr}|-0jo*18XMRL>wPj z*+@sOohgO(URkA^1aB)2G%8N_ga*PU2pb)$Qme@D& zYqq#8CtSZnbgBY+NDd2Mjpe1TlFM7IYk00<&7Uwp(``&UeCQri6OweToe5v8Vfvh_kA5MW_uBuz?q( z>F=E^e!2RUl3r=%j;flMh)K4TrlUpjTR7?C9o7TawZYEL0$INnR^r^H8)60W_B+W@ zt}!CvIy*V}zW#ikp02ULI$!J11_5#>&_4x4;LPu<^gH^`hpVBVy}+!Y68 zF(Yt?g@m0Njp;GX05gm!f&FVtE+X=S5su>U#S#uPCOF=d_^f2kApX$R# z3*S%nO(>6Xg&3*I*L^-aNW51vL?J-d?LTXwK=Fk83R+}6y$<0rx%|iK;=^roQV!?H zQJdqkX>qe!;+$Pv_WQ(LQd00MtE;`4;5+xGb^z4BSj<0K3i9=O2=?v4!NcW&_=nS< zdkkXK5iWE3V9i9Xyxf@{(BHUljRbbC!nm}nlboiL%gdNpKZHr)3mOhBl|zOkbHfB6 zvtnud66um0LT@IQGuMZl1~hN?Fpg59jn!`=bP8)h-DfT^C6vR(l~}FkTw;HQ-I!e< z7irLCygsq8?JY~soVd^TY8K70+g?Q47Mds4&3+4H&vvxh)Gx_F-dHZGP+7}G!B$kG zfUG%q@9>S}-uy0E441a;`qK|CIg@>X-vAflr>K02GiTx&A67z7nBpyXc{ye~1x z2eP?$wca5v2>!(uSQNb=0Tng+jW>d{2`NpRsZQKxPrzZ)5F88Ql3bxOY&xUypR)ZDR#aDI zR7jkvs6>HIObdPs%)m)k2e#NdCJ5zdjVh8Z4JUBy)1W%R&Vc}OUG>#~0eartUb}4Y!qpQR+0hOGfalix(>yq{8m1F1V>qc$JpI|L2LRS*N9MIgqXJKkU= zhZ>W_@;&rRCRCo0k`P`|j8l0mX0GL1dhfw9;%F|`IV(6Zct`jVtplU#OYYF9`0qly z?~*CP0m7_O^`cIn-%)Cp55};gB(>AYa@VNF>OEU`fy_OjeCT?6Rw)?KlrRF>#~wLy zQ{3mzhIPhdlgI`6k&f^NBF{vJzVol-rp z9)Hruc3nnmxT8KD2GjAd)U|zVdf8pfv9(#kr~k6@RO$!Zi}CpWdov6&MnaCS8y~xS zgN++lmX8b1tiRJq8;i+7NGF{u)8XEtng6T~#ajq00QV`5&Sc|^Sxk!KnTV5F;R(m$ zRA|9zw4>Jn-SL&21Q^?41O`?*D2MEOuJjSmdy22y-A1?3#6FQtg2a#0uk)8Cf!>>H zY3$JNDH>Qz#ax}S&7p$4=ra-hfKm z9_-*)Tn%*i`OQv&SGNDa=w3Xtyl1LmneYtuUV`SNtQQnImJ6O}d;Q_=cSq zc1WY<4G=cN|N4d5--2tHySAF>ZU1~NWO@CzC@Wgqz>PYi=F)m}k_54K{=vm6rMViN zTwL(S71~Jdf?*~<>>Y@t$H+K=aKH-FDLUA)&Pi&jLHc>7tcNNUUf*o@+v%Jn3xpC~ zEU1NctT_T9LV>eO@jLybhY~N^)}GyZ@{-?b;tzp5K|k)@#+VoknLLuHb|MA;1HnA) z+|n_qUxEJU-$meJqYOG$qte<$Ta__XcoJg@h{%M)9)25&cSO$mr*lT9q5=6Aj;Wq+ zN3JV0FmrA)nV}D_Mf-IIdS+hZFrC~RTjxyiL((KN=NHwpye7B7+tVyZ75P<%2v;$@ z)JKCKhS0hRH8jIni%EIR&vm(pTDpj4JO-YVZxz-fbg^BcMI4~h>wcVL^L?It9cV_Z zS^yX=V$pxB+_xbPM{oPL8=uc5`meW$Jc|i2AJMl2gyZ|Otz4PzJcDHgkGc}C=3=t* z<4R0(#&Zi1o+z1N6Xxf1oQ|K@Y_%o0&{0m&Y*Ej7B=AE1HbE_6D>@@u_c5fuXpnKq z^f<+2-qi&k`Ee58?Mzrp(uy=vh%})Tc8RPBvkydlJLG6B!qrvNKUu4#CF_`mpu?4E zQ0i_$Z^`#%6B#B`=Rby%|DbYE3rmj}!yl^jM)&?sVZ2ZAGPlVB?;G%=u!}>pp7+g#l9zQMQOob_(WB{Q@Yc55-HIHneZ6HUz zHZKuSCG=eMn1Am3=Q&QQa5#dhCdU(sRW6xB8ZA_-zN3WnfUs#n=YmgGneecp9ctr9YB zUH%*tR3xWO*%~u^){;gUG?^)~S6*RkBkLyQLPP3Ra4;<5?-py%sdgix;?E!F2%xDV zQZ{I@IvCKrZ2AlkNo8OiG;(=0EdG%X#EhMe(XZR3{rwHnBmR~a=I9Oh*jVTB=cCNG zR6C=PZVDJg|G6HvLem0XvD^+$%MAJts~SR21$nF*t5L%J{0(q$aK%Ma9uDAsxI-JZZ_}IF>z;dOIi43C zvVSF>>;K+loKcTXW@#&T_w%AN4^8?!slwWvGX{qQ2WsADAX)v zsH#z!2;}dp&^EZ)&+N9#>|h(2;_eceZn7WerI;?pUScqNX&sFiCI`81p|`<9zj4!ovDlDD%FW0vks$gXK7UHkQjv zi~6m2?8gNnGQ;Kh<*Q{&u!|v1IofwS;&ikb$QcDlkDs(GWy$TLGVMeTa0rn{@l;0@ zVYYCyL_`vpbZSFYAw=H9w_tkvC4LpRb*%|bShYyKFGO54x++b}7Mjj!4&1>57By`{ zyV@kW_FrvO%FKs9X)yYj(Y{6#jgiQV2@JV;dc+1{<0!3OhfB#5MY3Y+kE!p9^YnAG zXUM?J7;Bvg<>!47v2KNIo7*Q>9wrZ_!SO#+7RUUz00Y6?ivMmSBeM;E);D#0 z-Va~jJ^p~5y-h_nkv40`Gs7V*&^%9G!z%IJ5>yrqaoHf-5y1VKnbIE<5P~r~8Ngg+ zzitPs!-vpp67RnneTg2jky^Mg$9Y73w1nPBZnKeE+lV$_j)&1=`p90L3FDhOAAQC6 z*nw?q$p4d#90gOCM>?!im|WSOAd1M2$3tqOP{0lE%~BtKOM%)j0|gZTJ&Z$> zEPiuMt8nag3>eqkolvA3K0JZxz;iyDRnUNqG#f-%iy+SBP$YgGwTeY1ZzHKJ*u-Al zv$JbB?!tk4;1RT}wMMK-Zf6+=Sbs#OCyz9+a8YPV-A+QK4N@j(%xA`GWzP7Ir>UC? zWOsK5e`j}cd6XaT8;R+~0OlKhig3h`e`VWlNRC8!|9I?GigBwkF!o3AA0Hzdu0@Rc z=n1p#lUH!YU1e`h;amHaaq#oON+|=tJK)j(tNiXUCMO>cv6s#=Vx(cpV2yzggzdz^ z(M>T~G8=<(7lV@tByl2YeXGa>T8u4rR2PUT7NZ(O*MLV0u7%=BSs zYJxiV^s~(XCdD2-{ti65uw1gSoL{y|^x8Hp*j{q_8$O%|s!nH1a5@F1gAjWW9O*ye zb1;EgbWWuByAE*}21tPG28iu&b4Qt{hmxul4A6}k9OH;kD)HE1rS;0dEAZUm*Ru+{0s`*na#&piTwqmx^CqmxUcD8 zJ$@BXh}2;`=?|R1Ib0;8eXwby2ls1e4&IpNc5EtUKQF${FnDjU41&(FZX`4~gyFgn zWJ(d_V$l(l9S0aJbKW-$oY<_{z$?Ikq6#%zVbysGwwFCcEybsCWz*+&G-TT5Cx?y5 z;NHJJa10JHn1`FoU4YJ3wf4LNI)%+6qAkC}45%-}rgwL4jAn?_?*t-cov@%_&^VsIvbI;srxFyH;NUq5C47p>l|XM5zgl? zy*=`8w1arqxn57FqwCoOV+b790z=flEjS*-qmpAl6Gzr8B!(neYh9F!C^)@eaO3m^(!oStz)3wt_>&;`U1ngPdR6GcR%y`pnU zOmhl1$zUvT0&&~~&O{C#ar`Nf#NU4X69Xs^M28TV6Ldn;ManR{V12^^_|kZJ(u0NU z8ajWP8LosD;^kQpfQP&gnZ8is@G$zO(tZ*Q?e%mqQ>3KMhhyecCbA;ujvIAspX^=q z>w)8E55yBZ2DTH}?bPz2hd2$6An}To9o$}l>Ji7fMTcRh4ctB}XtS$I;Ch#s?~I(c z+q}H)?&7y^e#w!O!v(jg{hgDB{HKj29^!~TyxaPG+*6yT_r~zI2Ra{DcQ7UFqQ%Rn z^DCp+*fE{h2vdh`lnTk!ie$@;Vd{WUE;Z`4?{16Zm`nhZ0f1(;Qh2g6C*}4R1}NVSbYPixKL@S ztaJ@cw6J74MqJQG{gIV$T6{G;Tpsx}DSsN`_As6jo10e}&{di?;|}nwu^|LQ zVZwMOg&KZeyKMr!Ucd8QSJ9iMJcWP)QTI(#guYSmAB18!C%xLJTQI(^)gt45JPumI~d9$fycO_EQs zCOb~(D_?QbsvXyXB8BQwuTP}$LmDL5C(RvDtcwrv-&lrB$&_-ct8^$3C`??*Zw3Mf za=@!PacM3GZ<+aEiDM91BgMiPep3YTgPE#!26%nZ4aK2d#1m7`yo6TMiU261E&ps`<<>E~s@W0{6dKx9yzcuw~f?#;bg z`4M~uVi*uljlymt7aQ>H#OM~Ieop_^%szULuh2q(Dij0)BX?Cjb;F0#kMGX z5TmCXO*RSvu1^WkzJUAD5%N+60uch^{00G5qwf*b-=fitA&Z2djt|I!w+B2C zrt#jojZ-^CPaWJ;`xfS`6e|uCc+kkCkBbvWA?#dg`y;BWg-vT9=pPGjtvoKtV^NNP zo}@cSh=i+5t-`l038R22d;Jn`FsKrhNk!EqYi`~SZi*E*4-}ow9R}6L_Bm}(NELY5 z4+8{G1>jT0N#XkOUPw&4w{mp0w0(Raw_fCQ*kL0?l%(?h7VkGcCjb)?JmMjHCzmG| zpN)r&zP2F-`yL+jKnn2Da;l;PuAqj&TCsHY2<%T1F&Zi>rX$Mu5bmRdFp)yOUD`dk zk+<2*>8m?u;~CD92P1u8{0wR69=qrLoHs6?iVoRXrsg01%r-VW7e6HXXm)( zYo~Tnfvc}t_P!4TjLM=@pz7eYwpEo{MXwJ|_}#KYuvD0p0E1i6l}d;e7**7H#I>V- z_^vVuIcc8tzyKG>v?Efj5ORbGxC2>=(q*}rXwB#Ezw-<*S`rr2EieDLRM2}ry>+ix zyZjakmI8!TfshJ-Ova;p=SV+0%QzT3$jBioh9$<;;MoD%&c5qd2uV&$>kw^K;-V{v zA7XcIoxS_efl@~zp)Qmj&9DlA5Gqql2@OJo+MtUOjOk)7bz1)s7Oh|d8;be!T`o$d zpu$y(hUcUZ*ol8^U%o6vu<_Q76RtE0H;RBbzrasDY!q(*PRjSv&Q0M5u>$-;Wh2Ix z-yCCb#~tV3D3oDNLLDVuzL`OUxp}PPk+s7&`mrhpk^D}+pp)Bn`)gnV5)~njy}&@0 zLmlt<%SH97=zwjveHD^I&m=c6ZPF9vteP8XAfvV#CRexL1330H((7&6oemWTWh)nt z0GERCZmeJf3kJmo0Ixp#uSqWkz3#fz(dzAN@BPAK6uEKXyg;Lx`IUsqRxltvf-;sD zI`%EkC@T~_{8Wm>R*=k!v4PutorrQ?W4~`ucrp!OY`OS!gE6#P8k}NKc8()B{DjQq=TB78^GoS{sJEzwP^cJ;_d#^>I|&oE z(pY9pfuee;pfLwG)@022OxNfK#9dNvwiWaWJ?R!{URyk)!NnovOBK0H#6f>!5fNq? z{m^~ZICdSnTL!NXuh6iO6PMg>bivDeKAVp1DMXFv@k*Aq$-~dJPJG$0*(yIIIzli5&MQp3n4f?@R$HsHv-!Xc2 zthaxqG}4k>=NN~L*A<5iE02fEJ>|@Dc5!G4aDdI(&E5|9>HoL<1p8NhD#C8I(|3D* z*1x^I)i+to%r`Jx* zWewNiCZ_r0ke({qh1w156@Sgt97%qtzcYuX3%f&NhD$1wIF69bFIg3$vumZJ^?*h# zvTj5_cMSxS8D$LYCGnZz;7|Wn=uunD66);gu zWHGg+*1ObDAV7)bOH4wfVkX8Bh|c|5p+UV~EvnT%_OK-RZgLY~^b&{^DUr<44-5BZ+|vAJbIu2X#1+ z3k7UA%Li3kAX32zA4_M09+>LAce_`#2$R7OBlEnKlUSL}H3ka%fMgJYg#d4@?~f7{ zwyp`GMk%HgnTb}VogGW`+pnHCg`&kC($^pGf^90w#=?u_B{(FJB}m1%H*$+_9=%AG zRNd=(xO2@8%OX8tU~`dn8t?FSgL~GHnz3J1cH6Aoq{)afS#3yjz$6Vmm>#8eNi`jh z!X5Qi$1$_why{m>wqty1KAT4exC4B6Z#9oRz8Ss4|0NJ_{(IKJ5BK_xj<(kmhsK5> zjQ-JkoIWlU6(*!{P#U*o;~^z0VG3fN1tvZ(5+XLroFo>Sa#j(Da=Pl_*fIP4k#c{) zK=#+fK4g(P4SI+GW38_$Sv|FZ&7RE!2OIQegVk%iz-8qmgz5ye8&sM(Fv!4K6b zoF}fbnxR{l^MRxmw8^#pP*v3h*U_#ki}o#g-R`dEj0iG_z-JWy_h@^8I<{>1 z)=g{EJt}AwV6>{KFjV07cw33$Y658unEWd2TF61A4T(>?%d@E-Jbp~NL|qBo=52vi zV$acR45d3fU4I;CAr?h#)6(|}oJiIdb}6T1=AIHXN5;jzM=H%LHWgi)b8XqpQ*@tdr(nLx-X>Y zJd%9NbkH>Kk`b?IxPs+o$2|lib;=qw5NDQGz65_mx_Q5`eR*XI7}v7lqb&dP_b7rs z(3=3R*@0d+?*~s;OJ{N^<4H^eVOc$}@?9sQtU=UPtLC{>QVWxF>Lu$36os_q`WmN{ z7??cQI6o+0?mWua7%9Vy<+;^sast4+tH;Am``wZ!T zmbY1;h6p>4I7VNOY*e`Oz&KRw7e6cF#b?I6}WX942v<6#OzeRu^(# zsW=}PS(H6R)YD9m0)d^$9Cs2!Sy5>oryP^oREK7$Yg(hwrX)zLTg%Z)V54|9b3afb zrf6 z?XI37nsu%W&`7iV~9W76hVWCY-lcl`K|MD*1<`Ed7g_waa2>3uWB0H1%t z-Qvj*<$8%XlUYiw%(0zFctY@|!ykn6YMR`a8|Rug-YT<7lPnUOrsPT4h&GAtuA~M1 zSr;YV=D<55y`>nV;l6i$cY>L;$&D+Yo+3U#V=anJ@AMS%x=OO|@~Dk`(9D<%l@@`W zl_;Y$c$b=HQ#EDbrS0iTDlxt(C|%#f63HKN0K7EW>Hcy{zw~s5kcj~VP-5ai{bS{f zdoJz)d(GxEGS048WQ>X|r(=Vl6)E^yVeGKn)5m;^%HxUH4^>~{15r_smhVV53a#3P z9p5=|k0NQhq6(9$>sJ$F*y)vQlrUx#-c-xPCmD~JicVQyv`5V9!oGXgP_EE2FB~4} zcB#P@*;Oi1>PbJ#X?Zkjw`jJP7+8qZ=qds0J*d*6YihcO4Un~!s5 zYLaRw#|e|Z(M$L$wS`jUG_LSEcnzC94wWo?Avc~orEi(nCKUeI*N3t#El(4ez z7L;`CpOkC-{m|Y%uLcZ&%|iX-?6#kMAq1^>fAItOUn*z14{)K^?RtMO?c@|u+nhlF z-}7^Tv|)>Y86AUzI1nZp;{K*Ku2=M~SSsfTM)@dnXniU@E|@irVeRLS zA#&{W?pNZ0|B}m zwEu#*M#DDwsCw!vIMM=Xdg}=!|GR6p(J2TGDvL<8BSptyy`h<^d2v_ed2LL%2BCh@ zg_#0*1>c>1E!0lh5?-T#zz>ESki+1^%b6F=gVuxT-A}xIJ_Pw3PD~GdK8Q6MLq0sK zxf%1sg>3~Z+p0QTRi7BVb3YpnC9W77VpgO?!260IETlD^8WfMQX(s1$<@)iXs0(|w zeQmA#yv_T?_oD_-B;x*4fQkigc)PfJdED_FWopr&Ei_%DekTD?;P;~1$iFRG844nE zVpEh9llf9B8P-HEXSsu+829<2*+Gx{#5{OJc)85!vcO-D_9VmCd*h_x-zlOmw7yqD z6)3XSQy`rME_B%Bv7#j{?Y*U=a^ZL74$dhldQ;rtzWqrEFU~o3;U!!T*52E9i5#(N z(sKFbb+<9;>=9gsY0Fm!Xu9%!|98lQd$flpou7W;zb`TBuc=$I*k`N!=3t{@hZl#d ziaZ&4GD#YqyWslLaKbX3d+O8Z6q+W|KS$K z7QF5Ky(l$I69J9**Oy7xDv*G*nx)_r!1HZwXTN;f?tI3qd@Zkyjo8AGk|FN8U-6_C zhQV+Qgga(xZo3n6c=qyfP42Dht7Q`(fCLDqf89sKKqHIZCvAP+?lRWaVrI0zbz_a? zUZV*BNpzI3jF3N++%tb4ODngj9Fd71!Hd@Q@NG#V?sBwHad8mG8i-MmCKb1Yo{c{N z8w4Vq!*HC7|1^z`pKcCUGzog7DEVQ`Fh3MnHhCeitDL=L)!SSiCq{o$Yx%t0_reh_ z8dz}V*rk*CV{DS5jz%1-%fITXHE^v7=I!-;_bfFVXcz5N{t56O{r-xp@Q{KH?DV`} z-g9iKY}5$1MJa1B<^MP-$0El_vo=VVXoYE*loeuXNUex-Vcwv!r#HC_ckMzM2|O_&#lSPq@!0 z8OijsfJSU;tZ>kSj*9YKHjg05WOn@*Mwl;^3yK3v)_J!0q{8A!s9@pMu)u|>V4Xu@ z(ChGF|4|IbR2|wQzexi}TfvfEfKO88&l3%Vr(>I#^POB|P4j@kDYCPZ^p)Y{VeOOs zP@{I)J6=|Ik?!`?h?2MTp(@l#ii0Op$ZmY_z2d5>YM*77k9^ZT03^WwgM?5!x0}NP zKqmI$1AX7XX_W>O4^B5WtPP>vbZ2eaBVfKDkg{&ekq7|lrdSa+C3R!))F4`rmDN#Y zXIK+^-}Cc74a_xWlyPBkIp#wR%ab&+Ct}upg1CtyY9c9%7W+A%chQ>T4JZR3+&1^y z@ZCJ})A4T5sF0*c*b}N*x?uL{h4ayV2q@8nm4{zfu}-xNwdpi}SOM4-BKres*}p^I za=x$VwSd~;8|!pN`%vDNkogk0Y7~+VTJ@;^788L}PxpES{Bm8>rPiBz{ zoK@a5sr10Hd{-_75(F2|$l;{ZWV(-}bw=HG3;TOoOI+I~8BkfMALZG#d_jxSylsX$ z?{fU>QSF_bABPtkJaSB>T>$O{`_9uc* zYX8WVOKvU^mj7N`-PR{kcE1gLa8_t0kIIU#+vQoEIVHdEAZ?o9Ei%t90gK>z*f5j6 z)iYTKYRRd(sSd#=>5hQZQ8s>@BQ_*^>t^{ zY^yLi@Zo(7{#XHpiQJ8uA}H0pavuZ5nEsr6f6+((#nxwsIL@eL>Hs4*wrbBaGBJYq z)t?Y~a~=G0JWrKDc)R_qolYZ_ZSepxP3Un5uWiIE-EKVogkR{q+KKg@OPA?o9UkFy z`A5Q2mp`%zf>x~{Bfe8O6EPIo=Cw8?cF{6O5tZGfRZ$K6)Gh|{h%7iNvCuteYDmjtVFgKj+!h$JO zR5x3w{epI>5H2e=HVP3jZCR)!!5WW{8{A}5TfgCJm4_+NY+xx~VhdwyOwVhAzZIW*ewu`F*& zd>IMV{YV;N=w2o-ciWKo>W1Z2GE*I;wTD!9jCJaX#wdE3Q9e}Iz>?6ax5_#;V^#<; z`VP6RnEScPTmoeKgDQtP4CE}4z2`1(j|byRd|lmoKF>{pmH@IY2mEiD(_wVq@0*d= zuCw*w+P>kn9YWBT!iu^(A>9fDp~{!(IAY&k_wLQ2mIR5{E=qZj`dvFg z#7y{^<6_=Yg$Dib#ZHnf!WkMRW!6&dvYzE@cySWHbOx8oTcphWQM@4v8wET-}l9 zP4H1GH$y;;0Uhqu+`gGK{~SxF9$j2RZOh;18vPxi+rjCUp}t0x=iMS9_(NFgpwjq+ zxlJ`O!_n<^#P0bPh>zsx+TODY^WCm##hMS>LYTJeZ@u$x*4hPjU6p<9;v^!4-iH@9 zPXJ0eiEgUPKmHI)A)f)0U`V=f?npXK5sb8GGbJaf`AXw+b@u-AnM)36q+G3)lhi{o z{eZQut^{UkpHendB*+DKPN$vXs;&1FdM0 zKxaRYK8)5%j<$!V^+;YZf`Gw8a)6h}-h4q=QX{m{#ARVg-uP|116CAYe4xXtRZ(^S6^#Fi6(gx!k;F$0T z;o|ayU#&{b02`3uG0)-|5Ongx%s3CRI0{(flWVHmu+`~y>c#}2LuG=|p~RFZNbFrf ziAagUJZLw0w4cMx_?3)Lh71XHv*N^a=G+X1SRAXvbNDPou)}oNy=LHkA%V%wDXeZb z_xjw#UfMhRynco?Mmm9l&!-gHJ#{M?#LLm*op6UC-314dopCVD5czTM{Q=!2n>0b-$z?4S(yiRd6+)#5P6n~X%< zRqWG>+o53E;!9+MshmzJi5g;PDlGj{tch7|X$&RyLb{QJ)K)C8+P~Cfmu*r<3Y%B( zaPv|lgU0*%&LE*MTqv{ z@le0ZKk91_8^cdeXVaoY?@WLJhYsR@2p!EBZB)N@;l2M+)8k2L8s&+|GWZpCk?y0SUo;P9V+8g0wfiT)oV~ z;c`5k7C;#1;^S!-H0M{{5s|P@oN7ryL%wVI>XsI9>1on zHVH@if_dPA&z-V?J`UC^_457_kptIhd$wE#`1&FLynGmKY;5GR`FuVr5QjvTo=mT^ zZ4;@q^KizDup`>NHR7c~p*GpbT;>kSK%r+a3x`w{<0Gh3SE2}lTy3L)o}o-%IA zX?DBELk4eLm;imzKcRG-CcWEDlzfO1^FO@e6DO#LGH5t^F#YB2{ka4n<{p}u{~oue zf9jAcLvJw30Fhl;yyh9ONp*V_Cu^`C6CV`#Qj zk!>ScISCg7-|-*SlYDs3n-t}gf9i_Am&=16Y0-#}bY!MY9hJ_Wg;IZQhi-muCXRhC zQrU3QDB&pvMa%pZ&&j^EiF0sFL25hHGNYcVhB78d*gw$5I>JS4B@1E|5NHo6W z_4RK!UX~Qws!zlEjqHy#m{!1r`OD{DXS+Sf>*jVb#^%z7&jt-nGIxOveIJ5CGxQ?# zr-t!2$(ciT9k=L)lhi0lOj#nMdWU6v)ujy8h2x5WvULuI6<4fx-Ag-BU-)VLwgv8L znl6q~%_+T%;lIsFk+Hfc0jn2Mb!eh`ZMBLjSEOXU&5u-=LLWc_TJ`aN%QigH>G3h$LJ@?T)Up_v400C1J=+8nvCErW9_-Y7-ROi?==oi2G? z@*MPyMu@G_*J-jz;`y=bzrl zZ565j)rcto&UL!_Fp;d|Avev5vz{o^!k>+((`@M2D92jc&ngeA75yq9<<~J#RON1p z8QmR5?Z(vOWGbh=s!%`v=18Q9T($>oiihsJZd9@}*fv~8Xwt^~aChLiTRnh<1un-c ztJR~{vSBl=+u`~kbk+GmHKzw)mahW-9XljI7f`2JukuUpannj7et!f_>5i0$+42Nz z@mn!OfC(1AkttTsx`wfM*G*8)NcT2*ENb3$kX#`oIwq2X9gvfnnu*B)8fHZ`>c+&v z1W#RZRXJKOt996z`ugPL2JxC~c7eN7``d|OEe-U~P1#F>x}cWE7r@ z{6SF00u&Tg;8M>$XCR%~)MZZn?I0cbEHf)}zm$CNepr#or803pK9k(u4_Oeq@ZX$H z*@REj1QLAp3+Pk$+_Q)%J(yzG{t?u238}wxqjCbtE>2V(2Vw65L}sRP&623dhtqK> z=m?;e;(l}bn`Mg)?C6fDl~CZ)$f1o~w&l}oyxMen-s}!muU1uyIx$Se5f4Me!2WUA zf6fM0>pZK-2vJj8^3hQ>@jGn(gWJn&Qa6G;6Q?RASviqbIfclSz)l0J4DrFar}85O z5h&Dx)o>sZ(>Y{1teNyq^F1b!3w04gn~-C1vxMzf+k!?5Izuy-A^`2MN+sX;iI8C5 zyn{&WYIDP?Ru~z@*+Fn@a-`3hMyZa|ClpGB?an)&Jz~L1OGo7M=WULA3nQK5$fxRk z;e+P?X#v!hmb#a(o?tEu;)unf5pXdp4@Pc2L~2*8c(tmR@OQAnsENmesR&Q2OX9c> zc<2xppTH)B@!(W}8^5RcX~MV?6lQ2Cj%il9rOlHSVxwr<)Q>(33LE;;>pHe;sLpO)tzNKh-128>~!EQe*Y(>t2yW%Baq4 zfC$UHcl&0!jx9h?R4A<{hd|-UYP`Cozgohq?mLm~HBpQ^T3>gOZ%UtuPrct&=4n1{ z;e1c=W&3&+2Q^54q~5Z>h?8Rq0qM#;#oVC701TNDXMAa*V8~i`7LwP}sl&5k)s(ZF z9v1-%h=}X|{%S(^Y98l;T=(bU)?@nzu#C7p*a9#x9cquBT*97-!>s?i#RUc|3@Uz< zOUi3djXkjAp*+8^(V&|}Z;2Fv(p>d|D(P$IO{ORjQW0PWD0DMVc%)6Mz>o1fqi5|` zbx}4v8r-*Qiu`c(6?vBY zglpgRn+H9*l&Z?H`C?06F<6)C%1l5&JR$!J2p-U?JD0P`(U%DH?m@Ch$cbP;ZK|}}gCGwVptO>C%agZh>D`F%f`-I8*hl~o@(VoO& zF_R7W$V<7x3w`0#U{bz!ygMmauFOiq%oLRh>4%xFEbJamw?$v6Mr7$8DRL!``b6nU zG>CIfS*Ik8)=TPpTmMPU=ko(! zvyLA6tH{LP;~4SpIN|{__HAq&7PLRSR;NUm_<do0={QDS9p(|uguBM&~QGpCd|uJcUoZB95d@meMmw>jiJEptQ?iM1eBSsCdd zbfKTHL_LGYBm{nZ<{@T2gvKXr`r+tO@vwVV-TksOY3h-D_ZLO}H)iBoB2v(Ewl=F~ ztQO$BuFBhrlMGV%WS&#{tlo~LT0A8uTJS!#GKv@fU@~9 z^ttYmKP5mpDI>+n4$RgMNmqAA{`-$>bI_QYEm(Zy@1&f#r&Nh_we3SV`xsP`WA#tT z0Tvy1!C6E`kYu7>j0q8bPJ?>jy15t7+;pl1!Xp|WKk$Utd;~sq&r9QZKLkqPJU+-8 z2H{F=dG9}bsMV){)WG9!{EtpgjRjU#6K=|UPvLQ+uU57jH@O3%^aPQORgJEH-yQdpUg!Y3~U;9EQMJ4RQdCG$Gb_=bF2Ut0&<3vW?ySpGlS;lAFHU6y{D z6D>h^Il5HS2I-b85N@4U>#$glip7}P8cj}9pPLy}do4O?1`Y)_7@ASsectV2!g|_z zTb=-yo_Dk7C*h^1G@bFdJrGfFOHKz*1k)BkS$Bi)^E~|}!*>spnD**T04{XF@yUrd&MsazVz5)X$&{fqq`zwz}`n_sW* zD|dQNAM%eM+lZwWyy&%9&a?NO1V;Zu)Hep!)dpMVgeOLm6Wg|JHFjgCjnUXvW1EfB z7>$$0R%6?2jPJDXz4!Zd{_eB)^USQZX3b0{3?p=nlXhe(nS&)jhAbeool($Y5h-Z4 zj{%?DDaSt=UO9+&)6{9&d$hF7M=E2Zc26``l)hg$WG6G&9 z8?%}e@YA9;3lk7E`rONE%%dzdNa{PvQxD_Tb<;sKK_u+|sZDA&CfQ|l?D&O!kCYv4 z;bl)1jckuEo;{Rqic-IX0^do~Z8`jGYIOsPN?~>Lxf&}ryO$AQj~>UK>%q&5NAbjy zpSd5J3lA&3%xa9`Txk=zsK^mz#s*uo-|Y@? zsLX{R)*g2bV%bDFbHC%rrw`n0^9RDz(b@UAa0Of~aF(=+At2^r(*~d4K50kax9x?K zKl?VdddeP_3wQNZ>9_Fm8lsShB;h^4y`Smj!!)Rj3J$4uz&M6^gr2b}Ut&a{Il}sJ zemKUWd4sHPCe__Zx3(S0qsRAro_l0u@8q0O@7|1WyWSuFP_INR-N&-}yZ)qddBNG+bW!2 zJ9a)g&G?H&Fdwm*z&`}GE6LyyDP5meTy->)E6VA1i;J5GVR0NOgt6Qs%%wl+ZSD<1 z^m*H<5~$twl1Sf0FSfD}SL!vM-}^>1^FA0%MC)3F?BEP1i|9uOevG}VSvy^gtqFLd zbrlSU(1C>5!)&0_I1`H5`{f~zzSAgmO0rLcAa}c}@lj`7AWF)YF`3o>kk&z=*v?Cd zVcg<8P1-*miEc8?SENu6>`5RNc->#wICTpZL?T*JqTdFLeh=(!H4m?=O@&Kij|*kbAUhz|NhyDAs1sj%C2vUwy5q%;n0v z*N2+Xp(?L`Plx2CpTn|tDwS`gutLfT&9tZ`>589nMt>95h*ec&(7RL zj8BdkxC>Ot0MC+pzXJqt+e_JNON9Fs6I;hUCWZ;dIAtz+Rv#sms6{3qdv_ASHaYiF z+Qr<5in67uKdYI~JKYez$+B<_=cRI5%wMcf6dF5q--|w@P(OqX#LFjxPmLSFKfnTj z!fpYV%81w3tArTK6EuI-mFJaM?2UZE!JXOt5OO?mxz52Z$PwF{*CZ+#pEgc)ZA#$= z``zkEpx~sJS0QIigMhBWygT_!&VMj(FgW%m1oCE1UHt~v7cZ9uhWHNe~_fI8t~ejCkF1ulSme&FjY;#UI#H|G@~n5VfN>= zsD~A5u5EMM;E&?@zi&KS;@=zZ?ryvR`xc_s?C$dzMhZTuqxe*6YwqqZ)sj}#u1yh; zS+^Qv^mIU5n9XbsgYbSzw|<;s5E^#8W|Zrz6-X?hHs&cMKhmDQ+j2IW*Vg*lTkR1l z?c7BsILl&v5BLth7`Y-)%*NCq$iCQ7xvXN9FfwsvMQVBZ(0;HUmDcVRXAI9&7`W(HUqeH^_LnuDpLONdJ!p&KYT0v1gc0eSfvhU%0Bq1DeyBzi=<0K^ zQPN9JjYonUJ#%1xIrtHI~~xyLO_k*vB(C&5_MGyC4thgvSYmus7Kin=e7ItjtC zr^}ulysbZfzL?K8nhPWS2Q>aW5_#SIc8#C1^$j;(2%hCX3r|&pH-BR?g$r2@u~}ni z*4o&9A>(t#tc$n(VV5 zi2e56e>N%?esyEUtUkPV>JrX7L-PGPI&OEL_-fbXPB^}MgSRLj`CrA2EP{N@l74>IicPzZ3mOv*GUl&Jn# z0U8r{k0>VtD>S&I#>ln6fPscRO^;fGk z{k+_oJ(O3O&;Q;&!vEr3p2+awBiQO#SZk%BG54XtfB{%)Ofm{84qw{Saqh7AByn{x z_9fpeq#t2FjfJL)%4VXHFSVNzwN~}gbcCjL!O~{dn30XDGAdruLp!lR@iaBWgblmz zlY(k5*+&Z;QFb``XQ^zo0&<;DN6k|Kr+%@o^rmu9V&4=H60@8ItF{&4*Xfyz*BW?w zx4&5P7C@8Arg$FwqF9>T(02SN@F>BA>dIQ{$ZEH7FZfMwKH0jh+WYSIaYIk9^QD6H z2Pyai#0_;>fq(K2pF7(-JD+?OToK1!Kcg@*=A>0gd5Bu=7?*Q)2!qZ~ox@MVo4f)V z?8v~nzK{aB-ImVc?fgCuE;}*|f)pF_gLF(GTW*WN%u15A78x+R!( zs25gkMlbrmca?n{5zz;1t)@fQ$VgJMxn=9d2?do`+#~q>zT|Hd&@mEs6WG|EA|lGp z&3#|F!eeLh460BF9Iv_I@k?S{fwuyAGr;15Ks`%O7P|SvIPg9-5cD>#$b)BOsWMjvJ(W2k(Mm;!Cifk^sfqiH0 z9R}}#H}i4dfbgqx;cK@pW)^h2x(W~>lan*tA62_Bq!(>hY*MLS2N5hGKmZ8iH#EteOngm02oeaJ3rGukV_WRvV)NzO(iPI?))+Pc1 z&9T|L)>$c#dynJ$2iSH$9#JH6gL~8paa?J zYXz6m6{v>DL#20oOr=vd!zn!9?bxN;!+bIcKkp+HVbqx0>_u7VDtp8+9)8<%H(O}& zY`x$QtC~6gojG}N&XwC)zGDMM@8c6}ck^#na05Ow#;;Bw@`Hj~0mmMO& z8?vj;dpc*>dDg)P#6r|e~qQqkkDkwM_sv! zIkvQ7X{&G2#aXS%R1sLD{DNZ7wW4HaZ|}GMC#YogZ`SnvFKdc)F26aHGXJRd74B~7 zCLo~$PSFXQ3_omzh!~eJv|)u%6)P#nNtz)6#W!SNoY_~r#s(SI8KyqWVP5w$xJRWE zjQb!;#*=FmONGFvIL?y6^17jdZ1ct9WPJ=e%Ssyt7pz&fvKkb74QGqMGrq81qiDC> zPUEO7oDQiV98jK)IOXDdB->m4!@8R;f?3Ws^0voI;%Vhpg{75b4C&;L`&lP$v zd95zH2CHa{}7a9#I=3LuDByqxa?^EcBq*wbBGqRa;8RPpg2f5;o%!zU++ zeq)5%=#w6RhAVNlJ)!qbxRLLxqgvnV{_J52V~Ai|Qbs^z8$QFW!RQ$pszY{+pDm zsMdbSv;!fpR`2(C8Cp}TunlGz519aQdxDfRRM2<7uh zUjEJ=0lai$5kuS`Sv@DxNqL}m{IykCJKeFhV&URw9utM5XL3K5P3uaJC7a*5YisL5 zJwGnn_`!7DsVLsB2Q0l#g3E&*&R);`JV+&rtt1UlCQ{#eLIJF@8kRP-;DM>Qfdgpd zJs-X~?@Vb$_2gc?tD;#BAdMKDx?fP6S(U8WJkHgv+U^6kJ*89}eRQ{v`K!Zv|} zzijLu5NtnKwBascW@h$l+u&}=YjrfDhc;(MYrpzbmh*YpM;8Q>)SkNCRB1|Tj*-9!=VwYNNg4~F@|-Bh#SoQ6W>a<~o5SK{uJ z#RoLe;d-6fu^$jwW6uUNn9s@RvWcB7@sg&bR54TnJhQJz zLkI)T1KMs3B@C1Nl`{85^3HZ|gEM{_Zmhn!)UOG7ho!rN>jyIbV)D9u%jn5yE|}#A zxq>$oNp96R1OBW^p|YAWXgfvDk8&`dV$qX=7ZOICEZXeTX0(836Ys~wn&)^b?~1Bh zVG@VBZa2HWpgE%r3*V?7At7Y8hl5ok;;&TaeI@MtRBrS?;iW|{(-dgJAzfrW#4YY=iXVGZi3Dv?28Y-$@v z_THcQ4L5zaPoN1#B~XoCj>rOQ+@_hIgtj=OZG)^AT@Y0^T(nDR6G7*wC>wU}0T!zr z{5V_0oZ7g%{nE~}e(@LOQ^JCH3d1o-{w2x`^Rb4IiY?*XEDfAptfRLxr4lkggkp0Z25>8%;G}6Eot~_XmGmdqdvd(%zxFl;c6TF z+Y3;47S^5v&U86s?@nO3m&mk!N&T-9Jj-&2_)A56LoMgd$q_b0_wok`b1+qi5Wva; za9nOuWi{kPbjmr<)>u#3nI8Y-HL)mb31N z1$jR<8apDjK2zr>t8wW$VrJ?+UM4XMLQ!D`RJBP|X+YiTUwdF!tu{#2KBFl3yq(qm zXv(y$29ASc+dm4^K4@4yS}{6#u315xYOb%0b*L?(1aA$6$sz(zF6eM%szh%sg||Cq z>L6-PzjnMHqx4hhdi5ev9kbJkz!U;o1BZ@8CY_p`UaHm7msqd?1(eoh74y)m>5wra zbrXN2RBm*s-P@Hu%IbQ)_*Kxe!}h8#{u_oK{}P8W`%WN&Got`Ww5ZPVv`Bz}>af0-wN+=Oux4@(Hhvswp!^WjVz!rh zR>)fQ;)Z&tCd{q(JxD)%iJO9NjhtUfEo~^bho5m>azm+O4)Qc@(kgRc6+VN4u`qI- ze@dl*i6zxJEW0SP*!eD6$7GAl9MD5O4tZx4d^wj!RBtOw1F=<`I0JKByJbX!0BKXG z4yxBW2fi+<#1Czo0nGKqG#0Ay+mu|#&kMI0Lsr3=ah3SLzhbh%3GR;F>uU1pI&?&@ zu%-baLX6!z4izDn?#(Yy0gAbncQL(XV!~w+8B9-Qz?x>(7`Ob9ds9dYb_*th>+@HMY7hGd_3qJHtZZG|5>MvOwC0EF2*BZn5n+*3S7j%1K~!TK zGD4oLDZ95H4S+wQ$cbbs%XMvslaIrjDl;7C|2byZdZebfGMz;_CArS2aJrAIJ049l z-o_$L;5Aj3gmR`pU^)hPHD(CVKc5Zw5TJ2JGgF_|nZf%L&Oy3d*wD1ns(tB(57KzP z>|R58@GdO*WK8&WG=Ff9Sg9A*Gmq zOiSDqnV3AOIt=4MC0>9IdA%%v>&BKY*ke5!w5vXlVMa#DtFWbS$S51VJSW0g<0w~D zY-2z-`^gLa-0#@=vH?;ZqChOd3zsu{J5%pr_>DHxoMJ)8+pK!F;`(9c1eZ{FUil2d zS!5<9^02}TQqwNSXMlt;flrc;iXMgadER~wICP!DvP}$6WVVxyn}@?+IzWW*5(K!< z6N7r0xbB=V76ddYp2UY$aC0xbH|X0cKK;uP|8s|gOl+c7N+vsl$MJ(p+9Yk$qK=<-+zS|^$!aDuNOcC^lqg5N!#8-Fs%pb=OSIW z{7t$*4@T{mG?(hSa@$p+a;}5+mHl<}W9AnYq?njqMG;4913YbLn-lah^<|xWL>+7a)zaS;AdD7LQw?+9U;orcDH+N? z|8-j6!%$J|{?%~8PJUiH++62^!up1t9JlGrNJj8JX^E{sA?-lIeqk;~z-0DL7T<>y z%?z5!Zw!N^k_UX=?hND}W9;3Ap7`3QJOm=aU_PP@WE%~f?wxpcXIDSd{c=6SG0#|@ zl~nWDLHkhdO^@vWeNXo(;zUsHXA9P-_2v_J^yzS0Vg)WmCpmucsa_lx*5Rd+ErycO zK(0E{>$a9tRpHfm+O^Iyo4j#lUA!@rhgOcWzhfilF5C@=@!U2YnB8H(>PMP9HQk0?R8^N>W{ejzVT9?lx zNW1xtlaC2M){9YA^9v?N^K5<8`~mic%bmc?ih^44?q*69B1)4Gqs7tPY&Efs{gS>% z&xPde7nGbBxh%?W0{?^^X=Rv=@B7=v_>@uZG@}n!Z%>`vi&&TJ0Qup&w=~$IN8YD< zb=ZOCMHx^J-C5y%ukgZ-yil&d!K=fkj@|faSv>qiBY8GD2y!$jH+k-SN6%&WY0W|2 zI47o8o^It^~SD!bv zQh9PInd+gv6-Ojw!)Xi};Vmsk_@b?x52&*#w3Zm?EpJcJRl^#Ka=CY3 zk0^N@z-IxCT2Hd@>NTrx&I%4$ZH>dQFj0iIYS4h_hC!0}3P>`mrahIQrq9MbI zp>(!z@8f&m);8)ajQRPcE>ja%lZMR+ny_8Sn+@j0q9Wjqz6ij%|lrK@@^DZawH$PQ3NAaNP$Dt zYMrWMOYp|<*NwCH$K3a4V;hu^KBd1J2h)Fe+7WZAt#7Yc*uaj7D9hFWG+&R*uuLrW zcnHss8fz@fx3~bq5fX&VkT1Tep27m2cb3eOgorbkpM1o42?WLeD?wafGUC3yzF}CD=$x^;KL-H93hyXcsy% zqr7~I)Ih#*O|s?hr9hE{9sF8%hN@bZ;g~yyhAohG^GFIg&A3wmUrf;BXCwpyS38o; zUXuPGHtb|k=sVd8Y)Z?R+SD3_Cp|L*NGc~PIuo))Ox1I!7jh)A9rnCi7I`ay@#mQ< zcU@@ni~)OXR!>HM1?Ovys)>sVJ_h?iesUv}9ETj}#2bs51WOU4CpF0_SaHiGs>o%h205yR|Mg3 zu10f^xf{enW!|bmpZhDuss$7(9NeqqtApFstz~SO;j46!`d_-u{~wax!D-WPeVX-q z)Aw=H5TtcgZbfN21BL!U;j=PcT<=~ABJK`~6%P6C4Se1r<=DYRnulk#PD_OajzuDb zZX>~Ji*OtHF61m>mF5$~w~D1uGK~Goh{uWaN1$YcB^yg)CD$;@LC3wm4vamOjbOkB zFj=fGL#`m@H-p&tTh_NtCg%OMd4V-NG_o24`CI;H@DV+0@fGt~*K>D3PcQ76zvy`Uzuv6b}5SJ0wD% zE(b-84fH5iSivk2#IMbv*EIoG=Xg)!j4fxJb1PU$VJPK$=_|x`po$;wJBB$nZ+m|E z%#MHU6|(;X-L{xF<*zFz%qMTkdFF%H(Kpe0TSgmt-L7tkeNPBRudG=<*U&_QZ|F#) zgHu?jn^UM$(elSm{#b?DAz@WM0~4b9TP#THo^xGv=Kg#%h{1?6@PGi&J}1^gRunXy zaZGr8Pvop)-hC-;U=4GOHk;msSE&qa9|5(Z9krvzn0oqXf&dSsA<`G1W_T_(BrNo2 zqz3IYjbRMKtrg%&+@6Yi2)cJS=I=}Kn?afMVn-}Pm25KGsKK4dRul9e_1s~D zBm|3FcXH~GgDN(kCiz{EM2-X}9(TmF1pKnFEnL4kPfVARPK3!0DVVrvu6M99j{n=4g-TC&E z``%=oviNH!=yd{2)Up3#U@@lmXE$&QhJMfe1vG0;wZYT2wbdw!wF*jpa8W2)O@h%o zj2z?gICfnD##cC?*xc@;L1AdOC-jy?wL`=tnR^Ej2dNos&An`q1?FzXng<94S$Z6T zC-YkLvv4*V&9i(_-3X(PH^m5a21c%->&8+M4lrz%42@gX9O8^a2j4c6Fp7dRljKbplAghe8(_H`S^IBYqslNsL z%I*W%^Yya;b9s=Y7t$o!@ncP@JdJ~LL^3Hu0C(*+3Dw;5dA@mW3% zpTjt4B;UW>6KKBBX5oCp-Dm9lJ2p(?D23M^Tr_n<`$rp5OjkErM&Hl;o@~6FUzcP% z9D@3iYyp&OM2fHskRq<;s8iK>7uZuSmNm?Z`6~iJTj%gCvti0PLV?%QgO``LFI}C?F{!|Uu`DSq{qZY z^9v~{RD7b7EO$TB;e@qp$sQMhVs?V1_G2{2YY^;Ef}DdjPD)EA`!rHxM5^{JiXOJ| zgk>{I6l6e8>;9*%l3670Sap2blqzAL{F=g$cZ}SW6iX>bh%jL%!5U^ys&y z9)nyHBSQ(sC{K#Zg~l4?fb-!nWH5!gh-PCDUInjo3g2jFh+`X|xg*HL4{q&@Gdhgl z;Td1M!J2JI-$gJxbTh)T#RXV*Hu3R!T{_=Bo|P6RnsAO61r<=FOSE=h68n{hHVn(X#;K2y0gO}i=CpwtxA^~Yi~# z!16?PoK#dmx%4KHK;WJe~7C<0FhUO7>tj~2Y2WGz^#6NqwmlQ z*viH*w3M^VO9$V0$R{LE^x!%7bK$GWXg@els~5N&c7zZ+*nLuv381G=*QZlxqzXiU z`I4X{%~qhv&%|>fZ^i?Sg5XP|Ais7ij$GWls65C`wejmI&}|#-85u+6)h?exV|9CM zA2Rw789KovQ#4QExpw&tkk1|*X3Z8Vh+vP0094O0V;IVy0J|sBRi)1c;vP?FIFZvE zF+%gnJyLL_>lV8OxCqeWw;Sw^?pFy;ae@x<8U=AH^903Umw(z6a+%XDV#u@B=Yi4_Do?<#iDpt(h$m( zB0|TIW4>-y=XQCwdw4u@#~MG}quxiQk`EfX{!0P;(fK;5E1B4aG0$Ip0@s^urAfwm zX!l}~fqFH_rb}o+yKzfLza2D<5b)|`_#L1|a$#=0%;;05V&tvtzZ^0t^C%x0@PJk$Rozq+%ew7d!3)a-m z3r*KI{o^a@e8dI}QddPUXYxalo6yL9@z28Q-zXWTor0bA=z3|*O*}_GVncE&%t-sI z$|>UD)u7lI&uCG^o1n~Zerk6~`Xf2GpXH|bKs^!xpxTdCnGt3S$nxK#7pHAC(59~r zl^BShgbBdO=)ZGEl`xUm3?YFwMtfTrU6ne_D|G&)SB)-p-Ht|^ECM=sMyJ8Q6k^x? zotRWEi9Yro?{Q{CX9=%k(wV;)JH%VCI+mDRA%jVzTef-AX+PXl%)m#($I;f$W$rz% zAG^_pqIiNXSGl@sXDo1v`?|@A?o*`L)om zjQ{zeh%FBPI`B2kF%)9JczsER$TCej^gBFVNIZi^-J=x%+0~mmPh>(9CL_(R^}4QX zYf62JMAoUzzf(`Fiznp#6cAk!Yg9=j=JViCi`;Dc>+uVY^CHj16?GOU&>q) z1E^1#0tU_CGxBgy79$j3Uk88Vtd>XlT|*U{Kp*I_%DsIS#FpQj0;0$^Nj%o23e^HP zJ;$*6+C^R_ATafVG+80WVG|WEcoO~(_$;oPuMZ#fIwFRKo`sXp^OW&0-=dWo^abmeNAAW1{AIKIn z%oWwm7W2498+ZaFQO9oWCK5w15OohPNh|02K$|u~&?rGDP8x|!E!4w=>Ea>x5qTs7M2HQf~7iHxU#jZoTg{jhgQyI=9Ds7lY`4?|2I zL90(HWK=Nm07%}09p_ssd^)*Et$n%IL2Z*gZ+>VF=ujYYdXpl}3f%(%j(6E84EBIY z48i_Y?XFCR0=&sA;&XDXnC-2)ae54?H*(XHX_ck8jg}sV6{+CEnm>}F8DqY z2k2&r>SXsENfV0)csNyuZtntGJR`aja9Rqa_~T(}b!ZOA@S%1vj=zZBNY{ut(aD-E z(+~=_6;USV)e||_04uSk$nnV^wJG#t827Hr+;AXS9Pzf62XZ=ww8=0dQXDWpDLY8g z?qxg@@RSiH-=kG-aZ*?)dRo+#q{}2dWDK0Td$pHQWSXG&0wu$c@DDZ~-?E{1dAhzm za6o^(&FCRxGfe{z1d<$-9>g*k{#9gZWo!c;$OPwMDx+AY3 zBMIWoaNT;aa@E+NKqsk;6q%Av6`R1qYP@Ki7@xKb0e-N%i5Z!0*HQFfp_KmQJIx7b zAxQ6M$3Zj;)?IA&I)qC~M{gnB37es3_hl62e6bEL57vj#uWc20H}?8^h4aL0=kyn5 z{Ex|oFl6OoZL9w=7NuD$R=65*Y_(+9QLl);Zoq2z9CDB1T&26qmnPQ96?^0(4dU;H zQj@poz-|J_`p|2ztUjkrT65TgH5QoXExC*f2!K=^vaTv>FPL5v)talZMn|2SI>Tl$ zA%z^Nvjc=V!B-1~{AM&V%yDgDWQVkh+M~rBRpStZ(OOW}MD$erF-g?z ze^W(25}2>Y$=;e;}AVCb9Xg1!shXQNqH@2XcCo-U;!(I-XZhiuGT zuAU5=Mpfqg!JLL6*q!^3fx*sv?3ax*;318el@0qCZeEez8SLr7aQ5%}ir`-FK%Nnw7 zZBtXJ2sH)^NgGE*VUAS^vA%066mT<)6V75mlTTxf6Gh}{yf$P6<($?KlTgWtHbjs& z@WLXuFKq#R(;KJIOYxAfH;Dp>-(iB^gMSV71Sm6x8-FgV5JT<{>>&uOIlcuz$W@K1 z;niz1$mE3dLyq)gL}J{Wq5WcP9i-iFo~PL=*p(5&LE0@7bfF`|yNW5An@;G`z3cI^W@SJQ*Y<=41L-6w(o9N8S;{!=KWJS*0BNC;>nlg9uX z{EXvBye4<^3R&Glw^~CkvHu24KlV!aoB#Z#tnCr)}BMTYXd3DJG5DN zIo)rs82Y#_zFo8qfy?6;|3h9)7KzKp|IGV+YUv!1Y?I_gMkpOY;L|gbJf3^YI`mbt zz_Kb6nUskpi}=CB>Q}bo&1l9HM=AarI&rlE2D5*L-MU5DBosHjQuT;(w7kWtejXa{ z_}X(=lb~HYks1HbZ*_bQ%tMw`fdHn&^3?XA}uEb=JYpQA7(KcHeoX=hggawZr{wrFQ8R^>xvucvKP=>^x2Vul|50Uhi}^ z>nGg$(ntJOQMUprDcStVxNIJG550$mK2BbZlavTs#o&_A!W>1!NsKng+R)e?0$R{E zF|aD8y63W(qv4Lw{eWdQP5LpiiAhX}aYW$@%xSnVu7*!!EY3bFsgZ<7ia+#D1cOlNB(R87P13`C&Xfa!n=N7Li^4T*Ap_l^vc)eCM3O#l4j~#g zAqEdQHr#+PqMPPYLky5G$p@NmTOlgqR7jtt%j-2DD11$aVpN#0S#7qHr2OGF5(Pxd zVf$ZkR+VcZu^51q)URyA$H8f|T&IjkG#0wZunEhp{_x^lm6WhiyE5tgwSF@)QBQ%_ z_kp`=t*)!(>btr<-+{?!GFw>@amj&*O=QNoJWY{(txWA-fxW|>y?(l=Rz6WoPtE~b zM807xxyk_?jjkm-j`MUreJsSzMQ^yL?A%RL4cai?165;B-&fZ_2C&95NwDpG2Q$QgWt8Jm|WqG}4 zM>b&hCP;Lw8q=y-#0l5!RYHlg63fh=94?_rW~eu0*ZVUnQ(}JcPZLAta{&^K=mzv< zM~4$Kt~A@0sXV;yd7226q(Z5PduX{!KiXqrDfUnd0R3Ywsr$C8tkt;uO~U>G&gsC9 zHKaJN9WxIuJJTj)06G6lSc2jcD*HX{Be4#TMFvY|u9?D%>>VzUXIF9RE$yDV)6#^s zm!Y6eJHMH_-f&En4rjlC^Qa)t=ado-eUN-g%Bk4*9GHdS-VdHx8Q74}>-_ykRGk;Y zRl;0Eo@}&8+N@e_W)E(GAM`PF;Adf`qP(C21^6u^+zO+|Bzn#1b!c3rffT`Yho2nF zUz0?6YVCQjUkXKa+vT>x?<9%?(Gv`cnbb-2jYl7zy|$==0D7ye z5aKIEZ&b7~<$Q>}uq}6Yy9eukJj%%+lr9XAZH98dG!p~$O^<1aapoK+ZtV%z~(7? z^{4a*@*j5s{byHJLq(+i{altb>^r+W_HjDR3DwB=YRST&xtQQPiLB_Kba+VYGP_M$ zW1Dr+BM|Kc1g(H4*cB}eyRM(F4ILeim``upL9axALG6Exgb7^9eqGzMU;gu@wKV+0 z&aR){K~fBu=3T*>%7x+L&psy<4L~TA9{TUmRWq42MzJSpkL+@(QUqb-ne^$WC>Qq? z-@z9*^Jsm0R@sIc>{WywD%i|YEDM65UfyB-!X_!n+>(Eo$6N#4MvB}9sP91Gtcf22 zI+h&%2zM)QyUw^|jmuft&A3ENYMF^bVnN&Bd~~RV8MReEqFp0`R*94d5BWf7EPa~O zy%-sQO}&gbHNz$i*`lp+B!G4VU=#~x{U8#}*y_EaVnTA|KD2EtWFVh{l}0SZ#*n1! z+UtqIV`6lAa|Z38x{sGwp_jeHT*^$Z8$|$&+io7hjug9*GA?mNok9M8I?L>a>f8_|JrtwXsF6RyanwmZjZVt-Yr z)yHeGzJ44=X&nD=!0M?xZ1dp&M2y21D^W}M)II)cnIfIIX~ufZWY-9QSQJ_V+m$z%Hi^vu>w`4PfRW*%WDzlx0t}UT zCy^wnIXjDsyZ}a}nlva;7=zz|*K=`LC#;h(MG8z=M&jCLqkOJ^7S4;^V~ez*4uqqJ zf?2gme@9eP?@wz$KtXBPNGaXqr>HPws@mn~y=EYgwy-5Zq>A8=TdEDmLtx7;KhSzM zZ2=#AME!?mz6aVdJJQq4A44VLe>UcWQg4NlAP&6%1{oSt?JYYbLpR?RG#4>~#26b+ zrsCnAI%Op*##EeHtZ$vHQRe?DQ{TeQdIevgkyrlKq*MNzyTB^P-O?6ykXy~1^ZKVR zaanYO=hG^!ifo2cA_`YDuyblYC&L(Vw(uiP5Nt})90Mo_ms>UvJMViGmvCBf0;IB` zcK1UhHh4arhYA)wim?F?rve0Ct^N$G{!e%ZUwrDCdi_ucmgH_L>spi^7=mJ<$<-t6 zyBkVteoQ?^kV zL1^7nI?f5qG_8T2>^@}(>>gupSKR)^>PMAEffVk5v(>MFT#}XHovSs|hpIo23?3Qn z9JEa}t#shr=jCw*weaUFv)|IT z1TB&3&gBw#Y7TkP5$5I+u6ugaW^;=R-@+F3_)@x+JH^G}Om2XyS5`LkJtA=Fv<8>v z>q!*M35NNvY{h>P=Xj0}+@YP2$dL+iToRy_o@-hwsTK?EasDh}ChAtZ@2xTsWqu2v zmPa~c7{U|BI6jJ$(S>G8F~Uu{2y>w=L8Q)$+K)o5i~aMb)YA1zrJB&CroRMZ_b{dG6=1l9%LpR|ZMSKgVialtqCE?<`Muc2ww;Wd9)6G zx!MInv@+2);*i=s2$B=i2_f3Ai)e8w3jkQ_aQQ`K@iB)%yvP80qGZX0U3%Uw2UsLF zsGEI81%bj}HYiYneyVR0^KZfCLdI1^qG~)%Y#*tVJ|xc~hoM>`49Y z1pxGeTw35>eU?KDuG&15eC>!461}bBMzlUbWW+^#v zGdzL)e@<}1f)#y!t0rpm=EtRiL&RGVdO0o=%GPlOQP7gj1Eml|nX&-dF3sBlRh$=A zqPV#dp}zClDHrR;HfgXB&cjg3$i$Q`(6z{|Oc?#^wFW3gloU!0H+KNINjnm-ka&xf zsWgNjoY=}9&So?oXAJ$5;&X0HvHxf^Zg+l;X}8|ni_c8Qgdl;i_Wz^l8pG@Cnr@ti zjjhJEowTuSomeNfZQDs>+in`OL1WvtzVr0GzCZW>eb3%AYi7-?(MqqM@F$APER%Lqre8IG ze7-_6orr`DsGEuij%k`~W$Jl&ecaoHty?WWt{zSOH^_7UZ;+?wyCLz=`(WcVC-$^& z;C(prUCptg_-|E`vxEq_nLjpi@bEuFu)iZ9IbY8w`d?MjAQk&@qsk0HfoWTa)+lkDm8}TK821^JNu#xCciJvo}t35 zE}Ur)KUvXDMResM@g<&ytfz=FxrJQeBVw*DoeZL9D3j4A2KV#IS0CHhy;^P61-g8N zA!R|v?2_1lO{5;bG3LGUa9)#|@_gLFkvv3>sQYqb4WeCm;L=4&$r6co2mH5Kd>cIHAL~&u0aCmJ}3YeCHdrMYojiv`1rJ zfcOIGjY-dn!&*fs6*7CMy!TzeP6#urp_uK8M=xNz;l^nUacGefZ0n1m7Y5a%R!kz9 ze;VncJHe3o!GZRSbvfHhP(QOhOu7S6)@(ZJl)UhX(7TaO1A&nkxl;>d%}T@w6%G@?{)*eja3K@nn4wPYYfhV z!y$;+3^xtt25b{5-)Z0w;AW0D>7sWa6#8Q5STHk>LB6 zKNrB@bf{}5JSZlw0c|Y!TIsV_H`jC5bA?`!nqIp${^1!v4-h^_W@(XgxxYKU?6~i6 zBxHq$L_8u3?bQafjaip~L*yx(>HQZwVG5 zp8g((&QIGkU5F@B966FgO(GMCW71s0PjNgaMOLZOgTeJwa(8g{-tIp2=b#miNmOZ5oXhuCHz_G*bRax92ScYUc3_Nd)?j) zf2zsnIsNPi`Eq^7Og1y2QXq1whg?mt-+8fmw+AVcLJRwCfp9Q1w2=J#(a z7M*4ku>D$kvR%tgX5Ljn$sqSli1DQ> z*21CC-naGy3OSd`yfjvu7TP&T-13+CHJ;|~tI*nHu#vAfQb~ujtraHLU~!64oUcM% zmrkp)+a^#IqKwNX27I21NanR18pRbpp%V!QM83*dw2-PnMdOQULk$bK8|7pI)D3Mx zcPJ@#k&}&CV9!slXqbjS%*Rq`ZPtHQ*PB2M_8@QVsp1cQt-I8=*ECTy<`uq-tf8^X z6Z$lDbJ8&e>ipLk#osXf-w(joLs$j*Kzq$@Z%1ux-;;C&C79MJQP{}m*id$7I3@J4n;O~G60L3v&P=XeshGGpl8enA zAP5E_LcntfHN5*}{{-lhF&v~TglISqMPtxK(Pm}dW)Lu$zTJJX>E6CQ*&~7(V!Vp` z@RYhJK(>mT@G-v^=&2Qtzpo)CY8U)u`1H+dXK1)@pI05|@Z-8nz#~ zs76}$<=&%29T=_el-MXrhJL+aew|nj{$$tE=My?|_%5&GPxYX=J29t9nbYma7GW-h zJ4}BT?zDB*wIDR@M_gtsdiAR@THQH*ByQTj7I$aH7iWK`JfQ9}+z^3#Co}$z4t+`E zT{m5kp1nU>)`nE%#zREVS`%pnnSuTU;-ucmZFJavu0S-54s>nik)h--EcBP& zc&N(g%9Ycc?LWj}PT5T-GfvVcTSXI8iAbo_YoDfuP{q|q?Dv*lyW4U=>z&+<+EaP$ zxv&dJd4yyU1ah`cob3jT%x_NhvR3!*6wMNjW1i!2b_SF15J%jBMXD#JZL+>xl!aM_}Qhls9LIGGMV~PpD^t`n4TLL z`>;S2kZ7Zu`xAOEat3t4Y5#TLF#J6ITeG^sxY{{hOEj;j4s@QU&d!W9E}(q0QGHIl zo!68mJ&=4+0pu#hOIKrzMin*K`A){p_9HIU&su6@7^dy2UNlU^nYS;k1md;tX0y8> z3Elf7ic%?>t;g=WXW01m=9#{q@sLL=k*f^7deu>h1GRr|*TyxUhCehr$>c}c!C{gy zFo~UDM)9Jg`!EiSn#N9OdF&&V;#kr1GpIfj1RE(-Bzq*@FtlJVyqRE6wjwHTn! zSTjXwr-4$v3pPZ}XL@L27dRjA88?CC^zmhzw6KNoO~h9@9%Ne>8<1g*{%6==>sH|B z+jL%4?)&j&n%HS70zHec(@fn+LR_Z0xMR@OjM^Wq1L-0Ky%E!d=9uU{#-ZNoT) z8KMY_HVBvffG-fb&mqeO{ z6L$<_9Be(J?tc0@a&@`y0%Lj)fq6Qmu8se&{wzEwR%w4>d5U2>a9$z_z+1&=C#QAu0t1c?M-+?W%n6qs;e}i#3GL!8 zbAXA$gzcb3iNe02KyxE*8;A^A)T%VFu+8WjnT@mNLfEr0W!9?2eaFZaXs{dq%HonWJq zzCyeH0TDFtoApl(ugi%2e8r_xuG#l_hi;L5;b$3vv?F04x#eJRyM^|C*mxVO zE)o5+mH2aCgH01eRIoV?s{%K!77ILIk6v{5Xa(OGEi_hKs>Wr#_?4m#YfO5fnHrCY zJc_%zq9`=<1z8MC$!ty_b;8D%??b-Uh#xivvluE++{Q?*RMpjIIu9-w!@>&$v30S1 zw_`u^Ld9xn3N245X1#u_23O2D1AD?vN|uG;V+De;vbFCVYi@qX174K4zr6g)M5d49av>2B`3P)WpcMZd`;fd-9WJdHUj#~bgTTYDKh zeLR$dobRj3>V&nvO=-=QWUrlNdnr2#;&=u=GeYqqF_z zp_Yp?D6jOw6vNf<8wyvM6jmP>{ABILB7a3k7(9p zLxx_*$RQIpXJtyqT|avF|{g-lw^|&tij3hOw?25NHrj@G}KLh`A$Vpr6MF*TBQWA1UaX zfou*4<)gGvwR{^36ipE0Wr$yXix=lVC8-DTMU-JX;UZT2AX608v}+<)uvID+{VN8R zi&6U*{vE&>e)1}`t~*n5TOAeoJv*kEm`M4w9zr+QccmZRCiwkaz=we?1xl)YI^5%C z2+r{bY6-4(_dnNXjd0OfKaV6)yK5DV)#*5dAmtHcHM4cn{Ofp3xs@yi1k0UyoCu?* zZSQ&#a)PRW5*p&Fpw?1|1f>Ic_~PfFLL3RMi-(1ix3|lc`}Lsg|I~7_{>KDbvWEfQ zcit+2-MkJyam~Oci}SjXd|k!;qSmE86Kj{3N0<_uXloH%{Qaqs@Lzv}b2p{TgQ(+1 zU+i(qaC9_eK;uUYvv;Fm`5=EIWKGMvtUv(A!!N9u=BwLwn?-dasPMM4Plv5Z^ zfZou4a&jRqvvQmY+N$`!64CicFY|xl6!E-A+o0#E`V<+Hl(-7wJQNuQkOfbT;P5~N z_A83;zWnzO>tks{pFw6(g^@n^5a{eyMKO@)N$AyhDUfzjCX^!9I-ZQ(>h5VGVmHb~ zu~&SAXrdOGp;q%7E8^Kk7pTN;_k{y9RV-1t8~*m)5MSL&c7w7nw8x4y6+F2A<3~)m zM^FC%y>4!Vm3#7aQl9(A5GVOB#zy+w_0=A-$8VyOa~05*)0Pi1j(-v%kepH`(_7|3 zrg(W|qCkBSY_~IunRDT}uHNta?e!6Gb;=)L{V=!4TYoI~4c#8yy*|$D3f2#s|MN-V zZwUYSq@g;Uyt7(^kCP&tD7;15Sr1QpXi8<`{2!a;e?%e@snuoCR{OR>aic}kIi{d@ z8Nm`5&Guv$6kNWkZlMkLMg-S4MS4w1rxEdeum&cT#O~*9h;*k zh79FG(b>M=vywcI=*4V!HRp2gbCM}D@`SIGUO3RMa|bpzGKp^oVmvzyEOlKGqonV0 zcl^9uzj!&Zak_tVo4GjEkmmyxy9EE?K_tMDdQErxb6b1&vp2YLJvB&4Qf%~|92?Nz zHzO*hhXA4T~1laUC!#sr+TP}glF+|-=0|G`LE3&H%DbGnkL=+y+DN_4 z&aKZ4GqORlKp>=QY7_Syl@@c_Y_jlBF#r+A#93KcNj-YKcp!w55cEHsK!W0b&NL-t zcd1USR_J8R)qzaWKh_`42|eo=mUM?J{A@$6-KNUB$4{#Eqx|O|4G~s+)V>rsRIdC1 znKHc0II~TKRqDZ0U61ZBST(@w96-aARdI90~(>iG*lyiMOA&Q zPCbEu`jB(9625^JAAEcX6)b0Ma_>2LbXVh%CD3dWP9NTlxsL`R*DUrx;Wum4@%5ZH z&v;_!bq4et0~!t`L;XRm7=Psxz4I-YaJwm9oUksy!qu8wX+j5I59xb-2luB~tDXSu z&!HmFD{cFq7K_}^b~^RVx9duvi&uklNM#gSyxss2U#=K6^EV+Ft8bqbU%Q17?g@>1 zIg(|JM-_14qo5IQcUpHIjft!4a8~ochn9Coe$g#>os@=r8li$)ATU7K2E_wIBkFk+ zh>qmqh~Obh`Y7cM59><$;hEnY!c*YU70Xep72DoX_2&e6Zl8>B3uy@87rF1LWVkz) zS$66#Pmf6+89L&@?X405FWt8u6a8WaL)|vQg;RJMdR_mJpdQ@>c1%e)&G0ASuZB@8 z-rl-B2@E-deaNf4gMWA;5;oaF4$fe=9vwaW270V0yj&a9h*=hjcn z`!G+X#hO#p35ymCjd_+REb<>NA&()R9ZTgJ=~{->PZ%qYzrm)kAmp`?EJuD3Fbijw z5eIS7EnL5f&JqMDA#jQ zj>KKO4d+!IWsUq(n%WOn>B7hLNrUlh-f8C8K4QQXWmyryAipW78(iIi0!qM7nrtsq*L?D}(Q$yMDffD1vySpwC)t8jVc{cCt6 z{AfzU$pXhdbSJEDH|}1BZh1IWzP6c#!ZVrs8$dZve*Bp;lqP6FKxEKz#p%RS@h30{ zJK`UB?01SMN?E4KbhW%m+P8$ns8_}=-37ynLK~}ha%t6B^SwRvBT#SUXq@;jj;Q_1 z$E?NKYSxx)6^7o|!Nau_^MDD zx!ky9+UsMkUSn#d1>IEsj@jTjICH{I@$P%2GS3LlGx(dV^?i6)&Oh~p=;yQGW0a)) z!gF$Lndz5wE!V|4z{$5ispSkAcUY77B{wqA9_~G@oRDI$Y6h#K#r<;;(J&iTF-RVF z&|N_TYO{kLpwRB&J%NgskoHC4ev|F2s??g{d*vq9M-Ze4eo7WMRw0W<NA(m8 z2llWy@$rYG6Y3~b&+%UWimTfmvpLV|kx+QG)3=rGk}>zQ$Y7m6m_7*9Pon*g{jJ3n zYh(Z&`YvnWe1AZUB@tg@wb^9+4=2Ms#TY;0P}6$?tk6ou=(tovpHp1qj(%}t)E zxVKtyO1JEfasBwhSXy znU6PVWaa3yhpI9J!j|+liAhT0y@?3ev{185nZjD{xX~g-3R}@WXxh_Rf@3LmB&XDH zxdn<6Xf12aIW2RHeri|95}y~G4^W=vLb!WmVwAop@n4yZ$qg!Oe(f( z?Y7N5;1>WQS%fSwII+s1fC)TO+F!?zSvkNt5nw8X7B{9U$R6=VE9Oa(4#6FhE~Qjv z=8A&JOO#hMJRyDZVfzDp=5-b!v$$ z6vLc5iNH_m;JMr2rNB<~EIE~lY+Q3?{exd!wvAPB_Z85e{!#~rf3ixTIo+&jwm4>z zl3u-;_o=N&M3S}rLRZ3pwAZLEthP(cU5KCMQ?IA@sn*-+bp_wS3NrUUmLv1eT1qPj zE(vk8E`Fuu;!YNPtq=3HDA1o5=A~BmvJz4>&g#V^S97gKP^0gszSf(eVYXbX_R>yOk-AGTgMhC~bhOeK!YR_z% z3`~;FG}P~~Kaq>#K|uZ-`ig4^G6^oj6qc}~~>W*R$YiAiW?n9&% zykj~1EEa^9F(?vw?fo^O5jilh{a(hcF{XU7d?wi5KS4RE-eea zGlR>rFqLE55t($m{!ZdBbcCpnHF>;#{YYKe$Ro9u&s;loK=i>!%oz~V7%=lmqEMU* zS|HKohe`R10S(S!!tpu_E?VDnRB)+1X6&Vj4N6`-yq^zidkG#pXTRow0MznGFDWQx zWfixmF%WF?dN{YMs9~u8(nO7b16B5IYbQ5fmw5C-`HjHzkMb*p_)uHFcEF2yTYG-A=!xaIfFf375&X<5D4O!c;4wEsY(S2rQjFPZ7D~EOUdPmfPD*#Xf1BVEdSB{ z-B=N&`^IA%UjEGDKzO4J+W;O6UwTxI>%$WMVn!u)1$WtjT}V213pdL|^nqQ@t+J_K zwW|?Vray>FWlnl!hBd0yn7A#RC9yE<&%v33=AIqHf8|j=*NPy5%$|PzIN~Vj7{VL0UL2j#W*2$P zz-j4Yz6FD9^M&Hd&(;q-^}^v?b#(c7GhcssFy`9J26^I(|4Bcp5xDLjfGSScbpl$+ zQwe95Q2fAe6b!{Cw(>f6%<0S#XC-0^TQq@G>9@O3G&GKL>jqK;#|~s0({G0)Av-k@EBj&!pm8dllf8K-k-~hxiY6Zz z%BO}`+u+wfl3fc2(aAO4rpMf2DMSxRmZ3oMH) zWGEO}m>c;{iLLLK=cwfAO|%GL3>c0}Qv_?U8g%l-#%1{BN#F;(4|=dJ`)dt2QLaAk z$J+<{hsJJCpUYlp`pb!@vY<`rH`yKchV_yO^h!H2wIe2PtB^1){EUWuMH}v-e|jSfY@11X;}dI zRko(dMp8R*JsIG#>gh(u+NW|E&#KvKVd(_BNV|Eu{(9$a@9ns8lgO^NlR2&)UDrRv zD#M(SrPxpeJZ9(}M_92XaG4sK0E}NdEa|I`<8d??cEwK|Xo*AzTJ_Z2v3_yo{ONH5 z2I~?rESGuLCMd{FRhS!hk(L~cO7dH%xAdbI6EaA}OL3DOFg8a3QXt70j;DhcIr zRUTT*JvlHD>+Az%(xD=crV2HrhI-&&<}=rab~}FJ>$Y%KyUBeS6upyt!g|M>_PXq$ z-qg1>EQ#aRs+P+6Xi4`fKbXB~gvo-o%oGtiBL~ksa+|v;la8QCf}v-WmA2qkg;j3d z9*@_XWvX7R2QIbSM(t*=szA{B1&5LCrZzggpO+t3OhvUtvdtGtGrxb|spOVkOHs5c zot4$c&=|D9E*%_H(+E__*6R4&FZj42UPe>$Hw9WNj(qki3Dg zsVL%O`(w@4-i3$a#L#4lVD^v!egNKp~indoF4&e4Ae4@Ihmp)!-wEE#slS zv;wM4R5l?m**1(64|;G>7`LuLjxK0z+`#e6feBGfC0&ztGnsn7cC*#vlH)u7hM?cW zeHQj~g03(;LDN$cbziKQd3^`B_4cXvjXPb- zH$7h~-=?XUu<)K8A0Bkajrxw_k9eExi0&f9KN)OaD7}GMGksK`21LZLhlSF-4@2%= zcPh|MjaKbuOZBJ+$TZN7hAtH~|AA(>qj7xR8z!@w#w95nZj^l~hot<9Gb z)?QYsgzKjX`g;@j1KFV!AUG(Osd^)DWq8zp0sm?l%aK6RPO{k8xRLgSYB(N?4S1nx zU}jxt`YBb)+pB>b?$ub7)U`}5n%#0}s=4orSt!?MWldmx)o}uV6JDQEWeLn!#e(Bb zj!C+hfr|NM8NJTWp}}O}dv5RW(enVZrImH1VKwOD+Thk?j$;#l=D4<~;Rb1}1@2^lN0}tlC{Ts zCVlsbYac6`8?%X1Plw(^*LB~_!KpQ6Q|kXk3X{CQT!7 z&hQKr8cN=M|7*L!;6d#aZz$NXVCiAc|Ly{=FckfinGcb;)aNfXq4~GUA77fCnvG!J zPJEgfA;UZt-hJYzz!`b6MXG>WF&X@{*=CA=a!(}hvhmkfSXPATe5Q=zi#gRF>%;rU z6n%C3*Umg&)p*&O>Esy)jC8U*45~jiDqzuOE-C!QW+}odea+^|2b1l*b^iq5@7_jy zs}lH}I*UxjtMx zHj^JjveKsg znDzDUjUJSl7b?_L{#|793_SQC z(JKG?^TtzFC+w{0#;3VP4#NqsS&6?;UpnRQt{497J;32kIh3?|LGEx*mDdtQ?PvHl z!h11In759r0XYYzbRlgL%5qPowtq8h`@3L$pdsavlF(pHe!Ak|3;*h+R%6+8@u1KP z5qCU2<6E>OUHa@@&<|s%3<()!<{iPmm#~)K$GfJSjuM0g&Q`e;gx)WlT^vLsU_mF> z(OPIJ|If-Ahm%C))dP;3InV~Br$It$L#A( zrF71>(`6{6zr&oDkkBY&T8yz_GGSG$a9n!%o>h=h8ROA<8T9dV{t=(%1q@6r! zr82MGfEt?wY|2R%!BM9$F)u?s9ssg~05nXjk&~f=7NyZX#uv(>@e65~pyIn=_-9WE zvp}H^wdF?glL|(|fmF^o3F!)a^?NQ7=tZw;?i}L0xc*^xf6Bv-_QDL>MkE_*MvwlI zk#=jJNu_~VcuAkUQIAnZ)m17#=y0>$R)@-QO+P3}>mrGfTOK)?^ir1JzQ~jA7Ql_J zw-xv2mvwu$Tgto%tA&bw+D7&270~j`saLMNx4p~OIlWfvG<(mLMtHA*HGecdT(**W z)drM?%-7#cCM>)MIRq zv#}}+?D92N$ZJ2W_E~h{VN{3-bg2F5+Jl>!R!StqSD-W6eSR3+;a#%i8tyZb74Q;(pVY|fN6S2GS zob-I~_ImDYk+zTWst!2}-bQ|_g7JAP4L#;rEUJ_o4n`TN?;X>I8l`F`M~N;ju8CrH z_O!+yP@r4VTosSLw9XD41^rZqrh=FBd%wUPX%XU>5onncoU!IS2)JluWaw0jRdKVb zu`SWln@(_3I{@^+^Fvih9#UJ9X2k}cv!-3t^UwvmwRTnfEm4w(D_wU&;9SqCd}>8g zP0jz)TE~Ih6ZfFGwm;hUL)slGE-RFAm zo5K#XO0BZRXhyr&>-tP4>~^vDsR*eavzy5YMZ_z5O%7#vf%LGB z0+#eoC+FO_BsH-R1yGKTA9&ur<#)Q(qWm8`QP58>RPM&i&v6Z*+PRxNM{Io$*kBk?v#ulp3ZH@Da4%JU~L z$n9OC7BY?N@@4mr*WaYsM|!sxb<`MHgbC3`Wt$W$CQgePx+q@v&{l#J)fMd-VQEfzcT;s zvHsYeO@odqk3GxJt{&$?d0{no?0togMzpEX5UP zsiAx2FT>jTT&x%_VfP8?MCs{G&tBHAEz;O^=3uQ$te=YkTyxfZj^!@K(8BUIdQ+k` z{bdc7u02AoPBUmZrB$Z=cerF{d8JF&b4{`ZcB%F&Q|I@$rM>Nb_d9Scpv%h83jeo4 zjm}0Bxa;omr}ybd;?uCL$K4uNyapDY%Ysa-!cqkHyRIfm8bm1^qI-U^sP(8`su36_ znoDr}&<_?A89sidqH7^vC4+iuUvO7IvDQZ(r0fML7FX(=9S_^!nd&%1U(Mz5EDt<z% z-Ri*pGqz~@X@_dHw$Z(e66ib5|I__dXZmxeu$TDq!6%La)@>&L?Ye6F2@YidiMJlFL!596hq=hAEiP1kzTtF6U(#X^6lJ?PH zwWKx<#%K282`T&`n55QOuiXYEo-?US8Eins^>KEwbG&d{wY7CsZj&+Tpy}qtcQuLQ z@!1qzFlD;~T*g}Z>5(D1^-wKA8RyDM3I;9b;n0NBUde<==aK{BWC2=D{^_e4++Tqm zN$tBjEy3!!xG$*e3P#wXY?n+zpk(LSiW_lKH3_joZTugIf*;5f)XnbY)9re$;~~i8 zW-74mWR}>O!O4HNi-kJ1C-9(U+F#c=ZX7?R$C3pKORHwc!s^rBoZ$Y9X_nQC@ysQM zNXH1Se9X{Q<1Rr$XlF~nO&=aBevIhY!OM;3BoqxN3u46O(g2B!$q=S-gczG5!uUd& zExTtp{0YgqTfWl36}oW+T-vdtn?RT)Eun_F3^D|_FdhI&0!V(!9ek!ukqMhS$C%7`a8g6VWaOqRlY;pw?Q`7S zA$}bdXD9;7FtjA)2YOW4!(m;|;AM|Ci+NgTA4GJ3r7C@}1wwDKS&VL;;;@;uCG$)G z@~eb{IwTPC%D`G>KV|#NShyfyZ1u-`%6yP{>0<9`(As;nJN^#Yvni10944|?-KYEz z?`lmOTRc&8`7X4BymW2z# zJ8m9wTK3QtjC>MY3H}Xk($2Z;q9!q=PkWvDMfi-ZPln=*fwaXUI{iuihR`2dZ4ovfqcwGp8_YpOmC zOQDr_PCT<^ua9T2f4`4cg8Zc8FPmdodUFn;%3p?cqV4zaJ*R_%r4PhALcUHgw-Z|Z z;?Pt9o~f7e!+D$oweM)?%fZY6!NoU?x~{YnGE0N)?VitPrvrmoUjaCDpk!cD>p#GN z*`jNZyO!hg0D7{{n)-FAVB`}`@eySqL;2-ob5y?CSM8NLKn8vF{gUx{a4+%-+-wor;m!nGT@EJNTd-a_G!1iDp|kOSRpaUGgGBAeQMajVRCHO)O%DmO%C@9M zoRpahY2h8J$j}q;;1mG-n`3XoEI8ayB+fGOU1Wmn&Efm5T~Xr zGeuWP936oVhjtr19?v%#zwCukS3tNnLak1{Iia0m=bmT5rvY(*Ou>izF9bcy@u1of{YP#zIE-y!;b zM<6k_@ijBn%cN3_iM&`I?`!9SxzYQsUcpx`Qe2G|3e$H+q#;SaKNhU}%8+9sxAIA|$SzN~p+st}28ZU1%Q*G_) z9$v2tK~I}jVc9y{DD8c@TjXuigfh5U!rWv^Cxg@D2 zI2`yU&$ZZ@)rj3IXkd_IGilgt6}RwTN;|pi$o+fVT%otq@BQU`E*!;c9JZXXcUFkY zzsgCX>8QzJn9PG%TYt7ySNX`JO@an%_029cVWFg1v;%|@t1$Xl=F$~D{t`NDaT?FJ z=(B2tWLlab|J6W9geAlUbNMC8ZG!({bY;oY07#di{oFY? z&s&!VpvXC@ejMHKvQ@Zoq^uR(l%&=#p_o9oI@oz-4l~6A^hTd&P3QXBb@g~#3+k>* zNUK*ql>H03*$le{?L1x|-P~&r4tQAu>)%>@&^vk%U}s;fvfc~UgY~93OCyH$24`RxKH`@8ZmW`;b!g{?73k^S zCNHxKnwA9de4ii4`CY<&Rd|*^8B}Yx6^|NAL7r_)Ehu;x&Z>~j1MZZZa*&@-w!T*6 zLCsSJAZpm<6gEIf;Ndweq3Ba>Wo)dvES_7S zQckYME*?0;H4BY>G9L_N3AM}^AWso~F$Dtkdq3>`Jg$M&s36qe@E>4wY9W~Fcz>R| z%;7X%9i(UyR$USdsk3%HL;Hd1Ru1Sx!zlw1_Z+AZVhK*fN=Pc4kw1*CIT!in{Li{b zFgvNW0R8oZEldXC2Fn_F}a$#Tof#w_KVLqTs#{q|!NFKfZD}g;-VmsdB(v{OB z^UC7K^Rq$w=Z(fUs_|&vl%($i9U+X4qThM+gL(($_Y9(0$ITy zUBvp*CasUjK?Na0ZpIan~}3Vm+93`W)3OSS$>WI^{`&IWIK=i@#q3G@~= z1ufGK_KKqP!ZfRSCT=CIPU!i1HYp8D3Lt_Q0OIo+6@spc)<6);K_FAKEjoS?7V$oKzrx6~|EoIrWm0a6BxM57kxS07Yt~5J!t#dKSeU;SQ;>#UTw5NaH}a z*W>=48Og<`LS3%P7q>zUT_=_1Y_rSv@uu<6AcU`}xX&8{s4*ppQ#Rp~@j)3X(m+j^ zJ?30JHd8!({b0ia5MRS&u~}}gwXU-34{9>)Rx6^8)>)koaH`==deCGGq4VE?uddBt za*GeBM%%OCyuc&Dp>|-~GN(6hYO0<-4*T@l!@9QFw^81Z&fKluFtIfc^VmuOjK}uz ztfm>*1!?I{24f!~WYyd7+#X%jBk{p@+|dlg5JivGB92LkRIj59nUc12*k&$qeB+$c z>lO05K7Y2KL*BJ@2~n^7S4o~Kp^3%DHo&W`-LNd-K@RiDR&39QEDWXRbiu^ba%xIv zMS$js)1{KV??)4MG@X4{0tT$@jQt&N+W8g`Zw-+2*NDwZ&KRq`pjc~51aB$0PTrR) z&aDdXM2B#_FzjyQ=!GZ&5;$8xXdaa5AT@JKSZipX&&A+2Obi36r*(scg7%ZThVrn! zYo>RmdHS)YtD@=DSP$9TviRss$9%qd%nUVWnUi(;CZ`Drw#{oD(qhj>$7L3`REA?( zbrMLDsIk_?k%@edtDWAi;q!aBd)-|STWnG5FVyDH{0~! zbK({_AK;Eh1X|?7?pvw9RPpNPFNuxq5K59rW?HwSH|W|^q;Ft-&@b<(;w~SU6n9gtW!SNI3G|N6d{}<=yH~ za`!fsXPYpQMtd2J;CRn6b*$S3!+}_~NEj%+$ zgvHQlR6acY^TUcZmTl4FA1&PBD+3m*eEC4Jd4Q!F+f)Ztuj7JoMc+LA$ zm*M*GZj<2K=U93;%c`O+CuM=7P)pLio0*t^)Nww2y@`Z3ZPudO>`7o+YEO#OQ#Up7J3V!J7N2< zDb0$;gVXk*@<2^C6q?&)$2XyaimTTr`{T9$6;b7Nx2UVttN)dl5+=Vr$appA^l*L+ zbIl!I0w`tF#fmhb8$w4#{GFb!`k^)|sf>Fp&?&BgP!@p7z|WW<-a-Uq5#J9b;4ktU zpB~)lDW0+GlOBg=5t0;BlHx+HW&DxwMScMX4YDMk<}&MaE_LIalEjJe*EA;6Em+lF zErHG+EB1YOjFx662AAh!yMzhYvRzsw5Vb_7t>tXZs^_miS1&M@a?xhZ$A3O%uvLR{ zs%;FO|2ISjZB1%0j_1lQgq&&7nc@R`n)*Q8PYT&_oE_HTBuY*$CWCIj+mnT~V+2hQ z0rFpv2?AF^I<%8#GU$0*V4SeUDPfKcZ&q5&`>b$}_>w?8<0uF*mB?MAR)s|ai9KT1 zaCc&5@~GHD?zyjXEldc-fkuDF(15C4hvC0Y$61JVvoEO`Ys$+x}UH$23m=edl?PMI$ur zY9{(>w`jc(AT7t9yO7#Lo1moL!c%$l zsYqjmt}hDN$nckCC}(@@f^M3!cI)(|6SwjMkI-K`{Z7)Ttig}nJCQ`5ztf?RtGQNe zKXwoMH7)_oQA_XU(mTjj0sAwTC< z=)(V%^HCjS5cM~JVs;-ejfI;C!dRhSMz=V)_s)h9t_o2L5CAGIn`5DF?N?teo0aCa z=hGcmvU(wAdB^P6a?&OdxHKqjNDWm*6N=ho`=*HADHL^2C6+rVvHJd5y^dQH(KB$# zZrb8ARgA%^vE+7#xb`Nwl<>SAQj4rUMAP=?U%fB0bBkrF89iUg0Sdbr=L5qeujCV5 zNK_A4Y2DTk7^u4=$D#=vB8=je!BbmyDo5>M5*H*5FC42)`w*kK#?>`CbqKc*x8%>eM#y{ z#%uFqRUWJ#s|Hz*ETl@4l+NXtoGFh77KMY3(ICG-eJ0_nHFn-ORvCZ*UuIE(V zHzpn6C#MyGY*i2SnHx@jVfc+R;;R%;)*acaJnN4bKdWIO(>$h0^*y6I_KAhdg zTH(y1+d03XXIsR*v2h;!{p}QkQ>Q!_!t=v+nW*h^cQ1bEO8MA50Y5&2XZb!vR zqGwn$&7~i$izgxnrm8>)rl6ItJOMM0`158O@V3!^%wW>4;EH!IFZNmd@3# zyn!NIR^vjYRqkGInR|VbVmS22nAd!!@CYV7Zs^tWNkO*`;pDrXg%rlJ*5IN;+EmwZ ze5M7I9S-_I8)w?zjMutw^lGP=(7aMEg$6T!PN-(gzIBz0b&EWb9kdM_Ye&Q0$Bm0B zoU8D!)t|D2e?GV8e6iQ;Df9J@Ym2?D()oLapidU$F9 zr@<~mFLl~Zy@!LGhsRNLD~tZOhB8j~Y#-Wm>7Eq+;dwctp`&M$Xta|@DL>&-@%D1G2D zD;F!&1CAQG#e5%x?R&rmlYIZLzRuTf7XnO{!&7hYfMy z+beGd9=42{NuWMou5*_qVpK;@0^C+1-g=|KfmdCqE*Vx^Sd0v@HpD`Nap=?=kR}yb zHkg0>IkgOJq^943%#3!EdT-0`m3{48@t^PZ>1EMN!lNVi~g+E0vHUXoYGoXQB7bx zJi|lDM5zgVWJl1+H2ZS3Ig) zz;JML?0sXOPu=BN8voCz;kuy3D8)+`own0PKJ}{Ep6nfUdQr_+z_s##t%h_|uTvbm z?=)m{#|c^B{8C=Pm9P2j0bjAO0Pe0ldR+R~$Va@T5M=Oa%%M@r%1+D33%^sRIV1mo zjh$B1vRbVRR=qc94d1&~{TA=I%UR3$Hd2$C6r@HmdK1=AEavar2& zK|7s5e7l;&cKd+~^D7O7RaR%BIzOToV^`8IX@8abW4!YqvnUfJ#Sk>0W!zU{QdLRS zHCzEQZtG!q-x)v^SMBtxN0jsn(}a=9Y;D$H3#cdN{wk;yGfyw-Vp;o^76Dh;XC8aE zX3(HiL-e_HO@!-y9bufU{F$0BW0T7a9%|hDd%uQ=z*4vB!EH_COLx}aN?-br2x{Jv zH1FHij??NyJBr$oy?;AOXBJ{I|p&U8++G`(tqD~OKXH9Ill)Dn~MvuVcAwh?!@`2e6(6}7zz9Z!#{Op5iqLQb5 z!C5;qQOle57ga9gLH$8PYbSckRbXNN#j32Io|5*F%>dh<3PcJ93x-CKOm@Y-YH8Zo ze@$BeHQ!{be1Ekuk>!(4n$0;xTM#zo%=;+zmy>cg9~9B|`7FFo#+Vd}Kvm1*zkZ1o zJ9o(;+|gS{bz#bBit~W@@=|`Va58H2UBxiD)h~vGz2iBu<&NV8Z%(+Eez-%ng0}Nq z3~JW2O<`tlf0?^1TKkG2d~<65SmU1y!e+Nj)T79q?zGd*`*K|pKXWEa45l!8MsjmU zV=WXKHq4JDV*Q%XXi~vAYFSyHb|@r(lAhMoTyR_N;R|Mz){K%=sOFzD0}YDQ?{x)cG?nJ%Qh+ZV7$UF1Wk3NNSKEwK^rA)=UAOR@yjo z_g1yCydkF4O=Gh=#MA?Ow>Vs3leam_m5HvMkx6QgO7y$p8DJu0lz&uc>7aj1afAvn z%q&Nz8+Ckr-ygE99$u zTP~a&9bR__GNeB88%yYb2pje z^&7)E9aVQCF)gRa#D$G|YhXgW$XHCnw0|k`uFqp;e}skJv;RoMD*@&48Elm{Nl)>x z7WU-v8t?^b7xdLLI_@^)7-oj1rLpgFo%whz!|K*+43S%oZ||6TuF+dwqUez=TfAQg!$Z+(g^^GRuE{Mj9P4lR#6fd*?c zVuF1vtzA6;nM`#5B;B;Yx(guN6V%cd=+4HHnL#$vzDb$U+FHtLPa9D^t1pN@Mw$}% zO*w7b%|D=&LCdL&dPEwf;IDL8-|z-!*2SV6t}gXbT##N*sa)qd9nOWor1roZ1eV#c zkc!kFo)#}0tDP)IrhJBjk-3QWDotPSf8LL@!|nULL4K}(Q|_4MDic~!j^dX=9;8B1 zRxcCq=@IMp@dl$|#E{gkX=)r?O0^*Bhq&#ir^yUf7oeHpiQ;B^{Ef>Pzn3XANvUVW zXijEY4v`2`GbJVZynGY$UpLWkLVE1W{`CedorkiZKfM=_9`e7GEQGk&l~!}txW=v> zZl(AvzTo9NwB<-Cm?zo!BUC*j>BR?mP`H>p7_g-#CB5`bxYtg!pBJe0dl%Q8gQvdi zXG)suKwQsJMNhdTB$+O7vEFqtA%?TYc!_U?&g%>LzVE#sRWUOjsQg>tfB$SV*R-}v zw?F{>mf^Q{aZMWu?xs04Y#V4(Xb62O61%b^kcmM_Zrjd-YJ)oMz3uD|F#_&f3yJkI z3koU)Rotl8kfmCYKT8>i84HT5U| zzkg_Ld|d^I&I*iqi5d;N+QXcF8Ytxl9@eDW67C~=^x0&HW~a@!eWwhn+ariLf_~sq za`|+kXZN1>{qtMZYBtQ8{^e7;c4gw-{_l%MYxzBoyRy;qnVBoWH>hH(IUy{C46~`QPIJq zr*p*%ZMk1l%0W@dV9Y1t>;ucVPoAA-8yq);*;$K1-NoeY5OKkF zKjr-JO~+RB!8U&NU!1b8!Mn=JK2h!qX!pCl*Yn5N#68pYUu-V4*{p9K*ZRW4E5cET z54n=<2L*x;al`T}R5ed%a!jvuoQsQh0an+)Ztx$$$z9Q zM5esglYBHHr#40zyp}rkVhS7>ME7x}<3F})V;FL^GvWn5iChwWuU@4mb!_$E6g{J_ z|CLo0A_6A>Ua;IVvy%iwcgvdpw51OSESFFv7yi1RIvVA_{c-ixTdlHm;bfLN- zU@&~MU+sHy(Dw*)d!gAE^RmW;D3FERNT|D&W5M7)p$S9!3#V}mB_FrG6qf~x(e7*f zjOGd(2X}jNjOy*VqUTZ~rKcGX`+CH8$)ciPjRzAVO@Da%oqf;j?t5*;aFGdES_vcq z^@EES<&-(642JhqYA;tt=CVpuv4-5?xByUXf3%w7ay-}f+%wg13v2AmW|{4_301qH zvuxJiyE$H(&v{xv+_JRfl7IDuMeus6E~`Y=d<8!J>{k!x1%~?q3cP>RJkwZ&)cl4? z&KL{Hdb!hqd)t-K$KBb(*i@A#el2~M)`jXnzmKS#QU3FI^9jD(Q48Cb`EQP(j(&wN zqzr9f;bu*+CmdF3 zuJDEF@Itxt_oCTO_q{ECBo#Z&?me&}Z(&MV34F?RYfk3t5#rgTXor7LXCF6A?s51> z8k1%ZeT7aJRl#)+Y7c+1Mn|8rkT6HA^xQ#=Igh}@B4*hQYTC{Gxf9bjTBR2vHr`Lo zE%l$EYL1Xg=T5)+#3qS*d+hcvOUg$A?Sjbk9grDG*`zT|N=dk>b&bKm+nw-Tuj>86 z-5{w-_RNAF_ZMIq?2G$$vr6SW{Ve9v);YP{PNvvsMRzECe(zta)u^Q!%M3iwE2Kd+ zyyQJ*3>BccaU>7rz06_Tbc@d9YfVZ! z&PcYGybXMT#@h}JSvLW#@Zm7w_;8DuhmLwQ%;l7S$z45&vY(ilp4dW44{?g0jucjR zUyj+HWFvoTt>L{9)Zs0RZu`;?6y22CnQrJ3vOtJE+C-X4y&Qk-uAZBE{wlwzo**m; zHp_WNKYV;3Q;}zf(?CTolL2ZR*Uhr~TO|?dj3xMsol2j=pc2XK{LBiq+73eYtNSe` zij|d7r~myrjLF6-XVpe=^YgB@uRB*vI;(=$#ryK2QLZD?PoXni&jC(ScNyVik7~vc zMWklg7$htC=g?M?R5tm6V@Gw@;4{1iHJ@fnV^a=&u5XhlPIX>l%%@I zb#x(xBw87A`g8*sET|OqyI|%Q3N}KnGW+-ji@X8Z2KDo>DQT@vZ2uO(m<7J`n(5qY zi>v&DUiQv+n*^|@ZZAK*Sd{7U#hEV3xuG)J-3cy2h@Pir+$mp_U2cPBGTxEk=4$^R z>GE%$yc~3k4ft_Ee*Yc|_OM;X7eB?r#y(C(MoO#Kuzd7}&SIg%Nz8&z zK(Jfr(wpX{Z6LOg_U)yt#21!UP}Qi-IQOFz~rseDtcNzG!9 zAquHoFEMK)oB8{ET;u-WN08^h061LfK@W>IiIeuRGj5HQL`Z9J?@6N^XG`c>u3tQK z!*_bsDZ2_p^MCIW-Gr~%(*Y{57sC&#Z-H zq@g*&fL|pDq@{1F0{w7m4s^~j2RS7&>s$mz1_O|d?GxFblKew>r?v_k`*me0JjV^+4iQ~>JQ%X!%~4Yh!xQ>Kwswc~FL0v>-znF)`bM3I}h^yAk3H!Pc0 zNLT`|IB_~|G-R6Knh5)}ekunjpO;HPlVJgFdlcPHHdiwEq0X^u$~XMjaNqJ$ZY>Dh zz!q+7A?U)VP4XUlyPX_)Q-uf zd?RYLi(N!I`8q~s-Y0g#XDC+!1t1KFbZB_wul}ZzjW1XUP5*9p@uX)bu`$sECBfnn ztcF<2VuMF8v>WM234@B83t$L3vKfU(gC*vsd7zodD}3Ngzaprue{W~7ML2)SfsE| z=Et}smY8B{KrBdQD@7}zyL9VW7<(fIJGY&UL6Fke_Yw-FZrZyA*8!RIT89MPb}JYL zaPHLy)jDP~N6j0)g5#=uy>|5U2Ki8cYq#dT_nAVbuC*k2XNV(wm5GLJ+n++^ZR=^V zi>|U!b2q}4*$ZzwVa-66y_0O1uo1!LKI!3o%r-0h8C?wnC9{P^<-?UG>gmiK3)YMZ zd}&@n%&Q8Q{B;-fmNlk75D})>gB*l|6C4~)+lE*7pPT(x_-!ZPs_*Nq)5o>2?E_BN z(7Oke{W4MLKa+i6(}XYn!h18|K0M%BFW}kt<2GRX6NcS;G3n#~l!q3blnyOxe@%4K zSU^nC)TFJ{CfLwXztX3o3!_J?BE_Ry?JmEcPl4Cptdk;2|2||x?w+Yz?e-mV>XckJ z52w&6uzepz&OAAnDe=YD4&Tz5D}pUrV|Z{UUZ8=O!L~|kFB`6>+?rokTvNRaOWBwt zYvM{YMmBe~Di(=AH$qoGyo`rQsJ-zBc)KJocj&qn4&kq6XOp_Eeqq91ctGW)`#DlWDM129-OhY5Qp5{ z9glsye=d0LV>Q627;_hEGYv-|NU&Vl?O>$xI?LM(K$%6q&qSQB^$en^1<7C zZ|fFDM=tWYiAAgS$p$GCN<^cAZn6sPXeQ_JNe=^F8br_Er)R=zew`}jzeXSFlWjlj zMt3|Tze9>0ZC(EoU(5>;j56bh2-g$CLAjZ5UG!t!%K7#z{jo3n`e^i?|8e8`ZAE$U z>%X(p{omQq6WIFu8FfD1asuIC)ZPvkG z4ba?^8xwXtwxMMq!R-I)zAr8fNFL5F-pzcY4B1pl%XZ{6ANUu+o>3IJpGrZElc-juWsN#QnS}K8sTpclmlS9=iQh<_ zrQq@ih-C-c?`G`8Hgm&Tw?l34hD^4K(KY?bV;$Q00zTV#K5_T?-kz6Vjbz%!etMn- z|6XfRex_|!wO!5Ty_LUt|4m(dYK;%ireX+p_Q4n5Y1u2;4DGcM-;pw1H^mi)xY6^8 z%w{K>$1_S#6VZb-R{shMC36-9Ehj*(1zn|X+#QHR{CaVS+K9#Nh3k{+?J-rxD62&Q zhUggFdpBqg0GTi#F6{n+B!L29;31mpPbaC$`KMJc%pgh_oC^*!98%?EPg96%c_}nW zU_H`KmCqbvAvF4F@p27$uYVE78F6b=rJ$V?@gSLqRgG5Iwvt+MXw5%n5=22Brj6RP zC*MinH*ssw%e{)(#(ePh!Nw?PRL4+lz0Cd?DEz6u32YB(;^D!LFRPmy_V7#x{+?1Q zv{At`hc~bvs{I;nD&u0i!&R6&dVIn1_axxyhg0A4$NL*f`exTX%a%sJ)`jSQ?oziR zx3)cQ;jX2`6ibGt3mouwKgHQv`1M`7SqrqJegl`kXu&H_6rBDQZDXLLuqc+_$# zr5pDm1w=I7l$6y)DPP?rO&AECBq0Q>IF?w(!5ZJ3=r;;tq6=O)YB)sh&foIF-&yq} zVGe8IZP}EUM!kNn_dntT+X<0kJKt^^QWm1+)5cU#ddk{eosX->MszOZDGP# zo*Z|?v(bv=#*Xnw)<-iTFIyd7&DD@OEXYGjEs8x7nG9Dl$We~BYg7Xusg5>!wf~CU zRVYkJM>+$hbc;7*G88>9aECTh zED$6xkdi+smVGr_=^Gl?^?A9e@^D=B_Pz1gM(mhge+RVwKENAfkNeFcKXVhUPaEur zq2}i7$d1v(HTOt6&~x5J<$iY^+e}!1ytBS`*X-Q07{2y^TPQz1!xy?n(L}CL$qX@#B5}>4DzK8i z=Ykj3z&3{18Eoxx?f!t^hSVS^;3Br*6(_Q=*nD*MxT4Fzl#M-CgO^IBTy&fKjpeT! zYhCQLk8Qc4vM#Afal^EH7aWpL<9QXVilL-%Xd4n3`l3(72am7wOZ%U$P>Jf<%S5K~( zhqkRoK%Z8#%0H_a#!2yGlP6ya!sMl%cbbD@?*guJr5r~e4cO_MU zzf|K3Dnet(Kc`c;QT|nii7GCl21qgU`4f#`Jf+j!9d8GWQY)s&Eq^x8eDY@BJOL8B zeTUOQ^U8XNYrU0CID z?3c-JPchL_z!V?7Qb}Q1&59^oM*iv7Y)d?C$bN92y34wwmx8q8?8*cap0EnxRk+Jx zz9Z}xaFqdDv;FoHtoKnj3pnYYJ;pmdEWu6MdTuD)ZN1}l7v=2hX}k^nYw=s=U=1Jl zCKCbj3yZ>^V$j+p>+DO{w!pb>vv$pfcoCLZR0JKT52eorN%9D@GAP%9I#RQsAMS|Z(W}?qajD1H)+Ri(k z#l)r!hv{avAaLzguB0dcX3J)z7sV(kwJ`|U~g-w%kzZ!=se^lNu z_QInM@~%J`b!IbKsj2WYJvUlTm2ZP_Q#&2BxLmnQKN0(tXlbVK#(>v7qg%ii3na$M zphZ>ck2#6HGC_Yx6#~;w)mJD+=-#IO`+eLi3z%c&<_nLL#_h>&WT{b`|K z1TX{c0lOUEl62Owb!}MP{l7dLNV8fyOtIQI`xcqP%JuAhBM9rN&(C7n=L(Meg1Wd8 zG6Yg{mgo#MiP^h!JPjXOD=o?U1a`{)>A}6t%ZaVNm!DPd6M8QM$r0lQlkWxHxF`Hpkuyv{|MA(|z75$BZoJC6dt1Va67&ht&rDWPR*pviePh- z7e@w4Z`$b~>5vs}1MLmDJ+dT%VsB~C83ed|h#+%jQgHhtDZtY&gcxPo2YS-%ZBjyt zD6q`%2Wkr$CyXhpXMp*Hz1sfLb6Tqpg;&0&Kd)ypjw!b;!&w-`Gs+S(T5NI#zvT>i zez|`L*pw?ZecS(EpkN)f$Q&KwiNz>D#%_*$W8Fh; zV82kvv@%}8r$8qe|5}*9Mea`{6yA@A8%pUO;WgwF(Gvgd?SPLU9wHrO>^rUYAVO7$ zZh2_(8o=<8R$hG|uwHuF^NCG0$pj`05yS`^kpu~-55%BEB$*61TkzgfibVKDrbsHU zi=qbK79ExowXY@?Xnw6KRSBAeR7y!5^r3aV9sIMW;}J?(Lbb~@rElIkTOS*3#SSaw zq2qRC<1V>{BoZ~XytG81S6-|7S*=Q$o`IEWJ)E4?X{e9G)NUn`4Be?%8+i&2)#NilMWjhqWbBu8 z)KME`8E~<=$U+Db@h)+3m*PjUyqx>Ob;aRMMU%)k*}k0a+gT7X)~DfYUZw2)8KtM* zYkT;8pMr1hpSRU_8{ocSq1~pB#O}`?)85fBW2=hb2hJftafOHBap-o?WFv7p4?{sx zeRi1*%%zHfz$UZo1#Ec>hP0+wMGZSdwc+z0lZDIZic47Ya>e1{ERqyU8mbi0*qU&L zs=!#;!E={0Nyq9zEQ+e(jQY9|q@w9ZE|Zsq9I~O}BCkmFhqgm-4yEujiFH7W+20eQ zs%ga^fO`nr1kwH|Q=^5xhOETD-Wx{gwc6+{F1YKN@WQnic`LXnsY1YNQKjbWC<)c& zWOJA(VI5Ys7ZE_yq2tQdl~<$I!X4ad-q8C>rNtWAF5T`F1+UJL73BJ}WD{&{@6X}w z7gK}M?a+V>1ryjQiihMzPOt!U77p{zf#u+k;v~>Y(DDsd^K$C#k>1V73c7QV;2g?G zpLl;^UrH(xH|<8&-X-K`ovJDkp?R#UK8-7!kDTuAa6D^F!ql14^>&oOrq{Nf)4@dD z(&xSC@K2Uqa~bvWe*OC+{(aBg&A-!b!&z+7j*$@=Rf?Fl%o5(kaQtFHF%UdgwiyFq z6LWA0kRq8x*bg63@C%?#ov7jf4pcFK`AyYeYi&lACT3iSaJ(wEAuFO0qTiyB%&>J= zq{9>H1F$jffRun+6U~<~m4K9f;`>!*j#D$?sUuv}H7lb=b%%37o`>QNR}-wG({h-G zpvPSq{kNegzN&bmxH^7xqM`%0iV8``FV(U>>-QYY4{FqMV2212Vz2&;YAEmUuLjTb zs3BM9zUh20VIjg@00AllDiq7)_sFGskZ5nOTdFROTlz74x8+SFTe;_l-q=~BUA8Hr zdN(0=aX*Wobit>)4BuYXCfi8~(Ol*qc7}nh^t&G&mfSH-w51`(IQ6DDuufK3iL6WE z2loD~b#@1BXlyYm;Ik&qgdkKkJK`;Oly#c?;ma6DYlPfFC%W4&7*LVr9lrXC3o%7i;sDY;91E#4OhIf% zLZ3nv5VddAFSAP{lhuVBe^XjycH{}@@-jS_$etczF``&gfHOxfNZsDIfh->iDY!e))Ats`D86@NFcNo<*r9J4T9D85#Q^ApnPb1 z!rS9XG^0GrMCJdd$;~s|%Go#p*S>wOe}A2=Di6)aEebI$qAGa`vNGy;*Q<$&^ygaRaPhfh3jPw(z60b{n!_GNV^N zn0(s~Tz+(|!dJ`m)O<_GihG$;u~wc5sdNH2%Yc5G$gxnMc&RmK44}L8&WI+SkZQP@ zT50Ols2_T)Ko4upRb$RT4puO9OU49@T!qwusEV?RXRSA`r{T(jKPpUXtqzxNx+9{6`{HT8b~nNvRR z@3sC*g8rj|3LNkpv$XU5?z~2Sb6;KV&kwT<&&Lq(LnO4iYcOo2u%1#djg(A5y*-!L zGo+M(ix{tf{f3+H;h2v%b)cIhqbx=GRtL5^OqKwnif!(?C(GhJb@JzVGFlLft>{T( zCpLIa)?LGN&p6_tLB#o&Z_-=;zMMrfhn5lr9Yt)+!E?38MgSA`!L70 z96H37p%a>Qc6g?U{bKPo7mc)WeIk&d0&Jq}G$9aw%#d|T3JyV+E65r*b_ionYsMUF zwJD9!wBUPzv^*{=`*%>p)_@v%WHKR-bKW}JxwMgsK$9`8p;AxReoX1D#)m=%jcMXq z55jz*EKHh&@ufJmugRr6Bi9@ty^Y>D#Ts<49<(>4++a9`c1SK+p~{ATaA7!gH#?IRv8Z&)d&fQ;>yH z@ak+Tnyo}~iW6jl_@X+|(L=#oX{jP?%@eEA*!X_HFa!=7H`rl;?ea$&B)KfKdy-0Y zkDp+YWr$3TLYi^0-%35}>XSvBAXVM>i^S>!c~CY{A;RH~_>vN0RGtuL@ka!936@nc zxZ*R|%Dy%C(ghk#Vjgmd0pz_~!bOh;Q4vO%`YedVstU67 z3xyIze{>Clq0=ZyUS)=0+^bwNcMQRC1nmuHgcgy93`U}5aC=JnR3NUR z{Ni|%sjt=qI~Xpi%un4aJpOB;-D`Pk`^5IEEhexr(t-iqZuC;^9js8v&eOLkI=>Pf zwf&Ho?|d{x&Hm0_{t?s9x8u9(=f7UrZ-v=oV4XQB z6;cBqi8xnOMbnrooIn-H1ppTEchqIX3u?IPQLD;$S{E)zhI&|bJ4q(_T_P4Lhc8m7 zSjOI{Ct)p#e1L@F7?{R`c^K?oi&c{1%8?$_bClRNXxoAaoT8R^9R5Lw{mRl(kDQ;9VOnIvnmt@uLVrPz5r55%x5s{^QU?Qfxj4=r8^Vmg~3 zgIG2?B1jo>Tmc+9@+^_;f=*AYAaY&Cv%~ZoAO{tKrjcZ@ofUwNt+>A(v0T&#AlT2s z>aR3*i=0=$>Z2iKe)iUwlmT|6l-k*Uc5b1PE>gqIutSVC2pDcf|1QmM%;urgURGU5 z3|26`0{%53gL!#dAp}*F=nspWeI7iQo<8wt)JgIH&xyr%zi7D@>$s5m6i9SRrP%(2 zl~P5L*nk9lrgK(@wY70%S@~eGF_=5L8_HV30zs zw5ei7g_&6>y(b#$6qj0pK$8UI2lhyC1h-xFcfT*bKn~uaL>xZ%U?A^!04i<@6hSQ= z`Wa=z&#*&`-QL4puM=zvFav0HfD5Kki94Z#f7xWELr1?wb7bL7X+);j8Q+Cu307v z1b!om0K?FPTNytv_P5~q8b176)=I++shWONw4LZy8A6WJyu%wXigK(fUqI`fj>`d_ zTO>>^K*HKh_g&u1o^m!RAHnkP;aJ4*4BYVH9UQu)l8Xx>=qNmj#gqYch$Q`)8n5UV z)iLR0Jo(e*o@Z;aIn|;Hr%M=6JIbuMeVPhVgD(TwWi@}aYpUtt;e@&G`O^LIw(sXh z(dXaQ_8)st-x~7?%Dw#=`s@`h%g?Nc^8z>x3GKP?(RFU}3z!Ph2n{fFhsBk(N5RGg zv?!n`=)ge{Tf|DmzL9#RF^DwBpq-Hf-i9dh93-uAwx7VRxoDMG!iuGMk6oYxIWems!_shL-W~`5!(>oaM)<18o{4_QglbyFdQN0*r}(1T@Ib z5hBE7Q_p=M<-?!ja_0Kw+k(hI^fGiJK7m7}(58PdAt`wgEQeCSG(6*h_)0OmxU8O4 zOyo_0fN}ihxjc3yLz3xG$(^7jPL1e;4nTp9wo(%PDPXy1v9n?@OIA?9lIZ9sdhMpl~bBCqIg+K*%!noQOdMi~rorA12eEPCK#QJ9HV3l`zkeU%woV5}8NKtUbxGb@} zhh`}z7WJi(==(~k6zDy5=c5vo5K4cHRYo0bSE!E4b!MT2yAFSrAhVK}{S}uT3|65u zLIKRsnT`AZ0P%r;LdjxkWo`=`%(@ADsyIAp%opy-QF+zPgXn6 z3moqQMmqtDm6|V`|0*B_b)u&VGaYC9mczySqUH6GVICV7E&Vgi5Kez+yH zC#E-2e=$0e@nf@8@o-$CUJ{T8J$X!+5Z&$F|L_}Bpogn?3**Cy7&1j@S24-#8L-HuTjVUPV2;RBi0S2DUikmeF8&rqB8M09g z$-#LRcn<~}v_0?@209XarN0Ewj$T)GVgpBypQ5FkP%Y=0?MeoL^(EiWK`RF54|yd& z)w3-m{10q%8cfW|cA9`7b`O^ept;f`0j&k8sS)H#OIRf?>sJmH&rFENxIwwZshs{g zAsBBTfE#3ft?(n1M(w1Q`VOE2Vt&QMs< z4Jx_p+YfW#6RAl{hxt!P>&81g9JjIHl_*bwwz37nil|DhQIbN-N?zU5c{KSmj=vPy z?gTI!@f$@5y)s^HUAI>G-vW5ITA8X!KV#v4*;IY&R=3U7Pk|2;V&rYO!NPm^#=8dX z#0`o=8=yP3d2S;dZE~Vg^8V#`Yl;L|B|*VRb0}P4k#e&NJj?vKTGhw62U_L`MrUls z7f*h4dQw0_GV-v0Nof#`p$zydZB@#Yf$G$u>j7k#1^RkuYk3AY1vvwtLXkLah=2;5 zd2J=ELy)u{dfytEP}YTnD%zuE4GJ0#ecGf%0HAE+VV;`0_R)#8Ja4*GW60b{34N#CKlHiST_Km8Z<|_i(eP_Zs1iRDz z3RVSLT8Mgsp(PVeY#~{i64;gq7C@&DX*cd=295~vR0BG0I~o0!a+>Zc+)h(}7*l%8 z@fZ!5s`6Cc`yCS&28Yf1#9MeDUzSO7=}nVPTqFnj!Va4jhhF70WR1;)=Zv|u5Y=vq z)gM<2{9ss1t}!NZ7IsJqYPY32)pipt7#=Xj8Zr5aNXn7){7Af(Ip{KHC>rKm_==ew zzJyNV_-@j_-vtO2|5q#i_3t0;(db)8L*#I(m6&;3l(~Oc0Et6h-TsWxYj)dg{m2Qme(>Wn;hTM;Cf!IfJrGndK(q2iR@bPkctoC&RjuSOjx%OE z2Gfr@np-kSwnq`UAWc)nG)JR9#g>sS&fXNaqFsPpR_D8nc&rF+lPC}LvlYby=(8;i z`-`YNIXXr^3F%bwB-kE7t(z=UwIiGxL_OHn5UVyJ0Jw&xbFh&Eur!wEvHN6If_8(p zrlsyp%G@OAf^m6eDNqyDm1yQOXyc5`)S|#(aH+vx;`I}XKsJeF<%kH9Vk4bXjdiI4DNF)sfWi9F5QpT$ z$`Mx5N!$|Zh;z_)n>wxH{Ux@Gkr8b2AZr?&(a)+wA);wI)*whooap$ajmBwYHa*Km z>R+8o9q0s)SNe(12O)VpCYL&S!THLHsC&eyMT^uki*8nhR*~dGMie`{9aIlZk%Z;M zG`0i*WhkveAAX7~F*z|)PhGERN4C~5hho>mq^%fWNPrVCS!i*$r**3xft=i)<$(6B zSEP5VGToLw)_<%|Fvm6Y&~o;JBeP*ZF@pG_N_7JE4mABSM?=zna{KFi5Zw=X#AMiT zbUjcECsuQkBrXD;8DDeJWi#X>k3bBNCnEH_Tf}}?Ge<(z&yofyEqB7tVTh#l*{SrX z&WI^Y-!&uyyVKOIRq(R+7krhVN&180NYap)w16pl&yeIWRCN}r1|Y?fnIK+7gnnF@ z`bE}em8dFQ)215#uwJsDk+na{q)>Qp6`2~p81 z06{j3o>{y=^~u&$cz_y2vO!1|$8OLcxDv_^WJU^T1D;vv)DY|xll^lr-gG;^EIsy- z-?wh$AJ?!L$;VNNSrqV&Xo6pA1?b+K6VFdG*Ys#tEdH8tLZpA?utek~6~&;)xLv$T zj)unqjd^L>sH?!0X>~n0C0ttKfFuC&p2Hv z32hzmkiI0bFRvDbhI1}dYoT=wCv8)2Lh3L_F@pw6QFDy?#iM3GI?HmznFizy>Q$Uf zpxl-1hkfyxm7?q)XJU1I`9Vr{)^AgYj!?ScxL-+GKm|-XC! z^%XZN23AUvqI`w?=-l8r-SPXcEY>gW{T>yxTuFgdwZ2_6hbF_JRh_iIDyd}*?Asy4OwB&P$DY7o;o<%uoTqpPw4~#|DZL5eLLynkRR@c1J#d{1LVN` z22YI#$|QaFGK6&RE8^Qh&;?TjmHTi%Bmqh6tiigPAn|qmm@i<$6&Q3_h-&2erJ}#T zR^EkKE6Y4l#QBnC!kNxq8zy7mlBf))0R-z^F-Agdwl$k)P5X3{ViYs9qmIxEDiue?JV{VkSrieIFi&11Jv;);5Ygl4=A`NFa0$|Ld*D-_vd7+6=^be$8sv2ELpjT0x0ZM#8Z+cr;}#*J;;ww=c9m)_6! z{@MTcwP(+oS=X91GzeSYsDey`fvoq|x+-JfTb4T7@vaRmGc+}m zts`X*DUrEsU4WgyM(A@hQV3+`tFTapa??Nthin=6H2TwERvz%;2qReb12$SZ zKw$ixg2rWY7DK#=0+of$Dt}}NQ@*{9-7zkxPhSvQjYc>NO>=IvpE;WzsfZM9Aw-s| zVwW#uJx+sU#~mkfmyi$lu9JH!dt?$xl6RAeCmzg5<44`)ylm@QI|y50F})p60~ zGo2(ZCsQ(IC+PO0&q;$)=|~26ABuxUn4awM-tHCi{w%rrEH;&1lj(h0tpBf6bNrre zzxV#2__}*^x9&uw4OzUO_H2|b8fPnA{1Igu8ZwEaJ5#7g2YH<%gnW8Rmdc{jMIqBk zJ59rqJoW&`gH>+C=^?1Xc1E+Ws#`N7&K^IKf`y0He;9)53PCNx5+78V-04@92fbnj zg>DZ0c@4WKL7C1%uK8SMUb=wD*{j8(*J12jl`e-&!a>XDOi`V`2)FVfB^+W5MoAUz zkFz{`AbL?a$E+1bfcPauk8W+O7N!cXq>l{;?0l$Ar%#i%NXE%7o3>11v^w)`B88eK zLYxg=y}obiIC@1bYaxeuwGpvVcc*hhwM7*d65t=?X2K<>*NYUnu8Jl`XF0_LWZE9M zb!TWVZ~@0kHsx`&uN{ziB-*gerWHDp;22b9idA!nkc2#uJ*#xrcbhKV+MP)_t)>+sVygYYY+(ddTpV&r#zc z{J%H}Wn+#V%K{fjz!Eo#tN_$4`E?Q)QbQ&pRJ4y04Hgk0Mrn*k$pp<9QBWGCZSBQW zWokgM(85G9X@4a>R=^sfwNu#!x08m=k^LOa5f1%T`Wb;-2G!(-+A?81e~CVQ4z`MM zptIKmMXTtAn%p-nZKvN6Uok~)=)5XZ@NU3_9e_X@H8kgEdI=urt-d^rQKjP>7W_m*qk?bP0=QATnqYdx{fDm93za|f|y}B&43SZkvX&ikuL)UFvf@` znCB@NKq+tY+MC58q=As?{Rsb2m@^SytJG=U9`O(ej_q)5)LGEg$Xb%u+4l^ADvf(!5=U=(Mjet8RYwRcz8bdTh=RiUE^X{hd|2c z=fCEIpGY%7U6PR~)hk)~itB3qkrGqknuc4uyDVlvrEeJA>k(B$>WI$Ig!JCiC}Gb&LG5agwu+7m^aYbC(bL60+;UfR~rl_4T_z zUahd*>1u^ZVMei6B-P^0Q?#%3Y*7z7ThC)3@fKn#Wcbnxp3yd7NnL|KyZ%Gc4fWqyP5KnVo@GfrrM;t~ z1#TTIbiL#3Qg81yW7h4xHqmj4&maPvof-3opF6ohusFCPCFb_r5~gHnn~&HU283M< z^rXO&1b@90%f1plQIOFN@~3oN635|ob-4F~kH-uzhM{YVofGV%DqwUr6TOdWFq=e@ z1>&sr60n2S-^o}e3Dfvbl9(~NlXZ^`?|5-gmEQ>W{Y)Iq07s;Z5Jm&ww0LRYpXHDR zCF3eNr=!Ii2@eF9V8tBM!S%suXCX>L3ClT7e_^L_3>oX2QeS7R6*6lV{UwLPIqtjgS`?4&DTig| zM2+sh3sj!WUWA)nD@gsYVjmK;F%S1v;=^>{Eb*aJED;W86I$hzswV``m*!8$k(>LA zqEzHU*ZV{UlItTl2s2gIuc0fz#K5QmI0nQdzhbDFBi>r77^pkpy6O0r>dWb_B$6f? z&y@7Z&$wTH9K1==D~?Ry|2ud z%|%V>88s2A{u0@KfZkwT-i>ijT~GGAQ<-g{kTp@lzhLN5O}F=- z3+~~p^S=c?cfRs$W&dBJI5pH>`DbtS)8BkU*S#(b2o2*QViHq-E#4kEt}yz=aq%rN zg!vW$?W^iSpPDBu6M&+maHCM89$|EGz+RLuuqW~&B{OOwy!M9HBC>u?AdGFdg%ql- zQh%{e7*5L>iA})D35p)#cfl8gG1&+(hQ(eAb8uU1EI|sq2P1n0(Rm@b@vF|6>}(}c zkDAe$(9{8E<+65E4f@I)tLDno15y8!G+PoBIa|U8N3NfIX~iEEvC{Sn5(@X;>N0h|CO z_?446_;(bI!HJAyW)%O?D<$J0j^9z~tZ?b2k&r4?8=-j{)f0CS(b3@u)Q(|9kwp2% z^piKPOo}edZH6+8FoSGl6;LO>ye&`K>9PT4dj*TtRsn!qmj=AcHUTJ1j4RE*oKCAn zSlcq&5KxDF$gwinyT7rqQgR!)LX&uYVSiRvN3L$ZpO9YpmT9VVN%}uXkNK5W`ZnHh zeWC4~I*`hSFgyckD(RfyAnT|WZ}cmTjnY}Fl?*VQGr*KUuev!PJJMrEk1Rz?t5%bz9TOm_ zK-u}Jn1|TGq)>{+YR8gU*SDerw@IWCt|!HV09~X>D=TGzsjA=zQry6pOUi1tWqf}% z#)ukxB3P|U#gvN^9*aCI4U$s?P&j|c)(EmB)iMuT?utU{(Zs53B&X`oIYq)-13+-n z)|2w`6!9|Oic48de&-)N%O$ZqD=Yh#>_51R=SuP7xG+-g>J0+q1F%GNp)_(?zk_@V zw|JWw2+#F$M;R-w9}TY(y|2Zuk<@A0KnVRj!!;Re=V{Dcy!zRlKk$ymr~fibG+7G? z{nvV1yfvg5boe~JV{e~{@}Htke|F1UOBg}XP;y8tGk0{q6s)!|U6!GMY4bZySz&I; zFX_h4Xu=Ikl<|5Q9Si!-1yoBBxU?ZW9ZJ*y6@WG55*Qi)g^HT40s()+<;NIJF`E)b zEftPr&`$ZQyVRpd1Z>b7W>$ikY>zW6p(ZCdoi>5q{$27es$b^9RIoYrp@xbiH8v>E zV#=7ZMkd&5m67Le#WoTreKnG?Nf0-UMNG0uK%G2oBL&0&`b_SOLjrd4&RjKs&e|5T5RWC$$zI8~%!&=anGP!E$A-Uktp+e)0! z^;|qoz9BBAb>RoYts`^_N4U_3aJ~)GA6USOcHy`{9udEjZg$&q621XFHAN4oA$5iO zX#k&L{Ivz@oQo?VYI#?NIjiysX_}$Oli>HHDv;iZvx<}bDCwdwy%&3aci zE3t{Ux_lr1{0MKexb@P8-Jvk8Tc&8(ZDDVq*vLo7W%?m=lPn893SWf)r-7sNO*Ggs z#L37idPBk*p=1#JR6ikYW(*!HDf!jnv}%pdOqOoE5Z4E>Vu#GQnxo~40y&O?er-mj z3E;sJHq!`3QrHTu5CWg_s{lf{04SxOPTP=5L98jB%8CFMK2%4mv`6+E(jJsC_9H{M zvQcViaZWD>Xbw={iE_Yfr}Wf!Vrmc4Y9(JZFX3Ug4qN4hY9(+V5{75>yJ%MP%Mpej zNu}9A*Orwq+Wl?r!=3OEf2XR33@3xm7`Wj-d~J|KQ?cQWQ3G*Gr1opZ&aBA?(G958eM@ zHhI#WcsTCQ+uy79$y%YyRLUXG2x=su_JZj4u!0wOeR`QpSM`iWm*Aa>xTE@>pv2OstP~5poK@=kI`Itz>yS{$%h* z^r{jE*)Qed{Xov<5i5qV7f3GgB01L+oVmJYESNR=c;nj9S96B1B3Fi^rl$LvqUPSU z=&SMm^VuHxGT=z?(@7`{vMm0@A;B>9My-Nn8;>Yb-{Lpc@7KUS#Pei>yH=l&+|vk44Vt`=Y+y6q4@`?V%T!EA$*R*x9?mt&-$UwzU&4loOnu)R0Pk!iS zZ`EPoL*8%h(JAAKCconn4`9vUB{v~?1du0PfR3B6A%9iwo3YHt|9OrFL{FS+(~;$V zJ85acm}hJ=Xd^PeQuPC|*o|$?_C-O($SGyurvyJK`wRTsgKP46rC|7CM4RjaM$?Dj zWUWS#j1G}c3GHrXb89={>k_d&+U#X2f7 zqy9%!rcsDy2ez-gFq{9rxSmF0v`t=xKK?fL?{4@TwF)Uk65$>O0(Z@H)oL6Pe{7dt zyHUcTST%hx50Ns#hA2^GbI5fLR_UU4Vl^1bD+AQQ@r1pb6n!q;^$3kPR;^LdvY=u2NA?a zESF#ER*^0jqp-WV^z}u59R1GyY4n+zHU3M@X8Vg~KmLr)8|eIYpBadT)-w5TAP)S9)&mfx3J>S!Jw;|7j9sy_EEk5hRZE$!fRfOU~)p`=w_~tK}>8u=(djTOR#?R{-_5XBFGs zyl-A#6&NGxrc6%O8aq^QT4o@ccUI_9Whp6>i%BLB4(&sfOH0O>M^3XBuMXB!mdmXz zUc}t=*oP*!ii<{kMkzN`8^1)&H?J&%6%*2!%M)r=QG?XM{HudW>(9xV!VxxAznP$y zg>wbqqFo(=`O#IH8b*Z3XujDsTB9PWNL&Q>5DJn*Bc(}oV83p<;412-HSVD#g_3_A zeQz+9BO4mmU14~&rg2pOyvWPJ!5>gz?tlV^QmyDOQP(A8ND(JsLuWlqeFs8D9X>5% zFeFjtEe=0v-0pEpHTR}g9QEA3<;jKPDPG8XsWGT~d>Tc5eNkRom&F%icJ8)eQQUPi z#TIwtNWm=lE0C6!z)RP$R6+uTiP@m8Uv!g=+v)~^CO+#X_bZ7%R*l0p1QrAJ1vfAOS9uP$#hrzt)|Fi(AFQO^02afH$ zf-PMAJAqq)H}t!xzl%f*w9qDm16Fr3#MYifFf<;zS12-AERBDl`qZ){${>`Y_4*U z!om`eRAjPFv8R^3Wa7n?Snb~c=0E#kyg>QJ7tzD=YQh>s`NpEMAo4(K>ykdMry}7L zSR4Nv7C<0vWEkj`N+&YOrwEe7>ZO!=O%IF+6jMo;f0|PG*ySl%#sb3{@3Y>fGQ@d804*D1O$0noL?=UmL5T$ z`w6H)Y$;J1YKYHjAm=){b^iLt+5K}6-=_Wq0rWy|6cG+eHbD-~&C-y_Y@3Tqu5aMPPNJ{ z>`hEqMC#E~HLKnr%kvjUgRhzH7gExu+wW#oTDUeDxC1nbWwAX(wSE}5EBM<@Ajph_ zu2?>!%nNs0y78 z`%Up0#;d4od_SNpxhul5HSZWCnhj(=BdqMAA6H&fnV~_32N)X5TT;cdJiX*m5<@_k@(P?MyRC7 zP>Zj9DxeS(+;H&2e%Q#ecojBPQ3}3S9Epqh#l&77>d)DT~QH=>g(kM?v=A#Ke+u z_5{=8Izbkf#DPJS5m_>KHg)(PB_BN_#YoHKj<`AZGEq$C`7{3fgm7pZ!cd3$N&#su zUV8<2i13cH`xHJkfM-b0g!h-zjasoGTZqOlrPL%22mUK*Vv>y1-%s^1&=BT`Zj(Lu zo|2~YG6_mlfrA!Z{AzqOHR&oht(Rq69Q~Xpw^@fHEu*!a6~VqsMY8}R*Q23 z32oWR{S=Q(sF##Z>eyh9JJTyqLVnd;QM98LH0jjSHd^(eb!mL5;fUm+>-rOXC3Fi z1OyNpia?t0$x`Q_|0#$Ns4uG$!Cs?Qif$TtCa@L35z>ZjCYDwh*e$}Lt>#P>;08GM z5(5`E9cF09D~M%H5nqail6-HpDMwx8VMHdDop*^wQ+eZ(sM<*9fl#TUK+4Y<1=dVv5$wfrrK^ z5&urCu<zFcBVt)jrJ(O!m z4}#Hwb3=i@c)}gdc`#2?zpdPnO8jr7u(&;3UxfhSBo`NRdd15WpJkNrb9{FCVfGf{ z0U_pHX;qM`E#k>>d29OvgO6LQPE8)nCMgDvC&|mJwQSym$`R71m6Cz!& ziEMxUHCjY+e$^Md{0W#}d?Km%>7pfWiEP=CIsN;VyCDJW1$maTa|r^Ns#wDyQZwtOLz(zbi#-$y8uoLN>y zw-hw8rU2}4{zy|{!ol)C5iW6lW}pL?2mIZ~AOFORIf9$ct+qiZOUkdKK+ zPw7ded61%^5;WaK4L!F`st6P&7{vQrpt2Kuh<`~~Bb7(oD;@5LNTp|L`_k>5K6a))&DVkw?XCa5^QmNZa&`WmA+ zW=Ah$v?z)YJNVuZlYza|X3qID?zjE#$u+J^Yj9iD)|>x-Hs@aJ3~_m<-%2%(a(7g1 zzN#j(?+fq{k8|`W=h3MsvVD_nqvd1cn=aj&A=g%A)7rI%0;7a?MHG`T3%?PtM@&;e zw|OWW=cQ0Du{VGBCy|Sm^diGX)oYO&^G6~4gKv`Hw10~7yP?g`)TEw^rJoEaHzf=u zTyp6EFFx2VogueYr3egg@XEbNJGi@T8Cii9ULa67av$^|_-urvEIRmozU4CmM75Sr z{M3D?O_?ExmH*BFZ%}SdkINt+F@)D4mDvIn8$#+0ZaN_ggv~Jc3x(~#)ZcYbt*`_I z*%lZ2>PjSV#uIHc7W2S3fBOv>;_6x|Ny6R62J`>Qxs=~j8)|Oi9RHkiyju|d#cQRaZ0p~c_E2I07XU8CacT<679^#!yk7AqvxR6F3= zJG8Q?g<>KXsjBi&ADrM$H`t5)`P&1n3iVvp`SEgR^C2$e8ZA;Xu5o|sV>2y>pl&Jz zU_zjSzSWkaa4xSTQ^hLDAj`3Z9e1Kjlb(Vo?md1dgTH~UNH>m8tc+~VYCu;Ku;nPO zJyO9Q$hTUmmqqA(kB6~jy^=@1tDyvGbJ9^0InS3en_~U8Y{5KbK`Q#EuG&8JWpLA^ zr%)dVC@$uRUCQK?t$d@52tkrMj#bV_aF#H*ysX`!brNQ_n^~T_F_o2fJ5xD%=W)mu zS8Gv=JF`GDI_xUo#F`qDcX_7Cx`vIPm*11k$LZ>X2)Lt-{HZhty6EfZq+}fz4_s}z zWO{lJ3r&7LPHQ^QmB4#9SfsVeqwkU>3haH>ly``^*sb`F0J%g~Z9QM8uEr64vRC*0 zfp)$GO7=DTJkH5Kc#=H2Ph&2Y=}eNMtg!!!K#2It;C;#)I6|G;-z#KkWnH>Rlu5GOih&`P?G49W7b#| zWWKcLHVk49c^~>d#9kCg|CI1O+aj-HAhWcU++3ET1SN7dvQ<;uqv>;vZVjux;9yn*KRgPQ|V{VhQ}AP{b{dl z&hi?H{&sZOZ9v1%V1cduCgAIRY3lw&x%~?ZCyq!yP9!MBCrcAvWDXqaKJx%CnhJ>I z6$li++F(M&P|TVQ(VORSjRhuJK)N{NQrko=8_ zj>Jeu_m?)PvuEa{Etn~>D+Z>_q(qQI+Xw{$RN<^Qq9iN=m@UZeAw}3V{@W`F7H22z zv{-Zz&XO097r8?QBfwWF@?CPy!P$?uM`fDfbgHAQYjc760D(&3#aI%%2Q)H@I;NO~ zAC{IHGJ?}zBCHt-HE5@($3xkrf-N`bb=#ndfJeCaHQ6hn4Z|kVH~IAOb~(cQn>0-c z36TMUbW@E%21p0*{HtnHid7cg`;u+9_T*X7$Fg0MvyYC0hqP+O*dWdS!l$PC@@)2M zd~tR+C1-HrwNL8?8^IQ#UX;xYRSW}Ec~X;942zcxshb0n%^}5s)sT@galolRB(OPD zv8J07%;MY#+GzJz=Te8q5j{m%(m@BqG{X^ZBfX0q*h3L3EMYsDs49ojqpG}|RewE@_;{d}2PZ0SV7FTzv45lSQ>oZ!Q$6+V+ z?JtYDrVzQ0?)QirO4*7N;;_(e+8<+ijm$-SLYB4VgK;fb6bKO$7a5HV@kIm)_&p4* z6v8d>x1Due+=L@jB%MncuMdqI-F|;dGY_p!1!RpCKa*_pzbL`(ay>5*^6~gfe|hH$ z$g~EZCvlF^#74V71h1p3V0sN7^ccRCo=AR#M;{w8#RJt>WxgBuOyIaU+pqGhAK@oc zr2uoK^Tca0rFnmUkS1l^;HVgw<4v$u8{Ig`G#Dqn`TFZlj4x7#{7ELie~~(p$*q-eQDmrM&1wNG(fWVWl!@i zNJJ;_@6phQep(j?@87L-aMO!;ofC2{xXUe}B-!Vz3u1cXm?xgl$<=5r1&U z_F}+egGv;*j2nb;M>mw0*E3T0ZRZ|49-U~lw$w!lOPij<40*191nr|E;SXW?+vs@c zyY`xt17caZi!e2#N~9J9$2``XZ2z1f;4GOE;ID0hRs1XTbY~}g>b1+s;w{d=S|Qdw zH=ECwPSvw*9C8Wdyero(n8Ez?ef!pKf4!m^#ZXDpp@XppuMeHLbYz!9Ecs_VHJgGl z5%s=po2)b^)LObdtSLA;MmainK;DR&S<(hC`+m}Dg6kWYX>c3)Jq07mcY4^&3g7te zR$%3vvjg1nS+aR2zG3F65K^GRaI+ku;I0K>k%V#~ykACNe@byy{6KsjuKgT~9Lw^DqG?uO ziidq^M~;7G-CP}Ae*Cb|Q5w5O&e2D>c62FXi&C!|T`=YW>l6kdo624` zUQ75eCMGuwLU-O^s6bce>{@Z$B9Y7Ja$iWfcy@OzwfwbIWAw?-71ydY$13Rb^(4+M zEM!)f5NPzMOk5eRQv4<+JfTBLR&hwXF<@acA*?JWnnp`gz~qCCeM}PG?gW#Y9|!9+ zW;D}$DBNel? z;Y?-(R_jaoPiJ?wzRgc3m%g2u^^d^M4-Qu)e`uTrs{ATna| zuG%-fwCuf6J`oM-e~89(d0XJ;ef(R|f!6@5vuUyd3IVpOk(3QF`H6KR-$wb8AOO2- zzR3@L#52C!9QXzPW8LsuzC%Zh;CzJ;gebYP%PGbfE=DdG3|f4V99M#}pd^w$7X`cp zJKAB0X?25Pp|K2lbUY!180|gzg&vV4DH;uJLV7>iw?Zi@aRd>X8J@i_M6Sz;CeO^- z74=}Iebq7!rlx9hOVlOrcn_gmi>HKH;%4eu4b2kJwDKH^VOEnZfQqkaQAIzdBqf%% zjN;`8xIG7VyD-Y+dRw7gJCIb~kEcerC%-S<(}ty>YCxUrQ(qfutg~APLCVG- zEI{X+49d;$(5_6kfz#YXZz<}+0q2xtRu4}7Ul(70jT}_bhW92HkyLsLc{>QLF{~v zg>Ejt`@`&qV#A7vr$O1b%3I}^)o>d~kAC5Sei@M#H~Bg+p_U@#`Tjh3_I%=;No4!k zdTRdb%v)zlY^Kbos`6-o76|LT2x~m&(eynMQ0UNmPS5aP*1nKcovNKtresprnpKq% z#eU&DbOrL=n}Kp3TD(n$1Y%~%3y`eeMmo@2`HW~dyk*&$#cQc%zvGpOm_s0~K$|Lh z>2dl&8*s<=9AZ?~g+$!HqG(#iw4>DV%~9?W6@8O!_Jg>ZJ5Zlyd zX|#?0QRH|3L*c2E5l`PG`kcQsrQd}6!3rGK&A|R-f& zXSd#X;c82Jrd&lHS#pX}MYBl-X$QFhb^-_&L$?NFX4O`MA?1(2#LpoKYNds87b}#n zbK=LfGrqTcgM|o4GJ`Z!)`$V%=Ss5XVnFd#LCAyR=V%Y^)C|=(g`<0ln}wkxkX=<- zk|1-?^MNhVN;X9!>{hY^qlv^E5JhGJ*wOiN$kEeU!5Nh60KoCXFBY$Y3m7y_ z9(`*==>!(H2~n{z-W%O&#n@kpM1mcw%l~ykjQ^fcOeuPV{9eDGXZz`itn#NOj!>+m z1+~ChOpO;j3kyhGFkr!QpGElr5aeroQ(}l0PW@=d`?nDqisB~kvV3{>kUzoqxg?50 ze}_bDXXWP9_f8LwcH@wacVynF%Yn&^9A=Dt7q^0P+swBb-iZbnL0aAFL~AbYNX?<& zew_VD*~fJ?>H5aC8_63TDE%Nt|CBM%9;7Q|99z!#^LAyoc4895bM=)tGE=dKf&YWfrO6~z`emMUg&%rIxgkg^|8l; z`qShE{?Py%Y)D(>x+`;x^zI(lyBe>DZ7gmkZy)+`RFb~0DZG;b!qq06 zkk*Kj)`6$!Z^6h%v`%2E(3eP!vVZh?s_)p7ECSO|^3#4hQ}E1>h^^xPpj;L~AG-Rf zeAl)7R2u-0yQZ;fIb%i29qRex>1(Lf4?VGT%mC>5yQsLil6p`HUO5pM`Vqjo7|r%X zd!^_Hf%;0%r^WiKPFqWq<_s6hGX8r73|!ohTV(_G+T+|Wy^rOt{m-0EtwmMKm4cwN z)<7xlzkw(D*x@(I?YjUBkAs+qexi~qvI^7`H|C8I}Jz|=j?o`Z# zY%3jzyYt3#unvi^FV3|DZbmmQ0+E$f2n+<1SrN5WzZSKSxJS>bmUa#vklHUU|Cp&? z8W^aweL;uFojM;a557_K&nPxfK{PPDqYzau>E#PcSDE3-?XE-Q>@Vw9$uGtn==+sm zt@?K$K_tcRdRkEt^VOc=5$Z`VafWJ|>o4vt4*P|>3d_-C?rUoLZS|ei3^Yu7f71%PxkUwmyM;Rmo z2Iw&aQ(gT6fg4N!_jkTkDM-hMs&8zX8jNenQ|yCtcGFn?jbgd9*f*_A-H3+M5`~2% z^Vy1Nz5~&4awlH*OYAiKX^L}vDZm`4uQ&`!2_wSwA4zEI8-}E+&?7f7r3hMUl@KR?hZYd&mHfx28y zaJHxnnJ4-o8Wga%S#ycgJr7igJGjm#>tc)&y8oMvQLG_CS2{K0-|qC9vJx?~9TcUHe#DKw-P zC8(XG?rCMTLgpfjq*rcl?BcreXt2TE$Cq4}_~JF}@3#Kby&8@W+OuISQ1za#5%QjD z!#EO~ORxqIV|ZJpx~63`bJ3{?Ve`}3kWR`wYu|@fwavghL-iC2|EC3T6}JQf8r2`0sC{U2 zk#l<94vD-FRAED8_2#m?48pNFdgC9vLK(RxdKtwJB!|Dz+5l8h;VjXiqY0WMFp0=6 zc_VR#II*wCG+iSy-akQ`>m1b+-+k zq9*!%BQElp-NU{8Gpq@^7>Bi&F;xxpEJb|?C$k+uE1FI@ID&aL*^TCmeUNtIiYMF)JNJQaD{B`Uh(fZsQuW&(| z)2hth<30VcakyJ`dkccklRnlGCN_x!(M&V&68!V}N(vJ3WRIM-rn&Sptgfg-LyHrkOv7I#s1;MJjiY+X^5I3g7HiQ9{$Y6wfz<&oo-{u7O;An+g$NGX9=3~+J zZ6dGDsn0U{F{oCcHARgyIv_%U)d-Cu{}z8ck=fzqxmti#!)FmfhA<28GqqM48?C4+#~dmpSoT$V-YGNi=3bK> z$v?$!Z^c1uMZ_FD0C)Lfm&Y~Pg0^2SP{~qPSQqh?H88IvV?O>WhE~@?w}Bxoj<{nn zhv=;<2Uwum>ha&t;aE}=XY1yzMj+sQb9Hz*m$H=ws*zU?XXBS~4KMU$xeXA+1?Rl6 zpr5gzFO>r)A66YA@dD}?Lh=~OtVU_F3DoaynI20{89QD{=y3Olyd;XghQethRIht~~l&qGgD%VINsUC6Z-l+WSxSRxU#Vk>etB zH75;NzwPHr$FaVUifZl9fqSC(LFaaIbkfVf;$hisW!iWCe*2_%tTZe_VCFnNTLQ!X zy*reOsJayOeP{dAmbHe>bxu=MHB?u6dskl*XGg*;Lm);>DxcvzT$Xr*W}!bMYbm5Z zJ0H6h7#o{s9B=|+TulW#FST_y+k#~tj9EYdf=m$WOK6#lAu3#UAQ-KDGNjBbE`G;{ zsIeVaQf#A3l@M2mh`55>TIQA^JQW#4=7yQ*PpgFzYWuA`Y9HduU-#FC8;LBro^NQ0 zYV+m1gQ?kHD<~4?Dl2|ULWg}08CS|1dN`i(d~ltN*S%VzCg-#n8L_?R3~U#ro4MI5 z4JyvP7^Q)~WtWiqJ8fLXTy{7Sh7EoKo}0s4o73dk!C{wR7O4+^O1W^GX^qH&MXcMn&cLYBP`WNBVT-Z&mOuKf6-i*P@z3t}ZLyQyeusF!^ElVizs575Q|GIYK)9776qH&BiPwBEAoCy!N_Eri;whd<>-Z%3ilB&ZE|jbV zP105;uTZscbu3g~c<0OO1GkxldsSNaHgxm9z|;o0@gYy8kAgmJo;Sw;I{NO#E~3Ox z%1c_<<3#yTz(p$iiaJe6FF zPFfL&d>zUcdWl1ihf`_+X~6x0u-O2prP>}IGWc%j zn?#CTb~HWkEAiSF7)fDQ2OdZ^gNT5raDd$Hqnfp}aL}*Kw~sJ_jTpv}R%PX0b$MAK zlmoV|#-#RNj@0eFhCqSqtMRdzg_}hA*k(9xOc;~`ovtJ9uCPzqrZXafc^B; zA@@M4786bnVp{a`j;G3-vs6fTZ2cl?YBF)3-eWFVjT#DDnUZxS`MSqH#1S+Dkflb< zG7g1yJMimIjn@C#>&6B@r>5QiD(SxsZEx3+^Fl?4%E$I62`3&EvQ)katt0U%%)BRA zlU1Jz4h0qUloSjqPcEVvi4#UPqaX`Hy?1GWuoxBuCB4aE?&-|$kT$FVY;bPgg&O}1 z50U@EqhRdrIl*mnP5rZ)A`sfpdoaAC$#IHDP=hPC(MhQ_0@T74kzXLC!`~x>xGH&9 zy&mh<&4xp96Bpq$byPrJ+15gy;z{CxtSwN&_u6MS!u=-7P_tlss7Ggb4T5S_DRc*` zq|E=InWi{Jy;xMEB?zNH!eV5sec#b7UM(S2&2Y9d>8!)O%0);ApV{}F@9SGNV%3xo z;O>p8Ai6kb#k%hJ?4DXMIL_GbZo(Qh_MJ>16j^og(vc!2O>L?ELeH_R=YLVP+PF)# zEQswe3o1#j?SvQeYC~Oxm}**8!zV}h zK_oVK313fx3q6N8JCr%asv8)1ASoOyz8x0u0HT76Rxl) zRC0-Bad>CETRy<8n>KG|ROx+Sh6EUS(duf(!!qd&XD;#0=X-7!+MHE!*Z6e!eK7l- z|9x?A_`BWxNPl#Db!gu@UC#TdcP#A&icF|_p2_JD^Rx@n$8NpNTU_~EfAzcG`my~n zxheE_s{2Q)!%-TR%kobJ;58|8*~G7#CFts=p$DHJa}*CN)rBJA9GYiY3Te6lxMAM( z2f~0RQ{?qz#7wu!#7$}3vJBROth)?ujkvgB%ai#103#n+KUu5c1Y&HQ$U-Ykf9vgE zL%0rn@n2b>s5_RG3-&Jv0pyd(#dfh&6|Bj`of<-N-*>PnIlj|D_Z>5PnK_+nuvx2XOm6LOVt zh(3RV(IVy(_T9G4@J(#?T4ksZ5-gQpL&d;yggDC+^4yQ|Xar-3!a2FR zr;hS`-`2O^AEfgB#7+AgxBor4bof~NyKwpO4DsVb((ZDR+I>h3bcfFHkEl`AS=(Q) zS>Mhh{5yil^Sy;=Q1EB!g?_d3eZ~e~t(MJcftJfP_-k3n!RG!LmKFdFqsr(I=ws~Y-eQLY2 z!(#R6XV(t@^247!y#3KX`1m`2`m6ho?_67+9xb+t-f#D{+W{%1^~!F~t(iNAg1F8# z#@Wi0)*EjN4C8kWqC!cV4V>t~(VncN1+KoyvAsi?HPj!&@P!sv7$Cywax9N$T>PquFD)wj~5E_)x0t5<#+6enZN4I!C6nH@?rCQ@n z<7dXrcZ^?LHon|3#w~CT#5oQHg8|@zW*wN3W(=m*#<-TurI`I8+yo_xSKuj5(i|1a zCOJ)@p?Qwe3`GzNDTrDXS;^agAqCN1RH_FbJ23A-d^ejVO zXwF!gC52Oh$&lG8F#yY=y=x5IBSF@4m8s=aZk=`|*eW{_ck#{M7p3;ni7H&1Tlxx`VfPZOeLX zug$GluN&jMHM62HMQMyH8dKWNl)W_t044{3tBb(OIpff$4R|Am|0C87jx!9hSgQ@s zA*Km|7MMesHLx4O8sjZKCq&UHHZNE@vqaRXjd639r3Jk;s23*g);M6*x`OMgO=m$C1y~TDv=jf=0WYGM zBgDcqk%o=IJW0nB0D)&9lRK~?#OP_ThTFkZi|0d|U>j#!5U?g75fj&g>K+}B%wPsw z;=eJHFdoB9YqF1fTzzi?xETRk0hrqCngW{RwW3)vl1T)%1X-qRRA@^`PZoisq|G9* zqwiS{Bgq^fCy`k(1#2-EC}CjsNJ}4OFu6;8VN@#_6Xd?|88h(e8LZ)T1*|b_=f0$f zWdi!a2Q%yAFz#5k1CPX@XR5blmb`@ZM%$aS)7JPo4E4D=Yn-XA?^mwq8aHdIa&b1l z`t0t_cfa!cZ+zot{;Yls+t zi4q`&rV|EOY%)Z!#`S5i28GicpFWVksnYYep%J0}H+I|g`(&znMHflUi$+i_zZ zZDmJn09U3_Lc1`D6{hoZn*`hyd zx^8W3SI_3_;_}slt!JP6@e6Og^LsD6_2u7w>8-clzx48}hqLFOY5K)Z=Vv!3;5L=N z@iKw6sr+j%?dqPd_jb!>@7|U5y-(g)KKl3<4?g+em(L#E{ZhX?e6~J1z0|I%ndw^( z_KL3Uo$q?rtt;#L+FYK^&=zA+1Djqf`$gOpq`C6g>Le9SNfu8P50u`qsq$+-C?W6N#KrHDC0eT$5w_?#gmW8fmj zSG<4a{}d;EW)ig-5CIXHNHyXhfG1x%Wj-YaErK<=UND0)sDsA@!6T4~0)r#4@id_m zumA>7gSE((MZl4PwG61GtQp^Bs3&Ec$oERjnsT0E==AL?U`F7E+k=>uS+6cKU9sCz zGiES*YOtn&6tPs^ z5rxkwGpNE*HTVP*D*`t4@PIvrk%8oT57vBKbd;qtePPXM*O^C$YrL_onK$LEG)-sC zvTuNC>s!0%mYr>DSFZh~Ylk;py7kesue|;TuYCFK-@Ed{OCMc*>DJ>*ue`i;SFSg9 z_QC|*rt&vZCa^Y@f90iX_ican*tbXfi+1nMjrILczkd9q4}bOe?x)|X9zS@sYxb`6 z)e)?7AqBg0tIqXnhmfl3T6?-`jBNpG^ky-KuzPQ+wlzoV#&msYENZHO=T&XCN@IL) z%&a7{XJHF8ae6fUfiIefa57kP1C4*_}X`Fel(|#y)I}3}8P-^$N!l zn6(JjEXs~VhKiUt@qHt}6adu#Fsl9&e5BYiZf3Yw4b0-c2%3gqE%sS@Y{uLLUp9+A zUcxxyHMOIE#x5m3Yw9@#NfCA2I9QYKs9KhoILRa#0d8)#9fCE@1d7idm?=f(MEUU{ zkfR_Fgj``CgSp&{8(2v_+Ueg;HHL(7jcFn12m%aRXBNfGH0#!Mv(g+jtvNU)f6Tcz zW?mL%RaK^To#}mHnx-&y=liB8`pWvQvqfjiS+%&bbLMw0A6~n8^T#*edgG5?c;oGV z{LC9~eQ@cOTZeY%T4VfH=N8XT;B6}ZTFM00rt<%*H0{blVq|M7+pSK@{$y`!z5B_{ zlOKNXm#TwLez|&d`|H)--COo(|5DjErSEFrcPj@TBi6U3uWQ?!8snP6w7xKv>&$Z9 zn5Lq2_q?1LZwj+&I&)Mvrs*A}km)-!ci@lGp(@zSlRuiba6AC922G&kC=Wmjz*IpR zV#ur!IE&^?@==3APRkTYiszxp6#Ulsrj^=&4;vZ8g%mzK5%aN9cko%m&+)w;bl@2A zi~+iEo$O~DL7ZmmLyhzek7a1{LAWgh+u|5iQJ#c9gF5f(nm{rI{|<3 z>1&pcs>*@_5>Tm3rP|j{gSCv!BCsagwGWxFZ@|jMv7mvREM#()4C*1qF3PS5V<(Ir zWFL@g2IIf@&`ICRh=k$V(fC7>)lvOm5CxMfFlc8dAh@<=4!g$eFI!WVJ7xxM4mG$` z^v3$yteVEG>fW^A3h7Y@1pHZhWZ!z*SH0`%-gWNMc0Ip#{q*vSw?4c1<~x7<>`QO{ z;d5`l{m0kddGoHja${{4JFRiP_wLFB-lp=eq)gHsQ~4{Gwp&@-SGKQCT=(dMd9(lM zYIk_=<<;Gfe|CB2NB_oZ@9x*@hxcy!{&2hKPG?uU$`@T@ecxNx_ZFiqeP`Bnjs8Ck zL}(dj>aH_QQQL@0M{De%D@+G(Oa_y#-Z(uM{vdrnGv%W!ZdO^4>>Lgh{1cG zb#j%NQQL@Qo{LG;>A#%pJ*UNl?NG)+EyS9?p%FgC`Bo|$9+c^&4T}yjc*1H6leo)7 zE@oKZ6TlCT!JN3Zu`d=(Z!!9?$r9bOnNdfyYB`c%nM$c2?RA&miGYb@kJ38}Tpoii zxd#Gy0)F#eV7Zl`YZi})KttcxSV>KJy0;a?PS~BK6Na~|HjY2F0dp!Ed5X;%8&}EI zN7Xg7GhrORvOtJ7ALu?tURHpJogCq(|bLatA7l9)!3PKDn%bzfq z=P?+BlhJw%W=|ZsJUYm?6$S81)}hzE$h>h#oq42>j!`N!MmNG{ln|GUb=Vd-7o*q zGq1e$d(XW7_IEG8`s&^K@JDC<(v`M%^WNLb6L6c#U%O0TZ7QF;H1z}5ug{A5v+wP+ z2fNSIyPtmP(wVaU)Z z!i*ZbCR1hu*cANYgRlZ`kV#9!F7;oYy9Tfz0EUq=0A<2fNqsu<^GRiB1hwbvjo%5% zl36kO{QzSSIzuMG03?)n>Dbh-J3>wRYI;?4&ZchRb5OcLgF7*WDHcj=(FuDt*6F#9 znBErt%^IW;V>o9+r{+bqFYAy*`z+kA@-3q+TI+2?v%-<%P0>A`+`wqHdNHBKVcsXI z{c#*@Zs1tzDEUv`^1!@?izq~hhmKuLF2qtFcnFUhJVodKrQf|=O*D6#)|#T+GIiCO z7Tq$z)C?g7uplHedyNZ`5}D=Jx8?*gj5Zx8*_c@eAhCgfXfrD&w4&>+4_p-T4bI-fIp%KC?U9jV~ut z=~VveWddtc8I-0vwWhDEbFH=2Y0;kUE$WA#J-htF|MSge|Nb|RKKb$AtsdTeyI<~K zcgv$4-yD})zV^Pa+@dhHt(TzWWx<@-wXJb2uwdTIw`Znp8q+i=F^(_Zrnjc<3)8?0 z)k2O)GKFEBr_#s*(c5`xO#{(fter#*j>8}T(n}N8hqcp`Nm8bsXpM~g*%)6D;aWP` zXo1(XhLLQH8H=W`l5tUkXAnrXC!&V*{4xF~Op0OV<;(^`tD%n+&68m6MNB#^O*v~HBM-+vSHp@Pa&`emMyqBd%gr$j@ECT2o0W6`8 zEX7y^ViAO^E2wKenIX-t#NcTRFOH9aH2HdDz0xjFpi<;bWE+1}q8mx`hWD!aWY~K3 zSqbXGp-N|sz<5fh2J$V@oE8U2)hK3CQS=t9`Zy$9kU7CfY}ev=hIa^#4bbIrrKznk zXI*R7u=azC07X`>&@Z*`T1-)83W#xnT>$z#YrI)gp=sWl#S9jj)-*K*&A4`LA;@XF z01w!;YgVnVm#6dg^zo&;w?BCKvw!hVf9=PA@bcqlUwQ2>UU=iJe|q)SD}PwO|J#4* zuiQ8`iz}7AbfdB5GZT25$`i{3)}~_W=FEcnRu5kO^|~-;cem=j-RsTX{ny&PyWcpu z^U*KWk8Z!adVKeJzdGD;)!A%TpZdAAZf08BHD|iW)1%>j@y)!jfJY^*g=Q8N%?acHT z@yR+}?6gnd3jiam%;AnBs}S>kvI$g3n_%wLi9;nNRc3e-3sDZdMu?uUUCo~{$~2!4 z&!g=ka2!<3R3MrWc`_GvP)t-35D{nPw9#p9&D39Q6DUmqLRwEWZSh1dPUbA(LGw8K zE``WOj{fAD$QgaupJF+VP)YpYbbA!jr_oTt=#4Q|Lm-?0ZSC_l@+kB*640Zrn>=}y z*&$we0KYesD7z7A7{hqdUpfU;Xp08dd0X{8=+=p3M@q*@dMyfajlfpE20u2nbdvm^ zF`z?Iim9IyMtMsLD~In3GC%EwZgPrW4tfO*xGldLLg^MfhYACi4L!?x~Yt9E4#4HY?;!#e&yGv zN9Ec354Jx0@n77$|1U28%KX|hCpTVx?cSy5UiskqD{ub(<+tAcXU*Lod}^;=U-q`F z?P9z0Zf62-QyG*AtolvY z>33)QB3^qvOWymO>Nai+`(yK zV+N;KKP&}$>NzS5E$vPKU&d6$Czy_f0RcEn`#H>Gs{v#7IkKe@42=_vnqSU%zEG!T zoHMW)em|V9Z0s5&@~2GP0>;$hNZ8&mULk-4!jC}p2ejLaDT)HmT?0kW*9AGgy01-B z8?&k!jI@P-0aun-hXIfUi$f2`Hl_nhKnFnvy>Xu28R)v|AzXnj4^l!zLieUdRuA4q z^m9W0H&Yu6feqH!%Z2yb^Tzf4ak1VzT^#Q}xbd+6lXvf2yY}msUVQn%^KZZNr&nHl z<=dBDc;!!KFTeVu_R$ZI?A04}=jUDFrktfyp)!HBzlEi3j%{C^`R?%3dAoP-ndN66 z{LIOn_kX27z5k7N|K98E$^H#noh^#4D#~{0i@tXAt~K7aw(nQ?0-Tl3RDEqa@G%n_ ztMzD}XyBCvBJ;KY0R>|{t&khQ2YqjfmeK&>%Mezvz_kGd$LV__Ee4nia()6h=uLqP zU4h2|I|u)>{TfZI0NOyc9(+lVK|>MV4t3Yk^h=RhBCHdqXIiJj{qTe&b6Efr@-aF) z2NNOt$R!gZGIc|WC9r~Oo2KDp5{#!t5Hu*st2_r93`|8$Kj1=OAHio0{>XG}nCZX_ z4`FsyOvwltm5^}>Lp7woqPZ?Ig#xZInvkPzQx-~rtq{4W>dt2Uv?~Oxs`OpSkrBwJ zyO=>8bNfm=F{vqOgUZ1wx?%bV4Zp^FE59QJeXwC05PVkqpm3hjd^858O<(QvLWD7d zm(`ctj(Wan?o%3sI%Dqu5QeT~X&3k%V`{R7SvAp?lU%nH)C?xgrU6XW8;CIQu<-K^ z<$ho(;yPf);Jw9}Ng=uzgTXN*l-^?c|Q2}&0_`3u`_E;IRlnYvYzy2KC@=# zL8yC)O2CVvG`?tE)w`lTJDpV@?Oy)$(;vLv%@)6L>DiYKwqAVmhtGfMr+(|wt=Ilw zcI(!Un&S_SZL!_h*;eoTWG?;NTqdygx1ez~Qn$USokfS; z8Ds_kQv*n2bTigZY7Dw{u!b1~6kw8YT=4=}bH@4t&6f1m2CxIshs0>b)PXEgi`uo; zfSejmI)%eFpq>`Qh9Q6=2?yVEZc7Ak9OcL}kjksA=0MR-li7qb6r=}{a=rFhvtu*K z7%-5Mu^5BYQi?cG=MSG9mM}05ZZiHM543qlq;Kr7Ck| zcJFpH%2TtOL-tVje9*QZ?A;7Zn886NH#R+;`P0v7OLNEn^tjRM>5qd9?5a2O0hk>+ z3UHFA5hIl;QF`7E-BtmlDbuU(chDsQzQTRP?LlTlTmw|T(6E>YzX54&2E5f;EHr}U zS;l=wv)`8@li5KP-y30phNLZMF>ayx62@86v}U;iw+oo?yeT~76DAM^ZWlntL4k!P zy0;b9Gz~*H(0c?V)&aZEvB;Q5SpJ1bQc7us!B7~%ZcQ<_rZ0L^^etWsEe~CXBHlAw z+gS?>RBOu_7zH}tbZ4_>_i*Rv&R@QG`oXtndjHyMZ~Xqw^RIq;{_5*L zY#;skp1Jhw+7y>MUrdr9f7{9g*1n*n=}xWb*3Q+dqJ8wycKz_v7pjLJf31Cd=kF|c z@BCbM`0!PGx_`~B4;N*1S}v+%@B7x4fQUNLD5I6Gn|o71^c1|2;B{4#DXdu(rki_H zR~52leT!>QT=zoir?Oz3BTlGY03(J36qzhY#hiW4*rWiFpy1=ydTUw-APoLm6t^ru zI|+auykrp=cBTQXEjCSgSDF%-H!!Ut1Bfw?5$r(y!geumi{OSn3!NrlEJ%S2miU}5 zDxfya-l<%lig~c3v*iZHY*d0_tZ1f3W_DpIOke>52t!se25t;k8jhyb_0zEoF9YqO ze60fJ&=YhD(h`a;Tw2@ga^smYPYXsE!*%&2KfsKiyCXLor@-{*D3n2A(@w28B6kzb z^nab%SHN!oGAwYrnc5PQqFh%C9mjKG9Ydfu`h75lHS?H0xj>R8LpKI}q$#L$Z43|* zn6W{hlE0F?37g$pv|56Bl9+E0)LySzkb^W^^TKRx&x|iAx)ZXXAe)Q}4u`(BDE$U? zG~{N1z!;;Qh=GGNb#PtqSpyt40|pHM8whBFUSk1(&zY_OA6{5>wx)#0^%=bDdb6%h zkpV0Vk2;YvZ>@Em1vBmC(z|MTT&{25-&x-O;Kifw@BDH*zkYJ**4v*v|K+d!&ZW2B z`6uNwFMZTJ`r*Faxw7hKi>B|(zAPqLkS}_fz}gqAbj=`?+@a_E(n= zZvV>Z-A}$%?caWF-W*@?)oL;8>Y{8`9+)%NLF8v`x~j&^OOULa{4WaAg6-1H4Nz(g z_;vsQ0_Av&2Y{C+7(K}m99>Sp6p87ID7+9SdfVW?C|nx3D^C3cO5()KVbm6`U`x&s z84w+TF%Z24p;LGp7T{n4siw#j0=_0-+Or<~P)Kak_cPjtz<~79v{V$D2PF*@&K>~m zC>JPAROGKE(jP%wRWMz^9ZDlABUvJ4rJTJ(()ST6O##T1kr=1eB157S_f^4(NLXF8EwnW<&#NP5MLz zC+c>EzD*d;VHifDh%cWuA*?(YA)KQ91l4|Ns}_${cOXC*7Y#ajL5R{ER5p0_0$c{B zT7BQ@w-&^E^-YMtZm1C{t`SB|0Xh~G*1&vdW*#m`;(haRVwxBKHT+8xsL3!6BD?Xf z2fmO{njS=u>751t!m<&pp6hjO>I%N0-Q}zJt;N=B+kJeO8 zL-HQ@?w|k#c-7(i1N0s7>XeTb0vk#&e|m?321xpY?zW|%g&71gcrd-v&j@j$_hwN- zq$zA`%^F-xz&zV|1634#Z=Tt9zIU}dsgKH&^>VTP;NkUq_kQs1{4Z|)$HnCrKED3? z+kdq6^6UTa;`KM)bJw3gsGA2>-_P1vd3^$HU(hmvwJ%6%n}@bv9Te-2zH_a*|M6Gr zM<4#u*}ac`rP;glPJeoEqo|jQ%f9xdSvuD=4h)d4YcaYKa{{)FDQ4E7PNav#=*Fx; z$s1Oh@S^Q{2G6?7q5&%iiK!fkNBCcUAYa9YA zP7#Ig#189q4uS{(WU&q^3)>cuzY<=e1-$G5M0TbEwMzgczzBAQDa{Tlms<}Yj<%Cu zSy-dvXUZ%f+Ze3zix^qOEP~W(HY}osxKE~*0N%vJla_=-3IHpsPkq|NyhQB4Cf|%H zi`hK+Z1zzDlTI{sfeZ?wWn@IP=xuaDr`bNWybXbo{2L63IiL}LFa>~uFi42349F|8 zlC1cj@{Iep;IbceYwr{$g22lg9 zZqx}+#!I>^NRJqBTlrn3*Op12rEC=OXbuqx3#GJvY^(U1iVr4B&|vQX8;|cQ z$(R6sYOPtVYm7*r&w*7d&0-F}=@#q4#UE7ELatd93&P(;+ty%Q!1oKV_#W~OqYoM^ zbb5SsfyH13V9Z){0|8KmESyIV4YUG)bpoz|UbA=-0Bn!HHRnBoyQZzc9E$hhAu|gO zXLw7ljO~_oVM{aLUihk8x^B5&G`H_;*X8AxKKs$1{@m=@TmRA3x4!({%dfuuJH>M^ ze|P@k%Rg#PK0LOID~&HEEw?XPnZViwE?xJ?+4|UbhYz+_fA-tAs(T;*;_B{?|DCf3 zpZs*O-n&sWN84NNsAOQB=dY-W%6JSUUlt zu3aOjGOiJ(g~T$H9ulzq;+RjsO!mqUBL{rUG=SHZReXoRl;{hG;O#4r)I&=U_Zeq^l0)ji%A9ZOEe0BiB4 zbACq2dW^pp19%%X5hM$;*%&CHJObrOm1iQF zWb{Ziwe+O20W9DqW@gkbl2{NdBSvH~fXSb(o3!-;%PGuPI5Z9j&C(2-H~5mXH97O7 z0OY2kvuNp!W6Yx98UlnnHApbT$-E3 z+#3rFJo?DNyP(Cu7WmP_rWSl)5om!QZG$oCVA`a22zji6>jk_Q!4GW#Kn{T#v1;hU zhEi?4@$koK=EyyiePWSKY|Of@Ob5QTeP^~79<#MHHF)}VrgR0lcQDiG>eg&~YaOIm zu(j*k)-P9wWmE5OpB{dE^X!9f|C{dejYm7r-TMCgh1dSc_S;|nXU*;(-?3MoKQ;3! zP1jCl(l0`pz}f{XZGC86(G>OG{jKHu|Kde^aQAD=dmsJ!$!G6>YyIf<%jN2Dr>xFq zTdsDtS-M4EK{No;@ECCi`Sajq1iC-~dm!4FW!xt}_Xc4PWG8%X}#(bd2osp1cFy;_Y1BNM1 zd<-FiW?MdK#|egxjHW1>z&Vg0M-O6MO!{zac2(k{c}XTai9VFz0g}g{S(5-6qS0{Q zVgjY)^)b_dfIMk(Y7~pt);w3rz=dr(hbBkQ37|@p^OH!=C?hgR1%TJ2pp|&6YLEsJ z`cnW=33A9jDu9+vZ2{zuOnKq4o--XLdS-z+)Ba*vKO`XC4BC}MYbKahKP?>yq5xmG zc1~XnmLnT35}B=Nrc_{74gciKV0uj%zc93sG2^6BA;)Xp8VR^zHwuU{2ODJxiz>)Y z&?2K&SMa7XW^3Wh_F|5HYN(eBHLTY-h7gm<(!>IEYfaNZ+N@~8hJ`FJUx4NSPyv$$ z$=?@+!v!O}8%toskXeJ{!QYoYOTJ-}3}QwR*gRy_KogRlLW6#IooT`QqxayLVw|60 z8v!gjF!6RZE@Vp&;IFpZb7z}&xZ*zM<2icdb{(?uWi5g+PzCR-~O|$ zH@^Ij{H@pj`RwNF_nK~R)ptcxPJsy*woG8{0+p_NXzlT5^LqE=*G@nB{;!^V`rdD} zdw0LmpX@zbHmCEe?OEZPr8Ui&+bPKj);6v2GXi4mxHeaJBD0Ih5RLO@h! z+Z!|Y-kiZI79y}pke2|>B*1c@-Ua{?Obawoq4^X82E6Htf)c8OMiNJ#8oQz_2(q$8 z!v)kwD_r`6W@}o8&9kVRMlXAsd!UsRwHl*Dsl*k3G-r~O2W^nZ$_RP{%w{0#3E`ds z6E!FtGw{(?PLj>JJ}Kk_dZR#yD^w*s3vuHHm>#2HGcXVWDX4a2VAzLGUq6z8ij@9N+5sGPx5s5^L2DT<3M;Vlo`&IfjPUh658Y!fJE}HB3d4z=X!)K6~76VX9 z;}*3sj}noqZW&PvSKF<)kiO=BfN)*_&`G+~tngkyO*^jM8UX$ZolFVZzb28>mA zYo%gxbD(9E)P>;y?CeiR!FZ(OVpXYcAe!aLBA5(wbi&}@r)gmv7sh!=PG`)zs!avC zg)uO|n0X06ZH8c~wDA65A6Q5JVw8X$z!_vjplmCE``|PB&%#@$YtgI;5<@fFo4L1U zR#=oSg6L0pw*Y`5u*POjFoELxg#r{D21Jo05CKLGL;$lYzBfq|5ZE}>m;?zO?3>c` z5bTAkQ^(2aIRYMrf9oM=%X;hV90bjMn!6ufu0HwRxAx!vlmB9Q@BN?m>&G{? z+OxS`p8B$@?A&<^&aMqOw>B#TC!H+v4IEI_^?Twv9T<^?dt!V0x8 z-mML4Xy=j46>%^2Nj1ElzxN-*{Jz$bJ zt(7oJ6#dVWpZKh+Yo+XhK+-fxxX57T2Am}NFBFvoJ|sw&Jt?Lcyj>$55o=RsOZ2%z z$3cmD73XlW)d0IHQF+3wMQ9Lxz*1aAK8Z0_Vr24GkRaZ9bX-qwKwuUHs3dovvtGgg zCMaR-b9^de{U?Ujv~0@JnIVM)uEZx4^wjcmvWFO1sOW5;Ge=1`W}r6g7yzx$Q!;(F zEKg~k@j(^`v1c|dCSo&$6dW+m2>gImhrGW!W?$4!$56k;mvGTnmGvH0wAl_U=yY1)PdR5qRa=p_v((=Gq?;aTA(gi{LKq6 zanieK4gd`@6+pm13GYSdP@rp*yqs?@5DCk+PBrQbC81m;p6$)-e=d3Z-4l; z;^v?K=Jl`r{Qtc3)o=cG-`zc|>!O>@C(w40$^_P)^3t>i);A~f`p)-n9sJ8b_)pfi zfAE{_{wJ?5R*$x3_N>@;jdjJ!ntFw#13276G*QNX?NfAHw zuB8-F7V>mL1Sac}aikVHqs#kNF$@T9Fy9}7s1O3kaE}=-ZP%l7Fy4w^-eOSg9KQse zH}kF1)Ljh*3FE;e!0aDshm*=UoCUrj;HLsF-A>ZJSdS~=4otczkwhYv*krtCV2?<| zS7aLU5-llIr!Y^ng`A?p0V73C?CRf~xe>p)^fV2L1Y8nO zgEv2!K-pJNVMR2{1kQulx3Me%^gRYGXkmrHJ+L23}6jzC9)UB2#mEdhDP#H617Z=LcT-`i%1!xbUl*81z%cX$zfqu zEo)N)gaKbwUz)ACGm8ZwC)>6pALPNRz)|aPHAr*UJJW)QH$;JQ1S#ew1`ZnEN$^L3 z2n7JQIYfODP=oY$g$Gav|I$)8ypxd12UiMU-pK8O-nY?|jjTT`G9g0?m|ejaE_6RF zv}h4rux}mb?BxYFFqIhG1^k;UjO#1(*Yzdz;o2@BRaRg6rdqkSTRn4fy!#9Ldmp{N zzWcp@>+(1L?*B4>>u29R84win`2`m%nNKDMusG zb1L^Dp-(;!k7ep@lOsoWdgs&f2K zG8^PL;&XT4M&QE({+%VZXJt+u#bIIJ@QKUwizjkhB@Zng zJO=!^Zv|*=41UOe3-Kvy6&I5Apx*_hn2X~LjnN>(gE&~&GcXwbOJ zlnerp2JdR>H^`j;9SZMeT;5<8!n<&WCQ_120-ra~adW0v%<(Bo3>Ho0()nERtuH8Rz{`v&iEexnsLy)4POz5^7;+HUAD z3<;hwO_jVHDawHIdy%Jj0WD^bbp!mgFXMn?rS}IZxrhvFDf99qJ$943!pKTL0%lfUzOj;Q>b_+w(<0%AKYr z$(%vlg!c1qIUOeE@hmVQ1O7>?!u8_fBuK!>GuN&I%vuxL03TKX;lKh(PyuNp_H06I z+8WXXvo9!1n}*%x(eW)^*4-^##2fJc`}Y0u9)9^!n;L z(}whTkaHLU72rJjy&#h|v!Huswikt2%plMTKpcQKkQD-REBMWVPZ{MvM$m>)pYX1N zV@}+*cT5{ zBKQKpX@%RtJnB1Vwta8grYmgS>>S_zv#;L&{pElCV&6Zy{PVx|hfTA$E{Yp}g#kU4 zpG29!+EZNm<#BQN!4JN6_~D=Z#--DH&s{QS<;<>K*Hosf0j$l8>u=x>8rP5z{*8zR zOpWv^Ezpk0#)u?(FaA4lOBOjYj0UA>P1-9?=mO?QaF*1KgdHGVGWNs>=0kBd7xSa| zNFl$5R1|2u^=45N=F-;8tWO(L*OUVkY@}@sW?C={gCj2ZaTILk1DO$E+hmfkm@cLO zGXVO@fPgp%V3LUtKq-XyllTbTPmnC&l`HwlsOP|ZVoXUD=RumTRHUccmtqYaM4-7L zo)~#T(iX8WT?W7>eXnRVRb$+!u7e@5aE}}bI%p)oR}R+D?3EoR*_M52MCF+DNZPpI zT0WTM6$lNd(nL(6qhP9%F_goY2uAa(4f-Jo9LUU#aitNMKYeH*SM%G;ucyGIcKIJ- zZ($R27B0;eFm4%*4DSHrr8kq6{&Q{-pT{h*MA#sJQ48`$PBF0M3ZzB&M}o2dq(CAg z+>0Yu2QX*CbVPMP76Fj8Ky3~LCj_n<(?FIK062v)i+N#6Uzqu9W@dhdi?P0jz#_;A z48M5@8Za0<)pibjaxr2QtO*$K#F^KC*rzObsP~BJsJt;-r7?@rnXNhKw83krL(?bt zh`}2d7nuMqIgkndhw)c1cA2aeKVFn3Ldi%7Y5-AjSTsvoyLO-@N9)$cki`%cRZij$`#;~0575jB9|cL z(zbC;Z7f7Tx(ad*psxq{nE|r||MJQWmEqHn`w$GElDlY?2^4EojE^|&(@Xp+DPE@dbZutsU~@D%V9fkk$=D9m!JG$%a(wzctghO1H(ZM6%8cyhyi;3}3F#keI*V5~vc8Sh$r>tYs!=x>!qP3qK_DTl-xVp9|aCdYHq z+N5DAvLRCtIU#Gfz@wd2b2(Ic=szaBTuTRY1Dyak~i0`ZX4?>b9l5gCud7@X|ZEEH^-LN zE%|U13_com;N{z-D*+9Mzy!<=nmY+9%<9Sv$=<=c`@{~Se`kIy?N#v2R+ zAJY5Rfke!dhy1fJ#^7_z|K%?7N0+9;XDOrV|jH&z-q)Wo}Ae zo5cb|#DU3b&CCHCM!y40-VVOD2*Rj+@{YlulITo|jv@N4McqL7pGVVw>^tmUjILKH z?f5~2MNaUmkU%J?1Kw+38it!(GKefO)gDM4HIRM}DMb1`xu!87A-U6Ax3xOlIsD+g ze|vTB_W!!`{OdoMz}nMYCb0IDmL7h!ZR1UKcDd*qS2%0?rXz+(OabU0L980k>a<1# zkb&l}kWfJ8_fQ0Xh1`p<+KfJ?LCIdFgQ52XO?oo*Md4MtGQDBoSaQ%upNdd}M11L> zG>H-eMvOqCYr!XEX8J7vZiT5TXI9J3m}ZSN)Tj`S*+kJX7<7^>IO)Q6_FW^f+sM&S zd@7g6ro~Y zIAISJ>&1PnS;)Y$%C!T~Qou^iGOTG5*Ggt&``#3?1jsC6GwhhWeq81%kqv4f@W3 z-yWE4iPeKXm^){$c&NZZz>x{yhwD-MI@a!P?k40?l9_W)eEO9Eu20QgZ~qud4bNxxDcY(0O_vF*J*5Q~Yh5!lO|@<6#x}093*Vu650eW+Dt7dpKykI;H-&21xU!WO zv{sI1O)Ush558sWG_Qf0Xo|6kf}|bdgbLQ*!TH$1X592`LR9?cLmeUWAzrEijnjYTdc#Z&Nm0}o@)PnrQUWWBIxfmn!B z6JNg+L?!Qb1d`mV{ER52m!6$D!D{G`_#D_k&cK~miUb7=SQ}wc14WuV@pPK!eKqmug=U zQ5peQP}k6sC%O?F{1V!h*Q<*7$vvqEK-8cvse_M_g;zAIOWQe*EFLDzCA$$|)5vXr z{H{nkCtky&(?1Zs;EF)(T8~UQ$PK|CIQN&OF~uANu_4;MHa+Cggj9IIytVNAp?46B zRTPQESDZU>&Jnz(UZ&J)^dHiDuItQqnZ*vOPKcQhRoC*>}ys6IN1F`3aT@ ztUaX#e}qj__ElZFwzs~al_*3y(h8eawy>f?xrva5M*sp(z7p*iEEOK^`NFz-ZX$=_M~)F%wc3Fe8TMMKHR6PoYeEWFnHej93w2F?rGnQK*y&mHJ(0 z7tlU01lUN=N;ZeYU&)j#&oJDF%qlzy(n(QkEl%P2f8&Tq!MPsCa#;aV8rsJr(zr=! zsY0NkLSX@O=%~+4o#N3~hqq~6vO!6F`tufM{V2~rQ}ak_*Tk9J2L~x=qhfj$2AWw? z_4qr=7_@|y%PySVR7g7-wALhMn;0GfVZvu}7U00R#ov2i4F!1PPft7wiM58`88To1 zkf1hNQ{rjpvQWZe402=wP@{-Wl;6OF<||XRYYYfLU$nY1wxJ*e_$AlOpaB}g=HPc3 z*Cf3|Y!U-CjvuN3@PV%{FzH=u%9%Bnc4p?v<(av(R%e?3B;lN2Ku-1f=b?p zDkz4`^AZgzEF<-mHeE-Fp7@zs3~wghmkeQEzy+BbN>N3E6LEuWF!eBn8 zSP1f|!*H_}BI;?ejC_;MFasG=V>SCu_%W@Y#r|UE-TuUU=AmXnxV&_o4n{doME3m zyzhF~v!1oa={-VY=7Q;zVan5bk09PNJri6$)1^Db`Z&~1tAD|r>Gfw9!tA=3ab@m> z7Qkepljcf#2Z!-Dw+Kns;~5fcGHTXDB~~Q>L~0b6vtefdoqw8{+Wq9;*-SW$MXpa<9_CAh_e)nkL={uGBiiAyH%f&6_y_72a2^)7D%u_LF&VfX;gW7va{U=#=kv7+*vN+B#P`o=wotrYpJC_ScTZHX%D2S z@kw<=Sw`Ytl$q83p3RsyU#0tpW0}-nk}O;TybgJ1C95>OdoUvR1z&^8tQpGN3Osa8 zV#ZQ!R#cuop>k_B3P9>yX+^KMnVJUDd5EZ~v|G-`#vy=i$6ed!%?Essn2r*YIAgNz zv6M?}PZIZQef99Wbed;{l!`_|Q zPc;n8ZCU1=o`I zH_v5^UKauAqgDA}t5sn~=NEQxRN8V04>bTX7`n9*;-@&MQlfotWYHN2_FKzMwM4jv z&~>?Cm!sW`KzjT>CBLL0nk=M`r<2Sg)(J8(my!9TC7hN~_?wa%RC>i2fya4k13m}* zNoIo{dk1Qt*Wcw1&C$D3tyyjj)l)DX7c?!Rph*6z~{17P0|1*v}wSS=j= zJIfXhv=AhWl@l8Y+;!hISz^_~163L|Rkd)FE5amt+$W)VxH!&2{_);?H{E zwByOpYnsyUEj;OG*S!#I>bC?)URtDml7EkGPc$4B{_tbQpqtR#blbfIC>9LYQOqLoG*E2DL zam~PMOcTEV75ByE0KEPH&UlaE8k_(vz*$u*9uDk(iFhW&-l3kz2l(AGw$iPktjXZ@ zo_=Rs@PPF}6FkgpSw2Pl6K)j&4S+|6QHAS8Dr-**G08mCbs6#nHZlx@m5baC4{JL- zSJ=_T$`&h}Idp(;`GR8kAZSB}XLNh}v7IH2=!{2p=X4BWS#p-kjtatL?k5~JJRe!YYcY^@a>yRri5h3D96FUiMa4=Jr8K+>$`XD% z6WC#Zb*&QT5zny0fb98ut{^)D!V;k$^Qlj|(?mA69q<8U*7iR!A#NpLo)y}`V@4GoWB}nz-4K5wzQMe#x|SI8Vv3jy$dB10A#iJ+8758ope#wP?%Y~VxF{ERMEFnX?QasMPRb)0Z$3F5hgNjnID zXPg|^=D@P37?X^pBn8#$_r1F1h{Qb46~bYyll|-nkWU&p>~nul*=5F%BvNVuZL)kx z2j5TR+1gKHka!(UD}*QA%KgWKP}FFRk4nDoOwfItMgL;nreEfnRe- z8eoYN@8#e_;MF}7eVj>MmVOMF8H~j(*l}mAp@Btw6gB`y80fCgm3DL>)7xq_FqTPN zA;6^!ywRvoERelfGRltK5Ru*y!v8dgP3a<2sWTqyjY*ZDJ+SWrrPiq;Py=tWLJ&ny~rV9JJBb%`FMAx(&$>bv!=P zGJ471EenReuP8r83H3~eB`4Ry&!rf@&^tv#3XTUm@4z6c>%*VxOaZ~!tZF~&=F<3U3VD;;8W_zMy_M~wW;|1y`j=8^c@_n0*14~>E#KIC~+DFkJ znovEOjh`3$se4alGiMT$;i=eG-7g9$kFaxAY~iFfjnk8DrcstLuXImBtGtgpd^jBkV%=u5Xk;fL-XI zL&e`5_$o9bl{l$G8v!y3c6@?qWB)i!b*Ini+-X2w0XhI&w!*w=#-yZEgw2-v%;Fr#-r8xWU)Rtao6AdcAsv0uy&tr@=(kAEX#&rfGdudWm>El)if}c zpl2}fWj2w|2+jyiNIrYktQZu>0?5K#~KGElsX6`FR&YLnAwnCJTB8kwI{^18R-d!$P=6ht8P#INb| z5)36YCWaIHjwS^hV}LK71F%DwxBOh5&6N9rSU zzY-p)!pmd)EQs9!aK}I{(J`(O`qE_`EmHK$m>lM;Oj^3zIN~Bx|( z01fn3rP8YsDa85^@M1CGAe;Vu13HT*IY2a3IK&ZC=73lCNHBJ@1xEsd0$RAA#DLG6 zG(z_nO)F7l#l12$ctojlVkZS?QiJ9+hbPc94Ia8qct1xH1Qt33V>4Ed?)RQ=nHRQ1 z84wSovZAoORv8mMXIRiFoIKh;N0!v+QHTZ{YS&P<#GQugSe=QJ`84it@NKf-!22Uy zo%`r10|K-Hk7SaaIhu}1P6OM-czU^(%RsPc^kI{E?Q)UXVg-X+SaMXhT;;Z0;Jj(! zijr-Q3Wb-u<^1pVy&a;fdaie6c&ncKX+NS2KI@KkXqB#SUl89gO&dsh2L~-dDX%VUBijK{rkcRZO+cfO{M3Td9t2tvxroc#u$gG3p zBCp4yS{~OlrHeyD=Al>!!LBa$G;WY!VF&Vn{4Ff5UU|x}_p}GX8 z2>@1YvFRx5^)Xrc;@w#|9!o#3Q63e0q>>9KrUdld;)To@o`4z^7>5bmkse9*0#T9$ z5Y)l}X3aQ$%xERRi*8%76WR$`ny_>RKP$cpm|ZlM;31Xk{-iq$cF<3TgC`zvF<$&V zSe3XIH30>b;_;-{oyzRE&T#nj3B(p^eIcV|GI-7|6M{u)%GpkVR2ikZIShdcp3kO~ zREl=pWMU`<$c3F8F!l3Wb9^#*_+^sl_fN*`xXtBqyRWMwk#n?P?E-pV}4ncG-&6SzyF5lsYa zqH^I~>PntzhSd!oBd0Pzz@-gGqa5XCK!E+gvgg>Mi9-!nU9T~nb|^9t zvKT3mDGg?;XKegeE7T)q9x(-BB1QFzlcYp6(#{4^k7L z>2U2_@);8IqlNKV7yUV$&=#xYxwVvoL}%4v`XbZBFi`Kb^G1q1!|Fe?MOoRR&TQeX z=KyYPt3j+Pb6ZqkT@)m320y2qD@x2d5+U_i&NT5_6_bnCM=K*C= z&J>XJ1xPTuQJy7+1;7!q7Jk;xWH_CDqO`!}0KvPlSBSP00)Z@B)+I~n>L@NL4WJyL zm>Id^@457yyzg-wnuel(vXUrc5~Sf!0ywC=8Df15NxUa;9DvAp3I!BpcALm>$MAmj zxF6bNZxZ%0V)UbM%a`_b0L!&x?3~#~gAb)3y4G0)L|oJw;H+Y|=lTGho=8S%Z5%dI z2LODzH`>sFRZ_-hvY6rOptO91rWNleZD`W|C2ejjJSQJCY0eZ?$H&bU7c$QFax|DQ zHhqP;uf|MSZa9-2UCu;f-awZ6T;v3R=e7-OPI}vITWZnpGi;C8`N_lxEznqE&J<+d zvH7XD4qc&EjBQm7<+=0MtXypYruW60gYE`vpqYE-C2eCW+Ik$m84dqgRHk1fau3K2XP&OxkKnGxe z*9oC`ic3<5n7Z2lJfycG?e8ofT(wnh_0=Z39w%#oGgb%OQlTelc*1d8E%ae7>6$q* zBeU45th0h$mn{e0gLTO~!QHO1(@kr;2Hj_7C$KyjWW!O{3+^k+jR0vZuc|o8@N<4( z1Vj6}mVjeg5o`4u3L1Teq{Vaj9cNXpjCX3==gO9XL$hM*O(7L0L9$0UA7I)jT3f&w zSkYSEfKXz9CSlWC-)yXJQ0CatlL~+6`p&xT&L>s)@eNk8M8bNLM94TVLuDn(lE5`l z?qWGa=aJP~OdLG+Zi5lpJO@{5_MBVrYeJHaN#~x-lG@XBl)!GfX6a0`ipOY)!3tJI zj80CrXjayBz`#k!z38wryaxH_(1ZEzB~6|KF)HO_(u@QPXD{%cTy*#H_xWFs2h+#7djiBXCCYu<226zZch#qBpV>wcvN##B=Wd#7X zI*j32CiVV5z*fOW+#F)aY^&jmpzT^Y`Sms7cp;=%)8 z{%QHQFuiq)3^InUr}8pv0KfTtF5nh=K%HYTjbZv7qk{k`Y4VAj>I3RJ_3J2Y zp&fI^ESZ8k1MOY8sZ>vfc3O}KD0y=M#$|@Zb8t>$>CnOAq_wW?tN}>dp@Ps`ztf@} z*AuTfIFa~*gt|T}t<5THP$KoYqN7jl!iMFl%hrcK9*e4}s`Z{(yN|a$Si4_0+R;~S zmX)0%PFx7frK-gE;uE}F<8wxmo6%!O%?Magb5NjUXJsnFra!tqouTbChNmR-p+UY}&fEwyW&!U6e*4xRv)((?}Ez z<6AINT&HppM_Cfq17Pel&AwmSezac5z{qndpxxd}v}obE&;{LDO+Lt_ST41hn*yMV52G_+tN zaE6W)Kc}*#A5%XrJj@9=hrZDnz+lj3OnPb*NERlNJS6gszJG4N>`bDXK0F@JfiEs0 zqz}}q(pIa|mJ9z{;@(gvw7OB@nWp=ZeraAp$GL!_Q4LLgsrbSpw5pNbFjH|R-7VS4 zu&bFxu4x(K*{A&1HFwd#0a00$J~b%ven9yg5(6G*0%DJc!Xv#ywrM+Scbzrch7206 zQ6@4d!A{I}R9{#xhlmCX&H|&OHOyQ_m%M8gQ5MdNF<&lshYwu-VFvf@{dQk(d$4w& zZuICXs&34xX4i~1)GFnHO_8?7SDQ3F^o9dI5i7^ZMvEgMbPJ)a3ayi~B`ARo4O+TY zHq90_K|x;E=y|99DX*4%DnLNDIk9%rTbbva_`%>n1RwDz1T7%ixcYTX(^MSPn|pVp zf6!DK<)9n_T$B-JRvFUZx?rE^u3?$0pa+IZfMh`W9Um`DAZvjlUs-olkXlh)cs zU29#_%Sjz96j!S?TFa1$2xHuOWy7u|7$qZGFDwW128Iy%sd>r3>5?BBqkT+& zuB`&Fb40_&66zkk#MEnI=Dtzq2GO|Af=cZIPpb5)0YZQGpL>CFoihAQxrAyg!+WcF zMNP6^`U)*1_cOpf{Pff%N}z=D9FG~89x-(UTqqBQ6$ZO$#Sle*2+v`Zq4=4+Y&G-c zqQya&H9JG5i_EQ8crN@1vNLbeHVUjTi%8G&a=F+am?wKO#w@)6>}dQw3|(n+L2alr zkzi7&DRsch$Kd*Rb~CheelA#6Wus8&6>*7)8RPFlJLRP?JWnM|jV(@_k*(<)&)jtO zhR=7_Gb+;aeulKb3WhB8E(&Z((if%MdD$?e0sc1!Xp<>&c;X23h^%x^IaUkI>LRn{ zqOjE(Un+T`+CXA-IORf;%eVrp+ni<6J*dWLmt^2r#wm=Zr&Pv_wv;JTH%TP?03^Wd zO-j7v$x8cYa5;r?hSAAC&le7JY>crLs~lK3g0;l?LPG$g54&Bb@7vazre)JWDi7m& zLKB0tz|ixNee~;|BPD)6W{l`Ui4=uk9AidMRrNU5^`<;HygnA_R@-m)^R@?T_vtof z#h5J*PVL~}&CQrUhj`v$%rgw|G>wFX#X>RW(m({Dm>IbTQ4*_1^%qPw2p}6EIK?c9 z!5RQ;2MybfxqU<{Wo_m1oE5P8M*LG_Wh<14hbTMc(24zI} zoQfTBFRsul5ez{i;u<1su^Q!Qhu5MoN17hjs_-KdIr-W>mZ3hNO1xWHk)iBc8Wduy zDz|P?+pZn$bi3m~h&K0zZHJhAu_^~EC*L!bft?u(!FZI`uu_k>8)rJ?6Y3w-z2YcN zW=RUK2;k$-Y4Bb`%`8EZ!Gmyk>CFKRSvJdR8+IGEBMILr(QGXV9ck6BCE-RJ^8Z+Pq{(pvm%)d(3$ktNaC}uV9)cnB$4aB-ujN)50&s2- zL(P*jjwvo6%7F=nCYFqQ6aXUb8)^Y#y`Xy=3!&(y7DK82ov<019P9t~_Mu|iEIQOp#jZ^4(yhKDl zHH7@pB4eApsIbCb94xJ}+^VLq-L|7nXFwj|*t67t3BF<(5%@-BP)bLf-3Zo%r9fz4 zP)6oXs5F?^05`Vz#V>*1f|xu9qa=t|2wl%Pu+ ztEKhriP^R`%U71w=PX++t;d8>EG=Iw=x_lm0u0vbNYw;Ht`MgbU@j(7G#apLHZ*!6 z=np%KsHpmt6)c{ET5m0$lDi4E+?&C{8;=7SF+8W6K%;|kQnSwfd3v{g=OB=iJ+4e-BQ_0BUaL<@=vpRNeb;vOV$V#i}ADFGL+Q;=R1RGWo{Ib5Iwd%1#8Z&Q412 z32H~BT(O*Cyc>e?5Y316i)Z-y@x??Ots`W|*r*^MLxCcJW*%-bX!yTJr#S_qL*no4 zdI@zHr^sOcH~j4Y-r##SOOXh`?sul3oJw!n&wlELjYS!CYEzR-LK;y8=H(v?gJ>pE zE+=%9Y8=XJwJdD8Dr~U?i{_8z*HlXx;m#84}Wi-AC)J=_!wg(I_7cz2-s;nAj?EYgwwpuWOb}V3Sc5qb<&Z#agm7xZ7+!jzvMoSk0nrfHEtLK*g%L ziDEDrU1HljLIO9`4>K20Dqy~(=Z>;m*z;vfuD>Wj_9;?eH+E~_ya&I#83c4 z$cQayYB@Gr8vwRo#Za9yYd6+y0pb=`REK8WielodLL))V0iLBQOo-6Hp(FGZ%mhGb zP5eO{2A0c9mRd&mpNy{V!<@&`o0tORwc4`08IjRxUO&=YT{Cf*Sq*!;4fgUj#7&FsnLp=FY%o|7}?DY#~a$QQ1l~rr)eLlC*3Fg*Ir*Qyi%Yj8t7`ddymY7v8sQ6NGucJAjl2pY3 zJ~Xpx5|G^qz#1CJu!cd1J+oG$1fPt<)pZ=@=TwIEYk=BON-Eq`nb$BXFzhGN*zVVq zd@2`M&JNpbaq{r9pZ>k-{H1MAI�=&)XiX-N)OwSdUkJ;mg;ac>DGL_0`}0t^ckZ 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 literal 0 HcmV?d00001 diff --git a/frontend/src/app/app.config.ts b/frontend/src/app/app.config.ts index d953f4c..8818bca 100644 --- a/frontend/src/app/app.config.ts +++ b/frontend/src/app/app.config.ts @@ -1,4 +1,5 @@ import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; @@ -7,6 +8,7 @@ export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), provideZoneChangeDetection({ eventCoalescing: true }), - provideRouter(routes) + provideRouter(routes), + provideHttpClient() ] }; diff --git a/frontend/src/app/forms/edit-form/edit-form.html b/frontend/src/app/forms/edit-form/edit-form.html index d229b21..021eb5f 100644 --- a/frontend/src/app/forms/edit-form/edit-form.html +++ b/frontend/src/app/forms/edit-form/edit-form.html @@ -1 +1,113 @@ -

edit-form works!

+
diff --git a/frontend/src/app/forms/edit-form/edit-form.scss b/frontend/src/app/forms/edit-form/edit-form.scss index e69de29..cbf8e04 100644 --- a/frontend/src/app/forms/edit-form/edit-form.scss +++ b/frontend/src/app/forms/edit-form/edit-form.scss @@ -0,0 +1,46 @@ +form { + display: grid; + grid-template-columns: 1fr; + gap: 10px; +} + +.row { + display: grid; + gap: 6px; +} + +.presets { + background: rgba(159, 211, 246, 0.2); + border: 1px dashed rgba(0,0,0,0.08); + border-radius: 10px; + padding: 10px; +} + +.presets.under-field { margin-top: 8px; } + +.preset-list { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 8px; +} + +.preset-list button { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 10px; + border-radius: 10px; + border: 1px solid rgba(0,0,0,0.08); + background: #fff; + cursor: pointer; +} + +.actions { + display: flex; + gap: 8px; +} + +.preset-groups { display: grid; gap: 10px; } +.group-title { font-weight: 700; opacity: 0.8; margin-bottom: 6px; } +.group { background: #fff; border: 1px solid rgba(0,0,0,0.06); border-radius: 10px; padding: 8px; } + diff --git a/frontend/src/app/forms/edit-form/edit-form.ts b/frontend/src/app/forms/edit-form/edit-form.ts index 670ed6b..dec440d 100644 --- a/frontend/src/app/forms/edit-form/edit-form.ts +++ b/frontend/src/app/forms/edit-form/edit-form.ts @@ -1,11 +1,298 @@ -import { Component } from '@angular/core'; +import { Component, EventEmitter, Input, Output, OnChanges, SimpleChanges, computed, effect, signal } from '@angular/core'; +import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { NgFor, NgIf } from '@angular/common'; +import oedb from '../../../oedb-types'; +import { OedbApi } from '../../services/oedb-api'; @Component({ selector: 'app-edit-form', - imports: [], + imports: [ReactiveFormsModule], templateUrl: './edit-form.html', styleUrl: './edit-form.scss' }) -export class EditForm { +export class EditForm implements OnChanges { + @Input() selected: any | null = null; + @Output() saved = new EventEmitter(); + @Output() created = new EventEmitter(); + @Output() deleted = new EventEmitter(); + form: FormGroup; + allPresets: Array<{ key: string, label: string, emoji: string, category: string, description?: string, durationHours?: number, properties?: Record }>; + filteredGroups = computed(() => this.groupPresets(this.form.get('what')?.value || '')); + currentPreset = computed(() => { + const key = this.form.get('what')?.value || ''; + return (oedb.presets.what as any)[key] || null; + }); + presetEntries = computed(() => { + const p = this.currentPreset(); + const props = (p && p.properties) ? p.properties as Record : {}; + return Object.keys(props).map(k => ({ key: k, spec: props[k] })); + }); + + presetValues = signal>({}); + + status = signal<{ state: 'idle' | 'saving' | 'saved' | 'error', message?: string, what?: string }>({ state: 'idle' }); + + featureId = signal(null); + durationHuman = signal(''); + + constructor(private fb: FormBuilder, private api: OedbApi) { + this.form = this.fb.group({ + label: ['', Validators.required], + description: [''], + what: ['', Validators.required], + where: [''], + lat: ['', Validators.required], + lon: ['', Validators.required], + wikidata: [''], + featureType: ['point'], + type: ['unscheduled'], + start: [''], + stop: [''] + }); + + const what = oedb.presets.what as Record; + this.allPresets = Object.keys(what).map(k => ({ + key: k, + label: what[k].label || k, + emoji: what[k].emoji || '', + category: what[k].category || 'Autres', + description: what[k].description || '' + })); + + // initialize default 24h window + const now = new Date(); + const in24h = new Date(now.getTime() + 24 * 3600 * 1000); + this.form.patchValue({ + start: this.toLocalInputValue(now), + stop: this.toLocalInputValue(in24h) + }, { emitEvent: false }); + + // initial fill if provided on first render + this.fillFormFromSelected(); + + // watch start/stop changes to update human duration + this.form.valueChanges.subscribe(v => { + const startIso = this.toIsoFromLocalInput(v.start); + const stopIso = this.toIsoFromLocalInput(v.stop); + if (startIso && stopIso) this.durationHuman.set(this.humanDuration(startIso, stopIso)); + }); + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes['selected']) { + this.fillFormFromSelected(); + } + } + + private fillFormFromSelected() { + const sel = this.selected; + if (sel && sel.properties) { + const propId = sel?.properties?.id ?? sel?.properties?.uuid; + this.featureId.set((propId ?? sel.id) ?? null); + const p = sel.properties || {}; + const coords = sel?.geometry?.coordinates || []; + this.form.patchValue({ + label: p.label || p.name || '', + id: p.id || '', + description: p.description || '', + what: p.what || '', + "what:series": p['what:series'] || '', + where: p.where || '', + lat: coords[1] ?? '', + lon: coords[0] ?? '', + wikidata: p.wikidata || '', + featureType: 'point', + type: p.type || this.form.value.type || 'unscheduled', + start: this.toLocalInputValue(p.start || p.when || new Date()), + stop: this.toLocalInputValue(p.stop || new Date(new Date().getTime() + 24 * 3600 * 1000)) + }, { emitEvent: false }); + + // hydrate presetValues from selected properties for known keys + const current = this.currentPreset(); + const result: Record = {}; + if (current && current.properties) { + Object.keys(current.properties).forEach(key => { + if (Object.prototype.hasOwnProperty.call(p, key)) { + result[key] = p[key]; + } + }); + } + this.presetValues.set(result); + } + } + + applyPreset(key: string) { + const what = oedb.presets.what as Record; + const preset = what[key]; + if (!preset) return; + this.form.patchValue({ + what: key, + label: preset.label || this.form.value.label, + description: preset.description || this.form.value.description + }); + + // initialize presetValues with defaults if any + const result: Record = {}; + const props = preset.properties || {}; + Object.keys(props).forEach(k => { + if (Object.prototype.hasOwnProperty.call(props[k], 'default')) result[k] = props[k].default; + }); + this.presetValues.set(result); + + // adjust stop based on preset duration + const startIso = this.toIsoFromLocalInput(this.form.value.start); + if (typeof preset.durationHours === 'number' && startIso) { + const start = new Date(startIso); + const stop = new Date(start.getTime() + preset.durationHours * 3600 * 1000); + this.form.patchValue({ stop: this.toLocalInputValue(stop) }, { emitEvent: true }); + } + } + + private groupPresets(query: string): Array<{ category: string, items: Array<{ key: string, label: string, emoji: string }> }> { + const q = String(query || '').trim().toLowerCase(); + const matches = (p: typeof this.allPresets[number]) => { + if (!q) return true; + return ( + p.key.toLowerCase().includes(q) || + (p.label || '').toLowerCase().includes(q) || + (p.description || '').toLowerCase().includes(q) || + (p.category || '').toLowerCase().includes(q) + ); + }; + + const grouped: Record> = {}; + for (const p of this.allPresets) { + if (!matches(p)) continue; + const cat = p.category || 'Autres'; + if (!grouped[cat]) grouped[cat] = []; + grouped[cat].push({ key: p.key, label: p.label, emoji: p.emoji }); + } + + return Object.keys(grouped) + .sort((a, b) => a.localeCompare(b)) + .map(cat => ({ category: cat, items: grouped[cat].sort((a, b) => a.label.localeCompare(b.label)) })); + } + + onSubmit() { + const val = this.form.value; + const feature: any = { + type: 'Feature', + properties: { + label: val.label, + description: val.description, + what: val.what, + where: val.where, + wikidata: val.wikidata, + type: val.type, + start: this.toIsoFromLocalInput(val.start), + stop: this.toIsoFromLocalInput(val.stop) + }, + geometry: { + type: 'Point', + coordinates: [Number(val.lon), Number(val.lat)] + } + }; + + // Apply default duration from preset when creating a new event + const preset = (oedb.presets.what as any)[val.what]; + if ((!this.featureId()) && preset && typeof preset.durationHours === 'number') { + // already set from form; ensure consistency if empty + if (!feature.properties.start || !feature.properties.stop) { + const start = new Date(); + const stop = new Date(start.getTime() + preset.durationHours * 3600 * 1000); + feature.properties.start = start.toISOString(); + feature.properties.stop = stop.toISOString(); + } + } + + const id = this.featureId(); + // merge dynamic preset properties + const extra = this.presetValues(); + Object.keys(extra || {}).forEach(k => { + feature.properties[k] = extra[k]; + }); + + this.status.set({ state: 'saving', what: val.what, message: 'Envoi en cours…' }); + + if (id !== null && id !== undefined && id !== '') { + this.api.updateEvent(id, feature).subscribe({ + next: (res) => { + this.status.set({ state: 'saved', what: val.what, message: 'Évènement mis à jour' }); + this.saved.emit(res); + }, + error: (err) => { + this.status.set({ state: 'error', what: val.what, message: 'Erreur lors de la mise à jour' }); + console.error(err); + } + }); + } else { + this.api.createEvent(feature).subscribe({ + next: (res) => { + this.status.set({ state: 'saved', what: val.what, message: 'Évènement créé' }); + this.created.emit(res); + }, + error: (err) => { + this.status.set({ state: 'error', what: val.what, message: 'Erreur lors de la création' }); + console.error(err); + } + }); + } + } + + onPresetValueChange(key: string, value: any) { + const current = { ...this.presetValues() }; + current[key] = value; + this.presetValues.set(current); + } + + onDelete() { + const id = this.featureId(); + if (id === null || id === undefined || id === '') return; + this.status.set({ state: 'saving', what: this.form.value.what, message: 'Suppression…' }); + this.api.deleteEvent(id).subscribe({ + next: (res) => { + this.status.set({ state: 'saved', what: this.form.value.what, message: 'Évènement supprimé' }); + this.deleted.emit(res); + }, + error: (err) => { + this.status.set({ state: 'error', what: this.form.value.what, message: 'Erreur lors de la suppression' }); + console.error(err); + } + }); + } + + private toLocalInputValue(d: string | Date): string { + const date = (typeof d === 'string') ? new Date(d) : d; + if (Number.isNaN(date.getTime())) return ''; + const pad = (n: number) => n.toString().padStart(2, '0'); + const y = date.getFullYear(); + const m = pad(date.getMonth() + 1); + const da = pad(date.getDate()); + const h = pad(date.getHours()); + const mi = pad(date.getMinutes()); + return `${y}-${m}-${da}T${h}:${mi}`; + } + + private toIsoFromLocalInput(s?: string): string | null { + if (!s) return null; + // Treat input as local time and convert to ISO + const m = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})$/.exec(s); + if (!m) return null; + const date = new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]), Number(m[4]), Number(m[5]), 0, 0); + return date.toISOString(); + } + + private humanDuration(startIso: string, stopIso: string): string { + const a = new Date(startIso).getTime(); + const b = new Date(stopIso).getTime(); + if (!Number.isFinite(a) || !Number.isFinite(b) || b <= a) return ''; + const ms = b - a; + const hours = Math.floor(ms / 3600000); + const days = Math.floor(hours / 24); + const h = hours % 24; + if (days > 0 && h > 0) return `${days} j ${h} h`; + if (days > 0) return `${days} j`; + return `${h} h`; + } } diff --git a/frontend/src/app/maps/all-events/all-events.html b/frontend/src/app/maps/all-events/all-events.html index b4c39ac..fe2fb5b 100644 --- a/frontend/src/app/maps/all-events/all-events.html +++ b/frontend/src/app/maps/all-events/all-events.html @@ -1 +1,7 @@ -

all-events works!

+
+
+ +
diff --git a/frontend/src/app/maps/all-events/all-events.ts b/frontend/src/app/maps/all-events/all-events.ts index 6aa689d..ab04eea 100644 --- a/frontend/src/app/maps/all-events/all-events.ts +++ b/frontend/src/app/maps/all-events/all-events.ts @@ -1,4 +1,5 @@ -import { Component } from '@angular/core'; +import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; +import oedb_what_categories from '../../../oedb-types'; @Component({ selector: 'app-all-events', @@ -7,5 +8,270 @@ import { Component } from '@angular/core'; styleUrl: './all-events.scss' }) export class AllEvents { + @Input() features: Array = []; + @Output() select = new EventEmitter(); + @Output() pickCoords = new EventEmitter<[number, number]>(); + @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef; + + private map: any; + private markers: any[] = []; + private pickedMarker: any | null = null; + + async ngOnInit() { + await this.ensureMapLibre(); + this.initMap(); + this.renderFeatures(); + } + + ngOnDestroy(): void { + this.markers.forEach(m => m.remove && m.remove()); + this.markers = []; + if (this.map && this.map.remove) this.map.remove(); + } + + ngOnChanges(): void { + this.renderFeatures(); + } + + private ensureMapLibre(): Promise { + return new Promise(resolve => { + if ((window as any).maplibregl) return resolve(); + const css = document.createElement('link'); + css.rel = 'stylesheet'; + css.href = 'https://unpkg.com/maplibre-gl@3.6.0/dist/maplibre-gl.css'; + document.head.appendChild(css); + const s = document.createElement('script'); + s.src = 'https://unpkg.com/maplibre-gl@3.6.0/dist/maplibre-gl.js'; + s.onload = () => resolve(); + document.body.appendChild(s); + }); + } + + private initMap() { + const maplibregl = (window as any).maplibregl; + this.map = new maplibregl.Map({ + container: this.mapContainer.nativeElement, + style: 'https://tiles.openfreemap.org/styles/liberty', + center: [2.3522, 48.8566], + zoom: 5 + }); + this.map.addControl(new maplibregl.NavigationControl()); + this.map.addControl(new maplibregl.GeolocateControl({ positionOptions: { enableHighAccuracy: true }, trackUserLocation: true })); + + this.map.on('click', (e: any) => { + const coords: [number, number] = [e.lngLat.lng, e.lngLat.lat]; + this.showPickedMarker(coords); + this.pickCoords.emit(coords); + }); + } + + private getEmojiForWhat(what: string): string { + try { + // if what is exact key + const preset: any = (oedb_what_categories as any).presets.what as Record; + if (preset && preset[what] && preset[what].emoji) return preset[what].emoji; + const family = what?.split('.')[0] || ''; + if (preset && preset[family] && preset[family].emoji) return preset[family].emoji; + } catch {} + return '📍'; + } + + private getImageForWhat(what: string): string | null { + try { + const preset: any = (oedb_what_categories as any).presets.what as Record; + if (preset && preset[what] && preset[what].image) return preset[what].image; + const family = what?.split('.')[0] || ''; + if (preset && preset[family] && preset[family].image) return preset[family].image; + } catch {} + return null; + } + + private showPickedMarker(coords: [number, number]) { + const maplibregl = (window as any).maplibregl; + const el = document.createElement('div'); + el.style.width = '20px'; + el.style.height = '20px'; + el.style.borderRadius = '50%'; + el.style.background = '#2196f3'; + el.style.border = '2px solid white'; + el.style.boxShadow = '0 0 0 2px rgba(33,150,243,0.3)'; + + if (this.pickedMarker && this.pickedMarker.remove) { + this.pickedMarker.remove(); + } + this.pickedMarker = new maplibregl.Marker({ element: el }).setLngLat(coords).addTo(this.map); + } + + async searchPlace(query: string) { + const q = (query || '').trim(); + if (!q) return; + try { + const resp = await fetch(`https://nominatim.openstreetmap.org/search?format=geojson&q=${encodeURIComponent(q)}`); + const data = await resp.json(); + const f = data?.features?.[0]; + const coords = f?.geometry?.type === 'Point' ? f.geometry.coordinates : f?.bbox; + if (Array.isArray(coords)) { + if (coords.length === 2) { + this.map.flyTo({ center: coords, zoom: 14 }); + this.showPickedMarker(coords as [number, number]); + this.pickCoords.emit(coords as [number, number]); + } else if (coords.length === 4) { + const maplibregl = (window as any).maplibregl; + const bounds = new maplibregl.LngLatBounds([coords[0], coords[1]], [coords[2], coords[3]]); + this.map.fitBounds(bounds, { padding: 40 }); + } + } + } catch {} + } + + private renderFeatures() { + if (!this.map || !Array.isArray(this.features)) return; + // clear existing markers + this.markers.forEach(m => m.remove && m.remove()); + this.markers = []; + + const maplibregl = (window as any).maplibregl; + const bounds = new maplibregl.LngLatBounds(); + + this.features.forEach(f => { + const coords = f?.geometry?.coordinates; + if (!coords || !Array.isArray(coords)) return; + const p = f.properties || {}; + const el = this.buildMarkerElement(p); + el.style.cursor = 'pointer'; + el.addEventListener('click', () => { + this.select.emit({ + id: (p && (p.id ?? p.uuid)) ?? f?.id, + properties: p, + geometry: { type: 'Point', coordinates: coords } + }); + }); + const popupHtml = this.buildPopupHtml(p, (p && (p.id ?? p.uuid)) ?? f?.id); + const marker = new maplibregl.Marker({ element: el }) + .setLngLat(coords) + .setPopup(new maplibregl.Popup({ offset: 12 }).setHTML(popupHtml)) + .addTo(this.map); + + const popup = marker.getPopup && marker.getPopup(); + if (popup && popup.on) { + popup.on('open', () => { + const rawId = (p && (p.id ?? p.uuid)) ?? f?.id; + const targetId = typeof rawId !== 'undefined' ? String(rawId) : `${coords[0]},${coords[1]}`; + const elTitle = document.querySelector(`[data-feature-id="${CSS.escape(targetId)}"]`); + if (elTitle) { + elTitle.addEventListener('click', (ev: Event) => { + ev.preventDefault(); + this.select.emit({ + id: (p && (p.id ?? p.uuid)) ?? f?.id, + properties: p, + geometry: { type: 'Point', coordinates: coords } + }); + }, { once: true }); + } + }); + } + this.markers.push(marker); + bounds.extend(coords); + }); + + if (!bounds.isEmpty()) { + this.map.fitBounds(bounds, { padding: 40, maxZoom: 12 }); + } + } + + private buildMarkerElement(props: any): HTMLDivElement { + const container = document.createElement('div'); + container.style.fontSize = '20px'; + container.style.lineHeight = '1'; + container.style.display = 'flex'; + container.style.alignItems = 'center'; + container.style.justifyContent = 'center'; + + const htmlCandidate = this.findMarkerHtml(props); + if (htmlCandidate) { + const safe = this.sanitizeHtml(htmlCandidate); + container.innerHTML = safe; + return container; + } + + const what = props?.what || ''; + const image = this.getImageForWhat(what); + if (image) { + const img = document.createElement('img'); + img.src = image; + img.alt = what || 'marker'; + img.style.width = '24px'; + img.style.height = '24px'; + img.style.objectFit = 'contain'; + container.appendChild(img); + return container; + } + + const emoji = this.getEmojiForWhat(what); + container.textContent = emoji; + return container; + } + + private findMarkerHtml(props: any): string | null { + const keysToCheck = ['marker_html', 'icon_html', 'html', 'marker', 'icon']; + for (const key of keysToCheck) { + const value = props?.[key]; + if (typeof value === 'string' && value.includes('<')) return value; + } + return null; + } + + private sanitizeHtml(html: string): string { + const temp = document.createElement('div'); + temp.innerHTML = html; + + const walk = (node: Element) => { + // Remove script and style tags entirely + if (node.tagName === 'SCRIPT' || node.tagName === 'STYLE') { + node.remove(); + return; + } + // Strip event handlers and javascript: URLs + for (const attr of Array.from(node.attributes)) { + const name = attr.name.toLowerCase(); + const value = attr.value || ''; + if (name.startsWith('on')) { + node.removeAttribute(attr.name); + continue; + } + if ((name === 'href' || name === 'src') && /^\s*javascript:/i.test(value)) { + node.removeAttribute(attr.name); + continue; + } + if (node.tagName === 'A' && name === 'href' && !/^(https?:|#|\/)/i.test(value)) { + node.removeAttribute(attr.name); + continue; + } + } + // Recurse children + for (const child of Array.from(node.children)) walk(child as Element); + }; + + for (const child of Array.from(temp.children)) walk(child as Element); + return temp.innerHTML; + } + + private buildPopupHtml(props: any, id?: any): string { + const title = this.escapeHtml(String(props?.name || props?.label || props?.what || 'évènement')); + const titleId = typeof id !== 'undefined' ? String(id) : ''; + const rows = Object.keys(props || {}).sort().map(k => { + const v = props[k]; + const value = typeof v === 'object' ? `
${this.escapeHtml(JSON.stringify(v, null, 2))}
` : this.escapeHtml(String(v)); + return `${this.escapeHtml(k)}${value}`; + }).join(''); + const clickable = `
+ ${title} +
`; + return `
${clickable}${rows}
`; + } + + private escapeHtml(s: string): string { + return s.replace(/[&<>"]+/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c] as string)); + } } diff --git a/frontend/src/app/pages/home/home.html b/frontend/src/app/pages/home/home.html index 9af8203..5c75da1 100644 --- a/frontend/src/app/pages/home/home.html +++ b/frontend/src/app/pages/home/home.html @@ -1,13 +1,21 @@ -

home works!

-
- - -
-
- main part -
-
- - (map) +
+
+
+ OpenEventDatabase + {{features.length}} évènements +
+
+ + +
+
+ +
+ +
+
+
+ +
diff --git a/frontend/src/app/pages/home/home.scss b/frontend/src/app/pages/home/home.scss index 803ba6f..937b5a3 100644 --- a/frontend/src/app/pages/home/home.scss +++ b/frontend/src/app/pages/home/home.scss @@ -1,28 +1,37 @@ -:host{ - header{ - background: #00acc1; - position: fixed; - top: 0 ; - width: 100vw; - min-height: 1rem; - } - main{ - display: flex; - flex-direction: row; - justify-content: start; - align-content: center; - } - .aside{ - background: #fff8f8; - box-shadow: 0 0 10px rgba(0,0,0,0.1); - width : 0; - &.expanded{ - width: 300px; - padding: 10px; - } - } - #map{ - width: 100%; - height: 100vh; - } +:host { + display: block; +} + +.layout { + display: grid; + grid-template-columns: 340px 1fr; + grid-template-rows: 100vh; + gap: 0; +} + +.aside { + background: #ffffff; + border-right: 1px solid rgba(0,0,0,0.06); + box-shadow: 2px 0 12px rgba(0,0,0,0.03); + padding: 16px; + overflow: auto; +} + +.main { + display: flex; + flex-direction: column; + height: 100vh; + overflow: hidden; +} + +.toolbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 12px; +} + +.map { + flex: 1 1 auto; + min-height: 0; } diff --git a/frontend/src/app/pages/home/home.ts b/frontend/src/app/pages/home/home.ts index 8e7d855..132a08d 100644 --- a/frontend/src/app/pages/home/home.ts +++ b/frontend/src/app/pages/home/home.ts @@ -1,11 +1,15 @@ import { Component, inject } from '@angular/core'; import {Menu} from './menu/menu'; +import { AllEvents } from '../../maps/all-events/all-events'; +import { EditForm } from '../../forms/edit-form/edit-form'; import { OedbApi } from '../../services/oedb-api'; @Component({ selector: 'app-home', imports: [ - Menu + Menu, + AllEvents, + EditForm ], templateUrl: './home.html', styleUrl: './home.scss' @@ -13,10 +17,55 @@ import { OedbApi } from '../../services/oedb-api'; export class Home { OedbApi = inject(OedbApi); + features: Array = []; + selected: any | null = null; constructor() { - this.OedbApi.getEvents({}).subscribe((events) => { - console.log(events); + this.OedbApi.getEvents({ when: 'now', limit: 500 }).subscribe((events: any) => { + this.features = Array.isArray(events?.features) ? events.features : []; + }); + } + + onSelect(feature: any) { + this.selected = feature; + } + + onPickCoords(coords: [number, number]) { + // Autofill lat/lon in the form selection or prepare a new feature shell + const [lon, lat] = coords; + if (this.selected && this.selected.properties) { + this.selected = { + ...this.selected, + geometry: { type: 'Point', coordinates: [lon, lat] } + }; + } else { + this.selected = { + id: null, + properties: { label: '', description: '', what: '', where: '' }, + geometry: { type: 'Point', coordinates: [lon, lat] } + }; + } + } + + onSaved(_res: any) { + // refresh list after update + this.OedbApi.getEvents({ when: 'now', limit: 500 }).subscribe((events: any) => { + this.features = Array.isArray(events?.features) ? events.features : []; + }); + } + + onCreated(_res: any) { + // refresh and clear selection after create + this.selected = null; + this.OedbApi.getEvents({ when: 'now', limit: 500 }).subscribe((events: any) => { + this.features = Array.isArray(events?.features) ? events.features : []; + }); + } + + onDeleted(_res: any) { + this.selected = null; + this.OedbApi.getEvents({ when: 'now', limit: 500 }).subscribe((events: any) => { + this.features = Array.isArray(events?.features) ? events.features : []; }); } } diff --git a/frontend/src/app/pages/home/menu/menu.html b/frontend/src/app/pages/home/menu/menu.html index c7611ff..f4c3146 100644 --- a/frontend/src/app/pages/home/menu/menu.html +++ b/frontend/src/app/pages/home/menu/menu.html @@ -3,7 +3,7 @@ stats sources - (editor + (editor)
diff --git a/frontend/src/app/pages/home/menu/menu.scss b/frontend/src/app/pages/home/menu/menu.scss index 3b1c8df..e807116 100644 --- a/frontend/src/app/pages/home/menu/menu.scss +++ b/frontend/src/app/pages/home/menu/menu.scss @@ -1,15 +1,28 @@ :host { - - #what_categories{ - - .cateogry { - background: #f8f8f8; - border-radius: 4px; - padding: 10px; - margin-bottom: 10px; - width: 300px; - display: block; - border: 1px solid #ddd; - } - } + display: block; +} + +#what_categories { + display: grid; + grid-template-columns: 1fr; + gap: 8px; +} + +.category { + background: #ffffff; + border-radius: 10px; + padding: 10px; + border: 1px solid rgba(0,0,0,0.08); + display: grid; + grid-template-columns: 28px 1fr; + gap: 10px; + align-items: center; +} + +.emoji { + font-size: 20px; +} + +.label { + font-weight: 600; } diff --git a/frontend/src/app/services/oedb-api.ts b/frontend/src/app/services/oedb-api.ts index 78d92aa..c82afcc 100644 --- a/frontend/src/app/services/oedb-api.ts +++ b/frontend/src/app/services/oedb-api.ts @@ -13,4 +13,16 @@ export class OedbApi { getEvents(params: any) { return this.http.get(`${this.baseUrl}/event`, { params }); } + + createEvent(feature: any) { + return this.http.post(`${this.baseUrl}/event`, feature); + } + + updateEvent(id: string | number, feature: any) { + return this.http.put(`${this.baseUrl}/event/${id}`, feature); + } + + deleteEvent(id: string | number) { + return this.http.delete(`${this.baseUrl}/event/${id}`); + } } diff --git a/frontend/src/oedb-types.ts b/frontend/src/oedb-types.ts index ffb7cb3..928ab8b 100644 --- a/frontend/src/oedb-types.ts +++ b/frontend/src/oedb-types.ts @@ -6,7 +6,7 @@ const oedb = { description: 'Événement communautaire', category: 'Communauté', emoji: '\\o/', - duration : '1D' // 1 day + durationHours: 24 }, // Community / OSM 'community.osm.event': { @@ -65,7 +65,8 @@ const oedb = { emoji: '☀️', label: 'Heure d\'été', category: 'Temps', - description: 'Passage à l\'heure d\'été' + description: 'Passage à l\'heure d\'été', + durationHours: 24 }, // Tourism @@ -81,7 +82,13 @@ const oedb = { emoji: '💥', label: 'Accident', category: 'Circulation', - description: 'Accident de la circulation' + description: 'Accident de la circulation', + durationHours: 6, + properties: { + severity: { label: 'Gravité', writable: true }, + lanes_closed: { label: 'Voies fermées', writable: true }, + vehicles: { label: 'Nombre de véhicules', writable: true } + } }, 'traffic.incident': { emoji: '⚠️', @@ -102,28 +109,94 @@ const oedb = { description: 'Fermeture partielle de voie' }, 'traffic.roadwork': { - emoji: '', + emoji: '', + image: 'static/cone.png', label: 'Travaux routiers', category: 'Circulation', - description: 'Travaux sur la chaussée' + description: 'Travaux sur la chaussée', + durationHours: 72, + properties: { + contractor: { label: 'Entreprise', writable: true }, + reason: { label: 'Raison', writable: true }, + lanes_affected: { label: 'Voies impactées', writable: true } + } }, 'wildlife': { emoji: '🦌', label: 'Animal', category: 'Vie sauvage', - description: 'Détection d\'animaux' + description: 'Détection d\'animaux', + properties: { + detection_by: { + values: ['human', 'camera'], + default: 'human', + allow_empty: true, + allow_custom: true, + label: 'Détection par', + description: 'Comment l\'animal a été détecté', + }, + animal: { + values: ['deer', 'bear', 'fox', 'wolf', 'rabbit', 'bird', 'fish', 'insect', 'other'], + default: 'deer', + allow_empty: true, + allow_custom: true, + label: 'Animal', + description: 'L\'animal détecté', + }, + } }, 'traffic.mammoth': { emoji: '🦣', label: 'Mammouth laineux wohoooo! (évènement de test)', category: 'Obstacle', - description: 'Un mammouth laineux bloque la route' + description: 'Un mammouth laineux bloque la route (évènement de test)', + durationHours: 48, + properties: { + test: true, + weight: 1000 + } }, 'hazard.piranha': { emoji: '🐟', - label: 'Piranha dans la piscine', + label: 'Piranha dans la piscine (évènement de test)', category: 'Danger', - description: 'Des pirana attaquent dans cette piscine' + description: 'Des pirana attaquent dans cette piscine (évènement de test)', + durationHours: 48 + }, + + // Météo étendue + 'weather.storm': { + emoji: '🌪️', + label: 'Tempête', + category: 'Météo', + description: 'Tempête (vent fort)', + durationHours: 48, + properties: { + wind_speed: { label: 'Vent moyen (km/h)', writable: true }, + wind_gust: { label: 'Rafales (km/h)', writable: true }, + severity: { label: 'Sévérité', writable: true } + } + }, + 'weather.thunder': { + emoji: '⚡', + label: 'Éclairs / orage', + category: 'Météo', + description: 'Activité orageuse', + durationHours: 12, + properties: { + lightning_count: { label: 'Nombre d’éclairs', writable: true } + } + }, + 'weather.earthquake': { + emoji: '🌎', + label: 'Tremblement de terre', + category: 'Météo', + description: 'Séisme', + durationHours: 6, + properties: { + magnitude: { label: 'Magnitude (Mw)', writable: true }, + depth_km: { label: 'Profondeur (km)', writable: true } + } } // ici ajouter d'autres catégories d'évènements à suggérer } diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss index 90d4ee0..203e18c 100644 --- a/frontend/src/styles.scss +++ b/frontend/src/styles.scss @@ -1 +1,58 @@ -/* You can add global styles to this file, and also import other style files */ +/* Theme variables */ +$color-blue: #9fd3f6; /* pastel blue */ +$color-green: #b9e4c9; /* pastel green */ +$color-bg: #f7fafb; +$color-surface: #ffffff; +$color-text: #22303a; +$color-muted: #6b7b86; +$border-radius: 10px; +$shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06); +$shadow-md: 0 6px 18px rgba(0, 0, 0, 0.08); +$spacing: 12px; + +html, body { + height: 100%; + margin: 0; + padding: 0; + background: $color-bg; + color: $color-text; + font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, sans-serif; +} + +app-root, app-home { + display: block; + min-height: 100vh; +} + +/* Generic UI elements */ +.btn { + appearance: none; + border: none; + border-radius: $border-radius; + padding: 10px 14px; + cursor: pointer; + background: linear-gradient(135deg, $color-blue, $color-green); + color: $color-text; + font-weight: 600; + box-shadow: $shadow-sm; + transition: transform 0.04s ease, box-shadow 0.2s ease, opacity 0.2s; + &:hover { box-shadow: $shadow-md; } + &:active { transform: translateY(1px); } +} + +.btn-ghost { + background: $color-surface; + border: 1px solid rgba(0,0,0,0.08); +} + +.input, .select, textarea { + width: 100%; + padding: 10px 12px; + border-radius: $border-radius; + border: 1px solid rgba(0,0,0,0.12); + background: $color-surface; + color: $color-text; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.02); +} + +label { font-size: 0.85rem; color: $color-muted; } From bdb372849432a8afef609cb1bd7d373712ef7e78 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Fri, 3 Oct 2025 14:00:35 +0200 Subject: [PATCH 3/3] up edit --- frontend/src/app/app.scss | 3 - .../src/app/forms/edit-form/edit-form.html | 25 +++++---- frontend/src/app/forms/edit-form/edit-form.ts | 26 +++++++++ frontend/src/app/forms/osm/osm.html | 18 +++++- frontend/src/app/forms/osm/osm.ts | 9 +++ .../src/app/maps/all-events/all-events.html | 5 ++ .../src/app/maps/all-events/all-events.scss | 20 +++++++ .../src/app/maps/all-events/all-events.ts | 51 ++++++++++++++++- frontend/src/app/pages/home/home.html | 31 +++++++++- frontend/src/app/pages/home/home.ts | 46 +++++++++++++++ frontend/src/app/pages/home/menu/menu.html | 6 ++ frontend/src/app/pages/home/menu/menu.ts | 7 +++ frontend/src/styles.scss | 56 ++++++++++++++++++- 13 files changed, 283 insertions(+), 20 deletions(-) diff --git a/frontend/src/app/app.scss b/frontend/src/app/app.scss index 8bd32c7..e69de29 100644 --- a/frontend/src/app/app.scss +++ b/frontend/src/app/app.scss @@ -1,3 +0,0 @@ -html{ - font-family: "Calibri", "Helvetica Neue", Helvetica, Arial, sans-serif; -} diff --git a/frontend/src/app/forms/edit-form/edit-form.html b/frontend/src/app/forms/edit-form/edit-form.html index 021eb5f..db9d94a 100644 --- a/frontend/src/app/forms/edit-form/edit-form.html +++ b/frontend/src/app/forms/edit-form/edit-form.html @@ -94,20 +94,23 @@ @if (featureId()) { } +
@if (status().state !== 'idle') { -
- @if (status().state === 'saving') { -
{{status().message}}
- } @else if (status().state === 'saved') { -
- {{status().message}}. - Voir d'autres évènements de ce type -
- } @else if (status().state === 'error') { -
{{status().message}}
- } +
+
+ @if (status().state === 'saving') { +
{{status().message}}
+ } @else if (status().state === 'saved') { +
+ {{status().message}}. + Voir d'autres évènements de ce type +
+ } @else if (status().state === 'error') { +
{{status().message}}
+ } +
} diff --git a/frontend/src/app/forms/edit-form/edit-form.ts b/frontend/src/app/forms/edit-form/edit-form.ts index dec440d..0a6b4c9 100644 --- a/frontend/src/app/forms/edit-form/edit-form.ts +++ b/frontend/src/app/forms/edit-form/edit-form.ts @@ -220,10 +220,12 @@ export class EditForm implements OnChanges { next: (res) => { this.status.set({ state: 'saved', what: val.what, message: 'Évènement mis à jour' }); this.saved.emit(res); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); }, error: (err) => { this.status.set({ state: 'error', what: val.what, message: 'Erreur lors de la mise à jour' }); console.error(err); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); } }); } else { @@ -231,10 +233,12 @@ export class EditForm implements OnChanges { next: (res) => { this.status.set({ state: 'saved', what: val.what, message: 'Évènement créé' }); this.created.emit(res); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); }, error: (err) => { this.status.set({ state: 'error', what: val.what, message: 'Erreur lors de la création' }); console.error(err); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); } }); } @@ -254,14 +258,36 @@ export class EditForm implements OnChanges { next: (res) => { this.status.set({ state: 'saved', what: this.form.value.what, message: 'Évènement supprimé' }); this.deleted.emit(res); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); }, error: (err) => { this.status.set({ state: 'error', what: this.form.value.what, message: 'Erreur lors de la suppression' }); console.error(err); + setTimeout(() => this.status.set({ state: 'idle' }), 3000); } }); } + onCancelEdit() { + this.selected = null; + this.featureId.set(null); + this.form.reset({ + label: '', + description: '', + what: '', + where: '', + lat: '', + lon: '', + wikidata: '', + featureType: 'point', + type: 'unscheduled', + start: this.toLocalInputValue(new Date()), + stop: this.toLocalInputValue(new Date(new Date().getTime() + 24 * 3600 * 1000)) + }); + this.presetValues.set({}); + this.status.set({ state: 'idle' }); + } + private toLocalInputValue(d: string | Date): string { const date = (typeof d === 'string') ? new Date(d) : d; if (Number.isNaN(date.getTime())) return ''; diff --git a/frontend/src/app/forms/osm/osm.html b/frontend/src/app/forms/osm/osm.html index 199c0f0..9fedcb8 100644 --- a/frontend/src/app/forms/osm/osm.html +++ b/frontend/src/app/forms/osm/osm.html @@ -1 +1,17 @@ -

osm works!

+

+ osm works! + + + @if(isLogginIn){ +

+ {{osmPseudo}} +
+ +} +@else{ +
+ pas connecté +
+ +} +

\ No newline at end of file diff --git a/frontend/src/app/forms/osm/osm.ts b/frontend/src/app/forms/osm/osm.ts index 9d27557..1a03de3 100644 --- a/frontend/src/app/forms/osm/osm.ts +++ b/frontend/src/app/forms/osm/osm.ts @@ -7,5 +7,14 @@ import { Component } from '@angular/core'; styleUrl: './osm.scss' }) export class Osm { + osmPseudo: string=''; + isLogginIn: any = false; + logout() { + + } + + login() { + + } } diff --git a/frontend/src/app/maps/all-events/all-events.html b/frontend/src/app/maps/all-events/all-events.html index fe2fb5b..c0f8348 100644 --- a/frontend/src/app/maps/all-events/all-events.html +++ b/frontend/src/app/maps/all-events/all-events.html @@ -4,4 +4,9 @@
+ @if (canRestoreOriginal) { +
+ +
+ }
diff --git a/frontend/src/app/maps/all-events/all-events.scss b/frontend/src/app/maps/all-events/all-events.scss index e69de29..1dfa672 100644 --- a/frontend/src/app/maps/all-events/all-events.scss +++ b/frontend/src/app/maps/all-events/all-events.scss @@ -0,0 +1,20 @@ +@keyframes pulseGreen { + 0% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.4); } + 70% { box-shadow: 0 0 0 12px rgba(76, 175, 80, 0); } + 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); } +} +@keyframes pulseRed { + 0% { box-shadow: 0 0 0 0 rgba(244, 67, 54, 0.4); } + 70% { box-shadow: 0 0 0 12px rgba(244, 67, 54, 0); } + 100% { box-shadow: 0 0 0 0 rgba(244, 67, 54, 0); } +} + +[data-feature-id].pulse-green { + animation: pulseGreen 1.2s ease-out 1; + border-radius: 50%; +} +[data-feature-id].pulse-red { + animation: pulseRed 1.2s ease-out 1; + border-radius: 50%; +} + diff --git a/frontend/src/app/maps/all-events/all-events.ts b/frontend/src/app/maps/all-events/all-events.ts index ab04eea..c2adb8e 100644 --- a/frontend/src/app/maps/all-events/all-events.ts +++ b/frontend/src/app/maps/all-events/all-events.ts @@ -9,6 +9,8 @@ import oedb_what_categories from '../../../oedb-types'; }) export class AllEvents { @Input() features: Array = []; + @Input() selected: any | null = null; + @Input() highlight: { id: string | number, type: 'saved' | 'deleted' } | null = null; @Output() select = new EventEmitter(); @Output() pickCoords = new EventEmitter<[number, number]>(); @@ -17,6 +19,8 @@ export class AllEvents { private map: any; private markers: any[] = []; private pickedMarker: any | null = null; + private originalCoords: [number, number] | null = null; + private currentPicked: [number, number] | null = null; async ngOnInit() { await this.ensureMapLibre(); @@ -31,7 +35,28 @@ export class AllEvents { } ngOnChanges(): void { + // track original coordinates of the selected feature + if (this.selected && Array.isArray(this.selected?.geometry?.coordinates)) { + const coords = this.selected.geometry.coordinates as [number, number]; + this.originalCoords = coords; + // If no picked marker yet, align current picked to original + if (!this.currentPicked) this.currentPicked = coords; + } this.renderFeatures(); + + // trigger animation highlight + if (this.highlight && this.highlight.id !== undefined && this.highlight.id !== null) { + const idStr = String(this.highlight.id); + const el = document.querySelector(`[data-feature-id="${CSS.escape(idStr)}"]`); + if (el) { + el.classList.remove('pulse-green', 'pulse-red'); + if (this.highlight.type === 'saved') el.classList.add('pulse-green'); + if (this.highlight.type === 'deleted') el.classList.add('pulse-red'); + setTimeout(() => { + el.classList.remove('pulse-green', 'pulse-red'); + }, 1500); + } + } } private ensureMapLibre(): Promise { @@ -101,6 +126,7 @@ export class AllEvents { this.pickedMarker.remove(); } this.pickedMarker = new maplibregl.Marker({ element: el }).setLngLat(coords).addTo(this.map); + this.currentPicked = coords; } async searchPlace(query: string) { @@ -125,6 +151,18 @@ export class AllEvents { } catch {} } + get canRestoreOriginal(): boolean { + if (!this.originalCoords || !this.currentPicked) return false; + return this.originalCoords[0] !== this.currentPicked[0] || this.originalCoords[1] !== this.currentPicked[1]; + } + + restoreOriginalCoords() { + if (!this.originalCoords) return; + this.showPickedMarker(this.originalCoords); + this.pickCoords.emit(this.originalCoords); + if (this.map) this.map.flyTo({ center: this.originalCoords, zoom: Math.max(this.map.getZoom() || 12, 12) }); + } + private renderFeatures() { if (!this.map || !Array.isArray(this.features)) return; // clear existing markers @@ -138,11 +176,22 @@ export class AllEvents { const coords = f?.geometry?.coordinates; if (!coords || !Array.isArray(coords)) return; const p = f.properties || {}; + const fid = (p && (p.id ?? p.uuid)) ?? f?.id; const el = this.buildMarkerElement(p); el.style.cursor = 'pointer'; + if (typeof fid !== 'undefined') { + el.setAttribute('data-feature-id', String(fid)); + } + // selected styling + const selId = this.selected?.properties?.id ?? this.selected?.properties?.uuid ?? this.selected?.id; + if (selId !== undefined && selId !== null && String(selId) === String(fid)) { + el.style.transform = 'scale(1.2)'; + el.style.boxShadow = '0 0 0 4px rgba(25,118,210,0.25)'; + el.style.borderRadius = '50%'; + } el.addEventListener('click', () => { this.select.emit({ - id: (p && (p.id ?? p.uuid)) ?? f?.id, + id: fid, properties: p, geometry: { type: 'Point', coordinates: coords } }); diff --git a/frontend/src/app/pages/home/home.html b/frontend/src/app/pages/home/home.html index 5c75da1..b23f5ee 100644 --- a/frontend/src/app/pages/home/home.html +++ b/frontend/src/app/pages/home/home.html @@ -14,8 +14,33 @@
-
- -
+ @if (!showTable) { +
+ +
+ } @else { +
+ + + + + + + + + + + @for (f of features; track f.id) { + + + + + + + } + +
TypeLabelStartStop
{{f?.properties?.what}}{{f?.properties?.label || f?.properties?.name}}{{f?.properties?.start || f?.properties?.when}}{{f?.properties?.stop}}
+
+ }
diff --git a/frontend/src/app/pages/home/home.ts b/frontend/src/app/pages/home/home.ts index 132a08d..755ab61 100644 --- a/frontend/src/app/pages/home/home.ts +++ b/frontend/src/app/pages/home/home.ts @@ -19,6 +19,7 @@ export class Home { OedbApi = inject(OedbApi); features: Array = []; selected: any | null = null; + showTable = false; constructor() { this.OedbApi.getEvents({ when: 'now', limit: 500 }).subscribe((events: any) => { @@ -68,4 +69,49 @@ export class Home { this.features = Array.isArray(events?.features) ? events.features : []; }); } + + // Menu callbacks + ngAfterViewInit() { + // Wire menu callbacks if needed via querySelector; left simple for now + // We keep logic here: toggling and downloads + } + + toggleView() { + this.showTable = !this.showTable; + } + + downloadGeoJSON() { + const blob = new Blob([JSON.stringify({ type: 'FeatureCollection', features: this.features }, null, 2)], { type: 'application/geo+json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = 'events.geojson'; + document.body.appendChild(a); + a.click(); + URL.revokeObjectURL(url); + a.remove(); + } + + downloadCSV() { + const header = ['id', 'what', 'label', 'start', 'stop', 'lon', 'lat']; + const rows = this.features.map((f: any) => [ + JSON.stringify(f?.properties?.id ?? f?.id ?? ''), + JSON.stringify(f?.properties?.what ?? ''), + JSON.stringify(f?.properties?.label ?? f?.properties?.name ?? ''), + JSON.stringify(f?.properties?.start ?? f?.properties?.when ?? ''), + JSON.stringify(f?.properties?.stop ?? ''), + JSON.stringify(f?.geometry?.coordinates?.[0] ?? ''), + JSON.stringify(f?.geometry?.coordinates?.[1] ?? '') + ].join(',')); + const csv = [header.join(','), ...rows].join('\n'); + const blob = new Blob([csv], { type: 'text/csv' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = 'events.csv'; + document.body.appendChild(a); + a.click(); + URL.revokeObjectURL(url); + a.remove(); + } } diff --git a/frontend/src/app/pages/home/menu/menu.html b/frontend/src/app/pages/home/menu/menu.html index f4c3146..bd97729 100644 --- a/frontend/src/app/pages/home/menu/menu.html +++ b/frontend/src/app/pages/home/menu/menu.html @@ -72,6 +72,12 @@ +
+ +
+ + +
+
+ + +
+

Presets

+
+ @for (g of filteredGroups(); track g.category) { +
+
{{g.category}}
+
+ @for (p of g.items; track p.key) { + + } +
+
+ } +
+
+
+
+ + +
+
+ + +
+ +
+ + +
+
+ + +
Durée: {{durationHuman()}}
+
+ + + @if (currentPreset(); as cp) { +
+
+ @for (entry of presetEntries(); track entry.key) { +
+ + @if (entry.spec?.values; as vs) { + + } @else { + + } +
+ } +
+
+ } + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + +
+ + @if (featureId()) { + + } +
+ + @if (status().state !== 'idle') { +
+ } +
login OSM: diff --git a/frontend/src/app/pages/home/menu/menu.ts b/frontend/src/app/pages/home/menu/menu.ts index 1566e22..042ed40 100644 --- a/frontend/src/app/pages/home/menu/menu.ts +++ b/frontend/src/app/pages/home/menu/menu.ts @@ -10,6 +10,9 @@ import oedb_what_categories from '../../../../oedb-types'; export class Menu { public oedb_what_categories: Array = []; + public onToggleView?: () => void; + public onDownloadGeoJSON?: () => void; + public onDownloadCSV?: () => void; constructor() { let keys = Object.keys(oedb_what_categories.presets.what); @@ -22,4 +25,8 @@ export class Menu { ); }) } + + toggleView() { this.onToggleView && this.onToggleView(); } + downloadGeoJSON() { this.onDownloadGeoJSON && this.onDownloadGeoJSON(); } + downloadCSV() { this.onDownloadCSV && this.onDownloadCSV(); } } diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss index 203e18c..48dec4f 100644 --- a/frontend/src/styles.scss +++ b/frontend/src/styles.scss @@ -5,6 +5,9 @@ $color-bg: #f7fafb; $color-surface: #ffffff; $color-text: #22303a; $color-muted: #6b7b86; +$color-success: #b4e5c6; +$color-error: #f6c9c9; +$color-info: #cfe8ff; $border-radius: 10px; $shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06); $shadow-md: 0 6px 18px rgba(0, 0, 0, 0.08); @@ -16,8 +19,35 @@ html, body { padding: 0; background: $color-bg; color: $color-text; - font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, sans-serif; + // font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, sans-serif; } +html, body{ + font-family: "Calibri", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +button, .button{ + border-radius: 5px; + background-color: #79a2d1; + padding: 1rem 0.5rem; + border: none; + cursor: pointer; + &:hover{ + background-color: #6992c1; + } + &:active{ + background-color: #5982b1; + } +} +input{ + width: 100%; + padding: 10px 12px; + border-radius: 10px; + border: 1px solid rgba(0, 0, 0, 0.12); + background: #ffffff; + color: #22303a; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02); +} + app-root, app-home { display: block; @@ -56,3 +86,27 @@ app-root, app-home { } label { font-size: 0.85rem; color: $color-muted; } + +/* Toasts */ +.toast-container { + position: fixed; + right: 16px; + bottom: 16px; + display: grid; + gap: 8px; + z-index: 1000; +} + +.toast { + min-width: 240px; + max-width: 360px; + padding: 10px 12px; + border-radius: $border-radius; + box-shadow: $shadow-md; + border: 1px solid rgba(0,0,0,0.06); + background: $color-surface; +} + +.toast.is-success { background: $color-success; } +.toast.is-error { background: $color-error; } +.toast.is-info { background: $color-info; }