Qv-|{ZBgYe{s6QGJd&joAsXL9+1{7
zEFL|v&g^)Q-Eo4>)$sb%>{o*pZ*v+ObYrZCf}ADc!1wL-bF}=1tTb^@DL);e#Cx&B
zq267tD*vomC?8lof5<}dU401_;&+t20~CjD7t2jM-y^lVk7CJE*|6hlj!g(m?rss2
z@+~s^8sU=T;GLJEOAI<4GrpX>e;AMylx`IQNlU;
z59ZF#aufP=Ie46%s88U)60e-Z?Bk}+gy}lH>iAA~Hgr8$FegVpyQKVvp;pz}qxL&z
z5H79`U0BrdwaOu7eLJc7y`oJZiSc%Zhs&?rY2;^i!}QN$JFV4w+gD{Kcp}0
zw$`g!V)Fsxj;C%66WKh3pzZGZNO{qc{ZGoq3B0@cTws$bL84l0rg^O94%r^MJI}lq
zE>$fMFqG)C?bN!%`)sbo3^<_qr2w+6%T=Y3KgQ`MnmPjc7*0+*#3_S*x;NJVs-BDncthpzdy
zK@(z?EkbqT0t-@z18ckH7Ym)$c)3qUBwMOh=ZURaZC5ov=?Srl7Mo^Bc&SR76CTC|
zFFF2PM0xb^rPI|iCaCd*COhSv+3L9d!VIZeVcsr=;?-qN*Sakon7zJky-Q^>ubOh`
z_gmXM$GXR8_|#j-@uU{qiK`h>azP_D+WU}wed)E;k1S6eGRUi!bs_R*?|=H~>-EVF
zF5(-%6CWyDNKY!f^V)Wd_wjn^`344O)17R;|Ii+#(En(VLf(gG_q+X^__a>s({^Fw
zoigLZwVo{^8wch$A@hiMVd
zAC5YDm2j!_VJ(kU@2lUp@m~_IU&B|dHx|vrq*JLI_;ht0^ZP-(BnW*KK
zt5w=cV{B~>1}rpj{l-^O@NwMPpZDkg&)US^V3(?#(MR@n+wXN
zdJGXrFZ4T3Tr_|%f4kp)ALpX{ei=7~Ctp0hfgll-Q@isxZ?=I}#fgBqJ+2Z`{$bl~V4tCflm@Ii;pnmpJUI)isJI%J8(j8oVF?q-KB{E;f^30PJCWMUV)u>&Y
z^E8+D?uo#umjeTo*N^2%%^y8;W{#HRO-G&yi3L_F?gBm{0X&WYylQuT>HGDICT~K_
zgP(+NIsHPQXn)FN7q5|eylN`b#3oXOQ<6E=)ECCGRA!H$)e
z`UX4YYX(1>IA+*oBe!_duDfoY(?7RY)9mTt!_ga4i%*Or47G_{|5P$rSn_svRle
zop>X8S2x)rsX%31akTdK-Ra?iJ)&hCBmB~Zj=CQq6sLaWTdB6+UhU}S-p@7k4>}E5
zQyVn-{gLR&nVq!OrQQ>~SiZ!jdf#%V?$hN&4qS;&$&JW6kfvvB>+{+rC{1PV#8jD0KJbChbK#F3%S%)5P>Up{esm49AF!-jvdqu*{PGYz6H|$FF
z>et_+swBJb@SDek!&T1n>B=Xbo~?d#_H&8hPtA+2*C`w9bsCkErsr^YMoRZ!SGu8m-3nX1v>+Oou+MZsYb0>A2DE=xN_!rzghC-#?jtY4`E`%Jg;p
z)4O!yTfMzhO7wEI;c$N)%cnV(=SMC6GGh1asF(x!?ygn+_kLFFlv8W)u~NuoTaQKN
zF1|OcqQ6xAAS9FGUf#RQkD9wC}n%S>Kv_mdBMSX6D>;p_B#avg7O<%OU@+rtaK2VV8ne=^o|W&NVG
zJ}b-SnMlN6+p{Y|HOBEvp=lq@)oPhe@@spBT$nL-S!%wMikOdA?toLP`mL(mdZAmv
zuo-9Kpf#hzvyzfLk6$zh>10O%!b>aJ{3&C<*_8%Mj<6DVl#JqqVR)Yx}EOm|^
z>o4(X#AeU+MoS(B8I>=5Jj?K2_AaSf)xGldmfu}Jki)r%reLRAM9O_58VdQx|A`q`T$mHqAKEwE6CT^7M>{K4w%wdWT?r*oO
zGanW1`lg@pXw!!JyUuw9t2)$AjaHX75fUDsxn_T+%!K}rv=%%FTWvij&%I16A#%m4
z5nJyb>n$*DfZ+Ef7W&dFo)V<{$4ojIbu=+yvHC1Ey*pJtd#Viw#Ln|13V%AdcUgi;
z-bH~9-4l*XO>(Jn7x-$wy{OlOFE5WSjd)~uZ073|#h=dRUQvqiSvbg`Xh63TS)bvr
zauRtuq{g1gFnoAmQo`w>Po8#~c{S_sxnz@WCHC6!mlqNUDvxydk~^+FIM_ueV$DFK
z3MKc%D{C%=EL^91-)dfITvFoG`LjaAhsg|>G*#?^kay>hg@Pu7=7w+MC+v9I|CqVG
zN5m;}kHXzf>v|L{j@xFQR|0iVCU1V>rf@T}&%t*0Pua|0;;i-6Saa8py1?;S_4Zk2
zKY9^-M8%%=FW7W{s6pYR4<8bC#ox>oP;~3-vT)*_h~l*$*76!k9b0MkS!JVsarM3$
zuR~hLH3nrqPEgL9H{RqzpsVKBR4EIqB~dcpqLgKp;)tY$~-3T4FxIJBe(^DZ(S~vZj=N$XQR0r#=8HU5P=VcgJoz~o>B^NBS
zY{aJbk53A?RR^xi&~_WyW%Rx$TQqE@hu5ffJuEz0xBexsn@POqj_`!p4zdo8;*&Q1
z4BmKkUspr9t~%?7S*4ANB|Pe%S}Jy_;9QxX&sPQi=VemGt{oR{*B)HF);+fG`y+(+
z`KKMDZ0)-dgev`hj$S{$Zg%n+2j0AS%Lx2-3yX&l4A1*}o*xsuYhSL0(c9XnB)PJF
ziWlV^JnzPYo}IvBbF)|Cw7BD)ujE&)=9g8E^t)fg*Eh#rc1gEGB5@|q!e6I6J*C|9
zfUCu)L906)%D$DMVi(2kpU-)Dm*6yb~Dc(9$^q+qP=*<
zlMI)!&(`^dFY$KUnc}YfI_$*lxv$h8dMbDEI_mj8qi3&453kR^(<%Ah*Mn-^b`req
zsf&J5DV6ohF{yKui<#E7#%*x6?N8I({Y!b>-7{m#)^s@ZBy%vqR{EL1h`2!cSq7#h
z(*mTnYF~J25}&oJG;K^yS@p$-nQs!KJW_TI^XjhcVJz~sV9sLayvmbHw7XUm=6POn
z3*bG!d9=pmr?;{7~ESV8YK~n+HEL`#EcRu2{sLVb|m|1r2$o-+Od?kN3P)Vk>gO
zb-V3eH(d16Ri9*`zPZ^QlS&SidQ0;k$~<6o_QBp!M|F4i>S}OgSc&wC`4jldH$Dy!
ziJb6bR;*U~=2<(c{Lad~nfrN;P=7;SN1K-i3O4c$4nHY3-Rf59BhQ}?YzQ@B%Pcm3
zH9uou?yR!wWG%0x>&Tc2jYrc6D>W1EMV%ywoqx4;v$#re&oNPjXJ3p~;2SoWaO}9y
zj6Pagi8~*T_&htT|C>Dy!OwM^eN1QE(&?sas4t^_rHJRy*2xoy<%0+#%vX1edwO%a
zua~2zn{>_!=M3JF+M=D_&px+m_3)=Q9arwaIHD^1Mpwb3>=?@SHWQRQ^=J*9rY+
zy!3kH73eyc5PbSkuvWB^hnG|Iya`@eA^pM)7t|j1=xmsgn6=!WFOC5Ip
z=6l}r=ZbzYM;#TQv<_0U8
z_17xr@7gnA=HodbAKul*2gKfcToqAbBa&YC?EUwe3+D>g3K;g3-S@n+cva-d!@)7;
z-eODo_Dm>O?f58`_kEW$+94j+S@rKVu5_|aGtJ%S&$nsu>6$N&uX(MKRZB{I&J4_p
z3VED5cG5OE!h+Q=V=uh6pW^MXc}$z`Id+nwJ5Q(O!#BsT?w7q-fBlxP
zayLH*m<$(IH+FP8-hZOhEsM36P?#h`;=Bi&$=%j_~P{wB$UV4x&D0J2Z?FGZrZb4;{01l~FgX
z`z4{CF;n=zc8HJcTf1%HMxp2VcI%EN?K+{bJAU8hC{+g!H;GgEYrYQ`a+3<5oU5^a
zi)7?Ajl(+zPMm6b`5JG{GT~8Uc8z{;wfNKZ1&Nydj8~tsJnbG_JpOE=+ox$N9%W;6
z-*l-7JoOQ}K}EgXtBpl1JTICBD}R<)ztg+V=t%`=V8um7wRc*F~
z7@alItJd6aBBH(Z%-(~N+lvaPD8xtp)Os*eZ=m2ny^5)U3h`64Pw6_$m~i2JLB)WP
zS2QJ~ZdDl1^^e*i@?1=an9y-)wU^ACBo)8fZLhbDe^awSH#T~z!0y$17F^|3v$UDs
zYsayXzOw5>6?Ujd{T%wqJuv@Bg43tC&3hA6+=Wh*PF>*_FS9pI=BN3muww-}3S;X$
zE{@S#WPQo2dcExWF`q@=^ut1#E$TNh
z*kWi->Xm6Jy2&Xs^&nl5wZ>MZCx%vh9x?ktpsDSi^r*Tc
z*Ryvf8}%a$o>i1(D>F^T{PJqM6`RlBc$alsfKP$XUo5Ou^%hw5WtHg3J14eB
zd1x2rJ`70-^p^6u)&0fYH^Vibk1iXiDj3(NtN-Uyr#w_1cC#!VHaK59(6!@`*@n0H
z<4pw@RLxhe`xzm0v_qZ$4kx?S>s;;_)!Ytv(X(!Wi?P$Hs_`q0s&3odv9ri5>3nU=
zydh7kuZ+)L>p5k-XE*7-3c3O^1w2=bWlH%ECyVI%gn>yofUn>_q8t-eGL^!NJ
zhIdI$(4g14BUQ>0?+i*Uoo#E^KPUQenSLK3g9~|9{jHDU%c?4O~Ouank6U++8?UPiBymc;&RTrF#=g
zdZc!Xa>T_}q
zJLlXJ4D7YQz&2)+X3m%j`GDJzYXr?jl@*0dRz*0Qi)eERnY5(Lx%RvJ_3(QFvz4H*S`t{A7k8ZW!I<&v#kRDSu
zJ>2r;f!6mWB6dCeIv@4(HtD@nX3Q3VEkL?aoHMUbR*_hJknI@Cx-9Hdo?e;MR>sy`)?h)M*Uv^LeeXW4u-`e#znU
ze|9yi(@Sx$a-R?#se&+luSYH@v|fJHD_guZ}++q6R^>6cxmAH>ndqh`_`X%5FfW8#ACz8
zw-3!vi4k;CZhGD13plH*YyB{7#p!(EMaL@5rzmUex|$hNoGtHf6Qn2VB4YW;AnB~f
zR;8f0eU~4_KTgiL+avyIHe-NiQV@xAN*(aKt4f0%JldBN_Rgjq)g1N-Lg
z`#4j6Q}>E*>TmmP9dWyVPOxZ}zu2f@u4PxVXJlrjF<9)OZdL+U9rx4O6oHAkbc)rX8j!MC~sLd
z^y`V29kg!WzPtPD+*fyY4yv;lpZ}cDX+g@m8U3`Qk0mVsH%2v>TI>>eMQwYbD$#>RQ2+R^vMdcT}m
z7`Z3J?na;K3)g<#uK-chn%nI2c;I)dmLPP>KJ>)I06XQm0&n_XJt7!5=wtW#J#im9
zI-e|idpD$Zo#@@XBfSEbqI`z`w_j(N;=7GqxzG7=ND;IAkdy{Z>X{
zkC*S(iOE0n?_b#a$Nn4BF4&s)d?`I+M9yu=Ps;PphRaXvYr9o?)9erKV&-}Z{!d@r
z;=lIzpz>3*KI43LbahZ!yL_dugG5&K#d~q?E@GVtojX0vRFm(p!E=UU`3K)=HI>89
zxn+y!*=dL4-!U%-U(k|*7Pi~*s=XK=nWm@Mq#6FRpuu<4rg|GzXPTp*pVd@tqo$0K#
zS#YFt|BOu6S}&1fyac(2x)BS*OkRh6Q9R=;Y+vcUC~Dxe$qCj234|MCUHiF9IhMsn_TZa;-ysT=Iwn$H2E)tiA?qzJ|MMd(nv>%
z*SFKNef@6C$4b(FBWyVm_Va(ucw
zBR?zMD^yx1FX8V$$?K-Y%JchY%J`jG^=f~pI6?S^X}_nROTETshcAC~diUN55DW(0ziGjT6
z1Q-Nx1cU>!0UrVN0Cp3`Spj$ehy*wRh5$(K-CwN6zeaS>H4i`%FcE<7^)o;npsfgb
zzXV`CF%^Kap)F54u}K4Hk}?>I!uRr(IxQULhPLX*#SqM`xN4dy%6@tJ_1
zfPalJP1vt+`2PJn^upQ+H30hH2Vno|9)N54{_Wd0VopvDF)l8Sn3i&DL{I~0J{KOd+C4|iR$a?iK9o4CgnTkJtb6BREQN7*v026)dIH=
zfYiTU4L}<4oi_)(0JI6^<>e9i`T3jVJ7pQTc=2MJ$OTOE0oH(jwJzv!_UzexkiIr;
z(?5Osly3fCx^xLdY%{8V_wHS!oSdBaKUNoLL3$pnT)DE%6ia4|?LH$TBdYIz-@bi`
zA3x&oaof>@2M>syJ9o|led+%LWdO%L<^d`J#A(x}wVh%qIAi;7?AWoyjvYIa$^kDg
zFLCJ5p~Q@g3<_Uu^EWLmjnp0meN_Y80DtS)5%zI|0N(*5J?rV|5r6#n(Kd>0#2-m-*f6yCbz1KYN(T(*jw!hkmwg&wD{i)?Y-g^Lm4F>*bQU&R9
z0kqOUjE;_`o%mKf!SBk?pWGWpLSCHsmN`2+)6^a4^))~p@F&tB5Go%)Pk!R!#fw{!
z%fAOLDJdZ?T)2>kZTCTg1`+-I{D_}FfBxMgo9LvSmc%foUNF%K>)ot5-`}Wa{
zpN5XJ;J!4VEeQMfzxDCpUW;ikHa2c`TP-Ceg)Sc*Mw
zhHm^cbejP8y8^gLI3|T-JFLh{?Ao;}@#RZ2n`E6(*Yx<~cjob9oMvYaVSOVmE>4%{
z_U+qQX7=I32co2;B;EMwq!-p>5cmPyB4=P!4`5YZVn9Fu%eumV=gys@%UeJ|fcWAC
z`=%LTUZ%yi8TJcUC72tdo1PYQ{R5ukSTQ$f7%(A?=fjm{nQ^?mwic(pStGRFA&=iv
zlS4*EhOIU|*!D-6sqw;l*yc<~NMI>3*zdEju%Hl%WYkcFnM$Z<@VFriiLK(y7MX3HTaCPqX%4|dbrw{NMo0rB0(wmYjts~=0&6O-3N
z;GYk`ZW<2}w(6S?;hU5RtiNyHzRjxINd3DVJ9ZGeb?ep`FOHwY#>TQ7XG;OmR#Z_@
zv5_Cz5TacJ+Lf_FuV23=_UO^0F}~(HV!@4bhIRmUk|;#>9KcRFNpazKuQlW7I1c~(
z`E%ld0|$sFPMjc?mg2Gt&Jx-Po;h=d^v+{Dq&4!pxVW%gr;txY07(El2Sb&InZ_J_ufb_du`;gD{zPson7h&b2qg+nru(mra`D2|NR|DoAV5)183baZq$
zmG>BL4WPCC0bHLD%gMaQxN$xuA|m2X&Mvmg=H=zZ$-F1WoecWz3}BV8&DUtZ1^>zM
zvi*wv^`fF8w(I#%j1c=R7`H%hR-Me@Hsae-*xzP5FvhTqFp&^*N)&weLO%)I=vZZ_Cbkn?I!-;QV3F
zo;{nSwRze(=*Bu=GJp}n^=BM!^8*j6x|li@x6%1GiJtukEq$=@elo;`^Y$%~8hEG!
zP|Y7s-bdRf925Ch>GbK-T-PZ@eqldO3(yjAY^)C$(@npjq2WK>{zrSHR@ivZ)m=-v
zZFs(~h0GU*=lKnO*};$DIB*OI-;aNt?Ck6q)(Hplp#ZhhMN#m8q5NXEzpyaeDvkSu^RM{bVRinNS&1tvD~YnQvTdT{
zhCDk@BlEFdc*E{|WhA~nefqT7x_h*}Ksy9n3(PIT^-7HBg+qScLA=z~l475~P2|Eg
zTWvwOW`}Hhv3BiRu8Dws931OxD}4iBYI6c?we4awZD^~7VGjjhi%
zY}nAqn=AttuP=ZX<-X;3TtE#M`IFKvDk@6ai;t~}Wgs%N*Rr*>{Z0SVr%z`fG<&?@
z+7w))!fl;5@cRZ=9Ookw_6fKy3)a7FK}ktTRPBaEL_~;h-f(BDX)J>bto7z(p5PiD
zGVO&woaFUe++DhKVe9%VM#~ZI^NM?Y(n{~nojVzgs@4AX@83^T4qEcD@%~|mivZs}
zobS2A#&{V@lfAuttM$i91VKSTbmhZ6B)GK~6xKEP4dk}&8~EWm9?W~R4Z%Jk*W|!<
z7urp8n{ceBCEFWp2gbz2a7{Fv@8qWLDR|);K5@Wc09WVxuhP8)CQO{q7!!c!Sz~gVefzZ_;J#jLq^hpwwdYa>C9v!
z%YLh?t4VtoF(MZS{NOqvcMil$^W8ExHz(p+T5b~V_lfq!%%l_db>bGSTD6KP*_cU3
z3x0jz`JNX1uuV2x^LyjQ4Q{EG#0Tw(ac>@G(}-;pPOKrNmUy&xq_>uxS=pKJe+c~I
zd=S(6VI>Ui$-}LAHnN^^eJHl+Sdka!X}CeC6J1?hmSkilT@+#B;eRTHn`1KIyN`Qz
zaFcG{yxC-om)UgUcn~}Gbz>yWX!p*nd~EQKcELCn%yHgm-+_BJaEowXNF^nuR;SCu
z!-Fd#7ZemUS;x+eJOLhP4^+wxUai?5f!Pee@f#BplUCV;c%0QQF`PMpXVnVHDX
zYViA+3I8m~hxRU?K7C>~8(H#?-%@tlS8!{d0_`80?=8ydyn*;}?6(8sREV=?nMg<8+@7#}p{-xHy#-j2Fu@H`b^uU%s5>GRkE7
z@!cBV5DH>Ann}L&m9g3^^SQSM2*eYj%&}{G}HT
z_qA&69?!JO0M@}A
z9;`1GyurSAM*Kj=oJ7jGk4zvNf*n%IHFkz?t1b*wWfA=SijbQzA?AS4O7xBjUaBuVh0|s!q
ztRIBDU&`+M$2C1@*TN3MJ(qDzgo$%;IIXkB_|c{W=WRGe?(Xi5yx5&b4e@!wmF;W3
z)z#Ho{q4uL1HNCluR4d)&X#yNb=DY`sq5FTvqeTa`ondAs(@NLewdbF_hv~h2J#d4a@Pc){r6i2{4*>E_K}$#
z_rbOljul#4TXSn~Oor3bl5WtZ{MoZ-94P}FoD;5qbcsPb2G;p5r^g$XZH#
z*KrL5+6D|CKK!qE-)ZS#^ytwXSvP|FV$kB*%KKRm9`hcF?R@}jtMA>rmo#sRZ9!aj
zg=eVY8VsD{@b&d2;&?jl_Xqs{39MPOhVAPba&vPz)%L}jTV;za(
zCb;IcEyr#+l}?No=Lm5wik*bEOnA022jrd&agwPY{Nd;x{}4YX((uQ{iD#1HJIhYO
zbCTGsKV0vH>%Pc@`#1ENP*9Lvd4PR=T7>&QzXGs}S9?4Sy2LVo`~S1jFKFqk
zYbNpw&xI5P(4+0}usz>6qysfIHKxzE!M!Wklqa~)S4)KRfnNda;@KWgGhO1E7_^PW
zG4YlN_sTFcGh>Giam+`frOb!tI42MTUvmD@hw$RW}cFl_=
zL7p;l{tI{`7y)p9p!WRZunur81n0}q<{$SRyMO;a5%;FWa{_QbQa0Ivqn$t6`7lat
zcK#a(_+jM5+Vf~p&r+uEZfno~zpnfTLZ0z3ozv67ciHTw>hGrl1p)+Oz8L(Jy~x65!Cu5Aq&<6S%CI>fHOM4_iF%!zW>C(*dDk8XfFfo)d7yXqHg~N!hXSN
zKzkWrj}EYpC-ygFJcW#CKZte%-vI69fHfW9xE{{qw^jchShtFB9%>e#eZGMC{I3AL
zIRUsmt_LjHPD3EZ3_yE5z?cpmfUbtIJr~+GLSbMZ1ZbZ(qFn~CzQ_4{PS4>2i#8#g
zH$pq2JV1M0&{PM{K_}w@oU+}3sQ(xe0ZFz1ssR7*<)8+15CHhw+V>!Gs|f1?v?aL!
zzdciFFNhgP>R^L;{Kde`;BH1F}T}@Lk6~PCKz*12{H0c<}j1MC2S0Bk#!1HJ;-T_*55{tj>#fcZTYfZr!<
zue8%2pn-<7Y`TIdssOBm-2hlmoCjdOJq45kJ_9Jn9I$O(1;Da{d!wUYoO9g+SPGZ`
zz&J7Pf2yzkYyY`?Xqi&%M29_8g7<$n;BgZV=p^toKF3ZwkOBEd5JxiyDGAMu6`biDZ90&u?&&MNB5U8zS@}yMIYU68_gMZ;YTZ`UVD#(Gv)=_`E?{
z3_+4O|5sT2CFvyjKR1b?&wp+b!~dM56j87z>5zgwNdOA=BmtVcDa0WOlusEy2$W3e
z27#KpeJG!UfRs)Yu$jAwxFB$IcN6g;0nOb_#D@emcQ;86B&a2KepC56wd782>YuMA
zw@*|5Jj}YA25)!$X&PWQKb!kcZknJL%Ts<+|D9TLw^aU{KX3j%HFr0EADg?Izt7Fx
z&FcfAPm=@@o4TPsNv3>GrT)pMd=B+hlLSEp+av){0XKIyNq_;7*hFA&sIMvG2PdU~
zr207dKM$n(I{!a6sXnI=h*aNG2q25`Q3zmwZVCas(fuDo5<3cwkk}E4jSNZbC{id(
z3jQAhgJ15(6g4=>DsG6bQH71)(*_C2!5buMkOm_mC9#1!x=Bg!#(xb2A~rn62CN~#
z2f#y+gI^#+*d)5kFOb|E{sEzQ0g8Yb06aK627reseE@t1kO}{P1mpoO0k#8X0+axM
zRl5x2?En}B2nM_Y`~6{JiDPK!t+|7(PQ5)9vHqL+shJC(+K%uEq0ZuqXpP!#}1^_+(o$YID=)ZN616N$Tb@1|RC
z+S=N-C}%@D&^C*a@8Xh{(oOk%%$PBB~O4mSdkUN>;zCF
z%==FOmf~HybSXQNNH?yH8#l5fV?)}i;YzIxc(9swtfR3%%PqQo{d#NCk73sVC<*7=
zp95Hmcf^PhT&)A~%uN{?8J1*iNaJg`QjVqRvzm4cckbLdma{%7DTyWB;rrGanIY_G
z0GZInf~EKd3>d(2-yP4*R8UYL;yH-SQf6jmW7~>F+4nXi9^1xf8^BWfv5&(l1qB6>
zc&=Ktis>kD%urQTl_i-Q()tRnIJPbaKsyPh=pe0}};H4*z2tjZ7JW&*ab
z5?)eLlKA;EYr}x}?lwOQ%h1q};dE1aG%_-3P5O60+Nq9jw4{?wn>JC3!SMgu+FGKz
zy83T2V_zygJ)Plr$R3XzIr3XvEy+&t{0jVkK;dR6ET?Nffd4Y0O|GB@r<~~j~_D~HI6Ydn}!DeAK;2(0}O}n+_^Kc
zu&|J68FO=Ui9LGsXpzs9DN~q^yA|zWoN}i-#?@RmGiJRd!rJsZ6VhqJ6kD>1$<_V*9^NABDh{D3cRMW*w8C|nx4Wr2?`CGeoEwelygFFnie?&w?
zTI}axJ%{xp>WZ0k((>D>Qzs&}6&WS;ODirK_b!7^6Ji70|+qZA&
z_Aw~Z84Ul)Gy?v#S-P0vjblahzQZ^s!Qhz4D01TAisRobj{!0xKRf)QUC6a-*Ql0*
zSFc_%^8LlJKg#iMa1vIsLpE;3fqmsgix!c-LzIeGy?Qkx<=6`o+>CJjDa-R;5S9_X
zZ1*E5C`dFjGb1iouz-kTVGOjr(5|6pv$T_)er=TwF7l-{|A{)lGVqRzvar28v>-e7
zcWC83JR;FT_~o`-+~VijkVbkJ{1)8$2X&ARX=+~Q)6#=7Jiv9c+{zbD^T9e#l~!VD
z+_#7O4EGDbFQ?PMYWz69=|m%qE#2Pr2d9fsee8iWU>}DS!n)uzfKgt5n!ocPJ0mu4
z^mNl19$x$lb$~Y8XuHi0LLK}~j-XXG?30rWyBeY!IO9$}I75tE0Fky+kZsrn0X7*(#{1yW
z2d}V40bU>gCI-lx6zso!WeiBcVXg(ZAd&Zr5zZ$$37yE-WCDr!$XB0VZl31XU$_69
z-{$g>-O0a1Y)nu7FLx*MwYfgXdTOpevR=u0Zq$1+MhN*piV*UJoKNI@Bj+P#7%5-L
z`3y076N&gCR|7Zz8uy7%WdA-9P?B&j2nE1wKnNfOPzx+5~*hAYa#XjvKpeyR53moH!5oE^zcUax_?TwGkJ`oWthn}&u4Nj991qqa8e
z#fulT=Be?07z&_ASZ`$knx~)S#(gy^D=UAK4{b3A4H`tU5yExD^a$4@pj|bt-9@{i
z=G4OaqlX|Hy|K4-v}7mW->?Cz=ido!kMMiN2w}OWX0M5Rt)LALnHP=g2Dnd+dc#f3
zBf8y
z+@~Z-aNzn)M$%6-H8o}0j+kD$@V!RcWJdXeKP)GdZNBAeZ|C#A))3S~+jx
zp}|49CkKPFtOkEb*apu4FqD3@`DS#F9MmhL>uJ!w32ng`l>_`?J&Cf*0qOw^g=J)a
z7qWhF4JX>FqU{YMgzH=wl>_|YH?1#V7NcR%cA8q9O-(kePqnnPNb=CCbDM`dfBrl(
z@}u85034TRC>+|EGD?*8j`FY{0In%*iSYYDWxpJHvW0@|NsP$fr%xZ6?XBi=VcQ?S
z)s*p~?KmT}WXX~y;V9#v@*nq4e@*57Z*lC{v4auzr1C{=?H#UdW27!ZTWxGBG9nZB
zDF(Fo%|*L7M%Sg$vz14?=9UQSHf&onC_j$Mz<>+=^3UkHvcrcD)3x!$x|fmnAJ=oV
zBooDRy7HsVkoYxUM@lDNy5$GI>n%}aWMt#MJaqVw
z($l+l?-t7Y+}!UjnX=qPO;tTHK86=|R~iq83NPy&|~M
ztv{))^FaNirKJ%yH8rW05jy-x{&7r*-u^_WE!@YBfqLi$@Cu^G57%~*3BN&!iHStq
zw~9eqWSZ$yR#tAY9ATf1o^0?e1Td4HA8b?M9(vfP#(I5eXg;UcKE-iII{dKxrU1Y;XgVE#^x|msGc4n{mlidOi;JTd
z|NREp;X-h4EBTQx)?e60ZQifIu?jkJQI2UzfIq5ZK6JvWWUecfIFN@BSG4uM#bkCAX#Kj50c7W!h%`|p?zhQ?1Ak%7a0zCir40BW=bZgNbw
zY>L~Pn&1uh@GvXf5ARP+LpI3P(%j4-@bl>pOas2NIJV3PO#)9%#?QgsmU)7*;5-mB
zvDK_%Db{^I0az~b0r(8_ZWaK;VAxg>8hDWaHI)JW
zCz%n!H5tu{;OYaF7hF*Yg7>cqjbQL=-~uJU0SvrCFtGmmB_!_5osVv~CgYXwzpD?r
zp*AF6(b<;dgUl)9Nk%t?y!q&+NDn!kPWeY)EDu779Zv*w%ucI-3
zkA4pW2Cymw^wGOO_?>{?C$r%u63)xucs!kb?J#U0>{r>9Nja2ZzTq*BXVD`ZLqZ#g
zmi!GLK0FWjW07ElG{Mt501@XKC<*!Cd?4B)P@`kVj{UYbCx*ej?;*bT04)GL>IV-=
zyx~gRw{Kq)HaJFx_s5SP-{d|z(1rw`;oKA@;oj(YzX2!%Ej{43@iB#8()bo-TzBr=
zA;m*&e|fYKz%i5N`w}+an;+uGyr5?5fO`v)m^+b-R*%iN$l<#Ilv*%61-M^2f
zl*|#@n9++9o*f1tL9Ix8Pdj*b=rTqfQzI<*XlDp<)52GHhV|rhI(~>acS?(JU%lzm
zr_*{&q&H{Pz!Sgs;k5V<95|5fI4tg+gL5gdmz;~jBap6P2n`Zm{=+UE8@s<{z!}!ToH&M{3XI<>hJ4iQ!)IIB!c1hwm6Io4L@?&_;h`{}fmFdjDt3
zM{%DR7#K)3NjNuyX9!UG#sBynphj3e(f+Tw{{}ZUE3hrt4;@)bPIdfJ3Bi!6}Z85^5jWc{89hEl|M>d;=JggLx&po
z9;T5FQv6u|Q?s)~UDBAt#PWBbd7Lj#|QVT338!TKx$K&!6-kC-N`C$X-^?*)FdJ^=9Bjlgdx-U|m{dlLOJ
zM8srR*`7kn(45JkY9~eGB5SS!#xa5X-@*z%)8+kMiRRC{P5DF^?
zXdI`2RhuoHI}D%pp@1;Jb7*VVLw^JN+Rq#AX+U(eNDyp__JhC1&NcS2nzc25LO%=j
zjAf9L(0zk^mK}ayC~aPFULX5lNM2rESPsyRjxvt@;3n;ViFRk$F7WpDCi%x7Tpxnx
zTwRv
literal 0
HcmV?d00001
diff --git a/scripts/build.ps1 b/scripts/build.ps1
new file mode 100644
index 0000000..5a470ac
--- /dev/null
+++ b/scripts/build.ps1
@@ -0,0 +1,7 @@
+# powershell -ExecutionPolicy Bypass -File .\scripts\build.ps1
+
+cargo build --release --target x86_64-pc-windows-msvc
+
+cargo wix -I .\build\windows\main.wxs -v --nocapture --target x86_64-pc-windows-msvc --output target/wix/hop-x86_64-pc-windows-msvc.msi
+
+target/wix/hop-x86_64-pc-windows-msvc.msi
\ No newline at end of file
diff --git a/src/commands/update/parse.rs b/src/commands/update/parse.rs
new file mode 100644
index 0000000..60cf1da
--- /dev/null
+++ b/src/commands/update/parse.rs
@@ -0,0 +1,23 @@
+use std::num::ParseIntError;
+
+pub fn version(version: &str) -> Result<(u16, u16, u16, Option), ParseIntError> {
+ let tag = if let Some(stripped) = version.strip_prefix('v') {
+ stripped
+ } else {
+ version
+ };
+
+ let mut pre = tag.split('-');
+ let mut parts = pre.next().unwrap_or(tag).split('.');
+
+ let major = parts.next().unwrap_or("0").parse()?;
+ let minor = parts.next().unwrap_or("0").parse()?;
+ let patch = parts.next().unwrap_or("0").parse()?;
+
+ let prelease = match pre.next() {
+ Some(prelease) => Some(prelease.parse()?),
+ None => None,
+ };
+
+ Ok((major, minor, patch, prelease))
+}