From 6428bd0a083bd4ce7f4d3888c9df1c7d7ea988e0 Mon Sep 17 00:00:00 2001 From: ouczb Date: Tue, 8 Aug 2023 18:22:43 +0800 Subject: [PATCH] update --- Assert/Image/image-20230720110920769.png | Bin 68694 -> 0 bytes 专业积累/原理/编译.md | 21 +- 专业积累/工具/devops/Docker.md | 80 ++++++ 专业积累/工具/devops/LNMP 镜像.md | 78 ++++++ 专业积累/工具/devops/devops.md | 7 + 专业积累/工具/git.md | 18 ++ 专业积累/工具/xmake/xmake 解析.md | 261 ++++++++++++++++++ 专业积累/库/C++/spdlog.md | 12 + 日常积累/工具/Anki/Anki.md | 38 +++ 程序开发/Web开发/Jupyter.md | 14 +- 程序开发/游戏开发/UE4/源码编译.md | 10 + .../{工具开发 => 编程语言}/zero/序列化.md | 0 .../{工具开发 => 编程语言}/zero/数据事件.md | 0 .../{工具开发 => 编程语言}/zero/数据类型.md | 0 .../{工具开发 => 编程语言}/zero/数据规范.md | 0 .../{工具开发 => 编程语言}/zero/数据语言.md | 0 程序开发/编程语言/汇编/汇编语言.md | 198 +++++++++++++ 17 files changed, 734 insertions(+), 3 deletions(-) delete mode 100644 Assert/Image/image-20230720110920769.png create mode 100644 专业积累/工具/devops/Docker.md create mode 100644 专业积累/工具/devops/LNMP 镜像.md create mode 100644 专业积累/工具/devops/devops.md create mode 100644 专业积累/工具/xmake/xmake 解析.md create mode 100644 专业积累/库/C++/spdlog.md create mode 100644 日常积累/工具/Anki/Anki.md create mode 100644 程序开发/游戏开发/UE4/源码编译.md rename 程序开发/{工具开发 => 编程语言}/zero/序列化.md (100%) rename 程序开发/{工具开发 => 编程语言}/zero/数据事件.md (100%) rename 程序开发/{工具开发 => 编程语言}/zero/数据类型.md (100%) rename 程序开发/{工具开发 => 编程语言}/zero/数据规范.md (100%) rename 程序开发/{工具开发 => 编程语言}/zero/数据语言.md (100%) create mode 100644 程序开发/编程语言/汇编/汇编语言.md diff --git a/Assert/Image/image-20230720110920769.png b/Assert/Image/image-20230720110920769.png deleted file mode 100644 index 17f0d4889866ae958e7e22253699a815c064b522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68694 zcmcG$c|4Tu`#(HVsfef$qO`cno-Kq5NkXOUjHM8T?EBDWPb&K|N>SN&vWy6oeP0G+ z-^ad<*`8zEpXd8LzvuV7p68F>_jkRzYwj`Tx~}s)&f|E$-^csBg70Xl9X`Z$2!TKx zR==ro4}sWsAA#7@c3=;@vpn)d0)aS%P*=Hj-y?Bh2zB3hI;oG^ir5L*sAaqPOfuvu zyOL0!&D~oM4+Zxk^*_A5$i`hz{-7duv7XVo_QKPloX}OWZuXn1kLBXs->~^Vz3)_5 zXWU6}t6k)8NC;LnKgpN+qFwS{)bn5dOe$fPjbRVZO0qvM!zn5DG=4gMvoaPP{e`n!!lZArM=9wN?eeeNUu~u0K~ik|5lX z{5Qw1ojNWX4vuA_O4iXm8FK$oboBaw6d~#=c8!pX65D;pW}%@jQw3- z57VTb`1ittK!6D;KU&|MS63;qAtxa+txfFmuj>jVAkHE)j^_(gPIu9Nd%h zUMlTh#4p+BsNEN1JU^9oUp#v=!bf}Ie_3srh4$iV;+bs*+KW>ytR#BcizCzjO<%)) zZkxK(i?J{0zjW!+^Tnr6pBD8$$;!&Qwq=O+SR5>?=6fn_w4Gu7@L}JRV&y<);lgdW z4BJnxdS(iyn8}T%fL8bgBz#Af(faVIt_KK&#}O5Q?cSyPo!kx;r}<+ zfpz5ku=8}wzU0krJ>>C79C--W&9}C?>bB5#nm-_*a^pUHm@Trt{>FU$*NWQ+gjjlA zsbFqB>Ab>Pwn_PvQ1CGKm9-{`K~4mMSHFFMAalKdce9?`VF6pR)SyIJd2>=8zUw1H zq7q7Rxsjr#v=ga#;Ame$*7npll8rZvyZ)`a7{O)BVZ_34CALCvdmclvJG_AN7(ZOF zhUSK$Jv;Z9YV|28ZH9PmD0ni%P({S#$A|atkIvnnZb>S4neBjcnEI^LiOC#^ii(=* zfAaI+@3pvFA$Y)L;x{X+toLT-M)t^--_lm$vuoVPUIzvquKoS{cN^nLIhUDvB=v`V z#g-leqMCe8?kC1CB3a(OMJx=r9gfTGe-fYPaEZy%!$W`Z;Z|^v^fYFro}23vS_w70 zlt|sgQH<8|nCBQDYEo0D`4Im4xt#9%{QTBa`AmMeJjPY|#-BOTmuc2v?{A&#c|(PZ zn|p(8)EUxBkjCA4f|C2<;NnoZ#HCAxsiq7glC1$QZ%=TF5l=wOX+>tY%y!B4;!wvT=`8Km|Z&4|@(BJ(9)>5BKcyk_8r4yPL zxZlbXsI=j)^xopHut6X!3_moGLW88gw)R`$`uhIi4`e>c#mO04;GCQc0lz33>Y|sD zg%}Wg8xx~vU=SA*WBqzdPBdjuohYNjlzEfLfVdL-=?H25s$!D8T6w?w(r^}TEI?>WAv+iX@!zVj04+L*zOdBv`uQ;9#7NTV!S`^2mn_ajDrvQG9>R43X# zDi2hPy0dp3?ykyyL5AUA9d*xjy@4dN>&1_!Q|FeiSGHbunR%qvZ|@h2 zPM3K^Vgwz%9UL6m@U$e47~wsqIw>R)lTlud{V_QRQ`M3rff5oCY5Dt?Ez+(xJNTxC zMrc{ar%(J+QV;mFwX}+hin_bHX6WY+Vm6C%o??rIFMcuMI&+K79CaudjusW;mhr%a_TjP-<-- z1fIeT%Erb%YEY?h_Mbn0qNCXZYgtGCu<%~l#!z~xAzIgBlzn|G zhu{YBCMG8QP{}Mxup2)qWFmPpg1!wH+83;PqX`-_2Mu&zd;Y+7{QVTr;^EN&!GqbA;5#Gej z&7GwUYy3}ZYfes1@2SCsPw=mj*Sd|XYtiei91LYAfSv(r4BVSmlH563y&Zr-UtV5@ z_rGUk;N84kT{j}nsI43JJTEFP?&;~N+8nThkcekI#g8pOT1*%AlMmZTq`D?r1ty>`*{=>t=g@ux35{FJnNp+8}Y@a+jd?w-wTULii<=mVt zYk!_);G2$!hdKNEy1TpmA~8;KNsk^qvM(u5PfyRz){-eME}r{#>(;GAt!b!-!##c$bkPC-FIJ3G6C#KbN|YIQAye!G|^{r4|l>U?;#=Sj`qK7WRk5GygwU~()MR>Lx4 z$OG`vd_91)-${dhCp|xo`a&*nZdDNAr)38dlO*QZlI+p+!*t$TiwaH?H@_xQ#r|{J z1K5|=t36q>-?(++;vO?9hSrn#?-?5}$b{i0om}1B=iOo&zjP8E220zUj)|eU6?G6R z*Q|*p%o{9&dk{e(|3gW#D(HVwEXKh7+MKh#scE4SN2|d45|WbaNy*geDqkI4-RORv zBQ9PTu~yZJLq#+=9w6D7Ram(GEBNS-FS)sQRJ72FL&L-NBA!Qo?;PuHYik=E9PH}4 zfA?-)tm^);J17(iV&LmssyDr0lDZwz+S=OQK3m^5&-3cpZi5`QInK2S#Pg7WCsY{J z^Ujf6=~NJgbDcG@`JiBw^#eik!SWo^Ak(Rek8_D5juLSy*^q=FRT0U$<7QyZ@oROm|Pu zje7&tbD0@7!INh+V%iRoazCY=VOH^MQaZvrOGYf8>cgNggK_(A=*7*>&WcZ`b)T~W z;8ELpAyu1&3$G?3BLk(y&C&6W_Zcab3!AP$@5*!tF##Kex6e~V8@Am2KE(9X5zdx{GbE>YOdqwG~VfBX)ezpj|W#k6e{J%)-)`RAj}zAfQADK5^QH z|5@xY|7Fh_7`mK_)evTBcGmKtDyV3+fh;l6(Qa;TuV;UDdenRQH%_ueLgfjp9gQhS zG1pdBu6>TYbYxskPEO^ln9hyyx%G9IgPa4FJ%g4FZ{ivtftL?0!h3508&5{nR<@-M zZHLcX5Eky%eSI~c+W<1HT{6ng&+jY8qT}U>7Fz?j$liZ1^6^WazV0P8haTlGWE9>G zDdElK+Juo(=mT0MVeQGq#pM!xNg|Pxho>vKzN4c&Ddba=ON zX2-YktnDKsBZ-rAi)vh>p+T~*aSvOnV-gbV-0Bjdw$^7m$z(D_lC!Br%Uq`NlL;;Q z0MnYC(t-ksF5_gs?tZU!4XBPkTrMonslDN8kA4NU5UNZ3qa(I*i$*j$ekxv4#x$^N zzb%|~Dc#7(sJ4W4rp*FRVBz{Q?=b{JJ1~uY|K5_ft)F(pB_$1Ybse*sa#Vss+WXbY z!=p4abKy&jX@^I3V#|>rOGBN))T-?4mW7?3VGm5{4-5vAot+I;IB`$4m%kM;0oZ0a zEhEf|?-0yc7RFm<*hATUa%#%3cce>yNYsUolhcDjnBL&jOhD=nU~uBVgBagN zMvgj_8H>c|PNx)B*=ZehMD9uw?f389dxu6-0ldsc{BS{TFRqYCB&Z}aa|!lUHJ1lGQR$-w!+5! z?LG7?rGtaU63o5QdpZ-l4OE!<6nWC*0u5}$Y+TtjrtX>@dM7)D0W_JPe@{?R>f~0@ z=SdOB_d&{Bt;B=xE%{0XXReT@W{@WNc0fV{Bpe>6e|l-+A;fn4`0h)DSSi6ik<_k)S`(#M`@EwpuYa#9(Xxjo*;o3}3;pIXgQ;;&0{}>hG7eb}ddG zysxKcJ=6ygS}5C^BR7AH_eWzUB)V>{QH>cEK?r)g;)AUdSw@{YGHI72I-|?QXxh%} z*Y!P_CIzlfb5@$9GF z-N%pOGzyNm9x`zQ^)qj;{}-2tXY%k9`TGB6+3J6dj|tye#=+XhV!2&nYDXQ*j03RV z-rnS5$kVrP-+uYy*RNkH8oNiVGfjd;AXwEy{u)5ucXuywZQSKy^41i6V`GTkbNs#8 zCP!Hh4?F;lWo!E#cW}dhbJK0UzM`Vy`Sa()!=?((K#79jo5RAx0d1*HzWSB9v$F$H z@$TKbf0EaFvW!q`GN?5yhKxlMnyf#07$Oi0Zr=Z5hM;5Y?8y-9Dmz3XTvIcizXO1H zd;7DoU%@F#!|qVP8TRjo(92YkmXr(%BBb)((bMDD{sq`z-kh6u_+dAo5!8b!yzka6Q_T1>!YpAa`_1)-Z zQ6f2(H3ISyv@ap{Tcf*;tf9_tEEKf<7_yhReCN(4w0oP92j)d{EufL+qqgJ?dF9xUf`tctJD!iK-X36NQK^w0 zjjM3A^O~!_Z)G*`ymic}>-6s#TXD}81Ow;XrjZFKZ`exPH# z5d!DV)s3%IYz=#ZY~*s8$9r?3eXZ13B)!vfdE}Y`)DG;##ODoC{GJpZX0;nPUR#~` zwP$UA4c;vjAok6>ckhl^&PM_U0bl`o>y9NraZrDHP(ytK1K%$ofXLGHwl%dG2oL^C zmoIN`p{QH@`M~MZ(SAF;$P0*5Jxqtgvkc0uy1z%Ms|SM$XI1b@woi z(f`1vL$P+b70A&g`MlZ!EFR8Ct5u@9zM18j$Ra?S?q$Z|;o&>S$d?rSNZU{)kSOv- z3O8IcAT3jP4Y8V;nF;@soh=er`%&PaPaKrlYZ^9wYHAr+u^A0%04?DhX}@vWr^4#8 zThgG!LB{-(nGk?l4lv03p|_Oi+6ZhsNh=+T-z=YJCS|_m{95B>>0oLHESrIu=WBNM zo6pNv&qD6`^nTM}KUPXg3QB*3;?7r!&1Uy}1kfsO8T(_b>7535?~VeW=56iH&}&|! z1>sK^x&f-vl`BI0Ruc}2_KzR8$0CV@4O~-G6Nn^rS`$FuQR_2zEA?n#)z5EV5sK

|Ed)D#g=XKH*tp5csjA(d%dh2xvgs0Aj>#{emHu5iJDC5~_`)wDg;> zunDMzO?OO8d?$X>&^_zHL66yvFNujfd4tmx>m3^AUWCjGZP$?Hdl}gzJGV_uSCQmy zWE}lPc{#a3`;vOgodNn(sZ&lG21!{L1qHpmyw19ugjy};@Qxf77G`6d^#1+0iyS=* zNG{%h#6~tJzt`-9n0n2gD_GN3iI0zm2?RahjL?-M!C$|S%Z){nJ}r&>e8E+n{`s>$ z%M2dh?dNy6OGihis6?sjAn5Wx%4uTpo`$t~F}ljc{`{2bLg}MIY5Y9OEA_Glnq z6$~d}C)Bzcs?fIkySG;o$nrK~M?Rd8m64RxFVN5U{(YiF(+wcD?5s8lg&DG6T3TXp z&3gBaZC=I<;1Edg&v`xPx-LkVh+GHBxy{?Fa^*5eI9ggQHD1{DS5V`mWMqhsmgBjb zeP#(&6H267C71Fcs9Tzvn(;PIZ%}|#v?@_adk!&u{gT;|Hr^1CF#7DP+@gzIXh_JO z&XLBye*r3<hidMg^RV7MD!l32|fzc>S+J| zfF2xmPguS+g2B-&}ubm5=74P?9{K#GsEi$u(d%Uv3xn<_Q(?Lq@BB7ekxAE!RySFEX zMc>O$hVR<@H#G}c85wKD>Pu^!Q1c2;cQ#o`GBCa@dx@N&#<)) zzOJtAQUKvX8d`0@@Nu+G;G%xI#D>PU9&@0wkmX(%-hcxd*C$w@-{m}YF!WK!LQ6}F zcUiQbYrHbPrY*0?Nx;dm98||{t@KVFAMVn2XkA5uh!@is6&ZQ@r`IsZ8(HSc05j7R z5*%J_wuc@Xfy*A(-?KKh@mJrZlT#!B%`ThGv-?2TWPWH4TJ6k(V zFV8em5hWDx^}h9_%zI>;+@f9)1fq+GHW`H6rbJP(V{4sPg&mITf}oYiZe+w;n>jtL z=W)uZ{UD|J?oM4@ot0yDWSQ1pz>ZJqC#IgG{923Ns58FbTxu|uY7^ae>c(Ebaa}#V zgm9mpO^x};k5%bps|^Wf)@c=(PWySpZ-D5#UI6_|=DJO68p)0$r$+a^{1$)1I=tI; zQ^@25r1OU!9(@B9+3wwdECyPV(P)RKTn7gKac`|jJxB%ao2MnxhQlHC^rqd)n}eG{ zh=&94rK>Px$>FXpm+fWq`Lm;p$uE_lx~Cqf3=z4hYiKyo)%97=dP0fa>Ow}rs+|Gj z2E&qGQI@v&8kKA{l3zaur_0lQMU&arJcA#7Sr&W6FjWUAD{LpEDo9GSYWvd>0(~{T zm5t4l<^ib;-K^WUZWZ=Fkxme9`UwQ%wYY>t`B(RSKhF06Z!JpLSstzBGPIev^Wec3 z*;?n#!}UU#(VtdbCv82KQy4_Uv{a)3+8WXh+a$lt+}vftG+Kb7=2G{_)wKR1lTa}* z5?XhCOowSd(0elj08FaZHNc|bI8yMx#v=Z^Tk-$X)s+2*Eegsw3>z={wH`)nl$#*|-1EMGlE zvk-*NH_PDGy(;s`8DeT z$UGWay4Kd1wHEnClN&)IYFjK1U|d9 zzP^3(NTI1(6>GJ{uD}rb$kz7n_)2Ugd2(`cpw6AJIte`pR%ipQcvb3U8ymFTvpDEl zA&>R-bHm#b8c|hVb|FuvdtScxEoe0PN9C-70y$V9xvjzQ8`;*r&FduL1|l@P5Mm-% z-+s6v?%g|!v_p{af!2fGYFsIDd!lGu> zQNNXa$`IOwT}6u=K&YTh)99c*3kc9=y#0=9v6i=Ay?Ujw#f3l|5QclAYHDdwW>O>c zuPi8bx62SksZKjG=rzCjRtI1Bk4(wauG%0Qy&v{W{J3FVqWZb`$*Z!uWQ(J4amYf( zP}Q#XcJrhPoqbuokq&!v_X0X!aw-F4m}S(GBoB@P*|mnTu`$pRSY2T*|6BSF9vwaudgAwR{PAh$rBYEIaxp5I_&`c*LEhSa->C-0=so@@TKVDOLE-fikPPN|drmi+(I9L<{6ojRd z-}r#G#?8f5^Ku>L4t~+TM80VfL{Jc|vy2wp$_b?aw$9Tds@aSRtTb=k`deLn6>u$R zUcK|(v8T_Sdj#FOwW($heP9s;Fup#WCP~2;wsg49a0`aIpPO^^WhKl}x6~)>He8d? z$0OgF1p8rOWDG*R6dG8X?ZxsY$F|@ zXz$}G|Kd-S~xOg$&zRLgs8c0lmPpk&+?b1Ws!a(=fw)-Ee zz8u>|U0NJ8luLMDnqDL+Nld(#e?iJBPU}mo9oyV?v){nIigg;T*~glfy<7qfCd~wC zxD3cq8bSYN1!1t`oCxpj>MATMQrMYE-ASF=6MKRVm?swrltK_JB50l5Y|~0xg$Lj{ z0jwSbAB6=rcf&c>UkX#r!zd;$Za&5O>kVI+d&qCvSV$QukySbwTFWSN4C6`Q@i5up z?||4lNdyM+;>8O;)~dye!oqmy2n^f+RknHY_%SOp^PrR_+;onCAFR)bhyB_;@Zn9#CmpgVhAc zWNy%N1%(IzXjfMkG-!(p3x9Prq0*Jy`hTVQQqq)$cd*iVv&Rt7=;+0}86{i+H3sC~ zb{uX=#u5ohipH%S*jRnvCM1;q7CnGKTyd;dsE<31gCby^%rtEInbo_OAe%P7#Jy^= zb*p%Yz3;iBbq(q@nZ9}~#BdoM74<+z#~BD;cr|%vEoy2F1LO)iI!IH#Aups0D07)5yhj5(ecu%*eohW3MIy z;>Zigg*YtMPOHqiWlag1uq{oXHUn@^3nj!62=T*9>9D>_OZx`9dwcbuSLq_xtcb#l zl4&juJ-UCuOCdEo(jn+`IRkP8Ul>(e0*_Sj6Qd{{77yWVVcy96`ST|vz647;m5FcZ z$sG(uMMci0AH)I4oC^7Y5*Os3j0mi-9DE;_>sE9*(D%LR!G&&_4PUttrJE)1-*7m3 zhb>zp5QC{Rd#QeROKL|sxw#oJuhE^egXQiyg9oRI%7;fCk8yASVzgO?v<@b_w0=4O z(o96x0EB`v3>ElGOdCfXpA43Y-x#AR4I2)ut&CvY$a<`KTHER6&lSIX{CF*J9U4S- zw=lA`xZtA#O+x;6YHm;QS?#+9ZPgT!FmC&Zyho|Rq$?!vOGnF5;@(y^(zl;ir(gy6 zBc2{kcK&{pg5-&?=|&)`Yg7nFb)8pb><7OpBLLQcbk?@pTCPqDfY$c>ZOYKlQ2cqb zda6@;T(z8O3glhL!C6_F0*nW|>b`7gE9tC@7L$)EhfN!!iYR>Fd#K9Y&e@ntzqUEB zlwjO_YJ3OM(9jD2?#XJ0&A#cWsn>B>KEQ@6gMYfw<8CXVaR=F?*Qhn6&xQnzqzA5R z9xB~vNklP<3L?xz+Gh#9*?z1SL`0;C(^B@m!HCe%&}PS>9MrH+c9FZ+u9u>zX__Mv zt~RjN98bmNn!j*$^WT{71z`00kCeU_Dtcvo(G`ml8~!FiIt1;zXK7=^6X|GVAv#yKLhP({kyCLAsz{uMcxammfe_ME?IewP zt*kbOmkwE32jj+maU??pE~zSaYWcYBHPIT8#q?tfSJYhLSHFegyO~MK8X4cy!o=Mz zileB>KgsFJE=^}sR#9O)Y9Pt#kAcoRXe40O_-9YVw%DS$%EQJR*!m)8>h%JA@wJlC zod?(3`sw!LFv9$0*mrD4UqqbR9z3r+Q9SSaLW%d3qA{lo1>0)xo`kMkj9T(@enc3* zkB_~&>l{PbN1S%=8BOT?@h~Ci*^ph(URlam>1p$6<~DI^Z)MF(>Q$anF?$-U&GuFz zue|C_0%tYZ zrbAGGXr=m@!tE}My-V?U7vw^<&`oEpyTrfCE^N%qz#HTW@MMbpI+^&~`SK@T?=Ne6 zs!&qDlgNn$mAc)pze#|D2QUVGB|EMz;524CmmV`hK!)8`O1^B#IC6I+bF z0VrwAR>V^Q;^*-pENUIqoNc5@rCvEJpys^q*zRcRg94}WIW<)oweE2Rh*eW-D@P>o znrwrD8!8p1qRn)9Q#GZh`HiGoydR5TigpTRPpzJ#2lQ0+(cn3?&z$qu=_nrWFPND&iVO*`bE5x+piv{zhKF#;+cFAbOb`)zwZ6+ks5*XBjN#Y%tl=$z;#N)V=P}(_OKkfm0g9E*4Wgy)xNT#qNdg`*%+hx83**7R>tQafk%1HEwp{%F3^!J$&Tzd#>ItTb|wVSvx=}p`k0M(ZyscH=2{p zO&B3KpNL|a@+FWhTwK=2>Ozr(zj}MzD+yBxa>M1|FKO6lvOBY=BPwqndh<`VEdLz9 z8#t?XzQZQ=Q9YXr1<5I6>Vc0&UTUv?_V3jYEy1J6!#A^|py_{UOV0 z_L_OKh13E4+^>cx=`~`5V%cSTAZNrExLZ4XtvM8&=sD_A%sXmliSCs3S>vt0jc>3R z_l5TiPd9!tWEat_XQPkXc+G$K{o|!q>9%nt`I9rn#H@y@zp;sR@U9#lDtAX#c!)bL z!K{F$ta4UBz}nGq`EQgU%>EmnaW+ge!{5?|?NIdaqMVX9nOE0g+rp}*CF>w8i9+30 zpvOp$r-mw&i465fm#JQq<)dEDr9V~ue+9ym+^5-HsTRfaq)c`vlYAd>iD%kY*GFms z0$P}e^$PA^*htG+af@pO{HqL@D3=*-cPaG`3%7*&qxxhfILS5>mTzYs}J zwg~<8n98Tpd$*<3-gt*eC>MM*lINP-gYZrgpeIk?)sHSo1eNI{$K@2`JwcJo{A3>QG z?4RqSnk z;oR$vDa$9VjEKA4IakhxAvQ;eR!HMHHm$Kwp$bGT+!~Cx;NIf2e(mF{T;Qu*wUxs) zaOB9`%YHX31WC_c3fw}JcFT%IuRtTp&ux+g7f)b8xtEU*8L(2ZRUHHrBG0U~>wcadPbO z$S1@rl(UrfRJ3Ul=9711?B$4?LWa*p4sjCdZ<1zknN?!;>xY|@PpoQs9hR60F(90l zo5MzNKNP_Lj^kfV5iRn=oa(SqVJWM>?7D)-Q4acd=q_= zPDKSsKk3U|=jc8`bQrGq#!_Lr1m*G=q5eQlzHj2Kov^7Aj_ys8m+KK=wFza7L zo88a&*WGx3ktSnlrLV0{Htv*u{rY=h%zLd_rqVPg=tFe0?WU;3%l*`~_^;Yo8pXk! zy_K(nG#77g%ium1$knntQ|j{9X@`q%g;jHWtM8)oR5myYs>jdZ4w&6-Ujw5od*i=C z->y#BSWr*^Elij4&e_|Vn%&_`6>BZ4>}-B6o8KCWTjaM(iaBP&9zhKzo`piylg%tU zeF9;u?jS^t83TCDiD9PC!7^W5_{hzsahzv zHCj&TtN{R%J_YY$rB~2_TUdC)db%s(+56#rQ&_u*%Gcy^UUX1q0(H*_|Gj)cbrs-c z5&QPgA)Nn3MA@mSXXNFLB&cVQo!pIM^#ZSNe%5d_n!QPPG9yP5F~B2+WFj*7*X`n2 z_Q>qL#ok-?;Ura+=}j3TwUUNM8Xt8CLS`7+b}tdA#0+~p8`LlNI&FqgaJUWF4l zXc7;9$4*aEO)@j$fC>#6vp0el6$I70cO%QhVsELdpWx;`8VR1A|;^0+}@W7$vzUvI6924Odb97Jz%JuX-Defjh_11oSBxAgzl=w< zRoq}Jjt0WT#l^VF$3W#42r^kdEXCPt1w+%;u2NM{cR+mBa6320Lu5?GFTo<^B9$xL z@T;$pkAuPhW!Bj{4C-4WAM$q}9l{^|bsw0`?RMRBO@kd+Yyuc#z|f&kKfVGD{#c{) z=g)%)LFMe3Gqqk1fszK@zkmO8TH21uS7@&~IbFJ~4$dfOzQaC>)+Bk3IRNqTvf9Vj z=Vz4xOr|lB>*DICkR5!z(ioqz6k_;X{o(1L#RvJ(OYWND4JLnOM z%AhcOjHVM56-AEKRJS%NRSNSLJrYz=)TD^^M|li+YtQb;mz)PE3U%wRf(tQYApbaR zqS|GYVGi!HlEF-@>n{r}uA;(1FxAAddOv%XSG;e#ZW_J>NVKm7+lNA z+Rst%o8Q(?xecX8TK)+X86_XPsW^dD&qle~sB0xT4!=vBGc*M*9E%hkR!-i78027= z!J}Y`%FB%w7gf=*u{I74CA?{55_4cGG}2O1Qc6mCfAog6o@8#YIF=6+1G0M07(t3( z==)ItEgQ^EWy7+DPFO$yopXI!3XCMa1p0wcF zIOvURy509a&L+tNg||&`HC0$Eqt1ys%pMg)-~LWbI__+$RZec!a>ZLYko%t!>-QS8 z-KX9%IxIJw6zLs%xf+mFyx>Q+}|XQQZ_1#z%o z2Hm5J8jDc_C-FR+Nhem}Po>XRf6qCMKiR*O2y=(<6EF_9$8p0w0zVXP0MUb4rp_8= z)V$0Dv?ZZjRh02%^^bPK!NLUcSn23ylNFXDIXfqEEnNFyWBsY{V`~rc1y{7I;@3Hp zk~~L?W_!^6FiblZH$Hh9;;VZbt`YIg^z{m_v6iI@=r?LdB1vH{0fs<`spp*L@2#v) z!OlQh0SMw9(wuBjz9=Q~hU)e4=a@+_X3fK5WqRp?F^Z5b0R&)v9Bv58yB~C@Qv32# zT#{aS^ElI;5>XY{217)O6>+J*ARUA~9#{0cclk_X{ z6NEfHJwIm8#B}ie5x>?+XYW@75<=~3M1 z(gArcUKSL}<2rTFd*C^FvbzD=Vm;1t>X}B+!*FtPDm)nw03w#ni7igKKvH608GTP+ zNxDxw3!kJorKa>_C^q8`Vbkh*RlZxzd^Syp6?tT5wzNq@ZE%k~F zC6*icv@eCq%tiqkg^BT1##CiX-S&Nw@zf+A-}F{nh0?r~=`r=^GccAC3h6z}mo0F1OW%Pcag)a=o zJ8pN+hK}EWXkafpIrm%C>O8!eB3kBPvuTlwdlkgf_kJ6ne>?z155#bMh!$T%?o={# zOJo!yA%_o5D?Q~na3x)~`gBuSr18}v#eFo!%B?V3+XU^%0`8wm=zqZFwm4|(Oe%*JMG%1a zMiKtH#PZLoW*I>RqjgoOi$f<&tQ>y&O|P7tUS2P0oZ|I5@)1h00xEjY)epGY!mDSv z6k_LZAN-uQ8oSMlAS-o!v<+{rR2>Z!YZL>-XX-vzB~_{u7hA&Bbf5p>4>XMdI2i#3>4C zP7h=FS%P}4{k!}A=_*&kLT!~A?J)|3QxaB5q5POKz4evqEDjBGA7Wz zecOMtXR8I-KdWDhA0+A9`|&(B-*f!)pGMS&50}Z$T&PFZvlu7qvtEv}u(gEy?#%zz zNbsF7$63=;m>zm9Zh0zydZI7rv}N>TOT3>LOPU*h$)d>IQQ}~_HK_j^)7qrw)9OR$ z8F-+m@buGfG&y^{RJTGRc0I%2c|Td1tr49^NTrD97(80oZd$PB+w{HQo%YZCrnM5W zU)J>DFZLWc`XH5K83jUa%jn3+kAF6;RD7YeSX?Y^=Td22yC1*F!5Y(8^lbcw?-+EO z8Yd6ATFrY~oxsx%2Y7;E zyN_t&0m97?aUcyzNhc{+pbbJxjJN6J(##wk-?~y@bF?|9v-Ol{({O|0#b#;noR-|2 zjtBt*<_viDO!LOF{TwhQ6OkJQtv-*XyM_;B8ORb7uvW?nzDv^%crqy~MO%_-yp}~t zGE9x#sr&arpAV6jdI)F|&;odyXLM!9o-|clzJH$zS#$-yC?b=(A-XtFWCuQwTUuJu zIm9L~XT3m19+F6Blt>+1;~Ube^yv1avmY!q=giwa2z!)#$LqsA&z%&F+rptxjnTr5 zCLyN)9MUe=Y4Y!+NDu~GqCvmmOJmAUh4RP$#I&q&T)qR1=Iqg(N+95yzcbUS-qP>>@tQ5Tk&udTI zCb%fi-fG-dE#Y+5+7RWJm6i3YgZ)C#%)Kiji8!SzJRCliDS1z9`M;1~(18H_os;%gt7yi=Sk%n9XRg)5ZNPYZ&i`eYi$O3A`hYmnBDf&8bie zp}*AF)YSD`X?dc@1k;RmEJbelawUUoaaU@V0O7uceqr}pgGv$ppM3Tr->3fg0vlx#h1!-#X%I4B66+v?gYKBG>2cm+C_edzcvRephZ9#U z2Hzb%3<8Y%|FloxmC+XVKjvpkLiR}2@A?Xll`-(9SX{wVsU$RYEdh3EHJZG21W^=X z31*}Ptk{F;(gscJef1HZ$pDA{_W#FYJKjZ?(>}w`57ERSYD)U6S7l-E z`F{~@kfH0Bw#B@0K5NZj^`4xV5OO$Jt8@+qZth&7!|5cgX&~<#&+guB2M>hmLuknt z6zIsj_A=2hxH&K0gS0!VZ4l1}J@aG*?;cWKMTPP8ijo6otd!_1ipLtBJc^h+MDf?d z|56U5puu*6?JUu`$7{M+1K0g^#Y54w%<0j+dluKP*MM3th;G%-F5gqxV3=p23Kn+z zXL3m_3hQ@(#h7zqw(CTj@Xm`TIXSmsOEVZgQoXgMacuj2|6(05m5&;uMNx!Cu!tJQdE<>piqqHLq7Sbm31q`F zo`2s(IeK__kasqKGQpR1ZHaYxhu*Q+JbKDX(632%Q$Krz#iM)EL-9NwMqj9)1f+Hl zp23DwY+vC+a56NE51N>m@TeRX)XN5~!PUj(H!`%ZS)%=P$1dkI!ouhS?tV)m(0_Fv-}CtPdk|N9tnLuL@Ii{L$4pr2J(RpPF&~f z7W=ij1%azgx}?~wg*@Y*-v+J^D1n~h<|Qg6CueI9-_I5aN#G{xww6|v=h_s^oz(oL z8BRss!|2X?haUJJMu4ySyCzMD zuz1sd{3yXxlcyQ9m%{7KCa-VWq$6P;my^>fEfscOCxqs{g}qKwXCKC|{(vVOfNTT- z;pXBZfHK-7~7e*~J!^$#(6uYqoN;xc$`F+IY4WMoMMOhfZaS#App$GswlWW1MAlrj>&b*?9-QFh{Qc+8iIXQcyec&umpIejdNIz+ymbY`n00G%B@`|= zeU5Qie&4f=#8*v!{v6z~OIk|6c$}+%pS7YW&YE%1E^0&CwQaGlvHjoY7S;A$nkHri zss7sn3e<{xU}$*JeG%z;F|E2XPq#))`vecqu}HAqObUP2%IWUxwB*h7H2{azR6VpP zM1LwQKF9qzN2EWXQv)_U2W)Zk!jG=XkHgqH5$h|#{o4MqS=-`9{g!3Vm24hh|A#Fz zP8{%1BbDa1w!ZixJKZe9xDOv}poc7N6#L>oP2~T2=m#e)1mXB^dvMWin*wh9zaFDh z_UHiRBy(Wnq~Xr|ZV6j9yJZ;m9-fGSA1VjhC)Gs z3q%V@nCn-->C{7?X$`akY8}||9l`wtTY11Z!!fQZ91D9978aVCn-Bje`PXdNzHoCwrEhy~ zu?YMO#2YZ~En~Cql3`DGOzIulxBD}wN_JAD!b%j6u;Sx5Sjl<`2+-%6Y9$#{z^S3L zRpeSdv1JJsD(|IA8Cls`cUcAVCU`c`4B#W!>Jdfaqu~p99)KeFuGu5ucOf0maIo%P zItDHs9_s+MD|QZ!gpXB!CY?ZDgWYO=VAq4*Dx~m7kElxCTYSg5lcpJ|FO;^wrJPb3 z_-8vccwH!C?NsWK$`dyQp4Iib6@(Ud zTZ_B6hss>@~>;QL_6MrhqckeBmJezSBVY?KO#)9=llJO=`7S2_{`~ z&3gM5LaE|IN5ZB?cIS*+IS{V^aZc70DklQP26sz;?7Ea!H$uRXdn}JH#s7d4b#l>r?e4( z^Hu*8qC7Xn&9J|JTf@#st~TaI07(bntvZWmDbXt0X(jbj;pBt zmBkmIMgvWLfm_G*T{lzQ%FO_;afhQPA{o<;;2ilK2l%DLFc)R=Tr zuoKD$t5%YJPM76*aIPuST*nn1Qqx5}yJl&bF?Z3m$w9_IPwz(e(q)&?r}{bWrE{qj zLAJ$4c42CnjD2vE_-BlJ_lQ84Y!~(+Rd(fxDVPQ&)4_dB>`6y zE+t*;_mQt|Gp{tW!$U(yUW4G;?CZnF*~Brm$B@?Ay~p+8d5L+~4`f_FLU^}4Yf{O^+N2};Wb@u{lHx7K9p-=07q ztXcPZpYVSKB0?xF5z2L{hWDR29Wag`{^wK%^Fq%5KmAs*gxO;)AAuVj&L#l?XMJsr zUfaaPL`Mf7BLBAA%W$%8|8BVzw&`vRPyurN+ zc;*H;rB*@?D3mGXw-$OwS5NO(PCi9Am#?g(LQ313U5??H^;F<%XkMF zI3avjui`3T2hObTOto_U`H0bAKK?E)%X(UM4l)mljh6AY()xOOO&eel(mmtW*_^$04G;`&1)tZi#a~zG?s@$n z5OjXO=h2WjfiCm5pZeN<2)+OV=;n0U7w?S!hz4G-Kw5cuIUFM43S~dRR|m|Xbaq@^ zmf-CGG4rw_B=MufOT)0_3-j~ttu^qb`1|{tnDk#>to$yFCC)pCP6GxBj18ZuWKTuX z));i2GBQpNZIHn>#0zw`hX)|iS3;Za1sRqOpQHB?EELAPt3~+v(?Q*K?p)LX>%kaq zbBFM+rtCQ!$AZC!WoDlhPlv5^(!DA(pw#L^%j3J>qj3rGCNLR_w4ku1 zT!ItLPGpY?Frva=rz6C~#6Zp0iE{OavlX_CTL{1%;H>}(UHGSKS6~j%a{s!?4TfOg zv97MJdf&R@?7Rs4d={*yr6u%98%-Mk%vM%b21;e6yspHX*RMg98W!81FwovUTyA4; z|Cd5gBr0*ryWU6wcdx|6T`lsO*4Z~7A#wctSyDm*XI*qMLYc2{Pp!ktTWekP!)OK& z5(g$PYC*>(p)@I*w$lOvA56TY=xZ*d`uzsA=RNSK>dCFFBoyHkU5Q@6sD~fqCQiS1 zk2T?~vSQ@^%v8+E>MFbuARjOa_|dwa)=^zikr;%I{*lo+!wF>6ky{QqvA_b4sdjL7 zo+=N5nng)PW%Xg;g$KU@#}oQWg~-J@4!g0#&0J4!e8l!p z&{aav+3MRSCZb#yYnZ6Kq+Y|#0ae;>2fqd`0UgL|Vfh>h#D6Db)=!%Ol6MbQGkc76 z7u=f+>jwM#p&`zmFx|kz#MC)B$j!wicANxF#*2YdUS?~A*qQlxP|yM&*BKsc?cJBO zEBT*3nG{(^d?I4AvsKtzAElywN{*fq7uR$V{5A!|zqt`pJM0c<^%jnh3FhUn;~_tS zuTspWnW{;=ww2Y<=@3uB}ZI zH@}Uic@{%C@!?3fTQV#~7aJv~rlLs%?-%ndeXHIMXcZL|cxa#shm6chtOZK&@f(WZ zQuTBVlpXk9DhNdNoclP()ngA}o$`Xn2 zPt&2>AM`*TGt#jFs{U^KVmPZtjRA=&HWHKVQ0KSrW$>8)V^!1($+_OyH@yz5&hR@z z{i*oQii(aq&U^_UoQlS12r@ald3c2JhkvA>dB!I@Cb)M8h?)a%(uIfa+&GUzgU0so zpRx-niNEXblAy&<#vPV@?ER-tZ(4lva5)_%#Fu}Mjlpq0&gJ7R=z+KAP>{l4dF&8{E5 z?glA1I2hWe@Pib;R+JyXB@6$%mn%`uMvxaMKCalDb(4!4{lo5jJ|3Pl#unf`{012g z1$Ys_cn1#uih%%lV&{%m4>%#cS28Lt9F!kkCcr`cu=INnHJz7P;0NyBB0OGaM$Ntd z&_Y=hQdZWW{HYmusX);qNaX9r7^Qb$u5S5MnPuvLHx{&=3vxSbEvZ%2)Lymjf8Sw? zx|`o&o2Bp_8{$_8s{q-cf%LksZC`#~UO>u^z04eeFw;=vSjBm@ld^6mLi^;$gO#!u zHB$q>^GrFInE2Jf$^pu+N^IQaTjhO)R?Q~Z*FuNyhILY9WM-OHdKExVNOZjs!WvLr zG4G+sIDPu52*2MnSigZtnk}LS0!-Lyk1F`$yuRGB+6*_;Av+kfI)!7>27Ts@s6##S zNFIsF#smAZ6mF3(l{MP{SP7;IU(%lTk;~+2+#fydZ9ccRzE`d+-CU9o{0l%S^E*Y) zMM$rpPahv2pJrN>m*)gBv$TEYe)`#+P+MRyuSE`fl>(yW@-#I*er9Jr+GCgQ$PsVi zdN(dbVRyNaXKH*LrKA*kkNht>!b!5d9Es*+WLzP{UK11%QU9Zw652K&*6$v-307+d zxc?q*u`bfjVJRXqMZs|)yrWP@CI}CDIIglS{$$;s@0+UU-s+j5>+S^Xt4^6a!oGOm{M+Vzp}5dXWc8z%a_AS;jD+? z#5#D;yQg=?O)j~uF*3FClosWqC0;`&&*QnfX#>1eKq{d6)z5j8&HX$)+!wq&I`Mex zwATORc{N&deYQyjfv3{ z<;UQJ?(O~2DDSr=iFF47f+qNYIoR6X`k)6c9H|ZK)gR*5YB=qxX~)GjA=N zsyVfl>X^n5Wd0W*Co_q`*5>BbTXbjpyfwXSb4HRXd<|X}|JeGj>ixOob%5#W+C(U_ z^AFy}><||x+1XJzSImFs71?(-eOX~>2ct2hKzutVz(6bqef^ekMq^ZfFd~rLIlB&b z3fl^RS(F}RySHw&cXbI=jlik|{E^WZPHh6e5I+2j8y_vST;PgzIuW6q*qYTj)8sF( zU**(j1)TK)x#l-++@P1Zz}~u=@shKsBG#J5vxfRy&Kf!4>D ztmMZEFGzG&Q=896q1%RrAL7sf+dvCe_sq-BXY=I-BWQ2Uzi(?*$;-;t!{h2)SGK9RdL(Q{xd~5u}FgV zvf!yQGrx7~%BxAYh1N5(0!pas?SRpJesU-i8G8{bYZYZ|RhqPf4{5L?yS{ zmEd}dA8l<}q5JOkKj)wAy^tAQXq3yBnnv>4To_3DYJ=m}KH0)jYM~Wg&o|#LfCrCN zu+A#W>*nh8bep3ozk>?xSgS~lT0Oy_?QxXLFM=`shxhZOMq9GXc6P~Y?e?pG-EOsC z-I>T93+;EpW;-g&tVZinQIH z;yv_Dx}1n!s-;HN35mQ(NcaPv(AzunXU@6c4oV=#@Zo>C06FPf-fslJ>ksUFA2L}% zVBBi;Arm+4(%!M$WqlYr>9`!|Gud)-S);igpda`;Nf%uxmcU1j97#i+hydRz`3PnH zpUI#6Ad?Y)j%VGaMA#0Bo4bxzVy9`DNHD?AYiG@_UJDE)7_{~ESs4s-e?tM0-hZ{` z`Vz7T-`NSixz35x2{%w@->CIpZcDnP3mH{xY@3_@ z#S9%_R||O^GU`lL1^2sxf@SC#uaP*wysmD0C5U^VU2-jyscQ_sI+YbKHF* z9`)EesJ8oK#RssvyG5F?dj|Go%d$uKQI90PRm)Vn zaRWR>Dcb$Ew#hida%efVX^D-V!q;j8OgaQ;SD}ZOEa7Y#$xLXjMOeJl(-F>xW#B+!gePC*~DOtQ`Vys+wDddy_Lxy z%h1zM+kovwT_Bnd)Vve17D-5ha+jIwWkEH;G31k{*_V{+v!%0u05!>>2KKFH`S1+V zBKe$M{q1#inM%VR=6;-Jzh!3D);Fl3>junENU{ywelw0#Rk#^&+BN$KU_4l^W_Pl% zvZ|$yGaHk#-E@*fQkLtji~PY=3Cdc4c{g8bdDg{i8im)&sink+XvsvFs~pM96P!Bd zTb=AnQPb|I?Uo$jL9{sc_hF$lOz!|ni|Q>gm<>ae8f)^kFYUjt*HgUrFq! z+CGvy)9nL!q0l@@+UJy%gx|W1Fpv7(7`nZk>27IVv<(<8AN5b~RryAV;h+9WtO=y7>Od zll=k1^kOHVmYkxF1)UsFXX;s=$KPS9U*{HDumX1;{;2jz}g&U54Q*&W;F zx%wj3UVu@shAX-But%yyACxLY&7=k5{~mbp38>Lo30i?OBdVV;H;g12-nbC1WOmpB z(@BrEijVZ8tX4L|8;mtSN!Ie_u;YUfn^7tuoh(2G^**{A!JsLBi;yePQkt%c5Rz)P->~?Ccrt`}~kq0mSkOw{BNETiY8qZ@w9P2rt`~U8t6B29&TJ z@4^M0h$d0BTs#;3)r2xJDtt>N)8BCiIJflMZXe<{a;QXq8+*4kiWReRTlm>|fsj$B z2)n7c2TjV!?xM!`q~sjSxK9e5?qSoSJB*Nw#9T~bTaAt&u`mq*`c4uanZB0Zu@pQ? z@ADXKoLT(CFQ;2`xDFP!Th$T(^}~#oo$X8ckq>OjRi}DKjyRd-e6EkodhqoX2q|nf2xCnAzlUY33glQpW!@;u7NpjUC-|XtT&JF(-Om%VlgL&1B+BbY zGec*n z>37_WTeaax26;;(Z1$%gzL@BxR8u!}hVvw%CS=n71Cnl3h;@7{lVmbvRcL-P+ppplad8#ajU(>jpF9jevs)F6y1?==qqu=M}92=GW{Yt%5+)ljoWQ0 zx>1F^%ZG=J@d9fo7y9~_>Jv7p{(`Lg$94GqV|n%~NMz3B{nGm3%6c6K^@-%2T+_HE z=R+qc;OMuNl}8;TxAME8se*Y8*++UulY~+Z=5Dc({~M+hKcz}&N{(k8s&{j`5u3Hj z={w4dxsia@jBOh~&F*TO#%~3I4$czUkRlt{(iAt&Z9DiA5zq^DHk1sGpHRi@_L8<*`9sc!^ruf~b#fv|yf%beJ2?2|?--qB z<1s0+02W1lxhj1SakrWY%Zz{KY&ztg**RmZ@r<)e0 zIZmGB^1Ar>-uHyEHjOJInk4uP3v1tVeLRgV@(my0<(@rUSJmYpw2L~VOUKHTd>;;%UBNWfispuES1cWXtUVkt-+@kaV;8)w9 zgcPnS0crtP+RodY9QC9pqV;zrGqSV89hSOctXoVkJhlN|)1=g>6pN513REquY^%U5 zz%!*X{?grBxEj$bOUNKdt--AIQojISddHdLf%Q(1%N5d>gKfPJr_Ui z0zGsESa>mEhdrP&fyT3KJaYbqrw3Rc~=AfbjKV^$j3Q0_$NSFqI6#kBbB0 zDn3<;!onY*pvmrBUWWX)E;BlF+D)z-Rp2Pio*ng=VyLJg=(%Vl8e^B5@LD+?+Bz^Z zVD(1_=+vI7;d^iDVaq+9NS!!_=Xg6eK}gg2J0y#~nUCk(kEgkllr04GOb@0wtf^;e z$d{{aEDK_;Eeq2{1LZcw9+zr8VbTK&rH}>X7i*tpwksS-;MDkP!5hw~?nreesAVP0 zt3~@%Jnl#U;|rq|8llQW5n+SL{LIzCfL+I4MGG7h?BFK~-k?y^PSs^TobdU5URU9A zy>rx~s$lM=OJPh?QVMR<^r@yGu6}nt1Vu~7C08c_A71|~EHV<1`f(JA*_<_sXQmr! zT}QRv1Bj*Iu0K{4?zn|%-*(ydZe$PnVbgcCKQV}I=aAo)-e<=?nd&YI%Vx%Hp|3Pj z*2HrxwZ1u4LS$k1cy<1Yb9C%t`7UNwD>03NvGtYW*29@SH%LOhPFg4*VrJh0x7~34 zxy$v2@)wWb8zpGO^fOC9?rcTW9et82b?x`KJ3 z@b5yHaDa)2*&wHlPj~HiWYyO9npR6qIEi61A0^*hC7YU7`}GbO>%dC>DRE4kqy08v z|Ht$8iyuk|-00XC#fVg(TqLQm6fy!>m7xpp6ef1OGVV-_+@r4deSfNgb|J+yZp(9d zX}&Gg=$PRW_^wJgec)^ek9N;J9-8XK9K9f1^-cRvEM)AlGG`NqU?l}Poq`e60e=sMEx|?R|+=G58|s=&-UV+a_wgk ziqL&174LtTH1&MT82M-%^Hl|Njqm7pKteX>`-BEmc7DHpg4X^aWHf0y=2wq0j0hY( zcd#IPdcS1VFd9%4ym9uN#+YeBYklyj){C`@$|EGOvxF=8RmfRIU8f~B8#aj}qvPV7w>8EUP4Mh}s#xt{t^NV6 zmW<@eNdgK!wCWPW;nPJXNe7pk#{GTYbcP3{=b2u%Y8;7}D&z2af1F`g!w6HCo-R7Y zU2U-Qa%RVct}$v}_-6cu`_d%eMHi`fcl`%!4Fud<06;0ktVHi7COVgqkt>wQQVLLJ z@0za0X%N#VXhP%S{w|m?5<=^9|03Jmb=~^|7!})al@Ab(^g*ZQ|*Z ztGM)KI3g?$kf4z}rFvWt?4kkg6iS}C;sBnGz_kiha1^(Urm>f1htjOWw%^~t#%2mK z0uM-rx=ZU$g50usaK%pn>=B?M)?EzdRG9Nt@^bYEne+f^g6e;F7RK zpqS@mWi_N~q2xnuq^g<-omlbXqrYoibdd&dS6pjr^50+DCVX|@KhIqa->a{V0WAsu zhDC3f4W#`xOB+*1)kSz8|MKOjMEqr5-m88O@z*TR$Ja6O`1ld1u&t!J$~1!|HVS$jOt|hA-1%i+>>w+iCX+Z1 zN#sH`%*oi?S)YZvoS7k~LLHc@ESp^2k3{OVmjPK(@^UD+Q)$>%!!gR&j(WMcaM8NR z`%h755=@4(Jik1Tw>%Hcay1*-(`j(>R+vHi?nf&s5HQrm#L@lWC)sR&g;F@g-h)wN zY6LkAXCr+}#0wVSK|`+%pW%H$dLDUr}6vlSX-S@FJ57V=V)jt_p2y zc|pT}wi+`^Rr)ood7hBtEhJBT?J*W*?f$BXe3zDXtzcpZ@Rmfr+jG&$$*m$I-fgN7 zO5Fykp)X2{g2-If0z>l@Wo2WBZfp2$4tUl}ll-oD4%JiV=j8O2xe8?i+sc|foLNvn zKmq5r16vlrZ2Zja`ezAWes4pEX4FLptXs; zP|N^ObyP(Inl8DLFoiNHYambOZd{8m9&G_1IN%~?^2+54)teqcg_lw~=4X+?s(nA= zExI)qI)A#XR4i7{{=r%Kz_S7oH7@BA|NLK(v3K+?#!+9s&%j<$u)OV2&x{mTs2-)P zg|0jqN6!T(jQ_5u8)!pMa$e}7y`%0l$Ck@RrIhQQct zdr!}_IHmA{DN!ckGuW}Uk2fGqh^bJtpfupA;8kAoA9RqZ2#*oU?6Gmgdn))@`g|>q zN4vPmnNkdM9XyEJtL;A?v}rvh+cBfP*L@U_U%XuT=)J6SF9PkP9PB}E=w3{in1==c z>9T>w8u$~8$3pD}Bo#_?aYVeE9ZoyNspD7W)A4n#Zx2&FS5E&brcq1}W&s1H`lk7D zHVfhddXec(cO}1a3>x3M1qF(gtTOD-lSU+)unt?`b^{22f24_mRvJ(c($Yp7A~*_< z>dkD)HAHlQR3yza@VSNUyxN}xv8r^Juuo$zEz+j*#pm~(Q3o4TKPfr?9cgsE1KLk#qlh+6g#sUtf}WL zf?wN+k5075O2R7BGNVtvj=k$^k@^L?9J!Z;pRep)s`sxc+6ikH`IfKk+mI6=il5kt0 z(3yfiNu!KzVFG-EV}DLsl%Qu^Ot79GpJA}3qJ}KU0#5fzeEF~FJo$+P5l=(+*0R~g z%&E~4ys%=0=9t`9sjgW>wNOl`Is#$q5+)H?-u@kt8pPrry1vf~})xaRGBiA`W8`KnL; z;ihZjau;vxuxbSQXd}%~(3%OT??W5VNz&=C&SL46*z5n3?jM8m|>;HQN_*Ka@nL@xhd?E)9LblktspPi_Y1*AGn0?_v4PhY#6Q}G~SR-?p3KL>}oni_x{379=+fS3JgOxx4Ft@U_G%0)Z z%-l!3Y>>^Pe;>lS_Bj=q5(B@uPH7s#EDw+$j;ui;3B+U7ArN^O$Wt0x{{BQ5uLuBr zP8aG|XXk1*lK25eLauk4YpE^|nbYj;d%#HQB>*K^1N>gF&pcD7Opr0kEFZ>LLO?1! zP`-q6aWo<|MlDO*xA$ZTj7fVgO8%fmvNK|6aaJ`!6NrAY3Q63$w* zRX+(x_ph#%MW0#zoqXrWY-%pQ$y@+xTjBPpQlJM6A?#6+*9q=5^DFZQWcVIEPn$pw ze!c@)?>Tt%d|R6)kE$f*z8*ld>>r{c15xqYGn&FW7`RkGk#+$04lFQ%cxIrl50nh> zOq7w5iVpJTlLP9_XcYMPLkZ2n#uf`xgIQPv@I3Nfx4^w}W6qFo<@?sqT}ftE))kpX z0(8zZn3sIV01AiTi)V&Lr?z%&A2hU~Qnr;=^L(i<4X`HN`ax{oJ56e?y#`jws}nbq zUt~vZLx-g8zE;piaVBKse{}wydB=p#LT`KWL5pQY?Xj2@uF{R0ANrXKN0Teg2lUiU z+k8A>lZZF(G+r6c*s4a0=8R==^-dL*R4Sl8>-50TqMXVGDH9GePuXY z6oaN+^saz;HHpg>yIO=V2t&AERdSA}0fb^3kt_IkdZAB!Kh#QtC-0J`%y%AoBy z+u3BIj9NFjx-{9a91ER34s0H8+Ojp_ZP2*9O!bsj09nHmL7ZAx0S3(D`yk)3l?Es1 zOT4^~b-frD!D@E!1UvgtIywW5qzaSo4#OR!l6$+9mB9}T+(bdwmVh65c#M`7+6}LE z|N9oR0wEt@ApM-;f9xS3u7iCDyePnU!m~ey3f)12aCx?j&OXM1qJ=c5v{nB<3%I@0HAqh{x_!GQ2e% zwqNdu_RpK=cQbXsY|EPU{oL#u0CR_U>Kf=;ta(Y2o3$D%Hp9gcSE*C&lGvbUbXm>T zQ8;-w z5=kUxr@Nzh(gAjCC7ul09(@R!aUC`M>mCI80P4 zh{n14zzLk6Cxb{t)e{pIHtIu-JVx^VRdsm1v$GQtmUCS}ajla;kbw&ZErBz~f?$mp z8EPKE@)J$gOb;i#zdp7t@GLHI^Ftt^<9L3sDZgih{9EO9^7+A!IIg3B`jXe@mrGxn zr=gop<}=^W?jSj$o;m?c`8bmLP&f+-gQ-A(kSD#QWCKz;R7RKmwpcytu-^6i{1&^D zpZ#y!ws2Y>N(p)JW5Ni`Du*dSVfdgnvHpJI_ulrM(;`+QCQ}p7#uA5-f`Y-jtE-#= zz%k?e3zMdR^acVCU_^IslLbMR#cxk-n}$Ow7$2l(V{1Hclo00Df@HX@rw62&2<7Wc zBXSJ!t=8SU38K%TcL>LXf=!Os3Mbg z3GUG#p7^psBOk#-JvI1zd+HL|>(FCL*ZW%S8dudigFi_G4$JfY*^*=kW>jGGtGB>1 zrzZ2L=Qmim*5ZoHWhs zXw7D!h*fV%03)If&C6#Dxj(7~^$UR9Rc4EFgm;ik0VMcK5a3WPyI1HBLqvzl3n}r{ z>10CwPv4))`{ssZNLLre(MuPg*_m9i(&G0RwYHrUexz;Ij(S$ zH|_SjbKQrWFDdUH8LQZ5hA?oF+YP~B^8PeT%1KD@!MQ&_KM#+JHYBJ5@o);wJrC*- z5Q%{RrmPe@y#ccmKvweAKCs_y7mmN#nVDrm7ib|t6s>qEJbqY?j)#uw<$S~Sonj+L zkW-2V!$VU}FZd_$85SnO8w`l?{XAf?DW{(U7}SgrUw+6Fq|l-J$U6PD68y)zy)U0j z&?Jfx*LHvXUUkb=Oqq&w;n|lbNIyWjITSU~);X3=@ye{Bv6}vIh9UQ;sf*)M43R;9 zmqvP_oKQoPmq|S0Y*ICo)R$Bl=f^~F9w_hHt=@#UZsZ}n)LL@%S90~y5a)rl_>y)v z)@Nz>ahE+z?=r}a88FlXF7Z4W=hcgB$XN>&N600MU%C{pvhHetwp&C5)t)LR#=d#8 z995Qm#jsb3W;Rs&klCwZLbT2pIp(~NYr1>}n~s6jy^R1f+Ed#Ci&9|xjM(?gV2j51 zgnakOeSy8J6URBU9eQ3peiy<3>o1#kG+~yr>JIDH(j8DueFRqQr%#ojZ|R9~pIe-r zy^JPRejmA0WZjxUt)Z??bL0qgFQYPHy6B2B6hpuw1FdhqX6+Oln2xx!5)xCTdlbQ+ zZEZ0TJ#63i?GcIv(*O$_6c-is15S*0DeN!BQw%ffKE*~=KxR<2AteSwBz+t7>-Y7x z`$xINgy+sSs)N^Y%gLdI=Yra?oY!`OOX#;LG0FTs5D0ip_rrF zZ=z(VeMmSN;36|c8Rf=!TxR>)hwXtGP!!wcX@Z0x4KStMhz>VyG*Jd&g917dNxCQ` zBy{$yn#TGj%w&RQE_jXckhdCnd3melXi`_(S0p%AC4fW&R|^YO|8of$OW%anNdUT* zZafA%*cW8)z(7em6-2!gSv~@LqDzbE!0y4B8WOROnf0LM1NBs=?vfX{{STLlm$%7v z=Pq%<4VY0?MRJEZa>LN))n{Yc=(W*I-JKf`&{N%;`Lr7WshF6&X@N8m*+$8!AyJzD zg@Y>TtxHI<1xKU&d>$A;pVK8#wZ_OWQ0CfbU;L=+3fR`0*Z|GHh6joh717YcM~;|% zvAuT-u9w+^Z~m*us>7uoJ$0Axhk(RP^GK6%`K{#p{$76fMpMe#7!Y1owhn7Z)9tPH z@>DPEwW;==X>^6h&*k^n5ihe>XV2Vw(7BCt=!-77MRq+#h*yA;O!2{X>ZSjc%4)-k z`A22-zExu~MGLo#$l`aa-Et)t*BZMfG9i}C9+*=z`1cKs_%D%Fc1vHV5bwQMWaz+u zew!KoE%bdSDeiDB`BMV*|B3qQWd^?;HSRwS^q}u@clpyc_Hoqv>_%bNJQ+KFPvj@@ z8nJMFxn1=+c-likkdW$Fo%FBSbytV>$De>SA`fEnU>_zq3xCfB?sf9Bg4@;4^A%R8 zj4;}x#wV_!6sis@*>L1tqfDUl zL+ve=4E_I%kr74qlp{gah6cO{BqeUJO|BL8$SHfr;lg4z&hh>EYQK-+nYi~2l!3EF zG1lPm$x>ZK>$X zaa8}+cg1nyHX8l6LQ9&ugm`8G`A{&>gl9TJK| zk(*92h_M?>N=vV8E#K$+%X6~E{6+rLXV13(-r7>x7hgi+KrySnLrE{$HYH-|xxtcM za&SHs$;i6$6yvj_5**ChX5w@pkS<*6A47TQkz9eBl*W_Tqq+wrJmr!J)ci6v`NKR1 zEw{8RCPpVvZsg@aSu}4|BoCvumKGI*qb4W0?q?4#UwOa-UQ&ZK)7}y+Wx}lWvbOzO z6(GB0)P`fo%WG@&aXspb*Rlm+VvCoM9@vtsvKeYiEWB-*KG;YnM5H;%&LNQ2ez2A| z{2E4?RovtRH}^G^#4|CWH0`Oer6nt=)CVU*C`RwF05)c{rdQ4AxDN%E)z`{1h?!T` zB@&%!hxjQmOum#Se^mw59IL>Ww(DQZtw^I7vM1<>a{)jT-0}UvTSDn4gkZ1nZ2g=F z3})%&;m0;!4zDraSf94n?Z0cL$wBMdYBwir~vE&mqq;3f%M(xF*dZ{<+x1Rj_iH7hK!M7qpy5919eO;ZU zjSUP*q(l>_Ur)JQM&`2~T2=aQoh-wKhdE@L|E;yQup716vjp!@wiS$7w|i!YvWg_3EMTH#@$UwH?;jr!om;;(yAcK<}sD1Dwd%bAHY~ z)P^kVMQ6NT3kDyknfv!17O5@AbJOie(56Ugw6HeRV#l<}CX+|9-h)s~SU6Nr4m zd2qJobp^4Mt_O32>)m-%4*s++$F;uW>UksK^qKqDOfOP%u{-nW%*N<&FZR-8$o6|6 zJHco8l6?PDoSR+w7#ke=zF@W1#Af{9lf8G^nni0=jC}{l&fmU&XJMK;8-jQXF5NIa z(*q0(IJct{M@2U__n!6QdwxCXj?atxB)L+Fq~gEUxwL$WQ#fS!p84Ia&8c!~k>S(~=4bcE_Xu!crhM z=Lj&b?9Ku(61Y8Tjy+0>mEazlrZN3o-xt}GwPRDDeho9d+{0vUL*M^zd8Ndmv-8`i z>G9*|7JOUC#&lA71zYHJeypITT-?x$GU8-5nD9VqTwnUXr@ysBNp`TqkR;z5J0j{1 zG;`b=r!6M>R}T&BorA+=1Y?|1Z^P@mE670akw3$^ zgT^A%!EB;O1o+DPiW^pKxoAn?594TOV7oo^<@_s*vT{4S!oQu0sBzs^M+-Tda8yoA zsKDXCTaq3W%h=J*^n9C+b7ALjjbHbJaLNv%37xK<7mz@@=XCEaxCQR>L0(F%=y;QO zXWltxZzL2VaHist0}nfgDGxVRQGRgwed^TaN+t5<^VQgL*w$HvhY^Y^OB>Co*SmlC z_{zJB69f}BSq4s&Fm-%F3pOk>aUNpI3$j^j?U9)8MOdN08Sq#$1k1Hv+|-|Y`) zo4~tjlcRfP>Ij5JYJ~4baKopg5eyPSEG1VUh{PhO0u6`Xl?^7tIl}ojKg{e3Y~WLT zf3cyJGBWoo8zP(TMGeItA{qk1Y_yuM}XR`pLUb7d%-*~otp7KZUSb}@~^DAh9a%rDx?Ch?L;25kcre+Ngk+~o65 zpI)Y>=Es42Q3G`-=&?E25@l6Tu3f;wP|PP!{&1&$T)QXS^<0F)CPG;%ahnq1<38pu zniK0b8b2SbMaO=%d80Gs=hVyOoO?8)OvY<=a;fV0$XU7&*lQC0p_wFvbt|NGJWjHV z9j*6#TXXXR3eM{8I1QLa!$H~BqgSuf`@mS0$#ILb1^Kn=Rg>eAGe^m0-+gY{g90C( z@O@|Y=%IfXc9TH!1g*qIf#SLUW6gZP{Dy97DRO@^T5D&9kvcK9L}KEg&s68XzX|#LGGWGH3^_4RCue}hbZ?a zKXQuK?W&|R!F1HA+y4{5hoc`z7~9*^VGn{z;g`5tY!1Zr@7!$1s1d2Q)#$F}_vHK- z!4kS2BknK6Gfv@{Rr35oJ#H}p^S(HL411b*?YHnSKnXSPvO;OeQTM)B^!8Nk(&P&9>*uYG-1C>3 zM1z+P6l$P)294&q6`{147}jLXMg_vW2N-G$fZY4Og#|Edy+JUTYWY1C`kD&3M&$N* z^uoe|mf|*)*Np~-6#tZ^x0AmOuHR43ug~~I7wOFN#owR&aaPfy1R3x{chfs=HB#sp z+na;mKDM8busKQQGvU5o?|>$}O5ahPBDk9N(d7`Y)?Dr&UNQ(EZnoh}`nqfyTkq|{Un}+MaFfAe z$DF*|e?P*`s}vYRQ1cOI?4XOOT7e$od{D{8)jsS%Rg-f;Nus8Y%yTVxD~n=;Jbk{g zU?12zjCa`H@KiA&th|lL>DM&Gy7!7a(5Wu)i(2lOiY!D2rjWVdSlOxmzej0}h7G22?LCm1_du>HNs~LgBni)W1d0 zL2Ops9%tek4J3m{7Dxd-y{TXgZZ*t5w$oOHM2~d0SL8w|M<2DLY{)!5iY(tZ1hR^Rr-Q8$J`wrv8qMDD~!hADuCH)?i!h+2^rdGQaT?OLkjp!c|7N=l8pjb~gEC zLZqauMxs&=inIw!Y7Mwu#8z-|GR%94oa-o6*|@m`P9I4zF&<=+KkbY+Ejj=?%@mC% zxCl%Hkp2O+08I|7l5Ep-5uPW9je=@UMa%=vn3#}|HY>#_a&_Q-|7D(f%k0{-(VvSzeHtpn@A5zPvelWF>rOtW6gle=<#otTsB4`I>XA})}=$V-?3YOXE99AXl7C3#ALE%c0#;(a(= z;81mh&dd(!c6XjMU?tuOrJ46$ZyV4kQSYioBG)W`C59F4m7R3=8}5hki26Qjc6VFS z;ZqA&`#WR!$lps;m1R{{M2gfs-+=6Q8t>irot0|yPrwaa2_Zj>)<@WBx^4aqd383* zIsahsm&jgD&45|oS?-~eq2*}LoBii)YTH!xS9WU)4a%i7hDfu<#pX;M)9Zg1)dK6kgO|jj7Zq5bJZGEV@Tf?BuYH+&v&&#DoT zO{NP;MloaMo0{*~>iA#(WzA9X$n_K2md}6#5UMT7-L0Y5n37MMtr^yeYax9RCU3WJ zyKFhA)sZU^8BS4ThL(!&M!_H^UxhrAkxV1gs2>uT@?JlHLL%Wz9X%XVRJ#8 znB%U6IV1B|wSVOtpPc`;lk0ADN(!ctKm5LdJ7N8A{pH`vHo0cGaS^Zy+~xn8^KdU3 z`}ZP2b78_S#)_!PPr{@J77Xszy&GK$U#48@Wx_iaRWhA8G8zq~RN zH&-EUZjNHExVY7UZj1Lr;ppy@cEWppN1P;2;d#)vcGsh0Hb(lpSsnF^*k8h}nV;e# zUq=^R+@%huO*wJSlw;SfcPZvLjdBBb#HD1eQr2U%$W<4+kb^NL_eSuNqt2>2V)R|d zM}zsR+pf1c)Ao^D@w>TW`rWyA`HYx~Y&(CxUmp>XGB@Pw)Ai|5b-qAe)w&wa8o4mE zQ5fQ%CG@{hpr_=2185Ai)aF(aC&9H8-LWOH@h)_5U%xKJ)gv&742^E^6{nBdti_71 zK!o1i#-X_xpA>)+PV(UYqdz}BqYZx1|J2X&WZhbzR%R1>?Y6L5w-&43_Y#y5NH+4L z#VPX8FMZ>OHZkF=(u6gt0lK%BuQa_1DL67DcJ$=Q1@lLJ<@YwE=-Do9=={1f>-kfx zP6^5FBQ+6!`x5u_U>$ZGWSn@8zl)e?$zs#Z+(stcCz9^zN;U$`TTdg@CF8q9blR0@7@9}dVtlX za=OmSk!kGg?51$3Q^RD6_U#{)N$6wO-@r%$Xb3?D0*I%yf`r5(adW8KRyvR8D&-AY zP3W9S@)H``9?;^EOZHcf-5I;K3|3jNx~qLwK3udaV6kXxJ8fcvss+$~cz77Znp1N8 zKcNZE#KBQ<_wi7%BvS`SX=6o~&w8vhh_X%DT^xz^3>+LBggSYKHE%04Vpp-5o`GSY z%9k>vHJnw!0C8qF9CPgG<$`dIRs(ufdy$xMqR=)|IS^an&Pu8B2N)}3VwfDg=GH@D z_R7hjex)zXHnFqIV~rpmG%vWOC}-zUCC!wHYpliY^^)dl`9L-wX&y5v-tK&|hTIt0Zs^t=fNKA)G-qe88 zm{t32gL%QE96xRv%sV0?)=PJ)L0!Asha3XSwVIkh?8HwYKW`kP$c7^T?iZd<`RwBf zNJdH}wi@OBwv`S$oGM$#hydZwf?{~n9`J@h_%-v0h#m-3PIoc=;jG3);{WF`ia?lO zU0U>{7^MNk1ZN>!RLtn4Y)bs0Tz*Zl>J;~pKyq9Tq|*SoQtYkL_ecrwtN$0~O#l8A z8d{a6RX*!52aQ=6_-;V&N>z+R%YA zSIE41!8wd)d!?De-KGek!Ri$*7_ClCO^tg*`Hn!s-<(Wz1`bHaj9UPJX5h(p8jAYm zNFX}(Rr^;|bjByo9VtX#byhr2;|gf$iC?icbOJFN~*8hUzV`eCfIfQn`aRy++(j7led2{xV znco8yNs5w^?Z1Ds!d$BmZ&zXy?5gi0^tr|$`Bk+0m0&;kAE>Ls#d@n8ya00V6gT-NerEq}d!-tY` zaz<`E1C`#c6vNo@o5L!1oE`!zr5a{$0?7pQ4j}JILEgtjEA(RDhM;E++Y(_6B|H15 zS#4ewI+OCXTyKVAFmeCqFZPd{vt7G-KefVBjI~+REhJ@-{{wV^z>wC%gJSfFg}oJU zZ2kYD?#<(&?%%gzr7lF4kc#X}O4e+VAxj%c5=Ev6q3ruMDlxX~5wf?SOi0MsvS$m~ zvae%jtb;N0oKx5L_q(6Je*Zkr>%Q;#qbptJGoN{X-phF&=W!l~;__M#EZx}H+5siE zg%XPQ=aaMU4sU|P@~;%)b|hwEZj5lIRHDh{7396;waWV-3$lQ`;dR04lt|$kZc&7| z!Z@0Ga0C&GMZIz%i%t|$|HU1dG92r7-Ah@mL5LvC;zw7p_jArY7=8F+FlBIE+Tm-` z_CN|STasGZ_y+R|Gz=-!ot~by8+El={rW_XW?D5)%DY431&yVGjwr z7r-;Tk61XmYZbNC9=(LH@Nr9ndLEIyFoZI>)%ylP+Ipjg{(V-DQ{SrBpZ78E+XSII znlVqz>yJ@)_#BgOWlGbz{P^0nZeQjVy(@R*V;(=;liNwFyJen4W&7yNIl=qdf|l-G zS06v57HZ21<9{S$-D2~rmWNknYqx=uG01zFfqK>am}z@Z#KRKj1m~Q}TUYx3oU{q$p3^O_LpdZ~Y6*^#e=~&NIiNICgg-s9x?;|~)od_4 zpI7!W7b{RUit>-g;aIsk%PySgoem}KalJiryl~;9;IkD@UIltThojr0Vzbry^$q|0 z!O#;VE!&bk$7_S(0&TM{AvrmzR+zG-^Brf`Kp)p<>J0LDx#l)=S9~pF1;=lChGVvQ{klRi$K>S+du?Fq=#7!Z zj*_psh`n_<9dY|Qq3DcItJ!jn&3hc61p_Y!Eb z15T4?x>#=aRbTcyrpZ^xk5^2RQq=(|KtIBd*G)J*!G7%lkX5Iz{-PBCVRT0pv;{tPvVm^~d2V6RJ z4dB*fJ`JapA9Q%092-_cQV(K0Yf|Dc_Wi}Ge)9E5hy#qkvJU~uU?$&OL=j(9`~ zqgQ|1Vzx)t;1GUdW5b^Tib~)VJg=LsYx6VH=gl?cDG-#xa{0NzX#-5I)xyNAb4tg! z-zr9>(ob*{!SU3p1)~cu+S<#EyY@CV-*%VEbW>HH9D6EZQnC`rX;(7wQVDL*x#6Tc z5IStf-CjYruo80zW7GB;E*D-oISRfiw}+nwQ6Gq_3*`V#+0R8c_)`*;fHE_mqnChm z1q8L?0g9S1bVVb)K>-XjQHQ}ah;d21Vs-n&IzF9}8rmC&5s{KwQ*-;(MZ$d0_LD^x)!R@yIYd zrorv@^j#R_btO!c&vrBNYyV?2u6+~l4s;kX-(uuahEtr-q2P1|PK5?Q=(Uck z5J3TEv$r7XRSC8J)9wrOJ6Zo+_|aPmG%x@#H2F`EQd?VE#Lk`-%78X4?qF5$CX)fh z(ZctBnF_VNFYqcLhQfo|}SK5L3ikeGlbfeN`0b)S33Sb(GEIPq_I#?ao_vi-gydpC&jWFj;f zfV3b;ekaUE8#$-U=SGgBFhSX)u$Gx) z{ZsVN35sy{^1O*D*(bHOp|1^kL#!TEkS;%C@@#~2D}TcU)f?k}*|S%kGz0z)=6^h*4mO-Tp&Mbj4Brr)Js`I%#_xCM)kw?hgo6| z3j?5*H45F7ZGV!~YwF!6s2zc+3#RtA74luUUY9$yEC5lmNd` zfAT*(g8u`Kr~mEe4aEcW+mu> z;Tsk0;hno`2~AlEH7#RVNA!%0j66y%ZFmH)$Uwp*S?!RFNzkz@RBU<7$iyTQ^jb&Q z;-?+C!rb5&1--xcyy7;qR#t-cI}j;-5i6S0pBp__$D|B-u*Ta2kKYwdT$XaLwKdce ztNxD3Or-6>2O$?VgbVNJvBl)%D9_rX*(sp}?U9^}Q_4N<565Yq4u6YKBLBTPc50i0 z4}2@vLz=QaWR2s1G<82iKUkv?@k^2XfnrA-a76D6Z6?X)X-=9o|Y%ebBvDH1iiH@x}`}AbkpD8wT?8X^deS@0@nBMs}j*BBA?rbG@T=iqLwx<{kcU!SNE-iTLv3B!`u;8Sc!k& zT3R<({wyti3p^(90pUKLQKlgrlZgy6R zC2G!~DRf{P-VtyVlf$^Tb@I=DHZRWEaPGF|xl4Vr4noSgxxa5Y-L8j|DR zTdDn!V{>BpKl;x89shEvU>yH91=;`8Ci0);0A`uIS#@Q`DdJqF++ixR|( zr$df#awdVO;z;4=&ynau^z^a=+ox1QlkbD~=GgHm>PvGL`{5}k6*t|V_;%uE&knIT z@7q~Kjl*2k0IE!qcuc}wxGL?|JSRuV{ClS4jZNFP#Ze9U;w)S-XY zkY|`>56|U3ZWLWPs?(YdpT&gNpHj7esqt*E@c@|^nh+P)-P!51&?nV>8N^ozO)Wou zjHmkHgvu(#d?1INW=Wnsah=j~ml za(DUy6j|9ct)Dy*$_NQLgf9aLJ6=ORGM zbqu;eahpFUJNwG@>vnc_rl0StL1p{iy_51a;BosJ4T@}~ltogl8!)9KGTY$#%Pr)# zkY3NHSm|O^>b>Poa|tGetBeV~ewp&5UX6~`)VZ(2H1jr(22fk%rs*dc23KOG;}frU zo;79=zj=MG8kH7L?j2Dnew<#jO`V5aR-&I>5V}iNLhS|wg53_#+WD{Q>WXAQa0m?o zFE=%1{i!K`TcTqgqR^)(nLsUGjs@`A6?@PDm)hv2@vtIo;MRj2-;A5k9~EN`hDI3( zb>ImD%ocK?bf>x(CWfS1xb}*!1|$=!?OBiszJj4#nE<9R#KNGI$$x~?0uCmPtW#HE z0N`n0Bf4g9?bNfXtp8Nch)!=njH#n!;WFP8CSRspX$Z9*7XF>6wkD_7@S4PY-il>P zjGzDahIs$TPq&F?javwNeXuQIj2Pme#iy^~s(pJ;7GF&b%)VY% z+wZr%+Gd&&Pf}=XOBa-r`wIG@b_dfcQeC0PDK$|t2@T@cC7P;va-cB@eryf3wFi#j z){Lm}Rv_d_H1|(6Bz5B?L7xwPbHbpb~(Z2$Fs2tT&4rOU<1{@At1AWOwqvE zikpCa*%lG5!OX(63k}U(5#6|dNPv1I?)bULDsd^fi9xpk%}~@xw(sib1?_rjD%yXP zvs07?Jeey95-dXnFJg;sd6u9&h~^TUE%Y~fI`iDUSd}4EEHZK72$uCJm&}qfx7x>}r|iKzghg|4Ou<)qygcGuO6Q16XIh-vLiR|C!v$Fs+s|vS1jytamQTCFdvobySXb8l z?UC_@n|ze%3^0QQ%*U%2@8125Ag>{MySrhL;ywJ-Sc{z#6PtXo5g+W)7pQxG|NddX z;rF=j3GbYs#;rSdMC&CUy^^e|Rfph;xqjz13flaRRu*9wc*s>ucM9_>{elyd!3->yzB?)XB%(O%eub4j~)hU-){#b;QO??c^KQM_7F6#-l0e_?pJen@0@K)*h(1=s8N*w__i6sd_T3VAipiaDxl zRtzM(Z=j$%&c~GdQCcMv5X8eIYEn@BtBY(Gy3%mSqZbMhCm|($N`CCR6}Y#0@&Nh~ zD5`n?9+_d#JBSboNzPMGpR` z1gj_5g}!__*Wsz^n_qrx6JsxYY|e(PZI>0<#iq{WF-eXRxJ0lC+WHE+VpwPt6G^eL zmsrBB=#*7aks`1{!|mZO58~uTi?~IU7`eVRqOI|Koya30yvzB;N9pXy_1r8Y?OHOn*1xa7$9wrzcO{qP z8mhPKm*cxF#{JLMSg#fkuzo79>{p9@yvZjHc+r!-B34raJPso9^AZywYT!^S-_NS& z<@N2uKP!)XhA)}+7lY1F`)AZ}s`rV&t0Qaeuyg2WjKA{Rxeg?E|516f+`U5Z2?Dtr zM?-E?Hp7qcNdPHDmGb&Evum>C?jBMW_qV4N+??Fqd32QKWq7y{{}LI;7y#H&-W6Ub zKG9w@miZF(_2aCdkcqBhXd@}G`t15-{?4!BXdagG?etB*r{^4`P{Z#RW8DZ;7&7L# zyQ;>M_Y8T9`SISIqKr8Gj@98LV)^!i<$`BkF1_Dha$Fsm+asQlh@LuEchygQ+!iFc=_E8;p0Flf zXRIh=&f$WPx;f#Ef`P2*7+D#OsiVO35Q5=h8-A_fE!lMJ;bOxF2SoC6>G#CVt*(=ioj^+mUpg zv1E-${=nxlyM@XjUi(QQ>KC!4zvkWQ4e-axAcD{Boq6GhNI7B!`)gEU|DtgVo6S~tCOr>UF+ zg0XS&=UkKT-@dh;V<*MH&QE&?5_fkL5hZT;p7hH5X=X*RrV8W{{?#i<=g)I3njM&%fruqM%azP8Zp4Z^b;v6lkfnDAO1 zKj<{>XA01YYNSKy`M55tHt5wv62`w1x8)BUvxh@kbw$Z*y>?wfCjw2&L@yJ{?&dR= zsHPi1^C!0c>AXG@oL|xXZ|RdNOzOXc!TA1L7!3X2!eHb7B@7nu-x^~7SNy7E6mg@g zaKe|4N~19ZX6q4f5^dN$LUn)PFZULn6)gbpd=J48`L5W}pc=-a8MZOOL+4}M+2b7@pe!Y!+-3ydGhFyL)j4cgnarG?mpqdp!=ZcuI9}^*u@!n zR0ex`+~$6X@+V&Kc7yu&+2X+?EG&-Q7^Y{>>dZPGgI4^wBg9r<@{){Fh-lg^8(QKM z>I0<@&w?*set|92;wC`Dtt9wB!23X8bX6<9xf^P1;2_Jx1NImi8aw7M1_w=s8PGughnjrT)LHMzG5xC9!Y%~L3czC3W5}% zHdwu+<0^E7g@=!SfY)J8Ine!ZVu5!0318?WT|aKzC6^u)b}|4kbyFQxyL=-GxDF7p zUlk{4>|5s>oj-q`&<-2rwN#J}k6d>(ynFYm2AJ4_$~0)V-OiOgeLCmcw?w9M#H+t1 ztu9Q$Hbv!s#bUvW1d9E^jb`~JLrZ{y69@#*iCfx67TI)zO%NLGtp-ABCGMfHC1ABEK(G@n#s^7oPoSoy9QuoV@nHzpjuE(b$_>IAxji=-(n?IYG+{t z+*S$kAchW)oVzdj&6~4{-vZaYqVk`20g9ZImgrw0CZeNMh5x_`v9>9rv&KjU?c$K*=otE*khJ22rpsbo#Qg&^iFU!;>6DojC$F2%wBS zK^vY50qw-E$){)4=e94^Gv0-wlt2bVO88Vji8(lfPf;o;xjYIEY1!GpF@>d&eiU)>ZRc2Bt{45}-`o@_{vEBB7LIJFDVEOvoGXhd4G}Tb7^b#@L zT5oE`pjrCJyb6rC0~Hc3#lZn7eSP>PGv<)Svu12m%eork@n_`Z{4n14R#s1D3}KD zS|tr?GqbX0Ub*x!GJ|fR^mu4P5@F}+q@_Tq&Q;YmO7S5fKOTWgjd`|8!|jBVb=5Bg6mQ3)JrV@{=z(M_g*f?#r$5f(c< zASe%h9kAmZ&kf>@PDnUqMb-8SLT_b}R5Z97fr}8RD9WB8!y3n%x4nk{K*b1*O3t76 z`gs7XEJ`?vA>05nbl9X&56o`4fpE~+%45cEsOHyZB>2!G+!VOlRdzr6NnLxmaQ`b* z(kRl;CU@?Dg|qN>KiI7-4wmW@o755KSod8{{Kt$Cmk=Ls2(2o}9Jo8PX|&PKIVB}; z@F841kvs0vsK^}sIZy}|KaarAH4sjGR5BRbGV9{hVxDgVx;}A9N!K(oaH&cKB{Xpy z1)WT@xS`q`i%{n2Fsh0&f;DMn^?odD9+218lnchh($WZQJJbtG^Qc%)wjbr=Z@UZ& zY|5#wp~2a`d}h)L%G`;`TD~%0GzF&-YTPv!H9+7fHJY~7 zrU)d#oIPP*=gUY=PKM)TFY+jS=lbVFCN71lYg@rm=!p0r!!cC^NBO z=*nJnYksZ+tu>`FscQzX%HU|ae*Gosccky%R!@JC}A z{2xZIn;#$0F)Kp^CTnqrbY#>@_W9@m@r_k?TB@*EsS}&_h5aRmn!9_Tt7&PNBX_TP z@2+x#flL;1^lKpO=}T)O8E~IvLu~^4iGz$fKYt;3AA;)C+6r?UAHRUBo15jshkcK~ zf_*FqI+LjlK(TOOV4yUd7pA#6Y*(JMemb_#c%90Wvyh+rA1fcSgjGDK3Y9?1;sKaB zU;zM9i;sBCY1p~9E1?Dg>$}OER96V2%1^>oy(=#tGPKE1yu#fnaZXNdwN=2=@eqH( zz~Z2pg~G9`)QU7(CeVfq>HLR1$bFb0Tc9J0URs5SX-*aXaJs3CcnjCirQWyk=>hO) zw#%1&B?JT}U`m&Pe#g)Z$Kzei9rgbLU89e!BG<8SKP zJH|xn|HB1fMwH#J-p`){W)#`mHo^%3M2<0A`q@n!mWY{=ZI5vszDHBuprXkV=x2T& zmztHn%XI_1u33b^EO;$sp5JGjbW`!i_!M;=pK`itVT4$uxR{RNF>MWyC4dzN0w!Y) zD=uDh^U|NPvpd>fi)4WI-|YjpGHmaC+?3Bc(EQ^EY{4et@g)}i{{%f)tvbqoME=Bm ztX~pspMt&ZCQD@g^FcUxfUO6i|&@1zP0x=YgCl{4KRvXb>0w2^61H`e`7GvVCnSgG)_in^JfiTi_*mBpe%e+#qwKypw zq!nugEy?d>(?0#Z4_B5WO*aJHsaEn zr_Q@CC1Ye#l-ys6R5Pv_RBLpB=ghVP>`DA=95VYoiYlx0C$Kg}cRioDA&v(JF|C-} z*^Wl-Z?P-x?dfrvY#)FgPzXRu$;i|b(r%HU*Kh|`57bmGTM!feNa8lIA@oMh#{$&> z_J5xw)j8wHn?6=f_a)?&@h+!9$_I`Xxz%z(1_=gO6G<~auIcLH>TZ-cff^_h6a?MJ zx9Jw3R_~z@_U@@F>iowC)*l)s%6&>H^IHPBRN+)Nv5}+kP+HV7#`*`FGa>f#3e=4- zbg5oCgfH1F$V9(ZrFreHcUmh){oH=A750O66C3}kSN9o1W&Y|E?skt#6N{CM%E@^FgZ&g>r}zbr^Lk5IhRJ%3R#jg39M2uS4MSi1!Z2s?w%BIDv@>8$oK z6w&4m%&g1U)NGX>9@(nchF)vw<$8;hbq)JTS(ovTH3pmOxF3M2AyC|m)MD(PM#0Hb*bia0XSwz^ zwy{r590&$$QPy7_s+Q+<`Nya9w(~8EF1HCP|E>hcL`q8Up*c5k1cHvW+v@_CU~9hx zyZAYI`Ov3jzvO)k7hsgwA(sFF1y%|sGT1F4X7o7?0xZDU0p9uLeu=^E>d)mcSuu;8 z95>gkN6*$iOFAd?vmLeEM15?^ViwhSC}*n_1ZHa&xFtjeCh(gc*k7(fVl7-O+?IX( z)Gy{G|*@Tj9ID8GV$;`j=HzHmPPy&1svZD9c_DSr{E+?=Z# zkc1GQ@ZO~NG}I5Ux^B3H%`a9Kk9n5RBGqPbh=aNiA_YF2-NvcW*D7 zUu!w_Jto9yr)4`YZ;2jhl7Juw;wuvLY76&)`z0`3`Ffck#5DvVr@3F*-b!jRm+g>Ac$j3>E+*F2wUD@gVABLl$#gW z&K<*hcq^x*aAQ2k9S0=Si;9cq?awJGo29hDv@X?5%gcM2dSuFLqCR{_7z=PSfbne? zO*Y|JhLLmv{MFI+8Q~)B6LbB52;Vv1rOIFA$I_`_A;#u;*y5c>%2oN+gg}0-9SZC0 z&NCFh&66inq9}-PdXcCLEWWEvA`m}<{tHm^G-TZ`Cd{z(K2ojc=HQEDk8&1%jz2`w zyst}f7l2a_`pe*f@qg#oC0tcwB+1%70B^aw`#eI03GXWisGA4L@nw1F1iqHXA?O6@ z-yJ16Irr}EYp))cDoe z84a-^D6`&7cwApX3*VyBRY6(2s=7Hx_$a}!h5OPUCJANQApgR+qajMsZbqViLhFM=ZG>KgI;Q#(!`}H%z1E;Z4 z#jK>!8VGy<@!E&~2t{XlRRKjsPY{#CRt1snbZ9Y0*T1DjD#dZ%$x<#rCtmj;yYh6O zlw!wPijy<9O3Clcp|ID5Y_0#>5(UJKNJYaRk!rW)kv$Pau+UsTz z3=R(;`eMymO#jfrBKQW<59>IgRl}&-aj5Fr3p~}+l9Ce2tOBlD4DNHI$Khu9?qMy> z^e0R)UZuH7@%!}Ig!s*__9X=DNf-8?>*gAsz`MEL(=#Z_-TeVplD7QcJzuLPFuXje zRBvwM@dXj_13nR`<3;GcspGp?+7ASM88y`~T3&uB)%z``&By2i`IDWV&lbs2mft0$ zobO7ob^qG>3c`bQwv}xyF4A{Eq%^Qj4^T-DJDx8#vp;uY-uyfBM5!Ty@s$O*|XVU@Dj`GU@8;tY^1 zw1&Ug^1lPd&8QT?XcAe;vq)W)sr0K~DyL{JWh{E8o=thY1?ZJau9 zl4hF9u)Wvcg2(2XebSdRj29dKw)6`G+7G(IB7!0uRAA7Opo1<-(RSJd<+rJ_Eqp!L zih2r+2!^S9X}-_O(g-8sUYrK4%8gv)UdZx;J3w$SG6JHq3p7_C_vQ>it@<0VT-B{r znkfNASst^VQGzGjwpuS059ewf`b@x2;cq+8!^frxT5CA=0|3Z-enokCogb->*qJ7S zZGuDLJ+M6j)ltyh1L`9)Cuegj4fg#b9cC2cEO$$_ghJ>_<=fZ85^3ShSVT$dbAGNI z;f`l0=KUA%$H~$jZVZv+JFsR$7O-3W_@Jr$g$A37keIUaF`T`d`<4rGmXAN?%4<1U zm)|BAJ8APanf6^|3B*g69;Fa_{BOt}@A(Y1_|B=}3rQf7*1GOM1 zORAVP@z|P}DTnGKb(TQhfIs>Ryd~(RA_!m9yk%C>57Em61qDU@I(djW=SBdZ!e0_D zt$2Ldw<|d|K@2Rkc=`jh25{}+7G6gG3hT}0~;rJ$5dMN zkt%#kj`3}Z*ZKX6%)WtqUzJNF#`M3_UI=2o2p>QQw_X7#DyRSEy?alJ2M%umwDVke z#z6sSmVWIN5HJglCTI)MZD6XsBc{b55!^02BcwOd48WJHb_2rkP|enl6&nl2Aa(59 zM2<6+-S9W%9>ICrGA&nE+2tOW=-49ayuw+*)`4^PLknIdUf)#tN$grsEFcIyl3T@{ zdQ=edz-={^mo+tB*cWfw^g4X)pUUp>eVprudrcx#QVFHX$XUXeg95=QsD{r<1X97h zheztm@Sd^~w;%VWo~i0(Z-I1|X75NBmRiu4T2ea8zEVo1E2H&isJU4Fm z9th+RsOVaM(Y8_)6M?bVzQzkG$!ld*{idY0hv`w*`1%}Z5@&SjJuRK>mrr>y@|{bg ztvTSZ)8e_+K*l+_=43vG$VvCYMr=+FoSe?nEo0LP_Z|`_g*1f9dNsahNA0qQ=F*ljA(7>Zk2C)2yE9#wzagzKx2D6B_2ntE{;> z?pt-+jsy{8G>1^7TYjYnZ;CHmdQx|Cg)Yu7tKw%L*+^ms*oEb&WMsyeQ$xWHQ&~m(d91o_<9^ zt~SySf6S`Sx3uM5``NtSr2nXRfFx#k;{4~k|0bdAjB{kz7N_sM>vCe>a!9u15Z%a}wt1iQ`5fa&45fbRJ7-(NHW*c95 zcFJWEqc1-6ydp@g?tiLyIFy=Xyh}&P$;!Gy-7+UfWoytm(T2`mUR%eH;?ay>08S|3 z&UV($F9?ZPus#Q?HRNYa%^M4aARC$ZrRW(0N841-A%9{O-d?*XdQr0 z5G+edf>h|V+r%)tJ5O#m{AgR)Kbciq2*?e*hzZ4OjDzL+0FeSvVQP9^1M*vl!~nf^ zvdXUL?FHZrG}sDvhO>Y*0QiV!bA;czfbSv5Eyh91?eIfdYNR#@<^zd!>%cc5fXhId zv&N%c{&C;RLSg#}6$7X*7#m;HpyYW)HgRJrL{AEU_8e{&@9*BXAueh=`|7NQMnw4_ zIl+6Qx0{&-Dw@C{@sN7kvZ&*B%X>F7BV)2f|L)y6w=!rOgERo3y;?iKra9#vk2VC> zXaiu5hIX#=kq0O~h$@tB437Gtub@LW<@84n9S~0liak9`hwM1s%mrrZ)dsKENWoQPFk_a?7&Zk*k%77~(@>aZ(@%2<=9G{6kv;^I{<4`Dzmv}(}|;G|f0u#k#gZ-qJa zx{ZwuBoE1+gLcIx$(n(V3S1z1PP`|gA^-qV>VBT<;MS`NV`NvX1nCY|CUC;#tHdsc`7Nna-ui zI_}x~fd8;2?A~9$ezk)}Lvl8CZRQJh%`w?8B6N7K?Wvktp?KRn;Jes76Y057PoPv+LE$`00?cfr3UvMxCn|2ADpr1bQ zv%{vZE=zZWsfJsSOqg1EI{3aJVq5k{xp88AjmT>EnglY;QfY$eB2m=q^G3PRQy1zJ zZWAL0Jp(nmh)$Asy5pobsk@@hhLlza)3l&qodeT!ov7*;I_x!nw&U6?g0h{UO&#%c zC*0^l^88vEpSumsm&phHmRAWgHCdWuvj`vIlFCzaS(ry+6fz&QSNce;y7`$0ZOzqd z^4`%SNk>&4CA4-tJfidN$nrn&Khj_RbCaebe0;Gx4Erniotv6|)%Bhe`8o{n4#d`U29K>un*cTmGc|lMhr1(*1A|ukmx+ z?xiM9hMX*pi%4aQKJ`<}!VVaftzW@x=tm$%g)MBJ>Rcx_2RUQXa&n+76Gub;$gM|k z$trXDN8OnX=Q*l--+paua{y-KO5=AKz~JsZ%1`&^PAt>E&eF=ljTn~ppx9@au!-Mc zKY8G&&ce-k>N_jCxm!`I8ev$c@gXzY5|7d>(pJ&P;_Wr7`*15ybuE8Y-vrUsTd#4r zuXn{z$JGS2smdTgh-YGxNak5Nh0KpIncxsvWhK&&KjFX(ku@22NHa`Z@Uw01F79Ah z{bv-TzM_Pq+$h4p`t}Q2CqlSvm}aWScrX-N&Qu*Rm@WLNeTvz7^~zxhqqZ;mDsUC= z&JsM0_mA8`rJ*&qpQfq~IkbghIu;VGMa{f{x99Xv*8%b>wcSJfhGV;w4fpsU{}FuZ zlgW?#i5#+rQ9J9hJWrLKHQJge$DC!sNhPLv1UC|t$4|_S% z>Kyhil5?XYlyqpr`k!ZrgQn+gZ_eU9Bp-Wlgg}66khu^f`X3%3(s@CgirLtoV&I+Tg=tQvx3WWZ`!8QZ0FhxJ;sHEB7z)K9Ih84 zuzULYHJ8#E ze$*2@oL3pxJOwIG1=XZCZ7XYxfB>=tS%K>%+#1x^@UsLl?Dyp9XF)%vobW=5Tz^_s zZvVo5%T?~}n+R5RE4zR|q@vej=%AMgN-+e{JsOAzQ++r4L75DWEog2>8B3E+7vBAp zXnr{KQzSrE08tVvQ;8su-`pz<70QqXApH?3W*i!|LKe_|0SF|N-*E5Gaq^&uj!4|9 zI=QZyFdtu;Sz8a@@c5i<+YmIE-n3deD{vk5B^ZQCNJTwMPE6*kTRw=$E#=0)Cuma1 zp-4n{x`1u?)`hUIM*fCfdKg9CgH5uRrvSRQe5LRL;^IpP(gXrJZ1G7WM6I>yW^=nb zjY{b96iM-T#=`@S^k8XTnoD-fEy)=a2tTy6wh;tE-*mENBk3AfJ_ zSYw#iG=;;hO&Sz;B%|h%#GAYIrE2t*oAnceFQ*)P41+c9<>|Q%ejTN^MP5-yikx1% zOKoQM$;6$l+0It@DOBHcyK}CHsHmh+m|@S1APxa@c$f1*`0H?30mK1Elao(dcCb6a zh9AW*{c#@b%RNtg_H%p+6)6O3aQBlvvZ+TTdd7j|A8wX{V3Bz`&_uD&f48Ub4H59el0 zEg^n9dlVG6d-XgNnL39|pUTMaH225NF7NC3`7;uLq{PJ2DJNX|S;Qq0f4my2r?Pf> zk$n80!-dkrS;Z@{lFD~**|I6;AxC3NEle`@!>MrWZ9m_huzVe z6`|PqlBVS=?-bj;@xxJoGg;Yg!|+JpIX<1B&;S4=?m3eR?FyS0hlD90 zh{^Ky+#(9l9BXV>s_FCez|5~~edJDOJdlvBt&eZUtx?cjW{arXIjlJT>|u%{bcZ2OP)u}23M@itH>d&1yMaU^eifr>B>HyI?C;l$ zjaVfvnO0xdtvHiVVjO45!!2H2ExA=;Rkc~BN4#R4S(Ta|9_f`SZ1DwlkVZ&Eyyg?>&BsQ%!4 zi&aP+M0^x^g%N;)D%V~cW01Lrt?@s6ZI*V$N$QU}CMO*fO0)p0tj_;1W8RCJkZN5G zIyz+L2f;RI35;*Qf&dj7`LPAo#>PO0bLi9661p3snQd>a`Z5)|k3qkSmtNc{=JmS* zixMeSpX%fXgLdvv{y}Q_-;+wVE`2QqTdXmrwjdPyQ&|2BF_5GKM_2R)^LoXf&;Z!G|$?G*1NmgoCTJ*VQprWSR~s{fm7E?Gj|?gV5^J97Ky zj1~MFfS|9KEIF8vnD_(l@9~tRdy+Sz;hKiu`Bp!eoX`$i32GTuZOLP2L7fBzacN9+ zG_(y+Bcj0DN5Q;445;nm?=@T?jt1F$Xn&Ou6`h4Sy6@fEOlE{>iNk|q9J~`8OSAJz zFX(D@ONIHlmD?XEVy3c@7j@Zc(vONGrxFhuvkX_FDjx)w0bUk#Yy2UKw3Z4oCOj}7 zgK9d4hFUqnz~12IO=ncBSsUijCt4m1`tgW+s zSQjWnm7x75xB4v$o3{2dcdN9HndluAIOxIs6srpbHYmYcZqLJ9KolL8ihhk&aLA~( z!{}&Ghyt`%LqkGtf4VF59f411Vt4noQfYq=MiP)qjWItnOu#LPdg?AYPah~fG~cs< z*;(G^04hBPcUElay7sqfGg2#0hq*+|x7PMtp5x%X_+dhz_V-X2q6b={DFx4(%Rm2A z<#v8>!bDz;ULNFn#}ifU+zAN?BwfIdu(7q3<@qvXhufrW)$?1;0=i8rjoJNB9~`|p z+(lIUd7S>57*%xrHQVzSH)g*S6*+3bdsw?p!JDDVC(A*}0#|uG57#J3ACTGR%miUl z&{-e6ckwb%wU{)|`R-)gF-pOmv#yW9_3?2Q$IR1)(m=YgEYU-KRQ_1CB7F`it4u2dHFpF8xpptd znwuSp^+8^^XF%Xrl-ZqYXUe+3reXCP#MV94R6HM`QaHuD=mB2^L9QUL5STvpK(Zk* zL6`U?Xs zBrtGP^gGn|O!LhS#%HgrI3%@xb;h-UX931Tge^?gJ{+MWdOx3BiV3OU(X2hpma`Pbi-IXT$%SR?FR z*}HG9f6RV&;_Q*7`BxLqro+tWR9nCGjB6wsyqPMTC&ywmDviDbT%G}~n70#Iehm`0>Sjq=cs45 z-L~H-bI(XiM|TYt*~SxpVNiPj>}YF%_c_@8 z?Mu0C&`t3MT1gM$jxI)m1i>k)0hQasRrw307H=;~J;C zK*1;v>(pKG&*QnO;*J#|W08k?KR0h2;}`=Gcr-t;2;;j5vuCw1!(begY#3KuwAs3Y zxV=Coiu?=We>07Al~#dEFIV*4K^!CUy8J0PydNyw-Zk9q5#cZ}sxjWPw$V%6Xs0<$ zHTfeS1>$(!3m=&#O+mt0@usQ}GHhDh#5wHM#5Bh#8b!Yh_w9R~CON5us}+LC_BrZ{ zI$eR&KT1u@0NqdLxZ_mXoyF8(C35*sg&AXMRo?1K2{0hBw#$^9;aobS zRwQxp=SNoYBMc9P$P^{Gqf$C@tl8ElI3_O&s$9y~OC3=#=N$HFW7@0R?Z4wJaX;YPWTqrB-w4zmJ}-8b#U-{hX9)HI}->F_rW5(OtUTlctWrD!Q};HDD^HHjdOYJ~0cq=*RQ3xQ(A2*b_dSTmPr-gzStrXSu9^%y zkW`f8EY!(zuN(+`aNs%l%9$#DuH(l=FU@|3=KnS&;C&wOs0Sgc-QY2Bihrk@YG)(~ z@(v!mVE#z0Z0LU@KqNrwFlk@ja5oes1ZeL#c1F|OA=o^k=cXlz1mrE9@v~zR_nJMt zyQz5=Qt8=1#}~uUBUDQVy-+)dOqG;M(6ay|o+sRPsuaD3Z=gJ)B}l*-zi@ZGSDL7C z{}?k7d4a4+fH^WPUEsUxR&$bKh&wz6nT@5t6`S?WiPg2A>P+}5zgCG~6nUd6h;^yj z*?D2UR8P&-?m@Q))qbJdkw>-;(mDv8ph9A~C0InWW>U{Pj%#>(E3v?71(dHjcUmSU zWWhr^mU}S4L0O7n(gh?9fEv^FPKR|b{OQ0K>#l1O<+Zs?#0dl`vu2C{az07v!e;2+ zr(0h6_m62S`-Mod{4p^ZH6Gb{HO4qXoR%-8TYlp{OgHHQ`Q!2To?v~;>35d714Y82 zHrLlF+kGPP18{BpR+z{uOiz=~H~@%p@K2w)zvF~exL8NuIxLpfUKI+dfM&U3*N*qS zH;Bbh%HyB~0&Qx0g_LWLgw#Ej+r4{9PFb1AQAwx+3t-@vo@_i$jq{#z^&g!Q83>sQ zfs@#>C1K3A7>=J5v@*9YZ*dD-s}DABEOMn)4fGxS;@p|H4r(e8{uW%0Sy^T#1vrAz z_>fDNP6Z>Iyr7aFk>IgMFBuQc6ci+D45VzN``9O;;Dd{uIpIKhpg0nZ6hhnW(A9ftb z0{@92F+gGn4&EMPLMhA~Bs}HkB7U#m{lknGR!Wh|<+Is_6LiCM6t3RLG-$Ua**4JG z$uG?K84_snl6xg5o^Ow|ohWfwQt#N&F;M6SsyCoBAT7hC?BM`m=#DQVx3UL3?J8Zt z6SQ)6gN>hD0a*8OPIe#md=DxHpmhw6m)Bm2ZBOu!Pqi_yYV8?KC5oHsyti3}2lvc@We(dW2S)UZR}%8ZoHHWe!xqnr%B<4kgo`|g)KFX6cF zuOWj3VqyQ|;UZh$n-0Xl826b+P$cRo^HhQbtf}@I1tJ=001IBFF6_s;FAsxCj>;TG z=$7Kbb>l`=JBbKCZD3Frvaaz1=xhGai{kVJDYdLIC5XM90QEVL)l-H}TH{-{D1sBZ zz+?9Unxxr_B#^ZNsyvXmEv>8osmMQB_4C__-BRLoOEFL!+q&TMH!cvxcUg znw3VQK;@ytfeXXsNoe3ESR=QD{e$fuJ|n|ZfRfaYC}=e(tuuqHb+k?p{ECO{pb4i4 zn(R)WUX6QMGX@@S&^z#D0NQN5opRNztwrtLA9(&dQHuB6>V|h!_f>o|pWkB`%po0?50LxIa=r%!4hnrCS!D$ zMk-N&=W$0+fRe`M=G{68KdG>DLDlnhr^i^kWoD^!j5F5M_0Nt)3vJ%&*|dL9HvCo| z!F8iv^AOQlG)K#<%uiQm`(*QXJEMT$N6>E|Q9&?+9h%bfx=Y#AdWtJtK_{@xBo8>p zuq|L9wgXBO1C~zJ=d5@W^7ex6PW<+8b85S`}Q#({)`6GrI8pOG*6OMXE5=r`m$&2ZF0d@cF303mPm$Y z5_D8jXGj1PW1kQHu8G#K=WV=LS>o>wT*Vj8I;hB^G%7tS$v+MU9dRgEtg?L-M1Ahf zf-aZVs|OrG$%=|cqt#EeJ}>jat?bN`fBE<%UvMkG2Jevnnd1>rV0SXR_kiR%d!JNT z>B*W8QO`qOaV`tUTUv8tS9n=ERu`$Y%8qRko7G=wJU4uDX3;bD^f3JgGWp;B@v?L* zRxd5*^sI1eeM7?<_1>tDni!LKj;^6O0KTB?2M`=z1^_!3Kq<&?NmuUKEmZNf=V`B` zxvEO!_O;bm9X3SSR(0AQIrDDc;ZVuu zmKJ3oe|>YESLSX9jV53v*XqMW!c>xWAgBCZU77m!0!ZcHU~@+aX8=)(a3ZM?T<#c2 zkP44VjDd0&8d{&(_nqM63}Pc@((1Aad>!T4>U92)d3+7iV17V@?G{AdfM91*PYwZ( zUZrG0li)o<9pl1LI!MpkA+$Osun5z5Yp z&_UUojI2YlW#o%wwUoVg92GK7$c}?!W@O8D&iP$O&mX_PpXdD5tB=pP@9Vnn`x@`- zeXUvC8|axh7_&}x{)DU3a{T0@OJ_S!Njs-~ru+W4&3fZS&(AxNv5}E>4i3@K4i6#G z{5E3GbD*dZ)DluYK=d)4zj%D$#Z;wq6}eFis6? zYf&gr;4k=vn{zaZ${517e^LA*#k;C|OzDWMZ^XmBM}bAQdapY8k$E9estSVpD=n)& zgiYA)x?!*K1G@?q;c3)P@Z5Daaw~@ATM`%6=r}t36bs#4x}KZVo>FPd`oUhu8DM&< zzj7;S8{#9Cx=Q~2=L?BDqQfDhTJ+}vz=9a_!uf+;*|0yl;%x~m?{g{~Pk9jt)Nr{i zTXq62OOB#@gOif=ad9xq!zal1@JIemkLj^WSw%VKc^m z`N5cseP95XMB*Tr>+l}Y-TQ@s6LENvQe>;?{=kHvqpUFH0m1q*z0U1(miji^@nOdppwfNo z9G#Pm_oC&EG@S1dlb`=p1m|11ZJim_x!b|1QyPLUbCKOA%5fACl!yE{onI#52N|Ng z0bl3*LFhNh6$ofmU}aZsdQ-x1On`88YT^0EHxZN0)dMfB#M$Npjl+8oQNPcd|zn5@u~&vrWhX70|IjW+}+ z0YuRL6YWGaPjeUR&?H)Q^7yC^l!qUfb-()>wFhQh01$np$v(ZO-wzR+-QlHPEd;xG zjskR*3??zQUW1xKNHsM8$0QNu>&3~Y|5VuJz-#Mj(0>-)l$MxGD^- zT3Fn6|NOO0BFuO|MuvKqA}6tx_4THSYb~QxB1swZ z5WXg7f6qh>n94bs;IHGr7X`bj{(V!4pTY~4NVH1)56XEb>g!l{ z`LeEr)t*^1N9G^lTP5{b`t$7`gQiuGtZTp(71`xT>~2}ryv`lFzkQnVq8$@k8TxNw zA#LA?@(}Uo-L&2NY(xs$%PzH6X|i6Q1f9asw*9_Z=~wj~q*v;f=AIgr@ZG~7`Ea|x zqZDuU*CH?1u*6-Rp_!1xVS_rCXxpcMJm%?RV&bn*)G+E``{~!faKYCZO?h`ElCgYN zQp=G>^~bh%z#EHUzak{$$wo(W9Erkv&|kWE@fE-vD2M~Eu04_`>^!Q-*-`i$Lm7P2 zzhL5HsuSxXrW-&qFn(7c+Jz3GjAzdR?*2!bwELUjtC%zNOcISli&>fJUhhO*H=icj z#Po`FpdB3F2rGFk8D~kdaZ0$u}gH4Kq&`gsfDSzE0r=q3ew$wMg3g`lwBZ{6;zj%+EY5|4dO zn_V(9YvPF3PdwjpQb2C-13X$aOg8a_*OPReuAIq2#aSU`>AThTPEli?|KXul5z>)} zjUQs%ZUE6HR4=S0m=5Mr>-)FWc{=}X|JLmuk%B-onPRTaqOdswfgoM#lOFwwc=SeR z#HD?$tG;v@W`iX`m49_<{W&fX2Gy=V2~|RT%Jm#*!Qz<9iek~Iz;f+mVSUfe?w@KA z1?oDSNG4fjQ!@>#beE&4zuQWccQc96$H?vWXi!zCWb<&fJ21Lk=m~iD0HnW=4uttpaVZX z{A9t_j5&2Q5eO|5Mh(ktbQa%7SYOkXGX5aCbN^02dS>ReN8drk^qK;8R?W{g<_+K> zpbsgjo`TNB7Z=%6P!aQ6sOi>tAc@Nzv%SP7>!#=s(;7cCfKxmnN@UXES=zakixW^m zGfEFq=_>JSWtcp8ko!Aa{>RET5i9AtG?TMcimLdU*cmufM5X#eazLTOgYunE>yU7j zeeRvNwE>dV0wEd>d$&GGE(u6Rh!JDtx`b>N5?u|#FXnP#O4g`FK74eH*5fd$AkVNv zifm*?H}xMmG2)$Aw~GwkH&*Rk(cLVLj4fB_$Xu?7@$?Z6|chW`m=b)UW`JpV8dmX|!013&vn+EY4{)V#eV0HEhf;&Ihg(A4`C#3-x4d6C;KApf6 ztTsro-UHNsw9kQu?bO8&Wizj~m7r3E*0mm^U8p z6?d+gNrHkceT~`VhdwzqHAeTBVTT-8i-Iqo0G~123AOr_a_eCrKvy8VuHU5#mD|9z z2}C>(9_&GE3804;m}w$g;rKv$Pf+YL$O9r4%n4{c6Ty1N$Y^NP3nvFB1hBqBE_V~y zLb-vU7DTp`eBotUv-*TX{OfVz>O|w^vqkUNP2VA)M#Dzzu8ZW>X`j2#P@}C0NzV`lVlwM*_P86#hBK6l`)_EIKmmj&#Bb>OXi! zLG9gFjY^dYMk0tNs<%cqXjH5p;c26NSIb|-|2Z1-$LRHY?k{7jS`O~!TbuU`cr9b) zbH#|kPuagT>(=X>layizTp*t{LWBLV z=Cjl(x4yaz-0RiVaP;SRS4hDu5q}c3AkMSAJ!;RX;>-JK;po>@HQ5kSTnGZp+4=h* z<4s^07~+J$_FKDL$%_Ee)Pgi2v?qA>)r^bI<;UbD-H&yIy+1Ko3i6qxZXB5s_5(62 zbv)cq+_!i1ohU?n(`CGJ`w6s%+i?_gP~kEfZPqm?$H&LeBgZ^`6upBhLgPCyy>irn zRotbD#>T#1C8^if{WxN=BGFA0DM^+_N$~M$XK5PHW++s{{95(KMjbi(2JAI*dvouB z#d&dI;Y>UnI;6Z3fNWlgTHYO*qHI5~Ckfp-U?UZBF1ZwKPF0_?vuy|myTD?>D(Ca$ zC6BO>kil9Yk62DUEDH!*>_W0$=EecC6#APm*eE2#jSI_-2b7ezYOm>lqp!@8SAgl=JqtHnNt|^5Z^I}%L(G3n# zVe^SS&rh{JR5v%Lwmv~ffarIRdb(toy4WZ=i<4c2h&g#FyROtI`OSMfCMiuDT! zGP1hbDsH}3`-g(&3u1z^52fOkUVUrz`*)``bLibS z6v1zw#9B%n+gId%xAj(i+c1#PjGAYIo>X}A_*kNXSYu75w0M`LN*fDzvPek$#Nj82 zJ~L;wYsnuoL0%v6b;=QuR-8WbQACuDRLY|8v9)VEBHYr*ZhJ9}kvb(;(K{eRa`e%W zd(oGo)s;y-72|HM`#q$e$BbGwE@b5-pP1%=o6jBIe0 z<)JV(_=4oMkob~+FINl5&{Dc}L9AsslyYA&_uPYe1+M#WIpyEwD2!!xbNQa04CS1{ zMMT#hw{BjV8hG~)rNei-%5qcz>3?FdL|wKV~E)e*%9EH|k?8LC z>z!#!CqsUSO}Kbkj={fm%^Tr8p*O=sqLtwJF@48~3ZboAta%Vv6z|_hg^BrX6l=HkMLpjv4vHs9;IPOn zjzVv(_{PbVr9b!2J6XRm6ZtT3Js#PAM&)50XeDyVph4@Lq!P++S<`5QZvL`G zpAt4o5PPA*cj{nIVrsf6_bn%1;G(#X-a}_3>f+<$`-PlO zhs20_&tZu6>26$_Az$zHc6TqpW#;}jT;DxS44S!TFfB;;vyeqH|2;+A3t5hBo8-JI z;q0x`V$a?l$QEJKGiK60vMj?~TnolnPS5TdUZCOq&ZztV%99i#9drN7xgV*+Q&yDR ze5#uYxfGd;A$SA@g5gSb=N`s&f4>85)?jI5?HlZrjG5h_u|6<+Jz<7w6>nTwJ1u=)v zMtB%U)fM3`nLfE%K@4#9olcKpk#)KsfOb|Ta>pgS`o^ruLVu7)ZRj|4UbIZ_qvL-9 zv&v2vKMk~2odf|P2||gRjn_1%WqoBmJET%%^pzg#W`QSA^EUgyF@JVBI-#|h>I3!u zC&%dCF6XVy_%CDKJY6{uKG5kh zH*)bjBkI~uk0!V+X09i!D7odLZqR8EaAH@_Y{^g`D{naPH&lsYv+8Sg_iBIJHDhDV zJ6t6|jP+xwaewn{X&1--y@Y!zeKAs(S9E`GZfSH|%|1-s~ z|0r1UOm~`3znnc4qV7>EyikXDd>7e(ojF6Fj1>Xq%tRe=8byiiQo$>1l}fy9m4cYk zChF9r@K+PXc&%)%=bGbRw9Tj=sah(n5{qKnf@a`jRqb1zN(12efy}!TC{r#omEW9~ z9``FB_0>-;=wD8JjeWOfI3o9}?Vxeui`(w}Mz@z5UVbRxCrdwS^|bWR*_vtbd1|8( zk#T)ZGG<19H%`&UkG3E&wn{x3vjv4Wh#_nD8k#CBbd->@T~MZt7FRc?35lj6WTsuQ zyj?nXdl!%E{ET!CuV39S-CS1cGV5>uF8R0_qbPAJnhxXH+Eyr~kH0K=MRa`3q1~R7 zq3%L%zA8sSTtwbX(`DPGxaL!xRY^KLgV9kVIRgjA73F*6aTXj^YMINaR)#aj8z+h% zto~6w5gC5>Dr;yp5OiRGzupuZdxY+z$i2(>uML+MaXX<7^)i~zi|meEM^EHu$W`zM zoFp56m-CJA8auhYA+v7zAu5$8K=&=X*{mV+JDkqm_r*UT#_1dJ@`k3%<#r$cUlxWBvOMDa&(%B0po)yM`UbfY^zTR5Ne))(PZLn`#G0VO&J))XR>|-^m={1rd zqe-GJPg)A^EpM=h%KyysGTLz|&i4HKmbAr}12L+(xa7_EQ zY!q);aj)cdC1>==M(^xQccd!m0EAQbjrs|~{W`&BA~$z;6Cr4(XVOb(DpSOuJ+dh~ z9u!*`mAr}IaB1-vpM+(^gKR%oQPwSDxQ|goxC>1ohA(luStNqK4*IKAa`Mi?c}vFS zZuzq|zTGE9Q2T@#OU3n?*J4 zo}u!t^J$Tre5q=9`t+HKbDFH{FXd#nDxO{njg2AZ)?}?ux;P*)_ zH&#v@I|?Ztqhhn5sVX4U0Qx-!*`-sGBO;J$jbfJw%yz_9dU$yWNSOhR7}&9c2q66& zT7hm)m!Z7u>eUM3T`oEs2M6^7FDP9Q_H1nxeM}l;=|gZOr#|2`L-w|OHPfUna06C! zOJ)fHCa$jBTl58PY^CFsD_43EkV($6*&*ZIT1ZWQRJn&IeEW7w#SAw#Rw#V*+_`hP z0)3Kw&J~rF3!Dix;(;cI&B#Scckltyh#uyP8>hL%;NoymQyWdWC2aWP5tte*gu zUkB)JBkJ-S_wWaxdTJfrXqxgUX-G24i!UMQ+S*c0nX9dlt)bf z%qbV0wj~iFQg-ph^@~J^%9O6~DGwpygnUjB0a3+4b*yg*a(BSEl+7~S*C+0|Xecq{ z;f?F>x5WKUC?(Q&CN7h7$V{rQzkmMK&9!|}d@G=#p`bvc=;SMT|5~)+&(Tpw+?y~)dqT4%F46umOF3NP@g!7umabAaAGVPm5@ zHb+bL_`hGO0pJ2cO$u-_UlA0HuGjN|ggzi`Cs^4 zhm+uNC4<2?5^ByI8b5A^DHX&}hp2Z_2gXl<SgUfxObYPEx`%!5qLq{gU&0S{ z8(feWo*hyL3$p*^_CT`K;P-!h4ATk1sYcZmDR`2d>EC1-Ye45rGdGHua2wQyfy#t- zzCq7PL&F9x$r`057naFMRs>9Zvn6vdF<>^IB+O~i=)zv$LFbgko+qV}hswSZ%zo0O zP83@jnLrl}u2kmG2{#s}WbB`f7pybqCG7gL{lMmg!q8CHAd3K)H#PO%>BDEy`5KI0 zqiM9PmIciBpR@F_EoW)NuBz?4hR1wnhKZhZtEqb!JNRd_dQ_-UBAenM4f;>Soww+s aCUA0SI@- /data/jupyter.log 2>&1 & + +%%writefile /etc/systemd/system/jupyter.service [Unit] Description=Jupyter Notebook After=network.target [Service] Type=simple -ExecStart=nohup jupyter notebook --allow-root > /data/jupyter.log 2>&1 & +#ExecStart 是执行文件 +ExecStart=/root/miniconda3/bin/jupyter-notebook --config=/root/.jupyter/jupyter_notebook_config.py --allow-root #文件路径名 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` +```shell +ps -a 显示进程pid +kill -9 pid 终止进程 +#开机自启 +systemctl enable jupyter.service +service jupyter start +``` \ No newline at end of file diff --git a/程序开发/游戏开发/UE4/源码编译.md b/程序开发/游戏开发/UE4/源码编译.md new file mode 100644 index 0000000..ed8c2fc --- /dev/null +++ b/程序开发/游戏开发/UE4/源码编译.md @@ -0,0 +1,10 @@ +# 下载 + +```python +#下载 realease 包 +#解压 +#运行 startup.bat +#运行 GenerateProjectFiles.bat +#VS 编译 +``` + diff --git a/程序开发/工具开发/zero/序列化.md b/程序开发/编程语言/zero/序列化.md similarity index 100% rename from 程序开发/工具开发/zero/序列化.md rename to 程序开发/编程语言/zero/序列化.md diff --git a/程序开发/工具开发/zero/数据事件.md b/程序开发/编程语言/zero/数据事件.md similarity index 100% rename from 程序开发/工具开发/zero/数据事件.md rename to 程序开发/编程语言/zero/数据事件.md diff --git a/程序开发/工具开发/zero/数据类型.md b/程序开发/编程语言/zero/数据类型.md similarity index 100% rename from 程序开发/工具开发/zero/数据类型.md rename to 程序开发/编程语言/zero/数据类型.md diff --git a/程序开发/工具开发/zero/数据规范.md b/程序开发/编程语言/zero/数据规范.md similarity index 100% rename from 程序开发/工具开发/zero/数据规范.md rename to 程序开发/编程语言/zero/数据规范.md diff --git a/程序开发/工具开发/zero/数据语言.md b/程序开发/编程语言/zero/数据语言.md similarity index 100% rename from 程序开发/工具开发/zero/数据语言.md rename to 程序开发/编程语言/zero/数据语言.md diff --git a/程序开发/编程语言/汇编/汇编语言.md b/程序开发/编程语言/汇编/汇编语言.md new file mode 100644 index 0000000..7f37078 --- /dev/null +++ b/程序开发/编程语言/汇编/汇编语言.md @@ -0,0 +1,198 @@ +# CPU架构 + +## 总线接口单元 + +实现指令的读取功能 + +实现数据的读取写入功能 + +### 数据总线 + +字节编址:`1Byte = 8Bit` + +总线编码: 20Bit,支持1MB的存储大小 + +寄存器:16Bit,仅能描述64KB大小 + +基寄存器 * 16 + 偏移寄存器 = 总线地址 + +### 段寄存器 + +1MB的空间分段,每段大小不超过64KB,段地址即16位寄存器地址 * 16 + +程序多次运行,变化的是段寄存器,逻辑地址保持不变 + +段之间可以分开也可以重合,取决于数据如何存储 + +- CS + - 存放指令的代码段地址 +- DS + - 存放数据的数据段地址 +- SS + - 程序堆栈段地址 +- ES + - 附加段寄存器 +- IP + - 专用寄存器,指令偏移地址 + - 仅由跳转类指令间接控制 + +- 内部寄存器 + +### 指令队列 + +六字节,先进先出,跳转时刷新整个队列 + +## 执行单元 + +对指令进行译码,并执行 + +### 通用寄存器 + +寄存器描述的地址都是偏移地址,每次运行的偏移地址保持不变 + +- AH + AL = AX + - 累加器 +- BH + BL = BX + - 基址寄存器 +- CH + CL = CX + - 计数器 +- DH + DL = DX + - 数据寄存器 +- SP + - 堆栈指针寄存器 + - 会受到指令控制,不应用于其他目的 +- BP + - 基址指针寄存器 +- SI + - 源变址寄存器 + - 如字符串首地址 +- DI + - 目的变址寄存器 + - 如字符串第n个元素地址 + +# 程序数据 + +```assembly +assume cs:code, ds:data, ss:stack ;定义了三个段 code,data,stack 只是为了阅读的方便,用其他的名称是一样的。 + +data segment + dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h +data ends + +stack segment + dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +stack ends + +code segment +start: mov ax,stack # stack 段的首地址 + mov ss,ax + mov sp, 20h; + + mov ax, data ; + mov ds, ax; ds指向data 段的首地址 + + mov bx,0 + mov cx, 8 + +s: push [bx] + add bx, 2 + loop s ;以上将data段中的0~15单元中的8个字型 数据一次入栈 + + mov bx,0 + mov cx,8 + s0: pop [bx] + add bx,2 + loop s0; 出栈,把数据放回到data段。 如此就把数据逆序了。 + mov ax, 4c00h + int 21h ;中断调用操作系统子程序 +code ends + +end start + +``` + + + +## 代码段 + +代码数据 + +## 数据段 + +程序数据 + +## 堆栈段 + +### 标志寄存器 + +ALU计算标志,中断、出错等 + +状态标志 + +- 进位标志CF +- 奇偶标志PF +- 调整标志AF +- 零标志ZF + +- 符号标志SF +- 溢出标志OF + +控制标志 + +- 方向标志DF +- 中断标志IF +- 单步标志TF + +### ALU + +算术逻辑单元,核心计算单元,电路实现了基础运算的程序功能 + +# 指令实例 + +## 接口 + +```assembly +mov dest,src ;dest ← src +mov al,[bx+si+6] ;指令功能:AL←[BX+SI+6] +;[取地址存储的数据] + +``` + + + +## 函数调用 + +```assembly +;lea 取函数地址到rax寄存器 +lea rax,[TPoint::`vcall'{0}' (07FF6C97EC00Eh)] + TPoint::TestStaticFunction(); +00007FF61BAC9A32 call TPoint::TestStaticFunction (07FF61B95BEF1h) +00007FF61B95BEF1 jmp TPoint::TestStaticFunction (07FF61B9A2900h) +00007FF61B9A2900 mov eax,dword ptr [TPoint::static_int_a (07FF61BB21BA0h)] + +00007FF765B1E5AF call TPoint::Testvirtual (07FF765B068CFh) +00007FF765B068CF jmp TPoint::Testvirtual (07FF765B529E0h) + FuncPointer fp1 = &TPoint::Testvirtual; +00007FF765B1E5B4 lea rax,[TPoint::`vcall'{0}' (07FF765B06663h)] + FuncPointer fp2 = &TPoint::Testvirtua2; +00007FF765B1E5C3 lea rax,[TPoint::`vcall'{8}' (07FF765B0600Fh)] + +0x00007ff765c8fa88 {zplus.exe!void(* TPoint::`vftable'[3])()} { +0x00007ff765b068cf {zplus.exe!TPoint::Testvirtual(void)}, +0x00007ff765b07581} +``` + + + +# 编译 + +``` +cl.exe -c -nologo /EHsc -Fobuild\.objs\zasm\windows\x64\release\src\main.cpp.obj src\main.cpp +link.exe -nologo -dynamicbase -nxcompat -machine:x64 -out:build\zasm.exe + +[ 25%]: compiling.release src\main.cpp +"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX64\\x64\\cl.exe" -c -nologo /EHsc -Fobuild\.objs\zasm\windows\x64\release\src\main.cpp.obj src\main.cpp +[ 50%]: linking.release zasm.exe +"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX64\\x64\\link.exe" -nologo -dynamicbase -nxcompat -machine:x64 -out:build\windows\x64\release\zasm.exe build\.objs\zasm\windows\x64\release\src\main.cpp.obj +``` +