From e781c1be8faad3d4486408e4148df924cc151c31 Mon Sep 17 00:00:00 2001 From: bndw Date: Fri, 9 Aug 2024 14:46:03 -0700 Subject: [PATCH] nip96: http file storage --- nip96/nip96.go | 127 +++++++++++++++++++++++++++++++++++++++ nip96/nip96_test.go | 33 ++++++++++ nip96/testdata/image.png | Bin 0 -> 82984 bytes nip96/types.go | 69 +++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 nip96/nip96.go create mode 100644 nip96/nip96_test.go create mode 100644 nip96/testdata/image.png create mode 100644 nip96/types.go diff --git a/nip96/nip96.go b/nip96/nip96.go new file mode 100644 index 0000000..0515afa --- /dev/null +++ b/nip96/nip96.go @@ -0,0 +1,127 @@ +package nip96 + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "mime/multipart" + "net/http" + "strconv" + + "github.com/nbd-wtf/go-nostr" +) + +// Upload uploads a file to the provided req.Host. +func Upload(ctx context.Context, req UploadRequest) (*UploadResponse, error) { + if err := req.Validate(); err != nil { + return nil, err + } + + client := http.DefaultClient + if req.HTTPClient != nil { + client = req.HTTPClient + } + + var requestBody bytes.Buffer + writer := multipart.NewWriter(&requestBody) + { + // Add the file + fileWriter, err := writer.CreateFormFile("file", req.Filename) + if err != nil { + return nil, fmt.Errorf("multipartWriter.CreateFormFile: %w", err) + } + if _, err := io.Copy(fileWriter, req.File); err != nil { + return nil, fmt.Errorf("io.Copy: %w", err) + } + + // Add the other fields + writer.WriteField("caption", req.Caption) + writer.WriteField("alt", req.Alt) + writer.WriteField("media_type", req.MediaType) + writer.WriteField("content_type", req.ContentType) + writer.WriteField("no_transform", fmt.Sprintf("%t", req.NoTransform)) + if req.Expiration == 0 { + writer.WriteField("expiration", "") + } else { + writer.WriteField("expiration", strconv.FormatInt(int64(req.Expiration), 10)) + } + + if err := writer.Close(); err != nil { + return nil, fmt.Errorf("multipartWriter.Close: %w", err) + } + } + + uploadReq, err := http.NewRequest("POST", req.Host, &requestBody) + if err != nil { + return nil, fmt.Errorf("http.NewRequest: %w", err) + } + uploadReq.Header.Set("Content-Type", writer.FormDataContentType()) + + if req.SK != "" { + auth, err := generateAuthHeader(req.SK, req.Host) + if err != nil { + return nil, fmt.Errorf("generateAuthHeader: %w", err) + } + uploadReq.Header.Set("Authorization", auth) + } + + resp, err := client.Do(uploadReq) + if err != nil { + return nil, fmt.Errorf("httpclient.Do: %w", err) + } + defer resp.Body.Close() + + switch resp.StatusCode { + case http.StatusRequestEntityTooLarge: + return nil, fmt.Errorf("File is too large") + + case http.StatusBadRequest: + return nil, fmt.Errorf("Bad request") + + case http.StatusForbidden: + return nil, fmt.Errorf("Unauthorized") + + case http.StatusPaymentRequired: + return nil, fmt.Errorf("Payment required") + + case http.StatusOK, http.StatusCreated, http.StatusAccepted: + var uploadResp UploadResponse + if err := json.NewDecoder(resp.Body).Decode(&uploadResp); err != nil { + return nil, fmt.Errorf("Error decoding JSON: %w", err) + } + return &uploadResp, nil + + default: + return nil, fmt.Errorf("Unexpected error %v", resp.Status) + } +} + +func generateAuthHeader(sk, host string) (string, error) { + pk, err := nostr.GetPublicKey(sk) + if err != nil { + return "", fmt.Errorf("nostr.GetPublicKey: %w", err) + } + + event := nostr.Event{ + Kind: 27235, + PubKey: pk, + CreatedAt: nostr.Now(), + Tags: nostr.Tags{ + nostr.Tag{"u", host}, + nostr.Tag{"method", "POST"}, + }, + } + event.Sign(sk) + + b, err := json.Marshal(event) + if err != nil { + return "", fmt.Errorf("json.Marshal: %w", err) + } + + payload := base64.StdEncoding.EncodeToString(b) + + return fmt.Sprintf("Nostr %s", payload), nil +} diff --git a/nip96/nip96_test.go b/nip96/nip96_test.go new file mode 100644 index 0000000..3b1c298 --- /dev/null +++ b/nip96/nip96_test.go @@ -0,0 +1,33 @@ +package nip96 + +import ( + "context" + "os" + "testing" + + "github.com/nbd-wtf/go-nostr" +) + +func TestUpload(t *testing.T) { + img, _ := os.Open("./testdata/image.png") + defer img.Close() + + ctx := context.Background() + resp, err := Upload(ctx, UploadRequest{ + Host: "https://nostr.build/api/v2/nip96/upload", + //Host: "https://nostrcheck.me/api/v2/media", + //Host: "https://nostrage.com/api/v2/media", + SK: nostr.GeneratePrivateKey(), + File: img, + Filename: "ostrich.png", + Caption: "nostr ostrich", + ContentType: "image/png", + NoTransform: true, + }) + if err != nil { + t.Fatal(err, "client.Upload") + } + + t.Logf("resp: %#v\n", *resp) + // nip96_test.go:28: resp: nip96.UploadResponse{Status:"success", Message:"Upload successful.", ProcessingURL:"", Nip94Event:struct { Tags nostr.Tags "json:\"tags\"" }{Tags:nostr.Tags{nostr.Tag{"url", "https://image.nostr.build/4ece05f1d77c9cb97d334ba9c0301b2960640df89bf5d75d6bffadefc4355673.jpg"}, nostr.Tag{"ox", "4ece05f1d77c9cb97d334ba9c0301b2960640df89bf5d75d6bffadefc4355673"}, nostr.Tag{"x", ""}, nostr.Tag{"m", "image/jpeg"}, nostr.Tag{"dim", "1125x750"}, nostr.Tag{"bh", "LLF=kB-;yH-;-;R#t7xKEZWA#_oM"}, nostr.Tag{"blurhash", "LLF=kB-;yH-;-;R#t7xKEZWA#_oM"}, nostr.Tag{"thumb", "https://image.nostr.build/thumb/4ece05f1d77c9cb97d334ba9c0301b2960640df89bf5d75d6bffadefc4355673.jpg"}}}} +} diff --git a/nip96/testdata/image.png b/nip96/testdata/image.png new file mode 100644 index 0000000000000000000000000000000000000000..ee155e6ad2a0d423ba6f322840e2368709317d8a GIT binary patch literal 82984 zcmeFZ1yoe+|1Sy%f*_%QNC+s>ozkfwCEeXQAl;>ew9?((HGs4rASK<>UBVDU3~~10 z>#M)J?pf!ab^dqVb=Ez&*0^WSo+rNf`NlKB@^2(C(TUIz5D+jWU%ymDKtMJ@KtTG5 zb{DvVDqHLW{D*8NA}fM`P#KAFX@CN}CpUVnD2ssLPKAKr>yLnN0o?N4L_lz2K|t8n zM?m0BKtLdPo6?}b4}2hRqAqDFD~mt}T%#c%AwER716&~j{}6&K5Rh-L5fFfpfWJE# zh<`rKK>GbDvPs6B-`7Y#;SZuh*Pa1`Xjmw#JF3gd@EX~Im<)_<4NaI_L2uy?An?2L z0+%2YM+0(KkhP5iudBeb+b4K|Yxr&EXXLk!I9drjQ{XR@_7V`k;y;bCTBV`gJx1fF1YaIR zGyD@~Rwfqaf5!&C$`8NGD`#(E0?Z5_Uyzmm_R0Ua_s=~1%<#$oTFkGV-rfbaDu~X{ z{4d!A(Ft{zP!SM>5hP!VD7zx=&Y?CvH}hJD`8aXgeK!sueDz!d>60}@#g{-Gdlu2h znXJ8ts$5;JsS`WkeY5?k7MDqv{jz3VYvvE+nS_$AckhK7-=BEcr0>tlbr&&8m?x6s zJm(E~@Mh25WBWKIF?ulN=XLB@{-Ku2!uIIsNlM*3TecViA~KHf|9Sa8H2B|44*b$^ zUXOBY1>adCfAGH|zv>!DKW3_{zN31)M?gX&_x&$@5%JAaaHaS!9`wI@k^g@lZ%75n zB8f`JNtopR|Css0*ysn7`=tC^By9iVhyP3E=>IW`81fJz!}Vljdqw}ZHtFhYejKvV zl=La@{+D$7zi$`xMUZN6Ysdvv#s9aa(|>=1|8v{&dqV&>rpHG5H~%jY{C{pezkQK9 zKVsV1XVHk>n|1v{2WB|9cPip&inf@2XY z3mXwR?v<~+sYb#y+Fv7^lGSrDmN$Oq;`d4`rA@UFQe~JKRJY96F!Vaqh~?r?t+;pf zqZG2Q+1aA0X*77>YYaO3s@9|Ldrkxed>G+VG@M??!OyF&|G-Ptg0>U2LZp77ne}ZA z=!j-|^Bj?L#JhxnnK}EB3Q0SbV)-Gm6Hnt*;&=?x>hox ziu_vb^j*!&pkAA&aJ14d0xTR$ogw6pinM8?IC_lqjNkLn(X7;ymaf&z3=Lv^)yaZ6 zm!hm#`dCRg`+1&5)jL8Z@|D!VLVq>OJDR4VM=j+i-pXkeLZnmr*bl#R<30iQF!UM8 zpDoqn=aj=gVZtT?;>_HpZ*-aEzp4Jz_ z%QkN>^Ud@!sDUHQysd+f%qAjVb7Ata%1y?F9wE2BkD`{XP{U!@Dq;BO?M@sM5He+g zQdyh{e(S%m{u;&)XE*oDFYlp6?&%;`g|aM!NbkWs&G%Q>!~1eE zf_@~LG_^u{{Mo+k1?Y7HT0c-QTFjjVtu`CIJQ8!1%$NkjBqy-daw? zlzcKXB#$#%{xLUa(PZR3?vtz_M#>xLo`H-9`3mxM4MQ@7cGOwdKZtGqyj0^-T&H2L%27$(kL;G9^iukHgO~W=>fL`K;!rpeKUZV* z;5JlxbbLHeCmUz=)bV*o5hlBNrzv?hUtBw*IBAzM{`aq1i4pE!pMFU+4c<-m$g-~y zSn$Wk|2oDYFqUEw$fkjmlQ=&SHeK%>Q52rcd>p@r4K1lg^*-_HS>?!OzXzA3#m8u_ zLvMoq-SgY~C{bT`c!!*dd}kb|bIg?Way99SkBN>gS#`z4J5&|zm-XraqPK<@{^Zo; z*S7Fk!}bnzc~78#6&%*9(wcxty={f7syr=NGDbCQ^_s6j*T}Y1c~4GFz|?luPJy?; zju);Pe)!~zHzY&1iusRRweceh+Nm@+5Bgt4yh}W#(IkfQ=bWJM-E7FoDK?GP5VFOu z+gE|ebhA4){x^XAdvtnFh`%Wm<>F*g2cOK@nNb5))e6qU4Y=f2Y9 zuw7-lOIq(g=|~UTlWMVJBqmLK5|w1F$FW;|xh8b%Ph}g`MZdsbIH}gF0_*=~3EK!} zZFB*=!gA>FEj<|`g`p2x`H79_|591U&^Cgy*K%GtmXov}-3+qzsogi1FfRf%=|8`} zuU8-Y&h-&)RaBxVq2ANyG#XE*U4N?PXm1hq`(#g62ocRTz9T}$dK!MAn_@ewL_x+x z=U#YPIGvm{K8|+aWy$XCs+3R$Wm07Q{Af zUP8H2eWX(_ODiOT;qNufB_@PnBKj$5qfTh+({$#M(@E=~rMbTHl^42sZ_&vSD7gYV z_H@=|Bzo@?eJ!P6X+LIHi1zy#4+?R9fK#=jn4fs@ zkygB8BoIx+V4lnsk{-IhWahY_t+ZUu=Wvk-R%7#u_X~Si+oF)b z!MDV(@?FK*U-gZQ`tJO5Xa*7YOTPA-%X3z2GatKPtA6#k`Cgt1WwmG4~S}DQ2rhKgc4@w;=gw zG~V-x&pB6Pp7E35(6!wM5Y22zf*{;IRK? zOoTIN-_EXWK~RgK3Y1vo@|ZDCTR}bV@0Uj{gEb?@I+^DsG*%B(yeLZ-cl=Kd>8;WR zvDQcpKI6<7A87_`#DQe{F#U0;XWw``*uhwjA%@4tRD%gvbSXq*qsc|+-dN^AP=YRy z)(s+TBx!%TS?>nl!+uA#yjbj3qKB9k({mmFVjnq+v|sCIey<55PM8&=cVJeaJ(>xJ zq8jffYz|Y6AHxKFK3ZyYQP`56oh*Dz(F6U=xK=$ft%kKNy*=f);)aPWpMJ=Y-7mLJ znhbytabF+8syWhnJIKIu=Et--g|oQeF~LGE%j<@knV)c=rNA6@t7RFqA8+bAk^cxa zBC;vY6!hXa0DR&c^zMVfI1wQlSOHIJv*(qP7@=*yN#=_KlD*jm)Tet#UYfgyN6U`s zaaznw4^6vG?04i6_ea4pnl?6EV_w6MT<-CCmG=BHnke6RW_h9_pcR?0_P0#rmY&&cr+ z@=$;#xE#v3iW^-YmUq4w!zA<+%d9U*>k|iwtz<9Ni@pz|4t;?Kosr{ulyhZku*Ik0 zr}(07jlAHNb&e|;j^>OlN=EjQYdK0253^G9Nx3&ur*c=dI&Rsy9hzl3jbl65xAu7y zP3Cm4nhSPS*Evej$bpvlt%E`|0 z$jg>N^D?JN4|~lC$!zt?IAsl##2CMhQPree2$H;5pJmt%(lf3h;((rqvlM2`yvjA~ zn6R*JepgaFLcjZbVDIA1R!lk)+y^hRAc`h-yiWMzoqXGlkv43=;G&}g(EuD2Y+6yw z2VU9V*B*|RbEg+-6fLVAmD0Oo)&w^9|6nt~{hVk};l)qiM_t#t><`^i>f(%21>4Im zge{;)NHQRnz#z zKt0bV2#6p9<9w%gZJR-fP;v?znp(PtVkz8LAFi}TN;6)L9(LHxO>oE_jJI|y zgu=KQFBFx%GMUL2GGyAoBm*ULKWB4#vNM%~c^qrK zQX~MCfq28d_xYGF+|XBZ3fcDPGK;yeZef+nSZs_b*6qsBDdn>S0=jgZCj67)^C?yu z#UBC*>oXzE>ZPXfRSvi0%-VBphB|(kje#(aElE3F&u3V?OB6Tvd_~V_M-weXIw;@X za{kp?&r7p7nQbH`DIG7c`kvhs#iLdy+PICNBBLaEq@xO=b1zrp);)#=13egzbju3m zyv^3P)mL13IHrV=O>PXAF9GpUZ4lmJchB9Yf&Jy&+bSQytqwKylSeF(mM>;+N5QJyJm77p(v(H{mVE)njvM((ccJU6@Y7nG zX!PzfXCr^s%*|ZY0u8-Fn;Y#Jvst;zA}>(nbaQdt%vo8f>bzl)jRCJRuNYu~g>BKl z`iQw7ZSq*c!R|knaGm_^70OoM&U>iETo%W2qQ6g~s_dtsC$up=sBA5ZRe@}K3(%D} zFI?QZ(lwi=!FQ7~W$rsSO~|CIbuXY>N+p$;FA*33AE{v1Uq3<;8=;(m3!MC<53ZwYlnN zRsO)lhYm}UKO)^uorqP@OdNl-B&xsff-N~SogUmu?@SW5&{(-1$$q(QiT*k5#LBCPgu^&E zj{vNhPD+)QLkSybM%@$gISz5`cqk>$0my&FGK%ZPNQls@UGhKLAobvNAcOIvG>@7F z?q#2!$HyIwKhg!8@5)-sRV0c!xN3vcEz3O+fSAoqTdOS4d}9J z3Je)M%;&af>x1~e#@r74gwt*gJ0}<4$t60K&sl<%X)@vmP*9MPTBPkKk;!H))l0Or zF#Bx2_UwO=xz=3HHsabBXW8UR%+sQkIoiT`tf&5+`pm}idH-ajGUjs+3n$FT!W;Vc zCd8n!9yvfNGhU#enYbS{IgI^*3`Y+VUZPh`39$WI#>tScBVY@jtM{?Tf_YEhT zA_9aKYP^L(3~s`T)tZ$yDs#@t;}hGOT;q3lNc(Bt77|dEWUUp^l_n{d&InnLZ;KF* z?!68-?kDP?Xo!}4I`Gw|l&=t#9i*(E4Z@}=AXM{-g&I1JY+DUj!l+7X*JX-@l&T~_ z>|0h->>GOB(FyI68>j#~N&t2YrnzI0{9#8K(pp2f+#^xn2iwuEoF6-XUVa)Qt#>8I zJtT^hu3Dt>XC;Epuvl7iEA#Z&1Q(enHcZf4q+6n!VOgF?;5T^c=$+kkrB&{8y#WjC zH?g{{zlIgxLDy0UNbt0FoLb(R*flLFO~V9lqd%$rQG@$4#hDHlP(i;meDavBX{A9w z3SZ$y-))!T3n)peb}d0WH(XYQ)iB1eX%40ew0!YGjCq158Sf!VZ8DDxdwkMOdr`2n zB>niLLcC+!4Np<&8QT(K*u@=mgC?#%LHg-AiviN%V`c*Jy>txX-Qdcn9v1|*DgyC@ z4Tq4R)44Q}v zSNSgI>5TUc6qWd=bf>>v6$z75_K_)9c2ao=USrFh71V0l3?gK_}?%|5+36~oGQ;oMQ z(c|wD?a9;H3iQhx343iL@{8^%siCcK>XIrBBrscD+R71D?uRev!}|8Y&9?68nohTl z4`-7G04@={I=c+O6hpH}W2W1CM}xx@6%Ua^gh04kuGM*AW|T{LYGmIUvI96QSx)8S zIS+RFy1&nc-b)PvxJ<-`u4@QNX|U|wRp@AWaVj@OJ>l8=(>r=Px|B<2KE6~MNZA4^ zl8uaJ!n^HQS^Y;vx)n1N$M?i6U#fxXTy+wMwk9&UUBBvt`h{&U7;uh%gq!lL7wN=l z88NXBMTyEKqm$BNbMlEftzidVPy(%%*h>~I|J#^LI0!>V&7i6SJ9tjww~qjFdltw{ zjkMF{-HHpD`9!i*VAG0a5h+)qsE6@54X&?O?r0F)Arzo%7zd-Wl@b!6g~N)-lGD_t z-F<8J7{jLrklEa51L0!#o#5Nm=+HT8$AdqKJMxM#q|Oj89l4iubR2~qEJ|waSs7H0 zq_wW$@dt+=sTxga1x0!Yl9)dB1aS+tF0EO#RX=I&4KX2oJZ~*$9`g&|hXQ12*fh4M z`9l_IW|o66ffAOysJO8f87N4zjzdF7M2b~SOuUYplgvP%Kuk|M8kQ>d1b}3$vssOdioil%!q$W=0;R zk8)|#a##7vpR!ZF9d<1dSm^_(Avn-yQ4lCw09sj?*nx&wepep*fVnXDUB~4la_4;o!wrpj4Hhy1dUk!aj@a^naK29{vRXQf`xcEnA zE7vT}`q7Dn{+fpmDgk~=NxrH)jFVb*u=>Q{uFx&r8pHu;X!VBj zuccLJBcbYAL~cFG3&M|67T~!T`BjxIx=11MEuT^?#S&zq^sD%hL&y2r%qbsj@vwgE z>=34+rBPms?LuVl9gL#r!oSooZg6R{v)y6caaD@pYzBkRoo=Kp<}Wz#y2^3 zwZ_&wF4#Rdem*ykHxm#n5+;;N8{bnCcSOzD8DGAGiAd0tsfWTg|1+!$Hkt)8$J@o{ z^JWv+c}&8T3L>dycrr+k;I{x5*?`}t_oXQm|=sta{xOf<}OE1BoEZMyoF?>dk; z6loE5VW;WveMzX9-v?j$V`~+cDV2)R`j0ysQ(88yR8M$38S`%Sz%dK(4Ag0yP(nB# zZ)v@lfMI=ZYVV?13F=JRD?X)tJxt2U|A|MGg*`W^UjaJ*{xNeOA2SoNZtery&C`Y5 z(&=hX(%YC4ND%`ym}{O@v_BFX@u}^gV6P;8Y_YsBfY7TNIvXh}o1o54HCvu&*}dwr zAV#<^`Z#;ZdW`zahax=W>SmT%R?dd06YiD~{N6kQ+{J2jcMCiS`K4hbN`5WTyAQw= zN7zLu)e@YhB}-uAn5-Jn1l24y*j$MTC&+XBpto24^=N*T#F+SioC*;Xm9I=nF2$>m zAs9YP#Y4c|t1fF8r2kncujnFZHY&dt6LzC4Z7K{lhEiWRr-Bh33IhB1-zDPgx|R|* z8_u#}Wetz3)~KMr)8*o|XobWUkFM|{g{0o{DM1ye4{1K4`YXxF!sqwN$+<2q?$`oM zuQchCDVzB5TR~T!XNz?m5+Qyr4q$Nl@v7fS_{k{9neZxcn$BNlOL|~)nzB822R1B> zir!CAx8Ig+9RFYw2PoC!IzeD+LA#udw>tr-!lxT|efC9Z*N67iR(#jTAa)c=wrkg& zK;5*mvkI3|t>mQapsQo~E~{DBh1Qbpq!*<9XL|~)g~QK`H1$h9&ZNgmInS-lMt5V= zhuym+F}*JLrX%Z-eg~ZhSrB?u}nB<%k9ZYQ;YoO8gGu7N~@vpS3V}$Uf`hJRlsT|xo zqoB)ESorytM8KKDQrd>8mN!_s57y#z_}W`LJ(>{pF4p}sVU?>aA-0vFY`g_VV&_XB z>7JRyeImB7D&Zupqyidn4Nt_@wKF;#VhAyKa4S6c@| zoKWFWyQ?ff^iR^BF(cCP_VTyxsNeSkr&rlN$90xy*2gVsj4HYts?zL5cttx#=CpSe z;7r=J=|jJr>{-^76{rN3ISq6l5Oij#oc!VZs=*+0_VA=RaLX`8jPRBVK^O;!9`*N> z{)i|}LS0)ogV+3K0Mw21xzZ%#E9zv+Z+I$N;v(Va6xGq&O`%xy7f<9-<{qwrO`4d( zP}!X@J>;|HO%?YB!mQY{iCUMwzH7dbeL)$?U>#a=n}e=UM!IOq)3QOlo~ih;Y;F4) z+0~Xgo@4gb@~ZbB6{Q`%h4^0a%{A1hetDgpvG{x}3L1}3orC<&M2TtIGo_X1QdGbq^+6 z1~^9}C611I^NEFDQ_Z)?h=5HWDJpe|J!YonAD1)<2z-x!5z}NnP&}6OCDNxyZ7roa z2`pC)J&BwyPvN&-@H!vpNqbXg0&lADvv~+ujlAlf%0JG&*h z*F&9Fa#_U$FRK6Z(LrZxeb5Z+H3u~cTX+an0gJ6xUZz%7lXf{PE@|Ul9XqGmfwL*8 z{6{6G@jWlebWo$G$KhFui!c7|PU2p+2^IZkTJ|2YjhoR0?uuBg5@OGm<#FAVyuG4) z)p8yAR^{|la|_o!!iC!P+@h_AO3CWkRKpxThDz*4!xa-pmMoP@n{43GcYvBYwt^)k zBO)j8r*=nc$_p+R+&8T~^mkNk0~2n+$D%sAYsOy%D?rSp$>sSwe=4yZ289T9;nj2S zn?vsBZe|9*dt{q2Nqlqiwex+vs1KLmKueD1f!;|Vsj!>>UBzi-9nkss(W&ei`Eg=MrS zOuAwca$Yw|efh8@DVfJ*mL$^Wd*PiNwa~T7X?{E+2G&YNWuMP&n6psTxy;-D5?LNk z$wBvGd^C|RpvZFncyE;sRKX9|ig@ zH>20YHNouuHpZC=X&4P6;c-n)1`ZYf`pj$`#J8)vTE7b;6x2sjxkxeaVd1#CfRc)d z^o-_XrTB0cUPsQ!Sc|~hw)w`3=Z&ZDBA=s1D3go=l8cD^NDn@tcTdcR-~J9R!;FY) zWIcL*f@gKi2MAkV_3AYQ(DG|)$-U>znBnoV{CGwPc6P`nBEB9i zwtb!UVKzJR*4a7&(U!ECbk8sMeXEi(^aqvkIcAYIRYGcLM-rfA_4THelOUt>9wtKfmc(wiEetYGsVCo|tJD>$!j*l&XP_y|Y3gicFL@+1s#mkn zyqmZBVBl9oq%P`r#@g(koMHYO(!gzLv%Q`7E&j z_!1y(TsH`@9K^$$;sD-ydDxD}^!P-du8p}d3-QQU!9e+nl zMM-~-o5;@%DPkb1TmINJjwNG`Jhgxs%@cM8^2XYaswkMiD7JiFw*5thtF+AT9_B)> zCjX5suXXz5o(%5iQnp+9sCbRErRipo@%L9G0L-MR%EhoB2Cme z&`RKsIJ)aA*3n8jRPbPNtb?$;uWE?N2R~zP^JXYOJb*I?qHsk+mvUaaoS+prIX%FE zkn(gGo{@f}K<*N>{VYyO;m^(hPfhPv=OgsFu72XW)UwS}MWjE6Xl`z!@WW&rgf9;L zBD2f2R6&6}JBeLlm*2c6h*3gYp4||ArO*6HE6o8BFX`QLXB8_m_0Z?xfmg2C*70FK z>s)La8Rk|)e|4!aq_tTK)e_i-{%2E~67r?pbX}_D;0$a9+9&mTzLb~l4!SgYWq9Jy zS@}ZmYNn*1d{6wt)@d>eZ|`aD5~p@d`z7zf^{)rURG6l9?Bkxy%B$??Ae+b9ARlLl zL{#_k_VF+EqY{=)3^=dk`Uh;nr4{4RYrJsnGkN=kA#vD>_?PQY(ojcvunLt*b}o@s zD;|D|vcpnOOn8^DY46uWiJ3cudL8f6)vd(eQ=+h$1c(uz#N?@kg-?@#S~&#V)}u6# z;DAA&3+d?cEKPQp;Xj(89q{YtMsT4my}GJom8UxsnNAn1mkwu3*lXksRY(BuSE7?by7EE(<&&(OnH~yd@<~qcUcSX z$^Hy}{0pN7A#j?k`*rg`CVA8(-3h2gv)eh_I+X% z89OqYQk+2hhjs!V^g4W}T=}85ML6B;MCm0Nrm>a>O~tBUpPONzvnN6xIr^5ArnETk z_BELL4C!TjyN$~#aNB?0>OTA>l;Q14>zj17IsF?kPG#LZF5ND?kP>NF>_-|-1&St1 zcPflGRbyXg{VY^66K#c8)X+dX7v?ltceW?-9tq@1lI`wPV{5kvxM_F%s*@byWaRbp z52^OjNk06Eq)Xe_;r;JqXbe?t_80*N)=oDF=L-UGG*=z6R88Dse0 zU2#@QA%Pw#qVKAFpFmEGHW0&gGhNK<3ueU;4-9=i*86Io~JyN>{OBK~Xj_xTb`#sC1cA4KK|9d%5~5izNT*{G^h4kCUv0>WM}QrXo605b_zt@l%Yz2DLUJ z)&Ia48F!EcFV>H9$DcN;WWLVgMeZ)vJD6c5?Q#{WLBx%uxJzf}*>ZJ>{~lGua;hs- zl{~trIkB6QUzfBl^e${quXb0a>0JL8meoL)S2B&0XMmS7{-GOCFsMHq?O7=I9@5Pw zU)?{R+I}xN&~+k{Q&T|m)oLIIABEjLAo+)Y%rLz|2mASCO5_*ZgtNnE)$|_@UKRv` z=*CL5iEFS4dY!vc`b<#(0%dfg9Da6*RC;^%dlFze$G|o-1_4M<-SoI>?ScY~4IhP) z__Fqy?fDC1s%x=@;|_{aPLlUAI6oLFm_jYTsmp>*JaKhfEc?#xB$JMuVRI$xz%C*w zv0Vb6dB9^L5)XhUMm|_mcmCqZI%UNb=2mEN@m_R;MZpwJA!P2WDvaRrjB=qPL0($? zN`AW2YLtN`29hsGsY@X-TX?z^ggyaMa-w9Hqr<(}+}7G{Z5?>%!+YDR=i7E433B8f z*qQKG9|r;wy~5%OK|VA0P{mDFt?qSfthEfRUeL2=65G~@>N$s$bQ8vxerqv8y-Bri zE=lX4Uf0A1uOf}KLACSif?ZKdxp-;lQFaG3vei{baiF}H1QkVfBj?uRk41@D$4sjXNn%`we7L~0^`P=eA#M7q1~i_@X|N<0 zT9hWea7R~G9C0iU&)z~e4k6MN(x}763ZJ%^COW=_SrN~KX&mrKO#f;{8oGyM`y=f~ zvt2WYtYmgATv_gAk(R7TzqWMGgSG;PI8@H(i=FvqoR-VG*-&s8?aASesMNb%7*99sS0WwYt4Q&6+2hgT6Z zQuIWgAJ_7m>q-+R3j0!dl?1wJlj^{I9W?jli|wF~5*9KO32&b=Zc-IhHG4GKP!G!E zRm1Ur8bL;$%wQ`DaNg^8Y_|Ex4*(@p6DcMO#8V)(?Sz(`lCR0jbNecqO|@YQy*U|F z#miaV_tiLTCsNDE@tSIQnX^=2UAB>yG*Oa!^)oqF7mSlR?&SaQ{}Zx3S-ym(|JGlk zOg==5Wb3ZSrZHoFigkZ>99>$lyeT*5n$*WIik1Viq2_THw;fNY;2fE~MRx++tB{#l zDK=!(l%krNa)JXN(n6ZtAl|hRrnGu&4zUJmNEalWV}bQsdGFk!`Q1UF^s1) znf=HyM!N5d^;!+_+L)?*=^3&{%p+&MORbS5cmMwMn|}_he+WGfL=w-rU@V z@w%R3hrZ1JOrqkO#HJ+h__hV-7qK#|keMo0D^I$o$?%Jy)IB1z*-(Ax4m4}X?d`*M zTx|LE!+cF05#zmX|L0w5r|~YN$F9ljnO_zgN+*tGv$LUxPY80oiSd7Bgpz^$5;0o# zUqo_@ZkwG?=LfGF&#E#{lhFuR6x7NHQxJ` zw`&_S^u@gdA|#iBQ5lLxmccq43mq{BmS-TT&lz3uNAcwZ69YL-;Ynvj=e%?slP4%GWd=A=Po5i^couxef~ANIjpZ>iT+vBtfp<8dza ztL6(lpdE3f#zywx%WGO`MgnZR%UGwD{+M`Fwx^$lk*-~>s|`@tZJSm?j&tgQ zF9wo0O~zB)=GZwYViJR>ivfLdfoI}Q&)0s{A%00u!n1=3Af}r1nVB!wWLOv}6~~`5 zNwrn*pxOv-;Mk5M4brfx1o7ONEvm?t)T9~8r~zg2J6Bj_^9fEPEdTx zH&VW^=aAOEUzsDoAXehk9|x|^x92oVFZBtoF$W-`FkNFioOQcl-H6JmB~z7@i8f<& zIPHwun~lGzjrX!Eeu46<(`^xmMRX1Y7nf_L-#icU`z<#N*=;kJ&gGWiOS!AW)y$p- zPIMv&jtN#`n2>?RHboVu?ubetfNHg=`kANnoAs~Ut41kL8bKXwq|cJ!J+rDcK&2-{ zP+*tjUk3`r;?xI6FP?iy{H#oN6tk1vYmo_*(CvOn1)Y7duZ9Csd%&6y3^uitGP(?w znJ)`-!PFB3LpZ?f^rsJck@0Q;%tLb+_kVT|xl1m#*Ud!sqIg6`xGD0;hUvH-n)ngAhev96VQ)a5_JhHjxse>q(bd+y;qTNDNl00roQ z^mTQ9+MPe?Yhhu;-ie&byoH~t`iGnWtd`4aJzH441s_`F_ z){+&-CU_hZMeevJEOVNQW}_0N$(pDsLgyjDF}`6qQu z{_&o+yThS=raswFsWb`-d!Z0-Pjc)%&{rB|+B48=(xLvbPLnF~E|2S8DuS_$ig5hB zTz32pPe3y>2!KM5`w|1$dn1`qb;*;*)+w@o^1S`h89v`y@-Y0HEo16F`8pJMll#X4Z_@ZJy%Q+v z^1e~!Yo=DVwOD{{wZ}nCX1cEAoC<|L(bo2tE`3XHuMGN zEnwuWqZIh1P3k}P`-uyXuEnAE!CyFlh1u_Gl%rTHX}C^RG=7QFO3bo%jC-BU*Ke9adfTfQLOuqqmOm1)x$`0g7)k6pgMz8lI| z(d!()4V6VlZTc>wGYENYL}eu%l(8?y=jQ=E~&pm5S;B>^_^SdrQs*rrE7t;fNlra{3_+fK+9u z!TSVG`W=4!<#b3yGPEmgi@Ev`1%hc$@~PeOmdiE3v=07kURMV=)?nu7iP8*+gIr7B z1gU`?6FhmD+y4XM3>oFx2Ae()_ivXd}nK3|qM6_=TAgRUh1S&d~uQm72w^{Ckiw?*TB>Xa>s`i(l2W zKhVLZGMYO+wQqni;2>Hb&@&rLJL3u=oqPTY-e7cG0gx3t-4pA{Z>$9<-xe~oFi+-D zJcpqUK{+FPaz1mwT|c9%gdYRaf{!OBDJqHGPhJGJV=9jBA;A$2aKso8x!}=$kv}>` z&f?*xnLZvNPU`rZjPA!rqIIK61jf9fyeUAs|q+qAL2y%9643SLxuGp zjh>Il53=s5L$uj*cc8^pbMveGBkAH$_Y6@ViBA$*j(e;>-~R?WES;L3R9trpPyZ6@X(M3PBf zW090@yAtwJ&OlS2=eDlm2zV$NiF83{(!bc$N$|L#U26WD?KdOGPMm#XsqN5uMzEF= z&4XTsESgtO;pHa)NGwVk#sBi}x1y>p<)_(kcQi0y-MiU7tQGy5B9C2S+SOHRl%p?T zeC0SRtwFiMaS`UvCXs3U2#^q8xP+t_V?Fq5>d$CnKPwT(LnKF|bgSE;R-7FWCT27g0^jye*=ppyV8nQrL^zs)}`c zBBCmQ4mv72~YnK_AwITrkAEAYk8h_ai$NILtxU`RP zd)5IoDC05rbh3&A8>sxnJvSUYSqmY>*x+Z`_E!c|F5Vl>KUz4*-b{!f`2BqFP0+M) z!f4i%p-m%H=enCrPNuu~m<~zpYy0-6u{psN(U&iC7WjCs@v! z(TmoZwa~xBjJcBpPT*jm%^3)}7oKz8pR6ob3}Lq2%8}ZxE-G`N50EU*6;mC4h?|@B zWUOX5ibz3aAn@XwY?6C;S&6hN*@6)mD9QI$)*8U*^)lQ8ODCe^(@JOKkD114cmhcfwz4KI(}P%^d4$PSQ0-O*~y9neb+0J z|2`jwCvB9`j_Y;8c0Kso;hYZ6z5HNN3L;FJuYQP9Zrw zv6bZ*Zux}9w(`N=%*P~r23p~JC#aVVYNJ=MM7AVTEmES$$u^?<>`FRMU=<5!Y?-+o zbCiN5Rb3n{T05#^LK(SKV13!qZm%YVIx}<>5B1p_1D?u!3``Ur3e_jd7-Y6B-@BrR za*Cz0b}an%Y+vhX6V@`LWy*1y-VJp}z1Wiu-%V9dpcNmkf`pfx>aY*=xTAYq4(#6u zjOc;;n9pAxuC0At=exAGtY$>U0dfbNCZ^dO18m4_fU*760qw_xe~`p11o?BBS;L~Mu;Cm3D@c!BgUu70oB<*h^p_7&SV`NSho~DGT4%!%U@0ql6b)BM zM0r71{jvnEmqK?X$hM`)h*>8EXun=N)M1U?--G z`=_77FYV#kuE*&0dm}DwQt-Hk5?|%P6FxJ!^i&Fec6{>^rEtGdr*NLE2D!u)U1A|G;~Q_|Hu2sqi4r2VIb!$=-OwZ;%)Ab zX^IePIwy~pN9hHm71WL;k=|$R$Fp4KLL|!BCAm&q4QtE~iA=+5b*63($G2#Oc=ZPr zD!3mm@K)~cYx#6SP)NLWUNDAprO6L4!LwvQ_6qR*mzZr!{{TwgX`_vNF`*yk9dgRM z^_2}Ecl-F%{I@IGSFaYtLQld4ua;W#RJEmQr3iAw(Agaah-{b@>6t%UDYqKx6zY_T zM?gQP>^W(SJKx3YbuC%#=E(YJk=>pUXrrK@oUN77t2$g6S;#fiyu}3T#%>n4THX%Y zZ5gQs-IO8D-h@t4j>o!x+nxM@LRvKA-b|cUdU~F@gB;$^_W^=`(sihZ*<5a@rdC=? zjUiMxyWc`gJq&j}?n?Ue>E+EmoeKYKL-+-nr=69i`z5Q^>|?O(cwlN7!a61T(>J9r zcCE)B^GK+DG@%^fr}DvJBgxxi(<6VHU90Y5fXOkHu3{yAR0TD? zWQ&@s)aE^;2@0))07S`s%I2I_t3dnP{K+v0uS1YHGe7c(QFJh@v}FTi9t zEc6JehSiZ_Y}&L@__Dw{{rhbLAv{t5erN)Im>4@^mY1`sQA5vHSH66DaQofSt0LMe z$uI4iI?v-c=4O3p3({BL<3t4CvLGU*GJ z8<}B~iNpIJ-nbvRwE2)-%CZ>6dt{$4KaCj%IVSPvNrdS*t$klzVUPO)cSyqV7$ik; zQ){TbOaEYQ;r)AOxKWln)^nSPv)c2v%oEx9!1+U_jcv^%j&UEtk#U0_=0{GS3QS#- zMPAms_A9uF;->TBmWfrb*@rs*(0A@1_$cW?7E!!ML1QkgbI$CFkV zdZJ8lkPJR(EmGc1%&(h@U(l1QJBgg4$WOPCYqc-7@y^nMAo)1B@m_9vdw`J=MjhW= zffmqpF9j-w=;R?@IWKgIpvGO3$J2B4qybOh04xrEJeu(1G|*Rho04Hj_nrKp;WVUb z5o#93wHpwA2RdUopqr!rDn6-JLFC;Fdo8v4p$&pG@5;x_kDK?^vLRd;;ep-wook-_ z3+Ime%NGNc-(iH26hGarU6=XO*E_D!2{ws_YF^gyxa9`RR+U=0re2r(8BAidtPRB_?b) zD|hA8Lb_lEEd?b2n$@8MaG*+l^!s0i3g`=N3Qu^i1==ffnVN=%T`7Z&%Zmth&!sT9 zHdRI`*L};-U?=DUbKA>9camtALi@l>=v2Eg9JG00m+abg^U7>^Pv4=tC=F#9V{$Z|h z?ZQ}1{Sz5*H1@_}k8&mx7r(9K=*cLf#lSHmUn}Gi=J918l5CrAPgKO`bhFMn%f7&- z4)569r1Cr1w|wygr~7wPUNgmkOMK1_smyMP<+yGR5mUJe&e1ck&(j4-BwmUK)D-7? zTtO}SUo%m(m7x(o+ar~K%;!|7l@xA*B@n08oVczxio6>=`Y?NNF&2<083NmYquff^ zs(aWf6OWqjHpyU5qNAINmeO3c00{?DV@q8T+-CO}xg$N=^ob&!ynBV~uzIxy$O~bG zl}r-gU_&L@@#LORL|OH$n|=IS0P$sPpjzWl6!1B}yQqgHOKw|>IK=WDi zY4x1i2-@Q9votF>FU}`?+6Hl(Pm<|L<8QGpcRQ+Gg=q%dA{aMB8@=uGI^gHvZbiPt z6S4IzzeBsKkaA@;sreMK(@uY~<15#=vL``~Ya8()g-p*SE}2i4mRWpW3w|lb+lnX^ zW~Vu#);`(dZx$iA%8z_Abw$?9an-gc3mstW0?xsCy=!{98+-@KmKuq%ompt5h3~DC z)T%Hr)Ja`{VGw#TU9iEGdDKSPf9%xMXX>BNWkD%$J)``-^c;^G#l9i&pb{)rLp}O+ znHtbb9Ab#*zwxiS9}>`Qr?w-QGYTcEh!--3y6eoQ=A)U0+W@~@07~!%gNDg$Vu#Wb zFPV?#*Jija-k{;0P~2sQ6dev}2ga#oY|7b=fMG{YbZ?3|cX?2ms~T%hbA9GrqOYRc z6X*IG`2?E4oX(bBW8Shz%<>6U6At)Sx=*$Z7a!&u`$=bCxfD!uzjdG;2t|yb=3eSC zA?@XGlu-K8Yv~9JOh5l1KpL6@Zz4Eu5WY65n`Gqn{s-}@KSg?>muzDlHiJ>j+4!2k z=|{9*9wCSu4~OiJ;Zo(!_SRld^9#Ctdef^`_9oKf z?Z|xDY!_23L>gHanl&oMsacXiWah2gWOY)FxF3MPk-X8@rQa2QiZ*Ulnma#L{-y|< z{-dM{v6(X1%-iG86^0|HgRXc9U-3KP>xGxEe=Qz}4oz^+@{32n3#k3+27|m*h z6Mcynp;x|4+e8iDc1|&PTM@>x%Q_fwTa3IR8$P9xsXm{Av-dje61OhwQn%JwL0c%7 z+HM;gnO@w*d#lxH6CRm)GwkUI)iq@#s2lWo$F>U7dbee_$KbGgiKM1Cf( z&6cxJ-CIvujBJ2vAqbcUx2k(TTi(~+Ii=#W5G0Koua`Tt!!{6gB5n zxhaAf=U?#ar!PO4IpV{u({gW5!%)FxtX!~;*?k$S_{g3gqg3?D@oY~TQbY3S+ga4K zCQ#`}V$-GXGK1m9^QS;GIZocHjlI;Y{clWtby(D0w6%11gOo^j2uO#3N`rKFcSsHl zE#2KE-QC^YozmSo@D2Ljd%x$Ie}-Y;#5!xQ9cTZ>%Rz~tsbvP&?+*Wx5^TV3fuN}W z90IU-5ZT!MnMXY%enM$ZbB(CApO%Bv6yrEqC$8ePmjAVZ4;jy=5vgkqP~&CrOC_`v zCZE()hmq;i@a*>1HJ(N$sHY|ky}WWWY$V`mE*U59IZG&KDQvtzelcb4c5xo?5@2|y zf2Ld?|8w}$!S02;dxACjqfrv7#$dqCG5}XySgL`TmY3S<_bz(W+^y@{K>56}Vg=!N zLZ0~s*T@yDIi^1wjJvr|y;SSA^OHL$o3wI3)SvyWTheuShaPEPtHb_#+W%2LfgN?j zQ_^9{pqjEG=GoZ=*@N4FZAW3%DWw!0+`~oQChw5-uT?L4Dpq!YmCbJ4Aol&AejUhr z?3#7`Mvi6Os~kn2a_)lLP15IB*Vw=fTmTm+gHXhFE&Zm{try43=?1?~-P=HdMS-{a zQR#W>-PwRARM6O{!TR&eeR<{`f5(MfU%y7JIbSA1#2g}$KvuQ$PuC8nHV^l%oC-0K zKp`%KT(jhYZJiyM)E}=5{}+G8)zV!yJIEhQSR!(obT0HsWXI{Tl=BkWrbN^0;%a!F z=YCb*+P2evBI&hZd~jMy&}(sk4!0NZj2A@tI)A$fLJ#=F>Txo^UHxg{_ucfJ)8=cx z1?-8@)3K+Ckhn_{x@*GOMc#4YIg7fXQgP+ zrJc8gVl#EKc;%Gm9Ppx`J(m#fqw^zBNE~!d`9-kHU(;GcV72@Rw-t%#N1>#`efF7^ zEFSl&d&loyLJq_`x}rGw=_m7uHCY|T1k0l)VfXXrqv*=?fay;6lSEl=W!o%1gxA@ZC##meq3Ug2q_kz=uTK|YwtMrSLnZE3;uxv#yL`F3R7(iU13_exWIZ@z?Y1i8?Hmd(p+Yu(j!hZ z-L4?C{qma=V5rUX-uO=TJ=0tG@lfTF$%OhexBs1eM8*0_^vA z2Mu7#5&XR7kDb3b44XpX7Mu)O?a3pXpi|5KAmyM3_#1|+LF$Q^zC8&2&x?Eq$&To8 z+iLbY{dDZ-IHIj0dpz_-FO=|7D-TKN1`Hrdn-`-s<`Rdz2fWDVhVf);b?Z1<-wPxu zcLGJ+U<$iU?o*IjX`&8ra|hSdOR&f8tX>3o49Z(JEGkOctTlQ0S!w!ew(1RAO6`Q$fTd$uJ5rllNhNmh z03bpCAuAwsEToV6MiQjbEqZ&#)F$A{ZT;V^uphwt3qB`0ga4THt;T~(D>|JsX^DA1 zdyKTY`CCYWQ)P<`NWTCAi}_{d?x^lLA^cYA{4P3a>SscH>S$|KUP$xab}m61shtVXf(^qY*1DQZ6PkD+`* z`c}8bD z@Wx*xLAUg%#ukHn^iWDfcMkG}@>2kWga$2B!jr=CL@<_r(`vao(d%a|qo10dqL)3B zLy0GRUa!kCL=0NidFqphpZGPnheoZBBMlJVFBeiahS*L8+J;?-tR3y4$B z%0UfUUp3gOF^mYn?tl?+MZ%ex-S+suEwbhKt35bptft$VTJyAPf6hrdx5Vq@A+#mxd=+Wm2FBp6}&C2I@7Y(+L|_=rS(3bKdGq& zsVppM892M;=rPmb9=}&YRx2j659=7jy)t&USL^CYeZ9gQEkrgG%aWv?c( zZnrb^w{c+?LA%jlaldOG0SudgTa#kmk6JEGK(nW)>v;6pSn6$>|63vxhic;SosQm9 z@Bh@#bs%Eg|JgaHPA^;Jz0TWY)6z~WK`JNLLJv5qz^Mv37B5HWv8k|1c(St(g7C;K z(?|}!{kmbckmfJ{G~K1{uG`JC49dTwj5)Cc^LxZeO;{Y)vRSR3dtp~9*FJ&lxI#y@ zwh;=Q$3=5~5hBGQ`R!zb1Y1)W-DFi^7n#jUU72HcwxeOhke8GsUp}Z&r~dj`$f|Wk zklS2#Ubeb&TfDUCX9r=^s5wWS*LJP0xr&-jmLaIfm0b=np&U_GpE1YywOoOKSuQE% z$E~gU6lY4Df}`TpOj(%W;fNTaB=$gV5ze;OS3~|VJDaoLw|*kUXVwd5D%!e(2FW6S zZ?)TE1Mh9-<#F}E`Gvm}dY#?zoB7+g3muB^NM6$fpG-Z~Oo^d|n_$M_Eo_wy-b;qj$^V;JdVdc!=HaTmTxwD5(tHCv6u*DX~ zCZEpi{YmtsGO076!#xw-0;_MR@CnBZn zWQt&&>kJZ%(hMwhllHl5oe%9!1^I1Upsi-&Y*dtT`6m{TIceX~CbIbpVd?ghoT6wS zsErXNP=!W9utsLz<1zYYTeWp&E2HVca@@rUUU8j7{I>^I_idw}R607BAYCZ%oQ3e< zd&bY0xUo?o{?p>PbQ@O2p(u;HHTrl5<*PQcFx%BmJ6xF-9RetUXDEOjd?GZh{aaO1 za7x6~v+~AJghJr-Y(7z&X2g^x*Hz(c9mAhdmR|GX+^|$6?#r1CfBDx}+J?z<9yIkI zjC~e;94dDcy%JTr;#T=m2kOgXxK~L6qbdkmMe4kWW*nUsQ^*H9SKuU^nHe)+){;GG!B)F*hZZcl)?={gkwdLKxsFL?PB5aZJ(cZR==`p={xQATJ z@}XD%>d6PK@Cqyv{f!+k1u;}HARn0PN|)H$Op-DBMKkwpbjvfg&UQo!gtv=tY31PS zp?5>Ed12zm+(OQZP`I>d^HoX43Cv?E>S?9LyRcfc?tUD{yj?3N~^u~wv>xz>`X)H)x1e5Z;IO!aP;=8uKX3WTkyw_@iW=)%b;&*9fllPR>;@mnYb8L6Z>P8g&5- zJEfoMJosd;?Bkn|mM=jOL{^D{zUE&7+ChIRR-0#*fB!9kNP*sxFykV|`rn9BHTu0q zEy0y-H`A1&QJK7FVpvlL-G2Gi%a5epJ1Ed~h%o6z+s}*gZM&AwaT)L>48VJsd7EN+ zccxLMHZzcC8p_`K@&&y5v`3PvTq?m+<3Z`pc8jJU6E4?kveSZ}rA#V`%Jtw0xNi~( zdTnWR7?UKkHSY|Gd4RI)kelTn5_iz@>u2&$&%q>Bq# zuM-mtq}*H#&w!Oz=?DlveC-_+v0udaQF_R zxDF9oZB%lt5h0=lTD;^f31m`lM;NXw4hLI{1(0dPvtF>ET*cAtle#&D|xL=hB%P-V+z8 z%nZJYGd7GEF?Q(P%;c4%r4>E8&%TUt!3G?c8LgsmzNM5Me+liq_)bt#dw2i060|VZ zZa6Vl zGQ9p%WE`$h!~ZC?$o?Fe*1jV{cz2S-1px=Hs0g707t4$7fH{nhh9E3V&TB)L>Dl z_jKJTH`m`ux=`p`zq(jV_?`>AU=?qDdH$~+pZ@zs9sLvvR>aabchrS5PVr+t{#K)E z^VaL5E!t<`@>T44fewmasFt44^NEP= z7W0?1-B;6*EG5;et4l3$v@FVQl358kr$?d5HGjQMS>!sMEXMc!DVNt6zUE=;2Z!c_ z$w-9`s(X38 zJcC!ZFn^VzIN-#Gk&7zAc}BSUts6lHB95u&ZrKFLp#EQ2XI~9SJfCk7?4-fVV?AE> z=@|0Ul6yK+@Ysadl%KUI&!k1~es-|eu=_1>7m$KQ5D0Gd$E-9e^NA?uvR{X~=}JDL zZO&xO)AQ-1Nb;=W>?kMjcs}gS?*v~}?fE{6#1JqGE(XGaHkE6{8pC{A7>3O7v{|w_ ztDYU#G`1*;xy_yg-P-#zGbol|j$ZUPgX!*FFz|Hz#+28jaT|@+4hXBYBi2_UiYY`<;D-(wC zYg6=TTdJoq&$!~W&3du`yGfeE*huQ{)3maa(xUno{?*?{X+`D)hHi(B-w80#fdbT- z{fz>GKm{G>FGA2?GQALv-7T7$Qx_JlYpnXE5=r~-_x$%q*;&w&J3 zzp;?fImE10s2~Hnj9m(WO0UsTyC29PkG_+&xz-S%Yyhx!JN?{I>rngo&6ajgUKd?c zR&5I@1Lu^ul$apFzo`-GZ9HUIiB)zQ>JHc? z?UqW^y4{M2xz)tiPM@S%B&etk)rFP9@y(L&35?S2mcl>9i$M!-Q1z}hFpOMWa44Aj zqKl4@TX9dNnezoox|5~*Nh*HETfRZrd?DlH*$=chK1{|QqyuyF4f>023<9=wXG%#} zG9D0xDszXA2w8LVSBE!7X6H`4joQw2Na@7@KPM-T_4cw!2~WlbNa7QbfU)!KNGeEI zp^{X1J|nbp{5IFveJWU5_p=b>_7MD3BfS(9Y=R!L-*=9do^W4^CTJVQE{ie;74+e0 zE_NX$clq*B!|Xb-OlpJ;kv#bTCVXQNvM=4hJMxk6Z+5Rq-TX&q0i<>GYxn+t(iJfg zfBjt_#}MyOw$%@XZg1Np1kD-x?oK-?sh)WD=kmax6xQZk%eX17lBtG;?_pJWqB=;` z-=@Bono-b@R*D-m=jDOUKjXTF<;^Z{2(GOK$ni`^CuQ{7XDK+84{weqj>>j8DpXyr zRF|X*7|#x=)fEevnT#qOLpnZxQ&n~pkYaV$4JGisFvRxK{mq*Bx%EdqG5&f*{%(E? ztuzb%**TthvcX0qsU~ku!0*X^<~e-IwCM5RK`aO`#NseEJU_AzRp?H#i25R*Dx&EU z?EG+AU~1ihZI*Z%C_%2w6$8&nw-Ne2l$!bt8{n6x@Wz4XcouYZjGPnklBVM=)Ym0Ltv=V zLY&Z6E9gh#fhP@tvA_X|<}sNb7rJEAd3=G1Oe4Tba0P$2Heb zGyg?2^sKgnFCkDCL*}HPdBE{oTP{3-EBGw$_(Dox-w6}GVTDR#>Kjc2b+} z^K`7rEqa^5H73wAA#Z2Xic`60;e3#A&C&0UWOIH#H@x)c-e!N3@`ZS=eK+9_xy8uV z$&@O9PMEWk0+M#qD+OL4G3ZEZeLHf_{!vAKFY2O!ShI>Bl#x{Mvs2t=J1%H@Gm?$_$Q!}E*jh@`*CC0+v^5t5bCFRlBxH*FB5iR*hhiaI zUbVBr=LQsBvaIDs?#xA_AR}UW7|YMw^&H**giMiMQ%bIu?e4g`nHJDrr*H2jVJ0*! zSpKtpd#1PlKwV%1ozapO#^LxUtg5=$mZ(^P`+0snXj?c#Yd%o7!dCww#(@ zy%<2iv(_=|eiC>reAQG4ejket8|B^TBvRVVN3m}(dSc-JJomk$oV{FPJ|#vqUFVMq zL+y-bIG4y;iJdIUlXa!Qii#e}o)_=0=W!IJlZ=)FkTWSVTUL`kQE@VISgwWq2j4Tv%zid_v4e89j5H+XcBHTAd<7Gd!w>*{xr zMM@j~z-VSyp3@ItaOk39PlE8D-4H7=Ee{nRLMJkQQiZ-*ngY1rH^&PAx{eVnKd_(8 z^4~hUn_la=FOMXGXr~SneROtHzU)^RBF?25a|^PSC&ru5fsMq36=c&&leFW`&1`ie zv&S^%>9RvbU##sq;QigAtWv;n^01B6X}ibHY?0qz2ni)1IC?mr+Vd9uh2NJ<33yvy zZ3Y$|PwTaGWs8O4^A-R?D51OVa6xB<9bqV*0lu7_SyZQx!_cKqJN|PHkWyUQSBm3M zeUKCjH%A`U!KSOcfg!}x#8!wWjC~|9A`JN3Vuj3Q$(rc32$ZoJv9KVpdk^~s! zIXsostZmWmXg~0xgYVS$@Lh$_ST#K$2Zo0gYHYgNlwDo|j4Bk04hy;Y^~bF~29cGL z3kb^ zwx|^mZGXJiFm9TKd&xiWPTqQa7>J3Mx{fL;Z41^#*Tx+9eE7&+YU-zr=vY;kuG*|D zGqHm|+0KQb;V=`iM7PmixV}$2!#kLSleyy}pdp{tqn*94YIX(;qYBi`ho^EIo&~g( zi#UiHVS8uM&R6CQN|CDA(cY*J(S3mYQ1Jm0kmf{}dsL2$;qa`{H*GildCCDL#}kqZMe zrKW%%tZB=JIMcJQkUKmvb!7)?SAs?$!8x+Clc9f~eopu+>-UQz>tF0z3oZ`%Qf15U zQJ9`@@S2qOtiWxb`X?g>#e1EV6^ivqlZf?n2NZM9%N^CCP<%J52X~@>m;SsgFye?JEIp#Ya~uUsB0RU6_uU*P<`HrU2qf- za$hb}@yKB58<0?e!Q!|955=zE)z>Pzf{!0OCm-%c85A*NX`P;;5?|VNXf6+WkV+Dv z*369@nfn8_4s*Y}b$)8MmI+c<2I=_iW_$NDu!V|MvDo-KG^hY93iMx%pN*e}^5WlL zX8+Y`LeOpz???uBz~2SGV1ISMX=kK=_M8G(m+9H~uPk#=k} zM&L|f(eQ^&MBMV|2n14$h<6q%bgwZWHINDZEGAGA%YldO9!Y5FGA6Tx4Aq4ZPf-6j zZo6Q}&5o;tkx{rHmuTn962^t|XVifcg?M=ASBE*m`4g7cx{Ag)F7vz(Iz~i4`%WEq zw$jgxyYm%2XXMk1PscFMkdcC)G;7zn_mZ4nL%N6s6BPcA_)8`n!u@(5$q#8dD{P1p zn=1L-*>Lz0W{4IgGwf=ebT__Qon8Q|VAxzbWcL@G05nTIzs^W6HUs}35d=&QmxB7om`2rQFc)svcAt&E3<}G@fypKg>)e8_ zEuAl{)|F?vt2OXfs3F0{&0vYN(+sULKrzmY^R!^)C&;IW+qREF%f&#ew;~VM8d%8h zotO6Nwp@CYox?6T&w z$ogB)VGU^`;hu~XnRpS3&ns=r=R}DPpK}SxiFr1R#V#y;Zjek=ZR~LqwufWP&xNS< zGtq!o81wCC(tVDQBN{NRh(NaFyAWT9_Pcnbxw=h~VGaBFwA$JlxeF(Jg*+%_C>7>Su!e1ZI;9NT_(`1;nBJ4aC?i1|=?g+H zb}hJP=#Y2dJVUubd+AeI18Y*~(f({j{K(y5Qj|8BP*T2iyeeDgqnc~{-F;nu=myP$ zKQ*nePYB1o4v(_=;Bp*fR3$<>?wvHQJLqyHk(z^h!?UroXS?J*tIY9w>RzT6SY8=Z ztZu9zfKammirXp$k|PVF?CXi2ISd8{N98Vv0al7r~ywP9D>zq6!bM)Fn!|ca56e#&>90sFNMz>EyRTBwezpxDX0cANKv+%4R z0ej<9Tu2|o*xLLCxt_It>Gd@W4=chmR|_)j`hJP9!G)`(2YU3};Xx|MjKd z#2PCBo$KH6&O_JymeR=(pk)RFeiq*2F!*}qYnLuQozh;4R`U3Ao{& zi&#zELnPXI#?AI3r4&7($N&oi%q67Mg04iGX<}BE@waYdFX3Id@)OjtVdKe_BbLi; z@5){y&|1%FeL+qT{526!_iG2araHiL(`W0G630M=P19VwKsQHK_j&pjlNbJQtT?NM zvGcQED|VL6F-U~XN=LN`_1iz&a194RVDz}n_f7I`aVzfHS^3X^pPy6`$6nO&wQhAQ z6nCj29Z~RUOcx5agwt;ksh)I$C@4v(5eJdozo<=U!1A_ zD8~9`F5qO_#dm?%!wSBkGiF}q-ViTJM-o8m)*_AL8B?>{_65C#$r*g&^SNv@1Otqu zt{P-t#!ibouV+c6Pfv)16n^}J<|26a+m9hJ|M{Z}s*tq19V;%4{I1q>0Hgq4JSv=J z;NF8(XF+5kru8mBB7)?$IlFM4NTqIt6VYhfR1$|Vsv!#nzFA=cXb!DZWn1ZlXXF-1 zk4VD=2_@paev{X>z3J8gY$GyM4cd8D8iVr5$s@{YR|{sh7yJmvA`Ow>+&Ld3N;th* zfh_5!dg+gRkMfQ`SQY{I7A-#Tr2SQHkpyshGdO7+#`DjKMka(9jU}jIFM0tlGBP%B zg^b;(-FMVO$B*{dWUDdlHqoQw58C7EX#-jnxAy?i(M%9Mh95h*Y{*d0qCA`U2gXX{ z+#Fk?MJCD}a~3(%j7e_V1jgK--*A*DAX~*UM?VR}Bpu%&YLjj9{9=w>JM4Y5z*@&g zN1Y4}G(Z?>(2M~p{-O=#n*Pe`_lII98bq;jMcVS*XZZR^UyA$B#B#=fLsBWJ^(^~CAA(YLF|PZ+a@r>=?_qhPE$-7pZN<^aJ=zW5E{dT zILQc9u_?aT)}bg$dPScbuX)UD#%ocSi=?93N12dr;v=O1_-k??%=(E4Br_f%j!y(j zf~3Mn9nQr-PwlcH80^wJgmORKeQqLHrZ25zA6Aa&x$hgw6%QfK4G+C|O$G!m*|`?( zFm5oV)rkM;FxY7Dn4w(NXKCMDII?pf*FubW%q_3WcP|2+kYIvSgJTr}1P_J1X?I)K z4y>kaJUEq26|Em9qyCd3oQ4A}6Sk?^Gaus((&v?8k?aiXM(=v`jjZU^KC+hecVkC% zk?)@v9$Y8>_|u(zs@b=FDW)3h&I!v57$tB4ukZc4AhG7za@D`nF8 z@jcoWw_oq~^`&%h^(s+ipthSQ8`dAkHy;?xR+!L+v5T0$)zZN5-RFWl>(+=jHaXGR z#+y;G4TNa%H%RsD82;6zOXHroo@lN2antwL0{*6N)P_4Wp;#y7jfT|RvSwAZHGEGn zHqqEt=kOo=u|5sgBRd>BZag`#Qu6lJA?fS~uHWc}3hUB)o-N1}dxu;5-3u{V^={RGaw_rkt<>jK zeX28*=kqw1NZ|_L{rgb12nsh1w~3eiZ_E{e+K$o+^teiz|7gGhJyPD-BGu&0u4c-@ zZ`95&@BKcZ!`EAbjgvGRth)fV`JlaQo00rl!=tKk5a8aAT`!aR%`vmdF0w-QWl~1T zeLAfO>43@aJ6}UVi;1)O%$3Svd8GiVlmQjJmG2K-7#R3NO6xQ`%1OYHav|N!jDawW8}mlxbCze`|V81}0Ru z^W3kLV2qYZz7vdlX%+7+3!pTFE^kAHB_Px@cWK(wEeIaqEBUCWlXOFJlL_G5gevb% z4(X@bRB?$e_U|utmfdB_KqmmcD zk~KXi;~5 zj)htc+qoY7Rx9tkDDQ5aNb_3$g#c6#z>-fXwMgm>63P-AWAxM2rx~?gfp%jK=ThU+ zWLRAJe<;#sl}^BES_LbD$b0ClaCS668%w6%2uvln~LH)Oj_x z)6mlfB)Ax%&EGMiueZf|Jf^)C!S8GyS8QWmpuGH^kUX6G)IN=+w<^sr@$`m41yI@4 zlq}(|*~p1AP1YS~dAzH^Ja3gRU&mWfc&0N*HVqpe{YJ66Ay{C|isF2wgz@{M-(Uq+^CvF0*#Np)-qMi=+H(4F{oXqVKY zNupbLV<$l4n6?>dTqUey44kylK<=OLSVp)d+7bg zS6?8n&=#g8mya3mjhv9t^--_T1mnLvNtY2-E@jnR{XA}`oqf0so%3Dj1Bi_ z#~nXdlvUp{sibH>Dlxz8WJk=eZArFIO6eRO^2Lp90B~J=%8&5lyVJ*t4fj63eG&U@ zso2>0+8HSh#DGV;pkcga29Bipb#|a?r>biiyZ?5uVg+}U%+kD$+29X$C2(ZrFPCzQ z39%c=RLXsQ+kMW|j!~O$<4Nf?Ug0JW4wLuzD6EuxBlFyMtxG?C18uux^NH71CXr3h zKx+2x%p@OOV6@RL6HnM>wh(=2P_MTuhWD!MK(1T6umv`}wM%)WV$;_1^_p6o#j87q z)Qz1~8|&@5j=~@DjjNdY=d~MbdT4?X7=}IGw~Udci*0cPg!KAamcQ3GqDZ^nrKCxZ z-93q#?muyf&CC1?R&V$}(D7GaGmz;2rbIqW@Pi8-(!!+$^_V4(Zn3_NI_s_jF}dza zH^xFKr5X+J%loYDi2L3#vXxS#(S-P4AZYKpGr9Ps7jWKqKcRWJLXKs`Z)%Zz>A2!vCSc)Eb!?^=-UlkVH}& zF)F$4B+0cpJ+P62LHWf2{DyQcMQF}=d?Q@w8_{|3aG)(3-8`NgwmH1RkuGh26=^{~ zJ5!;)X#(Aa;Q()wfG_2=SIc=gUz!NQlzw$vnB{2Pl!(E_;Q&WJbewrL4|BJ}HRuDf zT==dUkE`~#9$WCIeIVcObys?9on9KGAH+qZs*RW{XC^H^61SxMA4l z6uCvWCz-N^5o&^4Zku3+imDD+z5Rf_`EEc=l;=;#h5oFSgr)WY?0q8u-gaa6adP}> zE;DexK7j7W59r5up=VG;_pzMh`>6PPHuv`lcHKzj%lFznE~=2R2v1JL30lSuT6h}Y z;dZ%_5e-xbipNI5?0OTEiTD>2Lh#tmwD^(Qg+x{e17y> z+6ZTzzQ6d81vH6BJzYFlGh|<1%%}rfB1fS#8HS9X@eU#zqn$;8qr8TzgE;#XvkqxE z;G=9RO4gPbg6Bqbp)KRn`KvuZ`gmR{Nn1dAO8W1~j(ZcP!8&1JVQTpaa$YkgKA*I1 zFITh<5A87L9wzSfzWqR%?Om27udDJd>7V`&cHBXRC~(Y3Cdt=r{bNFV=fiHocMTb> z>lkJ-PA}isc3#40a9xM>`ycP0-NZM zQ@=eUmp)V^LAzuun5uXbuPB^6fh=hoKkfWHpz1QOa%ZL%4xg7?;FbCpybyw3LZ3)y zv&y6a`^VsDSxAS}Dgge<0Dx$-jXz}K>eyUq=@^Grg??TU!PRw)X)}*S@KbpF$Y@=H zKPfzmNKIYPDJKELCf}MxU7wm`agp=teTnfljgJ|MoxStB`n-v|o8X_+Zz;z9leoVm`INHtX+gcY2s4W)DOS zn6G@uiCVy)R;aCydkFb4sbE=(VN++opN9Qw8Y4W%H4V9k;Diu}3`j#&rm6ZBVmRnp zsIOFM$u#3HRGG%~qmb@PCNunba&|~LM1Er@x2D5@Az+fM+a9#L1yH#APEj9tr=gNt z{?{~i@L)|`<~hNZ9KJElI~$Fq)vqTe7hl`3pd$Tz(Z?)l1!|bT(}n(6`syc-G8IMo zW$DNFC`{CA-y`s4yr0A4L<~O$u4P;Y>~HKzfl6po6EddZ09+<7DK!FYtjDfI^=TrKJ$pMB+gWRVx9F~+ zZL2@T)TfX~+G9~6@$eD`dmCNYRnBqT5?#FKIOQhTqvd5)bJ2%lVv{}_SlfSs5}-@D68FC)p8VA76?f|0v`M=Fchpm-aH8< z9wcbF_&S5K#=|ZvW_i2h1OBZ}JQdhjXgppQUx7z=B)!3J^R0d}Ofn&p_>@|13$~qd z#WjIrK#nzB8}~^rASb~T8Vlx1I3lFi{yq3%uft2IOMO&w*I}`>Jl6v*1g<3(3e9c8HH%VZIgOO>J?NScO&({U~C;6U+PRt1a?Xinj!S zvKU$0oGQdNIP6M#3c>9sIRjFvo!R!sEY>StPa>IDIQ-9L#RR)ooCqz+IAG_R5IX#% z{;G)gxJ99R$mJ;dqEu4vUDxC{c!n_I}d1;1xv(btL%IW%Mm{y+t;L8wrGyfE5H z&~MmP#lY-x3J`6WThTG2@Fa^6NSF#3O(5c2hCBQ&_Rr8ulab|&PzkBTfVWN~P{^qn zB#IB|yfG??kiZnDhu*<)`|LCt5(V#zgQwerf|!aLF-l>VJ8o3KC@FshL>umlyC0yD z$r*8L6yXhRVhz}Inb@Uk2(}}|A2UL7a%*&Mo9}ID!T+`sWn3sH=;zsoyuR=Q-3;;Y zEw*kB2_VjBN~|t|z1QF7530w#_MDReE4!k0K05H{WROrYU?PAJ>^w{d)737P)RZBjU8F`5RIWUUMDwb@n;`2yNA@wJB z$fuc^i%!`JW&ato0t3E*4+_ShfngM~_c%3)R&vx!h~*&x&*01Cg8W6v8f=k~Mmqth z^OU$qMv)s;W4>(ZeJn>#i|9JL`OC;OMrm)_&@fBP(B^FQHe1 zxnM7z#L>$zWjNZ7Rd&V^5hzNbL-Gc~Cb z&eeq@;eB6dBH;%e--}(ZPjt8K0chkW9K3*Af9HL%`H!_k+K~c0!3CI`yG%w>uuggoj-KXa$hHWaYS zv)C;5CQd|;hsOK01VL&9br=I+&iVVWCi=9@Hq|@84UH&oSI!~c#r!^eu9P&T#!hG$HgH_q{d&!uqYOn=_vCb@uf zw7fT^WH88{rR)Vl0Y>}~Q0<-I$Mmu7-tD}gZIMb+ok$vZ>A~Hp+m{sVOf=RJUu}*D zR>JYlZ8$9#g!JJPqIZ=L-JkmCk%vrh|Ii%!V_$q(?Yz+MGSS=6{58&FQ8_&xj_sf! zQ>7wF;F_X+Ltm?!V_f}5uMc`L?MFs+&7=<%%8*A^kr!vxIv*P4r?JS;4Oet50^@1U z9_30*-=T8-p&Tlw<2C1SOo3ziY_;&xO~F$2-_(MHh#)n_Xr=>z|3U;>@H73#2L&$3 zxQSJ-nv%W*X!afS;Y8TbpRH@n6dnl)EgEi286qW4jyw)1g3+NS(j0_YFA!St? z&phhqe0E!ne3FKR?puKsNTfG_V-~=)yf|9anq_?Bl@AlY-{MQtSk$#(DtF6x7s|Y> zOS>p7-R&@*udjvv(ZzZ ziybqwUYY(4KLdyszQKG}#hoLU+NrP{%BQ0ftlI_p_Ef3O)$hah^{tev&iCH@y#Xhd zKU8-G*h-SB4ZG}V=DM1BH8f26skrwq^F3_)jISW%gU)S-pVES{o6&X7 zTBv)p)J&9?iuNDxT{9{9+Ei*8XGXuM4oN0b`0iv!D1|S*SSyz{{o{Ptw^CbQCxKZa zu$CkF;GHM7-i;ma6*%hYMUhtR5KSJcNC>W!Io@7C+GTH+IC)XgNk~;K9O~b-!ftPQ zfrllK?K@65H>RHJ?1Y08L||aoBbZjec`7LE4x*jeabmy+>fPYLEXCe*M&h9WgvU~> zqZaqS3jg-NR+C~rtX=VNWHa9EwO@zoeZ)CagS@z#gL^8oOx-gh2FdKTDZ2Fs^O(qG zSS!sJ+N7sf4`6!G8kw9Zr*B)ie!Cr=ZpjF3W&)=mxq2GTcIHRNV-beM=s7i$>(9;> z4PuVw(&=#jfzkcVVFl6tfCEq4Ev^HHizfefsswwMF_M zeuq)fe7=4P!0P~LZhhyi_~{>pP8-d$2Nep$Y*Gug!khDLcY>e zurJ{d3C=a7(b=~{&hVFg$ZTQDEY^AX{r7Wsg1W|~E$J*Ps1&67PiE^;STDOUS^sr_nxq|^wm zmrxvuK50w0Ynx9;JFaFU=f|{s2*J#Ae`srhwa-(*J-0{~XrF%``}w$5Ub35)7c!3_ zD_n-=^h=He6Cyl!1HGUdZY*Hlleifk#YRnky^UYeYtyWdykJu`;2N4gX?7DI5SVP%pQQfu1%r{LxB7KGxG0_8#^!0S<^WZr}qJuJZsGyaj46! z;2N|M%P&{vqJKqFrr=xMhgUk68JNi{#1P(l`JQ|?KIxyLix(Ax^2UAtKFe`P6u0_- zC%ECAKOeH*5Z*8gFR~wv0z%Yn%;YnH13-FViku)N)2$J)zT&XhLtN- z%rksven<}(UBY7SEo^zI(I2k!R19~V4s-eaUmO@67z7Syd||}}32$#%WVB#dX0-!x^Zh?8%Env02laSz_AbFH+;NJ7$-$2|NMa$O0X{nazD*& z1S@V_iu08~%V*PBram&;_e5XgSv8E+ZWCF)?i>2iviy06bm{OlUDy`ZYLp@i(Tiv+ zr?LTUNcEj7=pfUDdX+ct&P0Ms-U0x@g znVczy)YZ^&Dw#|U0;JN{!}i@)(B?Zm=lun=s6Bb|xFi{08%+6WlWkO?o`yUeU?mgd zb&5Z}x#HmPzz48x{pX?(Kyhb9UBm(K0+Bh-MSvhWl~si}=(1}PP!J4bheFuIXO zV#J7d#_#_g2VdX|+w!G8^4%xhcMngsb$yrn>|QEm z3iBio!Z9$lr`~_{;;BoapV2Jwt#I`I)O#qZF6?tG2a7BPOo@zHAXZ6sh)=4V-S^5& zfQ+(EEaKR2vIm7ci*WvjeI+65flUQFl0Thegbh4Nuif(LQhPsjAnFb$2#G7dn~LHL zgW4M}T+Yz;VzoO4%6we{n(S!3&C*;215P1ZjQp?oixX|ACJ&09xFF`MZRr(z3_1yB z8O4Vc2j>q&*%bGMHETO|11ox!7q4%5<_?4&1@*ZWJrlz54%8Go0gyH#Q)}f+mCMn!oyH=_fEL=cL za@-HP`#g#CgAY63Kh`UGU*K@$Tp|y|Iq%jP{4T}axf{UC`aS}XYJY1g7rd1;-}P~$ zvd}4y@EmeF#R6}cP!)`EUA&NLGJF+qLAD_8A^qJ%XdOvQHz#mzfxP}R7cznDk^LKG zz1BDUaOe+K&=tmxwVdTZfOf88_Hu1q?UZIhQI!EM4Zp7hH!7IaDoDH>=P|ZqkQKgrC@L|uqT2H(P zN+KTWmAza80w|Bfaxf2xZrCaE*PJ%GlTL1{Yl;Us@ESn@C}r|uAL#J0sh#cDoj;~y zpRajG_=_=zz(QUlZWN?LZ%u8n9ccgd2~TsF{X0y&l|;?{5@D>F{4wdE^GPB5OhA;5 z;_~#-+f+G-z}Pn$q^$G-I)F-JAwX6hBTvwDZAPD!o&YhKaIl(h?Q3ZQSD-M(_potm z7WJN6=Z8;1!nOK|)e^tvS)*6I*L6Nd8$A1}2a2qYv-n_d8R1xQDl(7n_*4E+f?wtM zLqOKP^A>xLnSocPiwb&}mQde1bbrAtPJ*72>#89KZIP**)M%7oo8!HJFdb<8L1TeN z*^l*GXTnI&IVuuWKrY)um>PmneErw3Y~gjUn`DuG`BvJyj|zamFI9zeECfq7m{ znk31?KxGR5u|7gduFGPZX6Nvy>>UEp)L?fjv8THkWF3+ORF{Hv4Z_2jDUQCAlzH%i z)uOoy)rq@}-RcjPZIWeD?>xanU&~8D?sBxRZ_dAbcPRw!zOUcxqISvt5ZY52WPRL8 z5qQ%DQzhV5-e3q16cro5WL6CmBp6cS&!wwXcpU&7v}e^cJ%)I=Im}LOlu7%$E_Cj6 z`?rRk^7LI7Pn~jAo7BE62$X$fqKb}H77zA&Yo+ku%Dy#Lk#>HEa>R;tLot;hRGvMa zY@k^~ynEgKnSK%a5iRl#4;#makhiSwgdTJbRb1mYxn-uksXx#d@<;%gKlKs71pOk`L0h0N$hj{Oq`TtRuCNDr zY9^R})XT8;jL+;yW$Qp_pY{|91+c~&(%%-%9AscB9rS`2K0E=?udAlZU&S4mSGi|n zVY0k;fE-u9WvN&jw;YThy%_r?wI#-wd&$u_7z+_)A4`DC(wi`*0w^&8BupDL9iLs` z=tn=;5DG?7e=tg&nJq0{aF(Yh**ZZBG$gV%^!x;rf9B6Dk8W`nEGiWfH5Fhpxm+GmFuQ(fLe%d|iU!V1Bdf zZhmU!pt$J%3+=3@NyimG*WtK4oU~7h9uQ7ct+mC+E+j4;DF4Gp#s564Jkxq3o?s&9 zF(T@|$b3#_L_zP>;DnA+b?6X{dDjrwRW-_8of~SHIDeah%AJ+>GU}nPS3T6R&$}m z(B7hfB{fmo-CAWr_|ulYkW1_2#$$6?%-fek?<8WQVZEbQ{3*@<$jDE@l*k9619%kv zJ5xZ-Nm7tw1lsFu55sW}gG;c4s#(MkhTyXS!gn%dZK*qk))n z7q+d&>g`*t>ffEZ;wV`yb5>4@UXq=!AH1-od1utQ_En#+>)Lp`vDYe>8TKviMyVeCiF`I|`>lX7PnD3se*}*x>Qu^EO+~S3mJI ze7!DvzNiL|x!UH)R#iB#kp|`>ncSojFU!-gH%0gh&9g)A?r$TzTE%?>UmUsT6<`j0 zp%On&c%P*DNXW6?+@yx2mbT5+D6G-YuaZZe#4`uI7{83!sN|H?QIaTOkJ#VdP*dAB zHk^@p@)Z3>q)g@DLRWCr^C7;Cz@FSa`Y7;8@w#`uRt?hpAU|G}noItrNOsl^nOWkP zNt5%zE?1cF0|(O&;#c}PxTxHC1&P8#3{NR!51Y>2=2hV1+4t)k&&bm>$bN$)NJKaY z*^B6HJS|Q~{&M>Q1&~Ta@xapL@wiMoHuLd`KRYHs-){q*4d1!m7kKf)UpU6{qZK1P zy}0F!A^dSuXtCo%=9ivbYIO&239Q$eLe-sOu)~gEwTS5ivS@|Mq)v`TQM+I~Q#$d! z$B((td1n$Ff%4ea`ThOk0*wNMTS7fyAQP`5dUoF^7h!CpOL0+D)-ALf>X63ki4@C9UyEcnsq{ zoWSDeneq>u>Go`YSsMSW=&WE@@3|Bn-&8vO9jDk7RI$z1#dVs_rtmkc{pZOIG9z*I z6Orf2znfH{L>ZeO(Z^HNaCQI)^ub5NhXj#?)x^AA~Go>S8L6Fm~K zEyul;*W8%tjHJN#LDK4s)S;Ih!Yb1_d(SCeM9bfClQzGf-S;ezhexfJ&G%oaSZ{r; zdNcpJ>Z)ilX~Qo0U2Xa0FAG~Wy59Wsw&qowCZ5!)dq1H&)VU?Cj*J3b+CCWD?(7*# zlMX$MU;pRHTGZpZV85!t*xHR6mG?xmI7DbnSUxmK2!nlJaApmWHhpMI1H)ciUs2qI zfnhcq)Xju1eu077?7}owakiOfA#Y$mcOuN-eqH!c=!ch($1HyXwd!}E!nByXe|J19 zr2Z9b*6>TU^d1H)#D;Eu>Kjvv%2qtXr~R7apTl+%z#HiBk%5j%0ZX>k-BU^> ztrM8I4qB0jgz*v-3L@5iHha6cr%Os1*2c4eK-c4x;tqFQ{mxULVCP&FWJ(<+pQ-l` zsh1P(-nE!(%g@X}HC%`;a{c4XBd_0lwWP@PC+o1yfDnJ?aAa3s*LySn@gsglx%^7b zQYZRMKa$>Mf2^?X#wBE5QnL${C~oS$4E#u*LGXz4*&r#_j!xlV&>qudsW>vc!Rm+wo1|c}cs&*98U1e>YvD#7Jz+LOqJ~kMdaygNk6z`dYQwxW>PL zfA%8iO#~SGDEY{{)fIr%Y{*PB)81ijAUu2NSR4MmSnYM4rR9kY=!T{u zLQ^SNB~k>X-8!K>9jEifAU1l0_?K~q*q(7_q3L1F*v%n^z*O!@0cGfHyVtq&dW!7=zcDdwHsdV{Zem5GJp;Y&_Txx1hk@&}`lT5Oi zAoDoyplzXh*Qh$7EDZqFVw+`$=)#sL3VrK6QmMhi?3~ks9>v&d&D60s9)lrN4th1b`(a^-Ce0_!ShF3k zF^V-7c{gh+YGP^B)6xEX<7KE`rc}cLDq;=JGfVW=D7t0h(^vE7G-bo`>2&V5=l$q) zhH-Zz{b{#m-_7so9#-N)Vi|7@K*ovWnJgp@u(Rm1dbH?o3d6?=*3UH`F|Ew#CRFb- zl+D;zS!sXG&S2-k*_sifCfLz5C)Ka9O*bH%aYw)C#y;B=R#C4(2&A^*1D z*=5;@ZTNQ^K;eIKaj+g$G^@wk;eii8dySuR@|+W^6C98%X2O{OPStwX)|B_IuARZj zy&$DB-+M&R?y0x#I4%`Cff$NkCzMJLw8?wHF%e#l`*NlIwN*>0Iq zVY&3s0eo!V%+>UW9LKXmp!jFQdciQBq;%`i$1`pU3q#~B6?VN0Hl#P9@+nyPw`&LM_PTxlMHiBgfN`$9cWtzgJ6CYs5JY^+%Z=6(`!Q8T>1p?ju5q1q$HjF)>ep<>LAP~* zFEDV3QX}Pdle$%pA`5Mz%3$}S@zT-so1PQL2tsz0fiiwl9S%=B!P0oEdRKBU?+8A_ z+D!W5=1-0XySnew_9|&4^^Q=WfF zQRrxhrL;pSDYJVF;iKYXN~F4a9-P0rTfmGZjl~b8$3Lo7Z(W_+Sb5iUdgq&Rx3=Jl zpl6qEZxGIi>P+Rs8$zrY3bnV7-uu~;fJJoaJ3c)r5nr1RO&O)+J4Wiau^xUzFJE8K zNvoQ#TeMwnJ>&CaYIwktM#tbbuQy@CW`1zf(0B{DzB6|AAy=$$8M?-@vtk0$&#r01 zwYc#uzH$Y28~dnieSLTRxQn}H4=|}`-hZZ5^g~`7#j1B;(mm>z{I-N-S?V{FIFzen zc_s4^E_G8yA+E8_dP>p5(3Cui+T#z-)y8F9nULiLMCn}$te3n0Z?-#QMZMRXOrLws z@fXT_fU)GJ(1;lrxcy`MfIi`gP(U5Ua3|>WdwADjWv1)VlC-iKH+ywJ5VbFB%R8ST zA9_T7qzU*FvfltGrYMrp2VI2*2Bz?J&;T6=SSGh1k=TLq`H3KRe}8kpCVejog7?v4 z6xWBcWrwE4*P*=TM_l@(g7wioRdWfqQ0K)`s3CtFiq|?=tCLmIWMA;gVbZkqYxuF{ zmt1uoTmb!eVV?dzyFgB~!LTqt)tD4_lU_uo+t#WlVJm;?(Yd(}U7`_#j8wGH@u`=( zDa{O<8$<7qFo#nQ{h@DP>H3oAMPG@5_!)20ua_$L9-3Ew8!x7EU9?}>+0#FA{{d?0 zGT`O;$?yh~Hy;i&1btSF)0IoHj}&#QScPw_uT@U-;6}XcupTQu$PY9i$mOk3$9(W{ za%U7zqBW>*MsG4$he3c?79-mP)Z+C}XGYy;q}36=T&DzBq>u+xAfWRT{Ck-DsWrTw zn6o#)oGF>YNFBbW{s9X*hZXXaPh3(0%EwWLEzB0q|hE4_CH1u$glZm z#W()xUpQO_1I>TWDAN!Xedwr@y(*AdawH+wA*7AesStSYXwT5sjA|lGu{H#|On0+ifs>tgId7)baSM-!!3p z(yDgHd|KZpnsh_Z2&nmWhIA|jGXt~U*V6;FO7w8ir}`49GoM4}U*}aLQS|*F9C_80 zVZi#yqa^zg7QrSf>-5{umKnB~?MLpLC?YZygv0_;Z-8_3D^J%wT(~(RJw`SC8$KE4h4B@jDhhTsok4K?;Bu~-O-b! zJAuBEWlu9PK0cGtG`0QgfCCm#hqaP#F<2NgAx~h${)cM03)e4lDr5A`*+nlNN=3l; zKp1T8Q%bq!`s7uYG04$tY7w{0-)dR>v$f$-DG{)^=Q zLC#OXR%jm(6BCh-{^VS}2pL-HW1+fgYdCcrI1&<>N4ks$*h#sK>xcz~8-1ehoG5IX zNNd^d`VQ~*HSfPOhtQg!{a$J?+_@pRReZk+*{WxzS0?+-xA{Amvn8p}$S#SzB?#VB z)sbbQcTOeL&;J`bgD9Qa0W~L)wazKSoNM2v`9Ws7{8B``6{GU|{) zz@C-)U8zMjt57gHp7b%yvpa&XDho>5q(nv@T#G|WdE zBVEY{9O!AVN8UqaF+ z9M$M70&PB)8pgrLA{4r3RuwT@D1xkFeyyz`vV^Kqn6atA{#I_<`O+5rV$Qu&Um@hnRUx`WS6j0cUPV_)8= z*VcG<<#58VF zWs&+Vk$*HY7Fc$wCN-NxAJ1!no~;_T;!&Vl0^Nat00QV+r`{}H1iZLRMa{Y7Ddl@s z`$?XnCMq^-bup9C?<{bYHx(8puvymy=a^NA41Yk!4a-u{6=tSgdk1xvBf6?P#~bHR z*9La0VX@L0wB1GHgdGKznYsS%0TLNkx#qow%}DE%DB#v+2xZV_603~sAz#;vEY+uI z@D3b1?KQ=%jN4Gp#r0=xzS|JQv_+7N&aBwWX#+)Mqd^I=dlv{_xotJ69dCENRyR9?Hu`H+JY^BzuU z^(wXm4}EKgD}8$1yq}qt_jCO|M3ef3~Oq%X-u%1Em~ylaJ&FS_zuw3t>kvSRfK1 z^*4(a`{n6|_L)oNuVlV{`7@6qX|gNJEJ)q=pH(^1iHPNR2`PATMOvD;FZtlN!P@}n z!~DGB0C7~9kn`7%Fg`P&BBkBk@HWRVBxe<68uM%VxC=ceW`TQH;^Q7+`SvJVe!o7d z2e`dNqp^_E2#-6(Vi?cCm3E(prkzE|X0lUQf(l4zUAMu_YqnHu8{KsoS9OpVv3aAc z{`*r6ILr({IjDR6 zBbt07tQue5j5cY&vs~vYbdnWHEW35f+{a2;`{(zjw!l28| zjEjP=YcrLoT(?v^4FlVMjzYqFc0hfRCazHIF7?h(y&ASKyUSA)VMhF@6BGqU?Z|CP zbQ&y%w1?>MPf6%*bVE<&DvKIa%dXSCpJY;cFnZA}u}j5Y-dv@UAr{finl8TW#Zz|u z4;!Aux?C=Pp(TU&uNwOyO&|VHtUK#wORr|;OG)q$R*@P!fs9-I6eWjpgPoT_F9IMm z*q(<>zU`;7b$F;YQG849>ZtXMn%|dY-YRCp4%}UV9IlUmc7mMyr^*IH96=S>B&~ab zLxkc%b{7z9!#lma`Ta@HDxpR-#{0Wt{qwz(_W25Z`V_U{v4(l>rH5Ox2F}l&(o@1dz(fpZ~U*LY>{KQMXe zmZmidE#Js?c7mCFE8s1MG>lQ4m-zxjeEbviW!3nZ{*1g7R<7PsIf1Jr=0BLzcV8;Fv=Y;;4PAwDU!DHifvXTRqD8k zX(|wF522p+b&3r&sGJjibuR3|QCY>4Xo18P3=G%#y}GOk57LH{@ndu8&|X2{0Y8ZyXGj+H%5WpBQQKg)KxcbzT!)}T&13@ zwBKVB?tMQ!v-4fKSaS5qUq`<3J7lcb>@BD1{>vrE#UBUSZ*EOic5UWlc3pUC(R}=# zJVZT>UY;!r#{`%xHm(s5Rvg9;A{kPBHps#;)9~}Llhl`yi@0Br-&YXvZvgE&m-`ek zc8_qht+;GTUmtD$gbL|LLwtNQs9kzL6;S3oRlPe5ai;0@Ty68LewV#CUEYgSA9uX) z{x5cNim)%28?)ZL{3l07!YF3|R4Oa;XxP&O@!H!Bn5&|0t;)nV$+A~fRfJodX^d2s zptMq`OklE|MHOW%Q4-g$ev|La*Gn=))o&}s<4~Fo6oYG+e)ga*=(@Zew0fI#_Xm+Z6GB&G#=qD=aYL^-|_ z^eQThy|?L-Zm2S?OYE_}-{%#tzj&B}`oG6Dip9BoWSs5teD_~3iWEpa^q((N>y4%< zS9vE7m$C*(gtQB2X9hXAqzKA)r0Bzf>@<#(YqMyi-$%Ks>5)M%?*INo{R zNs-+9zX$2368CJ%-$`rMU!-^swDkG$0#MKFtyOSV5hXQD{B@%jcs z8L6NB^ACTLp?S5y7f_pko`Vu3c3`R=<4=W}0A{;Zxp~aBBD9vzS8|g2GY|7*Ig`xB za4SXJDX)>Moe0oAU-y}-gWde#hD}2`?o)?ay#!pl<`ZT1L3^5u6IG5Ml-nK@e7RAo zNr;x?8^E>;lmG#}%#w?ghvI2s&BT&EWNnuoshp)R4Df25xc0nUuoFaFdgQ?quc!}J zD7ELuw~f+=LWTZ`{t5k2nV@Yk|1nU0Cj@ge`Ww%kszRRf`H7Is&{a6Q(yG@OR#~5+ z(}Cn0e`(qF&wlsq50;r#zBDDIXpg>Qr|y;41zCWq(L$92#zV-~0#B#L9b8H9*sYV- z4lOO8AIE1EA)(d_+|L?G6cXf?TLPeqf{>%9wC6%#sFh4>fY~#_S8jx&F{>jvlxh5+(<-O-ZkziR`ep7I%Zx%BKg+i0B|1l)qD zm_mdr(i|6?6-(XHmi3 zWR-|B+Au-{tYI_*`66|XBRLnYf~}msd;>76QfBLrN=5Tw=4{6e`C{x`bXuQ6e}0h^ zkur~G7Z!K?K77H;L1z)Qr=Y8ZmmFa_;HvKtbkYlq3dZVEeUtlZfG9o2C~k5%pMB zkdtJMpRSmlu`S3+79Af?@bp=xiiN|6C!l%(Yrq5Zfkbe=Xk>HemsR#4g5>wE`L8ON z`!g~r#8K{dT&;hK6~ET(ZLq8AL7!zVl(2SUqpwPBp$~Y)c2TNEsr=7h6_x0??Skol zrJMncgUNnUZxVMa8g@TpIjas)?AD=JNESIjt1?T=w!TwL8S&2tbNSJ8K6nP~q3-g8 zHH-)hjd?Uvikpc*iq=BEiR@Qa7?rS%nAD@9Rss*qT>?)@fxHV&o9OcVu87&^=>aOCE9|IQWP8BMUeUOI@|~coWMm`;&I zM;{z(vhmqH5Rw)(t0^v3H~%R1_>VjDpCQ^CO+}L5xlLjEzZELe*agO+yOP*V*E(EH zb@Z~XTrslq5uqxmHAWRQWQufvV=!jMh;M)$>FTEhcYav=n5>zbtWpKPVo2DdNxVQ_ zJZ8d9MfaI6@HvfnRcB*J$FeO8Po84Q zZ=(N;N0~N4r0CB_RBJ-(zs4yDMHnvW-e+TBgfoZ&Jk_dP?0kygZi6~S})2Y zdv`O**ET+cQpy%h^^0#Dbn6^+aFd^%V__KhO65RClgeSZm3vt9-=+>Y=J8>zD#&G7 z=qszg^9<8iGDhWc`SnY;$A5(lzjHS>#z=Z~#1=JNh=SLL6oAhCW&n>5SeMR197#_& zVo^JW)-n1--?S4;G5O*8i&t!Lm3~??iu1~h$MGW;J*i-9tB*qEE;b-;My?@^{`WF8 zkkN=w+T{8EVd{|5*cmhy7`|}$R|eJkb1_5u#qy)q@8GL*wus7zf&U%JpT0;jM zY+0f$U?=};)d0U)7U+&l(|Y3 zwddn(W4U6%L;j&4xYfe3D?gb;TJdV*I934YA|5*(F;Nye^R!4HR)fy&36A(fetP~_ za%t4&vxapv^w0pG)iLYIWT)|GPt%FcB>bZidfkBYm={a25)gmEScxeinVd*6zsk`;?wu=A>F zvK*ywevtW?x%qORUICS={CJ`AGb}p;V*_kMY=b&ctf6)O&`WMklP482lm}z>^5l&j zj>A72X<*-T$mceS%L6B@rE7@FeL$3z@p}{Y*{?tRo(nhfgkI6r4&0cYCL|myAMY>= zHC;UPq2Blp!MgwLvFE$3O7(ZREg|t2ctKKsPUBk^zqO}*P_&e0Xn+44QI~UKz2C$K ztWtQ~eOP5ifoCb)mwZ;D5u7NurK1DdFGNdq>Wu2O3d8Pn1*r8`zyQvrd8N0r3U&T< z+>2Uip?HO+qY7J;f@e`{9Mc2}Z#Dvy$GB`G5OW~L_nySr8l>cvJVCfd35h!4ZTjRepahfB(EDPKM*S;)&B3RhYCwk8}rLn&u^>6ekKm z*7}gWimo0tkbulKf0a1H#bumC6)A6awOYn{BCts{7TQCRVzf{310Wg1=UcO#;{9`> zYQF*zJ)fv$0_Tu-5l^mi*n-uKO_qHA!ga*&sB6I4nZa^B>TUnFtGh1(QX6BBm&!(X zGX{qsM%(PY9SMqQOp`mfT?Z3gS(n6WEa3T)d72g45D4r6NI5gA|$3bAcfMn-1p`JKxrrjRQ;y1lN@{C6h9D3pXo7I3E{Cv^6mBQ|h z;y(OAaDIpK@9wnX?8e0Nfb0CzEmh=$*A&ohkd@{-$M~%)rYlO!da#HxaX>mdtP%RaU#SU5R!zx>46xl<$)QH zOPUh+?(r38R}GIeTMXE83h#%0!xQ%gIE4*bmb8bgbX0yeFF&9C?ELflf;eoT`g7|L5Ta_-0P*HrkWLuBJsCx5+{vzjI7RQ=MV*=rGMevrg(TUFLP zB;dr_Q&|2dOp!5ac^9`w>-|sqj64!hR+7sb>dDi?(oh)hQ5VRKW;db!%_CsARYGpC zDV>is#!k|RW$1YaJJCL=^+&}Vu{AGr;&dRK7}(xGX&bBXVKyT8d4@uqF0E(B*pdUG z*gc*hllOL?D`IWus4CRxU4O;f>6m8D+f)-0c<8Ls7Fu7-&^WYH@ycIsihc6y{S@Xk zV4bYvl3u^iWK6nT-b0tP@*UOK6$;bEs?*E}HsWBWmCXahAqH9s<&?DBU^}R08>u7@ z804S)cI$n1@0B4s()EN{zek!0Hw=sYc%2blfdZ0e4p@=nJ7rX1HcZm)9ZJ*NC*d_X6clL<@ zaWl+}Q(Oomff+DD`^f+>LvlQx3@Q>j4SVo>W(*vumB_Tgoc$KSj@RJh5`xA;x=r zdYK?bVHQiK55ma!w)={m1S}mu6rzY06xbSToZ_8R!6qM;8M%+qRqt}3NfEjvDPimj zzux<#r2cxYEf;A-9BtjUG(zL!pXs_n<4HNP%_4IwaF&c9u?dXH^mgPd+UG`{`069f zC4hk$GPHi>AM^8ZFIGL^hYnz1cpc$D__+>W((?YEx)po@SsT`EYblz0^~aJ3nKXYq zlcByXCCd5dza0k6A-qf}u<&-9TMAEQ(l*J_?+gE7uo&&ul z==r$9tX~9VK4ct%^Nwv%=csj*^Mu?YZ1yI17KS zeJFb2kObu^zYmUzeyxdO@U({XOzW8a#Q2qcR*1g>jm5yzUCie_Rv>U&fI}gq7m`mQ z>vTGcyLmeQ1a7od3o|G~5)}KGUSBvr6y9msp-ZQ@{+7vm1r#SZin{JzZ?oi)ZF6h4 z7eZwxcL|OEJ!WHEjleD@k1qK*sJtuNapd*dHI1vU-cvTkvD=SJ^)i+#wM49=29S?pVDFCvpd~_xdI=__!CK&}* zSW^bB@Jc6=i zPFX^?Wb^z^rII97C5FLf&v|-E5;K1;V>GIzRm(r{#06>$FIhw`Vm-uQ4^!_oGwH+S zH$@r4<5yKK<%}-d>Uvs19~|Q>T+r1$gUAVdr>#AgrJ5)w}sm?~NoG6R#|D{Xg{2 zr3zl|-kB`ou5@cB{N=@oCx)(=LL9{;&^7iM8u|b~#VVoyQ=<~@dC0YBr@svpg_tIa zA}rKjAQ_%A%%mIQuuhckOID?4OWQWxYItiVe&bY}qH{u?Bz5&`X4bdl$A0%YWAi&o zMN0e=n353f+8MvMa%#J!jv^%~vpAKp2nQ=)pFK5=yuoRo50H-@CTL2p+H;UKedh0C zQ`kh}Ng#P0lqn<)k$#}cV+DkD`?;|u)#5qinUna<6!TEaB}o1#87a410)&<6JD51O4G#Y6gMWK5 zwVC}ttfChSZ5^CAvAUR_q!;PED~g&u1;vYQ`XM3iRu;+#Ts`irTW|(z?!?!Tq00di8J3%xssZccS^F-*0C~ zfPL?w>T`lAM9!?crN>b!8Lh-Xc`va6bB7>Q>Cd!Le0Pt?9*;0k@UeMp@AWx8F1GW<6@(yA~OIWRV-~0VdL0CmaBsD+7ES ze6w*PnZ5M1XAz;a>ldLkUgo$Ld%rfHab4OAp%+IgVl~BaE6aN(1(<^144KO>ve+6I zER&{#TLP@J0F35qey6b=&zvx}FSMpBTTV};)<(JiwdFuMB#lMHT~aINe+}|O7W?hf zi3qx8=p9xSz7H|_n`k|yo7ZCk^g;gofNGjENAR#P!|N)xP;1}<%|7>>a;T~=8g|~M zR^Yp5PR8=If!kKiR97UkC`kK=}O1Bhy%8F>+sPElM!_j zup!ql%#yN-Tf`+;CAmYd&@uy3v@@oOe}<$r>e~%#qT!qu-I4X2(4Xc;^;0vy{OulTb>CX3L1~LsAk8HJe5BLaZc&Gaj$McsXRyiYhn< zrWJ_3HG+>|7*>80yV#p@?#*hVq_Rw748wUB37(<|{LCJpnrl|r9`^Aw56|`Ip5*Fq zb>HjAJ45?0+K^h*b|hx z7>5QAErb@#LM5B}?kMHj(|LPeKt88!dZoo1a^D_@^L@wrgw3TMX+akPx;jUg5|6m6 zwHl1c_zz%Ep9f(J?``KxY$eS-_bw6dA2dj)*Bf~!@w4)W(7s$X(}#!s>%=F?bIl#Z z2o;Gtn^@vG#_;?#8d8P<9Lu1(Ky~AyW)t!2QA@xUWZ3j_prV_)Op6n{9lO!6C8wMr6mEu{7sy;+^s@ zJ&24Hl#OjD`#LW*FEmOgZl+M}@@0Ep&1;uNPh+>jP4@A#^@guuD&XVev5{S|&|TlY z^+B^S@^ARnJuA)2utyH{izxm9271`MTTMmZ%Zmz6y0XRXTw2DreB69JZ7L>5KH^tu zPqYz={lJLJCvVnu$b=}tzMkOn*zXYayIfUIzUNZs`GjR8ZboPJ)FxA$jM@|&2nPJ( ziQvtc*DF`o_szPs)3X{qdSyuTZyE<-V>}vAMKhI@`-iW%hN5H`L75<3U$?&$w{CX0 zD_&5Ems%8hW8-xAi(HDM=*k-R2T<3=u10#qV%xYA#y>f=Qk@9x$Js29uyPwmn<>fu zL2BCq-8(5&)*Ji8`pVPIDZ;zaBuUbHtY#R zvj%oIme`5evZd%NXfQ&&-F5M8)?`dn>1aCtpb!7j+Qi#A+JO$SM~(f~(w53jwJp6% zaK|6f!DY$J47&Rfzxrj$S8$m3h44u}k=B+ef_;CL8RL=co>XrH?*Q+lo*3a@fBZ1G z0(e2Y{Y;9}O8h;32N0u1$g6Q_di?!G=ZAgqUe3-XRh<7GO#kl(!)Gt~p9g}X3RvPn zD&|P!wsd2+RBX0Yc8_Wktxed+@Et&MihUhJo&GAP#864-d-g;ujBNd69ye82d5NbK zenlel5Xk6 zUb(&dsSi-912sJ6&*@9(vnY7g)5wT+vnYj_Mej8dYvgJS^%$yWX|HgKsF_9E7ZG$* z;GsF6csa0tPI0IsQc3Yy>hjnsz!FuDDPP0Gq|M%V`NrGdbFJNK45aKFm_$3%Hy3hD zM@z}z;CQ8Leaa|yI~<`t*V6Z^ufA3`@gFz?Wyd=9eDl}q|2H=!8hgS0t=BP}`C#(r znvTddc$jy_Vmc!q$#9N$GUL{30I&7=|G-RHIK(0~CG7nog2k7z;VHEh3=A~kXYJ3_ z92w~;RgU3mkeF-E3;5M^J)+=HYgU!HkX>sBfeiq4H!+skxCLHakl8p*L-Kq1>Cx0l zt0=~n>GZ22?j`DAtwLm+rtDpueXwS(xZ(M%x_A%+TW7xmH7DeuY{us^G?$S&stcPj zZz#x;+tB@q(#0^|IFQI{~1R! z;0FgCg;BIJlcH3^*h`i^`^rHv37h~R`fX_f8BjHVpS$m@00;iG6ei_9GCdxo%f8>X zu=U-y?UpQS1|a+G@o>LLFs7Z(^q?BiYb(Lz4TbUWTb!Te3E@qOl3^@wIn)}Ay>3^h zBz$J)J$a(%g`H;uZp6~(Nnksp4-YcgLAdA>0T0AH+dJ4EFot*%iel*AxI-mpI0|^p zSvcR~+^&gY*+z%$_r(UIRmH+M(mwN8n@lW$TrWAFURrZP>svhJd!iMh6Sb<(-zEJW zYBPzkj0#-lBwbYg z1c!=6A>YFU`T4Pt5HbV2<&xz>SE64I?9b{E+Jz0*7kL)IZZFVN5>@zUL6h_ zPqVKVMQV?k9$klM1MPv;my1!$fzXRt%M<)m%mZ#PCdhdZ5mMm%;Otl2ZTkLg@Aoh| z>dFk_e;p7w13RcKD$=Ru-&I1$cmS&t<&ez0W`kiHP$C{Z{Gt(N*m7M z>SYkL{dsNgDV;yb=|&|D??-L51j>?UB|6(0OLO>mStc6dqfxsxdhnB*Jd3wESw}LuV4RLDMPcEj_DuL+YdXqn)BKu%f!NPPbc)ltKO?gILL=q zFEC==Klwpu&9Pn9F2*!uMtKA&!rIt0P4W?q?FozlXIgbROc1bjkP)H8FES~hs&3f5 zTe3A$9j;Vj>`N%1@`ZM_SR0xnx{vDGpfq0GS!*4nqV8WZOJ)|TjOc>Nvphzj%KClE zhyKnSDN^Vhsp+h9F+))gkErP%D78fF56>>|(EgHIsuM_}bs+x^Bb*we5r`|pBF&X3 z=gGZ|gt`aiJBIjQR2QB=9q=hX@gwNoy1%jsNxSjULzJ7I=~N3@mDg(&NaOHSFH!Qk zZ?!u$bQ99;9}POv>zH6DjoIzY+A6JIm$s`sdGjw`dXoK~rvBReI``l4i6N@55tXt$ z$A&u$DU3p=yiln=6}qpfsDn1o`p+y`t7;@EtQ`l#dGUY56wpgmY`J93h%^a64@xI% zv0)QCNI}#{rt1OXL*8`FwEBkk(Jxnqn=d!v;x%}3o$T~suG(@6BH--!w*$&4Q*NK{ zZ~6J*<1e^s3txgWxDT5j+3q$>J=}<{^`Iu7Zxa9L%9JvJsSN1ozq7>MhxlcD0?HTU zZtm^s*||+$o_cFii-a%-Gji#>et7%(1*&e?nq=1I6Uu=H?O()1^-qVswR}hjRR7Ey z$}rSWA2Rn-1@peXd5?Wx(`8kiJCa@+{_$rjuk`~W2W$8vvwZb>$ z<4DZ)^W4cxE1&77@6}Y{+g0^0+uKw-gzd6Eq8ilLve~P-5ADf#^F-Gv<)uLJRsK0EsgPF=Bs@2QmM{4xZw*Sh*`KCznm{>hT`w9RRq@!q>?1O^tx zXqB z-!m*;X0geg7p{g(i=6IW$5ABd;GKp+;%{0srWN1z)z@gB)Mu#<+_~B|8Mv*T^m~uu z&s(zmjiM_nyqW{i}E@3@lq22~z?s-saj^L(hmNu_?QEnQxzyoC6v}Fl= zZk^(LZAwluruiV7ab}|=ji!owY2sy1vj56{e}#>l_#8vu%@^-@?;p|CMN7x$Uy2F~ zvD>&LY(3}w;cv?A3D`|n2OVdRQB3RK1W7D?r8Q$Gu1{1Q_+Z~qb3lZE|0?cb?X%z8 zZArJu-o~jl${ih9Z0%mcDnvk^O5TD^S?6_KNMOh|IWh zIrmDAJPLTx$ImJolKAS0`a7C$M9=wXAIP(F==DAFc$^Sa;OZ68sDQub4o9EyQk_b8 z#TTOWc4^a?DSI?;0h5Uf^8Qra=BNrmDE?J$jiNFC^WWBNG6AJ6fb@TJX(6LOJ=Avy zPI8cN_Yfh#ns~|!8v!f!7jR1T=3^0g*Jv;K9pkoJw2NCfD%GXDayr>h z!W%NGMC+#1cg^KmPC2bN_&=_$GAPRZZA&*S9ZGknij<^)bV_$O2uOE#cL+##Bi-HI z-JMIryNaH3{_o7r&dz>#o?qN~-R0QdF*d;&pLT=8a6ebpJ>0!{uQ}RnpaeHoTYNt$ zni0xC71~L}77Y~{KeuG!jXkUJ=Gnaab`oXr%_E&2{!wC>lO@l{HkMAZ@~p}IRrNfz z_42Z}zT!Q93U9@b2Vg8*xb{1W#Vhorfo-iZS!LKlr|&%*X}45(zV`)mu>)mUXrzAV zdi*NcS~kpDdvXraMnvcGog~{*>xEH6#nx2)Rzv_b4{A+h2mSioGh9(9<4(_s1n`yI zqOgT5)-vu`;2HQK*l9hGLbYbIz^K}AJovA#^U9OiEn9*&SU&sDKLM>}kn9;PPrRy) zdsO%E6yYa6A49mFD$=vZdBp(3njdBm(JcjUqe#*|;kP5c6|WO$BTJ)%$4Fr_JY{0X zI&K%_LSSCqN#wb|D{4B-rR08N=c5ztn$|S5-I7v)Fp*%UitL5Bki^#R8$0h7I@&s_ zIr6FRhnC}Mv-R*0a2HmHwr>%xz&UZ~#4&nEqdXlS_uGQ0^h9~KA}7Y;e0fm;%+8yA z^Q$d3>VearJZW0ul>I#2WpNq1Z4M`Ly)j(IOne4q$BGCH-t@}wdw^hQNV=?f)F^ug z$dV@RI_qvO$`2i`HmYvk>(GyvwWxPnhL^#d%H@`-GWHY|KZw8oU;?FbJBiQ5%VcLR zHEIcI_4`A|>2(6nxskN#@VAbtj*sl0N9Z*AQrqn>L}@7gq_1|MtzL(F{d0(H#AW;I zbxoI?s*6pdC7qDx(&9OWI{e9*y4dh6Jo$Q>r$|yQuPx}kRVB}Fvk4#am{#)mZ?YpW z@?ttV6UBZk@|lE?6DXDV=)bLfXI{yeW+!zynzx_UDqh>j>edmLX#bi{Z=TxW295U8 zcfhUJ$2}IF4%!_0erTA&P$O;%LJgxB(J6c>f*WEnxpoyC-FQgLJG05_H7qy<2Z%?3H2OXge|IS z-GYR4)aL1{GFy&d2usR32K2V#e!X}2DK5;dPb)%rlE-G(8CLZ$89}Kib|x>PvFSkH zUIVm|69Jg`#A zq(c@_Qhq5Okup&NpX$1r8=& zV1-5sCb0wCMZD#}b>EdpZrMZeJHjr+u*UabjBW-w`v>Q)AE^1`%NmhngsPfg^r`!c zKA~Isv!81n4Ak(rW!nwck2`TPRy;j1;1pFUmy|*vhpjc@4LuW5{p>C54E<<@*rKDZ z1rgEDAP)B?&7o}U^nEmgzPZK<`29NLaPY^=?bxy40L8y?e{1px7pPFv)R!3;zYqBh zoV4D}nk?t(7Vjt%vAnxKtJ2s)Nh?G_ZqC} zp5lfM+;i!7(;!fDjKrkdz;|Je0Pkj@=|(-ZWv0SJJ>9nk`wIy1XnN*^k~ev(IQ6o5 zH^AWiYop)CcG{>-9fffzoM1D0IdKuvSkqE1j?M=SBp4~IgG1wzp}>VBozxQ1@wo(A zH{sjWWH^8wErcv%OZPZ&Jy@tcJJ$a z->kw!B4CNVVLjxA!S8N`KfXkWG*8%Hp^2#|+M-nBa}8r@Enzq;bVvkDbcC623Ee?f z&C~enLoezn;{2<+sK9P26RbO&k9xz7fch?`C*dD9!Np@(wG+h>JQStqKIAVlUo8LB z<(az_=Nyl^HOfwkKwJOtZR zlI^ zxn=)50Gs7P3N(zj#fWK33>W22VyUxDuT)5^4QH4oN{dXyw1YD&m&*P1;p z*}C(6+rhjMV5>wt0j*TwJy5P^hZy!;hW@Q(ayd4gl9}SgqfCN7iL=HiED2fawh&mo zQ0K~(Gk$V8^LPc)g*PtMF-k|YIimY?Ox4{>h%LK~+7uQCGgK9yG_-SMi2Kq=Tg^Ze z=_i%%8e`UsxxG(|-Ac!li)otWnH;oVPuINQ3)z_KdaH2(-R4SkHV7I=S4I->9%GZH z*l!dvcWj2vq{f|nJIQEBS_t!R$w0$r4^7U$Kp7FZoJVW_*NvL(g|&`#qvZ5-efPk? zr@gXwMqX4Ej88i0et7^)=G$Q%FF3I8TnNSH-&k&oLJ9Vk-2rvrk>VCI9?`PHw$y`K z;|sxkR@h|zVcQJO?loNmYBo*ISh)H7q7p5~BkME3!Ae4YI%N--uRCeyKB>GXqHt+yJf=~1Ou$-0F!>ey}%~+o3U~%~zv{8d#ih6vB)qK|S#es?b zxH$Yew-&Qs7^6b4q0;9wEs%U}GQ4VG0;{)ZP%|tPJ;WCydj$~Ruv-mXL->{q89h(5 zJ~YJ{9$}leR1Ebb7w-%oiUwM9sy{tB=ue_J|G)uP`a0+2{|LK*UgG_#mM^m*Z3jXz!^XvDh= z^&g+f1NM*@Tn+VW!yFgq#J1&rUd_&7W?F~& z)f{b38c|2KhSZ@U<#$&4T`xxUbDnV;@JH=uozvG6M4xQ(kf}z5IBfgxRp>_6>^8?C z_P>p_6H`p%H0A(&D!)o}lkdKQC?K$sd+f|8Z4${di!gf<@4VN&?S`A#8o-~Hsw?H< zG0s}y^dMse3bz|wljwrA%MpYxd0cN_%w{^@4)z?P%=MUE1Y((s+eppAH8>ah^0pWE zCeJdjfCVAWegw%>w;NnZUuGcl{3Fh}A#v}h6Loun!R?%Ay~@w;5dt!yp1LZnvuBlY zJB<22h(7|oE6jMzH50!uG0ZpzIb!~iw^~IYL^mY%d;g!Bn^p@nkMt1NQdPtItHJVM zZ7?fD3SU;D-c9D)4M&Rvy>XTt5d=hWUW5d8KWs$VZL^i}1 zr^MntUk$$3&Pj0FADd%$#i!M|tou^c2>+S(+6*TWlYeriaPo4ZIYgex<;jCUdZ3?6 zOKPI!dmP+ZMDg=`=7WtNjOTD9l;K94JE4ycHQf?A4r_`m;uipe>@~L-Lw9J(^uY7> zK$C>gI|0&zp3WFCxpz7Z2P4CY=GUn=i<4T1IYM ztpN9M{T{JN0=D8c2 zL}bs44Iy)p{m*Uga$sVKQLQ5eggn@U^T3Lwt5%`2n)h_!R0~uAyaK2JyE#a~@VEoIg?1F<@yEf5LKa>H$YJ-46SFiMcT> zVm-uY+->dF8^}uenDWua5I0e(xM0>|K!UFbCAzbzpyJt2F z>gY+n3{oqkIF>XFlEO4h2md_23ZEb9Je3Ua350Ymt`m^zpl-L0lx3BNfJB;cF5 zi<3k|ijkDBWt4mPJ3rRp?R-y_ziimEES5X6LnwF;?-U{fy!nEHjG=Z>^4UM%T~?Qck(O zkL;YaM2aD!#M|VRpNVJ{6CgDi^RXoB-%)g0L2fJZO2xDQYful$TI6N0Pf>NYkzaDA-`oA zQz^-Al`ji5=A~6Tqb3i=McftiSp{Y1Q45kn6Pijv0zyU@Gn2rW0S01I>>eZ)-*N8V*l_bs_v1IJ`Slz-f@ zS$z<>+T$kv8j}9&(^`UBx7~ZQdW=*SmS{|=Td^G8w@N4OMJk!*YJf}OoWMK5V!*|Z zir&YzzrGgc9Bp{&m{M*NDB)f~=Y1V;(wYzFH7Hkxc;isgMc_wNX~8wmf@@c_glO1z z^lpZ7#zkv2LA+v47=@1uZjaavd!$+sbLzUP9*5Zn+PB=$6W}ivhHL3fv_XQufz!vr z9SM8{*Qu262@&6t^c!p`_KTW`^TsE-U2 zYykU32DQcS>kXZiFr}LXYWw;I|KHlHV=Mtf1xU^Z?GaU zbND7Sq0))}kGGf~|`R0z|1Ok439hKk)gA*e-;GxVkC!r+qlCFlzO& z#|U54RgR+%mb>*|O@@g>Df1A~tx(&p&vM_YAy35*_p2w2E(mfl1{_oOBEDCQb-@TW zSwKI&brad&c3`&RqVDyfn@vjO)QuHt+#ED?<~S^M;r!a1EnDW}`Q%r@4Jaaz{5ChU zmUo>mK0hr$cBp)Qm8UX%YA7)kUy?nIYu;+VP(E}u0}CYvxK0M&sTO=_twSJ?VrDHGGEC6nGak9n(8D zhZCf9>G)y}MjqVE>5G4zTXhN|8H4!9{1<}sfDI9UMe8X$^VE%eG`CRV4_k>NW|BmV zBgiwCh3C}@mz~ZGwz)Y%IVn;o4mr@rFz&NODLNUDi?P3^`RKX_m9~NIBtKZc1n*s` zvK+UlqeGzrjGZ=Uu;~lhRhCNp#8~RoXJGrb4L<+XPU(Zb972Sv_98n72WQs}qo(@; zg72WY-0FZtp?#Rd6hBeCl7h_-DSIN?Atl*^%KWI?W{_(4x@n6og!F*55Z73PtRpY;Ne~L5T_uKjc zN=#5bb6)SUxbb})0wx0WF+RX^P2e;j#=C404Ypc_x?9k!8{Jl}r#wQ9*nkxsHtb@m zr`pr-oIJPV*P0UKs{Y|)!q+i9ZBmD7RE>NZg~5f za(l3GcH{jzZyD1wm^gk|gKrSc>9O}lg-6^zQG>rN9pDo|%=k!^K?3f9>GgpnL zOK;{Er|+NkKb*lY?U|m%RZVH%p;jWW#*K$*<$E?}k3JB+l~k)%P^zM%DdymQGB*vU zKNy%}abXBwzXw-MGQ1=1)mu%bfMtbPCM$Y9vSx@K$Kt2nr&I(dliqwha`f@=<54Xq zxA;G46X0Mj#Z>LHY#2Vr3-2OO;>Z508I*3tAiOW^eE?ACPr5ytIy#CePkOgqsJ zg^lUaem;ywY1ElFdJ)E=Kl?S$q93X$r@NNC9FU{$$fQC7%}}51NN(TLCm(JYF1>#I zW`4V8>%LTeM(eyiSG{_PH`q;@UgXW{S|CqxRF%h@t0l4Fxxx3Y;WgDAq*$V~u*0-f zyLc~p%@DBSEz%l2<z=laO!J=^Y*S^;z6wGp4d!8%Z+b@B+qyof z*l^yNUGd&2l$HwPF`!BtA2%EIs858X#eb%fjcs$@BVXi#ddf|AQm6tsr9m$}9{`@j zu!vW&tb+DJ|CGKX3VSrr*&SJ?3#5@UeNfx=LbQkImsV=~umBB1C}N8Wz0%I`W_2)- zJRHz&S4`BwXhD$h8u@j?Fb8}2P9&r_F>^-vVY7UTEBTDsj`%k|zek#5{o>sTLBB{Sm8PGhBI;ki>p*l5C#Zys1s>)^jo+OYTq8RDv%` zS)m%pmdq{FU87T{@fKRrs#xymU6UsZiR27WyN-_Ru{*0@mn{YioKP{{VQpF9$GPwl z_5L6lZ8DwudB#WgUdiFDTHm0O*+-Lky>!o3dqT)KB!`nu4MKRb8yJjiz>b#@i_w!Z zosMwstVTn1Pgo9NJ{XkkU$sCANLWp$Bjr->`;&?yEev_g^WH-Bxgr%%J=d2&mvc7r zKu1qnHwlR>y+C5_S>*_>*hSfjss}8H{L|wPKW~>y0d(@D0eZu8VTu=iYhS6Jn3HHI)A0F5js3r0NG+kv$^|%vjQvF&nD9V$$R`0& z$G^@U2IRZq@-A0|LlSXB)zw1Z0kQr8qEmA*O6(_W`$+-5Zp!f3MD}y?=(G7At2s39 z^i#vz?+`cK2YPtVYT>OkTxqOAYNtuodAg)w21;0q+?@L9?HB2uL>m{PWK#DYeO4Gd z#SkP)rb-oC=(Z|vtun*DLRo5UfA>3f(!z#6cY9?xilE@I5<;jS3Z=><{`;P5&B|e(*@n_b z!VpY7IkQp%)iB*o>#Gs`QtLMDY^n{<6J|j{+!a?h?H*5{8we1&B~$oo%Kd-AA0oag z8EjaRYG|nC^=NXF5b(hfK@6W}`?bOpWI4Iu)UyB0JS(No6frE+l(qaTD)7@*pYnhm zL#DQ8e{Yq;`xB4YHjhR-E4f4OiFHLKL5~mkCDIn~VQwFw2^{=zwxbWoOzP0*kYE*7 zA6d#{U>$LKieso-Z^#HxF#>|v{j)_}2(40F`A1Bh{MyjoG-?I~F!GD+dVWmGMZG`R zW@sqbLsgA;t~LLt{nLECgl|omBOWg0abvg7G%R$)=VQjjT8lCDD}CZlGvAw8Ar5(B6hi5Ah@vXD^}B z9c&_U-`3dC25mAPs*SU4dpIq*f0jih++h9II64Pn+>}epo=TpncMFPB6AWBahb4|* z9w?hCk2E^p3Y_-ZoQtda2N8Lz5`v4T`G0L!Ro@Yr!BFy2K)kqPjply?Q9HWE&J^|; zaBneX@678uyshj2gP9S;bT^%w4rw+wSCY0D)lSzLoKE3R= ztT5JL#?S2+dlIUdXj%U3)jEcJ-256Pl?DZ%Z#3k=#E^;j^D9Z%or}(}ljEu{3`9@7 z*tAOuaoAdYdiPs^*11uKQ^)|c_?@MZs^!Oi0-fYlSf>TiFM{}6<4#NJ;5T%#T%zGq zb7uu8onM`ujzS+FfsTk9v>=GJ#2C37Nuyz4L$YU>XSphqkFDpmC;uQR0;~PF^%tQ+ z?oW(=vjY*q=r!@6!+sCs`W3TcgLG0g1EVk`JpbSjLXJVTDHg9($0buJzfs%Q*@UL- z%x9W3_7IAHRmOvjhlcQ`03yTb$JK^`^E>m@>hQeW`$O=9zHizHo4p2=nkiJd9~_Z0 zXC2^JwCVb|l`Go8RxhYRZhxd0<8XK0F7pOZ-qW)?G5?SfaQO+fVeMYk|8AIjrUw6; z<>b~op5E_F_TT{BIz;0^?Y^zC?GrVOXT5Frj`$I6V9S{!7hJ6U8uwJtwW7R@FA}pu zx=g~w2vJv(*A@SpMau!` zi-i3AQQb{Jt-M?(O3fy=vulouFi~sk-ZhxeA<51KQk-UNor>!M5Bo_sMlP@CrOs}j zVB-?2wfa_3%RJi2dB$8&q!akMH?!0?g;vZCSA9~4?Q27mc#j!A#G-q)!LeluT(*f) z+0&p!P_beP3z`2K1Pg|mpa^-c%!!0vjt1!&!>GEZIap|5tX;FsTDyN^eMnw-m5s?G zXUpej?vNv2^~`RkUuFD;@ackHkQGzE?gZGlaK2|Mvi988fS$~F-3d#0P;tlgn z>;IKk(t1e(x;UrMcoo{;ZYNV0?4r)u@@u4FAyTskZ)y(1J)TIylGHvQ_c}UVi4Ibo zD#MlOm?gI9`W&ZQ{ejGJyPocr;}n>W^kppV2^*LXEB^)W18zz8|UHd0)LyL%tHU@6@N{^&>+PV5q1oI?+PEU&}dTH=iEQ zVh_!8=)ca*g3hl->63ufctX%7n-dGz)G(rA-!FPW7c9^ts45qB<^Q(L8FUIOvlk!y zX=a>u@tp~M@|E~1^`t!il^wawHN&`4`o$^V9x^njO>L#vCmfZp?4 zDW+Vm{Jxe_o>_JJccI*Mqn&q?^7?gg)S;T3j*AohUEf4A%c4S{=GF)+71tB|trul_ z;;G6R1j`U9mYLTPsLG&>XY}q4VTzA{Y@OeS#4HF2-6gvx;3Q0_ zkayT~DO9=_Onf_B1P3?;6t}iOFSy57+6F0jGQ3R~dN}ZbD0tVT-VU%Zwit^(=06!z zCv*z#fprlDEmH z$H9k)?o`~<&kG_wybOtk-%w8PeM%kIK7;Vo^8whGIfOEUTkOkJRq1%D0BgFkjY!p> ztDA~KAz66}+>%uZYgj$U+KiRH-Ri8h_C?Dyd^UsSKGxq#{3jl>$6Dvnb#%ZHIC3t|2T&MtvIkox8pdg ze>$}B>Z12@X|t{u;bUOZ1(VY^i&G~KH24k*j%P&hqGrIYY+lj}40#Ux7!51FbR4g0 zdou5n${a$U^UGJdR-XBEP*O+qWRw5ekFh*86hCU-TC$D0@WMuuwU6inE0e8x@O#nI z%~=lXmvlMbMlaZ zI2}A^(%3Jg3J*Qf0mSb$&#QGugUS-LZ9n#pYi%<#J#D&`yH;fDeG`pH%!DX0_?uwP zMnNQ&Xw2ncQvX70Y2*>f=FWCP@6e+iuHgoLa(AHyk)z`;YSa4=G1RVYl!X+)4A{w9 z&zBe*SEvrFp_-@fz7yZN8>!mOj{SKP^hDr{=X|Xf z!ieX6*6L9>*_M`5s(Tg;=ejo-L+|!see3@g{E#p~!S%`-z#|7Gk-Z4^E4WL{LyQ1s z;k91b5V(Q(ypFnTL?Ju|k9;^xW{N!4w|m-;(O&|&YLHj8p~Mh7h_&uPl{djf z8><8dF%X(fcK_rvP(;6S-}q1X65KO(r(1aQ0*FLKBCIRB(#|Lc&-|2~ltP_@_?nB= z1~D>xteN|3l9y-rBUG1( zh&RP*CXaoHqJ`()wl%FN+c?K0VJSlUHn%fyCh*A!vCA+5?hHDBB zvU$;qELZbtIJe!T%DEL54Njg%xq(LVXDX~UI|Wt0x9|r?-$WHr14u4IT#^03FJulr$aGDz7svt4y!^F*LpbpFPYR9h z!v6G?Byn`v<;5&`e8l8qvi%YT&Dwt2;9UuyJsQykT;PPLS~0AoV=^wig=ii{HYItL z>6Gu3IV@>`^=)o<8o|?w`=h@9-BZ;sn{gf~5$~mEGSeJn$*l-iu5O_^IG+J3oj$UU z5*lB^9BM&V0)BZ`eI{T-k!cWL9#<{L2w&G~^EK}KFFI*qRQmDN`iJ#B8rtESR^DRo z=(7JQa|8Wgk^luI6LTPP4PLe*j_m26oT752%E_^!N7=2+i6Ln}F)3MRA2<+Z4=Q2jN<;B!txklQLjSSuq}|&2ooRfI!R&>h3+KG-aQ>G+m+>n& z=eZ}T^UBI>krhMTTrfv)TMTAc2yH97Cm_om0As3p0BuhA=+DLq5cdTnda;Z4QK;z zaENdgw?|mX7Vq84f-6+##yz{5;~x!K$T|PACg|QL2|YI{bsz1-xnHbZfM+?N?s~n> zwc`RfT!M8Ey+8MwUwnRsZY`M=i53^0tpkb!3`j?uUdYJ#xy%Jim|!3Vu;5M8^0wo! zAse^GpzqvhAuOf-&(nTe(0N}#l{EP?kqRv@GNM~hs{`F$dPeQud6%O2^sybkz;#ZR zIe?CI@_5eVLN-ryT}czHHh)&b$LV5yu}Ix*d}?fiRKD<^wDDi}zyY#obHbqI)L+W> za0tQQpP(}?bF4J$I66a_436#~2zWl}C0Y9=MV&(lZ{6@|7D6TdaOr|W8Yk+;!J@a* zH9f3zY*2R@S4Y!>-pUjC_m=Z?!56Rj{_$mrh^=zF5Nev{;yOVU+K|z7nUxrFyR+C0 z#L9tQ;#c;wS>*m4c^#v&-Qm3)bh@gtkHGhP-iLi-idimyB*kxHy%OM!W4U6D+YfxX zP8_&Jdzr=g+d6!BcSgeCplK9s18AzWeQij;J!GUh+^@p zOSL}h*79YqN1Q{KFz7d+=l()rzh4mg3G{-{ckBCq=p_R34irI7ML0YF=*){5CkqGT zC=Dnvpc=rt2F4MT5QoO?LUdxE3YtB7ICQK;}<;{Wo12X@RRWPquoOmb|cB4BVoV+r$2G z$RqtjC!H6oCbr(9A!2lXiM;Q=D#z1S!H@k2FX@h~^-*kGC2W2eli~L8LEl^Nt=Zb7 z#FGCUlMF~F=g0_aJiatPv;x0o2*v(5W31UBDI%{_QRQ%!WkxGk+>|18}W1bpH>;(veowRB!@ z^w}z?fjE^TBRVk?UvTs>VR5`n_@|$-gOXliADmvjtqsWt@E*J*>|hb%xZ3&&$;gJf zIKFw5Zx-x|;5E2y6QuF)@_8ZgQhBQ}?XxPSpZ_U+8#3%FUBFvF`JOrG2hSRe#U$jy zYT$@WXCjY#7qb?hd(!A5E~6tOAokh-Y0mZD^te(luIJ3?Yro{jd*`v}y1z-NzYiV& z2GZZSO{g#8057WbEp|7IM8i1 zWPfmLkf-sBN|-BtlE%w=U%sIMc~7n%i1^-vh?5gNf~b-ey$d9;$*hi?H{J`ld?0M^ zYnIl2Xo&C%fk}CcV&p>e?cSR0)C>{c7{Rk3?l2SOxyxFsr=&BdAu6F%s4C4ioE-^k zpxNgS`md?u0gFfkQlGDomtH)HNls5ywE%ff>**{k%qfGkp~SrzQNG@j9Nf7|A~xy zYT005_{O5jz{e!!?^uLi96Q$m1L(IZdRmknUJc7KB-e+7ab zwH$Tj-*yYkK5>ZRS$!s!^3?E@X~l=k zElSw0l`YUpH~rX}Mi8O=>lXk0Fu{V|#^6E*W&Syq;8qF3uxphG^K{R*1GGeS7;B=? z3-oIqu?Rv5`@DP<36aPxItQOzYpVvU(^G7PCS}xf|05fI*^^8l z-i6M}WdBXHp7kW7P171MeB0b?W}ajd{0KMKX{(dhoYS9l^>Lu8S`{TKN^uodr=9{ z#-pJCTl&@fn)Qu{<(d{`Zz^niS_i}V15uI^R5d%Q3_z_A!akbnUjm{r{U~1aXdL&V;sV?jLugOPb0Td@59{lNzAC9$Cy_n>FWDmf~KOjWiT1iK&;fkdr z#xWlULr=4iPo}m5=T`=|4n2)L%!goOY5#F~e;dENybX+d<}Wuc9SaipuH zBKW9J(R6(mMecGTqXj1x<+soE76-aEg<7*-PE*qsUAdGmBJlpmFxYTbzef$%T%=<6 z#qIh_Jz2jTS(z-^PcL`7$G_U$vF=?vQf{g9{)bt;k$IJsr$R8}N182bBvagLI9750 zgyG_nrOX`ZnurWW+?yoOgd8?H0|GPC@@L1vpxrs`0-31)VOc~`kd7C~lzEX7Ac=F@ znt1l$e}70<^%%bPnnHcBl_ti3k!w}T4~vD_2bbf*t_|v%c=V^G)yILafzxl*Dmok4 zcZqPuUgIp80LRF`2#5PuaQv5|K>0jqty1EDgB*FF`fJN#uE9=z*kfq3X%ZHCMs54IEbZH{a}bZ2WeuR&lrCH1xwGrmax z;hvSiA=cw?4ZNSwTQBMtC&=UJh7AL^3v^y=c%C!@N1qPr?_NMvX+}tkXAv$#yZEM= z3ZNmAML%6n`cG_LOjtJo?ina6d#3Bj}NQzjU5`FI}3q7yo<8j{PZ@*A$mT< z(cV9L*ghWgnyQ9Pc~IYh@5{feuH{eikH0KkPiQj0x7kdW?k8ma&#zOia)|m5t=5AN z_5p$kR>;O~BjghD)_^+OzQ?{+Eee|X=)7yf5vO2o4Eiiit-m+=XD^%}5K`AL5AWsF zfJC0o@!i4cCuNL1$^$yze&A*c`dFKj|3vme7{O5G&x2*HTeTC(T){PSl#t2sc}TWu zZZc+UQ1ucg%B}nljkY=fKnOYkhJyc#nM*)ymE3jlzN9j`cxoAvvQgsnd7VQHZy+|P z4}6KJ(dR-MDI1i@=f}zRlRer?EGeqVhr_*kRq-AODs!b5h*fx*F!kahgIrZ)(6So@ zB=ldFodfAP*>D&E@>O25Uk>T^jf)4-EcVy?RNlvE)0$$v7P0~!5TCI|Fa88{*aUvn z!s|ElB$6|7?dO5vGqCIZpOu5shOj{o-w=|$dQrFHG{4oY`p1bU)OOJZO!GL^pS%$n zLgMmUa?tBRKe2JtAWajkkdX`sK1M;RVWTSaU(Mqha^rAgo$viu84`hSh=QO=hjDrJ z7cm#jzdDbw;hS7L3zhHYESBG86K9Rz%>vN9Bg)mQ)HlVw^Ye^eu8{7CJL54X9syxD zKPA!bBWvL7+>M9mf$~x6ebhkOTp@cIX2YTU zMtyZP&()}0qKOdm(sIE-FGK--Ty)FRVr-uTlJh&o8NO`oCs0Pboj{|b(Y9K{Z6%hu z4)gyKO#&>)nM;H%D0pebs?`pA`LK+2ePX#1!uk$@VVqB~reZuyMg_U$HH-eLpGUHj=_vOxjkM>CbH3zDhRk&RYg60=T6-FCM zji2U==rgFDO@wh@QS|4qeKExUSkRt$tbpW!! zOTNNC8PpBJflDBoCRK~vUeDFehbR7)!9}e-b7p zo|3c96l+p-N=NVwLD1>#CN1IHbb+N2MjJ;rqGf8-CSGXW9Uhr3kXx&oEo7ocSZS@LlP>l<*E;)B~K!OE3$qH9mJBywD5xRh_i)G8b4!(hS3&rcn(P)^@?ENW6n=|lwg{dgZ}f~ zs)rttJ*bC1bMbOSpM+M2#nuzmUG2e&l$XJnq3%hwyU<#yjmRP1x0F?~Lv=lucAfPG@>s2LDI||+|&rtoulf%+edJlyQ9l%IH)O*Q0 z)<=3$y_abJ9CeVD_Ddsvw}vxHzUanxzIx#&EfYXQ)=EAzvdIh1_zHH>Mw?4_fWldf zx*}TZNY>-$KuCg{HdQ;((iLV9vju~ro^#sFSGHcdn3J} zrg{a5it2Fj7gQrN@cHe=@*d5mmliOy7a#=U@RnH`;pMi`z!x;Dyb&r7O#$kk0n!F? zR-)GUXeb4=?Ds+0f@anmI4;p$d`rWKJtN|dEn$XcGWs9yAR@C5btwYB zy0bRsD0M(2QuUY7AsXG4O^jdcHLAy?n!Aex{Xc8eIR#{I0dD|#U@tE{C1w5Akzp@6 zsn-LlI|uvx8Qm8vh;flSP?4n(=yAZ-(iFAzS+poU!FM2au>ktkO1WLE8Djzet7SQi z6iYAb|6oldOhT}$lqYF$HgvUybqD#sUcrP3XPctyk6i(j*`-QkH#N67;`jAkk+nSx zmh*|nAdAI_r@0~pzutRO)6{JjHS}3TSL3iuZ`u;-Cb3Vo+l~48n>{sTqFsQ(A5r}R z7kE+&XoUx|*wDS#UxqLV_{HjnGT?>FfR@ZcBh7$`cjz4A=t7t(U3E+y2T9X1g==lt zK}>U4yNr%XUAzIJte))>A6!WxQ$kNgFZ!Bi7EC_<4+t92Do^r#OH9s~Z4&F3N-$yq zFXRD?9359kwZRO&9=l3GU;-$r+2VQ$0gTHyqwmAkSSZcD9f494yb!`WQr?WUj{nCQmO!2_sp>_7bsVz|ZO} zsC%F>R@0!~f8`H|kAoofs9zEwJekoVNRODo<RgNgW$M?PsdN2MoPM7$kgf;b|m&%H*Rm5MCsPYOs4yZT8552ZcMy1}qgU;GZlS3z)eRGGG_Ka$QbBc#D1O2H?v8WU+0p?2}0k3S-adg>vVG-X*q*&uP@nX6LT-c835bk(8{FnxqbdD^zt%c@$M9yfT;s7zo^o4flT≤Bau_^i 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 literal 0 HcmV?d00001 diff --git a/nip96/types.go b/nip96/types.go new file mode 100644 index 0000000..376825b --- /dev/null +++ b/nip96/types.go @@ -0,0 +1,69 @@ +package nip96 + +import ( + "fmt" + "io" + "net/http" + + "github.com/nbd-wtf/go-nostr" +) + +// UploadRequest is a NIP96 upload request. +type UploadRequest struct { + // Host is the NIP96 server to upload to. + Host string + + // SK is a private key used to sign the NIP-98 Auth header. If not set + // the auth header will not be included in the upload. + SK string + + // File is the file to upload. + File io.Reader + + // Filename is the name of the file, e.g. image.png + Filename string + + // Caption is a loose description of the file. + Caption string + + // Alt is a strict description text for visibility-impaired users. + Alt string + + // MediaType is "avatar" or "banner". Informs the server if the file will be + // used as an avatar or banner. If absent, the server will interpret it as a + // normal upload, without special treatment. + MediaType string + + // ContentType is the mime type such as "image/jpeg". This is just a value the + // server can use to reject early if the mime type isn't supported. + ContentType string + + // NoTransform set to "true" asks server not to transform the file and serve + // the uploaded file as is, may be rejected. + NoTransform bool + + // Expiration is a UNIX timestamp in seconds. Empty if file should be stored + // forever. The server isn't required to honor this. + Expiration nostr.Timestamp + + // HTTPClient is an option to provide your own HTTP Client. + HTTPClient *http.Client +} + +func (r *UploadRequest) Validate() error { + if r.Host == "" { + return fmt.Errorf("Host must be set") + } + + return nil +} + +// UploadResponse is a NIP96 upload response. +type UploadResponse struct { + Status string `json:"status"` + Message string `json:"message"` + ProcessingURL string `json:"processing_url"` + Nip94Event struct { + Tags nostr.Tags `json:"tags"` + } `json:"nip94_event"` +}