From 3e867d77f1b5af9e5e8d04fb59e0ed9abfbe3cd5 Mon Sep 17 00:00:00 2001 From: Arun M Date: Wed, 1 Nov 2017 17:04:09 +0530 Subject: [PATCH] JWT header impl --- include/jwt/base64.hpp | 40 ++-- include/jwt/detail/meta.hpp | 10 + include/jwt/impl/jwt.ipp | 36 +++ include/jwt/json/test_json | Bin 0 -> 164836 bytes include/jwt/json/test_json.cc | 21 ++ include/jwt/jwt.hpp | 248 +++++++++++++++++++++ include/jwt/string_view.hpp | 4 + include/jwt/test/test_jwt_header | Bin 0 -> 178112 bytes include/jwt/test/test_jwt_header.cc | 19 ++ include/jwt/{ => test}/test_stack_alloc | Bin include/jwt/{ => test}/test_stack_alloc.cc | 0 include/jwt/{ => test}/test_sv | Bin include/jwt/{ => test}/test_sv.cc | 0 13 files changed, 358 insertions(+), 20 deletions(-) create mode 100644 include/jwt/detail/meta.hpp create mode 100644 include/jwt/impl/jwt.ipp create mode 100755 include/jwt/json/test_json create mode 100644 include/jwt/json/test_json.cc create mode 100755 include/jwt/test/test_jwt_header create mode 100644 include/jwt/test/test_jwt_header.cc rename include/jwt/{ => test}/test_stack_alloc (100%) rename include/jwt/{ => test}/test_stack_alloc.cc (100%) rename include/jwt/{ => test}/test_sv (100%) rename include/jwt/{ => test}/test_sv.cc (100%) diff --git a/include/jwt/base64.hpp b/include/jwt/base64.hpp index 2460afb..761dcea 100644 --- a/include/jwt/base64.hpp +++ b/include/jwt/base64.hpp @@ -36,41 +36,41 @@ std::string base64_encode(const char* in, size_t len) std::string result; result.resize(128); - constexpr static const EMap bmap{}; + constexpr static const EMap emap{}; int i = 0; - + int j = 0; for (; i < len - 2; i += 3) { - auto first = in[i]; - auto second = in[i+1]; - auto third = in[i+2]; + auto& first = in[i]; + auto& second = in[i+1]; + auto& third = in[i+2]; - result[i] = bmap.at( (first >> 2) & 0x3F ); - result[i + 1] = bmap.at(((first & 0x03) << 4) | ((second & 0xF0) >> 4)); - result[i + 2] = bmap.at(((second & 0x0F) << 2) | ((third & 0xC0) >> 6)); - result[i + 3] = bmap.at( (third & 0x3F) ); + result[j++] = emap.at( (first >> 2) & 0x3F ); + result[j++] = emap.at(((first & 0x03) << 4) | ((second & 0xF0) >> 4)); + result[j++] = emap.at(((second & 0x0F) << 2) | ((third & 0xC0) >> 6)); + result[j++] = emap.at( (third & 0x3F) ); } switch (len % 3) { case 2: { - auto first = in[i]; - auto second = in[i+1]; + auto& first = in[i]; + auto& second = in[i+1]; - result[i] = bmap.at( (first >> 2) & 0x3F ); - result[i + 1] = bmap.at(((first & 0x03) << 4) | ((second & 0xF0) >> 4)); - result[i + 2] = bmap.at( (second & 0x0F) << 2 ); - result[i + 3] = '='; + result[j++] = emap.at( (first >> 2) & 0x3F ); + result[j++] = emap.at(((first & 0x03) << 4) | ((second & 0xF0) >> 4)); + result[j++] = emap.at( (second & 0x0F) << 2 ); + result[j++] = '='; break; } case 1: { auto& first = in[i]; - result[i] = bmap.at((first >> 2) & 0x3F ); - result[i + 1] = bmap.at((first & 0x03) << 4 ); - result[i + 2] = '='; - result[i + 3] = '='; + result[j++] = emap.at((first >> 2) & 0x3F); + result[j++] = emap.at((first & 0x03) << 4); + result[j++] = '='; + result[j++] = '='; break; } case 0: @@ -135,7 +135,7 @@ std::string base64_decode(const char* in, size_t len) while (bytes_rem > 4) { // Error case in input - if (dmap.at(*in) == -1) return; + if (dmap.at(*in) == -1) return result; auto first = dmap.at(in[0]); auto second = dmap.at(in[1]); diff --git a/include/jwt/detail/meta.hpp b/include/jwt/detail/meta.hpp new file mode 100644 index 0000000..4626c82 --- /dev/null +++ b/include/jwt/detail/meta.hpp @@ -0,0 +1,10 @@ +#ifndef JWT_META_HPP +#define JWT_META_HPP + +namespace jwt { +namespace detail { + +} +} // END namespace jwt + +#endif diff --git a/include/jwt/impl/jwt.ipp b/include/jwt/impl/jwt.ipp new file mode 100644 index 0000000..af84bd8 --- /dev/null +++ b/include/jwt/impl/jwt.ipp @@ -0,0 +1,36 @@ +#ifndef JWT_IPP +#define JWT_IPP + +namespace jwt { + +template +std::string to_json_str(const T& obj, bool pretty) +{ + return pretty ? obj.create_json_obj().dump(2) + : obj.create_json_obj().dump() + ; +} + + +template +std::ostream& write(std::ostream& os, const T& obj, bool pretty) +{ + pretty ? (os << std::setw(2) << obj.create_json_obj()) + : (os << obj.create_json_obj()) + ; + + return os; +} + + +template +std::ostream& operator<< (std::ostream& os, const T& obj) +{ + os << obj.create_json_obj(); + return os; +} + +} // END namespace jwt + + +#endif diff --git a/include/jwt/json/test_json b/include/jwt/json/test_json new file mode 100755 index 0000000000000000000000000000000000000000..6bf91cf7a93a951653a1dbd817e49fdc80b1f88c GIT binary patch literal 164836 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 literal 0 HcmV?d00001 diff --git a/include/jwt/json/test_json.cc b/include/jwt/json/test_json.cc new file mode 100644 index 0000000..869d24f --- /dev/null +++ b/include/jwt/json/test_json.cc @@ -0,0 +1,21 @@ +#include +#include +#include "./json.hpp" + +using json = nlohmann::json; + +void basic_json_test() +{ + json obj = json::object(); + obj["test"] = "value-test"; + obj["test-int"] = 42; + + std::string jstr = obj.dump(0); + std::cout << jstr << std::endl; +} + +int main() { + basic_json_test(); + + return 0; +} diff --git a/include/jwt/jwt.hpp b/include/jwt/jwt.hpp index 86e5904..884dbf0 100644 --- a/include/jwt/jwt.hpp +++ b/include/jwt/jwt.hpp @@ -1,8 +1,23 @@ #ifndef JWT_HPP #define JWT_HPP +#include +#include +#include + +#include "jwt/base64.hpp" +#include "jwt/string_view.hpp" +#include "jwt/detail/meta.hpp" +#include "jwt/json/json.hpp" + +// For convenience +using json_t = nlohmann::json; + namespace jwt { +/*! + * JWT signing algorithm. + */ enum class algorithm { NONE = 0, @@ -19,6 +34,239 @@ enum class algorithm }; +/*! + */ +string_view alg_to_str(enum algorithm alg) noexcept +{ + switch (alg) { + case algorithm::HS256: return "HS256"; + case algorithm::HS384: return "HS384"; + case algorithm::HS512: return "HS512"; + case algorithm::RS256: return "RS256"; + case algorithm::RS384: return "RS384"; + case algorithm::RS512: return "RS512"; + case algorithm::ES256: return "ES256"; + case algorithm::ES384: return "ES384"; + case algorithm::ES512: return "ES512"; + case algorithm::TERM: return "TERM"; + case algorithm::NONE: return "NONE"; + default: assert (0 && "Unknown Algorithm"); + }; + + assert (0 && "Code not reached"); +} + + +/*! + */ +enum class type +{ + JWT = 0, +}; + + +/*! + */ +string_view type_to_str(enum type typ) +{ + switch (typ) { + case type::JWT: return "JWT"; + default: assert (0 && "Unknown type"); + }; + + assert (0 && "Code not reached"); +} + + +/*! + * Registered claim names. + */ +enum class registered_claims +{ + // Expiration Time claim + expiration = 0, + // Not Before Time claim + not_before, + // Issuer name claim + issuer, + // Audience claim + audience, + // Issued At Time claim + issued_at, + // Subject claim + subject, + // JWT ID claim + jti, +}; + + +/*! + */ +string_view reg_claims_to_str(enum registered_claims claim) noexcept +{ + switch (claim) { + case registered_claims::expiration: return "exp"; + case registered_claims::not_before: return "nbf"; + case registered_claims::issuer: return "iss"; + case registered_claims::audience: return "aud"; + case registered_claims::issued_at: return "iat"; + case registered_claims::subject: return "sub"; + case registered_claims::jti: return "jti"; + default: assert (0 && "Not a registered claim"); + }; + + assert (0 && "Code not reached"); +} + +// Fwd declaration for friend functions to specify the +// default arguments +// See: https://stackoverflow.com/a/23336823/434233 +template +std::string to_json_str(const T& obj, bool pretty=false); + +template +std::ostream& write(std::ostream& os, const T& obj, bool pretty=false); + +/*! + */ +struct write_interface +{ + /*! + */ + template + friend std::string to_json_str(const T& obj, bool pretty); + + /*! + */ + template + friend std::ostream& write( + std::ostream& os, const T& obj, bool pretty); + + /*! + */ + template + friend std::ostream& operator<< (std::ostream& os, const T& obj); +}; + +/*! + */ +template +struct base64_enc_dec +{ + std::string base64_encode(bool with_pretty = false) const + { + std::string jstr = to_json_str(*static_cast(this), with_pretty); + return jwt::base64_encode(jstr.c_str(), jstr.length()); + } + + static std::string base64_decode(const std::string& encoded_str) + { + return jwt::base64_decode(encoded_str.c_str(), encoded_str.length()); + } + +}; + + +/*! + * JWT Header. + */ +struct jwt_header: write_interface + , base64_enc_dec +{ +public: // 'tors + /*! + */ + jwt_header() = default; + + /*! + */ + jwt_header(enum algorithm alg, enum type typ = type::JWT) + : alg_(alg) + , typ_(typ) + { + } + + /// Default Copy and assignment + jwt_header(const jwt_header&) = default; + jwt_header& operator=(const jwt_header&) = default; + + ~jwt_header() = default; + +public: // Exposed APIs + /*! + * NOTE: Any previously saved json dump or the encoding of the + * header would not be valid after modifying the algorithm. + */ + void algo(enum algorithm alg) noexcept + { + alg_ = alg; + } + + /*! + */ + enum algorithm algo() const noexcept + { + return alg_; + } + + /*! + * NOTE: Any previously saved json dump or the encoding of the + * header would not be valid after modifying the type. + */ + void typ(enum type typ) noexcept + { + typ_ = typ; + } + + /*! + */ + enum type typ() const noexcept + { + return typ_; + } + + /*! + */ + json_t create_json_obj() const + { + json_t obj = json_t::object(); + obj["typ"] = type_to_str(typ_).to_string(); + obj["alg"] = alg_to_str(alg_).to_string(); + + return obj; + } + +private: // Data members + /// The Algorithm to use for signature creation + enum algorithm alg_ = algorithm::NONE; + + /// The type of header + enum type typ_ = type::JWT; +}; + +/*! + */ +struct jwt_payload +{ +}; + +/*! + */ +struct jwt_signature +{ +}; + + +/*! + */ +class jwt_object +{ +}; + + } // END namespace jwt + +#include "jwt/impl/jwt.ipp" + #endif diff --git a/include/jwt/string_view.hpp b/include/jwt/string_view.hpp index f7c7500..e14ef93 100644 --- a/include/jwt/string_view.hpp +++ b/include/jwt/string_view.hpp @@ -342,6 +342,10 @@ private: }; +/// Helper typedef +using string_view = basic_string_view; + + } // END namespace jwt #include "jwt/impl/string_view.ipp" diff --git a/include/jwt/test/test_jwt_header b/include/jwt/test/test_jwt_header new file mode 100755 index 0000000000000000000000000000000000000000..5ff066fd17a0031f2e256db0d3434d8bfd739ab0 GIT binary patch literal 178112 zcmeFa4S1zjRWE)r?LZ2Y6QIEGB|%ZAfRI)P17#qC4Ly~KMCd>i>I6#5lnW)&4i4%_ z!pwp5&dUoyIo_bmCGvm`3fJi6lz^O)Ovg#6SOR_!0U<@CZ*+iwbs7-t{eA5H=A0zc z0{Z_y|BpM*oUC{4@4fckYp=cb+IxTMJ74>c`<6-_=afpL+e)QU7k(r6DV3_DkHc4~ z^a%Va`0d|6xaYF|U+#bY^XS_CucIB^5@R|G$YB5eEBc47Xb+#S0B1zJ^se@x>*@`Kk+Y}9`SS6gA*BTMfdN&{)U4uyS{MRnBLycbSS+yvJm(e zabqY~NDm~_Kc~0om-t{-U_S)-S z5!^SXcjs4~-YWwAh`0XRSl0df4_^0c*IxJX{nuW1&1(>FV|p(+?evDxVfl~v#x(5X zzx(%JePI7JuYKvOua0czs%9KO z{1^Lkz}b(PZlvY@{nx!}|Mjnb^~+xKs{JE3y!Nc=#pIY?Yq{9p{sq7IZ~y*Ryk@;s zHUlT zaOdw~`2G>VXUTQzKfO=bR{A=^Z2b2?ICSIp0Q{bE@cP$2?tpQ{i|LMoc|t$ zAItIHi*D_m_;k;0?_8`tWd7Z+yW{b2>%y;eKQILRo)B@m;onZwm+`uuB((U$d{}?_ zv5uwEA^bYl^G5zxJ@JW8zUav)#I-L|xq1;|J$w_?X%GK`*I$3b)vtc?vqKanTKWn6 zSiatefZnM0g#jl$|DX78UnTjc%Gl{?^qWeuR!JIz-?{tlN>Z-?oT^@izi@93(J`$H zB=uoq0!jUVu!ca=7%?W0G!7XPNE)NWlKO-k4U+n#F@dB$WlSKcj{}>pz6F0tx=K>b zzs(ey%K&3dx^qaDkNgz=rV5wLp_q(TnLqbdMzZsE_P|6TR&KeQb*VB9q}cgghOL$W zMiHixHtF&aekZqG^qKtRZ5^c*ApSF7?FogMuRbXj>nb@`(yYRK$5z8fjuua)*6P{C1X3kXzPWSm+uO!& z=K!o+_09Z72nA`zf+e?(olu?Y#NdaDxyH>MtZ~xlB1jtn>oz8kG&Dgi`r&OzcNknZd0+f&LVX4w85mfj9B7jB$Nj73kAju9HGq}8~ zl4J{rwDRJ%1o|9EAjvAm1d?pfm_VRsk`38WAjyV}2{?U}joE+%va!?xp9Qs$6v@|B+ie zN|&bUBK^tS9vA7-L``$~Rg0jz8>6wNoa?J9Ts>f=?~zn>fu!CktSOK*yNn4W%^k)F zE-l}5UlfF`v1e=zf6*KtXN8jbG(gcDL{Qg?VrBxMpD_Ut&X|FkV+xUCbA$xC9Y`R_ zb{Z2%vL0gsMRWApQ6S0sj0q$e(+9}~&Z&wTNp+Hr+3w$4QgaYHma#@^4$@xDQASPY zzPb(c;=l;aF$+gD$9+O`ybaRm_thMg{}93Y2-14M28{_M^&w$RfuuQXOdx3q09|0&I-GyF(q7y-V4k>0PkPM7gQv8yE z8X$fm^8o~mWDb!A9Z3KK#h3s%j4^?N%m?f!0JdjLAjz0M$|G=2wVQrPb=Zys$1)bb z)|qO8*-pj-ZVXDVuw{}@BXlpYB>Nfs4Gcd2arE_-C5UTCSrgJn{`iml55b3+_+7VG zKK;*??A+&r9n0auIdI%Tc$JS1Bci4|#HLH-NZx^X6?rzX#@XPx4W51UtUj@bneD#g zZ?>56I#I~8&Uhu&pvo{CC$-O5h60#5Bs`=|CM{nLQcfHQzI zo9C=&v6@MvM^$`^y9kj=(x0O<_m{2-EF~V;XR9B3xErN;Pd#! zt}w6!bP3MOfXkpbQvjI-&gmZqCA;a8?VkE;4KZTJG8Rum%(Q8nfJn8iC!piEe4oQ_ zMuWRPt?^$E*sL*uq`n}mDUdW5jR_>pC1V6z4Zp{-LP@;~px}5!P}fcm1%V{%GA58@ zJB%5K+MS3Lhhj)zSy^WSNtPQENU~L90+IgNnjHm_tmHfdl8ou2EdOfkTh3~2_(%m zV+31K{q8lTz6wxKod~M5(=-skJZ(%M$$E_$i0U~aMXHAcN)99dvKbRVBN`JZsJ_FF z0!h|wOaP6>LZwxKbE=|7QeCzq!Lf{00Rxm2oBZ9_Dao`A%e3Eth`NmC*bCv31i@@< zx&&;*m_X7z1Z;1b31CVzCV=_Q7y5CM%KkYvlo1kkmN8K@Da5h*r8NMPE51d?pVm;l<; zm_X483w9I$*^LRHNm!_~DsWD9lzylh9kbnk_g7*e#ExaGkywc7-NMnqLcY@cK3T}b zzcYjSI6+zu*rYK5ET)Au1(N2pF@dBxV~k)c7IGuYjiow3L3JXiQm&Yp0648Nfh1cq zW+1AMBT}S#NMP211Tb2R34o-=1PZDz*--%PY)k-xD+`rY1_~7dV^zKn z7P3=Oo83yi8L%E>0!gzM7+8n^Rxri{upTu=umuYlMHvb@5G)kR|h7|zBBHnIVvdH{teNJs?b>vRG zKqMSSq)5V$z%uee8wh}B7!yFxHYQMzaLtYakRhCh0BFuarBwmQ5DW>4+l~a}!eGJ{ zp{-l%n6KUmrpxK(jFfF1+e>@cb}0FQ>3II;QueUubk{)@XETVlhY>JB$e=jcx_0_sY>AsrMNZfZEWQ zKvM4k21ObEqE0AB)tt6Dh2o4g>E5cpBQE_Nqpj=j=p6KS{EYfLrhya}6t+4GFlxfl zWnF)F?w_~o@5roG7>FGq1%hn%^;kEd^%jWz6dMHnLbNR3{4*W-WzgG~Z(bY&;n5AN zPm{j`Z>JMWf|x7+3*TCpaZ*aMzhP>r>YKmiqbSKEp|$oBYOKi!Xtq-MP5;i;%XY6~ z&5R<1Tzm4*e3+RojG^_JDb?+6QgoY>h|E&1y!$-G{m_QEzl*p?@;IDp)mv1IMo9Q| z9r+>qzCpex+I_d>zii)^%6G2a_niD0@U2xjFP3l4nDX51+sZfBnabRE&OPtbwS~%6 z4U#!j9Nlk;jg&MN3DQQumW>G{jT{&lgFsSUH71Z$*NhQtWDK?Hjm*jNMZq2>w8xkhv)m|v@jR`=3Z;SxseQ>Mv+gEG8S$R|s z0TlElf*wDC7#Jl2_pY=WL8M6Ekidu&5cp3kt(ZROD^Mt{4%m_4SjMV|zM|@v?*sa> z8@Cac>h?C`?!?#wajBgFaRb(4OaMw4VNz3pxP8V1zz~fQY(d;tAbTV}1W>4_h=90< z5QE|Y!Pe@jK?IBh4Uq;NN#H-No?`kSs6e5fs@Rd>SjOT@l3k$d*gun-L24wHiUo|F zlF}-$1FN~mPK02q2)1&kCRB4$F#jVf(kL-GEJy*$M<0zOqSmR89!K(XK%X9YUJV|& z!Sh^r?xbh+dSqnJZ1+2`G+*bfBir(We_0Z=%^7a4OfiMzKck2GNu{6-nex$~huR^xd(=a9AxP9ih2XPLFwK7d zdMKs<(g;`&)oB-kV;ReZM$UHsA~vd8NZ65I{HG$})8JmKHWjBJ;kNt&_|~c)gEL4- z-?`ht(du-V`_8sjDr&aX7L}>koFQL;ASw3H2-vJK0SJ=7C`b}OkTfO$LDCq(=K12j zEN9YKgXmW9Ga~3UogO^`_pXv!MWi_VLITUk5o1>1Kdq8t`Xo0&p_0n&NN_A;Rn#&c z#v*;aWqR^={)rl963(^ipR>a2eY+$74fxioAB8g-hQ6M_>2S6Qd zFV7E8tIekI4bh(RyF~jX`h5w0<;RYKo0cTsA35Cv;XXO|-SpshlW$g%TPsKY`F_w( zLnnQh`sw9LvTv#U=6@&q&9+~J@gx=VRTtDM9VhPoawXffq8@TM&tLM#kV4NW;I7X_ z$IIw=yB+^BI$li2PulTg(eW{Kq^Swg{9ttKq~m++_&=iKzy1*%GdsR5I)0IkG`v9c z(dhUII$mYRUyY6*qT?^v@nzBR-E@@fo$Y#lbUa4K$1CLSXVWp;^&EloZvglxH+}MV zpv#A80z^AxJ{V!nneiOg@;QLYdaeD8^@0am=4Sq-Q zdnbO^TyxEn%a1*Zgp2m+cKcM%#8xR+9}C|w`|LU=7WNTA_J1JY7DG$>{~@zU+5RX%Y^!>7yo`>a zt&T>=i|H8J>iX#T7&?ZwdRcVrq+@8SUyP3bIt9njR(;X&i*yWa^%Od0yM7M}FI4)c zfqj%_ih2G)guzFoQ)^q@23g>m@w2rH+c2z$xgTH2`mqZ$4?Z#skNi^PUC9p5BBN62 zqE95ZCfQ5q{u6Xh`!Qi6c-B9~C~1RH(mDemKIN(WVG6hV^MAqM4LRNa1Ng@77`#J? z^^KI4P^CGVe`puz@Y3DftfNS%aG_fq9<5{t7hq(8g?N-N zLzIJ~kTriE?1QWM%6pNk$h=j3 zy7Irq7(n`K`Jdrq6MuDj>EX3JDbm@LUvluy1m#4i^x&N+asHwr>@^$s^+*ks`8Eo; z_V|uk|6RxW?>g20rP8VX50}`mhrt8}Cd)^kfm)&P=+ONjHaJQDME=A->_E6Lb$pbv z|3|vY5ydsI}*msVlwc_6`CSyco5qv!68HpxouAMlIV%LE#?F0 ztLyY0JI#Iu#SS@91$*ZN=1X9WW4;;Z0qL&gNmtRYbi!*PRs z88Y0-pwL9pGcJ;dplQa@X~)rS6Mz$JKS2B>8j>@uJWnkW?JUg8GJ%bT8Hbo+SbIm& zaD#o^7#rk{AVeoXQ7s}!AxBJbpG`Ih zofYq4uY{#y2)>Bm=-TbZ2FP&kI~|p)ZVhoz&XTHVdZr=&6Zy}xD~+9G>t11*5qPs^*oBPmu>&ga4jq4(MSy*h%O%i0MB<>ZdTOJVDr3s%V*-%^;7>Bk8Net}xA*~v2-o%) zB3$qnl_cU0cGe*>iy(1`gy8o&L>LFfH&Dxhb2!|K+%3g(0=#SNlD_^Nge#Zs*^Hhw3Yxkl6t2VyeQHS*-6=+XlV9` zqLM`JrIV6*#7-K5-)kpj92DQc)J+@C|3v=Pf0So8i!*kTjgNk@&d-mW9!6hULPtV2 zkRitoFZPiSBnM~8Z+t7hX1eeP?7Ek|N`em-72C_y_azX8JR_~)dllb+hr#s0`%j7W zzZi^9{JoNHf9OXLWjj+tKuiW5aQg`M(kkis#{?J?(QeKE39$->j-EZ8{}t1r0FAy+ za?DgZ<|@eodigL_CE)fSMhJEH4e}yoPe_6DJPcEszwBIs*7*$nEwbXiJClb)T1;Ma zZsh;cw?z3B;$O@ z4SN%G^!$T#a^m^V9oP2(ru5DUe($P7TM|qE4hDr88ON0C@6z{FvTP>{$DXPwDu4HB zmNjrF@>i~1E!1M0k^>Aicn+xHgtF$KD@O*IpF!5aJ;<|7=9xdxMO9F1rt@#8lwP-2 z*-tVFUis($JJ%BP*v@@4QbdzNzMqGD|7LuxybgafAf}Rm_pTgm!@>fX#4Lj3Pjt$n z%NSB#8Qdxk%f24xE;LUp%>d&(8gU{eds*xtDvq6Gmy?Q;{V0F5{0>j$KaE^BtWRHn z14X?EeQ9lWPwf+zCot4|%##`&rGfNOdy^|c=Ee>dqJ9DXURui@0zkp)!GM@(>36F7 zApAu$O4qPAJx)%xH#yGs1169h?*Udx4U*%m7%+k4c%LzWdH@L!?sWTTs< zaut7rSN={E1v#l$DHHw};)kp^hJ85w-v$3og+vKB_kK8t!O zASRalwM-_3rbd&s8ZNeN;fFVDddK<{>(zA;5|J6X<0q zyke#ehR=^OAa<_s9lMX(^=}kZ?&ts{EEV@^bM;+zt0d#zLH>UB-Cu%YXr>$Fg#5I| zxXJvf>W%P*>=SGyd{BtOx6XYmc`j=zg5 zNlztxZD%DJL63QUS0x$jLMViw4go)FBQYqbk;D&D$9(@6Kz`xb!Gr>}N# zCEIr+TxR=@*_Td7W;-iK=Fm2j^r&765+C?vLh&4^kGG&{&Z{J7KyHFaBwdBiqMQzo z=jXMRYV0ISUMP}}=BHP-*k8l>WYrJS*}&@F3<+buS$)6GDINXS;{xS>ekbgrby&Mo^{xYVjorF$v^s8id}AO0>bm6E&2De6n; zvU`)y1^Fp|ya*L!srsNITeMD}h0sHA*lQtbAbsQjn)LFyFK-{{_-jmPZ08`zfz)dC zOROqB+Q%-EHQmbU9{C5yJ;QM*ovQvC;+9sr87xHIF2r1QR9M4o) zOU!KOxuwx2E4!^+<=XO;{IS5R&Dp)9mVF9!EmwKH!7=&%3{s)nG5u|uB%guw;!JTH zimI97{>-bA`3w{dzq0fH{150CbZz@a(ct6gh3Llvgc$SEp`!O<5y<|XG{w^rbk1<1 zE1YQ343j^F9RO!AP^idL#NA=C4JWiCeexUM7FdqL-2780YbC4iKD3 z78+FDb({7`ANt<~REqq3RE&E+W|mzDm}C#Y-=M{n=0c2d-79}7@;*})CEA%G>y^YOg5Zw z(ymI{*IAic-VOr_kbaF}aX>~VRz=SuN+v2cvBjGHl6hEOMRk z^ZT*lv8sE(leLb?t0|nvPIAz%ujpQhQWy5*ix6UH($IK-s$4IrG<8|qB=sG_&VLtG z6F&9@%O5(z6l#<|6L7zbd0P(toH7BtV3k5oeLE{@FB*UDf9;|g}!jm6l zxznbtdKwOJBL5!xVOm!~v*segQO;xV1E{@wc;>@pX{LI#$wp|_A(kMOq=f7bxOBsE z3`e>pronGSjs`GmGA58zM}_&YHEfNH3A7!r-lQPa$uy>oA{PcwMBp~-R0MET#+U%i zk&GE!-i3xZfJo5*DkL!BKmzwG_p34q%rI)h5!nZ5J3*+K!H7G-5$#V#mZr)952Vn*2M-ZdpNMr%uXN- ze*v6ebOHixHh-;qW`m3gOIQK77c4}S+=={mImUdULhNk00>;Y~dXz<7z(yb#yS;J@ z!`qncOyF0s-=O0O^Q;Ko%*pX=l5#LU@#>&`k${sujL5Y@il3*v`RdEz2;x9bz^_(a z265>!4lrJnqZJ|OG8jU-j8JP0z5EXoP$O&3fCBmN`J2>810#V?2qG+FI$XvSm;-`Ahy7CTboC%ew2=+L zXAlgs-M}p1EZ_p*!unZla9D}1OMpx0M@#`dKtQVx@vAfx=tO>fwO}z_V4ZmW`J+g0lm4NruZDT(u=imPua$2)cvoIM5<_m#@A1AM%@564 zh9GM&UtkLctPHRzgFdo?`D!l!se;cQe6sI>q0_Z8cgH!E>=|!>^im;;>w*w7pMEo| z-w^eZM&L3-41hJMlCBOCOT$$hnf#LGsM7F77zN*!BX%nt!O_E7TzU*pe%$eD3S!JU z4wP#~eyy?;+EtvgSi8?Eo>%f{G(`xSzKBiQamk4-3Ix_}EmLO98@ia678Injk_C|^ zo^^K$6|lL+nu3JwA8YtSk4t?xS&JIClP*Z`9IE|9E^FAwxy*rB!)2QUlOB97;uE4u zSN=Wp8jbVF;@luuQ_lBKxfP?m16TV&jEb_!STBQ=>vN;u>^L(Qbwm$DN2p}GZH#ZNp6&~8d?9#gu^ID9#cwwI+Xi&DY z`{1%QZfuIp#zPodKtkRdh3GX}N$yt}(`rTO+PFEI3dzzL)dz>elAB9rTMANJ@?8uk zlduahIdtcf><0Gnwa9X8 zJOu8NcS8W$e`5m4!$8eErXFMrsKww?KKg7GI38&4R#p};OhhqxGK7p@I_ z<5>SUT2!5nWteQY)S=m~WhiDodee{4>HKFxPn16*Hal{_Eh3{&+g9uU`dL!``mz46 zZ%+BENV1acdJ|Lruv2~%Q~r3Ybxir3TL0J1lJeJ%^?z-1%5QPXPh!e5PWcSJ^Q&XZ zm?)qpfI|Dp8|>%0MJ?+yR`cWyC?VRRAMm12)NY;XsO_%&p6tFvndAj_pUF-_szx!J_uFy}SQ-?7diquw~&~laZGHjD>VgFFH?6&edW|az+ zAEU_C^J8*&0gIjTP379HI)KzaTif^XWMHOzlm^TimB;!&4h71Qm5yZKL*=8Fw>Tf2 zEmwInr3deP|02FiE3d>KFwogbN(LRwvC>}zLpZN;;jI-Mv;ad{T=}{7V9V$tWXBd_ z#^%T=fUdIV0HS~L2R=2hxWWzz?z^Z#3|8Hu&$%~xjGgX7EX-(qVj4F1h^BhfqpxD9 z<-c}#gHnHw3L8ugP%UeGBGZg=Yha<4V&}emZsnW@RT5l-6AWUa!s8#@yr-)Fj=ZQE zXPzihEtRL_x6^3HT{ziLpnvocGdWs5gw_|B8d>gyUdu5RlomtsK&Ld!o`7Xi1gP31>9oj z+`E>wGxAXGdVr_0;qu3lPQQhIBGHsmA?SrXWUKN zwL!}9M)<~tW7_$9;IM&T732S$vyJ~%+@43}!?$q)5#yD1Rs+lBH*;K9vh8nB$H%B# zKT)y$)zYH%uX(|pZGTzBpX)fk6!A-pKQH1>H2$23n+n^X8S(quzc=7uB5SZqc`K^+ zKk(xjhnw-c4Zp9q{Jx0q7Jcrj+94hXTE19X^zlOn^Br3 zu>r-|ao2CKRpZ=SLgQjaJH?1tyDPP(9FyDfw=yV{DsYXReMTXClVH3i$U*{E@JtH= z3xU-}D4DRRJ*s!xZ>NAU+$LbmVC%i2piI(67iB@lz_Qw@2?X6wQ2O}L^nCRh2m!KV z9n7!Rbue+QgZr3Bu@0tlSO@cSeI1-OL~3lSlZc;-g9dDZ4j{TH138DudHW9q6^4Ba zJ023qMhMcTFs$b7H!4Rfn{d&IF@dmlNqv_e?i7;W7N@f}sau+ZESgmqg}S9;w?(HS zV5=Fh>LofB>yu>#kp`*{k)j4FBrxR!1aOAWm_WOFsn9^pI*7nVofp#wxdd#G06v{7 zLL|_tF#+2!p}=c&w7oPivI$_~+uoSoM3P3YtKS1qkc0@xWYIg=65WHqok|0>6Op0@ zDkLCL-EugJv4f>aw@_%cYM_`3DsJHRN<$e>wtYMH_!DQKCD1)US_32-U~XBmH9H}#K#YmI6hl*XNDZb3>3HDA2}33;^ft97&y z*JwM$yo%9A=P=s%xjx!rO|?h8{Rz}J;fw~v%}H1l=4W0fy6hmE>2u5DFnSXq}>@ zhB@Si-=D5nnVnz3S_FPl@i%!${tSOl^1FxMK{JcPQ(ER|N}YgjlDz|eH7qx}acd{PUt}%}GmLpY!ru%P7LftSi)^JZW|L~`z<|)?#xYK+%hTq2KEzb3|XBP{p04I zfKkxn+;#%|V0H^(HppL1D&bBFBoIWOIPncJX>4jMhb>vlRtf~nt*Wa)`6k>*#zn>0 ze{hhJLm{<-2@;7+1bZfo*Jc0?Y*>i}AST#_NRbJK1f-J)s)@*<%&6iK2-%vqGC`(- zUM}F78_jb_jzR5rE4S;?CMk>d?-aNd^x#+ic~C8q%LKAjOB#$@tjY@-JzVkUgavRN zoH2p6S!vVMAtOp$a=6nCXsP$3(ZkoVzi> z;G7=Yw$c|IIo(GUPjc|IV%yFR3+vt2G4_#paQ3GI>s`mvgQpW3CVf`EI&-maA^)|J z*rSe|>9hCkXz_Gj+`#i&kr)~&HDbf{GS{1f5zGKPq$yl>D8ny3V&Z7Dv55Z ztn;-jm=3F;{_BNo)7P|??{8nVxqPr+L>;{)F;naRFlab~Er}1uyAO~n&Q1r52rz$i z;PRV)8&N9R_RmtY5l$q<oWvV`RI(F$&GsKgpem-*@Hp zN~wSJ6uLJE#9ED3=8+5VD>vW+z{@Y1Wsq-`A5>b|4Sa>hqN9gDT*9KW&F(2-zhpkw6J(g*brbwZk3U<+WY81_xv>?D3{ z1&Ni}c^?UE^?2ZZ!PZ7++%a2L5GS8O4dtyrH{XdORn}3ldpxum1 z2~$ga(>wu2W4FQYn(;pYgLoQ#Kabyw@w*sMke1ZZ)rj0aIo>B@r zg+REjHQX)|X5)FOl~HN#Om!nIe3dHK%5?`naS9)o3mFRxFEY?sA^U6Vn5T*;&1)|TBj~m~zm_fLU07bv5cISNf+v>vq7Dh@XJIl6}Wvy^hSeHAXf)a$<%!MV4R*a2RgKWvFC;4c#GzEhnyK37939?+QuF0Ik(W6h##~lcE}3j#a6($cKa=Sb*xd*!xHmIv%8r{L-t&tzIBp7B z6PO++VfLmbYv8ju+(Sp4x(49z5U^t^$AR>z@a}e00UVZQD6>{@#6Cx@I4Ut@!XSt@ zLdR(961tK_ArQ6V8Iv+T+iy6z$^+5F|6^`zRhh;fQGl9SpWw{pvye3h$SLg-d-20#{w-13L*xUM=ts?wv(N+ZHO zDp)K8^)c)S=KB{yk`P$HbGPEVTl3pTn%|E8n)t23`5yvie*2ND*ZJ)*y0OdzhWOFA zg8e*Nng!#{aE!$uSd-0b3FP91`yAqKO}DwyPSG!%Od-GRw1b(MS$P^Pyn<<0u<0Vd zWniTqRjkhjhCWhJ`P%Fk%omh8_`)q$ZNV341C{>;E)ZD(LoQe@tBwx6sNQGWz_?75 z`8C>nS$+YK$1Tv|p6;nDSS~}(%l=IaBN%7mGE?U|K@bd1Y`g^aG6ly#(`g5rQLt!4 zI%~{;#hJ7N$+iSge&#%Z#c8K0Thc?-`A3k<^nanql)(bM>xUy9l;phrAYj)g0qNB$F zh?eu!PJ9MJ(G^z5FoZg{55?~$8lE*kncs^tBlSa0s8^m|MQ1YSK#ZMqgjPksJ0{T1 zC}gYPiN=y+FnUdcm2JJxA=|j4cO~K;Mbxd0E2K9d;tNB@JP)8>O{fqyh|QwjO??he zv^k?g2GdS#N+7&`WTgx?sq8pIkOqvlP>vJzGRCkc9UdqNFO%S@IK}hk3;3`|7fyoI zhlNq22Vp1L*YlHh_5G886e$78=cq3ZCQdYO(jg`qW5Zp0XY3qEWDp?#t6xDwd9Yg~ z!YYd1n0^FwO?KW7`)kkoYW=W7L}7Hkf5{zU3!yZgeY!_x`2s2kvt0(~zZsaB;%-Dc7YqlaEu+G4FS4^jYV9*O6ll}l$yTBLK%WKL)W<&B%~}&O zOR`!IY;E%tBf3xJYn$FYq8WjThba(!lMwX`#L6ccV3w`+RjfMNXVra5AWjqYHT5@( zqcCq$&B&c{xktut4&C-_O~EV~a$Z)_fmu#7JLnai>x?mhAg#`e+XWu5=wM38{9OD^!Ji#}qF8aUoJi(8@7#VIlPw>H)oaH>h zj$aOBfMBCm`akCh*!q!0i+!iIeJ#|`V$5me)`5!){Gam#gB&&3;1?*)6FdjKtZnkh zyokm7q6`>KJpX@kp5TSQ#F@>Hs`8B$KPrOy3zhKo&kioq#GZ%qGu0sUP8_g zPpsR4sAzm&^GD&%wS=Sq_<Gnr+f9Brz6T6r{h>X66{k*p^SK2(EZW$a~ z@8{)z>k`6nd3}E{oOg$z1Cm20qA|+B1vld?oNADFu^ItDUxlH|_mp4%sIS`4ne`S8 zH#-1K6L9^0<(vniGh4qK7C}KZ#FZ1f9S*JfT+}LhN$y@k^JADbL{r{i5D`w^2Z5ZY zM4WImm^hI?4iv1__p66%2zo7)K{+3lR{i70G6tv(Oysvd4@8US<|_!LU85;new6P{9e(D9<9p218&_6+X9(6ysdgeJhV8I_x=^n)CT$r{aK1W#v4Mh`b_4?)fkw|#u zL51%~7jjw7yObRgI9vZ6J3S7oC6KZcoDs^ql7OFAO2dQA!O@Q<;fgEV>y8M$6t1)C zvauNfn4LCs4Lnw3kd)+B_e%)0U2q^hnU{ZTkc7}Tn4DMZ?N*KrB^{m|x&y&$^>-^p zJvEbC&qu^4xjbnH9UVDP?LgBQ_5*f^kNkB@iaI1Ml}z-Y2a7bG$4U^Ri( z`&Up}IYJdJzqXf#sU-|%j?rXALZo%1QL?n=6-%%nHnxhCX>fcH0xN^aL!}sNL$vB6TkP*`XpgRhZWV3^Hl#d?60A>TIOgxJ)0PaDnHv9si@Tic|3r3M%{@O(H%%1Zwj9b84umvH_&JCZU!Zw|_rGj768sA;D7l=yhAB8?2ZTYbLx0 zX9nn9x1h3!cNm9@L&7Fo*h{zRSX3p6A?Eon1W|6~zpeMVc|D+|Y2Gwl=?@fp*2 z)YLlSd8tBJcm%6Bm=_OzxgAB`b8j(b%FBDZ8+ugB5}^KL8Lq(MW42B2rN&QoxO!XhgAtZKj{;2-g6> zw%L9)g77{EZ29D9lf$Ezs}nH`ccPb=YFp=tH!_`|01Sjppfx!f3!8#gOMnS=iWp6T z{3Cmj*_fW4CHab;wIQ=;abV5&yc9v9XU#hM8G&$sHd`VVUIz}xY4PBY9J6JGY!c*e zMfT?C5G3JntiFT3xXT!`lk_m;N%`9m48})W$RDlp`A=6+7s>Hk$&;8iDcf*@rJQqc zH9zkj!}lS4j_}I}Pq=#QKDGNwynqdlt`Xua{0opeo(E<^o=f@kQ~AFj)ljAWWf|uKYSy2^PS| z?(-iDIP8^t>c|RS**HuQr2OVi4vB304vh?OmuOoANhR0xkdAcbJDg?~5FsEkYc32snfgJDtW1Lwu{;)z_I{=OAzi+2~Lof}x(c zqxF)@)N6(*y_WtBW8&dp{ZGU1#rVAuzxU#I3cq{pe?P{Iet`b>?Mr{K@SnQp@ZtQs zUIReQ*6<<#4+^g4$BTID@_DphYaI_`MY!*8{JiMi!^4t{qQ~JiG)4bv{)m z=%=B7OSDCwKA7is{~Ws#S9$jVX|V_@?su8i`y5R@Zkjdy;%PG{U&dAD27VN^DLHUn z5~Fw)bk*>82e2HuzF%c&syXu=rZb=4$<6^QcA?E4C99{|Dv*HXSnZ}G?)np`?^KX% zP@rBBsP@Uv&(J{!Camu0^>6dEp#XEtg z&@TBLdRkm6NZQUU&}Q`mjD=f#1@sO*FUZHZhmivlhDq2e0g7&nGb%8FsM^;<@iK?d z4kzMJFbP)yA+RtT=E09*2mE@R5V3&-m%KSwZ+!sEm0eg8d6{KfJ^1x8YB&ZKZkI@P z$pric<%g+Bl>s&SkPt9Ysd!O-n2zD3TpA9{g=>fm3N2O5(FGE31pBx-qEFaQAo1>S z8a9c;)bG9G)EE|V%C<4<+-DTsSSpPuFQtYByh9DyTOho(iYRF7 zv;&hC#)A}eK~Gm4(%NaiZUPK1fw0=?gu}Fo5}rpj2v?9KjY*O$^ZC8Zw?xG|PJb@qgWo-kf_ijvzUi;*W?6BaX=xUdBP5nIto^u z(tkpw<*P-eu~wU<0_!LGFjL^>F9eHxM+s&;IA5o;tc!ddBc?M5j1(H90yAnzsn$s@ zg4Yr{#E=U(iM%F}?-U?@;J7?nK8_^w2R;kAVojmsJ65hn1Zlu~(B+ei#vtsu40%E! zwKT&k==8u68y-n^6o2)eS}gaXQmZcGDL`n9`3_;2E9C-yMGx>R0&GDW6Tl9vF@df3 z_n#&ybocdCPG-9d&c6|u_xC>lI;tS5M@tD=hP2AUqQZ2?4Cj(&3&4``@Z|y%v;+-(d6}wNi($@%Cqis;{(|r`~{A`8(?yw*NyD4Jq$T0Ed=@)dg_Y(U<`% zF{q5Q5yufg35^L9+y4xS^NChq*yM-%6IFg^k zQ6M?a$qSf3a%H|Z#V@%Mj3?;7gMQsNob9C&ikm>tUgKuj8GO&;8%&Q(5I?_B!7F>c z*#z;&MUjm+uwm5Za^D03VTjxsjsoFE+r-Z&z@8Tcb0?Aug3$%#;#7vXp2`B|m#m?5 zf*-6<(WNwfcw-I1QV-n0dV2}twcEjTCji93eUv)!fG)7WthRgqDp(;J_&HvLSW;oE z{oHUvpr6bEH(-!BA9tWfl`w?1xPK-XJIBk#f(#Y(K#fW9XDeH>aM6`?G$<{lqx@!Y zQPj=Sl}(wU!FH@!1IbN61(ViC=@&cX1C>PQCm0F|<{ zd=z_=Xt1dHEU9a5af*Lkr>*S3)0Lgj}LXC)hMZfm=QC^UADlDY;7qp^v&u`4V_(b(dC@v4I$ z`1;69I7=80&KZL0u(s2NF9(eFwT%pJ~gx%Y9X!?FO!6jI)Yl|??-@WZ?}9dYRfIrAZSIY zY(|rOeO8nFiB7Qn1-mR7Oab8Td;A5lqC~e$Kg+T%ZCx%nHDixe0C~(ytW^u*WDPy% zz6@LD3qFH{G<*h(PmzKx0^bc1)w= zAvvnN&>>8q*qAbh9AVIY1jnq4N*d!pYC#zkw&R+k3TG@;h+`o{V^+Zz7yxG%1)9?i zE-VZC#f?Qd8q1oD2BLJTiwi^Hm;c{$iGhdcNRrV+}e-{gdo1+c7RYW{0aH<3_W%WtDC0?+gE=*q!y$Xzuo1PLeMHVrrh z9FR8MyaZejqYit*+>`J*6$~Ui0j4J>@JdzlfJ!iVlOtRBDztcLKF|Nh16LzP~T zr+0{V9huuf(+!+Q{J@hDn!`8z=ck5tZW>?@sUwZ{2`vtXv4$K+DIL zteIh2Whsy<-NDUk07>1Td)^6TlSn zW%L}>lo^tah3K%MEYOHCUg8su;LO0xy~Fig_J~H~(#axpr%2yhJ5z9wQ!tE_GavxNhmfzy~CA?Lu zXTs1=c4+X^$en?eI;73krYC}?55h+f79@iNn}nk2m0dW@f^MnIWmOWIerIdb6LHfk zVA1q7mstR+5n|zfnP3|2_Z2|Z8T(B;AAz=;MG$1segbIvJD#MbXNGM}zo9JQNLM)V zWlNLL^tloYXTW^$I$Vo|*_?j9`w^quSUB(Ci}-$oJc}7e-ZMfPjGd&gp>;o5LjI!& zwZXn~?DQyNRWcsOhDoAq+MxL3s)Ki8a?PqE0$B|J1SG~uLZCh@kPQ)F z;cjeHSX}@LGGhW`C%lHPPuNia9mtpfj24UuK;dSL0IU32Vz8C6qcA+|VaG**#)AEX z;lVdKQt@ANsEWM>(1+w$U9zJ=!;XzrN677G5F9Ut%u%_EMXB}?K*$n61Jvbk36uv} zCt{Y5z7Fab5OYMy$PHeD3SJi&JK>8^>qB-FfSHLggT{~wQyp1TZU!*j>_)SJ9yK~+ z<3gZ%$bsaD<-M?m9ASE#<)Wot4SY0$9`;BWS&=iK(Cj0yyR58mr>y5Q<`e zUg87<(Co$ppu;ytu=$>)ytS%CP}M_@AOKEoOaKClF#}a~xuvQhfnf&{fV$0?0Mu>9 z2wJPkR8Um`XsBIPH%E2cQ3P-z(wG4B>B8y)7}LfCFs6+WY`%|cskP!nQ1N9&$OORu zjR{~!)|kQNU7S}~@fW+3gal?BNB~^Km;fdvV*tRK`W&R!L3$J<69$`7ESc$W$^Af|Y0~V- zL)<5n1{RH^0ZGv4%tb`5(g@&eiua79wHAz)$QgVMvTM`IoNc zqcph2!=1pB>S_F4xf%}aF8Hooq7hU+Qij{SydmM;z4GkMLEf|;gq(2Yu|*7glv?*H zCRw=O{tcFb`O&+aeeu4?G^_TKZ(<8UpuQjig(pwJ|HdrT~r^8#8zonr4{} z*s+$oF>GARvA$}*+piW{q zvLeT)qdOju zb}E5j`{0)f!c{G35GU?MQ#djgKwW-*QWer&IO!S|K*r)tFyYL-O=aWbRAJp1&ePX> zB}CiE1gZ&R0&UhMm*P(8J!3j*vuA9Loeo*oM2z|aheVZ3_6fN*#E|jL39kNaO=QZ=Pss#kta~>8|+XN+bF1LB-F$3WZ=M%~b%Jg@#!1FinR9 z)?9Icd$`aT+HvwkG`to02Jv`*ylj~1g9rjpAt`^o?g+;n%xL{`t#Pb^unvP3txe+% zL)dg+YEz>(2VLC?K=Du$5v0In*OHf9TyBM{bNx_LAA-b(nnG|W#RsMlYzA-!a260t z#ZW!y$E_oWrVf@S*x6ww*wZ1vC9$khW~D|Jo*#*)Is9mQ+%O2wPzKdvxJR!sB$Ct( zY~#--8N>ZKSn9dS4he8Rm4oKfUX-AiPn7`FPpn>;Po<}{6Us{;&!?gs?skSlo<5rM z>5~|X>?74@Qau+wLPCg?si5EJgG#X9o}nHPI?AuEc+`#SP3y6C2)osOk$d00efptsKVkj*X^yV2faJ zUs-_%6}aIf!ram16rFz#7c0gjpTJNX*OcR$BI*Lg3^!p%f#MRHNjidCdrmPZCakd3 zv{gnh)xfJZnuV*@#n^BI>M701!M36<6&>EWc1UB@iZO$_{ID7CLJ3%@j7~S`kV68& zB1KAEc1Zh;5@7mu5CNQz5Y`ZY1)4Dd?4TPX*u19fX0L?O9-x@4h#-dr#mfXB?;8`q zTELirICvK##mOopFzrAB(JIKsL6{KiN6^Z_nF_jzfcKAp9b#Cle-yQ*o1@y}C<0i(8xsKg6IK@hYcnQ*?qiH#^JKO5Ew~nX10bmQs3Pb97&vRq zm;jbD#tbxBts+vKte6@S7;+#1h#F#*VYPD}t3r^c57n#35vrY_OUo#8S-K_DWiU$5f{*r)(9Q6C-KHeJH4 z&P#|C2^13OasmRFoQ(;fqZtz@2(;6V0+1Mt31HZ8?3&5k)EHK&1i3 zK`Mkfa8@bE38kWs=RlDhw|&7OfAd2*2cBdsPD5BX;xnnf92LT=mH127I0q6>s&B#H zI0vfYmuLjVIgsA1b6{(bFb6V7%N$6Q*|g4qvn<>*U(HfP?{YSNo@SlyHP$54REUQ3 zv?c(Ie)H8G0FuyP{D)7bju>=BGxZ5%y#$yR1&pBy?N=cfYZ5SS`7K;Si$blgZw=-L zj#M31N&$4*5_X35IQIgr)cDPn8kDsRxt&x(afqzE58oo{rcAQ-Ob$2`gOJHIGkM=b zlnK9EGqIf7k_qdBse1>>2Hl82eO9{OhNy=fW94B0OazY0^cjV03M9=1V*=|o=5|~p zz>3|N0Bp>S3BbnOm;jWsj<706V`)j$Goa{MZIpQ4Jt$D81^0 z(=%w=u{kZj`jq_)f+LssA+OP9L}! z0${X`-s6zMpeK=Ib=ZDG_A^!;5mpy~a3riDfIR?X0!gE0j9{|>G^M^;p9Cm)KM@Ry zDaFeKu;w%-0BOdUfuw>7M2Z4XNMPK71fUu=CII!MF@jd9fT>_`3V;(RP<4m^mxLM< z0GAb(2|zqECV+Xu7{R95t~%aYRU$}w%@G7Jb)I1%3@~*XGf-7)EmaK(EIR=KD5s4H zU|Kgu&{|cdf~pFD11V6|%~9=go&uOPjR}Cg3abmiZrYdt^lQclHVZ(btraJNiVrJ7 zCIE@Wm;g2dj2TD(I>d^H)p|&v*MS5eAQ%&XfM86ZnBNEOC;%0XF#(7}CW!zRPV#FS z#7?jv$EpB!U5p991l5TNU=BAXfF?0Uu&GNlM@)wdt(9+jg1+I zK*NX>2^11ob;be^&5a45qd5VAfi6oB+>OaKBV3x&lc0S??Tv8=AHlQjm}gRtCI z1Ou35F$nesm2F)Zo{qQUq(EcBeg+LYX0r}5;~>)tk_nRlBnJsVLnuli04WU&TT&qi zKu%9iC^&sA0Ey&jgVFOhJ%9qxUdH0g2s0dfCe=$(p|K|a(lrV|#FOf)@HYxTs`w=u zK~VsrH~&Q?Kx>d705M3507R78v$&O9?vr4SCnZ}_SQh4$kZ)hm!BK^usCl& zUmNTfWHW}lop{kiGEl3~e1H!E&BG9eS@84O+`i{G6lDitvGBq!x$C{4hand9WxO%@ z!IiP6D)SSP7U&cU7jnlEX3wZ)qYgL&Fswx15g{$i3 z_&)YX!Uf*G!6#ni z=ti^fi^hUSAJ*cg9SQobgpCV@1iNMgNg?`Duw@3j;=aiB^PCG|%b`HBBFu|SdMLHQ_;*0IVzqK zcI?Bs-mqCoLes6_oBmYM>ZVR{iMvfYrtk`oZXy2h9Qc#$!JR<_Gj&|(6x3{s$~Dh_U_ z%nYz2?h*)KzBML*<&H6eO$?^m(^^#`sA``h2w?UzCIGuPV+N|~&X%f%1a>-*0JOix z1lsliTC2)bP*s7rFBFZghMa)F*6R6qd&-DH)&-zWF-EX?hUsptI1yBQ${7h@GBqXu zU5PORG1(ogc$i^A0;3Kja8ElC#SAmy2m+8xj0vC>O%eg(0m$P3%Ak<`*O)wVL(MKQN;+XQ)Ao;I^<+Z|YHCM&u^)kE7 zdzd?y#WD3wF|e1)fUjpj{7Nf-hJ`*t&#){Q45$KlvOrvkX5Drafab@T0N9i<0kA1! z2H^?{EN?xAzT-WRM`am zt1JJ2K7i#liqfC2Fom%G)Z-l}fDRG>V(daOUk&k*cwZNyEU$dV@uNeI7- zp#M_kl7q{51CyV)U+pX%Fqr69tZFpHJ3!;A2O1Ul#ti)Z?FAXS@_I!7dkc>PPK;M0%Cv?fe3p*E{+D04P7SU z@gbeonwe{;Zy^Gzi}zwfg2*v6aI(i)DlzsLdm-H`Z}Iu-qP)*qFD{C%^7gv8y>2&} zFuQb29PID^(!#3XEv4P+KL6wlN_3X{{K-#osC@elmYS8sregO@&bY_Alf1-ych>vyfcKnObipn13}}UDjEs-oys5Mvh`s?XuD6+?*&62skJTM z0Thq&(iaB=a8)NyIeOjeP~;bXr8g;UBH+~aQ^)dzZDt3ng&lMs}b()a`bRhP`E+H02|aU zgg}sj>T{4H&dfytB0M5_$#(37WV;N`e+@9-n|8y$hSH$oEQl_}ndV3111gtqo57lh zLpQ2StvL-!N|^M(FZ8o+2ir*yP8n~o@1~^NWpBnqn!UopjY~nLXP~=L7+9%8VSyqQ zw|5ai?4YX?Yw_(}N*xUP7zUN6Sk7cT**~9T??9}46p>bNMk5HUMH`sCS!IaTsLLhL z{+O`NXq)Bw#*}bX3QeS`g)Oc`V;DaOsUf-9s(cFkYErdJ$)m`Za2pCA6y@di%!e$C zS7}i_i;GbbK8JxH?>9RUXVC|Zjx z|Lk5IuGVE@9P@`4;e=M&2ioggb*`D6l55M$H*0Xj51a)a7tU4YzI`r6hDUO7Wj|=K zj3Hir(=}?;hR3_^0nK0Z_1J&oEuB4;bP&nKJ3tvTe?$zm@?%Is*ITT@J;_d+bubXS z#bdvQ)XrlrSbCz3)btFQKNsy8<)vaj7+ndc)AimDpCaeOEO)_aG=JM^B*6{fr=2Rl z=>aM=_h0ApC!rvyGQRsKH3|D|nRq{CajJa)$)T@n<3L*yGwQ+Ij%a;KcWxQvqU?lc zOR7lvqR;RV5wszNRBEj8A0?Z+5?7gc{0r7q69 zW3zV2HzWf*6LTr?d#B|be4}^Z_;TH#sfh`kD3&b#1qIDFc8O1tg;jdJ`1|> zs17fG0OTbQ;t!-5WdzcVoe?~Q%ZmSX2Sy~hQ&HG(C$Fc^n6ZyE6*u&fH=@u6U6>zt z$|1Ze=3TV#mRMwO;oy@&ym81&1FkinTDkD9%G}-LPD83s=)+C*Z=ADJ2JOd)w(N(V zP_bRD2x7eX$$!?6W2?DA+uQTV>0V40%azQzWImoW&wKUnzI=v%@vn@gW#0xf7r=GZ z#srF5wqy&2g*NBqNVshy<&7JB+nX07k)8W4;JL5k;HFnnde02KT?Q(=x0lDbz}?-7 z_y!}V@kzof-K>7%5*a$LBa}SghE~_&YUTdM5hpCR41yQ~^JA5q^Jni?^a$@`h5F)( zAO#OMK!v4OsQt4*m9{GLbvJhR63UByji0ns8;_)+4v}ZEBXUB6B@V4|AdO(5e&MZ^ zx$m5-N3l9kEs7)DF@{*jKF$8ESKmNOn)~2~zK`i~`tq?^5(87?4A7a@Su=g`2ajJLZtYIHKYg<(~=MIK{d;0A5@V3*NiH2Zu<5@OVvf0s#l%kav7l9cvm{ zQl;2e()}e-R$)tF?4b}#T2fzHvVZIPOsz?ohOLTsKW=A=dQ4#bK31gH7QZEZH{S;N z=Z9ENz6WgJ2VPG;<{#PZ4x*A9-#_^N*ONn(4Dj|j07fUIBE7eTFQn`>+xmKPSW-l> zp1hN!D%O*SfKzE&8y{CamrK zY#i%wkVWUNq}d+c<^?KLBj2;xE8dt?A__WJB4jw7^lT#lYvdm_VuK948nS{ z+UvCX2uxaK0-^3Fzq|!$wXl59(^$%_7nWZ`taX0+L-5BpB7w8<$1UHssohs^_O#6h zg)Z)y8~2|uvmaaqE5$rOweM#C_P1()DfuwpV7}gt;^{upS#2YR+mdX02%aNHT}2NL zv_P!bTU;a-cPXyw!rI~y!Lg0&dm4H!XI`J-<~7;rQukae%aN&L3tJB6Vj>X_%y`&|4rM?PLeALVI9DQ&0nsBRCv%-pkrsGm@M@FX#OK^Za@=>)qeF zuWx^QUA}b#;6$(i_`?C*!vu6bY3T(cuoQ*iyDeJ;I=d8ZqA<3B<@&;@YY(rjk6=7K zg3}(w6)wlok)?>a6&~3RF%q9+ic!BTQOPJ~om>k2K(~F$5@QYpkR{yuOcB->pN|vI zJM?sIJ={9&MjM=ZE($w}NfquL0)Qz4qQXh0rXc1DV4p?#L}U{VH|cQW4mU;$bKSD^ zeM2}nMV9EjjW)0!)Tpr<@XG5&1i(ND{U%=tw=$qr4-dON(~>5$(>i<0UHYztMj6Xd>> zHDwqb!K+1S+GT0Lfjp#YPY^7GQ|#>)4!lUt6ZB1(;X=%!eWr5-;q-NDX7L^rcQ|j| zZur8SC%gHCi(&x#OlKg1;CjLpm8_G-l6%e9l3?ZxOU_gn&zMu!&l=xsdY}; zU=Eb2VF@!W94T|@e>$_0DhY;RkKbzDNwO27^frjpwUD(pK%}&2bR0O2kQ2ZO^=345 zSU+~8?Te5e)I?e-+Q0XUxX~}l-1#Dy#kMaN4k6~T?2+Rhq9<5DkJ40=}VC=ebq`#yu*f%0s$M)3&X$O?jLT=)qVS?nzsoXQ zToO)&D7VA1^1g2?=S;8W_Dfp$uu^3%J*>2oG2!k5M>r-3M}>!rT1?>xIJ=E2K$%ea z@83aU{bj~T_N52WE=mlV4u|a_-~eC%#R27!19WY4z|5(<#RGy;UNG7xHyt(%c^DK` zCR7HHy!)_B9q+4$h3pTvkSsSp90&EFu4(VX=a5Hlrf*>;mLp~e9{HpOxtv1h%mCB09K_Y+9z;J#DX9cNh#lf-A z&5%)4Kk==R#~Mr}HDfY4nQ$qnv82L+BJ$jc?4h~i@e!(l2~81p2b6ded%h_N&fQH2@4Bb9f56S0LUig6^V zDGK_m4C7UV^J!<{0I^ufp#SIf^f^XJQ*xDi~9evzW(t^6-&b7v+L42!LR#R z`uacmTLkQXkT2z!`Y`Hu6TMloZjnnrFr+-=8+@5q3c^KUw=xsBQMU3iJ|rtF7VC?f z5f{R88Od%`02d)BstSCv1x&#oY15%}a6%oSA>CZ%D!#HLwk?bFb<7v?)OTfsWqiCA zb$sdgQ0};LZaMe<$7b2&qyA+dxuCPl(cjhFEH>P#;~cgqpbi*qk*~v*Z$6AbV6of- z(4xD_BB^gL<^VI9?#&I*2e#KJqOYTEag@-Q>dcf%A7f4~^zk|L;f{_(i)=~J( zzHROtkwA!9)UpsNRFhmrm!71qXv2z!pbo;R`-m!Zh#D1D=n#=`=cI|*Sll6Mp=F|L zs+oIP)O8OXT~Ce_RV7z;|BaZzBx>%IUp~#+N`3_t^{Z)Q^{bgpD z+)0*~hRp%&+^H;7CG)~K<+OtAQA+j(Z+8K)$b zGfu)%w%izCCoW5vP8Sb~&;EWOn5G2j2Oz>w9&R*^0R0 z$P9~)o~^l*14rJoK}1EtY0jav+9i+u*lRDVd)OMNxz~AK)U&e z1e;TZOI8(Ha+lKwNE;?qZL$L|L}0;s%1z?c+tS9xRPS#Iiv8rs(f_D(XUD3GN&-b4 zb5RA!ELbxAHDNac6@OArCq)er4B3+)=;neNu4a>Xbx}uLR6%;~tY61}&bhP0)deSk zg1f~Jnzm%Aj+>}u&Yc}Xpk#wth+xhI7o^>W(9GAXh4$jLbc31tA3^a4eY(AbZV2N? zT_;EuKK{p?J3Hv&4gk`9-6T8?UOdUqXw}}HGE1ob=x+c zWdLad^dxT)8l9Qfo`@#oVK#7S6Efy1U63{*Zpmy^% zCK>EzP*Jm0MGX-&+moPX^EPtRYBxf4Q5g%0DoA&&`*q|x9Yg?4yeR>CrlOYFyp0Y_ zpWO&cw{o{4!L;Bc@Qz0uwV-zMHri9W8C0*fu;5`UcZeWwPlDQGWTD=*n;@xa7j51i zwif~TW|jzW=$+ikhC~Qf>Z|b{?qu_}hiM+sLJi$SFV+lzYBtrPaJo=$iAa>2&5R~M z${-S8P`ASgzOTe(+~XG!~{IMDwi7oO>Q+=<8v8K;ZeC$Ss{YQv(k>#J;^PG%?s!d7lR z7IGiL*WX{JN!#Sm5z>X+S70Vvxm8PCs&gNbt=x3xUvlV3wU@A!n_f8d3iphVWHQxT zx$Bv^mpzxcNSxEH+|zJdvXxtw+N$bJ*XJQZl-kzIv{1=b?ue!NW2PRqaxWjEpljx< zwsQZ-Te+v07j(Q33j|(}F1Kj4r2yh*N&xXQB|trA$`IzjxRraBu}hP{Y@#>mQ-ZLlyz6t2f0Rk(K+fP|(+<)%nMs!5?sC9uz;d?Fz-3E>*aE7S*~a;i*%N@U6U zih{3nhn|m~izg;4KD0-;too){o^z6-Fb(2pU6=as?xfZa)TnA!EK*}WD8d*9hO_v? z85xTghWJJLtd3=m>{wLmS1k+~@Q})2fyc@kSsHM@11U7K0x#vnD{?qlrt3RBYz+%L zyo(MxHHVv209!&!Au7>M&zcg1eQjZQ7cPVhTLhL}&=JO!$?z^2WqOnsE(H&R&13;# z7<0Cuu4UCD08cRjc>{Q@H8&WLWkHA4A&VA>YeaL5Rh3!9b|kkBCcj%8j)^C)n_#_K zlna+mcqT7dJt1o^pwQ#Y0|=&e1t&>h3OJnpBqcCLd|dF(Elu36aKqH$tFSC0sbDyq z;8LoVX+1KQ<&&Tk3lE8+LR#>W7*=xTl;lh3t+%~WI@haA>AO{!9h;n+m z91A^=GG@NP%ny!`nVi=o{pxynpRK$<%}p|&apz+VVpR41-Izg-v46KF|BExRd%E%& zB}--``%Y^4)&JO}=fnHh&q(IO!$d`Sz?Or8FlFxh%CK4)&9y#RpKze>ZL4hEvg8`n zo|g%gUP@$KRwB?zGQPMZ)pa~N01xPn_6elzzXoRrD9N~qaiDFdTQbd+qa`;T3+`QM zFIjtO72MlGODHHvVU?Odmg|eZgU(&EEd+&oJL%aA3Xw=VDKzWyB8rQRNfqwxv(G)E z!X@E3Q#!8zJ?A{!))$|SKHwOAq284RwpnR*0~Xy1of`rm)j?5VGmR%HaTOBXiUBak z)QlQAOK`9Y$6CNeZrplupY|GkdhttwTqG#FES0s zcxXEZriqJfLr^>qLII7g0)NZ*p>SQB7KL%k4ELvUziLCQhF$Z#t&g{ zBV?RWdY6b|M_qg(Y6z9BT77U0qNx1y3Fv)RZ@|%ai?NghE7@LEv0MtEm@#GG5|b%f zq?@qjOlh_TLr>-=U1CC?M{*rVS=9fWTAPU_>cz$*#0X zQwC;d#1;&PIHyF73NVptN}x_4J)5WDDkY80Qr5OOl8RxLVAd)Tu=cZmz6@(GguluF zF0?_>S{bJQK~}+<-tMH^w!h%?cG$1-Z`gnHG=z5(x6Jtv$w;8~V18WJ8ZPa^FKK$!Wb4?qIoPoYNApX(5<7PM!~?Y6gJo*(@#0D?Al*HY*~e~_ zs)yp9`bq>2f|x{kT946xYsjNL-8+|brw-omM5W`?RT-{r?~?MN=T-TGv|Kg)Gqt~T ze_I+&>V93e|FNc1qbNVIHvbJYmo5KFIT~#StnK?j-MW0~0zBeqx!n1{btW0i`Bf+Xf-eUnK$V>^K;4o#-lu0K7 zC9^{zf&qIHV6MQF0Lm{@gz701#)7v-z>X3)qW^vIWNYSwhg9Q*P$)R40MaVwT#qaR1j{&Yw?4ZWf+dCpE*>Tc?JNMrQsRO(0Qf@T;3HCZ z@%0V{6e1QtDoqK}iQ*w!3ZN`7Wq>+xMh)-96PY{T17%erfS75sKLh4aP-^hof{A{v zTn%WLO$pE%n-ZW$DoU5>p~{;wB|zhAim+s+x6~?;j9Ub`W%AGU&T!bl+1O72r5cH79=-3#Tpv6NT?}+77d1+V@4I9$vU&WwisA3WS@Z2{XhdI!E$tu-Fob12$rj<^R{zE@s$Lawj+no9Lp^?sGvDfI785uBZ7F?ZlbV+&Tiv& z8?&1ztjj6JvbeNvEw&e|?VGLB@922aaG%M~IKKQ2>c`_XZyCh^a`3r)KILt&s(b|R zIT^K1D`vl4R55(@nAwm7#Bzg@9A5O<9LY`M5pgpIw1wbAxCo1NlcF(&@OEpkTRow_ zOkmi|2X?`9`c<}fbtvAP1NnYL%+o81+8Ysr$ktP2ZyHi&`0S-iN-Vjjlf=wNP)*G& zn`B&@WHZx3!{;PhOc_Fw5tIDsA1X;cS0^bBVZta)62$?>bF=gp$C19GQYT}@?X!x! zEC%DePBG7b)2Q@KRexHo_AS5(H>LzQ@W+$@9d}cL^wa9Ir2wimQ-VTyz?7g+9yBF@ z`iB$_1C^zzqA6VBWVaE!i7J*w>C@_wv+tNIhO6dACuCU~SC|07a&*dWlXf!%OMY6N zcFx*afI+_AfNxKPIzVo@iXaw+-lM{WD;2}FjTGKl+E;x(OFo@-RPM%WUJT9XeINCw z^F~-n-YmLlJ5zJ5-;!>LukFl*Ydc$g+nxX|rYQkhOi`l(%(eHXN&4;zaTUyggHfg**@1 zT7YheDFM1ArUdAgm=gR}-I8yDm+qGEsnQSQ;7P8g-3!Zg;I0M^jRfwEJbR%F)@@e< zUDp?HTF_$SouPO zF@YST3L6*X#sKN3K?2P6RHA1T!$~OU0cp0e=5`w|iylFsg{m6SvdP7z(V~nW>12!a3(C3!3SkGLCqA+ zvFo(K535dl*Jsfpa!dlYggSs4b8yFi++NI1gM~E6|APLk zw^=Pr#6XM7DN9aMa*~t#(DAFTx-gdVkg7!eUG0zxBg2Wd0{$PaeEr9$v7oqI$SpT$ zN&~Es)3dW7Q#fve?>KG0L?vg>VrB>#z%O(I2T`QT4@!(R<}(LN-{vceb5o2Zj#bdu z2f@apt>8fIV5z}20*rP{c{*m%she553DO>2yDbIb$V1e@w8SDXy9pMZe;GDdhJzr( zQ4FREIQpT$!!N@T5bDJ#--Xde#c1HE1HA23r!ew)_b})o(D?D0y|rfLBphE84y-AO zGx)$MEXm}JkH`b>Z8;~1J!=!rFgI1Z5Uc13E)9etrd8FG<6vk>Z|?R#lkDCw4B7pn zdvo2es@w&cc5g1$BrV>jMKqq6eDgd8Y2?J%z>d`3M~6r>Vy9H2N}_XiS3K6_N6#FBv!iKPRf zG|6Nj6p|cN>|qwzGsKwxs!lS`B!BopCCTUNB*Q>xAxZHm&W)3$aXcyTO|Lj4Of_9O z%g77biHQ%T-IRRR=okj=TTm!_63u`%-fn_|FGMIB($8kfUIb8Bm=c6L6N<^z37SPK zmIb(n*ZG-K08>~=NebII?N(2KNk{ zSpoQIjVV>1{g@m9SrTV)IFa0vo5)0AzQ&dV0?)led`Ri@$@8h|^I7ugT>2?}I?w-8 zd^)54bk@U4@}^H`QPb6Tm=C zbk0o?j@@+q{oN|VILlDmbTufr*Xm<+tD3Gp$upZSKGil|VOxm-g8_Fr3~4i_v*eKB z9(O19*pmQSNmGJCazb35mj8z4ZT270yw&yq+ZBJ=5IW>D-)`WSS~FMYY_tmMvzKP; zGr2JL_HpP`m(0DjI9dau_1xQg5N|s7HieM^hRmJI1#fb2LlV4p?(HkCar+4A{8Fd; z$^uNHi3%IU!XZfpY$dlFVe#DC9=yi1+fM>AHRy;17z3LUgvE={z{yfm8a)Vcff78l+5f5+TggHsV;m4+y92zZj6088iIy2X&V z6Ob~A1ela{3W6uy>mVj|AW*`j5J9se5G-Cl+iEvLHIo<%m_(?advh)iS6+P=g-n|U z@PSr!$i1>N7GNe)3t0nTB~Um_%{Q^5t4e2RhXi4JhN-Yw1N{wV55qI%(o}NR8V3&C zwSXA3PPk}5A6uy=d$>o`(B*~&v8hrPURE6~Jb{&FLvX+i7Xz@t;xHB^>?7#3jQ|I5 zm?Eq%zL^J5=4pdfV0I8dgk@P8l%=VnDR0|GxM91EI2U2kfg|mZs3=lj5xmD==og z1TCGy;NA}V5}*iVCbZ4eEBL}oybDoyaki{i?8%j#rfN4&p(?a9z8b}Dz_IKfdZ6!T zbw?ja)aa+9u|WK)l5lROlo_!>EnD^UV~<>O0(AIH2~g*o5}?i(H7Y2K4ww?)G)q&2 zrFy=0eU))mkZT2`A1nzlWJ1AX0Z!d9CBUfLltFsF76eL^86kopdlH}`G$nu(nG&Sq zq%m6xuny3a0N*<^g-eBd28akfpSBTTM0A2M1IRW0WDFNQGDFG&UMcpeX+&gVbP`I~Zim+5&8i{q~xu59m&H~amP6BUyrC*8w z@7R<8%Na}=^u{X)l)Ui}!K~7c1$f7%1ZZp>fgpY3^|ln?9h(wBnZQh;F?QaXjo=QwH`+=4gSbEZYn4Suqw!w<0rzH660dHQH^Z-9%x9i7eSKQ3lXfDLw<_ z!IS`9U$&t*kXsO&Ds{q3=$GW-fPTp^Y-;-@du$^>FT@lf^h<_lQ@D4~4gxG>lVxc{ zmZq>pPnPk7-Nx-Es#qfBe#x+X4cJ+LL9QtQ`rXVc`W>)DzoZ2a`X#b?d6_nF@1Q%> z3j`?21XseM(-yKvPs_f#WoZgG$B?S-mnaODZrPUrr+|@}kWR&rtCw3&6kePy8wK%7 zyP3*0nKH0nB4=oeWp7y8FF{*@d#&&e_41(Ib}WYG{jnB(qLPCYLQhHsY2Twi>|yfM@p&)s5j7J^Xe*9MvUyH}-0HipKE!RH4Re z4t@xY;m_O{o(+v$<%#!(#t?<9t(_ftpCGB7pS--NoLS_<-$apXKmG|XQ89!f&wLj0 zvq+;cCV#PE;bTuS)>FS!@u0Oyx8AWNsy&X%fT*Y`pHh88bpxN~Pn|gzSqR1UM!7I9 zKNs8@I}WeDdQEJr3t>PZJT5t`9@Hcfmde}q z;!O-L?{*{I-o4=Vc%}ibBm{f~9XHT1Uh^(y;~99a&UlA40){jjA>(I3v$&+FSvBZo zLlOeZ*0~V+#+x7bOE9nZZ|CRP!oL>!vcJLaD%iaRzjxyI5&WvwvwMFN*H@QO2JdT1 z*H>eCb)WLyHUzEs7_{6Y&~9S_VDAX%ao{*`0yqI2;N5JzR#r;%!vcVpjd_(+TVLfe#EMNSy7`m$Ea@oXKH#Kwhv7(4T=M=vW4o$3u^<$i^oZP#F%8#0-Q&a*bK1x*$Ny}So%OOsI=updx_a_Ie;}VO?A?hAa>U+>x2}otiL8l4mjk5Vcv+GvK zRIZuS5gpDN1XDIRMaT{<06X|xisI#4*$&-#1evAK(A}Td=^b*o9}bv&E;Y%4R~4M{ z8aW(-14?%&d*`8**|^jwcWnqnk)^Yb%Tnayqy=g4eIqh7Bce1B1fSicih(Nk*{7yr zz(@NWvE{IR25QP~6}wH_El{(vd@gfs=ZKlZg{jITx9gYY>`;$-F&pbxTL{idQdq)H zC?;1>Y4Q;-(Uzvl9roF7OH({Y9*4UYg(IpebrU43OCG__{Aj`ssk{DHwlIZh*0l@5 z5kKLWiLx!jbywv$rAM)kEU&hY*+5T9c|$y5INtnih|>oRTp3GfBp_u za$2}hv;$PH2v~^M!JN4am0&VS$xr5R?p-ih;ks&#Clr?#SR~6Tyq+R75NYEO4y!7S zFvQ|@8sm<}z)fm{wh*MZF$~#K0DYV(0lpEe+LlG_)JJI#Eo+X}(hYv$%$S-<5Z|2x zZVWKY5q_uSO}AoLi)IgZZp59UavcCO11CB3f+uV(j*2_by6h#}bT%_ot#Aat$W#RH z0~AZ-ZK3pTStZA$4XM`hL0QG*ysU9r`fPxZ8`)q8?ix>!+^G>y%98sgN9;UCs9DQ{ zR<(&GC>jdS#GEiaD|S@V$WmtC=Ui|S2;D6IPkPXUlEVm7$@z!^v_i@QDz9*a9fzc) zIe8hK6~q;JskspfC-T{?L5%jrP?!dFChBDw7Dts=f~q{{?cnuRFdTITg|hOwUOWfB zWBkcN;G7$mW!jVgI(SmJn+g!PD;o@I*qo+{+Imw4a<`&b5~Xj4oP%arNAcl<>{Nry zGrQ?IaJLzcDR)VLyWNglfYptr1nDsvN-pS&Q9atrN&&fR3vsuZmUzR0aNJldOVq^* zFxqIhtf15?7;TYTY$|RSC9Qa6Y`4CFPG%OnG|^GhE=`JYiaLzB%=qKp4q~#=`4cJ0r5L=zP$lK8<#r|A?;81 z!G9k9(NOU0h?PhH?fn4S{Q=-0kUeEI73;_GJdv$FX1qEC(hkS07kIRSdJV`P@A$xt zAlw9gq-}`x0XpWxup2{~W0ma`%cN_ZIkOM$N%{b(|JYQj z(>f}Z*&ZgirY>eOzNSM*PP_`E2XN}`^~d5*@%V3j0Aa#D$-vP9Zj4*#zt^6>!Er$5 zAkXZmdb`!-S;(JHug44GsDWoQ;Es}??L=x^Uv-T4RV5#l(^;rRq ze{33}tS!iW`P?1qlkpnkUwBN);pc8#P~SF)n{Dwq>>k4NFmA!P8fQ8bc`xtn^;Z`- z?8kGsZbpyc%9$gt$s+nFd*n5(0b2q#2W$%17?2+}{Wk~;zs}xyxScJxI*p<4ILf|b zmCtQMT8qAS$m_E$ujTBl+RIh|H>_VtvN$SR43t3O zUC9j_<Ia8Hw{vcTKp!M#1SEJ#rXst?q<%z+cv_UkU0wf%F<5oCT!c_~c_ zMkfI2qzVaSb40Owi2yX_rUaN$HD$OOZzUc_pkz`dM3A>90Y>7c1lWLUN{~*f4B1kE zd0tZj$B)m3$slhNavL?|T1jE`rgowlp!oRB_N-!+NBS$Yy8i0ny#sT5NJ=nG5{s+XQH78Kl2)@v()d*mxV35o5r`N;dDCqT)N6>Ks=4}fbd}>P78`pm-IxF z5Uz3-8V~y2$M(NE#>!2F+%lMp6{` zbdN#Js&HI9AidFl)LkE~%Hmo}E(yHu2}xNjNbckc_uq!i8v*pXTM#ID-64V@M<76@ zYf6Cn$&?^{-D9>CpkXm3s9hbj!k4b1J!eiavj#XEowdL*PITZUl7BPjyqK>|l}Gk? zJBXM$g$~Eybv@I@3Ik=qXUAcl-IM^zWM@wRVKyazFql%*t)Unyj~~q7`G<@=6*~G@HLncq%57Xr2v(*DFJ#E%oG|c!U`{_htA5D zgu~I6S-TOIvXtv!QkH5_43;T6 zfFSH2K!3%Nup+sU zplXTF;b{BvEIsYaW3zP3+R72>E_0@Qv$~J=27@Q$W;Hq_!IU7GZ_>2WQkHUoP|8xT z8wy8shb@L-W-8nTP;*&&Q7q+@f5Orb!L-vCg#D0VBP2LvH$lqMIa>-)!Z>mni{SK~o0tbpU}9zJ>_) z*pmPKkYVJa3lf!L7)S^uhQ<}+0t{$8gwfx=ovvwmaWpf|1mav%w#n;6Y zKzvOJAikyyV)GsZO4uACm~)DPWUq&}e4v4M1cH>!4Ym|Od`$^ZuP{^S$2)H=a`W;E zh%Xbu?5MpE$mU1;z-FISkjX7C#tP?2AuRlGES?+EElh~BLuE+rd+HPw3%rSgRjp&` zu^VA2f4iBdguf&Z^^gMyAjYNy5MxsY@wXF!68?q=_SlmEVr)tPF*YSg`8!}s0mRsp z0R0JO3hG?vZA@-DPM*~;De%Hx2omEvD8{*KPg_oMsQ^K3EK! zGE)X|zlntm>%T(;P4*mrlmMHRO%b5bKA~2j zoiCl~j5YvL#*zSIrxY?4V8CQbfS#-=gBV+nKnY_*1S9q&z!1@t0H3NULCV+(TME#3 zHzmM#z)WF?Mp)r39T=k7lCVE!QS$XO-+Y!T2r z!c7sD>L2I+g$#;k0V&f+fN9+d7Yi^XG9^HpV#*+mWCei|J#UDh-JS#xXHx=*vnc|; zjYGez%WlGj3o&B>YYee62OZ@H@2}ai^b!hHeECE-Va-aYv$F9iM?l@T=6P79{RY$l z`uJsV-VN8o+fQTEajS(%T2#6rIxl`ya5pcOV$M41nd=W}$~FZ05>;bf;& zNcIg*_K&tG*)Aq~DUc{0cNl>Z_J#<$?MZ--)RX`psVPCq-acCj(AhC1Ku?O9!a&D)8^=1837Dw1)Q+mM>Obs?zcj`jAcfHpZ3GFFcG4igxZFw;b`xNgpr}y+ zHU*jzV2afgVbP|*Li};%xir9hB|IiU5q22`5MfgSh_ESxc$`O|gvTL*iqee*5Mfh- zuulpDO00BhVlmMb^ z${;rPAW*{Q5J9&+2_VX*1Q2CYf|SjDwiJM|rUVGiOkw`hc^j5nP5@CRh4#%}2x9Y@ z66KSRDatysadd=$^G-z7oEeD|#q1`4D2o~uK$J}hAj+l)OGJ6I@?7d*z7igjK$aU^ zMgc_GlmMb^${-%MBT&NQ5J5PFQUFm_E({Q5Q-YMokz*A=luZes%V(ybT65l-$wRU1YD4RSQD3wubh%kM3e;$;DFM#cH6eO6b{g^7eXq^haNq-SYjcMU2SM9B+lQ`GMZ6SqvNIo*fwTLfSd9}l?B*!VMOB+@@z@~)|nEdyp9~J z0P<`~fRB@z!U}iitx0Y<0pyvH;cK=RLKUx3MYE90@S1}pR?!MwZdQ&0HQH)QfGXOQ z09CZ8vH%-vObJj$n<6aX^U=u1yJ2UiaBj0J%0LfL4H+!i8qe+pyex4nO3Y6c*Ik3nArovBVOlRWxeou&$%b zo?bQ{)f$bsL>)?{cvWykLKWX`q8+7{tDKAODZc5=|0s1he1W-wt zGDy|ci9m^}D?~7EPXb7}DFLM16ak-1s_J4a;DN!JgQ`mh^emjt6Le00PqlWu<~*pF zpz3TX&H_@llR!T9C9>8RE>vrxd`@pT zt`|}xpMoXzvxgb-_Os#^q=SF--oE)0NG@Vc|*4FKX9JGETe@mAr15@ zyz+BYRDYS2lJ!}?ncT}j9pu&yWXsDrbL|X>JFW%kDHt=aKsSY|UubrdSn~0i@RYeb zD0~y^ObH5Ky6l&!wf>;647eGfp^Dd!nxO=#fN|d?tcJf&FLK64tz_9iQ_D@Hykt{v@m_16PD9a_pp#j#tEfH2Vbh z%{)?hH{5mHec@jrF<#GVIG(&&n;%cu<9%Dn!N-qai(HtHVbQR}cn&)^un-!E10B}o zk840c@+Iq}^gQ#wuw)Oj?Xbpd`zMgVlNTQwe+VAo6OX(W z>=u?fZu>*H!TkoV!X5^Phd=|@j{rwn_pfTr@1~a_Sm8~rABPovwB}bK%`v1m*1EqL zFw~kS3}izS*)}lqUL;q;9<*o70p`*L>0XlLX2VWdhpkDzQMG_Q;ND1I;OE@{AM=y= zn)xMa^V&WE^YL4LpFc;CCl}D)`1^c1gcINAm#$g(K3Bl1 zGJDCg-zN?QdIBHhBbD#L{Xh5n#EDpsD=~ke|MNfN3w_4xRQfOf?!p&(7OX0dUz~mg zu7m&oFZBQH7h1hPxc{*cREKKlaJUM@;PK3<;SlyfHi)G4kenL=o~m0Ka5hrFQ*}=R z=@Izbk~!b^HehTHG9Pb%naN$q?{WY6FyZm|{p*BUVh{Rs(pxguKZL*&_-ZpBJ5)cB z&oShFndwX_db5lm&Dj{dkT#yG`?^Vw%l=et5FkAPnmHpT38ay(Mx^*!@5ojk(ZtN7 zYM&+G*mOa1MAOVA7;C$#IGl}7zXgK+HatNiLBc;AH0fTcVW>Ms-EEn1uT!$WKP{uLJh99q-`c>J}>^!3Q}eP47l_+waA zVnmhH^NK7S*`KywbJ@#V5%c1y@zArl$Ijh!IWh;c9buiVaWy@kL%VOAQ6&h$A?GjpK-v4m!!-y6wdf0HU1{lw7 zgwejP$M1%rb^D(NFL+z)C)VZLj%54yP9PUpUHBZB*fTzvInZ_l9mwJh6PW}5T6x|Y zvB$;m#);%*#Om;2RWUPs?nL%du_p70+EokT)kIg5IcsitHD1j@znV3$s@wynC2xG$ zMA{{V?&u;BC^uYP10v-3s*v z`wz7$bn^Coj}!)nenHIw?e;}vvbrn=83hQIytuSk!=T=cn)y%{02u)AXL`RY=VI39@ESb^GO)!<-#(IVuw!`}362 zny*1F7Y^AsySx_*=a4blVp4sg$H=yaccb?qtk0|Hf2$7)CiDMr<^K_F z#GyYt4!}l_$&C+Bwi740T4J2hVATKtQ>~^5OEf*XKKaoV6Y2Qcdr5wa%{uj{d$<84 z8DED8CY7-FH;Cr+R#?Z6uhBwqIqA8!ta_f@Gg;!iP3M!1$j$#zhOQ-W|=4fb);GLij7`@uRKKmZL6Glg%=dD|m5Z%0h`ignlv0Tm24Ufx)UuLp&B zG}_&LGvrJke=#TPL-4~*l-DpIR?5-S`#Inlo1Z`^j_GNa&3y9V%zLk+xQ<1yilXEA z6!tS^J~@$jFKhD|3=AU2dndPFUdG6B@SRrVgN!Qq5J}9u12LgYc3>3WGR3(3P7KV7Av3VX0^|vml8cp9C^F?EnI( zw@e9=?p5ezNi>>R)?{s}BN%fK0akLE5

UN|1`iq%8&b(o6{;=Zq80iKCvAn=fX< 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 +#include "jwt/jwt.hpp" + +void test_basic_header() +{ + jwt::jwt_header hdr; + hdr = jwt::jwt_header{jwt::algorithm::HS256}; + std::string jstr = to_json_str(hdr); + std::cout << jstr << std::endl; + + std::string enc_str = hdr.base64_encode(); + std::cout << "Base64: " << enc_str << std::endl; + std::cout << "Decoded: " << jwt::jwt_header::base64_decode(enc_str) << std::endl; +} + +int main() { + test_basic_header(); + return 0; +} diff --git a/include/jwt/test_stack_alloc b/include/jwt/test/test_stack_alloc similarity index 100% rename from include/jwt/test_stack_alloc rename to include/jwt/test/test_stack_alloc diff --git a/include/jwt/test_stack_alloc.cc b/include/jwt/test/test_stack_alloc.cc similarity index 100% rename from include/jwt/test_stack_alloc.cc rename to include/jwt/test/test_stack_alloc.cc diff --git a/include/jwt/test_sv b/include/jwt/test/test_sv similarity index 100% rename from include/jwt/test_sv rename to include/jwt/test/test_sv diff --git a/include/jwt/test_sv.cc b/include/jwt/test/test_sv.cc similarity index 100% rename from include/jwt/test_sv.cc rename to include/jwt/test/test_sv.cc