From 03145afc550371e95540ea177d9182b53faee221 Mon Sep 17 00:00:00 2001 From: Teiva Harsanyi Date: Tue, 5 Mar 2024 19:49:25 +0100 Subject: [PATCH] Korean cover --- docs/book.md | 6 +++++- docs/img/cover-kr.png | Bin 0 -> 657660 bytes site/book/index.html | 9 ++++++++- site/img/cover-kr.png | Bin 0 -> 657660 bytes site/search/search_index.json | 2 +- site/sitemap.xml.gz | Bin 342 -> 342 bytes 6 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 docs/img/cover-kr.png create mode 100644 site/img/cover-kr.png diff --git a/docs/book.md b/docs/book.md index df484d5..07c266c 100644 --- a/docs/book.md +++ b/docs/book.md @@ -50,12 +50,16 @@ Read a [summary](index.md) of the 100 mistakes or the [first chapter](chapter-1. * _100个Go语言典型错误_ (🇨🇳 edition: paper or digital) * [Douban.com](https://read.douban.com/ebook/455919353/) + +* _Go 100가지 실수 패턴과 솔루션_ (🇰🇷 edition: paper or digital) + * [Yes24.com](https://m.yes24.com/Goods/Detail/124158773)
![](img/cover-en.jpg){width="200"} ![](img/cover-jp.jpg){width="200"} ![](img/cover-cn.jpg){width="170"} -
Covers
+ ![](img/cover-kr.png){width="200"} +
Covers (English, Japanese, Chinese, and Korean)
## About the Author diff --git a/docs/img/cover-kr.png b/docs/img/cover-kr.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2d1e8808e65383bc521f1d122ead3157257b51 GIT binary patch literal 657660 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 =11~3G~PCqC@$)Ce^D+g>y_slF5-VLeds8J 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

VB$+`qPetEsMa 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 z z0&0Qb<_DmIGG~edhZJJdv*s{| zTTEWl+UC8#O7Zs7+Y;zQNxKMEk*=2VnJ}O!T~+{mEfLCCiEm10BBf=E9Xt840{fK_ zY8BMvzQKOs;AM`M?xmm{qEl4~;SN8@PD{g~rK0*{N=)KPqv6kfk&FBotH#tJprZn2 z9X;r1j>eiUD!}(LLi9gy&oZ-nr&A`1B6h3u<$=bi6HQ7SKm!3e&SYY(e^3@$kleKzJca_n z1dlpe3R{_6vU9<`y(D9dR5fvz%(M&)aUiOTvLXt~%I4}xIC!{|;oterRh_FNU5k-c z>)y?kn#~YhD{W<2o1oS3w8NgIl+(DFF9sGyIS(+h!}0E0{sb87(d89E@ErkRG%9u& zve>W}(Zh%nWTo=GZj7?pkG|ISstUT@a>e!5xzQEi?Ga5hNbIs6(T|9V{%`E!7uI72 z8pUfyqnpL89IosCUW&ILUt=w2#LLdI8`tRyzH!uD=sU{LybpmvG0 zp@YeQtk4D~U#ld_e2g3y;2xi>TwNC^ii=Kq2O=2WLH`yN!@$H;59=RHZ!&2&9Z~^9 zakf&odp_iy^0f>ti{wLG6wGN=*dWBlMgU+kDPoqcN){Np(+Uhq!>OP^=-KDq?o zmIn4K;!piEHMhVd9E32ta=MZRXm!dze-!6tI#x!<#vCi|fv`3xNV<(9ho0?IZfUws z&IcE~jmF)$xGEanI=O+OVY~Z@Y7j+zR8(|XHnfkk1QzOJq}*`ar-5x|NSb4BKf6Z_ zrZ1goFnoucI5|1#Lg(*+rREPaFO=rXxDK{XGp=7nA2n^~(295}jQJ=0CBHKDV}1Q^ z#X&@Jp+gc&ja|awIk`fafT|@~WtfAFi(B{jr~ykGp+<|Spz9OU+4A%>w>)jATCG#x z7ZS7ZXLoEBS}vB6gE;Qs&ma5pU&V4NfGsdEfr_5mnc2RwTydvsTticJ`Dm72=9}+dl4>Su8tNyOBF>wm=i+b8q2JPTKWD1WzS_efqRC6V1Vc?oYko zu7jRQnmzvj^*e}{1v||#AQR`f=a2D?il(Yzk}@Htd=3WZq#a`a10to!_?59bc2kwb zd`0I=W`EE3o7>w1_0@*80odf&v{nRl9D8H=;e=&{e4Yo0{!5YXCQ(=-Ec=r_Wpqx{ z)&8VHva8Pxd~=-Y_qCyHGd_u6A7 zy5RBbb%7VX{J=l}Df!onZcr!^UrN3+$=1IrG7$W^a=-*eDeJ5FO+G;UAIJr5>i83v z?iT`e4U4)A3WV(t(a#71xn>;AwbBy*RCLtw@9(x1u&}Zkva?N165m|nh`73nks9_#ytu;rWjg^asXP{zb%^VjRWe48yEise~ocSO~p*mYxGKZ6r`90Xm#=CGmOnl`Y98g)$LL-K$AtIhxR8bQyeEB3c~_G<857$VQ`b*4ZgIC4At{w!DN*;N z&Hal^#`C^*{eIUTbp7S1*3KNPjctuEsC(Rv4iwJytD?Q^H}vmE(Y+w>Z3hkX+PAxP zhnOg8JvVljnRHEaa*Vx`KS``Anu?Tlm7j3FD%kTJIk9BtP}T>AK9sO9Xm{Ak%!Qz~ z(nT%JTBuqYx%MM)LX9Gg;holM6V~n}{X`>0YN{(0uSGOQ!}oHoY#+Kkag$bw6^GE+ zVN}SOS(tfC-6=4KR}H~mzEo5@^y@tR#tU~K0;c<#c|oWfO>JLyB`dajsmmD{YnH-E zmOI=cqK;no_L7{>y|^lgIK-*BsxWE-0$!XqHlRGtT5Xo1Pr0o2C!Va_C6dt#gR_!u z{5Oux2E;J1&=i@stCSqja9Udd>5@h@Oam2j`R`h;lilzqYEicPZsaI3$LPRS#@P`= zlIW0caPnSDzskP{6B40iK)-|qhzh?<)mqEsY(L+i^!7;JOL5m<#u{Tq&{EB%zqfzG zA*5V24>H-iGX8{JBQ9xxp>`c*c8?0ne|LAInZpZ_u{TFZjHPGvl}%A+BqGjyr-R=m zxx&OGIWd>?^6E68HOE}gs#*wz)0AI7zzP{1rO7J4_#!DWT2bM+a@Ky%i{NKYs|adn zmZUZavq_CTMpc2q`i_@_-Pq+vfRKYz-TuAg>#@KNEf$HaFyGKoS^4gf65ZHP$;$Tz zrYsg#X$kDeXk>LW^{~evNtK{V&1D+Ifj}q6%oL{KMrpj};azdRIrq5+rmfcPZH+NO z3zdWN8u5PIp;z&U8jxirT9;q-SojCK%OVT)iI8JE9}6N#Ft22msZIJfn1=$51oU*U z3#u=9^xFZVl2pSt!F)j23e=NYG27@*7-|s$ZgNgKJwqg~hG-~-#-l}n0)A{|LSF2= zJbI);q-FEMRmBxo@dn_A1I?HUXl;8GTtb|rSv|oUb6A8~7(NDCS||HS%eOzfb!-)C zht#U&Wo1_C%AHzSG@l}J&Q*~55zSOA%q^^(EHbd7%H^4^B6F@xBr`8ga2hcUcne)a zx+Ia>!^{9g**zSs}*!#vk7dVedJzI>@A}&@km}Ciz^v zS2W}oaGarQ7`f#vNebC0dLGZ(%YQejr5@F`=N%vv_N^c$?IU=^>EZiTS}$?tK0DB= zN{kusa1fWD-bkp_Hk(9%&%?b$iMA#(UXuh)p)Sf@NB;O(Pc()=RV5!y*SO7CIbyZZ zsoY$l#>p%$iPo65O2nZKdAvY)Z59qIjg)KZ{ys1eCN1M@;$!2KAxe07cvgjBRBE!5 zpOsQzjx(y9G>QosG>A)$tj2zvYSltsAa1Gfoz<*GD;gYiHw=tvzqtKL&H7Mlm>bW!+t#A@ z5w7XU`Aq4;p;CE7IrPI<{mP(c15}$rt$`_K&Qdj~I1B&0Qh0DNN#!?f)$;4A-J8R1 zV|9MA4>iL4_ja5|Ntzgw#D&K#X9G8-wRVM{%x=t}D-kRw6gyj3eoCaewyDB8#*7&F z;wehJq{+*W2M!%96lg2i-uN0Y6)8C@E7ogOkiBmhUhOYn`6Au{y2vU{4Vjyx@bEe> z&%SkXI@UPFo4q9lv$#Eo^oHRkV8ea<60F7yVNSvUXt3e+H`s&6&vAzIu$wjU{;3B} zFC!{_;DJUHksSfcXTy1$e7@roA?gJXJ;NOHsmJub6>fYbpN)fL2R@{xqtgdyeF%;1 znjK8SsD;VvcpO?}5Kc*~7|)&z^<;%Yrrx^~%AIODrgwizJLE_fC)mNK2p`IMfZTD*uF(Ok9`gZQWO{I%K7DG z<`o4s7{>Y17CfN~+v#i+s+55K^6FPHzeTSy%EH^de*}{;wN!}%`pd~y;hJiOBKC@9 zB~-JlJ9SF^WecqA++V(t&nB^R7bI5I`EHoAky;4*^$Vzr=O$Uiwa}(8YPh(h5L99| zhJO;IY?_9|-s$4GYW3PJTzrU?3)BQFzMekvrSKsR-mO2+~xI=A{+T0Q?`2p_a}^JL2stZau3} zqY}s3Y8bS$NBnPQKZhBcKanhJvfHR=%#?TKv92Ve)V~6gF9q%T2~m?*U>2F3{n zJYRX>NJM=%2ibU757)1ZPl+Nh@mk;TTS;-F>&~9niL;Qe^iMS=kHwqn?{6?U7)oLegIzJP`q}1W?ex7DwGu_Xa`BM_ z^_p2Lx&eFnA^OTX=-}|McG^^in%p9V1y6g%AxuclnM|EPrRp21yiHRG!DA@T!?0qV z*o+6wTzI&|fOKNS!VgOio#lMxsvmk8>{i!J)WPbs(z-QO6AWC=_a&#^`psT%9+OLL zpDOFVS}MdkMb~JUWvxFHn>&!W+j9H4Hw-56={nrbixqigoUO&;lk?4d~1hDU^#O931@gsTnx!3;kX-WX{?iR9Q z)smz7kq7Ya`HbhvZ}J6R@SObzDei`k;=f;QusuH&i+I1EyH(OM+mcFzm>`1%#%w*F zy2j||*j0hwLSWE7s{!kJ3LutwjmYHi=Ds`Zo10ppNXf=+JtwP@c?gd=NGSAGcd0{B z9<@S{gb|or_t}JZ-WxaL^0=+o1xe+8i4ZxOuhcw#Lc(J=vuj2&k5y@&`-1p%_pxUE zY5#3-uA%a#5r@F*#Lyan)9xtH&Pq#_; zAxXFH?P>j06K~qz5xtIWMyYWjmPJ(i( zl=q>)s>`DNBiFK_&wYqb!6(AA+DY#-*4yJBuXuG#AC`JxLQZ{o-!A!H!!#vEF@JTM zO`ANq{CGP*x${1Mld}}b4HT;N|4~~u-V#Jc$@)tCLINO;rN(E834kSu)TJU^%fEk< z;x{-v&-Yb(G{n%v{tH5b20$b1HXsH)90TDlo#-F;{C+%cEruEe>Giaj(V-gDk&}x! zpRK4Lci4}lt5jXM26ML_>Y;~3JTh(#&T6Mvd5F! z7#_yKXhoVmu z^mK?^=;~xSU$26Lj{RnFp?+Wm`hkCYU9Gc5?}soFtf2i<^GJSBwA|r>1QC1p;=6%A zgbdIekr}TE`+VPn@ZKJD8OLsp%>dwJ?eRN);i~!8)OLfkf1u<5$XKvqj#mQUB=UUq z`Hct6<@bgnZyDHq6CmE)BRolW#YshE(Wp^kb{02V9ar&eww-dD>t+YiwbKZRyup}-d4)ig^v|E=nXV}* zN@E)OD(Sk$K^jnP1tn4>1!~r!;f3GK>JuoBPC};!WwLXw7s8B<$0|k4^oE8+E9?rf zvdgRLrh4rQW9aXsWEB-z=a%{Cn3ePukA!mPst%4iDx3(5Fn`DycdiCNKAE|*h0Dg5 z*fWAIFv-QvlTuOYKB_55G!)zBlJzW7UOFT+>yPja8>_a}$_>eC>UOyXhEqy;qV$E+yh zkP{V73FC-ug&urb70NT2=WL`O7Jb>ZJE@oNhc-1n?}Mk_0xi<^w=Ur$AXPgd-P+~< zi0q-jX8@3nERg|?DEpCY2%qKY9gcJkdgagQil-ei@8<$b`b4gY?^-c34<~OB*T-)V zSIOI!0CU|9`uT0JQpD5K7^#?M^jS`W!$(uA_1BlVHSeXt1|1<~<)lh0Z9^mtItEb& zX+@2JhtVXNSr3VV&+F{gOFL)639RUYc{ZWgbCzoDT|b*vJEgb!E!7yrVZ%$Ql6=L? zoOOdi2);VADW<3UlS>=#a1!3Hz?S6++M$G(V&im}1bC^EsgQvl+biX2@s=UF=Y7Wb z#!?}ycv?smI}*^3n8Y0362o`@!Y5BN->9NJO?Sy=7Lw$2bQP78!e5eH6E8XE7+t|E zJ(ovxI_dd{bF45}MD5gPw$Dr;;hIXxLB`F?jMs7_Q z3~2Ip!!mmfwucHJ$&(pWvLNSZF-rIP$V&|kP6fTsBn59M$;WT9IMV4aJ z->#BIjyQfi9utfS;N6`p(l%GKG8D`;jo=dJ?)ks_64s#gSx^>n`KX1UzM+h`2$h>YNf2g^WfA1|4)xoJ+NnOBZa1(AhXpZwtPw05FA ztBV1~Ojn)Bx)tc9eabQ*OU5AEI@;3U?G-W0Xz}ZYM01uUZ(P>R`FV%g*f^d@UZrp_ z?f(H9LFK+i5$Zg-0_AJgzQA3AAm91AcW$mkf+9!jFbueLqfqyrmj!|~9$43+q@+r2 zMG`Wya@1Cp$el_UEtKFtpg+qr=s@#+Uq;b!xQu_+!LRD(Z)xY-kc3BWk z+sbC8q}{T`cE9+d?Hs$;cI>?0tuqk!38lN8mVgl7x4X7&v1?t|ynSoetX44jpdHx% zx?HI8t!X)d;$=P#DLoqt1nFLB3@%GpC)7ckQ^2(g3jv9U$h0^3F+zizwJj75(F)

MPZS}?9d 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

xd2>DYFEjQ3=wN!1>4lG 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

KlnHx=>O1S%){{O? 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�wWC_Yiu(55M^^M^SwY>tbU9EI2Wv_?nu%`1TZ#0n+!E86D=cb z-3H*8qkWx(W9{u(6?4K0vgB8Mi zZmOQ2M_6Kv-IpP)HN@*Ip=~EQ7sK&r4Q2ac(mmKDInOUcXv^H0G&@9|;&A#A<; z^2=%J5*7h|FVQ~#&9dJ_ON^&rE4XUqQlJMSvI@9*I715pF+|7F3A3G&0Qk1?>VZ zqiizoWe-c>H+f>clU@N2=V{PM=DG7Y?pcn{M4S)Pbs_MU0>pLSdXFBIu`I;d0rnGz zw~Xb}r*E`rR}d8@1I>U7kBehLm{N9>SHU6gk>N(G_>t$!zO**MHb@+D6|vC6T)9ZN z;59N~Jvx2}!r&>RE_4bInwHfV*>{PD@7ZSwshS5*;npN;oNA+Vl*LbmS(xi*=|b&B zFo~4O`z9x$>GCy~g6sX1gqvn}59?9$<{>&V5)utR!DvflY4q~`*bkqXS0VG{sZ(f5 zE>TuKd`FFy?<=fD6e~&y0!4i?Lhm$*ceY)o<>=9)v3N$A+^e8K%!8HnC_qSPCH|hm zy=~hzv`eEgF5b^C=Q(8ge#8fb8Q%$}gvH4|n>=J`nz-thU?xW(_G+$V`o$?3J(+3S z69TCC1-!%|;pVsarJ%0Qvp&H!#Cz95rW=?z>Oo3{F*JYn@l_*9Q)!RAmAN%JCV{`e zSJ;P30}Oy}S*K2)N{@g0@z6HO+$c!+g0G7AS-8&cIq!er3ttRj$8v>1Np7@vAv$*8 zSbF~X=R!&0X4ErhPgj_v>=%6rCPqO^;XGhK88V0ZP#ev}$R}!XWsr94*b(Dk|JEV6 z7+FZ%@}K?l-}02PC(o+<`|9V*^S+bcmhA>qd{QJWN(ynUP$f=3#)-Z9S}RZ#T=6?E z#NY~JpfF_f9hY$;s8lc21atVQPk)*i@p(^6(9jhPm4Q~+@Jt`er-H~KP8>OMB)$6T ztArVSHJyafm8OXoZVq*#w&I3ke0YN+Y~H*%VEpLAkK*3JW>J_l57n|!^Odq^5h!f8 z%wpgLPfMG;FRd$ z8SQW(i+gC!Ij7+GiQ~8i9mV>vHr=#qXPmAq%QTF_ZK(=H2#lo6xEq6IUMGf$+|(dL zI?lYD2;sRM7`sRCG<`mY+otCv1Ve{Q(G+e#voQP$*N&gU^zcPoabR|3wkHs(9{={= zrJw%X&!w)O)oA+{(jWdmUkMm*-?o$au!YD=T`lVPR=^3I+U2Y9kVmV#MN z=bpiW^8K`Z`}PR?`poyANgw&h!|Ar$cN48>YixARVP>ICz*pgFl892HqnB8Fj)ibA z!>QW3+UP1JY<0KMGAWI6?2Qm5j!)rsb&3dr=gyrEI(yTuU10(7FgWo+t-Rwk$J!>% z9XvT0`0u`tW;S4Zx^@@8jo##j_(KN|b4JB02w%9Hf#Ys~|K%_La-40k1Y)&gm6(E8 zXkrt1HFSCytBgX#`3s)tJ;J`2*ElC`It_5Lwm5ug=rn7Av=`+XmLus%E#-F6w=rDW zc5=>zo5R2Ht#728hbGd%O?MJBOG`!elGqMSlnZ)G+C$JjiQ=7k2%SFL56P zLDOSgJOMmKxL@W8|EyEon{zFIo(lVm=Z1jm$+U<7Ie7deWn{r?lFj)g1uclVQ=zUw zelq>xlnE0Q`A_cO z)qN{{zD{S}i`&4#{&|wK3!w~MB<|aG;S+tRj8z$CnQHF~Yoj@wIgRTQ4`pg4@F64w zTBtn*E)-fAtsg}<#dVt`Lvt90%DClMC);=R9j{{7i=E&jqh$mZ`(at)59l8FT?3=z zc;=0Fxf~Z!8K5c_S2aU2Zu|D_4~D{a6s^1SFQ+oznF%X6@BHy2b5vj!T3DE>TW`K4 zwA1398{A)iomljh{K8tCRPd2`^IhRUvm=?$@vqd+Ns3v=<*dOcUclZ2mp?m1jxo82A7tAlt`zLBp1Jw#s^Sxw=qiLh zaaETbuh+28L0BjVsRS_JYOF%fzVJfY!#vrzX%icyaghN=F`p4Er2Ac6oiWDxmAmh& z3GKF@v+P~C{kA($RKXyk-L*X7I*H4Tv{mJRCn(Fjz4Fpa2npLc+u-K(#=gVp+2>zo zZoUzM^p-8#(j$*Ng7pGTF@nfE$+7oND60jZIF#-bbY&BQiuIp8OQfhawCsdul}@;x zDY(@ysQ{9Wxu1l?(GZ+WjziE38B=IRJ>$1#buUq;gjEx6NN1so!|4qeYR}!c{kGjO z?nJR-Z-G_}U6Gs%ZmNF%`Da22(b`H#QfM(NGIhq4NgFIw&tF5DN<-KB;15)qzWNnibw zucmIscjLxQ2$j3i_MO{f{5uhFwJb{rwO}a>OtRMe;UE5|^z)zlX@oXhx*D;hA~duR zF1H;TR)z56ymBM8!ca#idrJ@;L37|ROrBP>|Cdl8uqhjy{LlaQe@-9!)M)znCq5T* z$3yIH!{zJ67hmAuzE{)c?K>z6JYc>k02!Wt)27WKc#B((nTiVMQ4=_4?&$V*(;rF#5@PQH_E)#qv zhm%R7Ei#EzB9V(YSahv^zUiJ5)b|xSlx8K_5@WALs;o`rSA~dJfc0DNTM_u>6%_=G z{FLLra&LLQ8~yFVW?3>R*u{$%!cVop$H^>X7$$V`+wWi=dB?@Y ziRi?RcJW;8o=IY)soKRrElXL1eZB%6sAiUTSe2ix#-$*!u2iG`?;Q zym;Y4Tu)H9ctOR1gBB#*v^a=MwntnP#sR>}bud)?t|gx>){-LQuU0cGf0cK9&oMFC z78&kp>)h+F#}fCTN#O{%X1p^eHN%{lP%H3%yt;fAx3G*&X700_-P8-1|AgJQ`(rH{%HPM;{q-f*5Q2idf)zi z!899fOt%ynrw|}lFv_uEn)e)kX>s5BzO;Myt(+qKQ1n|^$&i=!FK@AoqV6Y$4jqEY zdOkh*)KlpMhn#tG@+dT@Xy&WLF~-;Se%9h@Qs5&T zOB64!bI;h1>fvKhz?Kg1TzI|Kz>}Nhh&Kz*Vx$4H&y?gfo%e&Hg6im9REmjDKZT925 zrdbhW;_0WKPCxV0p9!Y;$dSWn?VkxZn+G0vC=Cp3iL$khhue^I3T8AmP}36?RTnNy zr1L`~>FD{hX$FS037XpuGdML3V}5CzIYj;i1fNEtAB{}18TT-uw3~1(>Vo;MMsT<# znA%Hh-rf%m*Wfzk=IXFMF;Clw2DL=gp1h`JE52iBa-V{25O2NbZQnCmm4b(KY#rxj z2vf&ZIxxigtED6%l)V1h9+U`Yfb)Ln=ov~>psZ$%71vU%(<&siP!(&XI3zB5&+^Cc zte9Z~wUz_vUOUzmnSAM&){w^^|2DMY+k{kI#~QshtZ_Sb-UMCM?TJ&pX>V%_E^{#b z>xiy&=N*e_Q{P6c1=%v@`qxB%R4};-o(^W(&i4f@NzXDDA9(PAh`>}2t(zm9uKPIV z+0d=4T06L|unC#N6{(%q*|;x_gHc}~dX)Xq8r6#n+}4}#NoxjnrQW^`!Ps{o%-N4s z2u=#HORv7pHJi>k-$QGJFf~GyR_jd&x$bk-D&*XB70A2`br|G>YZXEY@Xkfys*9?7 zaq8w#+^|o?_Y{mSfj1_{pip~h0F#jZ$D{ZY_pV%i`0E-F_`nDdw%x&YQFE+KPHKJJ z)Syea)ROaqCr-hfDp||r3QIW{xt@}Li`OprddSJz=}Brq*6G?!n0?|z8&(Mp?T zyV$e_fjx2jM3}2xaCNCM37=+&el`7z`2lR4VD??6*+ot3i^Q`e^Gl%A{;KuJniMtE zOA*FT&44Yq9$c+w`NS;c{;0n*6mqFoM*FR6k$?y@7rhaDA{CHa6vJ1VdqKQiB}nG8 zAIo7aahrs&sgc)jHy95xg+?S6b(NA-B&Ie&e29K|onMUi77(m_W>VOk;Nya&SzRrwi%nblfl14d?ih7Mc8Tzq9J(f+y8v6Z4b}xlmjShD5&E#w z{^cVg6IKM}Ru)?OSj&PL$_g^pGS9q6@mEsicRg(n&ALn`?QVjBli_rMcGIDBW-rY7 z@xc>e`5Z>5@R=?yEp=!pDaSli5HQNk6Iy=WXWOeSYeeg)D~4yCcnFn3LkNe!G)@Bs?rxr*oSYALnH@WKrro#R8snRVK{b3=ZYzo8Rb2XxG?0-E~AFNmm&z%lS zg|4c*cYE@&{5^~YKODb;yTVo+HS&yZX>J;R@~J1&V^4f5V&tD-th5|Cj^b)H8fJxi zEeC-UyuT=eUKu+X8k2odt8BZqKvm;!JPo!@S($@tWqG)`=;_fL_4k(P$2}St2-v>n9bevDa#1umSgT7@Bo_oc)a));V;Z{Rg-4ZRX}jB-Se zQh8VdQ*VgUpd-M~P2{eR6YRfez%`}>KZr9XplK8A4N;NPiM1iS_0|F7UiR0W38lvf z76|Fqk)uaKcsPY6rn|cXCU^sFWbYXLQ_ywOuw|&+Tg^st>CgnisWeMQStj4{l@3Vv zjG8FJ?U@$RdlfpCA+DarDn2;a3qGw&ef|AB2REDCgT-m#&@Ru9Xod!9k!!ro4a`}P zRyfzfrecFiIaC3JL2j($vsaq?D!h>spxFTs@N#a&{1!1u z!c{yn#k{lKBhepW*+n66buykv$iTPpu)Dm_gXL&(Jfzs?+;s&7a26)FfI}rC1y9B zy}D;l5awAXU>igpYhFyKV78dR9?AoG4PSLNsLs;RzyKE8Y5gv|e&UFD?!yYiWNU6{ zPJ@S!r8CD*rdwbJZoB<<2&yJZwUvYd1?Kv|XANm4>@tqFJha_5d_`K`-zzX!k!i)H zbK6lgM4QRq5kP?-S21w$H2;yQxIAvcM1Oeh1@A%s1`)c9cio1ImVUMKjFBbB3B>%A zDA_*!z-z1P0C+%$ztR||xt=&ah$&kaE*M`iEtqAPYM52~>q4B-M64{Gr;+7nrG4d6 z+@!|K<4|Bz;KGBzEpa~!3FPM;pW6nLW2is$@+5pLTV~&UYM2~%aZ!8?pHbRwnOSp_ zeW|C>2EY8$%jqJT8>*mfOR1U7ijHwDQ9?}KHyMFM22wn;J+?jYwgMMw3j*(b;q0Ot zj1L;WJHR977>~jX?Lrobat!Y(yk=SS@W2P(vR0f?$e?wSBk%zc>a+jA#Bt>%$6$(j z#7h@Z@!mNK>ltIU#0ExYYFZ+cVRZun1#O{NK!YZWuztcv##jL;Ga6bQaLK`UIs~x= z-XX8iJ8Zju3QuewLL*BVDkP*OG?C{<=mJih{%Qo2U_5D)p(}^cjQ*GZ_fONFSNEjn zaVhy9|JA=r)jce>Xb>oO^KmBk2{(psOITU``jhyD|=2Br? z3+(O7JY%Dv5hsk(DPgU0!ws&JXer~o1?G3)l;g>Kpj*Mvy|m{=>NtdU`la-L{Kx+@ zD-5VVKtQ*{C6kK<#>P`@4MqCGE6=4r`O`m*y)@%uPVJIwQsz=8! zMH?II^U1{knf$H|2wBjLnF_s>vDfe3eow;ee&TbVO1o~q1s9!lc`ox_jDzDr5#p}n zos;8U87~`N#*r7QmZV2ok+sU`UT0X)Ibb;ibH<@@)aQxCT@9U#>mrQZ+4TKqpFyB# zNW0eWigmS$ZcVbLNMDy=&>g377}GI?$R!kQtZ?AQ0v4T47{!M44DSzY9Z2^Pu2kz( zD@?Zsq)897;(YIWPjZ@YO1JO6i37=6aZx-M@O9H|2QX`b37lixsvEH2L0@WcABny) zri(LK5i_O6nTSt}!U2J)jh2T#WkuvEAmK71I4Ugg_R>fg}Eq06o5KHRkW z8RH{I55lL+rZH&j{sa36bGkmYvHt@Aq!9#;Ml36fjMbu+C}7vsy(-rHM%Nyg>5D_S zq@lo=Wu2BzRYNB|Rl5sVs_+{-a+rNW2#qlMy2ka>SFKy!OC7jwfg|9@0&{1KgZ`vX z(gvAzh9piLmp7Ok$9hX&zx&vCQx!tN7e4<5*8an(yB(zu5wMzZr`o-FAf1FnPfd1! z8;tkF48olI#jsE|)1Gejk#OMO95njO8BV&cZBJ(gN7LD{XVXGsN4n>c-qgLJi+M91 zwAp=1jctvobyZuMu7U=0dR=vWRXU4+(uCmEj77)3HbE0XL+a$5AON()xgds^)f=OV zJu#DGoKHl*nh+?#R>pP&+(3cF@9ychDVB1>W{Qk0XpF44s>HJr}~0SqlRz9O1JAP9a>;1N-TssM~@r z43}MNxNnMT7#que*Ai7-h5?l>|Gm5oA;kHxf(PP7PMKKxTL!~E3XkWWeHPb)^Q>uk z{KX&ptLAkIOP^^u!4x;bB0(AUKLnJ(vs_PThQRr%&=fC)sa}mz4_YWs1XY7bm*VlIRCjYLf;e&mkCWxX~?AVqs+U|ooj!)ufi zBfHGOjQ_=7`~~|EUXK1LY`{X(U+EC=r(Z(f@ea`qt)HjbZrier82AsSPk!=~sc+4O zsL=5hPMOIC?kwKA$cP(iAb*~b+KNWCuH;o?F8rm-3Lo}YI_o@@@(Rzu7sfIx zZ4}@YV$7q30wE}9kzpu_!4HG>o$r1({oDWL-=<&tm0wFY@46WrclmQ5GaT%j8uG9F z@mJDgkNq8cX`Z7T$`64Cx=NX%C6Ef?P?tQ*Rsab)%EQ1#U=zX~LX6hjaL=K=&LcJM zj_JVWf%J3i54r7@TPZK&e<(yGJ~oFkqNDsYU7;=9ue8^3P)XoO_}q`}Q>kGP4Yk$M zaN(&1Vd(HhG~V4Xxrfp>zWL4c<$viR7z#V_(DG(3jinmkSi*UF)P#3Kl~b_9d>k--1?sBE7=g0R6*7=-9F2SQrM z-&-GNE4b%i7;A)P z`}>1tX+>_tO0se7`qYV4ze+rRo-n0*3P zwDqLU>F0jtr@*@j>R?knaCg2d z&`wQW;=sJ#)DCU?+b5n)J$=Av%g)#*m0;?d30-SH!n(&;co3X|Yps3fzC4A>Q!NW6 zaDek)y5d})X9GOQ8Mq_lf7V1wn#3aEQH*a1_MfV%kWQ-dNW;4EFGm|m+w`6SeF0F%ibn$F%ch!V7b`ovSghu zN*3ippamcnZ0^e}X|lGxMNqI(Ee635RepQVJZ^rpFHS@&w@mMAe)QS?{Rh&`H{Trf z=!#tRGJ)L;UbPG zI7pn0Kvdjpf)O+$WiB68Z@nLq&6k;oxxz)p4H-ajGmkev1JB$;<0fXcXfYou9g{E^zUlWm#^)A7N$oVC29%pP9!!0M1i=ef4K8^-IX}`%xHp=e)}GMH8azT#q=Z z|GW6Cdy&^JB-P>`b;xiqsVR^AEG!BQ;;kAheY4CBL+Acl-nC4Ug@`lA!45MHl@YFu8=SDTjpWRLB=EZk7m+V&GU^e=uR?{QPN&u z55TUSyJA6K)wL?Lv!P9|v@7TQ@%%LesAhkep1u3`hTD#AJns20(oSa1!KX@lg-Oh< zfDi6xFdXrhU<0P}MYC{~F1vb(cqs9E?U;QP5)A4Zak(S%d7%O3K zJ$zI~h^OL=?uL$)3J~!!({SA?74q|1P)mDdJZztB7UnY4GVm{8<+=CndqYs!we_ax zON1N+udM6&7oJbw`qsD5svn_FBg6JH*dXlH|J95>cfUt;5JQ= z25Ipeg1v4%majlIj_`Bz(9v{|4c9X$ZmNO#9NPP4g!2ZhQtj>d_@kNc?Qhq9*fD+EY`i#=VGJq5*xDTYbIf;v4RqjXWsTr&!FCjM*5=k2 zd0nxl5EMpmpK5W9rrbt^hGsP8twaTq*6M2M+FD0|l2!DfYr{Z{xt8!cKGodsMyu{S zZ3I~8ZD>ukL}nVtT}xbO;Uw_x7US!Zoi+CMa&j_lc+hK`?!@VnMAuxT^2H*bm` zV-0hBRh-D^i$7XvrcmgNuoeyt;&E{J04`)4L^pIHZRlj51oMCD{DoA5l4cecu?eCn zT|AAjc>ElK&^QtH7)z9F%tB5I$F-2Lt*=K3fN5unaJ1u`chNMrHr@ZgeX%)zLdzCF ztYr=d-Z4i#>HPTVv)R>-XQH95OS+fES_?Y5GAQUfrvVM~3R>ViWBR)GDCEn~Eu^U0YyYW%Tb`T*R}e9)6+@34;e9v}NI@vwZEE14Z* z>BqvsbIVg}Itwv3uPzrxwNQg>T4E37=SWT?<{MfsK84 z0h5Rr6I*}JJMX%a1r26F;Q>2-88iFk=D0Iw&Y=Ba^DBK5UxL}ObHX^j9IqHK@4i10 z&2cRB({}uAU*HEV=8})(ScaJB9&G-Tk&~e@k7Hlwx9@@T`pGiLG44K(@%35hKZV3^ zVF1%1A(vSyNz0j$XVwx4N+H5|+sL973j>*=PRr-@&^S})XKen=t5=eX@>0+Siy%`M@swD$ZCYoJG9npy*mCT&wciDX;n`za6Xg*NG8ZicgkINc(t2He43Ghr| zV157kbcvAATF$oZ*h#;k|F)U;WW49ls4s?ZX-)dx)6X#ei!kHexVNoi+})cY%(FG# zy-cxYFb^X9EATc1?THho(!m1<(;7~)W~Ws=Yisn-I&cyfmwM>==1uETC+;~N?YOvL zIjccYaQwhR8odaUJiVB9qv@7Ot)61O&oOogLGH(BcVlr2E;uv5&H2du?j)+u1>B}) z8P_G|->FFGT6;^Fr13&kRznbQ1+tMTgNiBV< zXI|<4?b_Sd*PmW_V}I&d-5qO0BXq)0*YY3{eGS}lk5#NMf$!3EF*SyOdU(XV(7HJa zeNp)HT6gby=!H{8VcI!bl)JuazXR4@e3*V92z+1!2zwPo)*0aR%k(oZ*f1DBXbJ*M zA;FX|p)WHeZz@P6b&-JhfM}Y8gE4Y)%Ye}i5z@s!TF8A{C_-9x{Eln?G)}~J$vCin?7#}|5k~)453VmuvV)f{LW(PHTsIz0y<#FH$}&F zsp@_84Q}Q|Jz8l)gUQNaEHiG|-o1O@2&TZk#UdgTj0=OzO3V+&(r5bdi||2k8TZN* zjByuMu@Is~ml>A%Qu{BQvc_jAHt_ZL_XloRUNAniNx{~793S)Mc4nOC7Wp$i%lK5` z`>dOb7B}Z%j01}#FNg5s{sPNZVA1lR`-Rs{EKry0Aisj5A&wO!ocr!`DLrB~up+{o z(Ki3-iWKvKmer&6qtecuE-S z9}Y=!+A@~&>9NNj3q{QCn+PL}Kr4<}?o;^ff8!h9fMLWk1aswm&pOefVcpIfakT-) zM@5WGcN5y(8ho=C5o%-{#d*&e2wY>(WY7)rVHngUn9ct6{pq8Remp&R-~9n6(5o`% zpifxRGF%;PDksJKwc&A*uk%IauQW(zD)NAPjF;E?;P>?Qgb-m=91qm%z{={m5c!8u+V2c_HZCnZQHpWx1}@b^}YK-6Kt8Y^s^0( z{y+O?|9yI${U+xLuiDMo52K@#Y{tF=cbN;ZS^m+FK9X8-qj8Q|?i7Cap37i;bFQPz zpN(kDdk`Fs?>`u4&Www5Fv_)90D2I7+>gD8r3JW!k3l32VciEY z*{@NX)^F@jM^79K4}f}}j}4tqX9rKjc*&H$_R@3UqkA!6^1;JRo-sstU3O}xYUcPI z+qNPEVDZ2$s##p%p8E$Bo~8+cGIi=K^rVrs^#~T4L6lX)c^y(n1rfUuJQb8D5egc? zu@QuoE-VUtxHhREa)b2btf5Oe;E;FQ5QNr%!?tGtm#dQ}kE3`T3t@dT!cGp1Wg$mP!6skn$r4PZ%WN|xWX~!BS#LWiw6&+c3gp4u$~=0elqQ)o#zM7 z<0gd*CTBB@QlB{2jeFU|IO_*v;eM2QHp0kK)L_l<_XW<9XkUZ%h(0*KvPG>XJOI|L zUK@(K2F~4BN52dcs|6zX9`H*ts8B90>&{ez`&w9Z!Fka}JeA(sW?djX!^g0?tqtv1 zE(zTWT`9C86gEz=%KUTwygO9(s@eO2zj)6D2p4D@JuxQ`wg_M~88tbJ34Qlu4?9 z;XT_ICfQ(wVEVb1Dbj==oApH0XdktJ@GhpY*hcNq6(2;N3=aes`kTvSk)oZ3!n4hu zKpH}fE#{p9BPWmDh_+M~aG|9O&c=-!gHg5)rFz|;=M7chr$XF1TLi1!fQCgJw!~MzQ;Jd+W<^tbTR2j?V54gKLaSs8}c*07S>V7QnQg~UM!X27&LQKG8~WFer_37n z-LYj5!8rwDXM`UKG{OV@6pof_Tf}LwC2vt7RL0uT%)-#&znTV- zfj;=IZY2EffKhPIkf*xF!BzCbd8S)L6viw1>KhqEP2y)i{aGw->p6U|KXvvHA`*>z zGj1GO1gnWNF8;fCNh4l;ZBIIK_((9~-~84$!qTGfqc%GjQD8YweYG;+u8Q={ws0%( z>mZEIQ*BR$puT(8ZXUaGIuMS8Ba+ifdRYs>!q`_eD|H(yG3-Enugc!ep0;j-_JeO77!R>%4}$?+5>&I8BS3WC|^ z+xMMA`rP{&*xV1p=pkcc;2^FtFp2%pe}x%C+Kz+UZpfWtOpGX22g4=v<$9^rL=CYa zb`Kpr5-v*(tU0cxllbaul?o*RWonUVX=zU<2hRYHnsgT~Vz0fjhc)7Kdhw-KnTsAc z#({rp>u{ynlD_n%UygQa-H=v#ZG(jg2*v2lgc7Ye$x58|;w5BsB*hAFPo$kBs)^vFP$#fL$_*o9#Y@m-37=bd| z$X88WgKz93Jo7Lcnt?&>SSSnHp&4C0Y&v({0G_-0Hej_zG=WYHavn(s_>b`;T#7dK ztV*MGmqLgPivxYBVodsBz}G@Yw-0Pe!{-UTit?d>d9Z3N8|86DT4enhL0C9-@)S75 zhF2psJQXT2LX!=!f*mFfb5!bqy-eSny{z|&1^ zR(mAZh*2v!+stBkW&-}+m2fV-^G;IW6a4W2w1f}bH=ohQvO>-FHhw8MGteiTmw z_f+!Hi7`Uv3-Q4J$;@{_Czs65bWaYhpw(n3k?~&z&Q@H%n4~{ll#(Y ziROrPNDEFo5uuD~rQp&C?s&qs`$EK1=f7@m9wz6e^m6``!6;m>Yq2_sfAVV1W#1D= z9b2tN^Ro!`lv9Ic>gJnwr3>dyMc-Fniin-^;JP9rJM6^UBYkh_CltfOtnxhJHH1N^)^kAo)R(NRkmHzva4UDuRvA z;+zPGvy;#3vLN~`^DXk}D_fAwMMkZJgdsNGQK$$R3`!uZbKa?-c0VuZ1!1Gic$OCu zCzu3HGinYYIvj*0+DN{YN#u5+P;ik^kWsX31rC{Gqcf;=Gs)N~RA^B!=D%Gx#&yvc z%Yc{u3RYMwTO2}yjDQ=Evqq47v{R<#{glcW3KPdh*aiV$yz&SOW44Aeb_!AwEMa8w zelQF4)5V_~0Uz(1f{0X*rQn14Gjp36Uf+p5GnIGZ#dq;fSfju%gVe<=Xg%RJgy=`cGKl_=Vju`aK_?f$)>)zw0 zTl?a?up9-lQSj#bC_p?Q?i_yM6cx$})!xD*@Pc=QlWlbqtAeIX&?65%lK%N`{wCVp zjRE&Q;@Y<(z@8^TG=-HEOYb&xv0f>*&iUp$Mr|p8f8bTh!%&~E5y99 zA2O+G{B?bGT~eXomX%+Ivr9VLfC4<+Es;xts3_!X@J(Rj)oT6iQ5+nibckA^~TMyk$fHJN_658Fn1D* z0@i{h=K-d@nK2@TL36Y`)W8??GPT+eSUjshrHzM!)<8!U9-Kc~Po49#xLnP_7`vWJ z%M_yO!0|em`c7QHVjd#ZbQ2k@ts2G}oZ8aU#^&kfu!cETo7t!i&{O>)R$=JX4BiXP z;Di>`D#l?-3l;l17Qu^VaN7MYQ&?{2`BXD_9ws`8#iNF{xdFWzhQ5J$LR4Vz1d9+M zQah=#8$?k893=GHc7-QU8*CBQV6loP5M!dP$ll_LTr>f*A>qXaU->YinRPJ z!93QlS3Z9G5MFrn*Vt&E5EbVqA*&1 zJJG{E2%>oujf!RaFNlY&bQaiD?>WO*JjukwLR07>LK`);Z{Cbq7!8X=$_e8nv8**{ zO|0h}(HJuG29fh!o;ewFZCU7X(epitw+yF3giN=2ZN~d0*&YQrzx~)|`&NG2k4QX| zFuSO{HCz(avNkZpRqBmq3X=fLqRu(pFn0 z6E6O$$vKZEOF>e+b^O$zL!AR&B9(aIyE4i%FvBv0mMboM7Dg}lv;lLyI2BP}Dq8qb zpA2Aib9HFyy=QrjgAAU;T>ST1wE<91goF9Q{RnvI*RM;> zoPrUsw2iQkVKTQ|wWhWKGyrrgsBDfUOIp8fZTi?pKNeAMY^n^IVFra?aTk%ch>MFX zw$>|dNlz^A0G0^nq3wGoDdQ_8Fs>%&vjTy?0(Q7{m|lJDRa{(-5dxFB022@}pl!BS z3&|XzY_qnUCv;ZY(1ym*u$TAWcYkQMrH^oUJhn{m$T>q_)Z*F=6%S87@nl5&%6&xu z!~I0Yk>*6(tWU;TTy)%Z9sKymKF*mEyCc$#?q{mg{seq;xm73yUzmqVjGTYhmz}Qo+&kUuj5+{UMnpo&zImx^M z#`d1O?qy^4eQE1v@C3LP8fkBAr&?LxUyDC?j3@O+PXmmZE=A`Z1QYkKmxPTeV01Z? zf>+k$tI5>|yc@S2?>Z#`*|HOXJ8MLYG2_!t@~8^v#>uv`&9pvFtJGX#)&3lm`ZJlug<5p`hyTC+sO} zg_g-|(G)+ZYl*d!c`y$n>qhNr_D8@A6P9xd*PGL+nsI9;52kSX!^z6^^q0B~qYL=i zmoSlL#;Yj1nTF9OaJ2~>X~v4wgf_Ynd~D*Ql0a+B!V>kPEWnW{bwPtVn^sfrWEufS zbc?IUJ;pxHa|T6hz^2S*aT1Mp6&se95IAPpguTQm$F<<8u0TR{h{ z5ja68-dW0~|24SOO%ZL%{UIJ6JI6ZV-p^Xx&1%^nfi5L=^#*;XI$hITJx*#1ZC` z<;b(mA;e3+${OW-muAc$=ql)0uJh05e#CKc)O(eS^2z@uQaL@F7~mtJ}aLL-6JEd&W#}Nn%&)b<1!U8}KxhCg+rFtWv`E`)yF=RxMO~7Cq`xKw z8dwW9x}69Ovh}>5k}&iW3pQ<&DYfnPtvWOqS6VClBsQLWslW7wzW(U9QF3%cknjix z`zTEFFkK-wF1Y2M^$A<^o4o&CCQ->YN4uBdgngE|aG_FDDubv{5#vkSeQy>*uAgqe z5JE14ElkvgsVVYwav1^zW*I~Md1Xw6yZyH;zr`_s`w@oXm;^qftwJ3Kg>fx&r`wTC zec+eEHUE6yyuKee&2!rn{bJr)hy7`3Y6n*}Z`ZP6dv$21d%JsilX;LwD2Bo-lkYf( zAsNvK9XGlgc5vJ@U{PcBoYQh4Q&290ukw+d$AAj^8A*ix37|W2X zfN*O?<9o|3w_>4K2MxogpK_OA_yB(NRppDLE3PQ~F4893XL7zv*AKHn^x&a`foHmI z2piktzp!4>{#qCt%W&YOvs&7~RND1udg#H2IkkBQG5Os$0i3Ze*nb7|m=94RG?Tvh zT+9LZQNF)xVQw!c5sOs$$`>pC2Hr=eJg+U@u~aa29ttzv6Wt5qo)5=e0a!&yA1+KZ zA{Z*)b8Ll+!h`U3bF&+sc@UrMQo;sf*0W25Xw`D(0bhb*8ezo)83pGsG4~tM`nO`; zt6_ZZx#!;W=tB=t1v}D%5trcRfmLq5^FlmRh(KEb?oWpR(c8p^ z_!=!+Fp@C7MnS5lPfpyMcJ5%$LnA^0j3Rws;)Lq?DHwdL3G=jXi8?uI0zr`WB4~_U zAaWtkKzFq59k?U*a;^y)bu5ux2zripgutclCIkY<%g9VxUE6_y?V1?F^3Fup(&}2@ z?)ft}6r~O$n5*1_H z%UFP*rZhrFd<(q8VBb|;-!jIA?Y@7woVNlTIJVCr3 zutFg0NXumAqeLN4K_~h8`#PYr2$x6_{j32Uv~_~9J9z@D0zAiz!j(c5?tL97S;WWc zr67G!F-4Rv+@HqXkAaYBQn9lNVM>0iS}y4jb5R-+VTpdl>cDM-HaJtnU#%7bE^~u+ zD3IwE)`R8JpdET(Ok$l=>FL}QMw!pzAjxrd4oRP*^q`FTJdfZ0a~%jc0&nRQgaLUf zVSe>p3BowBK^PG*h~+e|c(qur2=9SKGS$}QA|w+pQz7xy9YRLu3O?VXY`!|Ya5&|; z81CJ>Hw%oK3K7}Gx{Ojdri-SrnujqXO57|%0wl8~laom) z!b2p<7$B$#bFvsM;*LA+$Z3@3b90v3Vu`iPqxW=0u{?zy-7YGVfFGVawuTNR|XNc3)(M(mW7DyjX8mYR+hQ)$~+l_Q#{L{NSQSIpr zi%-UtKjwG*W%ixZCjYAG_MZ!4=Ahbln*nZ!GyF|ny_q^V#L9T*+{)sk#iZ8OYIiM` zh)NY7oV#f!S~hx=x)rb*LF>v14elpdC7N=j;CCmN@K9jh3nWM~W}tBa!6h&h-s=Wb5f#zjqrTKt;_FXQe(XS9rfER^T>Lb?CG z`(xE@+}{*xY%?PYys9P1wL{ktVd1)=t6K#wUN1jxaXC3CKIkzCC-A&y(yuw9W>0;`(D=acXL6oIKoy zDK#lfIG*~sXCH=eqH5vj*t%AB;F6{#V;CNL!&(k08!)f*x4QZ`k2~0)tEHuLK`Ul^ ztfK}50KniYZJ)rM1*_8-LQpr_aOuY-Hc;!rJ3fmALt%qbJx#fvP^xOewOF}lV(VHI zf><-BfoDHVzglkFW~fpRoYb8$-_9E}eFJ?&cw*huGSUW4srB!p@J{i|`9+>Jz~tP? zW3f2UtxDHuQ}_$|HURB1^skDD4$2<~c5vk2CclL#|G;vF!-7$C(Ee%Yx7JJNsJQLs zWAlnj^T5h|3HH0Y7rd5+Dj3kuHu@5Uhx-%|Jl!}yj6gWf9`Z3ZxHCnm38s9*I`*?5 zFd&Q$4XrKRtAP~<$7vbqq8zP5(+F5cUOdi;;1i{PU4QxYPkySL=4^{O@GC+PxHQlE z?d(%&@_Q=)06+jqL_t*QVV&`SJaM86dSaN_H8A_)gRY34M|1wdc{ZN2w*wk9z}UF% z#7e{kliJT>{??!`|Lw-7Cdn9? zQU>3k+u~;dg1V&Hx2~$O^MEAHpPtkyf_1yFS_s+`(XbnYbmHfrB+F!y+NL%pup4_$ zvuVnWc3TPK7XL{m$^5+TOzdlb@ak)A&t)bAgHc>e5(2eW64OigYF=hi(^y=AhYP? zWU@*)GSxz)t47g<$%Vs3NB>P@EgLamfwJv@|B|SvH5~Q#tNvRT3LrvGA?|l8*@>p` zR&~uIzhzFl@XOUKIsl{N>7b6eZ8sUYLcvJ54Y2W2zk1XwWehmWL_2^9*ZD(E*L#ry*9r(DzcqnthNcG;#e(Ko^NN@*o+~g4Bf%R&&AU_xu3&Kj$9u#H zerxg;hQdXEXbKK2jM!uTrq9^}!ZY)9vq;E)8S%qZ=V;Skdq(0XEL+~2r||^xsqnFp zwwnTkSu^DI%6kqc?QSt-b1)vcW|<95p+n}ewq}0mn$o1eloxzQp~IA@I4q3L8}Ueu z*;0Lu3lzGpoj1W>z@b25Ca( zCH@BExD!lrz}ECU{>=Cc%WN(7+&Z*$Fpq7qEzkV6hjc;)Hurecg&U4^OF>RSK<#1| zOu!s%nL?X81A+X?V_z?q*q|EbNSITM44KTie#LzXW6-1g2F4@jFXKA&fpQ07GI#CR zO;wfQHazVV@2S-k-^4vN?9!X_XHVhIbpZU3X@!1ufG4zahTkE1xPJt9$f@ww3v5Ni zeYf0EhF0Sr-qn})$r9Y@al8-FQBV#ITD`QQD_;HJWg4Jm#ebGfkMqK5A{@Fwcg`r`d_#Ph_NB!Tc6~tDP zPnzp+31E}3saN?+wW-D*h|78AJgG(UE`5oc7!8q8cFdWKtR05Ar46$%>EMhES?CM( z$rNV8G$%}V_Esf>Xhr2-_8v%jd|->!+;Yx$L|GTJB6i70S(kiZ^&r4*6SMu8?UiLpL(uaL zSQ)@E@JT_po%Pj&;n>K)_$jzcLyd?AgU|Sc_Tg$HJ!eW1ml@mv4xLzZCh_6d=U(OA zAQ6aqxF_d2 zCKY&EyQwM+IX3T#r?!jnXlE>})43|1+6v2!fJ_jpZuVrzZ}^ThzK4Es85-_PuwFO5 z%OryZybI29Tl%b(YAxC-{O^mkF>W97{Bx?FK*=xbryLWG*dDQ(8G8ZsYFajogglT;(_qT}WJ`--<3-bj7qM&S_9e0VlzZIf#2o!j% zHS03|zq)ZWb4Ed=GCeonwWj5M*O71T+Vxc&0@qmKExjF%{na z7QdpH$oO2Z|K4vtDe{^>Ho7u+j-^^jJL1?$L*`gW)%N}PCr<<)vWb{13JdwrW;dGa zn{Aj#8C9rO+Wqc#zo+ckvxoTsV^5iBA%CP%Nv-|}3$@@{2cAFhJaxnI&?fUJuy{ya zlr@#3p>pvKnnrtj(H83-WCSGVXp_wASXCxk3t&(7ZR9rjOwH@O1v|z)vPcsJr?7A= zMzI)Mk3yURK@Wc1nG@vBH|uSGe*;I@4Kwhm0 z>?wd@Tm`c@K)BVJ%M+{{9NI>koHItda{k1n3&w5^VQ9%4B`K7P8kb)(jOD3I}M;``OgpgK!WS0Ozgwo5V}&1K-Vw_J?Sbwx7zh9ei{d8bbu<4|TnTir zmdC=d(h*PccI@0d?tSONGy|@CQ_7+LhOO0oX_oeQI`s*x?z%$_kI{F|ZfIw}gNPx% zXbleSfa&jI--Y`qdV7d)#Q06{T&wBOhHVI19I}WYd+6}N^3Jt)qkus`0T;E% z$A2)N8E@A&ao&9|o@zb4wR#d5ayZHuahY;}Jl`rhDou8*g_X4V?Q~-Zyrl&Q2U?<; ziNQ5E9wfSPmzSP4`9w?!*Ia9Xuw0YRP1YeY`DuuBOxZk+TL%+RhN_lR-<6QhxAJ>m zt+pmL1py;*+{<;asg?>Y1n=2DiPb{lk8>~_rfrjTI(M>YFhOlog-9MJU*Nz`n`_ui zHGo4{Ix+-JJNVH8LCyF&{*{o(80f2Szii)xQ86GCl}XcuMNK|LmG;^n;U?2|)Q#%2 z)x+Z?mTDMRN~wdq!q_M=XYr@jVqtmwNf{LY%b~YYNq;~0(hiDtoa;ESFanqAzEYW~ zFcI{939swI62=zzGHn*Ns{M4% zF7I!E<~Y(f>4Tl|9T_Aw)iP%)4Gc%A3!;9v2VQtS2az2-cpy=v_CL2jZiCVZ@kpGL zR+t2F8L+ma2m5+Wj2a>tKJHic3lx|Q2i9c}t!t^q( z3I`7!jDo`7={J3r@ts9`+=Wucd`34iv-zDtYYAC--+SH@_dxUISqm7#%2T4XiYUa^ zh)r(pl%cal(C3sz9WwlBmyBC&lTn)7Os(K2lV+PN(xVHMz^vRp{u6`pw}6Z$LTC+_eP@r^`8v0&bo9b9FCb%RCf7fo^o7)&)Mws?{5VnckCW8lCPb6a|T9>HN;H!kY(JcwR|5?zY6Zr#8+9OpvYvxkB< zDG>G|1kQ9K@G-6m88fq5@(gW1#aSOeW#jZv*?ar$@&JcGc)#Mw!{FLj8Db;#Bz^IG zArFu1#u}p1WeVCUO`3#`&ccV>w(r(*?AbimPB)6`q38zNN^aE6lI1q*cqY# z5Ik+o5n-b%wrl@gcivUbv|Nx4dLX?OUfmvaC(lJ0vna(Z+j-kXpBma=ISnoF`t7tb z1m4mDgk6%bInYiP2mfXV9h}U&<}q)WN+}u1dnU_jKKTv8$v}meQotetvk*(X8~5M*HWP4)B4GtZE0>b|$&XB*WfR=;@qLmQw&6+W%{8h8jl%k$$N z4w*+Mq7!!seyvPzz?T|RHD!LQ72mUGPx=0LzKh0)jpOtyxFS#l21%lBf7MzjKnT}t zHs_hdWhJ~4-V(3flMBFiGv^eSby4PnF3yiLKPe1*PNKhVl@IkCE!@>V7bS>?&wNx$J>)Gp{tuA3? zzk?TC`#V10Eugi7D`6y|0m1>Wh8FnVcfRvj`NlWDSswlR*K@$5LYaGss^Do{cjD{0?2=yRk|%&wjR^)$$@3WWL%DHb-=Au<*^YdljnKikac2po%_}Y#Ze(+`W`8Za>%pvo>eU{EK zse^AS3_`>BZ5H7dK?lvR^IQ0fmv%S%K;Ww5+R}RFn7Y5q=r+@1)lb|_N9!-RoW z>%Nr`sayECL0HXw6&&0UeFeH`rLMEk(wPb9DuEjiQZB&AUS!>1u?)lA(S}7=+=H>~ zpqw7haABXzGfzEHR?&v-tY?njrVX2MhdWzdI(njDFe*a>?D6O(5)c;Vhu`?>rdGM;5{Z2N#qsC`V)m61xFASF8VVPRwJY{>9{yJ}^c~Kfb z*QEC&?4uaIaF)EDsnCrufr~IgL^r~XmL67;a)q^j0t?DKzdc9Fb#)TqxC@~{7bg4f z;fvB=@yzkiq9YG6IyxT3qUSis%y$7mRb5&QW^v`w^66g4xG)jEbqrkvlkHhJtL%)?K?M>eRuCjq^7gLYZc+1Wzw}s&Vd(k z{iM!bgo!x?Q~I`bD^U=^(^cHtv29Dfby;6`;i)kQ zzAEG!x>#$7dx7Lp3?Iy1^z5zZ?&_y+bw6o!QB{##iI-(Nho#eRr|U!DEe#zPgyjQ% z{cf)OMC1!W4kC()d`J~BgP9?$Miz0>x;VL6OTnOOWn5@kEI{hY5FnK^iEWpg)+CG) z?+_J`*m7ku-8W$L4{OupE7RK4%PUD)_&{dsRjaM0)1+xmji5=UFXm0#&ASp0(O=(N zkzb;(cHHCwt3YB~)Y8~j-?2?Jw=O8Ox7kRou%fSJlUmJcex}}LfmMSip>4`*n9gQm zFJ^ijFNC|q*>Brs4C$!H3`v_r+zeO*IM#8XA9) z*G+`>)5VroIW_fI2={&W-3Nns0sUh2wHIcV@kZi+O}^Pw8P27*>jEnbT8k8&tq|m! z`C~}upZ@fj^8N4sp#1phpOn*QPM2dRUkVOERX-< zj!~Jk@W{CMxt=y(T$SmS{zz9dS80DExXOIkYw}`25xc-Q5BTEsu`_#Y{Ijzc{mWkHSpwdFTgxZ<{XMOT9CYxFm(qGzko&HI7}P1 zhJiky%DPD#x{v~l_%;JWZs+E(P%Pl?G|x%Sy$BKSxaW>Ch?^k$hYLu_W;&EH(QUw;CFW;X!6f_p}W!)`#)4%OtJT3c5Z|{iI>=31WXtM$IEwBP&jYG z%)2)O3&bb_#Rz3MzIg_(vcUVUPvSx!0;Ra9f@qTbrdTKFvqF($5y6*htr7|qM!V87 zxPg5M)~)tlMt}GsLL+-PSF>+o9*c(OJ-FXwg8iI*oYgT)<~8fJ&KS|Ln+RN|;`Z&n zgNq1_hff?R7jR!w2!9sg@UFY>EIW7aDeJcGKp^YK-HS6Muv$nT|-_KPBrdrj`%!P!nmgzp^&X1o1sB z5A}576A?B-wCH!>kz7^dCqcF@KQf^bRTmngR;Z0qd#zw&d+p1$scGl(`x%SoU7EPk zJImjHrEBx&Tn4@!Gc7T?ZP=HLA%sE~28mBrmw;taS_iA647`CR5w(r{H zv-*Cm*XPaq&ASz5&9B$)yQ#-^o7!P8YV@I2xJ2f(r?$TI(u;(bJYJq6qR`jB@n|`6 z>}XCWH&0;0%u*{}lNvW5;)2Cu8XsxO53K-xew!Q1GEY^U>Y3sH@O2#uDqv!Vw4^?MO*GuPd{0X5rOC&3W^PAPdOzjG(Z%TPB`ZB zW#WPxEY+g!*|Ud(_wG*ABQhj9RS!W39Ls9ilm1vSHSn>WGWarBGAiPjv?0Q(Afla# zmgPO!0%)gwlF658Rp3$y!fSyMITjPW&$T^u-;(zxrO=K1LxRZ^|}b6(VZ2fhzfBRK*j8tNr`;hrZmxDa#-E(1%lp0-1`ZX!gl! zKI?7L^6SMhY#z40n|EwW+E2&4mmmW4$@a<+T5O%`t^omk;2=}#SW3seujNMtl5LVv z3fstY%a8EN%L=bDc3~=Ab9~PGmY;Qwg1mNpt9Sver=Cq4*E5a^RBn1j!O-m)NR$OU zXAlNPa9KKi>IBig_5<&JT%EQfVj)1Fs@_6`qsb}g26$q<3s@aIr(lXrwCymRTQ;sk zEzw>E36rX@a+$LUF2Puc_f{AefN0KJNGcMPOS&L4RMe_y5^Ek+7Fo-8h}Bpp#eaMLkEn0e&58d6q%#(5Qi$@cR*u1wUO zeDp_4awq#Hv;_1Z@L9jE&h9%HK7WZr`1(sfs(kUN6a1KDjdbkSB6!)JZpL920b-WJ z>)a>N!Pz|wVfoRIA1@cj=gaZa7YM$vi#!wMh3B8e7=)DzWvb(`W_2F|1ba$31-+9~ zz2_KLPn~Y8s55M;?nbatXmGk_*yyA1wLQ9p_p^?<=8N|pz-yqB4V;KRd}f&OsJxK^ z5fp&2nnb807y$5eP7BjI&uYna?$tTybMgO1shPJodgnitXKxt+0?Y+d8dRy^_m_j& z4A?6T?D9c#Qkfd!>Ee976o!HfBAg3;4Jlcf0Fg}ulK_aywGFi_7fOG-nE8&3ncue8 zG8Gl%VMeu;0DRQr9Zq=eQ(F9Z!q~?FvEl}so#iXA8eZ+`|CIv>QOUh9V=P| zD4KU{um9~+z>`1xwhUlgaX@S#1)v1$0KRTKS0MCWgNJWKe_u_V;*yM%u66DYId|q9 zjKAUSFdc*ArZBcLb=(V1(?9XoMJ$@h%mWri^ReJP@x+hH$3FJ4%D64)J6suA8Aibs z_`RA&zRvG9xNNn-8NPM1k@*!b?E85%Z%2XR5XZ(%oFSN*^;FoMZBs%;;K06w<-9YGMNK15YPoR zdY%GZU9QgH>bN2GYMGp6ylso)E_0*nmTeXv*09IpLm&E3w9UR#8Phs%c)iXIJ45ns zZGra}%2D@!;qH>Y`rHiW;iHg|++=8AptV$`hFW8Bva!_g;x$QOV5XcnemsJZ^E@>Q zg!H8wKQIu&7$^Lin)cNn_5C!q>7`{eUb;OQo$qU3`zo%c zm&S=hUGFLj`tX{`;ljQp*CTJ2c81H;)WmRr`hDx0BJ=Z2bBZMpW z1m#WZiI4>?v0DrHxVy1f>jS7ph-1!GV4s6ywEx*>%J;te7-vM>7v}B)>)IssZ{5Bt zE>|8t24@fd4I>9*dExAdvIBRT9=P5G?q9lip7T0hU^D(Ob#dbI?ya2FfLl@r+Uzcb zBAI2J(Zwl+iC{dZ*L(qp{GtUNQLsrib#z`F3T4-PGdp5)KUKe|P zWQ>P!o%4iiU5H06u?LaYjHD(L?>QJl9Gtg?eL4z^T4=Np%rK|NaA7>pNy^h$5*P}E zAJ<~M4`775FB@@*peoP~*G<;mS*W#vofcjQ@$R?+LBb>+}*Rj>Y#kxdW zr57^%UBIn_xvDj;AGp+c>{&LPPRPJ8^usehREQ0^ z&x3Nb9-YHA$V9>#XStEk6$DxNX zydu>oabdssmA?gm96q;UYuU1OWBH|r?=OG+$NwXzTz8i(%$-3FTimyI7q|_7bmkPo z<3`|zAQB-0t5RrFrgkjB(iTTfoL4B)y0r>ejNp2;W5*80l`~2Z9-e=mLrM4D1)VsF z6=k8^d-uB#REEMAIQHfTRf6xrHRU-G-cC1!z*|OusKiWyW`ESeaKV2Uj9hcqLBHt~ zg5hG)Vh*p9(dRCn)-SVVUA<@$^^24UI3Xnh5^EPZ+u*wvzjQ5%*WXTflR||=SmD4Z zO-^oo6)Q5Qleu=njABMLEicanB#bThg+c11t+vl=@2NGHI7t|7k12u@*Xk%%N^0qA z`>S@%>&(y|Xj>enHzd(++tv_FuXpd>U0yiwLN=Id(Xnai zAKz&!3xjPJHa<(!?STDs+`Oh-^Y~20X8ZQ-VJ z4UWn*Hx>)~W}n4#$J>QW0a=D(HD>#xM~~tQ{#ew`UP;iBbAYZT^#+b~7$srq++_HW~wA!FzG zG~;PLHO{u7Qwt1X5JQ*v{efTlKzWe;E?YUYO?)?x%xUA=nLaju0Hru)y|&2!0})Dv zv0#>I_RD^^zP%rqQMOTaYTMO>UVoXg{U=YJmiR~%o5e(+1!lC}=VVv(4E%KpXv?wou7R zaLwdgvG&*QX7GjLY=?}j{n$dJloQ8KL?H7JwP;vrYv8z8bsew33K*p4!kOoudysPZ zEn_Xg*Q((dIyT;WvnOGZPOvJ-0J*5>E2@^+s8eC`=!9eFX{K6WgoSW)Z_N~uOZ2JL zvLH+qIL+e%c;v{D*G+}&RfC6h7<7r#Bz1;B9yjglMkE)h$rFjXyL5j0rv;x>~v>KqS4(E9yq zzk;vgbc<$~AB+aYUChLnwSZVbBzStlv4Q8;MC;Zj`4ygt=z9VcfYdQ+x$2`g`B^-X*vL{|*?jKCBSu&Ydbx{O|{iC5&Ec zJgm>WYhiHpk9U34I;1O;XJkb2L?j=$L-JtN=L576NI0OC&Ba+4bp>1n{88Za^syI9 z4LF;LgOdm!h6A0TjuF~Bf?xiLlV=GhOQfMwXK+~IIaUFgV7u?B*Q?gZy!Vx%b%O{u z>wqPA0>hdE)__&}EG|9F^BG_W%N#rsSZ>bk1E%7WOt@B^Hs<}*G!_7HV-Dt;N~UR( zhu3*vUru}mo}E~{=qy$MECte7#$aF#5t@LH-@?{;pn&YD&kArVC_VLArC{bJ@755q z<|mSo!WYjvaM961;|%R3;*i3ZeG;B+xKpjhvXL;ZjP(p|$25WPS~fhNWi2{&@;C@-a0B`T3>&=nDvCjb z32AE^0;~VzL42lb_%I5KA-)Zez)g58!uw*GQ4s3xS%?Kz7-}VyeyQ;3LeLS{P0}Q3 z;`J?`dF|)^&s#=-2nI5^61irO9X%(GN#t67KR4@x#mkj0lw6rvt-O|QS;4tnN4o}5 zmTAaB>SUJ~^3S{?W&9~aY%3Bs`zV6Yv{?i-$-LP{35JY@+FKD-pGT233xb4*doG;5 zD*;i5l=k7#~fA9$vpB>$6APV2hfseKPqL_2M><=Q3} z`Xz{XUEj5g_{XNus?l-5wpiG%j=wMyX~m3uR?^xT7n?XsM%>wMGo9(YhWZE zwc6U?Q@(+TeXGol<-#~oj%H@Z$VD(r*z3{H0Qi+F5(gZqI$HJHHo6J8!AS|Kf{^Ys zCi_<-SXHjeys3`+to4g{DFJtECBk9SSfC71?1nxU`5F>f{9SU}O9ij^r-A;}823uq zY9IYuude_8Qu)`u6Fjhl%oVK-ua3o9}_h#nU7|J3SO&`tFM?MTV^V@N0=tEQ1&3)S+KD5~sdMHhkDaaEUbhss6 zv3%#`CEP3KhO45Yx=!d80mDfd3WAn6jZb$NP1{ZX)~;Dgh{f9w!Z!y#(g|@TjJywaVN~Cb=$5ys9()>Ek|Zm$U$?+U!x&O(^`3!W%1H_{0KJ{Fw#&N7_B9M zocl0K;H2%-l9G0{T3E|u?*)vB%!YmT(Y}5As^ttCtbhOywv7H+>+)ooGL99tMxil8 z^eHy@%Iu5~w)TS`9!ZJ& z_TBZu_GwXco*K5boBoD|SuU_Pf2wKy$@}Dw(!h7P_K|quiO|6j@F#Q~*m}=(YS*rv z)PWKS9I634*sKb3uY2RO&pli2xa~ITV_X?nHwTZidDxL=Wdz;|5v+IaQGhOaNEnlZ z|GGfc>q++QDD2uV_jM>Bu7WY{K-KRUx>0+cvRPfBT|F?n(`8JpGdS#Lm@@_D5PU{1 z40Ad(0+6u+)T7Wj(5LiGW3d50)zYIT3En95s4$X|p8&@40SmkwEk5gjVQzcCHRpfW zR?1T0pyj|*lXY#IfK`V~Jn$O$#En}Sn2f-aK0S(X)L6}dvLTb&Kn{#gkYYKVh z*;KBu>Tl_`f{mNL zAcWwh^GRD2bSyxDBq0;&d$Xv!{7azKXc)yJ))Cv{EF%SyOI-=9<9kba z!l4_2Cqb}pw%2yjq&g-k;l_WKRz{g*=nl{YdT{2=c9FU>CtBhGX#BXuW_I2tsDigv-wsRv|MHgxJ1-$s; zOXZ=59*S_{L1bf?l@+$cX+K^&$6P#}3n>r0%*Hr0OZL^ntU6dEWF{Nt+WWp+lM6;` z-ix8!&jxr++Kj^@>j`s_L%_@=ciI~3Rv~oDaa9Na=4!Nf?*50PCy$lKfB1O$m;dv> zEN3pB%i`R@VtIuVY{l~~qOcg9NG3qd_G%)X$TY-{nm&nx^2u;*2GD zu;z;|9WVda=RTJ>_A-%1yIH{GpqIaO8xpcn%ow`UgUqJE=UqE@alXU@FcWO{b#pBF zZrQQB{MY~0e^dU|zxrRou@?AHiZp5w=kqTD?OBL{O0lRXc^bcN8VM~)vU+xG24OO2~WJ4z36mhxrl z7cDGks9EXI=Ck&|a64D5#tpLltMHc}#Ah6aa1ti+rOTX5%}K>qa0gkviZd9%6VH86 zcv?F&SpMVRd;uD86zk5`a__qyV&m<3A|~Bh?!9xgJpP?0%L~sQ#kYR|KlPo!-;Kd+ zzMey)FYa@s_tZu9)8VVmK@YT58Ux+n+=CfhYIg0k%?R=BZd7I?a@!i#HvIUn%$EJn z>@Q;@6P)|7sjS<+4Ogd;avK}1w^G;SmZ5SAZ-H~e98BltUR-e2t=&{kTo^6KPLGs> zFTQ|4c>+!N5CU^=x$Cw)&;2Qvp?nf+H!v~a?{*~by;hp1!wGgW!{-{o?|kqD-g7KoVhcLX59P2 z$vN&E$y^1`E02Mdkac^8xh!KWgFNeAl6L4Obx%^447lD?Z3ss5tbYnPp1mR6>qCLm zC;~j4Tsow+WTAt(2QSb~?Aa?sFxm}$C%#-6ogoDD3>%YA6OQ*1_|!(7gy7vm_|{?Y zzL#@i#u>wBo_@Z3@FO3fy$B=ISSvbu%0K=6|FV4bn~#?tJ@p)8bp)Yyp#0WveG2^Q zCS31N%bq30@3+OUZ0G}iWBn_hlT zhOTNOvYg!j1~N4=9)i}7{T8N`xfBH6eVx(@Rf!XhYqL;G03;5p@y|En%)!G418WIV zlNz|$4?9(1kPGM)y@mKX4r-nBr_5no5U0FPAqp99mXxt=!KE2z)}9rUS}QFO`}W;h ze)5x_q^~Y4;-ljk!IXuFWt;rhDP&p6YMgW@Im*5WEfJIblM!h3omM-frq8iaFt_gD z3XN_#YudbFDCEOWR&rP;_%^* z|7k3LZhG!48;jZv3h>_I53Vh4={>IC`!Y7L7=Y7d+v>*M)uv0e$&7F;g6Ib{@@2W z@a}~d4j>S6(lJV+>Ta{7rF86VRcJ(uW`o)h%EUKatInN0U;e+p`YWt*Ys=o$W034t4Ym>HMrq@uPc33kf3ImCR1ERz*+08>j>^AXtLG7+D?Um z%P`V+u^|_baIadQtkiYN_bl7CbR)ERxSMl03JkbqaYY7SOMwikxE}2>f|wQn>(Y1s z3PPg7sfWxRK72TEzyE>vX3QL;3%IO|qDUASogfO+mU7GPTgq*O@QebAGUDD&11+Ok zscD%QdlWg0M4SoNRES3?mu z=cCwG=SK(cD(rST7r}{61b84__cU|4k0Aso8*( zXSs88e;R@*qDdUhe>I{=pjR$S0Ch9;VY~AgNvWU z$MkB({59$1YgCB-&1zP6?YbqK%ZzAaylqiV+_8U|8#g(aGKw-O2M!zv5myVO(4fng z%(u*7Oz13N!Yp_So@K0FqdwiR82Yr79A%kIKP;dyp)OKCefHV%)o*{JJpT9(!*sZK z*-ka()w)=5OAOcV*bsoT!0ht)<+7edOD1*i-hJhF|MBmZ&#`~P@R=UUq+3LtFD&>n zfvtup+oW0k5%51_O4;VGh2={|P&{uw_QUxRw+!A3OObJrxvY$_IBr?eHEFDSeViXM z_s)l#Neyju-dV2oub6BD_3M`{Gc5CC(n1o3td*$>`}7SII(zO62N^zH9{t9nVVoVG z%yS-xVGInJ!!SaE!gf1GNdVi;l@H$kVCt1Yb=-yet&G{nfBh5X8;a5NUt09J=J^HyI{gL7GF!0^wHcptn4DJ|_G4H<#;*(m%W*6K>>a=ss^*+gU>>_S%dph$bzsaG59jJouYp3?z>F25 z9j{(nk#Ep4bq+}Om<@7=|muin+;|N zam;~oxzv&`Jf&@Z#O5eE8Jlj}oH;6vi#ssauI+7D5@&GjS%5o_aKt>&9ZWYQnQw(E z&B1LkBk+yOnwAI$&*)N7&QPcL>3FVXZPIN@fygoT+VOQxYRU83CX25gWZTPFb>YfW z=^&OiEDt?c2eh;}ANvso#yFU73hlkZO&|EZaoc*LOVPd#_Jrx4i6yL?vocY0j;8=K&)%xZzQ7l-;N#{1!*TNXi7IfltOfQ@Cgo<5`zq8*%7h#_awK~r zbZ1&Wv_6cQ=Yz5Dh*DoZJxB)*mLG-}?RfZj+J^9Cr>h z_g#cXfrUcEPk;JTnC{Kw$442LqF0k-I^9npL%m|68IDNy5x@-0z>w?ep>-W?o0Qx!TBy2 z=IU-LK0r13J6C@7SAG=+d@w%KU;NS+VNUAF&h}%J!@%6+Dh~M1af>S_bTYyx%&_gy zjnz$~ZdU*DSH7I+Z$>Hm%xC^dx%b|CBRtqh>4#eKrIGM%E4A9+%!!6R`R&KCbY8j# z0Ed`tjvt@ERgkcmhEom|4R>-M?U_am3DCd4D$=oCGIqaDeF|219n~14Y5Xupp6IuJ-yIwaMq2kWtRFt zr77^>;K4&g;hMx1YM}h)Cq7*U2`SsonFBLu?Jo?&h~iqLU;UM_aa`flkfRlcF=m)( zPdnjOIlF;P*lYUMl+D|>CJgK)aNg6VCt1f0(d!{?Cr>{Ek!jCFg==$6i z_qWRQYgKaX=+PRYJ1>LULmwR5u=NT=&_37Y9xlfjds8PTEF0O;K1&y3^<^!IHH~*? zaZ~fKJ?Dg4d6{7aiuqV8E3-Vy_$gF5KdW%Z_)@WZQK&FHj`%8;U%bp_VsKiaM%;G% zb-C-O+(eE-V6hHe0zG)`9N~1I_|cD`ENP;A002M$Nklhr6SpqCST_*%#&LI>XDr$f>U0y*3eknYws{MCkFfsy&6mEK zHhS{7pU-^evy9zLdGXkZ^2~EDlpj3)RD_@jagTZKSthzjj}jrOztcS)z@9lDg<-l^ zUCa~|r8#R5q_mE0*tkBtn)s~%GR}UBisSvzbl?tc(3SDpyWSkh&45;g$1kKN@9oXi57gZ6;GEA0jxpf)Nt(X0A!et^5`9Z`|W1wkqkmvz! z91BqwnQt<=P-o8pZIO|)E#5Olh@g&0$4u&*O18iCxvBS;y(ChO#Z_TJre4_DC)?(Nt#(x(=nLmrym%(Oebz8njUeDXKMErfBsF=4 zr@QU8+aQ+46R-XCee*Ur^+xpf?^37jukJ-{am%{~(NU`f#-i(^4sF4qd=wd7v$7`#pVEM%??3i)}ZJ zb5if4k3L%d^}qgKvl-lwv|1`;wiG~oPi9TJ>DbsW8JgRoka72&cb9+m*?$)6!FPY~{RqMCcT;iTrsdES!4<`VZXNufA91sy&d>wO z(q&Q@pMZhZJ+AG4Yby`o4)*C!ej3`OzzKuL*gG!QCi`vjZ}YtQwykx|s<3gxvF~XW z9b8)jB18)dr)+dQKUx_lBD^n+aWu2!R9KtD-~Phz*_<>iois|F77l&reJ%}9t1IKa z3Ktd`xI6B=JwlY>$iMx}(=hZ0!mvI3{$Ge&DjkT%9oE%dBb3C0%H8nDGJ3#-AzWdudWyuW`Pn)VI2 zL>-68oG4E}`&`+vdoRM;(Q@kasnWqdip{{ci*pGE2HC>_O`FAnJm}$M?0@LM3UR6D zGR*E+=H9~8Xredu!jN{ehp=zQ_Kb~t51xMNsdDzz`Em)3_!%PnY=I$NWynfjFZZZszf||G!YZ&V9gmn z8v#JUVnShgk`S_J$?{9#^g!m`!fwfMFFxo66Q4?I{#FOTLxIZqeA^WM86j2bRlp($1p zlu^3BUGZdUU^T1N3bEO}4m}-Mx0!Q>v~>~yi3&^M3>>5h8;S5_@QAbL&!Pb7Lon(K zeILL|vKGbG6(W4KXD?CZwKBh07ni5Nl=9wAOAvU=2oO%RXw+%DQ-iq^=CBuLP^MdE zB^$qZme|{wtkQQRY_aN^lJWC|=NQhy8a6b$q=l@Mp5O0+>L{-$n;tmHur zj|+wbTB2?!RLz(RFdZTCAe}@bjTQl0NND-qvrM(M9_*sF&-!$i(K2GWey*3CEGFA$ zvOWHD68o#szPk`ODf~2yZ!%oxC1%W0TxnGH?KP2Vimyf>R# z&97~=-P~x(u4PfQFuZ0`->CfM{cWrdm06yNc~rlD&Gpt5O`zil!L|RsA3>1C&)<%L z-};AYf$*8hGJNKEWsFy7Py+|+SsbSoVPn6SjV15oeeStPn3}TcuN(h0uWfejNJOtU z8u2k^VG|!^;&gSex{I9ldJzrb2ry}wXxnESoL6dd`1!Kr+)^WCvJK*e_$`wmymaGm ze}H(Nje&NKHa4(%S%I(d4Hs&GVcWstv`@xj6ejER=`-br9Ex{=&3od4b8?)8%U}({ zM_5WH%#bao)IoQ~A&bK2+|yTpOqAo)x zJ!F)#0PFVmEG}KP-Mk%c+yzgX{x|LPyGgdy3KU9gv-8UooD>G&TZKbz0wb(=;uCdi z(d*M)76bgMnsI&pL_u=@FuJ+g6KmZ{BXHQM5X7Re=hjzc*ebvGNrM? zTC0c5p3HTgQ;_Y5V1Q6z{C;8g;?Wml`OziJQ+Tyh2}1>(j2-REpx6%PhHw*J%RkbX z=94jV4rS~Es;oiIG2fYG&z9q;kR=>!oBdQHA10MGN_;TvX|u<}eCEkGi@VT`85m8+ ziY}ymDhHhZYhcP{EOpm9ihGg=1sW{i)?4qut!X<4&0R*IIE>#v8=SFB46Pd~yS8tD zVOvZ6SWOUE<|#+PN*T ze-OSGE}SddcdSkujkq&6Ozi(58qH>M&k^vDF$ROa>9UD%k3wVsYfV2^sGK_jqdQ61 z^q!u6tO07b>v;y_ST6=pdQ7lEesZ!M3(a^r!?+J($sUK{?EpUqjCjQO8Gs~o(c$ME z>~5KVS`oS#ci&OrAPI1dabAdLjvgo#{FB(X(IzdTJ?=rkT}j`4_bUWnfXyt=7zA1f z55t&+mSQn*Z;ICn1`*7i%i?0@5pM$yf4iYue9b0r-kqgv&#CZtH+|BL>>?ZFad;~@ z>EhnChIT^3m@lIU72<-StosKCl5d{2T!O~Wu#sgI8}7Ss8KanT;w9X`*0Lu9@N^+) zXqlK+VZiwjo#2g!Q|8oeECRaS9RgoA;vFzBu$DU5vq1lK|MbwlDFk0NWf~1ew(M!Rt9N!WFE_q7)zujAWHE!n=D5HZyDBY zTT(Xno9~+~%lDFpZ<>|V{I0*2{-&?gv6PlyFO{?OeCetwvyMk=M4*cK4S`6q0aq8f zRKVZ!Rns@y=|ndPUxhLmK(%R}f8au?Wi2TrytGwj;};cTvMwq6J`0n zXR^+>W&%bmS`D1+kB4jBb=O^(?oV*w)9HlDl*y=?R)#eTP8G6V)@Naoac>5Hfw?&m zi-vPY?T<{3@YMg+g;qv4^Xqj&n5CA{7lv(Y^h%ggg@@;!doE^k86%YvDhQ&{wxi&7 zLm`^6H@3RrLvPu&JDO!9*2rYWm4@#y^i&w85{GX8nWR-J8q}O8C;_)4EZjWlNI5J2 zp;Ik#zL|>U4abJeg!`j?)aQ9tzmsKt8r)4=$ zEa!R&R&{YsUGE*;1AWhS3Ym79Zmz@+yD&*C`qO7mhZ+4_PO|;n|NXhl-%%p)s0p8B zjAY^!TAkl=V$MXZ82#Xy)-^SZmiO^Tem&L)nOQ0clf_^D^MT`0fT^KHXK=$AD!=^? zehUHOQUn~WXd{uw@aFnTGc9(0?*C3d_E$Yu2;-e;O;b_@N8c zhV|9eLKs#nE`lHbvdLO^7Te{={#^5&aRorqqB&0e)v_mD^K*rhrzeTFV~AVb@N{3Q zWw<{{en7EJNMq2jqZ2cwzvG!2j7n{jx`ros#t5F2cAZ)O9^ro zWx&uA3flS<9za9ffM7h4KZl8gcI?HIW#+P>MA?%tgfe2|nzDV{M(8ub|EZUV{l6BD z8VgA`{Ub`+7_K?p+c(D5%G0quXJQ^$%}v9Uqq*+oodw!DOGGoF(%ZwiHq<#g=e`|I zpC3Ml8`F4U`vtGy+MzcpJanxD z>7v=6!_~_UDF+^2TRS+#??fP!<~mR z05B(Tu+<-qPe1PT~Ify^GJ<;nThe6GDOOr1bJ&-L;bevYoM zPx;?uK&Z@nwL-)y0J6BuIF4@Wa#QRDHsG{_G$FL$kc2PXfvd?i$?}>-OC*(GxsPEn zff!CcrEXJ$B)J_XV(FfUWNTcQvjBcTfxi%hAxiCw#WfdAIn8gsoy;;S&4Li5Z7rsD zBVAdZ;T5hcQZKd7g>0piIpBjlb~4mF%i9=O`r!5Bw&IgmijpJjg&%k{Io9a(hEeM~-m;LvD z@Au2Pdp5+a?X%lx+V%1`Y8z80f`rx*wdA9hM+njSVou9epnLxL=dl*D zu@>fG5L}XZwY_eH)P+f)`CChop?`ZRLruAdpD7gGdB+`bmH6yu|7lzp={-zHwG35= z*T1oZupS5(Lu0C?{p@ExTR!sPkCZ?C(?89Df|Eqq()CDxbp>N_MK_CSLVi*>_+B;l z3YFGln{7)U5o+8YbpHIg@|S=4mtpWe$v&BfA9{cGTPS$STQ%i%r5pTE$ef3v7N-3$ z_kC>qRT;8?YvCO3a_xjmZ3mWyxYpw0`7Z8p>Srug^}`I)uF$@mmQ3i^f!$@V7A*3+ zUrcuz1-KFR$LJQTi zxD`!KkA^l@%PIRABFquqmO1OZQD9Knq2e-r{a8b+cP)WFHf+%MU%!9%BaDM*SKyU& z!*e4tj5xTnhW$QF_6QVO5u_cu8ucNBVWwd|Ntfw2<9&rt#pl5VH>eB$=MEk!YqsLv zia;<EU;*-dK8$y+q%c2S{aEcUdpBrnD2%bq2V;|NZYPfBWSxXHVj8 zf_R*Y!s;w-T90tYCT!-AZ69O4yFSD>d#Iq3<^dkU)YN!9ET3~;`#ksf_D!#UUejAgfMBE; z-=t;$t4je91DHTgOb2}VU^=deBDB)zQl1EHlE6E$hR_BrB2RF_0{qXv25Fe`Mlq0Z zi=ay6nhbNG3yhWT@t>4GUR;%$@~^td4^7}AaAUb}(f2nUN=ettcWpWTt}v)=Zra^y z)YY%sR=Ow&7glz8c|DmVssH7DY2cjqeT<-$_ERQeosICOCGvUwQ-~FW)1-FYcDk^t zg|zKnD?n&{IEPQGi*d9Sj4Mz{vm02*9OzrD|Gusd_S14C!j|QGellLKe^>v`HOBpe zQkwC$z^3oQ$umVh{pnAaFMQ!|5OiywWk`KLK?JU8feR4pBW3t;p0HUF4WaNg^sQye zK>d@?ekOBI?Wgm|5Q~eEa;_=!wfw10putKp)bx`lpCokW;j;hv=U9Yrp+RdHrkj0E z;zr$USR)kqzVLD0i1&~D+OL&gc=#9DV2MRboRb3(|1DhH;7c5Aa7ElS+@RKm`m}+) z?P^+PEk8q|&fsIJuk+e*urDsA)-CS(TPDwYIZG!sFU?`|xR`da_-cLgJ%vbJdhXhL zPeNAPI$e#Ley!A6`=gK7`@r#bEyeOjp*(Af|Xyqg=W1dKDX6wdBb3D@@yu zsn9nz_!5d!0aIAHd3p_+^Ff$SH|QD?`%7Q>5}M>+FT2r9yM8&$j)%Y}#6$ z-~TN4T;IBK_QMsTl}%vHh%dVqBN$jMeO*-235`%|Jb~7E9YVydMB%x34mYxA4`NB; z>;)FB!F7aH?ch8aPJ!?2)C~;F$;73yndm+QRHhs)0B!d_9*laX0_c7ND3{$cAO|s3($LEGlM0gi?JDGpGFT%bRRBTm+;m1RCn=np3T=o zglpDaPPaD&2M@iQ1#aS)*f$8blCgB8HFqX6zAyTEK=P<PE0a4P#Mw_~C~*yW~_k@ce=D z4}R;n%6GB!8U614ANWvUV0e7@D4jchjza;58Ef36=-)W|A*7)b?n&a_73S$W1dkyU z4AKJKt?V}yM+vm=_I>3tcy#jA$#Va@wnq?iU2+aL>lwhzm^5=OhbjWA=69uIbNbj}|_d?W*J=^xwCI z!PPa?$*_Dv_aoK&~of=;058;Ox*OxdftfCO!VawJOW<}q7rwB>>ws@ee#W# zGLM!-hRAU=IWAtyG^>qwpH24Kz_ciIT3+*>^;zbdB{?E>RBDSBJu6mdV8y?x!8MP9 zd3xj*}!0Vu`)`Umc<8!6X%H*8$W92)!xdK9Xfa@ zu+Iip+!&l&uap|*|5}v3_V)nA7I^Ie^=u75mBIu^xe^u;Vm$ufyIwd&{ps@^OTScSK>}n9jlA7`ery7ldeM|1I1;I{s=t#RXw7 z&`H!D=DY2?4-NYnH1wX{{>^WFGmNBTCc~)PSDkeZcNLlxXk=zgGW>BX;aZm>1+;^Q z4wfIVN&9X>nreYilBsmnvi#J)75DNpZLI#@FlWF+X3wy;yLN7c`79D z_}%}&1KGo&X4|lr`jcoW9rOkW>+6*{pvzznyy zp>>A=H!#U0%)W1BPYUij8o~6>zl7`98C-|Nr%fC(wt6*+p!snuqawJe>#5PwR`IWG!96EDQ{V+9^x=1}j+QkKu+vhg??f+sk`HRicPtiw zwamBldQmw^MZ#K2)~nEfz@`9UeF|=g9yLol5X5v9Q>askW<;yu3v46@r?d(%MY1=g z9T&3>>ZWz+6D|*Lsi7h1CuKJ;<5z}?%cT(?~x1T=;0%j&{p09 zExnA}*ccWa*9qP5`oSstAs#BEW&aFkfEeY@XlE*XE}kMxHjOfbZQ4saA|!*O(pL{H zJa*__`INcjC0NhQ+pkZ@51xm-ZvL&(r4`jRLM zqRe0})SM|Y|| zk+EW^3zLhUZ`fwxy|dMRr{(2u$r-xdD$Ns-of0$kchyK3!qZaaSBSV%hKrk2bXY^rT` z4(D1t^@{&Zoy%dh(zWwlQ?`2#ARuI&hmm^@4cAGoFpbMd`HZrs2t6qSlG=cU%&LHM z+#^^L!DIK1-DSs??YJPYu(Lrmu0PCy1ytno2-7p1)H>6SZ@$$5N8K0vNSlBj_0%z0 zY%A|wn=B^-ayR<@IaB%}|neMj6xWDt$4bQ&$JjGC@}a8Kl6+$mI;h$GU$Y5c{fad8o6XTb?w zD#QhqPzPT;ScaZlS3Y>`gXQ*HZ;SiI97-wIEd9L2JWwh^o^2No0td=0?P!x>s>UZc zL4NE!jM>JF+YHS&Ja8wp&2u0wvsYxxj;&=Bmm6J>>~k+nl`dDFbUco=<%L5>5F*IW zTsEG+;Zqr;v|p=%n|WuL%i_m0u8h6(Z58eJ;InbuoVFWSg0dA(gxPt7hyBk!pF{L^ zZR1p7+GF&ao{mBG9_UJfC1&;#QI)_qI@k^^g@Xeu&|57PXsz3M-`^ea1r`RiJ&03=Dr4n9M%AsdB=WU z1R|f;oeHbKM`6zm#LfwM1HZKnNK=HTR*qHd8{jrP1&5>!z$_y`IDZ`vPu-qnoaIYq zabN1Dy?t!pw(L0+H6eVoae*=v-o!`O@;2s?>)8PAOrtYwD(AijT?+DUtW37UXimCl zwkeF@;-esELwdQ_MbTYYXb7MbJepwKWr^$BX)Ir>je)SWhX#8;ay!Dv=Xgj%-TBUvGAN{?(U5H(odg11g@&Y;5-Y? zppf)B2X%eY;?reRE_gl1CY$^%mHuj7G7!TQ?-{OIEx|nDf7cD+#>d>dJbs!ENqtz? z*z0os%*nE5_pQLuc`J{}JXRo-hKDv&uw^qT9bV^Qvo1GlaPzyq`SbJlh62Q!3k)p= zL;3`9b|O2P4xFY`!|O@posiL9NyMd;DUTc?*`8;d?8!-FJLu4_x$Rwy#Z& zMw2(?q^-?+*Dv?la$foO@;)rTe&w7ue4_VV!(|K1lbai9Zd#VI zQ<<#<2CaX&^_u^&Qs&zY%9Rmze8PMpQ0R;OiBJ3n`#t`G)3MR2!n8yYKv9{~=|^p~ zLUKQgu6fn;eIIRkFNa0_!{7eTVQA{|5vz$~1z~Mb=_py6F|&Nz;C%689ksnM5nOl2 z)d1#7#;1iJb$lEmH#HlL1qKf0&VF=*E8cT+v_f25S)o%`a6bVQWzX$<%J2Q|@8KHp zaJl=QyHjSx!v;#t_YHuy>`^07q;Ohp^dx<%^`rjd|LKp@?p64myLO06;*5$0HzQ|* zytLbU{^MF@kphqrZqB38ed5PYu-W*l<<{MMdCjPTFqghZe{HE_W7%rDEXwsspZ*>! z3@;u%TrQqJi)OcKXl0xXeK`darQf&$hSmt@?AYn^j6?0a@D-zFbZz^OX@gPHcCp{- z;SWAU8^sG4TVU<@%`3sH0Vj{qyw(n`FWb?oZ{lR($q5+mxW(wAHCuYu^fQ;vaDS3R z!*0#~#Ely_Cp2e22ZyzL@ESh!&X*{;oM14eT0PWMOLM1CWVz{h1MV{Cpc9_Cuzskc zY+gTv1(SD}pPsh>7YqZ6J5LvuD*Al>+$ES&HUzKRiNrI!=B4AIs}+-!o&K{tbwp^oM3lp09LV?5`BUZM?Dp~=ELE$(oe2cQYT-h>!{T!5-dht2_b>k9bLF9j zKUlWyyoKmt!{zqdZ!brVpA0^TA8z^|9b@kcFxZ}eZSR}%BJXu@^ZFkGbl2_pmSwIpe!knk#4 zOt2_w;+K%PoG!u{IECqXqdW8()gPuTXxCcc7;A-X_X-UlbUpasgK>c|T%v?s+!byO z9%YWU(AIlN!U+6mYq`U?8Bp`F?jY`sFanHPWy^B@qzt}a^JF_=q@)4=5lTd|HVI!OPTu)WXfD8YCX2A)kkqMbyNK-B>Qcv}WDJ^=Ss95`^GeCf+y z%E`7e<5k$GLaD_%CqR_ob-I&IODmx5FoIf5#@IvQ{*r(64}XU`sw>IjULXOo_^B2M z%T*I>dFMIVd2IA@*|uXl@P+xKJ`Y|qyzQf3`zFk9S9y^A6&GFK%*Xhs5RtAm0>a&Q z^@Z`=zkh!Y=KBv{_#({JR^F{RAmeE82whm*Ptbu@T9-ZroK-{(+QJ@(fA??y_j2ET z50rPjGKQ1vjT)iNZssLq>MFG3jP;bR zB)AQZvS(oQEMcVCFXD;MTeoZ|TVVj(@D$J@)=BuI3C=uNk)7$OAF8(+UYrj zWM&2m1Kh%*pk!?TcXZtnCw1=;`{!ZgJrTN_eGxLo(k|_1ZD``f(VkPiDxPRv8$^M zp{g@ABiPh+VGZDU&+J$s7~X76rss7n7_`0j*1c)r3v&e9ZzC3?Cv6?vm0o`B4bHwG zV0&^Rgeucsdrpk=Jc8GN?n=!(t7S*J7D;bJ1z^#L03_{`H#Ajj6YiU)h~2uipKNIR ziLKe0W+vE!hR28-=?G4Dv1l~Uago_TsZFZb60rELE2NtS}QB#$S zh?1v%ZACb6vk%O=1`ICna$bWQgqmeH%J3m{bD_K)`ebAU$tb}%`Z0fvYc6Lu)tf1? zxly6WZgF!6BEuL%fVi1T*4$$~jwu+rw^;->SAxtPtNrjfU!^ZD?i-cZV5Arb_|Wl>U`2WH(ND$#Zo0Bp_WlisM#JqxFyef#)H6)fRmas zuj#ic0XKNl6raWV=eoCt$LHF@_H9x};wXWyc)>?tkjE+=5nlRs zUm)1^{Q2{w&1?=>N9+mn+tjMJ z-+4#cxqEl`ijPiRvNrmWg@_R9z=c-!&Az_Aa7#2$^@W#TMxZwjKiQXX+c|Y=D89#< zTmojggfJZ~GW>ksx#N~d(R}*UX*~iFB<{t^)fvI%`mr0ku$w-Z2}q6%CLdEH&!gc#dGu)N!UA9baSJ%2#@`d+7pSLZ0UY5xfw>vRL$~I+ zrq;L@hIM#&E{$@KnNw_PR27ZWSQu(?O}Q{OnJ(iZ)QE7^-ZGA>4r?2sLP2%cV1Jr7 zT`7~bQ053>kwx*_%UY)DN#xQOBFqyUVU64z;s3{KqyyI17Pz~u&*eE`Q=q9S0o z2#h>~L`y>}*0dHZOSj&73*)IL`xUV*WMLW@7)Vb){}M4!Gg--tfTbX#Yq?4vX|HQf zVYD8Bqz>04X_9c3rfFqy9};KWf3!kOVs$<6+Wxd-`(R{s(u(4`vK|#!r3k;9r4i+s z58M0uiUR^C#0wBJ$SR9oY2Jk@qlb?hra!fbW#UDAH?n-_NZfYiPqi-ZaWSh|QzDm% zDVt3!z$;H&^~vAL?}d>rH~2jeuiDRY{YLLGCVyOeKc9=H^G46T-SzNgWn31C!1YSL z4j}xw+KJ-o;Kdk+@Vnl_@knL_odfT6GcWb{z0AW69)C|)doM+=6o6B2LNqVEqi?5V&x$fT08Af3H*fpn}F(tW^wOW)Rjhkv|BTo8_0 zOkB$o2!{4=Ykz;>@lRjfhhktjm@{@(@Z$t$!d#4m6S`N0-#>FPJw>`wnA6XH?l+jb zN(fTNj-5o2$5{$6rQ9c6GSEy~&m|6QbBQ;45;ctZJQjk9 zak46rnp5k9LQ)H{07p4|?_;|LLhIgwk334{G~#&!F#9!Hv^og6hWTH>jmm);l-t^3 z-;ZMn9c^iZtW)E}XsFG0KAI6i6im&iv}4a5;0;VZ7LIwCWC#Gi zAq>KtYdxqZ`;l3fmPG;wKm~I!x01bv=9pcCiYzEMh?Nhjs+7`pd>t zP!9sWmZ|Qp9)hbme3KC=2sJQ&(#Tre-Dx z?4E9N6ya{xrgr9k1F?KBzo09W8JIi=gYz&Z^BT|%Gk^qagN`}JAC((I;C&-NFs(76 z;7kzSA}z){i%kTN9R1v2dP1*@G#K4jcpw{?mk~n3?V8Hz#*{eyuGFdz^o|`n1L^cP zRQoSNx-ojcuTn&AH%-u#wjc^>r(h_`eTCqc`^$UTNXmEL-K?|VqA-)0(qd(Cb#vs!S4Hjy~mvVsZG4L(!$7^tT8rGDw+WmN4XYgh3P@%ys8F z9k1hbb1lBK9_Cl>Da=QH`0f7+Py1A0T;}M?_sq;+ua?qI8B4jx&3W}&)SZ9v{$P-} zW?%JH6~6i`iwwnmA_NG2clRZC;C&^%LK;*VMK@)McPlP3p~V-6 z#8V!QbwZ^Qbz!SUZ=AI{jm1y_UJIi0VSD1EYt!#}`tG}=w;6Nb{85U8qsD`Rqe`JVhkz=C?-Nm*N$4F^NcyLhe3k{VBihzIU}kkpB9 zrl0-nXW?7yhO1Uw;ZO!f-Ffr{I^h_kchU?4=zsXbe@OrGU;N87I4}s)#{p6F(U~e( z6G|8d%@zIVP5U`~8B2$A!}y)7JT_?zck!~HYH_94-sb^c;(+cp3NQ6!pV87axMK(B zZhR))&Y^Y+vFm!*g*8xG6epY851zLVGO{r@RRG#%DbB~u6!E|!T%{?(Au`j*T;c2S zN5B6^_L3k#rY2}4h^M0|DXRC4h7rB-0TL&?oIbUct7h4!H;QQ#A=|R z>fwNDjh!102~$h28)E}=Jjp?4)5I(&ob=-hf8xZ+RJ*Y&ZQiyS#-4-W*q04-HGo@< zcLUn>j&=iSJ(pvVOhL@UInJTDG@fRuX9mW1V-K!Rw83&mFlkRstXthNhtFSx291F? zwdv&0`LvI~?+paoc0$Y66WH6{g8LC}IGeW+gg$&W7V!cHq?z5Si8Uf6Fwk0S7u}7Z z^-ye9>8EooL$APQJcM*r;Zd65I&%!gvf#WJ3nG2>GQqjxJz5>v}Si3{J(m zraoOkrKJXQD=0?>HSvwQ6s}aDMm!gIY~B0;zLRvE_W0vDHYx$)+zHn9IKOED$ason zhzw}9l7ZY<3qFsuVl@9peKhrqj2L#NW@@sc7x9>_1J#a5D(n3QY;U(e>4PAyY%0%K4 z1f;2H_Y<-wazLGKio*89i4$pHU_%|QMR;zvBxu^GW; z3@eqeH4EdG4gKJ$wCD}ut6USJrIc&so^t(z^#1-4AeiLBE=!Ed zrr@UNOHGQY@zjo4f&jC4YN1*yn#>AP@D2&jbI9jl^!cW+peetvuRna;UEov_$P(+C zr+!%_YPNs8qTlw>?-YrTnl`_A&EHE|`?*~6-G%RBcVYNU_&!Uh9CvPJ?d?~6cEgQ6 za5b37RZ!*r1n8WLV-d@$rd*(~-Z)Vy`pF^9<2qI$>FpMz* zKk-h6CZ1Ux;d^E%zx0l*#Z3vbsWf$M@dVNR``-w-Nci=cRd{z@#=Ecr5q#c%UbBeX z!H~0|X^D`5i0f4x&sy5JwE8FNShEIJf8c}jQr5G#c<&91zlo>xQB!#CFMWo|5$|J; zVc=HjjPq|B)poqDmRZL3ZQHqF2mb&3!Je1i+pc4;AuCBwxM1CJ$6e|BKlnZwSquc1 z(UmQtIBmcwV50^%>PVrWnL+#f^ixk`S>P-Hm^0V>wIzceEh3shT?F;lzlfVp1QsKR zz{%tqfwzstN(&8OEsUTiy;tyi-<&@8xzCY?^)6D+ZVM)A`?hV_g$SA-%skAKebbG^ zxsxL4Y8Tmbs5$7^wVlf?zvb%NUZ}z&4^?e9a}U0FNTRM&pFybk*57_Bw3<_BJH;Wb zR~e91eB|L^;&@k(cHeR>Wj7{HjmC2W`ZT8tuOpBZg&J^?0d>uqZKxI3k7u5FCQe;9 zgW>I*)T;&GgWt5k-FoYuu(+N&c`^+Q3`U>C`4X?>K3hW&a%g&~Z;7$|+M^Gr$3FeZ zVCrO8)y%6zn1|tBfXS_gVVftb*(jNM8ac481vjweSqBNjH)C=Ng+$jBfv_Dl>Blep zAYDFpAq@}=-Oj1Vx~=uV{MRqnS2xdbakY&SaaGr zE29H?r_fTz>CEEs0#d{D%xGH11ksG|PFS?LCeAspmdM^Ct^+@n2jTF(oV9q^ zcD5W7AAtpjfCrd*)30*=2e7}0JL(enYFgB7+XoOPNS_KWo+aS8nemQX946)VMzS|` zu-Bt3<$%2&tPWdt^rx3ky%KeHuW*ndZLSz6!zgtTtMEeFOe@40wsJ;;!rNu$YLr0e z|Lx0PNxOF6f+FJg)5+t9(n~MC$ay;Vvu<56o*BWo5C{}*r9%;G1xWqPwbO&*zy+97 z6*IT+J&?5!;IrkYy8j?pWo3=!E)!K&375!}QaIJkC$ zV)9ONSC#n9$t(BeiM;Bb56hSLjR4_iOtX<+M&*~QCY7JOlLBWi3 zBHG%*S5Gn46~GcqTCDW7He{m?~k*KPNgE17ROM)s9gU0)oNO-nF%VDf2YD9;25Z{3YAu6gckkSt zKK}8Kr>}qG>v2=K`tW<;q5NTx4MxWM%0i|&3_13#1sHI%dYvaFtO3=o2gfEd#{D#E z`bzOk#z}XJV<(Qmd=0{&b1LuhO!lwmchBfBz3koh-H)c#eE6n7Mcax-UAi`lHd*1s zpw-)NzYU?H5!b1orDMmAvG);-%{(a>Zz9;#LpF8q=m>V*Zc)1CX!u;l7000c3F;dkA4xy@;rEHnxD9{w^&y0HcdZMH%EW}4 z=S3_5C)2r;XAubMsjCOYLMt%mpf+L?=BZ!Tw9KdjOXk_wh3vnB_dL%S>^|ELL*2BP zntR&QI+*S@T%~k%F-w&UY71*ujrJt?V%l7T4RGgYUSaa#1=?FkY0LeKSeeEq$Yynn z!}wsDn}L^tf=ZGG80iX=xQM&WG_eaU#Dka-(z9cvLzxDNmsqN~Ke8FR7X)~Eg#Z9R z07*naRD&Th>-mtff}^f2-DHUip-;wKWLF(%4M5b5XcpKkX}Mwi#sMk3Dey>6wLmQL zoI;D15LblHxf;w&lrw`d8MNC%0ss?Mm;%*Us5z_-4a}vuG6w!l;NCP$0Q)SsB?4-d zlCNsPy+}cI5qt-Lgh9|xgxbz7=Esayz+;|Z^9l#w$;gKy$w3Kl>R1+;*&96M@We?3 zv@_?xfqv-EUU1`L>;di@(hRdKE#fxTguvp#hAWo{s7J}fk^(1iU-Zlrs`jNdY~A`^ z-pw$j)eb?>d7-Xw#R7J&(+cxbPhT>e&4k9mdkD*(t8oH%z)wB=X{rOJpi|I1o`HG* zLDy@5j!$`>{9QiGF8I0Z6MX$pmG_MR;RJ~k!Q}awRRcQ4#+3;=#EOM)T22oJ(=XeJ zcR?9YF9PtFcc znsVWj|H z){%H7!QW2$$Nl^FhZ~bHlX%MnNsMJaMV-KHH@Hv)2-?gvitjS<*5zhZN^H8cS77e* zrMw02#W$FX5SD2}i$*uh$Ms953&EVx2iuKt*%ti_eBg8GbH-=4V#ZE|WvxnYTqiQF z-t2Sl-D2M|F5AbTd-S=7b1cl9k<>%GKBinn_+3w#{O_Ov>h#h zGVm7L5tr27hCsoS&Z%Rx&%unxoj>QFYM-KS)hV{${)ed2|5|*&yOSp|%S10v(l$41 zIUd73#`|Dfqw#o-_2WNN1)C-`7(|$08F-mP`y74e32Bk;I$k$lzUMZWZAlBju3b;0 zqsI=D{RhSvW>F^S9KqOXWFP&tN8@}AU8!VT-CY7s)am}_nl+Q!Hmo^jl6v#aBV=Bh zO1rG5%cyJ z7${^m0_(BMoF0vUVro~J>Xs&5DLH=tMtYt#tu}rfiwDya0+K>RJA8)jI%?XT**Y>( z)z1(#jQ+owv6rARR1o zurvw2&=>JR;l~3Y;o!r=qEd&J-gL9@D+@67qO5Tj(lZ4@<3B>F$a9_qJn0F)OrH3%#5`AUnm$)29EO!TMo}W(5?jGiFQbA$Z!%Qqxmr z!6Hza^{-`0*U4su7z74gbEWYLY#~5kjWC;{ic;5#0FWMg@;DA*K+-wMmT{F@f!C}X z1?Vmk1{^wYIB1GEoCy)L#q-W%eg%o)H{Zqe_;BSj@cuBCE4%f3eDpE~rWCWdINX>d z+%g#!O{Eq!9qY;VVDOfkPu|p(`7;7I@41G|oLiR&r7xmIg6H8X8_NzYcOw;yy`-Ui!`|U95)36kO3O^D@4#qo_=euN(=A&eJy;~etzdQUGIs) za7xhg25Z{49CzY18DX_uYMOnQ_(ySw?|yf#*TtK-cH@o&Lre`fnvokn`POE|Kk?C5 z`RwN4cilK7Coc&v~*Ht&CT3-KX&X`+PCkubQ`e<_uPHY)eQhH8Fw?%NUL}6-W?XE zm{WS>wdfo0<4a6ZC@QGM9&6ch9#nuFI(QJ*hKJMQI^zXAkgF=3`i>A$12YlziB~e4 z)DiRQo&k_uv*N`sT&nO0grc(0PST+Llt!ES)ND`(4ju?AK${8`aY)qRl`U2DjXldX zpsS2brLHH-oZ1y`G%)BvbE=(n9RwGa6u$mM2^Z$Uj zlsi9mR~p#0JI;Vm;~S|*>4SmHFU-}a1dCzdp%Uv*R zDuM`FMfe%HJWOoId6@jpP)NyedFWR>3zOK~(gY(n!92TG87r?D;uKU~P2pap`%XP> zTo*5$i$e&1{F7&hYv2qG&W|{L@)YqJ7tk{2RM~2Sje*#E+pVb`CjRNa|6%GwTfTl< zAFf2W$8exn1I(*&E@5%7|1h0POIQiu?w1M7ZfSj_v96DdI-JrAF|muF?qoz*P(yqTpm)l#Jl^|cho(`lw8Mk;=83OR zlW%4zX$g}}TW3h6it>$rGQ`f0+4_9Vn)j(c)FFW0lNesSGFASm8dW3Z)xhlir9uV01H{TMFJ6q-`UZHrwDOAJ9ebM{>Fa_q4zKT zkH26HBVjR9S*iu${KfO>;E|IELk%b?&J)n@!Fkz5)l}-OxWg#`8pom~MoV@qPuj=| zA!&J4kfYBEgj%1J$>IP$_6p}QE1g>q$VWm@G&Qja0V<^9RY=La6qQ;#Zz|66R5Oo! zu+3QG0rTpj{SdvqZv=>7NU9nqCsI?k3$kbr-RNar4CL(Z?`LD%7YGuJf<%VJXHM*# zO(2_=-H0UW`~gwXMzG*claf-imm8~_f*C(thi^t5)iR9yKF6EQRzV|bC%R>xh;{_O9UK@tc}r2o;)$S<>6ZskDsOKuhb*wdZ?dtXy#+xp3X+ zTQFyO7>pVo;aSEOV96CkE${qKjEctuNd7F-7KMHbt^8S5#6G!!`d~ggF>t(8=6gQX=?yg+IG!^ zYZu@BoVB4cZxCb5)$uzp6$elbG5^`0JI+c#Q?(2(EXd@sgRcNb*N1GQQz)KDoV{0} z!JyD!tmuTyM=P6FH-|@tiVW%+7G)A$vw(-_torqifKuh+YVq%CD=#Tx9 z;gcF@aJP=gaO7vduBp&5s#wrh8DQaNfToblD)--gU;62*&&9ku|1yL!OX98@ZUkgf zSuG44yaJj;<{t*;jl*xGXP^HGCp6!|90@xbV{S~hU5S*6_OmAKfSztbvD1nGFa_f* z{vkoeu{VYeY=uYs4lA2bV?A(WpB9 zyp#1;*6fw1=~A>uz2Hcx%O=EsEyRx5-1#!&#%v4?4TT%c<>AY?y|l-3t~=?9b*Srh z1T8Q@?jh!|H-pR+?kOHvHj8^!6HM}oM@mQ9R9!ky&hXIL3un`bp%Wa?wmsr?-avDD z;K-r$%B!!YM<0DOZR*>`0e2gyUCRp(;966UcD<&a^$dNlF_r>2^%B&+04T+ewR zy=ePoDlcB1Nb>}{Z|>WimIy*!X(Ih-dsCukXy@zMQ_ygq9cCQFZy;#YAy6zLth?`u zl?%)lKZf>RY>YL-xV3=K&%v-Yw56@v`-mB6No`$NIklX4y<%&{f=s((-h8UR3I!U)*C~ z)ao0f<2gt2Ee5*JvtILSCUCcz`7>Br9Oxka#kq_X)|B_O2CN}OG4Kz|$c$rxR*N^# zy*4bDHND;G6vAb5OBXRAX1IdMubG9}hq-6GL#Ixs!za$91+0}FTehZ6xA&*9OH&*M zNK6Zd$vyG;N3ljdoi=W1!v%0K?Y(6Od{`x&I({7G#3^EV4s*|M()URYqdOn*LAUJP z6E5baqt+55&47Eu+QM8J>@AF?0}2n&Y%^yqQm32vB!ZTys&!NA=1@UNpeK`Q zl?eln#PenAw~ky&1J$oLc(d)bcgAekT>YlY8I3)f@i0rU|Fl*RQnPMEeCF#i3Hxer6PbH_m$&jPjhi={rE@T+Ny< z*MWE<{)>k)%4)}g>1R{)cbkzxj(q1d=>6e?Dt>{B;;QZ2o;Yipes-P4n&ElhgIVU9 zT2DWVk17Xb)@(1}z{~33+>GbIcke%V@DT2Z7scMZwy1j^jiQIxNe}YKeGn!C zdSSb6ysiz`jd*W8{vH+z`Wb!nNx&nFWd2=W7RTUb<@mz2z>ECuGyZc1;4d1taU%EU>`t0ibdR@1S_)hn1(gYV9Nx9nJzcn*8%)M|{+gRvXcI8l83lrr$ z15<^xqeqWLU~);j852OQLQL3N%KO!WkDuO^KY8w*($XHx2k^^lB3r{9r?8av%4Dg4 z31+4`wF;m4Rn}R-djxH0cC0b#7apOk0!C_$#Wm+73v?-6#7#+U`k8a5Ir#16fX^N* zA3JvLjD0WGa|pbwJ8;v=c9;UD{~B!JcCd(fqT!nb0e%@a0)@i)S|jK zc`A1UFXO2c@GSC!A@F$j7 z6b97z8&?s1;5U^4!WDwTXVx24)FTu&+79=rP;ZFfZR0VFO+pY+2%+v)gaOZ0Xrf*P zoOXn)p6+&p_}z5x@4u@-($^quG2Y4Jg`ex80>u_C&$E$Qjq_Kd*g$CH*>gW9HhwktD z#sYD(Gb2Hl5bxNrBYZoA>tBnE_9GZ2>hQ1>HzPMDH|2P(L0+G=c)!n?7Lehv z;HJqebrFJ!ZzyfJ_}$R-+s+#c+LqX0vfGX+HO)w4KVmbZzDQBZ{jSK;j&0=@v(Vyc zkY?_%?GiJR$0K~ooj&#cEn%Ww9gFko>%BcTaoXZs8e&`kdV9!^tq7NQA1hb`klZ;OT?lojw z;&U+M2r%|-t-|6QnP83`Jw}?vEn!_2hfK|wOMxBj0PE@$SATo^w=x%Rf7g{?z27mH z5^xpg>5r~7{1}2$hCyc9i*U5|nb4BT74tvV5YH);d1isMTW!8Y+?7FBSo6RwHPgCU z$P~)}y?OXBZbw70gr0cf2@cfjoU+75%}p63Bw_PMs16P_=Q#x(^(gIVJQW7-imt_y5e2pm|DhNmMT$z_rw z96WG{7>GT9r2@mcA)PsWF5Piw7T7Oe9><-@ctc&2=pSpxtUzOFJRN_1f4VqyE{$^! zXOi(70u^g*84IAECN-?ZCh!RGrzwKA=h*L>n(&`D??1lpjWESc_|J#1K>t-a*OSuK z^q$jLvdCyno5Zh%|1tV)x>XRJmQ znD<2lAlFtMl0(ozI_NyOmT~|)%sq^HEkb5a(@wCqN9}k(F&}U(1YE?Lxm3Hli(ZVnQCzBvY)lUWEwowTCCVqL7-}BZck??hHzn8Oxt#B zA=?&Aw^kGOjS9i+>o;|$Ggyt5(E3kJpr8<*fX9=)_uR4*Ygspf2m$t^m(qCz;=V1L z5IWk^mZeRR@>SNOzkd_)7W3fKNCdSjygEM~B&pKJqE%QLp4W7quN7eK8c-3Tva75$ z=fU|@VDx?y7nq*-Fze~|z4yhMbB~C*i>b`}g!dL2lRsCf9M{*~Y}veJWYl1ZIOU!)>E&Id5V>S{^r2RW7#J7`;;P_a;9Aitsi~6@a>2?NxZzo> zxG6K2*5iwnuNbf*bMns+Y5XYXmLYTdjyHq3xahKJWa z7{xI&k}A9d=EC8cP)Bdtr%6rdK2$m z%QO`IurIDdCnp3Gv~@D|Z@jTTOx|uDjkxHjRn42R>z~bm`)tP%Z{4;v+Ois7x(O(7 ztYE%gW@8Umt>`-&D@>Ao)YZ?8$D|8=o41hS5&vrYK)-^?=Kc^KqHobX+EDOuBLg;o zK)4EuTpYtMuLK_0XuOz*YQxem8BB$>-Me<7g*yTb&?W=EKv=Zxp zUt|D99(~cpX&JRbH?2!J`%hrzeFM0{C`i!@dOT4wDOfc~<6efs>M`7=v@sfs)X%n9*szkyF~G570HgufR}y3c7eGy-@StK_;T*<*Z0_ z-V}bd(0I^U2)`_E-T8tEbxx=&Qjr2#trnh^jK3vrWH9v7RNC!!fs7MY z1R7$T^n>pazrZ*uFzXG_C@HLDR!fcd)e^L>fTCbwJrx4mmvNKwo;v#ON~wgf1TW+f z*WSaub--0eVjDS5$x z4I4ILi3G2yXAyUza~Fow2$rE`p6T!39&uLfC_`i2@w|efr-q+De>xp|^I$rBV1K05 zz2n}Gr9Ko5J9qD4+zq${UI1nsAb5T__!y>)6tcYt9vuiBXN}hn1(ZBlp(R1@Tyx^N zYgUl+CT_bHBi56Ov}(-5A9;x2;j!b4H+I0l6W0?vSJWBn--aoE&hGB$!aYr(o12W5fq0G%d9NEy5q{`m zY(f%6`>xR8=G2F)#su2ESu72X!LiE>`EEvoH;)_%SooV`a04`Os%V+K&zJ4$D&o7u zrWfZNj-dF%2Jswr^D7S&j~{={2xvoKPHX$^+o4J~kx4G zMB}|!RG~vt69H>(gUQWSszsP8X{ibcH+TiTVtM`1Q%?c^rLZdLo|E-qiP_p zcqLwM-MWpeL!E&`j=}Y@1Wwn2UfOnY(oT(^BUQEaPgT>y77kym9bIdgZm3nb+F%3EWh6@7$Zd^*4VDb8E&a zvLNARwEy*kWIEiCcB6&fytz;GAn@Dus~aqCL>=8}%cj0`nLzQbj@~qb_2L4Sh-O@4 zS~$RNhE%vGv1DlZ>A;V_6~V%Oj8CD2ApK`E`&tujFzqmgi>%irUXZnPfs>C_NOa-0 zqs7c~G^RtbsEZf^2e>H>Qh`>(nCDTnEzZMa5}#rex|XjdX&(0o+h*F8&NaY{w-Ynb zjdowWRbl7e?VK!V?X&QV>&$u8D$?7Dpd@|twSrO**lU^4ok$^a8EdKnnnH}Y6AC=W z8|#JZ)+Zfn#ocI0O+4ED3Tr4_&|u=#&DQ`+<09;f)*6MoS%k@mtpG1P4SR7;%dz{m zj5suwmzlH{2u|k?a0|}@)|hb>(gDYJ3HQ*GmoBDJ?rT6O(Ctj2vyB7&JYY}VK?7FD zOQ$Xpbls4~4<1gV^Of|4fAX7HX-Gv(EQ({DAW+{}9oK|3zL!+|x}T0COx|(F-OR}n z^ym=YByUh3hy9*Dn+A96Lik$y@(Emfy=Wg$c9WPBcL>I}#R)aUQl&?#-G)#>vL+PAY1f zU))XVGMmFF+ND{vItGQa*YZM$;NDlpn{D@c_pPm?v~#`tZgef4VeGz(7Z&SujwFT>Rf%S}>~Kx3narW{E1?x1EIz*k zu8S+;4%x@A}J>`2aNv;R}soA|eKAMgkKayU2;l=RJm%)qS$DfSfj)7{zO;L-b zdBnl&(2V7cC^Oc=Am~D@cbUIzrIe{s==Ox=1vYLspRuu$kaHFPorut@}iz$+i3Z3P1HNkKv-!xosuO=K(5LSZ{u zz>uNIb8nxDGQ@i9yi`+5&%r|n(vP40arAqR)0mAp@gDQ|$IJs)uUQy|FHzvq<-?GtO|p&B`>!x`Ar-&GSs}q&w875Gw4% z;b7+JYs7yrFA5Wx#&-n1o37Qh7a46FAlw*?+?8GO> zMSISs`I|rU!i@JPcVx8{hML*M(Ot@aAYXXiWwZ-5eK&J+@bKW1!gY0*2vt7OVWvO zv2zZo-}4PjJ6eM#+t&)XIm`DI+>y>)yqreJOf@n_%Ghy~V>95xqHA~wOUw+4jZ0OZ zc?BXu!GWt51(g6=5$DNb#8iYeLKh^3e`JA7-(&?`FT50vG#pgui!V5)QrI*#>l}N9>wbZGLJ|X) zYXS!pZmcH`lSCjBy*vPsiKUTndX(p*gNSc`b3mG_tnk{cElDJ{zy!nCVD^obKEA!dD&mg&i4e%wqYv^h6+wrrUBKmlZyY$G>SAWYV~wv20v$mRCSCQjZTRVc;+T70;EfUse zu}>26_{L{_puJ|DzMC3QW2Hwm#rwea@lu!a1{1aZLfk)RYQ< zujAtIpa1SZr_X-oGpVPs7id9)5X?LXDhhO2rc36+Hl0_C^;&ZOfim;w=b%~fOa3Fy z`3h!QI!MtSs2)wWqI7BO|5&(U*ejhAGNek!Ae28mU}ERZjQzIc3d*@ zc8jmk9~sws?zt!8M8ZXNc?>2{HzfSdi4l>jJ#zFYXK6f}hR&W$|J5J=m!!SqR9~ze zwfLy}jBN^&Wwi6Uo`ev=d$vNjHvt_QRddQPV*M!^O`?TYP}d~{z{L0+n|ncqoi0CU zq#0K^4Ok{$LC?%oPe^);88AnU~hx)`M%|Y?{V$Qo-$MmNcK6z`0%&aLfo6&79KwdcYxX&ToSg`+rA0%l#XnL<>hVIv3A$rl*+VR6oC=Ub!mpQyA29L@JcOhUAU5MU_RER;j=?nopHs( z{izXGwZZL!(0M!^dNyL^IEm0Q5khW9BU!*$={4Hn! zzq_ZnHWebgCY{boq&$z;KL64841vnM58wS~N`rzOa9{Ngym`-;Yr7~yN%Y+GBOnOm z)D7YSnJe~#e2&J;edsL8;REx5@ezc|a6TYk}!?i^L=r8X7u<9-p<8aRfq32q0{302g8QeOBTmaf!k> zO40HV`O>M!d(5(6{D&zqcMJ|jzUAl>1WCc+07A)e#-_!^F*_dHj`o3r_ZIjByr{Qm z%{+Zo7`SlNWLoS>bc;X!yO~mk;l0r}pXDX&Wxmd!;g$*YTHF(VtAExsQGWLq`|6n> zGA&WK&y72JwYI_h>)ZZaTW`6sXi8(Q>6`OzoXpJ@>nu!*8gMtWR2p2I}yx83mW?0`R(5!=&>{AAV1>< zKZQ2_V0!Mw=Yyu%H*3uJ;>h#-#&>E{3vS(h_ne%*Eq&>U&pr{KWm;@8gaI^y`UJb? zj=cG1^wGI+8cW^2>(b*K`>c$w&H0QpMyt_nx9ttso3Gz`b3g1?c2^P)j~u~r!<_p2 z;)=95YY$yZ(m830zqz5?KN(in#4A7hStva2ec-;RSN!z4)_@#v%W-bL4%#^R)kUbu)r0es)bbxm*WZJH z;TCkyeRoIQ)@cfD*JEf+ZG&;Sc7%r(!`M%_ZWoHBPCRujO)%e{RILxZE?DQ;C*8|b zDp{X>Fd2c2^CYQ}wLFZDj4{Wzd92gJC?d z|1fJ-fvkpgzCL~73txym&pBh5Id+2a!4czbdokjU;L_6u_O0K-8v)z>(9=5LKSgTRk&Bnou_NaR-agMhemYVw z%W9fdS&evacW-JlaGH6LrY|vW-a-K=qYefEJa8VSUYg;_;| zXzSoJS*Cb?K|vek3pFATkTJ=b;X0c&p$lZJLKrZxcm<06OcviOerQ^4a+@{xeejvcAR;X1h@o)d3F!=t0Od zJ~~Y-(O&q)_0S*BLUG=uf6`9rm~-d;<#*u5pMUH{v#a;``GZ!n`1}DHmBdoULEF6mUxn~*3D~g3#_{oL*<=W;D_m4u7*yr=V0fwv#lwb1p#kEr68efc$@f6(WpMNgB z_R4-VeRVMQ>w`$kK-lUY zYLva-HMD_4rNlMw^Lgv?6Tr$#5o9?m{;9BEjAM^@r=Qx#*F;#@BVHaaQPqq&;N+#nY5j4 zY6Pv*6pN(hgx(pO6R?75@z6D`y-lQ={Hw40Rr=odzL)MMc=%&?-JKqN(dzH7&8--4#m_kzC)Hh=Obe-bp-z6|adOoO`zP`VJK12ZO5F8&*f zHp;tcPjy+6{x_pFmw8uft5-Pw=8^z3slU@e0|CrDkPO(8}h*|`%ozIUpK3nu(rDCG=lcYV(h zh`oWdrwW8-h5Gm-51>)zOeHkQ`$_RD%yeG)E$s-D&ZBNZ2CPT$Jab%+wJn%i>4tO4yP5K6K7z}!=f!+s zdSEfJrlt4%ULS1}PYFF08+2PUvym=qS=hjOiy*0`A0XKZn=x|xQ5b~zx01$VH;)*Zw?FbEqiVYoHU{M4_75=yJi_|$03i}RQ%cBUu6hg4~ca2A(Ou#fE7xtlXVh-E_|v=!G% z_nE>|DO`*H70wPRv|}y(u%3?!^!)t}1X1Ox0(Ln0u3!n5f`AjRD}-83Hw+hWVOD(i zrPj+L(<1Tpnu}ZFsSu$+;Km`LrsCKz-6$p|aOZ#lce9vg)AN3XlXt>A+rQY**9;_U zk=AIT`Au`CNWOjhb{5d3U_PSn5Vt^b?uktbBBd$SaTejk{^@olY%ZaZ@qXM5V{Eb9 z*xd3)kxkv9b(Q&JJfYoV%)-O*%LJMg%FS8k%ab^%4(*uRQr>Xfd_$AQy&sid9R!>Y z=fWa0C{9?`t{a61(?iNQw!#F-aJgVsCX)>aW2W9@XK*=-)9)Sa{8(oKT z1{$8{esNPqIdB85m5hl@yU$wB?%lfy9PJP0%yn6qIqMYXjK}br8{s-MOr{FeN+zQs zo`)L+_bS}@jO}Io&+Fbb>xQXzavCPfbvaKT4jn!eYf1c+8L*yjMr*uVkjul)aLNkumOqYj!ukV9dnT)k3%-%fmCL5Z;gr1%(bKre! zw)EXVbH^A0O3Vz6$UXXile2b$_*yQ;eDW=e`0>MA|6KE|jBmsS@UZm2Hth@l;}tPj zjLi%#GX8^X{Oe$9J+#bpn4wy=6`u8y||G*n@ zlCc&81(Tc-lO8f3((s2lz50?-B5NIstYWy)$kba;@Bwtx zebw(4&z`8rxDzblUa2CDhXW^;#C@3SW$2-3;CvYKp)yXqcm8S!g02N`wG=d9Rp1Nm zT&w}w@i4R+1c7OUlnNUC*x&hW2?lruccUp@fydAlkRKtRaRA5I|IzTT(6>dTvKa!{ z=@2i30NQa!sDKL!Q^La(w8#k|I4FS56K_zD*1d(4tXjcZP?*j!fJxk$7HPYl1NvG} zpspZ5fat_yKsCXq`ew$oRF_Vl;~-Gzx92#_wX}z)!|fAyGj1&*(j^35=6XFTny1H? z(obJN3BkUwV{kVD<2v@G;dJuEap1m``mr$e;-%39-rGlMMOX-_!?kEy@WS7TuX(+5 zBW)?P=UH;5RDz8L{fUF+*keo1HTm z1@bVrPPhcZYXbuVK?EhV2EMuQCGajr5zlA*?z@QOhT%pbLV2&!sYPq6ev6Ufk&Q!1 zRi;a=l6?waMSl0h>cSM+ejzl`F5jgjZisXsHeiXrge5k$_}%5rZPiT)aseK%r2cLF z5xA)tU4}*n5stzx{KdJh zJB9*+>GTYE?ZI@tbN7zOrlKZAK|-sC^(lNvKxyK-rNF^H__BB{Hb2NR*%*tGr zy2`Twm}>39$WrR^vt#ht_{{u-f3Sml7mF~m9gA(-x6;40V=MPuuj%rP?>>_?)56d1 zz{0rzuiTtu3@oJ$ZpicIJ1^TQ^#ttbpBg0bi9c~Kw+Yy&SM8m1rY3cSOkGnj7HZuT z5WL^)M{C;?S6ABr*R03t404pdPQv7PLb3QLbKyF3{S-!{2_I)&A;cGBCHnjOVsj3S zEYHM-OO2YGb8)^{qvSM{AzZ(a(?e<2eBh==Bo!KK5n+Li%#(HnPc1kNW^=!5Nk)zN z!2;msH@iq20{5I9IT!0roOSc|H2InNX%36(Pxsz)SNgl}tWTq8E%AN`Ml0r77}70I zjjvuw&6>nRTR8e&YW2k40k1|M1^Wuo}EKq^EJn(}nhd0bN*TWDXI zC*>r1?umCfFRaRj~w*i#}q>@M#v=6THFz;*9 zr$ewCxD}j9KY8hywC9f9XpOsg*0`D+$0Z)uRpGs5K)Z-g#^4 z>gnL*VXU!?RoY@3{)-?{03UOMKr)QB^XccGiSrJ0eK9rXh4Bk%VT^eY$NA^F3c3q@ zipq2L&@IAYBrztD|%dD3e z1u*l#vL!U~aF&4wJ-CZ_5bov4%aO8_>Ee3UgbP~`KGs~M`{dba)}w8RtL_CdzcR&Y zlqV6yM+i_=n7BMKLcbAk>31usMQ27)Gyz`&aob2)y10abXxWqERcLWe0Ot-gvzEbR zriX*enmW_zV?((0G;lZ>LEZSa!;!M|DrsV59@j}-NRJ>uv;?!d46alf5foVuzLPX5 z)_lWsO={k)9nk;xPy)FJ5Wc2$w~(JK$AGp=Bk_B`#p)>EIEH{sa^-j5I;!oyq} zMHpEJ9HdXQ!eVJ)Ppr(_jx;)-(vHt>_SwxV<&D;BH2Crcng2c~bET z()n33|1AxT5q4@TIBhSNrH{kB~@(&-^ikiK*-wXlXdQA+fpK-Cjt z0_$>1Edu2Xw36`|_aO~g0YBNL!a8JnUll*{S9#CG1q|1u*-6F@O&-Cb)Qg8o69}R! z-=ga>9ILRxK!e$sfW+SGLG)=XexoiKAcYQY0huHQ ze00O6jo6_4a!nD*;uYlP>L1;R^Y1~ss{OzE9>2M1q7zGdZry{4?=&ZpUI>k>npL$V zYtyaDz`LpHUgdZsFlF;|1GNORWnY7N$jtDnAjGDa?_se3GXo2)Q>L&R|3}U3`l)N3 zS%P7a$+E0nOv3(VOW87z*HQogKmbWZK~&V^5f-XM`4=iNtXxa<;}@>*=kLw+;2@mJ z^|df7c#vDWey7WG-V+c8Xfil{7XO{kV0dIwm^+a(`_~E-@EV3O+!KJZ_ZeSu>eQ*# z7#MNJxsD3$f)(?=w$JvVd>60EJ=_^3gn__${nNE%!4R_PdEMY+HJ!JD$66G$1h_uE z50Ri$vHETwz0WK@`ih@8b|PHw#A$t6#Y6q=S;?$bNE&^0UAn=B`wAEQ7ys##8=eA* z^@6zciLvmm0MWO(KmEpUd?EecU;S##Ph=xvt()UsI5xsK$@o}D4cgd9XUy-mQv?SE zs0i$1%ogF4v&nE~3Tsut#pk3e_CpYJQ{0!o@YTLi@?7WsOOqUgf4x77&+#DyA^H&3 z7_Qi+YtrXy*%AG|+_Sj9M@wtf4rRO3255*irEfn5eOJEV`I5Iw2q9)a^?FP8X&{ z#w0!}Olg@ic-MXj=La8rFg^L?lXQru5pvyIe8x1l4V-3t_WW5UcNw>ioxyC5;ie%R z#ez^U@JaWsCKzJ1;-MS^SDiNnKB#)^Tf+VP*>miFIp_a48g>;0?rAF6bbnINaa)^0 z>pzZg(cO!$J$+~b7Bg53gpoq9LbNDkK(Om_AIgjys!H3zb|`QwXoXY8eK$22H<#;<_hlnQFvp)Y3}&QtH{b5eo}zu#SCQA@AI| z3uGxIK8nvR#1q&*zo=B$)W0nd#mra7j-BS9y)*oxf+Wwe@Ab@kE&XyuNaI`|3k3E< zSi%*lg?7xUza)zoKiD7SlTckXe` z)sa56mDITk5HjaXW*Q;pVH`_H2lY1-=g`=u!U(r-6Am!8MR3p)$2$=`R!D7o27!Eu zpy&;oOuAA}yumnqM@Ruyjo_W9e<#ue>)v+c=s}qKvvE@OOC$~0F*rbSfkDPuo3{3C zp&!IBV8v26aUXNc(t}VwFsaf7`4x)-lER?-g6?Hrcip&XKgDOu4-R% z{clB87rmxcb6D@(u``65lLmIXfz!SOB}{`v(J3j7pE&>PmaRox?oJcsG z0^ur5ypK1p#71E(gPW28iUqf$F6xZ?uQP$A&ru8YxpBHd6?_R|?(@82Q>0&Rc;dN2 zyn?{)-MgbNMKE>kxe-SHta!D!IplFi)L=&WuT|b zh?YX%o&B)FICj1jVOl{-hE;GZ;(u(AWM5xj`oll`!yE_j%rg-fAG8DQoeZ91C_;rm zwMJXWaRPi3ylhkky1N-UANEPDwQ!2QK_?n;36N2Z@%k8RD=LdB@>)``2_}(i_B-DA zRG!f?V7|gSKUm zr3G&KrG6kxebO!&csFc<-7gNOi{~$LKE~^5UCa8QQ{t6}gHPySu{ z_y6JFhY)L9!rSu>e9lc>`X;2s>9BYR2_{X3!gCUYQ79m|CQP-!h<6ql%MO}mlTlrofgB8%c4B@(kv*hu~Z1LLs=0Hb!t=X=bh0b6{K>%7}q&16Zhf zA|ZsrLxq!`O(0=hKusg=PgrZ}TDw!%MluVb#n<8!LK^f;0S9$`SVaRzfJJRB)(6&v z!fDME2fHzs(jn8up1L#=7C41l@kvXCf~529+$-oxOZ;#02k(=n&x30Umg4dZfyO@S zmTRd6#uWx8{ajedX>et#-Jf-ln!plr36;ONU22z=lK2#IQD37m3}itkRhgx<~Hg=S_ReOYB{ z^z}5z*u^R1I zvv2w3hRihl+$F=XI=0Y4@OcgFf9{HZjt5s^vgTR)SNc=N%+RajzXHd&uln3t7;$5U ztq)P+K0XI#@-E{da};&+d$9R zfvt6mCvJWQ)_RY>g@15$^2G}ocJbRlR0Hp|KA3IHyzJtpxB5Gc)33a?q66`VO1Wh0 zfQ(QB+B!3X?7ej_R=6|a)}a5d>sNrv(70Y@vfMb-_Q!RZOd4_+wiWb%F*|NGe)d@n zUL!X7f$akbDGvuj^qud1CzuPzs4JmbIN{_oZonnekZoF*Eyx5psQf)zhhboNFnW$d zxCP@c$X4N+`xn6Adi0y$Wb9~}7k^ooxj3&j6)T>5T#IOSWp?PBeJ%GnA9>vQTHr%z zw0c*0^EYXpecMQ2yMn}p^A|#xQn-+jcU=apqCdj80>k0hwH8zgmCwu4f`T~>+&*(uxmSFfR+ZW0y2pqF!9+lP0F4o6MCL` zG#K0X1@TxW3By#(wQ(N$wi~Nsk-2mj`fM;VEN-)Csc{RE#KRo>n_7Q^ZN<4(Qf`rHaIUl?m|z<3xV&f_F%wO%U{AuLYJ@#+W_Qp?Ak`o`qH?UFAIMLYFgfst*BU zYHAB~fw&i9-a0xFoWL<@KTsk5v!5h3uZ6Ox9!m&F5cJ47nMJ_Rq9HBPb0l1TL00kK zwcy^StD$qGAPwNTj&fq9CDxvbE%z#8nLNA@F^YRKP0#yMrn^q@MYwsV{3Les3WjR!O?;MFw=e$Y=A{&ET1L&tj=_z<%q2NH zOmX@$?%e7xKbK(8;hYAbxb?tpO`+aTO_C*Fmxc(~2^h%X_d5z82qH{}j14&I1L8Bt$`d*5YNd0G?+NYZ8nqWCYzFYWk2E{zXe^$oKT=cxE;U*n_)y( z4#y-D`1vP3PmIR4NI38`mWXp`g8*wll)t4N4frW%IKwo+U|QlC>#o8~c**=aHnX|7 z`T2|*-&O(%!*7|*Ip&1tGu-l=`B~hLxCSeC?qkx0dw%)V&kBHLd@=vb?b>zYTshvr zGnr-o^RRt+Yq1?IBe}2kdFLQ!LJXb4edAb+(RvhC68_3TN1{J$vDD{S?VW;*eLM2z zn`zs|foN|Pf9Ol}*Ln)9cy=>x4gdU~{c{2&d(+>4@9)FseT4G?#0T-jw3%-7S{sZv z5hl79n5SNNS$}S$I#$N1a>!yFb+f{IBBgj{`C?+8AO*b8b#$6K% z7LF|#?BKBTwGgVD6kMmoWqV=Yv_eTK#V6^s8vNb6Zb|n&_(1xt-~MeZ5gX9Fq7kL9 zx=hWX)px$erp5^5KA83$*q1hM+ssMRFw`(lVbNk8hei~wv@S=URpLR8_RE)ZVLMt8 zjB%>L=Ukz6d~71^<2<0_D8`Y;<~z`4~x$KlTIy#B;!sxo5&QZ(N^FO_yg+aGCZ;qndA9uL6`VFNhos&)~J z${fsk9WH0{%)0^Sk^F$YaUT3O=Bq|Q7OQ~Psw}iI2f$3aQ)Ao;jHe{Gkr)}3BpyU( zV0nAhb;;Il>HAuBW3uOrq= zED#s6YhmC7_o#UBU^x~;;Li-g-4ZadT);{s1}%dlp?GwBRME!xE{{$SNZ$)X-4RJF z6m~C95vv32!N6oa)4;s;GVxrvI`xtvY$NzeVl4Wt6=H=9S9om@Y~9_y0RdtQ@e^37 za4&06^N&TtwIv=ef*-Dj&3(NDP@7Gy7gyB_RpFH1W=Jtk?3}Jxx@E1%t1xHckYg4O zvGx$U<`94~{pCIeBTVaw=cpl`&by^Q22ukuEG?w31;#x+UEsK}RmQ#WgET;p1$5jG z^Ijs%J}Mak?`r`5h+W;QaXw}ON( znFY=EdE+22IYcjON?3Scte>q@t)Ta;7P=%72csnpR{JP2hmWenfR{eLzH3$JL?Txs zTYh(Q3?gCuyu@NR>|nHL*Y?!jsx?}-eqFe93=IvX!))4W3}yHkz8#77CDh>?E`hO6 zP&pwN0aWx$saqmwUmdsFMh_QqGqPWM2zKo6?`MH^N55=eja!)KV~o*7>dV4JfyG*l zUAg9afr+2<#_y-x9|O_6W}uzp6>dcn>2uC)%sQWePK*(f82@rD`LFl-atzU5-kq~7 zP=O!x-;I53U)DZ|bSd3DL~&Inx(lMw3|EssgxVex~xazlbC=;TnX2OhYew5E5bKmYSTPygXdUxF#Y z?PG?1P=%Uc8A&zO%e0615ICp>Al$X6M*(9Ut{Z>w`@bJ>{!ice4ryZFj6Rsh-MO({ z1#;WXjD&7UFkr-5#43$GsyJYSWn)yp=L`Q`7cvjRFRzt2IEsEbM(gr^zA%1MI^%-H zznlT+$~>x-^IqpH^1ZuhN+c+s|NQ5}?PdRd&PAZEn0wljCYg8M{s~82L;Wr09xID9 zQ&9c%Jy0j$o3dzf{bacq*(u43f6&xO46txc0PMTX(>Y@hr%c(Wd*0fxrq|wTySq z?mcmC!u|K%pC13r<7qu>LRT%5Sy)j$+E4|Ezx~>`!e!~~IReqqy8oO1=HI4nG9kH6 z;!rQ<%I?_jI>!a9&3v{(o2HW0g)a^ngXuqg_6+cVmeaoUL+gYGir#bIy{ySTPHo1& zp2?H3GP|H@Jv(qMkTEFEuTviObTF`E;2WiC*@Dd2pu*tHCAG zbiVN1(+Jwf(x)GLl)b5oeQh09mPeokbJ6w#58ca}y&bwl5Gw+}4E4I09KU0kog8J( zm{ay2t=y&_J$}SN-h>PyORHxQY{K-P+WFu!n~PbsNCU zt`U8lo+pD{ZF^ecIWi_NM@x7;pa4L~m?br{u~j>E-IMzIw=h>r985PJe2{`bM`s_f zMPNoKir6W}E#6kBLqR~=P!tK$g!Q=6?&omQhwi&Ccsny$Ip+V5z4r{V^g0jpPT$Ts zPw1YWJOE~p6TtwAViYNf5=E^dC9#TBZS8vf$EsRwt;^o>PkVpZ<*>U}sn#x+%B6o= zYgeF{GYFCh1OXyW&Z%=wx7*M2p8Iv*>1jYi0;C2r{mtCI-~GY~?|IKTZ+=gqk?-x< zmhL`sA6ifMao$IJ=X-yX#t8b2z3ihI@9-pS|hXa?d&0q>x( zB;)~Qo<>MRUXFt6t0{0X7nvo@mBbpVteb^chdMVSi7?g6wkhgxhoQc(`=lOzu*gFUut`~F z5OCaAo8ksI!K8ZSrB{N8(P2-`iyNxQEYV|`d0|o7qeNOpKn7!-@K9Q8xLAEf_U_#q zi)G>b>ARW8qjPcCySIM00Mo>fsJPktTe!Me%JeB|u&=SuQk{ggLIS}P5l}X1f_-*e z96!GsAUbj#xy2N5!-vv`c#8sxZ^y{PD}TaAspg#o}VS;$8X{Qd7!z z!S_9-QiVy5&xNFkjVuVms5rMJ#uj*8d$26SWajY_XK*~E+#qfja(GH5*p9Uhit|R# zpbp_Kj(YgKM@SweUd2!TIR^G!!qK{IYfiF+nHw9w_`Pr6zVLStkF>`X9ud>LlwsrM z8bnHE5Uks>HX9Q+#NvoEen)g4+9a+VIB+oiSO4O_roZ#}EL;eJ(3~$4M*4S%LrSn` zr)PucbW@N>5Ra9($2dv2P?m%-&4~GBoEiK0r=S1R(0H6WbuxYL``?RAMoE=;sc=eo zh>I~se5;c0-Ps#S!T$VT{dwfM_{KNC3DcysS)wE`D4y4WQrxy5wr2?*zR zLVLnj0|0p6kBp9U-vm-qD@X$+>cvIJg7=jcTLmOdE|4r9kQHqBZ6qS`*h6z8%axgX;tNmU7`Yb-d^7!U zj)Oncv&OvhoQ#(5+D3iUKL5Et#jNRZ@=83He*EGKLEM`e+=OBg(TK=Ub2CP?B4awZ zE1@nd#9h};;i<%5O@hvrCejR;(`;Lwo9`H4-T}_2-RdTp*c?g5nz6UneqDl3qS1cj zwHQW$mo-fiZ=IJq{7PiIzNiII^Q+m0Omfezo^+VF^&k4shl%X<5YdUUw%D92=37vJ zp&5n!l2Q8FH@=E_-*y-U*XxzE@6f(<0LN(?Y&0q$9kBL77lgja-^}d%(u*&Hv!&1u zhgmK-DYKwpOqhzJ?ib?t```b5V9^u%kb;96;Nu$LJ=^S0A{r5=9@}#LlJ33x5PiFp{-3}4zteNizf4ncz;5bF-~P`3i&Ori z!AK769ZHw3oC9BB_|Tw8MA}Z+y&$?xgf=@z1RvV{gJ+&fuMzBI0B7kPEe)w_h*0c3 zZD~OhqZ*h29dj{RsRQ4`oDJL_92|fEWQ~!CrttIZ<2sA$NWFrYREhSQ|3E(sCDYTG z;Fu#K_CJ2FlCOns#aidu;P^UL5uO@a-*BdC!PJ&4vj$ji3k0*oy*@SkPfaUixJKX@ z>m|6ZzsxF3LSwxGEan(yJ?>wtz|Hw2{y6VfTw@#ZoTNDR0hm9P8LLR#(Fzr`gC;jY zo3QqX^EKd|6izd1MYNf5lsPkzo6&{xtX8N9jy7*L3PvgcO!9kYj)xnHo1JBP&x!5kO!0BZ1bDc?`AqSw zNTr0*>%QYh!d$Z>C2SJ=wnxdAWjL92Qq0H*;_|-jaM3Ze?8-cdEwa*vMm7NNshM!Y z2rUEUxbVp&xZy>at_&Qx519e69k$87IC1=rO@%t*9>kt)$P7znI12L%s*g5UW^Si2 z_E-MS*ZlqFM-WC3b|EDI&Q5&Wko?-xh(kDp4pg_(!<<9em7o58@cBn)$(vN?+HX2RC(Amg27d2Shn zir?qrun*S7kANG$qssV3y$>!+49S?9@K9LTMt>{4mBAD?)?xdt$aBY8*m?NdXKbt2 zZAZ)lp7pnf_r<-C^z*#9W!*9pG7rT(@EM5(-xsfVG|G=cT;lD|CWmdvNAxt>spd{t z)q?kK9&Q%PEf69Q2gZ5t>+KI>T^s$mrdbG0m>#w@`Dpi|AyzBT%NRuDC3a}bk;r#W?;hF{O>c!T)sfS> z?2U8LH6t{Gv`Lsa2Nr3YZOU^J0u!bq2w7U?oU_luu_-p}ELpd`5+pppy~_ON+z_|? z4>qD$Qh5i?s*J<7)QxVKH*=faqMmBXBg(ZlU zdbDefQ7Nbl=YlZGjEr?vGuysPrT&dJXfIAnLu%jC(-+Z^B)IKTB-5fa+o+SixE+1t znso_>@c*I?4b$scb1hrO#qoCxbrO2VoLCB6*j&Hy1=^WMq<<)3iz4n83tD!b+b9=d*owE*Qm0^EvkxH67xq8VNOn zO52^YW*nBdjvNQ>X>{BKc5TfaJTHF8cq%|}ZnMVu&2Pi8ij%>R($`5CqBaQT?Tpp@ zqB$d2Z|Q%1Lp%FX-hX6zxC|3LNk1T78EcW#;03}$+%G|Z>ffTq%=>4~pN-JE2m23T zYJw!52tUh^BR~atsdq{T^rD9mxt#5*mRDyfYS zV2!~@fQj_Q`AYSWpq#6D&?msXo4UmxSwrV0|KS*17b(ZV;(5;<6W5Y@?NOlx7zM`8 zb=<#Fy{#dNxFec zth6NV%XEdgqhvgdBkf#OIEhUXWdS!CBIW|nq0JEWz<3Iu2}t?C-5JJ9h9xuNc`bIF znyA})%qOA4_9|eZVCK=87~Pcr=UP~eJmS#mcGSW#7*a$ zc1q4k1r_#7p->YHsmzTGvowqDf$CPL2nH7yYIdmWJNU$BO$jxJUkrdnqK&v zi?zhIi@#VEn=5s=@w+%%pU7w(Zlr1(B&gIp_^s)H#7>y0Flk-LgLtpJ=fWT8O4&{b z2?Q5Bk+&f7y`EL|S(;_pYEqQQ+Rn>l+q{T2MM*5L#biM@4HBKj z82Wgn9pQhsp=jGFeER$PgK2YG$6`#M92-BDbxl_`lu`XNH!GF~I~8>cM{&w}Y-?zd z`1YFR+XfHo-FUd5dHAe&q6VpnG4OYk>ljg1EJU>34Z(5R4J=HaRE$COx3#$m#JByI z=%G9}3W;oSQ)fIE&byD?ogRAVAtX4ngfT?L53?-J7>!ADh`>kjljp6&_KGi-;b9v+ zTzEBa5NG^|gMnLYk}@5_!FMdj^WweAD!bMX+Z|H5YSfAv3LMI?RI(Uj%RVb{Xqz>m zaD3UPAT~P)`*(m%x*_JQ$*jhaFggdOn8y-O%WOinO`Pw*1i~&10i>w!jSp|dp4aoah&j&mt!NkVs=}Ih7V_x ze-3dt5o4U!G6e?NNn3oBIZ=9M?iPJ2+|+e;-HSAVs>EEEz7oV;*c;YR4Gy2J+wPaOn>{gK250Ce;yf*kH2;z9X)z961|-U{zh(b`~$~tIkgbD#l#t zd>>5XWlUFOXy5;V$JuAtV_?==a9VC9jOrNSRWDw+h)w&!@PCjopC;*;VN(C)zx;FR zCu=jg1e#mA((nJ_AF;Nv*AS+2iJTHfchVFlV)wIsM&dMx&3Q}&HBoFPbnL{$EZP$! z<-lqYrpkN~ec0CbK!7Jws7xuDW?yQ;gm6q4QBD^TmrPieRyDIS6z*KQJUn8cByh~N z0nH5>j&Yo)rD6@|iW3F-Bw!F(OAI>EKzTLP3C3bdM0RBEt7R|(STH9t*xb`1z&RyT zqoiF1FN9Oz|LT%Vf(#|=2+U0hd{=O&1YZK)q;hKPO579YWk_|bjy<0DbsApgS@%;j zJC|Ulh?Nz1*8t-{v0Qh(%%P~=$HcQbqDIw#YXB5B8lfT#Ss5*aby%jff~{A8B>p%r zWZvwnjI*=Ec`0tI5kVdhrj#q}PqQSTYiuo%1-&E9;2X1mDH1b1{AgBCUGNC-Q#b*B zf-AfZ(<8=mIR6}=+9mupccef1%)@DTaydQm)vtqNmxzLe-x1^4j33Ps<5NdDO8ysM z9(=DE#$plkK-VPKM>Rk)9X<7$aBqt+tgbhj7Aov9a+z8<`w~n6{x%MV>kwQH@1ik6 zu%!9xG;`>==blR+`|yVY1~S{N&BB3okul2&2!#wE88-U^e1uW)DPR_BTIG72`|K@# z+!hRk$PgPyY<#he#N;Uk-iq)=It^EO-$mMYqJG*?{MK2{ zGTcmUlhP^Qlc05j^V~X%b{9mP3r8kAc%625E>UA0(F@>Z`?Ze^j+|#CN_@7EbW$|; z?Co1SY-5I6hMr{#2isylH0M!zD{aHnl`5w~CowHmIzffqJ4H5@OjNtVjQZ+ zZNvK;e@fuFd|0cs`E8l8aML!Wd$v>CLPEm;?Spf%?GHJ#W<{m7*{&Qn1&t!ib z2_RLzh6lE9;(kP|pv;gu@-2=>n=F{#+b>~TFcg0Kj`atQRABBH`tgV{pd824_d^px z-vgKEhT~Jrop_=0$1(%zEZ{a!Cc-v4C%xmLY^?+*>HA>|%XfDdVftVWb}(mS-a-V} z4^0mWrq4|$GT36fYaiTfC7>iQ99tPDH{WnbWj-jqJ$zU83A*>*dqa>gha|Y@r+6nk z#f5<#1C*h8<5Dp7Mlq9_a4rc0$4;2!Iq1fn$K0`LP|62P`q?18zrqGeQ#opa_&1=z z_QC!rL#zzA1Jj~R$3lr*l!@drh#TrQf|Y#^Vo10Fk0_OXdhWas1`1V#hdB4pLl38W zDt*FOws!b}@O2iE`_>vRnd(A=&~sO-+%vo=_Q zPQrc~X0C`HH`!+^IAd|fr(MpYmz5{eK`sDg&c+OrNaVaze zG)5oN?5{=>A#g{h>?TaB8i9Kg1h5PRmo0!<#(v3INEmaQc7wOEN5Uw;XvKh0S6u@+ zFX)%+#{v@Za70I%J~=ra+6T2U`cAoyYu+UDtm&Hjyi-aOpasUawT1PDakZWm%6HsY zT>~dgNLd%mMBdv>ra6xgbe`uTSsl-QabceOq3+cS{bVK8e+*l9E* z{l)5Nr|bI?xV4J;);#06Fnk4{i5=|cnk;Fi>_ zOjw87gEG-NQV!EDJ_>ilKWQiTXX&*Sm>1V?*B|Gu{w57DXJOhIYYm+Oj`|Ln>*mED z{U}T%AH(0RnP_4Q%z1smT(_5iXD!+lUZ{LxNseD!SUa4Xj!mo!F-Cb`_S&s}+=2`Q zlZxbK!^P9=b!23(Jliy(mz`G)3AcI$3AXqe7nMA71+IZGUxbg7$jfWDx zf?$a9ct*mM;5)y7UsOSrID1}u0 z*^KnWGK=T38lFkUvrdJA8SsA5J~v7?|lIYc-+7}>}K?p_DD2XQm7Mo)*nSV zPCDlF4IdeNdF*`2a+EemnA`VmA|%+(JejX8HZEU#DV}Xu*5^UEg!~}RBg7`px^P)% zE_1`noBXsb5*fZ^p93!RS%>6kD==+=39v1~Rf0`CiN$dfeA%Q5_EjW5jH`HQLAK5D zqqu;zQcz8i9P@y6{uAvHG8>OoY-c5M8raC|kdk>WuKB*ikRQvJz|fZ2`_|cB(-F_u zuWI~_%_rK$R>xfM*}y;g7sL(oEc)$x_Q8W^%5e_dXr!7HXO9~ZcOgr*5%9V4a9eyWd37pgC<^{e{g zHDIxLHg=_W9z{zvcM+XEoKv|G+-E*9yZCSo5H)oXvazc&aQox&H~zz8nnuV>sNHZ* zMLG1TSh-~kg{RU@`|sLc4=(k>bY6R~4r!XQ;V59|YG7G1MTvRFw2%EmCUptXw@$$e zNP#8J+91xSFi9FEJMtwmmTTAEjr6spy*|D8(hJy=Po$3CLumj4YOai_kD1n;{{To> zX0tf71%yhKVCq6xv7jcL?8}hz;J>C!T@cg~QTQ_uHgtFd?HEMc*|TSP4`*}AlX=v~ zpczx7I>vY#TA~xDP6p!z;KBDC@hS(js7KQly?H9={;OlmustH<%hP$IuX zhF&OhAR=>t)&;o3azK07t%ZbZXjt0lTN@Fk`pl%ws3Xfx z3*#^&tq_#VxlB;gSH>qy{pgb>Uv*^L20TdkGvQtj9G#;wCEDcIkSD@x3j1O|6_4oe z3jQ98;C2%lHazEnp(elhwNbtjc`c`;GRim#FV5!hvrD{FQlkQtBz9x3Mo?6yjxrO_ zgl{rPu46*dHpxsGCRc#Ts4Y^y(Ug`k@gcb~Yr3Y9Fe9!jz(^doROq&z_D`-^|P+UBBHJI1otHaFO<#gfP zd9-#Z?HYI(Em96t09vw+s;R`p6LYazk}G0>2NQ#NUhTFB13ODwq_5no4UDrekB|XI z)3(Gut(HWs4R~r4vi%1RrlYUDhMC+rkOnvuJWFQgXKhc zNBSIa=EpaA$qKKzZ28w*@Ch2Z$+djv4gOyLeBfCHj|zN>-q`NS_2}c;t7|7W zTt_C5-Q=?d({Cl#8;{M_7oS;c7lX3aUI!>(0)B8>z<6Vs)$jYR_)~qY@*}>A>qUKQ z7uQZU>-%Qcavf{0{Y)pDmHXxeIp5U?6o=Z4qQAv8zlBwvN3^p7yX)61u2f*zyk2J}7fm{>E&z?Xc-g4Lm>e6gr2pgJ{qJP)-IeaU?_MObXb8}f=zk%RFKsMyV{$qBmy-p$&Os!z zhrIdOG~+tB8y1r}$!yNMbIrLFc}tw=pEmmv;~2=iM)GzecdhcfprT)33Zo{+=g{k3LFV6(Sk${6V|B0cW4?%`3vWXBn9(*>eVx;u^%(B#vNF}Kz!n)?Ea_* zvjM5`#Y<<>_!uTN5Z2vD$YmOxTk|k*?VUMt(k!s=Z|IHn%`vaBjeJU&Rn;KLb`NgB z_e3xUa|sb0YdFlK!ZWXjL?2vQK`K5ATy(~E?zvwIi;@y`G<+*KOsfGhC&j#Cew~Za zC^R)8U|Jk^04x0&GK_^|J@Zm*&jLB%hIT?Hd&g2!t{SD`7RUZT4_pxVowcS) z-;zZy;9&!G1fJaVEhv9ZTZd(Q-6a1iul2reJ z1TM<1)Wv4ww~J^-ko*kj5=giaVG47U>gyt0QFgX-Uf;NjjZ0*W1&t?_=rGNqh`h;5 zY-O}9e*1hRN~%<(3f;xS#ZKZ+f>{ZR3#ig&H#FvbEL5v55Jj8lw-Y1U$KPCO%n44d zGfxZ`ssbKyvGOPPi@(CJGK1ndXB3B*{8WBc-umgjHiNy3^~R&9zxuioG28CM&xC>- zj|+kDrfsx4q)5Q%Mh^QD#5XDzyBiB z+d87nR>BeG(GSNp>i1f-Aa1Yyu^dfqJhGN6GbiGP<;qlu^Fa&+TquQ&DxNQJgXe@H zU(v3jEq(`XiF5IWe{!EQ&aPd|Czivr9=Qzq1ne!B!N}in_aFCb%#w8c+#T}8P!Ql9TQc13xG0AsWAqFm~&pikvz{^j$QQGALv_#KQB_ck6k z(mvn0(dRan|5o1(zZeNR;B5a2yxUlh?Q@>RI>@=tZPsSznMVQJfSGHE?>h%6LqfZb zOu+5~tk7I{yCC8STVnvpI1QeQ?Nbt&3gqD$KOK1}Q{)=BGgz?c} zS`Ht%C!IQb4z0+UfYWdO)~AAyU7ni7{Liqpi!dmi={G<1o9VCq!@q-=#4a61Ydh`f z#}uj_m@7weIcdQksD?q%+1c=+nu#^j9wVVO@OyL|A0hf!hepJ4Q)?ME@EZ67OU=_# z19_n^b7^bSKZmj_A0rse!CbV!T$$%$43p1!v_DHYa=ZTPzo^7pL7n5F@J|!28l>(9 zA22#r-~(nftNL-kHZ&9RwHvKX8w?bz1I!8QjTLgJ)e#rfoYezE8XP!6+|^iPS60l` zgISLFM%%$S`X&h{gS?#1fH#KIot%V#=d$#GzLYI!VS>R?y3QL0T#?ahKtoU)8Vxm0 zYU$J{>#Kr^656yS$`p_55Hev!h_;CYaNJX{H#SbL4DfnmKJDPKm|-XS(hkF zO-_q61_}A<=wDf)9doBSn8@dT^0oBp$#dzS{)<10a(?{6^UztPbYS0J+P6xm)`Ntj zKbOAvrLVwjzMCtxgdBe*ojQFv{n7_MPM!|^+Om0I6Izi)n21%(ME8B zEQ-QdDENv+tnzxXSrz45QBktQU8qPwd|CwZJGtEuEsSM=NtyrI&Rn*W#Kp*GeQd3Z zK3_q6-?rX0t$ehrQY(eaja!Z%3y4LqvcUOnaY%q?VppP2_}QicR$Q_U%gzlhUi+!P zi~bhhH(Ef{z1A*GYx2Z*WepxAy1dDty+H*&UJz+Y^8Ey1LLW06*2|JucMNQUCOu&$ z^akZ#bD2)&am!^{ZYC0Cf-G;H(DsS^Y=-&faArKgBg^n3p`tmB3%o>w?RNuIk{93z zcrkS1)7rQ>w$`2TrWgnBdoI(PTWve?wQKrR{NP^Tl2%xwws4K9EYp%gAdVCAV6$r>IwPqX;2B`VCI(8MQZBu&f#Ibbj*bo-4LEzWAiW`svgT2)z3}4~(j5m51)k}69pOD$H$;WVl1!^K)6y>8b;cWR8)`Eq z2$efdPJ#CJE+o#|S(6&lV~^b%d(F$Qyc`bdO2%tR^0fe=EkW$Mbn*20^umiTrMnIt zO!p3MOWWHT)7aUQsT-|

_5sWBcEUKgSZGUya&x`Qj*1uLwLq9TLD@TVJ+6iMZ;2cV_Jlvp-0L9fPXi1>0|b2|W?9Ou8c3)XW|uz5d(JogD?<8Dy&n1i zMT9rn?f6GzIG&64G1i(esr}M{eVRT^@qy0)Hna`goL`wsQxMGV*P1FB>8yvK6DycJ zNl(;JUr8+y^~-3<@ER)Fb-f9OL*b;Rxzm`>j*N}S8k2|+?Ge|c74&5po+cj$9bd%X zqg;k=Szter(JH}Qc40zA+l;D28i>@>+m${EGy5r=>!%3MJmo9^06+jqL_t(1ZX~i@ zLxVxEt1&vxJeipu4#Dl6cO7A$T}j{hHu*)+ZY(Y`r+`B?YpPH89KMS%tfP!O{i9tv z;qTbq3qDPzmtOiYOyMJ$hH?-TJ~$0SV;-&hA9yhRum8*coIdf9kB4@x z4AWsC1@}&mFki;p%(?IQ`p0knT9ifKwnv80ZP@+TPy!JuNFge?8g4j(7!R!3aO1k4 z*S}khS+UXZP7qPllQ#r50yg~hYc?U5QzQ{98~~L##B-Dp&+r`6KL}aNs@@=r4YS5o ztGoL?TZ`p2SvHZ+Dn2 z%_s$hK<AA1A!g$Wg9J4}V?r39Yu^pnkc z0h5i3m>=m;c9aozmRt^98l)DEbt7txCXmF(Lx@Dp%L#Gb8XJb zm`2UREYLKFetbY+B(R{P?J#1b0XI>e&e(BH0T6}i_qPDksnz5P5soxRQ|rwt6z!2d zh<_k&4m84ZR2|W&Xgebx;5u~iA;!}rP&3{ex_3gCS{Ef+d5`XGj^qR%(-A7 z+ZfwsOvGe5G@)GqMxBhCVP=~#i<&@_VN|kkn1}h@fhk`XjP!y`!OmT1?b;#gNdgEQ zy8C)yBB+mdjL=0jXkE}W!K4^;paW;`XD|zV-}~Op*s*5=7yVqsbN78CFfBSRJga&3 zHkjHrO!~ZUzow@#Gn+CO1)+n{V#$cD9TXPhv39|AVdIsmo45GsZNWeU5wKw(wK=@@ zU?y*Z2iG9awJ%)r%SG?{`H<#qap8T$A`V@{dl*5+5ewGvZDOB57)tL~RgV7?h^tr;kA#H>GwkA(0=kv8-5;!+jh_|647a% z(5QH;@=ca^+96S^>5W8}hxrGLv}Pz*O{X+X=^VXFXN(un6I=p^bL!5~|DkDhLnk{lECc-v=@5b(6N8I(ahe z+Vu%(fEYFMk;E&Wun@Go&%2tW>>L<~@VGBwzOsvK#&c*{_Vf`|5C>z4{K(Y-ksL%G z@RN9KZD&p~E-ufrb7nTyFvoR}zYx-)E#_Qb3nlkPH=85e>;jAd^fX$KMzjosREHp+ z!G7N)XC_|LiPq4j?i(@(ngG#A?Bv@bBlkR!h-#3^cVSZ2P`^aNJ0h+T5orNO=ra9m z)I1f!Tt{Vtp!h9kqoB|=*$8Fkv~fM1hu}84lfEv7G;YEi%KdvDg4RTZMp9dbb8xBE zu78DhT+`q}RD5ig2c|kR2P?GE$TYGh!WF2Xx?xk8v*d2r(`LqM*#g zmfhe&J$)3oXd<%qbZtUzU{!jVfp;!2<u6XXXjYst}8}Hrhzi$f$;$|O&t@dp} zU<(3U5ZHpiO$q_|+}QV_u%t{28UTU-vQRoQh$sWIlpxxdAkg$TYr;|bsb_zHF90_E zt=(w|Qw@psnW=FcS&`CWQW9EL2@6Uxz=6L*YhpcAx7nd-g@lMiOb=mUy9nF*`q5V) z#0l@ZoQb?S2-nb*P>wd-%Mj)=Hoa&pR)??h{80$z#x%5NcWR!>Ie@NS9gevCMuuvI z;ZYi_gQ|?`zCC->|YT z91g(kIBu^%+}2=%qkn^13w;_S!i9w*pPP`E3=0woEY8e9D3VNCd;Y$UvY435Ro-kYyOJ75pB`m<=^TMC%wV)6qz#bo=1=DXE{UI2;?^ zdx3T@5%Egxfq^vqFfx{X`S!QGbDp(Ch7!cLRM)Goy^QAJ zUP86DK*T}ZK*&i;7y+pkb0uC3!dJ7Gg^Ia_lt%<2;Qeb>S>Cfg?eC#$A<)X%k(vlK z3X_!tYkCrSNi(nI9P+fdFejGTa^4B#VrGQz)(rO42*r!{6+B?hE@_ z2*fEEok<+Q=OBLP%1V;Wd7xyPvBA2ik@lF>PUmB@YU|IU6SQz|z%iK6O~4;VVF+e; z3a;rOZQG|P3vC31aT83N%%JbYxDi$s+L~4}MlcD>G)5vF-Xa(t&2?l+rP!U@=C%m4 z8*K7*>{Xd;I9W9jVS0vUV3C2>$+%2-+d9r$K`C=skarK0De9(vo%t7QG5f+NVTm?1 z0h_|4N2Y6W4hD|#YXDv)K9;RCUoDH;DH(_o%z_MqfSLzxixrJo=CAAEJMn+)3T!{CFts8QPOxeBnnh zEt=R}1(vhv#POpz_}`QE?%kJm4DP}tSCg`ZNEW9lUOnSef;rLDOlHLZ3bSZN+R&Js zIDI;Gg12fL3~dj)2lJ-6o%mgg8PsGj-EGb7>CU_EN-sbATzdRH?+5NgWt#j+Bo0<9 zR}0=54Xj|?)pF>7t@fcXv(DqC1_W5}FR!_osfao3ja%^8Vjyn8L4CWsv>Bn2C&=4f z(^h#KA+QDejS$)Ty#;|^Fa+59*O-UOxx_;d5)yh4y3&0*?J7C0fqBpo_3XK`I7W}5 zCBUf{LeseZniLtYJ_lFG{!*6ZkqMMsZqOT)8AtK$56}6?!06wk6LrrR#4v=|$T0aD z$c?ay_*`wo_{caRWP2g@JBW5O31N+?3`~L{Tz8VdZjw-yCr+G*#E06D>wIn^OuQH% zo=8RqajEnj57`Kd>sq9SVHyYFoKOu1S%@*Ex{=hBb}0c?LVoVt8Tx-3LUbh!?%a_^ z@VStuq6wjq_`u`u!=bt_v@;PE2LiCB4)ZD0IE_ewSC>kdlo+nHE*-k#P`YvwrsU$O z)Y#Sp9OvopLh9+je28dGP}Q(3n3BjaU`_&E%5R8z+N+kpHkBb}OO>23<^V9l()cvY z13m=AAPUApUx@}J=Q>*(cGn0-Z7>~?ED%CkQy%*hCQMTOj6oe5hDI5|8cf-cdYf~j zMoBlm6qaE=45j&M4*Um5k&xqG!Kb`D4}7)FH+m7~KEM`?2$LBZ4p}12sa7--qb##f zFVRK&=R^}E>tm2;uD%WAD}uR^AyUgTU5P9O z=N1~IRS08=V;ND$Rm@ZiVWw`i8FU3k0)iU2%3w@$y#S&>UB7{F!)C?SNm;E+LiK8L~K#>j@= z&~TJ$YtxQhdqRs~J?3?2FjO;T8=`g&n7~(OpB38O)!PRSo{is4jz8Bl;nS?oOz_U< zc^JvbsR)}C&M8le5?g7DO1RrhD zm-JCU!YtDu!8W7gF=jFz5*l8Y(1E(i^+JGn=)=_j0jRl?8PbP_c9WcLF}?okYmql$ z`;P7)dW~+QGqI9W+c*P5P}?TaD8bv94j(?8Ui!&P>E)MSfoOxs9~>lecTXDFxfB10 zvuR=l!iqYz?^b%Nxr~RBTbZ9Fv<(qbbeT2>a4>Pv7i1-yto-Ol&(Wu;^xpTpH(fY; z7L$-;X>52n;P&y4ek66mNX-y?zoAKIV~BF3$R;JT>;}TVHWBW0Vsbc5Lr9uU+K{l? zpDPg`#a@14Mq-%gMo7Iiqw+BKheVy`V>*6EbSRiCrR@@Z`d>6+&#u%sOr08Wl7*r# z!|?DzFb?*?KH5;7jP-BP|HCdWV1gt(T42KT+t80;3A=ft0Ld7ZDXXcSd$hyR(t){& zu`)^L+#E2(4`7)#!^)&3+OvS8yNCXmI%?~uam`%a zMh*_0)8~O(QzM!o@LRu*^+b4te+5Wt2*gVhO6}Y^n4W*}hvAd5t$$m(_x}5X5x8*i z5^VJu)aBetH^W@~q zGk! z+qIvr%}#`@juZVu4ay{wGgr0kguB^~&BnaAcC)tq?QY-OUEXFmv{@Z*<+;tqMyX|S zxUsn~v)ANJj&n{!vROEb`fSmz&D!GqxA&-+uv9jQ&FjoW$PLwNf8)a+)~vOiXyeP? zd&8US4=X9p$Mx&q`ct>>nYdEmixT1D+;Q}L8IztE50I}0>8Uh*4aC2aZ~YsTej9GH zOad)4*-p(&kQI3`zWJT>p7*>z4er_n@r%PQ?Ym4qfd!?>M31UNa^Kn7 znHtXzL#)js1)jqW9w%|y+0-N>Fd26JlSJV;d+t>FkN@%iOdtNp2hkkdfh2hhbE)C< z?6c28q;;p?`|V##hxYCxTd|A~grLr~wK@qy*h2g(SzaKCoJ3}Gx5)rWjs}CUK#0($ z1~fUCI1LRBrA5qCS|I+WM#wg-WSO?W?yx4{*bX5Mbi+YxoVQ=JW1g(uGvK;mW!urL^q|Euv%39k;5o-Z z4Z*=ZJJY4F6t?>9Kd;0|QOPXswo+8!Pl@8`<3_iMVz8%=xr!@L+1`$MmaQ zADX0A`c%t!EfVT=l|FRy><54Oqv?lFe?R@F|Lh{DLK6|}u-epYzCzi$we zx+xep<}FF^c4Izu(|(R=6I*70+PK(WF5 zU7QE#E6C?4NUACgkMZ#))Sfounn##~>$^{V52j%}-A!_~Ig-U`5(AYP(og*ql=v6+ z({@M(PpP$pq=cn}g~VqjFs>c<2$xD*BAhFPtC5YAo__cvA4y;M!V?iHv#3b zgAbCt?e+BI=bwjwe=eOlgC7BH-M+mq4d8pw+uxH8-+32A)l%e(Fxt?EKJ?*q^8z+^B*M_Oqm%sD{%&0D>KlsBxpzQ8+^7Ki3 zERLq9zWri2(hguYwRi6xq|Ep|;1oQMG}!1ztC$7B?SuxVq~kDAmW+O-kbDG&>cqf#BMHtH$Q{rOQxGO8FfDp9 zufTYPc@cfke!j&0G7Q^-ge>hDpCEx8Fqtxc0gS~Y+8Z@Q63@`znEyc3Q-$9&H5Ml6 z@8OYIm>hnuOa(Cu--0tb%oiqO&1hOy@Fg(;-R$gmn22c#)!*MwRH1DoJtHf!VW1dW zr@v-O=gwUSxUB*wP2ncVwrzASnMV+iwxL0gQDK~#=xccnRu&CJ0|dW0F0|>Hg&}Yp zTVTFWf2BqGAtUQM5lPDC0v9!83J6O$H*4;*N;EIc(_~ayDRXLen#fx)P{7AEDV+TQ zfaY6l0h^DQ~1IR(YEjjp==K|AWe*|W=d+C z+F)!A4p2jTG|_6ojLeY5Cr+HiDSBr*c<2!L-Iz{Y8Ns0)=W6DT+7C5iI&9D5XCn=x zw!r?E$hRTx8F5ODlA1r^3kYK#F_RhZx%4N0^4avozyDI?Xn8kx_R=X^Ft;gY<*coJPLc=__6h83j$jZ`1wG9 z$yaPpKc5P=N_`^;xCX`tVmsDB|M-D+Q2P)R9z?$cRt*{lBk|NIafOPUhR`zF%`7G( z{dN68*ci@K+YuQFwG2iM%4=&LW9xEVEf@#el^F~u)awqUoKQZoPIFJDV-|ClA+!gr zn99tM=**1K4Vb%VjxXjAI^!{{t{E>J$~iRAF)kgP>+5 zT!~>UYS2JfuI5lC_G@p$_XRvPYL(;Pg2qGV;YB3v!fFgHn&x9I64rb-_^s&|FzkiU zjQ&}t&Uvv+ zzZ!9fH=L|+R4Wu~ECV-*Ib9!_s|_tI&NnkR96QUBDe6GmVWl!Y)@4}W;wa`~@%wiA z-eMqbr_sKFzB)1U=E1|9=S@-@QYX%}lCv8qZtIaP2y8*%r-ndGLM9?FavHnk`hHa@ z?Yav;buC*jYz~2fc~FY!c|@Oa93XNdi5TZbUQ!}y%zTr_DHS#fk+~RTA}*8I?U8ps zjFf!=dvzR(A?OX?>7Zg665kS&A>rp+$#lU$6!rVm#zWhF`4NdS4+$%6^^Y7LM3P%i zK8JA#;W0Aob_cO*_|-mgJ(yv7aBvAic>>4Oi|P3no(uD*fx&^a6XNxmXMU8<@~?#u zpvw@?+H%MGPe1k9Xw{4bABkDal zHiGT`E&Q}?C6bW@ zrHqXPbD22*i{x7-Y{Z1E9#leZxy^87)66X}YmwA*_-)8V@g!Xzmv zClVBl+124Iv{^@UCEJZbaQ4AKAhHirtR8Z1^a6Vs2|q?WYS9M+T)Ao@Kl*UT!9y@$ zMWVu88IO4Sl7zl?fARly7>7?^;u-gD^g z&=NWh=P#ZQCR8VQneA=&Z3j0n`+`B0(E>A~-Tv8PAl5*!b+QEkxNH_KnFyH&H>i50 z2$lKb;u$~WG`5Z{2y8*%ZHIvN^u-)>vvPwpM*6jf^KX3QD0Aa1vmr;TCkfhS?9s-p$)8uV`^SA#goG{<@?nlG?!5IHaV^v*fUJ=K2Yo}3N zw2Rkl1Ti{?j12i?%A_vqx{H3FL4PmU#e|NFTVH_Y{uu2OcOmv z={4=uY-DA%fzX@JXVWR7=nU){h`x?NxS5~9{wUei-oCfLH+7QBAxqUE#E}Ba4XMR} zHN$QnLKVW!3}fC~fcU-d$i1o4tjkD}XCRy>$EP8@VZ`ub&|O&DumvRQSRAEEd~@&+j8)S_k8-gnuFR zlev2z`6~|W-$$6ydtpY%F~PX2ozQ&COyW*KGc(I(nPEAY3y65(?4f2MOR=vKauj9> zwTsMCXKx2ty&LdHKwC9V!|BZeITB)Q0n7BVc|0`3K{8*99|v%6>}pK?olR+b+Q~hI zdOEachH?z8)6CdpI(7U+I{MnNbnMk*U?wI(L_J!B=thx2yXhKbm&T)M5Y)O;81;%! zsBG~1PiX3efl@d;YsR$7Lpp1BH*61+F-`X(bSXV$kb)ViM^j;Rti^>^m{X@yM{t5@P#M7kPaQWJIvo2VH8(jB6XApQ9>Kk2~+huzw^84-~12% zCO!T1GilfEAxz^wlfM0}Ckg9%ZyF)O*vqF*N7!DOGZ}gh+h(8vwK62*pp9y1Fl)lu zU7sJBo;o5%f!5KcWnf-LGo!YQ-lhj0c_^JdeKtMy{io7LKJ+oBZ4DYd^0t6Sv-mdE z*Rd8eA3Q>P!FRD{#Kqg}&&FNprs}=}R1DHvX;^g`n+` zu{X~e3Z8|?by-#VTnhmc8ImhwJ8*951I^NW{6X zd5cWJGUhFXut!I2gDq=MdpmaCxLd#Ok9D$A4B^wk2JrftvMK$7LtFpVj5#c z?M|f1M(*+4$T{R(hWT(KV2uZ^hM0|LLtMIYaX3wm;3QpYO1rl2NT+`ELfFu+;7Dx_ zf{8jprm{!WLhME~o;DnO$>q?zIGHXYjh~aDfKo2Qv|OQ09Yh0KhRD?+wpNoI>TBi0 zriOXfKKuvDsT1a)2j->~7%U(O^(k9ZRR~B_f4&63R<%^qJ}Z| zgKdn%l2+%D{txtH3YDWnHBe5o7E}*o*`FcAT#pn~8P>Bh`mDNB~QQA2Qoq%&Uj7B$_7a2Gse|4kr`r|+P<6y>S&}jVl`4?zIecH2oAN@X`rimif z#hCSyoxBb$!|274VB%x$0wdusycc00Mq!d?F;m-3M5R{XWKe?!+6#o!EXfy}jFg2o zo;-~<=n`# zH`_BeH3M<80qb^XkBA=|CmX2DKr@?*n}pY{C45}iGNB)vANQTy%qt{1YzR)O*c9`o zxjwmMHee*&AXy;2?)!en@0ggG0CUH^b_!nm>vkBAo2ien$svsj2Q(IF2Rkp4ET%Tp zO_{@WQ$i`CB8dm!QmB^W?mOp?_`dO2$K#E6uKn$%5bpzv%oIz)2{IiJ^SKPO5zekV z^6hIbXL9kHOBv>sOVyiDaqf4qiEX@A%w?|^?YXw}+vpcKTENLM5wC@dLJtWo@mToB zng+421bG=;m*6nVun7)^Ay7`7I+6Nz^oRYl+6d{lEJ|Qq!^cKO&@i0Aru%Z*vu`&J z-}Ql`Z6u;=X=!7vZ^MjcGHmRNh(St`XTux?yYRji@=o+(j&wQf`E@*Y&DMs02uc0L zOIOlMFTa)^ee4k!5FKf|d7i{|5c9it4MMzP%dUa}crF7&Rt3)KwfN3;b0tX7nXwsu zB3(LnF3p*b0!Q?m-NDS)Q)y`)VvjJKZA6DELj)^1@9wHiV-U4-5a*0ogmP6Y&`;93 z9fL%s!hEWui!8!qS121D2nJBS!S3C=FtNh1mNpor$K-Q8FgxwQus0YA!j(eIF3jUw zP|isJ6%2qJ4n@puC`y<#e!GX!p=M&W*7J>*2G8Ks4CBxR2jQHHy_LTE@+#778B9&J zxDe~6j=vFM3D`P@d7i3m$jpW~B9my8t^)pnM-(Akdj`p;AoGGcW)8oIF(mb~FoZIN zGH`8}bj@J$Wx3WfL73C4m#@M^!XQw$+K0Y@zVJ7gn5iL*?0A|+n=%bCE=+dxbi*uz zXJ}xS>GK@^Fos2Kq#ru4_W?6Foiq+E&JqEusRf3Xf6gU+Cv0Okj0A>o>GjuMPoMha zug3mwUXC#soozb@7;hLXm{RA(``-6>dhNAW(?yaVj$qEVZChtLc<>+&>*FzZWWZ#4 z7Sa013;~6}^;Y`QsG~ULw7?W zM4*#GB8Y1)Fd>DOu!;$!8ed5(3nq)mniP$DA+@s%_e;vOu9!@IR~FKG)ay#GV%k+E zpBqwf6qC~Lcqq@r;`Y|}FBk$0-5Rr}gPB;N{kLPAamn9qY)16Rnj{C#OtCjYB>jTB z^AA=Rc(>uH&8}^DWbJ3*J-@_nHE+%ZQMs6R!B|zEE^ytSN@O=4+3vRbD)R`!tbl#- zZ3Sy@TN#IAQrs`)YQ8;!$&qp`l%2 zXKp=4R;us8ff_Pu5k^G3)z({o0hym=h$bC@HG@*i;kUvBZN*!8x1D(WfB1)goc{ia zC(_rx{>`-i;33+HL>p6&<>eZjU_0^27=VC97=@%+e+PRN4(P7;F8P7;IuAGCaNL#V zkWhc+OJ59grLmDKsh3R0J$-d)7n+?qOk`GJ9L#EMC{?v3CA0~xt&N0Q#TK9T&e84~ z%*WpK-uu#f9)EYb>+U;&IqMP`na$f^w&Zym3?X`(a8k}p0Ch8-G5#jR;!G+1UjmHfx-eszY-E8|~+woYS?~cU^nMT?KNMv54knb&)G_X>ef8 zokXtcAHspTIeZ^vBA0-@S~D7unMNZ}F(!*-L67|%T$-AkNiV%TSBMHI3u_dNdN<>GatPXg&zV3)sAt{W#E}!1(;+ zx#v>L&V7-GwdEZ_qexnjD4MVlXs;(kZ5M$9t)Y1D~Cms_hKHFxM>iM$U=|&J&K*lPVPnbH660_k$Gr2-Kg8SOSnpeLW&PWyoDqHpu8YG=8JX;` z!v)`czbJ3x_j*Z{vmi9Cy(%+b&2YzEo)gkhUgaGH0YzJjI*Z>*(F(@j4fl3B3Yd$x zo)^FKn&q04uPw2L2~!D0uA*UOO_KpY>S{WOQ|C{o;qj5wx4l0YgVC{3;GHnr=?KC| zhFVN;+-p!wD4{LZ*kT-ty1C&k{^xOw-~1`s;&0bOrPHp3uC37eUQ9-(*+T-Xg9rA< zxx~I^hMGOS`syp`um0+<(tF?g?g-zi&xCE_wIHsVa7P+m;X@#Uv3}^aHU|5ShJbIqtjTNP6_hJ?Zj^6Jbr9HN~cROMvfDl3x6u7d>fr- zm9_=~z_7RgCKW5|dJcJ@d6oEZf1%@V>~4cxFDY9cb8@XRuBs?6b%`zd{Mxh)y) z)-s7Q6egqitgPU-pmVUHSr-=x*~-`pC!NM486WkxApFtPYy|C2-7HdiovInPC440s z%_l(wqI(`XobG@0(ex*u`+R!kU7}S(}#(fIIc;RS~$&CT3mD7149@;?-ldi>$k$O#X#H&qxd%Vq2Q)PdkJ_EK0^5+b&%Ll9qY{0 ze%1}qNwI{a%P1mENF|hjxF4`J#q&br-5{{w(L4FZSZA$69|kDcUC_GRzj7qqJnamrz%-mf@&WQWj(Vux$US zE?++?Jul$9egh{-(`B*wv3bXg<7=(VD9g+AgSG@YY8jR5w#8?aI_j%*yB-%A8y zu6HuQF^<4Y38l{|*;I-f39?`!cnXt-)pY#S@dy>UkFc9O#fN)5H%mBI!%9j-IzB59 zXvURq!gxF+%Y?aH8?W^yterVr8;4zi4I>%^qrx6-SWepq`^n7vGRg4Hrw1Q+ zC>?$E4E_&0)4+D4(ad4qF@eToHSHQ03GlI=B5S-&csI0YxNLGAW zSMY*nEDW={3_O>YAmTJ5(o=wS$)sq#eQh}2_K`5Gjih(fOX9dW_Nf}ph9K-qIKbD{ zLo`BsD*#!AShWpmVDtkqZ-Ix5lM;0EO(^|$uDSk&5RGA#7!@~UNi;`vU#u+=QHyt- zW8zZWrw;Qxc<$JTi4KvWEQx@wIZQ?;k`N-k2;*H z$EHVlhd!5Kcp+6VTe#~ynud~1Y>=61EXT^2l9q*=E( z)+C8O!jS0C6tfC|yRX&aRIi5Jz3nRfTf|>t2aM9{AkN~_Kgt8*0O!OTKGlc)DaPFE zt|JcQo9!7s@=iRq7>IY`s8zLDM17+}ge{P^Sd5D2{VisznhWmTg~Z9gWj8;4AG+ZF zjbhsvYS$IEyC5@;JO z13}lp!F<>*cDl9S|6pA_?qN9|5`5yX(ndEd;VMCbp?g$RFw$|IOZgD?l{1J6`za3F z7NaOFVFQ14Y&bpjgQsE+#rUwfPL5Be!-Tr*AR@@2eFuZ+a5e>zNg2+)moOg~!CqaP z_7)sEwWl|NjMWKe_bcauo2=z(6RjPveb83AL_IR~Zjd@6c6N7gUZ0L0Jr>vPPZ{$U z%~bXuI1o0)YAIlIDt&ure-(44x);SYzl(DNLr63_kY4j#;YLVPg)igjBv|A*$3WOG zYT5!3svUGoTVs0V^_TD^fbh~RrC~MAK=eR?AYEsyA$l|ZL#QI+wY)kA(M8JQ=|Ety z)-hab6X*Po!w5SPMtKg>Oxhu?x=zX%$k<3cO%QeH6y_i@4vx2)-M|lsKSR2nhM3px z{m7vM5TKf?7>bohISFYmZRsSk&m8681whjw(rd}UJTjST2*cS>Zb-ZP2h-_SPvBHs zM-sSh-fsbyUIz^LfUr)KA?P&IG0U~<{VAg3bmH&O;Rh-4U3c9Tcqfj|6Asict#z&o z!WE)-g$}z$w4lx@L6FZvaGs;htFx2o!MpBE{o8xf?B&I9Y_5U8E0^Xl5u1cDpp8xf z7#DH6r@Jl94bLGJ$5wyW067+h&^XNCa7{L1Z28;R(^gg>beSXKf6SLsV`>CWbr6lN zc_tZ~n_l9R`_$9~)4)el+we(%@o=u@Jxt*lf;Hf6E)X?%3(Ua=Gy_>n1S1(tBjZII zF&Y8~SQ~+~W9WG>n82YHX3}U-ffO*Os8ym*dG7;PD(i7*6QSC`3|(&+fA-xdXFk=_ zC(t7L;`|qp%CyD25HdD3M7OHJyh#(JFw3G0nWuSv0|J-|GA-LU;?~MOaVPrbn%}xp z7@<+1u94GM$l~ofM_piKJwM`AuDhx>j?Q6oEY8n5RvgI%rYtf99X>W;qAg-(>#)jH}Z%t|^bgT*Z z=1*ga2IFZm!x~^;qZt?LpAP(K8S^Q|qy_(zojV5!ojU^adIB6=hEc$=TP+2kUO=m* zuaFuWbGhixvVhrI*N*OVnH(g;m?xfrR(bCu@55vct(W^DaC4o7{{%10*v*V)jNr{; z2)RX@Z|o@Me)ZF_UsPYXNzb<3;GFpfmz71)WnKoUD@+N79&Bb6?Mo_mu z_0&@psaYmme5Sp<1IN2=)QJ5^e%NRvM%e(|U|e)Ja{Ip!INgMmNJ@ABG8W8VTmzN7 zIp*L0{`Uh;M>64#%pmGp13!^>}QYqQ7Sae--xV9aP3>Rd|HD&qS=ROzAh%hk8m#X=H@~Ka! zU;C9`O?P4PVYzP55}P&rx<_!^Pl@uqVEu* zk#g!Ijqb+Y-8#QFZq)vc4`W@ND-cmoQsK^mSX67|#|TTtg|9_QJ2gKEzRwV1@`vfj zJ%^EO6UQGLYVjwSImSontL79kmHw0P3=>fuDX7A^t8`VyBAAs5sEhf$KDTY3^E~6K z&q}l^Wi@N>^z@}zOaI^xen0Klu`RL|E73i8a9?`z$?v2mp7=YYwGRYyti)ZZ?I@Xz zWrEt;J0nMhIKD*I<|*QvHZ?Y<=YRZsv}Sw%jx;ndM5G=Zl$qcC{o8_&e)7BDO${qu zfoJ*xjKdh;dFNsL9eTo{dI$lKLLdbUCc4W6HBw}VGvwjGvJreoi^*Q0zn$ck#CR9& z(d5d^z<=?Vf06#j|L(sJ!n_QAnn10C?^T_`Av)FdNKl(FPJj+!zBLDo_Z&KycJJSt z9(>>ZF&^f=XokWqN$v4gFy0OU?PgFy!+`ib+GyR&5Z|+mtwi@+Bg7?)xO>}d8E0;; z$-LQOeGuHw98>$(g2S+;N%h#NxnDWwi?z@E7S2hT1{)=#uXJCggcX#!viX>}BW}p# z2op6n)D-1c?|oU*VL9}uYzSc5P(pCQ_ad4v>s5;&eAK2$+`7LSacdUmU_;SH9kfT0 zV7=x~z(U5?#DBJNiS^1nCi9panRIZ0a;C}iaQ@ucG)`n9qdMsiQ?oh^!EbYGz$Zf4 z@_L~pgmp^Vj9Sgz~h zBxR^IGf05frDtZSM_}$hFr9QgwBP z_~nqP;7hHJQB4!(nrEe7HpJa}(M)18n?PC|0Y#w0-^6XE356vg{) z9K{A()ai3Bs($B#g*Ya>6DTtmE^6M7#f?qV14mCKlYSv&>Bggi& z+I5j;MCOeYdM&fCNL7797Ac3V%oEk<6F_WAb4)x(jA5Qn) zb0jr$e(DUSS*$7ccNw_PGiPe({{rg{;v`^6o55+FUu$93wha!ZN8j__w2h3|Q&Xcs zfY&0?HiC|sqszd@c~sJjNnaMmUB_I9U*i`irA^?bm4L+dDp~^9lE8EE8hkSHQWsH>6!E+W_V`q01Wd?s8^|{>}Gz; zyo#gUL}aQ#TixA<&k790WL*>2I%14xk^0ZVBzB_3o1G)l7Gv0q-$_0A)#g|-NopJ) zD+FlW_!G?&R#@wVdT5ARLf#rWc^>wdpek1Yn`ojP)FQ@dTb^MXm-YbKe5 zg-6(Eg53TNHL+`5ae(i>SADp#xN$l?l%hDfw72w{M5Y8yEWRuTh6s!a$FoYPWGZ~l zN#>&M?DW19D;CGfM0Atp@-2JZ=t7cVBN!Nn_@CkRb^@llEg9xng6aYu`92sYnFazJ zvc5wIvDr7X@QW`>cho%jUJzz3kT?0bNu(SPX(7WP(bdc*s-#QCO55)+mtk&bcP^nJG2`4YroX0zX2vbUI2gyC zn=m8TDZ@Yr(_qRKKXT|`XjWPo5gj(I!?Dr!*m~w53MCrUipcaiwljpmoFxj4Wy!$D z7+2aJg}%w3V(wNyQjIUw*MHvUo3-W5t`+zEjt___+{Mr0TJhVllgTS%wxUT}NM<4U zbyhxo{!}`1;cVJ_U@xX04Uv6X(+A7Z?83u!&2e&)N?dv3gt+x(}0@(lhASJV4{>G4>nM=@E_|6vKq@z=lc^@s?y6DCKe z<|X)oR(1VLNITx($wErQXJs8fbP?qHelqe_vpPl<$~WD&$D1hI^} zJi3Q={UPb5PWQhu@3Hj7n8tuXI6C&o`l&nn{>=jqpEX%q5W}=be2~!fJLV023BL;7 zwQ7^Z>CZta{18vrYZ>=diB<8HwZK}0nT&#d8sga`&hIO+o=`qd+H8F^G{16{Y)T2-Wqpe^jX4n&E8qJ(N8rjDiU=~Vsgd1KVA{H7GBSm#|v;|HD zV+YJMZBk3qh(=^V27yl1L+C5i(FAE5+75F(cwI)R43po)7zq#iI!DM~*Tly9Zk*y_ zkb&<`@``l5uLILQGE`HxqY>d~Jr>}1ILzO!=DYp~XUF0fbtqjks)YnD^mW+Y zH!zNlXGne+vpFP@F03}r_9;MOf2zWsUsP*kICk1}^M z`?g0LU^g#KL)>(wS8j)+*u2#&Nws6^O~=8J$;InK13(83^3z+39rZ?1?lw zITmB%SVlNr#?7&isPkRNI=(q~h6;PvTNww*Gsirb0r0`YwbXn3k1+`%qtd=Gsd64k z=<%#LB9rJlr%#`Ph{rMYjzg@U+Ok7>&MigUdkN=lt^KKgTR#rRBgFEb4YRyvh(R@7 zuDzOKw1YGAWGo&T9#5l~xIGNc9KM5yO7ua-qh1{4Tn%$*KKLE@2U8T`KY@**VZ}o= zVw&X1IM`>~T!OIlUL!W{;+k2lwQp~r4NZi+mB^omh+H9h(G*OD;X7*(KwUU@K3zC^ z^#5n?&4TPat^>`ieXm08018WCB}fq5DUu>Znc65)vSmy5xTmd$4%zN#x$WqApMIN& ze(1OEiFs&`+xASiB3hPY*|K&~3&q7;L2$tiQ~{_03RM7V-`DxRllLzaU z58S%<{x|S*+<39DsJ`!w+$~ zGa@|7%^V)lYCHrg0eX70@3TV>xI14n%=M@;RW`spE9W(y8qFn+oJT%w%=@Y__F?sp zp92ngjv5EgK0%Zejb#B}_{Kcn=`7<_@%QtFD>?zfd6$M%KJ-4gKO^sVQGrFN5btyX zv~%&BG!?uEngPJlO1$%%`icF?VT=m&(xP}ls3+@_G~<|Kk5`Nf`lgR6dkW$el-K$n zG|F=ki2$ECeWouRKY2P0Ul>X?`{DD<5i`b4L5H&_eU0obsVH}zfS(A-MDYq5 zB(PZq2A;FwJW(kM&oph!f^+Gqmf!SdCr;nYb29MU%k%{RmEy2y^y zg12pA3?&Bxjb}KBCl!8q=@bf;X@-T3YnB`2-PhTIGF%5OE?}gQ@7a%Pj691ddxjhu zdZ;IoPO|qCZys5v9(d@%)Hl#ic;1e{f%1+TS~;|r!&+?_0Mc$;E|8@wJ_XM5ZyA53 zaz&x{==(b=5DwH!0`=up+>0;&KlvkRIC`ywx?HugYB4aJAPc%VcXkFxp5QWH8NI{{ z@In&~W*`?R;0b(%r;I!^0mwdngEqNmTYk5U!t=)8B<>*o5`&XTV-e(@LZs>2?1iro zBpHhg!Z^)Xy!c#BJ3&(=n7BaYe%MFjHfe{xy4cH5BE*1xN}0ATjATC6=PNE@Mw!B^ zVOi_VaLi+*;wTfYUg1Fpi^W3kiMWcsQ!Zeb0mi-Si~L5M*lwvvyi?nH*$jc`S?Q0z znl^7StkcqyxGZpx`;p5yX8Wjc;Ja2b7pQQxmKG5^8ZZ_vB|KY~cg0Kbo8u6l{Wi!zHdLxFFFK4t{BbYpqBWlrV#U~U`8)+-jefbamO<2r)PJD?4UGJUbHUGmu z{3EiB^k9|43hdA+(}2J=GdGdG_xTUb+73^b$Aulcpvp?41D`w+x{+%n6Ml)?*(0 z;&P5D_^DhyoSIN{ot-4DOx~-PNH1yx9vL@-^Abgcgy9ny#IaL^G7)No z==E=Z|KFq*^4*((Y2?yn4sHWhbi;EcoHwSm6{ZXDh*6Z>ZQFW+mKTh@Cv3!ZNDrJu z7zc0>9XHAT5YI|joL@<=y!;w-X*Jz)@Yb|*PjAKrbG#CveE|>J0+wX+i~aB?Po-lo zyp(ELBN{2+X?8c-ta9D}LT%^^2;E&+z?Xpk9HB60v69!~v1{ZsaLdS}73@55JD&pq zO(0lg~!G}WhBii!i#pps0FynE`muQEM^v5z9J zN3p&H?(jOg&Qf=-lU{K@Iw>uPdzC+g@%)VQ(K;;7uauP@b6+x#cK#RjJ1^zidOL$g z)FiAm1X<^lbOw-tiGuz5MHiwdV{mGaMiFHL;g~k{aOpX1U^Dz-P6NL(GMXl?j;6sT zQu*T9D1(=bGkMpWqO^2I#pQFF<2tU8>@YkSRP@ zO>tmfbtt%>y@Bd8Q%S0hzif9><*27|fkS?6KS(vm-E)pAsG@r{0h5}anUiupg2%ke> zlVD5r7mIY%$s<{~%|zzHQB6HElbj;bS?|JwP*@_wTrzI2|H*_(>--ps5cNcFN`jpW zLa~Sz;T5r{aX%Kq7-P21yc3bf1SyS$p0Brm!w36W>gx^nOJ9l!b^W(okBJy00-zWXBGySv}IfXWYz)8XwEt^UaU8or`+3J)?L)^SXD%XZ9G$YcB4gl{XXM$ zLE;g~g{$FVvR2LTJ6Kt?tRL6&xO!uLpT(6+|PrG2jBHi zS*(^k0!-~k?!Dg)XJ9d5q8Md8Pp$1DxONQ)zXcSE*5&{^9|Qc zUtfD8? zQ0nZTi@0;c%q0rZ)~|vT{R9?>R~eRcG+^x*c+OYxz2Hw9#}YU!-N@s}@Yq=9ojwB{H;o4KD) zlVj7I^4t{%gZ=g2d^=6EiME=wtSxQLgsEVJLiwuZV7JjLqv^`U%aNt8clWL|abYlR zqR(5+`423r$spx{XcMz+1V`cVlF&5h!(y&-5dX0$*a6a^lTY zp%r)loR7h(z-y)t*PtMTc;``QNqW3qpMA6ruXQ>OdQdIKm}n0 zi-+i+*dZn;V351XxM<9-+aKFiIEbO}2kM27aF0QnG{ZyQDl6*J-hH>m=JO#=GoPNq zTSS>TGAGF=Yl%ScgzN^CM-{Ehqhn!Yy@KJRz6IPhw5DTk9ZQ#|kEH5N?dfx$|2(ZM z;`tiI@Uf7#Y~Gs2P%Oq!WM6sZWx`3HPoMehlj)8_w+Gx7=EzD%#6!N4&1u4r)BNAU0UKRSXh1Pp+s)}lulrsC`3QMGmh!t2Fg<|sZ zNr9^9gLS*mY-A>dauUJ@Ov5q?2sd95W6k|SAdTNCY<(LSuYzI9Ol5>w5TrlBG;_Zl z|Jz;H`;~t!zTaGSeVF_Z?a_{d+&IB}w&+Vd??a{Wdp~Em$m7*wC!EBERtzm3Kd0-%uX7DQ^1Co{jL5c-H5+F9X`WD`(It@L_$$=b~+`Gnt-T?1X8Ci*HY*|NTTr-cvIEAflVy#vRr^bMbH2Yi7yJPYJ z{)V9LVw~{=ETK>DJC_34e6znc6maA@aptR-2L%kmvggBp&npy_(io&?Q_^Z}wx4bS zbiaXZTCeZEBHPE?(0;&eL%a4#SSXk~wqkx!NsJ}Rm+F-!y_x?y07DG2r81Y3K1ecv zWm4s#5Q?p;oCVW&fhJ7!Vrh|#LztqT%x@H??T6ztla%#}lc0?fuPES~1)@v~#kh*` zJ4Ejl_x=7(SJZh^fwy}$i~^Pm_+(f(teY=k6vL%l(O>6|*Tz2jT{wBq-#7jib4C6T zutP~yKwwP5UF)MBzJgwbPc>PWCKkujHLR~c`teh2Mm|JVncCP}ps=FyAivdn6}*Rb z^)NV!pxyN`K}Y-xqfoSFoAM9%xx#OZOxkBY`H!~carWJQ$hWP^@G3)-+{@C}-_OBt z4|9NBH(sV0vUXjHJq{jv+B%isQu z-%R`V>`PnPI+)X>WHucw!goFUJL=invV3R7WXll<@CbezQmakJ5y&HrxkZ}5vF$+3dD5k>pPR~@4go}62s4a z2YE&f?QQMZl0NzPq<=i8 z(8UsaH>UASFHKC7UUzr8G|`{lIPxa@hxVpldE`N8tCe*Hui42n>F9~m>DtAC@K}8I zGryYpp%2fw*u15aq!R6NoiQRhS z!H4n8Vc3G!H8>PTU>Sls2#;o*IhUzKj9#JAaCC zM_>NVulYu{tO*->mH)59uXx1gi}tKVPM?!bAp;``8V;)i#B|D<+gKKzXtu`Lv_=*7hoUa73TWus|>|~OWd>HH@|LfZ5`f4AAwW!xdiVF=fDz=<`Kj_>MwBMyLk4B1)XwQ8L23~ z3nv#Vi`bt`XTmg>&NPxgD_m$TvkxkF5vR_*nD5Y}v}1er+p8E~eBqD36)*1`J10JkCfi?IAeYSFO|fY zGdz=Fmpu`FrsGkiaIh($o8Elu^>pIoan2;@h;X+XcrxYWETPQ!fc*;mXh7mSulPqf z+bpJ?_iQ8cVR>=!(i@yZVEj#GNMnP24mzhw1tRN}2eh=dBv13bil^bs*)yR?>>#D7 z;TPiD@VqI)o6PyI!fzr3Wr4bJ%@$~PEREEJQWRc zwKesmS?)wx;?(R(Hf5vtTpk)`&XVP?rU8!wX-3KZLx2zc#G47Cma*tB6Hc{^M_`5b zpb797IAa}TB810DZ-sM5yejzXfe@``Ka(m#VF;x`#li22q0j>NBF5i)rLwDQDzti= z_2^5N@JqtIDt!SnWm>%s-gh5@@QpgHqjWik@|EB7I+A%n%rE*^Z8kODefi`PN}ZeM zm+9LQ{i0{|ui*X83;GL98d9n8#|_OYe<}~McX^I$PiI#*8NIIJ%^XY@2EnEKun@>i zb-jQlrUz(>d(*59(yH^WrMZbPUA>%Tv7c+63`U+00u@42OXeq7!=#}>yjV-nrL$1u zV0h#KpC_ryJ(XQN_;8jzGZ?PafjNx^-1$uOIzK6^C zjPp@UI7gk!RJQ&vK1-}#ysz`DeCK`h_w7x|@0;QM(+$MAo9QhtL^2i$qgWt<`7jYB zln_jqB$5+LNlc)ENW;p?qTzQfjapos#DxH8d4CH*o%&3ZMm5~a3!TiY5O8FYG9>A= zAmAu_)37CS7pf3!=(pv)R|pK@zAM#X|D9m5&{4*|#62d7f?Nn&E`t8XGx6?cUd1G_ z{(A!#3S7tTWj)bH+AiRh@52}Af4*lw6#`}0T6~@OzI;YYnfo{L_o$RV zSpdoJfd^NEqC-U?-mPnymocw_Uw_LTiav@9VG;d^zUIMrzpz|cwTr#&Snm3Z7Wp1A z@ZerR*>7QPwj71lS{8x)9YLKkZtSw|EX2wXSr8;fo|R4_1O*zhUb`8}DP=5Cgrf-y zX(ZEMrrQ`j@G69F+jzGt6wg>7GQ6`AoSCqF2?2~wNSj2<#Mo4Dyb1-te%nuJ$+73( z;w={Os3%|#>{taY7D<^{Nh-yZ!ZCO_Q-h9QFZ@L+Cn0jr~`CBaBHx=Xek}$ohK1iht)=tPkQOaL+yF$G!L6m-gSXpVXIiaj=^-=QA3kJWt2aPVr?rO|vI;5%;Zk zYGQOe^`GufjkS&G!ykGu{cr#F-^Iq|6?YROVOQ07K;3L?yuV7Q%HZGy;>|ZRb~6dN z4tT~0hqz&}Z9}n8Fc#Hycq`}`#*d@v>tFwi2%GxC7rv0b{q66@X8tZtvX;_>-4&7* zsPt$lcN4Gs6BJfwfjz^Z{)se5AG;A;%O}XD101DUGLs?%dUzhGKc_f6ZDuL$Id})B z4!1-Y-=?Km;`LuwluRG_@PjB?SLvsFGT1b`$aw|Qka)o=9wAJD1LvDOoiBcXE<(Ac zx0cPni8FquW(vi-{EPxo#%G+Tjz6zS{w7c6c?d$fcD{KExcg+BPYTj8&j__rU*Lb< z+-&vU;5loQMsoVN|c@4?W zdl;qTvFQ0YCY|3u~%RbnwjC?Js-Jc zPdEIM3`-scM<41~&*n-YSf*Ruf%4Y{P7mN!J$~#Y3IZA*xOn-cSJO3cy1jRA+5*4r zVo%p1X@Vd9$fIoFJ_;znAs(P5=(4GvtV*0Sv9{u2h}lafOeqq)(8C&4kn7p|Bi%cH z^qd>|sTbEZFn9@Y%Y04z=*4LZLe$WyA2R%q@firH2r1#nNcRBoq0ZOdJ^?n?DF}8PlR{(PoOK`Cul!(C33Xw8D ze^X0ef-s$^Apps!AW((0 zcX6MDy&F1 z_NN5Rz_ZLV7Bb3aTDPCPxG!vcMwodJTIAlwsw7>@D}`aSS)za8ubQQVo5Ey?#mmpZgLse4f>`K)7_dUY;)GetR3hxma)PL* zVGFl8;;QYN`0~nQaLnSFQPba;B^DO&T-DIU&Ye5s^_#!>TTv$FjP7Uwz$Kk|4>FH? z#r>Ek(59EC73*;^HXh`M)nA-sBZ2eKY))DMQP7aV{0_GH2h9PqWh{K=e0LsWe~V`+M(i?Kc~&{h zE7E?F<}uO{LPu`4q${z90-RZs)^P?!rS#{mym2D~ua@61*(ePCbNLKfGLu?n2P6L4Y3Tw@MX!aP5iGP<3P@19>8llbNM6c?%d|-YGa1@CpwAf{u7uf<_9# zj{?yjQ&tLk@w5iKgTGt4^x1hR^-2eh|4zB2%vv!#^2{_cSk(pGdQwWJ} zMBduFB|Z1rbLqbQ_oupMHotPZwrCAQPM|lRXkA~!-l&-ovV`@e|MJKGH9hv&T3m{41 z-}$2FM8RCXR7N@1)-t^f(1x>6?}B@jG)Q;=9aafWY33bVmNR$F?8NaR;Eh_ueF&_X z&e!Ole3Kp^oKsJ{(?^Sg=PEP-4UA-yjmwjoZQp$-&dJ$I6kO)33Y#fT#hI^i4h%Gv zt@}BGAG(%{OX>`R6XU9MgEE9^a$ZDjc*p+b=YJDV!Wi{)py~J!uz+`>NVICL zk~xbB!j?QRv4%td-P^XOM)>==zW#Lf^y##7M{lY|fmy2tAB<5s$*wc07z2G}x(XA+ z`24Kg;3jLhT)J@nRNB2~TbdnRNw2>7TKecCkAh#4!jQDWb4KE#3uTJOj1?I6!rcVf;gXDC{~V{6@Af+GaQ`2A)KOM$Z(u79{EjNM-$oVD8cJuZF@#y}Y_Lq=><7-|8rz8Ht?(4T07XG8F(Wy^aR zav;9665D06vp1*&Y|=f;LNc^Q|1~X*+pL&|e8w_EY+CT)u=&gv#){igM7MeFV-5`cWTk zMp?>)phQ0$V`2TZPTSEM?RZQRDa;IyvJc+#-LXa18tIyUIi((J9``L{J+`0emlAx= zt74|hnu+MQ6Qx{bs!o#$&(|Jrh zAT2vq$0NTGhFaXMD-^?AyQP5fe3Hf>6548Ai~ITPbbaH^?&}S|D1Mg-Ijj;OTU{w ziAA{*31^B>C{KT`046FY3c>Q9>8YuxTbiEaTohyB{j9;F3X7}OYUg=ung$aJsHaaK zPcOavV!DmZ+iu{NW(=J=bjKk)3S?$eLB%@k`3b-KdtXX-+9C(2DXR^>)gb2jUh1;3ZrfGdx5Q|(=M-;>(eJ28jA z+q-86r%w~}PTyu{vzJ2;$sFN1u8S2a5mGPzp=90^{GnfQ>I*zDsKAF@QS>kX36+wT zb&kzMI$GW8r3Qd4u?`z=N~O^Qs7j7lqJj-|!O2H}YHn zAJPr17pf-=v10G2HX?yc>BWqBH9Q7e5@tX*bBY9_J6 z)O5~JY5%8I>Ig>~PLs@``Et%3p)VQ{hDg7A>%rU7y${@%PWGKm=lc88=~E{#sIm8^ zr9OS~9(;w&)8+*s$|K*JGB5pfA?${H=;c^alO7LOWb3>Ews3Xp4<^pm|&)L44d zDujL1&HMW2>$T@L-s6A8#s}BCKtMv1E}$jnVK8<*IQNL?3*Fwmw&y2#3 za@kgJnE1w@Qs-<}Vb1y^R-GSQT%8PF!QfmOy(nvWU-@~;`1zmVvKiYA0ay6(QYi7e zW1eRdo|ltUI4Urh_R<{p(cQ4BT<_@BQl>3tT!s!~F9TLGZ3P_}sW4DcQ|K`i zK*3aaTJI+D!iNxg6kP3_KX6&E!n1->@m*X=1Mv)XP)i7AbQ3&BOPdb~&L3@5SC81aDz6?)> zs*IhLUq=<*Ebfo8A7f4{EmzPART%msyzOTYD-XDUIv>0;Ub0|o9&h{YSbg3xnYOf+ zgFN-)=vxX?RIF>rR zG`g)l5KdUw*Glet1+{0Aj|F&=cvekGZ5V$0?j*PSDm;NYzQ_Cg5ib1G z`Yaq&9tzJYk7pX9S_Mo<*BgP#@c4>W=7R8bU2&|^FN{9gc3#aBk|CX6V_tcHoVe@Y z6ltq6@BI?{dFrvmZ-VyEo;j2D@7|LhxaaVV@PT5-aYV+e88fEmKIkkFecy)sm2n$T1k3Vyb8Uf>-;HRgF4u$ zdnKBh>Iq*VWQ_V+*vLJIC*#ENBz^>py61^&ydgQohe$3wEV z#yrF`B%cxIzM7!1JJ|Qo0l%HcBh|!4c$EnG>G1Fs&IP%UZa=s`*5W3@s#fR6(zQuE zA!PnCye;-50Pk5g+IMwzq+t~5MdnBi9uGsQg1^vb6?5le4wcmKB)$cz5HDTabp4Pn za(Rp@jM@2USfp9dgvFMQ?)WS}vb=aL4-ZwY$9iuLVTybHY(IQ2;m42fwd(@~;_rzu ziBID4-Nh2>3j$C$RH$*$)EcDVFQIv&VGWCjVJ2QK{0fmy7$>Vjo&rfD6L5?}o)kKz zVFe8dEDL@z2&_Sr)$(eAmgeSEi)%eET=WSBV}C*jg$0Gc1`{Y2pO_f5Z+(STLm||` zsKtA5me1NR-<=>{G1(Z0SJV+R%Lx`AGU3Os|MULjzGuP0{&@KwV_}Rk7KIF9(*)CT z1FWGgT2Z_gOoH;(qhRe=#h1+81zF+Ow3e;JREk3_dNR`(p)hqJ1x5#v8hA{=(@+Li9)aJI16 zOGd7;8!x`jBk;sVRFn_BH;&Ix9_QXIx7-p!wR=#6pO#gHs=zPLLK=}}#JwwFnPoBa zePCc9kCD&9Wre={qL(le-r`(qzupq9)P^t#=kQ9F=IhOEs01jad)W`+>@ylBtW)do z^Q27lkgRUf!1ng`hSI9guA*n!PoFn`JR(rgsBm@QDotJrK4w}Oxq2m?KX)$XnyGT7 zx%SSEsLxDN3fFM~GnI++0~fG9lg<;oIe&zuJkyQ(XZ!oGM4k@8cHh2zoN2I`0pI~7 zyO1F+3i6&ia_Qm#;RXFDY$hC7=1hcbY5$)6qzvsyP0$LmTL|(B+-@?R8AB;Wurwq` z9A3F{F%4We51nkKPqV<{=LpY>X&d!a6C0)Sut4S^H+wSBEHD5Ieu;6rZ$tx*!n5>Q zy;7Cx>8Et&rr_`-fIn$FJYBRYKE369lb0_eK=Cc;j@$9>AGwiq@0wy+KWoXB4?B;| ze&oEDPUU6PfUr-#dtftxV$nrbr8W-FdUo()`t)NTW6#4wsbf=Hnqd=iE!Nvcj8KMt zpbKK%#WTanz*8LBrn0WFV1+XhOb_fnELIwL062v9Cn>Xv;@rl`&??K7712sqv{ac5M~q=oF!4bDWUfp0>eXc5L0u;c#=2ezq1( zp}E;Z6J6gzM2|2yS93%{{%Lqap+w0O+WC?X88XNnm&yor;}`f?lmS>-;Z-Sz7l4n< z>ovY)-hdvP0YWav7t8V2 zjnQ-uMTq*H)7;G-Nfi(Y%Q~|Bppu~%L%NbLVWNpz49}6Cq)&OOeO{&iTJ|F|7zPUW z!_<*l*Yh1-d*gWOJ2#a!clM_aHba}jRhY^b4A&dutdXk9{pj5&o;0>J$D9D4Gw|g# zya07wZP3ja9*p+bxIZv>A>DJ=hk{2$Um441$h>sv+(~GVL*p3k4CgLfW_}-g>rFfp zr^wFr<+L3yQ)PKwYN{zuXD(dk#o0uJm@Pn$HDnj7gHGIAb9smiQSd3F5n9{Y(%`@# zzcr+ec9d-3k#Pgz$Gpt&Tt|o>1iEj)MDM<^GFiY9iZxn4YwSWO&lPpxoPQRNxFx}l zBH)w(xPq$LF5Yyqo|EdJ4Ga3U{IKyTWWtVCqmX^@=gda(FJj2mATw zCH0tmv@e5`ll$(0Fhf`tgqi)epE6Jxufk~?jKbHRJ$pj2D#op#bnNKSESxhSh36I) zR!?x%{cYW`xKo#7);cqe;&2XO=;FnT0Y8YZDkCrDaxx{?hH?t`T zYcJut8No+bgzxA;;5>g4j-fy> zENUDF)75fysN01=`G2$6r65UVZh|$YdqHT`Zlm3SI{e97y~2 z?oA(l_~G=Sd+&q6Qw8MATfF-E&ZZyy=!faqXP=F6xG(~_@PvH%%U@29e)OXySY`tP zQ>^r)%D#OsOa1-*>G|iMOQ-wDI>Vwj%tpIeVzk{_hYTT{q}VCJ$Hwq=w1bJ z6e0}c*Lpug=*cAx7yQ}JewJQ)?J!Ey;5v?-FXHI0zV*%Y&_fTUd+)s$3*#M8mx_sp zo&D*b{b}m!KbyxwpQY2g@3|-FSw&98j|A!u+jn#DQ*ok!X*ijC+ zA}2i_2=|MKO_cXpl(K&cpL&^X&Sz}y`qbJgjzi+*k1vNi4CE&rZsj~@2BJCmkCu9cdJqU)RUY7fw7=YlfqBM+CJUt}C0h<-pmEa9#oE405x zdlZC5bN?(>QOVjQ?7^R~wO*^z!(=*L>y7Y4c-l19{dqQN96WS@b2%;}FB}Ok-2#ex z8*|kVCR6^dp|H(O&A{U?q^?%>^5Ic&-6}({uLOQ|cm#1LphWIZ%k?dIBQV@`Zj1FU z3=7Ny=O)--o$5%tckc`V{neLVB=ggS*zdAu@2%;lPd}fYc>M9y*j$g7O79`cGYU#I zp2nHEQ5652eQ9@ZFEYUHP;`e-YTMg8kawnI{Qw*p{@_UEfYAqh4MpOH5YI3N4z3-` z0Mt-J_a(Uxv57FcJMKD^E^$VR`{z1Ph!#k78)0q1gM>f06;q6TqX!~*w)J!Q+k5?z z@;|uV0Rk?7F3=)AhylVVHr3=sISXN0^9|96g&Crf!Rp%dITr|pL(7NI1KlW8`kM=~ zWd{fI!s~afdNLoau9i_aRH$^LvI3?qcn<*@Tpma(TVSp%6!xi%b`;cHa4n~xX4`(Z zZLPwW(8{k}y~f0vj77nI`Md3S`B?!j`i&LXyN+9>B#LlDVOas(vc)8@zuA(OLo9q= zm$*WCj+J&Y!o>JqT+ybLI+1vHI>k8oY`?7A_U(`3xQZ}g7}8bxf06vt!pdi@NAHgo zI5QbV$Pt2;N|qsE#yVHmiV)#K$bwSIcW56K6pq_OS$8 z>(dJ%AcTi_b{vfjoG{Gumh*WJbn;zqiFmh9Zs2yGjQtp+4%<~gzwNez)S=b46qXen zRTS8(+)n-!XbE&#M+gzXbK@mmx=>8co;@3Vw~hi<*KwGwVfNcaMIl(_HQE9P3J=nb zUNgt2k|18ku8l^&_0TD3`P($l?cBaI_lai}K!%|U1^*Lo9!t+X`#ehArGTeE6VF+} zx`v=T$oyM@;kR;n?zW%}1|4;cTpfutoiD%g68M!iw1g7x%J0APJHHcU3Y;n^7?13w zMM{r{-V41R-~Yk)(glRME2CGSoeAi+Di+3!+j!)LKf=oYapkVu@O$yaZU#<)lXQZ+?f8ckAFPq z-OwY;s62Se@BkhJ$NluvKT9vM*o$N7&pBsExHQmrt`9*?4+eY%q2$iH?j*FPp1l8) zp+p=xayW!Yd5X&aEW+g^bUch;r~<9x?OZhr&_!@)J)jYV<#m+BGtART(n+$J7j~dx zZrF$XX#2LE>FDuOA+RrCHN5}cdzcG&9#9}K|8UUMc)D=zRJu5DhE2mGoLlfl%=<-z z*EvEcCWdFyuDxzZ?!l6Z#SvPoWn6P+D?+$X*>>}~f}q||`z1^i{Hhmgu+TEUG&6%2 z1q$gfj5Ps!!iM0ldfG&PHC~Py1a#K|`!1aQEIj2m!rY8HWe9%qCQo)Y)JbJTFND8& zUpz|%t`DBXt57pTnA3fC-NONKgcj*RP};ieP5=Nv07*naRDNYGF`cVMt`O*%gESKR zLo|vlI7Vu^#vE*Bk3^6R9hEQSJrML6kA-J5EG$f<0Ya7ZR5`E2*YNO2@FdI3q3mtz z*&ev{ECuJRSDf0-eh9PQD3psgLq)HQ52t}sXH)-M$5J`tRC#Nzai18puM$Al7K}-U z9z1mM(us3vxoSSuPBq6y)Sh80Xo{rGGiqIb!cwFOx zzrnki-?8$m98dxcH| z*pGp<%~-3(otwCDM+wr-slYdD6s$S<2v0(1nVpo?_Fu&a(-AshSW} zHed^775Zh83ix@2_a;KqYS?Q5Xv4TiH@FYa;hA&r*7JiLUbtsB>qHYY!x=v8bJ8=a za$kwEBaKR_ZFt(oIeonv*lh0JLRPTW;4{LWNk$Q95!#R*UEkzaj@927eZV+m5XNE| z4KJ~#6JEEYcYAu~Cr_sy)^-g@t}Ffq_Mjo?4Y&b9r_}ltbC?^scm9@tw2hmu;)kJDe+*CZQqXsDhp-3nNJvXeR40$ZzgZrf=$29VGJmkbpw{yywD)$b ze3Fhrm`pdql3;YcyVxiUOJiDSq8$pm33YzHJmN|vGKE%!t8LqQBKD4e&k%qlW*3w? zT+gCD+35Z=e~<#Rw$SZ^dTmWT=}M}5C~(C zj)Ms+hmF*BrO6YM$vUVvPp9h>%X+I|*7i{W`N)wYq4?NOg;1He@U?F)5Wd{B+221A z3dV=AdTQMkwpz*!=W%a}--WxMUC^}}suT%h@7r&M83pcX7T+QaO@TqUjd8-J8x;*D zvVGwq99-yC%&cFlofdOLEqZ!-))feaD+L4bZ+~sj@!7VQ^{)$rfYjf7*^Zax9Q%yc z8ep!qQ2|c)_^dC-YJUuM@Hws5hHqR#>9T)@rf6Z-QYtL9`m8CDa%qv_FYmF2#JhhS zqw(kp%(B2jsA+`GwK_T$@5RNKRAi$q;Y5E8T~W~xHulMJn3r38i36>};?cH)77=a~ zo`jFeQYfSJ!8s*7DOSSweEQ38{$={c*T0c2o*xXHG;`{1(4|5rC*oSail^4>qsNZL zz`pdQ-;J<07gE{2g1&unPE6vGq zNk791KZ6BZ8rPj}=iQTIe5@%PBU4g_&_DQZo@03qig(vJ*37@x<+E8}a_D)pr1+9| zjE_zbQ%;O9I4TxMm2SgVp2eGTrtfTe@#UA;pn7-UPX)k#VoD46kAL!$^w;0|>zJEC zdnkXiJS!Z7BY-Dq%n&I(b8o%%X8Pa%{l5`k`pQ@SJBp;1euOZ_CVpzLaLyxaxsW&ESzJc2A4HKnbG8qm<6Qa_3Q${n zQ`*zJ1Dtx;;bc1c<_qbCpZ^%I=2bin3+d>Qm(yJ+8Dm$62*)72b8Ixd^lW*0WYZ^7 z9rSsozdzk}`|XkK$&--7V~Maf3O_JkJz?DuLMLq8tnGNDMd`}DR8v@Oh1~*zy@n>k zDdhcg%*{H^F=%c^F$|1CY0fw1YVZr-tXHKO8WpaFGwB_bhZsI&=-6$y-3AlKdjOxW zX1?$2-NpU}a@LbNQvvtMC!PS;qj88FqGGfnd`{MK9I+?NLQ?ijXo86|iW1!CW= zw=jmR#AWZp62G_O#V{ndF`YkmI#P1pvVUi~<-je#V}iBjB=yy#hd%sp`hULi)%5GX zzBxinof9g25q7E9g)59+v@M@=j=k`=f1959!H?6-@YS@tqct63Lv$M_5Z91(%uGgb zE9irespTo^X=d%~O4INjPtbmd%ubQjhK8v(3?D8A~mI} zvFp-cB^h*74y)mZdT>`mAZ3l``=*+J>hC0&UqExHoEkk>TH?F{28xWpbJK9n!R`~k17KG%6G(%P_ zPxf9z!e7ukhN3FXC;+SE_+GS8=2(D_f-Egk7W_sCmawI$QnH&Mpp`WQZ?lvsx71c5 z^g{=Fw<2VR@s>f`D$5lW7*i1X@453(YJyImd-^$)xV6-Xkl##pq#;g@mQH2gW$?_Y z>G?E{B0YsCDHJx~?1ueLUMkHs2=Z%nEsVwWN&~COKJYqCa+);B3YJhPb&{xzA3TJm z|KcUQjmPmYaN2eKrqp--G9IR$w3!gY&hDLQY!0eH=~+anoP!5+wr_?8$Jz6T?muM@uN zTf&h)F~?m;Zob~;*3CuUGv7Z@AbtTEp;bPoIpT8)93NCP3*i{@977T^59y6bKytEFp3~>7GaGPf|LvECX7*6yP+_? z48?I{wE~IEL8hoz$MJQOr9qhKp>S(&F;)duaU*OLf=yj#{XT0MUkab%&ih)X?Y~|F z`xW@&lYRAmJW~>)RX)5gJY6g;>-e>Z``LEwoBKAr6q3B}Gr^4*x`MX!V)%wMVkn9N zh?fGPLbb|+%At6*J{h@}ZPlQBjg=Hkl?oM}8H9}!(95pgT`c}}(1?;KwTc6)4wPht z$S=auJ{is+jp}uYaqyh&3D-iwlBS}bQv1R{m=v&a9FEhCpZ3M(q(N!A&6sHCfiPw) z*5mzv2L**qC?4eZS1EQeP-!~Xe=hy)^Dhv_!oCxPbS>S|g5D?lu9bb7T=BxkQ-zIF z|LR|Sl`xq5)4u)tBhS3ggisFPLy?8<{1=uf=AZPCVL_ZYV>Wi*{wXAU{p(*(-~R5m z3E4OsZ8=_rY+)lv6{efX9WMO-F_&-<1_h0jX3pQMN@++Ocx5=2#z!TNQTo~0vx9|u zISpPMgzy+AbIQ%(8aJ55Px;k#PF)Po4_p>GYYrPazvX$|AhZJtuC+ zG(_(LVGSZ%kHc$6UQ1v5`qvOBe?2U;NO{1V&CtwUVdf!X&bj86=1_#4A9^9YH@A#O zggP2(o3M(rCk7!#;mJKR-J7~nM<)guP&I`0TN+T%Hha<(-h`*0eVW0~r~mjL{tswi zF&#g81VQMjG>GtP{I)`@V;VY7y2lg8IR9aS%tR=aYY5^f15LoA30j9pqnv_>!dCPb z!A}KUPk?g)w!(L;ul&A1TN)EoAPgH->D2nKVyaLn&yqH4H?!{s7&-r(2hNdipcwDp zw-3wj_P~b(r6SDa52Mh)Al6u5tJQhi)*h_GY#Md`W9ikf@G|q_E(EYofAUk2ktmVr zQV)b4lHhgp!SzA~+E5LJ(rNlBJvh%@I|c_YrpG?@N%kj@Ov1X6kml#{v^z-pKh6PQ z-~H|n(i5M4jF8&)7|W$g7l6O?O6D!{{C9HlbSE34ZNqtED4eHO%fp=0=KI$ZQ_(=Y zJ$ym$RyBN6PNs#ohw!J>nejBoCf?BzHj6Jo&nh&~j;9zKLfOGd*}Z!Rl|tdrB(jJC z(NcjSMPeqrgnho$4KHr!0QSt$(m&V8GDDc4l~9Wrmwe1Ms#4_xi(C!fGSdKG?Y|m) z<{AdTdEmq#5Xh;YG5Df8qK0)EdSKq`#dBO54qPug39C~kFj7J9M2(&XaBVmg`<6rb zaE&pGR3qnW-1VXRQV$AmEvIm!sig8aG>vrLY*bG5h;HD*e%b};YMOTCdD6XW?iyi4 zAREO6ex$O-yZuweSXxC9p&U_6+><6%oG4;>=tq9x!FvtPN%qQ^zPqKVp2OV^rmM&< zb13jjY*L?}A$bN5Du0jwDU`=m1pgL7jNBzOYo8crBXEEJinZ_Hub=Fh}Hmq&N0t3QHk*Izh|EQdAj4!o#~A?-b{m+M$(}Rx1~*;ZSe6! zc&*0ZU-DhoxcRiD3nL+llP6qPl;N#otSSl8wXl+JgeONj=D%~_f35?z%dO1o>>)SI zIA{U~aSnyBC$5%t-Oc<DehpESq76pR-{{GAmD67CH z^H=!X)wL_yGwj8e}mbA|OQ<_!<=+f;m3 z33FV+v;jrP#aBFgFwuD|ObV$gCn|dL^kLured&u|{9?4}o|Nx>?|adv@RF{t5U%v< ztFMHxXS}Vn63Q9l3MqiLr8`5b>?2>}Ng<^2DDEz>>Gs)YpG)8Q&UXk|x)6%IimVpl zJ^S{geYfmSdwKtp|N18ZJHu15oyxj?u`9aq3p^@53Z+LO-B<-T$!ewFx_N8b)4M1A zFPwj&*TnI-AIrT)^(>HpE3Dl=|M}DDU;K;T4sU_DP(Xj`CqE9w$=GFSK^*VdyC?QK z+;{(d#GNm&f%b6vZ~yJTNBEKSFgabuez7;wr=NH{`s8wqJd*`TX#n9?&)t2u-QM}i@ypb*>fK% z5MJi7;Es;3phWzPY(-b_RQ2HnzLciNuBLI)N~#o^9cclN?-*fI=Buwm8FfQ`Ef#N> zM4C`RW!%@Gxi%0lPFELrIY$sU z>d1x^H~|jUMO86RRhm>dR=A;JrAt=DVt+&QpL$)rTCm(}b@$LPEwApm1F0b>stjEQE()i5B04(S)9jEL zt0>DehS0i^zYKv&Ps9?jGmDFca8AeEymaX@W$|ucxt*MxCF9aQj5lm=56Xib`APgsFt5NE;H;%TW%tr zr>#YBwZiy70k|It*y=4%3DKaZC!z+pm~luigds5or8N;Y(-`|7Xa+h}k(r+yAyjUH zy#ffdtiSVwD^;^LmLagK1gz4pH9i>Dv^cev&Mds1&cBK$rxwMB)4f|ax2Ni6JgSQ3 zcz;Y!T#aX<7Oy}fxLCnPX(*dsBE9Vm;1u6tSk1$;M88$m#rZP$Ass?mW*?CJxstv* ze-*M<7oC%=-SP_XJ;jFmWt0hdn99-Zx9*P<%$*BYMo7W}%y=R$9!GJhU>;%+piiF1 zF$Y~uFc)ykrTus^Dy)aLoGXUvwK6t0vrkTqrk?UGctpwM6!H(*zF1G2o5`%zw26>L zcv3@4YA4H=ynbqW2?eVy&7+L61)nv#4m@hG0=9%xwYGM$UY!N6tSfZPEN-^zJ|yR& z@`a(1g%K@O1LinGj`29JUC-o|ASTweCiqP?bnQB#A=bH~ELY#z6gZT){Y{x6=-Ik# zlUK103aIt(e74+s_4+`8_(d=WF*r$AAaZCinC7hq4nVw2B)%KA5QK*SBB5smLIo8! zCuO{6Sdk$e3Z`B%Raa64G_443Zqf>9naBbIu}+Vv?WeFpX;rWdC$5W&8%@nb)S*HG zGt$DNm!rS0KNcp-O2A$U0IgVV4&2Jo>@1oJp-uw(=PNE50snl$iR8e1vyOa^2?A4b zBKVApp_ji}#x{IKeLfIX@W+olQ~Yk-eviw#OZ9up@oPy_5mL}JEKFrY&x{klw|5u9 z_1<_!E1#P#6V$B~1?wMx6@k3UVr) zhSDk23onJZ0!KwX3eomQ*eE1AMxT$fM7SSeVG1o=evUp<*1jkN3PXjWfE)Mqwn?J` zGvEr18;X^^HTj-xI!9dagolEW{Zn~yopru0BUJ6$wJUw%s zg#xi^hy<`N|LITD(}ZKyVZqgs>N7`=A4B*jJccx<1{FV+hS}2@4cdgs`^5m0GrjI=G2uj$#pa;Di zle6RSfq@Wgn`-ggA|yBm4-hu<>%Z~2v>$%9Kq$ny^Zn@@ykHi=e~oZUg{B!omKJBn z*t5}>E)DeK1s+6D!}^P$v;+@WfW|cX%)$%ImES_hQZ=;aA!Gw*&ctcY3SQODXYSXd zuqs5(GM*}EqJE8&j@Jm?xW@C)jaiFaBOIH?4TU9*HqNnCc6utT`q}*i&KF@UztL+U zPaYh&7}iuhbzb5{Sm~J%M*V$#ku6NmovD!ZqUd3rXCtd;K1^cd_{=9i&DwDQFI!hA zM_2GB=z&x~^<@Z^^99jJJ3Fu=BUeco?1LZK-@Wk7$Sw#!(s-l&+C2O6gbD;Hg}c^G z?dc+WAgZf+;@%h`Ow|a9tHgB8(U(q66_(zdOEXxlRoJxtif{J_gx8yXcpxBLk5sSl zM2rA0{pcs0Ezp*R&yihA9su8WZJdW6&*QlnH^#nfIBnj(H8m*^if6q%hS&nzve^~* z?sQ~vQn?trGK>e~3Zavx{$&m@7RRv6XJNm9mqlS%_!^$1aY-d&0bV1&SwRNI0UAaO z6$d6hV}{R@e%1}zwJ0j$(O3gFV^__G}wA1WVr2nunLaQ(~@|z(( z^@KPr6V|ifdNP4!d+HL-6T)oS*z9KT<}NZHVc8#FKv9F=)U!9G7J;^jcjuX23Fp0d zY9?`m3UI6?CBEQV%WO!CmCg&+UHgG@qtXL805Et3S)wY)7DX|}XI;$8Io2-bu7^&V zy7!LTZ%bzhQCou#PNKwWWHG%jLk;C%1qs~E#ntfZg?ad`Yba$FFj&;19IW6yTB0wJ z+<`gRz@CXkc#(4gGKn?R=m0~VokuGuS}Mxhcl4rEPqVJ&a5%@Xh_W*W9R*#2QTM2X z;Sv1!tTe9kMFSeY20q-YW1rnmW40#wx9j8@eOZ@BfJFe4n!Vh6=(<$F8s`26Q{uJ( zW6QXnR&J&)J_|Ij~Xe<_xJksfdcVv7?c*^K9Yihj2g3P!DRYc ze*CVGbtPtG;dg_b*&qnK#) zOL)jo6~OJkf}X#tU|FxisNZeZ%Sr4asqpCixjEvP2L{tsEDxSOZ2o^25bO8z_MUCQ z*lnX0OH5Nka|o?koBSQtK&d z)!iIQg`ER0ZZxxhli*s#!|YcI3vT*VD9VDbSxIU_D0Yl3C;%>=;>iV6AF{s{vW z0Ov-bM5s*Zc@SRK?SWp>?Id*TslK|@g{KS82=J7qAQbQ+{LTB`986oGY-)NmENfbv zBhFa3u$X8?{_K;##(3Q1PuLm)&YgGOLrT!|q~hdv780e4S6@AnKJ>tc5l9K2YA0h0 z^<$5HD*dZ}^{-Pe zR@94^E>f3P+dOX=37=i0snA6zv^ED9=%Z|W4A@gJ(}zS-`a#-@MTf3hrw32@o1DWw z+efR`_LZsG`c&q1?Q5O$fWJBLoaeRa6nF31L$;*{Xv?KwCEb4L4g}t-?CE$mcvqa9 z&iqy=93dCGVHxi0dF}9PF|TH(IVcXErqx}geEW7zmA&IG+GlYmrg=-xmf)W=2pd7y z(Aw0@B-vAPq5=D247&2PR%`KHU(=8t{qRT9ZToMf?<%C#>3(oHg@y9eu@kWY+n8y? zhfFW|tH1grG3BK7Wvqr>{MKhbmwx*F9};J6T=gh(7+M48rjnNU~_hXOxU(CyL!d#2#Iby%8b`Qn=EUbZ z1h`7*YHnhlc=ee`A6o;RcXw?GLy=y`6=1*2^EFtGD~MOonm*5IzIr|lQFSlEHQ?^P z4#V?aAp_B`{K`j}&zsl(ew$$wW<6+2%$bjV{9`CaoY#QT6UixHql<)yEYBK`)pYC#A)fHcMGZKtL*;l%$`I0> zD9%^+2M{0}bQX#O{8pNi9l&P5M>Ts-z!^MiZh4aZ4(!<>q$kpJN^i5QZ4~xghUzBf z5GOCYwz$E43f|=5ZIjel1rw`>PuEaZ156`4&ds)gH~B5Fm1nKu?WkkU8^+VcK8YGn z>8{0VisyE$4-W`@()oRbl)`o&(!xW;iFE;YI2|B6;&w41d z_8ZRWtGq~CjDPS^=nl{z$9DP_61uBKKQOletTY&Ea z2UPKZ{hB9#11rP7edGP& z_g|*>4-|-Z!A4jtB`^@Kh01dpM5^IO3Rh~;l1V5BXy=!-`Xg*zyf}z3ljBD%W_J%OQb3tIxo|Y+JK4)Dj z4l+@d2FrL)Yl4?yGdV^)k3-?qHm%q3*p`!LBk=~o`*5k>#W)J_okbbz@X~{z0IIOAE7JQa7h2i1ycJe%+fg{ynr%o7 zGdgghE7Y(V+cVt39OTB`D{Nbju4}_F#L)_ioE9V75GIz%Zu{$upn$hlLamB!@Kxv( z)|OW+G(4)DMJmS5f~to>um!^cq1GmgE37Oo9FAQ@YmLPsKBJ69d@c_PM=#x_!a`b; z{>)_L7_87fi#y$_QJ(h1sr}XJuhOW}QNY;Wq$@)MTvY6pG?i6l+GI?YmH8TqrqOrqY>IP9-*5njT{HdGk3ayka{kz2POIz0^mEyia(nU*?Y z&x@N#RZzSP%ko*R?Bf5>?T4^{u@LaIIKT6*yV8$-{1h(mkzAGqM6aFk-G+EIV9m21 zUUV}rTnIDSlEs3nKoP$ZmtNAN0`De-srI%`XrMm6duD}7x1Jr70@!YN3K?2=M+fH{)TS%Lvn=}aY3HtO zsk^g2v%+N)T+Z3l5JXvc%iu3jAr7#Q=dwYnRF%p3yhG8Wc41fqey z{+|RO2T>y02`k+f{7El@n}27q}n#A&A2xm(we+yaasUbDNs+&^#e<0+y0)JE27L zcq6AUZZx2PefHB&q;@ji$T<{#y+1fG5QqBd$&>c<%w)w`#oA;N;&U|n1i5ql18MaUes9=Be<#v*&fw?*2DKR3DzVI){mOHZ z)>aTkp)=`4r57^D>kWGh7V*qXLR)S1BpBJ+oPO{3em_0^-S0}UkwQ~mB#q7DW#KV! zSI)i*5;Gw5T?1E>gxVau^$`1KHl;~MJ~DkF4PO|0i3^#Bt}xs_*W(Qov^1%kw$efT6u!a(< z(g2Ta1aF2`Eo)E&w<;;_e{hp?q?Dy?*Tb?pqY1q`+8u*!6!^qJ_2osyC<&}DM zs-P+N4QW{q4>Ds44z zDW_XdI8=0NH`Rqf^3Honpnzv}9tBuWZq+;?Z?K1EveZ?xFJng+{12QAUBqj$Je#i7 zT}J3{PkRsSh-_iglf%d(?EB#SmB-khu)^VRE3_xP?6V5OEGby!=andb@^OWB*AwYZ zCDp?`AAIORc+Yg&wQDyaqyy>uKm2j}+~+?RO4|j(8x8BW-_9}REBC0G!ArT}-1&24 z0^W|meMYNo2)ZzK7k(GKLfFw;u;xZDIDwN+f>lUxfxpJ0 zqmXMI1x+hBD@e)=?UT>jmM@R*P3N{jj!nx%FmM|~{ zHv6cec76OjY#qJ|7{|M{W;{5KfQ5LaZ5gSTZAaY*-Tp3)gW&>mFJa}SLStWbxdyCC z%-9%V&;L-6vtRZplrID&)42*u=}RW*rO+99_358=8*(CS?1O!=Zz`O&B@Ct00>}QQ z0OWJRRk+xu&-;u@@bp05sA(C0SD6tv;?Hu?R}^w#Ta4X0R1)pG3yC;#(RG}{RF9V4 zmn~RM71PD1^%;iI-rf=ERc*_7;&=njtqu!{l3UxlYU|M(j8;8_1>T+t6I z&#}H)v37jINTpL4DX9BT*y|ybel6p7;UbQOx9=*l$BrEjMLl~Hl|~TU5qO;wUbd-% z>n3+km9{>|CtXTsrvDTihLEVlYjsz6bzv8-F5D{C;#D7=%7vZ?er8jqp&BZ6&T-0X zA*TEi0+nqedcJEJ{p?A}XDg)O5^94Mn&f)DlwufRD z2V%iT#Ib9TI5lL)x$Ay2_wzU(^=M83%Lp^%H^V~2U-0DW=Ga7SYR+X8x~VDmfFZh< zo6!t>ffHX_wse9t5hr~q_~)b`&dS5tJwJbPWK%an@74$7ReVr0-OR zz!&FNIE}azKwC-GY33bc_-7{Z(&C|*!>c%h(lBxPYHBCLSOfKPcI!6eyvR6fl* zSB~;iiSn@s{==9BaYbkk_3MqTWaF~oX{&U40-C9+V}^k5l}ZpspD}$vOAwqel-Dfl znS!69*wn#OHN4D61|#SdYyS$gz6vS1S3+U80{m2h1FHZy)REWkYLo-{uX_mGx7Jdo zvL)=Yp~REz<*W5ec*~aEdqjVkCDdp|p=7I&8ZNjH-WZfWpQVi@La}N&gF)WoImQ*jWKd-teU1a0)=0-dd z%(GV5wcfQBJ~XgzqXrL%%2G2t!A;T2cumA-J?D2+VYFGp%|RDfJ6hPIHX6#e9$Q!c z@JQKX-6>poKCW^S^{rtL^MJ=Hj0q}L%kD*jc0I=g(56+wmJFfNtJmGt9sASXdh1wv zh;vZN-~%*3A>4PiZCA}kAra-EqtUh7mS5C>lQy8=|EANwb46v7-|cn-jy z;}Z@WFKI7u#7)aPzQ8fGA??^7pHW~CzFKV!w~&5RLWR4Y53v*Qrd`WL>@@T!O}fF* z-&6*Kx&2dtu-<4}1`HD|=v7*?to`*}rhfk1c^0HRcKhZ0DMIb6Pk4q<2o9{v`hD4+ z^{J%0=tmk>=7JVMg&q(2vmdcQvUu4ay)xq6Pz`ac$3-}}iBmdoEbDy_>dA9HD4%+z zAIEJ*A~&`kKXE*Sm-deK*hf-Jh>5s27T*nk%OzY{XK~pN{>S3PUkM;!Tr4zTJ^q)P zFCP0Rd6#y)6cqCw4-FS6NYIA@t?(D`aDxa>a)A^k1s&;0F&xo**5z1D&Y+MV@$2+m zCBV6(Rb84Ehwfi`?eG!i5W*zFf>uuZ(1CEP;%!}F$)zvCM9ZE6lYJ5x(xEU^!1uFZ zKc*PXo;-L5f|el()@hg!5@HAq^Wdl+L8l2Jf6tz6SnbUTUrz#x(+D)yMJNK{4W2B$ zfY7fnsZrw^3dH>EY8qW5ln9>a9*sGKbf2j~Kvj{bF0Wxj^;LvNJPKqFs@L+5&_6mk zguq#sdhXeohRWG2i!eJscRsn9yc$8u{U)9v;kg0A-8rWb#!PY^EGD1PGoa$E@yCNA z$EWZ-^Q;1oLd}8OZpD+*AwdEYaRlFE&TfMDj*g5Hnl+L3ZQGUZL(yo%^54RJ)6=Rv z%)qbYF~Uk*X-smyiDUVUICWj~`!&+qdSGS;ZRwHf1J^1#hRn$CorBWI40F)%+@{7& z;FD8^33t&G(SXp-iWc6AQL<+3>fHuSh&y;ZZB%={3M3f^Z&8wJ1K*WovMB@4r%tkm z1took4egV_I(f|e+#DHfNyQ@th>kOB7E*Y|l!oyRU zp92%Kgh^NBcp1d&GM=$T#y&YPn)(l)Ox>LB-M}f}+jee`ta5t6TGj|bWuMDD?ugFq zU8$=P-pqk=nCwzFg1y<8)__kl9uavlJXvpvDuTd z;R=3&!XYiX22`>x>P?VG?BBneZgO4>8?W~f;<$)s>nh=pY9h*Bdita>$6_|Gb`)xp zE*N&K;a9$=dq$q__>J07@o-($dtpdA$cXh&Mc6YoG+>kiN0kZjVED12VdWy1d*Q*S zUh!z1P!E93-yMU`1h3=s`|bKbfp`~;IyqM%A_>4nO<~5kO)XzqUllaZoIMk%Qf02X z;GO&~wi16!OAe0+!InCFMqyQkoe3*jA^qJ&S0*bnDXhp^J<~W=1s6-o_?*JJj6mXa zLRe3@{Ys0z0;c_v(fjhUoEDo9q)I}h_lh7;Hi`z(B{x9Gnf4k|9SO~YIYp$h)?$#E4h6kfhuFjWrhySTTU^%i6D-IwDolsR!C z?yavFs{*IbdD$OfLucrVbfm=*JX4SN@*Qz>J-oxZ>_haURIl~;DijOr_p|TPi;IHo z*dJf^Q}~K=ze@|&>noH5-n}n_j($_OeS)F_*7+bhH!o&uthDcPUyRc>3!E!(6|ji~ zEzp_6=?Yr4?>?iTX&u(3;^G*DUjaM&WVWLShhd%>E9@BR2{FlVgzKJs7yFpNTGla-C?WfsOY|FI31A_zMMJVc}NNF5dY6~v`{S--8uUzGff+Gl5 zt?`U-X~IeC_ zolEi`aixV-Ayim+*>~^DOT?Ma6mu`)^h^9g1Be2ZidhK3#6tV5Fbw*jE@9(=l}F!t zE4-~5TD+%FzMT_^b^klh#C_gOoi{QX9un5P62CD{UYr;zqY$LPs08T-`C8(eYq2&) z2nXeB7>i+1qa#DHH}|d+IAvYkeoN`=nGg5ds-%j5UWXG54}% zypoijU3io9R=U4n1|!G{o3$5cPXTcPOSsn4DV1;1ratiKN7I2_y`+7mEy9nw3EOF9 zPsx4v+?)E@$nBgF{)SF=BFyU5TU^TNTNT3HxV(hWB^{eaRl03xs!wewr&ZvmiFouD z;?fTuye-mvdZ?u__MPyldA!?Z(HiF@@uz<9{q(ude2!DM?+Ne21pK)g0Zk!FxG3~G z_r#m{j`Li=wH_qBXwErtA&v}Hy8|V}Ip=5bs$jLobCwa;@?U~;!fUfpXDy+o_p@uFZktJWZX^A9`T0nGt*1y z+s{9rp8NVY(nZ#d`{{ECjEqq$u7b{glNi)M4;sIF? zM_MB8K^bL@IvW-cu&^K>`%o>A!H&%x-h1oa)QN?-jkLbilxs|kd-dqWk?AyREkV;-Ch0z~am{lBR{5$q zvNBx@oRyv+s)a>F0rA26?@!-*?N#2DcfcwD50-@pEn8S40FGJp{75gHlN~5AR3Kes z9*>L+yA*Q|AaYMySpz;u+r#?6HN`*QqoKe^1s`jp0;G?{%oU>Ecb$~Bb0a<$$+-LO zPuTH^0Pzt6>csXaXTJxd17az)zy0<*2oLWBvm(J2Nx}rrdt3Vk(i2ZSk^b~g|1@^g z^l-VhC&Qw~SjNozF1(hd7S(q|dWpP?zKpuT(=y7I z=}{2ZGCSDV$loClu(){kusxPxn~E0O=e_UqUiZF&hRl(Re4cC>9+u%kKhw z`rH0lwmzQ1&pQ3sX5pyDTj4=1sKSwb_pluM3 zWZ;)c=;>|1 z7zBxD9XlB`1rj&fl3lh87bi8Vj+y;dK=ml_G3d77E^h=gb>!%gV7^oiIPRfMMpLIX z;?SW(F$STXqCD|YAx3k&gqG%DmC5dW;=gTBQ{{r=Ld6qSPyPPQbjNxEfwi=b@EBIOTa~?1G8}7SizEc z>xNUSWGrJK+7JRJuP>6l4wnk{l`v+;tSN16xB7{|UTN00ty@EgYH5L~0|DI8c?RoQs!c>sB*9<61%PyyqT* zZxQr?voLV}!~4QG5`4=?eA0q*6(Mm3M)}u&{VP~lGOk1I(75B$MC`~o0qg6lq@$%R z?mZzRsLPBDY&F_^fEZ<}2|hb^IsM@u{$U#E>W;MNH2}&v*2=sE)HyZ-#Z7&^ae!nY zVou9|nv;KP-PT|x-+1$K8rXh?@8C|80u<{2o6xC!uVr`YscTcLs|dV|wOO{bpsa(- z;#)IVU>e@Gh4!d8LJ$DP&Qs$sYTz&xE@QJu`nds~ zN>97BMi}f3;A*sBVG%Psm1$uYN!ePBJJhXoN80GV0?ujYZusX@NeymuYSE1$QSj0= zZJjw_V7_q_&X=I0SUkdAP{E9F84q_pe5G0r|seU3WYnV8^hozix zS9qvrZdtd2iRji!uBWcQj5c*+VPhQRe*(tf zU@#D;8lyzq5D^VZ(q_uSzq>mo1 z)8)Ir3;p){$MN_?fcOzc%>`E()0hW?OXC2KWu!z*CEk7e_NNxKV`}SyAb^ZcESVXR z$fFPmku@*kpq-1LC|F^xe9m%Z99ZuC886;sZ1N@l`c7daCA_-CNXY!|*?Z+Z+3V00 zTO9rIBVyaug4AB~yVor{uG8o+w?n)mpp8i-gXko)Y!?!n?uZNJylCiq=O+{1e^8WP+Hyybhj9`|_8x(Xa^pYX6A z+a2>S$9YnTi!-*@K8Y`uU6HL5K;5A)t+R%&^iM)rU)aD34U%DjcU z30IeKN1|Db1HqZAXzXFumlkKx+_I0t#5hbAdneQo6pGKXT4LL&E87~(hr&)Xnr8j8 zVLxCZdNPfM2B|%*Ch9hyjoE!`{G&54r{<3bhTx~Log;-Isc z-pdfXPU#Z3LK}@2i%f24@uy%2jeAhQZ#CYFL(7ucqt-}Mdi=z(^!THXhPx`P6oMVv zU-F%<;Hr3^&YDI;FR#eY0Ym8I1j6d{D)=Z(J0Xn&i z#l_77o13&?C=A;g%0Pf?Los&$u90-&?AO?zV>wMNp(NtkB=B5Y!5U9_lfb!kb4wc7 z)}1!@klheBoOSSXbw1BQ8ApSd*APIBXVE9#OjTMy*J{|+d+IWC+A(w;W)yjC19*$S z^fIBi&kQO(odYk8X;?*A(3J_5Ac_(C3R9_u+|O!(gGd3fs3qvxEJB$cL3i*OGhy`fH#bDB;tH7v@ivVHzGD4(9R< zn`*f*7tN;c`@GL=8{8IswVaz}8j~;|!FpVbXT!uu8$5j1c1IieuExQ4EhE}PJFUy> z=KgIX znwfo1jk(_~TNqlG3$^eLA<6bru4VBj#>MaUMXKbO+YtLL>2)mPS*|L?6nKQj_?B_v zc03KO&$y81Ph7GTDcZ=@jNd(96*B)ZM3Y=D#hh2KMV=`t`}?|rvLJtcixo_J$NWR{HaGm(3F9aY1GP;vjOG# zop~v0i1BlbWUg7JxTN2|yBo)tILv~HeH`@XSc9>usS>xfY-$}Mb^#`<`jwZv-F%ta99Eb$7u`gC-Vgu(ubTQHIEW}zi*BO{K=f@=EN$uoJAHQhXT zmi960gXXT2b#ESR_&Q8+Je<{C?jFW=oIOSMFkC+l?AezFdpm-8VpgL-QE13>I@~bmgfS29 z6J%;y>7JjUPs~~8oEgoWha#rJL}=KlS8KC$S{e{@m3FB07w%ee=gAJ_I5#1LO`)l# z6QtvWuYy@#C(w9Z3quGIx|YFk!NIzAE)(3VHeGj<4b-^H&{h5ZHwAOQ1p$fnUcZud z4-TYiVnON|TXOJb?R(&b@gJ^NvhB=4u2t7Fe!ZL0ww*A%1k10~uCs4K7b!>)be6Rk zV0qzrGih~@va|~UqNTls`oU}b_%qFgNd>>mz*XM{-9&h>ufeDi!!nIvC7y(Z4qUP? zP*#ahyyyH58cmt&JRd?f!b27qXluAH$t$={sAy0bBY!IngKIonLmY!lv~*BrU&LQs zR};_r6*$f%>5A|2jKbwA&)4%=VXSMweODNllt^XH+^B0Ob_eT%?JzBBgFDW#Q}a|K zv1c{2sbv9+6m4FfM-c`Ncd#q^JmXbQTb6M5L$M!1tJ&(-5u|Iu+1eG-4I@y?z|UdX z+o&fdhAdj-I}KctXQ|@FI>x0j`qaXA_E6CUjV@ffIv(>$Mq44sx#bS=220m5_o|3z z%G1?#OLt24!9Zx$?ODZ}uvd5##<~vb&7gJQ;w*c8T)CFoh}CETr@}=H+AqGj-fM|& zhUUzmq++x~@n>MTf`YIH8)9vU`2c*yi=chdKkz@+498I+2BAs;M9YpeK6p1uWq>Hh zvHQWJth=7e+81^G;G-XlE1w7uKf*A%s0HDLD4Xd(rY4vKh=6VuW+Mqx7!%foRiqP1 zg8AX>_ZvtF;(gFjkjk_F3iBc2S(n!fGR8BNa{aEWhD?`!nj3$%GG&AV5G=)ykXkNd`^g>cV3=ZjyHU?Y9Sm855CuWj?h) z_|BQJu^u|Ix_z){Nb?6bb(ecLWWDnSVt z@UDV@u#$O|>6Q6+(f7JB6EeJ7AfjFt5t&F2P45a2UiYvb`{*JqJahSyrVPV?WBw7( z=R1|Jo+@<5e)*BX@*T_9!eM!qZ~MINxXIM{v2Mq}!+ZWK-#z=R@0YgvjMg&G9^VH` z>egKDxQR#njCbvmeG?|$6ILG9?KK$_EeN*5@~qQmeAeF{p4D*L7T@#mIbrW}o^7Mg z*;hZ7>k$hE+N#hX@vJaWP;x#+e|g9Ev`z?2&-TxSU5%L5GlOE?2+DG8gP+p2fQ0XJ zO_vMHuMA0C6Gy@VMs2py#b0f%aEbC*JW8J|!}4yz*Tp5br(EMgT#E-;#DDA#;TQm* zZPA&6$63I19E>k9MqvVa=)89P?4K?L2H%S>Pe1*1dgPIZ)BgSYgRyb`NRNb-Rv-hJ zgOQ@H7>@u1_|2F#z^MCtwiZDnGS#rJFz)=GxpbaX-nePtzPPLXU}&=yux+bCs{%t6!i&t6jJj|V2KG<) zEq=xZapIQlm!>Ff;+;;Iqc$wsOSlHU@y=`MZ=e0!^p*ecl{7$_*^M>hB4nziJsA(f zjh5fKS}4FxPEDlS1_#4>YJJW#VXIQ)Dr44;MbH$jGPPPDCJ55SoS3dNet5D39JIFG zIv>{>(KsWpIR1`Jh%L;AT9PAdV1ZtPVP|3z2Y}GWSKTG47$1GDmM~o~mI`WX2DHn2 z63eh}|IT#$t#{CR&!qtZcNZvs;Trq&pzAROshh5?t{@yDn5-jwfHqjWDNijpt>p9e{~!MWCz2l7w0(;wTUYnA75eFUq5%uyB(&-q+P|g)&h!AVd(`r+5IY zWa#U_Gr9!c=!WVw`V3fBc}FW7C*IF=1XQAb;3Z8)(4eECJWfI zd4Twk-Za`#mAXc^M6v-Spb#FW$zHXJCE?{4UrG}wc;=WB?agf@3;@UG5Xyjia|`QX zKbe#ermwtf7DhHx!xAx1jD;>l3&ajpH6q9(7&jnL=(3e}97jN)>;}ek+rUcAWZY^4zTsBI9CgjLKb9qpX{0>YmJo6k06-kANUUlhK$uC*Bmk`l3R)?s zI2e1^rmJLFQ_-VE&3Px@8-t{any#hBj;LhNt;@h@sg5x%&KKeCA7h7>5g@b-)sbn+ z{UVH&@}5FXj1!M;ScdO>z~Nd`KHt9%e89s$=9fMZAbz9)GL|8y(G-CVta5ddX*ZYn z0KTs-q7r`zwG4+$tITLHA70~mKXJc8cx;LYRX!q_-$h_2O<}5TyO%bL(^g3W&4DmX9XeSTh!hQ&$v#FzGGl* zWDEj!3Qo4w=XBALL9)((9}Owigm4w2T+5DwlWp`}&xP{%uKf{?KI=y~T3*2gHQ;XS zFmJ9(9KP>31TOI1#ozZF=PL78SL!Qe-)N3?MG5+8V?nTfe*3Ov3LneVSK2xi zpmf>LN836)e9n8eRe_?6zXGOs<>qZ(6IS-wdR#2L=6BoX$NSD5$JDVGcic(TbhQQ; zYO+=vSr~npP(R`O%Ja@Q8AKNa8U2_?lw0P8@fZQ~Xm$Qm>bBEao13o-H+}VG&MaTX zNjHOl3w7Fe+h60t1?E|fhvf^u{M&K#YQA@4u)Xww*W$)M@+V5I+$-h%BafELw?203 z_j12-jwbS5fz5?6e|Vw1LnnksHK{AL)CdEGY46)l1;kCH_jI$m-}S%c!8y16qm7rbfEt25vI)v40I+6_&<7^g=_1w+|De(Ui`Qol9T;+F!z%uBQRg$Nv8B z{$2<@EAD4OC)9}gUf>$=blz#Pk@;NY8C|{rZQ!T$C$9^}eB@p1eb@O~vzi5K_tsdW zoCf-7T!wC6GN8J51`VVPg{&=GdZ>f);h18|rg<`jaN&U;oowiM@!WYf=)9Wx zuqqgEyoScvKvgp;H6Z1=yY%Ot_-s0`dnbY6m(q5E?cagMxUR^kufxpR2ZNR+le(U{ zOR)l(!hqR$rpVYdc5w^=W)Pu--KrU9mO z!m3q|<{az?#{Pz>mio6buLCOnV@avtEnc)pOuJd_Ms96H3FGOnbMO`i(LE7tlaEyed z@g{m0fUv+yw>!oSTyjG}4_%<7R*V#5oas`GsfE4o$ZNpOi|_w^^UlZP+fS_k@j(OU zBKH0xm}n5rdm?!-A!vIRVX6!~(gzo;iHUCDkbypC5~<;NnGYE_{qkj^EJGqtm@M0n zYxFOlSTkiLomgJ;I};Gv62V@)>pSrtWr^f6EajT-i~MR?%QI?jWwu>VbUSeYlt9Rk zg>RwN@-gF%i=pk6$##*68AN$m(8)}{S|D4^-H_Uq++CbZcW2)`?570R!?tLh$ixrV zBo-t!SrkhfvOptK=7bC4Ov&NW5ClaS@*vl|r$)wi1(XZB1U&-R=zxULw4nx7s+n=Y z@j1F0E?4IB)^{=9rOlgJ$b)#(R{NkCQ*FWpc6yb`6kZOA@RP|D)`gjsc^1Atr)gio zLk3pZxdwGy{)l zqwo3gnK)CHc;I21W%T1+;Or5BVeyUeVca3_@h>*useBjQ?&_>&)3btF5eS5hOup^& zur4*0mSz2=ZW$}<^*M=mFai)`-#6W=<=JL&*zaY-Kk>CNDW27g8VIWUkg0p?AlxPJ zZwXfcph!8HVN%;FSDY;1pB zn6gWOIKhMdshl#cxp6Ju$+sy(CJqqug+9pr@~*!#4j54En8-XhOL@ive5eJV^lzqP z(WW8SDlEN@9VhKkh^Gg7=_CKfm1RJ zXyeUBwP(*>EOs4ajUliSCeWR!d%F4p_XE>xmKtOl9s(hFB93^^EKA}86Waeb<_EW6 zXc=Pw>D;Kn$GeI-UeB}5Xu50Jy{oZ-Y&pwgY3$^y;ab9s1#e9)>4uT$o?&R#2>dml zf33OvNe;S5kn6@8Y*H0|+SR%$K|8T%Tqp2%WlgVs`o&Jkx>1=!-rdsc41|TSG=rD( z#9Or0;|hZitG0SUTv)^v3BgLM%EUA&UP&$5-PgyabX(F!8#sYGj)DW;+@x1^Q%(9# zUz+i`*HuNBw-e0Uj;42ky%nyXzm~>MjHT*@nzU*uDPe%zL@x_~pfnk}Fx*id1F0MSDE z*)JYTH+U$L7|c8E9vd*R#$fEk^3a9VsHzTnEFA9Wpv^JPtTTM(w9-%?wFZnf+9`ugE3_KbA}F-5L0}!}Ve4v| zQ{&Zna2yxzi`Ua+{pp1NL8LgI1wO_KErKsq%+DHNw!mDNgEj^afwF7&&XL&3xudx= zU1J?3{y5EpgNxEmENqg^shQ<8er-0rcKAK^VcE`D_F=7N^v?CHim4(4A)pZy#s1Jj1rU>_`15>TL?mKV z$)C_}#5*#&HqsliCo(R%zEZDDpp0b*5R@&P{CMBC_>R9be6qPv!dO*>R$sy!?Xvs~ zXR{&*v%+X*ZDfYI@D%n6b=5FZzHh*eR5kDTeYfjUj|==c}+wrTv*>2YYvGhApx zrS0N87!h++S44$A=d<{twb8a%RtUX38^Ry$v5qdZ&AL80zr~+`5exYDANHYqzW+}C zRq5*o-MVp&_k{`nGerDS-Ye%D565%2{Q4okT8`Lw^AIvJoC?XOPoH6|#3u!a<*?Kl z>)m5#GQgqqT@%F%J>lXFa= zLLu0_Gs2aM!EjznBbbzd|I%X_CCAkm1#y3hK29U(4DQ$pEyU7DaQY<_Ej{G#?z)d`>jb-QAOtlr*K{j`$EJ@6>RJ>S7dLO+SOR{y)U+@^w`}dfV$3eV z;8bYhA(6`j*^A572$a>pB;sg*c?7>Y@4*L|e65_$Z`XvI>sy76D-?$A$7jGu+NaA` zv7lvoS7wZBs2}i^c6&AOS)`2vx)B#F$dyqIV!yBi#=-ZJ1yP8Mxe>+7QUPH?!+E zo5$_g)0|G78c!<-&Z+4&k_j}Xc@#Oi%NfI?uu8X?*Mb%1n)$IrGJ{3NE@&|AvJNv7 zD%{u?@l3oE=4CU*vuDqxC%^a<%8G8%K_8A?-_J9b8p)<5Z*cAkmID+~ri8Xa=aH^v z)!=#e=1%GtCsAS%^JHeq-roM8H(^a+JWO}5E0nuj2VScvqiv2urr##rP*LVusKUW9 z111~_A&!mh=3-bRG4z0&nbte*WzF*JC*wyx$Cy{HMS&mFKR>ksgoF9R9I>c@Q04G< zXa=0vAdicYAImGuPb>-$${@mA&q$d|(Dd!IYWzKCB2r5K;m!piZ$(PKdsuf%YfDTH ze@nDQdZu)=SBA!VB}!TxWWpqz1}90teP86~PY@H!kO?z>2@0=#e8YQGH{^jZ7l+1QDr$BxEz`=ncg zaIsw9lW6sjM?Tu@BFuHV8RzJ0g_zhrcW?Dy5ISI}DYW2}{kObu)e6Fz-I@ID0%O~C z;}H%XmgnOj9iKO@B-)GrtoRVZoOs6JxXrJ_Od)h=IkQf2 zHfAk;5iuOcvY;|h`8K^LrPPFSqm#@{y9T$Xdu}^Gv)6FdyOzH9%B!hwfE1xHFHO{|@FBcA(6%Zjz3>k& zrCKz&_uq40`t+ekQZKG0pSu508ri-heA6M$2pDK#nOgx17+~j=w1JKVe1)-$j~SM{ zW(wD}HG^5D%UNM!HZmJOykLPdHg(hQqJFl_of!JaaO=@%CF-d%ID1w5FZAcCqHvCsQH6@#bOT9rlOt zvH)Fnvom)V9$>tX|AnQ0lg1g_Ks zp7RWFG1y%Tq(?Po3@sR>dLGYT<| z(q3sqC?vRUe2+023Nsd|kH2Na9EXN0#PW2snLk0Rtk3aw4L4v~_u`_!lo<|>0-vQ# z3RMbV)lK<%Ez;`>Ioxy4E7~FP~UDt=+elMLF zf0;NJ+<&J@=ZfW`xmou==00%WV9w1Wd@f>Ys3Pmt6|#X%k!7qaZ43IiER3WFoN1m= zi@kZ?dFS1*oIm^Qv+2PH?+<*GCM)dfVs`G_*>w8s$@CK0!RiU3zHR>jaEuI5SjVog z56tyz6)lSG|zU0N1UP`<7>`b3|^bxFimvD2VY}yg?oAtys z!8w&%1r4Ktx-JP%=SR4;fs6B`E7lXCqlIJ!&7|^|HgSkkj;(#8lkwfMy&n4$Ri255 zKc;_fuJRw#4*aOi7E#`RII!IUiK#``b`{f7G+q>oXnXJU(^mR4}HcZNY3qQFOnaOlvG72k z)Dn6~xI}u1nq_+ANg)9WnilmaeP_liPn04U*aqK|pn1p?Tfaw{Kwe`S#kJDz_`x6F zw_J&)aFj6>er17_;dV!04=3>kY1Dj2;Y^=j;cA&`51KbMg+;)22Z5zc)@nNp95fq) z3}6IK@sPySlyHut%#BR0@5$U+zs#%!IM!YlMz*KmgzxC`B(W>7^IkcuJNic)6Z1G>+Iu#3>I@FnByyjM^J_4xn?Kl!cv)l0y~f4t1K zwKR6-6ihPiX{_~gGuN39_(!8EUSb0{1FVgka4yZ_<81mxGu7z2QOCwsZbD|}q6vJ$ zSH@1JYow>F<=zfYGNui;ZmfA@yNUHMPTzVLR1wSL%X*_zzD{5 z28MNktTY`x1L;1})#AayW?SsSOZ$$pEBENGku*q5#f~pMh5Li?3kWv^@lLSe*rrY0 z>G*pm()gt->5c<;q%S=BMC={#ChuK1b1n`2JVC)|+)YPIiv8Sw7+kf<;*_pK&Jl4g z;>!Yt_-aExxAyf1eh725{>G>{(^a@gLrrsQA57z_KruTvL%Y%FR}+7M)>kI(+=a7P zQ`lYmnJ=fuKKp2zz!mAMU;Q8H#czEpo#(r5Bdu)i)`T#00Qz8#{Oec8!G$~0Wf(NN zn)dG7M>ehp(zjoHF)Vftbok*z*Vf3CbpGVo^wKwgZ!&0}L1oYrY**C-i@a495n(CQlWyER)ZI>5_j1eXo8rzk-U~d zPiczARO7pd;BoHXKc!0P%Ppts) z!$SM!AUo)eJH!QMK*mxAtT23D7xDakl|V6>bTcuyxR#GXhv~$$I*3rdBZ2wJA3YIFkd0bgXFf?_UW48MD+PmmXjd2(+L29kx0dK z;0*N(;>OvsLvsj-WJoQe2w1+K@B2=c!YyAH7?}m{`8z(AEpe>$!)J6~QOhr*>@!X{ z8Aww`>Q`^C4bIX;Y2JD7siE=EI?@TF+2vws9a2T^Dd;F9$%Lx0mdUhSwMbCBU|{^M z1;k)q+hjYnWLUn$LncRtSprkqZ=c;Q)df3*u{5PfQ|METLlNl^U~!@K?o&q#y?!c#BZRQ0)+yIeXuVw z@VaO@4))>3*i)Xc)oKvd2l^p1?_rxHvbM!%+~6(XK>en1weQXg8FWewxcN?u)h%_1 zCtGn-ux<8HqO9Mjhkdk7L8R%YxT+vy`*d~j-A?M#&t5@DBoG%@aXuEu-N5W;9(^=W z$+BNSppd|u#?t<{OX=Rd`_j(QonihKwqmwr#6Os^Fsnx#jbo1$g0|~cq3?Fd;AOwn zx;vKEW4#IxqOki-C|s2>7Jt^kyJ&1Y;Zq*Bp3C=q=cE4G);MVQKh06fDd$qEzso1b z1?}FwhxyYP_@!HdL5&K4M~`Bi`@81Yx1$5?dIRwSjwRsD_#ksbQ2}wr(=qj?j84Qi zP>%vR2wACI+|0C+Nf59$codT;{?hDIf;RKq*lD!JFfYrKXocA^n)x$+5ltsdxtjK7 z+?HC*@x(Xb}^6V7uVC|rEw+;OcMJ9)G*(gu#6ZFurb?B z@F^BVQp;{&{g}rZ(g=R_ZR$xcz5FV!7hBSUcRz%$_#QOg2sSV}>y+1z|F)TBI+$C_ z)D4EFDFo=yR##vu{+j0=r$gGTo5)S;gL5)sb{Hd*3OEL8WW~{IYEPNZCI`?3Mc;mR z!8U`|b?~|#0Sk^gGUsgD)(1Qr(qI1hpQqK?NnD2N(!cnnXVCgWqoCK0@+b`8IAtC= z28~9zp2c0zRIgemUit2K$i8<5c*%&Gt`;Q$YmXUr>grn3+vnd%SAg9taS!#x*<8JF zK6RL~m6F$RQK^PWGd1oCfyL6ZsVPzgZ|Z=~cQK~8Um=97Y#_J?9XI~41?@N1r-fs#tQkdEkUE~EwqALqGLR(U<(Gv zwT#($os9S+3bZ`>;pXCffDhlLxoelmj|13OzMEkH*&_0z}dF`NH?{g@OOUqo} zycAO?=8EmLR1bTK=Me(ELF+5b1GV8u2yq5Hj6bcRksHh%UH9r4pJg&9Dm>JaiuJ^~ zv2=zYXV1;dj|Q0j=33%=m`{US;fv}JQo)znT9kK9>?Oj+b=Rgyk`eUOxvZs2i!Dkc z8Xr6WZPHTaI?)4dzwNf$(l7neFQ(TKo~5nC?ng>y_kl2rlfnGW>~?MJ;yTu*Mcft_ z7~>_Z0lL%86EEXBCyY$BD$Tw|l8$aRne)2Blbb1O5u-)?qu*R}{c;T*$CcSQ)^4n4 ztq9U0gKMYbC;t~Nbo`b-QP@28_Az2RT2e1=UU5{$I`D^gJeMP`aX*jI&Fkg<$Lai2 zD?r>jpdU71E^v8~({i9>F1nEkLTMSIEYiue$n;sJ6TpqLWWJV3t>#(xAek(n zT6CsQX;Xo*46ww{!)p>mnP7b)&#a$`a;(#P)}fU}!eB6-T5o5hI}0n^Sbry4eVGXb z1>3FmK_XS)A%kk4ZC^2MTE1mVpfv;gvAyN6PrmOpg@@<^5Re==rZV=?U)osuLXiQh z=vM`fxgRb??3I9a#D2(hHo)+E&vCFk@7Xu&QMf3=gU>|YSqQDWz%rg=(Ke$Im$UEy z9uz^xehC`|2>sM0hD#7&pY>zgbsw^P>$5!jDq$7JJbMTOaZC94U0hRmvfT39vI?w> zXAsZAjS42ma)p1u5m-fFn`6#(53g%>w!Mz08f=Mv;5g-K)zb}0CiV*H`NUHfNdpew zedpZ}pl#EM6DQKyvuC5N(GS`x19;~hcc#Gs(ixH|D1sqbR&}F^<(2U=_|nDH^oRnc z4y{@1t2U_nlu`_jXnUh(2=k2%CTW`G;`Q_bc>3iRME#PT?#AWdy0xtQj zP$H|4j|%WBzutf1wHt?cA+Cmd7L1;4Q-G0S6n2hV9G-!bB}c`#oP}q+m#5kd-0*oB zA~n1LOWwq?VC)z;cDry%xkw4S1!^Fop{7&0dUf9~OC{mGgoLhl&QWymRP@NAKX^bZY4kj6lG(PYvlenp1 zJw%bd0Pf6U&5K>e*Nqu!0q+QsCN5$QJfs7$+wdAeq+l0y>PljJs?s#R_R`1}m}D}a zM#@&f+|tY@Rp8SCjEl^kt|xJV+X^mX;8;eio${l%4OjSOekuTlHt7K8wIT%IG-(N(m!Rh;j-;{Z%!U)s85GlKbS2-F7KJN7hyIFU}2 zI|vtysj(3X{1?w(h&9UG{jPtyQFV9Y##Psr&YU;{{D?~<*ma$`*8puNnhplt1SMw4 z!py{&R-?IIWc|`|Y@j?C5$;A+1W{9cOs&YO#E)<=CO<`6blfF-C0KFy~Ac7Jbg z!8H}((@bU-S&iFYU(aSBI+>=ZM-6&9C zp179#y!6>IC?Cu8zV&#m)R!y!@&D^8_Q~-f5O7eP2ul7gaQ;@CAR-LFfVgm$1ytrz zrbR8B%-1}bDD?3bS=HEzK;92#3qqQMe{z{Np&*rIid24F0IW;I0(XP46v1W4i|dTf z%d7@+(l&*M-7MgzNnq9Q{Jc+PlAdz*;Y%A=@WUD2R;CNWG z;~;-+NymC^^>ZWbOFL@hxw%J!=WXZFZ8C;+y?@M`)OcKnHQ z%|;~bWrnptsA(1!GB(Fc~ zj)*H-9%Rn70EmmBA+}k7z_Ba%Cf*8b%e1e)uYlwj_>5yD6XM}n?Y=^U_b;Q7l)*2A z)_R>2x+GbLFbfLBJcKU!eq8tOY> z++R(<{oB7C&q>&i9XlTN3J--;g`Pv~g1U2LC%VE+w4=`~W+7+^2;gqNV}XxF-hlQx zVAq?Tdh+S?SAX?aSo6*U7hEfVtpWVH!~M?h{x0c4J7R(S&Ud~O?bmPC`C84{dR*|; z%x5OrS?%ZMVVQI>+V9nPLfBA-FpotFd~-20_9H)>twh2vzu~CMOe$Q+Jjj5^thiWa zw@d4YK5{?c4$d{Aaa0=|Oek=2%>B(kg6p)Ixgi{+XHP%F$H~(C4c3$itsWqrlrSh?Yqc=%;vK8c7*o=ch0UZK*gy+wFX8*k|?_ zwWSEVVJU>6HBhn{pLUtq#hFVmFT@|Qah%$4g+be`V4};9)W;n2Q)ES|gZ4ti=|fKd zT^LDcZI5WCRdNlNqgeuP-Jq+M3{B1-Gucdm=bZ>o3J+(`jYWz`wX?#+AnR*aCJ-#I zF_)>Lb{t%2#quzlHnVZpj*&sE39V^qiueOuIriUiH=0?}AzvCJ_ zhG5;bB^VE2aSDdI87ArOyY2;VO-y0>Y7!XmG5xDSy$uLECJYcR&X>$oyQ?*O^q`O! z$AT&E+icoR@J1IU=ZkJ<&Rf&8ZXz|UW2+q1)x8OzyT;Up<-lC|D+nF4#2YQMKf*Nr zQ>_RS!^4AVc*l0ui+LD*Qo?p2%wM^d{^*bY4_Wz|(%|;t^ynjxrvLsw{{#z9duVc1 z;)t(beDaHFWamz%GztpJ7M{(xj!j&}g^c-D3m%?j{o0SkV-p(f)@qb1xFi0eD5MALj;`RV`PsZmAhy{Kff*HIP|X z0B}M8b7y}I&r4etNK@_w<7jvs##;sy=9;p^7uQT)iBCMpbzvvoLQVPjC4S^Hb%@_y zl8r4-_U?2{tSn!(fdPu*6e)2odb+cq; zceOg^1`{yozZr*kKrtoSq#R`#T5FAe%=8MkOmLwW7sj&}C(>nTYc+!TD(h8q^>P~R z+rb_aZS3P)>&`HamQkW2Bqu5*gB5SEV_}jvq_6-F^VxpqKcEi_E)hfzzG&Gqo}e32t0z1xEBZ&@ zqi>ZuqvBisLyp{mVGLT+|$+pJ3y!`V&_hs^lf4braj#iEPGO^ZUDom{;*1JSH zOR+a+?O?5?JYA=reDbO2qfFxq-})9CFXasf6^LGc{dHcU4QSY8Izs@XJp1bWHCWeq zsX*(zSMZAt#Q;QgJSz-fApBXuYXwnZ8BDd$atL1!ulo@)<$14LXZa{J*gxlnc%z1_ z22G^b#9hy7nSEY3D-5^^l=#CX`r-Sui|;X})UBJrm%scB?Wj**``Xvyy7NY@oVnGf za2tE$@EhRlQW_o_Wlpt+OJQ^ge73HPLm5Xy$w2#p_VAD~E7m3BYGjQ&iC%=?>H@T;RU4&ueQ%%1X zu};{bfq}sow~YBG1qMDcb2X#`)!j?CA6O*>2Ne-$o(ViRro{SUd|;YSpFB>2 ziQ{Pqq2jK)AApWGrdM7iSbFdF)XUxv*4s_4{)2bl9a?7Vv`w8be4)IWLy?69Gl?*; z!J1l)wWEXew0@O(ggF7yu%0oVj4<`GpHD|!+JDdescWz=HFnmd3s+BpA4>>Jy7*uf z0`}4Y=bIKB$Jw|8Gdxw%C)en8<75E4co{B9oSh%_)GsX)@13W*-S7m@`JTcWtpPsy zkXA@7EQd+Lw`|SG_w&4DOj%zdj)M0qwg>Q!IftEP1MRs&i@$s(1VQRm@TXzX59xsO z#yRYL&(2ZHRV`PP1k_F$*_v#-Y;QcrnaARJEdU0HQv&Xvw4Y@$n0wx(B;Kb?{r|y< zbzJSL$qH6gLpCzj829M7{{dZo+S2hiUr%#a&l3N0HLdiZL`^9Ch=RBNu@NBbmOnRi^(6de6y?b~1&ENRV^q+tKKO)qk2x6ifJARx% zbjFC7hiQZilbb9N=)Q!aW)a$bB;4bb(pSY)j#AnK< zT=)EOJw6d2K4Rn?Y$v0uxo3a7(77n-8lx6h#?8fCe{K=g`!Z%uP_?L%lQ|Ge21)Il zliBxWnlgf7LIkP(_+Bs_JmXo@sfUC??UM)`%o_yWf-Nf+jtXK*kS$wgMgd2wh%Oy2 z#9p^6E-o&35+i-@C6JokmLR;&xY{DJtviI@mc$ui3CDfr7jsZ1qJWPTw0dr(b3U>pIXjy=g!3hm#LRA$Rs>nOeHSSOx*6A7RF=)Mp!3s6X6$c;4}LjAVKhPW-KTRn3-d z)Q3{|_|G=_v5deQuS+y?v%c@IFtQyUK3`Ll8Nfl>EiTz6g#znPXz+Q<@>$<2c;FaI zw7g&Tq_9lucMM$s^LXp0-b~h%ooQ%jDEgz2;B&rP-U<9*Ozo?9=26DWvG#iz&wvT| zW(RGv_1Q+hTdr*{@A#ha7#>mTi0Ox8qyG zLaD~og~hVmsnkO_?jsmfmj!X-weP+X_$W?`?=FmL!gSZLo$fH~d~=_Hz!er|`z2E% zocta>1s3jifxz|fP3D4^oMX04MT7!~dzz@3S5Oo_o*m~X&muT-UA)Pd*dGNe+o=11 zn)z0QFNJ02nebLC>wV{c%xAQZ+1iou)cP&o4c9z6pfUH}dr#n^LeEQNHJM-mcE1i4 zEYr(V;4XoaFsKH+`+j!E0Ox6c%%{p6Fd)`4)S^m57s#((TiYA;dtHsW%zFdz3c{j= zn1nWjPXRVZ`GQdf$drw3A_Q7e1$n$w~y5LV13+R)k7nFjj@V9LRfnzl4Se{eu2 z9IF9q$Q-*`cVTr@Aw=$e>Q*?_9YY^(vCTu;>Q{wz=Z`$B@OJ$WUbfe{r$qT>BJjv z;2*E6mdrhUrJb!X*II_wP;6bF#Qm%p_d_i)SVlIkUQ2y#-I;-=f9?t74(73`Bd~~d zw9;<|gt<-UK828sU?be!14s0#g4Q{QW|-f) zrrmwlLB>=8Zy{Ycj)H3XB6wY!nvMGbxVmc9Q^(bb@pSnrj5#=M+>7pUlf)X$Qdi5S z?&ycetK~tZWsCq7y4H!8;;3yM+%_22_j>AR;Dd}px?uKeK_EB2t(vh?Snq}Tf9>_7 z?9G6CqgncxbK;q_Id~d`L-8c0>(;JayJ%MtRx`g7{0z_5g$tO< zsZ38bIH~;e{`vFgaoHjsgf+_fV%g3|&!$DTZ^FKO9H)=-@reNO5u@k8JIN%_4tgLP z$R3L+XN8EYA&>@T#!f-SeD}ow06+jqL_t)*XPfZ(-Gcj!NOJbYlZdN7pNyCbx6GK*vt@eLeCGmOtPzU@ znz^&6M0_*P_`J-X?Z-|GhLh=o$wVjOTA1Ugs~pxVp|oD_DI`H&V8VBjPe1qK~Q!SWoDc0vACXro(5mQKL1kRz+p?LxJovuSN zowmWT5*E7exCcamjc}4^x#+(C@IAp|UjlYKR~7^VlkJ0njr#EGQel9ju2#Av2@4O) z_x<7F;mC3%EL_Ben{5!cWR9&z#=(FvpUrh5)Zzjm>}`Lv6)ikp0*5Rs()@CE3|zpx zDbpbS1)PAH@HE4Pu+jh4cNE%Uqdwo`V_${60-SJ)Lp0-y_-S7~#}3ats~@&)vP|o7 zygY0|z>NhkgcoqY_cV1+Bbe{lx;=jD!*1XluLhHAn_Pqr9JoC_{@7#bp@%*d@S*9M z0jDKenzpc8>F!;-qg~>c%!iD03tHTOkL{pPamfH|vpDGw-N^4FFiI*1WH@AAHg#=E z`}glpZ@v9yxSB+a$A)e?HR1Ybo5UX(3kr?@Q8B+{FfzEUm3bqZNS_t9WF)uXLcmWR zM4)7h+wjBJB`xDNHv-+n05qP!(fKC6?$|MuHiKKDqvh#e?A&!sf-#{P;Ffv&Uys!WB zl`CXyBV&(DkRM$c7hyaN2n}I`x$O8ZECPSn5BHIf;i+QpfF>B_c76S!OODJbnFPo} zeFF>wf?yLq_)YA8plgOMCu%xnB<9e_UqeXhXg84nj2&=msv}i!-zKsFF$Q(IUP%i{ zSb?wqGHtpFHOLAK_g>~U}&8WOVinPNlm^CkmC~L zCx!xZ8B6D`8$e3aVje*wmgt1D&EnE@?C7y@hc(V+c*k)1hv#3$V*Cn94FXrYd(xiWdxAdNhRC4j zdPcnsmPMTnO$5i{n)J}2htu@ME2)F)Bs1NMb59X9yyPE&&g)Fe)lBaiGx~Lq@!U` z@H+2DJOT`|hgM5wXuv~p(idJ(!jJfZbzo?U z-bQGQ&q^N@vJ}WP$kesfkqVoQQy2Qv%ggVS@v*%3A0Kq>{m=Y3|NcaP_=wRFfi-(MYejYk zTr_B6L7RkOkbw5FDUJ-&o_%}62Uup-$!5@)u0#^-LEK&>XqF)}S0;`=g`2y((nAk_ z3WUr|lZY(CDia@)vIHM#HZ&JZke_+%voLXNoHZwx$&Q%)=o$bLD2SG{3 zeRO0r4G#?mbEd{!hT7e+6$JESY{i8@LBbB(cE`{DNHpsBttM82>LGD3LsK_nw;i*) z@2GKBYb_JyqTvE00dUkKl_>XJB=0-?4JM-H=9sLwI^vzr^H&4yua#!rMj4 zXRSlR#*gUJuHCyxd$>0iad9f(Nnyg-kNxufcG@aKv14c`?PDArONAlFL0od2)zphK znqv!NA@dLf5^ah2pcZC{G7T&fCmo->aC+ZyXW`_mrY1J>1=*$!MJ zEITg%xqRWM@T2xz!Vbt%7YwcV+E1=|VPHFKv(GA6h#M096<}$|AW&{Qj!i6)K|nn9S!XP$Z{ec|!X5eslBoyK?e_;JkYye~dI z_~3)#(v-FO^cSCC$54TF=jdqEK{b}>AG;cdeY5|Ff!VC-{@L{xQXD-=!{MgSto(|r1ceLH-#T(mV9F0~l1p`Jm?HbvgHc{8! zo%=!oVExwNnCMd0&mIT5J_QV@pqT(=tpQIw_WATVKIhJzi!d+J}~MWc#l4m4EjejO}bF5-2#d>nkv;3h*xQ3IJ;NA9?Ul+TM>sgz z_6uj=FR+|eEu?L?;lJGs(^#eJ3$BZlRRb=!HL7Vu;GVclibjO7E|@8%>C7yC`)I*8 z7*`qUX{-hFbCaoofaz*1ifvdjTAQ&3W93~0f39Ad=G`tvhHOs6Vw@#Y)C{{zw{)zh z;qAoyFi&;QT84Sj0&wB%J89QwAAa5ljMc=`&B2Im;7&qTB7?Gxxp9!|kO<`+>k)q3 zA=j~T(psb~Hz>lOtbN*~tQ1H$>W#5gKMe(A|4(=UAX(+Ch#q`rNT)UH#k zwU<$H8Ay%0DRR>c8L-AKUr8I}?tkE}+tOxWv_gNI5fT?!ueC}yG%!fOx(4B*iu9hQ zD_v!7nQcotug2aa0XRcNb|t4_4nzk(70wuoX4Y^OH{t%uZ}DFEV$_lwtuVIPy-8s^ zlz%+un#q$qWZitA@%rem;w~i((*<)4I;tC1z!h5N>MBum-pUK)Ho`c=ge%mAknh;? zfOFq}(y2H&ucB%9UH@z#y!(!InX)*NnNWjk-x^B7b=qTp7Z?xHfT6rnQIqRdk>z~S zRc(?vybheE`MwD36ii#1d(z?Wy^;RnYtIrqKaf86=)p9Co7&3!7;c1fsR{g90e`A$ zT8IUzB2K6+O)gwdb?m#*-A-!Wj;_?=MvwLEHv%nLCRWr<9jA%MG}wF{q;(C~g;7Nd z1lpls?RJOut~B=TZ!>or(w2cP=3hJ35Mt%3SOdQJOgeRXEFC{}KF@trM&TNgZ2GjqkPV!~6NL~Fz<^=qxF zWe(`xmQ&U0>ei4pq1c#HQ9FTR0++22GUot#pLw+yUZoM93TgKHJmE*>G zP%iu!oIepDK4K7Z<`*V2giZ!ZD?$t;h^1SC%%hBwNK~|_H(d$bxF(zX`(fZ>%CmY( zfPxrMw+JL-mnCeq3E6Zflcu!meG!qq zgqXef!6VurAURw#vPN1$1$=>5saxFgd(;VB6dojM!c3F!;$n9B+00JJwnsM<7c+}4 zaB(bT+0*+(u z+)!gB9yy;ptXJ5H_u_%?2n);3a0A;Y)aMl}tq17Pb{AU4mBmb)v0b()tT(s}s0958in&=8~><^=?$eKl@nV9_^@Di5;D%{4YMJ$=90UnAmUYi7}xbpB0Wg z7Ja_~41W5aWx5gAwt+$R*Ej&9i0~IUgQbZ*6v91$dW<*W;n=m?3`VW&Agz@}?ecm= zZz32mk76S$m}6nztcIF7HifIq4Czp7tF&6eAduO}eDe$QxOT#vRjs>F<3@pdQ58)5 z>Y6S_TCzy#+zHb?W1u$zKW*5=##TG-xd-N!1%H)TDmt_Q6J3L#Sc6}JDN48DTi;r1 zdT8AmyI>@7d!k`c#J%mcG9A_TjYuwoxoreOQT!WrI1hzM!GvC*!D_mh`sZ zcg!JS%pf^G#eW51<3Uum=$g}kYgGe%6GzqJA36FS>6rT{m$(r2u}~4^J(*3dH+d{z zf?%4&1vL$iF~?dEwi=i-voj0n7k=?yqP6Xdwe0n`j?h;60se0r8cKKFrK<~RL&?-r z2ad`hf&qa8E-ir~z(~#X0s>gGRvNNI^|533+i$Q<=Cs9gjcLQ5Oc%iXFc?_1<6h5Pin%Rq;~^*{ z_~Dt~(u>Nx55|~&(`&>loDQhdO+)RIb2!!*#v;~Vo>M_L2M$%yMpJFKY-&t*-*H#! z?bwyVex6#z04U!oo?2-z#P3gOA-T=t`SQJ?DPQ8A{2Bv z`invmT3V05q{UX+<6(D}Pz*@}v>reI{Bxlo7$3iyMn`sp;?Ovxaq2cu+A?j6ibv-P&f}7>9^xxe2;E*fB((rLUC*Cj!JrjI8rjICxR0_!1RGMFhZ_FS+|F_*Ih#|1{FSPg@W zl@o@WG2zs(i{&o%8EtcWEmuUgO_uL>nJyVozh^CoWyb3c=bdFZx3xgNza3nNXQO05Tx(thOhVBVN4;3-3lmmiAYSr;e7l?O&(GP|X`bCA# z6gjeG=DjI*t2c7|P-Bzg01A{v>5B7McTwmZ@ULT@L>g4GGF7vCEF((}ci2qIU10x* znkpDE{4<(S5^U|;oLXR?1?f8)M>ecelU<9(bDbb(cGhB?^cQz6 zkS>`&pR7Lg<@|-qXk)P~6KgTLw+}e$x(Z#FSyaeCTWp?tnX+E2b3NVEPf+^&A{%f4 z6Jub^b{4eCws5hUcM9$bw>(NYGn($HW@&3&%kywK1p z{7eK^hXla8o_WvJ%{fp9BGYBc;Dc*ZjG&M4oO8&vz^e)jWv!s{uozQ7v?$gz=0Nn$ zhk4rXT0W%JdG1-JG=t}&eCuR)XOw>?f^a@NPwk8Et$>#*aGDuQO>S$r>!FHEbCWZ~ z>r|!TLE`mxjHFjz`)0a$?o!&)Rudi=?d(}%z_Jr`n!Q-Gs5V5vyOvM(FToRH6L{IV zmDIn`)LJT)-jt*n29=vaSX$>AlwF0Z!WFxVOkaEU?kDrwr3iRlB5r7kEN9oRk73Df zr@h8?vPTgC`MTWMA7Q*1>z?}txt>eML+Pnv0hqdeX|+Fg^jNz4?t3D3RO_ekP{}3i zf(MLI5Qcf3%xi$-&3(#rylwMk_K?^%u#L4ZD}M`}EN4gOC*`=gqWq-v=%2bDAd5_) z#7RLxpaZ+GDuPu=!J{C z_bLpLO|e~>xXCzV?LxE{A`{GG5GN)R?U1>yLmQmSv|kiUc|b7wZh21R(l&{NlhF3$ zPiD?z@>)IxxM(UQj~x8~o@yUG!Ut9u@t&>Lche*H0piACd(5;V{2fo* z?bD{M3pg<5L4|oX7+LG04qec+G=!!Df~3&qealvu$O{Xv0{f3T;t}BHlQP+*Uf;D( zmMIMU#CUSew%T@XM!hcjLBx1pv#)ItuC~LzTUKF=z2~A(#w*IOY>v?GQ?6rgz4p~- z#YO9m@v4lmzs37#8_#I5vNFfrG51-86B$Z{8|RGQZHsO2J>O9q72g%Gt-I1@N70mv zJRW@!kIgm{KDdriU{dazeRoG++bSGwd-T~h@oaIu6Bf=JU6=yL`0bI$Eic5@@4J4y z9%D&AWzhUB&XsrK3pL8g!8yj6 zwpf2)6W=|eeHB>w+y2B+-p#-GD^BKn;xha8=kMgz z%UBmyQWx$}X6&hg*^Izj$4!?}T%B4GMyogD`nM$gM60e}HjKhL9OX2^hT}4g23~rO z2?3l32iU|cTOkxk>A%`eHklF!#FA;4;8k|aex#GV9dH3#fmvN*=j3_@7N3v4e4c4#0p3K!?T-RhNG|yyk+h=SIhj$sVj5h2Wgybm2=c$GLOrZ8*i$$ zb$)88Hh9*|W5z7B!qBbHI(HabaMiWKSP#@Hz@nL$J~Yk>E@a`k|K9tsT)Y>;+NrVg z^lveQhZ^bwim@4<7Sy0gj=eZRU29m296L4Vy67&GspmW2c_Hm0Ahj9Sx(TCXf!6|= zsEjkJsWEF4_&_SxRlr@}2F+x6_usKE_2EKtVf0|>!=Q4Bb?t}M|s{6a_ggwst)g&9a5*ZpFJah=x z^1Lt0JUAmhL*j^mVJr~djb({oeSS-W91qJ?K%YQ>n8U?UA;Z+|G0(6nDiFq+@js6X8TCnOP?+uQ{)IPDV{al_gW(6RAYzD9?vD{4Ih8;&RP< zenP`dJyoVtW0F~p1qY$vJtyR?Xz8c!2*x>KX*k_Hulh_HQDbc#@iv(7w-^Ipu z6qgs5~k-5>73wTU!8L!! zch0uo_K0t`$3x3TIebpWssX=iC%zUC`5cf*m zb$1~iGXKjB5j!n(;%3fVUWga+Jsh$zMNu`AWjkjC{QF={a1 zUaMk$bg)zQ?2PeNd2Eip_jdZ_U;ahhG`GM&vv&mn#Li>mBZQ~%ap6L%CZ6A+P-2c& zA+U(IdG6)()6NCg2m@Ew(aNi2&?=#I9LmF5wVZZtA4QnB#xBvP(ylx1pxx3Dge~UO z^{H#n6XzylNnfs!q+rL;NE$nTKK-ZP`>$k9`b>KDl~*DI(;R|G53w%&13S|0eS3)E z+J{A!O&_sZXvJA(?$zSrGeck9&`r0#TH?^_`eGJ7H@0fu| zK}8xHo9OYB9hJU{SGF};AJg1tX&2XOnR}L%`K8``Mv zBD;(qPcMDv_4KcP`Bz9=ye+K~pL2QaJ%kZ=q+cVUz$6wb+?CJ>XcYiOSvPU9L?G7E zpsSMew4Rt8VWOpM8oEu3z+J>to2~_fvUGC<`hW&EJj&g@Yfr?p-TD96d$T9WuKUjK zWL8yX?fcf%)%%9V4icnDiUh@>q><$rGBonYej3|~d2sl_b~rqaaCmG#`faR;iO?V5 zm>AFaLE>mEiW-v=cYy*R5&!`-dO@8s>OE_MT;Ns$dGZ+BMSyvw=g z{LVS|e1AK>FJ?BMo}R)<|8cEMAFzrAQB>a^c+p;pAcw|~^Km?b@H zX9)ZK+K(giwa;2KvJ-+PO`Bu@0$)KNNEP?H#_~$fePZpcEPb5UzET7|$!ld0I%vN4 zy~r&enXSn{ykA#3YS_Y-mlyNi&4tOAHzOz}XMDS0GFY9|`Gw(&C%%@P(BrrZDw0TF(3I!((H~qNZQ}(? zC3q17Y^iGi41T*XyO!i0djIqUW7u6WYjWUYzZD~=zqWq%F z{IL7~?yaL|9RJR3$FJrD_N6ouEJ=@$a?-3FzKuPM$sv&JTS(IOKXrm(2dpRs@4(4(2*=Tuwq8Ik^Se4gQn_~Q$PYsX zG_){3+aTc*l2s+a`T@+(&A=e7!i*52d36DrWQ`q!492*;N+?ahb(m~HFZ(F^3|i!I zlbK%`3>knPqC5%Sx3F^$4P_l62qss)M`SF|o_zx8t0qZCr$S2u(3_+DGLetkF+XZW zRK89`B*#rR4)e}2CC^7roFQBAr_$fN{7U-57k-2Ka6iDy0d@N9WB7IuOW&Xh^urn^ zPl7DRhysTQB!c@gHAmXJnqDPe$XCDe$AC+HaB{S`YlLNPg)v+sjHq+iaa|?q(lUN1 z>zIWd$Nv5BiR1JONx*o9&hbl_xTz@!L0Kp33-2@h^?AQQU&fjtR>P5*!ENGG^J;Xr z4pIw1y;=r9tKoDF{p(sFJ+^qy`vy{5A)S3ED!}RC3;F-A4Pj@aLFYBH<#@!t6uCG8?))w5!Y&zZDGKApzhWvUsm8;tbCyD1uFl60~KQ zyc&j8HS*s8fV_tg#HH#EOg9t2Y~2iYL);o6PtvL3und_hHAk+~GMxrp(d^T(yUt7d zBO=DZfSIXV=3)szZ8rC1G-o^PfAUv8o4)(K7t?pX|5Ext|MkC0XC_I=2+h4eLj58@ zTEo2W=B;@`0rwD~fO1hC&Mp!JphTv3r2T`FhhwbTuaN|izA)H>@bh#Cy&)40b0k*IhAsR9qyB!?C6zT5AwPaf1>VBNj1 zsDovBtoYEpXrtG-#dVEiP88`9_Xh)&C8g5A>nuZNg<TGIQoN7y{4pFUsRMm&8Kk zG5@{S7B8J#oha7{9JlXbj0)#>>7pbjgZsu!*2@P*Tdik)TJi0#0M3+}ZCs1r(UiD2 z`u%lcu@t`MAu3*A#tOFqzSJjWT?u zov{Cy_vHS89*yzj?|c2hvji)}I19Q`SHFw?*jpDG6fMZ@p%j|s!fKsjjPX3{5N1ew z+FXpgpaKh&o7X8-bF-fDOxj^IoZ^^0D{EJ552Ryp@@M|e{IuMUc}`m19+JOr@eeNXCvQ^=dB!I_68mfJi_*jJ@DP0Ionv2E#EQ8bNC3lyI%_<6L(> zdC)oK{4{5UAzHn+yT^o?`cD9k0sDfdCF11w^$)`o*!SGODdg{q1(i^Y567AEx>gJ7GsUK!0YqJ6V$Q#V@u}WXH7(IzREsDnUPi(_) zrNsMg1+dvJ$Kd-DTKO#O!@}%L;aCOw*jB^+S|6jk-F^2ik$?zeySSQG@ZVTNJF<=0 z%@*OF6hw)QV}jsB5j2LjjwyvFYMu?KVMM!NAYeR8Tqib&1b+be&>~R8R?wFBG&E9! zO;>OY<2RTL8i%%kTJ!8I{1V^`n%kfslY;t@pmzFty7?wd1^wsXEc4!zNo)nYmO8U- z|MnyZP3q|^bRHLr=0^<=2^@2ikxPYhGT%%?VwaFF(mRENW_g$81Nlq39=5%B4N z-ZR)248an#T7xd<$eKQThX`nB&)&U!E%g(~V6?vyeg;cBj30#n(7%Go(JE1%mJtMY z5TVfEBu>s)kLVXQW1DWuF!|eVr=V>vZ+6YYXEfi9!;$J z`UYd}Vl|acoH&IZQO#yH?=6@lnH7Z+S@4#Hc7}vLedZ){feiHYm(SaRp~}7Cx@v`Z zwl6C_GG=+K)3>z8u&#zC?(NWbNG3r`0R&%OzGt(X-S_gI6CdK;CIj(4o%f&)&kG}? zg8?C!aXHKkLw-4UkH6JK>~2nk-Cz6n99;SQPdCT}Px-zKAPXRuN4#~knwFU-B7ftU z6V!ToZ%hy>Bv9mM{C0r~=|9J8pId%TKA!=#M`LEW6N{Gg2#Gn*b3ZtK%m%#IXDVTL z^S5Ob_051jAG2Ns-2>?C`5ia!`%_$-X=n>G4V5^!pyoQUc+r+zHtlTmjW6i{pa2FJ z0MDzo+`n0d%tI{Dydrain1V7~Egk*yGi;74w|H^#5^^yP|C)VeT1T3~N6?TLW-3NI z9e>opbCjh7B-$>q*}Tu)=x=s>oIt~V*ng~$fJYyBE&b;HUTv4Z!zX}pl@?`9MlNrE zU8EbA#UQXx-HhRHuz=hKDn@ztm=rGY9%;_|ITpFN%cfW#D<8LH#w6^7C5mmNocxIV zoESrt<0cInC*$|eha*~Ji7PV;`hU^-aS*4Ykx)=@6q0( z-n)1IGNP_qb-foJWct=6`@*9b>o9nv^@s>A?5_d{1E9=+ZD* zMEY6*P`3j>1$i|9u^=_Z0}rdx-=Wc`AEdJ&a0t_+qlb^ATkl*6XK9%SpQWR;S^$|V zUP5R|kb+ZKD-4>^lqxWJxHOO}LLUym{z`tI%V?F`cz<&3c8N%d^w)N~^ACDchjqgC zYSQJHS)YM)77vyD%I^p5qC_qHpoeI~=98Lk4L{GQ_)nH}i0Q75Vp zWy&yHtn*xHy?s=nFJut54#Ff(VxG)+Z^w_sFuX=mYRCMq4{cg!9}%%&2K?w3DLpo* zkD+Qc8TE}CQK;Ip32G-}xCZlrF(6@>%jxc|*|be0v$jplMHxry6EL^rgD_wO=~|Jr z!^|=Lbk;U({3hdN2YS~Bv&P2pYa67OYlxa_$Lk;;e`ler>jD(v9T17z?1wy2I7S`q z8_Jak&IO}$^~1!ht2JWW92lQSKR)+%>KhzREih> zYrdll%Am$uA4%tr=5~2~Z>&AO!#E!ma8%hpl;?Ua6XEmx#1_|aC2b2cw0!g<@wdr9 zyiYd-Zm^{F}kT!0}ifWcivr=sdQ&?LNaY;)cfH+`Z=Edk*4U zHba^{pXnga<#^~`Jv_v@TqQw_cgCUE_h*1FzT;)j1#zrVr{das-4DF-zhFQta~rX_Q%%9Tz;{PeFT6?Oxk>h7&oMAzs^*m#@u$ z*=t<{8U*2mo*4%jjo55U5G%i=^1k=x-`*e8jBE0>yU))>{4{^_xbhC^C3t?=-I<>8 zeA<^mcictA@^>+gf}yxqOm57*I`Y#Ow%fywMISWimH}s`p-=I*FT{98l*OV3akxD9 z{{FgfP4r4*Y~Ejc^75fYv10s z7We(Uz8x4g{vlgYhvNGom&M_@<~_>tqW3Ci@43DE#WSgC?u*6&f9HA7IMDcd(7iDM z?!WB8zbJHnxw$_$$`}aX#I6yvB%Slr<=T4$QRaUzk(K@xG8LNumb;jJ43UeX9WXdU ze!BdqAu%q^1h^#PDD3j)CD^z68f zHUM~s#}B2ELnDN4ZBL7z5>};C9aXXzy3)72q*W5dXwynrya=+naF_eTR-bi?0 zOly?T?+_7cdipM5e$g_~4mAs-hAW3w8!(1C$#2>(0!%>q8cd_iPK2lplO^a#d1Y+& zOQ6hFA~(6;B5*~cQ@pk-{WuP@xvo{5( zWM1EZ)}bwe2-Z_t;BCX9%uFOSZkjV~z?8Z!+ZUSsRba}hj9tNM0Db#}b0zw5dj(D0 z#o2W3!c;`ND#JYcP<@Na+$WPdO8x``0_bDZO%4T_qgl*?+F<&sFd1qzdQC7%FoJbx z(@8|REts7_=ABah(Mo@s+BVrA5szRNdNG^QtgVbcieYpeA63TI`sQpzNUGvjpe6-E z2JPbgOndafEEDcjdRRB37jDuw&Q1O3BuK2alqWM;rtOX)-y5wk5#iuZJM@`Q<74C~ z$0U|_k^4x~IOl;hlA$a7R~0IR&z60~Gt@>DxX0^VJG|a=uJ9gH&{b^VQ$n4J&1)4_ z%B<6qQJ#I7-*3JN*l37M)9zjQ@Q3|xlYw}j9?Z+x{TDgloxH(GH%j&sh5W*da0+FV+`w941zmw~^F>n)4RV`51=>mGFA z4(o7_p8S5V&F6Y^{G$w|?*$_g=eXJavK>z1EXlA$nTJewNfJPqhx&4H^H}jW77Omr znuiRYt$VbAE8YKDH%)rf(C}WP{ZfC|H)e0y(l3t{UvBib_d&1t*r&FU6Mkn}=hs$9 zeW-C1ZGUmz7qgm!{m1m@$W>6ok!d8b+FP!RUZy>@v%0bQY+jVsXHQ+?g5sK>RiUNJ z{a^H*WyVG0%4`oZ_V zpU%DYHrbo6aV-*O7>0Hvr^k;SP4lxem{Kf^S3;h(qM2P*N&*&p8@QEJ`$)TQ@nj9S)*KgVCHq(~M<8Qr^WDejS^a z3erszlu9$Dw)!rCT|(0DyTiF5gQ1Dt6jF=gzCnqM;=BbtR%B^Y2TE?GbjQkwXnReP%%Lt$+!vG$QNJ@M! zPS4S^P9adIUnOw7e_e+tR|kIs z^on|Qm+*^-`f^^UZ7$rwH(}=7&CpJ4wXUX_9mbV?KpQoS(j-bBgfh?DHm3>uVZI0B zJTOE;K%D(+ly!CHZkoM)Hyu1ipBX9{p8)+@6v(y0aLX9G4lFOz7&Jg#`qFT2s{zh^ zCm40Di)+_qGWi!;9O$C9lBUJ@SJR;GClc<_euV)hEp;7`;Z@M!b9~pygt#91UeP4V ze$^S;F{bIA3q}=2N6nZQ8eKD@XmOuDLQpjNf(BEUOxM5!l$S?9ehv+a->!XIj&bTk zG7k2*>y#xa9xv*c>sORy8}ofdy}dTt)gYtwi(Sj~lY93yu5VD5U%3s@7J)z}LR{rFN<{Y_iyoq|z2nHv+56l5q93Hi{<<`( z5N*hm+ofMoueiq*pivW_5zKn@ORh8P3Db(PX}?C_^4hPvXwwebyxWvqYSE|np8vPB zljl{g<4^O54>E2($Tj<)dH+4u>;3Dtf4uB3^WN{qJh}IqonpNBUF;jxCU=N^oj=wq zt^pLO1Gw_(7Sd%+32I11D;4TQkxECqbgE>WECWC`a4Md@U4KM>F6Ly8)i=wC;UK*fU_}e zGTP8c*8p0HfiyL@mPP?BWW9h4m^$(PDPw-+Jfn&*O-MM2o^<{CRocEu6r%%ZDsa*) zqg4qYE(le40lp=mK$!?nnk2~(DETGbE=+_D!x`jj3bu$zj$lwtLJK|_JNO2KBpo25 zQ?NoMKViZ`o!f~Br4wjRUpJ;ab42a~_(u=mFMtEMwA!)X9VEOy4O=Ss(sTwGOPdS-o5~tuG^9;vs{^pPKQ?f7Z>7;@W!6_^1>5lo4B@s80ky$&?Fw3inU%DG zxmf!s5_SOE#E2Q`(T;Eryc3!f=)Fbw+&f%1N(ODrzLxlO&H)IKbhpZE0H$kbtaNVI zIU1Okmh}aJfv7?&?bZeKn%I(?KE|Z)))oMIo$8DaGb}4{&VsOb z8PQgr1;eToI_fDf1-!;shX%f9p$KD%d(l*_(+)dzw?YvGu;DTJ7|Lp3a#-L=zv5YZrC|glc`xnGuCOQ_jUS# zu}7Os;)q@h4FDXJeayPBgDGE_n!!l)aI8eg-27tAr2;_#4J-6Vt;*^Gu*cY-3KyFhVTmyu?N$ zMLSB2IYT+uP*K&m-mC179hp*VE3+@1*^2jN{Am1n(6QqBz1RJ+_ji%hFS{nq=Qk

mILo9WfpUd2b?Li(@&tA7dr(++=$s4RC08+tfwncux~Dc!z) z1qt>%i!~q(fW0Mv1T2_W#4*&<*BfRU)3ei*Jq>2S-dR*bJnE!vRF9H52( z*yyjL*#uw#rlu7sth;J11a$sZ%DD!3*=B&YlK8BxGLU+E4y1);Z1;)06VYt|%Mqyt z@DS2XY9z2RM*YQ07s%#3oK8OZc$gTOr$AeGnF{$opAGE6{03)VLYum8bSpD?J3H>t zn0A|OSHPiPm#8MR890aw2)(YbLl?B>`e#YHVK4Os(Zos6E8J1jvIVdT!3y`9OG9mh zQfiqPLzL?5tv`Yhj<(^})PgGzk%n_P+*Xl5w_r}wfldB8G%_q~n4VZ4)d_&)8WQjy zzy4}kAYou1zA8I}XEm{2I~`e-P^;-^ zC3#=~dCJ}qG|D*9H^Mm{8g!u7VF>-3#~z9Za!cT_tiv;x1*1hf=_H;n4WO-3ZI}oS z1=d#M0a@_vpicpj@GpRSfT+*qdU2xtpoCq|1xBx~`igrxps9Rk;%g9ukw%H!FC|PsO=%p?TbMwq?L$1o0Ikhw^W}HH6$El2` z{!5yjDWuXY%nxLwepHMd&AMdL)L074^-CEUfgzwkBas11W*qW0A6x)zlk56n_-5>U+btNd-$|a@8}i>z`f17?rx5kkHXeu zAU+Dc*la_S0!<1uDew!TKmkV9bYm~! zUZ3eFkHhA2dh^GxQeKS^uEe4bunjl@c-mz5z$H6wBDDksD#g}>N{MzbFJfD;M>u9;A|q|q0DRI* zkX(Zy(L6~;LZB+J)xJGU#Mqa~kgk>?7!te++>II}5Q@MNn2hCiKnsBB&;cC1G0WKo zD9ecGJnZ?XD|FKTNGb0I5^6JUtF_T=W1HLoCTt5JX8UN5QJe;c2GX6ow~^fPT>MbX zgl*q$7$Oypz~=}obwD2;0!XitgF*y1a>mL57OSY}<{0NSyJmSv5s#!8ht z7#FPoWkI!0w>9W0(3fEdUjgW2^r1!a2uSA|&-Wu~>M#t}*|8?`;kaO^Ank`{@NSMw zuqK)ut=UL6*k^)FfGnW6yW5;RUC|!Rm+Yrjd?3{3Xl|rGf#z3=Il{b$YuvZ*`v&{b zU=h+65bJ%?SVq@A5>Tr#*Z*WkW)AQyqwB}YX@(^uu>}p6@#$GKJ2V=Yb$lz#?=cTB zHymwLo_5Hr+TT1D$v=KT#BavedZ5rsW5{`E>y^BU^aEP`O`O2hpnHhpHhEa*6jQC{e z&!F?T&e!_7tZ$;lbI8)4OGL#AUlQ)uxxqFl!Iys0SLc0wpMt4ij5{y*3dUZ>Lb_?5 z<$1LgK?CNH%!mFo(%e4CeiXcWxIf-Yl<5}lrAE1q5zCgjmUi}|T&9efc2tQ(q}*R ze1MDdZ@-yt;@6v0&6#iz@TPf-V8WzYU4(R`T4BR2{!(JQ0y7~v zz!oC_qzpurFrcjf8iBet`r1_sQmQzG_V!HzmWI;k*clwBFjf`r6LN$(@C!_Wrv$UxNWZ0- z(UoK*^rtW~Q3(?eX)S28ae|$Q+{1l4m}=OTkic?JWa47Z?6-<%D$rgGFm$KiWN6t zknAHFJe`rvW7G|;`iX4hc-0xVlj9|9{>>gP4eTeGG&Nz;FqjBwM%g+o%UtC1UZb{1 zznpAt7=Vpye>sv5gRRJ>J`d{qO5AD$F z0AY}CZ?6!NxJ=%P=``GbD9RM9A3bs~y>sajG&HFw%n5ZdTAp>+*C>+rQ6Du!ngcPs z(LlXHPK(Z9$_)GZ@?XD{&YU?z-jSimwXuq0^af=~qfSg1O(?04L-;GHiJ&}l3duAc zIeZkY6sB`L*(7u^uWhFc1pVoJ$YYhU0ey77cmBjN>Bc{SKh+8bGt9_fm-WjqG_@x* z%PTRqG;Nac)UZsNsS@&C<`xVDlRGHo=Vv?jA?FZy91 z09l$^0G1$7fE$66sKcal*1;{3!vTCWso)_2*3=LPV03miQk6`F!6Cd)=0dQu>GjZ} zgnfBi1!kiGcufALQ@9SpngG>sl2zJkum*E^Xf9%wUi}!hF>NyXjDSf%Ez@EWHo=jm zTC3!3Seaf*=gyx?mti9ApjmkQiN~WY5#|(dSHo#pTm0>ng*0{RdTPOhsvW$$ic@xJ zunVAwGjK%ZK|)Lz-%S9c*{4ZOk(Rg74ne~Xo^3R*B_l2Y@XTYOFNRsbwaKrcy)eV@ zG8!jvCQ@U%m+w*srZ@wDcT8y_|tkl0= zWloSxP3GCaB;oXHJ?Tp$Na3gsV10iEvMzdgqu};d| zLVNP^i$6#cM<(#6m>`KuH9K`1fB;wkNSN$Nvx^qMgeE3N0}?1KVA_IG zB0WczzJUNNS<8SkH&R}uo?u2md>er47N#~`>Bz}5>4~SGM;becIgDXp2@|@5L>dSL zmZseR6V?gC%&J{bI=zO3exB$3)r;RxFMReh0mhe>wqPK70b@v&X_HcDnT0!dZw27- zzL4lbj~=uYO2v(?q>qMi{LO;9h<3&6ssOAiN$WPz*cjPJlMee}dU`qy3=aX4(RSc` zE5OyP>oyvjUVyRM82iJJv*i^)K6Mak8M(&qVEAN2(D>lt8y}e#ZSJMvxpU_uyY$<9 z|LP|{mHxq({$qSR-brtsdo%szx4xM^_p6@+@EP%EC-oB=v;^?oUY$$-;J1G>-8}y$ z<~UQS15mvVgGOtkUzL_y|23F^5=`6V_@VTfPk)lS!y`bS723Q6(`X_#5Fqv6CX@J0 z`mh~4`;l}2ST~46_Au@4hd~R8KTRo{BZ77X$d@sLSrXex<1H8ffu-QER>F6H`pU$u z;6%TMBW(-dRc%B^o$TE>%c^-Oh22v&iBj7mGh*4&-OVwhwxSi2ozO@y79(^pQvFTo z3*#e`rbZ=4t>Uq?$7A|Dz^e)A!#Q~sMtBF)K9lxou%>os8%OODe&>vE{8BoC3AKxY z0nzCmEzPf=`W+@5%qO6Ioh;<$_}GL&aDRT@Z0#_bOPHWRgJraTb42x;!(V6{W^x>c zVU`JYoiX=~mtIU=+Y4z3=lh8Rhp83WBCz#R>$keP0Q1$EZr-^~`w4MOn{VB`o-Wl@!B0K)ln==fwh1hcPp(Rq58`>zs}Y>Ym14q|v1 zeXxkLzkX6#JI1_%_BH4u%?yHY^vKcl&Xp@^39Uu6M+Sn4=sU(pVG*ebE;3C1oEOl~ z^(UAH#sx&rA9i_*#e9%)z}<&IgJyz`FtXSVH1~2ty=tb{rimWsLNLN{``s~`za0zt zJz%LmuUO}NH|+gz>%HIZKZ;wEfp`>qrCFyY1)3CSQs6^GfnpKdTjhHUMuT}Mu5lqP zJ}$EHQ341^GgI>6(aH3cuY4T|WPAF=Cq4#%!?pr2xUDHoNdItV1qA3TTETC@kgbAU z0ka@$ZG9*8_KyKxxD8;S4IL(0Ceavl&joQ|FDPyNH=NF@OW z+@sl&_UPL%JZ;$9YmTMVRp7LO^Y7dorXRzDktsSP{(v?$21-FSvk-7pLMqLZX{SK1 zXs=n2`v|RR-2~)nA!L}$ebBBDBF=v}?P^+r$rC0eZEe{xSca~j zP_6V5ytZ@J=NCMq;{g<0__FU8$eCs9pK)x4#FS-vZ#Z zhhN3Q(mdv8L+RAcsq}*%ycE~yuW;x3?KFdgT4&xaqU@~V(@;T%&3|$;dg>)9w`E4{NH32d`VJpvf7YtknIV^M(=2T$L zG8vlH9MxbHYwH;lmSyau8T6BJk%=%0R}py+7)l!jzHp^H&*z|~$dQ|!BFlLw`Rfzm``1n}*L{B+gedk@ON;dJ4 z1F3@FN;h+|(gI_$24g|;xW}J3%{VHj`K9f2?cH}%>);S{S!MrnI&|VBTAy;#-0b0{rTLw{ z7BYV}u9I98GcrCfIypE1?Fd?GvSi{t&D}J=gUJ)r(`V9N=GjfAA^&xce~tH;r@1Q3 z0841xv}U3^cn{cTM3|x;j+dg-iuYcW$+h{n<>h_H*N1g$G7uluo@>^-Nr5H>niP1% zC{Qf2Rx1`tR>=TcG761jf;EAvADIVD0$fcs6RB2v()Yjj-AG0@j(znYz)_kjvz;D)>f->vL9$sJ z;&C(0z*H=(tN_R~AHko2Tn@&R7i1VCKN61d-2o$@qwWs-GBT@xwdKVbBf%FK*gvu zMz}GulAA!AxUvD9e2xyhY8{Fsa@IrULq}A@Cqvi(Oxo0MDHR8#b<(b};juIWBQ!-0 z2P#5NjcFi%TN(pYc46+b45M_5To!%=e+~vsRK~|9@MTy}i#WGmzj{9PfJo>jo<$Tc zfOc;WNys)Zh0-~gEYoYjv?vS|RY_WC4#K>LHEEd|z79cK&n8S+y$em4 zOa!re)ne@MdjrO@60~CcLdPw-tP>iWiQ0%_Ta;VxD5c5Mhtq+HaWa6Tc`|Afo5_UjLB-6nV+GaW|*e^FkEUDE2RNU=vLF6+cz-ZTS~n!_~ZCCjlp1Eyl^f}9zTpJ zUmr>6X3>=0W}H;2t{fC4%Of=lRRN9UC3vd1jAa2*$y& z?|CASVa@}YmM!Ln$4fj@CNBJnU}To? zw^B2qb|IHXSzgyDH%j++9LPuG)Q9j-lY#gUc3QK_O$szA@bjfWfZcsX?p@6HoofDk z00jc@uyDHo7xdhJ%-{Dh5d1bcsUU5gkdd0iT)1#Ped77&(geVyg0#`h#+yjPm4dT! z6E%l#@8S140N8vC0s;YoCN_eVRRE13v#qt0MSch1y$ndG0A`0UH|ocRW(wBSqy;qOgcm({*m?gC$@$LHO=vySH-shb3S^LOXc^v%2J#?@=-&~Sh1 zg30260P(goi0R7G0=XX0I;<0MNL%_+J0?$N{l)}MY5q2v1e{H{1%QbIbFCF74H_eB zPwPnFTaXN^U0T6x40|T7=L_wR+L$tJ6e=opuJaqUN-#?N<$jnhKsX~dG+Fv-2o|M_ z8ZGaac4{OxNxCN#bWF<7ZDSTC?HHv&E1lJqPUrEj=?dpDE0fXiJtNo*ZG`2~&u+zc ztCDRGIae4TCF@OJShsjban3r14n;X2i1WtK;>)H=GYff0B9BpTW0_boFB&#K*pL-+vsJS&(tjm&MHG=tR6L z`rJ8c{Vd;O+?M;#ZY;`^lWXjA_Cvch8Hf*U*EK8Nq`==D3gjgvEZ@-=l$Z?y~Pt?A`oNo7V5YtgIY+Wc8zS(Z(!H{sWdu17?S=a%#Ms~ zBj7F(?M2^%um=}3aKE)8iXCBgla7+L`TYIA{nS1ICump=S2E3 zW;Tb9o=Q(Y{S?W_rm?rak?u|_DZd3+B^&bC7!IA7BY_leT;tr-6aX5hT_nBjJbM%g zdk;>>>m<%v-NAOe+vHoci}ti)cC?K|vQ6_N#KZy_rN%l(n|nb(Gy_1=e?cFG?(W_I zrPjGjoy|bK3gEY$Qt1x15U6UZmOkG;{6W|jifJq=}Sb#+MwMl zX_@Fj7cX84$6Z5@wh+p7l;nWpJ(>i;@DS}u-xlZm1`N*ZH0DX^W*V)J;p;FS$CkGV zVT#F(k(@fZ0k+UrvlN*?O@p))Q<#5cR2Z3+N$LyD&5B*+;iIlMcf(ApOoqqULP@bStM{4`f?AY98^>`l7 zr%vY2$R>UHt>!sS1pTQd*8)}9X~8T_&5Ql)W*tow=okyBIL~Q;d97`$dGJQcQ!@hi zuM>%i;S>2U)RGt~Hu8Bi%8HE6lq}P%lwGG_!|(3EDAr)WHqi(%i~;5In1Mm}Rm`6j zw$i0b7t_Mc8|mN>8QOb?qud^%nytWOuVcd3LiDn;j~z-E?@px~jOE8Z`RVA}xw#qU z(O~-fzxnIw>tFk7x^&@fOqSjW+Nq`b)F(d~nn)w8IY#~r$Li(fr8GF&lb-+B$J4PR z$7v4?Ipb5GiB0IBGkEX7ApK2l2Iy{P_Fn2@xZEn^w}d3Xxlu3*>_9ul0;F!0zK)v) zUGIOlK{sfr*^fRH@+y*&Z||KgfN5SFR}*Oxs($bM_u9 z=uptHICtMS7r`P>fPJ;gFl^#{smX=wEfzeSCRr4jlE3=Ze;+{nG$s*4LtRJ&xgX%% z2B_M?Y(aq2LPxi?8FQZnTr&g!j)|KzyfA_c)-(}*b8~YE0MB>;EF~hf)R1VKrP=67 zZ2%zg@M~{fOn?3#{w#ph;P|n00e)G?f&ZEVku5*}R^z@V>+-px? zHOsA5m(oiSsRze}!9K7G{?Kqkwe4>hJyTKOvMT&gV#n zzw`BPrtyi9bn5sx%;1yh^3BW9=A*|SOJ~kLjr10i8BCFkmeW7biw}Y3WoUCkH9#lQ z`P&STb^6~(QQZK)W&9eti0;$TxrUQ`B8l8mx()MnBAtP*=J;U1(cLCF6YLvOwiV#* zE5e9T(!2y3 zhjFq{lM7`_Uk}WLHm3*yi$gwR{$RB)E#oJ#IZs&Qg~im@PF@K*wre*d5TetP-k zmjV3qX>xKheg1_PC~t^}P(0i0*X^bBd;iIA2Qz);<}Eadm@^R#s;38E8yJ2~4zaMp z{EEn3(O>41v43F}bued4tgP~0F`5*if*BGBFL*yOB4iMyU$OBk?hV>XJJ0diVeYs= z?f5_@>YhIeE7mZz(?2S-chFxadN;K{&Yxh&d7?fs58J%Ac=yJ=KHw4D-jjiN1nb+Z zQj-Er3jAH7z(d}f9)8HFzf08lg|sym&OJ{me((KuKYlm9W1kLEs^^DQ6F_B;367NT zx%>h|0CeZiUkFfVJpChwC&Si1A}X6l8iR+d@h6jg-(GrZ}5I&v0^UZIC zqd2`5@$`+wzq(4k3L-{bzH|{LZ#Yd(90^IkHu{=f-MP7n7U?Q=hF&mzV-ttcQ%^sh z`bLR11hX?faTG^f{6sKsvOA4%WG3S2=~);Z7(I@y0cyALUw}aTZ;c2#GJkC_Oe16M zI7{Q)UBxU3txhLN+%)G>)3bp#$DySbAu>+GyhX$!+AHpZ91Vd31HvIA-H?CDGE^hYOCafX}FLuhD|a z_#c!R|1FqYyw1F;uyeIN$$cTG8e@uQSLuc9gKRC}ES86-ZYtRmVYi>g`d4`SE zyvC`L{UsXO7VE~dohNE2!e_#Lj@c43vdaYNV80Duwk~zRw}Anubue6!P?3Gxqp!^h z{tP|%15s)upDUH{`Jp{dVKY*1({`Qg50Vq5bzmo5XD-Ra^z;uwTlyQi9Xoz3n2uSP z(KSKKpXM`YKHz}zw2L{Y zkC64Te++~W&fZ-8pv`MyEb)DB|3Mc%g2$Q+#3R@#%_=o1(4;_<0*?X(T+rP7-n-9_ zSVW8OIL9#oOqgJBk7hqEyaEFtO@I?K_{Mn_f5D5u`7i$R>zFBgf-sO{WU%d{NY1h7 z3br&QP|F|?a*?I@`1o)^lak|bY~@>^Psvtfo1Uc^8z}S1MiDPcLFx^Je4; zc;WM3BvR7=+6yGu03fCIW8+5%Z%P31El8GE2=AHm8z4~z>26OczW8-)n19PUd5WXianBs~}*NVbI(~I=C76Wp;KZ96|-ECgBQS3h1Ft_9_za z&_-~r42jH!=26~$@xsN_ODJ2j`p!?!ME-;yz5K(_Gz19!Y&o4h^El>KGwJO&-y+`s z_4MEUxBpE#aqL)ttraA{ufFn1dgt;*{8!GUgNMe_?805@JeJ1MYP9#_yx!f9l$k_- z^lN}!7`>Y}ucx^?QzV(gnHFCVL&|O#`WA=eGC2dx<*-2>5FL?A(7Ov2Q|};l__V1V zAC5yu4?!9Jao+w>rLaXm)}W*Q86B#mY@lEniLeodS_tpSEo_co{xP6r5EwQ2pW}*S zVnel^9%n!Sf*D(U9Ev7V3&xdF0{C-HXdx)izCp*(C|m7-z&C?>?{Q4G!ns65EX=ON zsshq&qC$DEb+O+C#g=KZLKB$z9RB0*?KkHQBEVRZsc=GgFGsmAe{5T5SY#k%N@$F} zD>CjfU6d5}*nShoIcKVjbCWC@>QqyxP0a7i-d@MY#PQmqnGnyBxod}EY(e9mT{74@|_e6mK3G(&QTdFj|Jg5&R)E4^nZ}% z(I1>QCx_?UqJKGIvON2~!aS_0Sz~h?Sloj)`@we^T};urzaMnnqjs#xKs;(a(yULD z0!<1uDe#C;z{SjM?{_SA4?E66>>XYcl2H(miz++;pu)srtKrjNh{f~guY^7G6K9X5 zkA3W!uul#^!Zn3dH6Fts7gj-zODyZK>v#NiJ3U@#vKX(kfQkoa@H6;Psi!Xmc* z|K{KR-#9Ek4Ir6J-DnrK01G-j8;VsRCn!F4^2v~RclTjBfqB(VZ8^a8Ey9gX9GFPg zZro0z!=vf==wXsxbw@OzBS((|ZVzEM|3Dml)6(7z>D?*Y-AF& z4_|^9Z6vCQ4AlUcMS!>(3AHd=n4ip|dAN(F;o9{Z=|``>PMc4qb8nx=JZLc;J8?8U z|IBmg4$Q>sZ@!Jc!dm*yx4w&i$Q|xoPygjV`OkS?I}xPr1b`bG9!cN*-gf}+tAO@O z`u<;iJN?=hKbH211F)M2W{KiN^S&l4 zKAdsSF+sh~$!?lL#q;^QPCt~ zi}}(Trf4)KVAlqzP1UxP9JL^^%yM0)=DXVd@n zZ~is?TPAAR@$@U7`E**OuFiWC(@9}zRpEX^!M4K)_4an99-^w514V{Ge-0h$tCZpV z3KKABDd2CR?iLoBC*D-*vu`-3-%GjPMpU+5EY{Elc9I~E z=uzu1R`!$Q<3XEaD$4iS#r}gXd<2g*8Hh))Q<_z3QlLqJCIucf3IuqfQhx8K9=wX zg3GeG481HjR(1cffXkiu+$`xu(uyQC?DqkURV35erC+&vE&b?+KTa>a@CATLXGpti zm>3Dn+Hk&ATT&xB%-xxlbo%j+rK2bCi2(E}#cV09li7DRz4X^F5gF=W`oyQny@21r z*w{GEox^A*)EgNbX=Y%S_Kv30 zCr+fZk3UKHTAZ$ziG~Bv`u4ZKNqy(C{XYG8>hy_p>eR7dAf%sRIDx6*aNSnLdAp7y zF8L8A4jxLM{>%&M%~xNIXh=OsoH2eAq z9otL(5B}AlaVs>HLA7n>Jn#n;2Mnw2QrqKi&hyuBz7aN<^TB4&K55I%Xo@rm;&%Qi zF%OA!9LpL6o$>{Gq4}Xaho0KCU>X9jX9jnJ{;@2Ijt^Cgr#oh4Sr`%V(QGTu5dA2Z zLmdFn?#nE+lG{N>3u4e`fOi1Cb+RpCKhKWN;EpXTW65d&HE%L}u`QvfI3_1l)^?u* z9rUqnXUN0g%D7Y+Cph)P zJ^Ksa3$y@r9&F^PGVcRlDITjZKFV~G+RiN|narKczH`j6BV$j~WAmQIZqQU3F|A=p zF&(2%WK6rza`FmE{j_&gCce5vgtmcvzvIC!dB_&;O!|f*p?`y+c*wPn(%~ip@hJ7i zN3bph=l&6FTC+(%1qFO5x;Y+-F;N`*DT=vwsihUB0Z~rzroVT^!*`13d&SREhlfAm z!+EBlh2O=#v?}%=M6cq!61HsT@4~IwgJ4A911RI4i@CPuvqU($bm=@2<<&F-AecNj z7V+OB>oSt^4V+&!J#N7vL2znW0jK~-e!IyuXyRkpZaSc9`eGe?u380U#}R!Ar|Iix z4DQ~U26WUSw4?bLHrUt3TQd-mf#a##P6lRxZvVg-bsc3f$5|DW&{9`oOVpUh>uCsS zdskNv_S6G}pX?3oMoVWlh1k%%#PR@$R69UgD*!{&Af0cw0D@g;5|rRxx^$5^`Dic5 zsI1muu!}qn+^N}vnu)Bj0N5ZIHSDWVY?Pn|T>(6;-D+3_cF>i3B2zNwjVfeD=u(Nc zD0vR4XUvwcQ`etBkf}|-N$W~{cfnW~R<#p{)&b0jPzmUdoT|`y6sPbG7#SgWFAjr&P!|&mVG&(jC_UR^~)AVH%U|MVVg9wW0D)L9< zOw4LuG_zR;7*;S_lJQ#RSRK3dF&NG*Z048I5-lOIUju}78A-=vaFiJlaiDk3LQH-G zj%Dz#sSwOxF)jg+(oTS$``oBIYJE6nWgx!i^GJ}<$YaTHp!P|2RJLE88%p;*Z&*+z z`SiGDut{&tzUs8WF`uIs$;xn8(T%$&S zY<00k7+C1HsRo9TP{qGTg-R9EK<`&;xW)X_H=%@CQ9DlB-T3uHJptm@e*-Pn28{DO zp?=r!;aDat@2S&I!@%Iz!toMxQA-mhUnJ}cUnc7C)Kkx-H{U!L`Az=%rB~A7!xN0Z zyVRov=3+iVvTnfyFTxGPj|0W*YSfEjZ(EQa>MYqpU*N0Kvvkqae2 z%`G!3E}X^UnfC((0T==Rfym6TTL%bfd#o0shW6o=SNot~7UA+gQQbv=gWAUNjJMJa>yQw8Y&fTx|c~Fwu{?s4NT)T8}%o zZ>J}pcq$z{FrJQ0j;0r1dMS0n#C?qLwr8GrI=y@2CZLb3#b`7Bk3aYq>2sg`RiwB| zj@QyVWFmg%$tN&%TE@wI2GI9Z8XE1TF4-wuhte{M{mj|1fjO9AOj}wyF`=4D7ofuw zc`H_^-vBNP6N3Y^X^RL?GpR~j`eD?j=arp(L@Xsi1s39D$dXuGZz??TD=44$;H~pBfY-IV9{^WB!HqmX0(!G@7Pi9JiKc(_<%(q-URglDr%1oCCx|Bj?I0 z%tML(-h|1xc=1wN#>}T@@>u$f-}o)cY6)K*P3s&d(yRMRoeg>?JY?Qo1%an zj}8q*GQDO&7uX5+ z0AjomU`AyBOBde`#=-2d)vC79F18kv7u@_1k6Is}mp`t`#;VT?uvcpf&Sli0ioN!% zQGSq^w_$hv1ORzzY8HSka73#BlVNu0a)-9&I&rR|g}|kO^K^XS+>0CKbO zZs1!WVAXWRd&~`SSo03&>+y$w_=jn6ZZ@4cbvpg?|M`DO|KtDg-(%i%6ce#uOGl3$1Bk5y8u5AA(0_zP zUC_0QqC_@>LD6x6O5- z;gUR!K?Dh7E5@`x?9)JeTvPW3fU|~jj&}dW?S9*5{K|}o*xk<8WRJPPdFd}$FSKWt ztp-R(?K|$Bu;e(`I$zwx>M^3_J*-0GjAvy~%xlb`KTEj%C+SwcJ zmJ-rSWdsAl8k}RBIFz8AeyjWzzpX zn{wl~{R-bKl-;J z(LQzRM3^opan)2N*C&uuEX48TD7Wzl>%i_dAVr7a*jR+sKD4vYU%GfXz4qE0>64%Q z6k$ilv6H?CcpyY83w%3H+{WAo5dm8WN{3byqd(6&0nxG+co3ixe%)&XIHB>f2>P-q=m0KI~LCES`b8UC@G zu^aCsdo-O9AaM!PA|<``9ZZ2RmzbR;6y{PZ z(WmA^%c6LkwVK2swCuDTvz8E30 z4Kkzop3Fq#0-}zg@!(nXv*u4~Ks1GOKQtL!Dg)(1WgIjYG(U$xH?oF%PN_Q@wpM7U z)0P0xJx?=e?N>P9_tJ@i>Y za|ENgYzSBC)kZtk8OLW%J)ZvAKl`83zx54#_K=QG(i!Du~Ku3SmaKKo2Mba*nr zdbSO(ar|=nn^#^2V4O)OPM!#m9AE{|pou|UVBvEqQpQ9K6bJ4-BTHGmBqYY1)Rai; z_vQg`q{a zsEg)LV$WP5>0srQI0qyE)B?o#C>f2bluUD_R(zA&PT#hgWs0F<0Aa6G7&_2*UeE?+sl=22}mf=D>REJrS zh85~7%`8J5g3iTWYyW8;M5O}2Iv!-ggo!bx?JqYf6A8)q4xR$QE?s?A_)f$%UX(8m zlREZW7rt}N0|uwG4{Ea*_1&lMOv*A=0IG=htU*_wPT9b zpfT{lVm*dym9X2bM|?J8s#~`@Kcx!MEDBPCqCD@21CMe8H(^pfU(+O49L(6 z>;=_I(IG8!jGQS0ePkRznQpwZg2WvS5YOHgG*g&NWf#6Pcc&M44gv!ls3ocWSK^~X z|BAU8Mh9T_tb1lute@`_YEHW_)52G&MNJ?N)kNttpZ+Wn%2v_hEv7>xD_q0*dSqmr zv2>V#1|u+U^gSk0R5yeX^Y}&>`7KPosGIc6rjpDJ+SAV1X~$&BIb*hM=brS`2SecB z2U9EEHLr>;W(*p!O-)RVB$d*^IboX(DcgaOnYO+7{mW?ly+QVXhv&M*aNZq^54djcp`yI^ySM1`7|;xA zx8m4?%G-PFLD%g)|I_Xlb>4g5&-)pB%Wm%f?NMNFzdfj5f7&NI`hC$C3$F|5&$1PD zvYvbE`m>bzsN7q$ZEt;wHhQi&?=eAU{^aAVoov1b_=o@iKLJ~ivPGT+g!np!`l>KH z?+y;QH9{-Knu=+SCN*=jx6%ur`!ancSO*jUNLY`NilgQyTFR-j&mdU_oRU~ebDS-~ zv(ZwbFO*8^FpB>Gi?+R7LdqQf05{43!~8;16>Q#(JhTl6xPEOK275a?=NAG099G;sp$PJanU*}14goiU=Rmtia`f_iAPiRP(>SyQKGHGS==O3sKY z_{CJ{n5D?^MVry67(TNbv#T{|ya|)lEy$w{Rp?W~M5(KE{zuf7%n zd(Tz1-G_D+Ld$j#lGMKAsa$VA%1}6NVH!On;-rF+!I`o&W%1qO<~X!xwqb1bx6mF< z^ApFj8W6gOTl3hFRUj-9br1r_&|*9RHp5>*ATI+e>;#m`7;v3M<`E-f;<$7$HJA^^ zM47Sb+zhP=*Q@1luH}vUV_rgAG+Dtc!Wiwa9|Kj}ei?EwrO*nzD@yMXk6lRDIiDpn_2lw-0DVsz36rLDzu^3YIPo2jG~?(HSy>n6Ss zRe}s`L}vC;vQd-A15MIaJMRU;xVH6-VG_kWKufW_hCfcJ7ex|t7Mf|ysD>@feWG7A z%c75{i&{lZhd%eYFQixg=4I;6wJ@c_Ba>m?cjU-XXhwf9cO!oY^Tl`78gp!AV-aow z$9&A@s;v{`altnWZAcf-HL)bIpU|kFvE!Z&j>)vh=%{hhcS2u>?Q+g9(m}Cli9fW} zKn5+;ql8M!u@&!1=-x&y3|=j4YI01(hffys*7GsW@=)P7{ZAd^O2%HHz0Knz4&V33 z_i_vj=YWIeft$x4cJ6^U{7eU%8i=2Xe9fDi6lhYQNr8_F1zgN_7c^T{0B%80fE*S& zLAOkR3#`&j)%nJs*Wba=l-|>Wnakx%*VCW=>Hm{{?;rnTOowo01T>n!%yK#aiO+xH z6X{c*{uF@8MHc&N%F)k2FfSkz;Aj)1Nq|{mHN|kD&P-2cA_V%HvIy?=NzlYXjl&=R z(N_o)dJyf#St1?bEbPXjn*p0ZiVy8@A>RGoU6=!~HO|LW^`^Ab1^# zrXW>Gv)3un^jS(qDJ~@JbNG1dU~})ahUe_->&Mm`KM&|217VUd!K>BrBS6)_LKBqR zH*TdFd>=ke&WD-l>2&MrwX}r~1nKs|1gwM)g!KrZ%!4mq#z%py(Z>!S#hLXaAy|ho z32IBXZ(m8zJ$Ht1tA>YN3R58gsI;;Ry8)D|NQw;^Yna+Kn98mWV&xMpN&v2Qh;GGv z3P)aSUT885BvGM|2-nupB;lxTWT`ex$UN80xpqLES)6M!B<732p}PbyReK^s&<-$c z1MC`)-w0KPLA4KT54{}p^r3~6Smr~(8DJmUxiQkC4ViB2Gu})1%9PD7RGVLnz zFBnehT89=T`da!3c9pDak`v}{J_n*n6S$6OcXqr+icbAxs^M7EHs)|8$_gf5rkKOF z(K-qeotqWf8ca6j$keqVf$w9?9XWa=ZH)AyNaL7{KTJRi9CZaV!oFd`3FE)h0t2`P zQ*3+8N?qoonP3g(lFCMXCA;qx`#9GT{~ePFA`mbHtJ<}Hw(P|u*%ri8GCVIA;K^R6UX&kXrx+cxAKDcNHgeVwsX3eXJY1r_RM#g z41|Fm>U`H2zYF+L>=1%@2NOdb$(@S|2|C&5))-GlXVd4T1!mSU;eO0tH7(55!Vf|% zklLxXhJa%C-Qq}bIM~l@j*ZxS!uxGrQ(XUk*Z%D1n+(LyPQzviO$szA(4@eJo&tL{ z4>raH%um1<_XV*0+6F+l7%M3i%n1Iu5K{r24*>v3R=@VOKLg9Hr8B2bVRABv6jHD( zfGx2o>+A_2R%5|hr|-ZV8J$^{0TL{lUWimrTWkSF75@eo*Dw#^n2W9qi?tCbDRs20 z5{!lt*qe8!u))TT|0uZ#U?K`I8_-cu2E(yed$o5zp5wFjeWXWm%>4k1d`l0P>-e_b z{t}3~M;S&OqN->Qkb)E5asi(Z>*hJlm%6&MIfohp4q?Ky7SdoNzH9*M1inUO%2}$x zXaFotgG`R48Hnf2hcHh_OUqUI?*okGS;et_k!OH`HBz03ujsifX;t#nl!+o6sfFd-&@ z+r&r7nss%VZ$i==5y?4_&E=LcnKLp|4`au^mZ|VrMr7)O;V~?*{k+MueWQh+0`Imm z42$5u3kFvj^`NQy;mfb2%jd6BzjmTX{W?Ji#t?=uCi$mnqfCtBev|o9#pzluSC)FSpmE%V@!sOb?~s79XzlQ+%`YrcM=uwEW#F=xY1q5(q8(sOaMxI|AM_ox^1O?C<2#o7 zSnOT=tv3Jo?LVj#;B#trI^Di=8-}6{%>+Og5YwiV6QClv(3c?t9PP#daY&X0i2|@z z%!jI&M+lgWtmG!$yiUn_@w{LfV5lP31Lf;$;koebfL3KBo?T@5ZSN#k1YNQUeJaqV z0&UiCu7>jn;NJ>B6F}MiX+o{uzI`j*q3)w&!?c;Yw-7C-7flJys)mrQp-};S(#4o# z;dC8+4MVsBfK!7638K601KV@=?%j0Z;)U>GsA5)92l#g&x$c6YtZKKXl7BC}`ku(XJKzt1|Egz&t!f}E;JwPo3EXGrW?c_R#P~O<%x8qyW zCBu0}zXB-rr3v89g65KjJbf6cvm#KJ|!~u}4j|_n(LRp(2 zn6!G?A4O&&#$_Cp(Qtlv0b|G-QlQDuj0hy)_B_qxH1+UWF7{aXc(f{|H z7AQv<0#=T}5bU5u33Hfu2FwQK>3<_b6wEmDRE>;U5)-AFo28BhAk2xP-Y}T7(XoRF zfXGBh;z{~9PoMUW3}GUN^ZpWv4bhGfl^Js(q9O5YX|MzXUB~3D+)Ef`o+IO?37TUi z`VYau48a2CVYHT)R@3q0CpiwItM-C=>VG4Hs`g?PN9!8>VeW;fFD8sK)G`2?7ux1F zvuUIKkWm>O#&?GCyiSy-el!T?Yv{mK$@hl+?zJY)(?3Q{sL|Gfxnl%W^rONL=oVT# zHGJ*Wv2^w7yW~IV3hgRnxhGUHw6dB+-*NVj!3<<>osTk};fKT6%43A_VSjU-mdq(GAbO$z){DNrn6Q3(J={+$;&rK$dQ@m2yK zCOCiq%}r`Zhwt3J9?^9!Uw#LZmS@rc5^AO7N|Cjv&$hjQ1vWFtihqV9X@m<^&`19G@_ag85x0^U|P5)s8t%f2`B+x1&9h~MvlLA?i|m5E*vWx zoCZ(i9uUYbvmmHqfwr7IAJ6ao?Y`T?zT;%$PiRiKTxZBYlN=BFQEyFkN|@R#61H?1 zoAciOk*J#3VT*HWbqryuDN?KE5+V}nEHKm`BD57qGAn=~BS=Xv0hx@4ph@P;{ca*2 z)nG(45tB}u+L22}91g(TLxnM|xbU4G|kJm3B? zDo$T-J-z$xyF`_miAYnAoqmiEp!1khp?v_fR*16HB520er@ITlXFX_-_jd!>S}<3t z!%S>q7PMmM+zqq~Ff?`iEHpP+m!Y!tL|qaPM{+T=PHy4fV*fyl0NGqw7WqS?0M#%h zC6KXzQ%xF>I)I_~nVDHSt6?z8k)|j*Yg14Fz1-~p@;2_{ULWb`(ag?%bnIft6@4dY zRobp!0s}K&=wJv&NG2hVRcX(_iSZ}EmcCg_0kgn!Y=eG99!KsUOp5i%qel%8eaW-n z@ADktSr+MB){A1ty3^Lol~`FBHJ$?~-`VDzbb;Zp%~sDofD9^H;+}1uzlf$`&dkdI zbI^U7Ss*0vt=V*!Xh@I~AB3&c&ba|{dTig`z?^70)z!uk8Ek;@ZX_wAoN2bC|A7pI zk(vyxeB#)NTpu1Nsm!{qHbua1eu*laWklP8F_sP{hg3Vsk4SXa*V~^4Fzf5Wse7QG z=uP+$$#BSIDFAT}`CJ=EvzdEF_JZLjEt zVdwWB-&@{$-MjbP-h1Awy#42XUccY#`Fo$?{CB~%?%w0ech|Nx0|c+%+qS*;H}@YM z3heEp=>K@P-~UqmdDeFS7~B8*=lQHhy)5PAQrbT7-Iw2gA_evVQ1`SEEPTdZ?;-Q- zI?;g)@wrMagKvK8>**8Ee=PlH|LN~WBC{HjU?Y>%x!(K=xgbNCuCt(mXk2iWE&{ME z|HU7?nEw60`{VTGFa1L#g+@{V5+T*>B&_2GrU6Dx>Lz=$xdS$Ewsw(Law$L(C@Se& z0sNjneOvpRw!9-`gzWEKrs95P!gIy>Vq6yAf`d$_ z`_~jrJ+!~}o#go_Lx2y^6ae0xxl1y)J86XIGsDBfv=b>Q_1F9;(^!Yw4NRN51KjB2 zKrN8;_lAjviQzQw5Gzk;lVehu4;DFx)>^%e!0UD#`YGZEcxVTasOtER&+lOo;*m0zm+S zG?*NEro;41=bT^n{(j%>J7|Ej5-b}a0QQ}E{ocFp-g8g<&i~6eXmh^3y)!^p6W8_h z_RuEc+ykKIxprw~hQ3#u#5imJPTwjuK6Ca`dgatP7=?CnZ`_l9=l}c{Bn0bD_u=#M zzDM3qQo9-MDF$hLBgAskS=ifteyO@~($5PH?D2G!k;8?qO zozJ<(9LW@l=?q|-eu+%kIBQp76R&xjbEO7`238YL%v=Vjf}w*^C^4E2V`EHzXL|rt z%Gn|@n9jG3b@=6wFQillY3lCWRFW(NRQuuK_?03-H;imByUc3=sODh)<~TcMGJi4w ztIM=8%F3=Ys+ML>K1&8ByO%aop3hUNEjV@^mIH!AdqEYw-m%u7VHE%!=2+B6CLbLF zfY>^y6Qmb-Zgdr9Kg`b1s$frpc8oBt0DYzJO86~n1Ezl-pOrPrDU$)>H=`VtBjK-x z$&GoXq;pp$Ve-n;oyYHt+#cucqsXC!Qn(^8?H`vZGU5qc-V3QD2Y7gT9b1*!TJ& z*gEq^NDoYWr>25Nr>@RD!EBgE<;uVSV^3tI{sRa-@OQws!sL#1Fc)?FzCc^0CF|VZ zPBKLqeR<1zG!Y61oJX2s*3?wcuG`Y&)OE6CzYM)Ojlkmm2qD|vT1fzhLHZm91Z_|? z^HYtYCWwxifhU}6j;DEOJYt;0qY@2Y966ndFWY}^g=ubuV|U*3W`8cb_kH*Lw%jyi zkU@Cuzic~sZ55n|@6;o&dNxk)+;+TE`~S_Wx3DK0&)3h-*ue9FfAcD^Tk@OL1KZ2= zwUh~Z#Rk^|Kx}Jm!_NLFqwnVbpT4GFKY!k=X1yKC{h>`t$sPLuyO;kt)HLuF3E|Dp zpe`f%g#Q8nqqf!!axp#j*q^04ZaibWp-aY%$efK@UUR(<3APX-4jN+1MAdv0~>I744XIJPbrz*hg2Qy|I59ObSQ;+wbd2SEJsJ2U2U= zD440jjG~#)tD0q*UqkJHVNn+e^D6TsV-|e_*t35%b+T=qTO~}Yz6?e;YGTdQ)i;tA z{B-*EW8Y3g0Jz!7N$lu>oAk{pQhg)icwH+=!uB6Jlxi^f7#ai}nMPnNns6K? znhqI(9ph*}_s`F-q%VE>o8;UWX1wZ2`gM1@@BW9<6*LZ-@F;DUk#lU9Y10a?0-$dT zNpJ~_js6XF%!>w0v`PSM+MnAFO>;B>5ph;G*M&wxbG8yds^^1oV@%5dgqms<^<$vS z0wyW?VSv1YfiUV$8D>f4JhKuoTnp%}k{RQCfmbEwR~7gxloPV53hhY^2?%98s&UK} zfS2G{ECa$9)&-_jJgb6oWS%^Ss6L)q>YCwm3Gd9fFyShq=~>4%evSHAr`1Iy;DkTj zG^Ms8eXjTW2G^|fd%W{`9{&`5M`Zi}gFt-0ikO0F22*V`F3MZQKV$`8fhArlLrP$J zj0{9C5K*W)HPkewdK}ixifkk-+fzr5gbIEu(AKJoTGkz6ki$wttIjmhjaX8y!z4o_juB1(?rH;@2aS15?-B(vhl>-k&{7gf7-@OMMgd z#fh4n3Qb7zi)bI$%*oN(oVt7a(igt?AMmevg(Q;`N#}gS26uLJ(ASCV(`O_3p+Oi# zsWa1)>Ey|m&|XZFnSCk3tIC*Z3K)zR&v6Yo*L=CA!XcZXdExozX;&fjl05Mc&lw#a zPM0rU!esIy>rFvO5$1&Ovp7V%mh|(|tWr}sO}Ul`fbh!67csrN21DG6hN2p4zecnm z21h^(L*l%PlqXYv{Ej8p&N!jLuAq>MxeH)vf>i?X$p?PWoE zp;7*p!{oV_s~GFc(UchcFl+ErS`$kN>Ys)!iEh9s3er*%*=Qi9lZ+3 zPod6VT_u|{lI=Wti3RA;=_V}DGg6Zqz2~lziTDOivrqlt`{5H%1F+FHzmAPrlcyEH zR1L|@){)37k=+#F@O*8|-A!HZnh0dc#5ThmMoIp|4}CBIxYsJJH+hi$tthL2_SFtCU@f6b6<< z6P&ubS{R2`oYVUP)R&-nssey(ioyTXP}`K&>nbt-P^*G;dUgY*V>%r;h?6aKo5N{* zaAYLie(d&W&m#FKMu&!jfiU@A9RM{V)bLz21f|qx4SRB#2W{>hZ~LK&_LVai3Tgvz zNL39W>@~WPK)w#JTtHhuZ!!-t6~e@ci9;Az<`6CumCPCA{|hW5A`;HM#`)KF-Fcx| zi_EV5UEF{f=Ce$%S`QtB<2&yj_P1IEUsY&P?Ds9AM#)r_xlS0*w61nTjT#IhlO@Io zro~LuGIXJ7psZjd7#r7^{sHTRTcwKpKwXe%Yhoo|vPqdUGni*FZ^FODdQu;HlNpnnEL$RTGH7#FGg2m23( zFhesYHIA$lm9;MBI02m1H3e1BhM`m4K1pOdU2R!KnypHcg3Gdcg05&o@h9=`i z_!B5yTn2dL5=kZAGC!P%b8h5<7rsW>0qFSRb8hvrfB3=1zxp00`4jz?m6OpOK2s+T z|C$kd9tYC}Y{W;djZps*q@4AkIcOx8fq*rl*1%wBf)RB_qOG69GMWk>E5jD!MS(ID zIy7r~F^Sed-vFhoY8TWr2qJZ8mO*ihte+YerK+o%U;vaFNyJtF=nminIyp6!Rxw9v zg3+o5)NW#Kv4$xNLS~+g$rvG69WxWXS=Sb%#t%L8Amfb0wup%k(rZo1Dgf=PD=>E@ zn3&X&4H#1`_!I2emr{EVrXqlA6PNiC6za%o=HDe8tiypDrmn~fqc)`PFjS0h8K8L; zhN}W?Qzh-J#f+;O0NS8dfVn_d(pt3{>Uv~U(E$Pe1>1&kErD?oAXX5=-!QNXGcdP= zokcjG&0nt7tgC9XE>^|y3pJhYi<0M=F1$Tir`$v#0WNB zh&pnwGbWC&l5!>JY7HEB`yoOe^IJXRt~RPxMw)T-D8moMpad=e=cr7p429nd!6jut zc9S_-ti&9T`ZeP_u!(~^t2;GSHKj?IhSe#uh)*rW_?Om{rCFw118u5e{#MpDrtY?` z^z5aV(q`{QYTwgAQn_nklGxSNnL1eK<hE`BUbYVe;L(?vNg1A>-rn)e}a-OmtIA2+)V-%#b3TjwG zj*E?OY~oMOSj4wD|91KFW5qx?9RBl=;Orjnk{)2Oxw%0%;|S(3|MD(r;%+l`d*IFL zfo!wN=%Jr?Y+bRD1p~pu<2rs9{MFS}q)UX~)ZtML!Tx=HnAJ?P=~spsKtzdQ<8~S9 zR4B-riU>qEFeP|_2quGUlqGDy?ddmv~+a+9@i@s$1#r_Y=Pn6438@ux5+SOAD>KBZ*dNJltnh6G!9EuF|;7V%eo ze*LCx@8lc0A1%?op&~brI1}e(9JJe>0PLT5{zU2|f|1hy8<;^<;z(Kw_|@N|ozSY9 z;Vj}98g&NX2|DzX5KQUV+zIdkk5q&SyZG zrc}#Fdb{@Yra9_#ao}ozn;36ElfVTzHfBlYegHUAzUC|SfOg-1K;1PXd-&mpL$VE0 z2YgphhIZ_ggoSNMFT8XzJ^TDgOi_rtKfN50q6V>RzjWgUl*Pg!6NSJG-y|Wt-KNZgLV^>B~=YjUrLQ=r#i4n||G?yyiRK1YK@jq&7 zsv~1{3vE&mP#Qvm-tzv`T-%)*xc2(>8^PS#pN2TrWN8vc!#=rsWib8LZ~b=6mG3|K zJ%THID}D5%A5I_txt~d`Z8$Dtb~Qdek!Gfd_QX1u=`&iA`66PRU?kN5Rin`~T3Hu< zIGXDj(dn+c?xAjt)SLVjFn6E-<3FbDj{7D;jnk~b_4J$n_1{kmteL9=m(x`QCC&H^ zt!jeF8k>W;UtS{g@oG()z^7w{bvubRMuzoMpZo;O^J;qT*=LwjYw1@%`)ld(?>$Lf zr>IYP`sttfnHWDYi~c0ym5Ai!9NvDpZat(nwk4)wOrkjB+5exzIs4WfZ-{}&iLBL% zh4t3e??3)Y^k1lnAg*?$^$jTi1Ti)p&Kma42^;ECem4xD6UTQYIxaT3dO1i(E`}uD z-E8D;e|QjspuDcOx9TgOV?AOaQ%b=jLr4ZDXjs`8^gr z@0R7^-z@5bl8r2sSSF2QLuE7fvkS{M`V5JUhwZkpwnc*GGbM`oXQ74H$NkjBb|?vu z;AVZRrZ|(d!0LYb4Uv%Q|_^u~W(t(Mnjf zw#6tUH`_!#Bv>9k!t$f9DbxBI2Jz-b5m)X0c{}ug9B>%kg z!hC-1Ja?o9bz1}DevG&eH_^D%=t39;7ksVHtB`Gh1HN>N8ivr|hqN;zN2nit2d02nF&JV3EREh)|vj!bwqaUch^dMer-1bQ+W*XMlXge}9ZsLCTSy`6Y zjCQ=r8%P2D-M`trUY|KPdcP4|=s)UcTz!8t`pP_Z+w;>CIFrt%n!TN=mK+SJYy*u= zGbTEOK85B*ZUc%n6Y?sw%)Lhwl6B}-DS)p4a0A{j$r%&g?Bgn&nYGm}LvmX|1f(JY zW}_|5Vg^#=x@r2fg1VH`50%)wuM<;K+j=G2GcbPb0HWF>{QzU6?r4O{v7<1G(HhyY z4U@Wp6mNH9Zd>-cgYou5FeJa%m~O_RyG9n+^0v>p{`o78S8d9EZG zL|r4MFOcwhn1;!z`E=_16{6wvq;YKD%c<|eRjocEtczHZosqVMGcBIKyo zGf^$Gz+A6@soGkB3EbQcoy#1MvCDjcoKxV7$On?Glj^EE%3~i@%hQC}7kgTONhX}x z*u#;UdKryK6C_P~VxMGg=&0{rSpwsLZ4u0za}tdP>z4d#T!&9bNmFV-n^#)Z8gnrm zzui+c>EdWgb*TezyF8~H>C<95bLu64H{)E&JgnMEQwvjRWfNwW`;Ct?kI=g%_*6`%s~4`MD_4pU8ueiR0oq`q!IE_RXkY5<`eb_gneU@bAkx$1 zU@C<+EG!rzwKjEh_o3y2R$$iVdetGl1bX89mtN3pe24a6es?I1!_2~xr6(SL3f~M& z(4c#D%(;4;wVj9SFxX3&D*eId{&}o*$6F*}_IOx+v_CL!r9?Sfo=eNK;7Oi=9t5V> zCbp*ioqaG2KS;~a0-65Rg|T%0m1mgSFqrs;eC;b=Opku}qp7*AGyI(jIIn2dlqJC< z0vmHmp$#*SapT3qGa4>N^d+syUazO|j_X@_ydehSt*p?0>a*-nRl0V+i_PzX(X6B0 zG_avG;seCS%~FEvW@GdUZ9G-43YcBI;h4if<%8r#kvVHw`d{;i^0Ir~2$%^`C+p?c z49r_+Krypk(3`6~y*@xb?`|-vDy^HKIcFYZCM0hD?r&V;L*jo(X}H(^VTa*9BWl#( z(1iMw2`osL;ZW5X35wVtbbhpKpDSSZh-X5)yhkD{n2!zFnZEtI*La`rwk@P8ynEzK zf}dpuyiUoBN5<5-;N74BE)r?p{g*KzYzW)u@^ak#-MjqG<8Iz(+0k$oz4eIsK)C@H z;(9m0%ublEyT@)1ylZ>F`TzRk_2>MqroaSlK|iDs@bm0pVY{yc+TB?P%BR2oRG1Gm z;r!c%>3{-_ShGAt`r+p_qMT@o^!y9YBH1N8C{l18r@QxbhZ?^T3A9d&YdGx|*J~(S znoLqF%FvNmTBupaW)X%08|yGsfrbF3QX9^_=PzAOGnl~4;AGm_*#l_6W*XpCRoxQz z3ChEaM7kplkqpw9?XTPCGTOqI_~(268Or7!&avHhmO&r6w@Z^=+kev9jK10Sj5cjj zr*Z)O9N|uprUUjP20U%51>_1w1O#RfhD*X$pZ&;lfKHviD@>Gy1ar&ZG}D1z8@FDQ z9bi%T2h>0}%P=3(ZhVRT$$c%On^2HDmCeyYEU10J)io=`?&9 zsVt4!!a>(4OlxQsfJw0*Xc99__{urT*8#Sxvm*@yC@-GJj(mO;W^IiN8 z*bA;*8)Do^WY^Y^_V@2ky$707|Ka`s$4dUK-_+D3lH;kQA4DU}ANqvwRjH{4NR!V% zcFB2Um`oGixmQ^ioynJn@k^j>8_dHkoQR7s1Do`nW;m+|4olg`m_5u{GGC)v&;ho} zoFYbEVov)RSPfH!9Xdd}3J~dDs`ku%F5hR|x2$V^82U3d7;0yvCV$d#UU07&9jk=$ z*gsrw@)Q&ph zW5Mij9xP*1Z-O#k@eJE4HbE1mPlWqkg!To%%FxQhxaWmw8+&>UA$whWVxMK!=qe^h zE6m9?`j^gD*9RlX8n)l+zy~l2v&_dtlDZA9pPin=JWSuB=3qL4Iiuaqx2_%l^9H}O zmdm-`I?fT+mFgi#*obIiON`;_wQK3%d+wrMrQy49_ucoPi7GG`2Z^#}l(sU20gdUK z-~2{8bYLIAypRqbJ(Tv3?WN5KMd|NrBZDxb4GalP=k^>AKP{eR;y4pjuAp71krAhT zEhMy*zUfCah4x7;M+s}MhG=rtnDnh%(U>*B zjFLs0wrS30B&Yeg1>TA71ykLEbAL@WeF8%;J3AgeGqp9nIBB0kTQQRk?B5#+98aD> zh=M6rV@qpHCrzfLCC;Z1Mo|C!yL0b{K6`SUh^N5FtU^-XSWOWO8#70bc=D z;rL|^RCh`&14Fp$c#3K}k{8&U1dYj5l(4zej$(-?ObTXiO}0 zKUrTlWn+rFA-SPPf|%|4O607+*JZ%j37FkyAJ}fS5VlKIw~f(mGTKF5EmJ9c4&VjX zaSi7);O!iJmASFbKF4z&%HkyI(TCQPGQ%!$yT9Wi{_Lz@JcDzwh#_*;L59JN!m>Ri zD0Wf)-E;BG?6KQpl|3)6p+5FYFb6S?*?7rx`5cdMe3O{_S>j4teYVbwwqf_!?SXf5 z59GAQ_nn_@^Q-4r9kI5hlY(|khX5EZ$7R&>u5$rc5!!O)>gDwED=(!FedrM)t{_=t zZL0m#fz<1yqpmAy#MtDHIRTIB>FN6gM&k90uXRza0CEiNYr+umN;<&Zlvj&l1MWJFakqq zfhGge8=o(Ikn(1SR9FI&y=OEoBRDy|i|gz^@8ve>lwe&tlJ}{1bIEp}avmU2Mzoy4 zks)wdF}1X}qBW*35qFp?x%9#OkLF3*_l)+1x5+*VO`q z*^{)5x33-58vPSsT30uUMU>&LYCeM%=b6m^89@Q{QOq^hx%JI#x7_rC-b*o~IIyYtX41K&w zM5{{IAnjU3n!m(;?tCLXU>+xNqd!e! zDtEm8U}|L?>z8UsC`T4>1dyv_gf2(3R6zo{Cd`JGVLInAH=0$WNxzrjyK&pG+f!?O zd%D!1P7>kmXhbf%=bn3Dbk^{B8jZGA;-g{P^o!`~-XCq0 ziSwKqmwFtxSDBv*BDy*|V{T01L)3)kMJ+{NUr%bo_v*sA)AR+52a%S_D+pQK(*>hd z2->uFZ%?{@?J}lTh;k|yBQ0!zJVng4qf6grUTbKWCC^t_TI+vd5v ze(`|3FZdGYd9EAo3LA~F)3xO+YyZb*$aHz+0dnOB@7bh}Exs^((CDx%78`?N^~U01u>bMj_avQN^JmH689`_T zbDnu5zKcjg*I*QUroexO{x{6AJ{3Bk>O@)zAl%otm(Oj~or<#`sJRf}mH;T105oa^ zx-hdc@{VR|7f*44D7HNvW{LF2dBU$z);lNBmOuB?TTVouJJmqfvw z=1&fiW?RPlpT=2sZr)77glLud!n_VX74sbK!E~#*yb+i{z-jx#nVGpqSD{%5!8hX} zf0QvJGA@p}-`%J6wJ88_eb)h3tz8vktYfjvcMHkPT418Bk7L(@R>yno_j#BinQ8@} zQ~1nG;*cvtAz)p`Oo^YUZ}zIDofY;6jFmfI!O`5 zPY4-eUqbk10Zlvz@>Bh)70SFL`u-;k-CNXyXa++dI zPE8I64So3G_ff~w_hZou`ZC|#sxX%%z}$UQ>JAmQUT?KTmJgj#)Zk}RT}mkF_4H(kr}2!@2u z0)Ag!=lwaD_d1yb4<(SfMBi)j`q)&jH^kyKRG0bnMh591-m{K^{w@Px-;^QM@%|VK z$`5BFC2H0iVyOz!&%R`ejJA+T9Mmd7RQM-Ds1$RA&3hO^rHZ+=wH4yl8DZ^wp7-n? zyFKvZ)C2jt-r45-obkw|eS&MlNE-4`EoKoj2*I1CNXyG)WyR4{$K(xS*Gr=`UD&{m z+^9g7rR49$7hX(5!^5cq8{or7j)bX;>(#X`a6Ep;9jUvcJDtX1af0~ob5paa7E^-e z98h7FWYRa|)BEnaFCr}+9UDteJ#&JDWFI7k{N7ZK)8sSHJ`ac(2nWW!_(2@M>w%y# z(kpWaxYl`ew9EJW<+d&3;JeI1_Bo>~`RD9C6V~MYWZzjv{6>4Fl-XB5xv6L0Wu!D4 z863Kb9XHa~mOAJY0uq>s0$>bC2)#qn3iGoHZ8wx-H6|l9U64=S0(>lkt;m~^a z+!=t~B>PV(j=AGVcK1MU>)6-usTiky+kzyW;ER~d#@>sGN)d2ZjexI8@JhYSK)udh zY^Yhysa9~V-&FfRzpn5;L|=Bbcco4kqPm_vIPKQqAdM|L41?LRO*B`J^SHz5Ug?}O z8DV5(rVl$iTfz*dy|q0Ab(*p)Gd~nIx_3Et?ji0)f@1eX_hxYb^7>d8YWNL3Y6K@( zlVHZIyUz>lKMbPUe)p+$G#oP83+&OFAx*8$r}5!gay!hz7~n%Ng9Msqu24s{6IxYr>Zu8o`*#&}4^5y^%IHVi zHUs!x!vDm*v8=i@HL>rmPY^i?hxP)@)EpWgwL?n8)e<&?0ZMsRT|*0FmmQoam(zzn z^k_PCXm2`y;g!_e+nlPW$_P_UzyPphdkYz+;r?40liuZH*BVJ^rghe^0gVvfOlpBWIe3E=VUB= z_Dzie*EK~)~~iJZ`-YEZXfOZ-OuH$86~bV58C1?w9uTX9{&Y1PQUc>iPXkM z-Q3a`08I&>!WiS(>w94KVxtQwj2So7C{j_Ao@p{;#@4ph=2YGY?Ly^m2INw9&DH*X zZ0Q%-jOPKB#L0f+@p3=nmzxuK%*RaI4?Fe&=Do+^VmnjnWQjpr#+vK$!*o7osm?Kfp8v zz@(IX4WEE5awPC8zyWV(2(k1&D3G9;K3_+2UP+%B=U*Yv)GQKcB=JVp6kwEKTC@(( zGE8nArcu&C=~fwdmAb7s^21O2fFS&sd% zj8xiCl_vjEL&cx)-3YA-&(x&IdP|Sj3z#)wN~4pw+6Nf`&380!Y9sQJ^G}EFG92C4 znFFgEGuV+gr3FF=mtyYJ)zp~~hNmh3ngC1lCUaG|A3Gj%n#m9`EbQiau0AB@mXOI% z6HwPim|Zmw^uKiv--Ouvvk;<&^QJ8M4)!g!W; z_d2a_V&@+dos}`HnDyCAUU=00!N>Cn{(5@WjUB~|>OmFPB@LhnZvmcyW zngRvbL<(MJcw5#CU5CSYJTGX`?~_Dv8xkAAOq9bk*;Yf@I`8QEz%R3eBsN0S(C{G44E{6p8+tCrL(2@99E6t6 zk3|yEEko0mFsoW!K|=%Wn_(PkC|3=cnxHl`rG`>oLdzyoX)?cS!=tGLt;GJl&44+~ zGcZ_Y7($P|dc?KcUtdqVUcKtg`}Bqwh&S)?|M^P}5YEP-W7El# zCsAR|qJfxYA}I;LhL+!ynCZ-yFET;yBOmwxT;-lvY%V+rhPLx>bWnWm&4FhU@SpEL z+`iXrTHeEj*41n0QMX;Zcqu*egXcm*bsu5xjFIdDQRV7l5O8Z3tMvXValEe*mTX{P zAP9wk+~4|odeZ&(KM>bg58JGk!!}FwG)ovmlK0ZfFNfyBbM}SA=H7eng^NDKoQ4Pi z4kSK4OJ>D5>&8oV;d-9hQ+8&~#K-6>%d-D`x4Z)f4g^yo^Pnckb@h85Me)Yfn6(XLr;k?Wy ziNHZ;XEP!G|~FgZHN+w;e?=QxC|gKvFo0h5!jF8*!lyP=jQ< z6XxRh9mmrJ7=lrZb`E}q#+^P;k#fiPD|G~KQuU$x{!9Stu3T!`k=ED$4Qv2G9;dY6eZ0%m6u zz`vxngbp$Tv?g+f4XwmvrGN=b8H~|7lI6`sz#wKt)i~U0+69lwY$VW-*OcifjYYvK z8i#RAvxZkvTVH!>?rg$bh%lvSZx$C7RAr`4=pfQEfH%Rg)?sEMfTOrbR#wDhsjR*% z^|kjQ#eY?U?cU-Z>XBP2RI>M~i8Dl}=4HOCkqBQ47(Qo;3F`vn@p*$dv|+wRAFH7O z8VCNUq#yL*VL(GGGD4Wr1@@+COlX_~=4>cuyc*D|7!6BiC(OJU6q$L$@A^XAh^bC5 z%og*OJ<&W9l{H)o(?;d83COrPmsvQ>fs9!!VqW7Otd=7r`24Q+VT?V!drvRpKEqy# zQ!wkT$Xr{cF3Xs7RhBRZ4))R?j8zqTaD4&I)}=IX>3W(Z($^tyQ&SVne*uT-`I%G) z^Jy-PjSxU+BCcSQbxd%Bts>?^Q$)x@7^$yGtaCIK`eSf8Eh`Cg#}9zV^bPt~zxOZG zqwjxjSP!g2ht8fmn+_d0hz|q#CKzw69JJu;BmzKmbWZK~(U$A*63lb4M^(j#(}B zQfo9b4r2g~nL|UdFpUO)MW4gf*EH3pBbq)D zYPJfEQn@$QrJ zrb5ZNhkK8N#edmK&NrIu-QTm#$LlkW)AEdHqVps5ANIan5YLpE z$jq5CiBULIbDw=51mDGplq?@V@7q0gd*H{h2L#ftqbvu5iL;ESul?{w`q%&F_tP)` z^54S5pb2mRvyTL^4-hjvGMb(zufuo0`yDg^*HGQ>i8$wbh+?9|dWp?;0}~DfANkr< z^ShvD?x=`DcVwg#P{Z|MtJ8Lx=B7 z=Pq2uej5q%{8GAn=_1)>&jAc)gT6oV{zn2>NQ2aBXigC{ho$Z6&X#zlSqRN#oXF@< zrpe6cOHhLNlhO8_b0QNM33u}QphqGBH+|@fKwO}C1qte97$m4=>V|okBjH_TWid5( zcOuBhfUdN23v;k~oJk945;g$i*NH~c(%JycL<((WBIw=(Ht{Qfh#Dldz1>}eZCy>X z8`JU#06Tp60P9Wk^9G>g$tRym?MRYaFc~WWw14NZ@1j+xPVdEhskx;cAX5$)UBV%L zI1Mp|<%|VA0(d4-7`%$kr#%Rw?tAE=wEyUx>5o4D`ShN9kEf4(?o^Y_sXZANi^DDCQiMXj&!#$5RutVLp`r>T@u3b0pTAL))Pb ziNc?CLaypOFITj%FhlY<7+8Q=$z~Jn>`wF0_^q<3G=syvQH?4vq3iAI3n1wDE-}8V zl(hi!q4uK+e;hL_(_B?E*K=*-6>g;`#W4TV!qD&^&7BM{%7braIC~rz#4mSU_hH#PiyfQ!Y``Fqv z;ea!NST*g^^p9Z;W?jd6tq@8Yu;H($OD!-7;+`d##;UT$bQUM!X~t%OJ`N2P%zHVe zIvd!{ZOMe8rI9X_0)&r0a2NfZ(%|)p)Pax5;PqiJ$2y@_dodC2rVUySs6B*1X5N>> z5SF6BD#BRlM6IdS6wl=%`jtA;-{x^x#ovP7;#w0bmckI+l|J^dk743C3L{lc0>g)5 zp6tV?Y8ca{r(bv;hT;-UuSTP}mHzZkzes)Uo0RUw|Du68T#y5$I$>2ozxMU^qJ5Z2 z-}v%>NL@z{(JZsTFQjIeuP!tTb>P89@RVlMU;o;l$9!sF&K&CR$AoDe#-3z(T;`bjT-F!+3kUMe-G$OsZtI31FW--$Xvj?!VWc=+a`%Y zrWFv-CIEq7V~O)2qbV6Jy2%7^MbLpL&5Po{%6J@fU<+`xyc93=O*P7++|$< zB0`&HoOhSzFfGE|3aXrHF~_OKq-71}2QCY61dYTDLg(ZS9V^*(YNUZk@(aY~FLHhv z=BNS2LC5I=(%r3DGTjn2seoU?91&gWn}KWem-#!Ca5tlgs7B&lL>p5FEuBTXQP+g8 z8H~y@=3Y%LXazJ0rC)prPz`}uS)Jv`k&()nF0@7njOqbcng^|{%+o3O#OTC}^tu+C z`FYy0Fc0uVVq0DY7;EZa{P5)<&%xvt5^vgSNKKh4dM9Xhw(rt+jHMZ}*{A@&&NV~d z8UYF@32j&Mi_kyjNH|H?qYc23wFEo)>3(9H#^ZVU=iCEA-bE^S!JF02fZhJkUAAycVd3UmoBN!#e81 z+HedgpJ9wBS29A*F3oe4+?P?d7=zuE#_DLr+ z7nCN5Bg9GOxnW^2c9>qlxU{s8VVX{wn^|E^6}J5-@MWSe%fqaW`MqhzcxV>pcxB{w zkzVT4BGa?U+^WV*Y5|RH5tAoanTRgc-c3kXXkPf8Ige4!Kk?ji;R_*n z^$>8zI?cx{8`J#TYu?>Z{F!AJgYJ(`%sAumuU; ztF~n4bv`FHChl=@1e3B|hUMrh5%<$K6=X)rHfMX*{)9+N`~eM~w_Mw<1EO7R`|=K# z&~j0<$M;}3xL?AhG|%=}_aH)yvtykdw-~hTUv}Sid*I#M0|Fqx3qlOngieL7ryJN4 zU%qrM%mZ5RVG!&J)N6^#^3|_=9Y@Er(680>i=X~9rVuw+YD!BtF*#@hAeG~XHoomZ zYnVqOmk=rF7#f9Y08||zAeD@c3=O9bf8;}9t}{F|lAip*Q>hnc==RP%(5BY(g)e-8 z475Ly+M#7SjDG1$UrxXG|NMU1-+z=0*qAe*F)aeTdywis{NRH~r!lvHPAZfUY$?QG z>1XuV<-JX*-Jt#F`^^_XDGuJYKV{$JTSkXGA;6ZI%ITAUI6Kd8d=5s8Yvz$uPK;hp z)7MAR*%K4#ZnA7wH&>>ivB@-e^-B1H^!4oz?Z75d-!UZk^YrI!$BqH&O2Vmp5h?VI z;T!4LZMS2OJ(p(j19|!MKzbQx@_8hfOK=qhK-}Q7QZ;~j3;KEAUGKqcXf<76 zuQ>72i|Lnt{lAJl3Thq>K$rC^nMcTD{C}z%i38OVnS@NxEi+<2Zfq>3=T1BW2wWf> zFQyx09d01nPXB>}>BArTX!_%S_xW(Pz5A~F(r5n0?dkU8cSaJsW%4srV>+Z+T$umR zMTVdi#Ob`ffaClIk(TDkMN!4GYGELn0K2V3v1zVhZv>DF&MRq)&aXAit*HsE%4Qo* z-`KC00w$kB6Mu{lpzc+bGLkf8#reya8}4&e8+qFX2w&oREg-l+{<)uyqWe%Y9XVUL!8abT8vjUB-F= zld^7jChrSt^RYiRfin~sD&(s}+TVcR%Z3aLAm4f}prw&{DZ<$4-=S|xw(r?DFl3aa z--y0Qe1bL2%v>~a(%eUWg+}n=ciJJNuR}GQ6IbAP&sxtI@NBORlP%iJ?4?YEjnpgh zlbS&%FYm$CqVsDon){48*f}zCm9!#cIIR2;Lbc7}`Lk ztC_2CfTaAV=+{B_YuyiCGYm z6Q$z<*nG1ItpfLtViWuPi4#%hP%paFnJC&phQ!?G@K3H-&>l`_JnzbtE5UR)nFP>} zKKf`#?ES7v?OWLYEwd2Dv1L7l&EWCl#{>K?u~=U|eJWIlH2?wcec*uyBFcpA@Vb}r zi;$>k26g@V^{_p(-ZE8>eBhC!ZK6a?1|k*^8%(Y}kP-Uwm%p4XLKcMAC>^rjEyKfe z_FZTs@^iG;LxN^M`TEQ+ekRTZ6UX)5|2?8GOiWB5k<1A2M?d<}DBtTXQ?Q_lSPewj zaxG;9Affm%ukSb3rtIpmJ1SxNJ4fNn)6FA80Sx)NvAMP z{LSC^Z_~rjoxK44p6)%VV^2q_$2MSM05h18YuI5gr-%3UBMn!}fyoQ1|2Bdz)vXXbLg8Fde|4v5}}dfL0I3TKbdI zAQ=G9z2=pXqPRYzSkSCsDga1bSFt_8?R*z%iocqM=r-;qFWEYGF8 z`}e0sOu+_D&ZSS>bx*2ltxhjK{cO6ufygfB2GUdCc@ZE>N$fEdgyO8MtVx$1dydFB z#KVWSnL$~4^$eM78_;Hy04!cO@k(lICWA41Lj$=I>Hx(Z-TR=O0A>1XYUX?B3Z=&m%XzVlMnYet;;HEuvbT# zy9Ps8hkg71{d>Q|c&IU2fC(Xj5bbYj?ugKt2M^wr?!M=K7)CVw+^c^}nEx;bwgB~- zq^+J!pL6sV0kfH2ogjgz4p$*zpT3bb2%WF7~>{uYwlh6c3ETZGr7e=A@XblUZN z=~`84t0T${z_hk zh!}--tBz2aEKn`@Wwe(iH7*kK-a< z82}8%9E^|&u-4Kvd#u-sGj#G^qOQVs>oL2)M5K>3r!FNrk%z!u5bPco#d1!~{|4=0 z#li-$2Qt^yWH>%P$7k9fTQDv#X=Z6qf*D;2 zLV*p;xnw>yE3B_?OKmXh?|t-v^sTS_S-Oq@wAc(50O-#XCbt63j(a!!4NM|T7N$v! zn3FBwXW(3RKi)zsQ$qOOGPIV^pQUJ^s|wX%t#?4Q%&| zpZ*k??+*~cjo>n9*j_$)hWcQ}2V--`@w>n|%n6wTTDa`kOVZHHkSd%`fq}qxqIR*7 zEZALX4BD~)g+O}0iWYB!I&~m~s41I-Nx^ZP^`I%26SA$THSHmC5UJd?(2x>O*V+Vdx#O>;|_#8vmEU;5jB zKlSdv9TPtoD1riP(Oy_K=1UgQvXtwc7ct_N0|P0XG?2jSk015^^^RsB>|`gYL{?S$ z0Kj^N&CNyP`M$k<;nN_%l(TdJd96~Fuq$Lj8STOat3*iXf0U`TTh*D@ z$RHT^TE7FI7u>3ne2A|$zWeuQF^FB{nizR~sGs=mJ8L%TmQ4;c&D^UxO#tq-)=l-5 zze{|$BNo5Rh3A|szE8pMNVqgJ%A*`vciSmoSL$z>maRlT*8o^wud^T2CKyuD!)ql- zhB@`Q;m8a@GlG>)$u|j)^=I+hzadSb9GL^lv_6(26XEqSF4Wccok#wg&+%nhdD|pi zp7WY~Q@5TzLx#-r{%+rHLDZBYs7+F87Hx!hI$rieMkq7T;PbQZ`2vid-9DFn-dV@p z&$~VFZtnrt!wp%RX zKTQA2|NK87wcJR1dV5pUxlI$jOB<$;LOf5uY zN=WnP07_4N>#_9dU;8YYf(FKK0|~x~tcNvE zl^`8mBTVWRzn25nWHzZ0`zOz9YT?;B^9q>RQ|k%Gi~q(3k*AadUmxC2@Qtwms+v`e z;|C%$p|dzV9NmOq4iKr6J$~<$PiR+6Wt0%pBLQ+}kj5_nYI_eM&8BOW@GoL&TSwn$ zwiYJHFsy0?s@M2SdzZ|7XEns?%cGVw#BdZln{>o=C@TKZcJ^cL-o*jC`h;+-EF+hr|~8 zz>Gli+8S}7)(M@)Dum23cq`akOh=CPr`-V8$t7N5q~TrhqbZ3 zTM&fw;h*Hl)xnVKOl{U`%>b*3Xw}_&9IFpBj;zsTm}uLn`Dfrn#@KPqFq0$C;aff_ z>9mbUU z8>z_aGga<3gTi+wzBvqh3CxwkIeD#vxfitC6-ajxCR7lgEpY3VNxb5@aK-uIeFAl# zD-d?G^M1?rJqO-C*9GQxCs`FLuJDs!0a!;h1Gd4s_;3p7+_lhqE8=Q3k}tBkD!p3+nR-N!~A@SHodHG?esM5%_>o76{Xgxm|Yt>MqD_mC~H^h~J0cbl}tp!)mLQPSndj}65%;+ODBBxC` z{fb7i;Dg5SC8r%Z5y;QSb#L%bl)<&(6JezVp3r>oUq-{&Ys@%Z1#NBvSgawGDFcvo zLC2@Z=SWhd zf@@BKT7aT`T3d=h3jl-*Y{CGQe&su69o;Zwb-XI8@KZn<3w+0Xs*N#gN3+B^h@obu z?u$#r`@c3ah{N+80cNG;(n{_7&3Ih^>}>+NH9rxUsxcAtF5?R^hX84UaGRPB&BHit z;&4AReuHOWW(NIUMY5~3R={4zd{{1!uxyDvL7xPe2Irg!-E|38_!YVZTrktt=X2vMV-0Ma%D6fV>7B3&;S`YL8eCks1=x7_k6>t_Vgi= zFA_nFNx#VW7I3;Y$3+PY8ZZKD2>gA}lC06r4Vgli)i7Ct$@e*~9mB^Kki;h(t?gCU zv_f8eFQhXiFvn{vEol^nwwkrEOu;g&nx|J_I#ejH#*zfBBlBB4;70d(+d2NXhVrS1r_C&c@35FT~2U^fSxiLvNui$#dQ(GvalEb?^1r)+Imk$-T2Z)=l8sSEXz9hZXK+n&-JtS=%if-xbb)U#Qw1ypPe6m z_u#ghZFSR#bM%SCcK6urfgiUXaNT+2@2;x~#J^L3zgJGZl+K(vjke%t5Qt!2ge0xE zw+{xQCVU>&+5CR$r+zv%YZ(WVB6(C|p0cp8j7jDM>vk2Bn5uNg9d{6!WGukloB|1G zjPcdYdTY4W?%p2!9ueXosMN>O*F*j;Z76 zkc2lhGzT4!HtgHCFV=W2P_a(ZCfk_PxqP*IE^oW%c7FH1|CmE?;?`pHBSA`hS1t_r zT8DnIOQZ(&qjs2t#c|Fd`8SlQj?{{^1m!w3&jXlrsKwp{hu>NxnjLAm3Sku*1pNt` zYPhEi00ijl1hmggljDGXE(fSIQFalqRY0m~T}lCe7(0dbp_C{u_u?lY114sy#`naS z`-cu4P6HP&rA0tE4-MztGH#w2M?-+4ywYDCm)$$vTkIpF1O;zI^D2pT@A$9dM^FI7 zZ2+{cjb2TE_UC^F!-#;5`@OdV&D5hGc!V;kvjCc>73ioM=366sZJB-uNWM#XwX!GH zggrb0Ba*{iBk5XoGtT>j230e$B0yz+m^)ztJNUWTDHu``?_q0hevEP)lq0@A^8p=q z1{^{0S#A@BNTT~_0sUc=CH6P=;_!%$HIYf#gMn~d=?_7mc?2R)h3)5jUEK0Z=N_2;Gel~x7j;Sjtl8K*Mr zvjAx7q*lWDPg4m@iUE7#Fl?h3m`@%!@FEs(|UV|AK*_-;NwPl%9M1iSX&t!enBEP^;8QjjK$M z0%7~F3e&?ftR3(eNp~JUgxMXm4Hz{swnV#o5$KxR1JfleSvFP|=od6OtUa-a<2?^E zzRq|yw=|^&O#a%sdSm?&)j2SX<0iavJRNs&ji0^$op8L04BrX0eO(=0*kx=GE>=Ok z@%}yMD#}7<)rU!qoNPEoNhnxgsyhXoG76Ecna@2vdm>bq8%_Z3?E!T&Qi|~+PH37p zIk3L8m1~F7v>c^!zPwhZK{FnimmJ)?K=TPA*!8=U#m~9a-*N=YE^t5l?vXPRO6@%? zJD0ZSbqQ4Ij0WC%3(u^w)=9%i|=?>y(L1_G}H%FwNXeCreULrDA{ zk`I?5Wm>=d8QyE1G_CS;T#I9$eUO*$^YZ(=*X#28eP(W#?Dd;2Lh9)CzP!$thkX|P z#66CaV~FB4h@To5+h{-d`85a6%MXgo4$tME^B;HLcYEN+pa=3b=sL_kYi@Ln@X0Sg z+p5#w`Y-+_j;VxPWW7z|w0rU5B?JVE=`fmy*47R-Ud#sp`DT^Uj zH>v9;eJH@up?3lESWSian99iLTThtBQu=oddT5S@)gq>0Twew)ujU#oW^g=5YYxC9 z<{YKNKt$VN90-Bi+TEUt*#0jz*QWgk4v@4BpvE30Kpe+6MJIQik0%I;sXu`l0;Q&% zog~USd>E#&8zB?gar)1;Y8Dd`Wcs#(aI*!Hg9$v9sG3V)c76he?;3tASK@gOJ^XMw zu>U~%hyUY0WFB;qJ-P|Tf&2o1vudQ(L>whY1oyL-(uCBAjrShrO9M9R4LDJ60C0x} zN7?hxq7Ztt90ytfS}A*j8NFvsv^>8r?m2*ZA&l`gfBh21|nXcd-#;!~!UHYxWKB2F93e)+tQ76r8)F8?5xCGoXbDu!V+hn}eipZE0 ziKIkGrm(iygzGU%+Vb*dn#Wx6+Tdltv-vk*3^-p=hFLh;4@92iK49I#3@k8)GK8hf z?{ZA0ifA!3DdUNZ9T?8J1p{87?veKehC%<1z;2Eq68H$dT>xLG9L!7 z4yG4RyqH>v#yF3UhK#jzqy=HHjJl5S;tLxYxPpd8_+PXP3LshtZEU}pufgPV;va+4 zn2$q0sZ}CpnTO@*ZT;yoCP{;r7SbR5{=X-ZSyTL0O}Ju{&mCpWbaga_PpOgTHh8Yj zsexgtBx2sqZA2L z-JDF$GK^}?iR_^S-w00vXw9gsyJdK9K7sRdw#DBpMbqb=UkjP0z?kR!LwzIKkCCRH+J_Mc_65vH-Fxg|C=+b`L(&+Rj> zjX2#r-@`IJrxwL)Y>(~p-FyA_n!|Gt5$j;j_%0E>)sffH-z@8`I^N1>y;W^`E1#2( zTa5o(IBsuc8~<}XEAOkkJp0UKZ*@r04A0nq;9$CR={!!*!)f6100Nf2bl<&q@H=KO z(9#toeQw^aDFG>j6k1df>igrz?@A-Xqr{b;NPGA7A?dyiI)UU}a|qUN17<39I5$J} zQZ4KKYhU>W4vn)BP3Hj5{qononZEVy?}dc&w%d-SuYLW`1Gp5~_$P^GA|vzJ&;DJ2 zR9*O8CTREmf0`MaDE&(j7 z@r77I2xW94HRWe9Q8Ur%>C>kpvE3>|SO##0ivTQ}IT({E!cUe`A0TEr`O+zT<~oRa zwJ)?JO0_qOnWp-&Z$Fk=iEMLuU;t+D5+=MjsbaEW|5zWhksD>OhI;pO;na>zx$UHQ zB4m=U0fw;@Pzvls`2vH<-l62UmJ1r18we{3y+$%!VBRt1V3^o{7=S|nwl%>%eeJ$j zO&q~Yso380#0A_C&)Zp(SXunng>oIS|Da?@-d}s{iY!C#qFE7qbz@;rR-tDXTs;ur@AT zyqK0@#+?{4a83b!ev%mF;GUAt(N?NaAbDE$raSMx8_i#q_rkf6V@&6OSc^`EO3K{*F#YoSAN3*Sf5#m8(zV}W zJ<3(u(GmnXc?QtK4J~s@rt_WfOimZMi*XuFfhss{bJZF+wh}`JO!cwnwB1*#rH_EV z4xZClO@OY%rW3Dx)#W*0*O6H@|H$wN3rPFF(sTvMlfbvXzdt5|b&m-VHFQEyciNE= zCQY#dg<6bH?WZSg+)#J=A>c6(sA2i|B8 zU@`*mSw$dFy;Q|!@9yOMCmP(IfV>Ch?L3#o)(b)b#`fqz4c_PyBg9!QOq>y=WZn12ALz4#Ts;2CQ^hlME%YN;GqtW$SZ#5p-|6 zJN)dCzi*#@!*9`YX*OhBdM4o15m{3UH+!Y>r_P)uS_}QQ_duGsa4y{-`p^b|qO%cm zTg)ViT)(!8a0^u!YGC}70@))0`4o(XlUvsc$}M6tAdXV3}Ouu;!XC3 zH6IKJHFtvc?-ei$<@B-s4Tia8kV8{bX0#x1z$RlLh}J*RIicy2{bJ-CwGo+M4UIKr z6<}1@RhbO#v&;(ywSs%x?zl0=*74T2B-{7+;@(Oh=@9KZZwmT78)e9Hc=$KKpA*IJ zl<$1BPM%j&5X*>nwIvLAc0J!^Ld@uF8P>3XM$UcQd{Ap^I-DczXHAI>tiPH9>!Rbj z7)StYz6n}jt>U++k>*4qTI*}Y`QW21L%#^eU9C&D&Ur2jn7?VpC6gtlkXD$XyMahx z8%6wRV2W4CPChqzoxazf6O(458n#0XpZ0qAhOY_dM*7TP8?5F2W3f=RF^)O5L~ zl*(s)Wqtlbb(P>9ZxCP_9#Jc1{?#t?t(-HkaCeX4eJgKR%pTIES3{4G-_$*mp zO}$*RE0{8s@mzx+h=pdsCJyqda~o#I_K)Eg)JQld$0&b>^TWe7JI{Rg<>4s39glYm z1CdSiybJAE*SUm&fn!s1K*Pj_A6%f>!eSu!Y?e(;mCTJ`7G@prWH2(-VFrd>a5_=R zFvvW3f6hP{Nkl;Epc;X|ya`SW!LQGCkXy0q6*QL-sw*V&l%u912h1@cBnAHG`ut^! zVqvgIy(S|r+2rxJXg6)VIgx0K=P2Rk^nWqaEE`$TS_xN1ft>#4yiO==CWqO~VRS`;r>?g0c ze9MzL@b?%?-qkY5H2BJ$*1cW^!SZAv{LTBL4{1++|IYr{{k+=)yFKt%_ds9oK62qa zpT6@QL$uDO0|)jIOZ~od^vG?{yk6EaYZvgE)52KO;4YRQYgN;WAP)hakKJ}hI`QJO z=__CPYI^EP;;AE*?CtGA#orN*vIAGIp{ZTKVHdgzAkc~W@|B^;fpGTx<@7g+yfO>; zG;{GMe&N%x&INipYIk<*AwPwT1yXouL^#Gmnv9y_9$N8LoJo>Z zRi^0|^`PGFbEOUl<;I+(f_n9lsVdBgVOZ{)Hc;mtQ)Amg++KJHPU`BjdE$rLT`( zOZ)cslaaU!rjuMCfPQm(JoLcbAq`gZg56fkm1^qVKt!8z8Bm5|6G`<9V_v~ECP1%* znJEXb34%=&R|+5l0n$$F@afNCOz!%R;H(dF7dQ)AH<6(G^7=CS0Z=N#AOq|ErPLqs zGxbuqsFQ3yN3y+FA)^`%XR@=ya>H@N?=mpkd!}W%pLv}ZI+e2dfYzLA7><~OagOiq zSss4B$w2U3*zC)roO;UuD#-Lq0C~ncua75z@fox17ux6kEs(Vyt^);e8!+WQuUM3M zV6M==HyIu7vt@P-GdAuKM_DiT&amNk?D_1Rv|U(|hTHntjv{(8c( zE&~1!?%N*`ygIvDG4-rW2M+E73l`Fi>sMJ*i!ey|Xpl6rnS3mofGu#3Oz+gxcsg|O zP`da2W9cV<_V1+A=SRXfM5ZIhGt#Ua`=|-=u+QJl$2*FF$oi5FjsF>d&O6)%A-ME# zaoh27jj>WV7u+Y(7h?nqYz3>4ZB@d{VhP7;2HG-m$$VCZM3iu4EJ!y_2Ug}ndw0;||Ky)vbFa_I7cD=;ecTgu;8yGAbG^S3qHa6w8*@hp@V(ytvmaz2 z?6Vx;$JkJY^_5xBaj5|nqfD1-Sg-Y-oeRg$nkcEExOnkm^mDFh@L7KLH<>x(Wjh9r zi7y$%-D9^0c6;EB_ds`dZ~B#A`7CQ#a}9mO+%y-FJd+HJP2T)8nk5K(f~FxFRJN(+ z*YyZ_2>V~dcnStS@$;Wf4?pz&0Qy6NnD3ya)jV=^bUd9peIea``?2&ZpZ&G;Npijz zYVmWQ`&|0`pZsb1NB{f(fw|NJ>Ez2N@yR%efZ`J27;jJYjc6=*{wz#|z{4!a9(fd* zHGra7bIpjH3u1hieo4E6CdM7FrMW@hIG?|7U-AauGWsa}D%C6k@bc7CPX@i3N80-S zk9-t5iMa;}sipx}dq{@XPCstcV5>cbBpyEzq1wQufdG)T&_(bQS*r09z*J)cA&XgU z%}`v)GfYZG;}G;{f&$P)+FQxKWu|S-J`8;-Gq=REiNBXRZ$HfIjx;(x0f=hGvAq_M zNttLbIy&0$IcQ9S7f(Zns}PvgL%ZwJxpQa2SK`d&OX-VW`%0?A*Y6$}Nu~RzPrsC& zc>KF*cyKuN@4q8`@{^xLc(a=R-5>ukVR!M9fq8o2g%@D{Oyc)6SiKkt#*Q633S+ZG zSlc1$sD!+fy|@}*4or(lFjmC$WquZh2LRXt_%f$N*|zk26F|EK;4f$2u4ivqM6+-W zZOXGJUP$u@kU9XbY8qB>ATQv6z3H{|QIUN{UjpY!I0XyV>^J8G{mEub&u7{IFni2< z0eS3?j6tA@K<^nqcMoGK-JB=xgfXwU*79tVpfTV3mDb1k_$`}<&N17J>39!gc>Czifcf?ump3h_HN(a?o`U0FyUcD&$8Y2tF()CQj0dt z00H`V%+5>`NMJhc?Kui#pM}~r1Zx!x#xhz@Gp(BtZ=QTJdk|jeH*ui95AEnR>O`=Z z4w#pUb+S~Kqm^4iBX>D%^&u?j!5o_?QDb05wX^0QnOPXbB=f5cD!R42s_S6?Hq7{$H5mTzK5Hh9Um$-r#_2UAn8E3FhkP7 zb#7E@C7ev&DfpK$m_-^iF*Y7R)*tc#w0tGyvG6HJKr2ADY)xleY<_kF5wv=pK-Opa zo50#=L=qLR^LLMMx?;hE#0&uK`D_tqsygdsGlOXHA#Z1159?_8J0<*i8Bz9jzufGr zcxv{?vTR?JnRQ>*J}A-7^1Rw>EZ1kncj_zwj180bi)SuI8!fL2Re2YZr!K-3Dy8t; z&F943(hBb9Ii6R8(c9CTC4XWgkeTqj&$8Y2wb~!Eb4#?Whs=UR-fO&eaA+|4Ri6}p z&&PB7al3E3J+RvYZ?FdhTAC#&fvd-q(03#D7^-y{2S|ar<}~5R3Sbqv2u^gQ7VKzF zw7#)IWEPwlS&N#lw6%7!IZmZJ@4Sa=GwGjzdTeZx^~hvbkPUJr)U+O7l7K&Cx})j`g>?m#};;K!@n z`Lh2#-sC@f@7tc0uPqQ+e(v3cKO#2fm7CqwK=MtW{N4?+`{lp)hY{D}dtd)rs^FmF zANlPlm-f~iTuM}8Y5oGi@l@3r#6Y}ri!%gOus+6HF19ev=6g~JhxO^NC!&ag z%zHV{btDMFY!ZZvZyN{Nnwk)5v$%{s#(W+}dZgXRsWYd6pSX{mr!4Au;=;K!1|s!? zzxoDx->RkPO-r?zdb)A-TI$D!Z4?_7Z3v!w?rC6hCEb5;2d3C^`h)-UcY*PzAuu=6 z*T3-}unBxQ)Tl0zPc@J?-;^jBrH&`lfBi@QRoFy4xTES6YF!YRRaMShJ4hoo2u{}k zA(caIJG)t98Z37sk*UH7uAuhS0W!GGdc1|2a6gibF$ghT32T%(0(W_U^G2^XB8MDN zoC$edIv0BT>E7;!s9I$_L5M{-xrYya`o`)ByutBqs9pym?fD}T8{^Mi;=pu15b1W# z^Z7|-d{+%Ryd6=l_`E7q5`CsCxQTOPx#eR!dCiscxX!d~h>OZC$1-P0qXw zTC^w9Sr7B=-!9tNWR2LasM7)@MEKCG+VFaY$( z)(3NxQ=E1x^d!g42H)Tgn0)r=k}E!r`3h~*wCQX zx0BTXmmy|HAp|B+JC{&!{Q7YUpv{40$sp-~AtBN~6DoP9!C~+Y#TqgQpVih~lk{T{ z+(rX!Ro+Gh**j01NjGj?2G-4D8#IWt4TEjmBkvGpTzk+;^(5;VPhk*Moe;uXn;Mm) za@PZX2p;(2^G_0>Q71DpW-|UqqhcP)_-DA1na{1EFv(+eec}W}Y{H)~Bo3e-FOg!m ziI|tEqNmxjP6eHx|as+e|Hs{4t>a{)* z?9w0mZ~aj(Z4iOBT#2PT23gm?EH?AADx>X62PAULtL|i|ZSlU0scG$FDbKkm#E@xX z%vxjMJJTr@FrShY`*i#E?I>3SUk;dYFtl4RZ}gdVMw?n=Y8uDJ^6ay&W3?-h=(3$g znGORs>Nmep#TVfY*dFuPhvUbOhuW0imq9cnL{w)wf=3S9W!6bJ*4 zADvE5KlMCB$wvC?Z~p-AJvBJ?H-W$Nzytz-ao8r@m39N`hO|Qi5kM=0@_K+Vy)?PS z`Sls_);?vGlngiR!~Xux`(M~n`d{wtegA3S_1ABml1UkqWLT7?$#j{AO}LAj5Hj89 zQB1<50`R`5MrZYFG7HHfUt>B)foQ@#+~>XV(xII3xc$Po2Ioj z+Qskw0pew#CRRndAgZdy)fR-y7-z#V1797T1gXM94&Ht?HBKk$ z-Fehe;p%D}yomwtQ>YE8-isgs?}R_1Jw2$VB%}k!Q2*^hrR8J<_L>5*fBLDX(^=F! zx*!I&kW|!^COBWw54q9Aj-c)a6I|b7E@|g7YHc0N{X8)&hCJ_>XVsG$!0h{XZlxov zDG7#Y0-;{JdKrxl0YmGx*$0(IuG*rqHA2+wkyuAri&Er$O1 zI~f%9+dZ4Y>l8ZcG2`ML=JC9x2$AhrZ}b5)gmq1-IAc&P;~qNpV(VObV3NSpn4gn1 z&O5TPUO>{RuZru_IIO9u;5M)XV-CaCh&7^TEQtcP6BqjoX@Hs&L9jw-b|8UL#maVd zL%?>1#6e;LTNc>=D2VZ10)jMFPD_+hI6k|yJ(f0efouz7eD)1^O@)rq?bOY0vQjH@ z8qU~VJPG+-&VLu{K~GrgtcMMd<_+}zA!&(q0KNfk<>+lyS&MVa=>qFv+?XxKgcg2rlYp71mfs11B&QJZRxgtcp5YUDY-QwNtN5v^Vc->g1Wx$hXKR zV!r@hGlAtps99;@8JRrW@MzBZcJ72$cQyL*JPPT?Q`FKgXHK{QJ#?rFW)0_M{G zyXG7NaTujP2f=LLf0CEI{8U_-N_J7Ps9DtxY9SU}R3eiOcn}8MXR%L^xbWc81Be^a z^dm?QOzSf*)tQt?+`#BrYTOO);)MR1nu+1pb z%ex=z7RffZ~t}}T^mEfJuJMI*bk#n+eG_hX6)~85Vnv=WTr@YUhZXhJ#O2d zwSO;Z-gh^Xu!DBQSH9HLe&gB16|0d1t?cq&?-e~@-JmQ#<26o`<_ks+imRRX=uz_r~*XI%H>RS=?0 z(uq{av;vO{qhi%??-B923D%$bx7&qWXQzb#^dWfSj8H~qG9QW^1_W)yEheNH6%r?gBKC42&xtKL(t%7iK z`tlDIT^U`dJb7Hph}1AS=AOcBqi2iy^D+xn{c&x&L=0}$%{v!`C%vAVRP>8Lb#z{$ z#JwW%!7dA&qkS!DGt%d|OZ~QMo9{K$2^$!JyZS`@wUHQv*vYDE7DP#`{owqQUR){S zTrvLE2>MM+%&in9iVZwKX+tAan^gM&;ihhpdnJtSZ{4jb)i7wEs)2gJ>ej0ehTWSO z-|OwE2Z`1M5#~o&hfD0$K^P4uv8`EOoKFvKUQc&#?W9*;BtkPTp=*qzHZ^O;2-$`i z3el|Lv%v+y*&(QuEEt0VO%4AsPqsyL*%j+#6^S&5@H6En>s$7zVO-? zuz#ur4$}{FMOdKSQo&b*Z3Sn_jedOpergB^k^H8f6xbY!Dm~cz?gW($qn8f{-^HVi zg5H)q{LG7lHqz@VO=D`2W07dfaG}o6Yq6gft1mF77y3ooFUs zBwi$20>STP@_lAr^Ldr$@uTfe9M&vx%Y088T>V@=_p&U@uuUS^kuUm}`>==HqaxsC zn@wvwMDis7Y`glRmQ@gP^8qzuEakw&m=bs;h^y8ZTSk#6NH{2Y(2c5TJoL|=JDZ** zSdkJK$H2PuNTqb3^t;$sSbj)h7;gcvX$2a)99o?KAjd%4hHriAThWgwi?P*4;@r7& zfoy!~OJ7P~`N~(KekCoNSBT)vLG;v9Pld|Z!(*9;GLLaU6-#c7YgBUh=Wqmm$wwfL zSoU7~6|jeWQudSY0u}@N+|ME>B1GX_N+jI5dpG@?Kl`)v)vtav;DYK0&tm@|^F|mZ+!7WE`vUF)#`;)%4vr#t;I@k0LPzxtn0CpnVNoj-#C^(oFK)U$y7UG&?zFtRk5X?PJb@-qB! z+QI0-Vedv?z7NE-iYk^8oZbOcM>;*j4PXYN3y$&nG6VqgJ_y41%!OwNdaR)=swzwC zX%sH^7@w{U&J@la&oASR?6O{#*A1k)fji*^)+f>oZ7VsOxxs?b24gFgdSkK=eRFXfPZnvjjBl3*vzO8YItuWT9Rb z2+t($Br9Z)$-Otq^rr4Vc_-oNx|0a$Wj_02edj$F#0*k}Mk|<{u0h3jLaTzx<+4*j zw4+9wl~7eUgLff7l-Ni>kSgL=1fpuoAnwIzUALgFyhd7qG|MQ?28d&_K=5&3V%b5M zfIm^5Ncbx2rW=Ww=eFglR(G113=ddKZ(h5JJ_Hn3aj>SIMvo)QspvRF5?-S!G&ilMtCmjU8rT4d(IE*c8g zLF#8|x5zrSkHia60x(_6hK6xw%+#B?z zN8AL0MCt1=l9gI*ggSO$(6aZa>%tQka2~J(fw9FpQ%c(x4jxwVa<+|a!vaKl{}5w_ zVf6~C?5P7M3f=R8N4ZXg4ch5yGg9EIZ3=vh(fu@BpBe(fZ6G&8?+T1|ED8tR!47}B zJfB3QDN?I`oyhaOd-sSfFcsfLW)&|g`qQ_u2UZ}|EGQAs`T4mFC@kB$VnegZxVs2F zL}J6a=vc(+`+J!AT*5)Fxr;vzQquU{kBiuJ9(JJuC1>HGD-Nh!?cN*f-TPQ`t6jna z5%xl?$mw?hTZbPHRwWH0`;LJsLIPr?3L^W_4>&dU*)b@6uv`xo+b?lqTKnXC>oPLq z%!8Tm9d2JN+qz8u{PWN6MS&HGH;)^^PpFV!ePCZr3l^Mrj^*RO;@fM?1~^WaHd}V+{=687xf7@_Qo`SXA$ML9R58V zfx{7q{aE%$42Ro8xWs;QFAM)Xh7J0}iOge>jdIDT33Mdjg2Aw2&y!EcnGqei&magO zU&6&L_P20GhR`qvw?5ZT96y2D%Tq+cemfWfswF=2^fTcmyM{`OFx9;->=s_+=Iu)x zZKs#_0&_|lpW7v$mv`}u-{rmsXX8o!6Mg1uBx{XF$zRG7JWB}KHknEtaCFrl7ZK}% z%Uh+r+LCmEh#!0QIqW;&+MYWHms<`qOekQoKI3=cHdn@vBs8Zn1f5PNUU)vO5$$*4 z>b3OLxeI|L%Q?R>b1&6VI5&>OHua6cZCwKyTf*B*lQVAW^oevDFIv+V&*CnUI25Qk z)j22hhIJJ9_ywc|$BrEZ-oi-^G*kU;j9Zr%;q0D-JBtg|0es$rILTcdK|(TvKKJIv zPWli3-#63riL=ZFgbMHH=V#L&{gXdVqjFdw5WR%cJLrH%$d40qG22S^=5g>_q(pM7ayEHyx82>V~_!0}?vF zu$t;1bN4IP(gNe_ocFpexOeu{QTsw`fOGn2FNhzAzp6Q#oQ-QW2nq-$)p|wdt1AZ7 z8wu}V6G%MzunVc0Hc!X`NJtp0?MC05F63||br!f@t z8YHpdx^Z2(W|U_1P-h>6$=JxTz4K76xJa;l=wm#xhe)bry;qU4D5X*2=X>i7l^5#D zYYoi{)>@5vVqMZ0*R1MBO;nO-MG!a!!Sm_1UYby?30nq?)vFM78>{Ro)CSj)2yw!) zF6kR>ciehGwk3G9bs8kDi2X8{oB<>a9N9_TCo!h(XMF$nJO2jt9k}`s7PN}EP6qjd zKvgx5_vg-?PV?9j+y%M5bshCH2+JKLb!d@6KtK#*N9A6Um@8i5;qh9JUhP!r+hYdPF7cvI%k`-tAl!g?QMnk{ zKx|rpwGswtV?|QBSG{%Xc1RzjP_JCM8XI&BE|yn8J_};+q^SzCh_P7){A@2K)5|*i zxByg}xsHmHYBZ)5DOWwm_rVoov&hX?>S62xx&9)*5*~rTvrtTHbVKWT-__dq)?Mm- zPZ~ED|7^GVbt3j6{}Kt->)iv{%ipH6e%m<4K_%D2%f5JE+h*HgU#!n@vE7SoY8S5` z$4_-2+vIPF6jg={Hl;Te5APA|Nse-`oS4R~Ey0{Lh$`)OY`y$#8Ra7Y^y5{Y3DlHG zIBptE-?(vOFDRX{By9KDvuEQj;vj+Ju7C2$C!=lFrTSB-Xwg>tTl!)B`O5R^cgHec z-uIuk9v6`Xhe_)hx<_pk(ndHjfA#GV7LkOU&31qs9ap(T)=A52`|c(+mqYp zv%Nl)1g&S$xVC5ItLcB@#VgdfAeNq z2F`Vp|L9o=gpsjya}lH%uQ6*NuiJ3%r^koW)33agdZv%zwFt%#NS1o>qLy-JmDKj& zinEUHx(JcF_Vz}V72^q@q8G>R@1ckiayRc+-wPY&pU|KLmu* z>t%fWgTt|AFlfbQUw)$h)d57)KnN1kXoeT=-ChUqH2N{ zDeYnObmel9YcFLi0tj{z`@p$Zk6*7*t|?VhNJ?56Zux9=jd%)~U&$O_Su3jTFkT?^ zL1^-e+{_!jf_TAFgEXo_q zSCO{w25B-7M`;1-hGf}2-3K?WJGE9A#1V17^sfe05{ldf~?agRkt-P){9eT zKT-;$M!MSdMDJ!k#|K8z`oc=O3n4f=vB&rFT|6``oiq}AbLlcvp&|U5+YTh#&G~J2>zo+ zgrgm?Cm0$fMKUwgba0$Cu-{pyFVs23eiM(}K+58@3=C@Y4J^`#ow_ByF^pi%GN+71 z#DpNfjs)%y*?kM#YnOd=>n4&t?27Dz#E+Nps&3s|kNMj~Whb%K;zK1Vrf!Lipw*jvB zEC!J`Dzuy~pT~j%0E=WxK)m_po3Z&NO5}j64=1ASWnCiDPO5q3c6)Fg$5778!&5*f z;%nV<%;lzwT#M){dSBbd%Y=w6?e(s~Vf)w$D!dBP>v#KPdOxAwLz%WgOxr%&Vf#I7ZM%JldTF=qQn%K=8^=Q8!|{=0SmIqoUJT7oojMi7hH11% z@Z(_-2LxrwZTkG@KcCyl*h$pvNo#0-%parecsO^_O>WUA=F71QAWOe&pZ&94-hC(G z;8+{9@7%d_QMPrP-@AmJ2chHq&O7fgXq>yu-ElY(w!?H~4doH`u+Cz2$HYs{k5@?- zKMwfQK40baLC?y&!~4&91Xy2=f0+aKG?N&Wwm<)%R_x_(%lkojJ`L|nzW|FsbiaO5 zTV3xDU+%m2U8ZxKxn<;7xRi+l(^^m2XMPVmidNZsh&1WS{)&2m1^)92SK4k|{+E3( z3=qc2sgu|UNh$lb7X(DOU^?rH4`qaURQb*Q;j5%?e{MV4`+LxMw5O*Qe$vR+W!?Fr z9SmCsNLz5Z9Ye8Y$3Vmmgra6${Om+eeEj4|5Yw@A{3NPAAYu&=q#cm49gsg=Wx{4p zLnltBlh3}GMvmh4mb0bNi|QB5l4Hb^Sib)ty$ciP0UYViJ^xgC@z;KxW>nMv`_=!8 zc3{H>b88Lmc|VeylTSW@F*V3B$Yv)kTVg+K%n8?s@~L(vFY7A#Lb|I z8vJgen_i&~J?V@>T&cFa1BGFPbJyVpDkXZtl4HNNu16k_UH)+j+N*0!2yt)e^gz8Kp$he2rR1h@=pRrJldGUi6tE{sTt zYRXqK;XF!ASV!~=&b}Uu!iXCwgJeQy*mHo?+b4cU5Ip8UuJ;<_uUpY2Vkz98nZ+IH zEJVaM9?s@)!@B_@eJs4N4a$@R0k1H&8{!m&dB?vE3pH`Ozb|;$>f~+?)p=$3-zjU1t?!AE^{gWPGw_ zgJ-k^j5ZkBS?K}F=-k2uZ4>5M7w^9FcDjE33XE0Y5L?f6F^4wEi!Z+d?t`1>*owx- zV2!Y6wfos+9m>2ILiKNhF=((~dysyNqwYuL81~~rIhdAbNRO)c&PJNUOVgRt1b(Y% z46m(DKTHw`C)TJjNp9Y{la5VILS*-+yTra2qwfBZUL+Q%F5#;9?AfzOS>_3t$!s{s z5VM^aj(Z79?5q2x;8y$aCBwylb)-A!Udo8Ve!+i!Dgp5eZp%-t&cV%xPNq&BNRdu~ zhL?8{Nuxx2;M_%*R*~T4%a`N3(us+QNu&q^u}J4YhOb?_79u6}DFyhz&_FOPPXOp< zDTct7E%L6)ko78!ILo52UWtx(-+ecpyFopePMFuxI6;qnVf7V+*E;e26z4g{xK`aP_RQ)lnZM4mLEE0L|QB+4+N(`0|iA!Xd?ya}q z!Z;`sNRE{pKap$$<4JtjU)6_1%>8`#yWb7O-e*rd@k9_R_R;!myW?Ry;ekYbwowA2 z>H*8x`0;>pEUe$V#9$elbLY-QAU}U=46ecS`Sa(a+%RAV(3N@|cMmz=J5QD)QK5R1 zDr>f>)FIHP`*FqiwCc}mDnCE`dpH8Wj3ZEB&_R9o9h=Bgjyow@d*~;nb#ImO@*O6N zNHzN{%Cd;oMl5%k7s8ylK)8%C6T0D4Cb!r3T_6bV?^3>L&A&%Hl;5qg%lm`wKKr>` zQWB1j43iiv1`Llf{%(TYuY&0IcIdj1Xy`grSHW_4MWBzPW~KU*!O<#=rIE}#2H}j8M;D%8?hq9a z6r6nyxhf(xB4mq@4WPc{nW53MI{PBC_NNI^x&tAk(LZ=;sF-!Ym9J8V_20jKKV5qB zO6nnsvTi>mIQl4SbYcL+a1^3K?l$d!0F+?vN0moUL9sSz`vyp7mtKaLSJj#58pM*) zA5KO%>t-IX9IIosL#2jlpGbQrecKkE@J!Xh zJ|uD4cFZlWrWMxfcfNZKDMlCFVP3G+ICbg-znL{`h$;}b5>&#WrKJrRxVO{f5uL{j zMBq9ZA>vLak@&5x45SHSLsSWtx4?R2>cjo?BGR-*C9Ap%yCTpfaF3Pk%3zgz`mRr$ zfGCGZ`_Q?;4!Q(1UhRj7h_@86Z}i4Ag^`+@O~iMNO{h<5b!|5RFakg+T9H}-TmTz@ zlpF%xkIwQwCKkZvd&~B>Nb1?MXG8zrXCkhbE?l?#fz_0{NCZe^ zScY|Ih^(rW-&I?>dE;i9AHaPg0M@c40G@f~naJyJ(^-f4E$_MKp9=(Dy9CpE*|rSe za-T}y%x>8B#Cgp7F{2h;ANVCguSuC&+pN>;4P zG(In5Ync)p<|#VczB7*ps@&AW>u>~q*+#(qT&}WL0s|`#TX)m>DQUcWJ^ZYc=WA0a zu@IY%d^`*_5AFpH_}0sOSC)*6saSFq3~aC;$A;7WJ(6ITJ`3l?0O!x(uTRgeb0{Cj}Ky?r1} zz(qaDr~|I*u*{s(r%tA~-uy94xl0j9PA>Rw{N`_B4{?$+NaWA4b$&RjGHt-PG46;C zgx4b5fMJLU&H>I{4QR;{5(5!a-GXu=#95#bv&PknsAf5JBN&DEfT)Y~)o}YMSG)nT zsi!OLCXC3fTj1dGi;OlnyFf_2wjmS@j95VoBo3hpjEhwD7R$Cy-Iux!8LhN~LG}Qu z!a-2rEoXJLjueM+x-%QZhy;aRd9)$$Y!P9#f2w<_Hd7&>nNk<=3JC~RUg}UPearN!Snj2Q$2#>W~_YZx9TN_%yqTZ1^Uj$Vj7i4rAi>!_UV(k=;-A1h@ESzR<|?Y# zNNtWzji>u}Z$lj23mdAJQGeEjZs0bwu>tYYq>rkJS+>CzZKp9s)^HU+j4GfpNUUdJ zQIC~4LO{Jv!qpgIgUtKl{0!0vg6IC|E%2<%G46v9nZ4jc5}N}MAIFbEJg|P<-{Kjn zv56lJ4nQo9LfAlb>0JsmG_MiHCiaOpt^#ZGugClECyqTG1hC5?)jo7S^WfkX0L_i> zrtvDlPn-k^1QA`4?CaOB2QsOlib%geP!X6Et(2qw&J}@Lw(34>Apb$hyXg3M`ObRe zvP6{}v9xir~GS%h8H9~X&0MUGEtyNju`*=OZ)3<^D&Ews^ z%SG45LGk|S)2HM4ty{MO$XvQ~DUf)}H_y3q*;`R*zvbIj59c_HD964^M7g-lXT9cC zS|eao#mVQPLghFBoD9cq8q1Y%iNl;tZ@cZQ0PmpwzUR>Qpy8io`_XoyiAdXiO04)y z36AC1Mn8VHUV%X&h-{<%vg|mB$!D5OEX1yie2#PGRC1?|_)xz{&Ea)80>6wS;2v;K zc`p|~-*>gY-+O5m)3)9B%5z^uL9KF0SN86H79Zy4mg)X?ANx>gtMA;?J8(~BhPco5 zR$_%B=z|1IhFpG0%ofBxj}!Zq5SyRhF6jjL%8h&zajFC94U zst1KndXO$X&xlBNl15|a@YRoMO#dLBmk8#kcb!!cAnXt(AtFF0!*kO-oZoH`wo}hO zpXMsmBd(`cFlzfM+e@o@ZhvwPgA2HHz40t z#(WE-^|}_!^3I(v{+&2+JiYVwJ4o-Zr}O8|r!W8hAJ7lfaA>QNeAS2K#;T*Q!Muo? z@Yp%jrRfIDEIJd?g&oRPHHAqHX+)JZFak0j_&sByn#mgOY&CXODxw-p{}2cr{gr^w zy1Ic5eh2mw4KUyUpJ8dyCyS6{WXa$Tw;Hh`t7^i&NtJI^5x>aFP zGN6jp?l4R@#xMwDO1XbKdopy4oU2u0bI9=Y(yLF|Mm5I8b!i+2iIENnA4vip!MFkQ zZEHnc{_V7av7VwS(=CNQhg5spLHS*GmbI#B#d7#hA(gxwPai?PBxFC?~&kB^5+vLARcv`%3)XZ zYCUM&ROPwfBhCPeS{0u!e({T;$94;YGu3s%>Yg-pc7Y;3i3cSXBC2Q4p5b#g{jdM_ z-^N4_kY9kO)Ixx$$XBHLcYgPGSeS34lX)i=rib1TfI}bWa^NL0Om`Hqs|THu5z7&= z_CSowRl-uS-G0ht+gja@)n@aGMnwjT3auff(N3M4SJxloPE z{yRqYA&e5KNKv$s3004jlBjm2j$Vn0VHrwJv^j8v%b^z`m!oezu5hI~j)~u`N4p7o zVOIpergtvl!&v(+x*TaT5s*0xSufEs^e|HeX$hk!az?+LGcOOVm}|z*G9>`LyCE}I zMptY|SU5DSEA&knyD%)HTnQ3Y+8p0^~~64)2E}@JllS?t^w1ly|DTX#Xfb5z^RR#}UZJM zON&gq2Ujhqb=l_9?s6~hydU(e{r%7M-Tnh_MVz8Xj8U|cw!{c=*LADv7tJOT2Kv{H z@pu!2N%bD3u)^6M5I(t?a;mj&Q^&f4Gh`dY56gt$)EXSM7e>k^$kZ;#dlTbg)hl*k zfNi4FubPIEggSXRI8qZtrU$9SI_@M@-?(|}cDi!)O1gUKa=Hg0(1p}v6t$?KDUdph zQSaWl0i$Xq^^Z-0#Amfy=i%9BpX1y)6)La)_`m$eaBip4F$fCbc@^Yz6puWfLC#5L z`sCOJ1Hg7V|u!uMNpo8CXvn3M64?K5uvpWh0yL(LB1R@S(JD8X>NMrP%OlgBr zvK^ZN`Z|EbqZgdP-*xuP8UfAhfJEtl(i$SiS3u$=)RaUtTA!Ia^J)I(Y#_|rGUJPbdue|JiW@S(BkFBPU^Y>)yYb*2u5z)5z`d?G zK<_32)(B*{QeQ&S!9M191-wLO2uf8}IOnTfcvhU6NdNH%f0Hh}K-`dH=Tra0bd2qW z`<-(7@G$0D+G5Wbc(02!CLZG1Ei+SFPTd8EQZwBlTciKSZ z%jn}04K-p|NSrir6)diG@9OpR_K)9z7_Fx#pMD~}_Ug+JT8;F#-~V>34RHrm$nIfR zD?Agw>PJoQ#PoE;B5~iXV@tHL4ii@9HJ->;mS*W6&I)i9%)&(a2Z4v3j|4H@q754I zvlb{%NvqE?%MD?a>#Km5a}!?Ki86wbFuw$cO_%@L4h zFGYMxH3a%DfKj|1WwB-swx&o|s@XP$e{k9f-#)k&0%HNEN6R*8EZd4L|HSl3UP%>` zhAR$TDyXsX1Spm%2T46lKNmpwUjnIDSFj+|0wg&aQqXZQvB~7b2sG8L>;rh6!MObF zc|C$`?GZSRnRz8piW-plI(hEFLv{!n+Q1iq(ahXz^v(Io02$G(V%pXP|AlW^k5Ni{ z9YC(GXdna3WB7EYueNa(!zbPGTE3V4w_G_USyBKGfiaA6BfVp3fEF(aLEGu&oCy$B zB{L0>DB7qP(Y6S{OzYeQQ53oIpM%z2+v~%xzkm^N?|H?#k2yQIQr}Cg`Uw~!!p52^ zS3Kj#FY}z1zB@(_U*(6mWza?xm(ABl9`u$zDm%23SwN8W2)i9FXMb~`+n~nvL$|eB@wvilE zc0k7Pa#MlX&k;lX2~@Q}z?$0xLT#u*f-XIX7xuHD2NWp!OKx0?w6)pG1xbp&q@o$5>&^=4R*9&D%?9W9|XA3^-fi zOqFObNZSwuUJqww2S}cTSO;glNT9?8jpMxKtVhLb2i(HnN=QUZ^{Qp;j|eD7S-YG$ zRS{Qg3uFv-bKZ9oCA-p1zKtf_?WMHIxEUa>s}}+cqxmNN@N^TAt`fz&8)Tg%AsNw2 zR)w)veX9#3yAMNo)%=Lg0Jj|E*o^petu-+s$JS$g9pVD1!V2~?#&PIitk%JKl$1nJ zLe5d8QC+Mz``bgCCE~Vsw{pw_ZCD^AtJp0Jz+JB(;i_Wy&@qOJP!H>tv7)6xOpQZW z=$)$@LThwP4{FskfU)`ZB5FaEB|IAubsb_!m!?hT;Ml}u`m;az)AXxf{)g$c-Fn0i6}?>#^wv;lK%&Y0!fBCg^ zWMU|tJ9`Y`r7zvNb%(w}MD!cCW)2m?F&xSCrBi*Qs7@gr!O0*qvu9^B+yZf+)L3rr0ALaUK z=}MZ9`~Ha&5FdAk+;AeeilYj05kQ>H(&NN(Iax-Al(6vN^SwxDAs9UDd}bMzC!%Q{ z-)E%731-0nz$F@dFQB(9ftnL3mF!{T{7U4w11!UG_oqBBka%yyco&NR-N88YT|tr0 zm6XNywoM|!Xo*tSrWf&7q9T&-!6T3?^@uFnHaDd8x2g%1ffxt+p^l;DT9(9v?F*4J z{jpDlNQ=yF2=bUV+RDRnxBiDOxhJ zvMAQlLvldfrc*apu8}&EMXF)K@Djsa4#R1rDN2G!7-M99%PDhF+HStX>u>}PN8o20 zfe*8fOzZwF_xIGuJNK&ZN}1(uy7K*l?(Zq{WBg&g1xA%(_n+;}hdw-ro9&hfX8<$-v*(I!k28iRs-k(xHnaaSgL*(7yW!|=?yTcr3iS?xip^4o zXG#M?Lf!c;kfweNmXG1f-*J-LZxFj)2$~%b?W2R}+vD1H49R{IB)#5T2?D}FV2D8A z^>hV?+O~ka_U#U3L?1hkPLR5A;sKE(k)eu{#Dna+2_hGtB=BAD7Y0DQMabzJ=l2?_ z&f6f^OE4AZLB1LAAWXvU52?nW1Ompk2Ey|k=|`n1h$zyjUaJ&n3&d1oZB?y0SkKTE zsYd<1w0UD2gYKG=0bIT_&k_!_t)qg_NogbXS%yMgBD;1%tc957FBa>+!}d z)Z%uD%#3=^D1=89VnZ9BT73n=5(&$|SbFl}Qz_kBO4pHurQYwPr(gVhHaKU#Tn9x( z*>P44jSZ3R-@6~`<9dNyUBAMsB2Z3zdoKR zu`#f*#`O|#I-==?;FNhigoI{saSoTubu=_k14j+&uYd41!5vSs<}Reu7l=UL!C1k> z)jp>kBeZSy_0w{F<_L%YY>a-0sW7sV01z1uu@?Zw%Lyy$IqutdMw%cFc%a^*S2+Y! zBO(i;%p5t=w<5R!#3|qRmM4cifIrVdWr~Fm!~u)Z)5B*j+Bhr(l|1vgc}qJ)qMJVR zK|Hh-=FQIn$>vF@HA&!5ruAD^M5koq$?eZYlh?%<4d$zWipzd##M1%b_L=&sruWJQ z>G_9cmcz|=QHS-!>yoC`Ox{PEP1tq;x%g=g!+~xhO?KsT$=^cSbU4M_7?x2x))Vw8~>)MaM%Nj55+ROLZ!_OanmcbF} z%y>Zh_VRv~@9p)MHn*3v|BMz0P|A&afw<(Px9KV6* z>Wq7YD2Wh}?80M^@09w64FQO3Khc576^KkXh@J6z`jN5@fTS3uI*1m^2sJUzjfL5n zbPkU(gCIW|pALc$8*-q6_aHzf?E}$-nPgB_&zCA^iiC`KsS;%U*ayIE^@*JEUt~Sv z9klura2-jwo`N)*R;5RGo;z^2WrV42rI(uQJ&3*myPK$^Dm_OxY|1)>(l)7H&6Ng&0TQ(kzsQE#5-+SRF|qPAtJtutpQ|Rs&!xpueuXw2{HjsAqX58Zaq*7 z_KA71UturcnQU80wTWa!Pfa}rhy%Izsk5%D-wNf`L2^CSwitsd1Xjb?0}>G6FA@-S z=C8h^LAQ=iHo^;+{X^D6dz8Xc4qesF?oKBJ4e>4%qV zh=?85QYY$VbK!&qEds{7hjldEH5oX79;|v;E8P$qJyW=bXWVuf=dKzEHVvO&Swez_ zt6Pxx8hJ&kH;MAC+uu6luN{YyGRP>_F}>rnj(QpBc=W4>a+MMpy*;!Jf)me*R^viK znofoE2WF}GoBi8lJs2S!;}7Cj%!f2WDNqk(bRsoz+$vQgJ=1PfhIW__rjPY2Q!iiSM9sy!%WXu9I}L5R?;>BVh|MjpWO<<9<}yr8bKm z$dp1z^cZN*wXwrK(lEOd-8GG^Cy}tZar7t!_QJC;b(Wdku#@17E?`r?P_b`a9Ci9!80HDjO$lFRD-+3sIP{O2*id+WA#i4^w_tM&O|J_i?YQgX%bF{7h%vSDX(4ZukTIinFPO zC|IsA(Px6OfV)9dfLzLj2AR?azTR>y+-$}IP={W4Z-B0d0fCIrXkHOi-`Mi)Yi!%_}f>QT>JE+=nz^6XW3}kixD9 z4?t2ut7(s}FAdUVU^Z1)!>7KdQXv{N(_?NWY{FJi_|Cr_2nUUAS3%6=x(|Y|?V_sF z87@X4f@qsameGs*c~`-xSv~m&#Hi>U#u*7xjE3HrP_H?OuYO9zK@iA2;~}zYzq&wN zLxqVxIo8_!ZK66Qal&weJdy|OxN;i~I#tBEAZmDS7m^+6p@5beDS;z@f-3Cv*#h$d(E0LXJMb|;c)XfXH`%RCn`SsSsoi2s<_%)M4wm~}!B|63f(O_OC>N6KFvOXaU zkv=sbX8IT()u}?Qx>m&{>k_sfxY4IyPe1b%^CleA-i0+QAwy4e{Ge*Jb6=~jGR8;< zspI^GvuWzYd89ta<5@4yt+#@W6RnEAxpu_y4uUJT`fy3ULmRt;GcoGn|xQmWmzm*uPBTBzKil% z6uAj<67)0IeGLVDZlpnke}qT0|0Ok z#&JS9&XMD6J@(PdF^+oax0h{-LpOfy|A~2R{j}T|Q`_6BnryV0HNe>DNyK`Ta5&$* ziZZQ7;!XhM^TX?K1P({wqm6)j>QSz|$AKHI{a^0pE$=Kzs8Gr*_mZal-u}HkozH*X zm-X5H{Y#jZVWe=!%QPbIg2rec-_29tj^8tUgy8|)D&@s{%NKznjmLw?j$_j$JDGPu zJb-M;ef|FTzk{^3FFo_@#o&nQ+~Nms{4K$(hSQ6$yd2(kRPWFT_b93>FGE-yL1k!l zd4cluObEi)OKgSV@$~ZWL|Op3TSZSD?1>uTB!hIT2Es9eG$C_?m1+diYoB?ZVR7zf z6%H(okN(JzQrBFhQ10+<2e2O1->n^-e1KHyoyiElN+t%?>FDDb)7n@GYk#H5K+p3@}8-npuC4r02vq7i_~sYhjuoND(Ehs zrqQ2iTQ8jU=m6h!-thoC@1?DUGz~h;8|h8&Weh+Z4=8n^ zEj2rgYIt~}Vlz385`F8N>uC`}d0-A_Ip9@BV((EK0^&`gcd=4K)yM#Nw0XN1X$m$$ zc#9gsmSb*iA;w=xmh(R|GmGldJdSxz#9r-ZE(S*@7~}qQZ+1Nb%+;C%aeVUSyytBz zfX=zju)&q#63Vzy{`GkO{nQW;1+cacC*vH0@3ZpWMJd(lrJ9NW*a^xHd{(wFPe_(i z=KQR$oQHztR+LNcMPAk?LhodkI((k>@BK!8cQTi0_pkh{)MvZAavASEglw;3&R9^S zDQV3sfc7fSN*h$y@(Q36eYec_wkyWxJ#8{aDX$O|w)?$_=<0j=XD)l$-sk)*k4^br z?v9;B79y-X&-eYh${3gTj$`ScL`rE^8H4t8c4NP!JU%6FNoRXQJ**VOi%b}m6d%vM z%-hdW+Cg~_diJxF{YmF}cwO0^kJL98=ErcAc73F_d<^aQMHlf=`dh~AgWCMl>L~BL zm+$T69mG6nPuJdt^1a;K)0Hv{!d`xVn0qO=Jx}|ygX(KfD>K9Neo8yq^ZQ;R!guZI zA`Juwnz%tgh!_h;8z3=(ERlYLXv+8R-wuP)UJ%HI#rsHI`*F*9n*f{VKya!Ay}APD zxGSBVK8~%!C~+H(r7yhpO4@*3IY|mD)D^Rb04TmKC4eS);yn;L$51<3J zA5}lp71%(HW?%?)4-iQWe7gqV)>rWYgaPX8>|A<@^t)B{+?C3p5CgJk8%2a`)G4+d zj5O*ML6&J|J9P7^k#|ULP;1#my(x}rEOU3U;ui7r9Nhs~-Y{N4h5kX{6hwV}2d5ht z62r$&bX1^ZX|A@IR(7$0K*gwnoybxXk4{v(yt#_!r6C9g5N@e7 z`m@E@bznfQ_plmmJ9_+Bl=aNgLYg5i!-?ZZv1x(x&Y0VBRnc@IjMxIi8n2YpSJMs! zwW2kH*>w)2`*-f9d-GpQzy8}eav?55-cv}XShqTKaoq(|&~aqk>PR@8-v<#3tDerD zKc5DP-ra<&4~ZHQJEbs6TF4Rvn-Q~vQ3;MH5w@&EjQym|&@gUo=Wkp?9g4L}x}m<~ zA(e2PRppZy)7|}v`V=ueJr*pP002M$Nkl$l2yh5|%NXI5YvefhtPUcq5>5|KN^`P~5FUB`RS7WO7}(#T}(4EqdhEg&d5c9|fp)j_5uB(#07{HouPFATwH zKi_+fHMg4H{Lznsxavd&YMZsE8{YYOyfs23XzwxLc+n;eyN#ux6rc|^wflI9>VZ># z^Tzdb1Onsa$x|Tr*n@z0J0}v&G$M#4=W>Ji5jw0{ByzVBlVit@vvwE}>fKy6sIN|Q zH0FV@B(8(~g^CQOq{M?C=Xe9jm~)|;)+(-x9rGA#*1$MM{KnjHeznioLXBzm{%lH^ zF-Wkjtzs8L+>a$>G)Q&)Ss_7J3EX&cNaE?csY6j>or| zhb{XhAA$G4jbGqcJZimBV;n>)ISxptO4GJB9^l7;oLeq5h1}yZL(Z1vG*!2fI00d` zh#e#ca`wSB$-;a<5ILXHAYLNKU2yaL*iLZT=%Y4xNVy*9`~13yH=Wh_C%oBB8XsM*bRQ4s>ekZyMppT6eKKdTcD+of^~3K2R$#OE7# zMCeg-V+?vj@`Gn8DKX}+Y5Wu?nevSBv54XLgSi=`DRo@Jj;E1<5%w=B7|%hByZieX z59Z+*d*Tk`wI?e8H0@c}b(&}4pA5Iy@AAYZ8OH|_`Z z_XCFLv3>0Um_Gtfn#rbq__EKB%k^1VSC7kh9=7A>GXkF!jCj;~A2r=a8J&ac0Gi)CHYoZKr{DPgb3d|FWlV^u-V-*d?}g^@Jx8md}JU(jaTX>6r9r|CyT zHD_!jsJ!%O6t;!rZ+3%VqZ$?KOKv=MNIdP*2UTgv9(~zHB}kPojldZa>Ol%b`;`q; znX@L+0WUe`&boFFP#&Q=Q~`P4RpOzvg;_Sn$r^51=ZU9b{0-Nz2G<&&?;x$&U@hw6 z^aO_KbtC~24the|LK-y(*M4;BWJtMm@&3|_FQuoR|6H1dqc3q%Y=R`N^(-k-sZ_$b z@cnUA@eGvv-M{*7`tgrm#|zU4gbQmEis${_qr;=j|4I6|1CgM+{*HA0=DTT}zP$RmXVNRL zzLu_BzML+-dntYAufLOt6!t`w;Bj4eB5+-Gbm-iGfWYjxu}Pe{968T8j;7b&xE4YF zx*;Bxki2vf6C%$qU2_{T7oV2vkbwBK%+$}RogNAbKL~q=9yr*yu3k$Ecv#w8Uj?y- zgS}-GVbn5EL+K@O-{mVeL7fcjb~0i_)ZpX_KSkSZo5F7R@AoS|U z+rBxBOZzChfz+W_jw?v+&K5{A@3lJsMJ5lfP$4GFFXGA{5M11i(zmV#M8(hqDnHiS zOxLbmi*_783YQu#yhy1=ue{0w9qk|`hT9B?BVp{)zYq)<hVTVB8kd`n3zB6`1FnmO~X|n{1SEx$yEY4KQHLW^GVXQ1GpE~sh7;{3I z5laHq8eP#Uc`|^Vqv}5ioUq-Cx>|Up<%J4c)DQ%Q9C_$U=BF069ugkl_CY*|g!e%3 zg#?9mWzUL~;eQ94mO5V&uC6ORNo6}5@)6P5cgB{;!Ok!=)=QRSj^v|?WJ5`i2J(e? zvTnUr_2Md4LgP4``dUqu9#n-SM7Wx$N=cXu;^|5og3Yv;{^on%OK)DfmA?F+{THn5 zOe9MrsSXt5&HO2KXl~^8xlkOhL2N!=z#)LaE4}Q zT*?ynglBp|>h3`u4R2dBGY=qKx6>4!oQAPSc=G&lh>-Erhl-byr72vl?m`q)Fuq@B zUpO~i*q1CXuZ7xD7t)20Y_S&yu+145z-|U27Zb-knzTiI~cRq z(n~MBOu*hzRPX8#%u3s+gZYR_VO-*?KR*T6XOMt!Q!ok4f?~`t;$^wUg5wqootNsW z#Wv-;fFS+}3Czv2ePcJpW@h(r$mRMji<(P%fobbmB(@AbJagl^0TlZMmw{TNz9=th zi#i|WkHE=#aut@F%YQg;0Jeu7n)cz#Hby@zkjviz09)g?H&(*ehpwFVz2g$?5_s~( z`poa;^VZkkDij^yQod=N52wk?aq>V3F?5vWxU&fXhL#m+_`O$tfTR37#ZBy~=K zjKNbOvw+?*EW5NRm$?7;pz$kp?Wgja94rB_eN{TjVd$LjCJs^VQ4i1J-nK5SJa+Kn%fo<6nqfzR5@a~)^T zV7WZGV_ue%KkbV#^BwI znbk`mNR;q{F?3Eu@bXzqU#VQ(`U(VvXAS}b(q-F^Ds5B}&;fD}CK$9y6>mP;KL`hf z&)XQ83o3ggsHn?JPgl-o96Qb)YFp9`9brHc&7giB(B>UfU6de1dl^fgHXyW&L*>V{ z6E0pE9|<23Xax%rdiJ4)`i-3UkR)haO#wBz;J6U=N5gU;iZ+Q{Eu0J@jrS2GmSw3l zLt%=slqz8utXC_Z>;9H?!)%6aKnFGn6b6|`1wrIN05Z;Y*<*VV$<-?MDRtDtb|IST z)S-06;Bhn$qEzox*i$%m&J%a#9lgB<@WT-L!Cb1(VNX!GpMLE(emC{%CYF90v``nt zF@3BP4f8dMR>GtU+Xeygo;ZCXt&ZX9x2GfBx^WFVjtz+6ZKMuE7%Sgoo#W=Uf^jwe zb|2g&rbov*2Gd87Pi~Zp<*I)r5UGwn&dlHt5wC}k&&)wg8)G&#+7gRdpvlQKdpt6ku@r4Ev`q& z+MdQS@ha_o&pThad)c*l?AqV%e=k+Hx)V*wfK@0Qg+$^gBf6P^ZmZ+_1+~8AIm+$I zk3>>)Nu{p*pgm1aS^Dvl`n8w;p<2sYdFb&Y{|rQ6zpH!sa(nDAFQXH*jPKSL8@=^x zFT-QLuv6jeH8jy;D;(r)D<=UpSMY^-2Zx|;6Xxu0&|y#X>?OVfDB5kV5Uymakd5Ml$L zb)^xI@7@YN@7J4Y0e6%lyrbtP)5O#S9&|816=9>E-8UBN_T13HpIp*$e(9LKW;W*>j&|ox=k;(0y`k(Te#Nj zKnhZ){S91f4o+gPf$GX8wi`Wgt?TH%&!hg*i%rH0&%F@Gl}6=Yxim;bo--FDbr%95 z>>TKGH%PJp$pU!>$qgn6XPnG>&uRN)J}(Ilkyn2z>7nC6Y{->vfQVX`<*S0_Gy7YD zx8`vW|7a18VuTv+LLk()XcNzcod!}3NeAuH7@5~mdj*VMI2s1*Aj}%ES0TP6u7WVr z02pFR$%H94uwmIjjY>|uK>>|m?#Ppx@-qHo`~6T2gayxJ{O~=b5=w?>ld+XTKw?_f z6_v*G=pzyg4VhI(t2$rY4U|@cAk>ifN8kSu?o^jRqf<;DIC>N#dkm+qu&z{}su2l%WN18yIi*J35?9zs%s@~qugs^j=bypOVUpsT z>EwwMX@UT=fA!8==}Vt~LGqI}LfkM;OZ06QyNJ8@Zl*cBD;+<1Bm%)<@{X;=O6)mR zqNcFd=*RA33p*0msCE_Zrw-gA_x2${BM!yAd$Z}-@!>Q!K1tBIQO2VJp}fKSewMy_ zD>Gd4*-MAZ#bD)U<-y~1|BMn4YzP*)!B7Ms0*3%+{0U^|=Q0P@;AH2*1Ca1YK&hBi zy-+S+SI+W*e;-~*xi4*t?E_0F{m<>l(DS{SO8et!+j!;YrGFl50?53$ zJv;1){gcz-bGaveg7eYV_vk~UH_!f6>W#AaV-nMPKnd)q$y=Vs{cQ2gyd__xYz;|n zS4o`vT;@OO+sjzee7Jk=#(rm_y;Le^%X;Flh(mQhjWtBNN31Hw>!Gxz4-Y;52tQk6 zLkW(uQy5&khe|BtS=!|9_O`^Zx5oaVtcO1jN8m$^Kv`oSD$`?__`~!g_7X6uY$1P} zKbTIf@0l^CYgF{e(fFqkY&(3=?sB8Dzg2#6}$i^&kGDzn5NqkRl0Y}1pEP$Q(Go@uSd7x*uCTyHohPMl7gbE|3g+8v}4wE%oTgTFL_%E&-Bk$w$9 z)=(!O7}Qu#Qxik!*8Mx_?#!)p{Op-P76Um;8m|NwgaijM08__32h-nZtc2Ue&;KWK~wS2IrB`2cP+v~L|!#0?H;ssi8>uV z>vjzw3DI3^@ao~hTZSX83seoiT^G7wHIlbB7Y0lX2{y>T>3ptjLl~ArtdKnVXW7zr zr99_vn|WQt+IbU|nk|R|iU*O_%Mt_%Ys@v(8OFYhG5xlGx<2g(`B%SxcXKygy?iZQ zx^yYL6=^MA!^U9&gK51Gt$>IdG_AjXh&y>%6MZ1g1LU8@24MOmQiPqmY5D$qI0Mjd zTEuz<1Y1el7X4HD(vQcj8cqPhTNdNj1yL|JyAbPq8ygxM?pjbSY6H8QbwpY7*fk6c zHq!KIkbH>Jt*uq;ey$_oA|f~I{o0jF=@P`EhTmWL*Z)hpaOy_q;{?Ql_8KRcEGk9y^WWX7D2oPe}7I19j`ddq8f4qgv|@uhWk&zssUeCSAmORn&`7SfB;Uut4k@TCAT}* zD^Ro*4_~H<=j7vmT$w9Gv6fAsjkXtcio# z67L`3PZ<}J+JXt|!_ zYW2hKvEJy!UjOVA&ErYFJNTw^z7DU$5jY%y*ef4u7~F4UaF3OJCIl$o-J8Ny_iE_6 z^Ku6cH|Qv7Itj#e1cdB#`tEoC8c#iIY4*WP8Uoq-wJ*M!M*2EIwpNhB0>h=}UGwQ$&bI{P7DhAFp39E!Cx zkB<8E8Hflt+f9s(>$p*cB?ZX=k_!>g1CrejcYK5B*1~qxm3n#yQ6teXSy!~EiNL|G zLP+Qu)qrk8qhpK#k)=T{^}1vHi{QvdmxN;y6)~ED*xAW#+AAecfukI89+;u9xuD1D z#qTm+ySUGFo*JJ2c0c~L2FT}3YK)uj`R>?hOF(9R(*`n|Ct^AQgH;c8&LgfB>BH`T z0s^_@x$xOD&bE5qsSfKIY}r|r4C#+H9egArJoD?QGFg#GD<#JG+jk`oWD7z`n*b&^ z(ir^Cd=e14y{$6d9q&Qm;HhmB#S>_mEuMFN!Bu``G!)cYezw_O1rPqG-chaddXK9Da42cUaZbNkpqF0I5 zrort%<~KH%$&dTmLF{U=`F2{8i>*Fx`Eyi9~NXeeM-P(e)0Iub+8#-{!sE zez))bJ|rLij0wBIJvwz^8nocF_wQxIwZJF7FFM2#j~_RV?n%J=;`jo| zOMiJ5-{YNa_)wMnLK5fpwHn6w$O-exxAKFrV;oz<7lc9_XpXSsY(73aitP`t!x1ucjKr1FGL))GX&#{`v?u6d9@0`%xp!;4XFgG_F+vRz@R+FVZ>}gvNE09j0B@9T_48%)+cwpGz{k-^ z=PZWM8U|^rfY3J3Ygb}X5wj7}hP_rs8)3L9CD4tij2P96)cIGN zA|w`!T`=tsnBU>;0k{T&imfw)o@{n|DU|D#;; ziL|@6c92Ghl)L_TLWRsJo=~XXJ7g}{Zh&UqmnUm?R7$^giQqF zu%&bXLby(x32j+Zv z2Z0Oi!--LdFeDVv**veN73_2jf~QS~_(Nt)HnFp)p|Ug>gv>RS_gI@BM>y#)BOjtX?24!tPqL%{A!w~4$@^ekq}RDDSfjQ~LExh|)`MNESP&JQEBdHuL? zy=^+)+-Jw+T!6ZZNdM@r+eUN(jLiWcA^%>5&0{04X_f~DEkZ98`W!lgX{ z+}ONwxz-7eGk|E%@7=g2vrYPUmI}9AH*9fPm%Up6Bq>uOqyybRYKZZ$9P5-j;U$O0 zKG?1pYsStx9An4IJ_PXKujwq)u~*6!HPI=0^{&k_2g ztV8F+!@#n|TcBwFC3Mt9{-)t{Jb^RmR?*rM&X)@P0S~pY#Z{ugUhc`f$5S zI`8GXdrz1m9P^6cWx$~=xbUiloIm#jFsLIf5ffs5_7>dL2f*?9^p}76Rgm#D3_sTs zD&`=3aEUwca}Pp(eEKv-*UPxJTouzz_ZHUii$4#?^Z}gJyXooC3HCR^xTvoaSYg!x zgCRUbkUeXJ1tQ>Ez#xOFVP+BMtA@yPsF8gA8{bTe_b?>gtYK#{Mc_2g#vBZ++FwZ% zV*}~rk%=(y?wG*0{=_71FPGD~lc%T`2?(&f2jsPr^2Z^P)T!T~4-H~WK(4?khRY41 zvk08`oZ7^_YXw5dpn4N-9@S!(PSs8#Nk;3Ay##sN1NfBs?F1gRI+A zf!NlXXGRzL{DUYfp}GWd(G3hV)B8z9(`yeJ>X4zP3R7$Ca1M4uaIN7X$jIOo5dKEEe^r97dK7p7b{ifY z8uls)7#tdjvMU;ngA+LCRniV)=W-lxM)M%bs)+4CAoYMpEX>U?H}nspRx(T5i6zwQ z*03R1XO1+Oo;orGUXA-xaJ4mz^|gIjn4jmoXB;_?BsKy+fLhUb`rUWm=1keb_F*#J zxOOe(FbEyTk#Xol+*oqZm;7&cg-^K1ksIjCb6 z#vqhy5Doxc7ldVtsOC$A)y0vC3z0$7lm$aDPpgl1=4WsOsHe9Nkr=?wOC(NwD-%sw z%xPOJ$GeE#7Lg}K(rYYUpSgHNBF(FB<6;n|CxBC@PJxW$34wI>Mo1rUpa4 zvps=OQ?6~2i13-wQXSV!m~{qcz%iYhosG>ihQ8qN$Oxj%$;f9~2_P@qVVgWKMMNz( za7lktz6f)SA!&Rcb4fmt?3I<3boug?XoHBe@1J}A`9O|smwmJCUXC-5@;B~50Qi$D z&q1CC2?PnjZh&Wemsp^#ciw$B){JvMN`FpFPX}QpAc(SPcNXWjh(^-c2K$&L3dXs2qHgyi|3SO3J)UJx|i#`03+**j|4C4$ofn#K{3Y~ z6>wRnUPJ}}<{~5J*LjGSbL$#$j71nE7;oOZnHCo2DJHl7;*(FtJX?l?(fe|Ri)tZt`?$tjR&R6u|y2J8w|PymM#i(Qc1 z9@5MF0F~thTQ zx_WPp^JOgc0k4%R^b-J1?@0AkTz;aSBn<2XS>J-Vsx7QA4ye_5o|3i$3~~u%9mt(d zK;UTq;F+y@j$Ckc;)jXEELioK?dt$}_T1_OPWJi&b*d(x2JT#qp`j~V%jcv77IPL* zdN83Fr*86UFfL)D3tP|HP9hnP5Q_r&1uwD(a*2Qf6XiBQGKag|``g3{ZBP^&=5FdC_`3S$*M z;ErPqF5w*3!9NyJm0RT;*`+-rxHRpBO6{YLf!>L(iim5(=F?gQU%Pfaj+}>3O@!Joj`FbWp;M#j}cA)lSCMzIop1YIcHn z4#q?2W-ZccP=6HT$k$*k_Yv8A1KjT9(W7{+>Lj}KT=e&evrphjYV!YQ@6DR*JkC4M zx9U{YseQ%15kLXlDN>YVh2(H+!tUva?zSB<(^kZ|!@lw-na?pZw-eF!)m%(;wA3B# z7+In=i_J|UL69JT!d5^nsC}>b{r-6pEJ2h1E=7 zPM>F-kXZ_|pD`fAL!&%nHY!A8#~$yvHoI=-;JdiF(_jwoJ*meRPJj^An%pF^GOu^p zh-P77KGp~s^%HDpa_ZFSbe0TQWjfVJbTjzW7?=xN33!(L)e@2}NcPVSPIeGFVu$kIy zu$h^e$*zhr{8KRX)0d_Zeh46fATN+Dh9@TOMY@?4zMh*?e!-nZW^(=lW{_E8(H6rIVqn-75$2HUSN zB+(RrYK16eWu#Mv3uw_?IJPWD!BFO6VqyZ}a)5SPU#Cq15x5FGmT7;?&o6{%J07N| zFXlbR5=HaT8dJuz-@+#Rj%~-FePVm3r!PgjL-Dz9RrPtV9Ug}mIK;qjj{)aip&u}L zFt93^r7`mGYNnm9t8A3Dja8zD>^t@VC@G^xv26nYKhW$qW{3iJv_SNaqa1PqpYE~xO321;2BZZ`M- zrdfhuhL4>%+RUNhHTCEUmV!|ORbc{M#~{UF?A;q;V+CfH5;kS%$)@vgNxFoK2nwNH zG}~PYPobOa?n^uc&hFGLG`)R!I5CN)9M$rm2Hk8> zkU`SgqErJu?6=J}cvN_B6E~XD>IH|wJV4r51IM+p?2$@VFNa0e z;Ie;%g`t=VO!PNn!X1~_S)+=F0cBG^P^F(;V`NsdmI6aN>l1y2VDpfT+sux&37)t3 zrW=8kbrqa!0-FMbLCtGu@_o*Y(xT`>0BCc*GqTw%TLx>pTKyxe=>u4{bp6rYY1K85 zel`GM73E<+dz18F>5wm4UR+>9xw)pF{HCW*pJ^7c`lt-ma@D3yo4BqCyW?G9YlX2W zB3-{n5ULDnci_9GnnXb5)*#j`Wh{Z6{YXDaTZwSkB#Ncg;NI5N$}J%gLu)RWV%CP zRj{(B)ToFNE)->9m+*))k0M||+&Th=jJ! zK7}L~2;mh5H9L+yVYCkw9$tO*D+T8)gyNqb;NwE)IR__>ZLMuLu_kC;QYbSepaPnL znq#U8!}l38wnHXG1gRx*H__mX=SI*7*(QZVz~bY=SH^Ow@bK>;1`aXs+hD-C<{XzM zsBlq$P&qY^n@~S#Jm(kYNaH#~K39{6T_mDAWnGf^}EvY&8+pJYGmFt@&ZKc_s+AvJgU6!NJfsfn6S|GiK zF6YA<;M%mb%nrqI3qnJzg#uck5YfZ^F}3w*vEBDzi>x(k-DtaEZr5?EnZfdjJf+)*n}lrnxJW}Gri!ZU*=yoA801ZX82Rq8??`hw`S8|*YD90wCwCPu!&%? zy@Zzo1W}wUZn3up=b@3n;5q`%TvI0}k2I^}OBAJ>6>AjZ5~V-! z7VtIjN&MCE2TKH25B5b+q3e#+!@~p3rDvv_pT2pgnL0DqynN}|=H;(_o$Om!w1L^N z-PfEG_ z`!4hoPqVj6A8_wHyQA;zp*(wt)g58v;`FoZC2^%$#O=yBpnVv92f1tQ4sK*USP@Ph zCrcBsD}Z$)5N%61xSJWMRe|MWjU&At)m;R8m%bKx6yc5vl3d4YUf z#=Pq_u790%-LWXYRrnOU%O13wI^Ui@VaFFvfDqvlSY0_}sMO%uN7##4^#CN@`O)m)NOYb)rTC4RNd;nrC^&Z<$JuxB@ZpYFQ2fua%ezO^X>4 zc|MG)6Wjj~PzP)0b_b5aG-ek|%I1kMkq$B$SQ)hsKm3rv%g#F-O7v=?ghysphFX6> znakqFRRn@_=g!7WNGZKAqaVB4$WRJn2C;1e59T^{63GmUQ_ZvzTk$3=AcXJ2Y&y}s zC%!zF$yOuo6e#x~r@W_D-Ixf?mf}Z^f@RrvzJKM)d*B-rD!;8WxXyGE3wA-Z#FQ8b z%huv_=FAz0h_L|REB#&i-GxQw*z&}&Xm=6zw`E5&W5085+cPG3ztmf_1me_QsC|47 zjoJqvTn%1y`)Rj}>HJ+R686s+u35gXOHr+p3mH?kk<+xzv0{C~A|A4^07JoTfz|d| zx9=6a7kmd!-nZ@EvmOuoT?Rju;X@#A%cDRH6ILZRA^@Z>)5+Aa^v@%rI$h=D^4{B{_S4%D^AIVBB~v641Or|0G$ zV8wjU{JU@eyXNfavF7!k{@3R1H-3;{>b6>PnAs?L*dcYk8=G0T9s(hOLBw7Qc zoy1B2Q*`e9aZ*=~Q!ccZzgxI2S+DD;^lTj^MGyY$rl9Q6KOg!Jg-6gp3k)4n+pT+v zTKXldAyZS62sD?Q4O~DT+`8TLk^yHEfo2!ROlG*p4}!q84?ki*0O$ts2`dEgn!!n~ z)|9RLSTkDCt#Pi&$o55xjmH3*=Z8Lv#YAnfiX(_Wfzv2$SPzj25DHi`fpHB1N!Gd# zxQ!FY8bCRl`>c^_y;(DPwFDOf`vz-|Ot@=Mn>M+Q4B>**Ppkonm*S2hv(IhlCIP$9 z!Y=wHE-3WXrtZ_gu*J8jWz{_Q;qG%FN4R+5QBEwS8cuyhQ{G1%Vc8r17?I{`dDfjL^fzuvSV5rMS&g~pj^C~V-CLZ4gIM(` z&;1>|mn=yz#!CnocVPS#D0O8TLRdR#)iF}^p3#(o!^g3eeoT!YS@Wivq1xte~pjg{*-J6ChUxRD3ZL&E@O8>zw)3q1nz zu_L35U4%@sBq==Z>@K6UTZskSHO=(3w{BfWAUKB*I>Q*)p#R$u8tfnEiox}R@O49j zSkI}~3{!8Rv|L(1c%c3JjE^-0gMQkumB4!2K;Pk3r=VqAhUsY)238S97Z}&n%ou;Z z`J+Gj7K-BI%tv@1gjN->Q&YI`A@nj75JXD#rOkc4}`SrV>9HRSBOH-=QP%lu0^y>J(;PJ6$GD0^k5C47DBR;kOgg0pK%UwqqrB z(9Y7S5Vvg@R+%QX&I$@n*hO4Ic9`I%kMlEt5VHjXx&i?k#z#=igA+V<3?`V`T80r2 zQ?GR~FdZ`v9EpXN6>f*%30njdh=Lgfls#eXG&<2&uWC z-x+(3bz$_KEAL&&`>|F)EG@e(=ovFSr?70tX-#l(HZQl|!le1UMZx-I1~)Ja;%)F@AE{@a=wG>1d%V7i;!J*@h z=l(fIt*_4ce@+>P?;K*_cY%R}W6*P%+s6;btM?rDRr%4)V$`oI33GTA`m_ua`qDGc z5G;+g{pjhYcj#EN;cmuc+i@9DN%4>X(B46q95nbxu|A9*e~NUd(32k0wKk*8$kbDO z4>U96=9eDr!bC}e;Q5=CMRxNgfLFdwrVcS6n%2;N=)0QzcE4^YYN26>VVsU1Kie$L zEH)$ffv>PkCAIlbZ?goGcD8*CI9Oxww_m=w-YlREmuXwWhvxjLBdo7zn%lVj;En3O z7Hev7p`lQi;&ua`)CB7>pbO_7Z7MVyZvobWef-y3eB4i9zX!Ob8_+ki6K%nu_Cv$m z%VCdHojb$=^k98xLC{+*=rZ`+f{7j+AcZGB@%w#P&zEr9L}+n?vMuPN^l}2PhE=rk zrj0dAh>X9=ynbk_o7nZj>nmss;2PH6GnP#24DEnZkR~y&W zHP*-07I6-&Sv!mmt@`3g4~k93lV#v-)|?!g$aw3aeIq2O5zly_HT?{V9mbX|*g-HF zW*soa?!I`W?L%B!X2p|320W_jhO^+#MU8CJpOaGuTD!ON&kJ z62y&yjkUPDXDI1hjrY(pHZX*+K>Q1X47Ve^R+hmd7J~l4$tYUQ05vgrta%#YKtX7y z-9?*-r=Y(KuI?rkF<5Pmojlc?I(e3uhiUo)3ki5tnK=l*2RfOz)?N4>=e6_LbzMu2 zhu>w*ECPf5sK8g({)6-(FFXN%KGy;S`2CebW<_ndlS3k_&%5q7YD(>Z1x&q~L^n6i zc8E+N#7-0$$I4Ksaqya-babaY3DX`E&TT1 zf`;F=L!hkJPt80ee0u}}ifb8kacNsKZm4w}0x9mIbwU$nzk2SW=0g`b-QsS~+zL}I zesxsFq%nH}kQu&T; z5^tUt7p!7Ivace%+2fAmo@0_nmV zCZBRP$ci+~`XfD5ak7o@AcNi?_a=gEp}$?2BUI=}PmSG@!QQ1EJutd^+pGoP1;ULo zENm>_#=7zB4k<%TeG4_)-NtPRp{57iPp}5VZQv%u9oB7?S6Xjn7Fl3mKn*shJnCy9 zR3RoMSXmdTHWnY(NfA)iec(ViuuoMWHtf%_4l~geA zN~cdXLsP@Vv8Yw2FMwIgii%a;nTCfaGwy7Q>kg|r<3%A%9s)}gntol8>fx&f5*CS(2Ouf26-?|I;1`5!AGD$TfSX_w9 z=<3ofZiwt!;|Ku6M?7^AckIi!-r*9DmBMUND$j<9eQ1&0>DJ5~X=5*vZ0F@zWwbV^ zr!)Avc!m_qe3W+L-Srh5*_Jww?T@V0v^8UZap2*3Jr17NYoFzJ;Wj@@2!4yYMfT%I zCJh}gLubH_jFk+SOr=Ck#?2hTjwrJWg*oK9W?8l74pcvOut%6spUymIP%tW-2zI*9 z*r96R)ppC2TlPKtN`Lc`>i>=-4Ph!zVKd92@%Z%b;2&tX|*<0SepY zK!j)&TLtYXT_y~tVc_+-zjEbD^U+5ig_*XVzxu1c3d8-z8*eo4yz@@r@VRHuN?p8o zF(zIG9FIC6eNTo^{1k?{EKcIgXELy9uiyUmy1~~^vC)t3cumc-ZLlmq_Ra>2ghEUa zj*9tQVMjBl{ZpPVxE2Ra@FOfDfBxrxjyV`#R+#Wi{!V|0a~W_23K{b6|KR)0EZTnG z^SL}vz1t8TpRukAzwNb+ejF!5`1*Uk3lXb*sR`MDV*AQhuf6f#!2jFtM2L9lrI!fcKM_}>1!5h-#M8enh}JD0 zgx8n?>&tK2U_aNxYqrJb{dkCHEf6kHvuJi~uM4v{vahl**=OLE8IX1>0 zJJwytsrB2Z;?(vj#5mUe`mg``QT@L2`s=SJ&Zoj6d_$|NMh_He@>iLq`0-_))UKoNV4_jaWfT zYcR0ZVwE>fKikth^ZePSr+<`q2oy>P4ljTCtIdD-yZ;sCfk`;_@o}FZDa6rc68Ds( z%499lrAL0YDCkC!J?KnNhhFG zFu<&Sv_pn}q^loS7_1-AOkGme$*40j*xQT~XLX-6v#yV7b`7dk%WG;-W5>*#IE$ig z?H<{lPy#`Y5GHV+!D7+YiVi(P)q#7~5SwsM#=_3+tn*1&0UaEN$u%xPH?1XHH+P_? zF2&mjSUv1QJcR3xRC$Z*OIRXwlUiKDa-+3_{>WNK+aRO3&DciX#rst&HBE^CrVys! z!Q&t@#Y5{kEqr~R(b{9%b$Hp?LNRF>oWrBj|GZBDd51DUe?xMq9M%U)^YJ;C3h$>b zp77lJ=(577!^guTan3cm9lWCC!X2wUF^XW>#;O8u!yX4ad$Y{|Yo>c(bR&qlXN3aU zIt?A9U$#jTyvn*Ugka|wSw*1Rpy2}sspCR+hdxOIc>l-9FAZ5nuGZ0w>Z9<6^MsBP?f&*Z=@P07*naR1NIc zzWP<{%>`Jj8Mc)C~T}FI4muZ4*1CN=GNR+GfVu$ z5HT(8#NCbc;@Rh3Y^HJZK0Y-SZvh1WacG=K7vtf%<9HQ-C}T(F=N1{`X6)R;y^3*1 z+3Rb>v0y2}ToL7_a35SF9V7Omb31FK9o9MbntW(I{Oz-8w$E|oTIW0$KEpqS8~qFc z_-(2dk&hoTFET?)%76d&f1gZ4K4Yg<#@Ox6zyJO3H{bf!w=xh4v!u^pDNh1WOrXA5 zx-Se6y(r<5uzJW~$*5`Fka4_z<2r-sezeyzVOj_ztY7}}mzy`2V}`2a<=do0={4QB!H7@TgHJE-hV1-EQuqHrs`yw%NM0JV?CjA|s>h zHQiQ(Nrq4jyl`g$qAgyNp|u@;R|ZyiET?_~6X+0D>-^D=e$>4A=9^&}#f5mQlO>u5 zh>)3_zW)#Z5IEJ|%eX3VRn551$XGN@A8}$A*{%c`GTE)e!}j@{c-AFH=GZA}8*QKG?jhnBxpwWtY&$>8j;O*_`lJXU zmOsU!Dt`asFa9FsD$Ae(*m5iYtp8abwKzGC4v#|& z9Ae-%#ej3I&?MKLa_$^+{`=dx>Y*043k$@GX-S#S187orV8-{!qkk0Pfl17HSM#@j z_kT7QE?j7i!t5E-^ouJuoB#TQH=83T&*089+&uHbOU=bg&ouwr|NejAig79dt2eHH zgkoY2tHCgINJgJI4*Q&>4IP@QvPGsxSfwwzX-HRfaUFr-d~kQRxpU=1+=-weFqGXe zl)W&N1HEishj!g|#3e`Cf#u}E%@3Me3%DbZQuZgTo6o-R9Ly<+Nznc-qi`{8rmmp( zQR<{l;20sr>fjV9!D0Sg`=vK6tjw;ex)v>~G{oIXjl1W%u+FkS#+{iNTwM@~K;_^d zR%l>3vUwDkbUkLRK*`vG-X*4y|YfZzUqeTnjua1UdrdUw7Z4&JWMKUf^I-s5sWF>woKX|o(8w4J<|UU>8`}O zy+-_reXvGZaSx}Dw-B5xrw3m)Q>%8P$m-?Ub)MPPb(mDHZQRmKx4O>ztLqP8&YuCc zp70MWnxwYvYyR}l{%v#V#jiGJ&!0!IWpr^}e#Q2y*mYGl?X2sKLaO6H-k`6;$LPk@ zHMZLyi?c6VSRN>ewRRYoSigvo(E_1AQy=5MO)&P_ zGHz4cKY8+8T-&th855`l#m@wB91pRE4YQ9!KjYyn?n)O)P%t<2&gwa3A8M~%Fv*XrSO`FO$ee3f@=8THxE^80fxK>RA|YTC;8ufC62X(q_G zbJS`tW0i0~`fbO)`PN%7^2fr+%OFX}5-iNXRFhpglu61!mNTLluAyl+-5JlT=~WBv zM~jEwmLo&vOJd`K@Fo#8=RP4OZf~<>oQxF*L=@U2y@yE-R)?} zz2;E%J==Ke)~#sNtw$zPv#+p;FZXhg37woI545T0xb8<2s=lhGRV@UL^0*$-%XgSj z-WOgq{K8^=;>7pGo%Ja^XQ@Nv*r0a z3^DziIw1I33?z^FCtIf!e80AcaaN?~BMZL{9Mn>&U0_+G(Z>1!7hpHX14pKXKp71TU@ z-otBkY}toqZ&Bd1?XhG4vlbl}AO#2o5ufuJEe`fY%B7v+zn1BD#e4cPe{x$iA0CGo zIK;p|0|U|%{h*oLp)Jxu59eB;9sDqm8M>kM+qv(&R57!LYI%*+s4MIeeEigf=1X7s zW@wts@i~~)>o;baV^3{2FTV0>a}^7=dlfu2J3r-+NL?OT|-iCInu+eox z7nLL)f#%0O1t!vRr8ioCWu|>bTA}veEJC`5j*!8|z*ytSbT7dxpLVgfS-#9P?Qr9+ zVYA+_Ml3>~hfqSfG29Bf2d~3eucP3Qman5cQD6`k5nxb|tWfqY!L8zLhaHHG;gbaR zqk(Rd7FCA+_=S@M(BiTLoVqpblActi)Ks*yvkxdwYYL1tWqIzsb<*AT(0=3TEK_U7 z5%$Sg+mV?qLV~emv0MO;b!vm}pA2NF7=gE&A4L^)Y6IQoJLAMpgPcM57U0R80Tb-##`n!8%{NkPjF$wkN@)&jaMFCl)6jdOjh<3(?YD8v*X zST{^dYMRzncX;O99j0x-E&^DWu_M6VMzEvD!BM+eLaDVdPdaySFm;sun;a8Zzt(vF zK52LRuvoYbO`T@FdAeW42`k*2aNkFmX&jt&k%2bRos0mM4Y&D ztcf?)u`bti&K*~_&o~a37X=>sNgNpq=ruh?+Aq{)=KfL+pn>l&WE@L^X)u#Ej_rlQ(d0nE7$$@2n}F9J&DIZ zDL@=#S}O21=Ce4g_G5U2L2Y-DWDN?lL%c6TC=s2xIg<_&UMJIOn6^b+n~Z^QLM=gL zbv4pwQD$ojOMt{qiQb7Sb0@P$_fZbSNTNW8JFwM8s4bRI%Q!0x$bie>Tc4H(H82Ly z>N;folVqW=9+@|Vjmo@PhJ#FITeGtMlQO3gmJngevrOxjc`rnuFwF%XV?KbDNi6f} z{rsjZ&+A9{Wk}UTi=Wz$;!O9P(Y4XW_zdCm@Opx6IhR;_SgzNd$PzT4wH>t%uiFon z&x3(k+?~dUQalNti;-oRnaKsmGW>1Zgvn1d+?}>c_^dQ z8WEXlk4N~UY+;S|Mx07Oso#DPZr`&mf7@q{vBa5R#vj^5dj#xmPUu)U!bc%NA>zB= z{chf~KkWB2XU@dsC%ZFKu7~B>PU~}A93&uKvkk&#A1R3X?K6&_#}A+Tq@#{e+ndec zSU^0)yZ9HEpf%-MhQA%V3c~hX@W_3I1qB%AlGkjLW5azzDz5$ZW1Fp4+*zJu*v~H? z&ez}VQ8hN17qr)&_S&aC#MR+(h=I=n1JVOO9-)B;#$ui0^_hd;j(I;`lTp*su!FFm zPrAXsCcVR2m`kJR-dwW^Q06_kv-iiH}N5I3>wqYXVU`)ZTtXV*h-H(?t0S;M8Rx0j&Tk~1b6MT783=na1nsGyagk_NqO>5$~O=3;YXHZPYaZC1Z!_2 zuxQzq}}qu*Kxg}i5M16{)RBI$fj;E_bCTCDWO7woe(C#eZMg6&bzQBc*A7D1K! zy{yN()V)t3jG8=S9EkClOIV$BU2~kfQR0Jn#u!!uZX!@`V`ZnW5Gaj@Fd>O+SdxE$ z6UVZBzeSyHaA^H40;z`x{8oU`Wy|sHnyxZguN3E0xEKaYh68ozt*yDBEi52+?(1A$kLoebb z7!Ddue+mWfzWZMMA)Ul_piJ0v&p*%o)o6=laMdd4%l^UDtI@Rn>woiaqQ#Ny{WxAkDcw_h6-Y@4fe$>jdpsei$9$Y31>GnM$?T zufF=~qk1)+KV&nynVA_Th?Wj%Z*kW#V5$gkMfeb}>37;HQ!mVxD-2#wTbXvg@9zqu zZLPwAaMplg+Z(*mhgJJ;nM~CPf0iT6nsvpc8l3aQcqlCR+rBmflbCbi1i699F{dV9 zxD*6me);9#L^ri#M~`JQKF6kYI~KHT_#Ig6LtschQJzAFhka@tfBeUPocmVl81Pv? zj~}_#d8P`8jw=bB{b|s%^;KcX`X1bSkTk#wwDzITDTFCFC_rdgaV-0;xbc3iUtEiS z-}CUdcu$8u4&34ILkt{Z;CF%n=a}=b9{TO?tNkZ!rdfpgU@#}~U5EP&6FUYyat{K9 z>#u(O8woCkibAXUP*g0TiN$Xp-uMLTPA@Je8)*9HDAPdKRTN9kdo}Eqt9I9Hce>8( zQkV2wI;ECAF?+(re`$me`cZ-8I=n#4-8va`1`uTSVOR&Lt3`ZS7qGhqxqj$dzeoV< zjvJ7%DcU9*;azy{`P99(4a{bmqEwl2%U)#%?rz#`rXpdHz8O%y4I?eRCc-#c@)peh z4)F_HFvGj-w(L&A`|L2+Lpi$$0mH;rj1p)&G{IgH{FX)=-ttH4aJ`f;xg;m7QDm;yame_Od`St%(!V|UBlfI!K{sN$ygT<0@#zlOifxV zmWdf~eUgsqMijUyBf=2Ylufkd()~D%@mm*WU8p?dLlh?Le^czbBJ=@|>zerPU&Br8 zVM&SZ8el*Ak?s#oks4RNA%6NMcM&hfuelOpy}+uTzN6Ic4U&Vbz$Q}f9`E$xKGjW( z#MH#G1XWM6| z;C>j(BthAqM~EAqXvT1*qh$!N)B()fjEgSt6XAij$q5NpwM?kl?^Q|0-U=-;Of4{G zdvMts(lPUfr;*0OgIXqXqc7Ht!6arf>j@h!_4(+1@C4Intsfv%5Q zJxpahfc0fxVTQhsvXXIKyc)FJ*emc2z~y}vi^gRLpPm>7lw?Cd-mz~yv_5Dl^zc3B ziRqQetd2Oh!9OWN-57NBy!b^if9=ncL071e|(v4JBMD)Gw07=z-6Qa zEK5YEr>DczzJ>de@2O#S(ERKl|FQYzH@^vCkr7hTFB(+|k%PraY1!U8ib?gk=blSF z)dfbz@!Yv{xa>@ZsS-ZRb<%n+^JyC#Fg~XiTI<6iX6G9>Z$x-_23MySUU)IWki(8? z&pJ?;Y*Yy;$M-E$xB{C*p)-iRSB06n(8TQteED1AA}qlV*JSuz037u)tClN_KI8L# z6i_5`-nTt|dtWB_s{}4tpYEE2F;w?lkE;;#|Q}OF@aJkZ|hRIDhQ{4z$1sk8r8UJA3AAaABERArz3DMaF0t z=r4{He7vqes34>(lh6MA7eCLpf%3Xt{mGyFNy-g;yl2dhJ7-&lb^19x4l!_uf!`kn zq$|>b`W;3_4J?}c;u^$UX2;uYwZza62zVGp6=3@b}e&Rg$A*1z&(d-^ls^g<-vt2D?7& zU`-goim^UIUi^7oOg71~G{<@b&1;jTr;ET`Xii8r@2OeeC0*(|fxEg2{h0k{?k&tm zlP&Fee)>FX@Dybu7{S3PI6*?8kG2mw?QevKSR}c=2h485>U!D(Qz-1Z%k1NV(nVTt z^!}nLt}%NsqdVPb=)v7S)`(sCy?&jK;5WK)3z}eWCA8(TePEP!;p#$vnD7J8BN#NK zPTyg}K4UM|;4yYtKNWC#q0MdRvhG`^MfbBrMnu;Jtv*928O>7Ux%`KMnZEzV9%zkm z{q|6)XhIKh?%JVXp^I!U0)Xq3Ypq@q(qr%22d-<nM@s}itN&M;OV_jdrxKs3Kl>u;>ZeG-PK40io>&2fybu@iOIHtR9hjd#du=Ng`t zE4kUC1rScFR+S|DcO!R$N(6<+WBX;SV!z@mhbbdk;8-n;?~q$nOaffvCE zJP7bCSR`JQ@k@5$Snx)%s>s`9e+z_&ZraI!DgVP#!1RL$Pm>lNNaP6(!tN0ka3C*Z z9EWWa|NIH`w!uEjI?p_=N1oxwqi=8UPHOJFTc3T>zCSktgviZc3qlz@bbu2@e?FNX zQ^SdL38xxZ8C9(gGEl>q%VgN>5ScoU%a@;qIlZ09+VhrpHrNK8DR zk(u@o4w)(kf^|7LEmvX00phdX%Y;2Z@MXj$0&XxS^C$yr5cT-Pc!U`(CHle31WE{; zHMZNfI^GOovur;e5`z$K>MYNc-=5d^GFS`Pg#kTqFHAP&T83??ut$SUTZKQvxHHzR zF9+obL;M^Om^>s_Wx89LlgMXvDT6pd{MxibE0IEzY274_YEvrnX?b?7F!-kMyAhF0 zv<$aea{F1>Y?EzNTW=fu2&YW5?^%}jy>1(1;*CAg1*bCa3VgaE`J6}a#J9gB2=30T zZ>9Yp+!36-2Yj|r_)XC#LvKA2=_({#{orZ@f(W=gYuUEbZ{hQK+fjn(C)3}-HT7yO zF;mwzreMc`Oup~<@yK^M&F}ih_Sbe>kK@a6cKX!m`bdOZ1%#U)l(>wFOZ!g2_vKe! zj@9AT%&o+X*f!JTTAm-rw}O&*_FXM-o*(SP`1C%i@$lpj1BV#+U1C6b@fsxCpp_=CS?h;NH22EEwG;-`{V4P* z*d|!lbz8a>$ z;X7=fYmGvlJca_Gfz`$$6zc4OjVJK|zS%)Jxh`e{46u*{hAITS>t+!F`_o187 z05KViilzq_q>~rUHTO}9x?$hU?A>N`VhlX9>p5<@8y_tTn}M1t2U9)UyZ^ z-+r*roO}ukIDyQ&n8dVpbg5JXX4l%Z*>TTr+nP=7=r^-FbtC1uE*~XcXYSr=vpBcb zyz_HBOBgd|wQ_^RW2}RB?%tw5QT7e1XvOLwzTgYju#BBJb&hgLan3yOBd?Ramgox+ z4VbjqQ>=ZoC+=jJo3?3IpOUDrQfo#n4OB&0>;JwR~b!_FLU_Pi!bKf2~?S5`$1;^>8CFo z)oRNW8T=cjlWQKnCnM-Yci?1lX43RGr_Y=Y<0w43e#pR8rcBL{*Jb1+Jbq-hw$SPb ztL0jcLc|zSx=f|d`Ek1jwyE#E^1 z-H&klZn^gHgz{ZKU2Hw?QJ?c#ZL9Uk;CrnIAEi8D6lazz?14>U#79_s-ab;GbPO4D zA`a_&mZi4m0gJ2Fp#)ze=tw=NvQw7=0}E~lTXB1`F576?X4%4k2?@6jT%&#Zi?sK zsx5_qW6hKCR{_?8#Y1(wG+a6=qb|dl`43HzqWe+kaFaFDq56Io@cHQ>&=j^XEmZU>=gZ_n60m~edD+XTz@;R5Bm3QjWD`!MV9&cP-HUb|yzU}!sN7RXY7;=*&sw}s`F&({>cYBWz_W@@U9DWvLW^nN_=xFj zjYpwEV5EszLyf_Rz(y>BLZNXjx{V1NV1h&7OW$Nwq93IF_~vU>LD*?gpY+*}>!tX2 zV>s!({nw@dEf#IuefsG;{rm4fTxbS6cv&VEL?Nb)pvX;PCWylzHbI_7>qiTi7#*=l z$jEQdZ^j$wPBwOQqB(lvSTjfG=;{UV5ni{}vFhJmMxn(fgrnern1M}P#dZ)N7ZuC~ z77;Fq;Q@!)e~31DxUR;#0iMFOIk>amVcs_pQsvSTq|LfML0Z-$$5#*_R+<~Pf8KnV z1OmE`ZLlW;UB;MZ$7%LJVG4k5n19NANW0zlVW4jsoa2(~*n)3?;|kv-&u3pUf`UKi zhB%dXaC~hbjGNU%WANvdEFJQVVDYztbKI?O8pdA2a zYx?S|Ur9&W;Z8DLQX~{^LSrlfqc;Os!aR!5u?2IeG;F}Mbts4|Gx)J%F2^T^%e8xp96ralMgY-RAKub;-bMO(|QLgZdx3mqo>Tel$ zaV+i}pW;rfh;B{Q-KYwiwkh}R2ikS;upW;}pggyKV_~5m#IN<3y4ctq@g)Adu9f1| zuYM(Nb=G>0FD{Rj{eXtgL|h74B;>6AzUcP7Fhj@SdsJMCjdi`DB`Tu&ZK7aUqh=Jb~1|A=C{+9MRCJ%m`_o1twa6PbaeH(WR zGr_RLz(K3rfO$ka--p|h>6=yN{Pc}0p=VoY>D@C%A9}dSW_ICzbMn*)XcwEUp=9ZW z5j2iXx+skkt~Lz0=Q2$O->Q<8nbNxKbFm~quldjOGV)|y8iT$8(CxXaFtxatKs^y>5m^IBe|Rls`b`A2<7w+1w)-7=FJQ9EZV#q2EM{ zZal_=`TKDrQUNoB^?ra|o_DsX3wj4MaRFBQE*%27tOK})5`f&r-amy}DMXO@5O{k= zU}`D1YXkVXz02CYjU~i&Kr6)H5M^*(rH|Qo7MEC)i3u1)Fz9oApk009S_WTB2L0mx z1seo&&#xI{Sk_`)n1si@BV3n+&;B)2j}%P0tUzLxC2_lrU}LIM*-Ws{^C%w)kd`-a zV>$OA(Cw**k4J>Vl?C2Mz;x}Y3P9>n3ERUOwT1P@jp!)4x&GmM%}w@bFsqR}le?)} zc#J)0JDd4+brI~%I!JZJ%0fpdgxT4HjG6gmQr9!?T;s=vH=5_4n`#~&?`;sKH6A1 zbPZ!THhT=e4S-!(o+thsmszYwUAV#xAQUXomv-kO@UIi^(syjE896c7JVZb_Ha^)5 zZFD#9&0J~5*f4Qy;CM4Je2jqTp=RdB4Kfbi0d@r}`gw1@X=SrTgsm=I_!x=ZTH74+ zeB@Cmoj&3(eYu^~$zMr}nkjfKxXCbRF-)+M(dA(4v(`%bjbteaLDZe8!@| z`fp!)!IZz1E=U7BufJX2pR}WJTTdEPp8$_Y6oE2A9x`MyDKg|?sEXp9eFvtJ8daw3 z!TkrN!+2N5GVU`74t9)8zvanHDLHCVlS%cSlUYl|#fum7jEt4#IkDe<`)z!`Z$vQg zeKo}r33{K8FbWlLG4SJ$4!kn#3KKG!zT>AZ5I!sXl?nD-ru9$%?Vko7nK9e!x8-L8 z6{=7$QRo;ZJzbbq?m8GHl0RCkPN9=7pGnqR`DT>fdzOgGwyvJ&vmuy zanqrVc?UQpfIgEtd9V85i$mKfQ8buL4U7a-G>J=}_ZiDpFceNd!W01qIE7U=se}0P zz7`F?qnQBrmLy%@wo_$^ZilQ>Ov4G%g-c^(zD;R9geF}2vH|^<+)L*}y9BjE z>s00>D7Ztrz3<#M5IOWw+QTzy)AgHwFn6EN1J;yv5}V8>MsXg7(F7Vj1TA+#*WEv1 z6AiAeM6E8Y(|youxHPrtklersuS~meTSe<_;PsKN37B;0VNp`V^%e$MHVCsSo>Y46 zOR{-f27L!hfjR%T2zp*!h2A4P=n|%NSK*DjFv6^_D4MKJ!A)0H-Ku)QW1;UQlb!ev zeHS+Gv7Q4pv{vPzd;pqn`gR?r7ZX6PNxQpNS#xX~w3k=;P!KhDqXE}-jn0C0n?(>j zixUt_>EKp(CtR0!PNtadZT4Wig>#4TV!fP-7WyBr2c#p=AHmG^cN3-OKJ9Ah#>D!u z!TRbmC)nI=w3oyk2o|?-iCtd8wPno6}q~bZ@D7 z{^hSVqm#u$!|`Z)R#~GRZz{bMEOcGg)w>I;$S6BS4-bzuOKc+epZ?Q-#`?f6(wG~@ zNwI4%_A6?Xs{VImZ$b#7a0kf_btnB2}{*D3qxi4YQV1ynnH^)0A6$A2$Mv= z!Y+w$U`sfCU(Ho*i|vuYPhGUn>%uOvRhWU<-&Lb+8=Tb9 z>;qefUEXqjmLOz*`o8a2hVD_Gd(`?4maPEi^$!`K@(fShp+sSiHEAoJ3jyz&`bGQMM0x zHTbeTKeoG$CF^qhd3et@iU$Q#ulty(@48lLWe>dyeRp0LVZnQQT$9gsol{w)5Fx`4MaVVjh{`zctHiiF zf4jMQ^@HZ-)%Tkf1Pa}yhH#r1CX>$~T7B|_0tZ%sP1a%NO#SD^ON z4(L6r25+EXf??jqf@20JiCZ?(L!&P32V2yOWk3a*_){psmB}nntKif+u}gqg{)1Oz zD@$-KmUnQZ_rM0RCax#aZs~BJb%VFscbudgQ^u-zGUn3)eMT#gI5u;YyFJSo@8Bln zI1ncaP4>I}sP$afTUc&r9KSIetUKw2_* zl}Ax{QszDdiMwPQ;yJTS4dNEHMeNN6J9N8lnO4TFB9ZTdwQ!QBJIPW145fK;np zSZ79haOIw{K!OecIq@PQNm%*(?VcXu#ED{ z2Gd^(qZ#5R4;uYzCSktgbcEi zSVAb1B9TKB=Tc!VLpUWKnARj>es0d(eB{sV0QBQ^Czn8{Ost=xN=DhE7cDT&E zyKu^=I%stbakA>~DM8M8XOMf%N#mfGk*zx^>&NaSv92(Oz%J46gFyM)HVMCn^{Sna zsK|KL_Ho*QzqC&+&wVT`5~ak00JC+5F$HF=36+txY(L%;mN0+RRdJAtJHNf=QJGkY zv~~Nfb;mNri*2_J#z6Q^7*U>4cq;_X)PEf-0UQOI`|RkEqs@g27c!oN)iHJD%9VV_3{MI@ z$C~4ywypM)-z8W-bCJm#dQj=2R@fmj;`pu#3g21u=xlxMX> zNMod>tf$hT%=fZhNxR}!3S(>rAr&viguV0jJ53Mte+mWokS;$gD?OA2*G+jc(C%z|)Bg|=Ccg4GH z)ZGj_Z(>%GAt}!yXb}g&Y71g)ql&rWex@ZxO?l#DFrV!6vA@M_pPRkm`n<)ac)jpc zEd(`ty9Z&S2YyE(M`6(MvIpa@;GrjkJC2)`Dei5wRrl{HH2*U#?g)7)l87? z*@cjSTbmp7IbC$m^1TRHuAlaIr!V}rkL&o?9c_%vP4WJ4{4nNBk-QzDy6_wJr~T-h zl<)W=9Z#eH@kt1lK~iXNFnV5ymJ_sSneC)#Na!RPRW+=-&6x4WdorBv)Tx%*LyfP@ zn3K`Y^_UoU5Ovawq8XL|wehL+e(L1=dGb=9gAsGW8%*k;NWDycC1ellvuro5d;iM& zsl)ouoH-K{nMBrlWWr@2C1S$iGZHnm(lUIuO~PUQe##(D6$lya=4V&0CXc_wK?XTl z9C+uu-}!FJ5=IXf37O#6NQWm}&ph)?u3Mk=3a^K4@vvUoTkq-a5w^C>&{ z=K1=ZZOEd<@ZoOWY$@N(e%L_559Lv<5O#JxqUHd{!neW-BK4Uo* zf0~EIt4yxXCLp*2i|v#bE?294b64wzF19=gy z#IXauO4C>h!vTm$!vWO_Js9 zvY>b|+BWd#QDEaauk-KlIK;pq27dP#Q2Q=(y~qyDGIb__C^2zG3C7K6qqUrCfgV7S zAsx^fVKA_3k#kx1kV-#XYn|tr(}0|~JebJPZs>!D^s5KIZW(FF#3K#)Buu2)+sx)R zPoj-~|L^~*Ss`WT>_=A#xq$W|h>W2qY4^ZcU^S8{KLl{4et(C zh#{D~9k|F%n7%gF33oqsE};uHX&?YJPJefL}|MCc~(OY4ozYrDpQcWHd3^Y%-2BIg+o*G$u!?y-jS z^->l^yNR4MyblK5bw+nDF$h%-Zd9}ygpJXHauF7+-&l`W8x$PjbFc;&3jp8Dp~XkH zX5FrfGP4El!+*J9AUFkKq3OE_e#WBcQe>Q5AG}1`sHRhDMuj zeB&Er8$-!TpNJp(UJJ=MF%!w&MeAZ|q5xwb(pumJ&G37`B$inB9Q$Sti(8yncXL6l zL%QPSDe+m3DBtRjFUa>3DL}~JJ$^U`4>C1A6UHQy^J8s^lTk)e|I2TG``cmG$^F31cICF6@$vt{tu3aN_@sT!53kG4_Wq73DCPmoBH(&ar`-Qs) zOGjj!nYA!f%;iq!$RO+Q?KIXGKFlYKQlanATJ8_vzM@OXPk-`{&1*k;jXeLeFm|KO z=2K79tzrcLCX^3o!1o9??M4x?LQt?uK;3j&(4`UJ-D7Wx z?FbJjP*_7`#%09k5mby-P|(mlMeEA(<42nf>QL!pb}5Al8BgC|f+qLFEbkyhn5NV9 zvlra#6A&w%?Sa9LVvBa_(Bl3PS{uYg)++EKPWc~PiAy)?+hb>E@4GjF47SN7+#dqb zBpZ{}{$t7N&{Ak9I9np)k!yF>M+Fw>Yj(S){a(|JD1r^|f>{fAZ8B;zY0D9yCvoG{P!)ICcCanUb(zV0E}XGsE~i)0~;4 zk4Tg22H~^B$UODT$*g5ZPNJM`*gr`j5MhGO=G?V}RP6Mv>x(>x7M&dgD6>F0PP9;H zJu(rF!k}x}^!fA6`@eVxL3V~rPm9elvNU080AIMcZ{o_gyhLIZH^O5b2aiKo$7!Y6f*C!p$?>c6@@A>0&;gjC`|NGh#DM0)-NRWAQ;`w>~_1B|$w>%jn znKPCwJg8uZ|_@|pIWbVcwJ&@U7B5WGqTK2bBJegC(g|p zB|K{HtQ%m0PYGHy6XFSiRfQSr5l-7Dqc46Q;n17l(Xwr;eV|*IS*i{mw!y=1pUnZz zZP(BK@n?a{>$)K6#$|mTe%E)spFRd=>k@W_MVWl@k#S7m}V9RPr>kNx5 zs0z7(g{o|;Ov=TJ7i~@{4_rI8fC4xT)|A8+xZ*!5fQQE+1`aXssW6cFe1IN&;>*r8 z=DWeB6Ws=nsu_0;DOO<=uP~*B5tE+j&SM%(X+R(T;nv~Y)z{wn>#TLIhZ*HpaZ4=p zmWT8FBN~Ul`wooK4vbeH?m^3B$@#%+Kg=eSlf*Ene0k@cpTjubhPjim!xLa`wmH(z zMsUz2lYZ!KB-7^($ZMqBl$moQu2GVN%o9(s1JkOjtX$$cmI_F|2ZP^+t`k zack1J!gR}oD?G5)&|Yi_tk3&dgR*x7+Hn33k z|J>IyUDB_Hq(}869!)>n$MbnJ<+vuPnJx+ypUFo|ch*?@%A;QAVd|66@;_?}-!wC8 zH5aKR0zrqm+CzdB0mC&=c;kL#3fe#d%m^D)kcTYVcd}-=hRPRlWmnkv?PHcBV{Lqk zHJbJ|eGZNkAZ6Nhw{k5JXU5g+;EJ`yIx#qc5X**b4_D`#vD2&x;C~ne;4u3{jE%WR z#wM1BTg|`-dxOwcH?$KTnScAoUDd7AcI2D#8@w7?zVAosf2j9Y?ix(FI zU%{I{xz7(?;e8GsIeX?b!r)5t@b+C|Chw3z%s}w6Nv|$bS}ha?!$XMY^nowiEoJ$Uof@8+C|X!$(v z`cWt|Zs2>TP&v zMb2;IU5rbJFLHV=kK|r0M?BaT1(Mf)_Ie1visI9Z!2*$K8FqZ+vb47EahD?9slk6Sgp|wJyn!NJB8n`JZf)!=) z|L{1(z##@cB?g>F9{#Q8x$xK@wYAc26#=rQj_pW#|n6jPyxa6^{m{xMoP-hS)tW_fkFnV6c$ zHM6)aX=$adso`-vMhL1!V=u$k>XrG0{y@vRdj^{ucWyOHxH9#R8FP1x9gT0}XJ6KE z6+*@jnBG+8uHqz?Vd%c}aGk79GHhBX{M{m;*4?btl(QPME|_N9^+*Hf1%@S6Pciw)3 z)aZZE43Dx0*s{r78JKjO8W}aR?qF;gGQO7SA@g1OlovalEI~@= zbKiRz1l%(KDey2sB_y8v9iqVt27PDnIDk3>#cu~s{p5P*et}W#OK&rQujxs4U$gbK{7M9?;NNKhgF5&Ze>k2;3^g9KY4L0mc( zE8c3`e9nL6KWF^*aGX?pdd+h`mM?L45vu1tU*WO+!t|&d&b=p$^{{RiQ;E2XaPHCQ z2oXGM3PQ^-K%w2~SeSg@{%`TVW!UFJYx$l_U`1YOg5%is_}1ZZh=D^4d>Ra7{&pr$ zoy(8E@4S;Xxu}H>GEXBwz_6$}H!FmkE-!Bf7L{!71I6-_Lt0q&U)YUn=>P)LBpcP~+9b{54^3sw<7r>S3vC6iqzR>8EyaFujga~5Auw9&aUaZTZvuh*)77 zm^V{TU%b_n;Op<&i(Hr#6?pzHvzFe`YP=J(RGy0d}s;Dfad zVbZo|&4Z`WHOW{Df6Jc*UdEBajPVS{qwFGVV2?s zF#L|acu@GBZMR?04hq^(`m2l)e)8K<(-lvbbL^ocZvOB8_#c}uz4A)t zhx~|hbBwnkeu@A9KmbWZK~()t%xLKRw4CymW%8@jx12mW_nJqlrEecSldDh8A6xUe zJ_?#YZh~FoVANGc-%d3%YRF|)Uw-*za@(IsCprK zdtc%kA48t^aHmHnofFzil{xbn8A>OK*XpM-XL}G8>!?QfO;x>f@h2({Y!^;>>@KF`qR zvZ$3wrdj>qk%?(n(8ww*2wR0yeEgHAW@{Vp7q@8V(ni9(L!$W3%45aJ}n7J`~A z5gko`#t1kPk1H(FTCapnLDn&0Ft#vSw%4u4x@|o@I-!{-h$@ZT#23M~jp>(GT?j|r6tW_jyFs~&5@ z3d|q#77mzstOj|nIZ7(ayLU((4MVfKwt~wEDOF+oT`Qf_t^v+-Q(rpw{qM)?m8MDq zrFq^EJ{cypuHzF&;^yhv7^^+>N0(oS7ec}H=KT5dP50^pb|b#soS&4z?SX+On3mL{ zE5ZWPwgvs%gm&T;)y&mAUp9Ku4`N~UZEVWmoU-LL>X^ympuQv4dc^}55Mit zuG_vyh50R4?yk{Uucg_A=DD7w0{`-O&huT)>-whX;vv0OXsP{PE^=L(?LFFSW=A*r z^IcBq8w#{c?sqBtLAw=-{AeZ6ZOrv4kob%b`>ik$!J+i8bvXu%CCEb$RU4eykCj2obvkmiP7!3)LHbz$r2WrM*T z(z(L4n=-_pe%-DgE|3I(^)BghDPD%Yu6r44AV@bem1B-~nRhJ?ZQ9yzA0p{JoM+S1 zRrniXU;K3rzUUlYJ7|HZ zW5cJcr2ekYKPlgJ<~%9z{8~7IZ|+t^*58l6Ai~W;Vdt7_Sz@3zzzMv@pu10SwH>GC z)iR1X(@v$kF~7-FR{^044GuIlH8q1xfuW2Z<{R(wJ_Dm03EsosGWF(db^hvL=?ErdlLJME3Q$bSN$VpNgJHxmM@GR4)n^XTc-rXg~PY3Usx3kb|p++ z<=dTxEl)T$Vg7}|bbl@q;>u@iR|vGfIT9Gg_>h3XjaBANxWA={+Zs=MsY>q&9u}>B}KPUMs$_3QXl)>$e@2SBaj#OFwj&Wa>;m z_$+0(D6At~S-+brq1TAOXaCyQ)>9bU(!RXQsbp1cmITVSiDwt7WT2o8qNBFQ{xeOT z?mVV=1*G7nmL;CLc(;e=JQp5?K=J0-vOk11#7dlnXxk23-1+tggi^|_z$pH^wjCp- zjS3;+Ng**~ndhy`u^=2SVlMdp4m{vPI6Y)G(*NAEO`3pBDXZ}CXx#ZQ)mxTuR>7tA zUm1^Ny1;$nYs7MBnQ=hrYaL;S_w{FX!TNn4bv%5Udg?p2&!hhSG-Vtj4wKlfL6kQ~$fLgxUBTgpcinrTLzg%!bAxq+x$W9wDoTCy zx1mdJkf!_3{rP*)Ce~1bPjv~AW0hK~a9Ox>8~3H|W@sN*kzF?$!wr@lo;NpeZ9x+) z4K%gq9^c!PyFwhqGT?u7d%ig_{Q`vBwFu_j^&_;9HPCNxF~)AyGIec;yhnnN00dKVki|*gSwMb#_K{nYN#D#f&3Da;+kh-fFAlR4Hp5lHP{8Oy~NV2Acb}_wl;vjhra0>A895} zvG38Y3cu@DRQ?=+*hQwZPF7!*2(TT7Cv8kQpH9sTdR`e^e+LFCh-(e)kP-Hp+Nw>MU*>Mw7wrbjt&FqvbTK*AY}AY)UjB{skY@sVH!mf)$pCrlDJahI~dgPEzsuY@xM8RBLdIk8eT^WL+r zAS*Td=dlS$nZoIzHbHo8gD~`Mm6W~S^S6w(g!q#V``r5$?*d{wUF5`rFfZcHq`+Xl zbq_5JmT7ylxQZiw*RkYy(H~h{nrhJZ26d6^j3e>sd$l#zn|5?ASdQ0hzc{XfSOhBI zQln@cdk{+xahCcyw+IDM%doX(gAm6GGTs$W3IUe2j3!a5kj#H+cR{hwIA#n|6sMLI z0Rp0JI$_(jfxE(yDL1OSh`S$)I(1l&Z8Ph~;cF0jcOE;%rmu4!iJQK8_hum6luk_YOC{-`{7uu!t-O=wXibDfq4Q;6%L`G^=< z5r_1l(zgyY#f1p^s1Re;Lm6+av%+aCLX;Z3XB@-A&RTQf=pgB}2VvM?gw->Ip1HYd zaifG%qzp4P0S1|TP)N}hiYtPEE+EjN4X$}ndhBMarqJw$$f*QVIkw3f){i@u>bgyY z1%)V?{*ua61qvA9eKQda!N~3tXv=AEDXI;qmfn@Mh&2e;rJWt(0SNwe&45b?dW>

|WiV#WrY0nzTTjJRvq=4%_4&99Z4TP6X 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 #^^BM=z}=mZ~IF$>z(BjX4`<0K^fqFIjLy--lfT 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.com +

  • +

    Go 100가지 실수 패턴과 솔루션 (🇰🇷 edition: paper or digital)

    + +
  • +

    -
    Covers
    +
    Covers (English, Japanese, Chinese, and Korean)

    About the Author

    Teiva Harsanyi is a senior software engineer at Google. He has worked in various domains, including insurance, transportation, and safety-critical industries like air traffic management. He is passionate about Go and how to design and implement reliable systems.

    diff --git a/site/img/cover-kr.png b/site/img/cover-kr.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2d1e8808e65383bc521f1d122ead3157257b51 GIT binary patch literal 657660 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 =11~3G~PCqC@$)Ce^D+g>y_slF5-VLeds8J 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

    VB$+`qPetEsMa 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 z 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

    MPZS}?9d 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

    xd2>DYFEjQ3=wN!1>4lG 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

    KlnHx=>O1S%){{O? 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�wWC_Yiu(55M^^M^SwY>tbU9EI2Wv_?nu%`1TZ#0n+!E86D=cb z-3H*8qkWx(W9{u(6?4K0vgB8Mi zZmOQ2M_6Kv-IpP)HN@*Ip=~EQ7sK&r4Q2ac(mmKDInOUcXv^H0G&@9|;&A#A<; z^2=%J5*7h|FVQ~#&9dJ_ON^&rE4XUqQlJMSvI@9*I715pF+|7F3A3G&0Qk1?>VZ zqiizoWe-c>H+f>clU@N2=V{PM=DG7Y?pcn{M4S)Pbs_MU0>pLSdXFBIu`I;d0rnGz zw~Xb}r*E`rR}d8@1I>U7kBehLm{N9>SHU6gk>N(G_>t$!zO**MHb@+D6|vC6T)9ZN z;59N~Jvx2}!r&>RE_4bInwHfV*>{PD@7ZSwshS5*;npN;oNA+Vl*LbmS(xi*=|b&B zFo~4O`z9x$>GCy~g6sX1gqvn}59?9$<{>&V5)utR!DvflY4q~`*bkqXS0VG{sZ(f5 zE>TuKd`FFy?<=fD6e~&y0!4i?Lhm$*ceY)o<>=9)v3N$A+^e8K%!8HnC_qSPCH|hm zy=~hzv`eEgF5b^C=Q(8ge#8fb8Q%$}gvH4|n>=J`nz-thU?xW(_G+$V`o$?3J(+3S z69TCC1-!%|;pVsarJ%0Qvp&H!#Cz95rW=?z>Oo3{F*JYn@l_*9Q)!RAmAN%JCV{`e zSJ;P30}Oy}S*K2)N{@g0@z6HO+$c!+g0G7AS-8&cIq!er3ttRj$8v>1Np7@vAv$*8 zSbF~X=R!&0X4ErhPgj_v>=%6rCPqO^;XGhK88V0ZP#ev}$R}!XWsr94*b(Dk|JEV6 z7+FZ%@}K?l-}02PC(o+<`|9V*^S+bcmhA>qd{QJWN(ynUP$f=3#)-Z9S}RZ#T=6?E z#NY~JpfF_f9hY$;s8lc21atVQPk)*i@p(^6(9jhPm4Q~+@Jt`er-H~KP8>OMB)$6T ztArVSHJyafm8OXoZVq*#w&I3ke0YN+Y~H*%VEpLAkK*3JW>J_l57n|!^Odq^5h!f8 z%wpgLPfMG;FRd$ z8SQW(i+gC!Ij7+GiQ~8i9mV>vHr=#qXPmAq%QTF_ZK(=H2#lo6xEq6IUMGf$+|(dL zI?lYD2;sRM7`sRCG<`mY+otCv1Ve{Q(G+e#voQP$*N&gU^zcPoabR|3wkHs(9{={= zrJw%X&!w)O)oA+{(jWdmUkMm*-?o$au!YD=T`lVPR=^3I+U2Y9kVmV#MN z=bpiW^8K`Z`}PR?`poyANgw&h!|Ar$cN48>YixARVP>ICz*pgFl892HqnB8Fj)ibA z!>QW3+UP1JY<0KMGAWI6?2Qm5j!)rsb&3dr=gyrEI(yTuU10(7FgWo+t-Rwk$J!>% z9XvT0`0u`tW;S4Zx^@@8jo##j_(KN|b4JB02w%9Hf#Ys~|K%_La-40k1Y)&gm6(E8 zXkrt1HFSCytBgX#`3s)tJ;J`2*ElC`It_5Lwm5ug=rn7Av=`+XmLus%E#-F6w=rDW zc5=>zo5R2Ht#728hbGd%O?MJBOG`!elGqMSlnZ)G+C$JjiQ=7k2%SFL56P zLDOSgJOMmKxL@W8|EyEon{zFIo(lVm=Z1jm$+U<7Ie7deWn{r?lFj)g1uclVQ=zUw zelq>xlnE0Q`A_cO z)qN{{zD{S}i`&4#{&|wK3!w~MB<|aG;S+tRj8z$CnQHF~Yoj@wIgRTQ4`pg4@F64w zTBtn*E)-fAtsg}<#dVt`Lvt90%DClMC);=R9j{{7i=E&jqh$mZ`(at)59l8FT?3=z zc;=0Fxf~Z!8K5c_S2aU2Zu|D_4~D{a6s^1SFQ+oznF%X6@BHy2b5vj!T3DE>TW`K4 zwA1398{A)iomljh{K8tCRPd2`^IhRUvm=?$@vqd+Ns3v=<*dOcUclZ2mp?m1jxo82A7tAlt`zLBp1Jw#s^Sxw=qiLh zaaETbuh+28L0BjVsRS_JYOF%fzVJfY!#vrzX%icyaghN=F`p4Er2Ac6oiWDxmAmh& z3GKF@v+P~C{kA($RKXyk-L*X7I*H4Tv{mJRCn(Fjz4Fpa2npLc+u-K(#=gVp+2>zo zZoUzM^p-8#(j$*Ng7pGTF@nfE$+7oND60jZIF#-bbY&BQiuIp8OQfhawCsdul}@;x zDY(@ysQ{9Wxu1l?(GZ+WjziE38B=IRJ>$1#buUq;gjEx6NN1so!|4qeYR}!c{kGjO z?nJR-Z-G_}U6Gs%ZmNF%`Da22(b`H#QfM(NGIhq4NgFIw&tF5DN<-KB;15)qzWNnibw zucmIscjLxQ2$j3i_MO{f{5uhFwJb{rwO}a>OtRMe;UE5|^z)zlX@oXhx*D;hA~duR zF1H;TR)z56ymBM8!ca#idrJ@;L37|ROrBP>|Cdl8uqhjy{LlaQe@-9!)M)znCq5T* z$3yIH!{zJ67hmAuzE{)c?K>z6JYc>k02!Wt)27WKc#B((nTiVMQ4=_4?&$V*(;rF#5@PQH_E)#qv zhm%R7Ei#EzB9V(YSahv^zUiJ5)b|xSlx8K_5@WALs;o`rSA~dJfc0DNTM_u>6%_=G z{FLLra&LLQ8~yFVW?3>R*u{$%!cVop$H^>X7$$V`+wWi=dB?@Y ziRi?RcJW;8o=IY)soKRrElXL1eZB%6sAiUTSe2ix#-$*!u2iG`?;Q zym;Y4Tu)H9ctOR1gBB#*v^a=MwntnP#sR>}bud)?t|gx>){-LQuU0cGf0cK9&oMFC z78&kp>)h+F#}fCTN#O{%X1p^eHN%{lP%H3%yt;fAx3G*&X700_-P8-1|AgJQ`(rH{%HPM;{q-f*5Q2idf)zi z!899fOt%ynrw|}lFv_uEn)e)kX>s5BzO;Myt(+qKQ1n|^$&i=!FK@AoqV6Y$4jqEY zdOkh*)KlpMhn#tG@+dT@Xy&WLF~-;Se%9h@Qs5&T zOB64!bI;h1>fvKhz?Kg1TzI|Kz>}Nhh&Kz*Vx$4H&y?gfo%e&Hg6im9REmjDKZT925 zrdbhW;_0WKPCxV0p9!Y;$dSWn?VkxZn+G0vC=Cp3iL$khhue^I3T8AmP}36?RTnNy zr1L`~>FD{hX$FS037XpuGdML3V}5CzIYj;i1fNEtAB{}18TT-uw3~1(>Vo;MMsT<# znA%Hh-rf%m*Wfzk=IXFMF;Clw2DL=gp1h`JE52iBa-V{25O2NbZQnCmm4b(KY#rxj z2vf&ZIxxigtED6%l)V1h9+U`Yfb)Ln=ov~>psZ$%71vU%(<&siP!(&XI3zB5&+^Cc zte9Z~wUz_vUOUzmnSAM&){w^^|2DMY+k{kI#~QshtZ_Sb-UMCM?TJ&pX>V%_E^{#b z>xiy&=N*e_Q{P6c1=%v@`qxB%R4};-o(^W(&i4f@NzXDDA9(PAh`>}2t(zm9uKPIV z+0d=4T06L|unC#N6{(%q*|;x_gHc}~dX)Xq8r6#n+}4}#NoxjnrQW^`!Ps{o%-N4s z2u=#HORv7pHJi>k-$QGJFf~GyR_jd&x$bk-D&*XB70A2`br|G>YZXEY@Xkfys*9?7 zaq8w#+^|o?_Y{mSfj1_{pip~h0F#jZ$D{ZY_pV%i`0E-F_`nDdw%x&YQFE+KPHKJJ z)Syea)ROaqCr-hfDp||r3QIW{xt@}Li`OprddSJz=}Brq*6G?!n0?|z8&(Mp?T zyV$e_fjx2jM3}2xaCNCM37=+&el`7z`2lR4VD??6*+ot3i^Q`e^Gl%A{;KuJniMtE zOA*FT&44Yq9$c+w`NS;c{;0n*6mqFoM*FR6k$?y@7rhaDA{CHa6vJ1VdqKQiB}nG8 zAIo7aahrs&sgc)jHy95xg+?S6b(NA-B&Ie&e29K|onMUi77(m_W>VOk;Nya&SzRrwi%nblfl14d?ih7Mc8Tzq9J(f+y8v6Z4b}xlmjShD5&E#w z{^cVg6IKM}Ru)?OSj&PL$_g^pGS9q6@mEsicRg(n&ALn`?QVjBli_rMcGIDBW-rY7 z@xc>e`5Z>5@R=?yEp=!pDaSli5HQNk6Iy=WXWOeSYeeg)D~4yCcnFn3LkNe!G)@Bs?rxr*oSYALnH@WKrro#R8snRVK{b3=ZYzo8Rb2XxG?0-E~AFNmm&z%lS zg|4c*cYE@&{5^~YKODb;yTVo+HS&yZX>J;R@~J1&V^4f5V&tD-th5|Cj^b)H8fJxi zEeC-UyuT=eUKu+X8k2odt8BZqKvm;!JPo!@S($@tWqG)`=;_fL_4k(P$2}St2-v>n9bevDa#1umSgT7@Bo_oc)a));V;Z{Rg-4ZRX}jB-Se zQh8VdQ*VgUpd-M~P2{eR6YRfez%`}>KZr9XplK8A4N;NPiM1iS_0|F7UiR0W38lvf z76|Fqk)uaKcsPY6rn|cXCU^sFWbYXLQ_ywOuw|&+Tg^st>CgnisWeMQStj4{l@3Vv zjG8FJ?U@$RdlfpCA+DarDn2;a3qGw&ef|AB2REDCgT-m#&@Ru9Xod!9k!!ro4a`}P zRyfzfrecFiIaC3JL2j($vsaq?D!h>spxFTs@N#a&{1!1u z!c{yn#k{lKBhepW*+n66buykv$iTPpu)Dm_gXL&(Jfzs?+;s&7a26)FfI}rC1y9B zy}D;l5awAXU>igpYhFyKV78dR9?AoG4PSLNsLs;RzyKE8Y5gv|e&UFD?!yYiWNU6{ zPJ@S!r8CD*rdwbJZoB<<2&yJZwUvYd1?Kv|XANm4>@tqFJha_5d_`K`-zzX!k!i)H zbK6lgM4QRq5kP?-S21w$H2;yQxIAvcM1Oeh1@A%s1`)c9cio1ImVUMKjFBbB3B>%A zDA_*!z-z1P0C+%$ztR||xt=&ah$&kaE*M`iEtqAPYM52~>q4B-M64{Gr;+7nrG4d6 z+@!|K<4|Bz;KGBzEpa~!3FPM;pW6nLW2is$@+5pLTV~&UYM2~%aZ!8?pHbRwnOSp_ zeW|C>2EY8$%jqJT8>*mfOR1U7ijHwDQ9?}KHyMFM22wn;J+?jYwgMMw3j*(b;q0Ot zj1L;WJHR977>~jX?Lrobat!Y(yk=SS@W2P(vR0f?$e?wSBk%zc>a+jA#Bt>%$6$(j z#7h@Z@!mNK>ltIU#0ExYYFZ+cVRZun1#O{NK!YZWuztcv##jL;Ga6bQaLK`UIs~x= z-XX8iJ8Zju3QuewLL*BVDkP*OG?C{<=mJih{%Qo2U_5D)p(}^cjQ*GZ_fONFSNEjn zaVhy9|JA=r)jce>Xb>oO^KmBk2{(psOITU``jhyD|=2Br? z3+(O7JY%Dv5hsk(DPgU0!ws&JXer~o1?G3)l;g>Kpj*Mvy|m{=>NtdU`la-L{Kx+@ zD-5VVKtQ*{C6kK<#>P`@4MqCGE6=4r`O`m*y)@%uPVJIwQsz=8! zMH?II^U1{knf$H|2wBjLnF_s>vDfe3eow;ee&TbVO1o~q1s9!lc`ox_jDzDr5#p}n zos;8U87~`N#*r7QmZV2ok+sU`UT0X)Ibb;ibH<@@)aQxCT@9U#>mrQZ+4TKqpFyB# zNW0eWigmS$ZcVbLNMDy=&>g377}GI?$R!kQtZ?AQ0v4T47{!M44DSzY9Z2^Pu2kz( zD@?Zsq)897;(YIWPjZ@YO1JO6i37=6aZx-M@O9H|2QX`b37lixsvEH2L0@WcABny) zri(LK5i_O6nTSt}!U2J)jh2T#WkuvEAmK71I4Ugg_R>fg}Eq06o5KHRkW z8RH{I55lL+rZH&j{sa36bGkmYvHt@Aq!9#;Ml36fjMbu+C}7vsy(-rHM%Nyg>5D_S zq@lo=Wu2BzRYNB|Rl5sVs_+{-a+rNW2#qlMy2ka>SFKy!OC7jwfg|9@0&{1KgZ`vX z(gvAzh9piLmp7Ok$9hX&zx&vCQx!tN7e4<5*8an(yB(zu5wMzZr`o-FAf1FnPfd1! z8;tkF48olI#jsE|)1Gejk#OMO95njO8BV&cZBJ(gN7LD{XVXGsN4n>c-qgLJi+M91 zwAp=1jctvobyZuMu7U=0dR=vWRXU4+(uCmEj77)3HbE0XL+a$5AON()xgds^)f=OV zJu#DGoKHl*nh+?#R>pP&+(3cF@9ychDVB1>W{Qk0XpF44s>HJr}~0SqlRz9O1JAP9a>;1N-TssM~@r z43}MNxNnMT7#que*Ai7-h5?l>|Gm5oA;kHxf(PP7PMKKxTL!~E3XkWWeHPb)^Q>uk z{KX&ptLAkIOP^^u!4x;bB0(AUKLnJ(vs_PThQRr%&=fC)sa}mz4_YWs1XY7bm*VlIRCjYLf;e&mkCWxX~?AVqs+U|ooj!)ufi zBfHGOjQ_=7`~~|EUXK1LY`{X(U+EC=r(Z(f@ea`qt)HjbZrier82AsSPk!=~sc+4O zsL=5hPMOIC?kwKA$cP(iAb*~b+KNWCuH;o?F8rm-3Lo}YI_o@@@(Rzu7sfIx zZ4}@YV$7q30wE}9kzpu_!4HG>o$r1({oDWL-=<&tm0wFY@46WrclmQ5GaT%j8uG9F z@mJDgkNq8cX`Z7T$`64Cx=NX%C6Ef?P?tQ*Rsab)%EQ1#U=zX~LX6hjaL=K=&LcJM zj_JVWf%J3i54r7@TPZK&e<(yGJ~oFkqNDsYU7;=9ue8^3P)XoO_}q`}Q>kGP4Yk$M zaN(&1Vd(HhG~V4Xxrfp>zWL4c<$viR7z#V_(DG(3jinmkSi*UF)P#3Kl~b_9d>k--1?sBE7=g0R6*7=-9F2SQrM z-&-GNE4b%i7;A)P z`}>1tX+>_tO0se7`qYV4ze+rRo-n0*3P zwDqLU>F0jtr@*@j>R?knaCg2d z&`wQW;=sJ#)DCU?+b5n)J$=Av%g)#*m0;?d30-SH!n(&;co3X|Yps3fzC4A>Q!NW6 zaDek)y5d})X9GOQ8Mq_lf7V1wn#3aEQH*a1_MfV%kWQ-dNW;4EFGm|m+w`6SeF0F%ibn$F%ch!V7b`ovSghu zN*3ippamcnZ0^e}X|lGxMNqI(Ee635RepQVJZ^rpFHS@&w@mMAe)QS?{Rh&`H{Trf z=!#tRGJ)L;UbPG zI7pn0Kvdjpf)O+$WiB68Z@nLq&6k;oxxz)p4H-ajGmkev1JB$;<0fXcXfYou9g{E^zUlWm#^)A7N$oVC29%pP9!!0M1i=ef4K8^-IX}`%xHp=e)}GMH8azT#q=Z z|GW6Cdy&^JB-P>`b;xiqsVR^AEG!BQ;;kAheY4CBL+Acl-nC4Ug@`lA!45MHl@YFu8=SDTjpWRLB=EZk7m+V&GU^e=uR?{QPN&u z55TUSyJA6K)wL?Lv!P9|v@7TQ@%%LesAhkep1u3`hTD#AJns20(oSa1!KX@lg-Oh< zfDi6xFdXrhU<0P}MYC{~F1vb(cqs9E?U;QP5)A4Zak(S%d7%O3K zJ$zI~h^OL=?uL$)3J~!!({SA?74q|1P)mDdJZztB7UnY4GVm{8<+=CndqYs!we_ax zON1N+udM6&7oJbw`qsD5svn_FBg6JH*dXlH|J95>cfUt;5JQ= z25Ipeg1v4%majlIj_`Bz(9v{|4c9X$ZmNO#9NPP4g!2ZhQtj>d_@kNc?Qhq9*fD+EY`i#=VGJq5*xDTYbIf;v4RqjXWsTr&!FCjM*5=k2 zd0nxl5EMpmpK5W9rrbt^hGsP8twaTq*6M2M+FD0|l2!DfYr{Z{xt8!cKGodsMyu{S zZ3I~8ZD>ukL}nVtT}xbO;Uw_x7US!Zoi+CMa&j_lc+hK`?!@VnMAuxT^2H*bm` zV-0hBRh-D^i$7XvrcmgNuoeyt;&E{J04`)4L^pIHZRlj51oMCD{DoA5l4cecu?eCn zT|AAjc>ElK&^QtH7)z9F%tB5I$F-2Lt*=K3fN5unaJ1u`chNMrHr@ZgeX%)zLdzCF ztYr=d-Z4i#>HPTVv)R>-XQH95OS+fES_?Y5GAQUfrvVM~3R>ViWBR)GDCEn~Eu^U0YyYW%Tb`T*R}e9)6+@34;e9v}NI@vwZEE14Z* z>BqvsbIVg}Itwv3uPzrxwNQg>T4E37=SWT?<{MfsK84 z0h5Rr6I*}JJMX%a1r26F;Q>2-88iFk=D0Iw&Y=Ba^DBK5UxL}ObHX^j9IqHK@4i10 z&2cRB({}uAU*HEV=8})(ScaJB9&G-Tk&~e@k7Hlwx9@@T`pGiLG44K(@%35hKZV3^ zVF1%1A(vSyNz0j$XVwx4N+H5|+sL973j>*=PRr-@&^S})XKen=t5=eX@>0+Siy%`M@swD$ZCYoJG9npy*mCT&wciDX;n`za6Xg*NG8ZicgkINc(t2He43Ghr| zV157kbcvAATF$oZ*h#;k|F)U;WW49ls4s?ZX-)dx)6X#ei!kHexVNoi+})cY%(FG# zy-cxYFb^X9EATc1?THho(!m1<(;7~)W~Ws=Yisn-I&cyfmwM>==1uETC+;~N?YOvL zIjccYaQwhR8odaUJiVB9qv@7Ot)61O&oOogLGH(BcVlr2E;uv5&H2du?j)+u1>B}) z8P_G|->FFGT6;^Fr13&kRznbQ1+tMTgNiBV< zXI|<4?b_Sd*PmW_V}I&d-5qO0BXq)0*YY3{eGS}lk5#NMf$!3EF*SyOdU(XV(7HJa zeNp)HT6gby=!H{8VcI!bl)JuazXR4@e3*V92z+1!2zwPo)*0aR%k(oZ*f1DBXbJ*M zA;FX|p)WHeZz@P6b&-JhfM}Y8gE4Y)%Ye}i5z@s!TF8A{C_-9x{Eln?G)}~J$vCin?7#}|5k~)453VmuvV)f{LW(PHTsIz0y<#FH$}&F zsp@_84Q}Q|Jz8l)gUQNaEHiG|-o1O@2&TZk#UdgTj0=OzO3V+&(r5bdi||2k8TZN* zjByuMu@Is~ml>A%Qu{BQvc_jAHt_ZL_XloRUNAniNx{~793S)Mc4nOC7Wp$i%lK5` z`>dOb7B}Z%j01}#FNg5s{sPNZVA1lR`-Rs{EKry0Aisj5A&wO!ocr!`DLrB~up+{o z(Ki3-iWKvKmer&6qtecuE-S z9}Y=!+A@~&>9NNj3q{QCn+PL}Kr4<}?o;^ff8!h9fMLWk1aswm&pOefVcpIfakT-) zM@5WGcN5y(8ho=C5o%-{#d*&e2wY>(WY7)rVHngUn9ct6{pq8Remp&R-~9n6(5o`% zpifxRGF%;PDksJKwc&A*uk%IauQW(zD)NAPjF;E?;P>?Qgb-m=91qm%z{={m5c!8u+V2c_HZCnZQHpWx1}@b^}YK-6Kt8Y^s^0( z{y+O?|9yI${U+xLuiDMo52K@#Y{tF=cbN;ZS^m+FK9X8-qj8Q|?i7Cap37i;bFQPz zpN(kDdk`Fs?>`u4&Www5Fv_)90D2I7+>gD8r3JW!k3l32VciEY z*{@NX)^F@jM^79K4}f}}j}4tqX9rKjc*&H$_R@3UqkA!6^1;JRo-sstU3O}xYUcPI z+qNPEVDZ2$s##p%p8E$Bo~8+cGIi=K^rVrs^#~T4L6lX)c^y(n1rfUuJQb8D5egc? zu@QuoE-VUtxHhREa)b2btf5Oe;E;FQ5QNr%!?tGtm#dQ}kE3`T3t@dT!cGp1Wg$mP!6skn$r4PZ%WN|xWX~!BS#LWiw6&+c3gp4u$~=0elqQ)o#zM7 z<0gd*CTBB@QlB{2jeFU|IO_*v;eM2QHp0kK)L_l<_XW<9XkUZ%h(0*KvPG>XJOI|L zUK@(K2F~4BN52dcs|6zX9`H*ts8B90>&{ez`&w9Z!Fka}JeA(sW?djX!^g0?tqtv1 zE(zTWT`9C86gEz=%KUTwygO9(s@eO2zj)6D2p4D@JuxQ`wg_M~88tbJ34Qlu4?9 z;XT_ICfQ(wVEVb1Dbj==oApH0XdktJ@GhpY*hcNq6(2;N3=aes`kTvSk)oZ3!n4hu zKpH}fE#{p9BPWmDh_+M~aG|9O&c=-!gHg5)rFz|;=M7chr$XF1TLi1!fQCgJw!~MzQ;Jd+W<^tbTR2j?V54gKLaSs8}c*07S>V7QnQg~UM!X27&LQKG8~WFer_37n z-LYj5!8rwDXM`UKG{OV@6pof_Tf}LwC2vt7RL0uT%)-#&znTV- zfj;=IZY2EffKhPIkf*xF!BzCbd8S)L6viw1>KhqEP2y)i{aGw->p6U|KXvvHA`*>z zGj1GO1gnWNF8;fCNh4l;ZBIIK_((9~-~84$!qTGfqc%GjQD8YweYG;+u8Q={ws0%( z>mZEIQ*BR$puT(8ZXUaGIuMS8Ba+ifdRYs>!q`_eD|H(yG3-Enugc!ep0;j-_JeO77!R>%4}$?+5>&I8BS3WC|^ z+xMMA`rP{&*xV1p=pkcc;2^FtFp2%pe}x%C+Kz+UZpfWtOpGX22g4=v<$9^rL=CYa zb`Kpr5-v*(tU0cxllbaul?o*RWonUVX=zU<2hRYHnsgT~Vz0fjhc)7Kdhw-KnTsAc z#({rp>u{ynlD_n%UygQa-H=v#ZG(jg2*v2lgc7Ye$x58|;w5BsB*hAFPo$kBs)^vFP$#fL$_*o9#Y@m-37=bd| z$X88WgKz93Jo7Lcnt?&>SSSnHp&4C0Y&v({0G_-0Hej_zG=WYHavn(s_>b`;T#7dK ztV*MGmqLgPivxYBVodsBz}G@Yw-0Pe!{-UTit?d>d9Z3N8|86DT4enhL0C9-@)S75 zhF2psJQXT2LX!=!f*mFfb5!bqy-eSny{z|&1^ zR(mAZh*2v!+stBkW&-}+m2fV-^G;IW6a4W2w1f}bH=ohQvO>-FHhw8MGteiTmw z_f+!Hi7`Uv3-Q4J$;@{_Czs65bWaYhpw(n3k?~&z&Q@H%n4~{ll#(Y ziROrPNDEFo5uuD~rQp&C?s&qs`$EK1=f7@m9wz6e^m6``!6;m>Yq2_sfAVV1W#1D= z9b2tN^Ro!`lv9Ic>gJnwr3>dyMc-Fniin-^;JP9rJM6^UBYkh_CltfOtnxhJHH1N^)^kAo)R(NRkmHzva4UDuRvA z;+zPGvy;#3vLN~`^DXk}D_fAwMMkZJgdsNGQK$$R3`!uZbKa?-c0VuZ1!1Gic$OCu zCzu3HGinYYIvj*0+DN{YN#u5+P;ik^kWsX31rC{Gqcf;=Gs)N~RA^B!=D%Gx#&yvc z%Yc{u3RYMwTO2}yjDQ=Evqq47v{R<#{glcW3KPdh*aiV$yz&SOW44Aeb_!AwEMa8w zelQF4)5V_~0Uz(1f{0X*rQn14Gjp36Uf+p5GnIGZ#dq;fSfju%gVe<=Xg%RJgy=`cGKl_=Vju`aK_?f$)>)zw0 zTl?a?up9-lQSj#bC_p?Q?i_yM6cx$})!xD*@Pc=QlWlbqtAeIX&?65%lK%N`{wCVp zjRE&Q;@Y<(z@8^TG=-HEOYb&xv0f>*&iUp$Mr|p8f8bTh!%&~E5y99 zA2O+G{B?bGT~eXomX%+Ivr9VLfC4<+Es;xts3_!X@J(Rj)oT6iQ5+nibckA^~TMyk$fHJN_658Fn1D* z0@i{h=K-d@nK2@TL36Y`)W8??GPT+eSUjshrHzM!)<8!U9-Kc~Po49#xLnP_7`vWJ z%M_yO!0|em`c7QHVjd#ZbQ2k@ts2G}oZ8aU#^&kfu!cETo7t!i&{O>)R$=JX4BiXP z;Di>`D#l?-3l;l17Qu^VaN7MYQ&?{2`BXD_9ws`8#iNF{xdFWzhQ5J$LR4Vz1d9+M zQah=#8$?k893=GHc7-QU8*CBQV6loP5M!dP$ll_LTr>f*A>qXaU->YinRPJ z!93QlS3Z9G5MFrn*Vt&E5EbVqA*&1 zJJG{E2%>oujf!RaFNlY&bQaiD?>WO*JjukwLR07>LK`);Z{Cbq7!8X=$_e8nv8**{ zO|0h}(HJuG29fh!o;ewFZCU7X(epitw+yF3giN=2ZN~d0*&YQrzx~)|`&NG2k4QX| zFuSO{HCz(avNkZpRqBmq3X=fLqRu(pFn0 z6E6O$$vKZEOF>e+b^O$zL!AR&B9(aIyE4i%FvBv0mMboM7Dg}lv;lLyI2BP}Dq8qb zpA2Aib9HFyy=QrjgAAU;T>ST1wE<91goF9Q{RnvI*RM;> zoPrUsw2iQkVKTQ|wWhWKGyrrgsBDfUOIp8fZTi?pKNeAMY^n^IVFra?aTk%ch>MFX zw$>|dNlz^A0G0^nq3wGoDdQ_8Fs>%&vjTy?0(Q7{m|lJDRa{(-5dxFB022@}pl!BS z3&|XzY_qnUCv;ZY(1ym*u$TAWcYkQMrH^oUJhn{m$T>q_)Z*F=6%S87@nl5&%6&xu z!~I0Yk>*6(tWU;TTy)%Z9sKymKF*mEyCc$#?q{mg{seq;xm73yUzmqVjGTYhmz}Qo+&kUuj5+{UMnpo&zImx^M z#`d1O?qy^4eQE1v@C3LP8fkBAr&?LxUyDC?j3@O+PXmmZE=A`Z1QYkKmxPTeV01Z? zf>+k$tI5>|yc@S2?>Z#`*|HOXJ8MLYG2_!t@~8^v#>uv`&9pvFtJGX#)&3lm`ZJlug<5p`hyTC+sO} zg_g-|(G)+ZYl*d!c`y$n>qhNr_D8@A6P9xd*PGL+nsI9;52kSX!^z6^^q0B~qYL=i zmoSlL#;Yj1nTF9OaJ2~>X~v4wgf_Ynd~D*Ql0a+B!V>kPEWnW{bwPtVn^sfrWEufS zbc?IUJ;pxHa|T6hz^2S*aT1Mp6&se95IAPpguTQm$F<<8u0TR{h{ z5ja68-dW0~|24SOO%ZL%{UIJ6JI6ZV-p^Xx&1%^nfi5L=^#*;XI$hITJx*#1ZC` z<;b(mA;e3+${OW-muAc$=ql)0uJh05e#CKc)O(eS^2z@uQaL@F7~mtJ}aLL-6JEd&W#}Nn%&)b<1!U8}KxhCg+rFtWv`E`)yF=RxMO~7Cq`xKw z8dwW9x}69Ovh}>5k}&iW3pQ<&DYfnPtvWOqS6VClBsQLWslW7wzW(U9QF3%cknjix z`zTEFFkK-wF1Y2M^$A<^o4o&CCQ->YN4uBdgngE|aG_FDDubv{5#vkSeQy>*uAgqe z5JE14ElkvgsVVYwav1^zW*I~Md1Xw6yZyH;zr`_s`w@oXm;^qftwJ3Kg>fx&r`wTC zec+eEHUE6yyuKee&2!rn{bJr)hy7`3Y6n*}Z`ZP6dv$21d%JsilX;LwD2Bo-lkYf( zAsNvK9XGlgc5vJ@U{PcBoYQh4Q&290ukw+d$AAj^8A*ix37|W2X zfN*O?<9o|3w_>4K2MxogpK_OA_yB(NRppDLE3PQ~F4893XL7zv*AKHn^x&a`foHmI z2piktzp!4>{#qCt%W&YOvs&7~RND1udg#H2IkkBQG5Os$0i3Ze*nb7|m=94RG?Tvh zT+9LZQNF)xVQw!c5sOs$$`>pC2Hr=eJg+U@u~aa29ttzv6Wt5qo)5=e0a!&yA1+KZ zA{Z*)b8Ll+!h`U3bF&+sc@UrMQo;sf*0W25Xw`D(0bhb*8ezo)83pGsG4~tM`nO`; zt6_ZZx#!;W=tB=t1v}D%5trcRfmLq5^FlmRh(KEb?oWpR(c8p^ z_!=!+Fp@C7MnS5lPfpyMcJ5%$LnA^0j3Rws;)Lq?DHwdL3G=jXi8?uI0zr`WB4~_U zAaWtkKzFq59k?U*a;^y)bu5ux2zripgutclCIkY<%g9VxUE6_y?V1?F^3Fup(&}2@ z?)ft}6r~O$n5*1_H z%UFP*rZhrFd<(q8VBb|;-!jIA?Y@7woVNlTIJVCr3 zutFg0NXumAqeLN4K_~h8`#PYr2$x6_{j32Uv~_~9J9z@D0zAiz!j(c5?tL97S;WWc zr67G!F-4Rv+@HqXkAaYBQn9lNVM>0iS}y4jb5R-+VTpdl>cDM-HaJtnU#%7bE^~u+ zD3IwE)`R8JpdET(Ok$l=>FL}QMw!pzAjxrd4oRP*^q`FTJdfZ0a~%jc0&nRQgaLUf zVSe>p3BowBK^PG*h~+e|c(qur2=9SKGS$}QA|w+pQz7xy9YRLu3O?VXY`!|Ya5&|; z81CJ>Hw%oK3K7}Gx{Ojdri-SrnujqXO57|%0wl8~laom) z!b2p<7$B$#bFvsM;*LA+$Z3@3b90v3Vu`iPqxW=0u{?zy-7YGVfFGVawuTNR|XNc3)(M(mW7DyjX8mYR+hQ)$~+l_Q#{L{NSQSIpr zi%-UtKjwG*W%ixZCjYAG_MZ!4=Ahbln*nZ!GyF|ny_q^V#L9T*+{)sk#iZ8OYIiM` zh)NY7oV#f!S~hx=x)rb*LF>v14elpdC7N=j;CCmN@K9jh3nWM~W}tBa!6h&h-s=Wb5f#zjqrTKt;_FXQe(XS9rfER^T>Lb?CG z`(xE@+}{*xY%?PYys9P1wL{ktVd1)=t6K#wUN1jxaXC3CKIkzCC-A&y(yuw9W>0;`(D=acXL6oIKoy zDK#lfIG*~sXCH=eqH5vj*t%AB;F6{#V;CNL!&(k08!)f*x4QZ`k2~0)tEHuLK`Ul^ ztfK}50KniYZJ)rM1*_8-LQpr_aOuY-Hc;!rJ3fmALt%qbJx#fvP^xOewOF}lV(VHI zf><-BfoDHVzglkFW~fpRoYb8$-_9E}eFJ?&cw*huGSUW4srB!p@J{i|`9+>Jz~tP? zW3f2UtxDHuQ}_$|HURB1^skDD4$2<~c5vk2CclL#|G;vF!-7$C(Ee%Yx7JJNsJQLs zWAlnj^T5h|3HH0Y7rd5+Dj3kuHu@5Uhx-%|Jl!}yj6gWf9`Z3ZxHCnm38s9*I`*?5 zFd&Q$4XrKRtAP~<$7vbqq8zP5(+F5cUOdi;;1i{PU4QxYPkySL=4^{O@GC+PxHQlE z?d(%&@_Q=)06+jqL_t*QVV&`SJaM86dSaN_H8A_)gRY34M|1wdc{ZN2w*wk9z}UF% z#7e{kliJT>{??!`|Lw-7Cdn9? zQU>3k+u~;dg1V&Hx2~$O^MEAHpPtkyf_1yFS_s+`(XbnYbmHfrB+F!y+NL%pup4_$ zvuVnWc3TPK7XL{m$^5+TOzdlb@ak)A&t)bAgHc>e5(2eW64OigYF=hi(^y=AhYP? zWU@*)GSxz)t47g<$%Vs3NB>P@EgLamfwJv@|B|SvH5~Q#tNvRT3LrvGA?|l8*@>p` zR&~uIzhzFl@XOUKIsl{N>7b6eZ8sUYLcvJ54Y2W2zk1XwWehmWL_2^9*ZD(E*L#ry*9r(DzcqnthNcG;#e(Ko^NN@*o+~g4Bf%R&&AU_xu3&Kj$9u#H zerxg;hQdXEXbKK2jM!uTrq9^}!ZY)9vq;E)8S%qZ=V;Skdq(0XEL+~2r||^xsqnFp zwwnTkSu^DI%6kqc?QSt-b1)vcW|<95p+n}ewq}0mn$o1eloxzQp~IA@I4q3L8}Ueu z*;0Lu3lzGpoj1W>z@b25Ca( zCH@BExD!lrz}ECU{>=Cc%WN(7+&Z*$Fpq7qEzkV6hjc;)Hurecg&U4^OF>RSK<#1| zOu!s%nL?X81A+X?V_z?q*q|EbNSITM44KTie#LzXW6-1g2F4@jFXKA&fpQ07GI#CR zO;wfQHazVV@2S-k-^4vN?9!X_XHVhIbpZU3X@!1ufG4zahTkE1xPJt9$f@ww3v5Ni zeYf0EhF0Sr-qn})$r9Y@al8-FQBV#ITD`QQD_;HJWg4Jm#ebGfkMqK5A{@Fwcg`r`d_#Ph_NB!Tc6~tDP zPnzp+31E}3saN?+wW-D*h|78AJgG(UE`5oc7!8q8cFdWKtR05Ar46$%>EMhES?CM( z$rNV8G$%}V_Esf>Xhr2-_8v%jd|->!+;Yx$L|GTJB6i70S(kiZ^&r4*6SMu8?UiLpL(uaL zSQ)@E@JT_po%Pj&;n>K)_$jzcLyd?AgU|Sc_Tg$HJ!eW1ml@mv4xLzZCh_6d=U(OA zAQ6aqxF_d2 zCKY&EyQwM+IX3T#r?!jnXlE>})43|1+6v2!fJ_jpZuVrzZ}^ThzK4Es85-_PuwFO5 z%OryZybI29Tl%b(YAxC-{O^mkF>W97{Bx?FK*=xbryLWG*dDQ(8G8ZsYFajogglT;(_qT}WJ`--<3-bj7qM&S_9e0VlzZIf#2o!j% zHS03|zq)ZWb4Ed=GCeonwWj5M*O71T+Vxc&0@qmKExjF%{na z7QdpH$oO2Z|K4vtDe{^>Ho7u+j-^^jJL1?$L*`gW)%N}PCr<<)vWb{13JdwrW;dGa zn{Aj#8C9rO+Wqc#zo+ckvxoTsV^5iBA%CP%Nv-|}3$@@{2cAFhJaxnI&?fUJuy{ya zlr@#3p>pvKnnrtj(H83-WCSGVXp_wASXCxk3t&(7ZR9rjOwH@O1v|z)vPcsJr?7A= zMzI)Mk3yURK@Wc1nG@vBH|uSGe*;I@4Kwhm0 z>?wd@Tm`c@K)BVJ%M+{{9NI>koHItda{k1n3&w5^VQ9%4B`K7P8kb)(jOD3I}M;``OgpgK!WS0Ozgwo5V}&1K-Vw_J?Sbwx7zh9ei{d8bbu<4|TnTir zmdC=d(h*PccI@0d?tSONGy|@CQ_7+LhOO0oX_oeQI`s*x?z%$_kI{F|ZfIw}gNPx% zXbleSfa&jI--Y`qdV7d)#Q06{T&wBOhHVI19I}WYd+6}N^3Jt)qkus`0T;E% z$A2)N8E@A&ao&9|o@zb4wR#d5ayZHuahY;}Jl`rhDou8*g_X4V?Q~-Zyrl&Q2U?<; ziNQ5E9wfSPmzSP4`9w?!*Ia9Xuw0YRP1YeY`DuuBOxZk+TL%+RhN_lR-<6QhxAJ>m zt+pmL1py;*+{<;asg?>Y1n=2DiPb{lk8>~_rfrjTI(M>YFhOlog-9MJU*Nz`n`_ui zHGo4{Ix+-JJNVH8LCyF&{*{o(80f2Szii)xQ86GCl}XcuMNK|LmG;^n;U?2|)Q#%2 z)x+Z?mTDMRN~wdq!q_M=XYr@jVqtmwNf{LY%b~YYNq;~0(hiDtoa;ESFanqAzEYW~ zFcI{939swI62=zzGHn*Ns{M4% zF7I!E<~Y(f>4Tl|9T_Aw)iP%)4Gc%A3!;9v2VQtS2az2-cpy=v_CL2jZiCVZ@kpGL zR+t2F8L+ma2m5+Wj2a>tKJHic3lx|Q2i9c}t!t^q( z3I`7!jDo`7={J3r@ts9`+=Wucd`34iv-zDtYYAC--+SH@_dxUISqm7#%2T4XiYUa^ zh)r(pl%cal(C3sz9WwlBmyBC&lTn)7Os(K2lV+PN(xVHMz^vRp{u6`pw}6Z$LTC+_eP@r^`8v0&bo9b9FCb%RCf7fo^o7)&)Mws?{5VnckCW8lCPb6a|T9>HN;H!kY(JcwR|5?zY6Zr#8+9OpvYvxkB< zDG>G|1kQ9K@G-6m88fq5@(gW1#aSOeW#jZv*?ar$@&JcGc)#Mw!{FLj8Db;#Bz^IG zArFu1#u}p1WeVCUO`3#`&ccV>w(r(*?AbimPB)6`q38zNN^aE6lI1q*cqY# z5Ik+o5n-b%wrl@gcivUbv|Nx4dLX?OUfmvaC(lJ0vna(Z+j-kXpBma=ISnoF`t7tb z1m4mDgk6%bInYiP2mfXV9h}U&<}q)WN+}u1dnU_jKKTv8$v}meQotetvk*(X8~5M*HWP4)B4GtZE0>b|$&XB*WfR=;@qLmQw&6+W%{8h8jl%k$$N z4w*+Mq7!!seyvPzz?T|RHD!LQ72mUGPx=0LzKh0)jpOtyxFS#l21%lBf7MzjKnT}t zHs_hdWhJ~4-V(3flMBFiGv^eSby4PnF3yiLKPe1*PNKhVl@IkCE!@>V7bS>?&wNx$J>)Gp{tuA3? zzk?TC`#V10Eugi7D`6y|0m1>Wh8FnVcfRvj`NlWDSswlR*K@$5LYaGss^Do{cjD{0?2=yRk|%&wjR^)$$@3WWL%DHb-=Au<*^YdljnKikac2po%_}Y#Ze(+`W`8Za>%pvo>eU{EK zse^AS3_`>BZ5H7dK?lvR^IQ0fmv%S%K;Ww5+R}RFn7Y5q=r+@1)lb|_N9!-RoW z>%Nr`sayECL0HXw6&&0UeFeH`rLMEk(wPb9DuEjiQZB&AUS!>1u?)lA(S}7=+=H>~ zpqw7haABXzGfzEHR?&v-tY?njrVX2MhdWzdI(njDFe*a>?D6O(5)c;Vhu`?>rdGM;5{Z2N#qsC`V)m61xFASF8VVPRwJY{>9{yJ}^c~Kfb z*QEC&?4uaIaF)EDsnCrufr~IgL^r~XmL67;a)q^j0t?DKzdc9Fb#)TqxC@~{7bg4f z;fvB=@yzkiq9YG6IyxT3qUSis%y$7mRb5&QW^v`w^66g4xG)jEbqrkvlkHhJtL%)?K?M>eRuCjq^7gLYZc+1Wzw}s&Vd(k z{iM!bgo!x?Q~I`bD^U=^(^cHtv29Dfby;6`;i)kQ zzAEG!x>#$7dx7Lp3?Iy1^z5zZ?&_y+bw6o!QB{##iI-(Nho#eRr|U!DEe#zPgyjQ% z{cf)OMC1!W4kC()d`J~BgP9?$Miz0>x;VL6OTnOOWn5@kEI{hY5FnK^iEWpg)+CG) z?+_J`*m7ku-8W$L4{OupE7RK4%PUD)_&{dsRjaM0)1+xmji5=UFXm0#&ASp0(O=(N zkzb;(cHHCwt3YB~)Y8~j-?2?Jw=O8Ox7kRou%fSJlUmJcex}}LfmMSip>4`*n9gQm zFJ^ijFNC|q*>Brs4C$!H3`v_r+zeO*IM#8XA9) z*G+`>)5VroIW_fI2={&W-3Nns0sUh2wHIcV@kZi+O}^Pw8P27*>jEnbT8k8&tq|m! z`C~}upZ@fj^8N4sp#1phpOn*QPM2dRUkVOERX-< zj!~Jk@W{CMxt=y(T$SmS{zz9dS80DExXOIkYw}`25xc-Q5BTEsu`_#Y{Ijzc{mWkHSpwdFTgxZ<{XMOT9CYxFm(qGzko&HI7}P1 zhJiky%DPD#x{v~l_%;JWZs+E(P%Pl?G|x%Sy$BKSxaW>Ch?^k$hYLu_W;&EH(QUw;CFW;X!6f_p}W!)`#)4%OtJT3c5Z|{iI>=31WXtM$IEwBP&jYG z%)2)O3&bb_#Rz3MzIg_(vcUVUPvSx!0;Ra9f@qTbrdTKFvqF($5y6*htr7|qM!V87 zxPg5M)~)tlMt}GsLL+-PSF>+o9*c(OJ-FXwg8iI*oYgT)<~8fJ&KS|Ln+RN|;`Z&n zgNq1_hff?R7jR!w2!9sg@UFY>EIW7aDeJcGKp^YK-HS6Muv$nT|-_KPBrdrj`%!P!nmgzp^&X1o1sB z5A}576A?B-wCH!>kz7^dCqcF@KQf^bRTmngR;Z0qd#zw&d+p1$scGl(`x%SoU7EPk zJImjHrEBx&Tn4@!Gc7T?ZP=HLA%sE~28mBrmw;taS_iA647`CR5w(r{H zv-*Cm*XPaq&ASz5&9B$)yQ#-^o7!P8YV@I2xJ2f(r?$TI(u;(bJYJq6qR`jB@n|`6 z>}XCWH&0;0%u*{}lNvW5;)2Cu8XsxO53K-xew!Q1GEY^U>Y3sH@O2#uDqv!Vw4^?MO*GuPd{0X5rOC&3W^PAPdOzjG(Z%TPB`ZB zW#WPxEY+g!*|Ud(_wG*ABQhj9RS!W39Ls9ilm1vSHSn>WGWarBGAiPjv?0Q(Afla# zmgPO!0%)gwlF658Rp3$y!fSyMITjPW&$T^u-;(zxrO=K1LxRZ^|}b6(VZ2fhzfBRK*j8tNr`;hrZmxDa#-E(1%lp0-1`ZX!gl! zKI?7L^6SMhY#z40n|EwW+E2&4mmmW4$@a<+T5O%`t^omk;2=}#SW3seujNMtl5LVv z3fstY%a8EN%L=bDc3~=Ab9~PGmY;Qwg1mNpt9Sver=Cq4*E5a^RBn1j!O-m)NR$OU zXAlNPa9KKi>IBig_5<&JT%EQfVj)1Fs@_6`qsb}g26$q<3s@aIr(lXrwCymRTQ;sk zEzw>E36rX@a+$LUF2Puc_f{AefN0KJNGcMPOS&L4RMe_y5^Ek+7Fo-8h}Bpp#eaMLkEn0e&58d6q%#(5Qi$@cR*u1wUO zeDp_4awq#Hv;_1Z@L9jE&h9%HK7WZr`1(sfs(kUN6a1KDjdbkSB6!)JZpL920b-WJ z>)a>N!Pz|wVfoRIA1@cj=gaZa7YM$vi#!wMh3B8e7=)DzWvb(`W_2F|1ba$31-+9~ zz2_KLPn~Y8s55M;?nbatXmGk_*yyA1wLQ9p_p^?<=8N|pz-yqB4V;KRd}f&OsJxK^ z5fp&2nnb807y$5eP7BjI&uYna?$tTybMgO1shPJodgnitXKxt+0?Y+d8dRy^_m_j& z4A?6T?D9c#Qkfd!>Ee976o!HfBAg3;4Jlcf0Fg}ulK_aywGFi_7fOG-nE8&3ncue8 zG8Gl%VMeu;0DRQr9Zq=eQ(F9Z!q~?FvEl}so#iXA8eZ+`|CIv>QOUh9V=P| zD4KU{um9~+z>`1xwhUlgaX@S#1)v1$0KRTKS0MCWgNJWKe_u_V;*yM%u66DYId|q9 zjKAUSFdc*ArZBcLb=(V1(?9XoMJ$@h%mWri^ReJP@x+hH$3FJ4%D64)J6suA8Aibs z_`RA&zRvG9xNNn-8NPM1k@*!b?E85%Z%2XR5XZ(%oFSN*^;FoMZBs%;;K06w<-9YGMNK15YPoR zdY%GZU9QgH>bN2GYMGp6ylso)E_0*nmTeXv*09IpLm&E3w9UR#8Phs%c)iXIJ45ns zZGra}%2D@!;qH>Y`rHiW;iHg|++=8AptV$`hFW8Bva!_g;x$QOV5XcnemsJZ^E@>Q zg!H8wKQIu&7$^Lin)cNn_5C!q>7`{eUb;OQo$qU3`zo%c zm&S=hUGFLj`tX{`;ljQp*CTJ2c81H;)WmRr`hDx0BJ=Z2bBZMpW z1m#WZiI4>?v0DrHxVy1f>jS7ph-1!GV4s6ywEx*>%J;te7-vM>7v}B)>)IssZ{5Bt zE>|8t24@fd4I>9*dExAdvIBRT9=P5G?q9lip7T0hU^D(Ob#dbI?ya2FfLl@r+Uzcb zBAI2J(Zwl+iC{dZ*L(qp{GtUNQLsrib#z`F3T4-PGdp5)KUKe|P zWQ>P!o%4iiU5H06u?LaYjHD(L?>QJl9Gtg?eL4z^T4=Np%rK|NaA7>pNy^h$5*P}E zAJ<~M4`775FB@@*peoP~*G<;mS*W#vofcjQ@$R?+LBb>+}*Rj>Y#kxdW zr57^%UBIn_xvDj;AGp+c>{&LPPRPJ8^usehREQ0^ z&x3Nb9-YHA$V9>#XStEk6$DxNX zydu>oabdssmA?gm96q;UYuU1OWBH|r?=OG+$NwXzTz8i(%$-3FTimyI7q|_7bmkPo z<3`|zAQB-0t5RrFrgkjB(iTTfoL4B)y0r>ejNp2;W5*80l`~2Z9-e=mLrM4D1)VsF z6=k8^d-uB#REEMAIQHfTRf6xrHRU-G-cC1!z*|OusKiWyW`ESeaKV2Uj9hcqLBHt~ zg5hG)Vh*p9(dRCn)-SVVUA<@$^^24UI3Xnh5^EPZ+u*wvzjQ5%*WXTflR||=SmD4Z zO-^oo6)Q5Qleu=njABMLEicanB#bThg+c11t+vl=@2NGHI7t|7k12u@*Xk%%N^0qA z`>S@%>&(y|Xj>enHzd(++tv_FuXpd>U0yiwLN=Id(Xnai zAKz&!3xjPJHa<(!?STDs+`Oh-^Y~20X8ZQ-VJ z4UWn*Hx>)~W}n4#$J>QW0a=D(HD>#xM~~tQ{#ew`UP;iBbAYZT^#+b~7$srq++_HW~wA!FzG zG~;PLHO{u7Qwt1X5JQ*v{efTlKzWe;E?YUYO?)?x%xUA=nLaju0Hru)y|&2!0})Dv zv0#>I_RD^^zP%rqQMOTaYTMO>UVoXg{U=YJmiR~%o5e(+1!lC}=VVv(4E%KpXv?wou7R zaLwdgvG&*QX7GjLY=?}j{n$dJloQ8KL?H7JwP;vrYv8z8bsew33K*p4!kOoudysPZ zEn_Xg*Q((dIyT;WvnOGZPOvJ-0J*5>E2@^+s8eC`=!9eFX{K6WgoSW)Z_N~uOZ2JL zvLH+qIL+e%c;v{D*G+}&RfC6h7<7r#Bz1;B9yjglMkE)h$rFjXyL5j0rv;x>~v>KqS4(E9yq zzk;vgbc<$~AB+aYUChLnwSZVbBzStlv4Q8;MC;Zj`4ygt=z9VcfYdQ+x$2`g`B^-X*vL{|*?jKCBSu&Ydbx{O|{iC5&Ec zJgm>WYhiHpk9U34I;1O;XJkb2L?j=$L-JtN=L576NI0OC&Ba+4bp>1n{88Za^syI9 z4LF;LgOdm!h6A0TjuF~Bf?xiLlV=GhOQfMwXK+~IIaUFgV7u?B*Q?gZy!Vx%b%O{u z>wqPA0>hdE)__&}EG|9F^BG_W%N#rsSZ>bk1E%7WOt@B^Hs<}*G!_7HV-Dt;N~UR( zhu3*vUru}mo}E~{=qy$MECte7#$aF#5t@LH-@?{;pn&YD&kArVC_VLArC{bJ@755q z<|mSo!WYjvaM961;|%R3;*i3ZeG;B+xKpjhvXL;ZjP(p|$25WPS~fhNWi2{&@;C@-a0B`T3>&=nDvCjb z32AE^0;~VzL42lb_%I5KA-)Zez)g58!uw*GQ4s3xS%?Kz7-}VyeyQ;3LeLS{P0}Q3 z;`J?`dF|)^&s#=-2nI5^61irO9X%(GN#t67KR4@x#mkj0lw6rvt-O|QS;4tnN4o}5 zmTAaB>SUJ~^3S{?W&9~aY%3Bs`zV6Yv{?i-$-LP{35JY@+FKD-pGT233xb4*doG;5 zD*;i5l=k7#~fA9$vpB>$6APV2hfseKPqL_2M><=Q3} z`Xz{XUEj5g_{XNus?l-5wpiG%j=wMyX~m3uR?^xT7n?XsM%>wMGo9(YhWZE zwc6U?Q@(+TeXGol<-#~oj%H@Z$VD(r*z3{H0Qi+F5(gZqI$HJHHo6J8!AS|Kf{^Ys zCi_<-SXHjeys3`+to4g{DFJtECBk9SSfC71?1nxU`5F>f{9SU}O9ij^r-A;}823uq zY9IYuude_8Qu)`u6Fjhl%oVK-ua3o9}_h#nU7|J3SO&`tFM?MTV^V@N0=tEQ1&3)S+KD5~sdMHhkDaaEUbhss6 zv3%#`CEP3KhO45Yx=!d80mDfd3WAn6jZb$NP1{ZX)~;Dgh{f9w!Z!y#(g|@TjJywaVN~Cb=$5ys9()>Ek|Zm$U$?+U!x&O(^`3!W%1H_{0KJ{Fw#&N7_B9M zocl0K;H2%-l9G0{T3E|u?*)vB%!YmT(Y}5As^ttCtbhOywv7H+>+)ooGL99tMxil8 z^eHy@%Iu5~w)TS`9!ZJ& z_TBZu_GwXco*K5boBoD|SuU_Pf2wKy$@}Dw(!h7P_K|quiO|6j@F#Q~*m}=(YS*rv z)PWKS9I634*sKb3uY2RO&pli2xa~ITV_X?nHwTZidDxL=Wdz;|5v+IaQGhOaNEnlZ z|GGfc>q++QDD2uV_jM>Bu7WY{K-KRUx>0+cvRPfBT|F?n(`8JpGdS#Lm@@_D5PU{1 z40Ad(0+6u+)T7Wj(5LiGW3d50)zYIT3En95s4$X|p8&@40SmkwEk5gjVQzcCHRpfW zR?1T0pyj|*lXY#IfK`V~Jn$O$#En}Sn2f-aK0S(X)L6}dvLTb&Kn{#gkYYKVh z*;KBu>Tl_`f{mNL zAcWwh^GRD2bSyxDBq0;&d$Xv!{7azKXc)yJ))Cv{EF%SyOI-=9<9kba z!l4_2Cqb}pw%2yjq&g-k;l_WKRz{g*=nl{YdT{2=c9FU>CtBhGX#BXuW_I2tsDigv-wsRv|MHgxJ1-$s; zOXZ=59*S_{L1bf?l@+$cX+K^&$6P#}3n>r0%*Hr0OZL^ntU6dEWF{Nt+WWp+lM6;` z-ix8!&jxr++Kj^@>j`s_L%_@=ciI~3Rv~oDaa9Na=4!Nf?*50PCy$lKfB1O$m;dv> zEN3pB%i`R@VtIuVY{l~~qOcg9NG3qd_G%)X$TY-{nm&nx^2u;*2GD zu;z;|9WVda=RTJ>_A-%1yIH{GpqIaO8xpcn%ow`UgUqJE=UqE@alXU@FcWO{b#pBF zZrQQB{MY~0e^dU|zxrRou@?AHiZp5w=kqTD?OBL{O0lRXc^bcN8VM~)vU+xG24OO2~WJ4z36mhxrl z7cDGks9EXI=Ck&|a64D5#tpLltMHc}#Ah6aa1ti+rOTX5%}K>qa0gkviZd9%6VH86 zcv?F&SpMVRd;uD86zk5`a__qyV&m<3A|~Bh?!9xgJpP?0%L~sQ#kYR|KlPo!-;Kd+ zzMey)FYa@s_tZu9)8VVmK@YT58Ux+n+=CfhYIg0k%?R=BZd7I?a@!i#HvIUn%$EJn z>@Q;@6P)|7sjS<+4Ogd;avK}1w^G;SmZ5SAZ-H~e98BltUR-e2t=&{kTo^6KPLGs> zFTQ|4c>+!N5CU^=x$Cw)&;2Qvp?nf+H!v~a?{*~by;hp1!wGgW!{-{o?|kqD-g7KoVhcLX59P2 z$vN&E$y^1`E02Mdkac^8xh!KWgFNeAl6L4Obx%^447lD?Z3ss5tbYnPp1mR6>qCLm zC;~j4Tsow+WTAt(2QSb~?Aa?sFxm}$C%#-6ogoDD3>%YA6OQ*1_|!(7gy7vm_|{?Y zzL#@i#u>wBo_@Z3@FO3fy$B=ISSvbu%0K=6|FV4bn~#?tJ@p)8bp)Yyp#0WveG2^Q zCS31N%bq30@3+OUZ0G}iWBn_hlT zhOTNOvYg!j1~N4=9)i}7{T8N`xfBH6eVx(@Rf!XhYqL;G03;5p@y|En%)!G418WIV zlNz|$4?9(1kPGM)y@mKX4r-nBr_5no5U0FPAqp99mXxt=!KE2z)}9rUS}QFO`}W;h ze)5x_q^~Y4;-ljk!IXuFWt;rhDP&p6YMgW@Im*5WEfJIblM!h3omM-frq8iaFt_gD z3XN_#YudbFDCEOWR&rP;_%^* z|7k3LZhG!48;jZv3h>_I53Vh4={>IC`!Y7L7=Y7d+v>*M)uv0e$&7F;g6Ib{@@2W z@a}~d4j>S6(lJV+>Ta{7rF86VRcJ(uW`o)h%EUKatInN0U;e+p`YWt*Ys=o$W034t4Ym>HMrq@uPc33kf3ImCR1ERz*+08>j>^AXtLG7+D?Um z%P`V+u^|_baIadQtkiYN_bl7CbR)ERxSMl03JkbqaYY7SOMwikxE}2>f|wQn>(Y1s z3PPg7sfWxRK72TEzyE>vX3QL;3%IO|qDUASogfO+mU7GPTgq*O@QebAGUDD&11+Ok zscD%QdlWg0M4SoNRES3?mu z=cCwG=SK(cD(rST7r}{61b84__cU|4k0Aso8*( zXSs88e;R@*qDdUhe>I{=pjR$S0Ch9;VY~AgNvWU z$MkB({59$1YgCB-&1zP6?YbqK%ZzAaylqiV+_8U|8#g(aGKw-O2M!zv5myVO(4fng z%(u*7Oz13N!Yp_So@K0FqdwiR82Yr79A%kIKP;dyp)OKCefHV%)o*{JJpT9(!*sZK z*-ka()w)=5OAOcV*bsoT!0ht)<+7edOD1*i-hJhF|MBmZ&#`~P@R=UUq+3LtFD&>n zfvtup+oW0k5%51_O4;VGh2={|P&{uw_QUxRw+!A3OObJrxvY$_IBr?eHEFDSeViXM z_s)l#Neyju-dV2oub6BD_3M`{Gc5CC(n1o3td*$>`}7SII(zO62N^zH9{t9nVVoVG z%yS-xVGInJ!!SaE!gf1GNdVi;l@H$kVCt1Yb=-yet&G{nfBh5X8;a5NUt09J=J^HyI{gL7GF!0^wHcptn4DJ|_G4H<#;*(m%W*6K>>a=ss^*+gU>>_S%dph$bzsaG59jJouYp3?z>F25 z9j{(nk#Ep4bq+}Om<@7=|muin+;|N zam;~oxzv&`Jf&@Z#O5eE8Jlj}oH;6vi#ssauI+7D5@&GjS%5o_aKt>&9ZWYQnQw(E z&B1LkBk+yOnwAI$&*)N7&QPcL>3FVXZPIN@fygoT+VOQxYRU83CX25gWZTPFb>YfW z=^&OiEDt?c2eh;}ANvso#yFU73hlkZO&|EZaoc*LOVPd#_Jrx4i6yL?vocY0j;8=K&)%xZzQ7l-;N#{1!*TNXi7IfltOfQ@Cgo<5`zq8*%7h#_awK~r zbZ1&Wv_6cQ=Yz5Dh*DoZJxB)*mLG-}?RfZj+J^9Cr>h z_g#cXfrUcEPk;JTnC{Kw$442LqF0k-I^9npL%m|68IDNy5x@-0z>w?ep>-W?o0Qx!TBy2 z=IU-LK0r13J6C@7SAG=+d@w%KU;NS+VNUAF&h}%J!@%6+Dh~M1af>S_bTYyx%&_gy zjnz$~ZdU*DSH7I+Z$>Hm%xC^dx%b|CBRtqh>4#eKrIGM%E4A9+%!!6R`R&KCbY8j# z0Ed`tjvt@ERgkcmhEom|4R>-M?U_am3DCd4D$=oCGIqaDeF|219n~14Y5Xupp6IuJ-yIwaMq2kWtRFt zr77^>;K4&g;hMx1YM}h)Cq7*U2`SsonFBLu?Jo?&h~iqLU;UM_aa`flkfRlcF=m)( zPdnjOIlF;P*lYUMl+D|>CJgK)aNg6VCt1f0(d!{?Cr>{Ek!jCFg==$6i z_qWRQYgKaX=+PRYJ1>LULmwR5u=NT=&_37Y9xlfjds8PTEF0O;K1&y3^<^!IHH~*? zaZ~fKJ?Dg4d6{7aiuqV8E3-Vy_$gF5KdW%Z_)@WZQK&FHj`%8;U%bp_VsKiaM%;G% zb-C-O+(eE-V6hHe0zG)`9N~1I_|cD`ENP;A002M$Nklhr6SpqCST_*%#&LI>XDr$f>U0y*3eknYws{MCkFfsy&6mEK zHhS{7pU-^evy9zLdGXkZ^2~EDlpj3)RD_@jagTZKSthzjj}jrOztcS)z@9lDg<-l^ zUCa~|r8#R5q_mE0*tkBtn)s~%GR}UBisSvzbl?tc(3SDpyWSkh&45;g$1kKN@9oXi57gZ6;GEA0jxpf)Nt(X0A!et^5`9Z`|W1wkqkmvz! z91BqwnQt<=P-o8pZIO|)E#5Olh@g&0$4u&*O18iCxvBS;y(ChO#Z_TJre4_DC)?(Nt#(x(=nLmrym%(Oebz8njUeDXKMErfBsF=4 zr@QU8+aQ+46R-XCee*Ur^+xpf?^37jukJ-{am%{~(NU`f#-i(^4sF4qd=wd7v$7`#pVEM%??3i)}ZJ zb5if4k3L%d^}qgKvl-lwv|1`;wiG~oPi9TJ>DbsW8JgRoka72&cb9+m*?$)6!FPY~{RqMCcT;iTrsdES!4<`VZXNufA91sy&d>wO z(q&Q@pMZhZJ+AG4Yby`o4)*C!ej3`OzzKuL*gG!QCi`vjZ}YtQwykx|s<3gxvF~XW z9b8)jB18)dr)+dQKUx_lBD^n+aWu2!R9KtD-~Phz*_<>iois|F77l&reJ%}9t1IKa z3Ktd`xI6B=JwlY>$iMx}(=hZ0!mvI3{$Ge&DjkT%9oE%dBb3C0%H8nDGJ3#-AzWdudWyuW`Pn)VI2 zL>-68oG4E}`&`+vdoRM;(Q@kasnWqdip{{ci*pGE2HC>_O`FAnJm}$M?0@LM3UR6D zGR*E+=H9~8Xredu!jN{ehp=zQ_Kb~t51xMNsdDzz`Em)3_!%PnY=I$NWynfjFZZZszf||G!YZ&V9gmn z8v#JUVnShgk`S_J$?{9#^g!m`!fwfMFFxo66Q4?I{#FOTLxIZqeA^WM86j2bRlp($1p zlu^3BUGZdUU^T1N3bEO}4m}-Mx0!Q>v~>~yi3&^M3>>5h8;S5_@QAbL&!Pb7Lon(K zeILL|vKGbG6(W4KXD?CZwKBh07ni5Nl=9wAOAvU=2oO%RXw+%DQ-iq^=CBuLP^MdE zB^$qZme|{wtkQQRY_aN^lJWC|=NQhy8a6b$q=l@Mp5O0+>L{-$n;tmHur zj|+wbTB2?!RLz(RFdZTCAe}@bjTQl0NND-qvrM(M9_*sF&-!$i(K2GWey*3CEGFA$ zvOWHD68o#szPk`ODf~2yZ!%oxC1%W0TxnGH?KP2Vimyf>R# z&97~=-P~x(u4PfQFuZ0`->CfM{cWrdm06yNc~rlD&Gpt5O`zil!L|RsA3>1C&)<%L z-};AYf$*8hGJNKEWsFy7Py+|+SsbSoVPn6SjV15oeeStPn3}TcuN(h0uWfejNJOtU z8u2k^VG|!^;&gSex{I9ldJzrb2ry}wXxnESoL6dd`1!Kr+)^WCvJK*e_$`wmymaGm ze}H(Nje&NKHa4(%S%I(d4Hs&GVcWstv`@xj6ejER=`-br9Ex{=&3od4b8?)8%U}({ zM_5WH%#bao)IoQ~A&bK2+|yTpOqAo)x zJ!F)#0PFVmEG}KP-Mk%c+yzgX{x|LPyGgdy3KU9gv-8UooD>G&TZKbz0wb(=;uCdi z(d*M)76bgMnsI&pL_u=@FuJ+g6KmZ{BXHQM5X7Re=hjzc*ebvGNrM? zTC0c5p3HTgQ;_Y5V1Q6z{C;8g;?Wml`OziJQ+Tyh2}1>(j2-REpx6%PhHw*J%RkbX z=94jV4rS~Es;oiIG2fYG&z9q;kR=>!oBdQHA10MGN_;TvX|u<}eCEkGi@VT`85m8+ ziY}ymDhHhZYhcP{EOpm9ihGg=1sW{i)?4qut!X<4&0R*IIE>#v8=SFB46Pd~yS8tD zVOvZ6SWOUE<|#+PN*T ze-OSGE}SddcdSkujkq&6Ozi(58qH>M&k^vDF$ROa>9UD%k3wVsYfV2^sGK_jqdQ61 z^q!u6tO07b>v;y_ST6=pdQ7lEesZ!M3(a^r!?+J($sUK{?EpUqjCjQO8Gs~o(c$ME z>~5KVS`oS#ci&OrAPI1dabAdLjvgo#{FB(X(IzdTJ?=rkT}j`4_bUWnfXyt=7zA1f z55t&+mSQn*Z;ICn1`*7i%i?0@5pM$yf4iYue9b0r-kqgv&#CZtH+|BL>>?ZFad;~@ z>EhnChIT^3m@lIU72<-StosKCl5d{2T!O~Wu#sgI8}7Ss8KanT;w9X`*0Lu9@N^+) zXqlK+VZiwjo#2g!Q|8oeECRaS9RgoA;vFzBu$DU5vq1lK|MbwlDFk0NWf~1ew(M!Rt9N!WFE_q7)zujAWHE!n=D5HZyDBY zTT(Xno9~+~%lDFpZ<>|V{I0*2{-&?gv6PlyFO{?OeCetwvyMk=M4*cK4S`6q0aq8f zRKVZ!Rns@y=|ndPUxhLmK(%R}f8au?Wi2TrytGwj;};cTvMwq6J`0n zXR^+>W&%bmS`D1+kB4jBb=O^(?oV*w)9HlDl*y=?R)#eTP8G6V)@Naoac>5Hfw?&m zi-vPY?T<{3@YMg+g;qv4^Xqj&n5CA{7lv(Y^h%ggg@@;!doE^k86%YvDhQ&{wxi&7 zLm`^6H@3RrLvPu&JDO!9*2rYWm4@#y^i&w85{GX8nWR-J8q}O8C;_)4EZjWlNI5J2 zp;Ik#zL|>U4abJeg!`j?)aQ9tzmsKt8r)4=$ zEa!R&R&{YsUGE*;1AWhS3Ym79Zmz@+yD&*C`qO7mhZ+4_PO|;n|NXhl-%%p)s0p8B zjAY^!TAkl=V$MXZ82#Xy)-^SZmiO^Tem&L)nOQ0clf_^D^MT`0fT^KHXK=$AD!=^? zehUHOQUn~WXd{uw@aFnTGc9(0?*C3d_E$Yu2;-e;O;b_@N8c zhV|9eLKs#nE`lHbvdLO^7Te{={#^5&aRorqqB&0e)v_mD^K*rhrzeTFV~AVb@N{3Q zWw<{{en7EJNMq2jqZ2cwzvG!2j7n{jx`ros#t5F2cAZ)O9^ro zWx&uA3flS<9za9ffM7h4KZl8gcI?HIW#+P>MA?%tgfe2|nzDV{M(8ub|EZUV{l6BD z8VgA`{Ub`+7_K?p+c(D5%G0quXJQ^$%}v9Uqq*+oodw!DOGGoF(%ZwiHq<#g=e`|I zpC3Ml8`F4U`vtGy+MzcpJanxD z>7v=6!_~_UDF+^2TRS+#??fP!<~mR z05B(Tu+<-qPe1PT~Ify^GJ<;nThe6GDOOr1bJ&-L;bevYoM zPx;?uK&Z@nwL-)y0J6BuIF4@Wa#QRDHsG{_G$FL$kc2PXfvd?i$?}>-OC*(GxsPEn zff!CcrEXJ$B)J_XV(FfUWNTcQvjBcTfxi%hAxiCw#WfdAIn8gsoy;;S&4Li5Z7rsD zBVAdZ;T5hcQZKd7g>0piIpBjlb~4mF%i9=O`r!5Bw&IgmijpJjg&%k{Io9a(hEeM~-m;LvD z@Au2Pdp5+a?X%lx+V%1`Y8z80f`rx*wdA9hM+njSVou9epnLxL=dl*D zu@>fG5L}XZwY_eH)P+f)`CChop?`ZRLruAdpD7gGdB+`bmH6yu|7lzp={-zHwG35= z*T1oZupS5(Lu0C?{p@ExTR!sPkCZ?C(?89Df|Eqq()CDxbp>N_MK_CSLVi*>_+B;l z3YFGln{7)U5o+8YbpHIg@|S=4mtpWe$v&BfA9{cGTPS$STQ%i%r5pTE$ef3v7N-3$ z_kC>qRT;8?YvCO3a_xjmZ3mWyxYpw0`7Z8p>Srug^}`I)uF$@mmQ3i^f!$@V7A*3+ zUrcuz1-KFR$LJQTi zxD`!KkA^l@%PIRABFquqmO1OZQD9Knq2e-r{a8b+cP)WFHf+%MU%!9%BaDM*SKyU& z!*e4tj5xTnhW$QF_6QVO5u_cu8ucNBVWwd|Ntfw2<9&rt#pl5VH>eB$=MEk!YqsLv zia;<EU;*-dK8$y+q%c2S{aEcUdpBrnD2%bq2V;|NZYPfBWSxXHVj8 zf_R*Y!s;w-T90tYCT!-AZ69O4yFSD>d#Iq3<^dkU)YN!9ET3~;`#ksf_D!#UUejAgfMBE; z-=t;$t4je91DHTgOb2}VU^=deBDB)zQl1EHlE6E$hR_BrB2RF_0{qXv25Fe`Mlq0Z zi=ay6nhbNG3yhWT@t>4GUR;%$@~^td4^7}AaAUb}(f2nUN=ettcWpWTt}v)=Zra^y z)YY%sR=Ow&7glz8c|DmVssH7DY2cjqeT<-$_ERQeosICOCGvUwQ-~FW)1-FYcDk^t zg|zKnD?n&{IEPQGi*d9Sj4Mz{vm02*9OzrD|Gusd_S14C!j|QGellLKe^>v`HOBpe zQkwC$z^3oQ$umVh{pnAaFMQ!|5OiywWk`KLK?JU8feR4pBW3t;p0HUF4WaNg^sQye zK>d@?ekOBI?Wgm|5Q~eEa;_=!wfw10putKp)bx`lpCokW;j;hv=U9Yrp+RdHrkj0E z;zr$USR)kqzVLD0i1&~D+OL&gc=#9DV2MRboRb3(|1DhH;7c5Aa7ElS+@RKm`m}+) z?P^+PEk8q|&fsIJuk+e*urDsA)-CS(TPDwYIZG!sFU?`|xR`da_-cLgJ%vbJdhXhL zPeNAPI$e#Ley!A6`=gK7`@r#bEyeOjp*(Af|Xyqg=W1dKDX6wdBb3D@@yu zsn9nz_!5d!0aIAHd3p_+^Ff$SH|QD?`%7Q>5}M>+FT2r9yM8&$j)%Y}#6$ z-~TN4T;IBK_QMsTl}%vHh%dVqBN$jMeO*-235`%|Jb~7E9YVydMB%x34mYxA4`NB; z>;)FB!F7aH?ch8aPJ!?2)C~;F$;73yndm+QRHhs)0B!d_9*laX0_c7ND3{$cAO|s3($LEGlM0gi?JDGpGFT%bRRBTm+;m1RCn=np3T=o zglpDaPPaD&2M@iQ1#aS)*f$8blCgB8HFqX6zAyTEK=P<PE0a4P#Mw_~C~*yW~_k@ce=D z4}R;n%6GB!8U614ANWvUV0e7@D4jchjza;58Ef36=-)W|A*7)b?n&a_73S$W1dkyU z4AKJKt?V}yM+vm=_I>3tcy#jA$#Va@wnq?iU2+aL>lwhzm^5=OhbjWA=69uIbNbj}|_d?W*J=^xwCI z!PPa?$*_Dv_aoK&~of=;058;Ox*OxdftfCO!VawJOW<}q7rwB>>ws@ee#W# zGLM!-hRAU=IWAtyG^>qwpH24Kz_ciIT3+*>^;zbdB{?E>RBDSBJu6mdV8y?x!8MP9 zd3xj*}!0Vu`)`Umc<8!6X%H*8$W92)!xdK9Xfa@ zu+Iip+!&l&uap|*|5}v3_V)nA7I^Ie^=u75mBIu^xe^u;Vm$ufyIwd&{ps@^OTScSK>}n9jlA7`ery7ldeM|1I1;I{s=t#RXw7 z&`H!D=DY2?4-NYnH1wX{{>^WFGmNBTCc~)PSDkeZcNLlxXk=zgGW>BX;aZm>1+;^Q z4wfIVN&9X>nreYilBsmnvi#J)75DNpZLI#@FlWF+X3wy;yLN7c`79D z_}%}&1KGo&X4|lr`jcoW9rOkW>+6*{pvzznyy zp>>A=H!#U0%)W1BPYUij8o~6>zl7`98C-|Nr%fC(wt6*+p!snuqawJe>#5PwR`IWG!96EDQ{V+9^x=1}j+QkKu+vhg??f+sk`HRicPtiw zwamBldQmw^MZ#K2)~nEfz@`9UeF|=g9yLol5X5v9Q>askW<;yu3v46@r?d(%MY1=g z9T&3>>ZWz+6D|*Lsi7h1CuKJ;<5z}?%cT(?~x1T=;0%j&{p09 zExnA}*ccWa*9qP5`oSstAs#BEW&aFkfEeY@XlE*XE}kMxHjOfbZQ4saA|!*O(pL{H zJa*__`INcjC0NhQ+pkZ@51xm-ZvL&(r4`jRLM zqRe0})SM|Y|| zk+EW^3zLhUZ`fwxy|dMRr{(2u$r-xdD$Ns-of0$kchyK3!qZaaSBSV%hKrk2bXY^rT` z4(D1t^@{&Zoy%dh(zWwlQ?`2#ARuI&hmm^@4cAGoFpbMd`HZrs2t6qSlG=cU%&LHM z+#^^L!DIK1-DSs??YJPYu(Lrmu0PCy1ytno2-7p1)H>6SZ@$$5N8K0vNSlBj_0%z0 zY%A|wn=B^-ayR<@IaB%}|neMj6xWDt$4bQ&$JjGC@}a8Kl6+$mI;h$GU$Y5c{fad8o6XTb?w zD#QhqPzPT;ScaZlS3Y>`gXQ*HZ;SiI97-wIEd9L2JWwh^o^2No0td=0?P!x>s>UZc zL4NE!jM>JF+YHS&Ja8wp&2u0wvsYxxj;&=Bmm6J>>~k+nl`dDFbUco=<%L5>5F*IW zTsEG+;Zqr;v|p=%n|WuL%i_m0u8h6(Z58eJ;InbuoVFWSg0dA(gxPt7hyBk!pF{L^ zZR1p7+GF&ao{mBG9_UJfC1&;#QI)_qI@k^^g@Xeu&|57PXsz3M-`^ea1r`RiJ&03=Dr4n9M%AsdB=WU z1R|f;oeHbKM`6zm#LfwM1HZKnNK=HTR*qHd8{jrP1&5>!z$_y`IDZ`vPu-qnoaIYq zabN1Dy?t!pw(L0+H6eVoae*=v-o!`O@;2s?>)8PAOrtYwD(AijT?+DUtW37UXimCl zwkeF@;-esELwdQ_MbTYYXb7MbJepwKWr^$BX)Ir>je)SWhX#8;ay!Dv=Xgj%-TBUvGAN{?(U5H(odg11g@&Y;5-Y? zppf)B2X%eY;?reRE_gl1CY$^%mHuj7G7!TQ?-{OIEx|nDf7cD+#>d>dJbs!ENqtz? z*z0os%*nE5_pQLuc`J{}JXRo-hKDv&uw^qT9bV^Qvo1GlaPzyq`SbJlh62Q!3k)p= zL;3`9b|O2P4xFY`!|O@posiL9NyMd;DUTc?*`8;d?8!-FJLu4_x$Rwy#Z& zMw2(?q^-?+*Dv?la$foO@;)rTe&w7ue4_VV!(|K1lbai9Zd#VI zQ<<#<2CaX&^_u^&Qs&zY%9Rmze8PMpQ0R;OiBJ3n`#t`G)3MR2!n8yYKv9{~=|^p~ zLUKQgu6fn;eIIRkFNa0_!{7eTVQA{|5vz$~1z~Mb=_py6F|&Nz;C%689ksnM5nOl2 z)d1#7#;1iJb$lEmH#HlL1qKf0&VF=*E8cT+v_f25S)o%`a6bVQWzX$<%J2Q|@8KHp zaJl=QyHjSx!v;#t_YHuy>`^07q;Ohp^dx<%^`rjd|LKp@?p64myLO06;*5$0HzQ|* zytLbU{^MF@kphqrZqB38ed5PYu-W*l<<{MMdCjPTFqghZe{HE_W7%rDEXwsspZ*>! z3@;u%TrQqJi)OcKXl0xXeK`darQf&$hSmt@?AYn^j6?0a@D-zFbZz^OX@gPHcCp{- z;SWAU8^sG4TVU<@%`3sH0Vj{qyw(n`FWb?oZ{lR($q5+mxW(wAHCuYu^fQ;vaDS3R z!*0#~#Ely_Cp2e22ZyzL@ESh!&X*{;oM14eT0PWMOLM1CWVz{h1MV{Cpc9_Cuzskc zY+gTv1(SD}pPsh>7YqZ6J5LvuD*Al>+$ES&HUzKRiNrI!=B4AIs}+-!o&K{tbwp^oM3lp09LV?5`BUZM?Dp~=ELE$(oe2cQYT-h>!{T!5-dht2_b>k9bLF9j zKUlWyyoKmt!{zqdZ!brVpA0^TA8z^|9b@kcFxZ}eZSR}%BJXu@^ZFkGbl2_pmSwIpe!knk#4 zOt2_w;+K%PoG!u{IECqXqdW8()gPuTXxCcc7;A-X_X-UlbUpasgK>c|T%v?s+!byO z9%YWU(AIlN!U+6mYq`U?8Bp`F?jY`sFanHPWy^B@qzt}a^JF_=q@)4=5lTd|HVI!OPTu)WXfD8YCX2A)kkqMbyNK-B>Qcv}WDJ^=Ss95`^GeCf+y z%E`7e<5k$GLaD_%CqR_ob-I&IODmx5FoIf5#@IvQ{*r(64}XU`sw>IjULXOo_^B2M z%T*I>dFMIVd2IA@*|uXl@P+xKJ`Y|qyzQf3`zFk9S9y^A6&GFK%*Xhs5RtAm0>a&Q z^@Z`=zkh!Y=KBv{_#({JR^F{RAmeE82whm*Ptbu@T9-ZroK-{(+QJ@(fA??y_j2ET z50rPjGKQ1vjT)iNZssLq>MFG3jP;bR zB)AQZvS(oQEMcVCFXD;MTeoZ|TVVj(@D$J@)=BuI3C=uNk)7$OAF8(+UYrj zWM&2m1Kh%*pk!?TcXZtnCw1=;`{!ZgJrTN_eGxLo(k|_1ZD``f(VkPiDxPRv8$^M zp{g@ABiPh+VGZDU&+J$s7~X76rss7n7_`0j*1c)r3v&e9ZzC3?Cv6?vm0o`B4bHwG zV0&^Rgeucsdrpk=Jc8GN?n=!(t7S*J7D;bJ1z^#L03_{`H#Ajj6YiU)h~2uipKNIR ziLKe0W+vE!hR28-=?G4Dv1l~Uago_TsZFZb60rELE2NtS}QB#$S zh?1v%ZACb6vk%O=1`ICna$bWQgqmeH%J3m{bD_K)`ebAU$tb}%`Z0fvYc6Lu)tf1? zxly6WZgF!6BEuL%fVi1T*4$$~jwu+rw^;->SAxtPtNrjfU!^ZD?i-cZV5Arb_|Wl>U`2WH(ND$#Zo0Bp_WlisM#JqxFyef#)H6)fRmas zuj#ic0XKNl6raWV=eoCt$LHF@_H9x};wXWyc)>?tkjE+=5nlRs zUm)1^{Q2{w&1?=>N9+mn+tjMJ z-+4#cxqEl`ijPiRvNrmWg@_R9z=c-!&Az_Aa7#2$^@W#TMxZwjKiQXX+c|Y=D89#< zTmojggfJZ~GW>ksx#N~d(R}*UX*~iFB<{t^)fvI%`mr0ku$w-Z2}q6%CLdEH&!gc#dGu)N!UA9baSJ%2#@`d+7pSLZ0UY5xfw>vRL$~I+ zrq;L@hIM#&E{$@KnNw_PR27ZWSQu(?O}Q{OnJ(iZ)QE7^-ZGA>4r?2sLP2%cV1Jr7 zT`7~bQ053>kwx*_%UY)DN#xQOBFqyUVU64z;s3{KqyyI17Pz~u&*eE`Q=q9S0o z2#h>~L`y>}*0dHZOSj&73*)IL`xUV*WMLW@7)Vb){}M4!Gg--tfTbX#Yq?4vX|HQf zVYD8Bqz>04X_9c3rfFqy9};KWf3!kOVs$<6+Wxd-`(R{s(u(4`vK|#!r3k;9r4i+s z58M0uiUR^C#0wBJ$SR9oY2Jk@qlb?hra!fbW#UDAH?n-_NZfYiPqi-ZaWSh|QzDm% zDVt3!z$;H&^~vAL?}d>rH~2jeuiDRY{YLLGCVyOeKc9=H^G46T-SzNgWn31C!1YSL z4j}xw+KJ-o;Kdk+@Vnl_@knL_odfT6GcWb{z0AW69)C|)doM+=6o6B2LNqVEqi?5V&x$fT08Af3H*fpn}F(tW^wOW)Rjhkv|BTo8_0 zOkB$o2!{4=Ykz;>@lRjfhhktjm@{@(@Z$t$!d#4m6S`N0-#>FPJw>`wnA6XH?l+jb zN(fTNj-5o2$5{$6rQ9c6GSEy~&m|6QbBQ;45;ctZJQjk9 zak46rnp5k9LQ)H{07p4|?_;|LLhIgwk334{G~#&!F#9!Hv^og6hWTH>jmm);l-t^3 z-;ZMn9c^iZtW)E}XsFG0KAI6i6im&iv}4a5;0;VZ7LIwCWC#Gi zAq>KtYdxqZ`;l3fmPG;wKm~I!x01bv=9pcCiYzEMh?Nhjs+7`pd>t zP!9sWmZ|Qp9)hbme3KC=2sJQ&(#Tre-Dx z?4E9N6ya{xrgr9k1F?KBzo09W8JIi=gYz&Z^BT|%Gk^qagN`}JAC((I;C&-NFs(76 z;7kzSA}z){i%kTN9R1v2dP1*@G#K4jcpw{?mk~n3?V8Hz#*{eyuGFdz^o|`n1L^cP zRQoSNx-ojcuTn&AH%-u#wjc^>r(h_`eTCqc`^$UTNXmEL-K?|VqA-)0(qd(Cb#vs!S4Hjy~mvVsZG4L(!$7^tT8rGDw+WmN4XYgh3P@%ys8F z9k1hbb1lBK9_Cl>Da=QH`0f7+Py1A0T;}M?_sq;+ua?qI8B4jx&3W}&)SZ9v{$P-} zW?%JH6~6i`iwwnmA_NG2clRZC;C&^%LK;*VMK@)McPlP3p~V-6 z#8V!QbwZ^Qbz!SUZ=AI{jm1y_UJIi0VSD1EYt!#}`tG}=w;6Nb{85U8qsD`Rqe`JVhkz=C?-Nm*N$4F^NcyLhe3k{VBihzIU}kkpB9 zrl0-nXW?7yhO1Uw;ZO!f-Ffr{I^h_kchU?4=zsXbe@OrGU;N87I4}s)#{p6F(U~e( z6G|8d%@zIVP5U`~8B2$A!}y)7JT_?zck!~HYH_94-sb^c;(+cp3NQ6!pV87axMK(B zZhR))&Y^Y+vFm!*g*8xG6epY851zLVGO{r@RRG#%DbB~u6!E|!T%{?(Au`j*T;c2S zN5B6^_L3k#rY2}4h^M0|DXRC4h7rB-0TL&?oIbUct7h4!H;QQ#A=|R z>fwNDjh!102~$h28)E}=Jjp?4)5I(&ob=-hf8xZ+RJ*Y&ZQiyS#-4-W*q04-HGo@< zcLUn>j&=iSJ(pvVOhL@UInJTDG@fRuX9mW1V-K!Rw83&mFlkRstXthNhtFSx291F? zwdv&0`LvI~?+paoc0$Y66WH6{g8LC}IGeW+gg$&W7V!cHq?z5Si8Uf6Fwk0S7u}7Z z^-ye9>8EooL$APQJcM*r;Zd65I&%!gvf#WJ3nG2>GQqjxJz5>v}Si3{J(m zraoOkrKJXQD=0?>HSvwQ6s}aDMm!gIY~B0;zLRvE_W0vDHYx$)+zHn9IKOED$ason zhzw}9l7ZY<3qFsuVl@9peKhrqj2L#NW@@sc7x9>_1J#a5D(n3QY;U(e>4PAyY%0%K4 z1f;2H_Y<-wazLGKio*89i4$pHU_%|QMR;zvBxu^GW; z3@eqeH4EdG4gKJ$wCD}ut6USJrIc&so^t(z^#1-4AeiLBE=!Ed zrr@UNOHGQY@zjo4f&jC4YN1*yn#>AP@D2&jbI9jl^!cW+peetvuRna;UEov_$P(+C zr+!%_YPNs8qTlw>?-YrTnl`_A&EHE|`?*~6-G%RBcVYNU_&!Uh9CvPJ?d?~6cEgQ6 za5b37RZ!*r1n8WLV-d@$rd*(~-Z)Vy`pF^9<2qI$>FpMz* zKk-h6CZ1Ux;d^E%zx0l*#Z3vbsWf$M@dVNR``-w-Nci=cRd{z@#=Ecr5q#c%UbBeX z!H~0|X^D`5i0f4x&sy5JwE8FNShEIJf8c}jQr5G#c<&91zlo>xQB!#CFMWo|5$|J; zVc=HjjPq|B)poqDmRZL3ZQHqF2mb&3!Je1i+pc4;AuCBwxM1CJ$6e|BKlnZwSquc1 z(UmQtIBmcwV50^%>PVrWnL+#f^ixk`S>P-Hm^0V>wIzceEh3shT?F;lzlfVp1QsKR zz{%tqfwzstN(&8OEsUTiy;tyi-<&@8xzCY?^)6D+ZVM)A`?hV_g$SA-%skAKebbG^ zxsxL4Y8Tmbs5$7^wVlf?zvb%NUZ}z&4^?e9a}U0FNTRM&pFybk*57_Bw3<_BJH;Wb zR~e91eB|L^;&@k(cHeR>Wj7{HjmC2W`ZT8tuOpBZg&J^?0d>uqZKxI3k7u5FCQe;9 zgW>I*)T;&GgWt5k-FoYuu(+N&c`^+Q3`U>C`4X?>K3hW&a%g&~Z;7$|+M^Gr$3FeZ zVCrO8)y%6zn1|tBfXS_gVVftb*(jNM8ac481vjweSqBNjH)C=Ng+$jBfv_Dl>Blep zAYDFpAq@}=-Oj1Vx~=uV{MRqnS2xdbakY&SaaGr zE29H?r_fTz>CEEs0#d{D%xGH11ksG|PFS?LCeAspmdM^Ct^+@n2jTF(oV9q^ zcD5W7AAtpjfCrd*)30*=2e7}0JL(enYFgB7+XoOPNS_KWo+aS8nemQX946)VMzS|` zu-Bt3<$%2&tPWdt^rx3ky%KeHuW*ndZLSz6!zgtTtMEeFOe@40wsJ;;!rNu$YLr0e z|Lx0PNxOF6f+FJg)5+t9(n~MC$ay;Vvu<56o*BWo5C{}*r9%;G1xWqPwbO&*zy+97 z6*IT+J&?5!;IrkYy8j?pWo3=!E)!K&375!}QaIJkC$ zV)9ONSC#n9$t(BeiM;Bb56hSLjR4_iOtX<+M&*~QCY7JOlLBWi3 zBHG%*S5Gn46~GcqTCDW7He{m?~k*KPNgE17ROM)s9gU0)oNO-nF%VDf2YD9;25Z{3YAu6gckkSt zKK}8Kr>}qG>v2=K`tW<;q5NTx4MxWM%0i|&3_13#1sHI%dYvaFtO3=o2gfEd#{D#E z`bzOk#z}XJV<(Qmd=0{&b1LuhO!lwmchBfBz3koh-H)c#eE6n7Mcax-UAi`lHd*1s zpw-)NzYU?H5!b1orDMmAvG);-%{(a>Zz9;#LpF8q=m>V*Zc)1CX!u;l7000c3F;dkA4xy@;rEHnxD9{w^&y0HcdZMH%EW}4 z=S3_5C)2r;XAubMsjCOYLMt%mpf+L?=BZ!Tw9KdjOXk_wh3vnB_dL%S>^|ELL*2BP zntR&QI+*S@T%~k%F-w&UY71*ujrJt?V%l7T4RGgYUSaa#1=?FkY0LeKSeeEq$Yynn z!}wsDn}L^tf=ZGG80iX=xQM&WG_eaU#Dka-(z9cvLzxDNmsqN~Ke8FR7X)~Eg#Z9R z07*naRD&Th>-mtff}^f2-DHUip-;wKWLF(%4M5b5XcpKkX}Mwi#sMk3Dey>6wLmQL zoI;D15LblHxf;w&lrw`d8MNC%0ss?Mm;%*Us5z_-4a}vuG6w!l;NCP$0Q)SsB?4-d zlCNsPy+}cI5qt-Lgh9|xgxbz7=Esayz+;|Z^9l#w$;gKy$w3Kl>R1+;*&96M@We?3 zv@_?xfqv-EUU1`L>;di@(hRdKE#fxTguvp#hAWo{s7J}fk^(1iU-Zlrs`jNdY~A`^ z-pw$j)eb?>d7-Xw#R7J&(+cxbPhT>e&4k9mdkD*(t8oH%z)wB=X{rOJpi|I1o`HG* zLDy@5j!$`>{9QiGF8I0Z6MX$pmG_MR;RJ~k!Q}awRRcQ4#+3;=#EOM)T22oJ(=XeJ zcR?9YF9PtFcc znsVWj|H z){%H7!QW2$$Nl^FhZ~bHlX%MnNsMJaMV-KHH@Hv)2-?gvitjS<*5zhZN^H8cS77e* zrMw02#W$FX5SD2}i$*uh$Ms953&EVx2iuKt*%ti_eBg8GbH-=4V#ZE|WvxnYTqiQF z-t2Sl-D2M|F5AbTd-S=7b1cl9k<>%GKBinn_+3w#{O_Ov>h#h zGVm7L5tr27hCsoS&Z%Rx&%unxoj>QFYM-KS)hV{${)ed2|5|*&yOSp|%S10v(l$41 zIUd73#`|Dfqw#o-_2WNN1)C-`7(|$08F-mP`y74e32Bk;I$k$lzUMZWZAlBju3b;0 zqsI=D{RhSvW>F^S9KqOXWFP&tN8@}AU8!VT-CY7s)am}_nl+Q!Hmo^jl6v#aBV=Bh zO1rG5%cyJ z7${^m0_(BMoF0vUVro~J>Xs&5DLH=tMtYt#tu}rfiwDya0+K>RJA8)jI%?XT**Y>( z)z1(#jQ+owv6rARR1o zurvw2&=>JR;l~3Y;o!r=qEd&J-gL9@D+@67qO5Tj(lZ4@<3B>F$a9_qJn0F)OrH3%#5`AUnm$)29EO!TMo}W(5?jGiFQbA$Z!%Qqxmr z!6Hza^{-`0*U4su7z74gbEWYLY#~5kjWC;{ic;5#0FWMg@;DA*K+-wMmT{F@f!C}X z1?Vmk1{^wYIB1GEoCy)L#q-W%eg%o)H{Zqe_;BSj@cuBCE4%f3eDpE~rWCWdINX>d z+%g#!O{Eq!9qY;VVDOfkPu|p(`7;7I@41G|oLiR&r7xmIg6H8X8_NzYcOw;yy`-Ui!`|U95)36kO3O^D@4#qo_=euN(=A&eJy;~etzdQUGIs) za7xhg25Z{49CzY18DX_uYMOnQ_(ySw?|yf#*TtK-cH@o&Lre`fnvokn`POE|Kk?C5 z`RwN4cilK7Coc&v~*Ht&CT3-KX&X`+PCkubQ`e<_uPHY)eQhH8Fw?%NUL}6-W?XE zm{WS>wdfo0<4a6ZC@QGM9&6ch9#nuFI(QJ*hKJMQI^zXAkgF=3`i>A$12YlziB~e4 z)DiRQo&k_uv*N`sT&nO0grc(0PST+Llt!ES)ND`(4ju?AK${8`aY)qRl`U2DjXldX zpsS2brLHH-oZ1y`G%)BvbE=(n9RwGa6u$mM2^Z$Uj zlsi9mR~p#0JI;Vm;~S|*>4SmHFU-}a1dCzdp%Uv*R zDuM`FMfe%HJWOoId6@jpP)NyedFWR>3zOK~(gY(n!92TG87r?D;uKU~P2pap`%XP> zTo*5$i$e&1{F7&hYv2qG&W|{L@)YqJ7tk{2RM~2Sje*#E+pVb`CjRNa|6%GwTfTl< zAFf2W$8exn1I(*&E@5%7|1h0POIQiu?w1M7ZfSj_v96DdI-JrAF|muF?qoz*P(yqTpm)l#Jl^|cho(`lw8Mk;=83OR zlW%4zX$g}}TW3h6it>$rGQ`f0+4_9Vn)j(c)FFW0lNesSGFASm8dW3Z)xhlir9uV01H{TMFJ6q-`UZHrwDOAJ9ebM{>Fa_q4zKT zkH26HBVjR9S*iu${KfO>;E|IELk%b?&J)n@!Fkz5)l}-OxWg#`8pom~MoV@qPuj=| zA!&J4kfYBEgj%1J$>IP$_6p}QE1g>q$VWm@G&Qja0V<^9RY=La6qQ;#Zz|66R5Oo! zu+3QG0rTpj{SdvqZv=>7NU9nqCsI?k3$kbr-RNar4CL(Z?`LD%7YGuJf<%VJXHM*# zO(2_=-H0UW`~gwXMzG*claf-imm8~_f*C(thi^t5)iR9yKF6EQRzV|bC%R>xh;{_O9UK@tc}r2o;)$S<>6ZskDsOKuhb*wdZ?dtXy#+xp3X+ zTQFyO7>pVo;aSEOV96CkE${qKjEctuNd7F-7KMHbt^8S5#6G!!`d~ggF>t(8=6gQX=?yg+IG!^ zYZu@BoVB4cZxCb5)$uzp6$elbG5^`0JI+c#Q?(2(EXd@sgRcNb*N1GQQz)KDoV{0} z!JyD!tmuTyM=P6FH-|@tiVW%+7G)A$vw(-_torqifKuh+YVq%CD=#Tx9 z;gcF@aJP=gaO7vduBp&5s#wrh8DQaNfToblD)--gU;62*&&9ku|1yL!OX98@ZUkgf zSuG44yaJj;<{t*;jl*xGXP^HGCp6!|90@xbV{S~hU5S*6_OmAKfSztbvD1nGFa_f* z{vkoeu{VYeY=uYs4lA2bV?A(WpB9 zyp#1;*6fw1=~A>uz2Hcx%O=EsEyRx5-1#!&#%v4?4TT%c<>AY?y|l-3t~=?9b*Srh z1T8Q@?jh!|H-pR+?kOHvHj8^!6HM}oM@mQ9R9!ky&hXIL3un`bp%Wa?wmsr?-avDD z;K-r$%B!!YM<0DOZR*>`0e2gyUCRp(;966UcD<&a^$dNlF_r>2^%B&+04T+ewR zy=ePoDlcB1Nb>}{Z|>WimIy*!X(Ih-dsCukXy@zMQ_ygq9cCQFZy;#YAy6zLth?`u zl?%)lKZf>RY>YL-xV3=K&%v-Yw56@v`-mB6No`$NIklX4y<%&{f=s((-h8UR3I!U)*C~ z)ao0f<2gt2Ee5*JvtILSCUCcz`7>Br9Oxka#kq_X)|B_O2CN}OG4Kz|$c$rxR*N^# zy*4bDHND;G6vAb5OBXRAX1IdMubG9}hq-6GL#Ixs!za$91+0}FTehZ6xA&*9OH&*M zNK6Zd$vyG;N3ljdoi=W1!v%0K?Y(6Od{`x&I({7G#3^EV4s*|M()URYqdOn*LAUJP z6E5baqt+55&47Eu+QM8J>@AF?0}2n&Y%^yqQm32vB!ZTys&!NA=1@UNpeK`Q zl?eln#PenAw~ky&1J$oLc(d)bcgAekT>YlY8I3)f@i0rU|Fl*RQnPMEeCF#i3Hxer6PbH_m$&jPjhi={rE@T+Ny< z*MWE<{)>k)%4)}g>1R{)cbkzxj(q1d=>6e?Dt>{B;;QZ2o;Yipes-P4n&ElhgIVU9 zT2DWVk17Xb)@(1}z{~33+>GbIcke%V@DT2Z7scMZwy1j^jiQIxNe}YKeGn!C zdSSb6ysiz`jd*W8{vH+z`Wb!nNx&nFWd2=W7RTUb<@mz2z>ECuGyZc1;4d1taU%EU>`t0ibdR@1S_)hn1(gYV9Nx9nJzcn*8%)M|{+gRvXcI8l83lrr$ z15<^xqeqWLU~);j852OQLQL3N%KO!WkDuO^KY8w*($XHx2k^^lB3r{9r?8av%4Dg4 z31+4`wF;m4Rn}R-djxH0cC0b#7apOk0!C_$#Wm+73v?-6#7#+U`k8a5Ir#16fX^N* zA3JvLjD0WGa|pbwJ8;v=c9;UD{~B!JcCd(fqT!nb0e%@a0)@i)S|jK zc`A1UFXO2c@GSC!A@F$j7 z6b97z8&?s1;5U^4!WDwTXVx24)FTu&+79=rP;ZFfZR0VFO+pY+2%+v)gaOZ0Xrf*P zoOXn)p6+&p_}z5x@4u@-($^quG2Y4Jg`ex80>u_C&$E$Qjq_Kd*g$CH*>gW9HhwktD z#sYD(Gb2Hl5bxNrBYZoA>tBnE_9GZ2>hQ1>HzPMDH|2P(L0+G=c)!n?7Lehv z;HJqebrFJ!ZzyfJ_}$R-+s+#c+LqX0vfGX+HO)w4KVmbZzDQBZ{jSK;j&0=@v(Vyc zkY?_%?GiJR$0K~ooj&#cEn%Ww9gFko>%BcTaoXZs8e&`kdV9!^tq7NQA1hb`klZ;OT?lojw z;&U+M2r%|-t-|6QnP83`Jw}?vEn!_2hfK|wOMxBj0PE@$SATo^w=x%Rf7g{?z27mH z5^xpg>5r~7{1}2$hCyc9i*U5|nb4BT74tvV5YH);d1isMTW!8Y+?7FBSo6RwHPgCU z$P~)}y?OXBZbw70gr0cf2@cfjoU+75%}p63Bw_PMs16P_=Q#x(^(gIVJQW7-imt_y5e2pm|DhNmMT$z_rw z96WG{7>GT9r2@mcA)PsWF5Piw7T7Oe9><-@ctc&2=pSpxtUzOFJRN_1f4VqyE{$^! zXOi(70u^g*84IAECN-?ZCh!RGrzwKA=h*L>n(&`D??1lpjWESc_|J#1K>t-a*OSuK z^q$jLvdCyno5Zh%|1tV)x>XRJmQ znD<2lAlFtMl0(ozI_NyOmT~|)%sq^HEkb5a(@wCqN9}k(F&}U(1YE?Lxm3Hli(ZVnQCzBvY)lUWEwowTCCVqL7-}BZck??hHzn8Oxt#B zA=?&Aw^kGOjS9i+>o;|$Ggyt5(E3kJpr8<*fX9=)_uR4*Ygspf2m$t^m(qCz;=V1L z5IWk^mZeRR@>SNOzkd_)7W3fKNCdSjygEM~B&pKJqE%QLp4W7quN7eK8c-3Tva75$ z=fU|@VDx?y7nq*-Fze~|z4yhMbB~C*i>b`}g!dL2lRsCf9M{*~Y}veJWYl1ZIOU!)>E&Id5V>S{^r2RW7#J7`;;P_a;9Aitsi~6@a>2?NxZzo> zxG6K2*5iwnuNbf*bMns+Y5XYXmLYTdjyHq3xahKJWa z7{xI&k}A9d=EC8cP)Bdtr%6rdK2$m z%QO`IurIDdCnp3Gv~@D|Z@jTTOx|uDjkxHjRn42R>z~bm`)tP%Z{4;v+Ois7x(O(7 ztYE%gW@8Umt>`-&D@>Ao)YZ?8$D|8=o41hS5&vrYK)-^?=Kc^KqHobX+EDOuBLg;o zK)4EuTpYtMuLK_0XuOz*YQxem8BB$>-Me<7g*yTb&?W=EKv=Zxp zUt|D99(~cpX&JRbH?2!J`%hrzeFM0{C`i!@dOT4wDOfc~<6efs>M`7=v@sfs)X%n9*szkyF~G570HgufR}y3c7eGy-@StK_;T*<*Z0_ z-V}bd(0I^U2)`_E-T8tEbxx=&Qjr2#trnh^jK3vrWH9v7RNC!!fs7MY z1R7$T^n>pazrZ*uFzXG_C@HLDR!fcd)e^L>fTCbwJrx4mmvNKwo;v#ON~wgf1TW+f z*WSaub--0eVjDS5$x z4I4ILi3G2yXAyUza~Fow2$rE`p6T!39&uLfC_`i2@w|efr-q+De>xp|^I$rBV1K05 zz2n}Gr9Ko5J9qD4+zq${UI1nsAb5T__!y>)6tcYt9vuiBXN}hn1(ZBlp(R1@Tyx^N zYgUl+CT_bHBi56Ov}(-5A9;x2;j!b4H+I0l6W0?vSJWBn--aoE&hGB$!aYr(o12W5fq0G%d9NEy5q{`m zY(f%6`>xR8=G2F)#su2ESu72X!LiE>`EEvoH;)_%SooV`a04`Os%V+K&zJ4$D&o7u zrWfZNj-dF%2Jswr^D7S&j~{={2xvoKPHX$^+o4J~kx4G zMB}|!RG~vt69H>(gUQWSszsP8X{ibcH+TiTVtM`1Q%?c^rLZdLo|E-qiP_p zcqLwM-MWpeL!E&`j=}Y@1Wwn2UfOnY(oT(^BUQEaPgT>y77kym9bIdgZm3nb+F%3EWh6@7$Zd^*4VDb8E&a zvLNARwEy*kWIEiCcB6&fytz;GAn@Dus~aqCL>=8}%cj0`nLzQbj@~qb_2L4Sh-O@4 zS~$RNhE%vGv1DlZ>A;V_6~V%Oj8CD2ApK`E`&tujFzqmgi>%irUXZnPfs>C_NOa-0 zqs7c~G^RtbsEZf^2e>H>Qh`>(nCDTnEzZMa5}#rex|XjdX&(0o+h*F8&NaY{w-Ynb zjdowWRbl7e?VK!V?X&QV>&$u8D$?7Dpd@|twSrO**lU^4ok$^a8EdKnnnH}Y6AC=W z8|#JZ)+Zfn#ocI0O+4ED3Tr4_&|u=#&DQ`+<09;f)*6MoS%k@mtpG1P4SR7;%dz{m zj5suwmzlH{2u|k?a0|}@)|hb>(gDYJ3HQ*GmoBDJ?rT6O(Ctj2vyB7&JYY}VK?7FD zOQ$Xpbls4~4<1gV^Of|4fAX7HX-Gv(EQ({DAW+{}9oK|3zL!+|x}T0COx|(F-OR}n z^ym=YByUh3hy9*Dn+A96Lik$y@(Emfy=Wg$c9WPBcL>I}#R)aUQl&?#-G)#>vL+PAY1f zU))XVGMmFF+ND{vItGQa*YZM$;NDlpn{D@c_pPm?v~#`tZgef4VeGz(7Z&SujwFT>Rf%S}>~Kx3narW{E1?x1EIz*k zu8S+;4%x@A}J>`2aNv;R}soA|eKAMgkKayU2;l=RJm%)qS$DfSfj)7{zO;L-b zdBnl&(2V7cC^Oc=Am~D@cbUIzrIe{s==Ox=1vYLspRuu$kaHFPorut@}iz$+i3Z3P1HNkKv-!xosuO=K(5LSZ{u zz>uNIb8nxDGQ@i9yi`+5&%r|n(vP40arAqR)0mAp@gDQ|$IJs)uUQy|FHzvq<-?GtO|p&B`>!x`Ar-&GSs}q&w875Gw4% z;b7+JYs7yrFA5Wx#&-n1o37Qh7a46FAlw*?+?8GO> zMSISs`I|rU!i@JPcVx8{hML*M(Ot@aAYXXiWwZ-5eK&J+@bKW1!gY0*2vt7OVWvO zv2zZo-}4PjJ6eM#+t&)XIm`DI+>y>)yqreJOf@n_%Ghy~V>95xqHA~wOUw+4jZ0OZ zc?BXu!GWt51(g6=5$DNb#8iYeLKh^3e`JA7-(&?`FT50vG#pgui!V5)QrI*#>l}N9>wbZGLJ|X) zYXS!pZmcH`lSCjBy*vPsiKUTndX(p*gNSc`b3mG_tnk{cElDJ{zy!nCVD^obKEA!dD&mg&i4e%wqYv^h6+wrrUBKmlZyY$G>SAWYV~wv20v$mRCSCQjZTRVc;+T70;EfUse zu}>26_{L{_puJ|DzMC3QW2Hwm#rwea@lu!a1{1aZLfk)RYQ< zujAtIpa1SZr_X-oGpVPs7id9)5X?LXDhhO2rc36+Hl0_C^;&ZOfim;w=b%~fOa3Fy z`3h!QI!MtSs2)wWqI7BO|5&(U*ejhAGNek!Ae28mU}ERZjQzIc3d*@ zc8jmk9~sws?zt!8M8ZXNc?>2{HzfSdi4l>jJ#zFYXK6f}hR&W$|J5J=m!!SqR9~ze zwfLy}jBN^&Wwi6Uo`ev=d$vNjHvt_QRddQPV*M!^O`?TYP}d~{z{L0+n|ncqoi0CU zq#0K^4Ok{$LC?%oPe^);88AnU~hx)`M%|Y?{V$Qo-$MmNcK6z`0%&aLfo6&79KwdcYxX&ToSg`+rA0%l#XnL<>hVIv3A$rl*+VR6oC=Ub!mpQyA29L@JcOhUAU5MU_RER;j=?nopHs( z{izXGwZZL!(0M!^dNyL^IEm0Q5khW9BU!*$={4Hn! zzq_ZnHWebgCY{boq&$z;KL64841vnM58wS~N`rzOa9{Ngym`-;Yr7~yN%Y+GBOnOm z)D7YSnJe~#e2&J;edsL8;REx5@ezc|a6TYk}!?i^L=r8X7u<9-p<8aRfq32q0{302g8QeOBTmaf!k> zO40HV`O>M!d(5(6{D&zqcMJ|jzUAl>1WCc+07A)e#-_!^F*_dHj`o3r_ZIjByr{Qm z%{+Zo7`SlNWLoS>bc;X!yO~mk;l0r}pXDX&Wxmd!;g$*YTHF(VtAExsQGWLq`|6n> zGA&WK&y72JwYI_h>)ZZaTW`6sXi8(Q>6`OzoXpJ@>nu!*8gMtWR2p2I}yx83mW?0`R(5!=&>{AAV1>< zKZQ2_V0!Mw=Yyu%H*3uJ;>h#-#&>E{3vS(h_ne%*Eq&>U&pr{KWm;@8gaI^y`UJb? zj=cG1^wGI+8cW^2>(b*K`>c$w&H0QpMyt_nx9ttso3Gz`b3g1?c2^P)j~u~r!<_p2 z;)=95YY$yZ(m830zqz5?KN(in#4A7hStva2ec-;RSN!z4)_@#v%W-bL4%#^R)kUbu)r0es)bbxm*WZJH z;TCkyeRoIQ)@cfD*JEf+ZG&;Sc7%r(!`M%_ZWoHBPCRujO)%e{RILxZE?DQ;C*8|b zDp{X>Fd2c2^CYQ}wLFZDj4{Wzd92gJC?d z|1fJ-fvkpgzCL~73txym&pBh5Id+2a!4czbdokjU;L_6u_O0K-8v)z>(9=5LKSgTRk&Bnou_NaR-agMhemYVw z%W9fdS&evacW-JlaGH6LrY|vW-a-K=qYefEJa8VSUYg;_;| zXzSoJS*Cb?K|vek3pFATkTJ=b;X0c&p$lZJLKrZxcm<06OcviOerQ^4a+@{xeejvcAR;X1h@o)d3F!=t0Od zJ~~Y-(O&q)_0S*BLUG=uf6`9rm~-d;<#*u5pMUH{v#a;``GZ!n`1}DHmBdoULEF6mUxn~*3D~g3#_{oL*<=W;D_m4u7*yr=V0fwv#lwb1p#kEr68efc$@f6(WpMNgB z_R4-VeRVMQ>w`$kK-lUY zYLva-HMD_4rNlMw^Lgv?6Tr$#5o9?m{;9BEjAM^@r=Qx#*F;#@BVHaaQPqq&;N+#nY5j4 zY6Pv*6pN(hgx(pO6R?75@z6D`y-lQ={Hw40Rr=odzL)MMc=%&?-JKqN(dzH7&8--4#m_kzC)Hh=Obe-bp-z6|adOoO`zP`VJK12ZO5F8&*f zHp;tcPjy+6{x_pFmw8uft5-Pw=8^z3slU@e0|CrDkPO(8}h*|`%ozIUpK3nu(rDCG=lcYV(h zh`oWdrwW8-h5Gm-51>)zOeHkQ`$_RD%yeG)E$s-D&ZBNZ2CPT$Jab%+wJn%i>4tO4yP5K6K7z}!=f!+s zdSEfJrlt4%ULS1}PYFF08+2PUvym=qS=hjOiy*0`A0XKZn=x|xQ5b~zx01$VH;)*Zw?FbEqiVYoHU{M4_75=yJi_|$03i}RQ%cBUu6hg4~ca2A(Ou#fE7xtlXVh-E_|v=!G% z_nE>|DO`*H70wPRv|}y(u%3?!^!)t}1X1Ox0(Ln0u3!n5f`AjRD}-83Hw+hWVOD(i zrPj+L(<1Tpnu}ZFsSu$+;Km`LrsCKz-6$p|aOZ#lce9vg)AN3XlXt>A+rQY**9;_U zk=AIT`Au`CNWOjhb{5d3U_PSn5Vt^b?uktbBBd$SaTejk{^@olY%ZaZ@qXM5V{Eb9 z*xd3)kxkv9b(Q&JJfYoV%)-O*%LJMg%FS8k%ab^%4(*uRQr>Xfd_$AQy&sid9R!>Y z=fWa0C{9?`t{a61(?iNQw!#F-aJgVsCX)>aW2W9@XK*=-)9)Sa{8(oKT z1{$8{esNPqIdB85m5hl@yU$wB?%lfy9PJP0%yn6qIqMYXjK}br8{s-MOr{FeN+zQs zo`)L+_bS}@jO}Io&+Fbb>xQXzavCPfbvaKT4jn!eYf1c+8L*yjMr*uVkjul)aLNkumOqYj!ukV9dnT)k3%-%fmCL5Z;gr1%(bKre! zw)EXVbH^A0O3Vz6$UXXile2b$_*yQ;eDW=e`0>MA|6KE|jBmsS@UZm2Hth@l;}tPj zjLi%#GX8^X{Oe$9J+#bpn4wy=6`u8y||G*n@ zlCc&81(Tc-lO8f3((s2lz50?-B5NIstYWy)$kba;@Bwtx zebw(4&z`8rxDzblUa2CDhXW^;#C@3SW$2-3;CvYKp)yXqcm8S!g02N`wG=d9Rp1Nm zT&w}w@i4R+1c7OUlnNUC*x&hW2?lruccUp@fydAlkRKtRaRA5I|IzTT(6>dTvKa!{ z=@2i30NQa!sDKL!Q^La(w8#k|I4FS56K_zD*1d(4tXjcZP?*j!fJxk$7HPYl1NvG} zpspZ5fat_yKsCXq`ew$oRF_Vl;~-Gzx92#_wX}z)!|fAyGj1&*(j^35=6XFTny1H? z(obJN3BkUwV{kVD<2v@G;dJuEap1m``mr$e;-%39-rGlMMOX-_!?kEy@WS7TuX(+5 zBW)?P=UH;5RDz8L{fUF+*keo1HTm z1@bVrPPhcZYXbuVK?EhV2EMuQCGajr5zlA*?z@QOhT%pbLV2&!sYPq6ev6Ufk&Q!1 zRi;a=l6?waMSl0h>cSM+ejzl`F5jgjZisXsHeiXrge5k$_}%5rZPiT)aseK%r2cLF z5xA)tU4}*n5stzx{KdJh zJB9*+>GTYE?ZI@tbN7zOrlKZAK|-sC^(lNvKxyK-rNF^H__BB{Hb2NR*%*tGr zy2`Twm}>39$WrR^vt#ht_{{u-f3Sml7mF~m9gA(-x6;40V=MPuuj%rP?>>_?)56d1 zz{0rzuiTtu3@oJ$ZpicIJ1^TQ^#ttbpBg0bi9c~Kw+Yy&SM8m1rY3cSOkGnj7HZuT z5WL^)M{C;?S6ABr*R03t404pdPQv7PLb3QLbKyF3{S-!{2_I)&A;cGBCHnjOVsj3S zEYHM-OO2YGb8)^{qvSM{AzZ(a(?e<2eBh==Bo!KK5n+Li%#(HnPc1kNW^=!5Nk)zN z!2;msH@iq20{5I9IT!0roOSc|H2InNX%36(Pxsz)SNgl}tWTq8E%AN`Ml0r77}70I zjjvuw&6>nRTR8e&YW2k40k1|M1^Wuo}EKq^EJn(}nhd0bN*TWDXI zC*>r1?umCfFRaRj~w*i#}q>@M#v=6THFz;*9 zr$ewCxD}j9KY8hywC9f9XpOsg*0`D+$0Z)uRpGs5K)Z-g#^4 z>gnL*VXU!?RoY@3{)-?{03UOMKr)QB^XccGiSrJ0eK9rXh4Bk%VT^eY$NA^F3c3q@ zipq2L&@IAYBrztD|%dD3e z1u*l#vL!U~aF&4wJ-CZ_5bov4%aO8_>Ee3UgbP~`KGs~M`{dba)}w8RtL_CdzcR&Y zlqV6yM+i_=n7BMKLcbAk>31usMQ27)Gyz`&aob2)y10abXxWqERcLWe0Ot-gvzEbR zriX*enmW_zV?((0G;lZ>LEZSa!;!M|DrsV59@j}-NRJ>uv;?!d46alf5foVuzLPX5 z)_lWsO={k)9nk;xPy)FJ5Wc2$w~(JK$AGp=Bk_B`#p)>EIEH{sa^-j5I;!oyq} zMHpEJ9HdXQ!eVJ)Ppr(_jx;)-(vHt>_SwxV<&D;BH2Crcng2c~bET z()n33|1AxT5q4@TIBhSNrH{kB~@(&-^ikiK*-wXlXdQA+fpK-Cjt z0_$>1Edu2Xw36`|_aO~g0YBNL!a8JnUll*{S9#CG1q|1u*-6F@O&-Cb)Qg8o69}R! z-=ga>9ILRxK!e$sfW+SGLG)=XexoiKAcYQY0huHQ ze00O6jo6_4a!nD*;uYlP>L1;R^Y1~ss{OzE9>2M1q7zGdZry{4?=&ZpUI>k>npL$V zYtyaDz`LpHUgdZsFlF;|1GNORWnY7N$jtDnAjGDa?_se3GXo2)Q>L&R|3}U3`l)N3 zS%P7a$+E0nOv3(VOW87z*HQogKmbWZK~&V^5f-XM`4=iNtXxa<;}@>*=kLw+;2@mJ z^|df7c#vDWey7WG-V+c8Xfil{7XO{kV0dIwm^+a(`_~E-@EV3O+!KJZ_ZeSu>eQ*# z7#MNJxsD3$f)(?=w$JvVd>60EJ=_^3gn__${nNE%!4R_PdEMY+HJ!JD$66G$1h_uE z50Ri$vHETwz0WK@`ih@8b|PHw#A$t6#Y6q=S;?$bNE&^0UAn=B`wAEQ7ys##8=eA* z^@6zciLvmm0MWO(KmEpUd?EecU;S##Ph=xvt()UsI5xsK$@o}D4cgd9XUy-mQv?SE zs0i$1%ogF4v&nE~3Tsut#pk3e_CpYJQ{0!o@YTLi@?7WsOOqUgf4x77&+#DyA^H&3 z7_Qi+YtrXy*%AG|+_Sj9M@wtf4rRO3255*irEfn5eOJEV`I5Iw2q9)a^?FP8X&{ z#w0!}Olg@ic-MXj=La8rFg^L?lXQru5pvyIe8x1l4V-3t_WW5UcNw>ioxyC5;ie%R z#ez^U@JaWsCKzJ1;-MS^SDiNnKB#)^Tf+VP*>miFIp_a48g>;0?rAF6bbnINaa)^0 z>pzZg(cO!$J$+~b7Bg53gpoq9LbNDkK(Om_AIgjys!H3zb|`QwXoXY8eK$22H<#;<_hlnQFvp)Y3}&QtH{b5eo}zu#SCQA@AI| z3uGxIK8nvR#1q&*zo=B$)W0nd#mra7j-BS9y)*oxf+Wwe@Ab@kE&XyuNaI`|3k3E< zSi%*lg?7xUza)zoKiD7SlTckXe` z)sa56mDITk5HjaXW*Q;pVH`_H2lY1-=g`=u!U(r-6Am!8MR3p)$2$=`R!D7o27!Eu zpy&;oOuAA}yumnqM@Ruyjo_W9e<#ue>)v+c=s}qKvvE@OOC$~0F*rbSfkDPuo3{3C zp&!IBV8v26aUXNc(t}VwFsaf7`4x)-lER?-g6?Hrcip&XKgDOu4-R% z{clB87rmxcb6D@(u``65lLmIXfz!SOB}{`v(J3j7pE&>PmaRox?oJcsG z0^ur5ypK1p#71E(gPW28iUqf$F6xZ?uQP$A&ru8YxpBHd6?_R|?(@82Q>0&Rc;dN2 zyn?{)-MgbNMKE>kxe-SHta!D!IplFi)L=&WuT|b zh?YX%o&B)FICj1jVOl{-hE;GZ;(u(AWM5xj`oll`!yE_j%rg-fAG8DQoeZ91C_;rm zwMJXWaRPi3ylhkky1N-UANEPDwQ!2QK_?n;36N2Z@%k8RD=LdB@>)``2_}(i_B-DA zRG!f?V7|gSKUm zr3G&KrG6kxebO!&csFc<-7gNOi{~$LKE~^5UCa8QQ{t6}gHPySu{ z_y6JFhY)L9!rSu>e9lc>`X;2s>9BYR2_{X3!gCUYQ79m|CQP-!h<6ql%MO}mlTlrofgB8%c4B@(kv*hu~Z1LLs=0Hb!t=X=bh0b6{K>%7}q&16Zhf zA|ZsrLxq!`O(0=hKusg=PgrZ}TDw!%MluVb#n<8!LK^f;0S9$`SVaRzfJJRB)(6&v z!fDME2fHzs(jn8up1L#=7C41l@kvXCf~529+$-oxOZ;#02k(=n&x30Umg4dZfyO@S zmTRd6#uWx8{ajedX>et#-Jf-ln!plr36;ONU22z=lK2#IQD37m3}itkRhgx<~Hg=S_ReOYB{ z^z}5z*u^R1I zvv2w3hRihl+$F=XI=0Y4@OcgFf9{HZjt5s^vgTR)SNc=N%+RajzXHd&uln3t7;$5U ztq)P+K0XI#@-E{da};&+d$9R zfvt6mCvJWQ)_RY>g@15$^2G}ocJbRlR0Hp|KA3IHyzJtpxB5Gc)33a?q66`VO1Wh0 zfQ(QB+B!3X?7ej_R=6|a)}a5d>sNrv(70Y@vfMb-_Q!RZOd4_+wiWb%F*|NGe)d@n zUL!X7f$akbDGvuj^qud1CzuPzs4JmbIN{_oZonnekZoF*Eyx5psQf)zhhboNFnW$d zxCP@c$X4N+`xn6Adi0y$Wb9~}7k^ooxj3&j6)T>5T#IOSWp?PBeJ%GnA9>vQTHr%z zw0c*0^EYXpecMQ2yMn}p^A|#xQn-+jcU=apqCdj80>k0hwH8zgmCwu4f`T~>+&*(uxmSFfR+ZW0y2pqF!9+lP0F4o6MCL` zG#K0X1@TxW3By#(wQ(N$wi~Nsk-2mj`fM;VEN-)Csc{RE#KRo>n_7Q^ZN<4(Qf`rHaIUl?m|z<3xV&f_F%wO%U{AuLYJ@#+W_Qp?Ak`o`qH?UFAIMLYFgfst*BU zYHAB~fw&i9-a0xFoWL<@KTsk5v!5h3uZ6Ox9!m&F5cJ47nMJ_Rq9HBPb0l1TL00kK zwcy^StD$qGAPwNTj&fq9CDxvbE%z#8nLNA@F^YRKP0#yMrn^q@MYwsV{3Les3WjR!O?;MFw=e$Y=A{&ET1L&tj=_z<%q2NH zOmX@$?%e7xKbK(8;hYAbxb?tpO`+aTO_C*Fmxc(~2^h%X_d5z82qH{}j14&I1L8Bt$`d*5YNd0G?+NYZ8nqWCYzFYWk2E{zXe^$oKT=cxE;U*n_)y( z4#y-D`1vP3PmIR4NI38`mWXp`g8*wll)t4N4frW%IKwo+U|QlC>#o8~c**=aHnX|7 z`T2|*-&O(%!*7|*Ip&1tGu-l=`B~hLxCSeC?qkx0dw%)V&kBHLd@=vb?b>zYTshvr zGnr-o^RRt+Yq1?IBe}2kdFLQ!LJXb4edAb+(RvhC68_3TN1{J$vDD{S?VW;*eLM2z zn`zs|foN|Pf9Ol}*Ln)9cy=>x4gdU~{c{2&d(+>4@9)FseT4G?#0T-jw3%-7S{sZv z5hl79n5SNNS$}S$I#$N1a>!yFb+f{IBBgj{`C?+8AO*b8b#$6K% z7LF|#?BKBTwGgVD6kMmoWqV=Yv_eTK#V6^s8vNb6Zb|n&_(1xt-~MeZ5gX9Fq7kL9 zx=hWX)px$erp5^5KA83$*q1hM+ssMRFw`(lVbNk8hei~wv@S=URpLR8_RE)ZVLMt8 zjB%>L=Ukz6d~71^<2<0_D8`Y;<~z`4~x$KlTIy#B;!sxo5&QZ(N^FO_yg+aGCZ;qndA9uL6`VFNhos&)~J z${fsk9WH0{%)0^Sk^F$YaUT3O=Bq|Q7OQ~Psw}iI2f$3aQ)Ao;jHe{Gkr)}3BpyU( zV0nAhb;;Il>HAuBW3uOrq= zED#s6YhmC7_o#UBU^x~;;Li-g-4ZadT);{s1}%dlp?GwBRME!xE{{$SNZ$)X-4RJF z6m~C95vv32!N6oa)4;s;GVxrvI`xtvY$NzeVl4Wt6=H=9S9om@Y~9_y0RdtQ@e^37 za4&06^N&TtwIv=ef*-Dj&3(NDP@7Gy7gyB_RpFH1W=Jtk?3}Jxx@E1%t1xHckYg4O zvGx$U<`94~{pCIeBTVaw=cpl`&by^Q22ukuEG?w31;#x+UEsK}RmQ#WgET;p1$5jG z^Ijs%J}Mak?`r`5h+W;QaXw}ON( znFY=EdE+22IYcjON?3Scte>q@t)Ta;7P=%72csnpR{JP2hmWenfR{eLzH3$JL?Txs zTYh(Q3?gCuyu@NR>|nHL*Y?!jsx?}-eqFe93=IvX!))4W3}yHkz8#77CDh>?E`hO6 zP&pwN0aWx$saqmwUmdsFMh_QqGqPWM2zKo6?`MH^N55=eja!)KV~o*7>dV4JfyG*l zUAg9afr+2<#_y-x9|O_6W}uzp6>dcn>2uC)%sQWePK*(f82@rD`LFl-atzU5-kq~7 zP=O!x-;I53U)DZ|bSd3DL~&Inx(lMw3|EssgxVex~xazlbC=;TnX2OhYew5E5bKmYSTPygXdUxF#Y z?PG?1P=%Uc8A&zO%e0615ICp>Al$X6M*(9Ut{Z>w`@bJ>{!ice4ryZFj6Rsh-MO({ z1#;WXjD&7UFkr-5#43$GsyJYSWn)yp=L`Q`7cvjRFRzt2IEsEbM(gr^zA%1MI^%-H zznlT+$~>x-^IqpH^1ZuhN+c+s|NQ5}?PdRd&PAZEn0wljCYg8M{s~82L;Wr09xID9 zQ&9c%Jy0j$o3dzf{bacq*(u43f6&xO46txc0PMTX(>Y@hr%c(Wd*0fxrq|wTySq z?mcmC!u|K%pC13r<7qu>LRT%5Sy)j$+E4|Ezx~>`!e!~~IReqqy8oO1=HI4nG9kH6 z;!rQ<%I?_jI>!a9&3v{(o2HW0g)a^ngXuqg_6+cVmeaoUL+gYGir#bIy{ySTPHo1& zp2?H3GP|H@Jv(qMkTEFEuTviObTF`E;2WiC*@Dd2pu*tHCAG zbiVN1(+Jwf(x)GLl)b5oeQh09mPeokbJ6w#58ca}y&bwl5Gw+}4E4I09KU0kog8J( zm{ay2t=y&_J$}SN-h>PyORHxQY{K-P+WFu!n~PbsNCU zt`U8lo+pD{ZF^ecIWi_NM@x7;pa4L~m?br{u~j>E-IMzIw=h>r985PJe2{`bM`s_f zMPNoKir6W}E#6kBLqR~=P!tK$g!Q=6?&omQhwi&Ccsny$Ip+V5z4r{V^g0jpPT$Ts zPw1YWJOE~p6TtwAViYNf5=E^dC9#TBZS8vf$EsRwt;^o>PkVpZ<*>U}sn#x+%B6o= zYgeF{GYFCh1OXyW&Z%=wx7*M2p8Iv*>1jYi0;C2r{mtCI-~GY~?|IKTZ+=gqk?-x< zmhL`sA6ifMao$IJ=X-yX#t8b2z3ihI@9-pS|hXa?d&0q>x( zB;)~Qo<>MRUXFt6t0{0X7nvo@mBbpVteb^chdMVSi7?g6wkhgxhoQc(`=lOzu*gFUut`~F z5OCaAo8ksI!K8ZSrB{N8(P2-`iyNxQEYV|`d0|o7qeNOpKn7!-@K9Q8xLAEf_U_#q zi)G>b>ARW8qjPcCySIM00Mo>fsJPktTe!Me%JeB|u&=SuQk{ggLIS}P5l}X1f_-*e z96!GsAUbj#xy2N5!-vv`c#8sxZ^y{PD}TaAspg#o}VS;$8X{Qd7!z z!S_9-QiVy5&xNFkjVuVms5rMJ#uj*8d$26SWajY_XK*~E+#qfja(GH5*p9Uhit|R# zpbp_Kj(YgKM@SweUd2!TIR^G!!qK{IYfiF+nHw9w_`Pr6zVLStkF>`X9ud>LlwsrM z8bnHE5Uks>HX9Q+#NvoEen)g4+9a+VIB+oiSO4O_roZ#}EL;eJ(3~$4M*4S%LrSn` zr)PucbW@N>5Ra9($2dv2P?m%-&4~GBoEiK0r=S1R(0H6WbuxYL``?RAMoE=;sc=eo zh>I~se5;c0-Ps#S!T$VT{dwfM_{KNC3DcysS)wE`D4y4WQrxy5wr2?*zR zLVLnj0|0p6kBp9U-vm-qD@X$+>cvIJg7=jcTLmOdE|4r9kQHqBZ6qS`*h6z8%axgX;tNmU7`Yb-d^7!U zj)Oncv&OvhoQ#(5+D3iUKL5Et#jNRZ@=83He*EGKLEM`e+=OBg(TK=Ub2CP?B4awZ zE1@nd#9h};;i<%5O@hvrCejR;(`;Lwo9`H4-T}_2-RdTp*c?g5nz6UneqDl3qS1cj zwHQW$mo-fiZ=IJq{7PiIzNiII^Q+m0Omfezo^+VF^&k4shl%X<5YdUUw%D92=37vJ zp&5n!l2Q8FH@=E_-*y-U*XxzE@6f(<0LN(?Y&0q$9kBL77lgja-^}d%(u*&Hv!&1u zhgmK-DYKwpOqhzJ?ib?t```b5V9^u%kb;96;Nu$LJ=^S0A{r5=9@}#LlJ33x5PiFp{-3}4zteNizf4ncz;5bF-~P`3i&Ori z!AK769ZHw3oC9BB_|Tw8MA}Z+y&$?xgf=@z1RvV{gJ+&fuMzBI0B7kPEe)w_h*0c3 zZD~OhqZ*h29dj{RsRQ4`oDJL_92|fEWQ~!CrttIZ<2sA$NWFrYREhSQ|3E(sCDYTG z;Fu#K_CJ2FlCOns#aidu;P^UL5uO@a-*BdC!PJ&4vj$ji3k0*oy*@SkPfaUixJKX@ z>m|6ZzsxF3LSwxGEan(yJ?>wtz|Hw2{y6VfTw@#ZoTNDR0hm9P8LLR#(Fzr`gC;jY zo3QqX^EKd|6izd1MYNf5lsPkzo6&{xtX8N9jy7*L3PvgcO!9kYj)xnHo1JBP&x!5kO!0BZ1bDc?`AqSw zNTr0*>%QYh!d$Z>C2SJ=wnxdAWjL92Qq0H*;_|-jaM3Ze?8-cdEwa*vMm7NNshM!Y z2rUEUxbVp&xZy>at_&Qx519e69k$87IC1=rO@%t*9>kt)$P7znI12L%s*g5UW^Si2 z_E-MS*ZlqFM-WC3b|EDI&Q5&Wko?-xh(kDp4pg_(!<<9em7o58@cBn)$(vN?+HX2RC(Amg27d2Shn zir?qrun*S7kANG$qssV3y$>!+49S?9@K9LTMt>{4mBAD?)?xdt$aBY8*m?NdXKbt2 zZAZ)lp7pnf_r<-C^z*#9W!*9pG7rT(@EM5(-xsfVG|G=cT;lD|CWmdvNAxt>spd{t z)q?kK9&Q%PEf69Q2gZ5t>+KI>T^s$mrdbG0m>#w@`Dpi|AyzBT%NRuDC3a}bk;r#W?;hF{O>c!T)sfS> z?2U8LH6t{Gv`Lsa2Nr3YZOU^J0u!bq2w7U?oU_luu_-p}ELpd`5+pppy~_ON+z_|? z4>qD$Qh5i?s*J<7)QxVKH*=faqMmBXBg(ZlU zdbDefQ7Nbl=YlZGjEr?vGuysPrT&dJXfIAnLu%jC(-+Z^B)IKTB-5fa+o+SixE+1t znso_>@c*I?4b$scb1hrO#qoCxbrO2VoLCB6*j&Hy1=^WMq<<)3iz4n83tD!b+b9=d*owE*Qm0^EvkxH67xq8VNOn zO52^YW*nBdjvNQ>X>{BKc5TfaJTHF8cq%|}ZnMVu&2Pi8ij%>R($`5CqBaQT?Tpp@ zqB$d2Z|Q%1Lp%FX-hX6zxC|3LNk1T78EcW#;03}$+%G|Z>ffTq%=>4~pN-JE2m23T zYJw!52tUh^BR~atsdq{T^rD9mxt#5*mRDyfYS zV2!~@fQj_Q`AYSWpq#6D&?msXo4UmxSwrV0|KS*17b(ZV;(5;<6W5Y@?NOlx7zM`8 zb=<#Fy{#dNxFec zth6NV%XEdgqhvgdBkf#OIEhUXWdS!CBIW|nq0JEWz<3Iu2}t?C-5JJ9h9xuNc`bIF znyA})%qOA4_9|eZVCK=87~Pcr=UP~eJmS#mcGSW#7*a$ zc1q4k1r_#7p->YHsmzTGvowqDf$CPL2nH7yYIdmWJNU$BO$jxJUkrdnqK&v zi?zhIi@#VEn=5s=@w+%%pU7w(Zlr1(B&gIp_^s)H#7>y0Flk-LgLtpJ=fWT8O4&{b z2?Q5Bk+&f7y`EL|S(;_pYEqQQ+Rn>l+q{T2MM*5L#biM@4HBKj z82Wgn9pQhsp=jGFeER$PgK2YG$6`#M92-BDbxl_`lu`XNH!GF~I~8>cM{&w}Y-?zd z`1YFR+XfHo-FUd5dHAe&q6VpnG4OYk>ljg1EJU>34Z(5R4J=HaRE$COx3#$m#JByI z=%G9}3W;oSQ)fIE&byD?ogRAVAtX4ngfT?L53?-J7>!ADh`>kjljp6&_KGi-;b9v+ zTzEBa5NG^|gMnLYk}@5_!FMdj^WweAD!bMX+Z|H5YSfAv3LMI?RI(Uj%RVb{Xqz>m zaD3UPAT~P)`*(m%x*_JQ$*jhaFggdOn8y-O%WOinO`Pw*1i~&10i>w!jSp|dp4aoah&j&mt!NkVs=}Ih7V_x ze-3dt5o4U!G6e?NNn3oBIZ=9M?iPJ2+|+e;-HSAVs>EEEz7oV;*c;YR4Gy2J+wPaOn>{gK250Ce;yf*kH2;z9X)z961|-U{zh(b`~$~tIkgbD#l#t zd>>5XWlUFOXy5;V$JuAtV_?==a9VC9jOrNSRWDw+h)w&!@PCjopC;*;VN(C)zx;FR zCu=jg1e#mA((nJ_AF;Nv*AS+2iJTHfchVFlV)wIsM&dMx&3Q}&HBoFPbnL{$EZP$! z<-lqYrpkN~ec0CbK!7Jws7xuDW?yQ;gm6q4QBD^TmrPieRyDIS6z*KQJUn8cByh~N z0nH5>j&Yo)rD6@|iW3F-Bw!F(OAI>EKzTLP3C3bdM0RBEt7R|(STH9t*xb`1z&RyT zqoiF1FN9Oz|LT%Vf(#|=2+U0hd{=O&1YZK)q;hKPO579YWk_|bjy<0DbsApgS@%;j zJC|Ulh?Nz1*8t-{v0Qh(%%P~=$HcQbqDIw#YXB5B8lfT#Ss5*aby%jff~{A8B>p%r zWZvwnjI*=Ec`0tI5kVdhrj#q}PqQSTYiuo%1-&E9;2X1mDH1b1{AgBCUGNC-Q#b*B zf-AfZ(<8=mIR6}=+9mupccef1%)@DTaydQm)vtqNmxzLe-x1^4j33Ps<5NdDO8ysM z9(=DE#$plkK-VPKM>Rk)9X<7$aBqt+tgbhj7Aov9a+z8<`w~n6{x%MV>kwQH@1ik6 zu%!9xG;`>==blR+`|yVY1~S{N&BB3okul2&2!#wE88-U^e1uW)DPR_BTIG72`|K@# z+!hRk$PgPyY<#he#N;Uk-iq)=It^EO-$mMYqJG*?{MK2{ zGTcmUlhP^Qlc05j^V~X%b{9mP3r8kAc%625E>UA0(F@>Z`?Ze^j+|#CN_@7EbW$|; z?Co1SY-5I6hMr{#2isylH0M!zD{aHnl`5w~CowHmIzffqJ4H5@OjNtVjQZ+ zZNvK;e@fuFd|0cs`E8l8aML!Wd$v>CLPEm;?Spf%?GHJ#W<{m7*{&Qn1&t!ib z2_RLzh6lE9;(kP|pv;gu@-2=>n=F{#+b>~TFcg0Kj`atQRABBH`tgV{pd824_d^px z-vgKEhT~Jrop_=0$1(%zEZ{a!Cc-v4C%xmLY^?+*>HA>|%XfDdVftVWb}(mS-a-V} z4^0mWrq4|$GT36fYaiTfC7>iQ99tPDH{WnbWj-jqJ$zU83A*>*dqa>gha|Y@r+6nk z#f5<#1C*h8<5Dp7Mlq9_a4rc0$4;2!Iq1fn$K0`LP|62P`q?18zrqGeQ#opa_&1=z z_QC!rL#zzA1Jj~R$3lr*l!@drh#TrQf|Y#^Vo10Fk0_OXdhWas1`1V#hdB4pLl38W zDt*FOws!b}@O2iE`_>vRnd(A=&~sO-+%vo=_Q zPQrc~X0C`HH`!+^IAd|fr(MpYmz5{eK`sDg&c+OrNaVaze zG)5oN?5{=>A#g{h>?TaB8i9Kg1h5PRmo0!<#(v3INEmaQc7wOEN5Uw;XvKh0S6u@+ zFX)%+#{v@Za70I%J~=ra+6T2U`cAoyYu+UDtm&Hjyi-aOpasUawT1PDakZWm%6HsY zT>~dgNLd%mMBdv>ra6xgbe`uTSsl-QabceOq3+cS{bVK8e+*l9E* z{l)5Nr|bI?xV4J;);#06Fnk4{i5=|cnk;Fi>_ zOjw87gEG-NQV!EDJ_>ilKWQiTXX&*Sm>1V?*B|Gu{w57DXJOhIYYm+Oj`|Ln>*mED z{U}T%AH(0RnP_4Q%z1smT(_5iXD!+lUZ{LxNseD!SUa4Xj!mo!F-Cb`_S&s}+=2`Q zlZxbK!^P9=b!23(Jliy(mz`G)3AcI$3AXqe7nMA71+IZGUxbg7$jfWDx zf?$a9ct*mM;5)y7UsOSrID1}u0 z*^KnWGK=T38lFkUvrdJA8SsA5J~v7?|lIYc-+7}>}K?p_DD2XQm7Mo)*nSV zPCDlF4IdeNdF*`2a+EemnA`VmA|%+(JejX8HZEU#DV}Xu*5^UEg!~}RBg7`px^P)% zE_1`noBXsb5*fZ^p93!RS%>6kD==+=39v1~Rf0`CiN$dfeA%Q5_EjW5jH`HQLAK5D zqqu;zQcz8i9P@y6{uAvHG8>OoY-c5M8raC|kdk>WuKB*ikRQvJz|fZ2`_|cB(-F_u zuWI~_%_rK$R>xfM*}y;g7sL(oEc)$x_Q8W^%5e_dXr!7HXO9~ZcOgr*5%9V4a9eyWd37pgC<^{e{g zHDIxLHg=_W9z{zvcM+XEoKv|G+-E*9yZCSo5H)oXvazc&aQox&H~zz8nnuV>sNHZ* zMLG1TSh-~kg{RU@`|sLc4=(k>bY6R~4r!XQ;V59|YG7G1MTvRFw2%EmCUptXw@$$e zNP#8J+91xSFi9FEJMtwmmTTAEjr6spy*|D8(hJy=Po$3CLumj4YOai_kD1n;{{To> zX0tf71%yhKVCq6xv7jcL?8}hz;J>C!T@cg~QTQ_uHgtFd?HEMc*|TSP4`*}AlX=v~ zpczx7I>vY#TA~xDP6p!z;KBDC@hS(js7KQly?H9={;OlmustH<%hP$IuX zhF&OhAR=>t)&;o3azK07t%ZbZXjt0lTN@Fk`pl%ws3Xfx z3*#^&tq_#VxlB;gSH>qy{pgb>Uv*^L20TdkGvQtj9G#;wCEDcIkSD@x3j1O|6_4oe z3jQ98;C2%lHazEnp(elhwNbtjc`c`;GRim#FV5!hvrD{FQlkQtBz9x3Mo?6yjxrO_ zgl{rPu46*dHpxsGCRc#Ts4Y^y(Ug`k@gcb~Yr3Y9Fe9!jz(^doROq&z_D`-^|P+UBBHJI1otHaFO<#gfP zd9-#Z?HYI(Em96t09vw+s;R`p6LYazk}G0>2NQ#NUhTFB13ODwq_5no4UDrekB|XI z)3(Gut(HWs4R~r4vi%1RrlYUDhMC+rkOnvuJWFQgXKhc zNBSIa=EpaA$qKKzZ28w*@Ch2Z$+djv4gOyLeBfCHj|zN>-q`NS_2}c;t7|7W zTt_C5-Q=?d({Cl#8;{M_7oS;c7lX3aUI!>(0)B8>z<6Vs)$jYR_)~qY@*}>A>qUKQ z7uQZU>-%Qcavf{0{Y)pDmHXxeIp5U?6o=Z4qQAv8zlBwvN3^p7yX)61u2f*zyk2J}7fm{>E&z?Xc-g4Lm>e6gr2pgJ{qJP)-IeaU?_MObXb8}f=zk%RFKsMyV{$qBmy-p$&Os!z zhrIdOG~+tB8y1r}$!yNMbIrLFc}tw=pEmmv;~2=iM)GzecdhcfprT)33Zo{+=g{k3LFV6(Sk${6V|B0cW4?%`3vWXBn9(*>eVx;u^%(B#vNF}Kz!n)?Ea_* zvjM5`#Y<<>_!uTN5Z2vD$YmOxTk|k*?VUMt(k!s=Z|IHn%`vaBjeJU&Rn;KLb`NgB z_e3xUa|sb0YdFlK!ZWXjL?2vQK`K5ATy(~E?zvwIi;@y`G<+*KOsfGhC&j#Cew~Za zC^R)8U|Jk^04x0&GK_^|J@Zm*&jLB%hIT?Hd&g2!t{SD`7RUZT4_pxVowcS) z-;zZy;9&!G1fJaVEhv9ZTZd(Q-6a1iul2reJ z1TM<1)Wv4ww~J^-ko*kj5=giaVG47U>gyt0QFgX-Uf;NjjZ0*W1&t?_=rGNqh`h;5 zY-O}9e*1hRN~%<(3f;xS#ZKZ+f>{ZR3#ig&H#FvbEL5v55Jj8lw-Y1U$KPCO%n44d zGfxZ`ssbKyvGOPPi@(CJGK1ndXB3B*{8WBc-umgjHiNy3^~R&9zxuioG28CM&xC>- zj|+kDrfsx4q)5Q%Mh^QD#5XDzyBiB z+d87nR>BeG(GSNp>i1f-Aa1Yyu^dfqJhGN6GbiGP<;qlu^Fa&+TquQ&DxNQJgXe@H zU(v3jEq(`XiF5IWe{!EQ&aPd|Czivr9=Qzq1ne!B!N}in_aFCb%#w8c+#T}8P!Ql9TQc13xG0AsWAqFm~&pikvz{^j$QQGALv_#KQB_ck6k z(mvn0(dRan|5o1(zZeNR;B5a2yxUlh?Q@>RI>@=tZPsSznMVQJfSGHE?>h%6LqfZb zOu+5~tk7I{yCC8STVnvpI1QeQ?Nbt&3gqD$KOK1}Q{)=BGgz?c} zS`Ht%C!IQb4z0+UfYWdO)~AAyU7ni7{Liqpi!dmi={G<1o9VCq!@q-=#4a61Ydh`f z#}uj_m@7weIcdQksD?q%+1c=+nu#^j9wVVO@OyL|A0hf!hepJ4Q)?ME@EZ67OU=_# z19_n^b7^bSKZmj_A0rse!CbV!T$$%$43p1!v_DHYa=ZTPzo^7pL7n5F@J|!28l>(9 zA22#r-~(nftNL-kHZ&9RwHvKX8w?bz1I!8QjTLgJ)e#rfoYezE8XP!6+|^iPS60l` zgISLFM%%$S`X&h{gS?#1fH#KIot%V#=d$#GzLYI!VS>R?y3QL0T#?ahKtoU)8Vxm0 zYU$J{>#Kr^656yS$`p_55Hev!h_;CYaNJX{H#SbL4DfnmKJDPKm|-XS(hkF zO-_q61_}A<=wDf)9doBSn8@dT^0oBp$#dzS{)<10a(?{6^UztPbYS0J+P6xm)`Ntj zKbOAvrLVwjzMCtxgdBe*ojQFv{n7_MPM!|^+Om0I6Izi)n21%(ME8B zEQ-QdDENv+tnzxXSrz45QBktQU8qPwd|CwZJGtEuEsSM=NtyrI&Rn*W#Kp*GeQd3Z zK3_q6-?rX0t$ehrQY(eaja!Z%3y4LqvcUOnaY%q?VppP2_}QicR$Q_U%gzlhUi+!P zi~bhhH(Ef{z1A*GYx2Z*WepxAy1dDty+H*&UJz+Y^8Ey1LLW06*2|JucMNQUCOu&$ z^akZ#bD2)&am!^{ZYC0Cf-G;H(DsS^Y=-&faArKgBg^n3p`tmB3%o>w?RNuIk{93z zcrkS1)7rQ>w$`2TrWgnBdoI(PTWve?wQKrR{NP^Tl2%xwws4K9EYp%gAdVCAV6$r>IwPqX;2B`VCI(8MQZBu&f#Ibbj*bo-4LEzWAiW`svgT2)z3}4~(j5m51)k}69pOD$H$;WVl1!^K)6y>8b;cWR8)`Eq z2$efdPJ#CJE+o#|S(6&lV~^b%d(F$Qyc`bdO2%tR^0fe=EkW$Mbn*20^umiTrMnIt zO!p3MOWWHT)7aUQsT-|

    _5sWBcEUKgSZGUya&x`Qj*1uLwLq9TLD@TVJ+6iMZ;2cV_Jlvp-0L9fPXi1>0|b2|W?9Ou8c3)XW|uz5d(JogD?<8Dy&n1i zMT9rn?f6GzIG&64G1i(esr}M{eVRT^@qy0)Hna`goL`wsQxMGV*P1FB>8yvK6DycJ zNl(;JUr8+y^~-3<@ER)Fb-f9OL*b;Rxzm`>j*N}S8k2|+?Ge|c74&5po+cj$9bd%X zqg;k=Szter(JH}Qc40zA+l;D28i>@>+m${EGy5r=>!%3MJmo9^06+jqL_t(1ZX~i@ zLxVxEt1&vxJeipu4#Dl6cO7A$T}j{hHu*)+ZY(Y`r+`B?YpPH89KMS%tfP!O{i9tv z;qTbq3qDPzmtOiYOyMJ$hH?-TJ~$0SV;-&hA9yhRum8*coIdf9kB4@x z4AWsC1@}&mFki;p%(?IQ`p0knT9ifKwnv80ZP@+TPy!JuNFge?8g4j(7!R!3aO1k4 z*S}khS+UXZP7qPllQ#r50yg~hYc?U5QzQ{98~~L##B-Dp&+r`6KL}aNs@@=r4YS5o ztGoL?TZ`p2SvHZ+Dn2 z%_s$hK<AA1A!g$Wg9J4}V?r39Yu^pnkc z0h5i3m>=m;c9aozmRt^98l)DEbt7txCXmF(Lx@Dp%L#Gb8XJb zm`2UREYLKFetbY+B(R{P?J#1b0XI>e&e(BH0T6}i_qPDksnz5P5soxRQ|rwt6z!2d zh<_k&4m84ZR2|W&Xgebx;5u~iA;!}rP&3{ex_3gCS{Ef+d5`XGj^qR%(-A7 z+ZfwsOvGe5G@)GqMxBhCVP=~#i<&@_VN|kkn1}h@fhk`XjP!y`!OmT1?b;#gNdgEQ zy8C)yBB+mdjL=0jXkE}W!K4^;paW;`XD|zV-}~Op*s*5=7yVqsbN78CFfBSRJga&3 zHkjHrO!~ZUzow@#Gn+CO1)+n{V#$cD9TXPhv39|AVdIsmo45GsZNWeU5wKw(wK=@@ zU?y*Z2iG9awJ%)r%SG?{`H<#qap8T$A`V@{dl*5+5ewGvZDOB57)tL~RgV7?h^tr;kA#H>GwkA(0=kv8-5;!+jh_|647a% z(5QH;@=ca^+96S^>5W8}hxrGLv}Pz*O{X+X=^VXFXN(un6I=p^bL!5~|DkDhLnk{lECc-v=@5b(6N8I(ahe z+Vu%(fEYFMk;E&Wun@Go&%2tW>>L<~@VGBwzOsvK#&c*{_Vf`|5C>z4{K(Y-ksL%G z@RN9KZD&p~E-ufrb7nTyFvoR}zYx-)E#_Qb3nlkPH=85e>;jAd^fX$KMzjosREHp+ z!G7N)XC_|LiPq4j?i(@(ngG#A?Bv@bBlkR!h-#3^cVSZ2P`^aNJ0h+T5orNO=ra9m z)I1f!Tt{Vtp!h9kqoB|=*$8Fkv~fM1hu}84lfEv7G;YEi%KdvDg4RTZMp9dbb8xBE zu78DhT+`q}RD5ig2c|kR2P?GE$TYGh!WF2Xx?xk8v*d2r(`LqM*#g zmfhe&J$)3oXd<%qbZtUzU{!jVfp;!2<u6XXXjYst}8}Hrhzi$f$;$|O&t@dp} zU<(3U5ZHpiO$q_|+}QV_u%t{28UTU-vQRoQh$sWIlpxxdAkg$TYr;|bsb_zHF90_E zt=(w|Qw@psnW=FcS&`CWQW9EL2@6Uxz=6L*YhpcAx7nd-g@lMiOb=mUy9nF*`q5V) z#0l@ZoQb?S2-nb*P>wd-%Mj)=Hoa&pR)??h{80$z#x%5NcWR!>Ie@NS9gevCMuuvI z;ZYi_gQ|?`zCC->|YT z91g(kIBu^%+}2=%qkn^13w;_S!i9w*pPP`E3=0woEY8e9D3VNCd;Y$UvY435Ro-kYyOJ75pB`m<=^TMC%wV)6qz#bo=1=DXE{UI2;?^ zdx3T@5%Egxfq^vqFfx{X`S!QGbDp(Ch7!cLRM)Goy^QAJ zUP86DK*T}ZK*&i;7y+pkb0uC3!dJ7Gg^Ia_lt%<2;Qeb>S>Cfg?eC#$A<)X%k(vlK z3X_!tYkCrSNi(nI9P+fdFejGTa^4B#VrGQz)(rO42*r!{6+B?hE@_ z2*fEEok<+Q=OBLP%1V;Wd7xyPvBA2ik@lF>PUmB@YU|IU6SQz|z%iK6O~4;VVF+e; z3a;rOZQG|P3vC31aT83N%%JbYxDi$s+L~4}MlcD>G)5vF-Xa(t&2?l+rP!U@=C%m4 z8*K7*>{Xd;I9W9jVS0vUV3C2>$+%2-+d9r$K`C=skarK0De9(vo%t7QG5f+NVTm?1 z0h_|4N2Y6W4hD|#YXDv)K9;RCUoDH;DH(_o%z_MqfSLzxixrJo=CAAEJMn+)3T!{CFts8QPOxeBnnh zEt=R}1(vhv#POpz_}`QE?%kJm4DP}tSCg`ZNEW9lUOnSef;rLDOlHLZ3bSZN+R&Js zIDI;Gg12fL3~dj)2lJ-6o%mgg8PsGj-EGb7>CU_EN-sbATzdRH?+5NgWt#j+Bo0<9 zR}0=54Xj|?)pF>7t@fcXv(DqC1_W5}FR!_osfao3ja%^8Vjyn8L4CWsv>Bn2C&=4f z(^h#KA+QDejS$)Ty#;|^Fa+59*O-UOxx_;d5)yh4y3&0*?J7C0fqBpo_3XK`I7W}5 zCBUf{LeseZniLtYJ_lFG{!*6ZkqMMsZqOT)8AtK$56}6?!06wk6LrrR#4v=|$T0aD z$c?ay_*`wo_{caRWP2g@JBW5O31N+?3`~L{Tz8VdZjw-yCr+G*#E06D>wIn^OuQH% zo=8RqajEnj57`Kd>sq9SVHyYFoKOu1S%@*Ex{=hBb}0c?LVoVt8Tx-3LUbh!?%a_^ z@VStuq6wjq_`u`u!=bt_v@;PE2LiCB4)ZD0IE_ewSC>kdlo+nHE*-k#P`YvwrsU$O z)Y#Sp9OvopLh9+je28dGP}Q(3n3BjaU`_&E%5R8z+N+kpHkBb}OO>23<^V9l()cvY z13m=AAPUApUx@}J=Q>*(cGn0-Z7>~?ED%CkQy%*hCQMTOj6oe5hDI5|8cf-cdYf~j zMoBlm6qaE=45j&M4*Um5k&xqG!Kb`D4}7)FH+m7~KEM`?2$LBZ4p}12sa7--qb##f zFVRK&=R^}E>tm2;uD%WAD}uR^AyUgTU5P9O z=N1~IRS08=V;ND$Rm@ZiVWw`i8FU3k0)iU2%3w@$y#S&>UB7{F!)C?SNm;E+LiK8L~K#>j@= z&~TJ$YtxQhdqRs~J?3?2FjO;T8=`g&n7~(OpB38O)!PRSo{is4jz8Bl;nS?oOz_U< zc^JvbsR)}C&M8le5?g7DO1RrhD zm-JCU!YtDu!8W7gF=jFz5*l8Y(1E(i^+JGn=)=_j0jRl?8PbP_c9WcLF}?okYmql$ z`;P7)dW~+QGqI9W+c*P5P}?TaD8bv94j(?8Ui!&P>E)MSfoOxs9~>lecTXDFxfB10 zvuR=l!iqYz?^b%Nxr~RBTbZ9Fv<(qbbeT2>a4>Pv7i1-yto-Ol&(Wu;^xpTpH(fY; z7L$-;X>52n;P&y4ek66mNX-y?zoAKIV~BF3$R;JT>;}TVHWBW0Vsbc5Lr9uU+K{l? zpDPg`#a@14Mq-%gMo7Iiqw+BKheVy`V>*6EbSRiCrR@@Z`d>6+&#u%sOr08Wl7*r# z!|?DzFb?*?KH5;7jP-BP|HCdWV1gt(T42KT+t80;3A=ft0Ld7ZDXXcSd$hyR(t){& zu`)^L+#E2(4`7)#!^)&3+OvS8yNCXmI%?~uam`%a zMh*_0)8~O(QzM!o@LRu*^+b4te+5Wt2*gVhO6}Y^n4W*}hvAd5t$$m(_x}5X5x8*i z5^VJu)aBetH^W@~q zGk! z+qIvr%}#`@juZVu4ay{wGgr0kguB^~&BnaAcC)tq?QY-OUEXFmv{@Z*<+;tqMyX|S zxUsn~v)ANJj&n{!vROEb`fSmz&D!GqxA&-+uv9jQ&FjoW$PLwNf8)a+)~vOiXyeP? zd&8US4=X9p$Mx&q`ct>>nYdEmixT1D+;Q}L8IztE50I}0>8Uh*4aC2aZ~YsTej9GH zOad)4*-p(&kQI3`zWJT>p7*>z4er_n@r%PQ?Ym4qfd!?>M31UNa^Kn7 znHtXzL#)js1)jqW9w%|y+0-N>Fd26JlSJV;d+t>FkN@%iOdtNp2hkkdfh2hhbE)C< z?6c28q;;p?`|V##hxYCxTd|A~grLr~wK@qy*h2g(SzaKCoJ3}Gx5)rWjs}CUK#0($ z1~fUCI1LRBrA5qCS|I+WM#wg-WSO?W?yx4{*bX5Mbi+YxoVQ=JW1g(uGvK;mW!urL^q|Euv%39k;5o-Z z4Z*=ZJJY4F6t?>9Kd;0|QOPXswo+8!Pl@8`<3_iMVz8%=xr!@L+1`$MmaQ zADX0A`c%t!EfVT=l|FRy><54Oqv?lFe?R@F|Lh{DLK6|}u-epYzCzi$we zx+xep<}FF^c4Izu(|(R=6I*70+PK(WF5 zU7QE#E6C?4NUACgkMZ#))Sfounn##~>$^{V52j%}-A!_~Ig-U`5(AYP(og*ql=v6+ z({@M(PpP$pq=cn}g~VqjFs>c<2$xD*BAhFPtC5YAo__cvA4y;M!V?iHv#3b zgAbCt?e+BI=bwjwe=eOlgC7BH-M+mq4d8pw+uxH8-+32A)l%e(Fxt?EKJ?*q^8z+^B*M_Oqm%sD{%&0D>KlsBxpzQ8+^7Ki3 zERLq9zWri2(hguYwRi6xq|Ep|;1oQMG}!1ztC$7B?SuxVq~kDAmW+O-kbDG&>cqf#BMHtH$Q{rOQxGO8FfDp9 zufTYPc@cfke!j&0G7Q^-ge>hDpCEx8Fqtxc0gS~Y+8Z@Q63@`znEyc3Q-$9&H5Ml6 z@8OYIm>hnuOa(Cu--0tb%oiqO&1hOy@Fg(;-R$gmn22c#)!*MwRH1DoJtHf!VW1dW zr@v-O=gwUSxUB*wP2ncVwrzASnMV+iwxL0gQDK~#=xccnRu&CJ0|dW0F0|>Hg&}Yp zTVTFWf2BqGAtUQM5lPDC0v9!83J6O$H*4;*N;EIc(_~ayDRXLen#fx)P{7AEDV+TQ zfaY6l0h^DQ~1IR(YEjjp==K|AWe*|W=d+C z+F)!A4p2jTG|_6ojLeY5Cr+HiDSBr*c<2!L-Iz{Y8Ns0)=W6DT+7C5iI&9D5XCn=x zw!r?E$hRTx8F5ODlA1r^3kYK#F_RhZx%4N0^4avozyDI?Xn8kx_R=X^Ft;gY<*coJPLc=__6h83j$jZ`1wG9 z$yaPpKc5P=N_`^;xCX`tVmsDB|M-D+Q2P)R9z?$cRt*{lBk|NIafOPUhR`zF%`7G( z{dN68*ci@K+YuQFwG2iM%4=&LW9xEVEf@#el^F~u)awqUoKQZoPIFJDV-|ClA+!gr zn99tM=**1K4Vb%VjxXjAI^!{{t{E>J$~iRAF)kgP>+5 zT!~>UYS2JfuI5lC_G@p$_XRvPYL(;Pg2qGV;YB3v!fFgHn&x9I64rb-_^s&|FzkiU zjQ&}t&Uvv+ zzZ!9fH=L|+R4Wu~ECV-*Ib9!_s|_tI&NnkR96QUBDe6GmVWl!Y)@4}W;wa`~@%wiA z-eMqbr_sKFzB)1U=E1|9=S@-@QYX%}lCv8qZtIaP2y8*%r-ndGLM9?FavHnk`hHa@ z?Yav;buC*jYz~2fc~FY!c|@Oa93XNdi5TZbUQ!}y%zTr_DHS#fk+~RTA}*8I?U8ps zjFf!=dvzR(A?OX?>7Zg665kS&A>rp+$#lU$6!rVm#zWhF`4NdS4+$%6^^Y7LM3P%i zK8JA#;W0Aob_cO*_|-mgJ(yv7aBvAic>>4Oi|P3no(uD*fx&^a6XNxmXMU8<@~?#u zpvw@?+H%MGPe1k9Xw{4bABkDal zHiGT`E&Q}?C6bW@ zrHqXPbD22*i{x7-Y{Z1E9#leZxy^87)66X}YmwA*_-)8V@g!Xzmv zClVBl+124Iv{^@UCEJZbaQ4AKAhHirtR8Z1^a6Vs2|q?WYS9M+T)Ao@Kl*UT!9y@$ zMWVu88IO4Sl7zl?fARly7>7?^;u-gD^g z&=NWh=P#ZQCR8VQneA=&Z3j0n`+`B0(E>A~-Tv8PAl5*!b+QEkxNH_KnFyH&H>i50 z2$lKb;u$~WG`5Z{2y8*%ZHIvN^u-)>vvPwpM*6jf^KX3QD0Aa1vmr;TCkfhS?9s-p$)8uV`^SA#goG{<@?nlG?!5IHaV^v*fUJ=K2Yo}3N zw2Rkl1Ti{?j12i?%A_vqx{H3FL4PmU#e|NFTVH_Y{uu2OcOmv z={4=uY-DA%fzX@JXVWR7=nU){h`x?NxS5~9{wUei-oCfLH+7QBAxqUE#E}Ba4XMR} zHN$QnLKVW!3}fC~fcU-d$i1o4tjkD}XCRy>$EP8@VZ`ub&|O&DumvRQSRAEEd~@&+j8)S_k8-gnuFR zlev2z`6~|W-$$6ydtpY%F~PX2ozQ&COyW*KGc(I(nPEAY3y65(?4f2MOR=vKauj9> zwTsMCXKx2ty&LdHKwC9V!|BZeITB)Q0n7BVc|0`3K{8*99|v%6>}pK?olR+b+Q~hI zdOEachH?z8)6CdpI(7U+I{MnNbnMk*U?wI(L_J!B=thx2yXhKbm&T)M5Y)O;81;%! zsBG~1PiX3efl@d;YsR$7Lpp1BH*61+F-`X(bSXV$kb)ViM^j;Rti^>^m{X@yM{t5@P#M7kPaQWJIvo2VH8(jB6XApQ9>Kk2~+huzw^84-~12% zCO!T1GilfEAxz^wlfM0}Ckg9%ZyF)O*vqF*N7!DOGZ}gh+h(8vwK62*pp9y1Fl)lu zU7sJBo;o5%f!5KcWnf-LGo!YQ-lhj0c_^JdeKtMy{io7LKJ+oBZ4DYd^0t6Sv-mdE z*Rd8eA3Q>P!FRD{#Kqg}&&FNprs}=}R1DHvX;^g`n+` zu{X~e3Z8|?by-#VTnhmc8ImhwJ8*951I^NW{6X zd5cWJGUhFXut!I2gDq=MdpmaCxLd#Ok9D$A4B^wk2JrftvMK$7LtFpVj5#c z?M|f1M(*+4$T{R(hWT(KV2uZ^hM0|LLtMIYaX3wm;3QpYO1rl2NT+`ELfFu+;7Dx_ zf{8jprm{!WLhME~o;DnO$>q?zIGHXYjh~aDfKo2Qv|OQ09Yh0KhRD?+wpNoI>TBi0 zriOXfKKuvDsT1a)2j->~7%U(O^(k9ZRR~B_f4&63R<%^qJ}Z| zgKdn%l2+%D{txtH3YDWnHBe5o7E}*o*`FcAT#pn~8P>Bh`mDNB~QQA2Qoq%&Uj7B$_7a2Gse|4kr`r|+P<6y>S&}jVl`4?zIecH2oAN@X`rimif z#hCSyoxBb$!|274VB%x$0wdusycc00Mq!d?F;m-3M5R{XWKe?!+6#o!EXfy}jFg2o zo;-~<=n`# zH`_BeH3M<80qb^XkBA=|CmX2DKr@?*n}pY{C45}iGNB)vANQTy%qt{1YzR)O*c9`o zxjwmMHee*&AXy;2?)!en@0ggG0CUH^b_!nm>vkBAo2ien$svsj2Q(IF2Rkp4ET%Tp zO_{@WQ$i`CB8dm!QmB^W?mOp?_`dO2$K#E6uKn$%5bpzv%oIz)2{IiJ^SKPO5zekV z^6hIbXL9kHOBv>sOVyiDaqf4qiEX@A%w?|^?YXw}+vpcKTENLM5wC@dLJtWo@mToB zng+421bG=;m*6nVun7)^Ay7`7I+6Nz^oRYl+6d{lEJ|Qq!^cKO&@i0Aru%Z*vu`&J z-}Ql`Z6u;=X=!7vZ^MjcGHmRNh(St`XTux?yYRji@=o+(j&wQf`E@*Y&DMs02uc0L zOIOlMFTa)^ee4k!5FKf|d7i{|5c9it4MMzP%dUa}crF7&Rt3)KwfN3;b0tX7nXwsu zB3(LnF3p*b0!Q?m-NDS)Q)y`)VvjJKZA6DELj)^1@9wHiV-U4-5a*0ogmP6Y&`;93 z9fL%s!hEWui!8!qS121D2nJBS!S3C=FtNh1mNpor$K-Q8FgxwQus0YA!j(eIF3jUw zP|isJ6%2qJ4n@puC`y<#e!GX!p=M&W*7J>*2G8Ks4CBxR2jQHHy_LTE@+#778B9&J zxDe~6j=vFM3D`P@d7i3m$jpW~B9my8t^)pnM-(Akdj`p;AoGGcW)8oIF(mb~FoZIN zGH`8}bj@J$Wx3WfL73C4m#@M^!XQw$+K0Y@zVJ7gn5iL*?0A|+n=%bCE=+dxbi*uz zXJ}xS>GK@^Fos2Kq#ru4_W?6Foiq+E&JqEusRf3Xf6gU+Cv0Okj0A>o>GjuMPoMha zug3mwUXC#soozb@7;hLXm{RA(``-6>dhNAW(?yaVj$qEVZChtLc<>+&>*FzZWWZ#4 z7Sa013;~6}^;Y`QsG~ULw7?W zM4*#GB8Y1)Fd>DOu!;$!8ed5(3nq)mniP$DA+@s%_e;vOu9!@IR~FKG)ay#GV%k+E zpBqwf6qC~Lcqq@r;`Y|}FBk$0-5Rr}gPB;N{kLPAamn9qY)16Rnj{C#OtCjYB>jTB z^AA=Rc(>uH&8}^DWbJ3*J-@_nHE+%ZQMs6R!B|zEE^ytSN@O=4+3vRbD)R`!tbl#- zZ3Sy@TN#IAQrs`)YQ8;!$&qp`l%2 zXKp=4R;us8ff_Pu5k^G3)z({o0hym=h$bC@HG@*i;kUvBZN*!8x1D(WfB1)goc{ia zC(_rx{>`-i;33+HL>p6&<>eZjU_0^27=VC97=@%+e+PRN4(P7;F8P7;IuAGCaNL#V zkWhc+OJ59grLmDKsh3R0J$-d)7n+?qOk`GJ9L#EMC{?v3CA0~xt&N0Q#TK9T&e84~ z%*WpK-uu#f9)EYb>+U;&IqMP`na$f^w&Zym3?X`(a8k}p0Ch8-G5#jR;!G+1UjmHfx-eszY-E8|~+woYS?~cU^nMT?KNMv54knb&)G_X>ef8 zokXtcAHspTIeZ^vBA0-@S~D7unMNZ}F(!*-L67|%T$-AkNiV%TSBMHI3u_dNdN<>GatPXg&zV3)sAt{W#E}!1(;+ zx#v>L&V7-GwdEZ_qexnjD4MVlXs;(kZ5M$9t)Y1D~Cms_hKHFxM>iM$U=|&J&K*lPVPnbH660_k$Gr2-Kg8SOSnpeLW&PWyoDqHpu8YG=8JX;` z!v)`czbJ3x_j*Z{vmi9Cy(%+b&2YzEo)gkhUgaGH0YzJjI*Z>*(F(@j4fl3B3Yd$x zo)^FKn&q04uPw2L2~!D0uA*UOO_KpY>S{WOQ|C{o;qj5wx4l0YgVC{3;GHnr=?KC| zhFVN;+-p!wD4{LZ*kT-ty1C&k{^xOw-~1`s;&0bOrPHp3uC37eUQ9-(*+T-Xg9rA< zxx~I^hMGOS`syp`um0+<(tF?g?g-zi&xCE_wIHsVa7P+m;X@#Uv3}^aHU|5ShJbIqtjTNP6_hJ?Zj^6Jbr9HN~cROMvfDl3x6u7d>fr- zm9_=~z_7RgCKW5|dJcJ@d6oEZf1%@V>~4cxFDY9cb8@XRuBs?6b%`zd{Mxh)y) z)-s7Q6egqitgPU-pmVUHSr-=x*~-`pC!NM486WkxApFtPYy|C2-7HdiovInPC440s z%_l(wqI(`XobG@0(ex*u`+R!kU7}S(}#(fIIc;RS~$&CT3mD7149@;?-ldi>$k$O#X#H&qxd%Vq2Q)PdkJ_EK0^5+b&%Ll9qY{0 ze%1}qNwI{a%P1mENF|hjxF4`J#q&br-5{{w(L4FZSZA$69|kDcUC_GRzj7qqJnamrz%-mf@&WQWj(Vux$US zE?++?Jul$9egh{-(`B*wv3bXg<7=(VD9g+AgSG@YY8jR5w#8?aI_j%*yB-%A8y zu6HuQF^<4Y38l{|*;I-f39?`!cnXt-)pY#S@dy>UkFc9O#fN)5H%mBI!%9j-IzB59 zXvURq!gxF+%Y?aH8?W^yterVr8;4zi4I>%^qrx6-SWepq`^n7vGRg4Hrw1Q+ zC>?$E4E_&0)4+D4(ad4qF@eToHSHQ03GlI=B5S-&csI0YxNLGAW zSMY*nEDW={3_O>YAmTJ5(o=wS$)sq#eQh}2_K`5Gjih(fOX9dW_Nf}ph9K-qIKbD{ zLo`BsD*#!AShWpmVDtkqZ-Ix5lM;0EO(^|$uDSk&5RGA#7!@~UNi;`vU#u+=QHyt- zW8zZWrw;Qxc<$JTi4KvWEQx@wIZQ?;k`N-k2;*H z$EHVlhd!5Kcp+6VTe#~ynud~1Y>=61EXT^2l9q*=E( z)+C8O!jS0C6tfC|yRX&aRIi5Jz3nRfTf|>t2aM9{AkN~_Kgt8*0O!OTKGlc)DaPFE zt|JcQo9!7s@=iRq7>IY`s8zLDM17+}ge{P^Sd5D2{VisznhWmTg~Z9gWj8;4AG+ZF zjbhsvYS$IEyC5@;JO z13}lp!F<>*cDl9S|6pA_?qN9|5`5yX(ndEd;VMCbp?g$RFw$|IOZgD?l{1J6`za3F z7NaOFVFQ14Y&bpjgQsE+#rUwfPL5Be!-Tr*AR@@2eFuZ+a5e>zNg2+)moOg~!CqaP z_7)sEwWl|NjMWKe_bcauo2=z(6RjPveb83AL_IR~Zjd@6c6N7gUZ0L0Jr>vPPZ{$U z%~bXuI1o0)YAIlIDt&ure-(44x);SYzl(DNLr63_kY4j#;YLVPg)igjBv|A*$3WOG zYT5!3svUGoTVs0V^_TD^fbh~RrC~MAK=eR?AYEsyA$l|ZL#QI+wY)kA(M8JQ=|Ety z)-hab6X*Po!w5SPMtKg>Oxhu?x=zX%$k<3cO%QeH6y_i@4vx2)-M|lsKSR2nhM3px z{m7vM5TKf?7>bohISFYmZRsSk&m8681whjw(rd}UJTjST2*cS>Zb-ZP2h-_SPvBHs zM-sSh-fsbyUIz^LfUr)KA?P&IG0U~<{VAg3bmH&O;Rh-4U3c9Tcqfj|6Asict#z&o z!WE)-g$}z$w4lx@L6FZvaGs;htFx2o!MpBE{o8xf?B&I9Y_5U8E0^Xl5u1cDpp8xf z7#DH6r@Jl94bLGJ$5wyW067+h&^XNCa7{L1Z28;R(^gg>beSXKf6SLsV`>CWbr6lN zc_tZ~n_l9R`_$9~)4)el+we(%@o=u@Jxt*lf;Hf6E)X?%3(Ua=Gy_>n1S1(tBjZII zF&Y8~SQ~+~W9WG>n82YHX3}U-ffO*Os8ym*dG7;PD(i7*6QSC`3|(&+fA-xdXFk=_ zC(t7L;`|qp%CyD25HdD3M7OHJyh#(JFw3G0nWuSv0|J-|GA-LU;?~MOaVPrbn%}xp z7@<+1u94GM$l~ofM_piKJwM`AuDhx>j?Q6oEY8n5RvgI%rYtf99X>W;qAg-(>#)jH}Z%t|^bgT*Z z=1*ga2IFZm!x~^;qZt?LpAP(K8S^Q|qy_(zojV5!ojU^adIB6=hEc$=TP+2kUO=m* zuaFuWbGhixvVhrI*N*OVnH(g;m?xfrR(bCu@55vct(W^DaC4o7{{%10*v*V)jNr{; z2)RX@Z|o@Me)ZF_UsPYXNzb<3;GFpfmz71)WnKoUD@+N79&Bb6?Mo_mu z_0&@psaYmme5Sp<1IN2=)QJ5^e%NRvM%e(|U|e)Ja{Ip!INgMmNJ@ABG8W8VTmzN7 zIp*L0{`Uh;M>64#%pmGp13!^>}QYqQ7Sae--xV9aP3>Rd|HD&qS=ROzAh%hk8m#X=H@~Ka! zU;C9`O?P4PVYzP55}P&rx<_!^Pl@uqVEu* zk#g!Ijqb+Y-8#QFZq)vc4`W@ND-cmoQsK^mSX67|#|TTtg|9_QJ2gKEzRwV1@`vfj zJ%^EO6UQGLYVjwSImSontL79kmHw0P3=>fuDX7A^t8`VyBAAs5sEhf$KDTY3^E~6K z&q}l^Wi@N>^z@}zOaI^xen0Klu`RL|E73i8a9?`z$?v2mp7=YYwGRYyti)ZZ?I@Xz zWrEt;J0nMhIKD*I<|*QvHZ?Y<=YRZsv}Sw%jx;ndM5G=Zl$qcC{o8_&e)7BDO${qu zfoJ*xjKdh;dFNsL9eTo{dI$lKLLdbUCc4W6HBw}VGvwjGvJreoi^*Q0zn$ck#CR9& z(d5d^z<=?Vf06#j|L(sJ!n_QAnn10C?^T_`Av)FdNKl(FPJj+!zBLDo_Z&KycJJSt z9(>>ZF&^f=XokWqN$v4gFy0OU?PgFy!+`ib+GyR&5Z|+mtwi@+Bg7?)xO>}d8E0;; z$-LQOeGuHw98>$(g2S+;N%h#NxnDWwi?z@E7S2hT1{)=#uXJCggcX#!viX>}BW}p# z2op6n)D-1c?|oU*VL9}uYzSc5P(pCQ_ad4v>s5;&eAK2$+`7LSacdUmU_;SH9kfT0 zV7=x~z(U5?#DBJNiS^1nCi9panRIZ0a;C}iaQ@ucG)`n9qdMsiQ?oh^!EbYGz$Zf4 z@_L~pgmp^Vj9Sgz~h zBxR^IGf05frDtZSM_}$hFr9QgwBP z_~nqP;7hHJQB4!(nrEe7HpJa}(M)18n?PC|0Y#w0-^6XE356vg{) z9K{A()ai3Bs($B#g*Ya>6DTtmE^6M7#f?qV14mCKlYSv&>Bggi& z+I5j;MCOeYdM&fCNL7797Ac3V%oEk<6F_WAb4)x(jA5Qn) zb0jr$e(DUSS*$7ccNw_PGiPe({{rg{;v`^6o55+FUu$93wha!ZN8j__w2h3|Q&Xcs zfY&0?HiC|sqszd@c~sJjNnaMmUB_I9U*i`irA^?bm4L+dDp~^9lE8EE8hkSHQWsH>6!E+W_V`q01Wd?s8^|{>}Gz; zyo#gUL}aQ#TixA<&k790WL*>2I%14xk^0ZVBzB_3o1G)l7Gv0q-$_0A)#g|-NopJ) zD+FlW_!G?&R#@wVdT5ARLf#rWc^>wdpek1Yn`ojP)FQ@dTb^MXm-YbKe5 zg-6(Eg53TNHL+`5ae(i>SADp#xN$l?l%hDfw72w{M5Y8yEWRuTh6s!a$FoYPWGZ~l zN#>&M?DW19D;CGfM0Atp@-2JZ=t7cVBN!Nn_@CkRb^@llEg9xng6aYu`92sYnFazJ zvc5wIvDr7X@QW`>cho%jUJzz3kT?0bNu(SPX(7WP(bdc*s-#QCO55)+mtk&bcP^nJG2`4YroX0zX2vbUI2gyC zn=m8TDZ@Yr(_qRKKXT|`XjWPo5gj(I!?Dr!*m~w53MCrUipcaiwljpmoFxj4Wy!$D z7+2aJg}%w3V(wNyQjIUw*MHvUo3-W5t`+zEjt___+{Mr0TJhVllgTS%wxUT}NM<4U zbyhxo{!}`1;cVJ_U@xX04Uv6X(+A7Z?83u!&2e&)N?dv3gt+x(}0@(lhASJV4{>G4>nM=@E_|6vKq@z=lc^@s?y6DCKe z<|X)oR(1VLNITx($wErQXJs8fbP?qHelqe_vpPl<$~WD&$D1hI^} zJi3Q={UPb5PWQhu@3Hj7n8tuXI6C&o`l&nn{>=jqpEX%q5W}=be2~!fJLV023BL;7 zwQ7^Z>CZta{18vrYZ>=diB<8HwZK}0nT&#d8sga`&hIO+o=`qd+H8F^G{16{Y)T2-Wqpe^jX4n&E8qJ(N8rjDiU=~Vsgd1KVA{H7GBSm#|v;|HD zV+YJMZBk3qh(=^V27yl1L+C5i(FAE5+75F(cwI)R43po)7zq#iI!DM~*Tly9Zk*y_ zkb&<`@``l5uLILQGE`HxqY>d~Jr>}1ILzO!=DYp~XUF0fbtqjks)YnD^mW+Y zH!zNlXGne+vpFP@F03}r_9;MOf2zWsUsP*kICk1}^M z`?g0LU^g#KL)>(wS8j)+*u2#&Nws6^O~=8J$;InK13(83^3z+39rZ?1?lw zITmB%SVlNr#?7&isPkRNI=(q~h6;PvTNww*Gsirb0r0`YwbXn3k1+`%qtd=Gsd64k z=<%#LB9rJlr%#`Ph{rMYjzg@U+Ok7>&MigUdkN=lt^KKgTR#rRBgFEb4YRyvh(R@7 zuDzOKw1YGAWGo&T9#5l~xIGNc9KM5yO7ua-qh1{4Tn%$*KKLE@2U8T`KY@**VZ}o= zVw&X1IM`>~T!OIlUL!W{;+k2lwQp~r4NZi+mB^omh+H9h(G*OD;X7*(KwUU@K3zC^ z^#5n?&4TPat^>`ieXm08018WCB}fq5DUu>Znc65)vSmy5xTmd$4%zN#x$WqApMIN& ze(1OEiFs&`+xASiB3hPY*|K&~3&q7;L2$tiQ~{_03RM7V-`DxRllLzaU z58S%<{x|S*+<39DsJ`!w+$~ zGa@|7%^V)lYCHrg0eX70@3TV>xI14n%=M@;RW`spE9W(y8qFn+oJT%w%=@Y__F?sp zp92ngjv5EgK0%Zejb#B}_{Kcn=`7<_@%QtFD>?zfd6$M%KJ-4gKO^sVQGrFN5btyX zv~%&BG!?uEngPJlO1$%%`icF?VT=m&(xP}ls3+@_G~<|Kk5`Nf`lgR6dkW$el-K$n zG|F=ki2$ECeWouRKY2P0Ul>X?`{DD<5i`b4L5H&_eU0obsVH}zfS(A-MDYq5 zB(PZq2A;FwJW(kM&oph!f^+Gqmf!SdCr;nYb29MU%k%{RmEy2y^y zg12pA3?&Bxjb}KBCl!8q=@bf;X@-T3YnB`2-PhTIGF%5OE?}gQ@7a%Pj691ddxjhu zdZ;IoPO|qCZys5v9(d@%)Hl#ic;1e{f%1+TS~;|r!&+?_0Mc$;E|8@wJ_XM5ZyA53 zaz&x{==(b=5DwH!0`=up+>0;&KlvkRIC`ywx?HugYB4aJAPc%VcXkFxp5QWH8NI{{ z@In&~W*`?R;0b(%r;I!^0mwdngEqNmTYk5U!t=)8B<>*o5`&XTV-e(@LZs>2?1iro zBpHhg!Z^)Xy!c#BJ3&(=n7BaYe%MFjHfe{xy4cH5BE*1xN}0ATjATC6=PNE@Mw!B^ zVOi_VaLi+*;wTfYUg1Fpi^W3kiMWcsQ!Zeb0mi-Si~L5M*lwvvyi?nH*$jc`S?Q0z znl^7StkcqyxGZpx`;p5yX8Wjc;Ja2b7pQQxmKG5^8ZZ_vB|KY~cg0Kbo8u6l{Wi!zHdLxFFFK4t{BbYpqBWlrV#U~U`8)+-jefbamO<2r)PJD?4UGJUbHUGmu z{3EiB^k9|43hdA+(}2J=GdGdG_xTUb+73^b$Aulcpvp?41D`w+x{+%n6Ml)?*(0 z;&P5D_^DhyoSIN{ot-4DOx~-PNH1yx9vL@-^Abgcgy9ny#IaL^G7)No z==E=Z|KFq*^4*((Y2?yn4sHWhbi;EcoHwSm6{ZXDh*6Z>ZQFW+mKTh@Cv3!ZNDrJu z7zc0>9XHAT5YI|joL@<=y!;w-X*Jz)@Yb|*PjAKrbG#CveE|>J0+wX+i~aB?Po-lo zyp(ELBN{2+X?8c-ta9D}LT%^^2;E&+z?Xpk9HB60v69!~v1{ZsaLdS}73@55JD&pq zO(0lg~!G}WhBii!i#pps0FynE`muQEM^v5z9J zN3p&H?(jOg&Qf=-lU{K@Iw>uPdzC+g@%)VQ(K;;7uauP@b6+x#cK#RjJ1^zidOL$g z)FiAm1X<^lbOw-tiGuz5MHiwdV{mGaMiFHL;g~k{aOpX1U^Dz-P6NL(GMXl?j;6sT zQu*T9D1(=bGkMpWqO^2I#pQFF<2tU8>@YkSRP@ zO>tmfbtt%>y@Bd8Q%S0hzif9><*27|fkS?6KS(vm-E)pAsG@r{0h5}anUiupg2%ke> zlVD5r7mIY%$s<{~%|zzHQB6HElbj;bS?|JwP*@_wTrzI2|H*_(>--ps5cNcFN`jpW zLa~Sz;T5r{aX%Kq7-P21yc3bf1SyS$p0Brm!w36W>gx^nOJ9l!b^W(okBJy00-zWXBGySv}IfXWYz)8XwEt^UaU8or`+3J)?L)^SXD%XZ9G$YcB4gl{XXM$ zLE;g~g{$FVvR2LTJ6Kt?tRL6&xO!uLpT(6+|PrG2jBHi zS*(^k0!-~k?!Dg)XJ9d5q8Md8Pp$1DxONQ)zXcSE*5&{^9|Qc zUtfD8? zQ0nZTi@0;c%q0rZ)~|vT{R9?>R~eRcG+^x*c+OYxz2Hw9#}YU!-N@s}@Yq=9ojwB{H;o4KD) zlVj7I^4t{%gZ=g2d^=6EiME=wtSxQLgsEVJLiwuZV7JjLqv^`U%aNt8clWL|abYlR zqR(5+`423r$spx{XcMz+1V`cVlF&5h!(y&-5dX0$*a6a^lTY zp%r)loR7h(z-y)t*PtMTc;``QNqW3qpMA6ruXQ>OdQdIKm}n0 zi-+i+*dZn;V351XxM<9-+aKFiIEbO}2kM27aF0QnG{ZyQDl6*J-hH>m=JO#=GoPNq zTSS>TGAGF=Yl%ScgzN^CM-{Ehqhn!Yy@KJRz6IPhw5DTk9ZQ#|kEH5N?dfx$|2(ZM z;`tiI@Uf7#Y~Gs2P%Oq!WM6sZWx`3HPoMehlj)8_w+Gx7=EzD%#6!N4&1u4r)BNAU0UKRSXh1Pp+s)}lulrsC`3QMGmh!t2Fg<|sZ zNr9^9gLS*mY-A>dauUJ@Ov5q?2sd95W6k|SAdTNCY<(LSuYzI9Ol5>w5TrlBG;_Zl z|Jz;H`;~t!zTaGSeVF_Z?a_{d+&IB}w&+Vd??a{Wdp~Em$m7*wC!EBERtzm3Kd0-%uX7DQ^1Co{jL5c-H5+F9X`WD`(It@L_$$=b~+`Gnt-T?1X8Ci*HY*|NTTr-cvIEAflVy#vRr^bMbH2Yi7yJPYJ z{)V9LVw~{=ETK>DJC_34e6znc6maA@aptR-2L%kmvggBp&npy_(io&?Q_^Z}wx4bS zbiaXZTCeZEBHPE?(0;&eL%a4#SSXk~wqkx!NsJ}Rm+F-!y_x?y07DG2r81Y3K1ecv zWm4s#5Q?p;oCVW&fhJ7!Vrh|#LztqT%x@H??T6ztla%#}lc0?fuPES~1)@v~#kh*` zJ4Ejl_x=7(SJZh^fwy}$i~^Pm_+(f(teY=k6vL%l(O>6|*Tz2jT{wBq-#7jib4C6T zutP~yKwwP5UF)MBzJgwbPc>PWCKkujHLR~c`teh2Mm|JVncCP}ps=FyAivdn6}*Rb z^)NV!pxyN`K}Y-xqfoSFoAM9%xx#OZOxkBY`H!~carWJQ$hWP^@G3)-+{@C}-_OBt z4|9NBH(sV0vUXjHJq{jv+B%isQu z-%R`V>`PnPI+)X>WHucw!goFUJL=invV3R7WXll<@CbezQmakJ5y&HrxkZ}5vF$+3dD5k>pPR~@4go}62s4a z2YE&f?QQMZl0NzPq<=i8 z(8UsaH>UASFHKC7UUzr8G|`{lIPxa@hxVpldE`N8tCe*Hui42n>F9~m>DtAC@K}8I zGryYpp%2fw*u15aq!R6NoiQRhS z!H4n8Vc3G!H8>PTU>Sls2#;o*IhUzKj9#JAaCC zM_>NVulYu{tO*->mH)59uXx1gi}tKVPM?!bAp;``8V;)i#B|D<+gKKzXtu`Lv_=*7hoUa73TWus|>|~OWd>HH@|LfZ5`f4AAwW!xdiVF=fDz=<`Kj_>MwBMyLk4B1)XwQ8L23~ z3nv#Vi`bt`XTmg>&NPxgD_m$TvkxkF5vR_*nD5Y}v}1er+p8E~eBqD36)*1`J10JkCfi?IAeYSFO|fY zGdz=Fmpu`FrsGkiaIh($o8Elu^>pIoan2;@h;X+XcrxYWETPQ!fc*;mXh7mSulPqf z+bpJ?_iQ8cVR>=!(i@yZVEj#GNMnP24mzhw1tRN}2eh=dBv13bil^bs*)yR?>>#D7 z;TPiD@VqI)o6PyI!fzr3Wr4bJ%@$~PEREEJQWRc zwKesmS?)wx;?(R(Hf5vtTpk)`&XVP?rU8!wX-3KZLx2zc#G47Cma*tB6Hc{^M_`5b zpb797IAa}TB810DZ-sM5yejzXfe@``Ka(m#VF;x`#li22q0j>NBF5i)rLwDQDzti= z_2^5N@JqtIDt!SnWm>%s-gh5@@QpgHqjWik@|EB7I+A%n%rE*^Z8kODefi`PN}ZeM zm+9LQ{i0{|ui*X83;GL98d9n8#|_OYe<}~McX^I$PiI#*8NIIJ%^XY@2EnEKun@>i zb-jQlrUz(>d(*59(yH^WrMZbPUA>%Tv7c+63`U+00u@42OXeq7!=#}>yjV-nrL$1u zV0h#KpC_ryJ(XQN_;8jzGZ?PafjNx^-1$uOIzK6^C zjPp@UI7gk!RJQ&vK1-}#ysz`DeCK`h_w7x|@0;QM(+$MAo9QhtL^2i$qgWt<`7jYB zln_jqB$5+LNlc)ENW;p?qTzQfjapos#DxH8d4CH*o%&3ZMm5~a3!TiY5O8FYG9>A= zAmAu_)37CS7pf3!=(pv)R|pK@zAM#X|D9m5&{4*|#62d7f?Nn&E`t8XGx6?cUd1G_ z{(A!#3S7tTWj)bH+AiRh@52}Af4*lw6#`}0T6~@OzI;YYnfo{L_o$RV zSpdoJfd^NEqC-U?-mPnymocw_Uw_LTiav@9VG;d^zUIMrzpz|cwTr#&Snm3Z7Wp1A z@ZerR*>7QPwj71lS{8x)9YLKkZtSw|EX2wXSr8;fo|R4_1O*zhUb`8}DP=5Cgrf-y zX(ZEMrrQ`j@G69F+jzGt6wg>7GQ6`AoSCqF2?2~wNSj2<#Mo4Dyb1-te%nuJ$+73( z;w={Os3%|#>{taY7D<^{Nh-yZ!ZCO_Q-h9QFZ@L+Cn0jr~`CBaBHx=Xek}$ohK1iht)=tPkQOaL+yF$G!L6m-gSXpVXIiaj=^-=QA3kJWt2aPVr?rO|vI;5%;Zk zYGQOe^`GufjkS&G!ykGu{cr#F-^Iq|6?YROVOQ07K;3L?yuV7Q%HZGy;>|ZRb~6dN z4tT~0hqz&}Z9}n8Fc#Hycq`}`#*d@v>tFwi2%GxC7rv0b{q66@X8tZtvX;_>-4&7* zsPt$lcN4Gs6BJfwfjz^Z{)se5AG;A;%O}XD101DUGLs?%dUzhGKc_f6ZDuL$Id})B z4!1-Y-=?Km;`LuwluRG_@PjB?SLvsFGT1b`$aw|Qka)o=9wAJD1LvDOoiBcXE<(Ac zx0cPni8FquW(vi-{EPxo#%G+Tjz6zS{w7c6c?d$fcD{KExcg+BPYTj8&j__rU*Lb< z+-&vU;5loQMsoVN|c@4?W zdl;qTvFQ0YCY|3u~%RbnwjC?Js-Jc zPdEIM3`-scM<41~&*n-YSf*Ruf%4Y{P7mN!J$~#Y3IZA*xOn-cSJO3cy1jRA+5*4r zVo%p1X@Vd9$fIoFJ_;znAs(P5=(4GvtV*0Sv9{u2h}lafOeqq)(8C&4kn7p|Bi%cH z^qd>|sTbEZFn9@Y%Y04z=*4LZLe$WyA2R%q@firH2r1#nNcRBoq0ZOdJ^?n?DF}8PlR{(PoOK`Cul!(C33Xw8D ze^X0ef-s$^Apps!AW((0 zcX6MDy&F1 z_NN5Rz_ZLV7Bb3aTDPCPxG!vcMwodJTIAlwsw7>@D}`aSS)za8ubQQVo5Ey?#mmpZgLse4f>`K)7_dUY;)GetR3hxma)PL* zVGFl8;;QYN`0~nQaLnSFQPba;B^DO&T-DIU&Ye5s^_#!>TTv$FjP7Uwz$Kk|4>FH? z#r>Ek(59EC73*;^HXh`M)nA-sBZ2eKY))DMQP7aV{0_GH2h9PqWh{K=e0LsWe~V`+M(i?Kc~&{h zE7E?F<}uO{LPu`4q${z90-RZs)^P?!rS#{mym2D~ua@61*(ePCbNLKfGLu?n2P6L4Y3Tw@MX!aP5iGP<3P@19>8llbNM6c?%d|-YGa1@CpwAf{u7uf<_9# zj{?yjQ&tLk@w5iKgTGt4^x1hR^-2eh|4zB2%vv!#^2{_cSk(pGdQwWJ} zMBduFB|Z1rbLqbQ_oupMHotPZwrCAQPM|lRXkA~!-l&-ovV`@e|MJKGH9hv&T3m{41 z-}$2FM8RCXR7N@1)-t^f(1x>6?}B@jG)Q;=9aafWY33bVmNR$F?8NaR;Eh_ueF&_X z&e!Ole3Kp^oKsJ{(?^Sg=PEP-4UA-yjmwjoZQp$-&dJ$I6kO)33Y#fT#hI^i4h%Gv zt@}BGAG(%{OX>`R6XU9MgEE9^a$ZDjc*p+b=YJDV!Wi{)py~J!uz+`>NVICL zk~xbB!j?QRv4%td-P^XOM)>==zW#Lf^y##7M{lY|fmy2tAB<5s$*wc07z2G}x(XA+ z`24Kg;3jLhT)J@nRNB2~TbdnRNw2>7TKecCkAh#4!jQDWb4KE#3uTJOj1?I6!rcVf;gXDC{~V{6@Af+GaQ`2A)KOM$Z(u79{EjNM-$oVD8cJuZF@#y}Y_Lq=><7-|8rz8Ht?(4T07XG8F(Wy^aR zav;9665D06vp1*&Y|=f;LNc^Q|1~X*+pL&|e8w_EY+CT)u=&gv#){igM7MeFV-5`cWTk zMp?>)phQ0$V`2TZPTSEM?RZQRDa;IyvJc+#-LXa18tIyUIi((J9``L{J+`0emlAx= zt74|hnu+MQ6Qx{bs!o#$&(|Jrh zAT2vq$0NTGhFaXMD-^?AyQP5fe3Hf>6548Ai~ITPbbaH^?&}S|D1Mg-Ijj;OTU{w ziAA{*31^B>C{KT`046FY3c>Q9>8YuxTbiEaTohyB{j9;F3X7}OYUg=ung$aJsHaaK zPcOavV!DmZ+iu{NW(=J=bjKk)3S?$eLB%@k`3b-KdtXX-+9C(2DXR^>)gb2jUh1;3ZrfGdx5Q|(=M-;>(eJ28jA z+q-86r%w~}PTyu{vzJ2;$sFN1u8S2a5mGPzp=90^{GnfQ>I*zDsKAF@QS>kX36+wT zb&kzMI$GW8r3Qd4u?`z=N~O^Qs7j7lqJj-|!O2H}YHn zAJPr17pf-=v10G2HX?yc>BWqBH9Q7e5@tX*bBY9_J6 z)O5~JY5%8I>Ig>~PLs@``Et%3p)VQ{hDg7A>%rU7y${@%PWGKm=lc88=~E{#sIm8^ zr9OS~9(;w&)8+*s$|K*JGB5pfA?${H=;c^alO7LOWb3>Ews3Xp4<^pm|&)L44d zDujL1&HMW2>$T@L-s6A8#s}BCKtMv1E}$jnVK8<*IQNL?3*Fwmw&y2#3 za@kgJnE1w@Qs-<}Vb1y^R-GSQT%8PF!QfmOy(nvWU-@~;`1zmVvKiYA0ay6(QYi7e zW1eRdo|ltUI4Urh_R<{p(cQ4BT<_@BQl>3tT!s!~F9TLGZ3P_}sW4DcQ|K`i zK*3aaTJI+D!iNxg6kP3_KX6&E!n1->@m*X=1Mv)XP)i7AbQ3&BOPdb~&L3@5SC81aDz6?)> zs*IhLUq=<*Ebfo8A7f4{EmzPART%msyzOTYD-XDUIv>0;Ub0|o9&h{YSbg3xnYOf+ zgFN-)=vxX?RIF>rR zG`g)l5KdUw*Glet1+{0Aj|F&=cvekGZ5V$0?j*PSDm;NYzQ_Cg5ib1G z`Yaq&9tzJYk7pX9S_Mo<*BgP#@c4>W=7R8bU2&|^FN{9gc3#aBk|CX6V_tcHoVe@Y z6ltq6@BI?{dFrvmZ-VyEo;j2D@7|LhxaaVV@PT5-aYV+e88fEmKIkkFecy)sm2n$T1k3Vyb8Uf>-;HRgF4u$ zdnKBh>Iq*VWQ_V+*vLJIC*#ENBz^>py61^&ydgQohe$3wEV z#yrF`B%cxIzM7!1JJ|Qo0l%HcBh|!4c$EnG>G1Fs&IP%UZa=s`*5W3@s#fR6(zQuE zA!PnCye;-50Pk5g+IMwzq+t~5MdnBi9uGsQg1^vb6?5le4wcmKB)$cz5HDTabp4Pn za(Rp@jM@2USfp9dgvFMQ?)WS}vb=aL4-ZwY$9iuLVTybHY(IQ2;m42fwd(@~;_rzu ziBID4-Nh2>3j$C$RH$*$)EcDVFQIv&VGWCjVJ2QK{0fmy7$>Vjo&rfD6L5?}o)kKz zVFe8dEDL@z2&_Sr)$(eAmgeSEi)%eET=WSBV}C*jg$0Gc1`{Y2pO_f5Z+(STLm||` zsKtA5me1NR-<=>{G1(Z0SJV+R%Lx`AGU3Os|MULjzGuP0{&@KwV_}Rk7KIF9(*)CT z1FWGgT2Z_gOoH;(qhRe=#h1+81zF+Ow3e;JREk3_dNR`(p)hqJ1x5#v8hA{=(@+Li9)aJI16 zOGd7;8!x`jBk;sVRFn_BH;&Ix9_QXIx7-p!wR=#6pO#gHs=zPLLK=}}#JwwFnPoBa zePCc9kCD&9Wre={qL(le-r`(qzupq9)P^t#=kQ9F=IhOEs01jad)W`+>@ylBtW)do z^Q27lkgRUf!1ng`hSI9guA*n!PoFn`JR(rgsBm@QDotJrK4w}Oxq2m?KX)$XnyGT7 zx%SSEsLxDN3fFM~GnI++0~fG9lg<;oIe&zuJkyQ(XZ!oGM4k@8cHh2zoN2I`0pI~7 zyO1F+3i6&ia_Qm#;RXFDY$hC7=1hcbY5$)6qzvsyP0$LmTL|(B+-@?R8AB;Wurwq` z9A3F{F%4We51nkKPqV<{=LpY>X&d!a6C0)Sut4S^H+wSBEHD5Ieu;6rZ$tx*!n5>Q zy;7Cx>8Et&rr_`-fIn$FJYBRYKE369lb0_eK=Cc;j@$9>AGwiq@0wy+KWoXB4?B;| ze&oEDPUU6PfUr-#dtftxV$nrbr8W-FdUo()`t)NTW6#4wsbf=Hnqd=iE!Nvcj8KMt zpbKK%#WTanz*8LBrn0WFV1+XhOb_fnELIwL062v9Cn>Xv;@rl`&??K7712sqv{ac5M~q=oF!4bDWUfp0>eXc5L0u;c#=2ezq1( zp}E;Z6J6gzM2|2yS93%{{%Lqap+w0O+WC?X88XNnm&yor;}`f?lmS>-;Z-Sz7l4n< z>ovY)-hdvP0YWav7t8V2 zjnQ-uMTq*H)7;G-Nfi(Y%Q~|Bppu~%L%NbLVWNpz49}6Cq)&OOeO{&iTJ|F|7zPUW z!_<*l*Yh1-d*gWOJ2#a!clM_aHba}jRhY^b4A&dutdXk9{pj5&o;0>J$D9D4Gw|g# zya07wZP3ja9*p+bxIZv>A>DJ=hk{2$Um441$h>sv+(~GVL*p3k4CgLfW_}-g>rFfp zr^wFr<+L3yQ)PKwYN{zuXD(dk#o0uJm@Pn$HDnj7gHGIAb9smiQSd3F5n9{Y(%`@# zzcr+ec9d-3k#Pgz$Gpt&Tt|o>1iEj)MDM<^GFiY9iZxn4YwSWO&lPpxoPQRNxFx}l zBH)w(xPq$LF5Yyqo|EdJ4Ga3U{IKyTWWtVCqmX^@=gda(FJj2mATw zCH0tmv@e5`ll$(0Fhf`tgqi)epE6Jxufk~?jKbHRJ$pj2D#op#bnNKSESxhSh36I) zR!?x%{cYW`xKo#7);cqe;&2XO=;FnT0Y8YZDkCrDaxx{?hH?t`T zYcJut8No+bgzxA;;5>g4j-fy> zENUDF)75fysN01=`G2$6r65UVZh|$YdqHT`Zlm3SI{e97y~2 z?oA(l_~G=Sd+&q6Qw8MATfF-E&ZZyy=!faqXP=F6xG(~_@PvH%%U@29e)OXySY`tP zQ>^r)%D#OsOa1-*>G|iMOQ-wDI>Vwj%tpIeVzk{_hYTT{q}VCJ$Hwq=w1bJ z6e0}c*Lpug=*cAx7yQ}JewJQ)?J!Ey;5v?-FXHI0zV*%Y&_fTUd+)s$3*#M8mx_sp zo&D*b{b}m!KbyxwpQY2g@3|-FSw&98j|A!u+jn#DQ*ok!X*ijC+ zA}2i_2=|MKO_cXpl(K&cpL&^X&Sz}y`qbJgjzi+*k1vNi4CE&rZsj~@2BJCmkCu9cdJqU)RUY7fw7=YlfqBM+CJUt}C0h<-pmEa9#oE405x zdlZC5bN?(>QOVjQ?7^R~wO*^z!(=*L>y7Y4c-l19{dqQN96WS@b2%;}FB}Ok-2#ex z8*|kVCR6^dp|H(O&A{U?q^?%>^5Ic&-6}({uLOQ|cm#1LphWIZ%k?dIBQV@`Zj1FU z3=7Ny=O)--o$5%tckc`V{neLVB=ggS*zdAu@2%;lPd}fYc>M9y*j$g7O79`cGYU#I zp2nHEQ5652eQ9@ZFEYUHP;`e-YTMg8kawnI{Qw*p{@_UEfYAqh4MpOH5YI3N4z3-` z0Mt-J_a(Uxv57FcJMKD^E^$VR`{z1Ph!#k78)0q1gM>f06;q6TqX!~*w)J!Q+k5?z z@;|uV0Rk?7F3=)AhylVVHr3=sISXN0^9|96g&Crf!Rp%dITr|pL(7NI1KlW8`kM=~ zWd{fI!s~afdNLoau9i_aRH$^LvI3?qcn<*@Tpma(TVSp%6!xi%b`;cHa4n~xX4`(Z zZLPwW(8{k}y~f0vj77nI`Md3S`B?!j`i&LXyN+9>B#LlDVOas(vc)8@zuA(OLo9q= zm$*WCj+J&Y!o>JqT+ybLI+1vHI>k8oY`?7A_U(`3xQZ}g7}8bxf06vt!pdi@NAHgo zI5QbV$Pt2;N|qsE#yVHmiV)#K$bwSIcW56K6pq_OS$8 z>(dJ%AcTi_b{vfjoG{Gumh*WJbn;zqiFmh9Zs2yGjQtp+4%<~gzwNez)S=b46qXen zRTS8(+)n-!XbE&#M+gzXbK@mmx=>8co;@3Vw~hi<*KwGwVfNcaMIl(_HQE9P3J=nb zUNgt2k|18ku8l^&_0TD3`P($l?cBaI_lai}K!%|U1^*Lo9!t+X`#ehArGTeE6VF+} zx`v=T$oyM@;kR;n?zW%}1|4;cTpfutoiD%g68M!iw1g7x%J0APJHHcU3Y;n^7?13w zMM{r{-V41R-~Yk)(glRME2CGSoeAi+Di+3!+j!)LKf=oYapkVu@O$yaZU#<)lXQZ+?f8ckAFPq z-OwY;s62Se@BkhJ$NluvKT9vM*o$N7&pBsExHQmrt`9*?4+eY%q2$iH?j*FPp1l8) zp+p=xayW!Yd5X&aEW+g^bUch;r~<9x?OZhr&_!@)J)jYV<#m+BGtART(n+$J7j~dx zZrF$XX#2LE>FDuOA+RrCHN5}cdzcG&9#9}K|8UUMc)D=zRJu5DhE2mGoLlfl%=<-z z*EvEcCWdFyuDxzZ?!l6Z#SvPoWn6P+D?+$X*>>}~f}q||`z1^i{Hhmgu+TEUG&6%2 z1q$gfj5Ps!!iM0ldfG&PHC~Py1a#K|`!1aQEIj2m!rY8HWe9%qCQo)Y)JbJTFND8& zUpz|%t`DBXt57pTnA3fC-NONKgcj*RP};ieP5=Nv07*naRDNYGF`cVMt`O*%gESKR zLo|vlI7Vu^#vE*Bk3^6R9hEQSJrML6kA-J5EG$f<0Ya7ZR5`E2*YNO2@FdI3q3mtz z*&ev{ECuJRSDf0-eh9PQD3psgLq)HQ52t}sXH)-M$5J`tRC#Nzai18puM$Al7K}-U z9z1mM(us3vxoSSuPBq6y)Sh80Xo{rGGiqIb!cwFOx zzrnki-?8$m98dxcH| z*pGp<%~-3(otwCDM+wr-slYdD6s$S<2v0(1nVpo?_Fu&a(-AshSW} zHed^775Zh83ix@2_a;KqYS?Q5Xv4TiH@FYa;hA&r*7JiLUbtsB>qHYY!x=v8bJ8=a za$kwEBaKR_ZFt(oIeonv*lh0JLRPTW;4{LWNk$Q95!#R*UEkzaj@927eZV+m5XNE| z4KJ~#6JEEYcYAu~Cr_sy)^-g@t}Ffq_Mjo?4Y&b9r_}ltbC?^scm9@tw2hmu;)kJDe+*CZQqXsDhp-3nNJvXeR40$ZzgZrf=$29VGJmkbpw{yywD)$b ze3Fhrm`pdql3;YcyVxiUOJiDSq8$pm33YzHJmN|vGKE%!t8LqQBKD4e&k%qlW*3w? zT+gCD+35Z=e~<#Rw$SZ^dTmWT=}M}5C~(C zj)Ms+hmF*BrO6YM$vUVvPp9h>%X+I|*7i{W`N)wYq4?NOg;1He@U?F)5Wd{B+221A z3dV=AdTQMkwpz*!=W%a}--WxMUC^}}suT%h@7r&M83pcX7T+QaO@TqUjd8-J8x;*D zvVGwq99-yC%&cFlofdOLEqZ!-))feaD+L4bZ+~sj@!7VQ^{)$rfYjf7*^Zax9Q%yc z8ep!qQ2|c)_^dC-YJUuM@Hws5hHqR#>9T)@rf6Z-QYtL9`m8CDa%qv_FYmF2#JhhS zqw(kp%(B2jsA+`GwK_T$@5RNKRAi$q;Y5E8T~W~xHulMJn3r38i36>};?cH)77=a~ zo`jFeQYfSJ!8s*7DOSSweEQ38{$={c*T0c2o*xXHG;`{1(4|5rC*oSail^4>qsNZL zz`pdQ-;J<07gE{2g1&unPE6vGq zNk791KZ6BZ8rPj}=iQTIe5@%PBU4g_&_DQZo@03qig(vJ*37@x<+E8}a_D)pr1+9| zjE_zbQ%;O9I4TxMm2SgVp2eGTrtfTe@#UA;pn7-UPX)k#VoD46kAL!$^w;0|>zJEC zdnkXiJS!Z7BY-Dq%n&I(b8o%%X8Pa%{l5`k`pQ@SJBp;1euOZ_CVpzLaLyxaxsW&ESzJc2A4HKnbG8qm<6Qa_3Q${n zQ`*zJ1Dtx;;bc1c<_qbCpZ^%I=2bin3+d>Qm(yJ+8Dm$62*)72b8Ixd^lW*0WYZ^7 z9rSsozdzk}`|XkK$&--7V~Maf3O_JkJz?DuLMLq8tnGNDMd`}DR8v@Oh1~*zy@n>k zDdhcg%*{H^F=%c^F$|1CY0fw1YVZr-tXHKO8WpaFGwB_bhZsI&=-6$y-3AlKdjOxW zX1?$2-NpU}a@LbNQvvtMC!PS;qj88FqGGfnd`{MK9I+?NLQ?ijXo86|iW1!CW= zw=jmR#AWZp62G_O#V{ndF`YkmI#P1pvVUi~<-je#V}iBjB=yy#hd%sp`hULi)%5GX zzBxinof9g25q7E9g)59+v@M@=j=k`=f1959!H?6-@YS@tqct63Lv$M_5Z91(%uGgb zE9irespTo^X=d%~O4INjPtbmd%ubQjhK8v(3?D8A~mI} zvFp-cB^h*74y)mZdT>`mAZ3l``=*+J>hC0&UqExHoEkk>TH?F{28xWpbJK9n!R`~k17KG%6G(%P_ zPxf9z!e7ukhN3FXC;+SE_+GS8=2(D_f-Egk7W_sCmawI$QnH&Mpp`WQZ?lvsx71c5 z^g{=Fw<2VR@s>f`D$5lW7*i1X@453(YJyImd-^$)xV6-Xkl##pq#;g@mQH2gW$?_Y z>G?E{B0YsCDHJx~?1ueLUMkHs2=Z%nEsVwWN&~COKJYqCa+);B3YJhPb&{xzA3TJm z|KcUQjmPmYaN2eKrqp--G9IR$w3!gY&hDLQY!0eH=~+anoP!5+wr_?8$Jz6T?muM@uN zTf&h)F~?m;Zob~;*3CuUGv7Z@AbtTEp;bPoIpT8)93NCP3*i{@977T^59y6bKytEFp3~>7GaGPf|LvECX7*6yP+_? z48?I{wE~IEL8hoz$MJQOr9qhKp>S(&F;)duaU*OLf=yj#{XT0MUkab%&ih)X?Y~|F z`xW@&lYRAmJW~>)RX)5gJY6g;>-e>Z``LEwoBKAr6q3B}Gr^4*x`MX!V)%wMVkn9N zh?fGPLbb|+%At6*J{h@}ZPlQBjg=Hkl?oM}8H9}!(95pgT`c}}(1?;KwTc6)4wPht z$S=auJ{is+jp}uYaqyh&3D-iwlBS}bQv1R{m=v&a9FEhCpZ3M(q(N!A&6sHCfiPw) z*5mzv2L**qC?4eZS1EQeP-!~Xe=hy)^Dhv_!oCxPbS>S|g5D?lu9bb7T=BxkQ-zIF z|LR|Sl`xq5)4u)tBhS3ggisFPLy?8<{1=uf=AZPCVL_ZYV>Wi*{wXAU{p(*(-~R5m z3E4OsZ8=_rY+)lv6{efX9WMO-F_&-<1_h0jX3pQMN@++Ocx5=2#z!TNQTo~0vx9|u zISpPMgzy+AbIQ%(8aJ55Px;k#PF)Po4_p>GYYrPazvX$|AhZJtuC+ zG(_(LVGSZ%kHc$6UQ1v5`qvOBe?2U;NO{1V&CtwUVdf!X&bj86=1_#4A9^9YH@A#O zggP2(o3M(rCk7!#;mJKR-J7~nM<)guP&I`0TN+T%Hha<(-h`*0eVW0~r~mjL{tswi zF&#g81VQMjG>GtP{I)`@V;VY7y2lg8IR9aS%tR=aYY5^f15LoA30j9pqnv_>!dCPb z!A}KUPk?g)w!(L;ul&A1TN)EoAPgH->D2nKVyaLn&yqH4H?!{s7&-r(2hNdipcwDp zw-3wj_P~b(r6SDa52Mh)Al6u5tJQhi)*h_GY#Md`W9ikf@G|q_E(EYofAUk2ktmVr zQV)b4lHhgp!SzA~+E5LJ(rNlBJvh%@I|c_YrpG?@N%kj@Ov1X6kml#{v^z-pKh6PQ z-~H|n(i5M4jF8&)7|W$g7l6O?O6D!{{C9HlbSE34ZNqtED4eHO%fp=0=KI$ZQ_(=Y zJ$ym$RyBN6PNs#ohw!J>nejBoCf?BzHj6Jo&nh&~j;9zKLfOGd*}Z!Rl|tdrB(jJC z(NcjSMPeqrgnho$4KHr!0QSt$(m&V8GDDc4l~9Wrmwe1Ms#4_xi(C!fGSdKG?Y|m) z<{AdTdEmq#5Xh;YG5Df8qK0)EdSKq`#dBO54qPug39C~kFj7J9M2(&XaBVmg`<6rb zaE&pGR3qnW-1VXRQV$AmEvIm!sig8aG>vrLY*bG5h;HD*e%b};YMOTCdD6XW?iyi4 zAREO6ex$O-yZuweSXxC9p&U_6+><6%oG4;>=tq9x!FvtPN%qQ^zPqKVp2OV^rmM&< zb13jjY*L?}A$bN5Du0jwDU`=m1pgL7jNBzOYo8crBXEEJinZ_Hub=Fh}Hmq&N0t3QHk*Izh|EQdAj4!o#~A?-b{m+M$(}Rx1~*;ZSe6! zc&*0ZU-DhoxcRiD3nL+llP6qPl;N#otSSl8wXl+JgeONj=D%~_f35?z%dO1o>>)SI zIA{U~aSnyBC$5%t-Oc<DehpESq76pR-{{GAmD67CH z^H=!X)wL_yGwj8e}mbA|OQ<_!<=+f;m3 z33FV+v;jrP#aBFgFwuD|ObV$gCn|dL^kLured&u|{9?4}o|Nx>?|adv@RF{t5U%v< ztFMHxXS}Vn63Q9l3MqiLr8`5b>?2>}Ng<^2DDEz>>Gs)YpG)8Q&UXk|x)6%IimVpl zJ^S{geYfmSdwKtp|N18ZJHu15oyxj?u`9aq3p^@53Z+LO-B<-T$!ewFx_N8b)4M1A zFPwj&*TnI-AIrT)^(>HpE3Dl=|M}DDU;K;T4sU_DP(Xj`CqE9w$=GFSK^*VdyC?QK z+;{(d#GNm&f%b6vZ~yJTNBEKSFgabuez7;wr=NH{`s8wqJd*`TX#n9?&)t2u-QM}i@ypb*>fK% z5MJi7;Es;3phWzPY(-b_RQ2HnzLciNuBLI)N~#o^9cclN?-*fI=Buwm8FfQ`Ef#N> zM4C`RW!%@Gxi%0lPFELrIY$sU z>d1x^H~|jUMO86RRhm>dR=A;JrAt=DVt+&QpL$)rTCm(}b@$LPEwApm1F0b>stjEQE()i5B04(S)9jEL zt0>DehS0i^zYKv&Ps9?jGmDFca8AeEymaX@W$|ucxt*MxCF9aQj5lm=56Xib`APgsFt5NE;H;%TW%tr zr>#YBwZiy70k|It*y=4%3DKaZC!z+pm~luigds5or8N;Y(-`|7Xa+h}k(r+yAyjUH zy#ffdtiSVwD^;^LmLagK1gz4pH9i>Dv^cev&Mds1&cBK$rxwMB)4f|ax2Ni6JgSQ3 zcz;Y!T#aX<7Oy}fxLCnPX(*dsBE9Vm;1u6tSk1$;M88$m#rZP$Ass?mW*?CJxstv* ze-*M<7oC%=-SP_XJ;jFmWt0hdn99-Zx9*P<%$*BYMo7W}%y=R$9!GJhU>;%+piiF1 zF$Y~uFc)ykrTus^Dy)aLoGXUvwK6t0vrkTqrk?UGctpwM6!H(*zF1G2o5`%zw26>L zcv3@4YA4H=ynbqW2?eVy&7+L61)nv#4m@hG0=9%xwYGM$UY!N6tSfZPEN-^zJ|yR& z@`a(1g%K@O1LinGj`29JUC-o|ASTweCiqP?bnQB#A=bH~ELY#z6gZT){Y{x6=-Ik# zlUK103aIt(e74+s_4+`8_(d=WF*r$AAaZCinC7hq4nVw2B)%KA5QK*SBB5smLIo8! zCuO{6Sdk$e3Z`B%Raa64G_443Zqf>9naBbIu}+Vv?WeFpX;rWdC$5W&8%@nb)S*HG zGt$DNm!rS0KNcp-O2A$U0IgVV4&2Jo>@1oJp-uw(=PNE50snl$iR8e1vyOa^2?A4b zBKVApp_ji}#x{IKeLfIX@W+olQ~Yk-eviw#OZ9up@oPy_5mL}JEKFrY&x{klw|5u9 z_1<_!E1#P#6V$B~1?wMx6@k3UVr) zhSDk23onJZ0!KwX3eomQ*eE1AMxT$fM7SSeVG1o=evUp<*1jkN3PXjWfE)Mqwn?J` zGvEr18;X^^HTj-xI!9dagolEW{Zn~yopru0BUJ6$wJUw%s zg#xi^hy<`N|LITD(}ZKyVZqgs>N7`=A4B*jJccx<1{FV+hS}2@4cdgs`^5m0GrjI=G2uj$#pa;Di zle6RSfq@Wgn`-ggA|yBm4-hu<>%Z~2v>$%9Kq$ny^Zn@@ykHi=e~oZUg{B!omKJBn z*t5}>E)DeK1s+6D!}^P$v;+@WfW|cX%)$%ImES_hQZ=;aA!Gw*&ctcY3SQODXYSXd zuqs5(GM*}EqJE8&j@Jm?xW@C)jaiFaBOIH?4TU9*HqNnCc6utT`q}*i&KF@UztL+U zPaYh&7}iuhbzb5{Sm~J%M*V$#ku6NmovD!ZqUd3rXCtd;K1^cd_{=9i&DwDQFI!hA zM_2GB=z&x~^<@Z^^99jJJ3Fu=BUeco?1LZK-@Wk7$Sw#!(s-l&+C2O6gbD;Hg}c^G z?dc+WAgZf+;@%h`Ow|a9tHgB8(U(q66_(zdOEXxlRoJxtif{J_gx8yXcpxBLk5sSl zM2rA0{pcs0Ezp*R&yihA9su8WZJdW6&*QlnH^#nfIBnj(H8m*^if6q%hS&nzve^~* z?sQ~vQn?trGK>e~3Zavx{$&m@7RRv6XJNm9mqlS%_!^$1aY-d&0bV1&SwRNI0UAaO z6$d6hV}{R@e%1}zwJ0j$(O3gFV^__G}wA1WVr2nunLaQ(~@|z(( z^@KPr6V|ifdNP4!d+HL-6T)oS*z9KT<}NZHVc8#FKv9F=)U!9G7J;^jcjuX23Fp0d zY9?`m3UI6?CBEQV%WO!CmCg&+UHgG@qtXL805Et3S)wY)7DX|}XI;$8Io2-bu7^&V zy7!LTZ%bzhQCou#PNKwWWHG%jLk;C%1qs~E#ntfZg?ad`Yba$FFj&;19IW6yTB0wJ z+<`gRz@CXkc#(4gGKn?R=m0~VokuGuS}Mxhcl4rEPqVJ&a5%@Xh_W*W9R*#2QTM2X z;Sv1!tTe9kMFSeY20q-YW1rnmW40#wx9j8@eOZ@BfJFe4n!Vh6=(<$F8s`26Q{uJ( zW6QXnR&J&)J_|Ij~Xe<_xJksfdcVv7?c*^K9Yihj2g3P!DRYc ze*CVGbtPtG;dg_b*&qnK#) zOL)jo6~OJkf}X#tU|FxisNZeZ%Sr4asqpCixjEvP2L{tsEDxSOZ2o^25bO8z_MUCQ z*lnX0OH5Nka|o?koBSQtK&d z)!iIQg`ER0ZZxxhli*s#!|YcI3vT*VD9VDbSxIU_D0Yl3C;%>=;>iV6AF{s{vW z0Ov-bM5s*Zc@SRK?SWp>?Id*TslK|@g{KS82=J7qAQbQ+{LTB`986oGY-)NmENfbv zBhFa3u$X8?{_K;##(3Q1PuLm)&YgGOLrT!|q~hdv780e4S6@AnKJ>tc5l9K2YA0h0 z^<$5HD*dZ}^{-Pe zR@94^E>f3P+dOX=37=i0snA6zv^ED9=%Z|W4A@gJ(}zS-`a#-@MTf3hrw32@o1DWw z+efR`_LZsG`c&q1?Q5O$fWJBLoaeRa6nF31L$;*{Xv?KwCEb4L4g}t-?CE$mcvqa9 z&iqy=93dCGVHxi0dF}9PF|TH(IVcXErqx}geEW7zmA&IG+GlYmrg=-xmf)W=2pd7y z(Aw0@B-vAPq5=D247&2PR%`KHU(=8t{qRT9ZToMf?<%C#>3(oHg@y9eu@kWY+n8y? zhfFW|tH1grG3BK7Wvqr>{MKhbmwx*F9};J6T=gh(7+M48rjnNU~_hXOxU(CyL!d#2#Iby%8b`Qn=EUbZ z1h`7*YHnhlc=ee`A6o;RcXw?GLy=y`6=1*2^EFtGD~MOonm*5IzIr|lQFSlEHQ?^P z4#V?aAp_B`{K`j}&zsl(ew$$wW<6+2%$bjV{9`CaoY#QT6UixHql<)yEYBK`)pYC#A)fHcMGZKtL*;l%$`I0> zD9%^+2M{0}bQX#O{8pNi9l&P5M>Ts-z!^MiZh4aZ4(!<>q$kpJN^i5QZ4~xghUzBf z5GOCYwz$E43f|=5ZIjel1rw`>PuEaZ156`4&ds)gH~B5Fm1nKu?WkkU8^+VcK8YGn z>8{0VisyE$4-W`@()oRbl)`o&(!xW;iFE;YI2|B6;&w41d z_8ZRWtGq~CjDPS^=nl{z$9DP_61uBKKQOletTY&Ea z2UPKZ{hB9#11rP7edGP& z_g|*>4-|-Z!A4jtB`^@Kh01dpM5^IO3Rh~;l1V5BXy=!-`Xg*zyf}z3ljBD%W_J%OQb3tIxo|Y+JK4)Dj z4l+@d2FrL)Yl4?yGdV^)k3-?qHm%q3*p`!LBk=~o`*5k>#W)J_okbbz@X~{z0IIOAE7JQa7h2i1ycJe%+fg{ynr%o7 zGdgghE7Y(V+cVt39OTB`D{Nbju4}_F#L)_ioE9V75GIz%Zu{$upn$hlLamB!@Kxv( z)|OW+G(4)DMJmS5f~to>um!^cq1GmgE37Oo9FAQ@YmLPsKBJ69d@c_PM=#x_!a`b; z{>)_L7_87fi#y$_QJ(h1sr}XJuhOW}QNY;Wq$@)MTvY6pG?i6l+GI?YmH8TqrqOrqY>IP9-*5njT{HdGk3ayka{kz2POIz0^mEyia(nU*?Y z&x@N#RZzSP%ko*R?Bf5>?T4^{u@LaIIKT6*yV8$-{1h(mkzAGqM6aFk-G+EIV9m21 zUUV}rTnIDSlEs3nKoP$ZmtNAN0`De-srI%`XrMm6duD}7x1Jr70@!YN3K?2=M+fH{)TS%Lvn=}aY3HtO zsk^g2v%+N)T+Z3l5JXvc%iu3jAr7#Q=dwYnRF%p3yhG8Wc41fqey z{+|RO2T>y02`k+f{7El@n}27q}n#A&A2xm(we+yaasUbDNs+&^#e<0+y0)JE27L zcq6AUZZx2PefHB&q;@ji$T<{#y+1fG5QqBd$&>c<%w)w`#oA;N;&U|n1i5ql18MaUes9=Be<#v*&fw?*2DKR3DzVI){mOHZ z)>aTkp)=`4r57^D>kWGh7V*qXLR)S1BpBJ+oPO{3em_0^-S0}UkwQ~mB#q7DW#KV! zSI)i*5;Gw5T?1E>gxVau^$`1KHl;~MJ~DkF4PO|0i3^#Bt}xs_*W(Qov^1%kw$efT6u!a(< z(g2Ta1aF2`Eo)E&w<;;_e{hp?q?Dy?*Tb?pqY1q`+8u*!6!^qJ_2osyC<&}DM zs-P+N4QW{q4>Ds44z zDW_XdI8=0NH`Rqf^3Honpnzv}9tBuWZq+;?Z?K1EveZ?xFJng+{12QAUBqj$Je#i7 zT}J3{PkRsSh-_iglf%d(?EB#SmB-khu)^VRE3_xP?6V5OEGby!=andb@^OWB*AwYZ zCDp?`AAIORc+Yg&wQDyaqyy>uKm2j}+~+?RO4|j(8x8BW-_9}REBC0G!ArT}-1&24 z0^W|meMYNo2)ZzK7k(GKLfFw;u;xZDIDwN+f>lUxfxpJ0 zqmXMI1x+hBD@e)=?UT>jmM@R*P3N{jj!nx%FmM|~{ zHv6cec76OjY#qJ|7{|M{W;{5KfQ5LaZ5gSTZAaY*-Tp3)gW&>mFJa}SLStWbxdyCC z%-9%V&;L-6vtRZplrID&)42*u=}RW*rO+99_358=8*(CS?1O!=Zz`O&B@Ct00>}QQ z0OWJRRk+xu&-;u@@bp05sA(C0SD6tv;?Hu?R}^w#Ta4X0R1)pG3yC;#(RG}{RF9V4 zmn~RM71PD1^%;iI-rf=ERc*_7;&=njtqu!{l3UxlYU|M(j8;8_1>T+t6I z&#}H)v37jINTpL4DX9BT*y|ybel6p7;UbQOx9=*l$BrEjMLl~Hl|~TU5qO;wUbd-% z>n3+km9{>|CtXTsrvDTihLEVlYjsz6bzv8-F5D{C;#D7=%7vZ?er8jqp&BZ6&T-0X zA*TEi0+nqedcJEJ{p?A}XDg)O5^94Mn&f)DlwufRD z2V%iT#Ib9TI5lL)x$Ay2_wzU(^=M83%Lp^%H^V~2U-0DW=Ga7SYR+X8x~VDmfFZh< zo6!t>ffHX_wse9t5hr~q_~)b`&dS5tJwJbPWK%an@74$7ReVr0-OR zz!&FNIE}azKwC-GY33bc_-7{Z(&C|*!>c%h(lBxPYHBCLSOfKPcI!6eyvR6fl* zSB~;iiSn@s{==9BaYbkk_3MqTWaF~oX{&U40-C9+V}^k5l}ZpspD}$vOAwqel-Dfl znS!69*wn#OHN4D61|#SdYyS$gz6vS1S3+U80{m2h1FHZy)REWkYLo-{uX_mGx7Jdo zvL)=Yp~REz<*W5ec*~aEdqjVkCDdp|p=7I&8ZNjH-WZfWpQVi@La}N&gF)WoImQ*jWKd-teU1a0)=0-dd z%(GV5wcfQBJ~XgzqXrL%%2G2t!A;T2cumA-J?D2+VYFGp%|RDfJ6hPIHX6#e9$Q!c z@JQKX-6>poKCW^S^{rtL^MJ=Hj0q}L%kD*jc0I=g(56+wmJFfNtJmGt9sASXdh1wv zh;vZN-~%*3A>4PiZCA}kAra-EqtUh7mS5C>lQy8=|EANwb46v7-|cn-jy z;}Z@WFKI7u#7)aPzQ8fGA??^7pHW~CzFKV!w~&5RLWR4Y53v*Qrd`WL>@@T!O}fF* z-&6*Kx&2dtu-<4}1`HD|=v7*?to`*}rhfk1c^0HRcKhZ0DMIb6Pk4q<2o9{v`hD4+ z^{J%0=tmk>=7JVMg&q(2vmdcQvUu4ay)xq6Pz`ac$3-}}iBmdoEbDy_>dA9HD4%+z zAIEJ*A~&`kKXE*Sm-deK*hf-Jh>5s27T*nk%OzY{XK~pN{>S3PUkM;!Tr4zTJ^q)P zFCP0Rd6#y)6cqCw4-FS6NYIA@t?(D`aDxa>a)A^k1s&;0F&xo**5z1D&Y+MV@$2+m zCBV6(Rb84Ehwfi`?eG!i5W*zFf>uuZ(1CEP;%!}F$)zvCM9ZE6lYJ5x(xEU^!1uFZ zKc*PXo;-L5f|el()@hg!5@HAq^Wdl+L8l2Jf6tz6SnbUTUrz#x(+D)yMJNK{4W2B$ zfY7fnsZrw^3dH>EY8qW5ln9>a9*sGKbf2j~Kvj{bF0Wxj^;LvNJPKqFs@L+5&_6mk zguq#sdhXeohRWG2i!eJscRsn9yc$8u{U)9v;kg0A-8rWb#!PY^EGD1PGoa$E@yCNA z$EWZ-^Q;1oLd}8OZpD+*AwdEYaRlFE&TfMDj*g5Hnl+L3ZQGUZL(yo%^54RJ)6=Rv z%)qbYF~Uk*X-smyiDUVUICWj~`!&+qdSGS;ZRwHf1J^1#hRn$CorBWI40F)%+@{7& z;FD8^33t&G(SXp-iWc6AQL<+3>fHuSh&y;ZZB%={3M3f^Z&8wJ1K*WovMB@4r%tkm z1took4egV_I(f|e+#DHfNyQ@th>kOB7E*Y|l!oyRU zp92%Kgh^NBcp1d&GM=$T#y&YPn)(l)Ox>LB-M}f}+jee`ta5t6TGj|bWuMDD?ugFq zU8$=P-pqk=nCwzFg1y<8)__kl9uavlJXvpvDuTd z;R=3&!XYiX22`>x>P?VG?BBneZgO4>8?W~f;<$)s>nh=pY9h*Bdita>$6_|Gb`)xp zE*N&K;a9$=dq$q__>J07@o-($dtpdA$cXh&Mc6YoG+>kiN0kZjVED12VdWy1d*Q*S zUh!z1P!E93-yMU`1h3=s`|bKbfp`~;IyqM%A_>4nO<~5kO)XzqUllaZoIMk%Qf02X z;GO&~wi16!OAe0+!InCFMqyQkoe3*jA^qJ&S0*bnDXhp^J<~W=1s6-o_?*JJj6mXa zLRe3@{Ys0z0;c_v(fjhUoEDo9q)I}h_lh7;Hi`z(B{x9Gnf4k|9SO~YIYp$h)?$#E4h6kfhuFjWrhySTTU^%i6D-IwDolsR!C z?yavFs{*IbdD$OfLucrVbfm=*JX4SN@*Qz>J-oxZ>_haURIl~;DijOr_p|TPi;IHo z*dJf^Q}~K=ze@|&>noH5-n}n_j($_OeS)F_*7+bhH!o&uthDcPUyRc>3!E!(6|ji~ zEzp_6=?Yr4?>?iTX&u(3;^G*DUjaM&WVWLShhd%>E9@BR2{FlVgzKJs7yFpNTGla-C?WfsOY|FI31A_zMMJVc}NNF5dY6~v`{S--8uUzGff+Gl5 zt?`U-X~IeC_ zolEi`aixV-Ayim+*>~^DOT?Ma6mu`)^h^9g1Be2ZidhK3#6tV5Fbw*jE@9(=l}F!t zE4-~5TD+%FzMT_^b^klh#C_gOoi{QX9un5P62CD{UYr;zqY$LPs08T-`C8(eYq2&) z2nXeB7>i+1qa#DHH}|d+IAvYkeoN`=nGg5ds-%j5UWXG54}% zypoijU3io9R=U4n1|!G{o3$5cPXTcPOSsn4DV1;1ratiKN7I2_y`+7mEy9nw3EOF9 zPsx4v+?)E@$nBgF{)SF=BFyU5TU^TNTNT3HxV(hWB^{eaRl03xs!wewr&ZvmiFouD z;?fTuye-mvdZ?u__MPyldA!?Z(HiF@@uz<9{q(ude2!DM?+Ne21pK)g0Zk!FxG3~G z_r#m{j`Li=wH_qBXwErtA&v}Hy8|V}Ip=5bs$jLobCwa;@?U~;!fUfpXDy+o_p@uFZktJWZX^A9`T0nGt*1y z+s{9rp8NVY(nZ#d`{{ECjEqq$u7b{glNi)M4;sIF? zM_MB8K^bL@IvW-cu&^K>`%o>A!H&%x-h1oa)QN?-jkLbilxs|kd-dqWk?AyREkV;-Ch0z~am{lBR{5$q zvNBx@oRyv+s)a>F0rA26?@!-*?N#2DcfcwD50-@pEn8S40FGJp{75gHlN~5AR3Kes z9*>L+yA*Q|AaYMySpz;u+r#?6HN`*QqoKe^1s`jp0;G?{%oU>Ecb$~Bb0a<$$+-LO zPuTH^0Pzt6>csXaXTJxd17az)zy0<*2oLWBvm(J2Nx}rrdt3Vk(i2ZSk^b~g|1@^g z^l-VhC&Qw~SjNozF1(hd7S(q|dWpP?zKpuT(=y7I z=}{2ZGCSDV$loClu(){kusxPxn~E0O=e_UqUiZF&hRl(Re4cC>9+u%kKhw z`rH0lwmzQ1&pQ3sX5pyDTj4=1sKSwb_pluM3 zWZ;)c=;>|1 z7zBxD9XlB`1rj&fl3lh87bi8Vj+y;dK=ml_G3d77E^h=gb>!%gV7^oiIPRfMMpLIX z;?SW(F$STXqCD|YAx3k&gqG%DmC5dW;=gTBQ{{r=Ld6qSPyPPQbjNxEfwi=b@EBIOTa~?1G8}7SizEc z>xNUSWGrJK+7JRJuP>6l4wnk{l`v+;tSN16xB7{|UTN00ty@EgYH5L~0|DI8c?RoQs!c>sB*9<61%PyyqT* zZxQr?voLV}!~4QG5`4=?eA0q*6(Mm3M)}u&{VP~lGOk1I(75B$MC`~o0qg6lq@$%R z?mZzRsLPBDY&F_^fEZ<}2|hb^IsM@u{$U#E>W;MNH2}&v*2=sE)HyZ-#Z7&^ae!nY zVou9|nv;KP-PT|x-+1$K8rXh?@8C|80u<{2o6xC!uVr`YscTcLs|dV|wOO{bpsa(- z;#)IVU>e@Gh4!d8LJ$DP&Qs$sYTz&xE@QJu`nds~ zN>97BMi}f3;A*sBVG%Psm1$uYN!ePBJJhXoN80GV0?ujYZusX@NeymuYSE1$QSj0= zZJjw_V7_q_&X=I0SUkdAP{E9F84q_pe5G0r|seU3WYnV8^hozix zS9qvrZdtd2iRji!uBWcQj5c*+VPhQRe*(tf zU@#D;8lyzq5D^VZ(q_uSzq>mo1 z)8)Ir3;p){$MN_?fcOzc%>`E()0hW?OXC2KWu!z*CEk7e_NNxKV`}SyAb^ZcESVXR z$fFPmku@*kpq-1LC|F^xe9m%Z99ZuC886;sZ1N@l`c7daCA_-CNXY!|*?Z+Z+3V00 zTO9rIBVyaug4AB~yVor{uG8o+w?n)mpp8i-gXko)Y!?!n?uZNJylCiq=O+{1e^8WP+Hyybhj9`|_8x(Xa^pYX6A z+a2>S$9YnTi!-*@K8Y`uU6HL5K;5A)t+R%&^iM)rU)aD34U%DjcU z30IeKN1|Db1HqZAXzXFumlkKx+_I0t#5hbAdneQo6pGKXT4LL&E87~(hr&)Xnr8j8 zVLxCZdNPfM2B|%*Ch9hyjoE!`{G&54r{<3bhTx~Log;-Isc z-pdfXPU#Z3LK}@2i%f24@uy%2jeAhQZ#CYFL(7ucqt-}Mdi=z(^!THXhPx`P6oMVv zU-F%<;Hr3^&YDI;FR#eY0Ym8I1j6d{D)=Z(J0Xn&i z#l_77o13&?C=A;g%0Pf?Los&$u90-&?AO?zV>wMNp(NtkB=B5Y!5U9_lfb!kb4wc7 z)}1!@klheBoOSSXbw1BQ8ApSd*APIBXVE9#OjTMy*J{|+d+IWC+A(w;W)yjC19*$S z^fIBi&kQO(odYk8X;?*A(3J_5Ac_(C3R9_u+|O!(gGd3fs3qvxEJB$cL3i*OGhy`fH#bDB;tH7v@ivVHzGD4(9R< zn`*f*7tN;c`@GL=8{8IswVaz}8j~;|!FpVbXT!uu8$5j1c1IieuExQ4EhE}PJFUy> z=KgIX znwfo1jk(_~TNqlG3$^eLA<6bru4VBj#>MaUMXKbO+YtLL>2)mPS*|L?6nKQj_?B_v zc03KO&$y81Ph7GTDcZ=@jNd(96*B)ZM3Y=D#hh2KMV=`t`}?|rvLJtcixo_J$NWR{HaGm(3F9aY1GP;vjOG# zop~v0i1BlbWUg7JxTN2|yBo)tILv~HeH`@XSc9>usS>xfY-$}Mb^#`<`jwZv-F%ta99Eb$7u`gC-Vgu(ubTQHIEW}zi*BO{K=f@=EN$uoJAHQhXT zmi960gXXT2b#ESR_&Q8+Je<{C?jFW=oIOSMFkC+l?AezFdpm-8VpgL-QE13>I@~bmgfS29 z6J%;y>7JjUPs~~8oEgoWha#rJL}=KlS8KC$S{e{@m3FB07w%ee=gAJ_I5#1LO`)l# z6QtvWuYy@#C(w9Z3quGIx|YFk!NIzAE)(3VHeGj<4b-^H&{h5ZHwAOQ1p$fnUcZud z4-TYiVnON|TXOJb?R(&b@gJ^NvhB=4u2t7Fe!ZL0ww*A%1k10~uCs4K7b!>)be6Rk zV0qzrGih~@va|~UqNTls`oU}b_%qFgNd>>mz*XM{-9&h>ufeDi!!nIvC7y(Z4qUP? zP*#ahyyyH58cmt&JRd?f!b27qXluAH$t$={sAy0bBY!IngKIonLmY!lv~*BrU&LQs zR};_r6*$f%>5A|2jKbwA&)4%=VXSMweODNllt^XH+^B0Ob_eT%?JzBBgFDW#Q}a|K zv1c{2sbv9+6m4FfM-c`Ncd#q^JmXbQTb6M5L$M!1tJ&(-5u|Iu+1eG-4I@y?z|UdX z+o&fdhAdj-I}KctXQ|@FI>x0j`qaXA_E6CUjV@ffIv(>$Mq44sx#bS=220m5_o|3z z%G1?#OLt24!9Zx$?ODZ}uvd5##<~vb&7gJQ;w*c8T)CFoh}CETr@}=H+AqGj-fM|& zhUUzmq++x~@n>MTf`YIH8)9vU`2c*yi=chdKkz@+498I+2BAs;M9YpeK6p1uWq>Hh zvHQWJth=7e+81^G;G-XlE1w7uKf*A%s0HDLD4Xd(rY4vKh=6VuW+Mqx7!%foRiqP1 zg8AX>_ZvtF;(gFjkjk_F3iBc2S(n!fGR8BNa{aEWhD?`!nj3$%GG&AV5G=)ykXkNd`^g>cV3=ZjyHU?Y9Sm855CuWj?h) z_|BQJu^u|Ix_z){Nb?6bb(ecLWWDnSVt z@UDV@u#$O|>6Q6+(f7JB6EeJ7AfjFt5t&F2P45a2UiYvb`{*JqJahSyrVPV?WBw7( z=R1|Jo+@<5e)*BX@*T_9!eM!qZ~MINxXIM{v2Mq}!+ZWK-#z=R@0YgvjMg&G9^VH` z>egKDxQR#njCbvmeG?|$6ILG9?KK$_EeN*5@~qQmeAeF{p4D*L7T@#mIbrW}o^7Mg z*;hZ7>k$hE+N#hX@vJaWP;x#+e|g9Ev`z?2&-TxSU5%L5GlOE?2+DG8gP+p2fQ0XJ zO_vMHuMA0C6Gy@VMs2py#b0f%aEbC*JW8J|!}4yz*Tp5br(EMgT#E-;#DDA#;TQm* zZPA&6$63I19E>k9MqvVa=)89P?4K?L2H%S>Pe1*1dgPIZ)BgSYgRyb`NRNb-Rv-hJ zgOQ@H7>@u1_|2F#z^MCtwiZDnGS#rJFz)=GxpbaX-nePtzPPLXU}&=yux+bCs{%t6!i&t6jJj|V2KG<) zEq=xZapIQlm!>Ff;+;;Iqc$wsOSlHU@y=`MZ=e0!^p*ecl{7$_*^M>hB4nziJsA(f zjh5fKS}4FxPEDlS1_#4>YJJW#VXIQ)Dr44;MbH$jGPPPDCJ55SoS3dNet5D39JIFG zIv>{>(KsWpIR1`Jh%L;AT9PAdV1ZtPVP|3z2Y}GWSKTG47$1GDmM~o~mI`WX2DHn2 z63eh}|IT#$t#{CR&!qtZcNZvs;Trq&pzAROshh5?t{@yDn5-jwfHqjWDNijpt>p9e{~!MWCz2l7w0(;wTUYnA75eFUq5%uyB(&-q+P|g)&h!AVd(`r+5IY zWa#U_Gr9!c=!WVw`V3fBc}FW7C*IF=1XQAb;3Z8)(4eECJWfI zd4Twk-Za`#mAXc^M6v-Spb#FW$zHXJCE?{4UrG}wc;=WB?agf@3;@UG5Xyjia|`QX zKbe#ermwtf7DhHx!xAx1jD;>l3&ajpH6q9(7&jnL=(3e}97jN)>;}ek+rUcAWZY^4zTsBI9CgjLKb9qpX{0>YmJo6k06-kANUUlhK$uC*Bmk`l3R)?s zI2e1^rmJLFQ_-VE&3Px@8-t{any#hBj;LhNt;@h@sg5x%&KKeCA7h7>5g@b-)sbn+ z{UVH&@}5FXj1!M;ScdO>z~Nd`KHt9%e89s$=9fMZAbz9)GL|8y(G-CVta5ddX*ZYn z0KTs-q7r`zwG4+$tITLHA70~mKXJc8cx;LYRX!q_-$h_2O<}5TyO%bL(^g3W&4DmX9XeSTh!hQ&$v#FzGGl* zWDEj!3Qo4w=XBALL9)((9}Owigm4w2T+5DwlWp`}&xP{%uKf{?KI=y~T3*2gHQ;XS zFmJ9(9KP>31TOI1#ozZF=PL78SL!Qe-)N3?MG5+8V?nTfe*3Ov3LneVSK2xi zpmf>LN836)e9n8eRe_?6zXGOs<>qZ(6IS-wdR#2L=6BoX$NSD5$JDVGcic(TbhQQ; zYO+=vSr~npP(R`O%Ja@Q8AKNa8U2_?lw0P8@fZQ~Xm$Qm>bBEao13o-H+}VG&MaTX zNjHOl3w7Fe+h60t1?E|fhvf^u{M&K#YQA@4u)Xww*W$)M@+V5I+$-h%BafELw?203 z_j12-jwbS5fz5?6e|Vw1LnnksHK{AL)CdEGY46)l1;kCH_jI$m-}S%c!8y16qm7rbfEt25vI)v40I+6_&<7^g=_1w+|De(Ui`Qol9T;+F!z%uBQRg$Nv8B z{$2<@EAD4OC)9}gUf>$=blz#Pk@;NY8C|{rZQ!T$C$9^}eB@p1eb@O~vzi5K_tsdW zoCf-7T!wC6GN8J51`VVPg{&=GdZ>f);h18|rg<`jaN&U;oowiM@!WYf=)9Wx zuqqgEyoScvKvgp;H6Z1=yY%Ot_-s0`dnbY6m(q5E?cagMxUR^kufxpR2ZNR+le(U{ zOR)l(!hqR$rpVYdc5w^=W)Pu--KrU9mO z!m3q|<{az?#{Pz>mio6buLCOnV@avtEnc)pOuJd_Ms96H3FGOnbMO`i(LE7tlaEyed z@g{m0fUv+yw>!oSTyjG}4_%<7R*V#5oas`GsfE4o$ZNpOi|_w^^UlZP+fS_k@j(OU zBKH0xm}n5rdm?!-A!vIRVX6!~(gzo;iHUCDkbypC5~<;NnGYE_{qkj^EJGqtm@M0n zYxFOlSTkiLomgJ;I};Gv62V@)>pSrtWr^f6EajT-i~MR?%QI?jWwu>VbUSeYlt9Rk zg>RwN@-gF%i=pk6$##*68AN$m(8)}{S|D4^-H_Uq++CbZcW2)`?570R!?tLh$ixrV zBo-t!SrkhfvOptK=7bC4Ov&NW5ClaS@*vl|r$)wi1(XZB1U&-R=zxULw4nx7s+n=Y z@j1F0E?4IB)^{=9rOlgJ$b)#(R{NkCQ*FWpc6yb`6kZOA@RP|D)`gjsc^1Atr)gio zLk3pZxdwGy{)l zqwo3gnK)CHc;I21W%T1+;Or5BVeyUeVca3_@h>*useBjQ?&_>&)3btF5eS5hOup^& zur4*0mSz2=ZW$}<^*M=mFai)`-#6W=<=JL&*zaY-Kk>CNDW27g8VIWUkg0p?AlxPJ zZwXfcph!8HVN%;FSDY;1pB zn6gWOIKhMdshl#cxp6Ju$+sy(CJqqug+9pr@~*!#4j54En8-XhOL@ive5eJV^lzqP z(WW8SDlEN@9VhKkh^Gg7=_CKfm1RJ zXyeUBwP(*>EOs4ajUliSCeWR!d%F4p_XE>xmKtOl9s(hFB93^^EKA}86Waeb<_EW6 zXc=Pw>D;Kn$GeI-UeB}5Xu50Jy{oZ-Y&pwgY3$^y;ab9s1#e9)>4uT$o?&R#2>dml zf33OvNe;S5kn6@8Y*H0|+SR%$K|8T%Tqp2%WlgVs`o&Jkx>1=!-rdsc41|TSG=rD( z#9Or0;|hZitG0SUTv)^v3BgLM%EUA&UP&$5-PgyabX(F!8#sYGj)DW;+@x1^Q%(9# zUz+i`*HuNBw-e0Uj;42ky%nyXzm~>MjHT*@nzU*uDPe%zL@x_~pfnk}Fx*id1F0MSDE z*)JYTH+U$L7|c8E9vd*R#$fEk^3a9VsHzTnEFA9Wpv^JPtTTM(w9-%?wFZnf+9`ugE3_KbA}F-5L0}!}Ve4v| zQ{&Zna2yxzi`Ua+{pp1NL8LgI1wO_KErKsq%+DHNw!mDNgEj^afwF7&&XL&3xudx= zU1J?3{y5EpgNxEmENqg^shQ<8er-0rcKAK^VcE`D_F=7N^v?CHim4(4A)pZy#s1Jj1rU>_`15>TL?mKV z$)C_}#5*#&HqsliCo(R%zEZDDpp0b*5R@&P{CMBC_>R9be6qPv!dO*>R$sy!?Xvs~ zXR{&*v%+X*ZDfYI@D%n6b=5FZzHh*eR5kDTeYfjUj|==c}+wrTv*>2YYvGhApx zrS0N87!h++S44$A=d<{twb8a%RtUX38^Ry$v5qdZ&AL80zr~+`5exYDANHYqzW+}C zRq5*o-MVp&_k{`nGerDS-Ye%D565%2{Q4okT8`Lw^AIvJoC?XOPoH6|#3u!a<*?Kl z>)m5#GQgqqT@%F%J>lXFa= zLLu0_Gs2aM!EjznBbbzd|I%X_CCAkm1#y3hK29U(4DQ$pEyU7DaQY<_Ej{G#?z)d`>jb-QAOtlr*K{j`$EJ@6>RJ>S7dLO+SOR{y)U+@^w`}dfV$3eV z;8bYhA(6`j*^A572$a>pB;sg*c?7>Y@4*L|e65_$Z`XvI>sy76D-?$A$7jGu+NaA` zv7lvoS7wZBs2}i^c6&AOS)`2vx)B#F$dyqIV!yBi#=-ZJ1yP8Mxe>+7QUPH?!+E zo5$_g)0|G78c!<-&Z+4&k_j}Xc@#Oi%NfI?uu8X?*Mb%1n)$IrGJ{3NE@&|AvJNv7 zD%{u?@l3oE=4CU*vuDqxC%^a<%8G8%K_8A?-_J9b8p)<5Z*cAkmID+~ri8Xa=aH^v z)!=#e=1%GtCsAS%^JHeq-roM8H(^a+JWO}5E0nuj2VScvqiv2urr##rP*LVusKUW9 z111~_A&!mh=3-bRG4z0&nbte*WzF*JC*wyx$Cy{HMS&mFKR>ksgoF9R9I>c@Q04G< zXa=0vAdicYAImGuPb>-$${@mA&q$d|(Dd!IYWzKCB2r5K;m!piZ$(PKdsuf%YfDTH ze@nDQdZu)=SBA!VB}!TxWWpqz1}90teP86~PY@H!kO?z>2@0=#e8YQGH{^jZ7l+1QDr$BxEz`=ncg zaIsw9lW6sjM?Tu@BFuHV8RzJ0g_zhrcW?Dy5ISI}DYW2}{kObu)e6Fz-I@ID0%O~C z;}H%XmgnOj9iKO@B-)GrtoRVZoOs6JxXrJ_Od)h=IkQf2 zHfAk;5iuOcvY;|h`8K^LrPPFSqm#@{y9T$Xdu}^Gv)6FdyOzH9%B!hwfE1xHFHO{|@FBcA(6%Zjz3>k& zrCKz&_uq40`t+ekQZKG0pSu508ri-heA6M$2pDK#nOgx17+~j=w1JKVe1)-$j~SM{ zW(wD}HG^5D%UNM!HZmJOykLPdHg(hQqJFl_of!JaaO=@%CF-d%ID1w5FZAcCqHvCsQH6@#bOT9rlOt zvH)Fnvom)V9$>tX|AnQ0lg1g_Ks zp7RWFG1y%Tq(?Po3@sR>dLGYT<| z(q3sqC?vRUe2+023Nsd|kH2Na9EXN0#PW2snLk0Rtk3aw4L4v~_u`_!lo<|>0-vQ# z3RMbV)lK<%Ez;`>Ioxy4E7~FP~UDt=+elMLF zf0;NJ+<&J@=ZfW`xmou==00%WV9w1Wd@f>Ys3Pmt6|#X%k!7qaZ43IiER3WFoN1m= zi@kZ?dFS1*oIm^Qv+2PH?+<*GCM)dfVs`G_*>w8s$@CK0!RiU3zHR>jaEuI5SjVog z56tyz6)lSG|zU0N1UP`<7>`b3|^bxFimvD2VY}yg?oAtys z!8w&%1r4Ktx-JP%=SR4;fs6B`E7lXCqlIJ!&7|^|HgSkkj;(#8lkwfMy&n4$Ri255 zKc;_fuJRw#4*aOi7E#`RII!IUiK#``b`{f7G+q>oXnXJU(^mR4}HcZNY3qQFOnaOlvG72k z)Dn6~xI}u1nq_+ANg)9WnilmaeP_liPn04U*aqK|pn1p?Tfaw{Kwe`S#kJDz_`x6F zw_J&)aFj6>er17_;dV!04=3>kY1Dj2;Y^=j;cA&`51KbMg+;)22Z5zc)@nNp95fq) z3}6IK@sPySlyHut%#BR0@5$U+zs#%!IM!YlMz*KmgzxC`B(W>7^IkcuJNic)6Z1G>+Iu#3>I@FnByyjM^J_4xn?Kl!cv)l0y~f4t1K zwKR6-6ihPiX{_~gGuN39_(!8EUSb0{1FVgka4yZ_<81mxGu7z2QOCwsZbD|}q6vJ$ zSH@1JYow>F<=zfYGNui;ZmfA@yNUHMPTzVLR1wSL%X*_zzD{5 z28MNktTY`x1L;1})#AayW?SsSOZ$$pEBENGku*q5#f~pMh5Li?3kWv^@lLSe*rrY0 z>G*pm()gt->5c<;q%S=BMC={#ChuK1b1n`2JVC)|+)YPIiv8Sw7+kf<;*_pK&Jl4g z;>!Yt_-aExxAyf1eh725{>G>{(^a@gLrrsQA57z_KruTvL%Y%FR}+7M)>kI(+=a7P zQ`lYmnJ=fuKKp2zz!mAMU;Q8H#czEpo#(r5Bdu)i)`T#00Qz8#{Oec8!G$~0Wf(NN zn)dG7M>ehp(zjoHF)Vftbok*z*Vf3CbpGVo^wKwgZ!&0}L1oYrY**C-i@a495n(CQlWyER)ZI>5_j1eXo8rzk-U~d zPiczARO7pd;BoHXKc!0P%Ppts) z!$SM!AUo)eJH!QMK*mxAtT23D7xDakl|V6>bTcuyxR#GXhv~$$I*3rdBZ2wJA3YIFkd0bgXFf?_UW48MD+PmmXjd2(+L29kx0dK z;0*N(;>OvsLvsj-WJoQe2w1+K@B2=c!YyAH7?}m{`8z(AEpe>$!)J6~QOhr*>@!X{ z8Aww`>Q`^C4bIX;Y2JD7siE=EI?@TF+2vws9a2T^Dd;F9$%Lx0mdUhSwMbCBU|{^M z1;k)q+hjYnWLUn$LncRtSprkqZ=c;Q)df3*u{5PfQ|METLlNl^U~!@K?o&q#y?!c#BZRQ0)+yIeXuVw z@VaO@4))>3*i)Xc)oKvd2l^p1?_rxHvbM!%+~6(XK>en1weQXg8FWewxcN?u)h%_1 zCtGn-ux<8HqO9Mjhkdk7L8R%YxT+vy`*d~j-A?M#&t5@DBoG%@aXuEu-N5W;9(^=W z$+BNSppd|u#?t<{OX=Rd`_j(QonihKwqmwr#6Os^Fsnx#jbo1$g0|~cq3?Fd;AOwn zx;vKEW4#IxqOki-C|s2>7Jt^kyJ&1Y;Zq*Bp3C=q=cE4G);MVQKh06fDd$qEzso1b z1?}FwhxyYP_@!HdL5&K4M~`Bi`@81Yx1$5?dIRwSjwRsD_#ksbQ2}wr(=qj?j84Qi zP>%vR2wACI+|0C+Nf59$codT;{?hDIf;RKq*lD!JFfYrKXocA^n)x$+5ltsdxtjK7 z+?HC*@x(Xb}^6V7uVC|rEw+;OcMJ9)G*(gu#6ZFurb?B z@F^BVQp;{&{g}rZ(g=R_ZR$xcz5FV!7hBSUcRz%$_#QOg2sSV}>y+1z|F)TBI+$C_ z)D4EFDFo=yR##vu{+j0=r$gGTo5)S;gL5)sb{Hd*3OEL8WW~{IYEPNZCI`?3Mc;mR z!8U`|b?~|#0Sk^gGUsgD)(1Qr(qI1hpQqK?NnD2N(!cnnXVCgWqoCK0@+b`8IAtC= z28~9zp2c0zRIgemUit2K$i8<5c*%&Gt`;Q$YmXUr>grn3+vnd%SAg9taS!#x*<8JF zK6RL~m6F$RQK^PWGd1oCfyL6ZsVPzgZ|Z=~cQK~8Um=97Y#_J?9XI~41?@N1r-fs#tQkdEkUE~EwqALqGLR(U<(Gv zwT#($os9S+3bZ`>;pXCffDhlLxoelmj|13OzMEkH*&_0z}dF`NH?{g@OOUqo} zycAO?=8EmLR1bTK=Me(ELF+5b1GV8u2yq5Hj6bcRksHh%UH9r4pJg&9Dm>JaiuJ^~ zv2=zYXV1;dj|Q0j=33%=m`{US;fv}JQo)znT9kK9>?Oj+b=Rgyk`eUOxvZs2i!Dkc z8Xr6WZPHTaI?)4dzwNf$(l7neFQ(TKo~5nC?ng>y_kl2rlfnGW>~?MJ;yTu*Mcft_ z7~>_Z0lL%86EEXBCyY$BD$Tw|l8$aRne)2Blbb1O5u-)?qu*R}{c;T*$CcSQ)^4n4 ztq9U0gKMYbC;t~Nbo`b-QP@28_Az2RT2e1=UU5{$I`D^gJeMP`aX*jI&Fkg<$Lai2 zD?r>jpdU71E^v8~({i9>F1nEkLTMSIEYiue$n;sJ6TpqLWWJV3t>#(xAek(n zT6CsQX;Xo*46ww{!)p>mnP7b)&#a$`a;(#P)}fU}!eB6-T5o5hI}0n^Sbry4eVGXb z1>3FmK_XS)A%kk4ZC^2MTE1mVpfv;gvAyN6PrmOpg@@<^5Re==rZV=?U)osuLXiQh z=vM`fxgRb??3I9a#D2(hHo)+E&vCFk@7Xu&QMf3=gU>|YSqQDWz%rg=(Ke$Im$UEy z9uz^xehC`|2>sM0hD#7&pY>zgbsw^P>$5!jDq$7JJbMTOaZC94U0hRmvfT39vI?w> zXAsZAjS42ma)p1u5m-fFn`6#(53g%>w!Mz08f=Mv;5g-K)zb}0CiV*H`NUHfNdpew zedpZ}pl#EM6DQKyvuC5N(GS`x19;~hcc#Gs(ixH|D1sqbR&}F^<(2U=_|nDH^oRnc z4y{@1t2U_nlu`_jXnUh(2=k2%CTW`G;`Q_bc>3iRME#PT?#AWdy0xtQj zP$H|4j|%WBzutf1wHt?cA+Cmd7L1;4Q-G0S6n2hV9G-!bB}c`#oP}q+m#5kd-0*oB zA~n1LOWwq?VC)z;cDry%xkw4S1!^Fop{7&0dUf9~OC{mGgoLhl&QWymRP@NAKX^bZY4kj6lG(PYvlenp1 zJw%bd0Pf6U&5K>e*Nqu!0q+QsCN5$QJfs7$+wdAeq+l0y>PljJs?s#R_R`1}m}D}a zM#@&f+|tY@Rp8SCjEl^kt|xJV+X^mX;8;eio${l%4OjSOekuTlHt7K8wIT%IG-(N(m!Rh;j-;{Z%!U)s85GlKbS2-F7KJN7hyIFU}2 zI|vtysj(3X{1?w(h&9UG{jPtyQFV9Y##Psr&YU;{{D?~<*ma$`*8puNnhplt1SMw4 z!py{&R-?IIWc|`|Y@j?C5$;A+1W{9cOs&YO#E)<=CO<`6blfF-C0KFy~Ac7Jbg z!8H}((@bU-S&iFYU(aSBI+>=ZM-6&9C zp179#y!6>IC?Cu8zV&#m)R!y!@&D^8_Q~-f5O7eP2ul7gaQ;@CAR-LFfVgm$1ytrz zrbR8B%-1}bDD?3bS=HEzK;92#3qqQMe{z{Np&*rIid24F0IW;I0(XP46v1W4i|dTf z%d7@+(l&*M-7MgzNnq9Q{Jc+PlAdz*;Y%A=@WUD2R;CNWG z;~;-+NymC^^>ZWbOFL@hxw%J!=WXZFZ8C;+y?@M`)OcKnHQ z%|;~bWrnptsA(1!GB(Fc~ zj)*H-9%Rn70EmmBA+}k7z_Ba%Cf*8b%e1e)uYlwj_>5yD6XM}n?Y=^U_b;Q7l)*2A z)_R>2x+GbLFbfLBJcKU!eq8tOY> z++R(<{oB7C&q>&i9XlTN3J--;g`Pv~g1U2LC%VE+w4=`~W+7+^2;gqNV}XxF-hlQx zVAq?Tdh+S?SAX?aSo6*U7hEfVtpWVH!~M?h{x0c4J7R(S&Ud~O?bmPC`C84{dR*|; z%x5OrS?%ZMVVQI>+V9nPLfBA-FpotFd~-20_9H)>twh2vzu~CMOe$Q+Jjj5^thiWa zw@d4YK5{?c4$d{Aaa0=|Oek=2%>B(kg6p)Ixgi{+XHP%F$H~(C4c3$itsWqrlrSh?Yqc=%;vK8c7*o=ch0UZK*gy+wFX8*k|?_ zwWSEVVJU>6HBhn{pLUtq#hFVmFT@|Qah%$4g+be`V4};9)W;n2Q)ES|gZ4ti=|fKd zT^LDcZI5WCRdNlNqgeuP-Jq+M3{B1-Gucdm=bZ>o3J+(`jYWz`wX?#+AnR*aCJ-#I zF_)>Lb{t%2#quzlHnVZpj*&sE39V^qiueOuIriUiH=0?}AzvCJ_ zhG5;bB^VE2aSDdI87ArOyY2;VO-y0>Y7!XmG5xDSy$uLECJYcR&X>$oyQ?*O^q`O! z$AT&E+icoR@J1IU=ZkJ<&Rf&8ZXz|UW2+q1)x8OzyT;Up<-lC|D+nF4#2YQMKf*Nr zQ>_RS!^4AVc*l0ui+LD*Qo?p2%wM^d{^*bY4_Wz|(%|;t^ynjxrvLsw{{#z9duVc1 z;)t(beDaHFWamz%GztpJ7M{(xj!j&}g^c-D3m%?j{o0SkV-p(f)@qb1xFi0eD5MALj;`RV`PsZmAhy{Kff*HIP|X z0B}M8b7y}I&r4etNK@_w<7jvs##;sy=9;p^7uQT)iBCMpbzvvoLQVPjC4S^Hb%@_y zl8r4-_U?2{tSn!(fdPu*6e)2odb+cq; zceOg^1`{yozZr*kKrtoSq#R`#T5FAe%=8MkOmLwW7sj&}C(>nTYc+!TD(h8q^>P~R z+rb_aZS3P)>&`HamQkW2Bqu5*gB5SEV_}jvq_6-F^VxpqKcEi_E)hfzzG&Gqo}e32t0z1xEBZ&@ zqi>ZuqvBisLyp{mVGLT+|$+pJ3y!`V&_hs^lf4braj#iEPGO^ZUDom{;*1JSH zOR+a+?O?5?JYA=reDbO2qfFxq-})9CFXasf6^LGc{dHcU4QSY8Izs@XJp1bWHCWeq zsX*(zSMZAt#Q;QgJSz-fApBXuYXwnZ8BDd$atL1!ulo@)<$14LXZa{J*gxlnc%z1_ z22G^b#9hy7nSEY3D-5^^l=#CX`r-Sui|;X})UBJrm%scB?Wj**``Xvyy7NY@oVnGf za2tE$@EhRlQW_o_Wlpt+OJQ^ge73HPLm5Xy$w2#p_VAD~E7m3BYGjQ&iC%=?>H@T;RU4&ueQ%%1X zu};{bfq}sow~YBG1qMDcb2X#`)!j?CA6O*>2Ne-$o(ViRro{SUd|;YSpFB>2 ziQ{Pqq2jK)AApWGrdM7iSbFdF)XUxv*4s_4{)2bl9a?7Vv`w8be4)IWLy?69Gl?*; z!J1l)wWEXew0@O(ggF7yu%0oVj4<`GpHD|!+JDdescWz=HFnmd3s+BpA4>>Jy7*uf z0`}4Y=bIKB$Jw|8Gdxw%C)en8<75E4co{B9oSh%_)GsX)@13W*-S7m@`JTcWtpPsy zkXA@7EQd+Lw`|SG_w&4DOj%zdj)M0qwg>Q!IftEP1MRs&i@$s(1VQRm@TXzX59xsO z#yRYL&(2ZHRV`PP1k_F$*_v#-Y;QcrnaARJEdU0HQv&Xvw4Y@$n0wx(B;Kb?{r|y< zbzJSL$qH6gLpCzj829M7{{dZo+S2hiUr%#a&l3N0HLdiZL`^9Ch=RBNu@NBbmOnRi^(6de6y?b~1&ENRV^q+tKKO)qk2x6ifJARx% zbjFC7hiQZilbb9N=)Q!aW)a$bB;4bb(pSY)j#AnK< zT=)EOJw6d2K4Rn?Y$v0uxo3a7(77n-8lx6h#?8fCe{K=g`!Z%uP_?L%lQ|Ge21)Il zliBxWnlgf7LIkP(_+Bs_JmXo@sfUC??UM)`%o_yWf-Nf+jtXK*kS$wgMgd2wh%Oy2 z#9p^6E-o&35+i-@C6JokmLR;&xY{DJtviI@mc$ui3CDfr7jsZ1qJWPTw0dr(b3U>pIXjy=g!3hm#LRA$Rs>nOeHSSOx*6A7RF=)Mp!3s6X6$c;4}LjAVKhPW-KTRn3-d z)Q3{|_|G=_v5deQuS+y?v%c@IFtQyUK3`Ll8Nfl>EiTz6g#znPXz+Q<@>$<2c;FaI zw7g&Tq_9lucMM$s^LXp0-b~h%ooQ%jDEgz2;B&rP-U<9*Ozo?9=26DWvG#iz&wvT| zW(RGv_1Q+hTdr*{@A#ha7#>mTi0Ox8qyG zLaD~og~hVmsnkO_?jsmfmj!X-weP+X_$W?`?=FmL!gSZLo$fH~d~=_Hz!er|`z2E% zocta>1s3jifxz|fP3D4^oMX04MT7!~dzz@3S5Oo_o*m~X&muT-UA)Pd*dGNe+o=11 zn)z0QFNJ02nebLC>wV{c%xAQZ+1iou)cP&o4c9z6pfUH}dr#n^LeEQNHJM-mcE1i4 zEYr(V;4XoaFsKH+`+j!E0Ox6c%%{p6Fd)`4)S^m57s#((TiYA;dtHsW%zFdz3c{j= zn1nWjPXRVZ`GQdf$drw3A_Q7e1$n$w~y5LV13+R)k7nFjj@V9LRfnzl4Se{eu2 z9IF9q$Q-*`cVTr@Aw=$e>Q*?_9YY^(vCTu;>Q{wz=Z`$B@OJ$WUbfe{r$qT>BJjv z;2*E6mdrhUrJb!X*II_wP;6bF#Qm%p_d_i)SVlIkUQ2y#-I;-=f9?t74(73`Bd~~d zw9;<|gt<-UK828sU?be!14s0#g4Q{QW|-f) zrrmwlLB>=8Zy{Ycj)H3XB6wY!nvMGbxVmc9Q^(bb@pSnrj5#=M+>7pUlf)X$Qdi5S z?&ycetK~tZWsCq7y4H!8;;3yM+%_22_j>AR;Dd}px?uKeK_EB2t(vh?Snq}Tf9>_7 z?9G6CqgncxbK;q_Id~d`L-8c0>(;JayJ%MtRx`g7{0z_5g$tO< zsZ38bIH~;e{`vFgaoHjsgf+_fV%g3|&!$DTZ^FKO9H)=-@reNO5u@k8JIN%_4tgLP z$R3L+XN8EYA&>@T#!f-SeD}ow06+jqL_t)*XPfZ(-Gcj!NOJbYlZdN7pNyCbx6GK*vt@eLeCGmOtPzU@ znz^&6M0_*P_`J-X?Z-|GhLh=o$wVjOTA1Ugs~pxVp|oD_DI`H&V8VBjPe1qK~Q!SWoDc0vACXro(5mQKL1kRz+p?LxJovuSN zowmWT5*E7exCcamjc}4^x#+(C@IAp|UjlYKR~7^VlkJ0njr#EGQel9ju2#Av2@4O) z_x<7F;mC3%EL_Ben{5!cWR9&z#=(FvpUrh5)Zzjm>}`Lv6)ikp0*5Rs()@CE3|zpx zDbpbS1)PAH@HE4Pu+jh4cNE%Uqdwo`V_${60-SJ)Lp0-y_-S7~#}3ats~@&)vP|o7 zygY0|z>NhkgcoqY_cV1+Bbe{lx;=jD!*1XluLhHAn_Pqr9JoC_{@7#bp@%*d@S*9M z0jDKenzpc8>F!;-qg~>c%!iD03tHTOkL{pPamfH|vpDGw-N^4FFiI*1WH@AAHg#=E z`}glpZ@v9yxSB+a$A)e?HR1Ybo5UX(3kr?@Q8B+{FfzEUm3bqZNS_t9WF)uXLcmWR zM4)7h+wjBJB`xDNHv-+n05qP!(fKC6?$|MuHiKKDqvh#e?A&!sf-#{P;Ffv&Uys!WB zl`CXyBV&(DkRM$c7hyaN2n}I`x$O8ZECPSn5BHIf;i+QpfF>B_c76S!OODJbnFPo} zeFF>wf?yLq_)YA8plgOMCu%xnB<9e_UqeXhXg84nj2&=msv}i!-zKsFF$Q(IUP%i{ zSb?wqGHtpFHOLAK_g>~U}&8WOVinPNlm^CkmC~L zCx!xZ8B6D`8$e3aVje*wmgt1D&EnE@?C7y@hc(V+c*k)1hv#3$V*Cn94FXrYd(xiWdxAdNhRC4j zdPcnsmPMTnO$5i{n)J}2htu@ME2)F)Bs1NMb59X9yyPE&&g)Fe)lBaiGx~Lq@!U` z@H+2DJOT`|hgM5wXuv~p(idJ(!jJfZbzo?U z-bQGQ&q^N@vJ}WP$kesfkqVoQQy2Qv%ggVS@v*%3A0Kq>{m=Y3|NcaP_=wRFfi-(MYejYk zTr_B6L7RkOkbw5FDUJ-&o_%}62Uup-$!5@)u0#^-LEK&>XqF)}S0;`=g`2y((nAk_ z3WUr|lZY(CDia@)vIHM#HZ&JZke_+%voLXNoHZwx$&Q%)=o$bLD2SG{3 zeRO0r4G#?mbEd{!hT7e+6$JESY{i8@LBbB(cE`{DNHpsBttM82>LGD3LsK_nw;i*) z@2GKBYb_JyqTvE00dUkKl_>XJB=0-?4JM-H=9sLwI^vzr^H&4yua#!rMj4 zXRSlR#*gUJuHCyxd$>0iad9f(Nnyg-kNxufcG@aKv14c`?PDArONAlFL0od2)zphK znqv!NA@dLf5^ah2pcZC{G7T&fCmo->aC+ZyXW`_mrY1J>1=*$!MJ zEITg%xqRWM@T2xz!Vbt%7YwcV+E1=|VPHFKv(GA6h#M096<}$|AW&{Qj!i6)K|nn9S!XP$Z{ec|!X5eslBoyK?e_;JkYye~dI z_~3)#(v-FO^cSCC$54TF=jdqEK{b}>AG;cdeY5|Ff!VC-{@L{xQXD-=!{MgSto(|r1ceLH-#T(mV9F0~l1p`Jm?HbvgHc{8! zo%=!oVExwNnCMd0&mIT5J_QV@pqT(=tpQIw_WATVKIhJzi!d+J}~MWc#l4m4EjejO}bF5-2#d>nkv;3h*xQ3IJ;NA9?Ul+TM>sgz z_6uj=FR+|eEu?L?;lJGs(^#eJ3$BZlRRb=!HL7Vu;GVclibjO7E|@8%>C7yC`)I*8 z7*`qUX{-hFbCaoofaz*1ifvdjTAQ&3W93~0f39Ad=G`tvhHOs6Vw@#Y)C{{zw{)zh z;qAoyFi&;QT84Sj0&wB%J89QwAAa5ljMc=`&B2Im;7&qTB7?Gxxp9!|kO<`+>k)q3 zA=j~T(psb~Hz>lOtbN*~tQ1H$>W#5gKMe(A|4(=UAX(+Ch#q`rNT)UH#k zwU<$H8Ay%0DRR>c8L-AKUr8I}?tkE}+tOxWv_gNI5fT?!ueC}yG%!fOx(4B*iu9hQ zD_v!7nQcotug2aa0XRcNb|t4_4nzk(70wuoX4Y^OH{t%uZ}DFEV$_lwtuVIPy-8s^ zlz%+un#q$qWZitA@%rem;w~i((*<)4I;tC1z!h5N>MBum-pUK)Ho`c=ge%mAknh;? zfOFq}(y2H&ucB%9UH@z#y!(!InX)*NnNWjk-x^B7b=qTp7Z?xHfT6rnQIqRdk>z~S zRc(?vybheE`MwD36ii#1d(z?Wy^;RnYtIrqKaf86=)p9Co7&3!7;c1fsR{g90e`A$ zT8IUzB2K6+O)gwdb?m#*-A-!Wj;_?=MvwLEHv%nLCRWr<9jA%MG}wF{q;(C~g;7Nd z1lpls?RJOut~B=TZ!>or(w2cP=3hJ35Mt%3SOdQJOgeRXEFC{}KF@trM&TNgZ2GjqkPV!~6NL~Fz<^=qxF zWe(`xmQ&U0>ei4pq1c#HQ9FTR0++22GUot#pLw+yUZoM93TgKHJmE*>G zP%iu!oIepDK4K7Z<`*V2giZ!ZD?$t;h^1SC%%hBwNK~|_H(d$bxF(zX`(fZ>%CmY( zfPxrMw+JL-mnCeq3E6Zflcu!meG!qq zgqXef!6VurAURw#vPN1$1$=>5saxFgd(;VB6dojM!c3F!;$n9B+00JJwnsM<7c+}4 zaB(bT+0*+(u z+)!gB9yy;ptXJ5H_u_%?2n);3a0A;Y)aMl}tq17Pb{AU4mBmb)v0b()tT(s}s0958in&=8~><^=?$eKl@nV9_^@Di5;D%{4YMJ$=90UnAmUYi7}xbpB0Wg z7Ja_~41W5aWx5gAwt+$R*Ej&9i0~IUgQbZ*6v91$dW<*W;n=m?3`VW&Agz@}?ecm= zZz32mk76S$m}6nztcIF7HifIq4Czp7tF&6eAduO}eDe$QxOT#vRjs>F<3@pdQ58)5 z>Y6S_TCzy#+zHb?W1u$zKW*5=##TG-xd-N!1%H)TDmt_Q6J3L#Sc6}JDN48DTi;r1 zdT8AmyI>@7d!k`c#J%mcG9A_TjYuwoxoreOQT!WrI1hzM!GvC*!D_mh`sZ zcg!JS%pf^G#eW51<3Uum=$g}kYgGe%6GzqJA36FS>6rT{m$(r2u}~4^J(*3dH+d{z zf?%4&1vL$iF~?dEwi=i-voj0n7k=?yqP6Xdwe0n`j?h;60se0r8cKKFrK<~RL&?-r z2ad`hf&qa8E-ir~z(~#X0s>gGRvNNI^|533+i$Q<=Cs9gjcLQ5Oc%iXFc?_1<6h5Pin%Rq;~^*{ z_~Dt~(u>Nx55|~&(`&>loDQhdO+)RIb2!!*#v;~Vo>M_L2M$%yMpJFKY-&t*-*H#! z?bwyVex6#z04U!oo?2-z#P3gOA-T=t`SQJ?DPQ8A{2Bv z`invmT3V05q{UX+<6(D}Pz*@}v>reI{Bxlo7$3iyMn`sp;?Ovxaq2cu+A?j6ibv-P&f}7>9^xxe2;E*fB((rLUC*Cj!JrjI8rjICxR0_!1RGMFhZ_FS+|F_*Ih#|1{FSPg@W zl@o@WG2zs(i{&o%8EtcWEmuUgO_uL>nJyVozh^CoWyb3c=bdFZx3xgNza3nNXQO05Tx(thOhVBVN4;3-3lmmiAYSr;e7l?O&(GP|X`bCA# z6gjeG=DjI*t2c7|P-Bzg01A{v>5B7McTwmZ@ULT@L>g4GGF7vCEF((}ci2qIU10x* znkpDE{4<(S5^U|;oLXR?1?f8)M>ecelU<9(bDbb(cGhB?^cQz6 zkS>`&pR7Lg<@|-qXk)P~6KgTLw+}e$x(Z#FSyaeCTWp?tnX+E2b3NVEPf+^&A{%f4 z6Jub^b{4eCws5hUcM9$bw>(NYGn($HW@&3&%kywK1p z{7eK^hXla8o_WvJ%{fp9BGYBc;Dc*ZjG&M4oO8&vz^e)jWv!s{uozQ7v?$gz=0Nn$ zhk4rXT0W%JdG1-JG=t}&eCuR)XOw>?f^a@NPwk8Et$>#*aGDuQO>S$r>!FHEbCWZ~ z>r|!TLE`mxjHFjz`)0a$?o!&)Rudi=?d(}%z_Jr`n!Q-Gs5V5vyOvM(FToRH6L{IV zmDIn`)LJT)-jt*n29=vaSX$>AlwF0Z!WFxVOkaEU?kDrwr3iRlB5r7kEN9oRk73Df zr@h8?vPTgC`MTWMA7Q*1>z?}txt>eML+Pnv0hqdeX|+Fg^jNz4?t3D3RO_ekP{}3i zf(MLI5Qcf3%xi$-&3(#rylwMk_K?^%u#L4ZD}M`}EN4gOC*`=gqWq-v=%2bDAd5_) z#7RLxpaZ+GDuPu=!J{C z_bLpLO|e~>xXCzV?LxE{A`{GG5GN)R?U1>yLmQmSv|kiUc|b7wZh21R(l&{NlhF3$ zPiD?z@>)IxxM(UQj~x8~o@yUG!Ut9u@t&>Lche*H0piACd(5;V{2fo* z?bD{M3pg<5L4|oX7+LG04qec+G=!!Df~3&qealvu$O{Xv0{f3T;t}BHlQP+*Uf;D( zmMIMU#CUSew%T@XM!hcjLBx1pv#)ItuC~LzTUKF=z2~A(#w*IOY>v?GQ?6rgz4p~- z#YO9m@v4lmzs37#8_#I5vNFfrG51-86B$Z{8|RGQZHsO2J>O9q72g%Gt-I1@N70mv zJRW@!kIgm{KDdriU{dazeRoG++bSGwd-T~h@oaIu6Bf=JU6=yL`0bI$Eic5@@4J4y z9%D&AWzhUB&XsrK3pL8g!8yj6 zwpf2)6W=|eeHB>w+y2B+-p#-GD^BKn;xha8=kMgz z%UBmyQWx$}X6&hg*^Izj$4!?}T%B4GMyogD`nM$gM60e}HjKhL9OX2^hT}4g23~rO z2?3l32iU|cTOkxk>A%`eHklF!#FA;4;8k|aex#GV9dH3#fmvN*=j3_@7N3v4e4c4#0p3K!?T-RhNG|yyk+h=SIhj$sVj5h2Wgybm2=c$GLOrZ8*i$$ zb$)88Hh9*|W5z7B!qBbHI(HabaMiWKSP#@Hz@nL$J~Yk>E@a`k|K9tsT)Y>;+NrVg z^lveQhZ^bwim@4<7Sy0gj=eZRU29m296L4Vy67&GspmW2c_Hm0Ahj9Sx(TCXf!6|= zsEjkJsWEF4_&_SxRlr@}2F+x6_usKE_2EKtVf0|>!=Q4Bb?t}M|s{6a_ggwst)g&9a5*ZpFJah=x z^1Lt0JUAmhL*j^mVJr~djb({oeSS-W91qJ?K%YQ>n8U?UA;Z+|G0(6nDiFq+@js6X8TCnOP?+uQ{)IPDV{al_gW(6RAYzD9?vD{4Ih8;&RP< zenP`dJyoVtW0F~p1qY$vJtyR?Xz8c!2*x>KX*k_Hulh_HQDbc#@iv(7w-^Ipu z6qgs5~k-5>73wTU!8L!! zch0uo_K0t`$3x3TIebpWssX=iC%zUC`5cf*m zb$1~iGXKjB5j!n(;%3fVUWga+Jsh$zMNu`AWjkjC{QF={a1 zUaMk$bg)zQ?2PeNd2Eip_jdZ_U;ahhG`GM&vv&mn#Li>mBZQ~%ap6L%CZ6A+P-2c& zA+U(IdG6)()6NCg2m@Ew(aNi2&?=#I9LmF5wVZZtA4QnB#xBvP(ylx1pxx3Dge~UO z^{H#n6XzylNnfs!q+rL;NE$nTKK-ZP`>$k9`b>KDl~*DI(;R|G53w%&13S|0eS3)E z+J{A!O&_sZXvJA(?$zSrGeck9&`r0#TH?^_`eGJ7H@0fu| zK}8xHo9OYB9hJU{SGF};AJg1tX&2XOnR}L%`K8``Mv zBD;(qPcMDv_4KcP`Bz9=ye+K~pL2QaJ%kZ=q+cVUz$6wb+?CJ>XcYiOSvPU9L?G7E zpsSMew4Rt8VWOpM8oEu3z+J>to2~_fvUGC<`hW&EJj&g@Yfr?p-TD96d$T9WuKUjK zWL8yX?fcf%)%%9V4icnDiUh@>q><$rGBonYej3|~d2sl_b~rqaaCmG#`faR;iO?V5 zm>AFaLE>mEiW-v=cYy*R5&!`-dO@8s>OE_MT;Ns$dGZ+BMSyvw=g z{LVS|e1AK>FJ?BMo}R)<|8cEMAFzrAQB>a^c+p;pAcw|~^Km?b@H zX9)ZK+K(giwa;2KvJ-+PO`Bu@0$)KNNEP?H#_~$fePZpcEPb5UzET7|$!ld0I%vN4 zy~r&enXSn{ykA#3YS_Y-mlyNi&4tOAHzOz}XMDS0GFY9|`Gw(&C%%@P(BrrZDw0TF(3I!((H~qNZQ}(? zC3q17Y^iGi41T*XyO!i0djIqUW7u6WYjWUYzZD~=zqWq%F z{IL7~?yaL|9RJR3$FJrD_N6ouEJ=@$a?-3FzKuPM$sv&JTS(IOKXrm(2dpRs@4(4(2*=Tuwq8Ik^Se4gQn_~Q$PYsX zG_){3+aTc*l2s+a`T@+(&A=e7!i*52d36DrWQ`q!492*;N+?ahb(m~HFZ(F^3|i!I zlbK%`3>knPqC5%Sx3F^$4P_l62qss)M`SF|o_zx8t0qZCr$S2u(3_+DGLetkF+XZW zRK89`B*#rR4)e}2CC^7roFQBAr_$fN{7U-57k-2Ka6iDy0d@N9WB7IuOW&Xh^urn^ zPl7DRhysTQB!c@gHAmXJnqDPe$XCDe$AC+HaB{S`YlLNPg)v+sjHq+iaa|?q(lUN1 z>zIWd$Nv5BiR1JONx*o9&hbl_xTz@!L0Kp33-2@h^?AQQU&fjtR>P5*!ENGG^J;Xr z4pIw1y;=r9tKoDF{p(sFJ+^qy`vy{5A)S3ED!}RC3;F-A4Pj@aLFYBH<#@!t6uCG8?))w5!Y&zZDGKApzhWvUsm8;tbCyD1uFl60~KQ zyc&j8HS*s8fV_tg#HH#EOg9t2Y~2iYL);o6PtvL3und_hHAk+~GMxrp(d^T(yUt7d zBO=DZfSIXV=3)szZ8rC1G-o^PfAUv8o4)(K7t?pX|5Ext|MkC0XC_I=2+h4eLj58@ zTEo2W=B;@`0rwD~fO1hC&Mp!JphTv3r2T`FhhwbTuaN|izA)H>@bh#Cy&)40b0k*IhAsR9qyB!?C6zT5AwPaf1>VBNj1 zsDovBtoYEpXrtG-#dVEiP88`9_Xh)&C8g5A>nuZNg<TGIQoN7y{4pFUsRMm&8Kk zG5@{S7B8J#oha7{9JlXbj0)#>>7pbjgZsu!*2@P*Tdik)TJi0#0M3+}ZCs1r(UiD2 z`u%lcu@t`MAu3*A#tOFqzSJjWT?u zov{Cy_vHS89*yzj?|c2hvji)}I19Q`SHFw?*jpDG6fMZ@p%j|s!fKsjjPX3{5N1ew z+FXpgpaKh&o7X8-bF-fDOxj^IoZ^^0D{EJ552Ryp@@M|e{IuMUc}`m19+JOr@eeNXCvQ^=dB!I_68mfJi_*jJ@DP0Ionv2E#EQ8bNC3lyI%_<6L(> zdC)oK{4{5UAzHn+yT^o?`cD9k0sDfdCF11w^$)`o*!SGODdg{q1(i^Y567AEx>gJ7GsUK!0YqJ6V$Q#V@u}WXH7(IzREsDnUPi(_) zrNsMg1+dvJ$Kd-DTKO#O!@}%L;aCOw*jB^+S|6jk-F^2ik$?zeySSQG@ZVTNJF<=0 z%@*OF6hw)QV}jsB5j2LjjwyvFYMu?KVMM!NAYeR8Tqib&1b+be&>~R8R?wFBG&E9! zO;>OY<2RTL8i%%kTJ!8I{1V^`n%kfslY;t@pmzFty7?wd1^wsXEc4!zNo)nYmO8U- z|MnyZP3q|^bRHLr=0^<=2^@2ikxPYhGT%%?VwaFF(mRENW_g$81Nlq39=5%B4N z-ZR)248an#T7xd<$eKQThX`nB&)&U!E%g(~V6?vyeg;cBj30#n(7%Go(JE1%mJtMY z5TVfEBu>s)kLVXQW1DWuF!|eVr=V>vZ+6YYXEfi9!;$J z`UYd}Vl|acoH&IZQO#yH?=6@lnH7Z+S@4#Hc7}vLedZ){feiHYm(SaRp~}7Cx@v`Z zwl6C_GG=+K)3>z8u&#zC?(NWbNG3r`0R&%OzGt(X-S_gI6CdK;CIj(4o%f&)&kG}? zg8?C!aXHKkLw-4UkH6JK>~2nk-Cz6n99;SQPdCT}Px-zKAPXRuN4#~knwFU-B7ftU z6V!ToZ%hy>Bv9mM{C0r~=|9J8pId%TKA!=#M`LEW6N{Gg2#Gn*b3ZtK%m%#IXDVTL z^S5Ob_051jAG2Ns-2>?C`5ia!`%_$-X=n>G4V5^!pyoQUc+r+zHtlTmjW6i{pa2FJ z0MDzo+`n0d%tI{Dydrain1V7~Egk*yGi;74w|H^#5^^yP|C)VeT1T3~N6?TLW-3NI z9e>opbCjh7B-$>q*}Tu)=x=s>oIt~V*ng~$fJYyBE&b;HUTv4Z!zX}pl@?`9MlNrE zU8EbA#UQXx-HhRHuz=hKDn@ztm=rGY9%;_|ITpFN%cfW#D<8LH#w6^7C5mmNocxIV zoESrt<0cInC*$|eha*~Ji7PV;`hU^-aS*4Ykx)=@6q0( z-n)1IGNP_qb-foJWct=6`@*9b>o9nv^@s>A?5_d{1E9=+ZD* zMEY6*P`3j>1$i|9u^=_Z0}rdx-=Wc`AEdJ&a0t_+qlb^ATkl*6XK9%SpQWR;S^$|V zUP5R|kb+ZKD-4>^lqxWJxHOO}LLUym{z`tI%V?F`cz<&3c8N%d^w)N~^ACDchjqgC zYSQJHS)YM)77vyD%I^p5qC_qHpoeI~=98Lk4L{GQ_)nH}i0Q75Vp zWy&yHtn*xHy?s=nFJut54#Ff(VxG)+Z^w_sFuX=mYRCMq4{cg!9}%%&2K?w3DLpo* zkD+Qc8TE}CQK;Ip32G-}xCZlrF(6@>%jxc|*|be0v$jplMHxry6EL^rgD_wO=~|Jr z!^|=Lbk;U({3hdN2YS~Bv&P2pYa67OYlxa_$Lk;;e`ler>jD(v9T17z?1wy2I7S`q z8_Jak&IO}$^~1!ht2JWW92lQSKR)+%>KhzREih> zYrdll%Am$uA4%tr=5~2~Z>&AO!#E!ma8%hpl;?Ua6XEmx#1_|aC2b2cw0!g<@wdr9 zyiYd-Zm^{F}kT!0}ifWcivr=sdQ&?LNaY;)cfH+`Z=Edk*4U zHba^{pXnga<#^~`Jv_v@TqQw_cgCUE_h*1FzT;)j1#zrVr{das-4DF-zhFQta~rX_Q%%9Tz;{PeFT6?Oxk>h7&oMAzs^*m#@u$ z*=t<{8U*2mo*4%jjo55U5G%i=^1k=x-`*e8jBE0>yU))>{4{^_xbhC^C3t?=-I<>8 zeA<^mcictA@^>+gf}yxqOm57*I`Y#Ow%fywMISWimH}s`p-=I*FT{98l*OV3akxD9 z{{FgfP4r4*Y~Ejc^75fYv10s z7We(Uz8x4g{vlgYhvNGom&M_@<~_>tqW3Ci@43DE#WSgC?u*6&f9HA7IMDcd(7iDM z?!WB8zbJHnxw$_$$`}aX#I6yvB%Slr<=T4$QRaUzk(K@xG8LNumb;jJ43UeX9WXdU ze!BdqAu%q^1h^#PDD3j)CD^z68f zHUM~s#}B2ELnDN4ZBL7z5>};C9aXXzy3)72q*W5dXwynrya=+naF_eTR-bi?0 zOly?T?+_7cdipM5e$g_~4mAs-hAW3w8!(1C$#2>(0!%>q8cd_iPK2lplO^a#d1Y+& zOQ6hFA~(6;B5*~cQ@pk-{WuP@xvo{5( zWM1EZ)}bwe2-Z_t;BCX9%uFOSZkjV~z?8Z!+ZUSsRba}hj9tNM0Db#}b0zw5dj(D0 z#o2W3!c;`ND#JYcP<@Na+$WPdO8x``0_bDZO%4T_qgl*?+F<&sFd1qzdQC7%FoJbx z(@8|REts7_=ABah(Mo@s+BVrA5szRNdNG^QtgVbcieYpeA63TI`sQpzNUGvjpe6-E z2JPbgOndafEEDcjdRRB37jDuw&Q1O3BuK2alqWM;rtOX)-y5wk5#iuZJM@`Q<74C~ z$0U|_k^4x~IOl;hlA$a7R~0IR&z60~Gt@>DxX0^VJG|a=uJ9gH&{b^VQ$n4J&1)4_ z%B<6qQJ#I7-*3JN*l37M)9zjQ@Q3|xlYw}j9?Z+x{TDgloxH(GH%j&sh5W*da0+FV+`w941zmw~^F>n)4RV`51=>mGFA z4(o7_p8S5V&F6Y^{G$w|?*$_g=eXJavK>z1EXlA$nTJewNfJPqhx&4H^H}jW77Omr znuiRYt$VbAE8YKDH%)rf(C}WP{ZfC|H)e0y(l3t{UvBib_d&1t*r&FU6Mkn}=hs$9 zeW-C1ZGUmz7qgm!{m1m@$W>6ok!d8b+FP!RUZy>@v%0bQY+jVsXHQ+?g5sK>RiUNJ z{a^H*WyVG0%4`oZ_V zpU%DYHrbo6aV-*O7>0Hvr^k;SP4lxem{Kf^S3;h(qM2P*N&*&p8@QEJ`$)TQ@nj9S)*KgVCHq(~M<8Qr^WDejS^a z3erszlu9$Dw)!rCT|(0DyTiF5gQ1Dt6jF=gzCnqM;=BbtR%B^Y2TE?GbjQkwXnReP%%Lt$+!vG$QNJ@M! zPS4S^P9adIUnOw7e_e+tR|kIs z^on|Qm+*^-`f^^UZ7$rwH(}=7&CpJ4wXUX_9mbV?KpQoS(j-bBgfh?DHm3>uVZI0B zJTOE;K%D(+ly!CHZkoM)Hyu1ipBX9{p8)+@6v(y0aLX9G4lFOz7&Jg#`qFT2s{zh^ zCm40Di)+_qGWi!;9O$C9lBUJ@SJR;GClc<_euV)hEp;7`;Z@M!b9~pygt#91UeP4V ze$^S;F{bIA3q}=2N6nZQ8eKD@XmOuDLQpjNf(BEUOxM5!l$S?9ehv+a->!XIj&bTk zG7k2*>y#xa9xv*c>sORy8}ofdy}dTt)gYtwi(Sj~lY93yu5VD5U%3s@7J)z}LR{rFN<{Y_iyoq|z2nHv+56l5q93Hi{<<`( z5N*hm+ofMoueiq*pivW_5zKn@ORh8P3Db(PX}?C_^4hPvXwwebyxWvqYSE|np8vPB zljl{g<4^O54>E2($Tj<)dH+4u>;3Dtf4uB3^WN{qJh}IqonpNBUF;jxCU=N^oj=wq zt^pLO1Gw_(7Sd%+32I11D;4TQkxECqbgE>WECWC`a4Md@U4KM>F6Ly8)i=wC;UK*fU_}e zGTP8c*8p0HfiyL@mPP?BWW9h4m^$(PDPw-+Jfn&*O-MM2o^<{CRocEu6r%%ZDsa*) zqg4qYE(le40lp=mK$!?nnk2~(DETGbE=+_D!x`jj3bu$zj$lwtLJK|_JNO2KBpo25 zQ?NoMKViZ`o!f~Br4wjRUpJ;ab42a~_(u=mFMtEMwA!)X9VEOy4O=Ss(sTwGOPdS-o5~tuG^9;vs{^pPKQ?f7Z>7;@W!6_^1>5lo4B@s80ky$&?Fw3inU%DG zxmf!s5_SOE#E2Q`(T;Eryc3!f=)Fbw+&f%1N(ODrzLxlO&H)IKbhpZE0H$kbtaNVI zIU1Okmh}aJfv7?&?bZeKn%I(?KE|Z)))oMIo$8DaGb}4{&VsOb z8PQgr1;eToI_fDf1-!;shX%f9p$KD%d(l*_(+)dzw?YvGu;DTJ7|Lp3a#-L=zv5YZrC|glc`xnGuCOQ_jUS# zu}7Os;)q@h4FDXJeayPBgDGE_n!!l)aI8eg-27tAr2;_#4J-6Vt;*^Gu*cY-3KyFhVTmyu?N$ zMLSB2IYT+uP*K&m-mC179hp*VE3+@1*^2jN{Am1n(6QqBz1RJ+_ji%hFS{nq=Qk

    mILo9WfpUd2b?Li(@&tA7dr(++=$s4RC08+tfwncux~Dc!z) z1qt>%i!~q(fW0Mv1T2_W#4*&<*BfRU)3ei*Jq>2S-dR*bJnE!vRF9H52( z*yyjL*#uw#rlu7sth;J11a$sZ%DD!3*=B&YlK8BxGLU+E4y1);Z1;)06VYt|%Mqyt z@DS2XY9z2RM*YQ07s%#3oK8OZc$gTOr$AeGnF{$opAGE6{03)VLYum8bSpD?J3H>t zn0A|OSHPiPm#8MR890aw2)(YbLl?B>`e#YHVK4Os(Zos6E8J1jvIVdT!3y`9OG9mh zQfiqPLzL?5tv`Yhj<(^})PgGzk%n_P+*Xl5w_r}wfldB8G%_q~n4VZ4)d_&)8WQjy zzy4}kAYou1zA8I}XEm{2I~`e-P^;-^ zC3#=~dCJ}qG|D*9H^Mm{8g!u7VF>-3#~z9Za!cT_tiv;x1*1hf=_H;n4WO-3ZI}oS z1=d#M0a@_vpicpj@GpRSfT+*qdU2xtpoCq|1xBx~`igrxps9Rk;%g9ukw%H!FC|PsO=%p?TbMwq?L$1o0Ikhw^W}HH6$El2` z{!5yjDWuXY%nxLwepHMd&AMdL)L074^-CEUfgzwkBas11W*qW0A6x)zlk56n_-5>U+btNd-$|a@8}i>z`f17?rx5kkHXeu zAU+Dc*la_S0!<1uDew!TKmkV9bYm~! zUZ3eFkHhA2dh^GxQeKS^uEe4bunjl@c-mz5z$H6wBDDksD#g}>N{MzbFJfD;M>u9;A|q|q0DRI* zkX(Zy(L6~;LZB+J)xJGU#Mqa~kgk>?7!te++>II}5Q@MNn2hCiKnsBB&;cC1G0WKo zD9ecGJnZ?XD|FKTNGb0I5^6JUtF_T=W1HLoCTt5JX8UN5QJe;c2GX6ow~^fPT>MbX zgl*q$7$Oypz~=}obwD2;0!XitgF*y1a>mL57OSY}<{0NSyJmSv5s#!8ht z7#FPoWkI!0w>9W0(3fEdUjgW2^r1!a2uSA|&-Wu~>M#t}*|8?`;kaO^Ank`{@NSMw zuqK)ut=UL6*k^)FfGnW6yW5;RUC|!Rm+Yrjd?3{3Xl|rGf#z3=Il{b$YuvZ*`v&{b zU=h+65bJ%?SVq@A5>Tr#*Z*WkW)AQyqwB}YX@(^uu>}p6@#$GKJ2V=Yb$lz#?=cTB zHymwLo_5Hr+TT1D$v=KT#BavedZ5rsW5{`E>y^BU^aEP`O`O2hpnHhpHhEa*6jQC{e z&!F?T&e!_7tZ$;lbI8)4OGL#AUlQ)uxxqFl!Iys0SLc0wpMt4ij5{y*3dUZ>Lb_?5 z<$1LgK?CNH%!mFo(%e4CeiXcWxIf-Yl<5}lrAE1q5zCgjmUi}|T&9efc2tQ(q}*R ze1MDdZ@-yt;@6v0&6#iz@TPf-V8WzYU4(R`T4BR2{!(JQ0y7~v zz!oC_qzpurFrcjf8iBet`r1_sQmQzG_V!HzmWI;k*clwBFjf`r6LN$(@C!_Wrv$UxNWZ0- z(UoK*^rtW~Q3(?eX)S28ae|$Q+{1l4m}=OTkic?JWa47Z?6-<%D$rgGFm$KiWN6t zknAHFJe`rvW7G|;`iX4hc-0xVlj9|9{>>gP4eTeGG&Nz;FqjBwM%g+o%UtC1UZb{1 zznpAt7=Vpye>sv5gRRJ>J`d{qO5AD$F z0AY}CZ?6!NxJ=%P=``GbD9RM9A3bs~y>sajG&HFw%n5ZdTAp>+*C>+rQ6Du!ngcPs z(LlXHPK(Z9$_)GZ@?XD{&YU?z-jSimwXuq0^af=~qfSg1O(?04L-;GHiJ&}l3duAc zIeZkY6sB`L*(7u^uWhFc1pVoJ$YYhU0ey77cmBjN>Bc{SKh+8bGt9_fm-WjqG_@x* z%PTRqG;Nac)UZsNsS@&C<`xVDlRGHo=Vv?jA?FZy91 z09l$^0G1$7fE$66sKcal*1;{3!vTCWso)_2*3=LPV03miQk6`F!6Cd)=0dQu>GjZ} zgnfBi1!kiGcufALQ@9SpngG>sl2zJkum*E^Xf9%wUi}!hF>NyXjDSf%Ez@EWHo=jm zTC3!3Seaf*=gyx?mti9ApjmkQiN~WY5#|(dSHo#pTm0>ng*0{RdTPOhsvW$$ic@xJ zunVAwGjK%ZK|)Lz-%S9c*{4ZOk(Rg74ne~Xo^3R*B_l2Y@XTYOFNRsbwaKrcy)eV@ zG8!jvCQ@U%m+w*srZ@wDcT8y_|tkl0= zWloSxP3GCaB;oXHJ?Tp$Na3gsV10iEvMzdgqu};d| zLVNP^i$6#cM<(#6m>`KuH9K`1fB;wkNSN$Nvx^qMgeE3N0}?1KVA_IG zB0WczzJUNNS<8SkH&R}uo?u2md>er47N#~`>Bz}5>4~SGM;becIgDXp2@|@5L>dSL zmZseR6V?gC%&J{bI=zO3exB$3)r;RxFMReh0mhe>wqPK70b@v&X_HcDnT0!dZw27- zzL4lbj~=uYO2v(?q>qMi{LO;9h<3&6ssOAiN$WPz*cjPJlMee}dU`qy3=aX4(RSc` zE5OyP>oyvjUVyRM82iJJv*i^)K6Mak8M(&qVEAN2(D>lt8y}e#ZSJMvxpU_uyY$<9 z|LP|{mHxq({$qSR-brtsdo%szx4xM^_p6@+@EP%EC-oB=v;^?oUY$$-;J1G>-8}y$ z<~UQS15mvVgGOtkUzL_y|23F^5=`6V_@VTfPk)lS!y`bS723Q6(`X_#5Fqv6CX@J0 z`mh~4`;l}2ST~46_Au@4hd~R8KTRo{BZ77X$d@sLSrXex<1H8ffu-QER>F6H`pU$u z;6%TMBW(-dRc%B^o$TE>%c^-Oh22v&iBj7mGh*4&-OVwhwxSi2ozO@y79(^pQvFTo z3*#e`rbZ=4t>Uq?$7A|Dz^e)A!#Q~sMtBF)K9lxou%>os8%OODe&>vE{8BoC3AKxY z0nzCmEzPf=`W+@5%qO6Ioh;<$_}GL&aDRT@Z0#_bOPHWRgJraTb42x;!(V6{W^x>c zVU`JYoiX=~mtIU=+Y4z3=lh8Rhp83WBCz#R>$keP0Q1$EZr-^~`w4MOn{VB`o-Wl@!B0K)ln==fwh1hcPp(Rq58`>zs}Y>Ym14q|v1 zeXxkLzkX6#JI1_%_BH4u%?yHY^vKcl&Xp@^39Uu6M+Sn4=sU(pVG*ebE;3C1oEOl~ z^(UAH#sx&rA9i_*#e9%)z}<&IgJyz`FtXSVH1~2ty=tb{rimWsLNLN{``s~`za0zt zJz%LmuUO}NH|+gz>%HIZKZ;wEfp`>qrCFyY1)3CSQs6^GfnpKdTjhHUMuT}Mu5lqP zJ}$EHQ341^GgI>6(aH3cuY4T|WPAF=Cq4#%!?pr2xUDHoNdItV1qA3TTETC@kgbAU z0ka@$ZG9*8_KyKxxD8;S4IL(0Ceavl&joQ|FDPyNH=NF@OW z+@sl&_UPL%JZ;$9YmTMVRp7LO^Y7dorXRzDktsSP{(v?$21-FSvk-7pLMqLZX{SK1 zXs=n2`v|RR-2~)nA!L}$ebBBDBF=v}?P^+r$rC0eZEe{xSca~j zP_6V5ytZ@J=NCMq;{g<0__FU8$eCs9pK)x4#FS-vZ#Z zhhN3Q(mdv8L+RAcsq}*%ycE~yuW;x3?KFdgT4&xaqU@~V(@;T%&3|$;dg>)9w`E4{NH32d`VJpvf7YtknIV^M(=2T$L zG8vlH9MxbHYwH;lmSyau8T6BJk%=%0R}py+7)l!jzHp^H&*z|~$dQ|!BFlLw`Rfzm``1n}*L{B+gedk@ON;dJ4 z1F3@FN;h+|(gI_$24g|;xW}J3%{VHj`K9f2?cH}%>);S{S!MrnI&|VBTAy;#-0b0{rTLw{ z7BYV}u9I98GcrCfIypE1?Fd?GvSi{t&D}J=gUJ)r(`V9N=GjfAA^&xce~tH;r@1Q3 z0841xv}U3^cn{cTM3|x;j+dg-iuYcW$+h{n<>h_H*N1g$G7uluo@>^-Nr5H>niP1% zC{Qf2Rx1`tR>=TcG761jf;EAvADIVD0$fcs6RB2v()Yjj-AG0@j(znYz)_kjvz;D)>f->vL9$sJ z;&C(0z*H=(tN_R~AHko2Tn@&R7i1VCKN61d-2o$@qwWs-GBT@xwdKVbBf%FK*gvu zMz}GulAA!AxUvD9e2xyhY8{Fsa@IrULq}A@Cqvi(Oxo0MDHR8#b<(b};juIWBQ!-0 z2P#5NjcFi%TN(pYc46+b45M_5To!%=e+~vsRK~|9@MTy}i#WGmzj{9PfJo>jo<$Tc zfOc;WNys)Zh0-~gEYoYjv?vS|RY_WC4#K>LHEEd|z79cK&n8S+y$em4 zOa!re)ne@MdjrO@60~CcLdPw-tP>iWiQ0%_Ta;VxD5c5Mhtq+HaWa6Tc`|Afo5_UjLB-6nV+GaW|*e^FkEUDE2RNU=vLF6+cz-ZTS~n!_~ZCCjlp1Eyl^f}9zTpJ zUmr>6X3>=0W}H;2t{fC4%Of=lRRN9UC3vd1jAa2*$y& z?|CASVa@}YmM!Ln$4fj@CNBJnU}To? zw^B2qb|IHXSzgyDH%j++9LPuG)Q9j-lY#gUc3QK_O$szA@bjfWfZcsX?p@6HoofDk z00jc@uyDHo7xdhJ%-{Dh5d1bcsUU5gkdd0iT)1#Ped77&(geVyg0#`h#+yjPm4dT! z6E%l#@8S140N8vC0s;YoCN_eVRRE13v#qt0MSch1y$ndG0A`0UH|ocRW(wBSqy;qOgcm({*m?gC$@$LHO=vySH-shb3S^LOXc^v%2J#?@=-&~Sh1 zg30260P(goi0R7G0=XX0I;<0MNL%_+J0?$N{l)}MY5q2v1e{H{1%QbIbFCF74H_eB zPwPnFTaXN^U0T6x40|T7=L_wR+L$tJ6e=opuJaqUN-#?N<$jnhKsX~dG+Fv-2o|M_ z8ZGaac4{OxNxCN#bWF<7ZDSTC?HHv&E1lJqPUrEj=?dpDE0fXiJtNo*ZG`2~&u+zc ztCDRGIae4TCF@OJShsjban3r14n;X2i1WtK;>)H=GYff0B9BpTW0_boFB&#K*pL-+vsJS&(tjm&MHG=tR6L z`rJ8c{Vd;O+?M;#ZY;`^lWXjA_Cvch8Hf*U*EK8Nq`==D3gjgvEZ@-=l$Z?y~Pt?A`oNo7V5YtgIY+Wc8zS(Z(!H{sWdu17?S=a%#Ms~ zBj7F(?M2^%um=}3aKE)8iXCBgla7+L`TYIA{nS1ICump=S2E3 zW;Tb9o=Q(Y{S?W_rm?rak?u|_DZd3+B^&bC7!IA7BY_leT;tr-6aX5hT_nBjJbM%g zdk;>>>m<%v-NAOe+vHoci}ti)cC?K|vQ6_N#KZy_rN%l(n|nb(Gy_1=e?cFG?(W_I zrPjGjoy|bK3gEY$Qt1x15U6UZmOkG;{6W|jifJq=}Sb#+MwMl zX_@Fj7cX84$6Z5@wh+p7l;nWpJ(>i;@DS}u-xlZm1`N*ZH0DX^W*V)J;p;FS$CkGV zVT#F(k(@fZ0k+UrvlN*?O@p))Q<#5cR2Z3+N$LyD&5B*+;iIlMcf(ApOoqqULP@bStM{4`f?AY98^>`l7 zr%vY2$R>UHt>!sS1pTQd*8)}9X~8T_&5Ql)W*tow=okyBIL~Q;d97`$dGJQcQ!@hi zuM>%i;S>2U)RGt~Hu8Bi%8HE6lq}P%lwGG_!|(3EDAr)WHqi(%i~;5In1Mm}Rm`6j zw$i0b7t_Mc8|mN>8QOb?qud^%nytWOuVcd3LiDn;j~z-E?@px~jOE8Z`RVA}xw#qU z(O~-fzxnIw>tFk7x^&@fOqSjW+Nq`b)F(d~nn)w8IY#~r$Li(fr8GF&lb-+B$J4PR z$7v4?Ipb5GiB0IBGkEX7ApK2l2Iy{P_Fn2@xZEn^w}d3Xxlu3*>_9ul0;F!0zK)v) zUGIOlK{sfr*^fRH@+y*&Z||KgfN5SFR}*Oxs($bM_u9 z=uptHICtMS7r`P>fPJ;gFl^#{smX=wEfzeSCRr4jlE3=Ze;+{nG$s*4LtRJ&xgX%% z2B_M?Y(aq2LPxi?8FQZnTr&g!j)|KzyfA_c)-(}*b8~YE0MB>;EF~hf)R1VKrP=67 zZ2%zg@M~{fOn?3#{w#ph;P|n00e)G?f&ZEVku5*}R^z@V>+-px? zHOsA5m(oiSsRze}!9K7G{?Kqkwe4>hJyTKOvMT&gV#n zzw`BPrtyi9bn5sx%;1yh^3BW9=A*|SOJ~kLjr10i8BCFkmeW7biw}Y3WoUCkH9#lQ z`P&STb^6~(QQZK)W&9eti0;$TxrUQ`B8l8mx()MnBAtP*=J;U1(cLCF6YLvOwiV#* zE5e9T(!2y3 zhjFq{lM7`_Uk}WLHm3*yi$gwR{$RB)E#oJ#IZs&Qg~im@PF@K*wre*d5TetP-k zmjV3qX>xKheg1_PC~t^}P(0i0*X^bBd;iIA2Qz);<}Eadm@^R#s;38E8yJ2~4zaMp z{EEn3(O>41v43F}bued4tgP~0F`5*if*BGBFL*yOB4iMyU$OBk?hV>XJJ0diVeYs= z?f5_@>YhIeE7mZz(?2S-chFxadN;K{&Yxh&d7?fs58J%Ac=yJ=KHw4D-jjiN1nb+Z zQj-Er3jAH7z(d}f9)8HFzf08lg|sym&OJ{me((KuKYlm9W1kLEs^^DQ6F_B;367NT zx%>h|0CeZiUkFfVJpChwC&Si1A}X6l8iR+d@h6jg-(GrZ}5I&v0^UZIC zqd2`5@$`+wzq(4k3L-{bzH|{LZ#Yd(90^IkHu{=f-MP7n7U?Q=hF&mzV-ttcQ%^sh z`bLR11hX?faTG^f{6sKsvOA4%WG3S2=~);Z7(I@y0cyALUw}aTZ;c2#GJkC_Oe16M zI7{Q)UBxU3txhLN+%)G>)3bp#$DySbAu>+GyhX$!+AHpZ91Vd31HvIA-H?CDGE^hYOCafX}FLuhD|a z_#c!R|1FqYyw1F;uyeIN$$cTG8e@uQSLuc9gKRC}ES86-ZYtRmVYi>g`d4`SE zyvC`L{UsXO7VE~dohNE2!e_#Lj@c43vdaYNV80Duwk~zRw}Anubue6!P?3Gxqp!^h z{tP|%15s)upDUH{`Jp{dVKY*1({`Qg50Vq5bzmo5XD-Ra^z;uwTlyQi9Xoz3n2uSP z(KSKKpXM`YKHz}zw2L{Y zkC64Te++~W&fZ-8pv`MyEb)DB|3Mc%g2$Q+#3R@#%_=o1(4;_<0*?X(T+rP7-n-9_ zSVW8OIL9#oOqgJBk7hqEyaEFtO@I?K_{Mn_f5D5u`7i$R>zFBgf-sO{WU%d{NY1h7 z3br&QP|F|?a*?I@`1o)^lak|bY~@>^Psvtfo1Uc^8z}S1MiDPcLFx^Je4; zc;WM3BvR7=+6yGu03fCIW8+5%Z%P31El8GE2=AHm8z4~z>26OczW8-)n19PUd5WXianBs~}*NVbI(~I=C76Wp;KZ96|-ECgBQS3h1Ft_9_za z&_-~r42jH!=26~$@xsN_ODJ2j`p!?!ME-;yz5K(_Gz19!Y&o4h^El>KGwJO&-y+`s z_4MEUxBpE#aqL)ttraA{ufFn1dgt;*{8!GUgNMe_?805@JeJ1MYP9#_yx!f9l$k_- z^lN}!7`>Y}ucx^?QzV(gnHFCVL&|O#`WA=eGC2dx<*-2>5FL?A(7Ov2Q|};l__V1V zAC5yu4?!9Jao+w>rLaXm)}W*Q86B#mY@lEniLeodS_tpSEo_co{xP6r5EwQ2pW}*S zVnel^9%n!Sf*D(U9Ev7V3&xdF0{C-HXdx)izCp*(C|m7-z&C?>?{Q4G!ns65EX=ON zsshq&qC$DEb+O+C#g=KZLKB$z9RB0*?KkHQBEVRZsc=GgFGsmAe{5T5SY#k%N@$F} zD>CjfU6d5}*nShoIcKVjbCWC@>QqyxP0a7i-d@MY#PQmqnGnyBxod}EY(e9mT{74@|_e6mK3G(&QTdFj|Jg5&R)E4^nZ}% z(I1>QCx_?UqJKGIvON2~!aS_0Sz~h?Sloj)`@we^T};urzaMnnqjs#xKs;(a(yULD z0!<1uDe#C;z{SjM?{_SA4?E66>>XYcl2H(miz++;pu)srtKrjNh{f~guY^7G6K9X5 zkA3W!uul#^!Zn3dH6Fts7gj-zODyZK>v#NiJ3U@#vKX(kfQkoa@H6;Psi!Xmc* z|K{KR-#9Ek4Ir6J-DnrK01G-j8;VsRCn!F4^2v~RclTjBfqB(VZ8^a8Ey9gX9GFPg zZro0z!=vf==wXsxbw@OzBS((|ZVzEM|3Dml)6(7z>D?*Y-AF& z4_|^9Z6vCQ4AlUcMS!>(3AHd=n4ip|dAN(F;o9{Z=|``>PMc4qb8nx=JZLc;J8?8U z|IBmg4$Q>sZ@!Jc!dm*yx4w&i$Q|xoPygjV`OkS?I}xPr1b`bG9!cN*-gf}+tAO@O z`u<;iJN?=hKbH211F)M2W{KiN^S&l4 zKAdsSF+sh~$!?lL#q;^QPCt~ zi}}(Trf4)KVAlqzP1UxP9JL^^%yM0)=DXVd@n zZ~is?TPAAR@$@U7`E**OuFiWC(@9}zRpEX^!M4K)_4an99-^w514V{Ge-0h$tCZpV z3KKABDd2CR?iLoBC*D-*vu`-3-%GjPMpU+5EY{Elc9I~E z=uzu1R`!$Q<3XEaD$4iS#r}gXd<2g*8Hh))Q<_z3QlLqJCIucf3IuqfQhx8K9=wX zg3GeG481HjR(1cffXkiu+$`xu(uyQC?DqkURV35erC+&vE&b?+KTa>a@CATLXGpti zm>3Dn+Hk&ATT&xB%-xxlbo%j+rK2bCi2(E}#cV09li7DRz4X^F5gF=W`oyQny@21r z*w{GEox^A*)EgNbX=Y%S_Kv30 zCr+fZk3UKHTAZ$ziG~Bv`u4ZKNqy(C{XYG8>hy_p>eR7dAf%sRIDx6*aNSnLdAp7y zF8L8A4jxLM{>%&M%~xNIXh=OsoH2eAq z9otL(5B}AlaVs>HLA7n>Jn#n;2Mnw2QrqKi&hyuBz7aN<^TB4&K55I%Xo@rm;&%Qi zF%OA!9LpL6o$>{Gq4}Xaho0KCU>X9jX9jnJ{;@2Ijt^Cgr#oh4Sr`%V(QGTu5dA2Z zLmdFn?#nE+lG{N>3u4e`fOi1Cb+RpCKhKWN;EpXTW65d&HE%L}u`QvfI3_1l)^?u* z9rUqnXUN0g%D7Y+Cph)P zJ^Ksa3$y@r9&F^PGVcRlDITjZKFV~G+RiN|narKczH`j6BV$j~WAmQIZqQU3F|A=p zF&(2%WK6rza`FmE{j_&gCce5vgtmcvzvIC!dB_&;O!|f*p?`y+c*wPn(%~ip@hJ7i zN3bph=l&6FTC+(%1qFO5x;Y+-F;N`*DT=vwsihUB0Z~rzroVT^!*`13d&SREhlfAm z!+EBlh2O=#v?}%=M6cq!61HsT@4~IwgJ4A911RI4i@CPuvqU($bm=@2<<&F-AecNj z7V+OB>oSt^4V+&!J#N7vL2znW0jK~-e!IyuXyRkpZaSc9`eGe?u380U#}R!Ar|Iix z4DQ~U26WUSw4?bLHrUt3TQd-mf#a##P6lRxZvVg-bsc3f$5|DW&{9`oOVpUh>uCsS zdskNv_S6G}pX?3oMoVWlh1k%%#PR@$R69UgD*!{&Af0cw0D@g;5|rRxx^$5^`Dic5 zsI1muu!}qn+^N}vnu)Bj0N5ZIHSDWVY?Pn|T>(6;-D+3_cF>i3B2zNwjVfeD=u(Nc zD0vR4XUvwcQ`etBkf}|-N$W~{cfnW~R<#p{)&b0jPzmUdoT|`y6sPbG7#SgWFAjr&P!|&mVG&(jC_UR^~)AVH%U|MVVg9wW0D)L9< zOw4LuG_zR;7*;S_lJQ#RSRK3dF&NG*Z048I5-lOIUju}78A-=vaFiJlaiDk3LQH-G zj%Dz#sSwOxF)jg+(oTS$``oBIYJE6nWgx!i^GJ}<$YaTHp!P|2RJLE88%p;*Z&*+z z`SiGDut{&tzUs8WF`uIs$;xn8(T%$&S zY<00k7+C1HsRo9TP{qGTg-R9EK<`&;xW)X_H=%@CQ9DlB-T3uHJptm@e*-Pn28{DO zp?=r!;aDat@2S&I!@%Iz!toMxQA-mhUnJ}cUnc7C)Kkx-H{U!L`Az=%rB~A7!xN0Z zyVRov=3+iVvTnfyFTxGPj|0W*YSfEjZ(EQa>MYqpU*N0Kvvkqae2 z%`G!3E}X^UnfC((0T==Rfym6TTL%bfd#o0shW6o=SNot~7UA+gQQbv=gWAUNjJMJa>yQw8Y&fTx|c~Fwu{?s4NT)T8}%o zZ>J}pcq$z{FrJQ0j;0r1dMS0n#C?qLwr8GrI=y@2CZLb3#b`7Bk3aYq>2sg`RiwB| zj@QyVWFmg%$tN&%TE@wI2GI9Z8XE1TF4-wuhte{M{mj|1fjO9AOj}wyF`=4D7ofuw zc`H_^-vBNP6N3Y^X^RL?GpR~j`eD?j=arp(L@Xsi1s39D$dXuGZz??TD=44$;H~pBfY-IV9{^WB!HqmX0(!G@7Pi9JiKc(_<%(q-URglDr%1oCCx|Bj?I0 z%tML(-h|1xc=1wN#>}T@@>u$f-}o)cY6)K*P3s&d(yRMRoeg>?JY?Qo1%an zj}8q*GQDO&7uX5+ z0AjomU`AyBOBde`#=-2d)vC79F18kv7u@_1k6Is}mp`t`#;VT?uvcpf&Sli0ioN!% zQGSq^w_$hv1ORzzY8HSka73#BlVNu0a)-9&I&rR|g}|kO^K^XS+>0CKbO zZs1!WVAXWRd&~`SSo03&>+y$w_=jn6ZZ@4cbvpg?|M`DO|KtDg-(%i%6ce#uOGl3$1Bk5y8u5AA(0_zP zUC_0QqC_@>LD6x6O5- z;gUR!K?Dh7E5@`x?9)JeTvPW3fU|~jj&}dW?S9*5{K|}o*xk<8WRJPPdFd}$FSKWt ztp-R(?K|$Bu;e(`I$zwx>M^3_J*-0GjAvy~%xlb`KTEj%C+SwcJ zmJ-rSWdsAl8k}RBIFz8AeyjWzzpX zn{wl~{R-bKl-;J z(LQzRM3^opan)2N*C&uuEX48TD7Wzl>%i_dAVr7a*jR+sKD4vYU%GfXz4qE0>64%Q z6k$ilv6H?CcpyY83w%3H+{WAo5dm8WN{3byqd(6&0nxG+co3ixe%)&XIHB>f2>P-q=m0KI~LCES`b8UC@G zu^aCsdo-O9AaM!PA|<``9ZZ2RmzbR;6y{PZ z(WmA^%c6LkwVK2swCuDTvz8E30 z4Kkzop3Fq#0-}zg@!(nXv*u4~Ks1GOKQtL!Dg)(1WgIjYG(U$xH?oF%PN_Q@wpM7U z)0P0xJx?=e?N>P9_tJ@i>Y za|ENgYzSBC)kZtk8OLW%J)ZvAKl`83zx54#_K=QG(i!Du~Ku3SmaKKo2Mba*nr zdbSO(ar|=nn^#^2V4O)OPM!#m9AE{|pou|UVBvEqQpQ9K6bJ4-BTHGmBqYY1)Rai; z_vQg`q{a zsEg)LV$WP5>0srQI0qyE)B?o#C>f2bluUD_R(zA&PT#hgWs0F<0Aa6G7&_2*UeE?+sl=22}mf=D>REJrS zh85~7%`8J5g3iTWYyW8;M5O}2Iv!-ggo!bx?JqYf6A8)q4xR$QE?s?A_)f$%UX(8m zlREZW7rt}N0|uwG4{Ea*_1&lMOv*A=0IG=htU*_wPT9b zpfT{lVm*dym9X2bM|?J8s#~`@Kcx!MEDBPCqCD@21CMe8H(^pfU(+O49L(6 z>;=_I(IG8!jGQS0ePkRznQpwZg2WvS5YOHgG*g&NWf#6Pcc&M44gv!ls3ocWSK^~X z|BAU8Mh9T_tb1lute@`_YEHW_)52G&MNJ?N)kNttpZ+Wn%2v_hEv7>xD_q0*dSqmr zv2>V#1|u+U^gSk0R5yeX^Y}&>`7KPosGIc6rjpDJ+SAV1X~$&BIb*hM=brS`2SecB z2U9EEHLr>;W(*p!O-)RVB$d*^IboX(DcgaOnYO+7{mW?ly+QVXhv&M*aNZq^54djcp`yI^ySM1`7|;xA zx8m4?%G-PFLD%g)|I_Xlb>4g5&-)pB%Wm%f?NMNFzdfj5f7&NI`hC$C3$F|5&$1PD zvYvbE`m>bzsN7q$ZEt;wHhQi&?=eAU{^aAVoov1b_=o@iKLJ~ivPGT+g!np!`l>KH z?+y;QH9{-Knu=+SCN*=jx6%ur`!ancSO*jUNLY`NilgQyTFR-j&mdU_oRU~ebDS-~ zv(ZwbFO*8^FpB>Gi?+R7LdqQf05{43!~8;16>Q#(JhTl6xPEOK275a?=NAG099G;sp$PJanU*}14goiU=Rmtia`f_iAPiRP(>SyQKGHGS==O3sKY z_{CJ{n5D?^MVry67(TNbv#T{|ya|)lEy$w{Rp?W~M5(KE{zuf7%n zd(Tz1-G_D+Ld$j#lGMKAsa$VA%1}6NVH!On;-rF+!I`o&W%1qO<~X!xwqb1bx6mF< z^ApFj8W6gOTl3hFRUj-9br1r_&|*9RHp5>*ATI+e>;#m`7;v3M<`E-f;<$7$HJA^^ zM47Sb+zhP=*Q@1luH}vUV_rgAG+Dtc!Wiwa9|Kj}ei?EwrO*nzD@yMXk6lRDIiDpn_2lw-0DVsz36rLDzu^3YIPo2jG~?(HSy>n6Ss zRe}s`L}vC;vQd-A15MIaJMRU;xVH6-VG_kWKufW_hCfcJ7ex|t7Mf|ysD>@feWG7A z%c75{i&{lZhd%eYFQixg=4I;6wJ@c_Ba>m?cjU-XXhwf9cO!oY^Tl`78gp!AV-aow z$9&A@s;v{`altnWZAcf-HL)bIpU|kFvE!Z&j>)vh=%{hhcS2u>?Q+g9(m}Cli9fW} zKn5+;ql8M!u@&!1=-x&y3|=j4YI01(hffys*7GsW@=)P7{ZAd^O2%HHz0Knz4&V33 z_i_vj=YWIeft$x4cJ6^U{7eU%8i=2Xe9fDi6lhYQNr8_F1zgN_7c^T{0B%80fE*S& zLAOkR3#`&j)%nJs*Wba=l-|>Wnakx%*VCW=>Hm{{?;rnTOowo01T>n!%yK#aiO+xH z6X{c*{uF@8MHc&N%F)k2FfSkz;Aj)1Nq|{mHN|kD&P-2cA_V%HvIy?=NzlYXjl&=R z(N_o)dJyf#St1?bEbPXjn*p0ZiVy8@A>RGoU6=!~HO|LW^`^Ab1^# zrXW>Gv)3un^jS(qDJ~@JbNG1dU~})ahUe_->&Mm`KM&|217VUd!K>BrBS6)_LKBqR zH*TdFd>=ke&WD-l>2&MrwX}r~1nKs|1gwM)g!KrZ%!4mq#z%py(Z>!S#hLXaAy|ho z32IBXZ(m8zJ$Ht1tA>YN3R58gsI;;Ry8)D|NQw;^Yna+Kn98mWV&xMpN&v2Qh;GGv z3P)aSUT885BvGM|2-nupB;lxTWT`ex$UN80xpqLES)6M!B<732p}PbyReK^s&<-$c z1MC`)-w0KPLA4KT54{}p^r3~6Smr~(8DJmUxiQkC4ViB2Gu})1%9PD7RGVLnz zFBnehT89=T`da!3c9pDak`v}{J_n*n6S$6OcXqr+icbAxs^M7EHs)|8$_gf5rkKOF z(K-qeotqWf8ca6j$keqVf$w9?9XWa=ZH)AyNaL7{KTJRi9CZaV!oFd`3FE)h0t2`P zQ*3+8N?qoonP3g(lFCMXCA;qx`#9GT{~ePFA`mbHtJ<}Hw(P|u*%ri8GCVIA;K^R6UX&kXrx+cxAKDcNHgeVwsX3eXJY1r_RM#g z41|Fm>U`H2zYF+L>=1%@2NOdb$(@S|2|C&5))-GlXVd4T1!mSU;eO0tH7(55!Vf|% zklLxXhJa%C-Qq}bIM~l@j*ZxS!uxGrQ(XUk*Z%D1n+(LyPQzviO$szA(4@eJo&tL{ z4>raH%um1<_XV*0+6F+l7%M3i%n1Iu5K{r24*>v3R=@VOKLg9Hr8B2bVRABv6jHD( zfGx2o>+A_2R%5|hr|-ZV8J$^{0TL{lUWimrTWkSF75@eo*Dw#^n2W9qi?tCbDRs20 z5{!lt*qe8!u))TT|0uZ#U?K`I8_-cu2E(yed$o5zp5wFjeWXWm%>4k1d`l0P>-e_b z{t}3~M;S&OqN->Qkb)E5asi(Z>*hJlm%6&MIfohp4q?Ky7SdoNzH9*M1inUO%2}$x zXaFotgG`R48Hnf2hcHh_OUqUI?*okGS;et_k!OH`HBz03ujsifX;t#nl!+o6sfFd-&@ z+r&r7nss%VZ$i==5y?4_&E=LcnKLp|4`au^mZ|VrMr7)O;V~?*{k+MueWQh+0`Imm z42$5u3kFvj^`NQy;mfb2%jd6BzjmTX{W?Ji#t?=uCi$mnqfCtBev|o9#pzluSC)FSpmE%V@!sOb?~s79XzlQ+%`YrcM=uwEW#F=xY1q5(q8(sOaMxI|AM_ox^1O?C<2#o7 zSnOT=tv3Jo?LVj#;B#trI^Di=8-}6{%>+Og5YwiV6QClv(3c?t9PP#daY&X0i2|@z z%!jI&M+lgWtmG!$yiUn_@w{LfV5lP31Lf;$;koebfL3KBo?T@5ZSN#k1YNQUeJaqV z0&UiCu7>jn;NJ>B6F}MiX+o{uzI`j*q3)w&!?c;Yw-7C-7flJys)mrQp-};S(#4o# z;dC8+4MVsBfK!7638K601KV@=?%j0Z;)U>GsA5)92l#g&x$c6YtZKKXl7BC}`ku(XJKzt1|Egz&t!f}E;JwPo3EXGrW?c_R#P~O<%x8qyW zCBu0}zXB-rr3v89g65KjJbf6cvm#KJ|!~u}4j|_n(LRp(2 zn6!G?A4O&&#$_Cp(Qtlv0b|G-QlQDuj0hy)_B_qxH1+UWF7{aXc(f{|H z7AQv<0#=T}5bU5u33Hfu2FwQK>3<_b6wEmDRE>;U5)-AFo28BhAk2xP-Y}T7(XoRF zfXGBh;z{~9PoMUW3}GUN^ZpWv4bhGfl^Js(q9O5YX|MzXUB~3D+)Ef`o+IO?37TUi z`VYau48a2CVYHT)R@3q0CpiwItM-C=>VG4Hs`g?PN9!8>VeW;fFD8sK)G`2?7ux1F zvuUIKkWm>O#&?GCyiSy-el!T?Yv{mK$@hl+?zJY)(?3Q{sL|Gfxnl%W^rONL=oVT# zHGJ*Wv2^w7yW~IV3hgRnxhGUHw6dB+-*NVj!3<<>osTk};fKT6%43A_VSjU-mdq(GAbO$z){DNrn6Q3(J={+$;&rK$dQ@m2yK zCOCiq%}r`Zhwt3J9?^9!Uw#LZmS@rc5^AO7N|Cjv&$hjQ1vWFtihqV9X@m<^&`19G@_ag85x0^U|P5)s8t%f2`B+x1&9h~MvlLA?i|m5E*vWx zoCZ(i9uUYbvmmHqfwr7IAJ6ao?Y`T?zT;%$PiRiKTxZBYlN=BFQEyFkN|@R#61H?1 zoAciOk*J#3VT*HWbqryuDN?KE5+V}nEHKm`BD57qGAn=~BS=Xv0hx@4ph@P;{ca*2 z)nG(45tB}u+L22}91g(TLxnM|xbU4G|kJm3B? zDo$T-J-z$xyF`_miAYnAoqmiEp!1khp?v_fR*16HB520er@ITlXFX_-_jd!>S}<3t z!%S>q7PMmM+zqq~Ff?`iEHpP+m!Y!tL|qaPM{+T=PHy4fV*fyl0NGqw7WqS?0M#%h zC6KXzQ%xF>I)I_~nVDHSt6?z8k)|j*Yg14Fz1-~p@;2_{ULWb`(ag?%bnIft6@4dY zRobp!0s}K&=wJv&NG2hVRcX(_iSZ}EmcCg_0kgn!Y=eG99!KsUOp5i%qel%8eaW-n z@ADktSr+MB){A1ty3^Lol~`FBHJ$?~-`VDzbb;Zp%~sDofD9^H;+}1uzlf$`&dkdI zbI^U7Ss*0vt=V*!Xh@I~AB3&c&ba|{dTig`z?^70)z!uk8Ek;@ZX_wAoN2bC|A7pI zk(vyxeB#)NTpu1Nsm!{qHbua1eu*laWklP8F_sP{hg3Vsk4SXa*V~^4Fzf5Wse7QG z=uP+$$#BSIDFAT}`CJ=EvzdEF_JZLjEt zVdwWB-&@{$-MjbP-h1Awy#42XUccY#`Fo$?{CB~%?%w0ech|Nx0|c+%+qS*;H}@YM z3heEp=>K@P-~UqmdDeFS7~B8*=lQHhy)5PAQrbT7-Iw2gA_evVQ1`SEEPTdZ?;-Q- zI?;g)@wrMagKvK8>**8Ee=PlH|LN~WBC{HjU?Y>%x!(K=xgbNCuCt(mXk2iWE&{ME z|HU7?nEw60`{VTGFa1L#g+@{V5+T*>B&_2GrU6Dx>Lz=$xdS$Ewsw(Law$L(C@Se& z0sNjneOvpRw!9-`gzWEKrs95P!gIy>Vq6yAf`d$_ z`_~jrJ+!~}o#go_Lx2y^6ae0xxl1y)J86XIGsDBfv=b>Q_1F9;(^!Yw4NRN51KjB2 zKrN8;_lAjviQzQw5Gzk;lVehu4;DFx)>^%e!0UD#`YGZEcxVTasOtER&+lOo;*m0zm+S zG?*NEro;41=bT^n{(j%>J7|Ej5-b}a0QQ}E{ocFp-g8g<&i~6eXmh^3y)!^p6W8_h z_RuEc+ykKIxprw~hQ3#u#5imJPTwjuK6Ca`dgatP7=?CnZ`_l9=l}c{Bn0bD_u=#M zzDM3qQo9-MDF$hLBgAskS=ifteyO@~($5PH?D2G!k;8?qO zozJ<(9LW@l=?q|-eu+%kIBQp76R&xjbEO7`238YL%v=Vjf}w*^C^4E2V`EHzXL|rt z%Gn|@n9jG3b@=6wFQillY3lCWRFW(NRQuuK_?03-H;imByUc3=sODh)<~TcMGJi4w ztIM=8%F3=Ys+ML>K1&8ByO%aop3hUNEjV@^mIH!AdqEYw-m%u7VHE%!=2+B6CLbLF zfY>^y6Qmb-Zgdr9Kg`b1s$frpc8oBt0DYzJO86~n1Ezl-pOrPrDU$)>H=`VtBjK-x z$&GoXq;pp$Ve-n;oyYHt+#cucqsXC!Qn(^8?H`vZGU5qc-V3QD2Y7gT9b1*!TJ& z*gEq^NDoYWr>25Nr>@RD!EBgE<;uVSV^3tI{sRa-@OQws!sL#1Fc)?FzCc^0CF|VZ zPBKLqeR<1zG!Y61oJX2s*3?wcuG`Y&)OE6CzYM)Ojlkmm2qD|vT1fzhLHZm91Z_|? z^HYtYCWwxifhU}6j;DEOJYt;0qY@2Y966ndFWY}^g=ubuV|U*3W`8cb_kH*Lw%jyi zkU@Cuzic~sZ55n|@6;o&dNxk)+;+TE`~S_Wx3DK0&)3h-*ue9FfAcD^Tk@OL1KZ2= zwUh~Z#Rk^|Kx}Jm!_NLFqwnVbpT4GFKY!k=X1yKC{h>`t$sPLuyO;kt)HLuF3E|Dp zpe`f%g#Q8nqqf!!axp#j*q^04ZaibWp-aY%$efK@UUR(<3APX-4jN+1MAdv0~>I744XIJPbrz*hg2Qy|I59ObSQ;+wbd2SEJsJ2U2U= zD440jjG~#)tD0q*UqkJHVNn+e^D6TsV-|e_*t35%b+T=qTO~}Yz6?e;YGTdQ)i;tA z{B-*EW8Y3g0Jz!7N$lu>oAk{pQhg)icwH+=!uB6Jlxi^f7#ai}nMPnNns6K? znhqI(9ph*}_s`F-q%VE>o8;UWX1wZ2`gM1@@BW9<6*LZ-@F;DUk#lU9Y10a?0-$dT zNpJ~_js6XF%!>w0v`PSM+MnAFO>;B>5ph;G*M&wxbG8yds^^1oV@%5dgqms<^<$vS z0wyW?VSv1YfiUV$8D>f4JhKuoTnp%}k{RQCfmbEwR~7gxloPV53hhY^2?%98s&UK} zfS2G{ECa$9)&-_jJgb6oWS%^Ss6L)q>YCwm3Gd9fFyShq=~>4%evSHAr`1Iy;DkTj zG^Ms8eXjTW2G^|fd%W{`9{&`5M`Zi}gFt-0ikO0F22*V`F3MZQKV$`8fhArlLrP$J zj0{9C5K*W)HPkewdK}ixifkk-+fzr5gbIEu(AKJoTGkz6ki$wttIjmhjaX8y!z4o_juB1(?rH;@2aS15?-B(vhl>-k&{7gf7-@OMMgd z#fh4n3Qb7zi)bI$%*oN(oVt7a(igt?AMmevg(Q;`N#}gS26uLJ(ASCV(`O_3p+Oi# zsWa1)>Ey|m&|XZFnSCk3tIC*Z3K)zR&v6Yo*L=CA!XcZXdExozX;&fjl05Mc&lw#a zPM0rU!esIy>rFvO5$1&Ovp7V%mh|(|tWr}sO}Ul`fbh!67csrN21DG6hN2p4zecnm z21h^(L*l%PlqXYv{Ej8p&N!jLuAq>MxeH)vf>i?X$p?PWoE zp;7*p!{oV_s~GFc(UchcFl+ErS`$kN>Ys)!iEh9s3er*%*=Qi9lZ+3 zPod6VT_u|{lI=Wti3RA;=_V}DGg6Zqz2~lziTDOivrqlt`{5H%1F+FHzmAPrlcyEH zR1L|@){)37k=+#F@O*8|-A!HZnh0dc#5ThmMoIp|4}CBIxYsJJH+hi$tthL2_SFtCU@f6b6<< z6P&ubS{R2`oYVUP)R&-nssey(ioyTXP}`K&>nbt-P^*G;dUgY*V>%r;h?6aKo5N{* zaAYLie(d&W&m#FKMu&!jfiU@A9RM{V)bLz21f|qx4SRB#2W{>hZ~LK&_LVai3Tgvz zNL39W>@~WPK)w#JTtHhuZ!!-t6~e@ci9;Az<`6CumCPCA{|hW5A`;HM#`)KF-Fcx| zi_EV5UEF{f=Ce$%S`QtB<2&yj_P1IEUsY&P?Ds9AM#)r_xlS0*w61nTjT#IhlO@Io zro~LuGIXJ7psZjd7#r7^{sHTRTcwKpKwXe%Yhoo|vPqdUGni*FZ^FODdQu;HlNpnnEL$RTGH7#FGg2m23( zFhesYHIA$lm9;MBI02m1H3e1BhM`m4K1pOdU2R!KnypHcg3Gdcg05&o@h9=`i z_!B5yTn2dL5=kZAGC!P%b8h5<7rsW>0qFSRb8hvrfB3=1zxp00`4jz?m6OpOK2s+T z|C$kd9tYC}Y{W;djZps*q@4AkIcOx8fq*rl*1%wBf)RB_qOG69GMWk>E5jD!MS(ID zIy7r~F^Sed-vFhoY8TWr2qJZ8mO*ihte+YerK+o%U;vaFNyJtF=nminIyp6!Rxw9v zg3+o5)NW#Kv4$xNLS~+g$rvG69WxWXS=Sb%#t%L8Amfb0wup%k(rZo1Dgf=PD=>E@ zn3&X&4H#1`_!I2emr{EVrXqlA6PNiC6za%o=HDe8tiypDrmn~fqc)`PFjS0h8K8L; zhN}W?Qzh-J#f+;O0NS8dfVn_d(pt3{>Uv~U(E$Pe1>1&kErD?oAXX5=-!QNXGcdP= zokcjG&0nt7tgC9XE>^|y3pJhYi<0M=F1$Tir`$v#0WNB zh&pnwGbWC&l5!>JY7HEB`yoOe^IJXRt~RPxMw)T-D8moMpad=e=cr7p429nd!6jut zc9S_-ti&9T`ZeP_u!(~^t2;GSHKj?IhSe#uh)*rW_?Om{rCFw118u5e{#MpDrtY?` z^z5aV(q`{QYTwgAQn_nklGxSNnL1eK<hE`BUbYVe;L(?vNg1A>-rn)e}a-OmtIA2+)V-%#b3TjwG zj*E?OY~oMOSj4wD|91KFW5qx?9RBl=;Orjnk{)2Oxw%0%;|S(3|MD(r;%+l`d*IFL zfo!wN=%Jr?Y+bRD1p~pu<2rs9{MFS}q)UX~)ZtML!Tx=HnAJ?P=~spsKtzdQ<8~S9 zR4B-riU>qEFeP|_2quGUlqGDy?ddmv~+a+9@i@s$1#r_Y=Pn6438@ux5+SOAD>KBZ*dNJltnh6G!9EuF|;7V%eo ze*LCx@8lc0A1%?op&~brI1}e(9JJe>0PLT5{zU2|f|1hy8<;^<;z(Kw_|@N|ozSY9 z;Vj}98g&NX2|DzX5KQUV+zIdkk5q&SyZG zrc}#Fdb{@Yra9_#ao}ozn;36ElfVTzHfBlYegHUAzUC|SfOg-1K;1PXd-&mpL$VE0 z2YgphhIZ_ggoSNMFT8XzJ^TDgOi_rtKfN50q6V>RzjWgUl*Pg!6NSJG-y|Wt-KNZgLV^>B~=YjUrLQ=r#i4n||G?yyiRK1YK@jq&7 zsv~1{3vE&mP#Qvm-tzv`T-%)*xc2(>8^PS#pN2TrWN8vc!#=rsWib8LZ~b=6mG3|K zJ%THID}D5%A5I_txt~d`Z8$Dtb~Qdek!Gfd_QX1u=`&iA`66PRU?kN5Rin`~T3Hu< zIGXDj(dn+c?xAjt)SLVjFn6E-<3FbDj{7D;jnk~b_4J$n_1{kmteL9=m(x`QCC&H^ zt!jeF8k>W;UtS{g@oG()z^7w{bvubRMuzoMpZo;O^J;qT*=LwjYw1@%`)ld(?>$Lf zr>IYP`sttfnHWDYi~c0ym5Ai!9NvDpZat(nwk4)wOrkjB+5exzIs4WfZ-{}&iLBL% zh4t3e??3)Y^k1lnAg*?$^$jTi1Ti)p&Kma42^;ECem4xD6UTQYIxaT3dO1i(E`}uD z-E8D;e|QjspuDcOx9TgOV?AOaQ%b=jLr4ZDXjs`8^gr z@0R7^-z@5bl8r2sSSF2QLuE7fvkS{M`V5JUhwZkpwnc*GGbM`oXQ74H$NkjBb|?vu z;AVZRrZ|(d!0LYb4Uv%Q|_^u~W(t(Mnjf zw#6tUH`_!#Bv>9k!t$f9DbxBI2Jz-b5m)X0c{}ug9B>%kg z!hC-1Ja?o9bz1}DevG&eH_^D%=t39;7ksVHtB`Gh1HN>N8ivr|hqN;zN2nit2d02nF&JV3EREh)|vj!bwqaUch^dMer-1bQ+W*XMlXge}9ZsLCTSy`6Y zjCQ=r8%P2D-M`trUY|KPdcP4|=s)UcTz!8t`pP_Z+w;>CIFrt%n!TN=mK+SJYy*u= zGbTEOK85B*ZUc%n6Y?sw%)Lhwl6B}-DS)p4a0A{j$r%&g?Bgn&nYGm}LvmX|1f(JY zW}_|5Vg^#=x@r2fg1VH`50%)wuM<;K+j=G2GcbPb0HWF>{QzU6?r4O{v7<1G(HhyY z4U@Wp6mNH9Zd>-cgYou5FeJa%m~O_RyG9n+^0v>p{`o78S8d9EZG zL|r4MFOcwhn1;!z`E=_16{6wvq;YKD%c<|eRjocEtczHZosqVMGcBIKyo zGf^$Gz+A6@soGkB3EbQcoy#1MvCDjcoKxV7$On?Glj^EE%3~i@%hQC}7kgTONhX}x z*u#;UdKryK6C_P~VxMGg=&0{rSpwsLZ4u0za}tdP>z4d#T!&9bNmFV-n^#)Z8gnrm zzui+c>EdWgb*TezyF8~H>C<95bLu64H{)E&JgnMEQwvjRWfNwW`;Ct?kI=g%_*6`%s~4`MD_4pU8ueiR0oq`q!IE_RXkY5<`eb_gneU@bAkx$1 zU@C<+EG!rzwKjEh_o3y2R$$iVdetGl1bX89mtN3pe24a6es?I1!_2~xr6(SL3f~M& z(4c#D%(;4;wVj9SFxX3&D*eId{&}o*$6F*}_IOx+v_CL!r9?Sfo=eNK;7Oi=9t5V> zCbp*ioqaG2KS;~a0-65Rg|T%0m1mgSFqrs;eC;b=Opku}qp7*AGyI(jIIn2dlqJC< z0vmHmp$#*SapT3qGa4>N^d+syUazO|j_X@_ydehSt*p?0>a*-nRl0V+i_PzX(X6B0 zG_avG;seCS%~FEvW@GdUZ9G-43YcBI;h4if<%8r#kvVHw`d{;i^0Ir~2$%^`C+p?c z49r_+Krypk(3`6~y*@xb?`|-vDy^HKIcFYZCM0hD?r&V;L*jo(X}H(^VTa*9BWl#( z(1iMw2`osL;ZW5X35wVtbbhpKpDSSZh-X5)yhkD{n2!zFnZEtI*La`rwk@P8ynEzK zf}dpuyiUoBN5<5-;N74BE)r?p{g*KzYzW)u@^ak#-MjqG<8Iz(+0k$oz4eIsK)C@H z;(9m0%ublEyT@)1ylZ>F`TzRk_2>MqroaSlK|iDs@bm0pVY{yc+TB?P%BR2oRG1Gm z;r!c%>3{-_ShGAt`r+p_qMT@o^!y9YBH1N8C{l18r@QxbhZ?^T3A9d&YdGx|*J~(S znoLqF%FvNmTBupaW)X%08|yGsfrbF3QX9^_=PzAOGnl~4;AGm_*#l_6W*XpCRoxQz z3ChEaM7kplkqpw9?XTPCGTOqI_~(268Or7!&avHhmO&r6w@Z^=+kev9jK10Sj5cjj zr*Z)O9N|uprUUjP20U%51>_1w1O#RfhD*X$pZ&;lfKHviD@>Gy1ar&ZG}D1z8@FDQ z9bi%T2h>0}%P=3(ZhVRT$$c%On^2HDmCeyYEU10J)io=`?&9 zsVt4!!a>(4OlxQsfJw0*Xc99__{urT*8#Sxvm*@yC@-GJj(mO;W^IiN8 z*bA;*8)Do^WY^Y^_V@2ky$707|Ka`s$4dUK-_+D3lH;kQA4DU}ANqvwRjH{4NR!V% zcFB2Um`oGixmQ^ioynJn@k^j>8_dHkoQR7s1Do`nW;m+|4olg`m_5u{GGC)v&;ho} zoFYbEVov)RSPfH!9Xdd}3J~dDs`ku%F5hR|x2$V^82U3d7;0yvCV$d#UU07&9jk=$ z*gsrw@)Q&ph zW5Mij9xP*1Z-O#k@eJE4HbE1mPlWqkg!To%%FxQhxaWmw8+&>UA$whWVxMK!=qe^h zE6m9?`j^gD*9RlX8n)l+zy~l2v&_dtlDZA9pPin=JWSuB=3qL4Iiuaqx2_%l^9H}O zmdm-`I?fT+mFgi#*obIiON`;_wQK3%d+wrMrQy49_ucoPi7GG`2Z^#}l(sU20gdUK z-~2{8bYLIAypRqbJ(Tv3?WN5KMd|NrBZDxb4GalP=k^>AKP{eR;y4pjuAp71krAhT zEhMy*zUfCah4x7;M+s}MhG=rtnDnh%(U>*B zjFLs0wrS30B&Yeg1>TA71ykLEbAL@WeF8%;J3AgeGqp9nIBB0kTQQRk?B5#+98aD> zh=M6rV@qpHCrzfLCC;Z1Mo|C!yL0b{K6`SUh^N5FtU^-XSWOWO8#70bc=D z;rL|^RCh`&14Fp$c#3K}k{8&U1dYj5l(4zej$(-?ObTXiO}0 zKUrTlWn+rFA-SPPf|%|4O607+*JZ%j37FkyAJ}fS5VlKIw~f(mGTKF5EmJ9c4&VjX zaSi7);O!iJmASFbKF4z&%HkyI(TCQPGQ%!$yT9Wi{_Lz@JcDzwh#_*;L59JN!m>Ri zD0Wf)-E;BG?6KQpl|3)6p+5FYFb6S?*?7rx`5cdMe3O{_S>j4teYVbwwqf_!?SXf5 z59GAQ_nn_@^Q-4r9kI5hlY(|khX5EZ$7R&>u5$rc5!!O)>gDwED=(!FedrM)t{_=t zZL0m#fz<1yqpmAy#MtDHIRTIB>FN6gM&k90uXRza0CEiNYr+umN;<&Zlvj&l1MWJFakqq zfhGge8=o(Ikn(1SR9FI&y=OEoBRDy|i|gz^@8ve>lwe&tlJ}{1bIEp}avmU2Mzoy4 zks)wdF}1X}qBW*35qFp?x%9#OkLF3*_l)+1x5+*VO`q z*^{)5x33-58vPSsT30uUMU>&LYCeM%=b6m^89@Q{QOq^hx%JI#x7_rC-b*o~IIyYtX41K&w zM5{{IAnjU3n!m(;?tCLXU>+xNqd!e! zDtEm8U}|L?>z8UsC`T4>1dyv_gf2(3R6zo{Cd`JGVLInAH=0$WNxzrjyK&pG+f!?O zd%D!1P7>kmXhbf%=bn3Dbk^{B8jZGA;-g{P^o!`~-XCq0 ziSwKqmwFtxSDBv*BDy*|V{T01L)3)kMJ+{NUr%bo_v*sA)AR+52a%S_D+pQK(*>hd z2->uFZ%?{@?J}lTh;k|yBQ0!zJVng4qf6grUTbKWCC^t_TI+vd5v ze(`|3FZdGYd9EAo3LA~F)3xO+YyZb*$aHz+0dnOB@7bh}Exs^((CDx%78`?N^~U01u>bMj_avQN^JmH689`_T zbDnu5zKcjg*I*QUroexO{x{6AJ{3Bk>O@)zAl%otm(Oj~or<#`sJRf}mH;T105oa^ zx-hdc@{VR|7f*44D7HNvW{LF2dBU$z);lNBmOuB?TTVouJJmqfvw z=1&fiW?RPlpT=2sZr)77glLud!n_VX74sbK!E~#*yb+i{z-jx#nVGpqSD{%5!8hX} zf0QvJGA@p}-`%J6wJ88_eb)h3tz8vktYfjvcMHkPT418Bk7L(@R>yno_j#BinQ8@} zQ~1nG;*cvtAz)p`Oo^YUZ}zIDofY;6jFmfI!O`5 zPY4-eUqbk10Zlvz@>Bh)70SFL`u-;k-CNXyXa++dI zPE8I64So3G_ff~w_hZou`ZC|#sxX%%z}$UQ>JAmQUT?KTmJgj#)Zk}RT}mkF_4H(kr}2!@2u z0)Ag!=lwaD_d1yb4<(SfMBi)j`q)&jH^kyKRG0bnMh591-m{K^{w@Px-;^QM@%|VK z$`5BFC2H0iVyOz!&%R`ejJA+T9Mmd7RQM-Ds1$RA&3hO^rHZ+=wH4yl8DZ^wp7-n? zyFKvZ)C2jt-r45-obkw|eS&MlNE-4`EoKoj2*I1CNXyG)WyR4{$K(xS*Gr=`UD&{m z+^9g7rR49$7hX(5!^5cq8{or7j)bX;>(#X`a6Ep;9jUvcJDtX1af0~ob5paa7E^-e z98h7FWYRa|)BEnaFCr}+9UDteJ#&JDWFI7k{N7ZK)8sSHJ`ac(2nWW!_(2@M>w%y# z(kpWaxYl`ew9EJW<+d&3;JeI1_Bo>~`RD9C6V~MYWZzjv{6>4Fl-XB5xv6L0Wu!D4 z863Kb9XHa~mOAJY0uq>s0$>bC2)#qn3iGoHZ8wx-H6|l9U64=S0(>lkt;m~^a z+!=t~B>PV(j=AGVcK1MU>)6-usTiky+kzyW;ER~d#@>sGN)d2ZjexI8@JhYSK)udh zY^Yhysa9~V-&FfRzpn5;L|=Bbcco4kqPm_vIPKQqAdM|L41?LRO*B`J^SHz5Ug?}O z8DV5(rVl$iTfz*dy|q0Ab(*p)Gd~nIx_3Et?ji0)f@1eX_hxYb^7>d8YWNL3Y6K@( zlVHZIyUz>lKMbPUe)p+$G#oP83+&OFAx*8$r}5!gay!hz7~n%Ng9Msqu24s{6IxYr>Zu8o`*#&}4^5y^%IHVi zHUs!x!vDm*v8=i@HL>rmPY^i?hxP)@)EpWgwL?n8)e<&?0ZMsRT|*0FmmQoam(zzn z^k_PCXm2`y;g!_e+nlPW$_P_UzyPphdkYz+;r?40liuZH*BVJ^rghe^0gVvfOlpBWIe3E=VUB= z_Dzie*EK~)~~iJZ`-YEZXfOZ-OuH$86~bV58C1?w9uTX9{&Y1PQUc>iPXkM z-Q3a`08I&>!WiS(>w94KVxtQwj2So7C{j_Ao@p{;#@4ph=2YGY?Ly^m2INw9&DH*X zZ0Q%-jOPKB#L0f+@p3=nmzxuK%*RaI4?Fe&=Do+^VmnjnWQjpr#+vK$!*o7osm?Kfp8v zz@(IX4WEE5awPC8zyWV(2(k1&D3G9;K3_+2UP+%B=U*Yv)GQKcB=JVp6kwEKTC@(( zGE8nArcu&C=~fwdmAb7s^21O2fFS&sd% zj8xiCl_vjEL&cx)-3YA-&(x&IdP|Sj3z#)wN~4pw+6Nf`&380!Y9sQJ^G}EFG92C4 znFFgEGuV+gr3FF=mtyYJ)zp~~hNmh3ngC1lCUaG|A3Gj%n#m9`EbQiau0AB@mXOI% z6HwPim|Zmw^uKiv--Ouvvk;<&^QJ8M4)!g!W; z_d2a_V&@+dos}`HnDyCAUU=00!N>Cn{(5@WjUB~|>OmFPB@LhnZvmcyW zngRvbL<(MJcw5#CU5CSYJTGX`?~_Dv8xkAAOq9bk*;Yf@I`8QEz%R3eBsN0S(C{G44E{6p8+tCrL(2@99E6t6 zk3|yEEko0mFsoW!K|=%Wn_(PkC|3=cnxHl`rG`>oLdzyoX)?cS!=tGLt;GJl&44+~ zGcZ_Y7($P|dc?KcUtdqVUcKtg`}Bqwh&S)?|M^P}5YEP-W7El# zCsAR|qJfxYA}I;LhL+!ynCZ-yFET;yBOmwxT;-lvY%V+rhPLx>bWnWm&4FhU@SpEL z+`iXrTHeEj*41n0QMX;Zcqu*egXcm*bsu5xjFIdDQRV7l5O8Z3tMvXValEe*mTX{P zAP9wk+~4|odeZ&(KM>bg58JGk!!}FwG)ovmlK0ZfFNfyBbM}SA=H7eng^NDKoQ4Pi z4kSK4OJ>D5>&8oV;d-9hQ+8&~#K-6>%d-D`x4Z)f4g^yo^Pnckb@h85Me)Yfn6(XLr;k?Wy ziNHZ;XEP!G|~FgZHN+w;e?=QxC|gKvFo0h5!jF8*!lyP=jQ< z6XxRh9mmrJ7=lrZb`E}q#+^P;k#fiPD|G~KQuU$x{!9Stu3T!`k=ED$4Qv2G9;dY6eZ0%m6u zz`vxngbp$Tv?g+f4XwmvrGN=b8H~|7lI6`sz#wKt)i~U0+69lwY$VW-*OcifjYYvK z8i#RAvxZkvTVH!>?rg$bh%lvSZx$C7RAr`4=pfQEfH%Rg)?sEMfTOrbR#wDhsjR*% z^|kjQ#eY?U?cU-Z>XBP2RI>M~i8Dl}=4HOCkqBQ47(Qo;3F`vn@p*$dv|+wRAFH7O z8VCNUq#yL*VL(GGGD4Wr1@@+COlX_~=4>cuyc*D|7!6BiC(OJU6q$L$@A^XAh^bC5 z%og*OJ<&W9l{H)o(?;d83COrPmsvQ>fs9!!VqW7Otd=7r`24Q+VT?V!drvRpKEqy# zQ!wkT$Xr{cF3Xs7RhBRZ4))R?j8zqTaD4&I)}=IX>3W(Z($^tyQ&SVne*uT-`I%G) z^Jy-PjSxU+BCcSQbxd%Bts>?^Q$)x@7^$yGtaCIK`eSf8Eh`Cg#}9zV^bPt~zxOZG zqwjxjSP!g2ht8fmn+_d0hz|q#CKzw69JJu;BmzKmbWZK~(U$A*63lb4M^(j#(}B zQfo9b4r2g~nL|UdFpUO)MW4gf*EH3pBbq)D zYPJfEQn@$QrJ zrb5ZNhkK8N#edmK&NrIu-QTm#$LlkW)AEdHqVps5ANIan5YLpE z$jq5CiBULIbDw=51mDGplq?@V@7q0gd*H{h2L#ftqbvu5iL;ESul?{w`q%&F_tP)` z^54S5pb2mRvyTL^4-hjvGMb(zufuo0`yDg^*HGQ>i8$wbh+?9|dWp?;0}~DfANkr< z^ShvD?x=`DcVwg#P{Z|MtJ8Lx=B7 z=Pq2uej5q%{8GAn=_1)>&jAc)gT6oV{zn2>NQ2aBXigC{ho$Z6&X#zlSqRN#oXF@< zrpe6cOHhLNlhO8_b0QNM33u}QphqGBH+|@fKwO}C1qte97$m4=>V|okBjH_TWid5( zcOuBhfUdN23v;k~oJk945;g$i*NH~c(%JycL<((WBIw=(Ht{Qfh#Dldz1>}eZCy>X z8`JU#06Tp60P9Wk^9G>g$tRym?MRYaFc~WWw14NZ@1j+xPVdEhskx;cAX5$)UBV%L zI1Mp|<%|VA0(d4-7`%$kr#%Rw?tAE=wEyUx>5o4D`ShN9kEf4(?o^Y_sXZANi^DDCQiMXj&!#$5RutVLp`r>T@u3b0pTAL))Pb ziNc?CLaypOFITj%FhlY<7+8Q=$z~Jn>`wF0_^q<3G=syvQH?4vq3iAI3n1wDE-}8V zl(hi!q4uK+e;hL_(_B?E*K=*-6>g;`#W4TV!qD&^&7BM{%7braIC~rz#4mSU_hH#PiyfQ!Y``Fqv z;ea!NST*g^^p9Z;W?jd6tq@8Yu;H($OD!-7;+`d##;UT$bQUM!X~t%OJ`N2P%zHVe zIvd!{ZOMe8rI9X_0)&r0a2NfZ(%|)p)Pax5;PqiJ$2y@_dodC2rVUySs6B*1X5N>> z5SF6BD#BRlM6IdS6wl=%`jtA;-{x^x#ovP7;#w0bmckI+l|J^dk743C3L{lc0>g)5 zp6tV?Y8ca{r(bv;hT;-UuSTP}mHzZkzes)Uo0RUw|Du68T#y5$I$>2ozxMU^qJ5Z2 z-}v%>NL@z{(JZsTFQjIeuP!tTb>P89@RVlMU;o;l$9!sF&K&CR$AoDe#-3z(T;`bjT-F!+3kUMe-G$OsZtI31FW--$Xvj?!VWc=+a`%Y zrWFv-CIEq7V~O)2qbV6Jy2%7^MbLpL&5Po{%6J@fU<+`xyc93=O*P7++|$< zB0`&HoOhSzFfGE|3aXrHF~_OKq-71}2QCY61dYTDLg(ZS9V^*(YNUZk@(aY~FLHhv z=BNS2LC5I=(%r3DGTjn2seoU?91&gWn}KWem-#!Ca5tlgs7B&lL>p5FEuBTXQP+g8 z8H~y@=3Y%LXazJ0rC)prPz`}uS)Jv`k&()nF0@7njOqbcng^|{%+o3O#OTC}^tu+C z`FYy0Fc0uVVq0DY7;EZa{P5)<&%xvt5^vgSNKKh4dM9Xhw(rt+jHMZ}*{A@&&NV~d z8UYF@32j&Mi_kyjNH|H?qYc23wFEo)>3(9H#^ZVU=iCEA-bE^S!JF02fZhJkUAAycVd3UmoBN!#e81 z+HedgpJ9wBS29A*F3oe4+?P?d7=zuE#_DLr+ z7nCN5Bg9GOxnW^2c9>qlxU{s8VVX{wn^|E^6}J5-@MWSe%fqaW`MqhzcxV>pcxB{w zkzVT4BGa?U+^WV*Y5|RH5tAoanTRgc-c3kXXkPf8Ige4!Kk?ji;R_*n z^$>8zI?cx{8`J#TYu?>Z{F!AJgYJ(`%sAumuU; ztF~n4bv`FHChl=@1e3B|hUMrh5%<$K6=X)rHfMX*{)9+N`~eM~w_Mw<1EO7R`|=K# z&~j0<$M;}3xL?AhG|%=}_aH)yvtykdw-~hTUv}Sid*I#M0|Fqx3qlOngieL7ryJN4 zU%qrM%mZ5RVG!&J)N6^#^3|_=9Y@Er(680>i=X~9rVuw+YD!BtF*#@hAeG~XHoomZ zYnVqOmk=rF7#f9Y08||zAeD@c3=O9bf8;}9t}{F|lAip*Q>hnc==RP%(5BY(g)e-8 z475Ly+M#7SjDG1$UrxXG|NMU1-+z=0*qAe*F)aeTdywis{NRH~r!lvHPAZfUY$?QG z>1XuV<-JX*-Jt#F`^^_XDGuJYKV{$JTSkXGA;6ZI%ITAUI6Kd8d=5s8Yvz$uPK;hp z)7MAR*%K4#ZnA7wH&>>ivB@-e^-B1H^!4oz?Z75d-!UZk^YrI!$BqH&O2Vmp5h?VI z;T!4LZMS2OJ(p(j19|!MKzbQx@_8hfOK=qhK-}Q7QZ;~j3;KEAUGKqcXf<76 zuQ>72i|Lnt{lAJl3Thq>K$rC^nMcTD{C}z%i38OVnS@NxEi+<2Zfq>3=T1BW2wWf> zFQyx09d01nPXB>}>BArTX!_%S_xW(Pz5A~F(r5n0?dkU8cSaJsW%4srV>+Z+T$umR zMTVdi#Ob`ffaClIk(TDkMN!4GYGELn0K2V3v1zVhZv>DF&MRq)&aXAit*HsE%4Qo* z-`KC00w$kB6Mu{lpzc+bGLkf8#reya8}4&e8+qFX2w&oREg-l+{<)uyqWe%Y9XVUL!8abT8vjUB-F= zld^7jChrSt^RYiRfin~sD&(s}+TVcR%Z3aLAm4f}prw&{DZ<$4-=S|xw(r?DFl3aa z--y0Qe1bL2%v>~a(%eUWg+}n=ciJJNuR}GQ6IbAP&sxtI@NBORlP%iJ?4?YEjnpgh zlbS&%FYm$CqVsDon){48*f}zCm9!#cIIR2;Lbc7}`Lk ztC_2CfTaAV=+{B_YuyiCGYm z6Q$z<*nG1ItpfLtViWuPi4#%hP%paFnJC&phQ!?G@K3H-&>l`_JnzbtE5UR)nFP>} zKKf`#?ES7v?OWLYEwd2Dv1L7l&EWCl#{>K?u~=U|eJWIlH2?wcec*uyBFcpA@Vb}r zi;$>k26g@V^{_p(-ZE8>eBhC!ZK6a?1|k*^8%(Y}kP-Uwm%p4XLKcMAC>^rjEyKfe z_FZTs@^iG;LxN^M`TEQ+ekRTZ6UX)5|2?8GOiWB5k<1A2M?d<}DBtTXQ?Q_lSPewj zaxG;9Affm%ukSb3rtIpmJ1SxNJ4fNn)6FA80Sx)NvAMP z{LSC^Z_~rjoxK44p6)%VV^2q_$2MSM05h18YuI5gr-%3UBMn!}fyoQ1|2Bdz)vXXbLg8Fde|4v5}}dfL0I3TKbdI zAQ=G9z2=pXqPRYzSkSCsDga1bSFt_8?R*z%iocqM=r-;qFWEYGF8 z`}e0sOu+_D&ZSS>bx*2ltxhjK{cO6ufygfB2GUdCc@ZE>N$fEdgyO8MtVx$1dydFB z#KVWSnL$~4^$eM78_;Hy04!cO@k(lICWA41Lj$=I>Hx(Z-TR=O0A>1XYUX?B3Z=&m%XzVlMnYet;;HEuvbT# zy9Ps8hkg71{d>Q|c&IU2fC(Xj5bbYj?ugKt2M^wr?!M=K7)CVw+^c^}nEx;bwgB~- zq^+J!pL6sV0kfH2ogjgz4p$*zpT3bb2%WF7~>{uYwlh6c3ETZGr7e=A@XblUZN z=~`84t0T${z_hk zh!}--tBz2aEKn`@Wwe(iH7*kK-a< z82}8%9E^|&u-4Kvd#u-sGj#G^qOQVs>oL2)M5K>3r!FNrk%z!u5bPco#d1!~{|4=0 z#li-$2Qt^yWH>%P$7k9fTQDv#X=Z6qf*D;2 zLV*p;xnw>yE3B_?OKmXh?|t-v^sTS_S-Oq@wAc(50O-#XCbt63j(a!!4NM|T7N$v! zn3FBwXW(3RKi)zsQ$qOOGPIV^pQUJ^s|wX%t#?4Q%&| zpZ*k??+*~cjo>n9*j_$)hWcQ}2V--`@w>n|%n6wTTDa`kOVZHHkSd%`fq}qxqIR*7 zEZALX4BD~)g+O}0iWYB!I&~m~s41I-Nx^ZP^`I%26SA$THSHmC5UJd?(2x>O*V+Vdx#O>;|_#8vmEU;5jB zKlSdv9TPtoD1riP(Oy_K=1UgQvXtwc7ct_N0|P0XG?2jSk015^^^RsB>|`gYL{?S$ z0Kj^N&CNyP`M$k<;nN_%l(TdJd96~Fuq$Lj8STOat3*iXf0U`TTh*D@ z$RHT^TE7FI7u>3ne2A|$zWeuQF^FB{nizR~sGs=mJ8L%TmQ4;c&D^UxO#tq-)=l-5 zze{|$BNo5Rh3A|szE8pMNVqgJ%A*`vciSmoSL$z>maRlT*8o^wud^T2CKyuD!)ql- zhB@`Q;m8a@GlG>)$u|j)^=I+hzadSb9GL^lv_6(26XEqSF4Wccok#wg&+%nhdD|pi zp7WY~Q@5TzLx#-r{%+rHLDZBYs7+F87Hx!hI$rieMkq7T;PbQZ`2vid-9DFn-dV@p z&$~VFZtnrt!wp%RX zKTQA2|NK87wcJR1dV5pUxlI$jOB<$;LOf5uY zN=WnP07_4N>#_9dU;8YYf(FKK0|~x~tcNvE zl^`8mBTVWRzn25nWHzZ0`zOz9YT?;B^9q>RQ|k%Gi~q(3k*AadUmxC2@Qtwms+v`e z;|C%$p|dzV9NmOq4iKr6J$~<$PiR+6Wt0%pBLQ+}kj5_nYI_eM&8BOW@GoL&TSwn$ zwiYJHFsy0?s@M2SdzZ|7XEns?%cGVw#BdZln{>o=C@TKZcJ^cL-o*jC`h;+-EF+hr|~8 zz>Gli+8S}7)(M@)Dum23cq`akOh=CPr`-V8$t7N5q~TrhqbZ3 zTM&fw;h*Hl)xnVKOl{U`%>b*3Xw}_&9IFpBj;zsTm}uLn`Dfrn#@KPqFq0$C;aff_ z>9mbUU z8>z_aGga<3gTi+wzBvqh3CxwkIeD#vxfitC6-ajxCR7lgEpY3VNxb5@aK-uIeFAl# zD-d?G^M1?rJqO-C*9GQxCs`FLuJDs!0a!;h1Gd4s_;3p7+_lhqE8=Q3k}tBkD!p3+nR-N!~A@SHodHG?esM5%_>o76{Xgxm|Yt>MqD_mC~H^h~J0cbl}tp!)mLQPSndj}65%;+ODBBxC` z{fb7i;Dg5SC8r%Z5y;QSb#L%bl)<&(6JezVp3r>oUq-{&Ys@%Z1#NBvSgawGDFcvo zLC2@Z=SWhd zf@@BKT7aT`T3d=h3jl-*Y{CGQe&su69o;Zwb-XI8@KZn<3w+0Xs*N#gN3+B^h@obu z?u$#r`@c3ah{N+80cNG;(n{_7&3Ih^>}>+NH9rxUsxcAtF5?R^hX84UaGRPB&BHit z;&4AReuHOWW(NIUMY5~3R={4zd{{1!uxyDvL7xPe2Irg!-E|38_!YVZTrktt=X2vMV-0Ma%D6fV>7B3&;S`YL8eCks1=x7_k6>t_Vgi= zFA_nFNx#VW7I3;Y$3+PY8ZZKD2>gA}lC06r4Vgli)i7Ct$@e*~9mB^Kki;h(t?gCU zv_f8eFQhXiFvn{vEol^nwwkrEOu;g&nx|J_I#ejH#*zfBBlBB4;70d(+d2NXhVrS1r_C&c@35FT~2U^fSxiLvNui$#dQ(GvalEb?^1r)+Imk$-T2Z)=l8sSEXz9hZXK+n&-JtS=%if-xbb)U#Qw1ypPe6m z_u#ghZFSR#bM%SCcK6urfgiUXaNT+2@2;x~#J^L3zgJGZl+K(vjke%t5Qt!2ge0xE zw+{xQCVU>&+5CR$r+zv%YZ(WVB6(C|p0cp8j7jDM>vk2Bn5uNg9d{6!WGukloB|1G zjPcdYdTY4W?%p2!9ueXosMN>O*F*j;Z76 zkc2lhGzT4!HtgHCFV=W2P_a(ZCfk_PxqP*IE^oW%c7FH1|CmE?;?`pHBSA`hS1t_r zT8DnIOQZ(&qjs2t#c|Fd`8SlQj?{{^1m!w3&jXlrsKwp{hu>NxnjLAm3Sku*1pNt` zYPhEi00ijl1hmggljDGXE(fSIQFalqRY0m~T}lCe7(0dbp_C{u_u?lY114sy#`naS z`-cu4P6HP&rA0tE4-MztGH#w2M?-+4ywYDCm)$$vTkIpF1O;zI^D2pT@A$9dM^FI7 zZ2+{cjb2TE_UC^F!-#;5`@OdV&D5hGc!V;kvjCc>73ioM=366sZJB-uNWM#XwX!GH zggrb0Ba*{iBk5XoGtT>j230e$B0yz+m^)ztJNUWTDHu``?_q0hevEP)lq0@A^8p=q z1{^{0S#A@BNTT~_0sUc=CH6P=;_!%$HIYf#gMn~d=?_7mc?2R)h3)5jUEK0Z=N_2;Gel~x7j;Sjtl8K*Mr zvjAx7q*lWDPg4m@iUE7#Fl?h3m`@%!@FEs(|UV|AK*_-;NwPl%9M1iSX&t!enBEP^;8QjjK$M z0%7~F3e&?ftR3(eNp~JUgxMXm4Hz{swnV#o5$KxR1JfleSvFP|=od6OtUa-a<2?^E zzRq|yw=|^&O#a%sdSm?&)j2SX<0iavJRNs&ji0^$op8L04BrX0eO(=0*kx=GE>=Ok z@%}yMD#}7<)rU!qoNPEoNhnxgsyhXoG76Ecna@2vdm>bq8%_Z3?E!T&Qi|~+PH37p zIk3L8m1~F7v>c^!zPwhZK{FnimmJ)?K=TPA*!8=U#m~9a-*N=YE^t5l?vXPRO6@%? zJD0ZSbqQ4Ij0WC%3(u^w)=9%i|=?>y(L1_G}H%FwNXeCreULrDA{ zk`I?5Wm>=d8QyE1G_CS;T#I9$eUO*$^YZ(=*X#28eP(W#?Dd;2Lh9)CzP!$thkX|P z#66CaV~FB4h@To5+h{-d`85a6%MXgo4$tME^B;HLcYEN+pa=3b=sL_kYi@Ln@X0Sg z+p5#w`Y-+_j;VxPWW7z|w0rU5B?JVE=`fmy*47R-Ud#sp`DT^Uj zH>v9;eJH@up?3lESWSian99iLTThtBQu=oddT5S@)gq>0Twew)ujU#oW^g=5YYxC9 z<{YKNKt$VN90-Bi+TEUt*#0jz*QWgk4v@4BpvE30Kpe+6MJIQik0%I;sXu`l0;Q&% zog~USd>E#&8zB?gar)1;Y8Dd`Wcs#(aI*!Hg9$v9sG3V)c76he?;3tASK@gOJ^XMw zu>U~%hyUY0WFB;qJ-P|Tf&2o1vudQ(L>whY1oyL-(uCBAjrShrO9M9R4LDJ60C0x} zN7?hxq7Ztt90ytfS}A*j8NFvsv^>8r?m2*ZA&l`gfBh21|nXcd-#;!~!UHYxWKB2F93e)+tQ76r8)F8?5xCGoXbDu!V+hn}eipZE0 ziKIkGrm(iygzGU%+Vb*dn#Wx6+Tdltv-vk*3^-p=hFLh;4@92iK49I#3@k8)GK8hf z?{ZA0ifA!3DdUNZ9T?8J1p{87?veKehC%<1z;2Eq68H$dT>xLG9L!7 z4yG4RyqH>v#yF3UhK#jzqy=HHjJl5S;tLxYxPpd8_+PXP3LshtZEU}pufgPV;va+4 zn2$q0sZ}CpnTO@*ZT;yoCP{;r7SbR5{=X-ZSyTL0O}Ju{&mCpWbaga_PpOgTHh8Yj zsexgtBx2sqZA2L z-JDF$GK^}?iR_^S-w00vXw9gsyJdK9K7sRdw#DBpMbqb=UkjP0z?kR!LwzIKkCCRH+J_Mc_65vH-Fxg|C=+b`L(&+Rj> zjX2#r-@`IJrxwL)Y>(~p-FyA_n!|Gt5$j;j_%0E>)sffH-z@8`I^N1>y;W^`E1#2( zTa5o(IBsuc8~<}XEAOkkJp0UKZ*@r04A0nq;9$CR={!!*!)f6100Nf2bl<&q@H=KO z(9#toeQw^aDFG>j6k1df>igrz?@A-Xqr{b;NPGA7A?dyiI)UU}a|qUN17<39I5$J} zQZ4KKYhU>W4vn)BP3Hj5{qononZEVy?}dc&w%d-SuYLW`1Gp5~_$P^GA|vzJ&;DJ2 zR9*O8CTREmf0`MaDE&(j7 z@r77I2xW94HRWe9Q8Ur%>C>kpvE3>|SO##0ivTQ}IT({E!cUe`A0TEr`O+zT<~oRa zwJ)?JO0_qOnWp-&Z$Fk=iEMLuU;t+D5+=MjsbaEW|5zWhksD>OhI;pO;na>zx$UHQ zB4m=U0fw;@Pzvls`2vH<-l62UmJ1r18we{3y+$%!VBRt1V3^o{7=S|nwl%>%eeJ$j zO&q~Yso380#0A_C&)Zp(SXunng>oIS|Da?@-d}s{iY!C#qFE7qbz@;rR-tDXTs;ur@AT zyqK0@#+?{4a83b!ev%mF;GUAt(N?NaAbDE$raSMx8_i#q_rkf6V@&6OSc^`EO3K{*F#YoSAN3*Sf5#m8(zV}W zJ<3(u(GmnXc?QtK4J~s@rt_WfOimZMi*XuFfhss{bJZF+wh}`JO!cwnwB1*#rH_EV z4xZClO@OY%rW3Dx)#W*0*O6H@|H$wN3rPFF(sTvMlfbvXzdt5|b&m-VHFQEyciNE= zCQY#dg<6bH?WZSg+)#J=A>c6(sA2i|B8 zU@`*mSw$dFy;Q|!@9yOMCmP(IfV>Ch?L3#o)(b)b#`fqz4c_PyBg9!QOq>y=WZn12ALz4#Ts;2CQ^hlME%YN;GqtW$SZ#5p-|6 zJN)dCzi*#@!*9`YX*OhBdM4o15m{3UH+!Y>r_P)uS_}QQ_duGsa4y{-`p^b|qO%cm zTg)ViT)(!8a0^u!YGC}70@))0`4o(XlUvsc$}M6tAdXV3}Ouu;!XC3 zH6IKJHFtvc?-ei$<@B-s4Tia8kV8{bX0#x1z$RlLh}J*RIicy2{bJ-CwGo+M4UIKr z6<}1@RhbO#v&;(ywSs%x?zl0=*74T2B-{7+;@(Oh=@9KZZwmT78)e9Hc=$KKpA*IJ zl<$1BPM%j&5X*>nwIvLAc0J!^Ld@uF8P>3XM$UcQd{Ap^I-DczXHAI>tiPH9>!Rbj z7)StYz6n}jt>U++k>*4qTI*}Y`QW21L%#^eU9C&D&Ur2jn7?VpC6gtlkXD$XyMahx z8%6wRV2W4CPChqzoxazf6O(458n#0XpZ0qAhOY_dM*7TP8?5F2W3f=RF^)O5L~ zl*(s)Wqtlbb(P>9ZxCP_9#Jc1{?#t?t(-HkaCeX4eJgKR%pTIES3{4G-_$*mp zO}$*RE0{8s@mzx+h=pdsCJyqda~o#I_K)Eg)JQld$0&b>^TWe7JI{Rg<>4s39glYm z1CdSiybJAE*SUm&fn!s1K*Pj_A6%f>!eSu!Y?e(;mCTJ`7G@prWH2(-VFrd>a5_=R zFvvW3f6hP{Nkl;Epc;X|ya`SW!LQGCkXy0q6*QL-sw*V&l%u912h1@cBnAHG`ut^! zVqvgIy(S|r+2rxJXg6)VIgx0K=P2Rk^nWqaEE`$TS_xN1ft>#4yiO==CWqO~VRS`;r>?g0c ze9MzL@b?%?-qkY5H2BJ$*1cW^!SZAv{LTBL4{1++|IYr{{k+=)yFKt%_ds9oK62qa zpT6@QL$uDO0|)jIOZ~od^vG?{yk6EaYZvgE)52KO;4YRQYgN;WAP)hakKJ}hI`QJO z=__CPYI^EP;;AE*?CtGA#orN*vIAGIp{ZTKVHdgzAkc~W@|B^;fpGTx<@7g+yfO>; zG;{GMe&N%x&INipYIk<*AwPwT1yXouL^#Gmnv9y_9$N8LoJo>Z zRi^0|^`PGFbEOUl<;I+(f_n9lsVdBgVOZ{)Hc;mtQ)Amg++KJHPU`BjdE$rLT`( zOZ)cslaaU!rjuMCfPQm(JoLcbAq`gZg56fkm1^qVKt!8z8Bm5|6G`<9V_v~ECP1%* znJEXb34%=&R|+5l0n$$F@afNCOz!%R;H(dF7dQ)AH<6(G^7=CS0Z=N#AOq|ErPLqs zGxbuqsFQ3yN3y+FA)^`%XR@=ya>H@N?=mpkd!}W%pLv}ZI+e2dfYzLA7><~OagOiq zSss4B$w2U3*zC)roO;UuD#-Lq0C~ncua75z@fox17ux6kEs(Vyt^);e8!+WQuUM3M zV6M==HyIu7vt@P-GdAuKM_DiT&amNk?D_1Rv|U(|hTHntjv{(8c( zE&~1!?%N*`ygIvDG4-rW2M+E73l`Fi>sMJ*i!ey|Xpl6rnS3mofGu#3Oz+gxcsg|O zP`da2W9cV<_V1+A=SRXfM5ZIhGt#Ua`=|-=u+QJl$2*FF$oi5FjsF>d&O6)%A-ME# zaoh27jj>WV7u+Y(7h?nqYz3>4ZB@d{VhP7;2HG-m$$VCZM3iu4EJ!y_2Ug}ndw0;||Ky)vbFa_I7cD=;ecTgu;8yGAbG^S3qHa6w8*@hp@V(ytvmaz2 z?6Vx;$JkJY^_5xBaj5|nqfD1-Sg-Y-oeRg$nkcEExOnkm^mDFh@L7KLH<>x(Wjh9r zi7y$%-D9^0c6;EB_ds`dZ~B#A`7CQ#a}9mO+%y-FJd+HJP2T)8nk5K(f~FxFRJN(+ z*YyZ_2>V~dcnStS@$;Wf4?pz&0Qy6NnD3ya)jV=^bUd9peIea``?2&ZpZ&G;Npijz zYVmWQ`&|0`pZsb1NB{f(fw|NJ>Ez2N@yR%efZ`J27;jJYjc6=*{wz#|z{4!a9(fd* zHGra7bIpjH3u1hieo4E6CdM7FrMW@hIG?|7U-AauGWsa}D%C6k@bc7CPX@i3N80-S zk9-t5iMa;}sipx}dq{@XPCstcV5>cbBpyEzq1wQufdG)T&_(bQS*r09z*J)cA&XgU z%}`v)GfYZG;}G;{f&$P)+FQxKWu|S-J`8;-Gq=REiNBXRZ$HfIjx;(x0f=hGvAq_M zNttLbIy&0$IcQ9S7f(Zns}PvgL%ZwJxpQa2SK`d&OX-VW`%0?A*Y6$}Nu~RzPrsC& zc>KF*cyKuN@4q8`@{^xLc(a=R-5>ukVR!M9fq8o2g%@D{Oyc)6SiKkt#*Q633S+ZG zSlc1$sD!+fy|@}*4or(lFjmC$WquZh2LRXt_%f$N*|zk26F|EK;4f$2u4ivqM6+-W zZOXGJUP$u@kU9XbY8qB>ATQv6z3H{|QIUN{UjpY!I0XyV>^J8G{mEub&u7{IFni2< z0eS3?j6tA@K<^nqcMoGK-JB=xgfXwU*79tVpfTV3mDb1k_$`}<&N17J>39!gc>Czifcf?ump3h_HN(a?o`U0FyUcD&$8Y2tF()CQj0dt z00H`V%+5>`NMJhc?Kui#pM}~r1Zx!x#xhz@Gp(BtZ=QTJdk|jeH*ui95AEnR>O`=Z z4w#pUb+S~Kqm^4iBX>D%^&u?j!5o_?QDb05wX^0QnOPXbB=f5cD!R42s_S6?Hq7{$H5mTzK5Hh9Um$-r#_2UAn8E3FhkP7 zb#7E@C7ev&DfpK$m_-^iF*Y7R)*tc#w0tGyvG6HJKr2ADY)xleY<_kF5wv=pK-Opa zo50#=L=qLR^LLMMx?;hE#0&uK`D_tqsygdsGlOXHA#Z1159?_8J0<*i8Bz9jzufGr zcxv{?vTR?JnRQ>*J}A-7^1Rw>EZ1kncj_zwj180bi)SuI8!fL2Re2YZr!K-3Dy8t; z&F943(hBb9Ii6R8(c9CTC4XWgkeTqj&$8Y2wb~!Eb4#?Whs=UR-fO&eaA+|4Ri6}p z&&PB7al3E3J+RvYZ?FdhTAC#&fvd-q(03#D7^-y{2S|ar<}~5R3Sbqv2u^gQ7VKzF zw7#)IWEPwlS&N#lw6%7!IZmZJ@4Sa=GwGjzdTeZx^~hvbkPUJr)U+O7l7K&Cx})j`g>?m#};;K!@n z`Lh2#-sC@f@7tc0uPqQ+e(v3cKO#2fm7CqwK=MtW{N4?+`{lp)hY{D}dtd)rs^FmF zANlPlm-f~iTuM}8Y5oGi@l@3r#6Y}ri!%gOus+6HF19ev=6g~JhxO^NC!&ag z%zHV{btDMFY!ZZvZyN{Nnwk)5v$%{s#(W+}dZgXRsWYd6pSX{mr!4Au;=;K!1|s!? zzxoDx->RkPO-r?zdb)A-TI$D!Z4?_7Z3v!w?rC6hCEb5;2d3C^`h)-UcY*PzAuu=6 z*T3-}unBxQ)Tl0zPc@J?-;^jBrH&`lfBi@QRoFy4xTES6YF!YRRaMShJ4hoo2u{}k zA(caIJG)t98Z37sk*UH7uAuhS0W!GGdc1|2a6gibF$ghT32T%(0(W_U^G2^XB8MDN zoC$edIv0BT>E7;!s9I$_L5M{-xrYya`o`)ByutBqs9pym?fD}T8{^Mi;=pu15b1W# z^Z7|-d{+%Ryd6=l_`E7q5`CsCxQTOPx#eR!dCiscxX!d~h>OZC$1-P0qXw zTC^w9Sr7B=-!9tNWR2LasM7)@MEKCG+VFaY$( z)(3NxQ=E1x^d!g42H)Tgn0)r=k}E!r`3h~*wCQX zx0BTXmmy|HAp|B+JC{&!{Q7YUpv{40$sp-~AtBN~6DoP9!C~+Y#TqgQpVih~lk{T{ z+(rX!Ro+Gh**j01NjGj?2G-4D8#IWt4TEjmBkvGpTzk+;^(5;VPhk*Moe;uXn;Mm) za@PZX2p;(2^G_0>Q71DpW-|UqqhcP)_-DA1na{1EFv(+eec}W}Y{H)~Bo3e-FOg!m ziI|tEqNmxjP6eHx|as+e|Hs{4t>a{)* z?9w0mZ~aj(Z4iOBT#2PT23gm?EH?AADx>X62PAULtL|i|ZSlU0scG$FDbKkm#E@xX z%vxjMJJTr@FrShY`*i#E?I>3SUk;dYFtl4RZ}gdVMw?n=Y8uDJ^6ay&W3?-h=(3$g znGORs>Nmep#TVfY*dFuPhvUbOhuW0imq9cnL{w)wf=3S9W!6bJ*4 zADvE5KlMCB$wvC?Z~p-AJvBJ?H-W$Nzytz-ao8r@m39N`hO|Qi5kM=0@_K+Vy)?PS z`Sls_);?vGlngiR!~Xux`(M~n`d{wtegA3S_1ABml1UkqWLT7?$#j{AO}LAj5Hj89 zQB1<50`R`5MrZYFG7HHfUt>B)foQ@#+~>XV(xII3xc$Po2Ioj z+Qskw0pew#CRRndAgZdy)fR-y7-z#V1797T1gXM94&Ht?HBKk$ z-Fehe;p%D}yomwtQ>YE8-isgs?}R_1Jw2$VB%}k!Q2*^hrR8J<_L>5*fBLDX(^=F! zx*!I&kW|!^COBWw54q9Aj-c)a6I|b7E@|g7YHc0N{X8)&hCJ_>XVsG$!0h{XZlxov zDG7#Y0-;{JdKrxl0YmGx*$0(IuG*rqHA2+wkyuAri&Er$O1 zI~f%9+dZ4Y>l8ZcG2`ML=JC9x2$AhrZ}b5)gmq1-IAc&P;~qNpV(VObV3NSpn4gn1 z&O5TPUO>{RuZru_IIO9u;5M)XV-CaCh&7^TEQtcP6BqjoX@Hs&L9jw-b|8UL#maVd zL%?>1#6e;LTNc>=D2VZ10)jMFPD_+hI6k|yJ(f0efouz7eD)1^O@)rq?bOY0vQjH@ z8qU~VJPG+-&VLu{K~GrgtcMMd<_+}zA!&(q0KNfk<>+lyS&MVa=>qFv+?XxKgcg2rlYp71mfs11B&QJZRxgtcp5YUDY-QwNtN5v^Vc->g1Wx$hXKR zV!r@hGlAtps99;@8JRrW@MzBZcJ72$cQyL*JPPT?Q`FKgXHK{QJ#?rFW)0_M{G zyXG7NaTujP2f=LLf0CEI{8U_-N_J7Ps9DtxY9SU}R3eiOcn}8MXR%L^xbWc81Be^a z^dm?QOzSf*)tQt?+`#BrYTOO);)MR1nu+1pb z%ex=z7RffZ~t}}T^mEfJuJMI*bk#n+eG_hX6)~85Vnv=WTr@YUhZXhJ#O2d zwSO;Z-gh^Xu!DBQSH9HLe&gB16|0d1t?cq&?-e~@-JmQ#<26o`<_ks+imRRX=uz_r~*XI%H>RS=?0 z(uq{av;vO{qhi%??-B923D%$bx7&qWXQzb#^dWfSj8H~qG9QW^1_W)yEheNH6%r?gBKC42&xtKL(t%7iK z`tlDIT^U`dJb7Hph}1AS=AOcBqi2iy^D+xn{c&x&L=0}$%{v!`C%vAVRP>8Lb#z{$ z#JwW%!7dA&qkS!DGt%d|OZ~QMo9{K$2^$!JyZS`@wUHQv*vYDE7DP#`{owqQUR){S zTrvLE2>MM+%&in9iVZwKX+tAan^gM&;ihhpdnJtSZ{4jb)i7wEs)2gJ>ej0ehTWSO z-|OwE2Z`1M5#~o&hfD0$K^P4uv8`EOoKFvKUQc&#?W9*;BtkPTp=*qzHZ^O;2-$`i z3el|Lv%v+y*&(QuEEt0VO%4AsPqsyL*%j+#6^S&5@H6En>s$7zVO-? zuz#ur4$}{FMOdKSQo&b*Z3Sn_jedOpergB^k^H8f6xbY!Dm~cz?gW($qn8f{-^HVi zg5H)q{LG7lHqz@VO=D`2W07dfaG}o6Yq6gft1mF77y3ooFUs zBwi$20>STP@_lAr^Ldr$@uTfe9M&vx%Y088T>V@=_p&U@uuUS^kuUm}`>==HqaxsC zn@wvwMDis7Y`glRmQ@gP^8qzuEakw&m=bs;h^y8ZTSk#6NH{2Y(2c5TJoL|=JDZ** zSdkJK$H2PuNTqb3^t;$sSbj)h7;gcvX$2a)99o?KAjd%4hHriAThWgwi?P*4;@r7& zfoy!~OJ7P~`N~(KekCoNSBT)vLG;v9Pld|Z!(*9;GLLaU6-#c7YgBUh=Wqmm$wwfL zSoU7~6|jeWQudSY0u}@N+|ME>B1GX_N+jI5dpG@?Kl`)v)vtav;DYK0&tm@|^F|mZ+!7WE`vUF)#`;)%4vr#t;I@k0LPzxtn0CpnVNoj-#C^(oFK)U$y7UG&?zFtRk5X?PJb@-qB! z+QI0-Vedv?z7NE-iYk^8oZbOcM>;*j4PXYN3y$&nG6VqgJ_y41%!OwNdaR)=swzwC zX%sH^7@w{U&J@la&oASR?6O{#*A1k)fji*^)+f>oZ7VsOxxs?b24gFgdSkK=eRFXfPZnvjjBl3*vzO8YItuWT9Rb z2+t($Br9Z)$-Otq^rr4Vc_-oNx|0a$Wj_02edj$F#0*k}Mk|<{u0h3jLaTzx<+4*j zw4+9wl~7eUgLff7l-Ni>kSgL=1fpuoAnwIzUALgFyhd7qG|MQ?28d&_K=5&3V%b5M zfIm^5Ncbx2rW=Ww=eFglR(G113=ddKZ(h5JJ_Hn3aj>SIMvo)QspvRF5?-S!G&ilMtCmjU8rT4d(IE*c8g zLF#8|x5zrSkHia60x(_6hK6xw%+#B?z zN8AL0MCt1=l9gI*ggSO$(6aZa>%tQka2~J(fw9FpQ%c(x4jxwVa<+|a!vaKl{}5w_ zVf6~C?5P7M3f=R8N4ZXg4ch5yGg9EIZ3=vh(fu@BpBe(fZ6G&8?+T1|ED8tR!47}B zJfB3QDN?I`oyhaOd-sSfFcsfLW)&|g`qQ_u2UZ}|EGQAs`T4mFC@kB$VnegZxVs2F zL}J6a=vc(+`+J!AT*5)Fxr;vzQquU{kBiuJ9(JJuC1>HGD-Nh!?cN*f-TPQ`t6jna z5%xl?$mw?hTZbPHRwWH0`;LJsLIPr?3L^W_4>&dU*)b@6uv`xo+b?lqTKnXC>oPLq z%!8Tm9d2JN+qz8u{PWN6MS&HGH;)^^PpFV!ePCZr3l^Mrj^*RO;@fM?1~^WaHd}V+{=687xf7@_Qo`SXA$ML9R58V zfx{7q{aE%$42Ro8xWs;QFAM)Xh7J0}iOge>jdIDT33Mdjg2Aw2&y!EcnGqei&magO zU&6&L_P20GhR`qvw?5ZT96y2D%Tq+cemfWfswF=2^fTcmyM{`OFx9;->=s_+=Iu)x zZKs#_0&_|lpW7v$mv`}u-{rmsXX8o!6Mg1uBx{XF$zRG7JWB}KHknEtaCFrl7ZK}% z%Uh+r+LCmEh#!0QIqW;&+MYWHms<`qOekQoKI3=cHdn@vBs8Zn1f5PNUU)vO5$$*4 z>b3OLxeI|L%Q?R>b1&6VI5&>OHua6cZCwKyTf*B*lQVAW^oevDFIv+V&*CnUI25Qk z)j22hhIJJ9_ywc|$BrEZ-oi-^G*kU;j9Zr%;q0D-JBtg|0es$rILTcdK|(TvKKJIv zPWli3-#63riL=ZFgbMHH=V#L&{gXdVqjFdw5WR%cJLrH%$d40qG22S^=5g>_q(pM7ayEHyx82>V~_!0}?vF zu$t;1bN4IP(gNe_ocFpexOeu{QTsw`fOGn2FNhzAzp6Q#oQ-QW2nq-$)p|wdt1AZ7 z8wu}V6G%MzunVc0Hc!X`NJtp0?MC05F63||br!f@t z8YHpdx^Z2(W|U_1P-h>6$=JxTz4K76xJa;l=wm#xhe)bry;qU4D5X*2=X>i7l^5#D zYYoi{)>@5vVqMZ0*R1MBO;nO-MG!a!!Sm_1UYby?30nq?)vFM78>{Ro)CSj)2yw!) zF6kR>ciehGwk3G9bs8kDi2X8{oB<>a9N9_TCo!h(XMF$nJO2jt9k}`s7PN}EP6qjd zKvgx5_vg-?PV?9j+y%M5bshCH2+JKLb!d@6KtK#*N9A6Um@8i5;qh9JUhP!r+hYdPF7cvI%k`-tAl!g?QMnk{ zKx|rpwGswtV?|QBSG{%Xc1RzjP_JCM8XI&BE|yn8J_};+q^SzCh_P7){A@2K)5|*i zxByg}xsHmHYBZ)5DOWwm_rVoov&hX?>S62xx&9)*5*~rTvrtTHbVKWT-__dq)?Mm- zPZ~ED|7^GVbt3j6{}Kt->)iv{%ipH6e%m<4K_%D2%f5JE+h*HgU#!n@vE7SoY8S5` z$4_-2+vIPF6jg={Hl;Te5APA|Nse-`oS4R~Ey0{Lh$`)OY`y$#8Ra7Y^y5{Y3DlHG zIBptE-?(vOFDRX{By9KDvuEQj;vj+Ju7C2$C!=lFrTSB-Xwg>tTl!)B`O5R^cgHec z-uIuk9v6`Xhe_)hx<_pk(ndHjfA#GV7LkOU&31qs9ap(T)=A52`|c(+mqYp zv%Nl)1g&S$xVC5ItLcB@#VgdfAeNq z2F`Vp|L9o=gpsjya}lH%uQ6*NuiJ3%r^koW)33agdZv%zwFt%#NS1o>qLy-JmDKj& zinEUHx(JcF_Vz}V72^q@q8G>R@1ckiayRc+-wPY&pU|KLmu* z>t%fWgTt|AFlfbQUw)$h)d57)KnN1kXoeT=-ChUqH2N{ zDeYnObmel9YcFLi0tj{z`@p$Zk6*7*t|?VhNJ?56Zux9=jd%)~U&$O_Su3jTFkT?^ zL1^-e+{_!jf_TAFgEXo_q zSCO{w25B-7M`;1-hGf}2-3K?WJGE9A#1V17^sfe05{ldf~?agRkt-P){9eT zKT-;$M!MSdMDJ!k#|K8z`oc=O3n4f=vB&rFT|6``oiq}AbLlcvp&|U5+YTh#&G~J2>zo+ zgrgm?Cm0$fMKUwgba0$Cu-{pyFVs23eiM(}K+58@3=C@Y4J^`#ow_ByF^pi%GN+71 z#DpNfjs)%y*?kM#YnOd=>n4&t?27Dz#E+Nps&3s|kNMj~Whb%K;zK1Vrf!Lipw*jvB zEC!J`Dzuy~pT~j%0E=WxK)m_po3Z&NO5}j64=1ASWnCiDPO5q3c6)Fg$5778!&5*f z;%nV<%;lzwT#M){dSBbd%Y=w6?e(s~Vf)w$D!dBP>v#KPdOxAwLz%WgOxr%&Vf#I7ZM%JldTF=qQn%K=8^=Q8!|{=0SmIqoUJT7oojMi7hH11% z@Z(_-2LxrwZTkG@KcCyl*h$pvNo#0-%parecsO^_O>WUA=F71QAWOe&pZ&94-hC(G z;8+{9@7%d_QMPrP-@AmJ2chHq&O7fgXq>yu-ElY(w!?H~4doH`u+Cz2$HYs{k5@?- zKMwfQK40baLC?y&!~4&91Xy2=f0+aKG?N&Wwm<)%R_x_(%lkojJ`L|nzW|FsbiaO5 zTV3xDU+%m2U8ZxKxn<;7xRi+l(^^m2XMPVmidNZsh&1WS{)&2m1^)92SK4k|{+E3( z3=qc2sgu|UNh$lb7X(DOU^?rH4`qaURQb*Q;j5%?e{MV4`+LxMw5O*Qe$vR+W!?Fr z9SmCsNLz5Z9Ye8Y$3Vmmgra6${Om+eeEj4|5Yw@A{3NPAAYu&=q#cm49gsg=Wx{4p zLnltBlh3}GMvmh4mb0bNi|QB5l4Hb^Sib)ty$ciP0UYViJ^xgC@z;KxW>nMv`_=!8 zc3{H>b88Lmc|VeylTSW@F*V3B$Yv)kTVg+K%n8?s@~L(vFY7A#Lb|I z8vJgen_i&~J?V@>T&cFa1BGFPbJyVpDkXZtl4HNNu16k_UH)+j+N*0!2yt)e^gz8Kp$he2rR1h@=pRrJldGUi6tE{sTt zYRXqK;XF!ASV!~=&b}Uu!iXCwgJeQy*mHo?+b4cU5Ip8UuJ;<_uUpY2Vkz98nZ+IH zEJVaM9?s@)!@B_@eJs4N4a$@R0k1H&8{!m&dB?vE3pH`Ozb|;$>f~+?)p=$3-zjU1t?!AE^{gWPGw_ zgJ-k^j5ZkBS?K}F=-k2uZ4>5M7w^9FcDjE33XE0Y5L?f6F^4wEi!Z+d?t`1>*owx- zV2!Y6wfos+9m>2ILiKNhF=((~dysyNqwYuL81~~rIhdAbNRO)c&PJNUOVgRt1b(Y% z46m(DKTHw`C)TJjNp9Y{la5VILS*-+yTra2qwfBZUL+Q%F5#;9?AfzOS>_3t$!s{s z5VM^aj(Z79?5q2x;8y$aCBwylb)-A!Udo8Ve!+i!Dgp5eZp%-t&cV%xPNq&BNRdu~ zhL?8{Nuxx2;M_%*R*~T4%a`N3(us+QNu&q^u}J4YhOb?_79u6}DFyhz&_FOPPXOp< zDTct7E%L6)ko78!ILo52UWtx(-+ecpyFopePMFuxI6;qnVf7V+*E;e26z4g{xK`aP_RQ)lnZM4mLEE0L|QB+4+N(`0|iA!Xd?ya}q z!Z;`sNRE{pKap$$<4JtjU)6_1%>8`#yWb7O-e*rd@k9_R_R;!myW?Ry;ekYbwowA2 z>H*8x`0;>pEUe$V#9$elbLY-QAU}U=46ecS`Sa(a+%RAV(3N@|cMmz=J5QD)QK5R1 zDr>f>)FIHP`*FqiwCc}mDnCE`dpH8Wj3ZEB&_R9o9h=Bgjyow@d*~;nb#ImO@*O6N zNHzN{%Cd;oMl5%k7s8ylK)8%C6T0D4Cb!r3T_6bV?^3>L&A&%Hl;5qg%lm`wKKr>` zQWB1j43iiv1`Llf{%(TYuY&0IcIdj1Xy`grSHW_4MWBzPW~KU*!O<#=rIE}#2H}j8M;D%8?hq9a z6r6nyxhf(xB4mq@4WPc{nW53MI{PBC_NNI^x&tAk(LZ=;sF-!Ym9J8V_20jKKV5qB zO6nnsvTi>mIQl4SbYcL+a1^3K?l$d!0F+?vN0moUL9sSz`vyp7mtKaLSJj#58pM*) zA5KO%>t-IX9IIosL#2jlpGbQrecKkE@J!Xh zJ|uD4cFZlWrWMxfcfNZKDMlCFVP3G+ICbg-znL{`h$;}b5>&#WrKJrRxVO{f5uL{j zMBq9ZA>vLak@&5x45SHSLsSWtx4?R2>cjo?BGR-*C9Ap%yCTpfaF3Pk%3zgz`mRr$ zfGCGZ`_Q?;4!Q(1UhRj7h_@86Z}i4Ag^`+@O~iMNO{h<5b!|5RFakg+T9H}-TmTz@ zlpF%xkIwQwCKkZvd&~B>Nb1?MXG8zrXCkhbE?l?#fz_0{NCZe^ zScY|Ih^(rW-&I?>dE;i9AHaPg0M@c40G@f~naJyJ(^-f4E$_MKp9=(Dy9CpE*|rSe za-T}y%x>8B#Cgp7F{2h;ANVCguSuC&+pN>;4P zG(In5Ync)p<|#VczB7*ps@&AW>u>~q*+#(qT&}WL0s|`#TX)m>DQUcWJ^ZYc=WA0a zu@IY%d^`*_5AFpH_}0sOSC)*6saSFq3~aC;$A;7WJ(6ITJ`3l?0O!x(uTRgeb0{Cj}Ky?r1} zz(qaDr~|I*u*{s(r%tA~-uy94xl0j9PA>Rw{N`_B4{?$+NaWA4b$&RjGHt-PG46;C zgx4b5fMJLU&H>I{4QR;{5(5!a-GXu=#95#bv&PknsAf5JBN&DEfT)Y~)o}YMSG)nT zsi!OLCXC3fTj1dGi;OlnyFf_2wjmS@j95VoBo3hpjEhwD7R$Cy-Iux!8LhN~LG}Qu z!a-2rEoXJLjueM+x-%QZhy;aRd9)$$Y!P9#f2w<_Hd7&>nNk<=3JC~RUg}UPearN!Snj2Q$2#>W~_YZx9TN_%yqTZ1^Uj$Vj7i4rAi>!_UV(k=;-A1h@ESzR<|?Y# zNNtWzji>u}Z$lj23mdAJQGeEjZs0bwu>tYYq>rkJS+>CzZKp9s)^HU+j4GfpNUUdJ zQIC~4LO{Jv!qpgIgUtKl{0!0vg6IC|E%2<%G46v9nZ4jc5}N}MAIFbEJg|P<-{Kjn zv56lJ4nQo9LfAlb>0JsmG_MiHCiaOpt^#ZGugClECyqTG1hC5?)jo7S^WfkX0L_i> zrtvDlPn-k^1QA`4?CaOB2QsOlib%geP!X6Et(2qw&J}@Lw(34>Apb$hyXg3M`ObRe zvP6{}v9xir~GS%h8H9~X&0MUGEtyNju`*=OZ)3<^D&Ews^ z%SG45LGk|S)2HM4ty{MO$XvQ~DUf)}H_y3q*;`R*zvbIj59c_HD964^M7g-lXT9cC zS|eao#mVQPLghFBoD9cq8q1Y%iNl;tZ@cZQ0PmpwzUR>Qpy8io`_XoyiAdXiO04)y z36AC1Mn8VHUV%X&h-{<%vg|mB$!D5OEX1yie2#PGRC1?|_)xz{&Ea)80>6wS;2v;K zc`p|~-*>gY-+O5m)3)9B%5z^uL9KF0SN86H79Zy4mg)X?ANx>gtMA;?J8(~BhPco5 zR$_%B=z|1IhFpG0%ofBxj}!Zq5SyRhF6jjL%8h&zajFC94U zst1KndXO$X&xlBNl15|a@YRoMO#dLBmk8#kcb!!cAnXt(AtFF0!*kO-oZoH`wo}hO zpXMsmBd(`cFlzfM+e@o@ZhvwPgA2HHz40t z#(WE-^|}_!^3I(v{+&2+JiYVwJ4o-Zr}O8|r!W8hAJ7lfaA>QNeAS2K#;T*Q!Muo? z@Yp%jrRfIDEIJd?g&oRPHHAqHX+)JZFak0j_&sByn#mgOY&CXODxw-p{}2cr{gr^w zy1Ic5eh2mw4KUyUpJ8dyCyS6{WXa$Tw;Hh`t7^i&NtJI^5x>aFP zGN6jp?l4R@#xMwDO1XbKdopy4oU2u0bI9=Y(yLF|Mm5I8b!i+2iIENnA4vip!MFkQ zZEHnc{_V7av7VwS(=CNQhg5spLHS*GmbI#B#d7#hA(gxwPai?PBxFC?~&kB^5+vLARcv`%3)XZ zYCUM&ROPwfBhCPeS{0u!e({T;$94;YGu3s%>Yg-pc7Y;3i3cSXBC2Q4p5b#g{jdM_ z-^N4_kY9kO)Ixx$$XBHLcYgPGSeS34lX)i=rib1TfI}bWa^NL0Om`Hqs|THu5z7&= z_CSowRl-uS-G0ht+gja@)n@aGMnwjT3auff(N3M4SJxloPE z{yRqYA&e5KNKv$s3004jlBjm2j$Vn0VHrwJv^j8v%b^z`m!oezu5hI~j)~u`N4p7o zVOIpergtvl!&v(+x*TaT5s*0xSufEs^e|HeX$hk!az?+LGcOOVm}|z*G9>`LyCE}I zMptY|SU5DSEA&knyD%)HTnQ3Y+8p0^~~64)2E}@JllS?t^w1ly|DTX#Xfb5z^RR#}UZJM zON&gq2Ujhqb=l_9?s6~hydU(e{r%7M-Tnh_MVz8Xj8U|cw!{c=*LADv7tJOT2Kv{H z@pu!2N%bD3u)^6M5I(t?a;mj&Q^&f4Gh`dY56gt$)EXSM7e>k^$kZ;#dlTbg)hl*k zfNi4FubPIEggSXRI8qZtrU$9SI_@M@-?(|}cDi!)O1gUKa=Hg0(1p}v6t$?KDUdph zQSaWl0i$Xq^^Z-0#Amfy=i%9BpX1y)6)La)_`m$eaBip4F$fCbc@^Yz6puWfLC#5L z`sCOJ1Hg7V|u!uMNpo8CXvn3M64?K5uvpWh0yL(LB1R@S(JD8X>NMrP%OlgBr zvK^ZN`Z|EbqZgdP-*xuP8UfAhfJEtl(i$SiS3u$=)RaUtTA!Ia^J)I(Y#_|rGUJPbdue|JiW@S(BkFBPU^Y>)yYb*2u5z)5z`d?G zK<_32)(B*{QeQ&S!9M191-wLO2uf8}IOnTfcvhU6NdNH%f0Hh}K-`dH=Tra0bd2qW z`<-(7@G$0D+G5Wbc(02!CLZG1Ei+SFPTd8EQZwBlTciKSZ z%jn}04K-p|NSrir6)diG@9OpR_K)9z7_Fx#pMD~}_Ug+JT8;F#-~V>34RHrm$nIfR zD?Agw>PJoQ#PoE;B5~iXV@tHL4ii@9HJ->;mS*W6&I)i9%)&(a2Z4v3j|4H@q754I zvlb{%NvqE?%MD?a>#Km5a}!?Ki86wbFuw$cO_%@L4h zFGYMxH3a%DfKj|1WwB-swx&o|s@XP$e{k9f-#)k&0%HNEN6R*8EZd4L|HSl3UP%>` zhAR$TDyXsX1Spm%2T46lKNmpwUjnIDSFj+|0wg&aQqXZQvB~7b2sG8L>;rh6!MObF zc|C$`?GZSRnRz8piW-plI(hEFLv{!n+Q1iq(ahXz^v(Io02$G(V%pXP|AlW^k5Ni{ z9YC(GXdna3WB7EYueNa(!zbPGTE3V4w_G_USyBKGfiaA6BfVp3fEF(aLEGu&oCy$B zB{L0>DB7qP(Y6S{OzYeQQ53oIpM%z2+v~%xzkm^N?|H?#k2yQIQr}Cg`Uw~!!p52^ zS3Kj#FY}z1zB@(_U*(6mWza?xm(ABl9`u$zDm%23SwN8W2)i9FXMb~`+n~nvL$|eB@wvilE zc0k7Pa#MlX&k;lX2~@Q}z?$0xLT#u*f-XIX7xuHD2NWp!OKx0?w6)pG1xbp&q@o$5>&^=4R*9&D%?9W9|XA3^-fi zOqFObNZSwuUJqww2S}cTSO;glNT9?8jpMxKtVhLb2i(HnN=QUZ^{Qp;j|eD7S-YG$ zRS{Qg3uFv-bKZ9oCA-p1zKtf_?WMHIxEUa>s}}+cqxmNN@N^TAt`fz&8)Tg%AsNw2 zR)w)veX9#3yAMNo)%=Lg0Jj|E*o^petu-+s$JS$g9pVD1!V2~?#&PIitk%JKl$1nJ zLe5d8QC+Mz``bgCCE~Vsw{pw_ZCD^AtJp0Jz+JB(;i_Wy&@qOJP!H>tv7)6xOpQZW z=$)$@LThwP4{FskfU)`ZB5FaEB|IAubsb_!m!?hT;Ml}u`m;az)AXxf{)g$c-Fn0i6}?>#^wv;lK%&Y0!fBCg^ zWMU|tJ9`Y`r7zvNb%(w}MD!cCW)2m?F&xSCrBi*Qs7@gr!O0*qvu9^B+yZf+)L3rr0ALaUK z=}MZ9`~Ha&5FdAk+;AeeilYj05kQ>H(&NN(Iax-Al(6vN^SwxDAs9UDd}bMzC!%Q{ z-)E%731-0nz$F@dFQB(9ftnL3mF!{T{7U4w11!UG_oqBBka%yyco&NR-N88YT|tr0 zm6XNywoM|!Xo*tSrWf&7q9T&-!6T3?^@uFnHaDd8x2g%1ffxt+p^l;DT9(9v?F*4J z{jpDlNQ=yF2=bUV+RDRnxBiDOxhJ zvMAQlLvldfrc*apu8}&EMXF)K@Djsa4#R1rDN2G!7-M99%PDhF+HStX>u>}PN8o20 zfe*8fOzZwF_xIGuJNK&ZN}1(uy7K*l?(Zq{WBg&g1xA%(_n+;}hdw-ro9&hfX8<$-v*(I!k28iRs-k(xHnaaSgL*(7yW!|=?yTcr3iS?xip^4o zXG#M?Lf!c;kfweNmXG1f-*J-LZxFj)2$~%b?W2R}+vD1H49R{IB)#5T2?D}FV2D8A z^>hV?+O~ka_U#U3L?1hkPLR5A;sKE(k)eu{#Dna+2_hGtB=BAD7Y0DQMabzJ=l2?_ z&f6f^OE4AZLB1LAAWXvU52?nW1Ompk2Ey|k=|`n1h$zyjUaJ&n3&d1oZB?y0SkKTE zsYd<1w0UD2gYKG=0bIT_&k_!_t)qg_NogbXS%yMgBD;1%tc957FBa>+!}d z)Z%uD%#3=^D1=89VnZ9BT73n=5(&$|SbFl}Qz_kBO4pHurQYwPr(gVhHaKU#Tn9x( z*>P44jSZ3R-@6~`<9dNyUBAMsB2Z3zdoKR zu`#f*#`O|#I-==?;FNhigoI{saSoTubu=_k14j+&uYd41!5vSs<}Reu7l=UL!C1k> z)jp>kBeZSy_0w{F<_L%YY>a-0sW7sV01z1uu@?Zw%Lyy$IqutdMw%cFc%a^*S2+Y! zBO(i;%p5t=w<5R!#3|qRmM4cifIrVdWr~Fm!~u)Z)5B*j+Bhr(l|1vgc}qJ)qMJVR zK|Hh-=FQIn$>vF@HA&!5ruAD^M5koq$?eZYlh?%<4d$zWipzd##M1%b_L=&sruWJQ z>G_9cmcz|=QHS-!>yoC`Ox{PEP1tq;x%g=g!+~xhO?KsT$=^cSbU4M_7?x2x))Vw8~>)MaM%Nj55+ROLZ!_OanmcbF} z%y>Zh_VRv~@9p)MHn*3v|BMz0P|A&afw<(Px9KV6* z>Wq7YD2Wh}?80M^@09w64FQO3Khc576^KkXh@J6z`jN5@fTS3uI*1m^2sJUzjfL5n zbPkU(gCIW|pALc$8*-q6_aHzf?E}$-nPgB_&zCA^iiC`KsS;%U*ayIE^@*JEUt~Sv z9klura2-jwo`N)*R;5RGo;z^2WrV42rI(uQJ&3*myPK$^Dm_OxY|1)>(l)7H&6Ng&0TQ(kzsQE#5-+SRF|qPAtJtutpQ|Rs&!xpueuXw2{HjsAqX58Zaq*7 z_KA71UturcnQU80wTWa!Pfa}rhy%Izsk5%D-wNf`L2^CSwitsd1Xjb?0}>G6FA@-S z=C8h^LAQ=iHo^;+{X^D6dz8Xc4qesF?oKBJ4e>4%qV zh=?85QYY$VbK!&qEds{7hjldEH5oX79;|v;E8P$qJyW=bXWVuf=dKzEHVvO&Swez_ zt6Pxx8hJ&kH;MAC+uu6luN{YyGRP>_F}>rnj(QpBc=W4>a+MMpy*;!Jf)me*R^viK znofoE2WF}GoBi8lJs2S!;}7Cj%!f2WDNqk(bRsoz+$vQgJ=1PfhIW__rjPY2Q!iiSM9sy!%WXu9I}L5R?;>BVh|MjpWO<<9<}yr8bKm z$dp1z^cZN*wXwrK(lEOd-8GG^Cy}tZar7t!_QJC;b(Wdku#@17E?`r?P_b`a9Ci9!80HDjO$lFRD-+3sIP{O2*id+WA#i4^w_tM&O|J_i?YQgX%bF{7h%vSDX(4ZukTIinFPO zC|IsA(Px6OfV)9dfLzLj2AR?azTR>y+-$}IP={W4Z-B0d0fCIrXkHOi-`Mi)Yi!%_}f>QT>JE+=nz^6XW3}kixD9 z4?t2ut7(s}FAdUVU^Z1)!>7KdQXv{N(_?NWY{FJi_|Cr_2nUUAS3%6=x(|Y|?V_sF z87@X4f@qsameGs*c~`-xSv~m&#Hi>U#u*7xjE3HrP_H?OuYO9zK@iA2;~}zYzq&wN zLxqVxIo8_!ZK66Qal&weJdy|OxN;i~I#tBEAZmDS7m^+6p@5beDS;z@f-3Cv*#h$d(E0LXJMb|;c)XfXH`%RCn`SsSsoi2s<_%)M4wm~}!B|63f(O_OC>N6KFvOXaU zkv=sbX8IT()u}?Qx>m&{>k_sfxY4IyPe1b%^CleA-i0+QAwy4e{Ge*Jb6=~jGR8;< zspI^GvuWzYd89ta<5@4yt+#@W6RnEAxpu_y4uUJT`fy3ULmRt;GcoGn|xQmWmzm*uPBTBzKil% z6uAj<67)0IeGLVDZlpnke}qT0|0Ok z#&JS9&XMD6J@(PdF^+oax0h{-LpOfy|A~2R{j}T|Q`_6BnryV0HNe>DNyK`Ta5&$* ziZZQ7;!XhM^TX?K1P({wqm6)j>QSz|$AKHI{a^0pE$=Kzs8Gr*_mZal-u}HkozH*X zm-X5H{Y#jZVWe=!%QPbIg2rec-_29tj^8tUgy8|)D&@s{%NKznjmLw?j$_j$JDGPu zJb-M;ef|FTzk{^3FFo_@#o&nQ+~Nms{4K$(hSQ6$yd2(kRPWFT_b93>FGE-yL1k!l zd4cluObEi)OKgSV@$~ZWL|Op3TSZSD?1>uTB!hIT2Es9eG$C_?m1+diYoB?ZVR7zf z6%H(okN(JzQrBFhQ10+<2e2O1->n^-e1KHyoyiElN+t%?>FDDb)7n@GYk#H5K+p3@}8-npuC4r02vq7i_~sYhjuoND(Ehs zrqQ2iTQ8jU=m6h!-thoC@1?DUGz~h;8|h8&Weh+Z4=8n^ zEj2rgYIt~}Vlz385`F8N>uC`}d0-A_Ip9@BV((EK0^&`gcd=4K)yM#Nw0XN1X$m$$ zc#9gsmSb*iA;w=xmh(R|GmGldJdSxz#9r-ZE(S*@7~}qQZ+1Nb%+;C%aeVUSyytBz zfX=zju)&q#63Vzy{`GkO{nQW;1+cacC*vH0@3ZpWMJd(lrJ9NW*a^xHd{(wFPe_(i z=KQR$oQHztR+LNcMPAk?LhodkI((k>@BK!8cQTi0_pkh{)MvZAavASEglw;3&R9^S zDQV3sfc7fSN*h$y@(Q36eYec_wkyWxJ#8{aDX$O|w)?$_=<0j=XD)l$-sk)*k4^br z?v9;B79y-X&-eYh${3gTj$`ScL`rE^8H4t8c4NP!JU%6FNoRXQJ**VOi%b}m6d%vM z%-hdW+Cg~_diJxF{YmF}cwO0^kJL98=ErcAc73F_d<^aQMHlf=`dh~AgWCMl>L~BL zm+$T69mG6nPuJdt^1a;K)0Hv{!d`xVn0qO=Jx}|ygX(KfD>K9Neo8yq^ZQ;R!guZI zA`Juwnz%tgh!_h;8z3=(ERlYLXv+8R-wuP)UJ%HI#rsHI`*F*9n*f{VKya!Ay}APD zxGSBVK8~%!C~+H(r7yhpO4@*3IY|mD)D^Rb04TmKC4eS);yn;L$51<3J zA5}lp71%(HW?%?)4-iQWe7gqV)>rWYgaPX8>|A<@^t)B{+?C3p5CgJk8%2a`)G4+d zj5O*ML6&J|J9P7^k#|ULP;1#my(x}rEOU3U;ui7r9Nhs~-Y{N4h5kX{6hwV}2d5ht z62r$&bX1^ZX|A@IR(7$0K*gwnoybxXk4{v(yt#_!r6C9g5N@e7 z`m@E@bznfQ_plmmJ9_+Bl=aNgLYg5i!-?ZZv1x(x&Y0VBRnc@IjMxIi8n2YpSJMs! zwW2kH*>w)2`*-f9d-GpQzy8}eav?55-cv}XShqTKaoq(|&~aqk>PR@8-v<#3tDerD zKc5DP-ra<&4~ZHQJEbs6TF4Rvn-Q~vQ3;MH5w@&EjQym|&@gUo=Wkp?9g4L}x}m<~ zA(e2PRppZy)7|}v`V=ueJr*pP002M$Nkl$l2yh5|%NXI5YvefhtPUcq5>5|KN^`P~5FUB`RS7WO7}(#T}(4EqdhEg&d5c9|fp)j_5uB(#07{HouPFATwH zKi_+fHMg4H{Lznsxavd&YMZsE8{YYOyfs23XzwxLc+n;eyN#ux6rc|^wflI9>VZ># z^Tzdb1Onsa$x|Tr*n@z0J0}v&G$M#4=W>Ji5jw0{ByzVBlVit@vvwE}>fKy6sIN|Q zH0FV@B(8(~g^CQOq{M?C=Xe9jm~)|;)+(-x9rGA#*1$MM{KnjHeznioLXBzm{%lH^ zF-Wkjtzs8L+>a$>G)Q&)Ss_7J3EX&cNaE?csY6j>or| zhb{XhAA$G4jbGqcJZimBV;n>)ISxptO4GJB9^l7;oLeq5h1}yZL(Z1vG*!2fI00d` zh#e#ca`wSB$-;a<5ILXHAYLNKU2yaL*iLZT=%Y4xNVy*9`~13yH=Wh_C%oBB8XsM*bRQ4s>ekZyMppT6eKKdTcD+of^~3K2R$#OE7# zMCeg-V+?vj@`Gn8DKX}+Y5Wu?nevSBv54XLgSi=`DRo@Jj;E1<5%w=B7|%hByZieX z59Z+*d*Tk`wI?e8H0@c}b(&}4pA5Iy@AAYZ8OH|_`Z z_XCFLv3>0Um_Gtfn#rbq__EKB%k^1VSC7kh9=7A>GXkF!jCj;~A2r=a8J&ac0Gi)CHYoZKr{DPgb3d|FWlV^u-V-*d?}g^@Jx8md}JU(jaTX>6r9r|CyT zHD_!jsJ!%O6t;!rZ+3%VqZ$?KOKv=MNIdP*2UTgv9(~zHB}kPojldZa>Ol%b`;`q; znX@L+0WUe`&boFFP#&Q=Q~`P4RpOzvg;_Sn$r^51=ZU9b{0-Nz2G<&&?;x$&U@hw6 z^aO_KbtC~24the|LK-y(*M4;BWJtMm@&3|_FQuoR|6H1dqc3q%Y=R`N^(-k-sZ_$b z@cnUA@eGvv-M{*7`tgrm#|zU4gbQmEis${_qr;=j|4I6|1CgM+{*HA0=DTT}zP$RmXVNRL zzLu_BzML+-dntYAufLOt6!t`w;Bj4eB5+-Gbm-iGfWYjxu}Pe{968T8j;7b&xE4YF zx*;Bxki2vf6C%$qU2_{T7oV2vkbwBK%+$}RogNAbKL~q=9yr*yu3k$Ecv#w8Uj?y- zgS}-GVbn5EL+K@O-{mVeL7fcjb~0i_)ZpX_KSkSZo5F7R@AoS|U z+rBxBOZzChfz+W_jw?v+&K5{A@3lJsMJ5lfP$4GFFXGA{5M11i(zmV#M8(hqDnHiS zOxLbmi*_783YQu#yhy1=ue{0w9qk|`hT9B?BVp{)zYq)<hVTVB8kd`n3zB6`1FnmO~X|n{1SEx$yEY4KQHLW^GVXQ1GpE~sh7;{3I z5laHq8eP#Uc`|^Vqv}5ioUq-Cx>|Up<%J4c)DQ%Q9C_$U=BF069ugkl_CY*|g!e%3 zg#?9mWzUL~;eQ94mO5V&uC6ORNo6}5@)6P5cgB{;!Ok!=)=QRSj^v|?WJ5`i2J(e? zvTnUr_2Md4LgP4``dUqu9#n-SM7Wx$N=cXu;^|5og3Yv;{^on%OK)DfmA?F+{THn5 zOe9MrsSXt5&HO2KXl~^8xlkOhL2N!=z#)LaE4}Q zT*?ynglBp|>h3`u4R2dBGY=qKx6>4!oQAPSc=G&lh>-Erhl-byr72vl?m`q)Fuq@B zUpO~i*q1CXuZ7xD7t)20Y_S&yu+145z-|U27Zb-knzTiI~cRq z(n~MBOu*hzRPX8#%u3s+gZYR_VO-*?KR*T6XOMt!Q!ok4f?~`t;$^wUg5wqootNsW z#Wv-;fFS+}3Czv2ePcJpW@h(r$mRMji<(P%fobbmB(@AbJagl^0TlZMmw{TNz9=th zi#i|WkHE=#aut@F%YQg;0Jeu7n)cz#Hby@zkjviz09)g?H&(*ehpwFVz2g$?5_s~( z`poa;^VZkkDij^yQod=N52wk?aq>V3F?5vWxU&fXhL#m+_`O$tfTR37#ZBy~=K zjKNbOvw+?*EW5NRm$?7;pz$kp?Wgja94rB_eN{TjVd$LjCJs^VQ4i1J-nK5SJa+Kn%fo<6nqfzR5@a~)^T zV7WZGV_ue%KkbV#^BwI znbk`mNR;q{F?3Eu@bXzqU#VQ(`U(VvXAS}b(q-F^Ds5B}&;fD}CK$9y6>mP;KL`hf z&)XQ83o3ggsHn?JPgl-o96Qb)YFp9`9brHc&7giB(B>UfU6de1dl^fgHXyW&L*>V{ z6E0pE9|<23Xax%rdiJ4)`i-3UkR)haO#wBz;J6U=N5gU;iZ+Q{Eu0J@jrS2GmSw3l zLt%=slqz8utXC_Z>;9H?!)%6aKnFGn6b6|`1wrIN05Z;Y*<*VV$<-?MDRtDtb|IST z)S-06;Bhn$qEzox*i$%m&J%a#9lgB<@WT-L!Cb1(VNX!GpMLE(emC{%CYF90v``nt zF@3BP4f8dMR>GtU+Xeygo;ZCXt&ZX9x2GfBx^WFVjtz+6ZKMuE7%Sgoo#W=Uf^jwe zb|2g&rbov*2Gd87Pi~Zp<*I)r5UGwn&dlHt5wC}k&&)wg8)G&#+7gRdpvlQKdpt6ku@r4Ev`q& z+MdQS@ha_o&pThad)c*l?AqV%e=k+Hx)V*wfK@0Qg+$^gBf6P^ZmZ+_1+~8AIm+$I zk3>>)Nu{p*pgm1aS^Dvl`n8w;p<2sYdFb&Y{|rQ6zpH!sa(nDAFQXH*jPKSL8@=^x zFT-QLuv6jeH8jy;D;(r)D<=UpSMY^-2Zx|;6Xxu0&|y#X>?OVfDB5kV5Uymakd5Ml$L zb)^xI@7@YN@7J4Y0e6%lyrbtP)5O#S9&|816=9>E-8UBN_T13HpIp*$e(9LKW;W*>j&|ox=k;(0y`k(Te#Nj zKnhZ){S91f4o+gPf$GX8wi`Wgt?TH%&!hg*i%rH0&%F@Gl}6=Yxim;bo--FDbr%95 z>>TKGH%PJp$pU!>$qgn6XPnG>&uRN)J}(Ilkyn2z>7nC6Y{->vfQVX`<*S0_Gy7YD zx8`vW|7a18VuTv+LLk()XcNzcod!}3NeAuH7@5~mdj*VMI2s1*Aj}%ES0TP6u7WVr z02pFR$%H94uwmIjjY>|uK>>|m?#Ppx@-qHo`~6T2gayxJ{O~=b5=w?>ld+XTKw?_f z6_v*G=pzyg4VhI(t2$rY4U|@cAk>ifN8kSu?o^jRqf<;DIC>N#dkm+qu&z{}su2l%WN18yIi*J35?9zs%s@~qugs^j=bypOVUpsT z>EwwMX@UT=fA!8==}Vt~LGqI}LfkM;OZ06QyNJ8@Zl*cBD;+<1Bm%)<@{X;=O6)mR zqNcFd=*RA33p*0msCE_Zrw-gA_x2${BM!yAd$Z}-@!>Q!K1tBIQO2VJp}fKSewMy_ zD>Gd4*-MAZ#bD)U<-y~1|BMn4YzP*)!B7Ms0*3%+{0U^|=Q0P@;AH2*1Ca1YK&hBi zy-+S+SI+W*e;-~*xi4*t?E_0F{m<>l(DS{SO8et!+j!;YrGFl50?53$ zJv;1){gcz-bGaveg7eYV_vk~UH_!f6>W#AaV-nMPKnd)q$y=Vs{cQ2gyd__xYz;|n zS4o`vT;@OO+sjzee7Jk=#(rm_y;Le^%X;Flh(mQhjWtBNN31Hw>!Gxz4-Y;52tQk6 zLkW(uQy5&khe|BtS=!|9_O`^Zx5oaVtcO1jN8m$^Kv`oSD$`?__`~!g_7X6uY$1P} zKbTIf@0l^CYgF{e(fFqkY&(3=?sB8Dzg2#6}$i^&kGDzn5NqkRl0Y}1pEP$Q(Go@uSd7x*uCTyHohPMl7gbE|3g+8v}4wE%oTgTFL_%E&-Bk$w$9 z)=(!O7}Qu#Qxik!*8Mx_?#!)p{Op-P76Um;8m|NwgaijM08__32h-nZtc2Ue&;KWK~wS2IrB`2cP+v~L|!#0?H;ssi8>uV z>vjzw3DI3^@ao~hTZSX83seoiT^G7wHIlbB7Y0lX2{y>T>3ptjLl~ArtdKnVXW7zr zr99_vn|WQt+IbU|nk|R|iU*O_%Mt_%Ys@v(8OFYhG5xlGx<2g(`B%SxcXKygy?iZQ zx^yYL6=^MA!^U9&gK51Gt$>IdG_AjXh&y>%6MZ1g1LU8@24MOmQiPqmY5D$qI0Mjd zTEuz<1Y1el7X4HD(vQcj8cqPhTNdNj1yL|JyAbPq8ygxM?pjbSY6H8QbwpY7*fk6c zHq!KIkbH>Jt*uq;ey$_oA|f~I{o0jF=@P`EhTmWL*Z)hpaOy_q;{?Ql_8KRcEGk9y^WWX7D2oPe}7I19j`ddq8f4qgv|@uhWk&zssUeCSAmORn&`7SfB;Uut4k@TCAT}* zD^Ro*4_~H<=j7vmT$w9Gv6fAsjkXtcio# z67L`3PZ<}J+JXt|!_ zYW2hKvEJy!UjOVA&ErYFJNTw^z7DU$5jY%y*ef4u7~F4UaF3OJCIl$o-J8Ny_iE_6 z^Ku6cH|Qv7Itj#e1cdB#`tEoC8c#iIY4*WP8Uoq-wJ*M!M*2EIwpNhB0>h=}UGwQ$&bI{P7DhAFp39E!Cx zkB<8E8Hflt+f9s(>$p*cB?ZX=k_!>g1CrejcYK5B*1~qxm3n#yQ6teXSy!~EiNL|G zLP+Qu)qrk8qhpK#k)=T{^}1vHi{QvdmxN;y6)~ED*xAW#+AAecfukI89+;u9xuD1D z#qTm+ySUGFo*JJ2c0c~L2FT}3YK)uj`R>?hOF(9R(*`n|Ct^AQgH;c8&LgfB>BH`T z0s^_@x$xOD&bE5qsSfKIY}r|r4C#+H9egArJoD?QGFg#GD<#JG+jk`oWD7z`n*b&^ z(ir^Cd=e14y{$6d9q&Qm;HhmB#S>_mEuMFN!Bu``G!)cYezw_O1rPqG-chaddXK9Da42cUaZbNkpqF0I5 zrort%<~KH%$&dTmLF{U=`F2{8i>*Fx`Eyi9~NXeeM-P(e)0Iub+8#-{!sE zez))bJ|rLij0wBIJvwz^8nocF_wQxIwZJF7FFM2#j~_RV?n%J=;`jo| zOMiJ5-{YNa_)wMnLK5fpwHn6w$O-exxAKFrV;oz<7lc9_XpXSsY(73aitP`t!x1ucjKr1FGL))GX&#{`v?u6d9@0`%xp!;4XFgG_F+vRz@R+FVZ>}gvNE09j0B@9T_48%)+cwpGz{k-^ z=PZWM8U|^rfY3J3Ygb}X5wj7}hP_rs8)3L9CD4tij2P96)cIGN zA|w`!T`=tsnBU>;0k{T&imfw)o@{n|DU|D#;; ziL|@6c92Ghl)L_TLWRsJo=~XXJ7g}{Zh&UqmnUm?R7$^giQqF zu%&bXLby(x32j+Zv z2Z0Oi!--LdFeDVv**veN73_2jf~QS~_(Nt)HnFp)p|Ug>gv>RS_gI@BM>y#)BOjtX?24!tPqL%{A!w~4$@^ekq}RDDSfjQ~LExh|)`MNESP&JQEBdHuL? zy=^+)+-Jw+T!6ZZNdM@r+eUN(jLiWcA^%>5&0{04X_f~DEkZ98`W!lgX{ z+}ONwxz-7eGk|E%@7=g2vrYPUmI}9AH*9fPm%Up6Bq>uOqyybRYKZZ$9P5-j;U$O0 zKG?1pYsStx9An4IJ_PXKujwq)u~*6!HPI=0^{&k_2g ztV8F+!@#n|TcBwFC3Mt9{-)t{Jb^RmR?*rM&X)@P0S~pY#Z{ugUhc`f$5S zI`8GXdrz1m9P^6cWx$~=xbUiloIm#jFsLIf5ffs5_7>dL2f*?9^p}76Rgm#D3_sTs zD&`=3aEUwca}Pp(eEKv-*UPxJTouzz_ZHUii$4#?^Z}gJyXooC3HCR^xTvoaSYg!x zgCRUbkUeXJ1tQ>Ez#xOFVP+BMtA@yPsF8gA8{bTe_b?>gtYK#{Mc_2g#vBZ++FwZ% zV*}~rk%=(y?wG*0{=_71FPGD~lc%T`2?(&f2jsPr^2Z^P)T!T~4-H~WK(4?khRY41 zvk08`oZ7^_YXw5dpn4N-9@S!(PSs8#Nk;3Ay##sN1NfBs?F1gRI+A zf!NlXXGRzL{DUYfp}GWd(G3hV)B8z9(`yeJ>X4zP3R7$Ca1M4uaIN7X$jIOo5dKEEe^r97dK7p7b{ifY z8uls)7#tdjvMU;ngA+LCRniV)=W-lxM)M%bs)+4CAoYMpEX>U?H}nspRx(T5i6zwQ z*03R1XO1+Oo;orGUXA-xaJ4mz^|gIjn4jmoXB;_?BsKy+fLhUb`rUWm=1keb_F*#J zxOOe(FbEyTk#Xol+*oqZm;7&cg-^K1ksIjCb6 z#vqhy5Doxc7ldVtsOC$A)y0vC3z0$7lm$aDPpgl1=4WsOsHe9Nkr=?wOC(NwD-%sw z%xPOJ$GeE#7Lg}K(rYYUpSgHNBF(FB<6;n|CxBC@PJxW$34wI>Mo1rUpa4 zvps=OQ?6~2i13-wQXSV!m~{qcz%iYhosG>ihQ8qN$Oxj%$;f9~2_P@qVVgWKMMNz( za7lktz6f)SA!&Rcb4fmt?3I<3boug?XoHBe@1J}A`9O|smwmJCUXC-5@;B~50Qi$D z&q1CC2?PnjZh&Wemsp^#ciw$B){JvMN`FpFPX}QpAc(SPcNXWjh(^-c2K$&L3dXs2qHgyi|3SO3J)UJx|i#`03+**j|4C4$ofn#K{3Y~ z6>wRnUPJ}}<{~5J*LjGSbL$#$j71nE7;oOZnHCo2DJHl7;*(FtJX?l?(fe|Ri)tZt`?$tjR&R6u|y2J8w|PymM#i(Qc1 z9@5MF0F~thTQ zx_WPp^JOgc0k4%R^b-J1?@0AkTz;aSBn<2XS>J-Vsx7QA4ye_5o|3i$3~~u%9mt(d zK;UTq;F+y@j$Ckc;)jXEELioK?dt$}_T1_OPWJi&b*d(x2JT#qp`j~V%jcv77IPL* zdN83Fr*86UFfL)D3tP|HP9hnP5Q_r&1uwD(a*2Qf6XiBQGKag|``g3{ZBP^&=5FdC_`3S$*M z;ErPqF5w*3!9NyJm0RT;*`+-rxHRpBO6{YLf!>L(iim5(=F?gQU%Pfaj+}>3O@!Joj`FbWp;M#j}cA)lSCMzIop1YIcHn z4#q?2W-ZccP=6HT$k$*k_Yv8A1KjT9(W7{+>Lj}KT=e&evrphjYV!YQ@6DR*JkC4M zx9U{YseQ%15kLXlDN>YVh2(H+!tUva?zSB<(^kZ|!@lw-na?pZw-eF!)m%(;wA3B# z7+In=i_J|UL69JT!d5^nsC}>b{r-6pEJ2h1E=7 zPM>F-kXZ_|pD`fAL!&%nHY!A8#~$yvHoI=-;JdiF(_jwoJ*meRPJj^An%pF^GOu^p zh-P77KGp~s^%HDpa_ZFSbe0TQWjfVJbTjzW7?=xN33!(L)e@2}NcPVSPIeGFVu$kIy zu$h^e$*zhr{8KRX)0d_Zeh46fATN+Dh9@TOMY@?4zMh*?e!-nZW^(=lW{_E8(H6rIVqn-75$2HUSN zB+(RrYK16eWu#Mv3uw_?IJPWD!BFO6VqyZ}a)5SPU#Cq15x5FGmT7;?&o6{%J07N| zFXlbR5=HaT8dJuz-@+#Rj%~-FePVm3r!PgjL-Dz9RrPtV9Ug}mIK;qjj{)aip&u}L zFt93^r7`mGYNnm9t8A3Dja8zD>^t@VC@G^xv26nYKhW$qW{3iJv_SNaqa1PqpYE~xO321;2BZZ`M- zrdfhuhL4>%+RUNhHTCEUmV!|ORbc{M#~{UF?A;q;V+CfH5;kS%$)@vgNxFoK2nwNH zG}~PYPobOa?n^uc&hFGLG`)R!I5CN)9M$rm2Hk8> zkU`SgqErJu?6=J}cvN_B6E~XD>IH|wJV4r51IM+p?2$@VFNa0e z;Ie;%g`t=VO!PNn!X1~_S)+=F0cBG^P^F(;V`NsdmI6aN>l1y2VDpfT+sux&37)t3 zrW=8kbrqa!0-FMbLCtGu@_o*Y(xT`>0BCc*GqTw%TLx>pTKyxe=>u4{bp6rYY1K85 zel`GM73E<+dz18F>5wm4UR+>9xw)pF{HCW*pJ^7c`lt-ma@D3yo4BqCyW?G9YlX2W zB3-{n5ULDnci_9GnnXb5)*#j`Wh{Z6{YXDaTZwSkB#Ncg;NI5N$}J%gLu)RWV%CP zRj{(B)ToFNE)->9m+*))k0M||+&Th=jJ! zK7}L~2;mh5H9L+yVYCkw9$tO*D+T8)gyNqb;NwE)IR__>ZLMuLu_kC;QYbSepaPnL znq#U8!}l38wnHXG1gRx*H__mX=SI*7*(QZVz~bY=SH^Ow@bK>;1`aXs+hD-C<{XzM zsBlq$P&qY^n@~S#Jm(kYNaH#~K39{6T_mDAWnGf^}EvY&8+pJYGmFt@&ZKc_s+AvJgU6!NJfsfn6S|GiK zF6YA<;M%mb%nrqI3qnJzg#uck5YfZ^F}3w*vEBDzi>x(k-DtaEZr5?EnZfdjJf+)*n}lrnxJW}Gri!ZU*=yoA801ZX82Rq8??`hw`S8|*YD90wCwCPu!&%? zy@Zzo1W}wUZn3up=b@3n;5q`%TvI0}k2I^}OBAJ>6>AjZ5~V-! z7VtIjN&MCE2TKH25B5b+q3e#+!@~p3rDvv_pT2pgnL0DqynN}|=H;(_o$Om!w1L^N z-PfEG_ z`!4hoPqVj6A8_wHyQA;zp*(wt)g58v;`FoZC2^%$#O=yBpnVv92f1tQ4sK*USP@Ph zCrcBsD}Z$)5N%61xSJWMRe|MWjU&At)m;R8m%bKx6yc5vl3d4YUf z#=Pq_u790%-LWXYRrnOU%O13wI^Ui@VaFFvfDqvlSY0_}sMO%uN7##4^#CN@`O)m)NOYb)rTC4RNd;nrC^&Z<$JuxB@ZpYFQ2fua%ezO^X>4 zc|MG)6Wjj~PzP)0b_b5aG-ek|%I1kMkq$B$SQ)hsKm3rv%g#F-O7v=?ghysphFX6> znakqFRRn@_=g!7WNGZKAqaVB4$WRJn2C;1e59T^{63GmUQ_ZvzTk$3=AcXJ2Y&y}s zC%!zF$yOuo6e#x~r@W_D-Ixf?mf}Z^f@RrvzJKM)d*B-rD!;8WxXyGE3wA-Z#FQ8b z%huv_=FAz0h_L|REB#&i-GxQw*z&}&Xm=6zw`E5&W5085+cPG3ztmf_1me_QsC|47 zjoJqvTn%1y`)Rj}>HJ+R686s+u35gXOHr+p3mH?kk<+xzv0{C~A|A4^07JoTfz|d| zx9=6a7kmd!-nZ@EvmOuoT?Rju;X@#A%cDRH6ILZRA^@Z>)5+Aa^v@%rI$h=D^4{B{_S4%D^AIVBB~v641Or|0G$ zV8wjU{JU@eyXNfavF7!k{@3R1H-3;{>b6>PnAs?L*dcYk8=G0T9s(hOLBw7Qc zoy1B2Q*`e9aZ*=~Q!ccZzgxI2S+DD;^lTj^MGyY$rl9Q6KOg!Jg-6gp3k)4n+pT+v zTKXldAyZS62sD?Q4O~DT+`8TLk^yHEfo2!ROlG*p4}!q84?ki*0O$ts2`dEgn!!n~ z)|9RLSTkDCt#Pi&$o55xjmH3*=Z8Lv#YAnfiX(_Wfzv2$SPzj25DHi`fpHB1N!Gd# zxQ!FY8bCRl`>c^_y;(DPwFDOf`vz-|Ot@=Mn>M+Q4B>**Ppkonm*S2hv(IhlCIP$9 z!Y=wHE-3WXrtZ_gu*J8jWz{_Q;qG%FN4R+5QBEwS8cuyhQ{G1%Vc8r17?I{`dDfjL^fzuvSV5rMS&g~pj^C~V-CLZ4gIM(` z&;1>|mn=yz#!CnocVPS#D0O8TLRdR#)iF}^p3#(o!^g3eeoT!YS@Wivq1xte~pjg{*-J6ChUxRD3ZL&E@O8>zw)3q1nz zu_L35U4%@sBq==Z>@K6UTZskSHO=(3w{BfWAUKB*I>Q*)p#R$u8tfnEiox}R@O49j zSkI}~3{!8Rv|L(1c%c3JjE^-0gMQkumB4!2K;Pk3r=VqAhUsY)238S97Z}&n%ou;Z z`J+Gj7K-BI%tv@1gjN->Q&YI`A@nj75JXD#rOkc4}`SrV>9HRSBOH-=QP%lu0^y>J(;PJ6$GD0^k5C47DBR;kOgg0pK%UwqqrB z(9Y7S5Vvg@R+%QX&I$@n*hO4Ic9`I%kMlEt5VHjXx&i?k#z#=igA+V<3?`V`T80r2 zQ?GR~FdZ`v9EpXN6>f*%30njdh=Lgfls#eXG&<2&uWC z-x+(3bz$_KEAL&&`>|F)EG@e(=ovFSr?70tX-#l(HZQl|!le1UMZx-I1~)Ja;%)F@AE{@a=wG>1d%V7i;!J*@h z=l(fIt*_4ce@+>P?;K*_cY%R}W6*P%+s6;btM?rDRr%4)V$`oI33GTA`m_ua`qDGc z5G;+g{pjhYcj#EN;cmuc+i@9DN%4>X(B46q95nbxu|A9*e~NUd(32k0wKk*8$kbDO z4>U96=9eDr!bC}e;Q5=CMRxNgfLFdwrVcS6n%2;N=)0QzcE4^YYN26>VVsU1Kie$L zEH)$ffv>PkCAIlbZ?goGcD8*CI9Oxww_m=w-YlREmuXwWhvxjLBdo7zn%lVj;En3O z7Hev7p`lQi;&ua`)CB7>pbO_7Z7MVyZvobWef-y3eB4i9zX!Ob8_+ki6K%nu_Cv$m z%VCdHojb$=^k98xLC{+*=rZ`+f{7j+AcZGB@%w#P&zEr9L}+n?vMuPN^l}2PhE=rk zrj0dAh>X9=ynbk_o7nZj>nmss;2PH6GnP#24DEnZkR~y&W zHP*-07I6-&Sv!mmt@`3g4~k93lV#v-)|?!g$aw3aeIq2O5zly_HT?{V9mbX|*g-HF zW*soa?!I`W?L%B!X2p|320W_jhO^+#MU8CJpOaGuTD!ON&kJ z62y&yjkUPDXDI1hjrY(pHZX*+K>Q1X47Ve^R+hmd7J~l4$tYUQ05vgrta%#YKtX7y z-9?*-r=Y(KuI?rkF<5Pmojlc?I(e3uhiUo)3ki5tnK=l*2RfOz)?N4>=e6_LbzMu2 zhu>w*ECPf5sK8g({)6-(FFXN%KGy;S`2CebW<_ndlS3k_&%5q7YD(>Z1x&q~L^n6i zc8E+N#7-0$$I4Ksaqya-babaY3DX`E&TT1 zf`;F=L!hkJPt80ee0u}}ifb8kacNsKZm4w}0x9mIbwU$nzk2SW=0g`b-QsS~+zL}I zesxsFq%nH}kQu&T; z5^tUt7p!7Ivace%+2fAmo@0_nmV zCZBRP$ci+~`XfD5ak7o@AcNi?_a=gEp}$?2BUI=}PmSG@!QQ1EJutd^+pGoP1;ULo zENm>_#=7zB4k<%TeG4_)-NtPRp{57iPp}5VZQv%u9oB7?S6Xjn7Fl3mKn*shJnCy9 zR3RoMSXmdTHWnY(NfA)iec(ViuuoMWHtf%_4l~geA zN~cdXLsP@Vv8Yw2FMwIgii%a;nTCfaGwy7Q>kg|r<3%A%9s)}gntol8>fx&f5*CS(2Ouf26-?|I;1`5!AGD$TfSX_w9 z=<3ofZiwt!;|Ku6M?7^AckIi!-r*9DmBMUND$j<9eQ1&0>DJ5~X=5*vZ0F@zWwbV^ zr!)Avc!m_qe3W+L-Srh5*_Jww?T@V0v^8UZap2*3Jr17NYoFzJ;Wj@@2!4yYMfT%I zCJh}gLubH_jFk+SOr=Ck#?2hTjwrJWg*oK9W?8l74pcvOut%6spUymIP%tW-2zI*9 z*r96R)ppC2TlPKtN`Lc`>i>=-4Ph!zVKd92@%Z%b;2&tX|*<0SepY zK!j)&TLtYXT_y~tVc_+-zjEbD^U+5ig_*XVzxu1c3d8-z8*eo4yz@@r@VRHuN?p8o zF(zIG9FIC6eNTo^{1k?{EKcIgXELy9uiyUmy1~~^vC)t3cumc-ZLlmq_Ra>2ghEUa zj*9tQVMjBl{ZpPVxE2Ra@FOfDfBxrxjyV`#R+#Wi{!V|0a~W_23K{b6|KR)0EZTnG z^SL}vz1t8TpRukAzwNb+ejF!5`1*Uk3lXb*sR`MDV*AQhuf6f#!2jFtM2L9lrI!fcKM_}>1!5h-#M8enh}JD0 zgx8n?>&tK2U_aNxYqrJb{dkCHEf6kHvuJi~uM4v{vahl**=OLE8IX1>0 zJJwytsrB2Z;?(vj#5mUe`mg``QT@L2`s=SJ&Zoj6d_$|NMh_He@>iLq`0-_))UKoNV4_jaWfT zYcR0ZVwE>fKikth^ZePSr+<`q2oy>P4ljTCtIdD-yZ;sCfk`;_@o}FZDa6rc68Ds( z%499lrAL0YDCkC!J?KnNhhFG zFu<&Sv_pn}q^loS7_1-AOkGme$*40j*xQT~XLX-6v#yV7b`7dk%WG;-W5>*#IE$ig z?H<{lPy#`Y5GHV+!D7+YiVi(P)q#7~5SwsM#=_3+tn*1&0UaEN$u%xPH?1XHH+P_? zF2&mjSUv1QJcR3xRC$Z*OIRXwlUiKDa-+3_{>WNK+aRO3&DciX#rst&HBE^CrVys! z!Q&t@#Y5{kEqr~R(b{9%b$Hp?LNRF>oWrBj|GZBDd51DUe?xMq9M%U)^YJ;C3h$>b zp77lJ=(577!^guTan3cm9lWCC!X2wUF^XW>#;O8u!yX4ad$Y{|Yo>c(bR&qlXN3aU zIt?A9U$#jTyvn*Ugka|wSw*1Rpy2}sspCR+hdxOIc>l-9FAZ5nuGZ0w>Z9<6^MsBP?f&*Z=@P07*naR1NIc zzWP<{%>`Jj8Mc)C~T}FI4muZ4*1CN=GNR+GfVu$ z5HT(8#NCbc;@Rh3Y^HJZK0Y-SZvh1WacG=K7vtf%<9HQ-C}T(F=N1{`X6)R;y^3*1 z+3Rb>v0y2}ToL7_a35SF9V7Omb31FK9o9MbntW(I{Oz-8w$E|oTIW0$KEpqS8~qFc z_-(2dk&hoTFET?)%76d&f1gZ4K4Yg<#@Ox6zyJO3H{bf!w=xh4v!u^pDNh1WOrXA5 zx-Se6y(r<5uzJW~$*5`Fka4_z<2r-sezeyzVOj_ztY7}}mzy`2V}`2a<=do0={4QB!H7@TgHJE-hV1-EQuqHrs`yw%NM0JV?CjA|s>h zHQiQ(Nrq4jyl`g$qAgyNp|u@;R|ZyiET?_~6X+0D>-^D=e$>4A=9^&}#f5mQlO>u5 zh>)3_zW)#Z5IEJ|%eX3VRn551$XGN@A8}$A*{%c`GTE)e!}j@{c-AFH=GZA}8*QKG?jhnBxpwWtY&$>8j;O*_`lJXU zmOsU!Dt`asFa9FsD$Ae(*m5iYtp8abwKzGC4v#|& z9Ae-%#ej3I&?MKLa_$^+{`=dx>Y*043k$@GX-S#S187orV8-{!qkk0Pfl17HSM#@j z_kT7QE?j7i!t5E-^ouJuoB#TQH=83T&*089+&uHbOU=bg&ouwr|NejAig79dt2eHH zgkoY2tHCgINJgJI4*Q&>4IP@QvPGsxSfwwzX-HRfaUFr-d~kQRxpU=1+=-weFqGXe zl)W&N1HEishj!g|#3e`Cf#u}E%@3Me3%DbZQuZgTo6o-R9Ly<+Nznc-qi`{8rmmp( zQR<{l;20sr>fjV9!D0Sg`=vK6tjw;ex)v>~G{oIXjl1W%u+FkS#+{iNTwM@~K;_^d zR%l>3vUwDkbUkLRK*`vG-X*4y|YfZzUqeTnjua1UdrdUw7Z4&JWMKUf^I-s5sWF>woKX|o(8w4J<|UU>8`}O zy+-_reXvGZaSx}Dw-B5xrw3m)Q>%8P$m-?Ub)MPPb(mDHZQRmKx4O>ztLqP8&YuCc zp70MWnxwYvYyR}l{%v#V#jiGJ&!0!IWpr^}e#Q2y*mYGl?X2sKLaO6H-k`6;$LPk@ zHMZLyi?c6VSRN>ewRRYoSigvo(E_1AQy=5MO)&P_ zGHz4cKY8+8T-&th855`l#m@wB91pRE4YQ9!KjYyn?n)O)P%t<2&gwa3A8M~%Fv*XrSO`FO$ee3f@=8THxE^80fxK>RA|YTC;8ufC62X(q_G zbJS`tW0i0~`fbO)`PN%7^2fr+%OFX}5-iNXRFhpglu61!mNTLluAyl+-5JlT=~WBv zM~jEwmLo&vOJd`K@Fo#8=RP4OZf~<>oQxF*L=@U2y@yE-R)?} zz2;E%J==Ke)~#sNtw$zPv#+p;FZXhg37woI545T0xb8<2s=lhGRV@UL^0*$-%XgSj z-WOgq{K8^=;>7pGo%Ja^XQ@Nv*r0a z3^DziIw1I33?z^FCtIf!e80AcaaN?~BMZL{9Mn>&U0_+G(Z>1!7hpHX14pKXKp71TU@ z-otBkY}toqZ&Bd1?XhG4vlbl}AO#2o5ufuJEe`fY%B7v+zn1BD#e4cPe{x$iA0CGo zIK;p|0|U|%{h*oLp)Jxu59eB;9sDqm8M>kM+qv(&R57!LYI%*+s4MIeeEigf=1X7s zW@wts@i~~)>o;baV^3{2FTV0>a}^7=dlfu2J3r-+NL?OT|-iCInu+eox z7nLL)f#%0O1t!vRr8ioCWu|>bTA}veEJC`5j*!8|z*ytSbT7dxpLVgfS-#9P?Qr9+ zVYA+_Ml3>~hfqSfG29Bf2d~3eucP3Qman5cQD6`k5nxb|tWfqY!L8zLhaHHG;gbaR zqk(Rd7FCA+_=S@M(BiTLoVqpblActi)Ks*yvkxdwYYL1tWqIzsb<*AT(0=3TEK_U7 z5%$Sg+mV?qLV~emv0MO;b!vm}pA2NF7=gE&A4L^)Y6IQoJLAMpgPcM57U0R80Tb-##`n!8%{NkPjF$wkN@)&jaMFCl)6jdOjh<3(?YD8v*X zST{^dYMRzncX;O99j0x-E&^DWu_M6VMzEvD!BM+eLaDVdPdaySFm;sun;a8Zzt(vF zK52LRuvoYbO`T@FdAeW42`k*2aNkFmX&jt&k%2bRos0mM4Y&D ztcf?)u`bti&K*~_&o~a37X=>sNgNpq=ruh?+Aq{)=KfL+pn>l&WE@L^X)u#Ej_rlQ(d0nE7$$@2n}F9J&DIZ zDL@=#S}O21=Ce4g_G5U2L2Y-DWDN?lL%c6TC=s2xIg<_&UMJIOn6^b+n~Z^QLM=gL zbv4pwQD$ojOMt{qiQb7Sb0@P$_fZbSNTNW8JFwM8s4bRI%Q!0x$bie>Tc4H(H82Ly z>N;folVqW=9+@|Vjmo@PhJ#FITeGtMlQO3gmJngevrOxjc`rnuFwF%XV?KbDNi6f} z{rsjZ&+A9{Wk}UTi=Wz$;!O9P(Y4XW_zdCm@Opx6IhR;_SgzNd$PzT4wH>t%uiFon z&x3(k+?~dUQalNti;-oRnaKsmGW>1Zgvn1d+?}>c_^dQ z8WEXlk4N~UY+;S|Mx07Oso#DPZr`&mf7@q{vBa5R#vj^5dj#xmPUu)U!bc%NA>zB= z{chf~KkWB2XU@dsC%ZFKu7~B>PU~}A93&uKvkk&#A1R3X?K6&_#}A+Tq@#{e+ndec zSU^0)yZ9HEpf%-MhQA%V3c~hX@W_3I1qB%AlGkjLW5azzDz5$ZW1Fp4+*zJu*v~H? z&ez}VQ8hN17qr)&_S&aC#MR+(h=I=n1JVOO9-)B;#$ui0^_hd;j(I;`lTp*su!FFm zPrAXsCcVR2m`kJR-dwW^Q06_kv-iiH}N5I3>wqYXVU`)ZTtXV*h-H(?t0S;M8Rx0j&Tk~1b6MT783=na1nsGyagk_NqO>5$~O=3;YXHZPYaZC1Z!_2 zuxQzq}}qu*Kxg}i5M16{)RBI$fj;E_bCTCDWO7woe(C#eZMg6&bzQBc*A7D1K! zy{yN()V)t3jG8=S9EkClOIV$BU2~kfQR0Jn#u!!uZX!@`V`ZnW5Gaj@Fd>O+SdxE$ z6UVZBzeSyHaA^H40;z`x{8oU`Wy|sHnyxZguN3E0xEKaYh68ozt*yDBEi52+?(1A$kLoebb z7!Ddue+mWfzWZMMA)Ul_piJ0v&p*%o)o6=laMdd4%l^UDtI@Rn>woiaqQ#Ny{WxAkDcw_h6-Y@4fe$>jdpsei$9$Y31>GnM$?T zufF=~qk1)+KV&nynVA_Th?Wj%Z*kW#V5$gkMfeb}>37;HQ!mVxD-2#wTbXvg@9zqu zZLPwAaMplg+Z(*mhgJJ;nM~CPf0iT6nsvpc8l3aQcqlCR+rBmflbCbi1i699F{dV9 zxD*6me);9#L^ri#M~`JQKF6kYI~KHT_#Ig6LtschQJzAFhka@tfBeUPocmVl81Pv? zj~}_#d8P`8jw=bB{b|s%^;KcX`X1bSkTk#wwDzITDTFCFC_rdgaV-0;xbc3iUtEiS z-}CUdcu$8u4&34ILkt{Z;CF%n=a}=b9{TO?tNkZ!rdfpgU@#}~U5EP&6FUYyat{K9 z>#u(O8woCkibAXUP*g0TiN$Xp-uMLTPA@Je8)*9HDAPdKRTN9kdo}Eqt9I9Hce>8( zQkV2wI;ECAF?+(re`$me`cZ-8I=n#4-8va`1`uTSVOR&Lt3`ZS7qGhqxqj$dzeoV< zjvJ7%DcU9*;azy{`P99(4a{bmqEwl2%U)#%?rz#`rXpdHz8O%y4I?eRCc-#c@)peh z4)F_HFvGj-w(L&A`|L2+Lpi$$0mH;rj1p)&G{IgH{FX)=-ttH4aJ`f;xg;m7QDm;yame_Od`St%(!V|UBlfI!K{sN$ygT<0@#zlOifxV zmWdf~eUgsqMijUyBf=2Ylufkd()~D%@mm*WU8p?dLlh?Le^czbBJ=@|>zerPU&Br8 zVM&SZ8el*Ak?s#oks4RNA%6NMcM&hfuelOpy}+uTzN6Ic4U&Vbz$Q}f9`E$xKGjW( z#MH#G1XWM6| z;C>j(BthAqM~EAqXvT1*qh$!N)B()fjEgSt6XAij$q5NpwM?kl?^Q|0-U=-;Of4{G zdvMts(lPUfr;*0OgIXqXqc7Ht!6arf>j@h!_4(+1@C4Intsfv%5Q zJxpahfc0fxVTQhsvXXIKyc)FJ*emc2z~y}vi^gRLpPm>7lw?Cd-mz~yv_5Dl^zc3B ziRqQetd2Oh!9OWN-57NBy!b^if9=ncL071e|(v4JBMD)Gw07=z-6Qa zEK5YEr>DczzJ>de@2O#S(ERKl|FQYzH@^vCkr7hTFB(+|k%PraY1!U8ib?gk=blSF z)dfbz@!Yv{xa>@ZsS-ZRb<%n+^JyC#Fg~XiTI<6iX6G9>Z$x-_23MySUU)IWki(8? z&pJ?;Y*Yy;$M-E$xB{C*p)-iRSB06n(8TQteED1AA}qlV*JSuz037u)tClN_KI8L# z6i_5`-nTt|dtWB_s{}4tpYEE2F;w?lkE;;#|Q}OF@aJkZ|hRIDhQ{4z$1sk8r8UJA3AAaABERArz3DMaF0t z=r4{He7vqes34>(lh6MA7eCLpf%3Xt{mGyFNy-g;yl2dhJ7-&lb^19x4l!_uf!`kn zq$|>b`W;3_4J?}c;u^$UX2;uYwZza62zVGp6=3@b}e&Rg$A*1z&(d-^ls^g<-vt2D?7& zU`-goim^UIUi^7oOg71~G{<@b&1;jTr;ET`Xii8r@2OeeC0*(|fxEg2{h0k{?k&tm zlP&Fee)>FX@Dybu7{S3PI6*?8kG2mw?QevKSR}c=2h485>U!D(Qz-1Z%k1NV(nVTt z^!}nLt}%NsqdVPb=)v7S)`(sCy?&jK;5WK)3z}eWCA8(TePEP!;p#$vnD7J8BN#NK zPTyg}K4UM|;4yYtKNWC#q0MdRvhG`^MfbBrMnu;Jtv*928O>7Ux%`KMnZEzV9%zkm z{q|6)XhIKh?%JVXp^I!U0)Xq3Ypq@q(qr%22d-<nM@s}itN&M;OV_jdrxKs3Kl>u;>ZeG-PK40io>&2fybu@iOIHtR9hjd#du=Ng`t zE4kUC1rScFR+S|DcO!R$N(6<+WBX;SV!z@mhbbdk;8-n;?~q$nOaffvCE zJP7bCSR`JQ@k@5$Snx)%s>s`9e+z_&ZraI!DgVP#!1RL$Pm>lNNaP6(!tN0ka3C*Z z9EWWa|NIH`w!uEjI?p_=N1oxwqi=8UPHOJFTc3T>zCSktgviZc3qlz@bbu2@e?FNX zQ^SdL38xxZ8C9(gGEl>q%VgN>5ScoU%a@;qIlZ09+VhrpHrNK8DR zk(u@o4w)(kf^|7LEmvX00phdX%Y;2Z@MXj$0&XxS^C$yr5cT-Pc!U`(CHle31WE{; zHMZNfI^GOovur;e5`z$K>MYNc-=5d^GFS`Pg#kTqFHAP&T83??ut$SUTZKQvxHHzR zF9+obL;M^Om^>s_Wx89LlgMXvDT6pd{MxibE0IEzY274_YEvrnX?b?7F!-kMyAhF0 zv<$aea{F1>Y?EzNTW=fu2&YW5?^%}jy>1(1;*CAg1*bCa3VgaE`J6}a#J9gB2=30T zZ>9Yp+!36-2Yj|r_)XC#LvKA2=_({#{orZ@f(W=gYuUEbZ{hQK+fjn(C)3}-HT7yO zF;mwzreMc`Oup~<@yK^M&F}ih_Sbe>kK@a6cKX!m`bdOZ1%#U)l(>wFOZ!g2_vKe! zj@9AT%&o+X*f!JTTAm-rw}O&*_FXM-o*(SP`1C%i@$lpj1BV#+U1C6b@fsxCpp_=CS?h;NH22EEwG;-`{V4P* z*d|!lbz8a>$ z;X7=fYmGvlJca_Gfz`$$6zc4OjVJK|zS%)Jxh`e{46u*{hAITS>t+!F`_o187 z05KViilzq_q>~rUHTO}9x?$hU?A>N`VhlX9>p5<@8y_tTn}M1t2U9)UyZ^ z-+r*roO}ukIDyQ&n8dVpbg5JXX4l%Z*>TTr+nP=7=r^-FbtC1uE*~XcXYSr=vpBcb zyz_HBOBgd|wQ_^RW2}RB?%tw5QT7e1XvOLwzTgYju#BBJb&hgLan3yOBd?Ramgox+ z4VbjqQ>=ZoC+=jJo3?3IpOUDrQfo#n4OB&0>;JwR~b!_FLU_Pi!bKf2~?S5`$1;^>8CFo z)oRNW8T=cjlWQKnCnM-Yci?1lX43RGr_Y=Y<0w43e#pR8rcBL{*Jb1+Jbq-hw$SPb ztL0jcLc|zSx=f|d`Ek1jwyE#E^1 z-H&klZn^gHgz{ZKU2Hw?QJ?c#ZL9Uk;CrnIAEi8D6lazz?14>U#79_s-ab;GbPO4D zA`a_&mZi4m0gJ2Fp#)ze=tw=NvQw7=0}E~lTXB1`F576?X4%4k2?@6jT%&#Zi?sK zsx5_qW6hKCR{_?8#Y1(wG+a6=qb|dl`43HzqWe+kaFaFDq56Io@cHQ>&=j^XEmZU>=gZ_n60m~edD+XTz@;R5Bm3QjWD`!MV9&cP-HUb|yzU}!sN7RXY7;=*&sw}s`F&({>cYBWz_W@@U9DWvLW^nN_=xFj zjYpwEV5EszLyf_Rz(y>BLZNXjx{V1NV1h&7OW$Nwq93IF_~vU>LD*?gpY+*}>!tX2 zV>s!({nw@dEf#IuefsG;{rm4fTxbS6cv&VEL?Nb)pvX;PCWylzHbI_7>qiTi7#*=l z$jEQdZ^j$wPBwOQqB(lvSTjfG=;{UV5ni{}vFhJmMxn(fgrnern1M}P#dZ)N7ZuC~ z77;Fq;Q@!)e~31DxUR;#0iMFOIk>amVcs_pQsvSTq|LfML0Z-$$5#*_R+<~Pf8KnV z1OmE`ZLlW;UB;MZ$7%LJVG4k5n19NANW0zlVW4jsoa2(~*n)3?;|kv-&u3pUf`UKi zhB%dXaC~hbjGNU%WANvdEFJQVVDYztbKI?O8pdA2a zYx?S|Ur9&W;Z8DLQX~{^LSrlfqc;Os!aR!5u?2IeG;F}Mbts4|Gx)J%F2^T^%e8xp96ralMgY-RAKub;-bMO(|QLgZdx3mqo>Tel$ zaV+i}pW;rfh;B{Q-KYwiwkh}R2ikS;upW;}pggyKV_~5m#IN<3y4ctq@g)Adu9f1| zuYM(Nb=G>0FD{Rj{eXtgL|h74B;>6AzUcP7Fhj@SdsJMCjdi`DB`Tu&ZK7aUqh=Jb~1|A=C{+9MRCJ%m`_o1twa6PbaeH(WR zGr_RLz(K3rfO$ka--p|h>6=yN{Pc}0p=VoY>D@C%A9}dSW_ICzbMn*)XcwEUp=9ZW z5j2iXx+skkt~Lz0=Q2$O->Q<8nbNxKbFm~quldjOGV)|y8iT$8(CxXaFtxatKs^y>5m^IBe|Rls`b`A2<7w+1w)-7=FJQ9EZV#q2EM{ zZal_=`TKDrQUNoB^?ra|o_DsX3wj4MaRFBQE*%27tOK})5`f&r-amy}DMXO@5O{k= zU}`D1YXkVXz02CYjU~i&Kr6)H5M^*(rH|Qo7MEC)i3u1)Fz9oApk009S_WTB2L0mx z1seo&&#xI{Sk_`)n1si@BV3n+&;B)2j}%P0tUzLxC2_lrU}LIM*-Ws{^C%w)kd`-a zV>$OA(Cw**k4J>Vl?C2Mz;x}Y3P9>n3ERUOwT1P@jp!)4x&GmM%}w@bFsqR}le?)} zc#J)0JDd4+brI~%I!JZJ%0fpdgxT4HjG6gmQr9!?T;s=vH=5_4n`#~&?`;sKH6A1 zbPZ!THhT=e4S-!(o+thsmszYwUAV#xAQUXomv-kO@UIi^(syjE896c7JVZb_Ha^)5 zZFD#9&0J~5*f4Qy;CM4Je2jqTp=RdB4Kfbi0d@r}`gw1@X=SrTgsm=I_!x=ZTH74+ zeB@Cmoj&3(eYu^~$zMr}nkjfKxXCbRF-)+M(dA(4v(`%bjbteaLDZe8!@| z`fp!)!IZz1E=U7BufJX2pR}WJTTdEPp8$_Y6oE2A9x`MyDKg|?sEXp9eFvtJ8daw3 z!TkrN!+2N5GVU`74t9)8zvanHDLHCVlS%cSlUYl|#fum7jEt4#IkDe<`)z!`Z$vQg zeKo}r33{K8FbWlLG4SJ$4!kn#3KKG!zT>AZ5I!sXl?nD-ru9$%?Vko7nK9e!x8-L8 z6{=7$QRo;ZJzbbq?m8GHl0RCkPN9=7pGnqR`DT>fdzOgGwyvJ&vmuy zanqrVc?UQpfIgEtd9V85i$mKfQ8buL4U7a-G>J=}_ZiDpFceNd!W01qIE7U=se}0P zz7`F?qnQBrmLy%@wo_$^ZilQ>Ov4G%g-c^(zD;R9geF}2vH|^<+)L*}y9BjE z>s00>D7Ztrz3<#M5IOWw+QTzy)AgHwFn6EN1J;yv5}V8>MsXg7(F7Vj1TA+#*WEv1 z6AiAeM6E8Y(|youxHPrtklersuS~meTSe<_;PsKN37B;0VNp`V^%e$MHVCsSo>Y46 zOR{-f27L!hfjR%T2zp*!h2A4P=n|%NSK*DjFv6^_D4MKJ!A)0H-Ku)QW1;UQlb!ev zeHS+Gv7Q4pv{vPzd;pqn`gR?r7ZX6PNxQpNS#xX~w3k=;P!KhDqXE}-jn0C0n?(>j zixUt_>EKp(CtR0!PNtadZT4Wig>#4TV!fP-7WyBr2c#p=AHmG^cN3-OKJ9Ah#>D!u z!TRbmC)nI=w3oyk2o|?-iCtd8wPno6}q~bZ@D7 z{^hSVqm#u$!|`Z)R#~GRZz{bMEOcGg)w>I;$S6BS4-bzuOKc+epZ?Q-#`?f6(wG~@ zNwI4%_A6?Xs{VImZ$b#7a0kf_btnB2}{*D3qxi4YQV1ynnH^)0A6$A2$Mv= z!Y+w$U`sfCU(Ho*i|vuYPhGUn>%uOvRhWU<-&Lb+8=Tb9 z>;qefUEXqjmLOz*`o8a2hVD_Gd(`?4maPEi^$!`K@(fShp+sSiHEAoJ3jyz&`bGQMM0x zHTbeTKeoG$CF^qhd3et@iU$Q#ulty(@48lLWe>dyeRp0LVZnQQT$9gsol{w)5Fx`4MaVVjh{`zctHiiF zf4jMQ^@HZ-)%Tkf1Pa}yhH#r1CX>$~T7B|_0tZ%sP1a%NO#SD^ON z4(L6r25+EXf??jqf@20JiCZ?(L!&P32V2yOWk3a*_){psmB}nntKif+u}gqg{)1Oz zD@$-KmUnQZ_rM0RCax#aZs~BJb%VFscbudgQ^u-zGUn3)eMT#gI5u;YyFJSo@8Bln zI1ncaP4>I}sP$afTUc&r9KSIetUKw2_* zl}Ax{QszDdiMwPQ;yJTS4dNEHMeNN6J9N8lnO4TFB9ZTdwQ!QBJIPW145fK;np zSZ79haOIw{K!OecIq@PQNm%*(?VcXu#ED{ z2Gd^(qZ#5R4;uYzCSktgbcEi zSVAb1B9TKB=Tc!VLpUWKnARj>es0d(eB{sV0QBQ^Czn8{Ost=xN=DhE7cDT&E zyKu^=I%stbakA>~DM8M8XOMf%N#mfGk*zx^>&NaSv92(Oz%J46gFyM)HVMCn^{Sna zsK|KL_Ho*QzqC&+&wVT`5~ak00JC+5F$HF=36+txY(L%;mN0+RRdJAtJHNf=QJGkY zv~~Nfb;mNri*2_J#z6Q^7*U>4cq;_X)PEf-0UQOI`|RkEqs@g27c!oN)iHJD%9VV_3{MI@ z$C~4ywypM)-z8W-bCJm#dQj=2R@fmj;`pu#3g21u=xlxMX> zNMod>tf$hT%=fZhNxR}!3S(>rAr&viguV0jJ53Mte+mWokS;$gD?OA2*G+jc(C%z|)Bg|=Ccg4GH z)ZGj_Z(>%GAt}!yXb}g&Y71g)ql&rWex@ZxO?l#DFrV!6vA@M_pPRkm`n<)ac)jpc zEd(`ty9Z&S2YyE(M`6(MvIpa@;GrjkJC2)`Dei5wRrl{HH2*U#?g)7)l87? z*@cjSTbmp7IbC$m^1TRHuAlaIr!V}rkL&o?9c_%vP4WJ4{4nNBk-QzDy6_wJr~T-h zl<)W=9Z#eH@kt1lK~iXNFnV5ymJ_sSneC)#Na!RPRW+=-&6x4WdorBv)Tx%*LyfP@ zn3K`Y^_UoU5Ovawq8XL|wehL+e(L1=dGb=9gAsGW8%*k;NWDycC1ellvuro5d;iM& zsl)ouoH-K{nMBrlWWr@2C1S$iGZHnm(lUIuO~PUQe##(D6$lya=4V&0CXc_wK?XTl z9C+uu-}!FJ5=IXf37O#6NQWm}&ph)?u3Mk=3a^K4@vvUoTkq-a5w^C>&{ z=K1=ZZOEd<@ZoOWY$@N(e%L_559Lv<5O#JxqUHd{!neW-BK4Uo* zf0~EIt4yxXCLp*2i|v#bE?294b64wzF19=gy z#IXauO4C>h!vTm$!vWO_Js9 zvY>b|+BWd#QDEaauk-KlIK;pq27dP#Q2Q=(y~qyDGIb__C^2zG3C7K6qqUrCfgV7S zAsx^fVKA_3k#kx1kV-#XYn|tr(}0|~JebJPZs>!D^s5KIZW(FF#3K#)Buu2)+sx)R zPoj-~|L^~*Ss`WT>_=A#xq$W|h>W2qY4^ZcU^S8{KLl{4et(C zh#{D~9k|F%n7%gF33oqsE};uHX&?YJPJefL}|MCc~(OY4ozYrDpQcWHd3^Y%-2BIg+o*G$u!?y-jS z^->l^yNR4MyblK5bw+nDF$h%-Zd9}ygpJXHauF7+-&l`W8x$PjbFc;&3jp8Dp~XkH zX5FrfGP4El!+*J9AUFkKq3OE_e#WBcQe>Q5AG}1`sHRhDMuj zeB&Er8$-!TpNJp(UJJ=MF%!w&MeAZ|q5xwb(pumJ&G37`B$inB9Q$Sti(8yncXL6l zL%QPSDe+m3DBtRjFUa>3DL}~JJ$^U`4>C1A6UHQy^J8s^lTk)e|I2TG``cmG$^F31cICF6@$vt{tu3aN_@sT!53kG4_Wq73DCPmoBH(&ar`-Qs) zOGjj!nYA!f%;iq!$RO+Q?KIXGKFlYKQlanATJ8_vzM@OXPk-`{&1*k;jXeLeFm|KO z=2K79tzrcLCX^3o!1o9??M4x?LQt?uK;3j&(4`UJ-D7Wx z?FbJjP*_7`#%09k5mby-P|(mlMeEA(<42nf>QL!pb}5Al8BgC|f+qLFEbkyhn5NV9 zvlra#6A&w%?Sa9LVvBa_(Bl3PS{uYg)++EKPWc~PiAy)?+hb>E@4GjF47SN7+#dqb zBpZ{}{$t7N&{Ak9I9np)k!yF>M+Fw>Yj(S){a(|JD1r^|f>{fAZ8B;zY0D9yCvoG{P!)ICcCanUb(zV0E}XGsE~i)0~;4 zk4Tg22H~^B$UODT$*g5ZPNJM`*gr`j5MhGO=G?V}RP6Mv>x(>x7M&dgD6>F0PP9;H zJu(rF!k}x}^!fA6`@eVxL3V~rPm9elvNU080AIMcZ{o_gyhLIZH^O5b2aiKo$7!Y6f*C!p$?>c6@@A>0&;gjC`|NGh#DM0)-NRWAQ;`w>~_1B|$w>%jn znKPCwJg8uZ|_@|pIWbVcwJ&@U7B5WGqTK2bBJegC(g|p zB|K{HtQ%m0PYGHy6XFSiRfQSr5l-7Dqc46Q;n17l(Xwr;eV|*IS*i{mw!y=1pUnZz zZP(BK@n?a{>$)K6#$|mTe%E)spFRd=>k@W_MVWl@k#S7m}V9RPr>kNx5 zs0z7(g{o|;Ov=TJ7i~@{4_rI8fC4xT)|A8+xZ*!5fQQE+1`aXssW6cFe1IN&;>*r8 z=DWeB6Ws=nsu_0;DOO<=uP~*B5tE+j&SM%(X+R(T;nv~Y)z{wn>#TLIhZ*HpaZ4=p zmWT8FBN~Ul`wooK4vbeH?m^3B$@#%+Kg=eSlf*Ene0k@cpTjubhPjim!xLa`wmH(z zMsUz2lYZ!KB-7^($ZMqBl$moQu2GVN%o9(s1JkOjtX$$cmI_F|2ZP^+t`k zack1J!gR}oD?G5)&|Yi_tk3&dgR*x7+Hn33k z|J>IyUDB_Hq(}869!)>n$MbnJ<+vuPnJx+ypUFo|ch*?@%A;QAVd|66@;_?}-!wC8 zH5aKR0zrqm+CzdB0mC&=c;kL#3fe#d%m^D)kcTYVcd}-=hRPRlWmnkv?PHcBV{Lqk zHJbJ|eGZNkAZ6Nhw{k5JXU5g+;EJ`yIx#qc5X**b4_D`#vD2&x;C~ne;4u3{jE%WR z#wM1BTg|`-dxOwcH?$KTnScAoUDd7AcI2D#8@w7?zVAosf2j9Y?ix(FI zU%{I{xz7(?;e8GsIeX?b!r)5t@b+C|Chw3z%s}w6Nv|$bS}ha?!$XMY^nowiEoJ$Uof@8+C|X!$(v z`cWt|Zs2>TP&v zMb2;IU5rbJFLHV=kK|r0M?BaT1(Mf)_Ie1visI9Z!2*$K8FqZ+vb47EahD?9slk6Sgp|wJyn!NJB8n`JZf)!=) z|L{1(z##@cB?g>F9{#Q8x$xK@wYAc26#=rQj_pW#|n6jPyxa6^{m{xMoP-hS)tW_fkFnV6c$ zHM6)aX=$adso`-vMhL1!V=u$k>XrG0{y@vRdj^{ucWyOHxH9#R8FP1x9gT0}XJ6KE z6+*@jnBG+8uHqz?Vd%c}aGk79GHhBX{M{m;*4?btl(QPME|_N9^+*Hf1%@S6Pciw)3 z)aZZE43Dx0*s{r78JKjO8W}aR?qF;gGQO7SA@g1OlovalEI~@= zbKiRz1l%(KDey2sB_y8v9iqVt27PDnIDk3>#cu~s{p5P*et}W#OK&rQujxs4U$gbK{7M9?;NNKhgF5&Ze>k2;3^g9KY4L0mc( zE8c3`e9nL6KWF^*aGX?pdd+h`mM?L45vu1tU*WO+!t|&d&b=p$^{{RiQ;E2XaPHCQ z2oXGM3PQ^-K%w2~SeSg@{%`TVW!UFJYx$l_U`1YOg5%is_}1ZZh=D^4d>Ra7{&pr$ zoy(8E@4S;Xxu}H>GEXBwz_6$}H!FmkE-!Bf7L{!71I6-_Lt0q&U)YUn=>P)LBpcP~+9b{54^3sw<7r>S3vC6iqzR>8EyaFujga~5Auw9&aUaZTZvuh*)77 zm^V{TU%b_n;Op<&i(Hr#6?pzHvzFe`YP=J(RGy0d}s;Dfad zVbZo|&4Z`WHOW{Df6Jc*UdEBajPVS{qwFGVV2?s zF#L|acu@GBZMR?04hq^(`m2l)e)8K<(-lvbbL^ocZvOB8_#c}uz4A)t zhx~|hbBwnkeu@A9KmbWZK~()t%xLKRw4CymW%8@jx12mW_nJqlrEecSldDh8A6xUe zJ_?#YZh~FoVANGc-%d3%YRF|)Uw-*za@(IsCprK zdtc%kA48t^aHmHnofFzil{xbn8A>OK*XpM-XL}G8>!?QfO;x>f@h2({Y!^;>>@KF`qR zvZ$3wrdj>qk%?(n(8ww*2wR0yeEgHAW@{Vp7q@8V(ni9(L!$W3%45aJ}n7J`~A z5gko`#t1kPk1H(FTCapnLDn&0Ft#vSw%4u4x@|o@I-!{-h$@ZT#23M~jp>(GT?j|r6tW_jyFs~&5@ z3d|q#77mzstOj|nIZ7(ayLU((4MVfKwt~wEDOF+oT`Qf_t^v+-Q(rpw{qM)?m8MDq zrFq^EJ{cypuHzF&;^yhv7^^+>N0(oS7ec}H=KT5dP50^pb|b#soS&4z?SX+On3mL{ zE5ZWPwgvs%gm&T;)y&mAUp9Ku4`N~UZEVWmoU-LL>X^ympuQv4dc^}55Mit zuG_vyh50R4?yk{Uucg_A=DD7w0{`-O&huT)>-whX;vv0OXsP{PE^=L(?LFFSW=A*r z^IcBq8w#{c?sqBtLAw=-{AeZ6ZOrv4kob%b`>ik$!J+i8bvXu%CCEb$RU4eykCj2obvkmiP7!3)LHbz$r2WrM*T z(z(L4n=-_pe%-DgE|3I(^)BghDPD%Yu6r44AV@bem1B-~nRhJ?ZQ9yzA0p{JoM+S1 zRrniXU;K3rzUUlYJ7|HZ zW5cJcr2ekYKPlgJ<~%9z{8~7IZ|+t^*58l6Ai~W;Vdt7_Sz@3zzzMv@pu10SwH>GC z)iR1X(@v$kF~7-FR{^044GuIlH8q1xfuW2Z<{R(wJ_Dm03EsosGWF(db^hvL=?ErdlLJME3Q$bSN$VpNgJHxmM@GR4)n^XTc-rXg~PY3Usx3kb|p++ z<=dTxEl)T$Vg7}|bbl@q;>u@iR|vGfIT9Gg_>h3XjaBANxWA={+Zs=MsY>q&9u}>B}KPUMs$_3QXl)>$e@2SBaj#OFwj&Wa>;m z_$+0(D6At~S-+brq1TAOXaCyQ)>9bU(!RXQsbp1cmITVSiDwt7WT2o8qNBFQ{xeOT z?mVV=1*G7nmL;CLc(;e=JQp5?K=J0-vOk11#7dlnXxk23-1+tggi^|_z$pH^wjCp- zjS3;+Ng**~ndhy`u^=2SVlMdp4m{vPI6Y)G(*NAEO`3pBDXZ}CXx#ZQ)mxTuR>7tA zUm1^Ny1;$nYs7MBnQ=hrYaL;S_w{FX!TNn4bv%5Udg?p2&!hhSG-Vtj4wKlfL6kQ~$fLgxUBTgpcinrTLzg%!bAxq+x$W9wDoTCy zx1mdJkf!_3{rP*)Ce~1bPjv~AW0hK~a9Ox>8~3H|W@sN*kzF?$!wr@lo;NpeZ9x+) z4K%gq9^c!PyFwhqGT?u7d%ig_{Q`vBwFu_j^&_;9HPCNxF~)AyGIec;yhnnN00dKVki|*gSwMb#_K{nYN#D#f&3Da;+kh-fFAlR4Hp5lHP{8Oy~NV2Acb}_wl;vjhra0>A895} zvG38Y3cu@DRQ?=+*hQwZPF7!*2(TT7Cv8kQpH9sTdR`e^e+LFCh-(e)kP-Hp+Nw>MU*>Mw7wrbjt&FqvbTK*AY}AY)UjB{skY@sVH!mf)$pCrlDJahI~dgPEzsuY@xM8RBLdIk8eT^WL+r zAS*Td=dlS$nZoIzHbHo8gD~`Mm6W~S^S6w(g!q#V``r5$?*d{wUF5`rFfZcHq`+Xl zbq_5JmT7ylxQZiw*RkYy(H~h{nrhJZ26d6^j3e>sd$l#zn|5?ASdQ0hzc{XfSOhBI zQln@cdk{+xahCcyw+IDM%doX(gAm6GGTs$W3IUe2j3!a5kj#H+cR{hwIA#n|6sMLI z0Rp0JI$_(jfxE(yDL1OSh`S$)I(1l&Z8Ph~;cF0jcOE;%rmu4!iJQK8_hum6luk_YOC{-`{7uu!t-O=wXibDfq4Q;6%L`G^=< z5r_1l(zgyY#f1p^s1Re;Lm6+av%+aCLX;Z3XB@-A&RTQf=pgB}2VvM?gw->Ip1HYd zaifG%qzp4P0S1|TP)N}hiYtPEE+EjN4X$}ndhBMarqJw$$f*QVIkw3f){i@u>bgyY z1%)V?{*ua61qvA9eKQda!N~3tXv=AEDXI;qmfn@Mh&2e;rJWt(0SNwe&45b?dW>

    |WiV#WrY0nzTTjJRvq=4%_4&99Z4TP6X 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 #^^BM=z}=mZ~IF$>z(BjX4`<0K^fqFIjLy--lfT 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 page is a summary of the mistakes in the 100 Go Mistakes and How to Avoid Them book. Meanwhile, it's also open to the community. If you believe that a common Go mistake should be added, please create an issue.

    Beta

    You're viewing a beta version enriched with significantly more content. However, this version is not yet complete, and I'm looking for volunteers to help me summarize the remaining mistakes (GitHub issue #43).

    Progress:

    "},{"location":"#code-and-project-organization","title":"Code and Project Organization","text":""},{"location":"#unintended-variable-shadowing-1","title":"Unintended variable shadowing (#1)","text":"TL;DR

    Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.

    Variable shadowing occurs when a variable name is redeclared in an inner block, but this practice is prone to mistakes. Imposing a rule to forbid shadowed variables depends on personal taste. For example, sometimes it can be convenient to reuse an existing variable name like err for errors. Yet, in general, we should remain cautious because we now know that we can face a scenario where the code compiles, but the variable that receives the value is not the one expected.

    Source code

    "},{"location":"#unnecessary-nested-code-2","title":"Unnecessary nested code (#2)","text":"TL;DR

    Avoiding nested levels and keeping the happy path aligned on the left makes building a mental code model easier.

    In general, the more nested levels a function requires, the more complex it is to read and understand. Let\u2019s see some different applications of this rule to optimize our code for readability:

    • When an if block returns, we should omit the else block in all cases. For example, we shouldn\u2019t write:
    if foo() {\n    // ...\n    return true\n} else {\n    // ...\n}\n

    Instead, we omit the else block like this:

    if foo() {\n    // ...\n    return true\n}\n// ...\n
    • We can also follow this logic with a non-happy path:
    if s != \"\" {\n    // ...\n} else {\n    return errors.New(\"empty string\")\n}\n

    Here, an empty s represents the non-happy path. Hence, we should flip the condition like so:

    if s == \"\" {\n    return errors.New(\"empty string\")\n}\n// ...\n

    Writing readable code is an important challenge for every developer. Striving to reduce the number of nested blocks, aligning the happy path on the left, and returning as early as possible are concrete means to improve our code\u2019s readability.

    Source code

    "},{"location":"#misusing-init-functions-3","title":"Misusing init functions (#3)","text":"TL;DR

    When initializing variables, remember that init functions have limited error handling and make state handling and testing more complex. In most cases, initializations should be handled as specific functions.

    An init function is a function used to initialize the state of an application. It takes no arguments and returns no result (a func() function). When a package is initialized, all the constant and variable declarations in the package are evaluated. Then, the init functions are executed.

    Init functions can lead to some issues:

    • They can limit error management.
    • They can complicate how to implement tests (for example, an external dependency must be set up, which may not be necessary for the scope of unit tests).
    • If the initialization requires us to set a state, that has to be done through global variables.

    We should be cautious with init functions. They can be helpful in some situations, however, such as defining static configuration. Otherwise, and in most cases, we should handle initializations through ad hoc functions.

    Source code

    "},{"location":"#overusing-getters-and-setters-4","title":"Overusing getters and setters (#4)","text":"TL;DR

    Forcing the use of getters and setters isn\u2019t idiomatic in Go. Being pragmatic and finding the right balance between efficiency and blindly following certain idioms should be the way to go.

    Data encapsulation refers to hiding the values or state of an object. Getters and setters are means to enable encapsulation by providing exported methods on top of unexported object fields.

    In Go, there is no automatic support for getters and setters as we see in some languages. It is also considered neither mandatory nor idiomatic to use getters and setters to access struct fields. We shouldn\u2019t overwhelm our code with getters and setters on structs if they don\u2019t bring any value. We should be pragmatic and strive to find the right balance between efficiency and following idioms that are sometimes considered indisputable in other programming paradigms.

    Remember that Go is a unique language designed for many characteristics, including simplicity. However, if we find a need for getters and setters or, as mentioned, foresee a future need while guaranteeing forward compatibility, there\u2019s nothing wrong with using them.

    "},{"location":"#interface-pollution-5","title":"Interface pollution (#5)","text":"TL;DR

    Abstractions should be discovered, not created. To prevent unnecessary complexity, create an interface when you need it and not when you foresee needing it, or if you can at least prove the abstraction to be a valid one.

    An interface provides a way to specify the behavior of an object. We use interfaces to create common abstractions that multiple objects can implement. What makes Go interfaces so different is that they are satisfied implicitly. There is no explicit keyword like implements to mark that an object X implements interface Y.

    In general, we can define three main use cases where interfaces are generally considered as bringing value: factoring out a common behavior, creating some decoupling, and restricting a type to a certain behavior. Yet, this list isn't exhaustive and will also depend on the context we face.

    In many occasions, interfaces are made to create abstractions. And the main caveat when programming meets abstractions is remembering that abstractions should be discovered, not created. What does this mean? It means we shouldn\u2019t start creating abstractions in our code if there is no immediate reason to do so. We shouldn\u2019t design with interfaces but wait for a concrete need. Said differently, we should create an interface when we need it, not when we foresee that we could need it. What\u2019s the main problem if we overuse interfaces? The answer is that they make the code flow more complex. Adding a useless level of indirection doesn\u2019t bring any value; it creates a worthless abstraction making the code more difficult to read, understand, and reason about. If we don\u2019t have a strong reason for adding an interface and it\u2019s unclear how an interface makes a code better, we should challenge this interface\u2019s purpose. Why not call the implementation directly?

    We should be cautious when creating abstractions in our code (abstractions should be discovered, not created). It\u2019s common for us, software developers, to overengineer our code by trying to guess what the perfect level of abstraction is, based on what we think we might need later. This process should be avoided because, in most cases, it pollutes our code with unnecessary abstractions, making it more complex to read.

    Rob Pike

    Don\u2019t design with interfaces, discover them.

    Let\u2019s not try to solve a problem abstractly but solve what has to be solved now. Last, but not least, if it\u2019s unclear how an interface makes the code better, we should probably consider removing it to make our code simpler.

    Source code

    "},{"location":"#interface-on-the-producer-side-6","title":"Interface on the producer side (#6)","text":"TL;DR

    Keeping interfaces on the client side avoids unnecessary abstractions.

    Interfaces are satisfied implicitly in Go, which tends to be a gamechanger compared to languages with an explicit implementation. In most cases, the approach to follow is similar to what we described in the previous section: abstractions should be discovered, not created. This means that it\u2019s not up to the producer to force a given abstraction for all the clients. Instead, it\u2019s up to the client to decide whether it needs some form of abstraction and then determine the best abstraction level for its needs.

    An interface should live on the consumer side in most cases. However, in particular contexts (for example, when we know\u2014not foresee\u2014that an abstraction will be helpful for consumers), we may want to have it on the producer side. If we do, we should strive to keep it as minimal as possible, increasing its reusability potential and making it more easily composable.

    Source code

    "},{"location":"#returning-interfaces-7","title":"Returning interfaces (#7)","text":"TL;DR

    To prevent being restricted in terms of flexibility, a function shouldn\u2019t return interfaces but concrete implementations in most cases. Conversely, a function should accept interfaces whenever possible.

    In most cases, we shouldn\u2019t return interfaces but concrete implementations. Otherwise, it can make our design more complex due to package dependencies and can restrict flexibility because all the clients would have to rely on the same abstraction. Again, the conclusion is similar to the previous sections: if we know (not foresee) that an abstraction will be helpful for clients, we can consider returning an interface. Otherwise, we shouldn\u2019t force abstractions; they should be discovered by clients. If a client needs to abstract an implementation for whatever reason, it can still do that on the client\u2019s side.

    "},{"location":"#any-says-nothing-8","title":"any says nothing (#8)","text":"TL;DR

    Only use any if you need to accept or return any possible type, such as json.Marshal. Otherwise, any doesn\u2019t provide meaningful information and can lead to compile-time issues by allowing a caller to call methods with any data type.

    The any type can be helpful if there is a genuine need for accepting or returning any possible type (for instance, when it comes to marshaling or formatting). In general, we should avoid overgeneralizing the code we write at all costs. Perhaps a little bit of duplicated code might occasionally be better if it improves other aspects such as code expressiveness.

    Source code

    "},{"location":"#being-confused-about-when-to-use-generics-9","title":"Being confused about when to use generics (#9)","text":"TL;DR

    Relying on generics and type parameters can prevent writing boilerplate code to factor out elements or behaviors. However, do not use type parameters prematurely, but only when you see a concrete need for them. Otherwise, they introduce unnecessary abstractions and complexity.

    Read the full section here.

    Source code

    "},{"location":"#not-being-aware-of-the-possible-problems-with-type-embedding-10","title":"Not being aware of the possible problems with type embedding (#10)","text":"TL;DR

    Using type embedding can also help avoid boilerplate code; however, ensure that doing so doesn\u2019t lead to visibility issues where some fields should have remained hidden.

    When creating a struct, Go offers the option to embed types. But this can sometimes lead to unexpected behaviors if we don\u2019t understand all the implications of type embedding. Throughout this section, we look at how to embed types, what these bring, and the possible issues.

    In Go, a struct field is called embedded if it\u2019s declared without a name. For example,

    type Foo struct {\n    Bar // Embedded field\n}\n\ntype Bar struct {\n    Baz int\n}\n

    In the Foo struct, the Bar type is declared without an associated name; hence, it\u2019s an embedded field.

    We use embedding to promote the fields and methods of an embedded type. Because Bar contains a Baz field, this field is promoted to Foo. Therefore, Baz becomes available from Foo.

    What can we say about type embedding? First, let\u2019s note that it\u2019s rarely a necessity, and it means that whatever the use case, we can probably solve it as well without type embedding. Type embedding is mainly used for convenience: in most cases, to promote behaviors.

    If we decide to use type embedding, we need to keep two main constraints in mind:

    • It shouldn\u2019t be used solely as some syntactic sugar to simplify accessing a field (such as Foo.Baz() instead of Foo.Bar.Baz()). If this is the only rationale, let\u2019s not embed the inner type and use a field instead.
    • It shouldn\u2019t promote data (fields) or a behavior (methods) we want to hide from the outside: for example, if it allows clients to access a locking behavior that should remain private to the struct.

    Using type embedding consciously by keeping these constraints in mind can help avoid boilerplate code with additional forwarding methods. However, let\u2019s make sure we don\u2019t do it solely for cosmetics and not promote elements that should remain hidden.

    Source code

    "},{"location":"#not-using-the-functional-options-pattern-11","title":"Not using the functional options pattern (#11)","text":"TL;DR

    To handle options conveniently and in an API-friendly manner, use the functional options pattern.

    Although there are different implementations with minor variations, the main idea is as follows:

    • An unexported struct holds the configuration: options.
    • Each option is a function that returns the same type: type Option func(options *options) error. For example, WithPort accepts an int argument that represents the port and returns an Option type that represents how to update the options struct.

    type options struct {\n  port *int\n}\n\ntype Option func(options *options) error\n\nfunc WithPort(port int) Option {\n  return func(options *options) error {\n    if port < 0 {\n    return errors.New(\"port should be positive\")\n  }\n  options.port = &port\n  return nil\n  }\n}\n\nfunc NewServer(addr string, opts ...Option) ( *http.Server, error) {\n  var options options\n  for _, opt := range opts {\n    err := opt(&options)\n    if err != nil {\n      return nil, err\n    }\n  }\n\n  // At this stage, the options struct is built and contains the config\n  // Therefore, we can implement our logic related to port configuration\n  var port int\n  if options.port == nil {\n    port = defaultHTTPPort\n  } else {\n      if *options.port == 0 {\n      port = randomPort()\n    } else {\n      port = *options.port\n    }\n  }\n\n  // ...\n}\n

    The functional options pattern provides a handy and API-friendly way to handle options. Although the builder pattern can be a valid option, it has some minor downsides (having to pass a config struct that can be empty or a less handy way to handle error management) that tend to make the functional options pattern the idiomatic way to deal with these kind of problems in Go.

    Source code

    "},{"location":"#project-misorganization-project-structure-and-package-organization-12","title":"Project misorganization (project structure and package organization) (#12)","text":"

    Regarding the overall organization, there are different schools of thought. For example, should we organize our application by context or by layer? It depends on our preferences. We may favor grouping code per context (such as the customer context, the contract context, etc.), or we may favor following hexagonal architecture principles and group per technical layer. If the decision we make fits our use case, it cannot be a wrong decision, as long as we remain consistent with it.

    Regarding packages, there are multiple best practices that we should follow. First, we should avoid premature packaging because it might cause us to overcomplicate a project. Sometimes, it\u2019s better to use a simple organization and have our project evolve when we understand what it contains rather than forcing ourselves to make the perfect structure up front. Granularity is another essential thing to consider. We should avoid having dozens of nano packages containing only one or two files. If we do, it\u2019s because we have probably missed some logical connections across these packages, making our project harder for readers to understand. Conversely, we should also avoid huge packages that dilute the meaning of a package name.

    Package naming should also be considered with care. As we all know (as developers), naming is hard. To help clients understand a Go project, we should name our packages after what they provide, not what they contain. Also, naming should be meaningful. Therefore, a package name should be short, concise, expressive, and, by convention, a single lowercase word.

    Regarding what to export, the rule is pretty straightforward. We should minimize what should be exported as much as possible to reduce the coupling between packages and keep unnecessary exported elements hidden. If we are unsure whether to export an element or not, we should default to not exporting it. Later, if we discover that we need to export it, we can adjust our code. Let\u2019s also keep in mind some exceptions, such as making fields exported so that a struct can be unmarshaled with encoding/json.

    Organizing a project isn\u2019t straightforward, but following these rules should help make it easier to maintain. However, remember that consistency is also vital to ease maintainability. Therefore, let\u2019s make sure that we keep things as consistent as possible within a codebase.

    Note

    In 2023, the Go team has published an official guideline for organizing / structuring a Go project: go.dev/doc/modules/layout

    "},{"location":"#creating-utility-packages-13","title":"Creating utility packages (#13)","text":"TL;DR

    Naming is a critical piece of application design. Creating packages such as common, util, and shared doesn\u2019t bring much value for the reader. Refactor such packages into meaningful and specific package names.

    Also, bear in mind that naming a package after what it provides and not what it contains can be an efficient way to increase its expressiveness.

    Source code

    "},{"location":"#ignoring-package-name-collisions-14","title":"Ignoring package name collisions (#14)","text":"TL;DR

    To avoid naming collisions between variables and packages, leading to confusion or perhaps even bugs, use unique names for each one. If this isn\u2019t feasible, use an import alias to change the qualifier to differentiate the package name from the variable name, or think of a better name.

    Package collisions occur when a variable name collides with an existing package name, preventing the package from being reused. We should prevent variable name collisions to avoid ambiguity. If we face a collision, we should either find another meaningful name or use an import alias.

    "},{"location":"#missing-code-documentation-15","title":"Missing code documentation (#15)","text":"TL;DR

    To help clients and maintainers understand your code\u2019s purpose, document exported elements.

    Documentation is an important aspect of coding. It simplifies how clients can consume an API but can also help in maintaining a project. In Go, we should follow some rules to make our code idiomatic:

    First, every exported element must be documented. Whether it is a structure, an interface, a function, or something else, if it\u2019s exported, it must be documented. The convention is to add comments, starting with the name of the exported element.

    As a convention, each comment should be a complete sentence that ends with punctuation. Also bear in mind that when we document a function (or a method), we should highlight what the function intends to do, not how it does it; this belongs to the core of a function and comments, not documentation. Furthermore, the documentation should ideally provide enough information that the consumer does not have to look at our code to understand how to use an exported element.

    When it comes to documenting a variable or a constant, we might be interested in conveying two aspects: its purpose and its content. The former should live as code documentation to be useful for external clients. The latter, though, shouldn\u2019t necessarily be public.

    To help clients and maintainers understand a package\u2019s scope, we should also document each package. The convention is to start the comment with // Package followed by the package name. The first line of a package comment should be concise. That\u2019s because it will appear in the package. Then, we can provide all the information we need in the following lines.

    Documenting our code shouldn\u2019t be a constraint. We should take the opportunity to make sure it helps clients and maintainers to understand the purpose of our code.

    "},{"location":"#not-using-linters-16","title":"Not using linters (#16)","text":"TL;DR

    To improve code quality and consistency, use linters and formatters.

    A linter is an automatic tool to analyze code and catch errors. The scope of this section isn\u2019t to give an exhaustive list of the existing linters; otherwise, it will become deprecated pretty quickly. But we should understand and remember why linters are essential for most Go projects.

    However, if you\u2019re not a regular user of linters, here is a list that you may want to use daily:

    • https://golang.org/cmd/vet\u2014A standard Go analyzer
    • https://github.com/kisielk/errcheck\u2014An error checker
    • https://github.com/fzipp/gocyclo\u2014A cyclomatic complexity analyzer
    • https://github.com/jgautheron/goconst\u2014A repeated string constants analyzer

    Besides linters, we should also use code formatters to fix code style. Here is a list of some code formatters for you to try:

    • https://golang.org/cmd/gofmt\u2014A standard Go code formatter
    • https://godoc.org/golang.org/x/tools/cmd/goimports\u2014A standard Go imports formatter

    Meanwhile, we should also look at golangci-lint (https://github.com/golangci/golangci-lint). It\u2019s a linting tool that provides a facade on top of many useful linters and formatters. Also, it allows running the linters in parallel to improve analysis speed, which is quite handy.

    Linters and formatters are a powerful way to improve the quality and consistency of our codebase. Let\u2019s take the time to understand which one we should use and make sure we automate their execution (such as a CI or Git precommit hook).

    "},{"location":"#data-types","title":"Data Types","text":""},{"location":"#creating-confusion-with-octal-literals-17","title":"Creating confusion with octal literals (#17)","text":"TL;DR

    When reading existing code, bear in mind that integer literals starting with 0 are octal numbers. Also, to improve readability, make octal integers explicit by prefixing them with 0o.

    Octal numbers start with a 0 (e.g., 010 is equal to 8 in base 10). To improve readability and avoid potential mistakes for future code readers, we should make octal numbers explicit using the 0o prefix (e.g., 0o10).

    We should also note the other integer literal representations:

    • Binary\u2014Uses a 0b or 0B prefix (for example, 0b100 is equal to 4 in base 10)
    • Hexadecimal\u2014Uses an 0x or 0X prefix (for example, 0xF is equal to 15 in base 10)
    • Imaginary\u2014Uses an i suffix (for example, 3i)

    We can also use an underscore character (_) as a separator for readability. For example, we can write 1 billion this way: 1_000_000_000. We can also use the underscore character with other representations (for example, 0b00_00_01).

    Source code

    "},{"location":"#neglecting-integer-overflows-18","title":"Neglecting integer overflows (#18)","text":"TL;DR

    Because integer overflows and underflows are handled silently in Go, you can implement your own functions to catch them.

    In Go, an integer overflow that can be detected at compile time generates a compilation error. For example,

    var counter int32 = math.MaxInt32 + 1\n
    constant 2147483648 overflows int32\n

    However, at run time, an integer overflow or underflow is silent; this does not lead to an application panic. It is essential to keep this behavior in mind, because it can lead to sneaky bugs (for example, an integer increment or addition of positive integers that leads to a negative result).

    Source code

    "},{"location":"#not-understanding-floating-points-19","title":"Not understanding floating-points (#19)","text":"TL;DR

    Making floating-point comparisons within a given delta can ensure that your code is portable. When performing addition or subtraction, group the operations with a similar order of magnitude to favor accuracy. Also, perform multiplication and division before addition and subtraction.

    In Go, there are two floating-point types (if we omit imaginary numbers): float32 and float64. The concept of a floating point was invented to solve the major problem with integers: their inability to represent fractional values. To avoid bad surprises, we need to know that floating-point arithmetic is an approximation of real arithmetic.

    For that, we\u2019ll look at a multiplication example:

    var n float32 = 1.0001\nfmt.Println(n * n)\n

    We may expect this code to print the result of 1.0001 * 1.0001 = 1.00020001, right? However, running it on most x86 processors prints 1.0002, instead.

    Because Go\u2019s float32 and float64 types are approximations, we have to bear a few rules in mind:

    • When comparing two floating-point numbers, check that their difference is within an acceptable range.
    • When performing additions or subtractions, group operations with a similar order of magnitude for better accuracy.
    • To favor accuracy, if a sequence of operations requires addition, subtraction, multiplication, or division, perform the multiplication and division operations first.

    Source code

    "},{"location":"#not-understanding-slice-length-and-capacity-20","title":"Not understanding slice length and capacity (#20)","text":"TL;DR

    Understanding the difference between slice length and capacity should be part of a Go developer\u2019s core knowledge. The slice length is the number of available elements in the slice, whereas the slice capacity is the number of elements in the backing array.

    Read the full section here.

    Source code

    "},{"location":"#inefficient-slice-initialization-21","title":"Inefficient slice initialization (#21)","text":"TL;DR

    When creating a slice, initialize it with a given length or capacity if its length is already known. This reduces the number of allocations and improves performance.

    While initializing a slice using make, we can provide a length and an optional capacity. Forgetting to pass an appropriate value for both of these parameters when it makes sense is a widespread mistake. Indeed, it can lead to multiple copies and additional effort for the GC to clean the temporary backing arrays. Performance-wise, there\u2019s no good reason not to give the Go runtime a helping hand.

    Our options are to allocate a slice with either a given capacity or a given length. Of these two solutions, we have seen that the second tends to be slightly faster. But using a given capacity and append can be easier to implement and read in some contexts.

    Source code

    "},{"location":"#being-confused-about-nil-vs-empty-slice-22","title":"Being confused about nil vs. empty slice (#22)","text":"TL;DR

    To prevent common confusions such as when using the encoding/json or the reflect package, you need to understand the difference between nil and empty slices. Both are zero-length, zero-capacity slices, but only a nil slice doesn\u2019t require allocation.

    In Go, there is a distinction between nil and empty slices. A nil slice is equals to nil, whereas an empty slice has a length of zero. A nil slice is empty, but an empty slice isn\u2019t necessarily nil. Meanwhile, a nil slice doesn\u2019t require any allocation. We have seen throughout this section how to initialize a slice depending on the context by using

    • var s []string if we aren\u2019t sure about the final length and the slice can be empty
    • []string(nil) as syntactic sugar to create a nil and empty slice
    • make([]string, length) if the future length is known

    The last option, []string{}, should be avoided if we initialize the slice without elements. Finally, let\u2019s check whether the libraries we use make the distinctions between nil and empty slices to prevent unexpected behaviors.

    Source code

    "},{"location":"#not-properly-checking-if-a-slice-is-empty-23","title":"Not properly checking if a slice is empty (#23)","text":"TL;DR

    To check if a slice doesn\u2019t contain any element, check its length. This check works regardless of whether the slice is nil or empty. The same goes for maps. To design unambiguous APIs, you shouldn\u2019t distinguish between nil and empty slices.

    To determine whether a slice has elements, we can either do it by checking if the slice is nil or if its length is equal to 0. Checking the length is the best option to follow as it will cover both if the slice is empty or if the slice is nil.

    Meanwhile, when designing interfaces, we should avoid distinguishing nil and empty slices, which leads to subtle programming errors. When returning slices, it should make neither a semantic nor a technical difference if we return a nil or empty slice. Both should mean the same thing for the callers. This principle is the same with maps. To check if a map is empty, check its length, not whether it\u2019s nil.

    Source code

    "},{"location":"#not-making-slice-copies-correctly-24","title":"Not making slice copies correctly (#24)","text":"TL;DR

    To copy one slice to another using the copy built-in function, remember that the number of copied elements corresponds to the minimum between the two slice\u2019s lengths.

    Copying elements from one slice to another is a reasonably frequent operation. When using copy, we must recall that the number of elements copied to the destination corresponds to the minimum between the two slices\u2019 lengths. Also bear in mind that other alternatives exist to copy a slice, so we shouldn\u2019t be surprised if we find them in a codebase.

    Source code

    "},{"location":"#unexpected-side-effects-using-slice-append-25","title":"Unexpected side effects using slice append (#25)","text":"TL;DR

    Using copy or the full slice expression is a way to prevent append from creating conflicts if two different functions use slices backed by the same array. However, only a slice copy prevents memory leaks if you want to shrink a large slice.

    When using slicing, we must remember that we can face a situation leading to unintended side effects. If the resulting slice has a length smaller than its capacity, append can mutate the original slice. If we want to restrict the range of possible side effects, we can use either a slice copy or the full slice expression, which prevents us from doing a copy.

    Note

    s[low:high:max] (full slice expression): This statement creates a slice similar to the one created with s[low:high], except that the resulting slice\u2019s capacity is equal to max - low.

    Source code

    "},{"location":"#slices-and-memory-leaks-26","title":"Slices and memory leaks (#26)","text":"TL;DR

    Working with a slice of pointers or structs with pointer fields, you can avoid memory leaks by marking as nil the elements excluded by a slicing operation.

    "},{"location":"#leaking-capacity","title":"Leaking capacity","text":"

    Remember that slicing a large slice or array can lead to potential high memory consumption. The remaining space won\u2019t be reclaimed by the GC, and we can keep a large backing array despite using only a few elements. Using a slice copy is the solution to prevent such a case.

    Source code

    "},{"location":"#slice-and-pointers","title":"Slice and pointers","text":"

    When we use the slicing operation with pointers or structs with pointer fields, we need to know that the GC won\u2019t reclaim these elements. In that case, the two options are to either perform a copy or explicitly mark the remaining elements or their fields to nil.

    Source code

    "},{"location":"#inefficient-map-initialization-27","title":"Inefficient map initialization (#27)","text":"TL;DR

    When creating a map, initialize it with a given length if its length is already known. This reduces the number of allocations and improves performance.

    A map provides an unordered collection of key-value pairs in which all the keys are distinct. In Go, a map is based on the hash table data structure. Internally, a hash table is an array of buckets, and each bucket is a pointer to an array of key-value pairs.

    If we know up front the number of elements a map will contain, we should create it by providing an initial size. Doing this avoids potential map growth, which is quite heavy computation-wise because it requires reallocating enough space and rebalancing all the elements.

    Source code

    "},{"location":"#maps-and-memory-leaks-28","title":"Maps and memory leaks (#28)","text":"TL;DR

    A map can always grow in memory, but it never shrinks. Hence, if it leads to some memory issues, you can try different options, such as forcing Go to recreate the map or using pointers.

    Read the full section here.

    Source code

    "},{"location":"#comparing-values-incorrectly-29","title":"Comparing values incorrectly (#29)","text":"TL;DR

    To compare types in Go, you can use the == and != operators if two types are comparable: Booleans, numerals, strings, pointers, channels, and structs are composed entirely of comparable types. Otherwise, you can either use reflect.DeepEqual and pay the price of reflection or use custom implementations and libraries.

    It\u2019s essential to understand how to use == and != to make comparisons effectively. We can use these operators on operands that are comparable:

    • Booleans\u2014Compare whether two Booleans are equal.
    • Numerics (int, float, and complex types)\u2014Compare whether two numerics are equal.
    • Strings\u2014Compare whether two strings are equal.
    • Channels\u2014Compare whether two channels were created by the same call to make or if both are nil.
    • Interfaces\u2014Compare whether two interfaces have identical dynamic types and equal dynamic values or if both are nil.
    • Pointers\u2014Compare whether two pointers point to the same value in memory or if both are nil.
    • Structs and arrays\u2014Compare whether they are composed of similar types.
    Note

    We can also use the ?, >=, <, and > operators with numeric types to compare values and with strings to compare their lexical order.

    If operands are not comparable (e.g., slices and maps), we have to use other options such as reflection. Reflection is a form of metaprogramming, and it refers to the ability of an application to introspect and modify its structure and behavior. For example, in Go, we can use reflect.DeepEqual. This function reports whether two elements are deeply equal by recursively traversing two values. The elements it accepts are basic types plus arrays, structs, slices, maps, pointers, interfaces, and functions. Yet, the main catch is the performance penalty.

    If performance is crucial at run time, implementing our custom method might be the best solution. One additional note: we must remember that the standard library has some existing comparison methods. For example, we can use the optimized bytes.Compare function to compare two slices of bytes. Before implementing a custom method, we need to make sure we don\u2019t reinvent the wheel.

    Source code

    "},{"location":"#control-structures","title":"Control Structures","text":""},{"location":"#ignoring-that-elements-are-copied-in-range-loops-30","title":"Ignoring that elements are copied in range loops (#30)","text":"TL;DR

    The value element in a range loop is a copy. Therefore, to mutate a struct, for example, access it via its index or via a classic for loop (unless the element or the field you want to modify is a pointer).

    A range loop allows iterating over different data structures:

    • String
    • Array
    • Pointer to an array
    • Slice
    • Map
    • Receiving channel

    Compared to a classic for loop, a range loop is a convenient way to iterate over all the elements of one of these data structures, thanks to its concise syntax.

    Yet, we should remember that the value element in a range loop is a copy. Therefore, if the value is a struct we need to mutate, we will only update the copy, not the element itself, unless the value or field we modify is a pointer. The favored options are to access the element via the index using a range loop or a classic for loop.

    Source code

    "},{"location":"#ignoring-how-arguments-are-evaluated-in-range-loops-channels-and-arrays-31","title":"Ignoring how arguments are evaluated in range loops (channels and arrays) (#31)","text":"TL;DR

    Understanding that the expression passed to the range operator is evaluated only once before the beginning of the loop can help you avoid common mistakes such as inefficient assignment in channel or slice iteration.

    The range loop evaluates the provided expression only once, before the beginning of the loop, by doing a copy (regardless of the type). We should remember this behavior to avoid common mistakes that might, for example, lead us to access the wrong element. For example:

    a := [3]int{0, 1, 2}\nfor i, v := range a {\n    a[2] = 10\n    if i == 2 {\n        fmt.Println(v)\n    }\n}\n

    This code updates the last index to 10. However, if we run this code, it does not print 10; it prints 2.

    Source code

    "},{"location":"#ignoring-the-impacts-of-using-pointer-elements-in-range-loops-32","title":"Ignoring the impacts of using pointer elements in range loops (#32)","text":"Warning

    This mistake isn't relevant anymore from Go 1.22 (source).

    "},{"location":"#making-wrong-assumptions-during-map-iterations-ordering-and-map-insert-during-iteration-33","title":"Making wrong assumptions during map iterations (ordering and map insert during iteration) (#33)","text":"TL;DR

    To ensure predictable outputs when using maps, remember that a map data structure:

    • Doesn\u2019t order the data by keys
    • Doesn\u2019t preserve the insertion order
    • Doesn\u2019t have a deterministic iteration order
    • Doesn\u2019t guarantee that an element added during an iteration will be produced during this iteration

    Source code

    "},{"location":"#ignoring-how-the-break-statement-works-34","title":"Ignoring how the break statement works (#34)","text":"TL;DR

    Using break or continue with a label enforces breaking a specific statement. This can be helpful with switch or select statements inside loops.

    A break statement is commonly used to terminate the execution of a loop. When loops are used in conjunction with switch or select, developers frequently make the mistake of breaking the wrong statement. For example:

    for i := 0; i < 5; i++ {\n    fmt.Printf(\"%d \", i)\n\n    switch i {\n    default:\n    case 2:\n        break\n    }\n}\n

    The break statement doesn\u2019t terminate the for loop: it terminates the switch statement, instead. Hence, instead of iterating from 0 to 2, this code iterates from 0 to 4: 0 1 2 3 4.

    One essential rule to keep in mind is that a break statement terminates the execution of the innermost for, switch, or select statement. In the previous example, it terminates the switch statement.

    To break the loop instead of the switch statement, the most idiomatic way is to use a label:

    loop:\n    for i := 0; i < 5; i++ {\n        fmt.Printf(\"%d \", i)\n\n        switch i {\n        default:\n        case 2:\n            break loop\n        }\n    }\n

    Here, we associate the loop label with the for loop. Then, because we provide the loop label to the break statement, it breaks the loop, not the switch. Therefore, this new version will print 0 1 2, as we expected.

    Source code

    "},{"location":"#using-defer-inside-a-loop-35","title":"Using defer inside a loop (#35)","text":"TL;DR

    Extracting loop logic inside a function leads to executing a defer statement at the end of each iteration.

    The defer statement delays a call\u2019s execution until the surrounding function returns. It\u2019s mainly used to reduce boilerplate code. For example, if a resource has to be closed eventually, we can use defer to avoid repeating the closure calls before every single return.

    One common mistake with defer is to forget that it schedules a function call when the surrounding function returns. For example:

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        file, err := os.Open(path)\n        if err != nil {\n            return err\n        }\n\n        defer file.Close()\n\n        // Do something with file\n    }\n    return nil\n}\n

    The defer calls are executed not during each loop iteration but when the readFiles function returns. If readFiles doesn\u2019t return, the file descriptors will be kept open forever, causing leaks.

    One common option to fix this problem is to create a surrounding function after defer, called during each iteration:

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        if err := readFile(path); err != nil {\n            return err\n        }\n    }\n    return nil\n}\n\nfunc readFile(path string) error {\n    file, err := os.Open(path)\n    if err != nil {\n        return err\n    }\n\n    defer file.Close()\n\n    // Do something with file\n    return nil\n}\n

    Another solution is to make the readFile function a closure but intrinsically, this remains the same solution: adding another surrounding function to execute the defer calls during each iteration.

    Source code

    "},{"location":"#strings","title":"Strings","text":""},{"location":"#not-understanding-the-concept-of-rune-36","title":"Not understanding the concept of rune (#36)","text":"TL;DR

    Understanding that a rune corresponds to the concept of a Unicode code point and that it can be composed of multiple bytes should be part of the Go developer\u2019s core knowledge to work accurately with strings.

    As runes are everywhere in Go, it's important to understand the following:

    • A charset is a set of characters, whereas an encoding describes how to translate a charset into binary.
    • In Go, a string references an immutable slice of arbitrary bytes.
    • Go source code is encoded using UTF-8. Hence, all string literals are UTF-8 strings. But because a string can contain arbitrary bytes, if it\u2019s obtained from somewhere else (not the source code), it isn\u2019t guaranteed to be based on the UTF-8 encoding.
    • A rune corresponds to the concept of a Unicode code point, meaning an item represented by a single value.
    • Using UTF-8, a Unicode code point can be encoded into 1 to 4 bytes.
    • Using len() on a string in Go returns the number of bytes, not the number of runes.

    Source code

    "},{"location":"#inaccurate-string-iteration-37","title":"Inaccurate string iteration (#37)","text":"TL;DR

    Iterating on a string with the range operator iterates on the runes with the index corresponding to the starting index of the rune\u2019s byte sequence. To access a specific rune index (such as the third rune), convert the string into a []rune.

    Iterating on a string is a common operation for developers. Perhaps we want to perform an operation for each rune in the string or implement a custom function to search for a specific substring. In both cases, we have to iterate on the different runes of a string. But it\u2019s easy to get confused about how iteration works.

    For example, consider the following example:

    s := \"h\u00eallo\"\nfor i := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, s[i])\n}\nfmt.Printf(\"len=%d\\n\", len(s))\n
    position 0: h\nposition 1: \u00c3\nposition 3: l\nposition 4: l\nposition 5: o\nlen=6\n

    Let's highlight three points that might be confusing:

    • The second rune is \u00c3 in the output instead of \u00ea.
    • We jumped from position 1 to position 3: what is at position 2?
    • len returns a count of 6, whereas s contains only 5 runes.

    Let\u2019s start with the last observation. We already mentioned that len returns the number of bytes in a string, not the number of runes. Because we assigned a string literal to s, s is a UTF-8 string. Meanwhile, the special character \"\u00ea\" isn\u2019t encoded in a single byte; it requires 2 bytes. Therefore, calling len(s) returns 6.

    Meanwhile, in the previous example, we have to understand that we don't iterate over each rune; instead, we iterate over each starting index of a rune:

    Printing s[i] doesn\u2019t print the ith rune; it prints the UTF-8 representation of the byte at index i. Hence, we printed \"h\u00c3llo\" instead of \"h\u00eallo\".

    If we want to print all the different runes, we can either use the value element of the range operator:

    s := \"h\u00eallo\"\nfor i, r := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    Or, we can convert the string into a slice of runes and iterate over it:

    s := \"h\u00eallo\"\nrunes := []rune(s)\nfor i, r := range runes {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    Note that this solution introduces a run-time overhead compared to the previous one. Indeed, converting a string into a slice of runes requires allocating an additional slice and converting the bytes into runes: an O(n) time complexity with n the number of bytes in the string. Therefore, if we want to iterate over all the runes, we should use the first solution.

    However, if we want to access the ith rune of a string with the first option, we don\u2019t have access to the rune index; rather, we know the starting index of a rune in the byte sequence.

    s := \"h\u00eallo\"\nr := []rune(s)[4]\nfmt.Printf(\"%c\\n\", r) // o\n

    Source code

    "},{"location":"#misusing-trim-functions-38","title":"Misusing trim functions (#38)","text":"TL;DR

    strings.TrimRight/strings.TrimLeft removes all the trailing/leading runes contained in a given set, whereas strings.TrimSuffix/strings.TrimPrefix returns a string without a provided suffix/prefix.

    For example:

    fmt.Println(strings.TrimRight(\"123oxo\", \"xo\"))\n

    The example prints 123:

    Conversely, strings.TrimLeft removes all the leading runes contained in a set.

    On the other side, strings.TrimSuffix / strings.TrimPrefix returns a string without the provided trailing suffix / prefix.

    Source code

    "},{"location":"#under-optimized-strings-concatenation-39","title":"Under-optimized strings concatenation (#39)","text":"TL;DR

    Concatenating a list of strings should be done with strings.Builder to prevent allocating a new string during each iteration.

    Let\u2019s consider a concat function that concatenates all the string elements of a slice using the += operator:

    func concat(values []string) string {\n    s := \"\"\n    for _, value := range values {\n        s += value\n    }\n    return s\n}\n

    During each iteration, the += operator concatenates s with the value string. At first sight, this function may not look wrong. But with this implementation, we forget one of the core characteristics of a string: its immutability. Therefore, each iteration doesn\u2019t update s; it reallocates a new string in memory, which significantly impacts the performance of this function.

    Fortunately, there is a solution to deal with this problem, using strings.Builder:

    func concat(values []string) string {\n    sb := strings.Builder{}\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    During each iteration, we constructed the resulting string by calling the WriteString method that appends the content of value to its internal buffer, hence minimizing memory copying.

    Note

    WriteString returns an error as the second output, but we purposely ignore it. Indeed, this method will never return a non-nil error. So what\u2019s the purpose of this method returning an error as part of its signature? strings.Builder implements the io.StringWriter interface, which contains a single method: WriteString(s string) (n int, err error). Hence, to comply with this interface, WriteString must return an error.

    Internally, strings.Builder holds a byte slice. Each call to WriteString results in a call to append on this slice. There are two impacts. First, this struct shouldn\u2019t be used concurrently, as the calls to append would lead to race conditions. The second impact is something that we saw in mistake #21, \"Inefficient slice initialization\": if the future length of a slice is already known, we should preallocate it. For that purpose, strings.Builder exposes a method Grow(n int) to guarantee space for another n bytes:

    func concat(values []string) string {\n    total := 0\n    for i := 0; i < len(values); i++ {\n        total += len(values[i])\n    }\n\n    sb := strings.Builder{}\n    sb.Grow(total) (2)\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    Let\u2019s run a benchmark to compare the three versions (v1 using +=; v2 using strings.Builder{} without preallocation; and v3 using strings.Builder{} with preallocation). The input slice contains 1,000 strings, and each string contains 1,000 bytes:

    BenchmarkConcatV1-4             16      72291485 ns/op\nBenchmarkConcatV2-4           1188        878962 ns/op\nBenchmarkConcatV3-4           5922        190340 ns/op\n

    As we can see, the latest version is by far the most efficient: 99% faster than v1 and 78% faster than v2.

    strings.Builder is the recommended solution to concatenate a list of strings. Usually, this solution should be used within a loop. Indeed, if we just have to concatenate a few strings (such as a name and a surname), using strings.Builder is not recommended as doing so will make the code a bit less readable than using the += operator or fmt.Sprintf.

    Source code

    "},{"location":"#useless-string-conversions-40","title":"Useless string conversions (#40)","text":"TL;DR

    Remembering that the bytes package offers the same operations as the strings package can help avoid extra byte/string conversions.

    When choosing to work with a string or a []byte, most programmers tend to favor strings for convenience. But most I/O is actually done with []byte. For example, io.Reader, io.Writer, and io.ReadAll work with []byte, not strings.

    When we\u2019re wondering whether we should work with strings or []byte, let\u2019s recall that working with []byte isn\u2019t necessarily less convenient. Indeed, all the exported functions of the strings package also have alternatives in the bytes package: Split, Count, Contains, Index, and so on. Hence, whether we\u2019re doing I/O or not, we should first check whether we could implement a whole workflow using bytes instead of strings and avoid the price of additional conversions.

    Source code

    "},{"location":"#substring-and-memory-leaks-41","title":"Substring and memory leaks (#41)","text":"TL;DR

    Using copies instead of substrings can prevent memory leaks, as the string returned by a substring operation will be backed by the same byte array.

    In mistake #26, \u201cSlices and memory leaks,\u201d we saw how slicing a slice or array may lead to memory leak situations. This principle also applies to string and substring operations.

    We need to keep two things in mind while using the substring operation in Go. First, the interval provided is based on the number of bytes, not the number of runes. Second, a substring operation may lead to a memory leak as the resulting substring will share the same backing array as the initial string. The solutions to prevent this case from happening are to perform a string copy manually or to use strings.Clone from Go 1.18.

    Source code

    "},{"location":"#functions-and-methods","title":"Functions and Methods","text":""},{"location":"#not-knowing-which-type-of-receiver-to-use-42","title":"Not knowing which type of receiver to use (#42)","text":"TL;DR

    The decision whether to use a value or a pointer receiver should be made based on factors such as the type, whether it has to be mutated, whether it contains a field that can\u2019t be copied, and how large the object is. When in doubt, use a pointer receiver.

    Choosing between value and pointer receivers isn\u2019t always straightforward. Let\u2019s discuss some of the conditions to help us choose.

    A receiver must be a pointer

    • If the method needs to mutate the receiver. This rule is also valid if the receiver is a slice and a method needs to append elements:
    type slice []int\n\nfunc (s *slice) add(element int) {\n    *s = append(*s, element)\n}\n
    • If the method receiver contains a field that cannot be copied: for example, a type part of the sync package (see #74, \u201cCopying a sync type\u201d).

    A receiver should be a pointer

    • If the receiver is a large object. Using a pointer can make the call more efficient, as doing so prevents making an extensive copy. When in doubt about how large is large, benchmarking can be the solution; it\u2019s pretty much impossible to state a specific size, because it depends on many factors.

    A receiver must be a value

    • If we have to enforce a receiver\u2019s immutability.
    • If the receiver is a map, function, or channel. Otherwise, a compilation error occurs.

    A receiver should be a value

    • If the receiver is a slice that doesn\u2019t have to be mutated.
    • If the receiver is a small array or struct that is naturally a value type without mutable fields, such as time.Time.
    • If the receiver is a basic type such as int, float64, or string.

    Of course, it\u2019s impossible to be exhaustive, as there will always be edge cases, but this section\u2019s goal was to provide guidance to cover most cases. By default, we can choose to go with a value receiver unless there\u2019s a good reason not to do so. In doubt, we should use a pointer receiver.

    Source code

    "},{"location":"#never-using-named-result-parameters-43","title":"Never using named result parameters (#43)","text":"TL;DR

    Using named result parameters can be an efficient way to improve the readability of a function/method, especially if multiple result parameters have the same type. In some cases, this approach can also be convenient because named result parameters are initialized to their zero value. But be cautious about potential side effects.

    When we return parameters in a function or a method, we can attach names to these parameters and use them as regular variables. When a result parameter is named, it\u2019s initialized to its zero value when the function/method begins. With named result parameters, we can also call a naked return statement (without arguments). In that case, the current values of the result parameters are used as the returned values.

    Here\u2019s an example that uses a named result parameter b:

    func f(a int) (b int) {\n    b = a\n    return\n}\n

    In this example, we attach a name to the result parameter: b. When we call return without arguments, it returns the current value of b.

    In some cases, named result parameters can also increase readability: for example, if two parameters have the same type. In other cases, they can also be used for convenience. Therefore, we should use named result parameters sparingly when there\u2019s a clear benefit.

    Source code

    "},{"location":"#unintended-side-effects-with-named-result-parameters-44","title":"Unintended side effects with named result parameters (#44)","text":"TL;DR

    See #43.

    We mentioned why named result parameters can be useful in some situations. But as these result parameters are initialized to their zero value, using them can sometimes lead to subtle bugs if we\u2019re not careful enough. For example, can you spot what\u2019s wrong with this code?

    func (l loc) getCoordinates(ctx context.Context, address string) (\n    lat, lng float32, err error) {\n    isValid := l.validateAddress(address) (1)\n    if !isValid {\n        return 0, 0, errors.New(\"invalid address\")\n    }\n\n    if ctx.Err() != nil { (2)\n        return 0, 0, err\n    }\n\n    // Get and return coordinates\n}\n

    The error might not be obvious at first glance. Here, the error returned in the if ctx.Err() != nil scope is err. But we haven\u2019t assigned any value to the err variable. It\u2019s still assigned to the zero value of an error type: nil. Hence, this code will always return a nil error.

    When using named result parameters, we must recall that each parameter is initialized to its zero value. As we have seen in this section, this can lead to subtle bugs that aren\u2019t always straightforward to spot while reading code. Therefore, let\u2019s remain cautious when using named result parameters, to avoid potential side effects.

    Source code

    "},{"location":"#returning-a-nil-receiver-45","title":"Returning a nil receiver (#45)","text":"TL;DR

    When returning an interface, be cautious about not returning a nil pointer but an explicit nil value. Otherwise, unintended consequences may occur and the caller will receive a non-nil value.

    Source code

    "},{"location":"#using-a-filename-as-a-function-input-46","title":"Using a filename as a function input (#46)","text":"TL;DR

    Designing functions to receive io.Reader types instead of filenames improves the reusability of a function and makes testing easier.

    Accepting a filename as a function input to read from a file should, in most cases, be considered a code smell (except in specific functions such as os.Open). Indeed, it makes unit tests more complex because we may have to create multiple files. It also reduces the reusability of a function (although not all functions are meant to be reused). Using the io.Reader interface abstracts the data source. Regardless of whether the input is a file, a string, an HTTP request, or a gRPC request, the implementation can be reused and easily tested.

    Source code

    "},{"location":"#ignoring-how-defer-arguments-and-receivers-are-evaluated-argument-evaluation-pointer-and-value-receivers-47","title":"Ignoring how defer arguments and receivers are evaluated (argument evaluation, pointer, and value receivers) (#47)","text":"TL;DR

    Passing a pointer to a defer function and wrapping a call inside a closure are two possible solutions to overcome the immediate evaluation of arguments and receivers.

    In a defer function the arguments are evaluated right away, not once the surrounding function returns. For example, in this code, we always call notify and incrementCounter with the same status: an empty string.

    const (\n    StatusSuccess  = \"success\"\n    StatusErrorFoo = \"error_foo\"\n    StatusErrorBar = \"error_bar\"\n)\n\nfunc f() error {\n    var status string\n    defer notify(status)\n    defer incrementCounter(status)\n\n    if err := foo(); err != nil {\n        status = StatusErrorFoo\n        return err\n    }\n\n    if err := bar(); err != nil {\n        status = StatusErrorBar\n        return err\n    }\n\n    status = StatusSuccess <5>\n    return nil\n}\n

    Indeed, we call notify(status) and incrementCounter(status) as defer functions. Therefore, Go will delay these calls to be executed once f returns with the current value of status at the stage we used defer, hence passing an empty string.

    Two leading options if we want to keep using defer.

    The first solution is to pass a string pointer:

    func f() error {\n    var status string\n    defer notify(&status) \n    defer incrementCounter(&status)\n\n    // The rest of the function unchanged\n}\n

    Using defer evaluates the arguments right away: here, the address of status. Yes, status itself is modified throughout the function, but its address remains constant, regardless of the assignments. Hence, if notify or incrementCounter uses the value referenced by the string pointer, it will work as expected. But this solution requires changing the signature of the two functions, which may not always be possible.

    There\u2019s another solution: calling a closure (an anonymous function value that references variables from outside its body) as a defer statement:

    func f() error {\n    var status string\n    defer func() {\n        notify(status)\n        incrementCounter(status)\n    }()\n\n    // The rest of the function unchanged\n}\n

    Here, we wrap the calls to both notify and incrementCounter within a closure. This closure references the status variable from outside its body. Therefore, status is evaluated once the closure is executed, not when we call defer. This solution also works and doesn\u2019t require notify and incrementCounter to change their signature.

    Let's also note this behavior applies with method receiver: the receiver is evaluated immediately.

    Source code

    "},{"location":"#error-management","title":"Error Management","text":""},{"location":"#panicking-48","title":"Panicking (#48)","text":"TL;DR

    Using panic is an option to deal with errors in Go. However, it should only be used sparingly in unrecoverable conditions: for example, to signal a programmer error or when you fail to load a mandatory dependency.

    In Go, panic is a built-in function that stops the ordinary flow:

    func main() {\n    fmt.Println(\"a\")\n    panic(\"foo\")\n    fmt.Println(\"b\")\n}\n

    This code prints a and then stops before printing b:

    a\npanic: foo\n\ngoroutine 1 [running]:\nmain.main()\n        main.go:7 +0xb3\n

    Panicking in Go should be used sparingly. There are two prominent cases, one to signal a programmer error (e.g., sql.Register that panics if the driver is nil or has already been register) and another where our application fails to create a mandatory dependency. Hence, exceptional conditions that lead us to stop the application. In most other cases, error management should be done with a function that returns a proper error type as the last return argument.

    Source code

    "},{"location":"#ignoring-when-to-wrap-an-error-49","title":"Ignoring when to wrap an error (#49)","text":"TL;DR

    Wrapping an error allows you to mark an error and/or provide additional context. However, error wrapping creates potential coupling as it makes the source error available for the caller. If you want to prevent that, don\u2019t use error wrapping.

    Since Go 1.13, the %w directive allows us to wrap errors conveniently. Error wrapping is about wrapping or packing an error inside a wrapper container that also makes the source error available. In general, the two main use cases for error wrapping are the following:

    • Adding additional context to an error
    • Marking an error as a specific error

    When handling an error, we can decide to wrap it. Wrapping is about adding additional context to an error and/or marking an error as a specific type. If we need to mark an error, we should create a custom error type. However, if we just want to add extra context, we should use fmt.Errorf with the %w directive as it doesn\u2019t require creating a new error type. Yet, error wrapping creates potential coupling as it makes the source error available for the caller. If we want to prevent it, we shouldn\u2019t use error wrapping but error transformation, for example, using fmt.Errorf with the %v directive.

    Source code

    "},{"location":"#comparing-an-error-type-inaccurately-50","title":"Comparing an error type inaccurately (#50)","text":"TL;DR

    If you use Go 1.13 error wrapping with the %w directive and fmt.Errorf, comparing an error against a type has to be done using errors.As. Otherwise, if the returned error you want to check is wrapped, it will fail the checks.

    Source code

    "},{"location":"#comparing-an-error-value-inaccurately-51","title":"Comparing an error value inaccurately (#51)","text":"TL;DR

    If you use Go 1.13 error wrapping with the %w directive and fmt.Errorf, comparing an error against or a value has to be done using errors.As. Otherwise, if the returned error you want to check is wrapped, it will fail the checks.

    A sentinel error is an error defined as a global variable:

    import \"errors\"\n\nvar ErrFoo = errors.New(\"foo\")\n

    In general, the convention is to start with Err followed by the error type: here, ErrFoo. A sentinel error conveys an expected error, an error that clients will expect to check. As general guidelines:

    • Expected errors should be designed as error values (sentinel errors): var ErrFoo = errors.New(\"foo\").
    • Unexpected errors should be designed as error types: type BarError struct { ... }, with BarError implementing the error interface.

    If we use error wrapping in our application with the %w directive and fmt.Errorf, checking an error against a specific value should be done using errors.Is instead of ==. Thus, even if the sentinel error is wrapped, errors.Is can recursively unwrap it and compare each error in the chain against the provided value.

    Source code

    "},{"location":"#handling-an-error-twice-52","title":"Handling an error twice (#52)","text":"TL;DR

    In most situations, an error should be handled only once. Logging an error is handling an error. Therefore, you have to choose between logging or returning an error. In many cases, error wrapping is the solution as it allows you to provide additional context to an error and return the source error.

    Handling an error multiple times is a mistake made frequently by developers, not specifically in Go. This can cause situations where the same error is logged multiple times make debugging harder.

    Let's remind us that handling an error should be done only once. Logging an error is handling an error. Hence, we should either log or return an error. By doing this, we simplify our code and gain better insights into the error situation. Using error wrapping is the most convenient approach as it allows us to propagate the source error and add context to an error.

    Source code

    "},{"location":"#not-handling-an-error-53","title":"Not handling an error (#53)","text":"TL;DR

    Ignoring an error, whether during a function call or in a defer function, should be done explicitly using the blank identifier. Otherwise, future readers may be confused about whether it was intentional or a miss.

    Source code

    "},{"location":"#not-handling-defer-errors-54","title":"Not handling defer errors (#54)","text":"TL;DR

    In many cases, you shouldn\u2019t ignore an error returned by a defer function. Either handle it directly or propagate it to the caller, depending on the context. If you want to ignore it, use the blank identifier.

    Consider the following code:

    func f() {\n  // ...\n  notify() // Error handling is omitted\n}\n\nfunc notify() error {\n  // ...\n}\n

    From a maintainability perspective, the code can lead to some issues. Let\u2019s consider a new reader looking at it. This reader notices that notify returns an error but that the error isn\u2019t handled by the parent function. How can they guess whether or not handling the error was intentional? How can they know whether the previous developer forgot to handle it or did it purposely?

    For these reasons, when we want to ignore an error, there's only one way to do it, using the blank identifier (_):

    _ = notify\n

    In terms of compilation and run time, this approach doesn\u2019t change anything compared to the first piece of code. But this new version makes explicit that we aren\u2019t interested in the error. Also, we can add a comment that indicates the rationale for why an error is ignored:

    // At-most once delivery.\n// Hence, it's accepted to miss some of them in case of errors.\n_ = notify()\n

    Source code

    "},{"location":"#concurrency-foundations","title":"Concurrency: Foundations","text":""},{"location":"#mixing-up-concurrency-and-parallelism-55","title":"Mixing up concurrency and parallelism (#55)","text":"TL;DR

    Understanding the fundamental differences between concurrency and parallelism is a cornerstone of the Go developer\u2019s knowledge. Concurrency is about structure, whereas parallelism is about execution.

    Concurrency and parallelism are not the same:

    • Concurrency is about structure. We can change a sequential implementation into a concurrent one by introducing different steps that separate concurrent goroutines can tackle.
    • Meanwhile, parallelism is about execution. We can use parallism at the steps level by adding more parallel goroutines.

    In summary, concurrency provides a structure to solve a problem with parts that may be parallelized. Therefore, concurrency enables parallelism.

    "},{"location":"#thinking-concurrency-is-always-faster-56","title":"Thinking concurrency is always faster (#56)","text":"TL;DR

    To be a proficient developer, you must acknowledge that concurrency isn\u2019t always faster. Solutions involving parallelization of minimal workloads may not necessarily be faster than a sequential implementation. Benchmarking sequential versus concurrent solutions should be the way to validate assumptions.

    Read the full section here.

    Source code

    "},{"location":"#being-puzzled-about-when-to-use-channels-or-mutexes-57","title":"Being puzzled about when to use channels or mutexes (#57)","text":"TL;DR

    Being aware of goroutine interactions can also be helpful when deciding between channels and mutexes. In general, parallel goroutines require synchronization and hence mutexes. Conversely, concurrent goroutines generally require coordination and orchestration and hence channels.

    Given a concurrency problem, it may not always be clear whether we can implement a solution using channels or mutexes. Because Go promotes sharing memory by communication, one mistake could be to always force the use of channels, regardless of the use case. However, we should see the two options as complementary.

    When should we use channels or mutexes? We will use the example in the next figure as a backbone. Our example has three different goroutines with specific relationships:

    • G1 and G2 are parallel goroutines. They may be two goroutines executing the same function that keeps receiving messages from a channel, or perhaps two goroutines executing the same HTTP handler at the same time.
    • On the other hand, G1 and G3 are concurrent goroutines, as are G2 and G3. All the goroutines are part of an overall concurrent structure, but G1 and G2 perform the first step, whereas G3 does the next step.

    In general, parallel goroutines have to synchronize: for example, when they need to access or mutate a shared resource such as a slice. Synchronization is enforced with mutexes but not with any channel types (not with buffered channels). Hence, in general, synchronization between parallel goroutines should be achieved via mutexes.

    Conversely, in general, concurrent goroutines have to coordinate and orchestrate. For example, if G3 needs to aggregate results from both G1 and G2, G1 and G2 need to signal to G3 that a new intermediate result is available. This coordination falls under the scope of communication\u2014therefore, channels.

    Regarding concurrent goroutines, there\u2019s also the case where we want to transfer the ownership of a resource from one step (G1 and G2) to another (G3); for example, if G1 and G2 are enriching a shared resource and at some point, we consider this job as complete. Here, we should use channels to signal that a specific resource is ready and handle the ownership transfer.

    Mutexes and channels have different semantics. Whenever we want to share a state or access a shared resource, mutexes ensure exclusive access to this resource. Conversely, channels are a mechanic for signaling with or without data (chan struct{} or not). Coordination or ownership transfer should be achieved via channels. It\u2019s important to know whether goroutines are parallel or concurrent because, in general, we need mutexes for parallel goroutines and channels for concurrent ones.

    "},{"location":"#not-understanding-race-problems-data-races-vs-race-conditions-and-the-go-memory-model-58","title":"Not understanding race problems (data races vs. race conditions and the Go memory model) (#58)","text":"TL;DR

    Being proficient in concurrency also means understanding that data races and race conditions are different concepts. Data races occur when multiple goroutines simultaneously access the same memory location and at least one of them is writing. Meanwhile, being data-race-free doesn\u2019t necessarily mean deterministic execution. When a behavior depends on the sequence or the timing of events that can\u2019t be controlled, this is a race condition.

    Race problems can be among the hardest and most insidious bugs a programmer can face. As Go developers, we must understand crucial aspects such as data races and race conditions, their possible impacts, and how to avoid them.

    "},{"location":"#data-race","title":"Data Race","text":"

    A data race occurs when two or more goroutines simultaneously access the same memory location and at least one is writing. In this case, the result can be hazardous. Even worse, in some situations, the memory location may end up holding a value containing a meaningless combination of bits.

    We can prevent a data race from happening using different techniques. For example:

    • Using the sync/atomic package
    • In synchronizing the two goroutines with an ad hoc data structure like a mutex
    • Using channels to make the two goroutines communicating to ensure that a variable is updated by only one goroutine at a time
    "},{"location":"#race-condition","title":"Race Condition","text":"

    Depending on the operation we want to perform, does a data-race-free application necessarily mean a deterministic result? Not necessarily.

    A race condition occurs when the behavior depends on the sequence or the timing of events that can\u2019t be controlled. Here, the timing of events is the goroutines\u2019 execution order.

    In summary, when we work in concurrent applications, it\u2019s essential to understand that a data race is different from a race condition. A data race occurs when multiple goroutines simultaneously access the same memory location and at least one of them is writing. A data race means unexpected behavior. However, a data-race-free application doesn\u2019t necessarily mean deterministic results. An application can be free of data races but still have behavior that depends on uncontrolled events (such as goroutine execution, how fast a message is published to a channel, or how long a call to a database lasts); this is a race condition. Understanding both concepts is crucial to becoming proficient in designing concurrent applications.

    Source code

    "},{"location":"#not-understanding-the-concurrency-impacts-of-a-workload-type-59","title":"Not understanding the concurrency impacts of a workload type (#59)","text":"TL;DR

    When creating a certain number of goroutines, consider the workload type. Creating CPU-bound goroutines means bounding this number close to the GOMAXPROCS variable (based by default on the number of CPU cores on the host). Creating I/O-bound goroutines depends on other factors, such as the external system.

    In programming, the execution time of a workload is limited by one of the following:

    • The speed of the CPU\u2014For example, running a merge sort algorithm. The workload is called CPU-bound.
    • The speed of I/O\u2014For example, making a REST call or a database query. The workload is called I/O-bound.
    • The amount of available memory\u2014The workload is called memory-bound.
    Note

    The last is the rarest nowadays, given that memory has become very cheap in recent decades. Hence, this section focuses on the two first workload types: CPU- and I/O-bound.

    If the workload executed by the workers is I/O-bound, the value mainly depends on the external system. Conversely, if the workload is CPU-bound, the optimal number of goroutines is close to the number of available CPU cores (a best practice can be to use runtime.GOMAXPROCS). Knowing the workload type (I/O or CPU) is crucial when designing concurrent applications.

    Source code

    "},{"location":"#misunderstanding-go-contexts-60","title":"Misunderstanding Go contexts (#60)","text":"TL;DR

    Go contexts are also one of the cornerstones of concurrency in Go. A context allows you to carry a deadline, a cancellation signal, and/or a list of keys-values.

    https://pkg.go.dev/context

    A Context carries a deadline, a cancellation signal, and other values across API boundaries.

    "},{"location":"#deadline","title":"Deadline","text":"

    A deadline refers to a specific point in time determined with one of the following:

    • A time.Duration from now (for example, in 250 ms)
    • A time.Time (for example, 2023-02-07 00:00:00 UTC)

    The semantics of a deadline convey that an ongoing activity should be stopped if this deadline is met. An activity is, for example, an I/O request or a goroutine waiting to receive a message from a channel.

    "},{"location":"#cancellation-signals","title":"Cancellation signals","text":"

    Another use case for Go contexts is to carry a cancellation signal. Let\u2019s imagine that we want to create an application that calls CreateFileWatcher(ctx context.Context, filename string) within another goroutine. This function creates a specific file watcher that keeps reading from a file and catches updates. When the provided context expires or is canceled, this function handles it to close the file descriptor.

    "},{"location":"#context-values","title":"Context values","text":"

    The last use case for Go contexts is to carry a key-value list. What\u2019s the point of having a context carrying a key-value list? Because Go contexts are generic and mainstream, there are infinite use cases.

    For example, if we use tracing, we may want different subfunctions to share the same correlation ID. Some developers may consider this ID too invasive to be part of the function signature. In this regard, we could also decide to include it as part of the provided context.

    "},{"location":"#catching-a-context-cancellation","title":"Catching a context cancellation","text":"

    The context.Context type exports a Done method that returns a receive-only notification channel: <-chan struct{}. This channel is closed when the work associated with the context should be canceled. For example,

    • The Done channel related to a context created with context.WithCancel is closed when the cancel function is called.
    • The Done channel related to a context created with context.WithDeadline is closed when the deadline has expired.

    One thing to note is that the internal channel should be closed when a context is canceled or has met a deadline, instead of when it receives a specific value, because the closure of a channel is the only channel action that all the consumer goroutines will receive. This way, all the consumers will be notified once a context is canceled or a deadline is reached.

    In summary, to be a proficient Go developer, we have to understand what a context is and how to use it. In general, a function that users wait for should take a context, as doing so allows upstream callers to decide when calling this function should be aborted.

    Source code

    "},{"location":"#concurrency-practice","title":"Concurrency: Practice","text":""},{"location":"#propagating-an-inappropriate-context-61","title":"Propagating an inappropriate context (#61)","text":"TL;DR

    Understanding the conditions when a context can be canceled should matter when propagating it: for example, an HTTP handler canceling the context when the response has been sent.

    In many situations, it is recommended to propagate Go contexts. However, context propagation can sometimes lead to subtle bugs, preventing subfunctions from being correctly executed.

    Let\u2019s consider the following example. We expose an HTTP handler that performs some tasks and returns a response. But just before returning the response, we also want to send it to a Kafka topic. We don\u2019t want to penalize the HTTP consumer latency-wise, so we want the publish action to be handled asynchronously within a new goroutine. We assume that we have at our disposal a publish function that accepts a context so the action of publishing a message can be interrupted if the context is canceled, for example. Here is a possible implementation:

    func handler(w http.ResponseWriter, r *http.Request) {\n    response, err := doSomeTask(r.Context(), r)\n    if err != nil {\n        http.Error(w, err.Error(), http.StatusInternalServerError)\n    return\n    }\n    go func() {\n        err := publish(r.Context(), response)\n        // Do something with err\n    }()\n    writeResponse(response)\n}\n

    What\u2019s wrong with this piece of code? We have to know that the context attached to an HTTP request can cancel in different conditions:

    • When the client\u2019s connection closes
    • In the case of an HTTP/2 request, when the request is canceled
    • When the response has been written back to the client

    In the first two cases, we probably handle things correctly. For example, if we get a response from doSomeTask but the client has closed the connection, it\u2019s probably OK to call publish with a context already canceled so the message isn\u2019t published. But what about the last case?

    When the response has been written to the client, the context associated with the request will be canceled. Therefore, we are facing a race condition:

    • If the response is written after the Kafka publication, we both return a response and publish a message successfully
    • However, if the response is written before or during the Kafka publication, the message shouldn\u2019t be published.

    In the latter case, calling publish will return an error because we returned the HTTP response quickly.

    Note

    From Go 1.21, there is a way to create a new context without cancel. context.WithoutCancel returns a copy of parent that is not canceled when parent is canceled.

    In summary, propagating a context should be done cautiously.

    Source code

    "},{"location":"#starting-a-goroutine-without-knowing-when-to-stop-it-62","title":"Starting a goroutine without knowing when to stop it (#62)","text":"TL;DR

    Avoiding leaks means being mindful that whenever a goroutine is started, you should have a plan to stop it eventually.

    Goroutines are easy and cheap to start\u2014so easy and cheap that we may not necessarily have a plan for when to stop a new goroutine, which can lead to leaks. Not knowing when to stop a goroutine is a design issue and a common concurrency mistake in Go.

    Let\u2019s discuss a concrete example. We will design an application that needs to watch some external configuration (for example, using a database connection). Here\u2019s a first implementation:

    func main() {\n    newWatcher()\n    // Run the application\n}\n\ntype watcher struct { /* Some resources */ }\n\nfunc newWatcher() {\n    w := watcher{}\n    go w.watch() // Creates a goroutine that watches some external configuration\n}\n

    The problem with this code is that when the main goroutine exits (perhaps because of an OS signal or because it has a finite workload), the application is stopped. Hence, the resources created by watcher aren\u2019t closed gracefully. How can we prevent this from happening?

    One option could be to pass to newWatcher a context that will be canceled when main returns:

    func main() {\n    ctx, cancel := context.WithCancel(context.Background())\n    defer cancel()\n    newWatcher(ctx)\n    // Run the application\n}\n\nfunc newWatcher(ctx context.Context) {\n    w := watcher{}\n    go w.watch(ctx)\n}\n

    We propagate the context created to the watch method. When the context is canceled, the watcher struct should close its resources. However, can we guarantee that watch will have time to do so? Absolutely not\u2014and that\u2019s a design flaw.

    The problem is that we used signaling to convey that a goroutine had to be stopped. We didn\u2019t block the parent goroutine until the resources had been closed. Let\u2019s make sure we do:

    func main() {\n    w := newWatcher()\n    defer w.close()\n    // Run the application\n}\n\nfunc newWatcher() watcher {\n    w := watcher{}\n    go w.watch()\n    return w\n}\n\nfunc (w watcher) close() {\n    // Close the resources\n}\n

    Instead of signaling watcher that it\u2019s time to close its resources, we now call this close method, using defer to guarantee that the resources are closed before the application exits.

    In summary, let\u2019s be mindful that a goroutine is a resource like any other that must eventually be closed to free memory or other resources. Starting a goroutine without knowing when to stop it is a design issue. Whenever a goroutine is started, we should have a clear plan about when it will stop. Last but not least, if a goroutine creates resources and its lifetime is bound to the lifetime of the application, it\u2019s probably safer to wait for this goroutine to complete before exiting the application. This way, we can ensure that the resources can be freed.

    Source code

    "},{"location":"#not-being-careful-with-goroutines-and-loop-variables-63","title":"Not being careful with goroutines and loop variables (#63)","text":"Warning

    This mistake isn't relevant anymore from Go 1.22 (source).

    "},{"location":"#expecting-a-deterministic-behavior-using-select-and-channels-64","title":"Expecting a deterministic behavior using select and channels (#64)","text":"TL;DR

    Understanding that select with multiple channels chooses the case randomly if multiple options are possible prevents making wrong assumptions that can lead to subtle concurrency bugs.

    One common mistake made by Go developers while working with channels is to make wrong assumptions about how select behaves with multiple channels.

    For example, let's consider the following case (disconnectCh is a unbuffered channel):

    go func() {\n  for i := 0; i < 10; i++ {\n      messageCh <- i\n    }\n    disconnectCh <- struct{}{}\n}()\n\nfor {\n    select {\n    case v := <-messageCh:\n        fmt.Println(v)\n    case <-disconnectCh:\n        fmt.Println(\"disconnection, return\")\n        return\n    }\n}\n

    If we run this example multiple times, the result will be random:

    0\n1\n2\ndisconnection, return\n\n0\ndisconnection, return\n

    Instead of consuming the 10 messages, we only received a few of them. What\u2019s the reason? It lies in the specification of the select statement with multiple channels (https:// go.dev/ref/spec):

    Quote

    If one or more of the communications can proceed, a single one that can proceed is chosen via a uniform pseudo-random selection.

    Unlike a switch statement, where the first case with a match wins, the select statement selects randomly if multiple options are possible.

    This behavior might look odd at first, but there\u2019s a good reason for it: to prevent possible starvation. Suppose the first possible communication chosen is based on the source order. In that case, we may fall into a situation where, for example, we only receive from one channel because of a fast sender. To prevent this, the language designers decided to use a random selection.

    When using select with multiple channels, we must remember that if multiple options are possible, the first case in the source order does not automatically win. Instead, Go selects randomly, so there\u2019s no guarantee about which option will be chosen. To overcome this behavior, in the case of a single producer goroutine, we can use either unbuffered channels or a single channel.

    Source code

    "},{"location":"#not-using-notification-channels-65","title":"Not using notification channels (#65)","text":"TL;DR

    Send notifications using a chan struct{} type.

    Channels are a mechanism for communicating across goroutines via signaling. A signal can be either with or without data.

    Let\u2019s look at a concrete example. We will create a channel that will notify us whenever a certain disconnection occurs. One idea is to handle it as a chan bool:

    disconnectCh := make(chan bool)\n

    Now, let\u2019s say we interact with an API that provides us with such a channel. Because it\u2019s a channel of Booleans, we can receive either true or false messages. It\u2019s probably clear what true conveys. But what does false mean? Does it mean we haven\u2019t been disconnected? And in this case, how frequently will we receive such a signal? Does it mean we have reconnected? Should we even expect to receive false? Perhaps we should only expect to receive true messages.

    If that\u2019s the case, meaning we don\u2019t need a specific value to convey some information, we need a channel without data. The idiomatic way to handle it is a channel of empty structs: chan struct{}.

    "},{"location":"#not-using-nil-channels-66","title":"Not using nil channels (#66)","text":"TL;DR

    Using nil channels should be part of your concurrency toolset because it allows you to remove cases from select statements, for example.

    What should this code do?

    var ch chan int\n<-ch\n

    ch is a chan int type. The zero value of a channel being nil, ch is nil. The goroutine won\u2019t panic; however, it will block forever.

    The principle is the same if we send a message to a nil channel. This goroutine blocks forever:

    var ch chan int\nch <- 0\n

    Then what\u2019s the purpose of Go allowing messages to be received from or sent to a nil channel? For example, we can use nil channels to implement an idiomatic way to merge two channels:

    func merge(ch1, ch2 <-chan int) <-chan int {\n    ch := make(chan int, 1)\n\n    go func() {\n        for ch1 != nil || ch2 != nil { // Continue if at least one channel isn\u2019t nil\n            select {\n            case v, open := <-ch1:\n                if !open {\n                    ch1 = nil // Assign ch1 to a nil channel once closed\n                    break\n                }\n                ch <- v\n            case v, open := <-ch2:\n                if !open {\n                    ch2 = nil // Assigns ch2 to a nil channel once closed\n                    break\n                }\n                ch <- v\n            }\n        }\n        close(ch)\n    }()\n\n    return ch\n}\n

    This elegant solution relies on nil channels to somehow remove one case from the select statement.

    Let\u2019s keep this idea in mind: nil channels are useful in some conditions and should be part of the Go developer\u2019s toolset when dealing with concurrent code.

    Source code

    "},{"location":"#being-puzzled-about-channel-size-67","title":"Being puzzled about channel size (#67)","text":"TL;DR

    Carefully decide on the right channel type to use, given a problem. Only unbuffered channels provide strong synchronization guarantees.

    You should have a good reason to specify a channel size other than one for buffered channels.

    "},{"location":"#forgetting-about-possible-side-effects-with-string-formatting-etcd-data-race-example-and-deadlock-68","title":"Forgetting about possible side effects with string formatting (etcd data race example and deadlock) (#68)","text":"TL;DR

    Being aware that string formatting may lead to calling existing functions means watching out for possible deadlocks and other data races.

    Source code

    "},{"location":"#creating-data-races-with-append-69","title":"Creating data races with append (#69)","text":"TL;DR

    Calling append isn\u2019t always data-race-free; hence, it shouldn\u2019t be used concurrently on a shared slice.

    Source code

    "},{"location":"#using-mutexes-inaccurately-with-slices-and-maps-70","title":"Using mutexes inaccurately with slices and maps (#70)","text":"TL;DR

    Remembering that slices and maps are pointers can prevent common data races.

    Source code

    "},{"location":"#misusing-syncwaitgroup-71","title":"Misusing sync.WaitGroup (#71)","text":"TL;DR

    To accurately use sync.WaitGroup, call the Add method before spinning up goroutines.

    Source code

    "},{"location":"#forgetting-about-synccond-72","title":"Forgetting about sync.Cond (#72)","text":"TL;DR

    You can send repeated notifications to multiple goroutines with sync.Cond.

    Source code

    "},{"location":"#not-using-errgroup-73","title":"Not using errgroup (#73)","text":"TL;DR

    You can synchronize a group of goroutines and handle errors and contexts with the errgroup package.

    Source code

    "},{"location":"#copying-a-sync-type-74","title":"Copying a sync type (#74)","text":"TL;DR

    sync types shouldn\u2019t be copied.

    Source code

    "},{"location":"#standard-library","title":"Standard Library","text":""},{"location":"#providing-a-wrong-time-duration-75","title":"Providing a wrong time duration (#75)","text":"TL;DR

    Remain cautious with functions accepting a time.Duration. Even though passing an integer is allowed, strive to use the time API to prevent any possible confusion.

    Many common functions in the standard library accept a time.Duration, which is an alias for the int64 type. However, one time.Duration unit represents one nanosecond, instead of one millisecond, as commonly seen in other programming languages. As a result, passing numeric types instead of using the time.Duration API can lead to unexpected behavior.

    A developer with experience in other languages might assume that the following code creates a new time.Ticker that delivers ticks every second, given the value 1000:

    ticker := time.NewTicker(1000)\nfor {\n    select {\n    case <-ticker.C:\n        // Do something\n    }\n}\n

    However, because 1,000 time.Duration units = 1,000 nanoseconds, ticks are delivered every 1,000 nanoseconds = 1 microsecond, not every second as assumed.

    We should always use the time.Duration API to avoid confusion and unexpected behavior:

    ticker = time.NewTicker(time.Microsecond)\n// Or\nticker = time.NewTicker(1000 * time.Nanosecond)\n

    Source code

    "},{"location":"#timeafter-and-memory-leaks-76","title":"time.After and memory leaks (#76)","text":"TL;DR

    Avoiding calls to time.After in repeated functions (such as loops or HTTP handlers) can avoid peak memory consumption. The resources created by time.After are released only when the timer expires.

    Developers often use time.After in loops or HTTP handlers repeatedly to implement the timing function. But it can lead to unintended peak memory consumption due to the delayed release of resources, just like the following code:

    func consumer(ch <-chan Event) {\n    for {\n        select {\n        case event := <-ch:\n            handle(event)\n        case <-time.After(time.Hour):\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    The source code of the function time.After is as follows:

    func After(d Duration) <-chan Time {\n    return NewTimer(d).C\n}\n

    As we see, it returns receive-only channel.

    When time.After is used in a loop or repeated context, a new channel is created in each iteration. If these channels are not properly closed or if their associated timers are not stopped, they can accumulate and consume memory. The resources associated with each timer and channel are only released when the timer expires or the channel is closed.

    To avoid this happening, We can use context's timeout setting instead of time.After, like below:

    func consumer(ch <-chan Event) {\n    for {\n        ctx, cancel := context.WithTimeout(context.Background(), time.Hour)\n        select {\n        case event := <-ch:\n            cancel()\n            handle(event)\n        case <-ctx.Done():\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    We can also use time.NewTimer like so:

    func consumer(ch <-chan Event) {\n    timerDuration := 1 * time.Hour\n    timer := time.NewTimer(timerDuration)\n\n    for {\n        timer.Reset(timerDuration)\n        select {\n        case event := <-ch:\n            handle(event)\n        case <-timer.C:\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    Source code

    "},{"location":"#json-handling-common-mistakes-77","title":"JSON handling common mistakes (#77)","text":"
    • Unexpected behavior because of type embedding

    Be careful about using embedded fields in Go structs. Doing so may lead to sneaky bugs like an embedded time.Time field implementing the json.Marshaler interface, hence overriding the default marshaling behavior.

    Source code

    • JSON and the monotonic clock

    When comparing two time.Time structs, recall that time.Time contains both a wall clock and a monotonic clock, and the comparison using the == operator is done on both clocks.

    Source code

    • Map of any

    To avoid wrong assumptions when you provide a map while unmarshaling JSON data, remember that numerics are converted to float64 by default.

    Source code

    "},{"location":"#common-sql-mistakes-78","title":"Common SQL mistakes (#78)","text":"
    • Forgetting that sql.Open doesn't necessarily establish connections to a database

    Call the Ping or PingContext method if you need to test your configuration and make sure a database is reachable.

    Source code

    • Forgetting about connections pooling

    Configure the database connection parameters for production-grade applications.

    • Not using prepared statements

    Using SQL prepared statements makes queries more efficient and more secure.

    Source code

    • Mishandling null values

    Deal with nullable columns in tables using pointers or sql.NullXXX types.

    Source code

    • Not handling rows iteration errors

    Call the Err method of sql.Rows after row iterations to ensure that you haven\u2019t missed an error while preparing the next row.

    Source code

    "},{"location":"#not-closing-transient-resources-http-body-sqlrows-and-osfile-79","title":"Not closing transient resources (HTTP body, sql.Rows, and os.File) (#79)","text":"TL;DR

    Eventually close all structs implementing io.Closer to avoid possible leaks.

    Source code

    "},{"location":"#forgetting-the-return-statement-after-replying-to-an-http-request-80","title":"Forgetting the return statement after replying to an HTTP request (#80)","text":"TL;DR

    To avoid unexpected behaviors in HTTP handler implementations, make sure you don\u2019t miss the return statement if you want a handler to stop after http.Error.

    Consider the following HTTP handler that handles an error from foo using http.Error:

    func handler(w http.ResponseWriter, req *http.Request) {\n    err := foo(req)\n    if err != nil {\n        http.Error(w, \"foo\", http.StatusInternalServerError)\n    }\n\n    _, _ = w.Write([]byte(\"all good\"))\n    w.WriteHeader(http.StatusCreated)\n}\n

    If we run this code and err != nil, the HTTP response would be:

    foo\nall good\n

    The response contains both the error and success messages, and also the first HTTP status code, 500. There would also be a warning log indicating that we attempted to write the status code multiple times:

    2023/10/10 16:45:33 http: superfluous response.WriteHeader call from main.handler (main.go:20)\n

    The mistake in this code is that http.Error does not stop the handler's execution, which means the success message and status code get written in addition to the error. Beyond an incorrect response, failing to return after writing an error can lead to the unwanted execution of code and unexpected side-effects. The following code adds the return statement following the http.Error and exhibits the desired behavior when ran:

    func handler(w http.ResponseWriter, req *http.Request) {\n    err := foo(req)\n    if err != nil {\n        http.Error(w, \"foo\", http.StatusInternalServerError)\n        return // Adds the return statement\n    }\n\n    _, _ = w.Write([]byte(\"all good\"))\n    w.WriteHeader(http.StatusCreated)\n}\n

    Source code

    "},{"location":"#using-the-default-http-client-and-server-81","title":"Using the default HTTP client and server (#81)","text":"TL;DR

    For production-grade applications, don\u2019t use the default HTTP client and server implementations. These implementations are missing timeouts and behaviors that should be mandatory in production.

    Source code

    "},{"location":"#testing","title":"Testing","text":""},{"location":"#not-categorizing-tests-build-tags-environment-variables-and-short-mode-82","title":"Not categorizing tests (build tags, environment variables, and short mode) (#82)","text":"TL;DR

    Categorizing tests using build flags, environment variables, or short mode makes the testing process more efficient. You can create test categories using build flags or environment variables (for example, unit versus integration tests) and differentiate short from long-running tests to decide which kinds of tests to execute.

    Source code

    "},{"location":"#not-enabling-the-race-flag-83","title":"Not enabling the race flag (#83)","text":"TL;DR

    Enabling the -race flag is highly recommended when writing concurrent applications. Doing so allows you to catch potential data races that can lead to software bugs.

    "},{"location":"#not-using-test-execution-modes-parallel-and-shuffle-84","title":"Not using test execution modes (parallel and shuffle) (#84)","text":"TL;DR

    Using the -parallel flag is an efficient way to speed up tests, especially long-running ones. Use the -shuffle flag to help ensure that a test suite doesn\u2019t rely on wrong assumptions that could hide bugs.

    "},{"location":"#not-using-table-driven-tests-85","title":"Not using table-driven tests (#85)","text":"TL;DR

    Table-driven tests are an efficient way to group a set of similar tests to prevent code duplication and make future updates easier to handle.

    Source code

    "},{"location":"#sleeping-in-unit-tests-86","title":"Sleeping in unit tests (#86)","text":"TL;DR

    Avoid sleeps using synchronization to make a test less flaky and more robust. If synchronization isn\u2019t possible, consider a retry approach.

    Source code

    "},{"location":"#not-dealing-with-the-time-api-efficiently-87","title":"Not dealing with the time API efficiently (#87)","text":"TL;DR

    Understanding how to deal with functions using the time API is another way to make a test less flaky. You can use standard techniques such as handling the time as part of a hidden dependency or asking clients to provide it.

    Source code

    "},{"location":"#not-using-testing-utility-packages-httptest-and-iotest-88","title":"Not using testing utility packages (httptest and iotest) (#88)","text":"
    • The httptest package is helpful for dealing with HTTP applications. It provides a set of utilities to test both clients and servers.

    Source code

    • The iotest package helps write io.Reader and test that an application is tolerant to errors.

    Source code

    "},{"location":"#writing-inaccurate-benchmarks-89","title":"Writing inaccurate benchmarks (#89)","text":"TL;DR

    Regarding benchmarks:

    • Use time methods to preserve the accuracy of a benchmark.
    • Increasing benchtime or using tools such as benchstat can be helpful when dealing with micro-benchmarks.
    • Be careful with the results of a micro-benchmark if the system that ends up running the application is different from the one running the micro-benchmark.
    • Make sure the function under test leads to a side effect, to prevent compiler optimizations from fooling you about the benchmark results.
    • To prevent the observer effect, force a benchmark to re-create the data used by a CPU-bound function.

    Read the full section here.

    Source code

    "},{"location":"#not-exploring-all-the-go-testing-features-90","title":"Not exploring all the Go testing features (#90)","text":"
    • Code coverage

    Use code coverage with the -coverprofile flag to quickly see which part of the code needs more attention.

    • Testing from a different package

    Place unit tests in a different package to enforce writing tests that focus on an exposed behavior, not internals.

    Source code

    • Utility functions

    Handling errors using the *testing.T variable instead of the classic if err != nil makes code shorter and easier to read.

    Source code

    • Setup and teardown

    You can use setup and teardown functions to configure a complex environment, such as in the case of integration tests.

    Source code

    "},{"location":"#not-using-fuzzing-community-mistake","title":"Not using fuzzing (community mistake)","text":"TL;DR

    Fuzzing is an efficient strategy to detect random, unexpected, or malformed inputs to complex functions and methods in order to discover vulnerabilities, bugs, or even potential crashes.

    Credits: @jeromedoucet

    "},{"location":"#optimizations","title":"Optimizations","text":""},{"location":"#not-understanding-cpu-caches-91","title":"Not understanding CPU caches (#91)","text":"
    • CPU architecture

    Understanding how to use CPU caches is important for optimizing CPU-bound applications because the L1 cache is about 50 to 100 times faster than the main memory.

    • Cache line

    Being conscious of the cache line concept is critical to understanding how to organize data in data-intensive applications. A CPU doesn\u2019t fetch memory word by word; instead, it usually copies a memory block to a 64-byte cache line. To get the most out of each individual cache line, enforce spatial locality.

    Source code

    • Slice of structs vs. struct of slices

    Source code

    • Predictability

    Making code predictable for the CPU can also be an efficient way to optimize certain functions. For example, a unit or constant stride is predictable for the CPU, but a non-unit stride (for example, a linked list) isn\u2019t predictable.

    Source code

    • Cache placement policy

    To avoid a critical stride, hence utilizing only a tiny portion of the cache, be aware that caches are partitioned.

    "},{"location":"#writing-concurrent-code-that-leads-to-false-sharing-92","title":"Writing concurrent code that leads to false sharing (#92)","text":"TL;DR

    Knowing that lower levels of CPU caches aren\u2019t shared across all the cores helps avoid performance-degrading patterns such as false sharing while writing concurrency code. Sharing memory is an illusion.

    Read the full section here.

    Source code

    "},{"location":"#not-taking-into-account-instruction-level-parallelism-93","title":"Not taking into account instruction-level parallelism (#93)","text":"TL;DR

    Use instruction-level parallelism (ILP) to optimize specific parts of your code to allow a CPU to execute as many parallel instructions as possible. Identifying data hazards is one of the main steps.

    Source code

    "},{"location":"#not-being-aware-of-data-alignment-94","title":"Not being aware of data alignment (#94)","text":"TL;DR

    You can avoid common mistakes by remembering that in Go, basic types are aligned with their own size. For example, keep in mind that reorganizing the fields of a struct by size in descending order can lead to more compact structs (less memory allocation and potentially a better spatial locality).

    Source code

    "},{"location":"#not-understanding-stack-vs-heap-95","title":"Not understanding stack vs. heap (#95)","text":"TL;DR

    Understanding the fundamental differences between heap and stack should also be part of your core knowledge when optimizing a Go application. Stack allocations are almost free, whereas heap allocations are slower and rely on the GC to clean the memory.

    Source code

    "},{"location":"#not-knowing-how-to-reduce-allocations-api-change-compiler-optimizations-and-syncpool-96","title":"Not knowing how to reduce allocations (API change, compiler optimizations, and sync.Pool) (#96)","text":"TL;DR

    Reducing allocations is also an essential aspect of optimizing a Go application. This can be done in different ways, such as designing the API carefully to prevent sharing up, understanding the common Go compiler optimizations, and using sync.Pool.

    Source code

    "},{"location":"#not-relying-on-inlining-97","title":"Not relying on inlining (#97)","text":"TL;DR

    Use the fast-path inlining technique to efficiently reduce the amortized time to call a function.

    "},{"location":"#not-using-go-diagnostics-tooling-98","title":"Not using Go diagnostics tooling (#98)","text":"TL;DR

    Rely on profiling and the execution tracer to understand how an application performs and the parts to optimize.

    Read the full section here.

    "},{"location":"#not-understanding-how-the-gc-works-99","title":"Not understanding how the GC works (#99)","text":"TL;DR

    Understanding how to tune the GC can lead to multiple benefits such as handling sudden load increases more efficiently.

    "},{"location":"#not-understanding-the-impacts-of-running-go-in-docker-and-kubernetes-100","title":"Not understanding the impacts of running Go in Docker and Kubernetes (#100)","text":"TL;DR

    To help avoid CPU throttling when deployed in Docker and Kubernetes, keep in mind that Go isn\u2019t CFS-aware.

    The GOMAXPROCS variable defines the limit of OS threads in charge of executing user-level code simultaneously. By default, it's set to the number of OS-apparent logical CPU cores.

    When running some Go code inside Docker and Kubernetes, we must know that Go isn't CFS-aware (github.com/golang/go/issues/33803). Therefore, GOMAXPROCS isn't automatically set to the value of spec.containers.resources.limits.cpu (see Kubernetes Resource Management for Pods and Containers); instead, it's set to the number of logical cores on the host machine. The main implication is that it can lead to an increased tail latency in some specific situations.

    One solution is to rely on uber-go/automaxprocs that automatically set GOMAXPROCS to match the Linux container CPU quota.

    "},{"location":"20-slice/","title":"Not understanding slice length and capacity","text":"

    It\u2019s pretty common for Go developers to mix slice length and capacity or not understand them thoroughly. Assimilating these two concepts is essential for efficiently handling core operations such as slice initialization and adding elements with append, copying, or slicing. This misunderstanding can lead to using slices suboptimally or even to memory leaks.

    In Go, a slice is backed by an array. That means the slice\u2019s data is stored contiguously in an array data structure. A slice also handles the logic of adding an element if the backing array is full or shrinking the backing array if it\u2019s almost empty.

    Internally, a slice holds a pointer to the backing array plus a length and a capacity. The length is the number of elements the slice contains, whereas the capacity is the number of elements in the backing array, counting from the first element in the slice. Let\u2019s go through a few examples to make things clearer. First, let\u2019s initialize a slice with a given length and capacity:

    s := make([]int, 3, 6) // Three-length, six-capacity slice\n

    The first argument, representing the length, is mandatory. However, the second argument representing the capacity is optional. Figure 1 shows the result of this code in memory.

    Figure 1: A three-length, six-capacity slice.

    In this case, make creates an array of six elements (the capacity). But because the length was set to 3, Go initializes only the first three elements. Also, because the slice is an []int type, the first three elements are initialized to the zeroed value of an int: 0. The grayed elements are allocated but not yet used.

    If we print this slice, we get the elements within the range of the length, [0 0 0]. If we set s[1] to 1, the second element of the slice updates without impacting its length or capacity. Figure 2 illustrates this.

    Figure 2: Updating the slice\u2019s second element: s[1] = 1.

    However, accessing an element outside the length range is forbidden, even though it\u2019s already allocated in memory. For example, s[4] = 0 would lead to the following panic:

    panic: runtime error: index out of range [4] with length 3\n

    How can we use the remaining space of the slice? By using the append built-in function:

    s = append(s, 2)\n

    This code appends to the existing s slice a new element. It uses the first grayed element (which was allocated but not yet used) to store element 2, as figure 3 shows.

    Figure 3: Appending an element to s.

    The length of the slice is updated from 3 to 4 because the slice now contains four elements. Now, what happens if we add three more elements so that the backing array isn\u2019t large enough?

    s = append(s, 3, 4, 5)\nfmt.Println(s)\n

    If we run this code, we see that the slice was able to cope with our request:

    [0 1 0 2 3 4 5]\n

    Because an array is a fixed-size structure, it can store the new elements until element 4. When we want to insert element 5, the array is already full: Go internally creates another array by doubling the capacity, copying all the elements, and then inserting element 5. Figure 4 shows this process.

    Figure 4: Because the initial backing array is full, Go creates another array and copies all the elements.

    The slice now references the new backing array. What will happen to the previous backing array? If it\u2019s no longer referenced, it\u2019s eventually freed by the garbage collector (GC) if allocated on the heap. (We discuss heap memory in mistake #95, \u201cNot understanding stack vs. heap,\u201d and we look at how the GC works in mistake #99, \u201cNot understanding how the GC works.\u201d)

    What happens with slicing? Slicing is an operation done on an array or a slice, providing a half-open range; the first index is included, whereas the second is excluded. The following example shows the impact, and figure 5 displays the result in memory:

    s1 := make([]int, 3, 6) // Three-length, six-capacity slice\ns2 := s1[1:3] // Slicing from indices 1 to 3\n

    Figure 5: The slices s1 and s2 reference the same backing array with different lengths and capacities.

    First, s1 is created as a three-length, six-capacity slice. When s2 is created by slicing s1, both slices reference the same backing array. However, s2 starts from a different index, 1. Therefore, its length and capacity (a two-length, five-capacity slice) differ from s1. If we update s1[1] or s2[0], the change is made to the same array, hence, visible in both slices, as figure 6 shows.

    Figure 6: Because s1 and s2 are backed by the same array, updating a common element makes the change visible in both slices.

    Now, what happens if we append an element to s2? Does the following code change s1 as well?

    s2 = append(s2, 2)\n

    The shared backing array is modified, but only the length of s2 changes. Figure 7 shows the result of appending an element to s2.

    Figure 7: Appending an element to s2.

    s1 remains a three-length, six-capacity slice. Therefore, if we print s1 and s2, the added element is only visible for s2:

    s1=[0 1 0], s2=[1 0 2]\n

    It\u2019s important to understand this behavior so that we don\u2019t make wrong assumptions while using append.

    Note

    In these examples, the backing array is internal and not available directly to the Go developer. The only exception is when a slice is created from slicing an existing array.

    One last thing to note: what if we keep appending elements to s2 until the backing array is full? What will the state be, memory-wise? Let\u2019s add three more elements so that the backing array will not have enough capacity:

    s2 = append(s2, 3)\ns2 = append(s2, 4) // At this stage, the backing is already full\ns2 = append(s2, 5)\n

    This code leads to creating another backing array. Figure 8 displays the results in memory.

    Figure 8: Appending elements to s2 until the backing array is full.

    s1 and s2 now reference two different arrays. As s1 is still a three-length, six-capacity slice, it still has some available buffer, so it keeps referencing the initial array. Also, the new backing array was made by copying the initial one from the first index of s2. That\u2019s why the new array starts with element 1, not 0.

    To summarize, the slice length is the number of available elements in the slice, whereas the slice capacity is the number of elements in the backing array. Adding an element to a full slice (length == capacity) leads to creating a new backing array with a new capacity, copying all the elements from the previous array, and updating the slice pointer to the new array.

    "},{"location":"28-maps-memory-leaks/","title":"Maps and memory leaks","text":"

    When working with maps in Go, we need to understand some important characteristics of how a map grows and shrinks. Let\u2019s delve into this to prevent issues that can cause memory leaks.

    First, to view a concrete example of this problem, let\u2019s design a scenario where we will work with the following map:

    m := make(map[int][128]byte)\n

    Each value of m is an array of 128 bytes. We will do the following:

    1. Allocate an empty map.
    2. Add 1 million elements.
    3. Remove all the elements, and run a Garbage Collection (GC).

    After each step, we want to print the size of the heap (using a printAlloc utility function). This shows us how this example behaves memory-wise:

    func main() {\n    n := 1_000_000\n    m := make(map[int][128]byte)\n    printAlloc()\n\n    for i := 0; i < n; i++ { // Adds 1 million elements\n        m[i] = [128]byte{}\n    }\n    printAlloc()\n\n    for i := 0; i < n; i++ { // Deletes 1 million elements\n        delete(m, i)\n    }\n\n    runtime.GC() // Triggers a manual GC\n    printAlloc()\n    runtime.KeepAlive(m) // Keeps a reference to m so that the map isn\u2019t collected\n}\n\nfunc printAlloc() {\n    var m runtime.MemStats\n    runtime.ReadMemStats(&m)\n    fmt.Printf(\"%d MB\\n\", m.Alloc/(1024*1024))\n}\n

    We allocate an empty map, add 1 million elements, remove 1 million elements, and then run a GC. We also make sure to keep a reference to the map using runtime.KeepAlive so that the map isn\u2019t collected as well. Let\u2019s run this example:

    0 MB   <-- After m is allocated\n461 MB <-- After we add 1 million elements\n293 MB <-- After we remove 1 million elements\n

    What can we observe? At first, the heap size is minimal. Then it grows significantly after having added 1 million elements to the map. But if we expected the heap size to decrease after removing all the elements, this isn\u2019t how maps work in Go. In the end, even though the GC has collected all the elements, the heap size is still 293 MB. So the memory shrunk, but not as we might have expected. What\u2019s the rationale? We need to delve into how a map works in Go.

    A map provides an unordered collection of key-value pairs in which all the keys are distinct. In Go, a map is based on the hash table data structure: an array where each element is a pointer to a bucket of key-value pairs, as shown in figure 1.

    Figure 1: A hash table example with a focus on bucket 0.

    Each bucket is a fixed-size array of eight elements. In the case of an insertion into a bucket that is already full (a bucket overflow), Go creates another bucket of eight elements and links the previous one to it. Figure 2 shows an example:

    Figure 2: In case of a bucket overflow, Go allocates a new bucket and links the previous bucket to it.

    Under the hood, a Go map is a pointer to a runtime.hmap struct. This struct contains multiple fields, including a B field, giving the number of buckets in the map:

    type hmap struct {\n    B uint8 // log_2 of # of buckets\n            // (can hold up to loadFactor * 2^B items)\n    // ...\n}\n

    After adding 1 million elements, the value of B equals 18, which means 2\u00b9\u2078 = 262,144 buckets. When we remove 1 million elements, what\u2019s the value of B? Still 18. Hence, the map still contains the same number of buckets.

    The reason is that the number of buckets in a map cannot shrink. Therefore, removing elements from a map doesn\u2019t impact the number of existing buckets; it just zeroes the slots in the buckets. A map can only grow and have more buckets; it never shrinks.

    In the previous example, we went from 461 MB to 293 MB because the elements were collected, but running the GC didn\u2019t impact the map itself. Even the number of extra buckets (the buckets created because of overflows) remains the same.

    Let\u2019s take a step back and discuss when the fact that a map cannot shrink can be a problem. Imagine building a cache using a map[int][128]byte. This map holds per customer ID (the int), a sequence of 128 bytes. Now, suppose we want to save the last 1,000 customers. The map size will remain constant, so we shouldn\u2019t worry about the fact that a map cannot shrink.

    However, let\u2019s say we want to store one hour of data. Meanwhile, our company has decided to have a big promotion for Black Friday: in one hour, we may have millions of customers connected to our system. But a few days after Black Friday, our map will contain the same number of buckets as during the peak time. This explains why we can experience high memory consumption that doesn\u2019t significantly decrease in such a scenario.

    What are the solutions if we don\u2019t want to manually restart our service to clean the amount of memory consumed by the map? One solution could be to re-create a copy of the current map at a regular pace. For example, every hour, we can build a new map, copy all the elements, and release the previous one. The main drawback of this option is that following the copy and until the next garbage collection, we may consume twice the current memory for a short period.

    Another solution would be to change the map type to store an array pointer: map[int]*[128]byte. It doesn\u2019t solve the fact that we will have a significant number of buckets; however, each bucket entry will reserve the size of a pointer for the value instead of 128 bytes (8 bytes on 64-bit systems and 4 bytes on 32-bit systems).

    Coming back to the original scenario, let\u2019s compare the memory consumption for each map type following each step. The following table shows the comparison.

    Step map[int][128]byte map[int]*[128]byte Allocate an empty map 0 MB 0 MB Add 1 million elements 461 MB 182 MB Remove all the elements and run a GC 293 MB 38 MB Note

    If a key or a value is over 128 bytes, Go won\u2019t store it directly in the map bucket. Instead, Go stores a pointer to reference the key or the value.

    As we have seen, adding n elements to a map and then deleting all the elements means keeping the same number of buckets in memory. So, we must remember that because a Go map can only grow in size, so does its memory consumption. There is no automated strategy to shrink it. If this leads to high memory consumption, we can try different options such as forcing Go to re-create the map or using pointers to check if it can be optimized.

    "},{"location":"56-concurrency-faster/","title":"Thinking concurrency is always faster","text":"

    A misconception among many developers is believing that a concurrent solution is always faster than a sequential one. This couldn\u2019t be more wrong. The overall performance of a solution depends on many factors, such as the efficiency of our code structure (concurrency), which parts can be tackled in parallel, and the level of contention among the computation units. This post reminds us about some fundamental knowledge of concurrency in Go; then we will see a concrete example where a concurrent solution isn\u2019t necessarily faster.

    "},{"location":"56-concurrency-faster/#go-scheduling","title":"Go Scheduling","text":"

    A thread is the smallest unit of processing that an OS can perform. If a process wants to execute multiple actions simultaneously, it spins up multiple threads. These threads can be:

    • Concurrent \u2014 Two or more threads can start, run, and complete in overlapping time periods.
    • Parallel \u2014 The same task can be executed multiple times at once.

    The OS is responsible for scheduling the thread\u2019s processes optimally so that:

    • All the threads can consume CPU cycles without being starved for too much time.
    • The workload is distributed as evenly as possible among the different CPU cores.
    Note

    The word thread can also have a different meaning at a CPU level. Each physical core can be composed of multiple logical cores (the concept of hyper-threading), and a logical core is also called a thread. In this post, when we use the word thread, we mean the unit of processing, not a logical core.

    A CPU core executes different threads. When it switches from one thread to another, it executes an operation called context switching. The active thread consuming CPU cycles was in an executing state and moves to a runnable state, meaning it\u2019s ready to be executed pending an available core. Context switching is considered an expensive operation because the OS needs to save the current execution state of a thread before the switch (such as the current register values).

    As Go developers, we can\u2019t create threads directly, but we can create goroutines, which can be thought of as application-level threads. However, whereas an OS thread is context-switched on and off a CPU core by the OS, a goroutine is context-switched on and off an OS thread by the Go runtime. Also, compared to an OS thread, a goroutine has a smaller memory footprint: 2 KB for goroutines from Go 1.4. An OS thread depends on the OS, but, for example, on Linux/x86\u201332, the default size is 2 MB (see https://man7.org/linux/man-pages/man3/pthread_create.3.html). Having a smaller size makes context switching faster.

    Note

    Context switching a goroutine versus a thread is about 80% to 90% faster, depending on the architecture.

    Let\u2019s now discuss how the Go scheduler works to overview how goroutines are handled. Internally, the Go scheduler uses the following terminology (see proc.go):

    • G \u2014 Goroutine
    • M \u2014 OS thread (stands for machine)
    • P \u2014 CPU core (stands for processor)

    Each OS thread (M) is assigned to a CPU core (P) by the OS scheduler. Then, each goroutine (G) runs on an M. The GOMAXPROCS variable defines the limit of Ms in charge of executing user-level code simultaneously. But if a thread is blocked in a system call (for example, I/O), the scheduler can spin up more Ms. As of Go 1.5, GOMAXPROCS is by default equal to the number of available CPU cores.

    A goroutine has a simpler lifecycle than an OS thread. It can be doing one of the following:

    • Executing \u2014 The goroutine is scheduled on an M and executing its instructions.
    • Runnable \u2014 The goroutine is waiting to be in an executing state.
    • Waiting \u2014 The goroutine is stopped and pending something completing, such as a system call or a synchronization operation (such as acquiring a mutex).

    There\u2019s one last stage to understand about the implementation of Go scheduling: when a goroutine is created but cannot be executed yet; for example, all the other Ms are already executing a G. In this scenario, what will the Go runtime do about it? The answer is queuing. The Go runtime handles two kinds of queues: one local queue per P and a global queue shared among all the Ps.

    Figure 1 shows a given scheduling situation on a four-core machine with GOMAXPROCS equal to 4. The parts are the logical cores (Ps), goroutines (Gs), OS threads (Ms), local queues, and global queue:

    Figure 1: An example of the current state of a Go application executed on a four-core machine. Goroutines that aren\u2019t in an executing state are either runnable (pending being executed) or waiting (pending a blocking operation)

    First, we can see five Ms, whereas GOMAXPROCS is set to 4. But as we mentioned, if needed, the Go runtime can create more OS threads than the GOMAXPROCS value.

    P0, P1, and P3 are currently busy executing Go runtime threads. But P2 is presently idle as M3 is switched off P2, and there\u2019s no goroutine to be executed. This isn\u2019t a good situation because six runnable goroutines are pending being executed, some in the global queue and some in other local queues. How will the Go runtime handle this situation? Here\u2019s the scheduling implementation in pseudocode (see proc.go):

    runtime.schedule() {\n    // Only 1/61 of the time, check the global runnable queue for a G.\n    // If not found, check the local queue.\n    // If not found,\n    //     Try to steal from other Ps.\n    //     If not, check the global runnable queue.\n    //     If not found, poll network.\n}\n

    Every sixty-first execution, the Go scheduler will check whether goroutines from the global queue are available. If not, it will check its local queue. Meanwhile, if both the global and local queues are empty, the Go scheduler can pick up goroutines from other local queues. This principle in scheduling is called work stealing, and it allows an underutilized processor to actively look for another processor\u2019s goroutines and steal some.

    One last important thing to mention: prior to Go 1.14, the scheduler was cooperative, which meant a goroutine could be context-switched off a thread only in specific blocking cases (for example, channel send or receive, I/O, waiting to acquire a mutex). Since Go 1.14, the Go scheduler is now preemptive: when a goroutine is running for a specific amount of time (10 ms), it will be marked preemptible and can be context-switched off to be replaced by another goroutine. This allows a long-running job to be forced to share CPU time.

    Now that we understand the fundamentals of scheduling in Go, let\u2019s look at a concrete example: implementing a merge sort in a parallel manner.

    "},{"location":"56-concurrency-faster/#parallel-merge-sort","title":"Parallel Merge Sort","text":"

    First, let\u2019s briefly review how the merge sort algorithm works. Then we will implement a parallel version. Note that the objective isn\u2019t to implement the most efficient version but to support a concrete example showing why concurrency isn\u2019t always faster.

    The merge sort algorithm works by breaking a list repeatedly into two sublists until each sublist consists of a single element and then merging these sublists so that the result is a sorted list (see figure 2). Each split operation splits the list into two sublists, whereas the merge operation merges two sublists into a sorted list.

    Figure 2: Applying the merge sort algorithm repeatedly breaks each list into two sublists. Then the algorithm uses a merge operation such that the resulting list is sorted

    Here is the sequential implementation of this algorithm. We don\u2019t include all of the code as it\u2019s not the main point of this section:

    func sequentialMergesort(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    middle := len(s) / 2\n    sequentialMergesort(s[:middle]) // First half\n    sequentialMergesort(s[middle:]) // Second half\n    merge(s, middle) // Merges the two halves\n}\n\nfunc merge(s []int, middle int) {\n    // ...\n}\n

    This algorithm has a structure that makes it open to concurrency. Indeed, as each sequentialMergesort operation works on an independent set of data that doesn\u2019t need to be fully copied (here, an independent view of the underlying array using slicing), we could distribute this workload among the CPU cores by spinning up each sequentialMergesort operation in a different goroutine. Let\u2019s write a first parallel implementation:

    func parallelMergesortV1(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    middle := len(s) / 2\n\n    var wg sync.WaitGroup\n    wg.Add(2)\n\n    go func() { // Spins up the first half of the work in a goroutine\n        defer wg.Done()\n        parallelMergesortV1(s[:middle])\n    }()\n\n    go func() { // Spins up the second half of the work in a goroutine\n        defer wg.Done()\n        parallelMergesortV1(s[middle:])\n    }()\n\n    wg.Wait()\n    merge(s, middle) // Merges the halves\n}\n

    In this version, each half of the workload is handled in a separate goroutine. The parent goroutine waits for both parts by using sync.WaitGroup. Hence, we call the Wait method before the merge operation.

    We now have a parallel version of the merge sort algorithm. Therefore, if we run a benchmark to compare this version against the sequential one, the parallel version should be faster, correct? Let\u2019s run it on a four-core machine with 10,000 elements:

    Benchmark_sequentialMergesort-4       2278993555 ns/op\nBenchmark_parallelMergesortV1-4      17525998709 ns/op\n

    Surprisingly, the parallel version is almost an order of magnitude slower. How can we explain this result? How is it possible that a parallel version that distributes a workload across four cores is slower than a sequential version running on a single machine? Let\u2019s analyze the problem.

    If we have a slice of, say, 1,024 elements, the parent goroutine will spin up two goroutines, each in charge of handling a half consisting of 512 elements. Each of these goroutines will spin up two new goroutines in charge of handling 256 elements, then 128, and so on, until we spin up a goroutine to compute a single element.

    If the workload that we want to parallelize is too small, meaning we\u2019re going to compute it too fast, the benefit of distributing a job across cores is destroyed: the time it takes to create a goroutine and have the scheduler execute it is much too high compared to directly merging a tiny number of items in the current goroutine. Although goroutines are lightweight and faster to start than threads, we can still face cases where a workload is too small.

    So what can we conclude from this result? Does it mean the merge sort algorithm cannot be parallelized? Wait, not so fast.

    Let\u2019s try another approach. Because merging a tiny number of elements within a new goroutine isn\u2019t efficient, let\u2019s define a threshold. This threshold will represent how many elements a half should contain in order to be handled in a parallel manner. If the number of elements in the half is fewer than this value, we will handle it sequentially. Here\u2019s a new version:

    const max = 2048 // Defines the threshold\n\nfunc parallelMergesortV2(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    if len(s) <= max {\n        sequentialMergesort(s) // Calls our initial sequential version\n    } else { // If bigger than the threshold, keeps the parallel version\n        middle := len(s) / 2\n\n        var wg sync.WaitGroup\n        wg.Add(2)\n\n        go func() {\n            defer wg.Done()\n            parallelMergesortV2(s[:middle])\n        }()\n\n        go func() {\n            defer wg.Done()\n            parallelMergesortV2(s[middle:])\n        }()\n\n        wg.Wait()\n        merge(s, middle)\n    }\n}\n

    If the number of elements in the s slice is smaller than max, we call the sequential version. Otherwise, we keep calling our parallel implementation. Does this approach impact the result? Yes, it does:

    Benchmark_sequentialMergesort-4       2278993555 ns/op\nBenchmark_parallelMergesortV1-4      17525998709 ns/op\nBenchmark_parallelMergesortV2-4       1313010260 ns/op\n

    Our v2 parallel implementation is more than 40% faster than the sequential one, thanks to this idea of defining a threshold to indicate when parallel should be more efficient than sequential.

    Note

    Why did I set the threshold to 2,048? Because it was the optimal value for this specific workload on my machine. In general, such magic values should be defined carefully with benchmarks (running on an execution environment similar to production). It\u2019s also pretty interesting to note that running the same algorithm in a programming language that doesn\u2019t implement the concept of goroutines has an impact on the value. For example, running the same example in Java using threads means an optimal value closer to 8,192. This tends to illustrate how goroutines are more efficient than threads.

    "},{"location":"56-concurrency-faster/#conclusion","title":"Conclusion","text":"

    We have seen throughout this post the fundamental concepts of scheduling in Go: the differences between a thread and a goroutine and how the Go runtime schedules goroutines. Meanwhile, using the parallel merge sort example, we illustrated that concurrency isn\u2019t always necessarily faster. As we have seen, spinning up goroutines to handle minimal workloads (merging only a small set of elements) demolishes the benefit we could get from parallelism.

    So, where should we go from here? We must keep in mind that concurrency isn\u2019t always faster and shouldn\u2019t be considered the default way to go for all problems. First, it makes things more complex. Also, modern CPUs have become incredibly efficient at executing sequential code and predictable code. For example, a superscalar processor can parallelize instruction execution over a single core with high efficiency.

    Does this mean we shouldn\u2019t use concurrency? Of course not. However, it\u2019s essential to keep these conclusions in mind. If we\u2019re not sure that a parallel version will be faster, the right approach may be to start with a simple sequential version and build from there using profiling (mistake #98, \u201cNot using Go diagnostics tooling\u201d) and benchmarks (mistake #89, \u201cWriting inaccurate benchmarks\u201d), for example. It can be the only way to ensure that a concurrent implementation is worth it.

    "},{"location":"89-benchmarks/","title":"Writing inaccurate benchmarks","text":"

    In general, we should never guess about performance. When writing optimizations, so many factors may come into play that even if we have a strong opinion about the results, it\u2019s rarely a bad idea to test them. However, writing benchmarks isn\u2019t straightforward. It can be pretty simple to write inaccurate benchmarks and make wrong assumptions based on them. The goal of this post is to examine four common and concrete traps leading to inaccuracy:

    • Not resetting or pausing the timer
    • Making wrong assumptions about micro-benchmarks
    • Not being careful about compiler optimizations
    • Being fooled by the observer effect
    "},{"location":"89-benchmarks/#general-concepts","title":"General concepts","text":"

    Before discussing these traps, let\u2019s briefly review how benchmarks work in Go. The skeleton of a benchmark is as follows:

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        foo()\n    }\n}\n

    The function name starts with the Benchmark prefix. The function under test (foo) is called within the for loop. b.N represents a variable number of iterations. When running a benchmark, Go tries to make it match the requested benchmark time. The benchmark time is set by default to 1 second and can be changed with the -benchtime flag. b.N starts at 1; if the benchmark completes in under 1 second, b.N is increased, and the benchmark runs again until b.N roughly matches benchtime:

    $ go test -bench=.\ncpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkFoo-4                73          16511228 ns/op\n

    Here, the benchmark took about 1 second, and foo was executed 73 times, for an average execution time of 16,511,228 nanoseconds. We can change the benchmark time using -benchtime:

    $ go test -bench=. -benchtime=2s\nBenchmarkFoo-4               150          15832169 ns/op\n

    foo was executed roughly twice more than during the previous benchmark.

    Next, let\u2019s look at some common traps.

    "},{"location":"89-benchmarks/#not-resetting-or-pausing-the-timer","title":"Not resetting or pausing the timer","text":"

    In some cases, we need to perform operations before the benchmark loop. These operations may take quite a while (for example, generating a large slice of data) and may significantly impact the benchmark results:

    func BenchmarkFoo(b *testing.B) {\n    expensiveSetup()\n    for i := 0; i < b.N; i++ {\n        functionUnderTest()\n    }\n}\n

    In this case, we can use the ResetTimer method before entering the loop:

    func BenchmarkFoo(b *testing.B) {\n    expensiveSetup()\n    b.ResetTimer() // Reset the benchmark timer\n    for i := 0; i < b.N; i++ {\n        functionUnderTest()\n    }\n}\n

    Calling ResetTimer zeroes the elapsed benchmark time and memory allocation counters since the beginning of the test. This way, an expensive setup can be discarded from the test results.

    What if we have to perform an expensive setup not just once but within each loop iteration?

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        expensiveSetup()\n        functionUnderTest()\n    }\n}\n

    We can\u2019t reset the timer, because that would be executed during each loop iteration. But we can stop and resume the benchmark timer, surrounding the call to expensiveSetup:

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        b.StopTimer() // Pause the benchmark timer\n        expensiveSetup()\n        b.StartTimer() // Resume the benchmark timer\n        functionUnderTest()\n    }\n}\n

    Here, we pause the benchmark timer to perform the expensive setup and then resume the timer.

    Note

    There\u2019s one catch to remember about this approach: if the function under test is too fast to execute compared to the setup function, the benchmark may take too long to complete. The reason is that it would take much longer than 1 second to reach benchtime. Calculating the benchmark time is based solely on the execution time of functionUnderTest. So, if we wait a significant time in each loop iteration, the benchmark will be much slower than 1 second. If we want to keep the benchmark, one possible mitigation is to decrease benchtime.

    We must be sure to use the timer methods to preserve the accuracy of a benchmark.

    "},{"location":"89-benchmarks/#making-wrong-assumptions-about-micro-benchmarks","title":"Making wrong assumptions about micro-benchmarks","text":"

    A micro-benchmark measures a tiny computation unit, and it can be extremely easy to make wrong assumptions about it. Let\u2019s say, for example, that we aren\u2019t sure whether to use atomic.StoreInt32 or atomic.StoreInt64 (assuming that the values we handle will always fit in 32 bits). We want to write a benchmark to compare both functions:

    func BenchmarkAtomicStoreInt32(b *testing.B) {\n    var v int32\n    for i := 0; i < b.N; i++ {\n        atomic.StoreInt32(&v, 1)\n    }\n}\n\nfunc BenchmarkAtomicStoreInt64(b *testing.B) {\n    var v int64\n    for i := 0; i < b.N; i++ {\n        atomic.StoreInt64(&v, 1)\n    }\n}\n

    If we run this benchmark, here\u2019s some example output:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkAtomicStoreInt32\nBenchmarkAtomicStoreInt32-4    197107742           5.682 ns/op\nBenchmarkAtomicStoreInt64\nBenchmarkAtomicStoreInt64-4    213917528           5.134 ns/op\n

    We could easily take this benchmark for granted and decide to use atomic.StoreInt64 because it appears to be faster. Now, for the sake of doing a fair benchmark, we reverse the order and test atomic.StoreInt64 first, followed by atomic.StoreInt32. Here is some example output:

    BenchmarkAtomicStoreInt64\nBenchmarkAtomicStoreInt64-4    224900722           5.434 ns/op\nBenchmarkAtomicStoreInt32\nBenchmarkAtomicStoreInt32-4    230253900           5.159 ns/op\n

    This time, atomic.StoreInt32 has better results. What happened?

    In the case of micro-benchmarks, many factors can impact the results, such as machine activity while running the benchmarks, power management, thermal scaling, and better cache alignment of a sequence of instructions. We must remember that many factors, even outside the scope of our Go project, can impact the results.

    Note

    We should make sure the machine executing the benchmark is idle. However, external processes may run in the background, which may affect benchmark results. For that reason, tools such as perflock can limit how much CPU a benchmark can consume. For example, we can run a benchmark with 70% of the total available CPU, giving 30% to the OS and other processes and reducing the impact of the machine activity factor on the results.

    One option is to increase the benchmark time using the -benchtime option. Similar to the law of large numbers in probability theory, if we run a benchmark a large number of times, it should tend to approach its expected value (assuming we omit the benefits of instructions caching and similar mechanics).

    Another option is to use external tools on top of the classic benchmark tooling. For instance, the benchstat tool, which is part of the golang.org/x repository, allows us to compute and compare statistics about benchmark executions.

    Let\u2019s run the benchmark 10 times using the -count option and pipe the output to a specific file:

    $ go test -bench=. -count=10 | tee stats.txt\ncpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkAtomicStoreInt32-4     234935682                5.124 ns/op\nBenchmarkAtomicStoreInt32-4     235307204                5.112 ns/op\n// ...\nBenchmarkAtomicStoreInt64-4     235548591                5.107 ns/op\nBenchmarkAtomicStoreInt64-4     235210292                5.090 ns/op\n// ...\n

    We can then run benchstat on this file:

    $ benchstat stats.txt\nname                time/op\nAtomicStoreInt32-4  5.10ns \u00b1 1%\nAtomicStoreInt64-4  5.10ns \u00b1 1%\n

    The results are the same: both functions take on average 5.10 nanoseconds to complete. We also see the percent variation between the executions of a given benchmark: \u00b1 1%. This metric tells us that both benchmarks are stable, giving us more confidence in the computed average results. Therefore, instead of concluding that atomic.StoreInt32 is faster or slower, we can conclude that its execution time is similar to that of atomic.StoreInt64 for the usage we tested (in a specific Go version on a particular machine).

    In general, we should be cautious about micro-benchmarks. Many factors can significantly impact the results and potentially lead to wrong assumptions. Increasing the benchmark time or repeating the benchmark executions and computing stats with tools such as benchstat can be an efficient way to limit external factors and get more accurate results, leading to better conclusions.

    Let\u2019s also highlight that we should be careful about using the results of a micro-benchmark executed on a given machine if another system ends up running the application. The production system may act quite differently from the one on which we ran the micro-benchmark.

    "},{"location":"89-benchmarks/#not-being-careful-about-compiler-optimizations","title":"Not being careful about compiler optimizations","text":"

    Another common mistake related to writing benchmarks is being fooled by compiler optimizations, which can also lead to wrong benchmark assumptions. In this section, we look at Go issue 14813 (https://github.com/golang/go/issues/14813, also discussed by Go project member Dave Cheney) with a population count function (a function that counts the number of bits set to 1):

    const m1 = 0x5555555555555555\nconst m2 = 0x3333333333333333\nconst m4 = 0x0f0f0f0f0f0f0f0f\nconst h01 = 0x0101010101010101\n\nfunc popcnt(x uint64) uint64 {\n    x -= (x >> 1) & m1\n    x = (x & m2) + ((x >> 2) & m2)\n    x = (x + (x >> 4)) & m4\n    return (x * h01) >> 56\n}\n

    This function takes and returns a uint64. To benchmark this function, we can write the following:

    func BenchmarkPopcnt1(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        popcnt(uint64(i))\n    }\n}\n

    However, if we execute this benchmark, we get a surprisingly low result:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkPopcnt1-4      1000000000               0.2858 ns/op\n

    A duration of 0.28 nanoseconds is roughly one clock cycle, so this number is unreasonably low. The problem is that the developer wasn\u2019t careful enough about compiler optimizations. In this case, the function under test is simple enough to be a candidate for inlining: an optimization that replaces a function call with the body of the called function and lets us prevent a function call, which has a small footprint. Once the function is inlined, the compiler notices that the call has no side effects and replaces it with the following benchmark:

    func BenchmarkPopcnt1(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        // Empty\n    }\n}\n

    The benchmark is now empty \u2014 which is why we got a result close to one clock cycle. To prevent this from happening, a best practice is to follow this pattern:

    1. During each loop iteration, assign the result to a local variable (local in the context of the benchmark function).
    2. Assign the latest result to a global variable.

    In our case, we write the following benchmark:

    var global uint64 // Define a global variable\n\nfunc BenchmarkPopcnt2(b *testing.B) {\n    var v uint64 // Define a local variable\n    for i := 0; i < b.N; i++ {\n        v = popcnt(uint64(i)) // Assign the result to the local variable\n    }\n    global = v // Assign the result to the global variable\n}\n

    global is a global variable, whereas v is a local variable whose scope is the benchmark function. During each loop iteration, we assign the result of popcnt to the local variable. Then we assign the latest result to the global variable.

    Note

    Why not assign the result of the popcnt call directly to global to simplify the test? Writing to a global variable is slower than writing to a local variable (these concepts are discussed in 100 Go Mistakes, mistake #95: \u201cNot understanding stack vs. heap\u201d). Therefore, we should write each result to a local variable to limit the footprint during each loop iteration.

    If we run these two benchmarks, we now get a significant difference in the results:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkPopcnt1-4      1000000000               0.2858 ns/op\nBenchmarkPopcnt2-4      606402058                1.993 ns/op\n

    BenchmarkPopcnt2 is the accurate version of the benchmark. It guarantees that we avoid the inlining optimizations, which can artificially lower the execution time or even remove the call to the function under test. Relying on the results of BenchmarkPopcnt1 could have led to wrong assumptions.

    Let\u2019s remember the pattern to avoid compiler optimizations fooling benchmark results: assign the result of the function under test to a local variable, and then assign the latest result to a global variable. This best practice also prevents us from making incorrect assumptions.

    "},{"location":"89-benchmarks/#being-fooled-by-the-observer-effect","title":"Being fooled by the observer effect","text":"

    In physics, the observer effect is the disturbance of an observed system by the act of observation. This effect can also be seen in benchmarks and can lead to wrong assumptions about results. Let\u2019s look at a concrete example and then try to mitigate it.

    We want to implement a function receiving a matrix of int64 elements. This matrix has a fixed number of 512 columns, and we want to compute the total sum of the first eight columns, as shown in figure 1.

    Figure 1: Computing the sum of the first eight columns.

    For the sake of optimizations, we also want to determine whether varying the number of columns has an impact, so we also implement a second function with 513 columns. The implementation is the following:

    func calculateSum512(s [][512]int64) int64 {\n    var sum int64\n    for i := 0; i < len(s); i++ { // Iterate over each row\n        for j := 0; j < 8; j++ { // Iterate over the first eight columns\n            sum += s[i][j] // Increment sum\n        }\n    }\n    return sum\n}\n\nfunc calculateSum513(s [][513]int64) int64 {\n    // Same implementation as calculateSum512\n}\n

    We iterate over each row and then over the first eight columns, and we increment a sum variable that we return. The implementation in calculateSum513 remains the same.

    We want to benchmark these functions to decide which one is the most performant given a fixed number of rows:

    const rows = 1000\n\nvar res int64\n\nfunc BenchmarkCalculateSum512(b *testing.B) {\n    var sum int64\n    s := createMatrix512(rows) // Create a matrix of 512 columns\n    b.ResetTimer()\n    for i := 0; i < b.N; i++ {\n        sum = calculateSum512(s) // Create a matrix of 512 columns\n    }\n    res = sum\n}\n\nfunc BenchmarkCalculateSum513(b *testing.B) {\n    var sum int64\n    s := createMatrix513(rows) // Create a matrix of 513 columns\n    b.ResetTimer()\n    for i := 0; i < b.N; i++ {\n        sum = calculateSum513(s) // Calculate the sum\n    }\n    res = sum\n}\n

    We want to create the matrix only once, to limit the footprint on the results. Therefore, we call createMatrix512 and createMatrix513 outside of the loop. We may expect the results to be similar as again we only want to iterate on the first eight columns, but this isn\u2019t the case (on my machine):

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkCalculateSum512-4        81854             15073 ns/op\nBenchmarkCalculateSum513-4       161479              7358 ns/op\n

    The second benchmark with 513 columns is about 50% faster. Again, because we iterate only over the first eight columns, this result is quite surprising.

    To understand this difference, we need to understand the basics of CPU caches. In a nutshell, a CPU is composed of different caches (usually L1, L2, and L3). These caches reduce the average cost of accessing data from the main memory. In some conditions, the CPU can fetch data from the main memory and copy it to L1. In this case, the CPU tries to fetch into L1 the matrix\u2019s subset that calculateSum is interested in (the first eight columns of each row). However, the matrix fits in memory in one case (513 columns) but not in the other case (512 columns).

    Note

    This isn\u2019t in the scope of this post to explain why, but we look at this problem in 100 Go Mistakes, mistake #91: \u201cNot understanding CPU caches.\u201d

    Coming back to the benchmark, the main issue is that we keep reusing the same matrix in both cases. Because the function is repeated thousands of times, we don\u2019t measure the function\u2019s execution when it receives a plain new matrix. Instead, we measure a function that gets a matrix that already has a subset of the cells present in the cache. Therefore, because calculateSum513 leads to fewer cache misses, it has a better execution time.

    This is an example of the observer effect. Because we keep observing a repeatedly called CPU-bound function, CPU caching may come into play and significantly affect the results. In this example, to prevent this effect, we should create a matrix during each test instead of reusing one:

    func BenchmarkCalculateSum512(b *testing.B) {\n    var sum int64\n    for i := 0; i < b.N; i++ {\n        b.StopTimer()\n        s := createMatrix512(rows) // Create a new matrix during each loop iteration\n        b.StartTimer()\n        sum = calculateSum512(s)\n    }\n    res = sum\n}\n

    A new matrix is now created during each loop iteration. If we run the benchmark again (and adjust benchtime \u2014 otherwise, it takes too long to execute), the results are closer to each other:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkCalculateSum512-4         1116             33547 ns/op\nBenchmarkCalculateSum513-4          998             35507 ns/op\n

    Instead of making the incorrect assumption that calculateSum513 is faster, we see that both benchmarks lead to similar results when receiving a new matrix.

    As we have seen in this post, because we were reusing the same matrix, CPU caches significantly impacted the results. To prevent this, we had to create a new matrix during each loop iteration. In general, we should remember that observing a function under test may lead to significant differences in results, especially in the context of micro-benchmarks of CPU-bound functions where low-level optimizations matter. Forcing a benchmark to re-create data during each iteration can be a good way to prevent this effect.

    "},{"location":"9-generics/","title":"Being confused about when to use generics","text":"

    Generics is a fresh addition to the language. In a nutshell, it allows writing code with types that can be specified later and instantiated when needed. However, it can be pretty easy to be confused about when to use generics and when not to. Throughout this post, we will describe the concept of generics in Go and then delve into common use and misuses.

    "},{"location":"9-generics/#concepts","title":"Concepts","text":"

    Consider the following function that extracts all the keys from a map[string]int type:

    func getKeys(m map[string]int) []string {\n    var keys []string\n    for k := range m {\n        keys = append(keys, k)\n    }\n    return keys\n}\n

    What if we would like to use a similar feature for another map type such as a map[int]string? Before generics, Go developers had a couple of options: using code generation, reflection, or duplicating code.

    For example, we could write two functions, one for each map type, or even try to extend getKeys to accept different map types:

    func getKeys(m any) ([]any, error) {\n    switch t := m.(type) {\n    default:\n        return nil, fmt.Errorf(\"unknown type: %T\", t)\n    case map[string]int:\n        var keys []any\n        for k := range t {\n            keys = append(keys, k)\n        }\n        return keys, nil\n    case map[int]string:\n        // Copy the extraction logic\n    }\n}\n

    We can start noticing a couple of issues:

    • First, it increases boilerplate code. Indeed, whenever we want to add a case, it will require duplicating the range loop.
    • Meanwhile, the function now accepts an empty interface, which means we are losing some of the benefits of Go being a typed language. Indeed, checking whether a type is supported is done at runtime instead of compile-time. Hence, we also need to return an error if the provided type is unknown.
    • Last but not least, as the key type can be either int or string, we are obliged to return a slice of empty interfaces to factor out key types. This approach increases the effort on the caller-side as the client may also have to perform a type check of the keys or extra conversion.

    Thanks to generics, we can now refactor this code using type parameters.

    Type parameters are generic types we can use with functions and types. For example, the following function accepts a type parameter:

    func foo[T any](t T) {\n    // ...\n}\n

    When calling foo, we will pass a type argument of any type. Passing a type argument is called instantiation because the work is done at compile time which keeps type safety as part of the core language features and avoids runtime overheads.

    Let\u2019s get back to the getKeys function and use type parameters to write a generic version that would accept any kind of map:

    func getKeys[K comparable, V any](m map[K]V) []K {\n  var keys []K <2>\n  for k := range m {\n    keys = append(keys, k)\n  }\n  return keys\n}\n

    To handle the map, we defined two kinds of type parameters. First, the values can be of any type: V any. However, in Go, the map keys can\u2019t be of any type. For example, we cannot use slices:

    var m map[[]byte]int\n

    This code leads to a compilation error: invalid map key type []byte. Therefore, instead of accepting any key type, we are obliged to restrict type arguments so that the key type meets specific requirements. Here, being comparable (we can use == or !=). Hence, we defined K as comparable instead of any.

    Restricting type arguments to match specific requirements is called a constraint. A constraint is an interface type that can contain:

    • A set of behaviors (methods)
    • But also arbitrary type

    Let\u2019s see a concrete example for the latter. Imagine we don\u2019t want to accept any comparable type for map key type. For instance, we would like to restrict it to either int or string types. We can define a custom constraint this way:

    type customConstraint interface {\n   ~int | ~string // Define a custom type that will restrict types to int and string\n}\n\n// Change the type parameter K to be custom\nfunc getKeys[K customConstraint, V any](m map[K]V) []K {\n   // Same implementation\n}\n

    First, we define a customConstraint interface to restrict the types to be either int or string using the union operator | (we will discuss the use of ~ a bit later). Then, K is now a customConstraint instead of a comparable as before.

    Now, the signature of getKeys enforces that we can call it with a map of any value type, but the key type has to be an int or a string. For example, on the caller-side:

    m = map[string]int{\n   \"one\":   1,\n   \"two\":   2,\n   \"three\": 3,\n}\nkeys := getKeys(m)\n

    Note that Go can infer that getKeys is called with a string type argument. The previous call was similar to this:

    keys := getKeys[string](m)\n
    Note

    What\u2019s the difference between a constraint using ~int or int? Using int restricts it to that type, whereas ~int restricts all the types whose underlying type is an int.

    To illustrate it, let\u2019s imagine a constraint where we would like to restrict a type to any int type implementing the String() string method:

    type customConstraint interface {\n   ~int\n   String() string\n}\n

    Using this constraint will restrict type arguments to custom types like this one:

    type customInt int\n\nfunc (i customInt) String() string {\n   return strconv.Itoa(int(i))\n}\n

    As customInt is an int and implements the String() string method, the customInt type satisfies the constraint defined.

    However, if we change the constraint to contain an int instead of an ~int, using customInt would lead to a compilation error because the int type doesn\u2019t implement String() string.

    Let\u2019s also note the constraints package contains a set of common constraints such as Signed that includes all the signed integer types. Let\u2019s ensure that a constraint doesn\u2019t already exist in this package before creating a new one.

    So far, we have discussed examples using generics for functions. However, we can also use generics with data structures.

    For example, we will create a linked list containing values of any type. Meanwhile, we will write an Add method to append a node:

    type Node[T any] struct { // Use type parameter\n   Val  T\n   next *Node[T]\n}\n\nfunc (n *Node[T]) Add(next *Node[T]) { // Instantiate type receiver\n   n.next = next\n}\n

    We use type parameters to define T and use both fields in Node. Regarding the method, the receiver is instantiated. Indeed, because Node is generic, it has to follow also the type parameter defined.

    One last thing to note about type parameters: they can\u2019t be used on methods, only on functions. For example, the following method wouldn\u2019t compile:

    type Foo struct {}\n\nfunc (Foo) bar[T any](t T) {}\n
    ./main.go:29:15: methods cannot have type parameters\n

    Now, let\u2019s delve into concrete cases where we should and shouldn\u2019t use generics.

    "},{"location":"9-generics/#common-uses-and-misuses","title":"Common uses and misuses","text":"

    So when are generics useful? Let\u2019s discuss a couple of common uses where generics are recommended:

    • Data structures. For example, we can use generics to factor out the element type if we implement a binary tree, a linked list, or a heap.
    • Functions working with slices, maps, and channels of any type. For example, a function to merge two channels would work with any channel type. Hence, we could use type parameters to factor out the channel type:
    func merge[T any](ch1, ch2 <-chan T) <-chan T {\n    // ...\n}\n
    • Meanwhile, instead of factoring out a type, we can factor out behaviors. For example, the sort package contains functions to sort different slice types such as sort.Ints or sort.Float64s. Using type parameters, we can factor out the sorting behaviors that rely on three methods, Len, Less, and Swap:
    type sliceFn[T any] struct { // Use type parameter\n   s       []T\n   compare func(T, T) bool // Compare two T elements\n}\n\nfunc (s sliceFn[T]) Len() int           { return len(s.s) }\nfunc (s sliceFn[T]) Less(i, j int) bool { return s.compare(s.s[i], s.s[j]) }\nfunc (s sliceFn[T]) Swap(i, j int)      { s.s[i], s.s[j] = s.s[j], s.s[i] }\n

    Conversely, when is it recommended not to use generics?

    • When just calling a method of the type argument. For example, consider a function that receives an io.Writer and call the Write method:
    func foo[T io.Writer](w T) {\n   b := getBytes()\n   _, _ = w.Write(b)\n}\n
    • When it makes our code more complex. Generics are never mandatory, and as Go developers, we have been able to live without them for more than a decade. If writing generic functions or structures we figure out that it doesn\u2019t make our code clearer, we should probably reconsider our decision for this particular use case.
    "},{"location":"9-generics/#conclusion","title":"Conclusion","text":"

    Though generics can be very helpful in particular conditions, we should be cautious about when to use them and not use them.

    In general, when we want to answer when not to use generics, we can find similarities with when not to use interfaces. Indeed, generics introduce a form of abstraction, and we have to remember that unnecessary abstractions introduce complexity.

    Let\u2019s not pollute our code with needless abstractions, and let\u2019s focus on solving concrete problems for now. It means that we shouldn\u2019t use type parameters prematurely. Let\u2019s wait until we are about to write boilerplate code to consider using generics.

    "},{"location":"92-false-sharing/","title":"Writing concurrent code that leads to false sharing","text":"

    In previous sections, we have discussed the fundamental concepts of CPU caching. We have seen that some specific caches (typically, L1 and L2) aren\u2019t shared among all the logical cores but are specific to a physical core. This specificity has some concrete impacts such as concurrency and the concept of false sharing, which can lead to a significant performance decrease. Let\u2019s look at what false sharing is via an example and then see how to prevent it.

    In this example, we use two structs, Input and Result:

    type Input struct {\n    a int64\n    b int64\n}\n\ntype Result struct {\n    sumA int64\n    sumB int64\n}\n

    The goal is to implement a count function that receives a slice of Input and computes the following:

    • The sum of all the Input.a fields into Result.sumA
    • The sum of all the Input.b fields into Result.sumB

    For the sake of the example, we implement a concurrent solution with one goroutine that computes sumA and another that computes sumB:

    func count(inputs []Input) Result {\n    wg := sync.WaitGroup{}\n    wg.Add(2)\n\n    result := Result{} // Init the result struct\n\n    go func() {\n        for i := 0; i < len(inputs); i++ {\n            result.sumA += inputs[i].a // Computes sumA\n        }\n        wg.Done()\n    }()\n\n    go func() {\n        for i := 0; i < len(inputs); i++ {\n            result.sumB += inputs[i].b // Computes sumB\n        }\n        wg.Done()\n    }()\n\n    wg.Wait()\n    return result\n}\n

    We spin up two goroutines: one that iterates over each a field and another that iterates over each b field. This example is fine from a concurrency perspective. For instance, it doesn\u2019t lead to a data race, because each goroutine increments its own variable. But this example illustrates the false sharing concept that degrades expected performance.

    Let\u2019s look at the main memory. Because sumA and sumB are allocated contiguously, in most cases (seven out of eight), both variables are allocated to the same memory block:

    In this example, sumA and sumB are part of the same memory block.

    Now, let\u2019s assume that the machine contains two cores. In most cases, we should eventually have two threads scheduled on different cores. So if the CPU decides to copy this memory block to a cache line, it is copied twice:

    Each block is copied to a cache line on both code 0 and core 1.

    Both cache lines are replicated because L1D (L1 data) is per core. Recall that in our example, each goroutine updates its own variable: sumA on one side, and sumB on the other side:

    Each goroutine updates its own variable.

    Because these cache lines are replicated, one of the goals of the CPU is to guarantee cache coherency. For example, if one goroutine updates sumA and another reads sumA (after some synchronization), we expect our application to get the latest value.

    However, our example doesn\u2019t do exactly this. Both goroutines access their own variables, not a shared one. We might expect the CPU to know about this and understand that it isn\u2019t a conflict, but this isn\u2019t the case. When we write a variable that\u2019s in a cache, the granularity tracked by the CPU isn\u2019t the variable: it\u2019s the cache line.

    When a cache line is shared across multiple cores and at least one goroutine is a writer, the entire cache line is invalidated. This happens even if the updates are logically independent (for example, sumA and sumB). This is the problem of false sharing, and it degrades performance.

    Note

    Internally, a CPU uses the MESI protocol to guarantee cache coherency. It tracks each cache line, marking it modified, exclusive, shared, or invalid (MESI).

    One of the most important aspects to understand about memory and caching is that sharing memory across cores isn\u2019t real\u2014it\u2019s an illusion. This understanding comes from the fact that we don\u2019t consider a machine a black box; instead, we try to have mechanical sympathy with underlying levels.

    So how do we solve false sharing? There are two main solutions.

    The first solution is to use the same approach we\u2019ve shown but ensure that sumA and sumB aren\u2019t part of the same cache line. For example, we can update the Result struct to add padding between the fields. Padding is a technique to allocate extra memory. Because an int64 requires an 8-byte allocation and a cache line 64 bytes long, we need 64 \u2013 8 = 56 bytes of padding:

    type Result struct {\n    sumA int64\n    _    [56]byte // Padding\n    sumB int64\n}\n

    The next figure shows a possible memory allocation. Using padding, sumA and sumB will always be part of different memory blocks and hence different cache lines.

    sumA and sumB are part of different memory blocks.

    If we benchmark both solutions (with and without padding), we see that the padding solution is significantly faster (about 40% on my machine). This is an important improvement that results from the addition of padding between the two fields to prevent false sharing.

    The second solution is to rework the structure of the algorithm. For example, instead of having both goroutines share the same struct, we can make them communicate their local result via channels. The result benchmark is roughly the same as with padding.

    In summary, we must remember that sharing memory across goroutines is an illusion at the lowest memory levels. False sharing occurs when a cache line is shared across two cores when at least one goroutine is a writer. If we need to optimize an application that relies on concurrency, we should check whether false sharing applies, because this pattern is known to degrade application performance. We can prevent false sharing with either padding or communication.

    "},{"location":"98-profiling-execution-tracing/","title":"Not using Go diagnostics tooling","text":"

    Go offers a few excellent diagnostics tools to help us get insights into how an application performs. This post focuses on the most important ones: profiling and the execution tracer. Both tools are so important that they should be part of the core toolset of any Go developer who is interested in optimization. First, let\u2019s discuss profiling.

    "},{"location":"98-profiling-execution-tracing/#profiling","title":"Profiling","text":"

    Profiling provides insights into the execution of an application. It allows us to resolve performance issues, detect contention, locate memory leaks, and more. These insights can be collected via several profiles:

    • CPU\u2014 Determines where an application spends its time
    • Goroutine\u2014 Reports the stack traces of the ongoing goroutines
    • Heap\u2014 Reports heap memory allocation to monitor current memory usage and check for possible memory leaks
    • Mutex\u2014 Reports lock contentions to see the behaviors of the mutexes used in our code and whether an application spends too much time in locking calls
    • Block\u2014 Shows where goroutines block waiting on synchronization primitives

    Profiling is achieved via instrumentation using a tool called a profiler, in Go: pprof. First, let\u2019s understand how and when to enable pprof; then, we discuss the most critical profile types.

    "},{"location":"98-profiling-execution-tracing/#enabling-pprof","title":"Enabling pprof","text":"

    There are several ways to enable pprof. For example, we can use the net/http/pprof package to serve the profiling data via HTTP:

    package main\n\nimport (\n    \"fmt\"\n    \"log\"\n    \"net/http\"\n    _ \"net/http/pprof\" // Blank import to pprof\n)\n\nfunc main() {\n    // Exposes an HTTP endpoint\n    http.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n        fmt.Fprintf(w, \"\")\n    })\n    log.Fatal(http.ListenAndServe(\":80\", nil))\n}\n

    Importing net/http/pprof leads to a side effect that allows us to reach the pprof URL: http://host/debug/pprof. Note that enabling pprof is safe even in production (https://go.dev/doc/diagnostics#profiling). The profiles that impact performance, such as CPU profiling, aren\u2019t enabled by default, nor do they run continuously: they are activated only for a specific period.

    Now that we have seen how to expose a pprof endpoint, let\u2019s discuss the most common profiles.

    "},{"location":"98-profiling-execution-tracing/#cpu-profiling","title":"CPU Profiling","text":"

    The CPU profiler relies on the OS and signaling. When it is activated, the application asks the OS to interrupt it every 10 ms by default via a SIGPROF signal. When the application receives a SIGPROF, it suspends the current activity and transfers the execution to the profiler. The profiler collects data such as the current goroutine activity and aggregates execution statistics that we can retrieve. Then it stops, and the execution resumes until the next SIGPROF.

    We can access the /debug/pprof/profile endpoint to activate CPU profiling. Accessing this endpoint executes CPU profiling for 30 seconds by default. For 30 seconds, our application is interrupted every 10 ms. Note that we can change these two default values: we can use the seconds parameter to pass to the endpoint how long the profiling should last (for example, /debug/pprof/profile?seconds=15), and we can change the interruption rate (even to less than 10 ms). But in most cases, 10 ms should be enough, and in decreasing this value (meaning increasing the rate), we should be careful not to harm performance. After 30 seconds, we download the results of the CPU profiler.

    Note

    We can also enable the CPU profiler using the -cpuprofile flag, such as when running a benchmark. For example, the following command produces the same type of file that can be downloaded via /debug/ pprof/profile.

    $ go test -bench=. -cpuprofile profile.out\n

    From this file, we can navigate to the results using go tool:

    $ go tool pprof -http=:8080 <file>\n

    This command opens a web UI showing the call graph. The next figure shows an example taken from an application. The larger the arrow, the more it was a hot path. We can then navigate into this graph and get execution insights.

    Figure 1: The call graph of an application during 30 seconds.

    For example, the graph in the next figure tells us that during 30 seconds, 0.06 seconds were spent in the decode method (*FetchResponse receiver). Of these 0.06 seconds, 0.02 were spent in RecordBatch.decode and 0.01 in makemap (creating a map).

    Figure 2: Example call graph.

    We can also access this kind of information from the web UI with different representations. For example, the Top view sorts the functions per execution time, and Flame Graph visualizes the execution time hierarchy. The UI can even display the expensive parts of the source code line by line.

    Note

    We can also delve into profiling data via a command line. However, we focus on the web UI in this post.

    Thanks to this data, we can get a general idea of how an application behaves:

    • Too many calls to runtime.mallogc can mean an excessive number of small heap allocations that we can try to minimize.
    • Too much time spent in channel operations or mutex locks can indicate excessive contention that is harming the application\u2019s performance.
    • Too much time spent on syscall.Read or syscall.Write means the application spends a significant amount of time in Kernel mode. Working on I/O buffering may be an avenue for improvement.

    These are the kinds of insights we can get from the CPU profiler. It\u2019s valuable to understand the hottest code path and identify bottlenecks. But it won\u2019t determine more than the configured rate because the CPU profiler is executed at a fixed pace (by default, 10 ms). To get finer-grained insights, we should use tracing, which we discuss later in this post.

    Note

    We can also attach labels to the different functions. For example, imagine a common function called from different clients. To track the time spent for both clients, we can use pprof.Labels.

    "},{"location":"98-profiling-execution-tracing/#heap-profiling","title":"Heap Profiling","text":"

    Heap profiling allows us to get statistics about the current heap usage. Like CPU profiling, heap profiling is sample-based. We can change this rate, but we shouldn\u2019t be too granular because the more we decrease the rate, the more effort heap profiling will require to collect data. By default, samples are profiled at one allocation for every 512 KB of heap allocation.

    If we reach /debug/pprof/heap/, we get raw data that can be hard to read. However, we can download a heap profile using /debug/pprof/heap/?debug=0 and then open it with go tool (the same command as in the previous section) to navigate into the data using the web UI.

    The next figure shows an example of a heap graph. Calling the MetadataResponse.decode method leads to allocating 1536 KB of heap data (which represents 6.32% of the total heap). However, 0 out of these 1536 KB were allocated by this function directly, so we need to inspect the second call. The TopicMetadata.decode method allocated 512 KB out of the 1536 KB; the rest \u2014 1024 KB \u2014 were allocated in another method.

    Figure 3: A heap graph.

    This is how we can navigate the call chain to understand what part of an application is responsible for most of the heap allocations. We can also look at different sample types:

    • alloc_objects\u2014 Total number of objects allocated
    • alloc_space\u2014 Total amount of memory allocated
    • inuse_objects \u2014 Number of objects allocated and not yet released
    • inuse_space\u2014 Amount of memory allocated and not yet released

    Another very helpful capability with heap profiling is tracking memory leaks. With a GC-based language, the usual procedure is the following:

    1. Trigger a GC.
    2. Download heap data.
    3. Wait for a few seconds/minutes.
    4. Trigger another GC.
    5. Download another heap data.
    6. Compare.

    Forcing a GC before downloading data is a way to prevent false assumptions. For example, if we see a peak of retained objects without running a GC first, we cannot be sure whether it\u2019s a leak or objects that the next GC will collect.

    Using pprof, we can download a heap profile and force a GC in the meantime. The procedure in Go is the following:

    1. Go to /debug/pprof/heap?gc=1 (trigger the GC and download the heap profile).
    2. Wait for a few seconds/minutes.
    3. Go to /debug/pprof/heap?gc=1 again.
    4. Use go tool to compare both heap profiles:
    $ go tool pprof -http=:8080 -diff_base <file2> <file1>\n

    The next figure shows the kind of data we can access. For example, the amount of heap memory held by the newTopicProducer method (top left) has decreased (\u2013513 KB). In contrast, the amount held by updateMetadata (bottom right) has increased (+512 KB). Slow increases are normal. The second heap profile may have been calculated in the middle of a service call, for example. We can repeat this process or wait longer; the important part is to track steady increases in allocations of a specific object.

    Figure 4: The differences between the two heap profiles. Note

    Another type of profiling related to the heap is allocs, which reports allocations. Heap profiling shows the current state of the heap memory. To get insights about past memory allocations since the application started, we can use allocations profiling. As discussed, because stack allocations are cheap, they aren\u2019t part of this profiling, which only focuses on the heap.

    "},{"location":"98-profiling-execution-tracing/#goroutine-profiling","title":"Goroutine Profiling","text":"

    The goroutine profile reports the stack trace of all the current goroutines in an application. We can download a file using /debug/pprof/goroutine/?debug=0 and use go tool again. The next figure shows the kind of information we can get.

    Figure 5: Goroutine graph.

    We can see the current state of the application and how many goroutines were created per function. In this case, withRecover has created 296 ongoing goroutines (63%), and 29 were related to a call to responseFeeder.

    This kind of information is also beneficial if we suspect goroutine leaks. We can look at goroutine profiler data to know which part of a system is the suspect.

    "},{"location":"98-profiling-execution-tracing/#block-profiling","title":"Block Profiling","text":"

    The block profile reports where ongoing goroutines block waiting on synchronization primitives. Possibilities include

    • Sending or receiving on an unbuffered channel
    • Sending to a full channel
    • Receiving from an empty channel
    • Mutex contention
    • Network or filesystem waits

    Block profiling also records the amount of time a goroutine has been waiting and is accessible via /debug/pprof/block. This profile can be extremely helpful if we suspect that performance is being harmed by blocking calls.

    The block profile isn\u2019t enabled by default: we have to call runtime.SetBlockProfileRate to enable it. This function controls the fraction of goroutine blocking events that are reported. Once enabled, the profiler will keep collecting data in the background even if we don\u2019t call the /debug/pprof/block endpoint. Let\u2019s be cautious if we want to set a high rate so we don\u2019t harm performance.

    Note

    If we face a deadlock or suspect that goroutines are in a blocked state, the full goroutine stack dump (/debug/pprof/goroutine/?debug=2) creates a dump of all the current goroutine stack traces. This can be helpful as a first analysis step. For example, the following dump shows a Sarama goroutine blocked for 1,420 minutes on a channel-receive operation:

    goroutine 2494290 [chan receive, 1420 minutes]:\ngithub.com/Shopify/sarama.(*syncProducer).SendMessages(0xc00071a090,\n[CA]{0xc0009bb800, 0xfb, 0xfb})\n/app/vendor/github.com/Shopify/sarama/sync_producer.go:117 +0x149\n
    "},{"location":"98-profiling-execution-tracing/#mutex-profiling","title":"Mutex Profiling","text":"

    The last profile type is related to blocking but only regarding mutexes. If we suspect that our application spends significant time waiting for locking mutexes, thus harming execution, we can use mutex profiling. It\u2019s accessible via /debug/pprof/mutex.

    This profile works in a manner similar to that for blocking. It\u2019s disabled by default: we have to enable it using runtime.SetMutexProfileFraction, which controls the fraction of mutex contention events reported.

    Following are a few additional notes about profiling:

    • We haven\u2019t mentioned the threadcreate profile because it\u2019s been broken since 2013 (https://github.com/golang/go/issues/6104).
    • Be sure to enable only one profiler at a time: for example, do not enable CPU and heap profiling simultaneously. Doing so can lead to erroneous observations.
    • pprof is extensible, and we can create our own custom profiles using pprof.Profile.

    We have seen the most important profiles that we can enable to help us understand how an application performs and possible avenues for optimization. In general, enabling pprof is recommended, even in production, because in most cases it offers an excellent balance between its footprint and the amount of insight we can get from it. Some profiles, such as the CPU profile, lead to performance penalties but only during the time they are enabled.

    Let\u2019s now look at the execution tracer.

    "},{"location":"98-profiling-execution-tracing/#execution-tracer","title":"Execution Tracer","text":"

    The execution tracer is a tool that captures a wide range of runtime events with go tool to make them available for visualization. It is helpful for the following:

    • Understanding runtime events such as how the GC performs
    • Understanding how goroutines execute
    • Identifying poorly parallelized execution

    Let\u2019s try it with an example given the Concurrency isn\u2019t Always Faster in Go section. We discussed two parallel versions of the merge sort algorithm. The issue with the first version was poor parallelization, leading to the creation of too many goroutines. Let\u2019s see how the tracer can help us in validating this statement.

    We will write a benchmark for the first version and execute it with the -trace flag to enable the execution tracer:

    $ go test -bench=. -v -trace=trace.out\n
    Note

    We can also download a remote trace file using the /debug/pprof/ trace?debug=0 pprof endpoint.

    This command creates a trace.out file that we can open using go tool:

    $ go tool trace trace.out\n2021/11/26 21:36:03 Parsing trace...\n2021/11/26 21:36:31 Splitting trace...\n2021/11/26 21:37:00 Opening browser. Trace viewer is listening on\n    http://127.0.0.1:54518\n

    The web browser opens, and we can click View Trace to see all the traces during a specific timeframe, as shown in the next figure. This figure represents about 150 ms. We can see multiple helpful metrics, such as the goroutine count and the heap size. The heap size grows steadily until a GC is triggered. We can also observe the activity of the Go application per CPU core. The timeframe starts with user-level code; then a \u201cstop the world\u201d is executed, which occupies the four CPU cores for approximately 40 ms.

    Figure 6: Showing goroutine activity and runtime events such as a GC phase.

    Regarding concurrency, we can see that this version uses all the available CPU cores on the machine. However, the next figure zooms in on a portion of 1 ms. Each bar corresponds to a single goroutine execution. Having too many small bars doesn\u2019t look right: it means execution that is poorly parallelized.

    Figure 7: Too many small bars mean poorly parallelized execution.

    The next figure zooms even closer to see how these goroutines are orchestrated. Roughly 50% of the CPU time isn\u2019t spent executing application code. The white spaces represent the time the Go runtime takes to spin up and orchestrate new goroutines.

    Figure 8: About 50% of CPU time is spent handling goroutine switches.

    Let\u2019s compare this with the second parallel implementation, which was about an order of magnitude faster. The next figure again zooms to a 1 ms timeframe.

    Figure 9: The number of white spaces has been significantly reduced, proving that the CPU is more fully occupied.

    Each goroutine takes more time to execute, and the number of white spaces has been significantly reduced. Hence, the CPU is much more occupied executing application code than it was in the first version. Each millisecond of CPU time is spent more efficiently, explaining the benchmark differences.

    Note that the granularity of the traces is per goroutine, not per function like CPU profiling. However, it\u2019s possible to define user-level tasks to get insights per function or group of functions using the runtime/trace package.

    For example, imagine a function that computes a Fibonacci number and then writes it to a global variable using atomic. We can define two different tasks:

    var v int64\n// Creates a fibonacci task\nctx, fibTask := trace.NewTask(context.Background(), \"fibonacci\")\ntrace.WithRegion(ctx, \"main\", func() {\n    v = fibonacci(10)\n})\nfibTask.End()\n\n// Creates a store task\nctx, fibStore := trace.NewTask(ctx, \"store\")\ntrace.WithRegion(ctx, \"main\", func() {\n    atomic.StoreInt64(&result, v)\n})\nfibStore.End()\n

    Using go tool, we can get more precise information about how these two tasks perform. In the previous trace UI, we can see the boundaries for each task per goroutine. In User-Defined Tasks, we can follow the duration distribution:

    Figure 10: Distribution of user-level tasks.

    We see that in most cases, the fibonacci task is executed in less than 15 microseconds, whereas the store task takes less than 6309 nanoseconds.

    In the previous section, we discussed the kinds of information we can get from CPU profiling. What are the main differences compared to the data we can get from user-level traces?

    • CPU profiling:
      • Sample-based
      • Per function
      • Doesn\u2019t go below the sampling rate (10 ms by default)
    • User-level traces:
      • Not sample-based
      • Per-goroutine execution (unless we use the runtime/trace package)
      • Time executions aren\u2019t bound by any rate

    In summary, the execution tracer is a powerful tool for understanding how an application performs. As we have seen with the merge sort example, we can identify poorly parallelized execution. However, the tracer\u2019s granularity remains per goroutine unless we manually use runtime/trace compared to a CPU profile, for example. We can use both profiling and the execution tracer to get the most out of the standard Go diagnostics tools when optimizing an application.

    "},{"location":"book/","title":"100 Go Mistakes and How to Avoid Them","text":""},{"location":"book/#description","title":"Description","text":"

    If you're a Go developer looking to improve your skills, the 100 Go Mistakes and How to Avoid Them book is for you. With a focus on practical examples, this book covers a wide range of topics from concurrency and error handling to testing and code organization. You'll learn to write more idiomatic, efficient, and maintainable code and become a proficient Go developer.

    Read a summary of the 100 mistakes or the first chapter.

    "},{"location":"book/#quotes-and-ratings","title":"Quotes and Ratings","text":"

    Krystian (Goodreads user)

    This is an exceptional book. Usually, if a book contains either high-quality explanations or is written succinctly, I consider myself lucky to have found it. This one combines these two characteristics, which is super rare. It's another Go book for me and I still had quite a lot of \"a-ha!\" moments while reading it, and all of that without the unnecessary fluff, just straight to the point.

    Akash Chetty

    The book is completely exceptional, especially the examples carved out for each topic are really great. There is one topic that I struggled to understand is Concurrency but the way it is explained in this book is truly an art of genius.

    Neeraj Shah

    This should be the required reading for all Golang developers before they touch code in Production... It's the Golang equivalent of the legendary 'Effective Java' by Joshua Bloch.

    Anupam Sengupta

    Not having this will be the 101st mistake a Go programmer could make.

    Manning, Goodreads, and Amazon reviews: 4.7/5 avg rating"},{"location":"book/#where-to-buy","title":"Where to Buy?","text":"
    • 100 Go Mistakes and How to Avoid Them (\ud83c\uddec\ud83c\udde7 edition: paper, digital, or audiobook)

      • Manning (please make sure to use my personal discount code for -35%: au35har)
      • O\u2019Reilly
      • Amazon: .com, .co.uk, .de, .fr, .in, .co.jp, .es, .it, .com.br
    • Go\u8a00\u8a9e100Tips \u958b\u767a\u8005\u306b\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3078\u306e\u5bfe\u51e6\u6cd5 (\ud83c\uddef\ud83c\uddf5 edition: paper or digital)

      • Amazon: .co.jp
    • 100\u4e2aGo\u8bed\u8a00\u5178\u578b\u9519\u8bef (\ud83c\udde8\ud83c\uddf3 edition: paper or digital)

      • Douban.com

    Covers"},{"location":"book/#about-the-author","title":"About the Author","text":"

    Teiva Harsanyi is a senior software engineer at Google. He has worked in various domains, including insurance, transportation, and safety-critical industries like air traffic management. He is passionate about Go and how to design and implement reliable systems.

    "},{"location":"chapter-1/","title":"Go: Simple to learn but hard to master","text":"

    This chapter covers

    • What makes Go an efficient, scalable, and productive language
    • Exploring why Go is simple to learn but hard to master
    • Presenting the common types of mistakes made by developers

    Making mistakes is part of everyone\u2019s life. As Albert Einstein once said,

    Albert Einstein

    A person who never made a mistake never tried anything new.

    What matters in the end isn\u2019t the number of mistakes we make, but our capacity to learn from them. This assertion also applies to programming. The seniority we acquire in a language isn\u2019t a magical process; it involves making many mistakes and learning from them. The purpose of this book is centered around this idea. It will help you, the reader, become a more proficient Go developer by looking at and learning from 100 common mistakes people make in many areas of the language.

    This chapter presents a quick refresher as to why Go has become mainstream over the years. We\u2019ll discuss why, despite Go being considered simple to learn, mastering its nuances can be challenging. Finally, we\u2019ll introduce the concepts this book covers.

    "},{"location":"chapter-1/#go-outline","title":"Go outline","text":"

    If you are reading this book, it\u2019s likely that you\u2019re already sold on Go. Therefore, this section provides a brief reminder about what makes Go such a powerful language.

    Software engineering has evolved considerably during the past decades. Most modern systems are no longer written by a single person but by teams consisting of multiple programmers\u2014sometimes even hundreds, if not thousands. Nowadays, code must be readable, expressive, and maintainable to guarantee a system\u2019s durability over the years. Meanwhile, in our fast-moving world, maximizing agility and reducing the time to market is critical for most organizations. Programming should also follow this trend, and companies strive to ensure that software engineers are as productive as possible when reading, writing, and maintaining code.

    In response to these challenges, Google created the Go programming language in 2007. Since then, many organizations have adopted the language to support various use cases: APIs, automation, databases, CLIs (command-line interfaces), and so on. Many today consider Go the language of the cloud.

    Feature-wise, Go has no type inheritance, no exceptions, no macros, no partial functions, no support for lazy variable evaluation or immutability, no operator overloading, no pattern matching, and on and on. Why are these features missing from the language? The official Go FAQ gives us some insight:

    Go FAQ

    Why does Go not have feature X? Your favorite feature may be missing because it doesn\u2019t fit, because it affects compilation speed or clarity of design, or because it would make the fundamental system model too difficult.

    Judging the quality of a programming language via its number of features is probably not an accurate metric. At least, it\u2019s not an objective of Go. Instead, Go utilizes a few essential characteristics when adopting a language at scale for an organization. These include the following:

    • Stability\u2014Even though Go receives frequent updates (including improvements and security patches), it remains a stable language. Some may even consider this one of the best features of the language.
    • Expressivity\u2014We can define expressivity in a programming language by how naturally and intuitively we can write and read code. A reduced number of keywords and limited ways to solve common problems make Go an expressive language for large codebases.
    • Compilation\u2014As developers, what can be more exasperating than having to wait for a build to test our application? Targeting fast compilation times has always been a conscious goal for the language designers. This, in turn, enables productivity.
    • Safety\u2014Go is a strong, statically typed language. Hence, it has strict compiletime rules, which ensure the code is type-safe in most cases.

    Go was built from the ground up with solid features such as outstanding concurrency primitives with goroutines and channels. There\u2019s not a strong need to rely on external libraries to build efficient concurrent applications. Observing how important concurrency is these days also demonstrates why Go is such a suitable language for the present and probably for the foreseeable future.

    Some also consider Go a simple language. And, in a sense, this isn\u2019t necessarily wrong. For example, a newcomer can learn the language\u2019s main features in less than a day. So why read a book centered on the concept of mistakes if Go is simple?

    "},{"location":"chapter-1/#simple-doesnt-mean-easy","title":"Simple doesn\u2019t mean easy","text":"

    There is a subtle difference between simple and easy. Simple, applied to a technology, means not complicated to learn or understand. However, easy means that we can achieve anything without much effort. Go is simple to learn but not necessarily easy to master.

    Let\u2019s take concurrency, for example. In 2019, a study focusing on concurrency bugs was published: Understanding Real-World Concurrency Bugs in Go. This study was the first systematic analysis of concurrency bugs. It focused on multiple popular Go repositories such as Docker, gRPC, and Kubernetes. One of the most important takeaways from this study is that most of the blocking bugs are caused by inaccurate use of the message-passing paradigm via channels, despite the belief that message passing is easier to handle and less error-prone than sharing memory.

    What should be an appropriate reaction to such a takeaway? Should we consider that the language designers were wrong about message passing? Should we reconsider how we deal with concurrency in our project? Of course not.

    It\u2019s not a question of confronting message passing versus sharing memory and determining the winner. However, it\u2019s up to us as Go developers to thoroughly understand how to use concurrency, its implications on modern processors, when to favor one approach over the other, and how to avoid common traps. This example highlights that although a concept such as channels and goroutines can be simple to learn, it isn\u2019t an easy topic in practice.

    This leitmotif\u2014simple doesn\u2019t mean easy\u2014can be generalized to many aspects of Go, not only concurrency. Hence, to be proficient Go developers, we must have a thorough understanding of many aspects of the language, which requires time, effort, and mistakes.

    This book aims to help accelerate our journey toward proficiency by delving into 100 Go mistakes.

    "},{"location":"chapter-1/#100-go-mistakes","title":"100 Go mistakes","text":"

    Why should we read a book about common Go mistakes? Why not deepen our knowledge with an ordinary book that would dig into different topics?

    In a 2011 article, neuroscientists proved that the best time for brain growth is when we\u2019re facing mistakes. 1 Haven\u2019t we all experienced the process of learning from a mistake and recalling that occasion after months or even years, when some context related to it? As presented in another article, by Janet Metcalfe, this happens because mistakes have a facilitative effect. 2 The main idea is that we can remember not only the error but also the context surrounding the mistake. This is one of the reasons why learning from mistakes is so efficient.

    To strengthen this facilitative effect, this book accompanies each mistake as much as possible with real-world examples. This book isn\u2019t only about theory; it also helps us get better at avoiding mistakes and making more well-informed, conscious decisions because we now understand the rationale behind them.

    Unknown

    Tell me and I forget. Teach me and I remember. Involve me and I learn.

    This book presents seven main categories of mistakes. Overall, the mistakes can be classified as

    • Bugs
    • Needless complexity
    • Weaker readability
    • Suboptimal or unidiomatic organization
    • Lack of API convenience
    • Under-optimized code
    • Lack of productivity

    We introduce each mistake category next.

    "},{"location":"chapter-1/#bugs","title":"Bugs","text":"

    The first type of mistake and probably the most obvious is software bugs. In 2020, a study conducted by Synopsys estimated the cost of software bugs in the U.S. alone to be over $2 trillion. 3

    Furthermore, bugs can also lead to tragic impacts. We can, for example, mention cases such as Therac-25, a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL). Because of a race condition, the machine gave its patients radiation doses that were hundreds of times greater than expected, leading to the death of three patients. Hence, software bugs aren\u2019t only about money. As developers, we should remember how impactful our jobs are.

    This book covers plenty of cases that could lead to various software bugs, including data races, leaks, logic errors, and other defects. Although accurate tests should be a way to discover such bugs as early as possible, we may sometimes miss cases because of different factors such as time constraints or complexity. Therefore, as a Go developer, it\u2019s essential to make sure we avoid common bugs.

    "},{"location":"chapter-1/#needless-complexity","title":"Needless complexity","text":"

    The next category of mistakes is related to unnecessary complexity. A significant part of software complexity comes from the fact that, as developers, we strive to think about imaginary futures. Instead of solving concrete problems right now, it can be tempting to build evolutionary software that could tackle whatever future use case arises. However, this leads to more drawbacks than benefits in most cases because it can make a codebase more complex to understand and reason about.

    Getting back to Go, we can think of plenty of use cases where developers might be tempted to design abstractions for future needs, such as interfaces or generics. This book discusses topics where we should remain careful not to harm a codebase with needless complexity.

    "},{"location":"chapter-1/#weaker-readability","title":"Weaker readability","text":"

    Another kind of mistake is to weaken readability. As Robert C. Martin wrote in his book Clean Code: A Handbook of Agile Software Craftsmanship, the ratio of time spent reading versus writing is well over 10 to 1. Most of us started to program on solo projects where readability wasn\u2019t that important. However, today\u2019s software engineering is programming with a time dimension: making sure we can still work with and maintain an application months, years, or perhaps even decades later.

    When programming in Go, we can make many mistakes that can harm readability. These mistakes may include nested code, data type representations, or not using named result parameters in some cases. Throughout this book, we will learn how to write readable code and care for future readers (including our future selves).

    "},{"location":"chapter-1/#suboptimal-or-unidiomatic-organization","title":"Suboptimal or unidiomatic organization","text":"

    Be it while working on a new project or because we acquire inaccurate reflexes, another type of mistake is organizing our code and a project suboptimally and unidiomatically. Such issues can make a project harder to reason about and maintain. This book covers some of these common mistakes in Go. For example, we\u2019ll look at how to structure a project and deal with utility packages or init functions. All in all, looking at these mistakes should help us organize our code and projects more efficiently and idiomatically.

    "},{"location":"chapter-1/#lack-of-api-convenience","title":"Lack of API convenience","text":"

    Making common mistakes that weaken how convenient an API is for our clients is another type of mistake. If an API isn\u2019t user-friendly, it will be less expressive and, hence, harder to understand and more error-prone.

    We can think about many situations such as overusing any types, using the wrong creational pattern to deal with options, or blindly applying standard practices from object-oriented programming that affect the usability of our APIs. This book covers common mistakes that prevent us from exposing convenient APIs for our users.

    "},{"location":"chapter-1/#under-optimized-code","title":"Under-optimized code","text":"

    Under-optimized code is another type of mistake made by developers. It can happen for various reasons, such as not understanding language features or even a lack of fundamental knowledge. Performance is one of the most obvious impacts of this mistake, but not the only one.

    We can think about optimizing code for other goals, such as accuracy. For example, this book provides some common techniques to ensure that floating-point operations are accurate. Meanwhile, we will cover plenty of cases that can negatively impact performance code because of poorly parallelized executions, not knowing how to reduce allocations, or the impacts of data alignment, for example. We will tackle optimization via different prisms.

    "},{"location":"chapter-1/#lack-of-productivity","title":"Lack of productivity","text":"

    In most cases, what\u2019s the best language we can choose when working on a new project? The one we\u2019re the most productive with. Being comfortable with how a language works and exploiting it to get the best out of it is crucial to reach proficiency.

    In this book, we will cover many cases and concrete examples that will help us to be more productive while working in Go. For instance, we\u2019ll look at writing efficient tests to ensure that our code works, relying on the standard library to be more effective, and getting the best out of the profiling tools and linters. Now, it\u2019s time to delve into those 100 common Go mistakes.

    "},{"location":"chapter-1/#summary","title":"Summary","text":"
    • Go is a modern programming language that enables developer productivity, which is crucial for most companies today.
    • Go is simple to learn but not easy to master. This is why we need to deepen our knowledge to make the most effective use of the language.
    • Learning via mistakes and concrete examples is a powerful way to be proficient in a language. This book will accelerate our path to proficiency by exploring 100 common mistakes.
    1. J. S. Moser, H. S. Schroder, et al., \u201cMind Your Errors: Evidence for a Neural Mechanism Linking Growth Mindset to Adaptive Posterror Adjustments,\u201d Psychological Science, vol. 22, no. 12, pp. 1484\u20131489, Dec. 2011.\u00a0\u21a9

    2. J. Metcalfe, \u201cLearning from Errors,\u201d Annual Review of Psychology, vol. 68, pp. 465\u2013489, Jan. 2017.\u00a0\u21a9

    3. Synopsys, \u201cThe Cost of Poor Software Quality in the US: A 2020 Report.\u201d 2020. https://news.synopsys.com/2021-01-06-Synopsys-Sponsored-CISQ-Research-Estimates-Cost-of-Poor-Software-Quality-in-the-US-2-08-Trillion-in-2020.\u00a0\u21a9

    "},{"location":"community/","title":"Community","text":"

    Thanks to all the contributors:

    If you want to get involved, I'm looking for volunteers to summarize the remaining mistakes (GitHub issue #43) \ud83d\ude4f

    "},{"location":"external/","title":"External Resources","text":""},{"location":"external/#english","title":"English","text":""},{"location":"external/#the-best-golang-book-prime-reacts","title":"The Best Golang Book | Prime Reacts","text":""},{"location":"external/#book-review-100-go-mistakes-and-how-to-avoid-them","title":"Book Review: 100 Go Mistakes (And How to Avoid Them)","text":"

    Post

    "},{"location":"external/#the-most-useful-book-for-a-go-programmer","title":"The Most Useful Book for a Go Programmer?","text":""},{"location":"external/#how-to-make-mistakes-in-go-go-time-190","title":"How to make mistakes in Go - Go Time #190","text":"
    • Episode
    • Spotify
    "},{"location":"external/#go-is-amazing","title":"Go is AMAZING","text":""},{"location":"external/#8lu-100-test-coverage","title":"8LU - 100% Test Coverage","text":""},{"location":"external/#some-tips-i-learned-from-100-mistakes-in-go","title":"Some Tips I learned from 100 Mistakes in Go","text":"

    Post

    "},{"location":"external/#what-can-be-summarized-from-100-go-mistakes","title":"What can be summarized from 100 Go Mistakes?","text":"

    Post

    "},{"location":"external/#chinese","title":"Chinese","text":""},{"location":"external/#100-go-mistakes-and-how-to-avoid-them","title":"\u6df1\u5ea6\u9605\u8bfb\u4e4b\u300a100 Go Mistakes and How to Avoid Them","text":"

    Post

    "},{"location":"external/#100-go-mistakes","title":"100 Go Mistakes \u968f\u8bb0","text":"

    Post

    "},{"location":"external/#go","title":"\u6211\u4e3a\u4ec0\u4e48\u653e\u5f03Go\u8bed\u8a00\uff1f","text":"

    Post

    "},{"location":"external/#japanese","title":"Japanese","text":""},{"location":"external/#go100-go-mistakes-and-how-to-avoid-them","title":"\u6700\u8fd1\u8aad\u3093\u3060Go\u8a00\u8a9e\u306e\u672c\u306e\u7d39\u4ecb\uff1a100 Go Mistakes and How to Avoid Them","text":"

    Post

    "},{"location":"external/#100-go-mistakes-and-how-to-avoid-them_1","title":"\u300e100 Go Mistakes and How to Avoid Them\u300f\u3092\u8aad\u3080","text":"

    Post

    "},{"location":"external/#portuguese","title":"Portuguese","text":""},{"location":"external/#um-otimo-livro-para-programadores-go","title":"Um \u00d3TIMO livro para programadores Go","text":""},{"location":"ja/","title":"Go\u8a00\u8a9e\u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044","text":"

    \u3053\u306e\u30da\u30fc\u30b8\u306f\u300e100 Go Mistakes\u300f\u306e\u5185\u5bb9\u3092\u307e\u3068\u3081\u305f\u3082\u306e\u3067\u3059\u3002\u4e00\u65b9\u3067\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u958b\u304b\u308c\u305f\u30da\u30fc\u30b8\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u300c\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u300d\u304c\u65b0\u305f\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3079\u304d\u3060\u3068\u304a\u8003\u3048\u3067\u3057\u305f\u3089 community mistake issue \u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u6ce8\u610f

    \u73fe\u5728\u3001\u5927\u5e45\u306b\u591a\u304f\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8ffd\u52a0\u3057\u3066\u5f37\u5316\u3057\u3066\u3044\u308b\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u95b2\u89a7\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u307e\u3060\u958b\u767a\u4e2d\u3067\u3059\u3002\u554f\u984c\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u306f\u3069\u3046\u305e\u6c17\u8efd\u306bPR\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    "},{"location":"ja/#_1","title":"\u30b3\u30fc\u30c9\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210","text":""},{"location":"ja/#1","title":"\u610f\u56f3\u7684\u3067\u306a\u3044\u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0 (#1)","text":"\u8981\u7d04

    \u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u3092\u907f\u3051\u308b\u3053\u3068\u306f\u3001\u8aa4\u3063\u305f\u5909\u6570\u306e\u53c2\u7167\u3084\u8aad\u307f\u624b\u306e\u6df7\u4e71\u3092\u9632\u304e\u307e\u3059\u3002

    \u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u306f\u3001\u5909\u6570\u540d\u304c\u30d6\u30ed\u30c3\u30af\u5185\u3067\u518d\u5ba3\u8a00\u3055\u308c\u308b\u3053\u3068\u3067\u751f\u3058\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u9593\u9055\u3044\u3092\u5f15\u304d\u8d77\u3053\u3057\u3084\u3059\u304f\u3057\u307e\u3059\u3002\u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u3092\u7981\u6b62\u3059\u308b\u304b\u3069\u3046\u304b\u306f\u500b\u4eba\u306e\u597d\u307f\u306b\u3088\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30a8\u30e9\u30fc\u306b\u5bfe\u3057\u3066 err \u306e\u3088\u3046\u306a\u65e2\u5b58\u306e\u5909\u6570\u540d\u3092\u518d\u5229\u7528\u3059\u308b\u3068\u4fbf\u5229\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3068\u306f\u3044\u3048\u3001\u30b3\u30fc\u30c9\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u3082\u306e\u306e\u3001\u5024\u3092\u53d7\u3051\u53d6\u3063\u305f\u5909\u6570\u304c\u4e88\u671f\u3057\u305f\u3082\u306e\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u30b7\u30ca\u30ea\u30aa\u306b\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u539f\u5247\u3068\u3057\u3066\u5f15\u304d\u7d9a\u304d\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#2","title":"\u4e0d\u5fc5\u8981\u306b\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30b3\u30fc\u30c9 (#2)","text":"\u8981\u7d04

    \u30cd\u30b9\u30c8\u304c\u6df1\u304f\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u3001\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u5de6\u5074\u306b\u63c3\u3048\u308b\u3053\u3068\u3067\u30e1\u30f3\u30bf\u30eb\u30b3\u30fc\u30c9\u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002

    \u4e00\u822c\u7684\u306b\u3001\u95a2\u6570\u304c\u3088\u308a\u6df1\u3044\u30cd\u30b9\u30c8\u3092\u8981\u6c42\u3059\u308b\u307b\u3069\u3001\u8aad\u3093\u3067\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u30eb\u30fc\u30eb\u306e\u9069\u7528\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002

    • if \u30d6\u30ed\u30c3\u30af\u304c\u8fd4\u3055\u308c\u308b\u3068\u304d\u3001\u3059\u3079\u3066\u306e\u5834\u5408\u306b\u304a\u3044\u3066 else \u30d6\u30ed\u30c3\u30af\u3092\u7701\u7565\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u66f8\u304f\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
    if foo() {\n    // ...\n    return true\n} else {\n    // ...\n}\n

    \u4ee3\u308f\u308a\u306b\u3001\u6b21\u306e\u3088\u3046\u306b else \u30d6\u30ed\u30c3\u30af\u3092\u7701\u7565\u3057\u307e\u3059\u3002

    if foo() {\n    // ...\n    return true\n}\n// ...\n
    • \u30ce\u30f3\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3067\u3082\u3053\u306e\u30ed\u30b8\u30c3\u30af\u306b\u5f93\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
    if s != \"\" {\n    // ...\n} else {\n    return errors.New(\"empty string\")\n}\n

    \u3053\u3053\u3067\u306f\u3001\u7a7a\u306e s \u304c\u30ce\u30f3\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u8868\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6b21\u306e\u3088\u3046\u306b\u6761\u4ef6\u3092\u3072\u3063\u304f\u308a\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    if s == \"\" {\n    return errors.New(\"empty string\")\n}\n// ...\n

    \u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u91cd\u8981\u306a\u8ab2\u984c\u3067\u3059\u3002\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d6\u30ed\u30c3\u30af\u306e\u6570\u3092\u6e1b\u3089\u3059\u3088\u3046\u52aa\u3081\u3001\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u5de6\u5074\u306b\u63c3\u3048\u3001\u3067\u304d\u308b\u3060\u3051\u65e9\u304f\u623b\u308b\u3053\u3068\u304c\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u5177\u4f53\u7684\u306a\u624b\u6bb5\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#init-3","title":"init\u95a2\u6570\u306e\u8aa4\u7528 (#3)","text":"\u8981\u7d04

    \u5909\u6570\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u304d\u306f\u3001init\u95a2\u6570\u306e\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u5236\u9650\u3055\u308c\u3066\u304a\u308a\u3001\u30b9\u30c6\u30fc\u30c8\u306e\u51e6\u7406\u3068\u30c6\u30b9\u30c8\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u306f\u7279\u5b9a\u306e\u95a2\u6570\u3068\u3057\u3066\u51e6\u7406\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002

    init\u95a2\u6570\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b9\u30c6\u30fc\u30c8\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002\u5f15\u6570\u3092\u53d6\u3089\u305a\u3001\u7d50\u679c\u3082\u8fd4\u3057\u307e\u305b\u3093\uff08 func() \u95a2\u6570\uff09\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u521d\u671f\u5316\u3055\u308c\u308b\u3068\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u306e\u3059\u3079\u3066\u306e\u5b9a\u6570\u304a\u3088\u3073\u5909\u6570\u306e\u5ba3\u8a00\u304c\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u6b21\u306b\u3001init\u95a2\u6570\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002

    init\u95a2\u6570\u306f\u3044\u304f\u3064\u304b\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30a8\u30e9\u30fc\u51e6\u7406\u304c\u5236\u9650\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
    • \u30c6\u30b9\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5\u304c\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001\u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u306e\u7bc4\u56f2\u3067\u306f\u5fc5\u8981\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff09\u3002
    • \u521d\u671f\u5316\u3067\u30b9\u30c6\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    init\u95a2\u6570\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u9759\u7684\u69cb\u6210\u306e\u5b9a\u7fa9\u306a\u3069\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5f79\u7acb\u3064\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306e\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u51e6\u7406\u306f\u7279\u5b9a\u306e\u95a2\u6570\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#4","title":"\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u4e71\u7528 (#4)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u3001\u6163\u7528\u7684\u306b\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u4f7f\u7528\u3092\u5f37\u5236\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u5229\u3092\u91cd\u8996\u3057\u3001\u52b9\u7387\u6027\u3068\u7279\u5b9a\u306e\u6163\u7fd2\u306b\u5f93\u3046\u3053\u3068\u3068\u306e\u9593\u306e\u9069\u5207\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3001\u9032\u3080\u3079\u304d\u9053\u3067\u3042\u308b\u306f\u305a\u3067\u3059\u3002

    \u30c7\u30fc\u30bf\u306e\u30ab\u30d7\u30bb\u30eb\u5316\u3068\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5024\u307e\u305f\u306f\u72b6\u614b\u3092\u96a0\u3059\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306f\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u4e0a\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u30ab\u30d7\u30bb\u30eb\u5316\u3092\u53ef\u80fd\u306b\u3059\u308b\u624b\u6bb5\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u4e00\u90e8\u306e\u8a00\u8a9e\u3067\u898b\u3089\u308c\u308b\u3088\u3046\u306a\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u81ea\u52d5\u30b5\u30dd\u30fc\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u69cb\u9020\u4f53\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u306f\u5fc5\u9808\u3067\u3082\u6163\u7528\u7684\u3067\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u5024\u3092\u3082\u305f\u3089\u3055\u306a\u3044\u69cb\u9020\u4f53\u306e\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u3067\u30b3\u30fc\u30c9\u3092\u57cb\u3081\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u5229\u3092\u91cd\u8996\u3057\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3067\u6642\u306b\u306f\u8b70\u8ad6\u306e\u4f59\u5730\u304c\u306a\u3044\u3068\u8003\u3048\u3089\u308c\u3066\u3044\u308b\u6163\u7fd2\u306b\u5f93\u3046\u3053\u3068\u3068\u3001\u52b9\u7387\u6027\u3068\u306e\u9593\u306e\u9069\u5207\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3088\u3046\u52aa\u3081\u308b\u3079\u304d\u3067\u3059\u3002

    Go\u8a00\u8a9e\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3055\u3092\u542b\u3080\u591a\u304f\u306e\u7279\u6027\u3092\u8003\u616e\u3057\u3066\u8a2d\u8a08\u3055\u308c\u305f\u72ec\u81ea\u306e\u8a00\u8a9e\u3067\u3042\u308b\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u5fc5\u8981\u6027\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u307e\u305f\u306f\u524d\u8ff0\u306e\u3088\u3046\u306b\u3001\u524d\u65b9\u4e92\u63db\u6027\u3092\u4fdd\u8a3c\u3057\u306a\u304c\u3089\u5c06\u6765\u306e\u5fc5\u8981\u6027\u304c\u4e88\u6e2c\u3055\u308c\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u554f\u984c\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    "},{"location":"ja/#5","title":"\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u6c5a\u67d3 (#5)","text":"\u8981\u7d04

    \u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u3059\u3002\u4e0d\u5fc5\u8981\u306a\u8907\u96d1\u3055\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u5fc5\u8981\u306b\u306a\u308b\u3068\u4e88\u6e2c\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u5fc5\u8981\u306b\u306a\u3063\u305f\u3068\u304d\u306b\u4f5c\u6210\u3059\u308b\u304b\u3001\u5c11\u306a\u304f\u3068\u3082\u62bd\u8c61\u5316\u304c\u6709\u52b9\u3067\u3042\u308b\u3053\u3068\u3092\u8a3c\u660e\u3067\u304d\u308b\u5834\u5408\u306b\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u52d5\u4f5c\u3092\u6307\u5b9a\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u8907\u6570\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5b9f\u88c5\u3067\u304d\u308b\u5171\u901a\u9805\u3092\u62bd\u51fa\u3059\u308b\u305f\u3081\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Go\u8a00\u8a9e\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u5927\u304d\u304f\u7570\u306a\u308b\u306e\u306f\u3001\u6697\u9ed9\u7684\u306b\u6e80\u305f\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 X \u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 Y \u3092\u5b9f\u88c5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3059 implements \u306e\u3088\u3046\u306a\u660e\u793a\u7684\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u4e00\u822c\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u4fa1\u5024\u3092\u3082\u305f\u3089\u3059\u3068\u8003\u3048\u3089\u308c\u308b\u4e3b\u8981\u306a\u4f7f\u7528\u4f8b\u306f\uff13\u3064\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306f\u3001\u5171\u901a\u306e\u52d5\u4f5c\u3092\u9664\u5916\u3059\u308b\u3001\u4f55\u3089\u304b\u306e\u5206\u96e2\u3092\u4f5c\u6210\u3059\u308b\u3001\u304a\u3088\u3073\u578b\u3092\u7279\u5b9a\u306e\u52d5\u4f5c\u306b\u5236\u9650\u3059\u308b\u3068\u3044\u3046\u3082\u306e\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u306e\u30ea\u30b9\u30c8\u306f\u3059\u3079\u3066\u3092\u7db2\u7f85\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u76f4\u9762\u3059\u308b\u72b6\u6cc1\u306b\u3088\u3063\u3066\u3082\u7570\u306a\u308a\u307e\u3059\u3002

    \u591a\u304f\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u62bd\u8c61\u5316\u3059\u308b\u305f\u3081\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u62bd\u8c61\u5316\u3059\u308b\u3068\u304d\u306e\u4e3b\u306a\u6ce8\u610f\u70b9\u306f\u3001\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3055\u308c\u308b\u3079\u304d\u3067\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3053\u3068\u3067\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u305d\u3046\u3059\u308b\u76f4\u63a5\u306e\u7406\u7531\u304c\u306a\u3044\u9650\u308a\u3001\u30b3\u30fc\u30c9\u5185\u3067\u62bd\u8c61\u5316\u3059\u3079\u304d\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u3063\u3066\u8a2d\u8a08\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u5177\u4f53\u7684\u306a\u30cb\u30fc\u30ba\u3092\u5f85\u3064\u3079\u304d\u3067\u3059\u3002\u5225\u306e\u8a00\u3044\u65b9\u3092\u3059\u308c\u3070\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u5fc5\u8981\u306b\u306a\u308b\u3068\u4e88\u6e2c\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u5fc5\u8981\u306b\u306a\u3063\u305f\u3068\u304d\u306b\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u904e\u5ea6\u306a\u4f7f\u7528\u3092\u3057\u305f\u5834\u5408\u306e\u4e3b\u306a\u554f\u984c\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002\u7b54\u3048\u306f\u3001\u30b3\u30fc\u30c9\u30d5\u30ed\u30fc\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u3067\u3059\u3002\u5f79\u306b\u7acb\u305f\u306a\u3044\u9593\u63a5\u53c2\u7167\u3092\u8ffd\u52a0\u3057\u3066\u3082\u4f55\u306e\u4fa1\u5024\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u306f\u4fa1\u5024\u306e\u306a\u3044\u62bd\u8c61\u5316\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u3001\u7406\u89e3\u3057\u3001\u63a8\u8ad6\u3059\u308b\u3053\u3068\u3092\u3055\u3089\u306b\u56f0\u96e3\u306b\u3057\u307e\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u660e\u78ba\u306a\u7406\u7531\u304c\u306a\u304f\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u3088\u3063\u3066\u30b3\u30fc\u30c9\u304c\u3069\u306e\u3088\u3046\u306b\u6539\u5584\u3055\u308c\u308b\u304b\u304c\u4e0d\u660e\u77ad\u306a\u5834\u5408\u306f\u3001\u305d\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u76ee\u7684\u306b\u7570\u8b70\u3092\u5531\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b9f\u88c5\u3092\u76f4\u63a5\u547c\u3073\u51fa\u3059\u306e\u3082\u4e00\u3064\u306e\u624b\u3067\u3059\u3002

    \u30b3\u30fc\u30c9\u5185\u3067\u62bd\u8c61\u5316\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff08\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff09\u3002\u5f8c\u3067\u5fc5\u8981\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3082\u306e\u3092\u8003\u616e\u3057\u3001\u5b8c\u74a7\u306a\u62bd\u8c61\u5316\u30ec\u30d9\u30eb\u3092\u63a8\u6e2c\u3057\u3066\u3001\u79c1\u305f\u3061\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u8005\u306f\u30b3\u30fc\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30b3\u30fc\u30c9\u304c\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3067\u6c5a\u67d3\u3055\u308c\u3001\u8aad\u307f\u306b\u304f\u304f\u306a\u308b\u305f\u3081\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002

    \u30ed\u30d6\u30fb\u30d1\u30a4\u30af

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u30c7\u30b6\u30a4\u30f3\u3059\u308b\u306a\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u898b\u3064\u3051\u51fa\u305b\u3002

    \u62bd\u8c61\u7684\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3088\u3046\u3068\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4eca\u89e3\u6c7a\u3059\u3079\u304d\u3053\u3068\u3092\u89e3\u6c7a\u3057\u307e\u3057\u3087\u3046\u3002\u6700\u5f8c\u306b\u91cd\u8981\u306a\u3053\u3068\u3067\u3059\u304c\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u3088\u3063\u3066\u30b3\u30fc\u30c9\u304c\u3069\u306e\u3088\u3046\u306b\u6539\u5584\u3055\u308c\u308b\u304b\u304c\u4e0d\u660e\u77ad\u306a\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#6","title":"\u751f\u7523\u8005\u5074\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 (#6)","text":"\u8981\u7d04

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u4fdd\u6301\u3059\u308b\u3053\u3068\u3067\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u6697\u9ed9\u7684\u306b\u6e80\u305f\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u660e\u793a\u7684\u306a\u5b9f\u88c5\u3092\u6301\u3064\u8a00\u8a9e\u3068\u6bd4\u8f03\u3057\u3066\u5927\u304d\u306a\u5909\u5316\u3092\u3082\u305f\u3089\u3059\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u5f93\u3046\u3079\u304d\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8aac\u660e\u3057\u305f\u3082\u306e\u2015\u2015\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u2015\u2015\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3059\u3079\u3066\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u7279\u5b9a\u306e\u62bd\u8c61\u5316\u3092\u5f37\u5236\u3059\u308b\u306e\u306f\u751f\u7523\u8005\u306e\u5f79\u5272\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001\u4f55\u3089\u304b\u306e\u5f62\u5f0f\u306e\u62bd\u8c61\u5316\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3057\u3001\u305d\u306e\u30cb\u30fc\u30ba\u306b\u6700\u9069\u306a\u62bd\u8c61\u5316\u30ec\u30d9\u30eb\u3092\u6c7a\u5b9a\u3059\u308b\u306e\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8cac\u4efb\u3067\u3059\u3002

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u6d88\u8cbb\u8005\u5074\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u7279\u5b9a\u306e\u72b6\u6cc1\uff08\u305f\u3068\u3048\u3070\u3001\u62bd\u8c61\u5316\u304c\u6d88\u8cbb\u8005\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3053\u3068\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u2015\u2015\u4e88\u6e2c\u306f\u3057\u3066\u3044\u306a\u3044\u2015\u2015\u5834\u5408\uff09\u3067\u306f\u3001\u305d\u308c\u3092\u751f\u7523\u8005\u5074\u3067\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3057\u305f\u5834\u5408\u3001\u53ef\u80fd\u306a\u9650\u308a\u6700\u5c0f\u9650\u306b\u6291\u3048\u3001\u518d\u5229\u7528\u53ef\u80fd\u6027\u3092\u9ad8\u3081\u3001\u3088\u308a\u7c21\u5358\u306b\u69cb\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u52aa\u3081\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#7","title":"\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059 (#7)","text":"\u8981\u7d04

    \u67d4\u8edf\u6027\u306b\u554f\u984c\u304c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u95a2\u6570\u306f\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u306a\u304f\u5177\u4f53\u7684\u200b\u200b\u306a\u5b9f\u88c5\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u9006\u306b\u3001\u95a2\u6570\u306f\u53ef\u80fd\u306a\u9650\u308a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u53d7\u3051\u5165\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u306a\u304f\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3044\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b\u3088\u308a\u8a2d\u8a08\u304c\u3044\u3063\u305d\u3046\u8907\u96d1\u306b\u306a\u308a\u3001\u3059\u3079\u3066\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u540c\u3058\u62bd\u8c61\u5316\u306b\u4f9d\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u67d4\u8edf\u6027\u306b\u6b20\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u7d50\u8ad6\u306f\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002\u62bd\u8c61\u5316\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3053\u3068\u304c\uff08\u4e88\u6e2c\u3055\u308c\u308b\u3067\u306f\u306a\u304f\uff09\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u3082\u3088\u3044\u3067\u3057\u3087\u3046\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u3001\u62bd\u8c61\u5316\u3092\u5f37\u5236\u3059\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u767a\u898b\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5b9f\u88c5\u3092\u62bd\u8c61\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3067\u3082\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u305d\u308c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#any-8","title":"any \u306f\u4f55\u3082\u8a00\u308f\u306a\u3044 (#8)","text":"\u8981\u7d04

    json.Marshal \u306a\u3069\u8003\u3048\u3046\u308b\u3059\u3079\u3066\u306e\u578b\u3092\u53d7\u3051\u5165\u308c\u308b\u304b\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u306e\u307f any \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u3001any \u306f\u610f\u5473\u306e\u3042\u308b\u60c5\u5831\u3092\u63d0\u4f9b\u305b\u305a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u4efb\u610f\u306e\u30c7\u30fc\u30bf\u578b\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3092\u8a31\u53ef\u3059\u308b\u305f\u3081\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    any \u578b\u306f\u3001\u8003\u3048\u3046\u308b\u3059\u3079\u3066\u306e\u578b\u3092\u53d7\u3051\u5165\u308c\u308b\u304b\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\uff08\u305f\u3068\u3048\u3070\u3001\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u3084\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u5834\u5408\uff09\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u539f\u5247\u3068\u3057\u3066\u30b3\u30fc\u30c9\u3092\u904e\u5ea6\u306b\u4e00\u822c\u5316\u3059\u308b\u3053\u3068\u306f\u4f55\u3068\u3057\u3066\u3082\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306e\u8868\u73fe\u529b\u306a\u3069\u306e\u4ed6\u306e\u5074\u9762\u304c\u5411\u4e0a\u3059\u308b\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5c11\u3057\u91cd\u8907\u3055\u305b\u305f\u307b\u3046\u304c\u826f\u3044\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#9","title":"\u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u30b9\u3092\u3044\u3064\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#9)","text":"\u8981\u7d04

    \u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u30b9\u3068\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8981\u7d20\u3084\u52d5\u4f5c\u3092\u9664\u5916\u3059\u308b\u305f\u3081\u306e\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u6642\u671f\u5c1a\u65e9\u306b\u4f7f\u7528\u305b\u305a\u3001\u5177\u4f53\u7684\u306a\u5fc5\u8981\u6027\u304c\u308f\u304b\u3063\u305f\u5834\u5408\u306b\u306e\u307f\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3068\u8907\u96d1\u3055\u304c\u751f\u3058\u307e\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#10","title":"\u578b\u306e\u57cb\u3081\u8fbc\u307f\u3067\u8d77\u3053\u308a\u3046\u308b\u554f\u984c\u3092\u628a\u63e1\u3057\u3066\u3044\u306a\u3044 (#10)","text":"\u8981\u7d04

    \u578b\u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u4e00\u90e8\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u975e\u8868\u793a\u306b\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u69cb\u9020\u4f53\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001Go\u8a00\u8a9e\u306f\u578b\u3092\u57cb\u3081\u8fbc\u3080\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u578b\u57cb\u3081\u8fbc\u307f\u306e\u610f\u5473\u3092\u3059\u3079\u3066\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\u3068\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u578b\u3092\u57cb\u3081\u8fbc\u3080\u65b9\u6cd5\u3001\u305d\u308c\u304c\u3082\u305f\u3089\u3059\u3082\u306e\u3001\u304a\u3088\u3073\u8003\u3048\u3089\u308c\u308b\u554f\u984c\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u540d\u524d\u306a\u3057\u3067\u5ba3\u8a00\u3055\u308c\u305f\u69cb\u9020\u4f53\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u57cb\u3081\u8fbc\u307f\u3068\u547c\u3070\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002

    type Foo struct {\n    Bar // \u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\n}\n\ntype Bar struct {\n    Baz int\n}\n

    Foo \u69cb\u9020\u4f53\u3067\u306f\u3001Bar \u578b\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u540d\u524d\u306a\u3057\u3067\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u308c\u306f\u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u3059\u3002

    \u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u57cb\u3081\u8fbc\u307f\u578b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u6607\u683c\u3057\u307e\u3059\u3002Bar \u306b\u306f Baz \u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f Foo \u306b\u6607\u683c\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001Foo \u304b\u3089 Baz \u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    \u578b\u306e\u57cb\u3081\u8fbc\u307f\u306b\u3064\u3044\u3066\u4f55\u304c\u8a00\u3048\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u307e\u305a\u3001\u3053\u308c\u304c\u5fc5\u8981\u306b\u306a\u308b\u3053\u3068\u306f\u307b\u3068\u3093\u3069\u306a\u304f\u3001\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u304c\u4f55\u3067\u3042\u308c\u3001\u304a\u305d\u3089\u304f\u578b\u57cb\u3081\u8fbc\u307f\u306a\u3057\u3067\u3082\u540c\u69d8\u306b\u89e3\u6c7a\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u578b\u306e\u57cb\u3081\u8fbc\u307f\u306f\u4e3b\u306b\u5229\u4fbf\u6027\u3092\u76ee\u7684\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u305d\u308c\u306f\u52d5\u4f5c\u3092\u6607\u683c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002

    \u578b\u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e 2 \u3064\u306e\u4e3b\u306a\u5236\u7d04\u3092\u5ff5\u982d\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306e\u7cd6\u8863\u69cb\u6587\u3068\u3057\u3066\u306e\u307f\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff08 Foo.Bar.Baz() \u306e\u4ee3\u308f\u308a\u306b Foo.Baz() \u306a\u3069\uff09\u3002 \u3053\u308c\u304c\u552f\u4e00\u306e\u6839\u62e0\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u5185\u90e8\u578b\u3092\u57cb\u3081\u8fbc\u307e\u305a\u3001\u4ee3\u308f\u308a\u306b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\u3002
    • \u5916\u90e8\u304b\u3089\u96a0\u3057\u305f\u3044\u30c7\u30fc\u30bf\uff08\u30d5\u30a3\u30fc\u30eb\u30c9\uff09\u3084\u52d5\u4f5c\uff08\u30e1\u30bd\u30c3\u30c9\uff09\u3092\u6607\u683c\u3057\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u305f\u3068\u3048\u3070\u3001\u69cb\u9020\u4f53\u306b\u5bfe\u3057\u3066\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u307e\u307e\u306b\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u30ed\u30c3\u30af\u52d5\u4f5c\u306b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002

    \u3053\u308c\u3089\u306e\u5236\u7d04\u3092\u5ff5\u982d\u306b\u7f6e\u3044\u3066\u578b\u57cb\u3081\u8fbc\u307f\u3092\u610f\u8b58\u7684\u306b\u4f7f\u7528\u3059\u308b\u3068\u3001\u8ffd\u52a0\u306e\u8ee2\u9001\u30e1\u30bd\u30c3\u30c9\u306b\u3088\u308b\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u56de\u907f\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u898b\u305f\u76ee\u3060\u3051\u3092\u76ee\u7684\u3068\u3057\u305f\u308a\u3001\u96a0\u3059\u3079\u304d\u8981\u7d20\u3092\u6607\u683c\u3057\u305f\u308a\u3057\u306a\u3044\u3088\u3046\u306b\u6ce8\u610f\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#functional-options-11","title":"Functional Options \u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#11)","text":"\u8981\u7d04

    API \u306b\u9069\u3057\u305f\u65b9\u6cd5\u3067\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4fbf\u5229\u306b\u51e6\u7406\u3059\u308b\u306b\u306f\u3001Functional Options \u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002

    \u3055\u307e\u3056\u307e\u306a\u5b9f\u88c5\u65b9\u6cd5\u304c\u5b58\u5728\u3057\u3001\u591a\u5c11\u306e\u9055\u3044\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u4e3b\u306a\u8003\u3048\u65b9\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002

    • \u672a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306e\u69cb\u9020\u4f53\u306f\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002
    • \u5404\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u540c\u3058\u578b\u3001type Option func(options *options) \u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001WithPort \u306f\u30dd\u30fc\u30c8\u3092\u8868\u3059 int \u5f15\u6570\u3092\u53d7\u3051\u53d6\u308a\u3001options \u69cb\u9020\u4f53\u306e\u66f4\u65b0\u65b9\u6cd5\u3092\u8868\u3059 Option \u578b\u3092\u8fd4\u3057\u307e\u3059\u3002

    type options struct {\n  port *int\n}\n\ntype Option func(options *options) error\n\nfunc WithPort(port int) Option {\n  return func(options *options) error {\n    if port < 0 {\n    return errors.New(\"port should be positive\")\n  }\n  options.port = &port\n  return nil\n  }\n}\n\nfunc NewServer(addr string, opts ...Option) ( *http.Server, error) { <1>\n  var options options <2>\n  for _, opt := range opts { <3>\n    err := opt(&options) <4>\n    if err != nil {\n      return nil, err\n    }\n  }\n\n// \u3053\u306e\u6bb5\u968e\u3067\u3001options \u69cb\u9020\u4f53\u304c\u69cb\u7bc9\u3055\u308c\u3001\u69cb\u6210\u304c\u542b\u307e\u308c\u307e\u3059\u3002\n// \u3057\u305f\u304c\u3063\u3066\u3001\u30dd\u30fc\u30c8\u8a2d\u5b9a\u306b\u95a2\u9023\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\n  var port int\n  if options.port == nil {\n    port = defaultHTTPPort\n  } else {\n      if *options.port == 0 {\n      port = randomPort()\n    } else {\n      port = *options.port\n    }\n  }\n\n  // ...\n}\n

    Functional Options \u30d1\u30bf\u30fc\u30f3\u306f\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u624b\u8efd\u3067 API \u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Builder \u30d1\u30bf\u30fc\u30f3\u306f\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u5c0f\u3055\u306a\u6b20\u70b9\uff08\u7a7a\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u69cb\u6210\u69cb\u9020\u4f53\u3092\u6e21\u3055\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3001\u307e\u305f\u306f\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5\u304c\u3042\u307e\u308a\u4fbf\u5229\u3067\u306f\u306a\u3044\uff09\u304c\u3042\u308a\u3001\u3053\u306e\u7a2e\u306e\u554f\u984c\u306b\u304a\u3044\u3066 Functional Options \u30d1\u30bf\u30fc\u30f3\u304cGo\u8a00\u8a9e\u306b\u304a\u3051\u308b\u6163\u7528\u7684\u306a\u5bfe\u51e6\u65b9\u6cd5\u306b\u306a\u308b\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#12","title":"\u8aa4\u3063\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210 (\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u69cb\u6210) (#12)","text":"

    \u5168\u4f53\u7684\u306a\u69cb\u6210\u306b\u95a2\u3057\u3066\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u8003\u3048\u65b9\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3054\u3068\u306b\u6574\u7406\u3059\u3079\u304d\u304b\u3001\u305d\u308c\u3068\u3082\u30ec\u30a4\u30e4\u30fc\u3054\u3068\u306b\u6574\u7406\u3059\u3079\u304d\u304b\u3001\u305d\u308c\u306f\u597d\u307f\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\uff08\u9867\u5ba2\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3001\u5951\u7d04\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306a\u3069\uff09\u3054\u3068\u306b\u30b3\u30fc\u30c9\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3092\u9078\u3076\u5834\u5408\u3082\u3042\u308c\u3070\u3001\u516d\u89d2\u5f62\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3068\u3001\u6280\u8853\u5c64\u3054\u3068\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3092\u9078\u3076\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u304c\u884c\u3046\u6c7a\u5b9a\u304c\u4e00\u8cab\u3057\u3066\u3044\u308b\u9650\u308a\u3001\u305d\u308c\u304c\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u9069\u5408\u3059\u308b\u306a\u3089\u3001\u305d\u308c\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u95a2\u3057\u3066\u306f\u3001\u5f93\u3046\u3079\u304d\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u304c\u8907\u6570\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u904e\u5ea6\u306b\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u6642\u671f\u5c1a\u65e9\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u5b8c\u74a7\u306a\u69cb\u9020\u3092\u6700\u521d\u304b\u3089\u7121\u7406\u306b\u4f5c\u308d\u3046\u3068\u3059\u308b\u3088\u308a\u3082\u3001\u5358\u7d14\u306a\u69cb\u6210\u3092\u4f7f\u7528\u3057\u3001\u305d\u306e\u5185\u5bb9\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u767a\u5c55\u3055\u305b\u308b\u307b\u3046\u304c\u826f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u7c92\u5ea6\u3082\u8003\u616e\u3059\u3079\u304d\u91cd\u8981\u306a\u70b9\u3067\u3059\u3002 1 \u3064\u307e\u305f\u306f 2 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u3092\u542b\u3080\u6570\u5341\u306e\u30ca\u30ce\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u304a\u305d\u3089\u304f\u3053\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u8ad6\u7406\u7684\u306a\u63a5\u7d9a\u306e\u4e00\u90e8\u304c\u629c\u3051\u843d\u3061\u3001\u8aad\u307f\u624b\u306b\u3068\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u7406\u89e3\u3057\u306b\u304f\u304f\u306a\u308b\u304b\u3089\u3067\u3059\u3002\u9006\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\u610f\u5473\u3092\u8584\u3081\u308b\u3088\u3046\u306a\u5de8\u5927\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3082\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u540d\u524d\u4ed8\u3051\u3082\u6ce8\u610f\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\uff08\u958b\u767a\u8005\u306a\u3089\uff09\u8ab0\u3082\u304c\u77e5\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u540d\u524d\u3092\u4ed8\u3051\u308b\u306e\u306f\u96e3\u3057\u3044\u3067\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7406\u89e3\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u542b\u307e\u308c\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u63d0\u4f9b\u3059\u308b\u3082\u306e\u306b\u57fa\u3065\u3044\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30cd\u30fc\u30df\u30f3\u30b0\u306b\u306f\u610f\u5473\u306e\u3042\u308b\u3082\u306e\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306f\u77ed\u304f\u3001\u7c21\u6f54\u3067\u3001\u8868\u73fe\u529b\u8c4a\u304b\u3067\u3001\u6163\u4f8b\u306b\u3088\u308a\u5358\u4e00\u306e\u5c0f\u6587\u5b57\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u4f55\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306e\u30eb\u30fc\u30eb\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u7d50\u5408\u3092\u6e1b\u3089\u3057\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u308b\u4e0d\u8981\u306a\u8981\u7d20\u3092\u975e\u8868\u793a\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3082\u306e\u3092\u3067\u304d\u308b\u9650\u308a\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8981\u7d20\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u304b\u3069\u3046\u304b\u4e0d\u660e\u306a\u5834\u5408\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5f8c\u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u304c\u5224\u660e\u3057\u305f\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u8abf\u6574\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u69cb\u9020\u4f53\u3092 encoding/json \u3067\u30a2\u30f3\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u4f8b\u5916\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u69cb\u6210\u3059\u308b\u306e\u306f\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u3053\u3068\u3067\u7dad\u6301\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4fdd\u5b88\u6027\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u306f\u4e00\u8cab\u6027\u3082\u91cd\u8981\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u5185\u3067\u53ef\u80fd\u306a\u9650\u308a\u4e00\u8cab\u6027\u3092\u4fdd\u3064\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    \u88dc\u8db3

    Go \u30c1\u30fc\u30e0\u306f Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7d44\u7e54\u5316/\u69cb\u9020\u5316\u306b\u95a2\u3059\u308b\u516c\u5f0f\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092 2023 \u5e74\u306b\u767a\u884c\u3057\u307e\u3057\u305f\uff1a go.dev/doc/modules/layout

    "},{"location":"ja/#13","title":"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210 (#13)","text":"\u8981\u7d04

    \u540d\u524d\u4ed8\u3051\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002common \u3001util \u3001shared \u306e\u3088\u3046\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u3082\u3001\u8aad\u307f\u624b\u306b\u305d\u308c\u307b\u3069\u306e\u4fa1\u5024\u3092\u3082\u305f\u3089\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u3088\u3046\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u610f\u5473\u306e\u3042\u308b\u5177\u4f53\u7684\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306b\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3057\u307e\u3057\u3087\u3046\u3002

    \u307e\u305f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u542b\u307e\u308c\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u63d0\u4f9b\u3059\u308b\u3082\u306e\u306b\u57fa\u3065\u3044\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3068\u3001\u305d\u306e\u8868\u73fe\u529b\u3092\u9ad8\u3081\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u306b\u306a\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#14","title":"\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\u885d\u7a81\u3092\u7121\u8996\u3059\u308b (#14)","text":"\u8981\u7d04

    \u6df7\u4e71\u3001\u3055\u3089\u306b\u306f\u30d0\u30b0\u306b\u3064\u306a\u304c\u308a\u304b\u306d\u306a\u3044\u3001\u5909\u6570\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u540d\u524d\u306e\u885d\u7a81\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u305d\u308c\u305e\u308c\u306b\u4e00\u610f\u306e\u540d\u524d\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u304c\u4e0d\u53ef\u80fd\u306a\u5834\u5408\u306f\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u4fee\u98fe\u5b50\u3092\u5909\u66f4\u3057\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3068\u5909\u6570\u540d\u3092\u533a\u5225\u3059\u308b\u304b\u3001\u3088\u308a\u826f\u3044\u540d\u524d\u3092\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u885d\u7a81\u306f\u3001\u5909\u6570\u540d\u304c\u65e2\u5b58\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3068\u885d\u7a81\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u518d\u5229\u7528\u304c\u59a8\u3052\u3089\u308c\u307e\u3059\u3002\u66d6\u6627\u3055\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u5909\u6570\u540d\u306e\u885d\u7a81\u3092\u9632\u3050\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u885d\u7a81\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u5225\u306e\u610f\u5473\u306e\u3042\u308b\u540d\u524d\u3092\u898b\u3064\u3051\u308b\u304b\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#15","title":"\u30b3\u30fc\u30c9\u306e\u6587\u7ae0\u5316\u304c\u884c\u308f\u308c\u3066\u3044\u306a\u3044 (#15)","text":"\u8981\u7d04

    \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30e1\u30f3\u30c6\u30ca\u304c\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u3092\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u3092\u6587\u7ae0\u5316\u3057\u307e\u3057\u3087\u3046\u3002

    \u6587\u7ae0\u5316\u306f\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u91cd\u8981\u306a\u5074\u9762\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c API \u3092\u3088\u308a\u7c21\u5358\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7dad\u6301\u306b\u3082\u5f79\u7acb\u3061\u307e\u3059\u3002Go\u8a00\u8a9e\u3067\u306f\u3001\u30b3\u30fc\u30c9\u3092\u6163\u7528\u7684\u306a\u3082\u306e\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u307e\u305a\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u6587\u7ae0\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u69cb\u9020\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3001\u95a2\u6570\u306a\u3069\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5834\u5408\u306f\u6587\u7ae0\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6163\u4f8b\u3068\u3057\u3066\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u306e\u540d\u524d\u304b\u3089\u59cb\u307e\u308b\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002

    \u6163\u4f8b\u3068\u3057\u3066\u3001\u5404\u30b3\u30e1\u30f3\u30c8\u306f\u53e5\u8aad\u70b9\u3067\u7d42\u308f\u308b\u5b8c\u5168\u306a\u6587\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u95a2\u6570\uff08\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\uff09\u3092\u6587\u7ae0\u5316\u3059\u308b\u3068\u304d\u306f\u3001\u95a2\u6570\u304c\u3069\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u304b\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u95a2\u6570\u304c\u4f55\u3092\u5b9f\u884c\u3059\u308b\u3064\u3082\u308a\u3067\u3042\u308b\u304b\u3092\u5f37\u8abf\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u306a\u304f\u3001\u95a2\u6570\u3068\u30b3\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066\u3067\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u7406\u60f3\u7684\u306b\u306f\u3001\u5229\u7528\u8005\u304c\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u30b3\u30fc\u30c9\u3092\u898b\u308b\u5fc5\u8981\u304c\u306a\u3044\u307b\u3069\u5341\u5206\u306a\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u5909\u6570\u307e\u305f\u306f\u5b9a\u6570\u3092\u6587\u7ae0\u5316\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u76ee\u7684\u3068\u5185\u5bb9\u3068\u3044\u3046 2 \u3064\u306e\u5074\u9762\u3092\u4f1d\u3048\u308b\u3053\u3068\u304c\u91cd\u8981\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u524d\u8005\u306f\u3001\u5916\u90e8\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3088\u3046\u306b\u3001\u30b3\u30fc\u30c9\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u3057\u3066\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5f8c\u8005\u306f\u5fc5\u305a\u3057\u3082\u516c\u958b\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30e1\u30f3\u30c6\u30ca\u304c\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u76ee\u7684\u3092\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u5404\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3059\u308b\u5fc5\u8981\u3082\u3042\u308a\u307e\u3059\u3002\u6163\u4f8b\u3068\u3057\u3066\u3001\u30b3\u30e1\u30f3\u30c8\u306f //Package \u3067\u59cb\u307e\u308a\u3001\u305d\u306e\u5f8c\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u304c\u7d9a\u304d\u307e\u3059\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u30b3\u30e1\u30f3\u30c8\u306e\u6700\u521d\u306e\u884c\u306f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u8868\u793a\u3055\u308c\u308b\u305f\u3081\u7c21\u6f54\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u6b21\u306e\u884c\u306b\u5fc5\u8981\u306a\u60c5\u5831\u3092\u3059\u3079\u3066\u5165\u529b\u3057\u307e\u3059\u3002

    \u30b3\u30fc\u30c9\u3092\u6587\u7ae0\u5316\u3059\u308b\u3053\u3068\u304c\u5236\u7d04\u306b\u306a\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3084\u30e1\u30f3\u30c6\u30ca\u304c\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#16","title":"\u30ea\u30f3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u306a\u3044 (#16)","text":"\u8981\u7d04

    \u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u3068\u4e00\u8cab\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u306b\u306f\u3001\u30ea\u30f3\u30bf\u30fc\u3068\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046

    \u30ea\u30f3\u30bf\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5206\u6790\u3057\u3066\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3059\u308b\u81ea\u52d5\u30c4\u30fc\u30eb\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u76ee\u7684\u306f\u3001\u65e2\u5b58\u306e\u30ea\u30f3\u30bf\u30fc\u306e\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3057\u305f\u5834\u5408\u3001\u3059\u3050\u306b\u4f7f\u3044\u7269\u306b\u306a\u3089\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3046\u304b\u3089\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u307b\u3068\u3093\u3069\u306e Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30ea\u30f3\u30bf\u30fc\u304c\u4e0d\u53ef\u6b20\u3067\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u7406\u89e3\u3057\u3001\u899a\u3048\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002

    • https://golang.org/cmd/vet\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30b3\u30fc\u30c9\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc
    • https://github.com/kisielk/errcheck\u2015\u2015\u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30ab\u30fc
    • https://github.com/fzipp/gocyclo\u2015\u2015\u5faa\u74b0\u7684\u8907\u96d1\u5ea6\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc
    • https://github.com/jgautheron/goconst\u2015\u2015\u8907\u6570\u56de\u4f7f\u7528\u6587\u5b57\u5217\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc

    \u30ea\u30f3\u30bf\u30fc\u306e\u307b\u304b\u306b\u3001\u30b3\u30fc\u30c9\u30b9\u30bf\u30a4\u30eb\u3092\u4fee\u6b63\u3059\u308b\u305f\u3081\u306b\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3082\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u4ee5\u4e0b\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3092\u793a\u3057\u307e\u3059\u3002

    • https://golang.org/cmd/gofmt\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc
    • https://godoc.org/golang.org/x/tools/cmd/goimports\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30a4\u30f3\u30dd\u30fc\u30c8\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc

    \u307b\u304b\u306b golangci-lint (https://github.com/golangci/golangci-lint) \u3068\u3044\u3046\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u30ea\u30f3\u30bf\u30fc\u3084\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u306e\u4e0a\u306b\u30d5\u30a1\u30b5\u30fc\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u30ea\u30f3\u30c6\u30a3\u30f3\u30b0\u30c4\u30fc\u30eb\u3067\u3059\u3002\u307e\u305f\u3001\u30ea\u30f3\u30bf\u30fc\u3092\u4e26\u5217\u5b9f\u884c\u3057\u3066\u5206\u6790\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002

    \u30ea\u30f3\u30bf\u30fc\u3068\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u54c1\u8cea\u3068\u4e00\u8cab\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u5f37\u529b\u306a\u65b9\u6cd5\u3067\u3059\u3002\u6642\u9593\u3092\u304b\u3051\u3066\u3069\u308c\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u3092\u7406\u89e3\u3057\u3001\u305d\u308c\u3089\u306e\u5b9f\u884c\uff08 CI \u3084 Git \u30d7\u30ea\u30b3\u30df\u30c3\u30c8\u30d5\u30c3\u30af\u306a\u3069\uff09\u3092\u81ea\u52d5\u5316\u3057\u307e\u3057\u3087\u3046\u3002

    "},{"location":"ja/#_2","title":"\u30c7\u30fc\u30bf\u578b","text":""},{"location":"ja/#8-17","title":"8 \u9032\u6570\u30ea\u30c6\u30e9\u30eb\u3067\u6df7\u4e71\u3092\u62db\u3044\u3066\u3057\u307e\u3046 (#17)","text":"\u8981\u7d04

    \u65e2\u5b58\u306e\u30b3\u30fc\u30c9\u3092\u8aad\u3080\u3068\u304d\u306f\u3001 0 \u3067\u59cb\u307e\u308b\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c 8 \u9032\u6570\u3067\u3042\u308b\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u63a5\u982d\u8f9e 0o \u3092\u4ed8\u3051\u308b\u3053\u3068\u30678\u9032\u6570\u3067\u3042\u308b\u3053\u3068\u3092\u660e\u78ba\u306b\u3057\u3001\u8aad\u307f\u3084\u3059\u3055\u3092\u5411\u4e0a\u3055\u305b\u307e\u3057\u3087\u3046\u3002

    8 \u9032\u6570\u306f 0 \u3067\u59cb\u307e\u308a\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001010 \u306f 10 \u9032\u6570\u306e 8 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09\u3002\u53ef\u8aad\u6027\u3092\u5411\u4e0a\u3055\u305b\u3001\u5c06\u6765\u306e\u30b3\u30fc\u30c9\u30ea\u30fc\u30c0\u30fc\u306e\u6f5c\u5728\u7684\u306a\u9593\u9055\u3044\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001 0o \u63a5\u982d\u8f9e\u3092\u4f7f\u7528\u3057\u3066 8 \u9032\u6570\u3067\u3042\u308b\u3053\u3068\u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3057\u3087\u3046\uff08\u4f8b: 0o10 \uff09\u3002

    \u4ed6\u306e\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u8868\u73fe\u306b\u3082\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    • \u30d0\u30a4\u30ca\u30ea - \u63a5\u982d\u8f9e 0b \u3042\u308b\u3044\u306f 0B \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 0b \u306f 10 \u9032\u6570\u306e 4 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09
    • 16\u9032\u6570 - \u63a5\u982d\u8f9e 0x \u3042\u308b\u3044\u306f 0X \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 0xF \u306f 10 \u9032\u6570\u306e 15 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09\u3002
    • \u865a\u6570 - \u63a5\u5c3e\u8f9e i \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 3i \uff09

    \u8aad\u307f\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306b\u3001\u533a\u5207\u308a\u6587\u5b57\u3068\u3057\u3066\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\uff08 _ \uff09\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001 10 \u5104\u306f 1_000_000_000 \u306e\u3088\u3046\u306b\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306f 0b)00_00_01 \u306e\u3088\u3046\u306b\u4ed6\u306e\u8868\u73fe\u3068\u4f75\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#18","title":"\u6574\u6570\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u7121\u8996\u3057\u3066\u3044\u308b (#18)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u6574\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3068\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u304c\u88cf\u5074\u3067\u51e6\u7406\u3055\u308c\u308b\u305f\u3081\u3001\u305d\u308c\u3089\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u72ec\u81ea\u306e\u95a2\u6570\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u691c\u51fa\u3067\u304d\u308b\u6574\u6570\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306b\u3088\u3063\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    var counter int32 = math.MaxInt32 + 1\n
    constant 2147483648 overflows int32\n

    \u305f\u3060\u3057\u3001\u5b9f\u884c\u6642\u306b\u306f\u3001\u6574\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u307e\u305f\u306f\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u306f\u767a\u751f\u3057\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u3063\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30cb\u30c3\u30af\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u52d5\u4f5c\u306f\u3084\u3063\u304b\u3044\u306a\u30d0\u30b0\uff08\u305f\u3068\u3048\u3070\u3001\u8ca0\u306e\u7d50\u679c\u306b\u3064\u306a\u304c\u308b\u6574\u6570\u306e\u5897\u5206\u3084\u6b63\u306e\u6574\u6570\u306e\u52a0\u7b97\u306a\u3069\uff09\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u982d\u306b\u5165\u308c\u3066\u304a\u304f\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#19","title":"\u6d6e\u52d5\u5c0f\u6570\u70b9\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#19)","text":"\u8981\u7d04

    \u7279\u5b9a\u306e\u30c7\u30eb\u30bf\u5185\u3067\u6d6e\u52d5\u5c0f\u6570\u70b9\u6bd4\u8f03\u3092\u884c\u3046\u3068\u3001\u30b3\u30fc\u30c9\u306e\u79fb\u690d\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002\u52a0\u7b97\u307e\u305f\u306f\u6e1b\u7b97\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u7cbe\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u540c\u7a0b\u5ea6\u306e\u5927\u304d\u3055\u306e\u6f14\u7b97\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u4e57\u7b97\u3068\u9664\u7b97\u306f\u52a0\u7b97\u3068\u6e1b\u7b97\u306e\u524d\u306b\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    Go\u8a00\u8a9e\u306b\u306f\u3001\uff08\u865a\u6570\u3092\u9664\u3044\u305f\u5834\u5408\uff09 float32 \u3068 float64 \u3068\u3044\u3046 2 \u3064\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u578b\u304c\u3042\u308a\u307e\u3059\u3002\u6d6e\u52d5\u5c0f\u6570\u70b9\u306e\u6982\u5ff5\u306f\u3001\u5c0f\u6570\u5024\u3092\u8868\u73fe\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u6574\u6570\u306e\u5927\u304d\u306a\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u767a\u660e\u3055\u308c\u307e\u3057\u305f\u3002\u4e88\u60f3\u5916\u306e\u4e8b\u614b\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6f14\u7b97\u306f\u5b9f\u969b\u306e\u6f14\u7b97\u306e\u8fd1\u4f3c\u3067\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u305d\u306e\u305f\u3081\u306b\u3001\u4e57\u7b97\u306e\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    var n float32 = 1.0001\nfmt.Println(n * n)\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306b\u304a\u3044\u3066\u306f 1.0001 * 1.0001 = 1.00020001 \u3068\u3044\u3046\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u3001\u307b\u3068\u3093\u3069\u306e x86 \u30d7\u30ed\u30bb\u30c3\u30b5\u3067\u306f\u3001\u4ee3\u308f\u308a\u306b 1.0002 \u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

    Go\u8a00\u8a9e\u306e float32 \u304a\u3088\u3073 float64 \u578b\u306f\u8fd1\u4f3c\u5024\u3067\u3042\u308b\u305f\u3081\u3001\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30eb\u3092\u5ff5\u982d\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • 2 \u3064\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3092\u6bd4\u8f03\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u5dee\u304c\u8a31\u5bb9\u7bc4\u56f2\u5185\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3002
    • \u52a0\u7b97\u307e\u305f\u306f\u6e1b\u7b97\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u7cbe\u5ea6\u3092\u9ad8\u3081\u308b\u305f\u3081\u306b\u3001\u540c\u3058\u6841\u6570\u306e\u6f14\u7b97\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3002
    • \u7cbe\u5ea6\u3092\u9ad8\u3081\u308b\u305f\u3081\u3001\u4e00\u9023\u306e\u6f14\u7b97\u3067\u52a0\u7b97\u3001\u6e1b\u7b97\u3001\u4e57\u7b97\u3001\u9664\u7b97\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4e57\u7b97\u3068\u9664\u7b97\u3092\u6700\u521d\u306b\u5b9f\u884c\u3059\u308b\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#20","title":"\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u3068\u5bb9\u91cf\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#20)","text":"\u8981\u7d04

    Go \u958b\u767a\u8005\u306a\u3089\u3070\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u3068\u5bb9\u91cf\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306f\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u4f7f\u7528\u53ef\u80fd\u306a\u8981\u7d20\u306e\u6570\u3067\u3042\u308a\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u5bb9\u91cf\u306f\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u5185\u306e\u8981\u7d20\u306e\u6570\u3067\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#21","title":"\u975e\u52b9\u7387\u306a\u30b9\u30e9\u30a4\u30b9\u306e\u521d\u671f\u5316 (#21)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u307e\u305f\u306f\u5bb9\u91cf\u3067\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5272\u308a\u5f53\u3066\u306e\u6570\u304c\u6e1b\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002

    make \u3092\u4f7f\u7528\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u304d\u306b\u3001\u9577\u3055\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5bb9\u91cf\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e21\u65b9\u306b\u9069\u5207\u306a\u5024\u3092\u6e21\u3059\u3053\u3068\u304c\u9069\u5f53\u3067\u3042\u308b\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u305d\u308c\u3092\u5fd8\u308c\u308b\u306e\u306f\u3088\u304f\u3042\u308b\u9593\u9055\u3044\u3067\u3059\u3002\u5b9f\u969b\u3001\u8907\u6570\u306e\u30b3\u30d4\u30fc\u304c\u5fc5\u8981\u306b\u306a\u308a\u3001\u4e00\u6642\u7684\u306a\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u3092\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b GC \u306b\u8ffd\u52a0\u306e\u52b4\u529b\u304c\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u89b3\u70b9\u304b\u3089\u8a00\u3048\u3070\u3001Go \u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u624b\u3092\u5dee\u3057\u4f38\u3079\u306a\u3044\u7406\u7531\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5bb9\u91cf\u307e\u305f\u306f\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3067\u3059\u3002 \u3053\u308c\u3089 2 \u3064\u306e\u89e3\u6c7a\u7b56\u306e\u3046\u3061\u30012 \u756a\u76ee\u306e\u89e3\u6c7a\u7b56\u306e\u65b9\u304c\u308f\u305a\u304b\u306b\u9ad8\u901f\u3067\u3042\u308b\u50be\u5411\u304c\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002\u305f\u3060\u3057\u3001\u7279\u5b9a\u306e\u5bb9\u91cf\u3068\u8ffd\u52a0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u5b9f\u88c5\u3068\u8aad\u307f\u53d6\u308a\u304c\u5bb9\u6613\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#nil-22","title":"nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u6df7\u540c\u3057\u3066\u3044\u308b (#22)","text":"\u8981\u7d04

    encoding/json \u3084 reflect \u30d1\u30c3\u30b1\u30fc\u30b8\u306a\u3069\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306b\u3088\u304f\u3042\u308b\u6df7\u4e71\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u306f\u3001nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3069\u3061\u3089\u3082\u9577\u3055\u30bc\u30ed\u3001\u5bb9\u91cf\u30bc\u30ed\u306e\u30b9\u30e9\u30a4\u30b9\u3067\u3059\u304c\u3001\u5272\u308a\u5f53\u3066\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u306e\u306f nil \u30b9\u30e9\u30a4\u30b9\u3060\u3051\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u533a\u5225\u3055\u308c\u307e\u3059\u3002nil \u30b9\u30e9\u30a4\u30b9\u306f nil \u306b\u7b49\u3057\u3044\u306e\u306b\u5bfe\u3057\u3001\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306f\u30bc\u30ed\u3067\u3059\u3002nil \u30b9\u30e9\u30a4\u30b9\u306f\u7a7a\u3067\u3059\u304c\u3001\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u5fc5\u305a\u3057\u3082nil \u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u4e00\u65b9\u3001nil \u30b9\u30e9\u30a4\u30b9\u306b\u306f\u5272\u308a\u5f53\u3066\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u3092\u901a\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u3001\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u3053\u3068\u3092\u898b\u3066\u304d\u307e\u3057\u305f\u3002

    • \u6700\u7d42\u7684\u306a\u9577\u3055\u304c\u4e0d\u660e\u3067\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u306e\u5834\u5408\u306f var s []string
    • nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u7cd6\u8863\u69cb\u6587\u3068\u3057\u3066\u306e []string(nil)
    • \u5c06\u6765\u306e\u9577\u3055\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f make([]string, length)

    \u8981\u7d20\u306a\u3057\u3067\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u5834\u5408\u3001\u6700\u5f8c\u306e\u30aa\u30d7\u30b7\u30e7\u30f3 []string{} \u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u6700\u5f8c\u306b\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u4f7f\u7528\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u304c nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#23","title":"\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u9069\u5207\u306b\u78ba\u8a8d\u3057\u306a\u3044 (#23)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u306b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u305d\u306e\u9577\u3055\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u304c nil \u3067\u3042\u308b\u304b\u7a7a\u3067\u3042\u308b\u304b\u306b\u95a2\u4fc2\u306a\u304f\u6a5f\u80fd\u3057\u307e\u3059\u3002\u30de\u30c3\u30d7\u306b\u3064\u3044\u3066\u3082\u540c\u69d8\u3067\u3059\u3002\u660e\u78ba\u306a API \u3092\u8a2d\u8a08\u3059\u308b\u306b\u306f\u3001nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002

    \u30b9\u30e9\u30a4\u30b9\u306b\u8981\u7d20\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3059\u308b\u306b\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u304c nil \u304b\u3069\u3046\u304b\u3001\u307e\u305f\u306f\u305d\u306e\u9577\u3055\u304c 0 \u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u5224\u65ad\u3067\u304d\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u3067\u3042\u308b\u5834\u5408\u3068\u30b9\u30e9\u30a4\u30b9\u304c nil \u3067\u3042\u308b\u5834\u5408\u306e\u4e21\u65b9\u3092\u30ab\u30d0\u30fc\u3067\u304d\u308b\u305f\u3081\u3001\u9577\u3055\u3092\u78ba\u304b\u3081\u308b\u3053\u3068\u304c\u6700\u826f\u306e\u65b9\u6cd5\u3067\u3059\u3002

    \u4e00\u65b9\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8a2d\u8a08\u3059\u308b\u3068\u304d\u306f\u3001\u8efd\u5fae\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a8\u30e9\u30fc\u3092\u8d77\u3053\u3055\u306a\u3044\u3088\u3046 nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u3092\u8fd4\u3059\u3068\u304d\u306b\u3001nil \u307e\u305f\u306f\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u8fd4\u3059\u304b\u3069\u3046\u304b\u306f\u3001\u610f\u5473\u7684\u306b\u3082\u6280\u8853\u7684\u306b\u3082\u9055\u3044\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30b3\u30fc\u30e9\u30fc\u306b\u3068\u3063\u3066\u306f\u3069\u3061\u3089\u3082\u540c\u3058\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u306f\u305a\u3067\u3059\u3002\u3053\u306e\u539f\u7406\u306f\u30de\u30c3\u30d7\u3067\u3082\u540c\u3058\u3067\u3059\u3002\u30de\u30c3\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u305d\u308c\u304c nil \u304b\u3069\u3046\u304b\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u9577\u3055\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#24","title":"\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3092\u6b63\u3057\u304f\u4f5c\u6210\u3057\u3066\u3044\u306a\u3044 (#24)","text":"\u8981\u7d04

    \u7d44\u307f\u8fbc\u307f\u95a2\u6570 copy \u3092\u4f7f\u7528\u3057\u3066\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u3092\u5225\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u306b\u306f\u3001\u30b3\u30d4\u30fc\u3055\u308c\u308b\u8981\u7d20\u306e\u6570\u304c 2 \u3064\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306e\u9593\u306e\u6700\u5c0f\u5024\u306b\u76f8\u5f53\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u8981\u7d20\u3092\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u5225\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u64cd\u4f5c\u306f\u3001\u304b\u306a\u308a\u983b\u7e41\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30b3\u30d4\u30fc\u5148\u306b\u30b3\u30d4\u30fc\u3055\u308c\u308b\u8981\u7d20\u306e\u6570\u306f 2 \u3064\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306e\u9593\u306e\u6700\u5c0f\u5024\u306b\u76f8\u5f53\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30b9\u30e9\u30a4\u30b9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306e\u4ed6\u306e\u4ee3\u66ff\u624b\u6bb5\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u306e\u305f\u3081\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3067\u305d\u308c\u3089\u3092\u898b\u3064\u3051\u3066\u3082\u9a5a\u304f\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#append-25","title":"append \u306e\u4f7f\u7528\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528 (#25)","text":"\u8981\u7d04

    2\u3064\u306e\u7570\u306a\u308b\u95a2\u6570\u304c\u540c\u3058\u914d\u5217\u306b\u57fa\u3065\u304f\u30b9\u30e9\u30a4\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u3001copy \u307e\u305f\u306f\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067 append \u306b\u3088\u308b\u885d\u7a81\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5927\u304d\u306a\u30b9\u30e9\u30a4\u30b9\u3092\u7e2e\u5c0f\u3059\u308b\u5834\u5408\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u306f\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3060\u3051\u3067\u3059\u3002

    \u30b9\u30e9\u30a4\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u3001\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528\u306b\u3064\u306a\u304c\u308b\u72b6\u6cc1\u306b\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7d50\u679c\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u304c\u305d\u306e\u5bb9\u91cf\u3088\u308a\u5c0f\u3055\u3044\u5834\u5408\u3001\u8ffd\u52a0\u306b\u3088\u3063\u3066\u5143\u306e\u30b9\u30e9\u30a4\u30b9\u304c\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u8d77\u3053\u308a\u5f97\u308b\u526f\u4f5c\u7528\u306e\u7bc4\u56f2\u3092\u5236\u9650\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u307e\u305f\u306f\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002

    \u88dc\u8db3

    s[low:high:max]\uff08\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\uff09\u2015\u2015\u3053\u306e\u547d\u4ee4\u6587\u306f\u3001\u5bb9\u91cf\u304c max - low \u306b\u7b49\u3057\u3044\u3053\u3068\u3092\u9664\u3051\u3070\u3001s[low:high] \u3067\u4f5c\u6210\u3055\u308c\u305f\u30b9\u30e9\u30a4\u30b9\u3068\u540c\u69d8\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#26","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#26)","text":"\u8981\u7d04

    \u30dd\u30a4\u30f3\u30bf\u306e\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u30dd\u30a4\u30f3\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u3064\u69cb\u9020\u4f53\u3092\u64cd\u4f5c\u3059\u308b\u5834\u5408\u3001\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u306b\u3088\u3063\u3066\u9664\u5916\u3055\u308c\u305f\u8981\u7d20\u3092 nil \u3068\u3059\u308b\u3053\u3068\u3067\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#_3","title":"\u5bb9\u91cf\u6f0f\u308c","text":"

    \u5927\u304d\u306a\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u914d\u5217\u3092\u30b9\u30e9\u30a4\u30b9\u3059\u308b\u3068\u3001\u30e1\u30e2\u30ea\u6d88\u8cbb\u304c\u9ad8\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6b8b\u308a\u306e\u30b9\u30da\u30fc\u30b9\u306f GC \u306b\u3088\u3063\u3066\u518d\u5229\u7528\u3055\u308c\u305a\u3001\u5c11\u6570\u306e\u8981\u7d20\u3057\u304b\u4f7f\u7528\u3057\u306a\u3044\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u5927\u304d\u306a\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u304c\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u3088\u3046\u306a\u4e8b\u614b\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_4","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30dd\u30a4\u30f3\u30bf","text":"

    \u30dd\u30a4\u30f3\u30bf\u307e\u305f\u306f\u30dd\u30a4\u30f3\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080\u69cb\u9020\u4f53\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u3059\u308b\u5834\u5408\u3001GC \u304c\u3053\u308c\u3089\u306e\u8981\u7d20\u3092\u518d\u5229\u7528\u3057\u306a\u3044\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u306e\u9078\u629e\u80a2\u306f\u3001\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u6b8b\u308a\u306e\u8981\u7d20\u307e\u305f\u306f\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u660e\u793a\u7684\u306b nil \u3068\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#27","title":"\u975e\u52b9\u7387\u306a\u30de\u30c3\u30d7\u306e\u521d\u671f\u5316 (#27)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u305d\u306e\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u3067\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5272\u308a\u5f53\u3066\u306e\u6570\u304c\u6e1b\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002

    \u30de\u30c3\u30d7\u306f\u3001\u30ad\u30fc\u30fb\u5024\u30da\u30a2\u306e\u9806\u5e8f\u306a\u3057\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u305d\u308c\u305e\u308c\u306e\u30da\u30a2\u306f\u56fa\u6709\u306e\u30ad\u30fc\u3092\u6301\u3061\u307e\u3059\u3002Go\u8a00\u8a9e\u3067\u306f\u3001\u30de\u30c3\u30d7\u306f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u5185\u90e8\u7684\u306b\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f\u30d0\u30b1\u30c3\u30c8\u306e\u914d\u5217\u3067\u3042\u308a\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306f\u30ad\u30fc\u30fb\u5024\u30da\u30a2\u306e\u914d\u5217\u3078\u306e\u30dd\u30a4\u30f3\u30bf\u3067\u3059\u3002

    \u30de\u30c3\u30d7\u306b\u542b\u307e\u308c\u308b\u8981\u7d20\u306e\u6570\u304c\u4e8b\u524d\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u521d\u671f\u30b5\u30a4\u30ba\u3092\u6307\u5b9a\u3057\u3066\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30de\u30c3\u30d7\u306e\u5897\u5927\u306f\u3001\u5341\u5206\u306a\u30b9\u30da\u30fc\u30b9\u3092\u518d\u5272\u308a\u5f53\u3066\u3057\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u518d\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u8a08\u7b97\u91cf\u304c\u975e\u5e38\u306b\u591a\u304f\u306a\u308a\u307e\u3059\u304c\u3001\u3053\u308c\u306b\u3088\u308a\u305d\u308c\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#28","title":"\u30de\u30c3\u30d7\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#28)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u306f\u30e1\u30e2\u30ea\u5185\u3067\u5e38\u306b\u5897\u5927\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u7e2e\u5c0f\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30e1\u30e2\u30ea\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306f\u3001\u30de\u30c3\u30d7\u3092\u5f37\u5236\u7684\u306b\u518d\u751f\u6210\u3057\u305f\u308a\u3001\u30dd\u30a4\u30f3\u30bf\u3092\u4f7f\u7528\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u624b\u6bb5\u3092\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#29","title":"\u8aa4\u3063\u305f\u65b9\u6cd5\u306b\u3088\u308b\u5024\u306e\u6bd4\u8f03 (#29)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u578b\u3092\u6bd4\u8f03\u3059\u200b\u200b\u308b\u306b\u306f\u30012 \u3064\u306e\u578b\u304c\u6bd4\u8f03\u53ef\u80fd\u306a\u3089\u3070\u3001== \u6f14\u7b97\u5b50\u3068 != \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u771f\u507d\u5024\u3001\u6570\u5024\u3001\u6587\u5b57\u5217\u3001\u30dd\u30a4\u30f3\u30bf\u3001\u30c1\u30e3\u30cd\u30eb\u3001\u304a\u3088\u3073\u69cb\u9020\u4f53\u304c\u5b8c\u5168\u306b\u6bd4\u8f03\u53ef\u80fd\u306a\u578b\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306f\u3001 reflect.DeepEqual \u3092\u4f7f\u7528\u3057\u3066\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4ee3\u511f\u3092\u652f\u6255\u3046\u304b\u3001\u72ec\u81ea\u306e\u5b9f\u88c5\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u52b9\u679c\u7684\u306b\u6bd4\u8f03\u3059\u308b\u306b\u306f\u3001 == \u3068 != \u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u6f14\u7b97\u5b50\u306f\u3001\u6bd4\u8f03\u53ef\u80fd\u306a\u88ab\u6f14\u7b97\u5b50\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002

    • \u771f\u507d\u5024 - 2 \u3064\u306e\u771f\u507d\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u6570\u5024 (int\u3001float\u3001\u304a\u3088\u3073 complex \u578b) - 2 \u3064\u306e\u6570\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u6587\u5b57\u5217 - 2 \u3064\u306e\u6587\u5b57\u5217\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30c1\u30e3\u30cd\u30eb - 2 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304c\u540c\u3058 make \u547c\u3073\u51fa\u3057\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u304c nil \u3067\u3042\u308b\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 - 2 \u3064\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u540c\u3058\u52d5\u7684\u30bf\u30a4\u30d7\u3068\u7b49\u3057\u3044\u52d5\u7684\u5024\u3092\u6301\u3064\u304b\u3069\u3046\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u304c nil \u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30dd\u30a4\u30f3\u30bf - 2 \u3064\u306e\u30dd\u30a4\u30f3\u30bf\u304c\u30e1\u30e2\u30ea\u5185\u306e\u540c\u3058\u5024\u3092\u6307\u3057\u3066\u3044\u308b\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u3068\u3082 nil \u3067\u3042\u308b\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u69cb\u9020\u4f53\u3068\u914d\u5217 - \u985e\u4f3c\u3057\u305f\u578b\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    \u88dc\u8db3

    ? \u3001 >= \u3001 < \u3001\u304a\u3088\u3073 > \u6f14\u7b97\u5b50\u3092\u6570\u5024\u578b\u3067\u4f7f\u7528\u3057\u3066\u5024\u3092\u6bd4\u8f03\u3057\u305f\u308a\u3001\u6587\u5b57\u5217\u3067\u5b57\u53e5\u9806\u5e8f\u3092\u6bd4\u8f03\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    \u88ab\u6f14\u7b97\u5b50\u304c\u6bd4\u8f03\u3067\u304d\u306a\u3044\u5834\u5408\uff08\u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u306a\u3069\uff09\u3001\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306a\u3069\u306e\u4ed6\u306e\u65b9\u6cd5\u3092\u5229\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4e00\u7a2e\u3067\u3042\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u305d\u306e\u69cb\u9020\u3068\u52d5\u4f5c\u3092\u5185\u7701\u3057\u3066\u5909\u66f4\u3059\u308b\u6a5f\u80fd\u3092\u6307\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001Go\u8a00\u8a9e\u3067\u306f reflect.DeepEqual \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u30012\u3064\u306e\u5024\u3092\u518d\u5e30\u7684\u306b\u8abf\u3079\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u30012\u3064\u306e\u8981\u7d20\u304c\u5b8c\u5168\u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u5831\u544a\u3057\u307e\u3059\u3002\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u8981\u7d20\u306f\u3001\u57fa\u672c\u578b\u306b\u52a0\u3048\u3066\u3001\u914d\u5217\u3001\u69cb\u9020\u4f53\u3001\u30b9\u30e9\u30a4\u30b9\u3001\u30de\u30c3\u30d7\u3001\u30dd\u30a4\u30f3\u30bf\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3001\u95a2\u6570\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u6700\u5927\u306e\u843d\u3068\u3057\u7a74\u306f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4e0a\u306e\u30da\u30ca\u30eb\u30c6\u30a3\u3067\u3059\u3002

    \u5b9f\u884c\u6642\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u91cd\u8981\u306a\u5834\u5408\u306f\u3001\u72ec\u81ea\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u6700\u5584\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u8ffd\u8a18\uff1a\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306f\u65e2\u306b\u6bd4\u8f03\u30e1\u30bd\u30c3\u30c9\u304c\u3044\u304f\u3064\u304b\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6700\u9069\u5316\u3055\u308c\u305f bytes.Compare \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30012\u3064\u306e\u30d0\u30a4\u30c8\u30b9\u30e9\u30a4\u30b9\u3092\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002\u72ec\u81ea\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u524d\u306b\u3001\u8eca\u8f2a\u306e\u518d\u767a\u660e\u3092\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_5","title":"\u5236\u5fa1\u69cb\u9020","text":""},{"location":"ja/#range-30","title":"\u8981\u7d20\u304c range \u30eb\u30fc\u30d7\u5185\u3067\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3053\u3068\u3092\u77e5\u3089\u306a\u3044 (#30)","text":"\u8981\u7d04

    range \u30eb\u30fc\u30d7\u5185\u306e value \u8981\u7d20\u306f\u30b3\u30d4\u30fc\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u305f\u3068\u3048\u3070\u69cb\u9020\u4f53\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u3001\u5f93\u6765\u306e for \u30eb\u30fc\u30d7\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3057\u3087\u3046\uff08\u5909\u66f4\u3059\u308b\u8981\u7d20\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u30dd\u30a4\u30f3\u30bf\u3067\u3042\u308b\u5834\u5408\u3092\u9664\u304f\uff09\u3002

    range \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    • \u6587\u5b57\u5217
    • \u914d\u5217
    • \u914d\u5217\u3078\u306e\u30dd\u30a4\u30f3\u30bf
    • \u30b9\u30e9\u30a4\u30b9
    • \u30de\u30c3\u30d7
    • \u53d7\u4fe1\u30c1\u30e3\u30cd\u30eb

    \u53e4\u5178\u7684\u306a for \u30eb\u30fc\u30d7\u3068\u6bd4\u8f03\u3059\u308b\u3068\u3001range \u30eb\u30fc\u30d7\u306f\u305d\u306e\u7c21\u6f54\u306a\u69cb\u6587\u306e\u304a\u304b\u3052\u3067\u3001\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u3002

    \u305f\u3060\u3057\u3001range \u30eb\u30fc\u30d7\u5185\u306e\u5024\u8981\u7d20\u306f\u30b3\u30d4\u30fc\u3067\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5024\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u69cb\u9020\u4f53\u306e\u5834\u5408\u3001\u5909\u66f4\u3059\u308b\u5024\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u30dd\u30a4\u30f3\u30bf\u3067\u306a\u3044\u9650\u308a\u3001\u8981\u7d20\u81ea\u4f53\u3067\u306f\u306a\u304f\u30b3\u30d4\u30fc\u306e\u307f\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002range \u30eb\u30fc\u30d7\u307e\u305f\u306f\u5f93\u6765\u306e for \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7d4c\u7531\u3067\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#range-31","title":"range \u30eb\u30fc\u30d7\uff08\u30c1\u30e3\u30cd\u30eb\u3068\u914d\u5217\uff09\u3067\u306e\u5f15\u6570\u306e\u8a55\u4fa1\u65b9\u6cd5\u3092\u77e5\u3089\u306a\u3044 (#31)","text":"\u8981\u7d04

    range \u6f14\u7b97\u5b50\u306b\u6e21\u3055\u308c\u308b\u5f0f\u306f\u30eb\u30fc\u30d7\u306e\u958b\u59cb\u524d\u306b 1 \u56de\u3060\u3051\u8a55\u4fa1\u3055\u308c\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30b9\u30e9\u30a4\u30b9\u306e\u53cd\u5fa9\u51e6\u7406\u306b\u304a\u3051\u308b\u975e\u52b9\u7387\u306a\u5272\u308a\u5f53\u3066\u306a\u3069\u306e\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    range \u30eb\u30fc\u30d7\u306f\u3001\uff08\u30bf\u30a4\u30d7\u306b\u95a2\u4fc2\u306a\u304f\uff09\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30eb\u30fc\u30d7\u306e\u958b\u59cb\u524d\u306b\u3001\u6307\u5b9a\u3055\u308c\u305f\u5f0f\u3092 1 \u56de\u3060\u3051\u8a55\u4fa1\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u8aa4\u3063\u305f\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3057\u307e\u3046\u3001\u3068\u3044\u3046\u3088\u3046\u306a\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u52d5\u4f5c\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    a := [3]int{0, 1, 2}\nfor i, v := range a {\n    a[2] = 10\n    if i == 2 {\n        fmt.Println(v)\n    }\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306f\u3001\u6700\u5f8c\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092 10 \u306b\u66f4\u65b0\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u300110 \u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3002 2 \u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#range-32","title":"range \u30eb\u30fc\u30d7\u5185\u306b\u304a\u3051\u308b\u30dd\u30a4\u30f3\u30bf\u8981\u7d20\u306e\u4f7f\u7528\u304c\u53ca\u307c\u3059\u5f71\u97ff\u3092\u5206\u304b\u3063\u3066\u3044\u306a\u3044 (#32)","text":"\u8981\u7d04

    \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u30eb\u30fc\u30d7\u5185\u3067\u30dd\u30a4\u30f3\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306e\u9593\u9055\u3044\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    range \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u65bd\u3059\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u5024\u304c\u5358\u4e00\u306e\u4e00\u610f\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u6301\u3064\u4e00\u610f\u306e\u5909\u6570\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3086\u3048\u306b\u3001\u5404\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u3053\u306e\u5909\u6570\u3092\u53c2\u7167\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3068\u3001\u540c\u3058\u8981\u7d20\u3001\u3064\u307e\u308a\u6700\u65b0\u306e\u8981\u7d20\u3092\u53c2\u7167\u3059\u308b\u540c\u3058\u30dd\u30a4\u30f3\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u306f\u3001\u30eb\u30fc\u30d7\u306e\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u5f37\u5236\u7684\u306b\u4f5c\u6210\u3059\u308b\u304b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u8981\u7d20\u3092\u53c2\u7167\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u3069\u3061\u3089\u306e\u89e3\u6c7a\u7b56\u3067\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#33","title":"\u30de\u30c3\u30d7\u306e\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u8aa4\u3063\u305f\u4eee\u5b9a\u3092\u3059\u308b\uff08\u53cd\u5fa9\u51e6\u7406\u4e2d\u306e\u9806\u5e8f\u4ed8\u3051\u3068\u30de\u30c3\u30d7\u306e\u633f\u5165\uff09 (#33)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306b\u4e88\u6e2c\u53ef\u80fd\u306a\u51fa\u529b\u3092\u4fdd\u8a3c\u3059\u308b\u306b\u306f\u3001\u30de\u30c3\u30d7\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u304c\u6b21\u306e\u3068\u304a\u308a\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    • \u30c7\u30fc\u30bf\u3092\u30ad\u30fc\u3067\u4e26\u3079\u66ff\u3048\u307e\u305b\u3093
    • \u633f\u5165\u9806\u5e8f\u306f\u4fdd\u6301\u3055\u308c\u307e\u305b\u3093
    • \u53cd\u5fa9\u51e6\u7406\u9806\u5e8f\u306f\u6c7a\u307e\u3063\u3066\u3044\u307e\u305b\u3093
    • \u3042\u308b\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u8ffd\u52a0\u3055\u308c\u305f\u8981\u7d20\u304c\u305d\u306e\u51e6\u7406\u4e2d\u306b\u751f\u6210\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u305b\u3093

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#break-34","title":"break \u6587\u304c\u3069\u306e\u3088\u3046\u306b\u6a5f\u80fd\u3059\u308b\u304b\u3092\u5206\u304b\u3063\u3066\u3044\u306a\u3044 (#34)","text":"\u8981\u7d04

    \u30e9\u30d9\u30eb\u3068 break \u307e\u305f\u306f continue \u306e\u4f75\u7528\u306f\u3001\u7279\u5b9a\u306e\u547d\u4ee4\u6587\u3092\u5f37\u5236\u7684\u306b\u4e2d\u65ad\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30d7\u5185\u306e switch \u307e\u305f\u306f select \u6587\u3067\u5f79\u7acb\u3061\u307e\u3059\u3002

    \u901a\u5e38\u3001break \u6587\u306f\u30eb\u30fc\u30d7\u306e\u5b9f\u884c\u3092\u7d42\u4e86\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30eb\u30fc\u30d7\u304c switch \u307e\u305f\u306f select \u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u200b\u200b\u3055\u308c\u308b\u5834\u5408\u3001\u76ee\u7684\u306e\u547d\u4ee4\u6587\u3067\u306f\u306a\u3044\u306e\u306b\u4e2d\u65ad\u3055\u305b\u3066\u3057\u307e\u3046\u3001\u3068\u3044\u3046\u30df\u30b9\u3092\u3059\u308b\u3053\u3068\u304c\u958b\u767a\u8005\u306b\u306f\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    for i := 0; i < 5; i++ {\n    fmt.Printf(\"%d \", i)\n\n    switch i {\n    default:\n    case 2:\n        break\n    }\n}\n

    break \u6587\u306f for \u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3055\u305b\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4ee3\u308f\u308a\u306b switch \u6587\u3092\u7d42\u4e86\u3055\u305b\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f 0 \u304b\u3089 2 \u307e\u3067\u3092\u53cd\u5fa9\u3059\u308b\u4ee3\u308f\u308a\u306b\u30010 \u304b\u3089 4 \u307e\u3067\u3092\u53cd\u5fa9\u3057\u307e\u3059\uff080 1 2 3 4\uff09\u3002

    \u899a\u3048\u3066\u304a\u304f\u3079\u304d\u91cd\u8981\u306a\u30eb\u30fc\u30eb\u306e1\u3064\u306f\u3001 break \u6587\u306f\u6700\u3082\u5185\u5074\u306e for \u3001switch \u3001\u307e\u305f\u306f select \u6587\u306e\u5b9f\u884c\u3092\u7d42\u4e86\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u524d\u306e\u4f8b\u3067\u306f\u3001switch \u6587\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002

    switch \u6587\u306e\u4ee3\u308f\u308a\u306b\u30eb\u30fc\u30d7\u3092\u4e2d\u65ad\u3059\u308b\u6700\u3082\u6163\u7528\u7684\u306a\u65b9\u6cd5\u306f\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    loop:\n    for i := 0; i < 5; i++ {\n        fmt.Printf(\"%d \", i)\n\n        switch i {\n        default:\n        case 2:\n            break loop\n        }\n    }\n

    \u3053\u3053\u3067\u306f\u3001loop \u30e9\u30d9\u30eb\u3092 for \u30eb\u30fc\u30d7\u306b\u95a2\u9023\u4ed8\u3051\u307e\u3059\u3002 \u6b21\u306b\u3001break \u6587\u306b loop \u30e9\u30d9\u30eb\u3092\u6307\u5b9a\u3059\u308b\u306e\u3067\u3001switch \u3067\u306f\u306a\u304f loop \u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002\u3088\u3063\u3066\u3001\u3053\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u4e88\u60f3\u3069\u304a\u308a 0 1 2 \u3092\u51fa\u529b\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-35","title":"\u30eb\u30fc\u30d7\u5185\u3067 defer \u3092\u4f7f\u7528\u3059\u308b (#35)","text":"\u8981\u7d04

    \u95a2\u6570\u5185\u306e\u30eb\u30fc\u30d7\u30ed\u30b8\u30c3\u30af\u306e\u62bd\u51fa\u306f\u3001\u5404\u53cd\u5fa9\u306e\u6700\u5f8c\u3067\u306e defer \u6587\u306e\u5b9f\u884c\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002

    defer \u6587\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u304c\u623b\u308b\u307e\u3067\u547c\u3073\u51fa\u3057\u306e\u5b9f\u884c\u3092\u9045\u3089\u305b\u307e\u3059\u3002\u3053\u308c\u306f\u4e3b\u306b\u5b9a\u578b\u30b3\u30fc\u30c9\u3092\u524a\u6e1b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u6700\u7d42\u7684\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001defer \u3092\u4f7f\u7528\u3057\u3066\u3001return \u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u30af\u30ed\u30fc\u30b8\u30e3\u547c\u3073\u51fa\u3057\u3092\u7e70\u308a\u8fd4\u3059\u3053\u3068\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    defer \u3067\u3088\u304f\u3042\u308b\u30df\u30b9\u306e1\u3064\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af \u306e\u95a2\u6570\u304c\u623b\u3063\u305f\u3068\u304d\u306b\u95a2\u6570\u547c\u3073\u51fa\u3057\u304c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u308b\u3053\u3068\u3092\u5fd8\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u305f\u3068\u3048\u3070

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        file, err := os.Open(path)\n        if err != nil {\n            return err\n        }\n\n        defer file.Close()\n\n        // \u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u3092\u3059\u308b\n    }\n    return nil\n}\n

    defer \u547c\u3073\u51fa\u3057\u306f\u3001\u5404\u30eb\u30fc\u30d7\u53cd\u5fa9\u4e2d\u3067\u306f\u306a\u304f\u3001readFiles \u95a2\u6570\u304c\u8fd4\u3055\u308c\u305f\u3068\u304d\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 readFiles \u304c\u8fd4\u3089\u306a\u3044\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u8a18\u8ff0\u5b50\u306f\u6c38\u4e45\u306b\u958b\u3044\u305f\u307e\u307e\u306b\u306a\u308a\u3001\u30ea\u30fc\u30af\u304c\u767a\u751f\u3057\u307e\u3059\u3002

    \u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u624b\u6bb5\u306e1\u3064\u306f\u3001 defer \u306e\u5f8c\u306b\u3001\u5404\u53cd\u5fa9\u4e2d\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        if err := readFile(path); err != nil {\n            return err\n        }\n    }\n    return nil\n}\n\nfunc readFile(path string) error {\n    file, err := os.Open(path)\n    if err != nil {\n        return err\n    }\n\n    defer file.Close()\n\n    // \u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u3092\u3059\u308b\n    return nil\n}\n

    \u5225\u306e\u89e3\u6c7a\u7b56\u306f\u3001readFile \u95a2\u6570\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u304c\u3001\u672c\u8cea\u7684\u306b\u306f\u540c\u3058\u3067\u3059\u3002\u5225\u306e\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u3092\u8ffd\u52a0\u3057\u3066\u3001\u5404\u53cd\u5fa9\u4e2d\u306b defer \u547c\u3073\u51fa\u3057\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_6","title":"\u6587\u5b57\u5217","text":""},{"location":"ja/#36","title":"\u30eb\u30fc\u30f3\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#36)","text":"\u8981\u7d04

    \u30eb\u30fc\u30f3\u304c Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u6982\u5ff5\u306b\u5bfe\u5fdc\u3057\u3001\u8907\u6570\u306e\u30d0\u30a4\u30c8\u3067\u69cb\u6210\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001 Go \u958b\u767a\u8005\u304c\u6587\u5b57\u5217\u3092\u6b63\u78ba\u306b\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u30eb\u30fc\u30f3\u304c\u3042\u3089\u3086\u308b\u5834\u6240\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u6b21\u306e\u70b9\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    • \u6587\u5b57\u30bb\u30c3\u30c8\u306f\u6587\u5b57\u306e\u96c6\u5408\u3067\u3059\u304c\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u30d0\u30a4\u30ca\u30ea\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u3067\u306f\u3001\u6587\u5b57\u5217\u306f\u4efb\u610f\u306e\u30d0\u30a4\u30c8\u306e\u4e0d\u5909\u30b9\u30e9\u30a4\u30b9\u3092\u53c2\u7167\u3057\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f UTF-8 \u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3059\u3079\u306e\u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u306f UTF-8 \u6587\u5b57\u5217\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u6587\u5b57\u5217\u306b\u306f\u4efb\u610f\u306e\u30d0\u30a4\u30c8\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u6587\u5b57\u5217\u304c\uff08\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3067\u306f\u306a\u3044\uff09\u4ed6\u306e\u5834\u6240\u304b\u3089\u53d6\u5f97\u3055\u308c\u305f\u5834\u5408\u3001\u305d\u306e\u6587\u5b57\u5217\u304c UTF-8 \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306b\u57fa\u3065\u3044\u3066\u3044\u308b\u4fdd\u8a3c\u306f\u3042\u308a\u307e\u305b\u3093\u3002
    • rune \u306f Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u6982\u5ff5\u306b\u5bfe\u5fdc\u3057\u3001\u5358\u4e00\u306e\u5024\u3067\u8868\u3055\u308c\u308b\u30a2\u30a4\u30c6\u30e0\u3092\u610f\u5473\u3057\u307e\u3059\u3002
    • UTF-8 \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092 1 \uff5e 4 \u30d0\u30a4\u30c8\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u3067\u6587\u5b57\u5217\u306b\u5bfe\u3057\u3066 len() \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u30d0\u30a4\u30c8\u6570\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#37","title":"\u6587\u5b57\u5217\u306b\u5bfe\u3059\u308b\u4e0d\u6b63\u306a\u53cd\u5fa9\u51e6\u7406 (#37)","text":"\u8981\u7d04

    range \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u3068\u3001\u30eb\u30fc\u30f3\u306e\u30d0\u30a4\u30c8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30f3\u304c\u53cd\u5fa9\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30f3\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff08 3 \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306a\u3069\uff09\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u6587\u5b57\u5217\u3092 []rune \u306b\u5909\u63db\u3057\u307e\u3059\u3002

    \u6587\u5b57\u5217\u306e\u53cd\u5fa9\u51e6\u7406\u306f\u3001\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3067\u3059\u3002\u304a\u305d\u3089\u304f\u3001\u6587\u5b57\u5217\u5185\u306e\u5404\u30eb\u30fc\u30f3\u306b\u5bfe\u3057\u3066\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u7279\u5b9a\u306e\u90e8\u5206\u6587\u5b57\u5217\u3092\u691c\u7d22\u3059\u308b\u72ec\u81ea\u306e\u95a2\u6570\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002\u3069\u3061\u3089\u306e\u5834\u5408\u3082\u3001\u6587\u5b57\u5217\u306e\u7570\u306a\u308b\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u53cd\u5fa9\u51e6\u7406\u304c\u3069\u306e\u3088\u3046\u306b\u6a5f\u80fd\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306f\u56f0\u60d1\u3057\u3084\u3059\u3044\u3067\u3059\u3002

    \u6b21\u306e\u4f8b\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    s := \"h\u00eallo\"\nfor i := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, s[i])\n}\nfmt.Printf(\"len=%d\\n\", len(s))\n
    position 0: h\nposition 1: \u00c3\nposition 3: l\nposition 4: l\nposition 5: o\nlen=6\n

    \u6df7\u4e71\u3092\u62db\u304f\u53ef\u80fd\u6027\u306e\u3042\u308b 3 \u70b9\u3092\u53d6\u308a\u4e0a\u3052\u307e\u3057\u3087\u3046\u3002

    • 2 \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306f\u3001\u51fa\u529b\u3067\u306f \u00ea \u3067\u306f\u306a\u304f \u00c3 \u306b\u306a\u308a\u307e\u3059\u3002
    • position 1 \u304b\u3089 position 3 \u306b\u30b8\u30e3\u30f3\u30d7\u3057\u307e\u3057\u305f\u3002 position 2 \u306b\u306f\u4f55\u304c\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002
    • len \u306f 6 \u3092\u8fd4\u3057\u307e\u3059\u304c\u3001s \u306b\u306f 5 \u3064\u306e\u30eb\u30fc\u30f3\u3057\u304b\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002

    \u7d50\u679c\u306e\u6700\u5f8c\u304b\u3089\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002len \u306f\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u3001\u6587\u5b57\u5217\u5185\u306e\u30d0\u30a4\u30c8\u6570\u3092\u8fd4\u3059\u3053\u3068\u306f\u3059\u3067\u306b\u8ff0\u3079\u307e\u3057\u305f\u3002\u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u3092 s \u306b\u5272\u308a\u5f53\u3066\u3066\u3044\u308b\u305f\u3081\u3001s \u306f UTF-8 \u6587\u5b57\u5217\u3067\u3059\u3002\u4e00\u65b9\u3001\u7279\u6b8a\u6587\u5b57\u300c\u00ea\u300d\u306f 1 \u30d0\u30a4\u30c8\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093\u3002 2 \u30d0\u30a4\u30c8\u5fc5\u8981\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001len(s) \u3092\u547c\u3073\u51fa\u3059\u3068 6 \u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u524d\u306e\u4f8b\u3067\u306f\u3001\u5404\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001\u30eb\u30fc\u30f3\u306e\u5404\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u307e\u3059\u3002

    s[i] \u3092\u51fa\u529b\u3057\u3066\u3082 i \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30d0\u30a4\u30c8\u306e UTF-8 \u8868\u73fe\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001 h\u00eallo \u306e\u4ee3\u308f\u308a\u306b h\u00c3llo \u3092\u51fa\u529b\u304c\u3055\u308c\u307e\u3059\u3002

    \u3055\u307e\u3056\u307e\u306a\u30eb\u30fc\u30f3\u6587\u5b57\u3092\u3059\u3079\u3066\u51fa\u529b\u3057\u305f\u3044\u5834\u5408\u306f\u3001 range \u6f14\u7b97\u5b50\u306e value \u8981\u7d20\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    s := \"h\u00eallo\"\nfor i, r := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    \u307e\u305f\u306f\u3001\u6587\u5b57\u5217\u3092\u30eb\u30fc\u30f3\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u5909\u63db\u3057\u3001\u305d\u308c\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    s := \"h\u00eallo\"\nrunes := []rune(s)\nfor i, r := range runes {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    \u3053\u306e\u89e3\u6c7a\u7b56\u3067\u306f\u3001\u4ee5\u524d\u306e\u89e3\u6c7a\u7b56\u3068\u6bd4\u8f03\u3057\u3066\u5b9f\u884c\u6642\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u969b\u3001\u6587\u5b57\u5217\u3092\u30eb\u30fc\u30f3\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001\u8ffd\u52a0\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u5272\u308a\u5f53\u3066\u3001\u30d0\u30a4\u30c8\u3092\u30eb\u30fc\u30f3\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6587\u5b57\u5217\u306e\u30d0\u30a4\u30c8\u6570\u3092 n \u3068\u3059\u308b\u3068\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n) \u306b\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3059\u3079\u3066\u306e\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u5834\u5408\u306f\u3001\u6700\u521d\u306e\u89e3\u6c7a\u7b56\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    \u305f\u3060\u3057\u3001\u6700\u521d\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u306e i \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30eb\u30fc\u30f3\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u30d0\u30a4\u30c8\u30b7\u30fc\u30b1\u30f3\u30b9\u5185\u306e\u30eb\u30fc\u30f3\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u308f\u304b\u308a\u307e\u3059\u3002

    s := \"h\u00eallo\"\nr := []rune(s)[4]\nfmt.Printf(\"%c\\n\", r) // o\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#trim-38","title":"trim \u95a2\u6570\u306e\u8aa4\u7528 (#38)","text":"\u8981\u7d04

    strings.TrimRight \u30fb strings.TrimLeft \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u30bb\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u3059\u3079\u3066\u306e\u672b\u5c3e\u30fb\u5148\u982d\u306e\u30eb\u30fc\u30f3\u3092\u524a\u9664\u3057\u307e\u3059\u304c\u3001 strings.TrimSuffix \u30fb strings.TrimPrefix \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u63a5\u5c3e\u8f9e\u30fb\u63a5\u982d\u8f9e\u306e\u306a\u3044\u6587\u5b57\u5217\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u305f\u3068\u3048\u3070

    fmt.Println(strings.TrimRight(\"123oxo\", \"xo\"))\n

    \u306f 123 \u3092\u51fa\u529b\u3057\u307e\u3059

    \u9006\u306b\u3001 strings.TrimLeft \u306f\u3001\u30bb\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u5148\u982d\u306e\u30eb\u30fc\u30f3\u3092\u3059\u3079\u3066\u524a\u9664\u3057\u307e\u3059\u3002

    \u4e00\u65b9\u3001strings.TrimSuffix \u30fb strings.TrimPrefix \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u672b\u5c3e\u306e\u63a5\u5c3e\u8f9e\u30fb\u63a5\u982d\u8f9e\u3092\u9664\u3044\u305f\u6587\u5b57\u5217\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#39","title":"\u6700\u9069\u5316\u304c\u4e0d\u5341\u5206\u306a\u6587\u5b57\u5217\u306e\u9023\u7d50 (#39)","text":"\u8981\u7d04

    \u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8\u306e\u9023\u7d50\u306f\u3001\u53cd\u5fa9\u3054\u3068\u306b\u65b0\u3057\u3044\u6587\u5b57\u5217\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u306a\u3044\u3088\u3046\u306b\u3001strings.Builder \u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    += \u6f14\u7b97\u5b50\u3092\u7528\u3044\u3066\u30b9\u30e9\u30a4\u30b9\u306e\u3059\u3079\u3066\u306e\u6587\u5b57\u5217\u8981\u7d20\u3092\u9023\u7d50\u3059\u308b concat \u95a2\u6570\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    func concat(values []string) string {\n    s := \"\"\n    for _, value := range values {\n        s += value\n    }\n    return s\n}\n

    \u5404\u53cd\u5fa9\u4e2d\u306b\u3001 += \u6f14\u7b97\u5b50\u306f s \u3068 value \u6587\u5b57\u5217\u3092\u9023\u7d50\u3057\u307e\u3059\u3002\u4e00\u898b\u3059\u308b\u3068\u3001\u3053\u306e\u95a2\u6570\u306f\u9593\u9055\u3063\u3066\u3044\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u5b9f\u88c5\u306f\u3001\u6587\u5b57\u5217\u306e\u6838\u3068\u306a\u308b\u7279\u6027\u306e1\u3064\u3067\u3042\u308b\u4e0d\u5909\u6027\u3092\u5fd8\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5404\u53cd\u5fa9\u3067\u306f s \u306f\u66f4\u65b0\u3055\u308c\u307e\u305b\u3093\u3002\u30e1\u30e2\u30ea\u5185\u306b\u65b0\u3057\u3044\u6587\u5b57\u5217\u3092\u518d\u5272\u308a\u5f53\u3066\u3059\u308b\u305f\u3081\u3001\u3053\u306e\u95a2\u6570\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002

    \u5e78\u3044\u306a\u3053\u3068\u306b\u3001 strings.Builder \u3092\u7528\u3044\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u3002

    func concat(values []string) string {\n    sb := strings.Builder{}\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    \u5404\u53cd\u5fa9\u4e2d\u306b\u3001value \u306e\u5185\u5bb9\u3092\u5185\u90e8\u30d0\u30c3\u30d5\u30a1\u306b\u8ffd\u52a0\u3059\u308b WriteString \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u7d50\u679c\u306e\u6587\u5b57\u5217\u3092\u69cb\u7bc9\u3057\u3001\u30e1\u30e2\u30ea\u306e\u30b3\u30d4\u30fc\u3092\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002

    \u88dc\u8db3

    WriteString \u306f 2 \u756a\u76ee\u306e\u51fa\u529b\u3068\u3057\u3066\u30a8\u30e9\u30fc\u3092\u8fd4\u3057\u307e\u3059\u304c\u3001\u610f\u56f3\u7684\u306b\u7121\u8996\u3057\u307e\u3057\u3087\u3046\u3002\u5b9f\u969b\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f nil \u30a8\u30e9\u30fc\u4ee5\u5916\u3092\u8fd4\u3059\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3067\u306f\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u30b7\u30b0\u30cd\u30c1\u30e3\u306e\u4e00\u90e8\u3068\u3057\u3066\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u76ee\u7684\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002strings.Builder \u306f io.StringWriter \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306b\u306f WriteString(s string) (n int, err error) \u3068\u3044\u30461\u3064\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u6e96\u62e0\u3059\u308b\u306b\u306f\u3001WriteString \u306f\u30a8\u30e9\u30fc\u3092\u8fd4\u3055\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u3059\u3002

    \u5185\u90e8\u7684\u306b\u306f\u3001strings.Builder \u306f\u30d0\u30a4\u30c8\u30b9\u30e9\u30a4\u30b9\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002 WriteString \u3092\u547c\u3073\u51fa\u3059\u305f\u3073\u306b\u3001\u3053\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u8ffd\u52a0\u3059\u308b\u547c\u3073\u51fa\u3057\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f2\u3064\u306e\u5f71\u97ff\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001 append \u306e\u547c\u3073\u51fa\u3057\u304c\u885d\u7a81\u72b6\u614b\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u306e\u69cb\u9020\u4f53\u306f\u540c\u6642\u306b\u4f7f\u7528\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u30022\u756a\u76ee\u306e\u5f71\u97ff\u306f\u3001 \u975e\u52b9\u7387\u306a\u30b9\u30e9\u30a4\u30b9\u306e\u521d\u671f\u5316 (#21) \u3067\u898b\u305f\u3082\u306e\u3067\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u5c06\u6765\u306e\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3092\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u3001strings.Builder \u306f\u5225\u306e n \u30d0\u30a4\u30c8\u306e\u305f\u3081\u306e\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u8a3c\u3059\u308b\u30e1\u30bd\u30c3\u30c9 Grow(n int) \u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002

    func concat(values []string) string {\n    total := 0\n    for i := 0; i < len(values); i++ {\n        total += len(values[i])\n    }\n\n    sb := strings.Builder{}\n    sb.Grow(total) (2)\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u5b9f\u884c\u3057\u3066 3 \u3064\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\uff08 += \u3092\u4f7f\u7528\u3057\u305f V1 \u3001\u4e8b\u524d\u5272\u308a\u5f53\u3066\u306a\u3057\u3067 strings.Builder{} \u3092\u4f7f\u7528\u3057\u305f V2 \u3001\u4e8b\u524d\u5272\u308a\u5f53\u3066\u3042\u308a\u306e strings.Builder{} \u3092\u4f7f\u7528\u3057\u305f V3 \uff09\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u5165\u529b\u30b9\u30e9\u30a4\u30b9\u306b\u306f 1,000 \u500b\u306e\u6587\u5b57\u5217\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u5404\u6587\u5b57\u5217\u306b\u306f 1,000 \u30d0\u30a4\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002

    BenchmarkConcatV1-4             16      72291485 ns/op\nBenchmarkConcatV2-4           1188        878962 ns/op\nBenchmarkConcatV3-4           5922        190340 ns/op\n

    \u3054\u89a7\u306e\u3068\u304a\u308a\u3001\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u6700\u3082\u52b9\u7387\u7684\u3067\u3001V1 \u3088\u308a 99% \u3001V2 \u3088\u308a 78% \u9ad8\u901f\u3067\u3059\u3002

    strings.Builder \u306f\u3001\u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50\u3059\u308b\u305f\u3081\u306e\u89e3\u6c7a\u7b56\u3068\u3057\u3066\u63a8\u5968\u3055\u308c\u307e\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u306f\u30eb\u30fc\u30d7\u5185\u3067\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u6587\u5b57\u5217 \uff08\u540d\u524d\u3068\u59d3\u306a\u3069\uff09\u3092\u9023\u7d50\u3059\u308b\u3060\u3051\u306e\u5834\u5408\u3001 strings.Builder \u306e\u4f7f\u7528\u306f\u3001 += \u6f14\u7b97\u5b50\u3084 fmt.Sprintf \u3068\u6bd4\u3079\u3066\u53ef\u8aad\u6027\u304c\u4f4e\u304f\u306a\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#40","title":"\u7121\u99c4\u306a\u6587\u5b57\u5217\u5909\u63db (#40)","text":"\u8981\u7d04

    bytes \u30d1\u30c3\u30b1\u30fc\u30b8\u306f strings \u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u540c\u3058\u64cd\u4f5c\u3092\u63d0\u4f9b\u3057\u3066\u304f\u308c\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3068\u3001\u4f59\u5206\u306a\u30d0\u30a4\u30c8\u30fb\u6587\u5b57\u5217\u5909\u63db\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u6587\u5b57\u5217\u307e\u305f\u306f []byte \u3092\u6271\u3046\u3053\u3068\u3092\u9078\u629e\u3059\u308b\u5834\u5408\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u6587\u5b57\u5217\u3092\u597d\u3080\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u307b\u3068\u3093\u3069\u306e I/O \u306f\u5b9f\u969b\u306b\u306f []byte \u3067\u884c\u308f\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001io.Reader\u3001io.Writer\u3001\u304a\u3088\u3073 io.ReadAll \u306f\u6587\u5b57\u5217\u3067\u306f\u306a\u304f []byte \u3092\u51e6\u7406\u3057\u307e\u3059\u3002

    \u6587\u5b57\u5217\u3068 []byte \u306e\u3069\u3061\u3089\u3092\u6271\u3046\u3079\u304d\u304b\u8ff7\u3063\u305f\u3068\u304d\u3001[]byte \u3092\u6271\u3046\u65b9\u304c\u5fc5\u305a\u3057\u3082\u9762\u5012\u3060\u3068\u3044\u3046\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002strings \u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u95a2\u6570\u306b\u306f\u3001bytes \u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u4ee3\u66ff\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002 Split\u3001Count\u3001Contains\u3001Index \u306a\u3069\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001I/O \u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306b\u95a2\u4fc2\u306a\u304f\u3001\u6587\u5b57\u5217\u306e\u4ee3\u308f\u308a\u306b\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u5168\u4f53\u3092\u5b9f\u88c5\u3067\u304d\u3001\u8ffd\u52a0\u306e\u5909\u63db\u30b3\u30b9\u30c8\u3092\u56de\u907f\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u3092\u6700\u521d\u306b\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#41","title":"\u90e8\u5206\u6587\u5b57\u5217\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#41)","text":"\u8981\u7d04

    \u90e8\u5206\u6587\u5b57\u5217\u306e\u4ee3\u308f\u308a\u306b\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u6587\u5b57\u5217\u304c\u540c\u3058\u30d0\u30a4\u30c8\u914d\u5217\u306b\u3088\u3063\u3066\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30b9\u30e9\u30a4\u30b9\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#26) \u3067\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u914d\u5217\u306e\u30b9\u30e9\u30a4\u30b9\u304c\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u72b6\u6cc1\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u539f\u5247\u306f\u3001\u6587\u5b57\u5217\u304a\u3088\u3073\u90e8\u5206\u6587\u5b57\u5217\u306e\u64cd\u4f5c\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u30012 \u3064\u306e\u3053\u3068\u306b\u7559\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001\u63d0\u4f9b\u3055\u308c\u308b\u9593\u9694\u306f\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u3001\u30d0\u30a4\u30c8\u6570\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u6b21\u306b\u3001\u7d50\u679c\u306e\u90e8\u5206\u6587\u5b57\u5217\u304c\u6700\u521d\u306e\u6587\u5b57\u5217\u3068\u540c\u3058\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u3092\u5171\u6709\u3059\u308b\u305f\u3081\u3001\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u306b\u3088\u308a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u9632\u3050\u65b9\u6cd5\u306f\u3001\u6587\u5b57\u5217\u306e\u30b3\u30d4\u30fc\u3092\u624b\u52d5\u3067\u5b9f\u884c\u3059\u308b\u304b\u3001Go 1.18 \u304b\u3089\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b strings.Clone \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_7","title":"\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9","text":""},{"location":"ja/#42","title":"\u3069\u306e\u578b\u306e\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3059\u308c\u3070\u3088\u3044\u304b\u308f\u304b\u3063\u3066\u3044\u306a\u3044 (#42)","text":"\u8981\u7d04

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3068\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u3069\u3061\u3089\u3092\u4f7f\u7528\u3059\u308b\u304b\u306f\u3001\u3069\u306e\u578b\u306a\u306e\u304b\u3001\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3001\u30b3\u30d4\u30fc\u3067\u304d\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3069\u308c\u304f\u3089\u3044\u5927\u304d\u3044\u306e\u304b\u3001\u306a\u3069\u306e\u8981\u7d20\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5206\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3068\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u3069\u3061\u3089\u3092\u9078\u629e\u3059\u308b\u304b\u306f\u3001\u5fc5\u305a\u3057\u3082\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u9078\u629e\u306b\u5f79\u7acb\u3064\u3044\u304f\u3064\u304b\u306e\u6761\u4ef6\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u3087\u3046\u3002

    \u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044 \u3068\u304d

    • \u30e1\u30bd\u30c3\u30c9\u304c\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3002\u3053\u306e\u30eb\u30fc\u30eb\u306f\u3001\u53d7\u4fe1\u5074\u304c\u30b9\u30e9\u30a4\u30b9\u3067\u3042\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u304c\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u3082\u6709\u52b9\u3067\u3059\u3002
    type slice []int\n\nfunc (s *slice) add(element int) {\n    *s = append(*s, element)\n}\n
    • \u30e1\u30bd\u30c3\u30c9\u30ec\u30b7\u30fc\u30d0\u30fc\u306b\u30b3\u30d4\u30fc\u3067\u304d\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3002sync \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u578b\u90e8\u5206\u306f\u305d\u306e\u4e00\u4f8b\u306b\u306a\u308a\u307e\u3059\uff08 sync \u578b\u306e\u30b3\u30d4\u30fc (#74) \u3092\u53c2\u7167\uff09\u3002

    \u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u3042\u308b\u3079\u304d \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u5927\u304d\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u3002\u30dd\u30a4\u30f3\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5927\u898f\u6a21\u306a\u30b3\u30d4\u30fc\u306e\u4f5c\u6210\u304c\u9632\u6b62\u3055\u308c\u308b\u305f\u3081\u3001\u547c\u3073\u51fa\u3057\u304c\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3059\u3002\u3069\u308c\u304f\u3089\u3044\u306e\u5927\u304d\u3055\u306a\u306e\u304b\u78ba\u8a3c\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u89e3\u6c7a\u7b56\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u591a\u304f\u306e\u8981\u56e0\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u7279\u5b9a\u306e\u30b5\u30a4\u30ba\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u307b\u3068\u3093\u3069\u4e0d\u53ef\u80fd\u3067\u3059\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044 \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u4e0d\u5909\u6027\u3092\u5f37\u5236\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u30de\u30c3\u30d7\u3001\u95a2\u6570\u3001\u30c1\u30e3\u30cd\u30eb\u306e\u5834\u5408\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u3042\u308b\u3079\u304d \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u306e\u306a\u3044\u30b9\u30e9\u30a4\u30b9\u306e\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u3001time.Time \u306a\u3069\u306e\u5c0f\u3055\u306a\u914d\u5217\u307e\u305f\u306f\u69cb\u9020\u4f53\u3067\u3001\u53ef\u5909\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u305f\u306a\u3044\u5024\u578b\u3067\u3042\u308b\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c int\u3001float64\u3001\u307e\u305f\u306f string \u306a\u3069\u306e\u57fa\u672c\u578b\u306e\u5834\u5408\u3002

    \u3082\u3061\u308d\u3093\u3001\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\u306f\u5e38\u306b\u5b58\u5728\u3059\u308b\u305f\u3081\u3001\u3059\u3079\u3066\u3092\u7db2\u7f85\u3059\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd\u3067\u3059\u304c\u3001\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u76ee\u6a19\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30b1\u30fc\u30b9\u3092\u30ab\u30d0\u30fc\u3059\u308b\u305f\u3081\u306e\u30ac\u30a4\u30c0\u30f3\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u901a\u5e38\u306f\u3001\u305d\u3046\u3057\u306a\u3044\u6b63\u5f53\u306a\u7406\u7531\u304c\u306a\u3044\u9650\u308a\u3001\u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u9593\u9055\u3044\u3042\u308a\u307e\u305b\u3093\u3002\u5206\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#43","title":"\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u307e\u3063\u305f\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#43)","text":"\u8981\u7d04

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u4f7f\u7528\u306f\u3001\u7279\u306b\u8907\u6570\u306e\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u540c\u3058\u578b\u3092\u6301\u3064\u5834\u5408\u3001\u95a2\u6570\u30fb\u30e1\u30bd\u30c3\u30c9\u306e\u8aad\u307f\u3084\u3059\u3055\u3092\u5411\u4e0a\u3055\u305b\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u65b9\u6cd5\u304c\u4fbf\u5229\u3067\u3059\u3089\u3042\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u6f5c\u5728\u7684\u306a\u526f\u4f5c\u7528\u306b\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u95a2\u6570\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u3067\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8fd4\u3059\u3068\u304d\u3001\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u540d\u524d\u3092\u4ed8\u3051\u3066\u3001\u901a\u5e38\u306e\u5909\u6570\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3068\u3001\u95a2\u6570\u30fb\u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb\u6642\u306b\u305d\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u307e\u3059\u3002\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001 \u3080\u304d\u51fa\u3057\u306e return \u6587\uff08\u5f15\u6570\u306a\u3057\uff09 \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u73fe\u5728\u306e\u5024\u304c\u623b\u308a\u5024\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002

    \u4ee5\u4e0b\u306f\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf b \u3092\u7528\u3044\u305f\u4f8b\u3067\u3059\u3002

    func f(a int) (b int) {\n    b = a\n    return\n}\n

    \u3053\u306e\u4f8b\u3067\u306f\u3001\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u540d\u524d b \u3092\u4ed8\u3051\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u306a\u3057\u3067 return \u3092\u547c\u3073\u51fa\u3059\u3068\u3001b \u306e\u73fe\u5728\u306e\u5024\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u540d\u524d\u4ed8\u304d\u306e\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u3088\u3063\u3066\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u30012 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u540c\u3058\u578b\u3067\u3042\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002\u305d\u306e\u4ed6\u306b\u3082\u3001\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u7528\u3044\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3086\u3048\u306b\u3001\u660e\u78ba\u306a\u5229\u70b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u614e\u91cd\u306b\u306a\u308a\u306a\u304c\u3089\u3082\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#44","title":"\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528 (#44)","text":"\u8981\u7d04

    #43 \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5f79\u7acb\u3064\u7406\u7531\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u305f\u3002 \u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u5341\u5206\u306b\u6ce8\u610f\u3057\u306a\u3044\u3068\u3001\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3069\u3053\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    func (l loc) getCoordinates(ctx context.Context, address string) (\n    lat, lng float32, err error) {\n    isValid := l.validateAddress(address) (1)\n    if !isValid {\n        return 0, 0, errors.New(\"invalid address\")\n    }\n\n    if ctx.Err() != nil { (2)\n        return 0, 0, err\n    }\n\n    // \u5ea7\u6a19\u3092\u53d6\u5f97\u3057\u3066\u8fd4\u3059\n}\n

    \u4e00\u77a5\u3057\u305f\u3060\u3051\u3067\u306f\u30a8\u30e9\u30fc\u306f\u660e\u3089\u304b\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002if ctx.Err() != nil \u30b9\u30b3\u30fc\u30d7\u3067\u8fd4\u3055\u308c\u308b\u30a8\u30e9\u30fc\u306f err \u3067\u3059\u3002\u3057\u304b\u3057\u3001err \u5909\u6570\u306b\u306f\u5024\u3092\u5272\u308a\u5f53\u3066\u3066\u3044\u307e\u305b\u3093\u3002error \u578b\u306e\u30bc\u30ed\u5024\u3001 nil \u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u307e\u307e\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u5e38\u306b nil \u30a8\u30e9\u30fc\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8aac\u660e\u3057\u305f\u3088\u3046\u306b\u3001\u3053\u308c\u306b\u3088\u308a\u3001\u898b\u3064\u3051\u308b\u306e\u304c\u5fc5\u305a\u3057\u3082\u7c21\u5358\u3067\u306f\u306a\u3044\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3086\u3048\u306b\u3001\u6f5c\u5728\u7684\u306a\u526f\u4f5c\u7528\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#nil-45","title":"nil \u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u8fd4\u3059 (#45)","text":"\u8981\u7d04

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059\u3068\u304d\u306f\u3001nil \u30dd\u30a4\u30f3\u30bf\u3092\u8fd4\u3059\u306e\u3067\u306f\u306a\u304f\u3001\u660e\u793a\u7684\u306a nil \u5024\u3092\u8fd4\u3059\u3088\u3046\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3057\u306a\u3051\u308c\u3070\u3001\u610f\u56f3\u3057\u306a\u3044\u7d50\u679c\u304c\u767a\u751f\u3057\u3001\u547c\u3073\u51fa\u3057\u5143\u304c nil \u3067\u306f\u306a\u3044\u5024\u3092\u53d7\u3051\u53d6\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#46","title":"\u95a2\u6570\u5165\u529b\u306b\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b (#46)","text":"\u8981\u7d04

    \u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4ee3\u308f\u308a\u306b io.Reader \u578b\u3092\u53d7\u3051\u53d6\u308b\u3088\u3046\u306b\u95a2\u6570\u3092\u8a2d\u8a08\u3059\u308b\u3068\u3001\u95a2\u6570\u306e\u518d\u5229\u7528\u6027\u304c\u5411\u4e0a\u3057\u3001\u30c6\u30b9\u30c8\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002

    \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308b\u305f\u3081\u306e\u95a2\u6570\u5165\u529b\u3068\u3057\u3066\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u300c\u30b3\u30fc\u30c9\u306e\u81ed\u3044\u300d\u3068\u307f\u306a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\uff08 os.Open \u306a\u3069\u306e\u7279\u5b9a\u306e\u95a2\u6570\u3092\u9664\u304f\uff09\u3002\u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306b\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u305a\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u307e\u305f\u3001\u95a2\u6570\u306e\u518d\u5229\u7528\u6027\u3082\u4f4e\u4e0b\u3057\u307e\u3059 \uff08\u305f\u3060\u3057\u3001\u3059\u3079\u3066\u306e\u95a2\u6570\u304c\u518d\u5229\u7528\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3002 io.Reader \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u62bd\u8c61\u5316\u3055\u308c\u307e\u3059\u3002\u5165\u529b\u304c\u30d5\u30a1\u30a4\u30eb\u3001\u6587\u5b57\u5217\u3001HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u3001gRPC \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u3044\u305a\u308c\u3067\u3042\u308b\u304b\u306b\u95a2\u4fc2\u306a\u304f\u3001\u5b9f\u88c5\u306f\u518d\u5229\u7528\u3067\u304d\u3001\u7c21\u5358\u306b\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-47","title":"defer \u5f15\u6570\u3068\u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u3069\u306e\u3088\u3046\u306b\u8a55\u4fa1\u3055\u308c\u308b\u304b\u3092\u77e5\u3089\u306a\u3044\uff08\u5f15\u6570\u306e\u8a55\u4fa1\u3001\u30dd\u30a4\u30f3\u30bf\u30fc\u3001\u304a\u3088\u3073\u5024\u30ec\u30b7\u30fc\u30d0\u30fc\uff09 (#47)","text":"\u8981\u7d04

    \u30dd\u30a4\u30f3\u30bf\u3092 defer \u95a2\u6570\u306b\u6e21\u3059\u3053\u3068\u3068\u3001\u547c\u3073\u51fa\u3057\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u5185\u306b\u30e9\u30c3\u30d7\u3059\u308b\u3053\u3068\u304c\u3001\u5f15\u6570\u3068\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u5373\u6642\u8a55\u4fa1\u3092\u514b\u670d\u3059\u308b\u305f\u3081\u306b\u5b9f\u73fe\u53ef\u80fd\u306a\u89e3\u6c7a\u7b56\u3067\u3059\u3002

    defer \u95a2\u6570\u3067\u306f\u3001\u5f15\u6570\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u304c\u623b\u3063\u3066\u304b\u3089\u3067\u306f\u306a\u304f\u3001\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u5e38\u306b\u540c\u3058\u30b9\u30c6\u30fc\u30bf\u30b9\u2015\u2015\u7a7a\u306e\u6587\u5b57\u5217\u2015\u2015\u3067 notify \u3068 incrementCounter \u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002

    const (\n    StatusSuccess  = \"success\"\n    StatusErrorFoo = \"error_foo\"\n    StatusErrorBar = \"error_bar\"\n)\n\nfunc f() error {\n    var status string\n    defer notify(status)\n    defer incrementCounter(status)\n\n    if err := foo(); err != nil {\n        status = StatusErrorFoo\n        return err\n    }\n\n    if err := bar(); err != nil {\n        status = StatusErrorBar\n        return err\n    }\n\n    status = StatusSuccess <5>\n    return nil\n}\n

    \u305f\u3057\u304b\u306b\u3001notify(status) \u3068 incrementCounter(status) \u3092 defer \u95a2\u6570\u3068\u3057\u3066\u547c\u3073\u51fa\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001Go\u8a00\u8a9e\u306f\u3001defer \u3092\u4f7f\u7528\u3057\u305f\u6bb5\u968e\u3067 f \u304c\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u73fe\u5728\u306e\u5024\u3092\u8fd4\u3059\u3068\u3001\u3053\u308c\u3089\u306e\u547c\u3073\u51fa\u3057\u306e\u5b9f\u884c\u3092\u9045\u3089\u305b\u3001\u7a7a\u306e\u6587\u5b57\u5217\u3092\u6e21\u3057\u307e\u3059\u3002

    defer \u3092\u4f7f\u3044\u7d9a\u3051\u305f\u3044\u5834\u5408\u306e\u4e3b\u306a\u65b9\u6cd5\u306f 2 \u3064\u3042\u308a\u307e\u3059\u3002

    \u6700\u521d\u306e\u89e3\u6c7a\u7b56\u306f\u6587\u5b57\u5217\u30dd\u30a4\u30f3\u30bf\u3092\u6e21\u3059\u3053\u3068\u3067\u3059\u3002

    func f() error {\n    var status string\n    defer notify(&status) \n    defer incrementCounter(&status)\n\n    // \u95a2\u6570\u306e\u305d\u308c\u4ee5\u5916\u306e\u90e8\u5206\u306f\u5909\u66f4\u306a\u3057\n}\n

    defer \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5f15\u6570\uff08\u3053\u3053\u3067\u306f\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u30a2\u30c9\u30ec\u30b9\uff09\u304c\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u30b9\u30c6\u30fc\u30bf\u30b9\u81ea\u4f53\u306f\u95a2\u6570\u5168\u4f53\u3067\u5909\u66f4\u3055\u308c\u307e\u3059\u304c\u3001\u305d\u306e\u30a2\u30c9\u30ec\u30b9\u306f\u5272\u308a\u5f53\u3066\u306b\u95a2\u4fc2\u306a\u304f\u4e00\u5b9a\u306e\u307e\u307e\u3067\u3059\u3002\u3088\u3063\u3066\u3001notify \u307e\u305f\u306f incrementCounter \u304c\u6587\u5b57\u5217\u30dd\u30a4\u30f3\u30bf\u306b\u3088\u3063\u3066\u53c2\u7167\u3055\u308c\u308b\u5024\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u671f\u5f85\u3069\u304a\u308a\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u306e\u89e3\u6c7a\u7b56\u3067\u306f 2 \u3064\u306e\u95a2\u6570\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u304c\u5e38\u306b\u53ef\u80fd\u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002

    \u5225\u306e\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u2015\u2015\u30af\u30ed\u30fc\u30b8\u30e3\uff08\u672c\u4f53\u306e\u5916\u90e8\u304b\u3089\u5909\u6570\u3092\u53c2\u7167\u3059\u308b\u533f\u540d\u95a2\u6570\u5024\uff09\u3092 defer \u6587\u3068\u3057\u3066\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u3059\u3002

    func f() error {\n    var status string\n    defer func() {\n        notify(status)\n        incrementCounter(status)\n    }()\n\n    // \u95a2\u6570\u306e\u305d\u308c\u4ee5\u5916\u306e\u90e8\u5206\u306f\u5909\u66f4\u306a\u3057\n}\n

    \u3053\u3053\u3067\u306f\u3001notify \u3068 incrementCounter \u306e\u4e21\u65b9\u306e\u547c\u3073\u51fa\u3057\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u5185\u306b\u30e9\u30c3\u30d7\u3057\u307e\u3059\u3002\u3053\u306e\u30af\u30ed\u30fc\u30b8\u30e3\u306f\u3001\u672c\u4f53\u306e\u5916\u90e8\u304b\u3089\u30b9\u30c6\u30fc\u30bf\u30b9\u5909\u6570\u3092\u53c2\u7167\u3057\u307e\u3059\u3002\u3086\u3048\u306b\u3001status \u306f\u3001defer \u3092\u547c\u3073\u51fa\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u30af\u30ed\u30fc\u30b8\u30e3\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u4e0a\u306b\u3001\u30b7\u30b0\u30cd\u30c1\u30e3\u3092\u5909\u66f4\u3059\u308b\u305f\u3081\u306b notify \u3084 incrementCounter \u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002

    \u3053\u306e\u52d5\u4f5c\u306f\u30e1\u30bd\u30c3\u30c9\u30ec\u30b7\u30fc\u30d0\u30fc\u306b\u3082\u9069\u7528\u3055\u308c\u308b\u3053\u3068\u306b\u3082\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30ec\u30b7\u30fc\u30d0\u30fc\u306f\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_8","title":"\u30a8\u30e9\u30fc\u51e6\u7406","text":""},{"location":"ja/#48","title":"\u30d1\u30cb\u30c3\u30af (#48)","text":"\u8981\u7d04

    panic \u306e\u4f7f\u7528\u306f\u3001Go\u8a00\u8a9e\u3067\u30a8\u30e9\u30fc\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306e\u624b\u6bb5\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u308c\u306f\u56de\u5fa9\u4e0d\u80fd\u306a\u72b6\u6cc1\u3067\u306e\u307f\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30d2\u30e5\u30fc\u30de\u30f3\u30a8\u30e9\u30fc\u3092\u901a\u77e5\u3059\u308b\u5834\u5408\u3084\u3001\u5fc5\u9808\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306a\u3069\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001panic \u306f\u901a\u5e38\u306e\u6d41\u308c\u3092\u505c\u6b62\u3059\u308b\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3067\u3059\u3002

    func main() {\n    fmt.Println(\"a\")\n    panic(\"foo\")\n    fmt.Println(\"b\")\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306f a \u3092\u51fa\u529b\u3057\u3001b \u3092\u51fa\u529b\u3059\u308b\u524d\u306b\u505c\u6b62\u3057\u307e\u3059\u3002

    a\npanic: foo\n\ngoroutine 1 [running]:\nmain.main()\n        main.go:7 +0xb3\n

    panic \u306e\u4f7f\u7528\u306f\u614e\u91cd\u306b\u3059\u3079\u304d\u3067\u3059\u3002\u4ee3\u8868\u7684\u306a\u30b1\u30fc\u30b9\u304c 2 \u3064\u3042\u308a\u30011 \u3064\u306f\u30d2\u30e5\u30fc\u30de\u30f3\u30a8\u30e9\u30fc\u3092\u901a\u77e5\u3059\u308b\u5834\u5408\uff08\u4f8b: sql.Register\u30c9\u30e9\u30a4\u30d0\u30fc\u304c nil \u307e\u305f\u306f\u65e2\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b panic \u3092\u8d77\u3053\u3057\u307e\u3059\uff09\u3001\u3082\u3046 1 \u3064\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u9808\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u751f\u6210\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u3067\u3059\u3002\u7d50\u679c\u3068\u3057\u3066\u3001\u4f8b\u5916\u7684\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306e\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u306b\u304a\u3044\u3066\u306f\u3001\u30a8\u30e9\u30fc\u51e6\u7406\u306f\u3001\u6700\u5f8c\u306e\u623b\u308a\u5f15\u6570\u3068\u3057\u3066\u9069\u5207\u306a\u30a8\u30e9\u30fc\u578b\u3092\u8fd4\u3059\u95a2\u6570\u3092\u901a\u3058\u3066\u884c\u3046\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#49","title":"\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u3079\u304d\u3068\u304d\u3092\u77e5\u3089\u306a\u3044 (#49)","text":"\u8981\u7d04

    \u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u308b\u3068\u3001\u30a8\u30e9\u30fc\u3092\u30de\u30fc\u30af\u3057\u305f\u308a\u3001\u8ffd\u52a0\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u63d0\u4f9b\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306b\u3088\u308a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u305f\u3081\u3001\u6f5c\u5728\u7684\u306a\u7d50\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u305d\u308c\u3092\u907f\u3051\u305f\u3044\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002

    Go 1.13 \u4ee5\u964d\u3001%w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u4f7f\u7528\u3059\u308c\u3070\u7c21\u5358\u306b\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3068\u306f\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3082\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30e9\u30c3\u30d1\u30fc\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u307e\u305f\u306f\u30d1\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u4e00\u822c\u306b\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306e\u4e3b\u306a\u4f7f\u7528\u4f8b\u306f\u6b21\u306e 2 \u3064\u3067\u3059\u3002

    • \u30a8\u30e9\u30fc\u306b\u3055\u3089\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u52a0\u3048\u308b
    • \u30a8\u30e9\u30fc\u3092\u7279\u5b9a\u306e\u30a8\u30e9\u30fc\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b

    \u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3068\u304d\u3001\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002\u30e9\u30c3\u30d4\u30f3\u30b0\u3068\u306f\u3001\u30a8\u30e9\u30fc\u306b\u3055\u3089\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u305f\u308a\u3001\u30a8\u30e9\u30fc\u3092\u7279\u5b9a\u306e\u30bf\u30a4\u30d7\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30a8\u30e9\u30fc\u3092\u30de\u30fc\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u72ec\u81ea\u306e\u30a8\u30e9\u30fc\u578b\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3067\u3059\u304c\u3001\u65b0\u305f\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u52a0\u3048\u305f\u3044\u3060\u3051\u306e\u5834\u5408\u306f\u3001\u65b0\u3057\u3044\u30a8\u30e9\u30fc\u578b\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u305f\u3081\u3001%w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u6307\u5b9a\u3057\u3066 fmt.Errorf \u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u305f\u3060\u3057\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306b\u3088\u308a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u305f\u3081\u3001\u6f5c\u5728\u7684\u306a\u7d50\u5408\u304c\u751f\u3058\u307e\u3059\u3002\u305d\u308c\u3092\u907f\u3051\u305f\u3044\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u306e\u30e9\u30c3\u30d4\u30f3\u30b0\u3067\u306f\u306a\u304f\u3001\u30a8\u30e9\u30fc\u306e\u5909\u63db\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001%v \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u6307\u5b9a\u3057\u305f fmt.Errorf \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#50","title":"\u30a8\u30e9\u30fc\u578b\u306e\u4e0d\u6b63\u306a\u6bd4\u8f03 (#50)","text":"\u8981\u7d04

    Go 1.13 \u306e\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u578b\u306b\u5bfe\u3059\u308b\u30a8\u30e9\u30fc\u306e\u6bd4\u8f03\u306f errors.As \u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u8fd4\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u8a55\u4fa1\u306b\u5931\u6557\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#51","title":"\u30a8\u30e9\u30fc\u5024\u306e\u4e0d\u6b63\u306a\u6bd4\u8f03 (#51)","text":"\u8981\u7d04

    Go 1.13 \u306e\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30a8\u30e9\u30fc\u3068\u5024\u306e\u6bd4\u8f03\u306f errors.As \u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u8fd4\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u8a55\u4fa1\u306b\u5931\u6557\u3057\u307e\u3059\u3002

    \u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30a8\u30e9\u30fc\u306e\u3053\u3068\u3067\u3059\u3002

    import \"errors\"\n\nvar ErrFoo = errors.New(\"foo\")\n
    \u4e00\u822c\u306b\u3001\u6163\u4f8b\u3068\u3057\u3066 Err \u3067\u59cb\u3081\u3001\u305d\u306e\u5f8c\u306b\u30a8\u30e9\u30fc\u578b\u3092\u7d9a\u3051\u307e\u3059\u3002\u3053\u3053\u3067\u306f ErrFoo \u3067\u3059\u3002\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u306f\u3001\u4e88\u671f\u3055\u308c\u308b \u30a8\u30e9\u30fc\u3001\u3064\u307e\u308a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308b\u30a8\u30e9\u30fc\u3092\u4f1d\u3048\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3068\u3057\u3066

    • \u4e88\u671f\u3055\u308c\u308b\u30a8\u30e9\u30fc\u306f\u30a8\u30e9\u30fc\u5024\uff08\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\uff09\u3068\u3057\u3066\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a var ErrFoo =errors.New(\"foo\")\u3002
    • \u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u306f\u30a8\u30e9\u30fc\u578b\u3068\u3057\u3066\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a BarError \u306f error \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u305f\u4e0a\u3067 type BarError struct { ... }\u3002

    \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u30e9\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u7279\u5b9a\u306e\u5024\u306b\u5bfe\u3059\u308b\u30a8\u30e9\u30fc\u306e\u30c1\u30a7\u30c3\u30af\u306f == \u306e\u4ee3\u308f\u308a\u306b errors.Is \u3092\u4f7f\u7528\u3057\u3066\u884c\u3044\u307e\u3057\u3087\u3046\u3002\u305d\u308c\u306b\u3088\u3063\u3066\u3001\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001errors.Is \u306f\u305d\u308c\u3092\u518d\u5e30\u7684\u306b\u30a2\u30f3\u30e9\u30c3\u30d7\u3057\u3001\u30c1\u30a7\u30fc\u30f3\u5185\u306e\u5404\u30a8\u30e9\u30fc\u3092\u63d0\u4f9b\u3055\u308c\u305f\u5024\u3068\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#2-52","title":"\u30a8\u30e9\u30fc\u306e 2 \u56de\u51e6\u7406 (#52)","text":"\u8981\u7d04

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a8\u30e9\u30fc\u306f 1 \u56de\u3067\u51e6\u7406\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u304b\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u304b\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u591a\u304f\u306e\u5834\u5408\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306f\u3001\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u63d0\u4f9b\u3057\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\u89e3\u6c7a\u7b56\u306b\u306a\u308a\u307e\u3059\u3002

    \u30a8\u30e9\u30fc\u3092\u8907\u6570\u56de\u51e6\u7406\u3059\u308b\u3053\u3068\u306f\u3001\u7279\u306bGo\u8a00\u8a9e\u306b\u9650\u3089\u305a\u3001\u958b\u767a\u8005\u304c\u983b\u7e41\u306b\u3084\u3063\u3066\u3057\u307e\u3046\u30df\u30b9\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u540c\u3058\u30a8\u30e9\u30fc\u304c\u8907\u6570\u56de\u30ed\u30b0\u306b\u8a18\u9332\u3055\u308c\u3001\u30c7\u30d0\u30c3\u30b0\u304c\u56f0\u96e3\u306b\u306a\u308b\u72b6\u6cc1\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30a8\u30e9\u30fc\u51e6\u7406\u306f 1 \u5ea6\u3067\u6e08\u307e\u3059\u3079\u304d\u3060\u3068\u3044\u3046\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002\u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u884c\u3046\u3079\u304d\u306f\u3001\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u304b\u3001\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u304b\u306e\u3069\u3061\u3089\u304b\u3060\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u7d20\u5316\u3055\u308c\u3001\u30a8\u30e9\u30fc\u306e\u72b6\u6cc1\u306b\u3064\u3044\u3066\u3088\u308a\u9069\u5207\u306a\u6d1e\u5bdf\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306f\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u4f1d\u3048\u3001\u30a8\u30e9\u30fc\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u308b\u305f\u3081\u3001\u6700\u3082\u4f7f\u3044\u52dd\u624b\u306e\u826f\u3044\u624b\u6bb5\u306b\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#53","title":"\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u3057\u306a\u3044 (#53)","text":"\u8981\u7d04

    \u95a2\u6570\u547c\u3073\u51fa\u3057\u4e2d\u3067\u3042\u3063\u3066\u3082\u3001defer \u95a2\u6570\u5185\u3067\u3042\u3063\u3066\u3082\u3001\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u308b\u3068\u304d\u306f\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u660e\u78ba\u306b\u884c\u3046\u3079\u304d\u3067\u3059\u3002\u305d\u3046\u3057\u306a\u3044\u3068\u3001\u5c06\u6765\u306e\u8aad\u307f\u624b\u304c\u305d\u308c\u304c\u610f\u56f3\u7684\u3060\u3063\u305f\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u30df\u30b9\u3060\u3063\u305f\u306e\u304b\u56f0\u60d1\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-54","title":"defer \u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3057\u306a\u3044 (#54)","text":"\u8981\u7d04

    \u591a\u304f\u306e\u5834\u5408\u3001defer \u95a2\u6570\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001\u76f4\u63a5\u51e6\u7406\u3059\u308b\u304b\u3001\u547c\u3073\u51fa\u3057\u5143\u306b\u4f1d\u3048\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u3092\u7121\u8996\u3059\u308b\u5834\u5408\u306f\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u6b21\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    func f() {\n  // ...\n  notify() // \u30a8\u30e9\u30fc\u51e6\u7406\u306f\u7701\u7565\u3055\u308c\u3066\u3044\u307e\u3059\n}\n\nfunc notify() error {\n  // ...\n}\n

    \u4fdd\u5b88\u6027\u306e\u89b3\u70b9\u304b\u3089\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3044\u304f\u3064\u304b\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3042\u308b\u4eba\u304c\u3053\u308c\u3092\u8aad\u3080\u3053\u3068\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002\u8aad\u307f\u624b\u306f\u3001notify \u304c\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u305d\u306e\u30a8\u30e9\u30fc\u304c\u89aa\u95a2\u6570\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u6c17\u3065\u304d\u307e\u3059\u3002\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u610f\u56f3\u7684\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u679c\u305f\u3057\u3066\u63a8\u6e2c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u4ee5\u524d\u306e\u958b\u767a\u8005\u304c\u305d\u308c\u3092\u51e6\u7406\u3059\u308b\u306e\u3092\u5fd8\u308c\u305f\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u610f\u56f3\u7684\u306b\u51e6\u7406\u3057\u305f\u306e\u304b\u3092\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    \u3053\u308c\u3089\u306e\u7406\u7531\u306b\u3088\u308a\u3001\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3057\u305f\u3044\u5834\u5408\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\uff08 _ \uff09\u3092\u4f7f\u3046\u307b\u304b\u3042\u308a\u307e\u305b\u3093\u3002

    _ = notify\n

    \u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u5b9f\u884c\u6642\u9593\u306e\u70b9\u3067\u306f\u3001\u3053\u306e\u65b9\u6cd5\u306f\u6700\u521d\u306e\u30b3\u30fc\u30c9\u90e8\u5206\u3068\u6bd4\u3079\u3066\u4f55\u3082\u5909\u308f\u308a\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u79c1\u305f\u3061\u304c\u30a8\u30e9\u30fc\u306b\u95a2\u5fc3\u304c\u306a\u3044\u3053\u3068\u3092\u660e\u3089\u304b\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30a8\u30e9\u30fc\u304c\u7121\u8996\u3055\u308c\u308b\u7406\u7531\u3092\u793a\u3059\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    // \u6700\u5927\u3067\u3082 1 \u56de\u306e\u4f1d\u9054 \n// \u305d\u308c\u3086\u3048\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u305d\u308c\u3089\u306e\u4e00\u90e8\u304c\u5931\u308f\u308c\u308b\u3053\u3068\u306f\u8a31\u5bb9\u3055\u308c\u307e\u3059\n_ = notify()\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_9","title":"\u4e26\u884c\u51e6\u7406\uff1a\u57fa\u790e","text":""},{"location":"ja/#55","title":"\u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306e\u6df7\u540c (#55)","text":"\u8981\u7d04

    \u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001 Go \u958b\u767a\u8005\u306b\u3068\u3063\u3066\u5fc5\u9808\u3067\u3059\u3002\u4e26\u884c\u51e6\u7406\u306f\u69cb\u9020\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u304c\u3001\u4e26\u5217\u51e6\u7406\u306f\u5b9f\u884c\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002

    \u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306f\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    • \u4e26\u884c\u51e6\u7406\u306f\u69cb\u9020\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002\u5225\u3005\u306e\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u6bb5\u968e\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u9010\u6b21\u51e6\u7406\u3092\u4e26\u884c\u51e6\u7406\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
    • \u4e26\u5217\u51e6\u7406\u306f\u5b9f\u884c\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3055\u3089\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u6bb5\u968e\u30ec\u30d9\u30eb\u3067\u4e26\u5217\u51e6\u7406\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306f\u3001\u4e26\u5217\u5316\u3067\u304d\u308b\u90e8\u5206\u3092\u3082\u3064\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u69cb\u9020\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u4e26\u884c\u51e6\u7406\u306b\u3088\u308a\u4e26\u5217\u51e6\u7406\u304c\u53ef\u80fd \u306b\u306a\u308a\u307e\u3059 \u3002

    "},{"location":"ja/#56","title":"\u4e26\u884c\u51e6\u7406\u306e\u307b\u3046\u304c\u5e38\u306b\u65e9\u3044\u3068\u8003\u3048\u3066\u3044\u308b (#56)","text":"\u8981\u7d04

    \u719f\u7df4\u3057\u305f\u958b\u767a\u8005\u306b\u306a\u308b\u306b\u306f\u3001\u4e26\u884c\u51e6\u7406\u304c\u5fc5\u305a\u3057\u3082\u9ad8\u901f\u3067\u3042\u308b\u3068\u306f\u9650\u3089\u306a\u3044\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u5c0f\u9650\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u4e26\u5217\u51e6\u7406\u3092\u4f34\u3046\u89e3\u6c7a\u7b56\u306f\u3001\u5fc5\u305a\u3057\u3082\u9010\u6b21\u51e6\u7406\u3088\u308a\u9ad8\u901f\u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u9010\u6b21\u51e6\u7406\u3068\u4e26\u884c\u51e6\u7406\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306f\u3001\u4eee\u5b9a\u3092\u691c\u8a3c\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#57","title":"\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u3044\u3064\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u306b\u3064\u3044\u3066\u6238\u60d1\u3063\u3066\u3044\u308b (#57)","text":"\u8981\u7d04

    \u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u76f8\u4e92\u4f5c\u7528\u3092\u8a8d\u8b58\u3057\u3066\u3044\u308b\u3053\u3068\u306f\u3001\u30c1\u30e3\u30cd\u30eb\u3068\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306e\u3069\u3061\u3089\u3092\u9078\u629e\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u3068\u304d\u306b\u3082\u5f79\u7acb\u3061\u307e\u3059\u3002\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u540c\u671f\u304c\u5fc5\u8981\u3067\u3042\u308a\u3001\u3057\u305f\u304c\u3063\u3066\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002\u53cd\u5bfe\u306b\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u901a\u5e38\u3001\u8abf\u6574\u3068\u30aa\u30fc\u30b1\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3\u3001\u3064\u307e\u308a\u30c1\u30e3\u30cd\u30eb\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002

    \u4e26\u884c\u51e6\u7406\u306e\u554f\u984c\u3092\u8003\u616e\u3059\u308b\u3068\u3001\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u305f\u89e3\u6c7a\u7b56\u3092\u5b9f\u88c5\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u304c\u5fc5\u305a\u3057\u3082\u660e\u78ba\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002Go\u8a00\u8a9e\u306f\u901a\u4fe1\u306b\u3088\u308b\u30e1\u30e2\u30ea\u306e\u5171\u6709\u3092\u4fc3\u9032\u3059\u308b\u305f\u3081\u3001\u8d77\u3053\u308a\u3046\u308b\u9593\u9055\u3044\u306e\u3046\u3061\u306e\u4e00\u3064\u306f\u3001\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u304b\u304b\u308f\u3089\u305a\u3001\u30c1\u30e3\u30cd\u30eb\u306e\u4f7f\u7528\u3092\u5e38\u306b\u5f37\u5236\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u30012 \u3064\u306e\u65b9\u6cd5\u306f\u88dc\u5b8c\u7684\u306a\u3082\u306e\u3067\u3042\u308b\u3068\u898b\u306a\u3059\u3079\u304d\u3067\u3059\u3002

    \u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306f\u3069\u306e\u3088\u3046\u306a\u5834\u5408\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u6b21\u306e\u56f3\u306e\u4f8b\u3092\u30d0\u30c3\u30af\u30dc\u30fc\u30f3\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u306b\u306f\u3001\u7279\u5b9a\u306e\u95a2\u4fc2\u3092\u6301\u3064 3 \u3064\u306e\u7570\u306a\u308b\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u3042\u308a\u307e\u3059\u3002

    • G1 \u3068 G2 \u306f\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u7d9a\u3051\u308b\u540c\u3058\u95a2\u6570\u3092\u5b9f\u884c\u3059\u308b 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3001\u3042\u308b\u3044\u306f\u540c\u3058 HTTP \u30cf\u30f3\u30c9\u30e9\u3092\u540c\u6642\u306b\u5b9f\u884c\u3059\u308b 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
    • G1 \u3068 G3 \u306f\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3042\u308a\u3001G2 \u3068 G3 \u3082\u540c\u69d8\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u5168\u4f53\u306e\u4e26\u884c\u69cb\u9020\u306e\u4e00\u90e8\u3067\u3059\u304c\u3001G1 \u3068 G2 \u304c\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u3001G3 \u304c\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

    \u539f\u5247\u3068\u3057\u3066\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306a\u3069\u306e\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u5909\u66f4\u3057\u305f\u308a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306a\u3069\u306b\u3001_\u540c\u671f_\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u671f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3067\u306f\u5f37\u5236\u3055\u308c\u307e\u3059\u304c\u3001\u3069\u306e\u30c1\u30e3\u30cd\u30eb\u578b\u3067\u3082\u5f37\u5236\u3055\u308c\u307e\u305b\u3093\uff08\u30d0\u30c3\u30d5\u30a1\u3042\u308a\u30c1\u30e3\u30cd\u30eb\u3092\u9664\u304f\uff09\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u9593\u306e\u540c\u671f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u9054\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u4e00\u65b9\u3001\u4e00\u822c\u306b\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306f \u8abf\u6574\u304a\u3088\u3073\u30aa\u30fc\u30b1\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3 \u3092\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001G3 \u304c G1 \u3068 G2 \u306e\u4e21\u65b9\u304b\u3089\u306e\u7d50\u679c\u3092\u96c6\u7d04\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001G1 \u3068 G2 \u306f\u65b0\u3057\u3044\u4e2d\u9593\u7d50\u679c\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092 G3 \u306b\u901a\u77e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u8abf\u6574\u306f\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7bc4\u56f2\u3001\u3064\u307e\u308a\u30c1\u30e3\u30cd\u30eb\u306b\u8a72\u5f53\u3057\u307e\u3059\u3002

    \u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u95a2\u3057\u3066\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u6240\u6709\u6a29\u3092\u3042\u308b\u30b9\u30c6\u30c3\u30d7\uff08G1 \u304a\u3088\u3073 G2\uff09\u304b\u3089\u5225\u306e\u30b9\u30c6\u30c3\u30d7\uff08G3\uff09\u306b\u79fb\u7ba1\u3057\u305f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001G1 \u3068 G2 \u306b\u3088\u3063\u3066\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u304c\u8c4a\u304b\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3042\u308b\u6642\u70b9\u3067\u3053\u306e\u30b8\u30e7\u30d6\u306f\u5b8c\u4e86\u3057\u305f\u3068\u898b\u306a\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u7279\u5b9a\u306e\u30ea\u30bd\u30fc\u30b9\u306e\u6e96\u5099\u304c\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u3092\u901a\u77e5\u3057\u3001\u6240\u6709\u6a29\u306e\u79fb\u8ee2\u3092\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3068\u30c1\u30e3\u30cd\u30eb\u306b\u306f\u7570\u306a\u308b\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30c6\u30fc\u30c8\u3092\u5171\u6709\u3057\u305f\u3044\u3068\u304d\u3001\u307e\u305f\u306f\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u3068\u304d\u306f\u3001\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306b\u3088\u3063\u3066\u3053\u306e\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u6392\u4ed6\u7684\u30a2\u30af\u30bb\u30b9\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002\u53cd\u5bfe\u306b\u3001\u30c1\u30e3\u30cd\u30eb\u306f\u30c7\u30fc\u30bf\u306e\u6709\u7121\uff08chan struct{} \u306e\u6709\u7121\uff09\u306b\u95a2\u4fc2\u306a\u304f\u30b7\u30b0\u30ca\u30eb\u3092\u884c\u3046\u4ed5\u7d44\u307f\u3067\u3059\u3002\u8abf\u6574\u3084\u6240\u6709\u6a29\u306e\u79fb\u8ee2\u306f\u30c1\u30e3\u30cd\u30eb\u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u4e26\u5217\u304b\u4e26\u884c\u304b\u3092\u77e5\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u304c\u5fc5\u8981\u3067\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u30c1\u30e3\u30cd\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002

    "},{"location":"ja/#go-58","title":"\u7af6\u5408\u554f\u984c\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\uff08\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u3001\u305d\u3057\u3066Go\u8a00\u8a9e\u306e\u30e1\u30e2\u30ea\u30e2\u30c7\u30eb\uff09 (#58)","text":"\u8981\u7d04

    \u4e26\u884c\u51e6\u7406\u306b\u719f\u9054\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u304c\u7570\u306a\u308b\u6982\u5ff5\u3067\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u610f\u5473\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u305d\u306e\u3046\u3061\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u4e00\u65b9\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u3044\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u5b9f\u884c\u3092\u610f\u5473\u3059\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u52d5\u4f5c\u304c\u5236\u5fa1\u3067\u304d\u306a\u3044\u30a4\u30d9\u30f3\u30c8\u306e\u9806\u5e8f\u3084\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306f\u7af6\u5408\u72b6\u614b\u3067\u3059\u3002

    \u7af6\u5408\u554f\u984c\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u304c\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30d0\u30b0\u306e\u4e2d\u3067\u6700\u3082\u56f0\u96e3\u304b\u3064\u6700\u3082\u6f5c\u4f0f\u6027\u306e\u9ad8\u3044\u30d0\u30b0\u306e 1 \u3064\u3068\u306a\u308a\u307e\u3059\u3002Go \u958b\u767a\u8005\u3068\u3057\u3066\u3001\u79c1\u305f\u3061\u306f\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u3001\u305d\u308c\u3089\u304c\u53ca\u307c\u3057\u3046\u308b\u5f71\u97ff\u3001\u304a\u3088\u3073\u305d\u308c\u3089\u3092\u56de\u907f\u3059\u308b\u65b9\u6cd5\u306a\u3069\u306e\u91cd\u8981\u306a\u5074\u9762\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#_10","title":"\u30c7\u30fc\u30bf\u7af6\u5408","text":"

    \u30c7\u30fc\u30bf\u7af6\u5408\u306f\u30012 \u3064\u4ee5\u4e0a\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u5371\u967a\u306a\u7d50\u679c\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u60aa\u3044\u3053\u3068\u306b\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u3001\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u7121\u610f\u5473\u306a\u30d3\u30c3\u30c8\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u542b\u3080\u5024\u304c\u4fdd\u6301\u3055\u308c\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u3055\u307e\u3056\u307e\u306a\u624b\u6cd5\u3092\u99c6\u4f7f\u3057\u3066\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u767a\u751f\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    • sync/atomic \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b
    • 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u540c\u671f\u3059\u308b\u969b\u306b\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306e\u3088\u3046\u306a\u7279\u5b9a\u306e\u76ee\u7684\u306e\u305f\u3081\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5229\u7528\u3059\u308b
    • \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u901a\u4fe1\u3057\u3001\u5909\u6570\u304c\u4e00\u5ea6\u306b 1 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3060\u3051\u306b\u3088\u3063\u3066\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b
    "},{"location":"ja/#_11","title":"\u7af6\u5408\u72b6\u614b","text":"

    \u5b9f\u884c\u3057\u305f\u3044\u64cd\u4f5c\u306b\u5fdc\u3058\u3066\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u306a\u7d50\u679c\u3092\u610f\u5473\u3059\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u3046\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3002

    \u7af6\u5408\u72b6\u614b\u306f\u3001\u52d5\u4f5c\u304c\u5236\u5fa1\u3067\u304d\u306a\u3044\u30a4\u30d9\u30f3\u30c8\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u307e\u305f\u306f\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u4f9d\u5b58\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u304c\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5b9f\u884c\u9806\u5e8f\u3067\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f5c\u696d\u3059\u308b\u5834\u5408\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u7af6\u5408\u72b6\u614b\u3068\u306f\u7570\u306a\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u305d\u306e\u3046\u3061\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u306f\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u306a\u7d50\u679c\u3092\u610f\u5473\u3059\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u304f\u3066\u3082\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u5236\u5fa1\u3055\u308c\u3066\u3044\u306a\u3044\u30a4\u30d9\u30f3\u30c8\uff08\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5b9f\u884c\u3001\u30c1\u30e3\u30cd\u30eb\u3078\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u767a\u4fe1\u901f\u5ea6\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u547c\u3073\u51fa\u3057\u306e\u7d99\u7d9a\u6642\u9593\u306a\u3069\uff09\u306b\u4f9d\u5b58\u3059\u308b\u6319\u52d5\u3092\u6301\u3064\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u306f\u7af6\u5408\u72b6\u614b\u3067\u3059\u3002\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u8a08\u306b\u719f\u7df4\u3059\u308b\u306b\u306f\u3001\u4e21\u65b9\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u809d\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#59","title":"\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u30bf\u30a4\u30d7\u3054\u3068\u306e\u4e26\u884c\u51e6\u7406\u306e\u5f71\u97ff\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#59)","text":"\u8981\u7d04

    \u4e00\u5b9a\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u306f\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u30bf\u30a4\u30d7\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044\u3002CPU \u30d0\u30a6\u30f3\u30c9\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u3053\u306e\u6570\u3092 GOMAXPROCS \u5909\u6570\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u30db\u30b9\u30c8\u4e0a\u306e CPU \u30b3\u30a2\u306e\u6570\u306b\u57fa\u3065\u304f\uff09\u306b\u8fd1\u3065\u3051\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002I/O \u30d0\u30a6\u30f3\u30c9\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u4f5c\u6210\u306f\u3001\u5916\u90e8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u306e\u4ed6\u306e\u8981\u56e0\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002

    \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u306f\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u5b9f\u884c\u6642\u9593\u306f\u6b21\u306e\u3044\u305a\u308c\u304b\u306b\u3088\u3063\u3066\u5236\u9650\u3055\u308c\u307e\u3059\u3002

    • CPU \u306e\u901f\u5ea6 - \u305f\u3068\u3048\u3070\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u304c\u3053\u308c\u306b\u3042\u305f\u308a\u307e\u3059\u3002\u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f CPU \u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    • I/O \u306e\u901f\u5ea6 - \u305f\u3068\u3048\u3070\u3001REST \u547c\u3073\u51fa\u3057\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u304c\u3053\u308c\u306b\u3042\u305f\u308a\u307e\u3059\u3002\u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f I/O \u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    • \u5229\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u306e\u91cf - \u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f\u30e1\u30e2\u30ea\u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    \u88dc\u8db3

    \u3053\u3053\u6570\u5341\u5e74\u3067\u30e1\u30e2\u30ea\u304c\u975e\u5e38\u306b\u5b89\u4fa1\u306b\u306a\u3063\u305f\u3053\u3068\u3092\u8003\u616e\u3059\u308b\u3068\u3001 3 \u3064\u76ee\u306f\u73fe\u5728\u3067\u306f\u6700\u3082\u307e\u308c\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u6700\u521d\u306e 2 \u3064\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u30bf\u30a4\u30d7\u3001CPU \u30d0\u30a6\u30f3\u30c9\u3068 I/O \u30d0\u30a6\u30f3\u30c9\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002

    \u30ef\u30fc\u30ab\u30fc\u306b\u3088\u3063\u3066\u5b9f\u884c\u3055\u308c\u308b\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c I/O \u30d0\u30a6\u30f3\u30c9\u3067\u3042\u308b\u5834\u5408\u3001\u5024\u306f\u4e3b\u306b\u5916\u90e8\u30b7\u30b9\u30c6\u30e0\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u9006\u306b\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c CPU \u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u6700\u9069\u306a\u6570\u306f\u5229\u7528\u53ef\u80fd\u306a CPU \u30b3\u30a2\u306e\u6570\u306b\u8fd1\u304f\u306a\u308a\u307e\u3059\uff08\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306f runtime.GOMAXPROCS \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\uff09\u3002\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u8a08\u3059\u308b\u5834\u5408\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u30bf\u30a4\u30d7\uff08 I/O \u3042\u308b\u3044\u306f CPU \uff09\u3092\u77e5\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#go-context-60","title":"Go Context \u306b\u5bfe\u3059\u308b\u8aa4\u89e3 (#60)","text":"\u8981\u7d04

    Go Context \u306f\u3001Go\u8a00\u8a9e\u306e\u4e26\u884c\u51e6\u7406\u306e\u57fa\u790e\u306e\u4e00\u90e8\u3067\u3082\u3042\u308a\u307e\u3059\u3002 Context \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3001\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u4fdd\u6301\u3067\u304d\u307e\u3059\u3002

    https://pkg.go.dev/context

    Context \u306f\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb\u3001\u305d\u306e\u4ed6\u306e\u5024\u3092 API \u306e\u5883\u754c\u3092\u8d8a\u3048\u3066\u4f1d\u9054\u3057\u307e\u3059\u3002

    "},{"location":"ja/#_12","title":"\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3","text":"

    \u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3068\u306f\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3067\u6c7a\u5b9a\u3055\u308c\u308b\u7279\u5b9a\u306e\u6642\u70b9\u3092\u6307\u3057\u307e\u3059\u3002

    • \u73fe\u5728\u304b\u3089\u306e time.Duration \uff08\u4f8b\uff1a250 ms\uff09
    • time.Time \uff08\u4f8b\uff1a2023-02-07 00:00:00 UTC\uff09

    \u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306e\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u306f\u3001\u3053\u308c\u3092\u904e\u304e\u305f\u5834\u5408\u306f\u9032\u884c\u4e2d\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u307e\u3059\u3002\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3068\u306f\u3001\u305f\u3068\u3048\u3070\u3001\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u53d7\u4fe1\u3092\u5f85\u6a5f\u3057\u3066\u3044\u308b I/O \u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3059\u3002

    "},{"location":"ja/#_13","title":"\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb","text":"

    Go Context \u306e\u3082\u3046 1 \u3064\u306e\u4f7f\u7528\u4f8b\u306f\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb\u3092\u4f1d\u9001\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5225\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u5185\u3067 CreateFileWatcher(ctx context.Context, filename string) \u3092\u547c\u3073\u51fa\u3059\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u60f3\u50cf\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308a\u3092\u7d9a\u3051\u3066\u66f4\u65b0\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u63d0\u4f9b\u3055\u308c\u305f Context \u304c\u671f\u9650\u5207\u308c\u306b\u306a\u308b\u304b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u3068\u3001\u3053\u306e\u95a2\u6570\u306f\u305d\u308c\u3092\u51e6\u7406\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u8a18\u8ff0\u5b50\u3092\u9589\u3058\u307e\u3059\u3002

    "},{"location":"ja/#context-value","title":"Context Value","text":"

    Go Context \u306e\u6700\u5f8c\u306e\u4f7f\u7528\u4f8b\u306f\u3001\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u904b\u3076\u3053\u3068\u3067\u3059\u3002 Context \u306b\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u542b\u3081\u308b\u610f\u5473\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002Go Context \u306f\u6c4e\u7528\u7684\u3067\u3042\u308b\u305f\u3081\u3001\u4f7f\u7528\u4f8b\u306f\u7121\u9650\u306b\u3042\u308a\u307e\u3059\u3002

    \u305f\u3068\u3048\u3070\u3001\u30c8\u30ec\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u7570\u306a\u308b\u30b5\u30d6\u95a2\u6570\u306e\u9593\u3067\u540c\u3058\u76f8\u95a2 ID \u3092\u5171\u6709\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4e00\u90e8\u306e\u958b\u767a\u8005\u306f\u3001\u3053\u306e ID \u3092\u95a2\u6570\u30b7\u30b0\u30cd\u30c1\u30e3\u306e\u4e00\u90e8\u306b\u3059\u308b\u306b\u306f\u3042\u307e\u308a\u306b\u4fb5\u7565\u7684\u3060\u3068\u8003\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u70b9\u306b\u95a2\u3057\u3066\u3001\u4e0e\u3048\u3089\u308c\u305f Context \u306e\u4e00\u90e8\u3068\u3057\u3066\u305d\u308c\u3092\u542b\u3081\u308b\u3053\u3068\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#context","title":"Context \u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b","text":"

    context.Context \u30bf\u30a4\u30d7\u306f\u3001\u53d7\u4fe1\u5c02\u7528\u306e\u901a\u77e5\u30c1\u30e3\u30cd\u30eb <-chan struct{} \u3092\u8fd4\u3059 Done \u30e1\u30bd\u30c3\u30c9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u30c1\u30e3\u30cd\u30eb\u306f\u3001 Context \u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u4f5c\u696d\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u9589\u3058\u3089\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    • context.WithCancel\u3067\u4f5c\u6210\u3055\u308c\u305f Context \u306b\u95a2\u9023\u3059\u308b Done \u30c1\u30e3\u30cd\u30eb\u306f\u3001cancel\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3068\u9589\u3058\u3089\u308c\u307e\u3059\u3002
    • context.WithDeadline\u3067\u4f5c\u6210\u3057\u305f Context \u306b\u95a2\u9023\u3059\u308b Done \u30c1\u30e3\u30cd\u30eb\u306f\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3092\u904e\u304e\u308b\u3068\u9589\u3058\u3089\u308c\u307e\u3059\u3002

    \u6ce8\u610f\u3059\u3079\u304d\u70b9\u306e 1 \u3064\u306f\u3001\u5185\u90e8\u30c1\u30e3\u30cd\u30eb\u306f\u3001\u7279\u5b9a\u306e\u5024\u3092\u53d7\u3051\u53d6\u3063\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001 Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d\u3001\u307e\u305f\u306f\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306b\u9054\u3057\u305f\u3068\u304d\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u306e\u30af\u30ed\u30fc\u30ba\u306f\u3001\u3059\u3079\u3066\u306e\u6d88\u8cbb\u8005\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u53d7\u3051\u53d6\u308b\u552f\u4e00\u306e\u30c1\u30e3\u30cd\u30eb\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3042\u308b\u305f\u3081\u3067\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001 Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u304b\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306b\u9054\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u6d88\u8cbb\u8005\u306b\u901a\u77e5\u304c\u5c4a\u304d\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u719f\u7df4\u3057\u305f Go \u958b\u767a\u8005\u306b\u306a\u308b\u306b\u306f\u3001 Context \u3068\u305d\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u539f\u5247\u3068\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5f85\u6a5f\u3055\u305b\u3089\u308c\u308b\u95a2\u6570\u306f Context \u3092\u53d6\u5f97\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4e0a\u6d41\u306e\u547c\u3073\u51fa\u3057\u5143\u304c\u3053\u306e\u95a2\u6570\u3092\u3044\u3064\u547c\u3073\u51fa\u3059\u304b\u3092\u6c7a\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_14","title":"\u4e26\u884c\u51e6\u7406\uff1a\u5b9f\u8df5","text":""},{"location":"ja/#context-61","title":"\u4e0d\u9069\u5207\u306a Context \u3092\u5e83\u3081\u3066\u3057\u307e\u3046 (#61)","text":"\u8981\u7d04

    Context \u3092\u4f1d\u64ad\u3059\u308b\u969b\u306b\u306f\u3001Context \u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3067\u304d\u308b\u6761\u4ef6\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u9001\u4fe1\u3055\u308c\u305f\u969b\u306b HTTP \u30cf\u30f3\u30c9\u30e9\u304c Context \u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3059\u308b\u3068\u304d\u306a\u3069\u3067\u3059\u3002

    \u591a\u304f\u306e\u72b6\u6cc1\u3067\u306f\u3001Go Context \u3092\u4f1d\u64ad\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001Context \u306e\u4f1d\u64ad\u306b\u3088\u3063\u3066\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3057\u3001\u30b5\u30d6\u95a2\u6570\u304c\u6b63\u3057\u304f\u5b9f\u884c\u3055\u308c\u306a\u304f\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

    \u6b21\u306e\u4f8b\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3044\u304f\u3064\u304b\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059 HTTP \u30cf\u30f3\u30c9\u30e9\u3092\u516c\u958b\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\u76f4\u524d\u306b\u3001\u305d\u308c\u3092 Kafka \u30c8\u30d4\u30c3\u30af\u306b\u9001\u4fe1\u3057\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059\u3002HTTP \u30b3\u30f3\u30b7\u30e5\u30fc\u30de\u306b\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u70b9\u3067\u30da\u30ca\u30eb\u30c6\u30a3\u3092\u8ab2\u3057\u305f\u304f\u306a\u3044\u306e\u3067\u3001publish \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u65b0\u3057\u3044\u30b4\u30eb\u30fc\u30c1\u30f3\u5185\u3067\u975e\u540c\u671f\u306b\u51e6\u7406\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u5834\u5408\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e publish \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4e2d\u65ad\u3067\u304d\u308b\u3088\u3046\u306b\u3001Context \u3092\u53d7\u3051\u5165\u308c\u308b publish \u95a2\u6570\u3092\u81ea\u7531\u306b\u4f7f\u3048\u308b\u3068\u3057\u307e\u3059\u3002\u53ef\u80fd\u306a\u5b9f\u88c5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002

    func handler(w http.ResponseWriter, r *http.Request) {\n    response, err := doSomeTask(r.Context(), r)\n    if err != nil {\n        http.Error(w, err.Error(), http.StatusInternalServerError)\n    return\n    }\n    go func() {\n        err := publish(r.Context(), response)\n        // err \u306e\u51e6\u7406\u3092\u3059\u308b\n    }()\n    writeResponse(response)\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306e\u4f55\u304c\u554f\u984c\u306a\u306e\u3067\u3057\u3087\u3046\u304b\u3002HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u4ed8\u3055\u308c\u305f Context \u306f\u3001\u3055\u307e\u3056\u307e\u306a\u72b6\u6cc1\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u63a5\u7d9a\u304c\u7d42\u4e86\u3057\u305f\u3068\u304d
    • HTTP/2\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d
    • \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u66f8\u304d\u623b\u3055\u308c\u305f\u3068\u304d

    \u6700\u521d\u306e 2 \u3064\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u51e6\u7406\u306f\u304a\u305d\u3089\u304f\u6b63\u3057\u304f\u884c\u308f\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001doSomeTask \u304b\u3089\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d7\u3051\u53d6\u3063\u305f\u3082\u306e\u306e\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u63a5\u7d9a\u3092\u9589\u3058\u305f\u5834\u5408\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u304c publish \u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3001Context \u304c\u65e2\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u72b6\u614b\u3067 publish \u3092\u547c\u3073\u51fa\u3057\u3066\u3082\u554f\u984c\u306f\u304a\u305d\u3089\u304f\u8d77\u304d\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u6700\u5f8c\u306e\u30b1\u30fc\u30b9\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\u3002

    \u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u66f8\u304d\u8fbc\u307e\u308c\u308b\u3068\u3001\u8981\u6c42\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7af6\u5408\u72b6\u614b\u306b\u76f4\u9762\u3057\u307e\u3059\u3002

    • \u30ec\u30b9\u30dd\u30f3\u30b9\u304c Kafka \u306e publish \u5f8c\u306b\u66f8\u304b\u308c\u305f\u5834\u5408\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3057\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6b63\u5e38\u306b\u516c\u958b\u3057\u307e\u3059\u3002
    • \u305f\u3060\u3057\u3001Kafka \u306e publish \u524d\u307e\u305f\u306f publish \u4e2d\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u66f8\u304b\u308c\u305f\u5834\u5408\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306f publish \u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u5f8c\u8005\u306e\u5834\u5408\u3001HTTP \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u3059\u3050\u306b\u8fd4\u3059\u306e\u3067\u3001publish \u3092\u547c\u3073\u51fa\u3059\u3068\u30a8\u30e9\u30fc\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u88dc\u8db3

    Go 1.21 \u304b\u3089\u306f\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u305b\u305a\u306b\u65b0\u3057\u3044 Context \u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 context.WithoutCancel \u306f\u3001\u89aa\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u89aa\u306e\u30b3\u30d4\u30fc\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001Context \u306e\u4f1d\u64ad\u306f\u614e\u91cd\u306b\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#62","title":"\u505c\u6b62\u3059\u3079\u304d\u3068\u304d\u3092\u77e5\u3089\u305a\u306b\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u958b\u59cb\u3057\u3066\u3057\u307e\u3046 (#62)","text":"\u8981\u7d04

    \u30ea\u30fc\u30af\u3092\u907f\u3051\u308b\u3053\u3068\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u958b\u59cb\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u6700\u7d42\u7684\u306b\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002

    \u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u975e\u5e38\u306b\u7c21\u5358\u3067\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u3044\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306e\u8a08\u753b\u3092\u5fc5\u305a\u3057\u3082\u7acb\u3066\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u30ea\u30fc\u30af\u306b\u3064\u306a\u304c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308c\u3070\u3088\u3044\u304b\u308f\u304b\u3089\u306a\u3044\u306e\u306f\u3001Go\u8a00\u8a9e\u3067\u3088\u304f\u3042\u308b\u8a2d\u8a08\u4e0a\u306e\u554f\u984c\u3067\u3042\u308a\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u30df\u30b9\u3067\u3059\u3002

    \u5177\u4f53\u7684\u306a\u4f8b\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u3087\u3046\u3002\u5916\u90e8\u8a2d\u5b9a\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306a\u3069\u3092\u4f7f\u7528\u3057\u305f\u3082\u306e\u306a\u3069\uff09\u3092\u76e3\u8996\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u8a08\u3057\u307e\u3059\u3002\u307e\u305a\u3001\u6b21\u306e\u3088\u3046\u306a\u5b9f\u88c5\u3092\u3057\u3066\u307f\u307e\u3059\u3002

    func main() {\n    newWatcher()\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\ntype watcher struct { /* \u3044\u304f\u3064\u304b\u306e\u30ea\u30bd\u30fc\u30b9 */ }\n\nfunc newWatcher() {\n    w := watcher{}\n    go w.watch() // \u5916\u90e8\u8a2d\u5b9a\u3092\u76e3\u8996\u3059\u308b\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306e\u554f\u984c\u306f\u3001\u30e1\u30a4\u30f3\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u7d42\u4e86\u3059\u308b\u3068\uff08\u304a\u305d\u3089\u304f OS \u30b7\u30b0\u30ca\u30eb\u307e\u305f\u306f\u6709\u9650\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u305f\u3081\uff09\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u505c\u6b62\u3057\u3066\u3057\u307e\u3046\u3053\u3068\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u306f\u6b63\u5e38\u306b\u9589\u3058\u3089\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u9632\u3050\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u304b\u3002

    1 \u3064\u306e\u65b9\u6cd5\u3068\u3057\u3066\u306f\u3001main \u304c\u623b\u3063\u305f\u3068\u304d\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b Context \u3092 newWatcher \u306b\u6e21\u3059\u3053\u3068\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002

    func main() {\n    ctx, cancel := context.WithCancel(context.Background())\n    defer cancel()\n    newWatcher(ctx)\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\nfunc newWatcher(ctx context.Context) {\n    w := watcher{}\n    go w.watch(ctx)\n}\n

    \u4f5c\u6210\u3057\u305f Context \u3092 watch \u30e1\u30bd\u30c3\u30c9\u306b\u4f1d\u64ad\u3057\u307e\u3059\u3002Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u3068\u3001\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u69cb\u9020\u4f53\u306f\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u307e\u3059\u3002\u3057\u304b\u3057\u3001watch \u304c\u305d\u308c\u3092\u884c\u3046\u6642\u9593\u304c\u78ba\u5b9f\u306b\u3042\u308b\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u8a2d\u8a08\u4e0a\u306e\u6b20\u9665\u3067\u3059\u3002

    \u554f\u984c\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\u305f\u3081\u306b\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u305f\u3053\u3068\u3067\u3059\u3002\u30ea\u30bd\u30fc\u30b9\u304c\u9589\u3058\u3089\u308c\u308b\u307e\u3067\u3001\u89aa\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u30d6\u30ed\u30c3\u30af\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u305d\u3046\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    func main() {\n    w := newWatcher()\n    defer w.close()\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\nfunc newWatcher() watcher {\n    w := watcher{}\n    go w.watch()\n    return w\n}\n\nfunc (w watcher) close() {\n    // \u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u308b\n}\n

    \u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u308b\u6642\u9593\u306b\u306a\u3063\u305f\u3053\u3068\u3092 watcher \u306b\u901a\u77e5\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001 defer \u3092\u4f7f\u7528\u3057\u3066\u3053\u306e\u3000close \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u7d42\u4e86\u3059\u308b\u524d\u306b\u30ea\u30bd\u30fc\u30b9\u304c\u78ba\u5b9f\u306b\u9589\u3058\u3089\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u4ed6\u306e\u30ea\u30bd\u30fc\u30b9\u3068\u540c\u69d8\u3001\u30e1\u30e2\u30ea\u3084\u4ed6\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3059\u308b\u305f\u3081\u306b\u6700\u7d42\u7684\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u3092\u77e5\u3089\u305a\u306b\u958b\u59cb\u3059\u308b\u306e\u306f\u8a2d\u8a08\u4e0a\u306e\u554f\u984c\u3067\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u958b\u59cb\u3055\u308c\u308b\u3068\u304d\u306f\u5e38\u306b\u3001\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u660e\u78ba\u306a\u8a08\u753b\u3092\u7acb\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u5f8c\u306b\u306a\u308a\u307e\u3057\u305f\u304c\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u6709\u52b9\u671f\u9593\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b58\u7d9a\u671f\u9593\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3059\u308b\u524d\u306b\u305d\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u305f\u65b9\u304c\u304a\u305d\u3089\u304f\u78ba\u5b9f\u3067\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u9593\u9055\u3044\u306a\u304f\u89e3\u653e\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#63","title":"\u30b4\u30eb\u30fc\u30c1\u30f3\u3068\u30eb\u30fc\u30d7\u5909\u6570\u306b\u6ce8\u610f\u3057\u306a\u3044 (#63)","text":"\u6ce8\u610f

    \u3053\u306e\u30df\u30b9\u306f Go\u30001.22 \u304b\u3089\u306f\u6c17\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\uff08\u8a73\u7d30\uff09\u3002

    "},{"location":"ja/#select-64","title":"select \u3068\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u6c7a\u5b9a\u7684\u52d5\u4f5c\u3092\u671f\u5f85\u3059\u308b (#64)","text":"\u8981\u7d04

    \u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u53ef\u80fd\u306a\u5834\u5408\u3001\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067 select \u3059\u308b\u3068\u30b1\u30fc\u30b9\u304c\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u8efd\u5fae\u306a\u30d0\u30b0\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u8aa4\u3063\u305f\u4eee\u5b9a\u3092\u7acb\u3066\u308b\u3053\u3068\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002

    Go \u958b\u767a\u8005\u304c\u30c1\u30e3\u30cd\u30eb\u3092\u64cd\u4f5c\u3059\u308b\u3068\u304d\u306b\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u306e 1 \u3064\u306f\u3001select \u304c\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u8aa4\u3063\u305f\u7406\u89e3\u3092\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u5834\u5408\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff08 disconnectCh \u306f\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u30c1\u30e3\u30cd\u30eb\u3067\u3059\uff09\u3002

    go func() {\n  for i := 0; i < 10; i++ {\n      messageCh <- i\n    }\n    disconnectCh <- struct{}{}\n}()\n\nfor {\n    select {\n    case v := <-messageCh:\n        fmt.Println(v)\n    case <-disconnectCh:\n        fmt.Println(\"disconnection, return\")\n        return\n    }\n}\n

    \u3053\u306e\u4f8b\u3092\u8907\u6570\u56de\u5b9f\u884c\u3057\u305f\u5834\u5408\u3001\u7d50\u679c\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u306a\u308a\u307e\u3059\u3002

    0\n1\n2\ndisconnection, return\n\n0\ndisconnection, return\n

    \u3069\u3046\u3044\u3046\u308f\u3051\u304b 10 \u901a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6d88\u8cbb\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u3046\u3061\u306e\u6570\u901a\u3060\u3051\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3068\u4f75\u7528\u3057\u305f\u5834\u5408\u306e select \u6587\u306e\u4ed5\u69d8\u306b\u3088\u308b\u3082\u306e\u3067\u3059\uff08https:// go.dev/ref/spec\uff09\u3002

    Quote

    1 \u3064\u4ee5\u4e0a\u306e\u901a\u4fe1\u3092\u7d9a\u884c\u3067\u304d\u308b\u5834\u5408\u3001\u5747\u4e00\u306e\u64ec\u4f3c\u30e9\u30f3\u30c0\u30e0\u9078\u629e\u306b\u3088\u3063\u3066\u3001\u7d9a\u884c\u3067\u304d\u308b 1 \u3064\u306e\u901a\u4fe1\u304c\u9078\u629e\u3055\u308c\u307e\u3059\u3002

    \u6700\u521d\u306b\u4e00\u81f4\u3057\u305f\u30b1\u30fc\u30b9\u304c\u512a\u5148\u3055\u308c\u308b switch \u6587\u3068\u306f\u7570\u306a\u308a\u3001select \u6587\u306f\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u53ef\u80fd\u306a\u5834\u5408\u306b\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3057\u307e\u3059\u3002

    \u3053\u306e\u52d5\u4f5c\u306f\u6700\u521d\u306f\u5947\u5999\u306b\u601d\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u308c\u306f\u30b9\u30bf\u30d9\u30fc\u30b7\u30e7\u30f3\u3092\u9632\u3050\u3068\u3044\u3046\u7406\u7531\u304c\u3042\u3063\u3066\u306e\u3053\u3068\u3067\u3059\u3002\u6700\u521d\u306b\u9078\u629e\u3055\u308c\u305f\u901a\u4fe1\u304c\u30bd\u30fc\u30b9\u306e\u9806\u5e8f\u306b\u57fa\u3065\u3044\u3066\u3044\u308b\u3068\u3057\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u9001\u4fe1\u901f\u5ea6\u304c\u901f\u3044\u305f\u3081\u306b\u3001\u305f\u3068\u3048\u3070 1 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u3057\u304b\u53d7\u4fe1\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u72b6\u6cc1\u306b\u9665\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u9632\u3050\u305f\u3081\u306b\u3001Go\u8a00\u8a9e\u306e\u8a2d\u8a08\u8005\u306f\u30e9\u30f3\u30c0\u30e0\u9078\u629e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002

    \u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067 select \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308b\u306a\u3089\u3001\u30bd\u30fc\u30b9\u9806\u5e8f\u306e\u6700\u521d\u306e\u30b1\u30fc\u30b9\u304c\u81ea\u52d5\u7684\u306b\u512a\u5148\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001Go\u8a00\u8a9e\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3059\u308b\u305f\u3081\u3001\u3069\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u9078\u629e\u3055\u308c\u308b\u304b\u306f\u4fdd\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u52d5\u4f5c\u3092\u514b\u670d\u3059\u308b\u306b\u306f\u3001\u5358\u4e00\u306e\u751f\u7523\u8005\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5834\u5408\u3001\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u306e\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u5358\u4e00\u306e\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#65","title":"\u901a\u77e5\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#65)","text":"\u8981\u7d04

    chan struct{} \u578b\u3092\u4f7f\u7528\u3057\u3066\u901a\u77e5\u3092\u9001\u4fe1\u3057\u307e\u3057\u3087\u3046\u3002

    \u30c1\u30e3\u30cd\u30eb\u306f\u3001\u30b7\u30b0\u30ca\u30eb\u3092\u4ecb\u3057\u3066\u30b4\u30eb\u30fc\u30c1\u30f3\u9593\u3067\u901a\u4fe1\u3059\u308b\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002\u30b7\u30b0\u30ca\u30eb\u306b\u306f\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u95a2\u4fc2\u3042\u308a\u307e\u305b\u3093\u3002

    \u5177\u4f53\u7684\u306a\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u901a\u4fe1\u306e\u5207\u65ad\u304c\u767a\u751f\u3059\u308b\u305f\u3073\u306b\u305d\u308c\u3092\u901a\u77e5\u3059\u308b\u30c1\u30e3\u30cd\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 1 \u3064\u306e\u65b9\u6cd5\u3068\u3057\u3066\u3001\u3053\u308c\u3092 chan bool \u3068\u3057\u3066\u6271\u3046\u3053\u3068\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002

    disconnectCh := make(chan bool)\n

    \u3053\u3053\u3067\u3001\u305d\u306e\u3088\u3046\u306a\u30c1\u30e3\u30cd\u30eb\u3092\u63d0\u4f9b\u3059\u308b API \u3068\u5bfe\u8a71\u3059\u308b\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u771f\u507d\u5024\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u3042\u308b\u305f\u3081\u3001true \u307e\u305f\u306f false \u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3067\u304d\u307e\u3059\u3002true \u304c\u4f55\u3092\u4f1d\u3048\u3066\u3044\u308b\u304b\u306f\u304a\u305d\u3089\u304f\u660e\u3089\u304b\u3067\u3057\u3087\u3046\u3002\u3057\u304b\u3057\u3001 false \u3068\u306f\u4f55\u3092\u610f\u5473\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u901a\u4fe1\u304c\u5207\u65ad\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u306e\u5834\u5408\u3001\u3069\u308c\u304f\u3089\u3044\u306e\u983b\u5ea6\u3067\u305d\u306e\u3088\u3046\u306a\u30b7\u30b0\u30ca\u30eb\u3092\u53d7\u4fe1\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u3042\u308b\u3044\u306f\u518d\u63a5\u7d9a\u3057\u305f\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u3082\u305d\u3082 false \u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u3079\u304d\u306a\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u304a\u305d\u3089\u304f true \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u3060\u3051\u3092\u671f\u5f85\u3059\u3079\u304d\u3067\u3057\u3087\u3046\u3002

    \u305d\u306e\u5834\u5408\u3001\u60c5\u5831\u3092\u4f1d\u3048\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5024\u306f\u5fc5\u8981\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30c7\u30fc\u30bf\u306e \u306a\u3044 \u30c1\u30e3\u30cd\u30eb\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u51e6\u7406\u3059\u308b\u6163\u7528\u7684\u306a\u65b9\u6cd5\u306f\u3001\u7a7a\u306e\u69cb\u9020\u4f53\u306e\u30c1\u30e3\u30cd\u30eb\u2015\u2015 chan struct{}\u2015\u2015\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    "},{"location":"ja/#nil-66","title":"nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#66)","text":"\u8981\u7d04

    nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u3001\u305f\u3068\u3048\u3070 select \u6587\u304b\u3089\u30b1\u30fc\u30b9\u3092 \u524a\u9664 \u3067\u304d\u308b\u305f\u3081\u3001\u4e26\u884c\u51e6\u7406\u3092\u884c\u3046\u969b\u306e\u9053\u5177\u306e\u4e00\u3064\u3068\u3057\u3066\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3079\u304d\u3067\u3059\u3002

    \u6b21\u306e\u30b3\u30fc\u30c9\u306b\u3088\u3063\u3066\u4f55\u304c\u884c\u308f\u308c\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    var ch chan int\n<-ch\n

    ch \u306f chan int \u578b\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u306e\u30bc\u30ed\u5024\u306f nil \u3067\u3042\u308b\u306e\u3067\u3001 ch \u306f nil \u3067\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u306f panic \u3092\u8d77\u3053\u3057\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u6c38\u4e45\u306b\u30d6\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002

    nil \u30c1\u30e3\u30cd\u30eb\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u3082\u539f\u7406\u306f\u540c\u3058\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u6c38\u4e45\u306b\u30d6\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002

    var ch chan int\nch <- 0\n

    \u3067\u306f\u3001Go\u8a00\u8a9e\u304c nil \u30c1\u30e3\u30cd\u30eb\u3068\u306e\u9593\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u53d7\u4fe1\u3092\u8a31\u53ef\u3059\u308b\u76ee\u7684\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002\u305f\u3068\u3048\u3070\u30012 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u3092\u30de\u30fc\u30b8\u3059\u308b\u6163\u7528\u7684\u306a\u65b9\u6cd5\u3092\u5b9f\u88c5\u3059\u308b\u306e\u306b\u3001 nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    func merge(ch1, ch2 <-chan int) <-chan int {\n    ch := make(chan int, 1)\n\n    go func() {\n        for ch1 != nil || ch2 != nil { // \u6700\u4f4e\u3067\u3082\u4e00\u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304c nil \u3067\u306a\u3051\u308c\u3070\u7d9a\u884c\u3059\u308b\n            select {\n            case v, open := <-ch1:\n                if !open {\n                    ch1 = nil // \u9589\u3058\u305f\u3089 ch1 \u3092 nil \u30c1\u30e3\u30cd\u30eb\u306b\u5272\u308a\u5f53\u3066\u308b\n                    break\n                }\n                ch <- v\n            case v, open := <-ch2:\n                if !open {\n                    ch2 = nil // \u9589\u3058\u305f\u3089 ch2 \u3092 nil \u30c1\u30e3\u30cd\u30eb\u306b\u5272\u308a\u5f53\u3066\u308b\n                    break\n                }\n                ch <- v\n            }\n        }\n        close(ch)\n    }()\n\n    return ch\n}\n

    \u3053\u306e\u6d17\u7df4\u3055\u308c\u305f\u89e3\u6c7a\u7b56\u306f\u3001nil \u30c1\u30e3\u30cd\u30eb\u3092\u5229\u7528\u3057\u3066\u3001\u4f55\u3089\u304b\u306e\u65b9\u6cd5\u3067 select \u6587\u304b\u3089 1 \u3064\u306e\u30b1\u30fc\u30b9\u3092 \u524a\u9664 \u3057\u307e\u3059\u3002

    nil \u30c1\u30e3\u30cd\u30eb\u306f\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u4fbf\u5229\u3067\u3042\u308a\u3001Go \u958b\u767a\u8005\u306f\u4e26\u884c\u51e6\u7406\u3092\u6271\u3046\u969b\u306b\u4f7f\u3044\u3053\u306a\u305b\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u304f\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#67","title":"\u30c1\u30e3\u30cd\u30eb\u306e\u5bb9\u91cf\u306b\u3064\u3044\u3066\u56f0\u60d1\u3057\u3066\u3044\u308b (#67)","text":"\u8981\u7d04

    \u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u4f7f\u7528\u3059\u308b\u30c1\u30e3\u30cd\u30eb\u306e\u578b\u3092\u614e\u91cd\u306b\u6c7a\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u671f\u3092\u5f37\u529b\u306b\u4fdd\u8a3c\u3057\u3066\u304f\u308c\u308b\u306e\u306f\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u30c1\u30e3\u30cd\u30eb\u306e\u307f\u3067\u3059\u3002

    \u30d0\u30c3\u30d5\u30a1\u3042\u308a\u30c1\u30e3\u30cd\u30eb\u4ee5\u5916\u306e\u30c1\u30e3\u30cd\u30eb\u306e\u5bb9\u91cf\u3092\u6307\u5b9a\u3059\u308b\u306b\u306f\u6b63\u5f53\u306a\u7406\u7531\u304c\u3042\u308b\u3079\u304d\u3067\u3059\u3002

    "},{"location":"ja/#etcd-68","title":"\u6587\u5b57\u5217\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u8d77\u3053\u308a\u5f97\u308b\u526f\u4f5c\u7528\u3092\u5fd8\u308c\u3066\u3057\u307e\u3046\uff08 etcd \u30c7\u30fc\u30bf\u7af6\u5408\u306e\u4f8b\u3068\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\uff09 (#68)","text":"\u8981\u7d04

    \u6587\u5b57\u5217\u306e\u66f8\u5f0f\u8a2d\u5b9a\u304c\u65e2\u5b58\u306e\u95a2\u6570\u304c\u547c\u3073\u51fa\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3084\u305d\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u53ef\u80fd\u6027\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#append-69","title":"append \u3067\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u8d77\u3053\u3057\u3066\u3057\u307e\u3046 (#69)","text":"\u8981\u7d04

    append \u306e\u547c\u3073\u51fa\u3057\u306f\u5fc5\u305a\u3057\u3082\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u3044\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3086\u3048\u306b\u3001\u5171\u6709\u30b9\u30e9\u30a4\u30b9\u4e0a\u3067\u540c\u6642\u306b\u4f7f\u7528\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#70","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u3067\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u6b63\u3057\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#70)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u306f\u30dd\u30a4\u30f3\u30bf\u3067\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3068\u3001\u5178\u578b\u7684\u306a\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#syncwaitgroup-71","title":"sync.WaitGroup \u3092\u6b63\u3057\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#71)","text":"\u8981\u7d04

    sync.WaitGroup \u3092\u6b63\u3057\u304f\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u8d77\u52d5\u3059\u308b\u524d\u306b Add \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#synccond-72","title":"sync.Cond \u306b\u3064\u3044\u3066\u5fd8\u308c\u3066\u3057\u307e\u3046 (#72)","text":"\u8981\u7d04

    sync.Cond \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u7e70\u308a\u8fd4\u3057\u901a\u77e5\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#errgroup-73","title":"errgroup \u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#73)","text":"\u8981\u7d04

    errgroup \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u540c\u671f\u3057\u3001\u30a8\u30e9\u30fc\u3068 Context \u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#sync-74","title":"sync \u578b\u306e\u30b3\u30d4\u30fc (#74)","text":"\u8981\u7d04

    sync \u578b\u306f\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_15","title":"\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea","text":""},{"location":"ja/#75","title":"\u9593\u9055\u3063\u305f\u6642\u9593\u3092\u6307\u5b9a\u3059\u308b (#75)","text":"\u8981\u7d04

    time.Duration \u3092\u53d7\u3051\u5165\u308c\u308b\u95a2\u6570\u306b\u306f\u6ce8\u610f\u3092\u6255\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u6574\u6570\u3092\u6e21\u3059\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u6df7\u4e71\u3092\u62db\u304b\u306a\u3044\u3088\u3046\u306b time API \u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u304f\u3060\u3055\u3044\u3002

    \u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u591a\u304f\u306e\u95a2\u6570\u306f\u3001int64 \u578b\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3067\u3042\u308b time.Duration \u3092\u53d7\u3051\u5165\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u30011 \u5358\u4f4d\u306e time.Duration \u306f\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u4e00\u822c\u7684\u306b\u898b\u3089\u308c\u308b 1 \u30df\u30ea\u79d2\u3067\u306f\u306a\u304f\u30011 \u30ca\u30ce\u79d2\u3092\u8868\u3057\u307e\u3059\u3002\u305d\u306e\u7d50\u679c\u3001time.Duration API \u3092\u4f7f\u7528\u3059\u308b\u4ee3\u308f\u308a\u306b\u6570\u5024\u578b\u3092\u6e21\u3059\u3068\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u4ed6\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u305f\u3053\u3068\u306e\u3042\u308b\u958b\u767a\u8005\u306e\u65b9\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306b\u3088\u3063\u3066 1 \u79d2\u5468\u671f\u306e\u65b0\u3057\u3044 time.Ticker \u304c\u751f\u6210\u3055\u308c\u308b\u3068\u8003\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

    ticker := time.NewTicker(1000)\nfor {\n    select {\n    case <-ticker.C:\n        // \u51e6\u7406\u3092\u3059\u308b\n    }\n}\n

    \u3057\u304b\u3057\u306a\u304c\u3089\u30011,000 time.Duration = 1,000 \u30ca\u30ce\u79d2\u3067\u3042\u308b\u305f\u3081\u3001\u60f3\u5b9a\u3055\u308c\u3066\u3044\u308b 1\u79d2 \u3067\u306f\u306a\u304f\u30011,000 \u30ca\u30ce\u79d2 = 1 \u30de\u30a4\u30af\u30ed\u79d2\u306e\u5468\u671f\u306b\u306a\u308a\u307e\u3059\u3002

    \u6df7\u4e71\u3084\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u62db\u304b\u306a\u3044\u3088\u3046\u3001\u3044\u3064\u3082 time.Duration API \u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    ticker = time.NewTicker(time.Microsecond)\n// \u3082\u3057\u304f\u306f\nticker = time.NewTicker(1000 * time.Nanosecond)\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#timeafter-76","title":"time.After \u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#76)","text":"\u8981\u7d04

    \u7e70\u308a\u8fd4\u3055\u308c\u308b\u95a2\u6570\uff08\u30eb\u30fc\u30d7\u3084 HTTP \u30cf\u30f3\u30c9\u30e9\u306a\u3069\uff09\u3067 time.After \u306e\u547c\u3073\u51fa\u3057\u3092\u56de\u907f\u3059\u308b\u3068\u3001\u30d4\u30fc\u30af\u6642\u306e\u30e1\u30e2\u30ea\u6d88\u8cbb\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002time.After \u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u306f\u3001 timer \u304c\u7d42\u4e86\u3057\u305f\u3068\u304d\u306b\u306e\u307f\u89e3\u653e\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#json-77","title":"JSON \u51e6\u7406\u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044 (#77)","text":"
    • \u578b\u306e\u57cb\u3081\u8fbc\u307f\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u52d5\u4f5c

    Go \u69cb\u9020\u4f53\u3067\u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u306a\u305c\u306a\u3089 json.Marshaler \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3059\u308b time.Time \u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u3088\u3046\u306a\u3084\u3063\u304b\u3044\u306a\u30d0\u30b0\u304c\u767a\u751f\u3057\u3066\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u52d5\u4f5c\u304c\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • JSON \u3068 monotonic clock

    2 \u3064\u306e time.Time \u69cb\u9020\u4f53\u3092\u6bd4\u8f03\u3059\u308b\u5834\u5408\u3001time.Time \u306b\u306f wall clock \u3068 monotonic clock \u306e\u4e21\u65b9\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001== \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u305f\u6bd4\u8f03\u306f\u4e21\u65b9\u306e clock \u306b\u5bfe\u3057\u3066\u884c\u308f\u308c\u308b\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • any \u306e\u30de\u30c3\u30d7

    JSON \u30c7\u30fc\u30bf\u306e\u30a2\u30f3\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u4e2d\u306b\u30de\u30c3\u30d7\u3092\u63d0\u4f9b\u3059\u308b\u3068\u304d\u306b\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u6570\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 float64 \u306b\u5909\u63db\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#sql-78","title":"SQL \u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044 (#78)","text":"
    • sql.Open \u304c\u5fc5\u305a\u3057\u3082\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3059\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u5fd8\u308c\u3066\u3044\u308b

    \u8a2d\u5b9a\u3092\u8a66\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001 Ping \u307e\u305f\u306f PingContext \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30d7\u30fc\u30ea\u30f3\u30b0\u306e\u3053\u3068\u3092\u5fd8\u308c\u308b

    \u5b9f\u904b\u7528\u6c34\u6e96\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a\u3057\u307e\u3057\u3087\u3046\u3002

    • \u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044

    SQL \u306e\u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30af\u30a8\u30ea\u304c\u3088\u308a\u52b9\u7387\u7684\u304b\u3064\u78ba\u5b9f\u306b\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • null \u5024\u3092\u8aa4\u3063\u305f\u65b9\u6cd5\u3067\u51e6\u7406\u3057\u3066\u3044\u308b

    \u30c6\u30fc\u30d6\u30eb\u5185\u306e null \u304c\u8a31\u5bb9\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u307e\u305f\u306f sql.NullXXX \u578b\u3092\u4f7f\u7528\u3057\u3066\u51e6\u7406\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u884c\u306e\u53cd\u5fa9\u51e6\u7406\u306b\u3088\u308b\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3057\u306a\u3044

    \u884c\u306e\u53cd\u5fa9\u51e6\u7406\u306e\u5f8c\u306b sql.Rows \u306e Err \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u3001\u6b21\u306e\u884c\u306e\u6e96\u5099\u4e2d\u306b\u30a8\u30e9\u30fc\u3092\u898b\u9003\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-bodysqlrows-osfile-79","title":"\u4e00\u6642\u7684\u306a\u30ea\u30bd\u30fc\u30b9\uff08 HTTP body\u3001sql.Rows\u3001\u304a\u3088\u3073 os.File \uff09\u3092\u9589\u3058\u3066\u3044\u306a\u3044 (#79)","text":"\u8981\u7d04

    \u30ea\u30fc\u30af\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001 io.Closer \u3092\u5b9f\u88c5\u3057\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u69cb\u9020\u4f53\u3092\u6700\u5f8c\u306b\u306f\u9589\u3058\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-return-80","title":"HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5fdc\u7b54\u3057\u305f\u5f8c\u306e return \u6587\u3092\u5fd8\u308c\u3066\u3057\u307e\u3046 (#80)","text":"\u8981\u7d04

    HTTP \u30cf\u30f3\u30c9\u30e9\u306e\u5b9f\u88c5\u3067\u306e\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u907f\u3051\u308b\u305f\u3081\u3001http.Error \u306e\u5f8c\u306b\u30cf\u30f3\u30c9\u30e9\u3092\u505c\u6b62\u3057\u305f\u3044\u5834\u5408\u306f\u3001return \u6587\u3092\u5fd8\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-81","title":"\u6a19\u6e96\u306e HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b (#81)","text":"\u8981\u7d04

    \u5b9f\u904b\u7528\u6c34\u6e96\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6c42\u3081\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6a19\u6e96\u306e HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u306e\u5b9f\u88c5\u3092\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306e\u5b9f\u88c5\u306b\u306f\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3084\u7a3c\u50cd\u74b0\u5883\u3067\u5fc5\u9808\u3067\u3042\u308b\u3079\u304d\u52d5\u4f5c\u304c\u6b20\u843d\u3057\u3066\u3044\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_16","title":"\u30c6\u30b9\u30c8","text":""},{"location":"ja/#82","title":"\u30c6\u30b9\u30c8\u3092\u5206\u985e\u3057\u3066\u3044\u306a\u3044\uff08\u30d3\u30eb\u30c9\u30bf\u30b0\u3001\u74b0\u5883\u5909\u6570\u3001\u30b7\u30e7\u30fc\u30c8\u30e2\u30fc\u30c9\uff09 (#82)","text":"\u8981\u7d04

    \u30d3\u30eb\u30c9\u30d5\u30e9\u30b0\u3001\u74b0\u5883\u5909\u6570\u3001\u307e\u305f\u306f\u30b7\u30e7\u30fc\u30c8\u30e2\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u3092\u5206\u985e\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3059\u3002\u30d3\u30eb\u30c9\u30d5\u30e9\u30b0\u307e\u305f\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u30ab\u30c6\u30b4\u30ea\uff08\u305f\u3068\u3048\u3070\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3068\u7d71\u5408\u30c6\u30b9\u30c8\uff09\u3092\u4f5c\u6210\u3057\u3001\u77ed\u671f\u9593\u306e\u30c6\u30b9\u30c8\u3068\u9577\u6642\u9593\u306e\u30c6\u30b9\u30c8\u3092\u533a\u5225\u3059\u308b\u3053\u3068\u3067\u3001\u5b9f\u884c\u3059\u308b\u30c6\u30b9\u30c8\u306e\u7a2e\u985e\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#-race-83","title":"-race \u30d5\u30e9\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u306a\u3044 (#83)","text":"\u8981\u7d04

    \u4e26\u884c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001 -race \u30d5\u30e9\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d0\u30b0\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u6f5c\u5728\u7684\u306a\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u767a\u898b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    "},{"location":"ja/#-parallel-shuffle-84","title":"\u30c6\u30b9\u30c8\u5b9f\u884c\u30e2\u30fc\u30c9\uff08 -parallel \u304a\u3088\u3073 -shuffle \uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#84)","text":"\u8981\u7d04

    -parallel \u30d5\u30e9\u30b0\u3092\u4f7f\u7528\u3059\u308b\u306e\u306f\u3001\u7279\u306b\u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u308b\u30c6\u30b9\u30c8\u3092\u9ad8\u901f\u5316\u3059\u308b\u306e\u306b\u52b9\u679c\u7684\u3067\u3059\u3002 -shuffle \u30d5\u30e9\u30b0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u304c\u30d0\u30b0\u3092\u96a0\u3059\u53ef\u80fd\u6027\u306e\u3042\u308b\u9593\u9055\u3063\u305f\u4eee\u5b9a\u306b\u4f9d\u5b58\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#85","title":"\u30c6\u30fc\u30d6\u30eb\u99c6\u52d5\u30c6\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u306a\u3044 (#85)","text":"\u8981\u7d04

    \u30c6\u30fc\u30d6\u30eb\u99c6\u52d5\u30c6\u30b9\u30c8\u306f\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u9632\u304e\u3001\u5c06\u6765\u306e\u66f4\u65b0\u306e\u51e6\u7406\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u4e00\u9023\u306e\u985e\u4f3c\u3057\u305f\u30c6\u30b9\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#86","title":"\u5358\u4f53\u30c6\u30b9\u30c8\u3067\u306e\u30b9\u30ea\u30fc\u30d7 (#86)","text":"\u8981\u7d04

    \u30c6\u30b9\u30c8\u306e\u4e0d\u5b89\u5b9a\u3055\u3092\u306a\u304f\u3057\u3001\u3088\u308a\u5805\u7262\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u540c\u671f\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30ea\u30fc\u30d7\u3092\u56de\u907f\u3057\u307e\u3057\u3087\u3046\u3002\u540c\u671f\u304c\u4e0d\u53ef\u80fd\u306a\u5834\u5408\u306f\u3001\u30ea\u30c8\u30e9\u30a4\u624b\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#time-api-87","title":"time API \u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3067\u304d\u3066\u3044\u306a\u3044 (#87)","text":"\u8981\u7d04

    time API \u3092\u4f7f\u7528\u3057\u3066\u95a2\u6570\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u30c6\u30b9\u30c8\u306e\u4e0d\u5b89\u5b9a\u3055\u3092\u8efd\u6e1b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u96a0\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u306e\u4e00\u90e8\u3068\u3057\u3066 time \u3092\u51e6\u7406\u3057\u305f\u308a\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b time \u3092\u63d0\u4f9b\u3059\u308b\u3088\u3046\u306b\u8981\u6c42\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u6a19\u6e96\u7684\u306a\u624b\u6bb5\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#httptest-iotest-88","title":"\u30c6\u30b9\u30c8\u306b\u95a2\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\uff08 httptest \u304a\u3088\u3073 iotest \uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#88)","text":"
    • httptest \u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001HTTP \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6271\u3046\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u306e\u4e21\u65b9\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306e\u4e00\u9023\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • iotest \u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001io.Reader \u3092\u4f5c\u6210\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a8\u30e9\u30fc\u8010\u6027\u3092\u30c6\u30b9\u30c8\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#89","title":"\u4e0d\u6b63\u78ba\u306a\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u4f5c\u6210 (#89)","text":"\u8981\u7d04

    \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306b\u3064\u3044\u3066

    • \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7cbe\u5ea6\u3092\u7dad\u6301\u3059\u308b\u306b\u306f\u3001time \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002
    • \u30d9\u30f3\u30c1\u30bf\u30a4\u30e0\u3092\u5897\u3084\u3059\u304b\u3001benchstat \u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u6271\u3044\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002
    • \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u7d42\u7684\u306b\u5b9f\u884c\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u304c\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3068\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7d50\u679c\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u306b\u3088\u3063\u3066\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7d50\u679c\u304c\u8aa4\u9b54\u5316\u3055\u308c\u306a\u3044\u3088\u3046\u3001\u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u95a2\u6570\u304c\u526f\u4f5c\u7528\u3092\u5f15\u304d\u8d77\u3053\u3059\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30aa\u30d6\u30b6\u30fc\u30d0\u30fc\u52b9\u679c\u3092\u9632\u3050\u306b\u306f\u3001CPU \u306b\u4f9d\u5b58\u3059\u308b\u95a2\u6570\u304c\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u3092\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u518d\u751f\u6210\u3059\u308b\u3088\u3046\u5f37\u5236\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#go-90","title":"Go\u8a00\u8a9e\u306e\u30c6\u30b9\u30c8\u6a5f\u80fd\u3092\u3059\u3079\u3066\u8a66\u3057\u3066\u3044\u306a\u3044 (#90)","text":"
    • \u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8

    \u30b3\u30fc\u30c9\u306e\u3069\u306e\u90e8\u5206\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u304b\u3092\u3059\u3050\u306b\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001-coverprofile \u30d5\u30e9\u30b0\u3092\u6307\u5b9a\u3057\u3066\u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002

    • \u5225\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u306e\u30c6\u30b9\u30c8

    \u5185\u90e8\u3067\u306f\u306a\u304f\u516c\u958b\u3055\u308c\u305f\u52d5\u4f5c\u306b\u7126\u70b9\u3092\u5f53\u3066\u305f\u30c6\u30b9\u30c8\u306e\u4f5c\u6210\u3092\u5f37\u5236\u3059\u308b\u305f\u3081\u306b\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u306f\u5225\u3005\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u914d\u7f6e\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u95a2\u6570

    \u5f93\u6765\u306e if err != nil \u306e\u4ee3\u308f\u308a\u306b *testing.T \u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u304c\u77ed\u304f\u3001\u8aad\u307f\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • setup \u3068 teardown

    setup \u304a\u3088\u3073 teardown \u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u306e\u5834\u5408\u306a\u3069\u3001\u8907\u96d1\u306a\u74b0\u5883\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#community-mistake","title":"\u30d5\u30a1\u30b8\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044\uff08community mistake\uff09","text":"\u8981\u7d04

    \u30d5\u30a1\u30b8\u30f3\u30b0\u306f\u3001\u8907\u96d1\u306a\u95a2\u6570\u3084\u30e1\u30bd\u30c3\u30c9\u3078\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u3001\u4e88\u60f3\u5916\u306e\u3001\u307e\u305f\u306f\u4e0d\u6b63\u306a\u5165\u529b\u3092\u691c\u51fa\u3057\u3001\u8106\u5f31\u6027\u3001\u30d0\u30b0\u3001\u3055\u3089\u306b\u306f\u6f5c\u5728\u7684\u306a\u30af\u30e9\u30c3\u30b7\u30e5\u3092\u767a\u898b\u3059\u308b\u306e\u306b\u52b9\u7387\u7684\u3067\u3059\u3002

    @jeromedoucet \u3055\u3093\u306e\u3054\u5354\u529b\u306b\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\u3002

    "},{"location":"ja/#_17","title":"\u6700\u9069\u5316","text":""},{"location":"ja/#cpu-91","title":"CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#91)","text":"
    • CPU \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3

    L1 \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u30e1\u30a4\u30f3\u30e1\u30e2\u30ea\u3088\u308a\u3082\u7d04 50 \uff5e 100 \u500d\u9ad8\u901f\u3067\u3042\u308b\u305f\u3081\u3001CPU \u30d0\u30a6\u30f3\u30c9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u306b\u306f\u3001CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    • \u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3

    \u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u306e\u6982\u5ff5\u3092\u610f\u8b58\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u96c6\u7d04\u578b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u91cd\u8981\u3067\u3059\u3002CPU \u306f\u30e1\u30e2\u30ea\u3092\u30ef\u30fc\u30c9\u3054\u3068\u306b\u30d5\u30a7\u30c3\u30c1\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u901a\u5e38\u306f\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3092 64 \u30d0\u30a4\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\u500b\u3005\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3059\u308b\u306b\u306f\u3001\u7a7a\u9593\u7684\u5c40\u6240\u6027\u3092\u5f37\u5236\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u69cb\u9020\u4f53\u306e\u30b9\u30e9\u30a4\u30b9\u3068\u30b9\u30e9\u30a4\u30b9\u306e\u69cb\u9020\u4f53

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u4e88\u6e2c\u53ef\u80fd\u6027

    CPU \u306b\u3068\u3063\u3066\u4e88\u6e2c\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u306b\u3059\u308b\u3053\u3068\u306f\u3001\u7279\u5b9a\u306e\u95a2\u6570\u3092\u6700\u9069\u5316\u3059\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30e6\u30cb\u30c3\u30c8\u307e\u305f\u306f\u5b9a\u6570\u30b9\u30c8\u30e9\u30a4\u30c9\u306f CPU \u306b\u3068\u3063\u3066\u4e88\u6e2c\u53ef\u80fd\u3067\u3059\u304c\u3001\u975e\u30e6\u30cb\u30c3\u30c8\u30b9\u30c8\u30e9\u30a4\u30c9\uff08\u9023\u7d50\u30ea\u30b9\u30c8\u306a\u3069\uff09\u306f\u4e88\u6e2c\u3067\u304d\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30ad\u30e3\u30c3\u30b7\u30e5\u914d\u7f6e\u30dd\u30ea\u30b7\u30fc

    \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3053\u3068\u3067\u3001\u91cd\u5927\u306a\u30b9\u30c8\u30e9\u30a4\u30c9\u3092\u56de\u907f\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u3054\u304f\u4e00\u90e8\u306e\u307f\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#92","title":"\u8aa4\u3063\u305f\u5171\u6709\u3092\u5f15\u304d\u8d77\u3053\u3059\u4e26\u884c\u51e6\u7406(#92)","text":"\u8981\u7d04

    \u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u3059\u3079\u3066\u306e\u30b3\u30a2\u3067\u5171\u6709\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u3068\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u306e\u8aa4\u3063\u305f\u5171\u6709\u306a\u3069\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u4f4e\u4e0b\u3055\u305b\u3066\u3057\u307e\u3046\u3053\u3068\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002\u30e1\u30e2\u30ea\u306e\u5171\u6709\u306f\u3042\u308a\u3048\u306a\u3044\u306e\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#93","title":"\u547d\u4ee4\u30ec\u30d9\u30eb\u306e\u4e26\u5217\u6027\u3092\u8003\u616e\u3057\u306a\u3044 (#93)","text":"\u8981\u7d04

    \u547d\u4ee4\u30ec\u30d9\u30eb\u306e\u4e26\u5217\u6027\uff08ILP\uff09\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u306e\u7279\u5b9a\u306e\u90e8\u5206\u3092\u6700\u9069\u5316\u3057\u3001CPU \u304c\u3067\u304d\u308b\u3060\u3051\u591a\u304f\u306e\u547d\u4ee4\u3092\u4e26\u5217\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002\u4e3b\u306a\u624b\u9806\u306e 1 \u3064\u306b\u30c7\u30fc\u30bf\u30cf\u30b6\u30fc\u30c9\u306e\u7279\u5b9a\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#94","title":"\u30c7\u30fc\u30bf\u306e\u914d\u7f6e\u3092\u610f\u8b58\u3057\u3066\u3044\u306a\u3044 (#94)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u3001\u57fa\u672c\u578b\u306f\u5404\u3005\u306e\u30b5\u30a4\u30ba\u306b\u5408\u308f\u305b\u3066\u914d\u7f6e\u3055\u308c\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3053\u3068\u3067\u3001\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u69cb\u9020\u4f53\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30b5\u30a4\u30ba\u3067\u964d\u9806\u306b\u518d\u7de8\u6210\u3059\u308b\u3068\u3001\u69cb\u9020\u4f53\u304c\u3088\u308a\u30b3\u30f3\u30d1\u30af\u30c8\u306b\u306a\u308b\uff08\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u304c\u5c11\u306a\u304f\u306a\u308a\u3001\u7a7a\u9593\u7684\u5c40\u6240\u6027\u304c\u5411\u4e0a\u3059\u308b\uff09\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#95","title":"\u30d2\u30fc\u30d7\u3068\u30b9\u30bf\u30c3\u30af\u306e\u9055\u3044\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#95)","text":"\u8981\u7d04

    \u30d2\u30fc\u30d7\u3068\u30b9\u30bf\u30c3\u30af\u306e\u57fa\u672c\u7684\u306a\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u3001Go \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u969b\u306b\u306f\u5927\u5207\u3067\u3059\u3002\u30b9\u30bf\u30c3\u30af\u5272\u308a\u5f53\u3066\u306f\u5bb9\u6613\u306a\u306e\u306b\u5bfe\u3057\u3066\u3001\u30d2\u30fc\u30d7\u5272\u308a\u5f53\u3066\u306f\u9045\u304f\u3001\u30e1\u30e2\u30ea\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u306b GC \u3092\u5229\u7528\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#api-syncpool-96","title":"\u5272\u308a\u5f53\u3066\u3092\u6e1b\u3089\u3059\u65b9\u6cd5\u304c\u308f\u304b\u3063\u3066\u3044\u306a\u3044\uff08 API \u306e\u5909\u66f4\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u3001\u304a\u3088\u3073 sync.Pool\uff09 (#96)","text":"\u8981\u7d04

    \u5272\u308a\u5f53\u3066\u3092\u6e1b\u3089\u3059\u3053\u3068\u3082\u3001Go \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u4e0a\u3067\u91cd\u8981\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u5171\u6709\u3092\u9632\u3050\u305f\u3081\u306b API \u3092\u614e\u91cd\u306b\u8a2d\u8a08\u3059\u308b\u3001\u4e00\u822c\u7684\u306a Go \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u3092\u7406\u89e3\u3059\u308b\u3001sync.Pool \u3092\u4f7f\u7528\u3059\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#97","title":"\u30a4\u30f3\u30e9\u30a4\u30f3\u5c55\u958b\u3092\u3057\u3066\u3044\u306a\u3044 (#97)","text":"\u8981\u7d04

    \u30d5\u30a1\u30b9\u30c8\u30d1\u30b9\u306e\u30a4\u30f3\u30e9\u30a4\u30f3\u5316\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3001\u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\u306b\u304b\u304b\u308b\u511f\u5374\u6642\u9593\u3092\u52b9\u7387\u7684\u306b\u524a\u6e1b\u3057\u307e\u3057\u3087\u3046\u3002

    "},{"location":"ja/#go-98","title":"Go\u8a00\u8a9e\u306e\u8a3a\u65ad\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u306a\u3044 (#98)","text":"\u8981\u7d04

    \u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u3068\u5b9f\u884c\u30c8\u30ec\u30fc\u30b5\u3092\u5229\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6700\u9069\u5316\u3059\u3079\u304d\u90e8\u5206\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    "},{"location":"ja/#gc-99","title":"GC \u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#99)","text":"\u8981\u7d04

    GC \u306e\u8abf\u6574\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u7a81\u7136\u306e\u8ca0\u8377\u306e\u5897\u52a0\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u51e6\u7406\u3067\u304d\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u6069\u6075\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

    "},{"location":"ja/#docker-kubernetes-go-100","title":"Docker \u3068 Kubernetes \u4e0a\u3067Go\u8a00\u8a9e\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306e\u5f71\u97ff\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#100)","text":"\u8981\u7d04

    Docker \u3068 Kubernetes \u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u969b\u306e CPU \u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001Go\u8a00\u8a9e\u304c CFS \u5bfe\u5fdc\u3067\u306f\u306a\u3044\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    "},{"location":"jobs/","title":"Go Jobs","text":"

    Is your company hiring? Sponsor this repository and let a significant audience of Go developers know about your opportunities in this section (book sales: +8k, website traffic: +2000 views and +400 unique visitors per week).

    "},{"location":"zh/","title":"100\u4e2aGo\u5e38\u89c1\u9519\u8bef\u53ca\u5982\u4f55\u907f\u514d","text":""},{"location":"zh/#_1","title":"\u4ee3\u7801\u53ca\u5de5\u7a0b\u7ec4\u7ec7","text":""},{"location":"zh/#1","title":"\u610f\u5916\u7684\u53d8\u91cf\u9690\u85cf (#1)","text":"

    \u907f\u514d\u53d8\u91cf\u9690\u85cf\uff08\u5916\u90e8\u4f5c\u7528\u57df\u53d8\u91cf\u88ab\u5185\u90e8\u4f5c\u7528\u57df\u540c\u540d\u53d8\u91cf\u9690\u85cf\uff09\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u53d8\u91cf\u5f15\u7528\u9519\u8bef\uff0c\u6709\u52a9\u4e8e\u4ed6\u4eba\u9605\u8bfb\u7406\u89e3\u3002

    "},{"location":"zh/#2","title":"\u4e0d\u5fc5\u8981\u7684\u4ee3\u7801\u5d4c\u5957 (#2)","text":"

    \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u3001\u8fc7\u591a\u7684\u5d4c\u5957\u5c42\u6b21\uff0c\u5e76\u4e14\u8ba9\u6b63\u5e38\u4ee3\u7801\u8def\u5f84\u5c3d\u91cf\u5de6\u5bf9\u9f50\uff08\u800c\u4e0d\u662f\u653e\u5728\u5206\u652f\u8def\u5f84\u4e2d\uff09\uff0c\u6709\u52a9\u4e8e\u6784\u5efa\u53ef\u8bfb\u6027\u66f4\u597d\u7684\u4ee3\u7801\u3002

    "},{"location":"zh/#init-3","title":"\u8bef\u7528init\u51fd\u6570 (#3)","text":"

    \u521d\u59cb\u5316\u53d8\u91cf\u65f6\uff0c\u8bf7\u8bb0\u4f4f init \u51fd\u6570\u5177\u6709\u6709\u9650\u7684\u9519\u8bef\u5904\u7406\u80fd\u529b\uff0c\u5e76\u4e14\u4f1a\u4f7f\u72b6\u6001\u5904\u7406\u548c\u6d4b\u8bd5\u53d8\u5f97\u66f4\u52a0\u590d\u6742\u3002\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u521d\u59cb\u5316\u5e94\u8be5\u4f5c\u4e3a\u7279\u5b9a\u51fd\u6570\u6765\u5904\u7406\u3002

    "},{"location":"zh/#getterssetters-4","title":"\u6ee5\u7528getters/setters (#4)","text":"

    \u5728Go\u8bed\u8a00\u4e2d\uff0c\u5f3a\u5236\u4f7f\u7528getter\u548csetter\u65b9\u6cd5\u5e76\u4e0d\u7b26\u5408Go\u60ef\u4f8b\u3002\u5728\u5b9e\u8df5\u4e2d\uff0c\u5e94\u8be5\u627e\u5230\u6548\u7387\u548c\u76f2\u76ee\u9075\u5faa\u67d0\u4e9b\u60ef\u7528\u6cd5\u4e4b\u95f4\u7684\u5e73\u8861\u70b9\u3002

    "},{"location":"zh/#5","title":"\u63a5\u53e3\u6c61\u67d3 (#5)","text":"

    \u62bd\u8c61\u5e94\u8be5\u88ab\u53d1\u73b0\uff0c\u800c\u4e0d\u662f\u88ab\u521b\u9020\u3002\u4e3a\u4e86\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u590d\u6742\u6027\uff0c\u9700\u8981\u65f6\u624d\u521b\u5efa\u63a5\u53e3\uff0c\u800c\u4e0d\u662f\u9884\u89c1\u5230\u9700\u8981\u5b83\uff0c\u6216\u8005\u81f3\u5c11\u53ef\u4ee5\u8bc1\u660e\u8fd9\u79cd\u62bd\u8c61\u662f\u6709\u4ef7\u503c\u7684\u3002

    "},{"location":"zh/#6","title":"\u5c06\u63a5\u53e3\u5b9a\u4e49\u5728\u5b9e\u73b0\u65b9\u4e00\u4fa7 (#6)","text":"

    \u5c06\u63a5\u53e3\u4fdd\u7559\u5728\u5f15\u7528\u65b9\u4e00\u4fa7\uff08\u800c\u4e0d\u662f\u5b9e\u73b0\u65b9\u4e00\u4fa7\uff09\u53ef\u4ee5\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u62bd\u8c61\u3002

    "},{"location":"zh/#7","title":"\u5c06\u63a5\u53e3\u4f5c\u4e3a\u8fd4\u56de\u503c (#7)","text":"

    \u4e3a\u4e86\u907f\u514d\u5728\u7075\u6d3b\u6027\u65b9\u9762\u53d7\u5230\u9650\u5236\uff0c\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u51fd\u6570\u4e0d\u5e94\u8be5\u8fd4\u56de\u63a5\u53e3\uff0c\u800c\u5e94\u8be5\u8fd4\u56de\u5177\u4f53\u7684\u5b9e\u73b0\u3002\u76f8\u53cd\uff0c\u51fd\u6570\u5e94\u8be5\u5c3d\u53ef\u80fd\u5730\u4f7f\u7528\u63a5\u53e3\u4f5c\u4e3a\u53c2\u6570\u3002

    "},{"location":"zh/#any-8","title":"any \u6ca1\u4f20\u9012\u4efb\u4f55\u4fe1\u606f (#8)","text":"

    \u53ea\u6709\u5728\u9700\u8981\u63a5\u53d7\u6216\u8fd4\u56de\u4efb\u610f\u7c7b\u578b\u65f6\uff0c\u624d\u4f7f\u7528 any\uff0c\u4f8b\u5982 json.Marshal\u3002\u5176\u4ed6\u60c5\u51b5\u4e0b\uff0c\u56e0\u4e3a any \u4e0d\u63d0\u4f9b\u6709\u610f\u4e49\u7684\u4fe1\u606f\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u7f16\u8bd1\u65f6\u95ee\u9898\uff0c\u5982\u5141\u8bb8\u8c03\u7528\u8005\u8c03\u7528\u65b9\u6cd5\u5904\u7406\u4efb\u610f\u7c7b\u578b\u6570\u636e\u3002

    "},{"location":"zh/#9","title":"\u56f0\u60d1\u4f55\u65f6\u8be5\u7528\u8303\u578b (#9)","text":"

    \u4f7f\u7528\u6cdb\u578b\uff0c\u53ef\u4ee5\u901a\u8fc7\u7c7b\u578b\u53c2\u6570\u5206\u79bb\u5177\u4f53\u7684\u6570\u636e\u7c7b\u578b\u548c\u884c\u4e3a\uff0c\u907f\u514d\u5199\u5f88\u591a\u91cd\u590d\u5ea6\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u7136\u800c\uff0c\u4e0d\u8981\u8fc7\u65e9\u5730\u4f7f\u7528\u6cdb\u578b\u3001\u7c7b\u578b\u53c2\u6570\uff0c\u53ea\u6709\u5728\u4f60\u770b\u5230\u771f\u6b63\u9700\u8981\u65f6\u624d\u4f7f\u7528\u3002\u5426\u5219\uff0c\u5b83\u4eec\u4f1a\u5f15\u5165\u4e0d\u5fc5\u8981\u7684\u62bd\u8c61\u548c\u590d\u6742\u6027\u3002

    "},{"location":"zh/#10","title":"\u672a\u610f\u8bc6\u5230\u7c7b\u578b\u5d4c\u5957\u7684\u53ef\u80fd\u95ee\u9898 (#10)","text":"

    \u4f7f\u7528\u7c7b\u578b\u5d4c\u5957\u4e5f\u53ef\u4ee5\u907f\u514d\u5199\u4e00\u4e9b\u91cd\u590d\u4ee3\u7801\uff0c\u7136\u800c\uff0c\u5728\u4f7f\u7528\u65f6\u9700\u8981\u786e\u4fdd\u4e0d\u4f1a\u5bfc\u81f4\u4e0d\u5408\u7406\u7684\u53ef\u89c1\u6027\u95ee\u9898\uff0c\u6bd4\u5982\u6709\u4e9b\u5b57\u6bb5\u5e94\u8be5\u5bf9\u5916\u9690\u85cf\u4e0d\u5e94\u8be5\u88ab\u66b4\u6f0f\u3002

    "},{"location":"zh/#function-option-11","title":"\u4e0d\u4f7f\u7528function option\u6a21\u5f0f (#11)","text":"

    \u4e3a\u4e86\u8bbe\u8ba1\u5e76\u63d0\u4f9b\u66f4\u53cb\u597d\u7684API\uff08\u53ef\u9009\u53c2\u6570\uff09\uff0c\u4e3a\u4e86\u66f4\u597d\u5730\u5904\u7406\u9009\u9879\uff0c\u5e94\u8be5\u4f7f\u7528function option\u6a21\u5f0f\u3002

    "},{"location":"zh/#12","title":"\u5de5\u7a0b\u7ec4\u7ec7\u4e0d\u5408\u7406 (\u5de5\u7a0b\u7ed3\u6784\u548c\u5305\u7684\u7ec4\u7ec7) (#12)","text":"

    \u9075\u5faa\u50cf project-layout \u7684\u5efa\u8bae\u6765\u7ec4\u7ec7Go\u5de5\u7a0b\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u65b9\u6cd5\uff0c\u7279\u522b\u662f\u4f60\u6b63\u5728\u5bfb\u627e\u4e00\u4e9b\u7c7b\u4f3c\u7684\u7ecf\u9a8c\u3001\u60ef\u4f8b\u6765\u7ec4\u7ec7\u4e00\u4e2a\u65b0\u7684Go\u5de5\u7a0b\u7684\u65f6\u5019\u3002

    "},{"location":"zh/#13","title":"\u521b\u5efa\u5de5\u5177\u5305 (#13)","text":"

    \u547d\u540d\u662f\u8f6f\u4ef6\u8bbe\u8ba1\u5f00\u53d1\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u4e00\u4e2a\u90e8\u5206\uff0c\u521b\u5efa\u4e00\u4e9b\u540d\u5982 common\u3001util\u3001shared \u4e4b\u7c7b\u7684\u5305\u540d\u5e76\u4e0d\u4f1a\u7ed9\u8bfb\u8005\u5e26\u6765\u592a\u5927\u4ef7\u503c\uff0c\u5e94\u8be5\u5c06\u8fd9\u4e9b\u5305\u540d\u91cd\u6784\u4e3a\u66f4\u6e05\u6670\u3001\u66f4\u805a\u7126\u7684\u5305\u540d\u3002

    "},{"location":"zh/#14","title":"\u5ffd\u7565\u4e86\u5305\u540d\u51b2\u7a81 (#14)","text":"

    \u4e3a\u4e86\u907f\u514d\u53d8\u91cf\u540d\u548c\u5305\u540d\u4e4b\u95f4\u7684\u51b2\u7a81\uff0c\u5bfc\u81f4\u6df7\u6dc6\u6216\u751a\u81f3\u9519\u8bef\uff0c\u5e94\u4e3a\u6bcf\u4e2a\u53d8\u91cf\u548c\u5305\u4f7f\u7528\u552f\u4e00\u7684\u540d\u79f0\u3002\u5982\u679c\u8fd9\u4e0d\u53ef\u884c\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u5bfc\u5165\u522b\u540d import importAlias 'importPath'\uff0c\u4ee5\u533a\u5206\u5305\u540d\u548c\u53d8\u91cf\u540d\uff0c\u6216\u8005\u8003\u8651\u4e00\u4e2a\u66f4\u597d\u7684\u53d8\u91cf\u540d\u3002

    "},{"location":"zh/#15","title":"\u4ee3\u7801\u7f3a\u5c11\u6587\u6863 (#15)","text":"

    \u4e3a\u4e86\u8ba9\u4f7f\u7528\u65b9\u3001\u7ef4\u62a4\u4eba\u5458\u80fd\u66f4\u6e05\u6670\u5730\u4e86\u89e3\u4f60\u7684\u4ee3\u7801\u7684\u610f\u56fe\uff0c\u5bfc\u51fa\u7684\u5143\u7d20\uff08\u51fd\u6570\u3001\u7c7b\u578b\u3001\u5b57\u6bb5\uff09\u9700\u8981\u6dfb\u52a0godoc\u6ce8\u91ca\u3002

    "},{"location":"zh/#linters-16","title":"\u4e0d\u4f7f\u7528linters\u68c0\u67e5 (#16)","text":"

    \u4e3a\u4e86\u6539\u5584\u4ee3\u7801\u8d28\u91cf\u3001\u6574\u4f53\u4ee3\u7801\u7684\u4e00\u81f4\u6027\uff0c\u5e94\u8be5\u4f7f\u7528linters\u3001formatters\u3002

    "},{"location":"zh/#_2","title":"\u6570\u636e\u7c7b\u578b","text":""},{"location":"zh/#17","title":"\u516b\u8fdb\u5236\u5b57\u9762\u91cf\u5f15\u53d1\u7684\u56f0\u60d1 (#17)","text":"

    \u5728\u9605\u8bfb\u73b0\u6709\u4ee3\u7801\u65f6\uff0c\u8bf7\u8bb0\u4f4f\u4ee5 0 \u5f00\u5934\u7684\u6574\u6570\u5b57\u9762\u91cf\u662f\u516b\u8fdb\u5236\u6570\u3002\u6b64\u5916\uff0c\u4e3a\u4e86\u63d0\u9ad8\u53ef\u8bfb\u6027\uff0c\u53ef\u4ee5\u901a\u8fc7\u5728\u524d\u9762\u52a0\u4e0a 0o \u6765\u663e\u5f0f\u5730\u8868\u793a\u516b\u8fdb\u5236\u6574\u6570\u3002

    "},{"location":"zh/#18","title":"\u672a\u6ce8\u610f\u53ef\u80fd\u7684\u6574\u6570\u6ea2\u51fa (#18)","text":"

    \u5728 Go \u4e2d\u6574\u6570\u4e0a\u6ea2\u51fa\u548c\u4e0b\u6ea2\u662f\u9759\u9ed8\u5904\u7406\u7684\uff0c\u6240\u4ee5\u4f60\u53ef\u4ee5\u5b9e\u73b0\u81ea\u5df1\u7684\u51fd\u6570\u6765\u6355\u83b7\u5b83\u4eec\u3002

    "},{"location":"zh/#19","title":"\u6ca1\u6709\u900f\u5f7b\u7406\u89e3\u6d6e\u70b9\u6570 (#19)","text":"

    \u6bd4\u8f83\u6d6e\u70b9\u6570\u65f6\uff0c\u901a\u8fc7\u6bd4\u8f83\u4e8c\u8005\u7684delta\u503c\u662f\u5426\u4ecb\u4e8e\u4e00\u5b9a\u7684\u8303\u56f4\u5185\uff0c\u80fd\u8ba9\u4f60\u5199\u51fa\u53ef\u79fb\u690d\u6027\u66f4\u597d\u7684\u4ee3\u7801\u3002

    \u5728\u8fdb\u884c\u52a0\u6cd5\u6216\u51cf\u6cd5\u65f6\uff0c\u5c06\u5177\u6709\u76f8\u4f3c\u6570\u91cf\u7ea7\u7684\u64cd\u4f5c\u5206\u6210\u540c\u4e00\u7ec4\u4ee5\u63d0\u9ad8\u7cbe\u5ea6 (\u8fc7\u65e9\u6307\u6570\u5bf9\u9f50\u4e22\u5931\u7cbe\u5ea6)\u3002\u6b64\u5916\uff0c\u5728\u8fdb\u884c\u52a0\u6cd5\u548c\u51cf\u6cd5\u4e4b\u524d\uff0c\u5e94\u5148\u8fdb\u884c\u4e58\u6cd5\u548c\u9664\u6cd5 (\u52a0\u51cf\u6cd5\u8bef\u5dee\u4f1a\u88ab\u4e58\u9664\u653e\u5927)\u3002

    "},{"location":"zh/#slice-20","title":"\u4e0d\u7406\u89e3slice\u7684\u957f\u5ea6\u548c\u5bb9\u91cf (#20)","text":"

    \u7406\u89e3slice\u7684\u957f\u5ea6\u548c\u5bb9\u91cf\u7684\u533a\u522b\uff0c\u662f\u4e00\u4e2aGo\u5f00\u53d1\u8005\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u4e4b\u4e00\u3002slice\u7684\u957f\u5ea6\u6307\u7684\u662fslice\u5df2\u7ecf\u5b58\u50a8\u7684\u5143\u7d20\u7684\u6570\u91cf\uff0c\u800c\u5bb9\u91cf\u6307\u7684\u662fslice\u5f53\u524d\u5e95\u5c42\u5f00\u8f9f\u7684\u6570\u7ec4\u6700\u591a\u80fd\u5bb9\u7eb3\u7684\u5143\u7d20\u7684\u6570\u91cf\u3002

    "},{"location":"zh/#slice-21","title":"\u4e0d\u9ad8\u6548\u7684slice\u521d\u59cb\u5316 (#21)","text":"

    \u5f53\u521b\u5efa\u4e00\u4e2aslice\u65f6\uff0c\u5982\u679c\u5176\u957f\u5ea6\u53ef\u4ee5\u9884\u5148\u786e\u5b9a\uff0c\u90a3\u4e48\u53ef\u4ee5\u5728\u5b9a\u4e49\u65f6\u6307\u5b9a\u5b83\u7684\u957f\u5ea6\u548c\u5bb9\u91cf\u3002\u8fd9\u53ef\u4ee5\u6539\u5584\u540e\u671fappend\u65f6\u4e00\u6b21\u6216\u8005\u591a\u6b21\u7684\u5185\u5b58\u5206\u914d\u64cd\u4f5c\uff0c\u4ece\u800c\u6539\u5584\u6027\u80fd\u3002\u5bf9\u4e8emap\u7684\u521d\u59cb\u5316\u4e5f\u662f\u8fd9\u6837\u7684\u3002

    "},{"location":"zh/#nilslice-22","title":"\u56f0\u60d1\u4e8enil\u548c\u7a7aslice (#22)","text":"

    \u4e3a\u4e86\u907f\u514d\u5e38\u89c1\u7684\u5bf9nil\u548cempty slice\u5904\u7406\u884c\u4e3a\u7684\u6df7\u6dc6\uff0c\u4f8b\u5982\u5728\u4f7f\u7528 encoding/json \u6216 reflect \u5305\u65f6\uff0c\u4f60\u9700\u8981\u7406\u89e3 nil \u548c empty slice\u7684\u533a\u522b\u3002\u4e24\u8005\u90fd\u662f\u957f\u5ea6\u4e3a\u96f6\u3001\u5bb9\u91cf\u4e3a\u96f6\u7684\u5207\u7247\uff0c\u4f46\u662f nil \u5207\u7247\u4e0d\u9700\u8981\u5206\u914d\u5185\u5b58\u3002

    "},{"location":"zh/#slice-23","title":"\u6ca1\u6709\u9002\u5f53\u68c0\u67e5slice\u662f\u5426\u4e3a\u7a7a (#23)","text":"

    \u68c0\u67e5\u4e00\u4e2aslice\u7684\u662f\u5426\u5305\u542b\u4efb\u4f55\u5143\u7d20\uff0c\u53ef\u4ee5\u68c0\u67e5\u5176\u957f\u5ea6\uff0c\u4e0d\u7ba1slice\u662fnil\u8fd8\u662fempty\uff0c\u68c0\u67e5\u957f\u5ea6\u90fd\u662f\u6709\u6548\u7684\u3002\u8fd9\u4e2a\u68c0\u67e5\u65b9\u6cd5\u4e5f\u9002\u7528\u4e8emap\u3002

    \u4e3a\u4e86\u8bbe\u8ba1\u66f4\u660e\u786e\u7684API\uff0cAPI\u4e0d\u5e94\u533a\u5206nil\u548c\u7a7a\u5207\u7247\u3002

    "},{"location":"zh/#slice-24","title":"\u6ca1\u6709\u6b63\u786e\u62f7\u8d1dslice (#24)","text":"

    \u4f7f\u7528 copy \u62f7\u8d1d\u4e00\u4e2aslice\u5143\u7d20\u5230\u53e6\u4e00\u4e2aslice\u65f6\uff0c\u9700\u8981\u8bb0\u5f97\uff0c\u5b9e\u9645\u62f7\u8d1d\u7684\u5143\u7d20\u6570\u91cf\u662f\u4e8c\u8005slice\u957f\u5ea6\u4e2d\u7684\u8f83\u5c0f\u503c\u3002

    "},{"location":"zh/#slice-append-25","title":"slice append\u5e26\u6765\u7684\u9884\u671f\u4e4b\u5916\u7684\u526f\u4f5c\u7528 (#25)","text":"

    \u5982\u679c\u4e24\u4e2a\u4e0d\u540c\u7684\u51fd\u6570\u64cd\u4f5c\u7684slice\u590d\u7528\u4e86\u76f8\u540c\u7684\u5e95\u5c42\u6570\u7ec4\uff0c\u5b83\u4eec\u5bf9slice\u6267\u884cappend\u64cd\u4f5c\u65f6\u53ef\u80fd\u4f1a\u4ea7\u751f\u51b2\u7a81\u3002\u4f7f\u7528copy\u6765\u5b8c\u6574\u590d\u5236\u4e00\u4e2aslice\u6216\u8005\u4f7f\u7528\u5b8c\u6574\u7684slice\u8868\u8fbe\u5f0f[low:high:max]\u9650\u5236\u6700\u5927\u5bb9\u91cf\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u4ea7\u751f\u51b2\u7a81\u3002\u5f53\u60f3\u5bf9\u4e00\u4e2a\u5927slice\u8fdb\u884cshrink\u64cd\u4f5c\u65f6\uff0c\u4e24\u79cd\u65b9\u5f0f\u4e2d\uff0c\u53ea\u6709copy\u624d\u53ef\u4ee5\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\u3002

    "},{"location":"zh/#slice-26","title":"slice\u548c\u5185\u5b58\u6cc4\u6f0f (#26)","text":"

    \u5bf9\u4e8eslice\u5143\u7d20\u4e3a\u6307\u9488\uff0c\u6216\u8005slice\u5143\u7d20\u4e3astruct\u4f46\u662f\u8be5struct\u542b\u6709\u6307\u9488\u5b57\u6bb5\uff0c\u5f53\u901a\u8fc7slice[low:high]\u64cd\u4f5c\u53d6subslice\u65f6\uff0c\u5bf9\u4e8e\u90a3\u4e9b\u4e0d\u53ef\u8bbf\u95ee\u7684\u5143\u7d20\u53ef\u4ee5\u663e\u793a\u8bbe\u7f6e\u4e3anil\u6765\u907f\u514d\u5185\u5b58\u6cc4\u9732\u3002

    "},{"location":"zh/#map-27","title":"\u4e0d\u9ad8\u6548\u7684map\u521d\u59cb\u5316 (#27)","text":"

    \u89c1 #21.

    "},{"location":"zh/#map-28","title":"map\u548c\u5185\u5b58\u6cc4\u6f0f (#28)","text":"

    \u4e00\u4e2amap\u7684buckets\u5360\u7528\u7684\u5185\u5b58\u53ea\u4f1a\u589e\u957f\uff0c\u4e0d\u4f1a\u7f29\u51cf\u3002\u56e0\u6b64\uff0c\u5982\u679c\u5b83\u5bfc\u81f4\u4e86\u4e00\u4e9b\u5185\u5b58\u5360\u7528\u7684\u95ee\u9898\uff0c\u4f60\u9700\u8981\u5c1d\u8bd5\u4e0d\u540c\u7684\u9009\u9879\u6765\u89e3\u51b3\uff0c\u6bd4\u5982\u91cd\u65b0\u521b\u5efa\u4e00\u4e2amap\u4ee3\u66ff\u539f\u6765\u7684\uff08\u539f\u6765\u7684map\u4f1a\u88abGC\u6389\uff09\uff0c\u6216\u8005map[keyType]valueType\u4e2d\u7684valueType\u4f7f\u7528\u6307\u9488\u4ee3\u66ff\u957f\u5ea6\u56fa\u5b9a\u7684\u6570\u7ec4\u6216\u8005sliceHeader\u6765\u7f13\u89e3\u8fc7\u591a\u7684\u5185\u5b58\u5360\u7528\u3002

    "},{"location":"zh/#29","title":"\u4e0d\u6b63\u786e\u7684\u503c\u6bd4\u8f83 (#29)","text":"

    Go\u4e2d\u6bd4\u8f83\u4e24\u4e2a\u7c7b\u578b\u503c\u65f6\uff0c\u5982\u679c\u662f\u53ef\u6bd4\u8f83\u7c7b\u578b\uff0c\u90a3\u4e48\u53ef\u4ee5\u4f7f\u7528 == \u6216\u8005 != \u8fd0\u7b97\u7b26\u8fdb\u884c\u6bd4\u8f83\uff0c\u6bd4\u5982\uff1abooleans\u3001numerals\u3001strings\u3001pointers\u3001channels\uff0c\u4ee5\u53ca\u5b57\u6bb5\u5168\u90e8\u662f\u53ef\u6bd4\u8f83\u7c7b\u578b\u7684structs\u3002\u5176\u4ed6\u60c5\u51b5\u4e0b\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528 reflect.DeepEqual \u6765\u6bd4\u8f83\uff0c\u7528\u53cd\u5c04\u7684\u8bdd\u4f1a\u727a\u7272\u4e00\u70b9\u6027\u80fd\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u5b9e\u73b0\u548c\u5176\u4ed6\u5e93\u6765\u5b8c\u6210\u3002

    "},{"location":"zh/#_3","title":"\u63a7\u5236\u7ed3\u6784","text":""},{"location":"zh/#range-30","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u53d8\u91cf\u662f\u4e00\u4e2a\u62f7\u8d1d (#30)","text":"

    range \u5faa\u73af\u4e2d\u7684\u5faa\u73af\u53d8\u91cf\u662f\u904d\u5386\u5bb9\u5668\u4e2d\u5143\u7d20\u503c\u7684\u4e00\u4e2a\u62f7\u8d1d\u3002\u56e0\u6b64\uff0c\u5982\u679c\u5143\u7d20\u503c\u662f\u4e00\u4e2astruct\u5e76\u4e14\u60f3\u5728 range \u4e2d\u4fee\u6539\u5b83\uff0c\u53ef\u4ee5\u901a\u8fc7\u7d22\u5f15\u503c\u6765\u8bbf\u95ee\u5e76\u4fee\u6539\u5b83\uff0c\u6216\u8005\u4f7f\u7528\u7ecf\u5178\u7684for\u5faa\u73af+\u7d22\u5f15\u503c\u7684\u5199\u6cd5\uff08\u9664\u975e\u904d\u5386\u7684\u5143\u7d20\u662f\u4e00\u4e2a\u6307\u9488\uff09\u3002

    "},{"location":"zh/#range-channels-arrays-31","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u4e2d\u8fed\u4ee3\u76ee\u6807\u503c\u7684\u8ba1\u7b97\u65b9\u5f0f (channels \u548c arrays) (#31)","text":"

    \u4f20\u9012\u7ed9 range \u64cd\u4f5c\u7684\u8fed\u4ee3\u76ee\u6807\u5bf9\u5e94\u7684\u8868\u8fbe\u5f0f\u7684\u503c\uff0c\u53ea\u4f1a\u5728\u5faa\u73af\u6267\u884c\u524d\u88ab\u8ba1\u7b97\u4e00\u6b21\uff0c\u7406\u89e3\u8fd9\u4e2a\u6709\u52a9\u4e8e\u907f\u514d\u72af\u4e00\u4e9b\u5e38\u89c1\u7684\u9519\u8bef\uff0c\u4f8b\u5982\u4e0d\u9ad8\u6548\u7684channel\u8d4b\u503c\u64cd\u4f5c\u3001slice\u8fed\u4ee3\u64cd\u4f5c\u3002

    "},{"location":"zh/#range-range-loops-32","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u4e2d\u6307\u9488\u5143\u7d20\u7684\u5f71\u54cd range loops (#32)","text":"

    \u8fd9\u91cc\u5176\u5b9e\u5f3a\u8c03\u7684\u662f range \u8fed\u4ee3\u8fc7\u7a0b\u4e2d\uff0c\u8fed\u4ee3\u53d8\u91cf\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u62f7\u8d1d\uff0c\u5047\u8bbe\u7ed9\u53e6\u5916\u4e00\u4e2a\u5bb9\u5668\u5143\u7d20\uff08\u6307\u9488\u7c7b\u578b\uff09\u8d4b\u503c\uff0c\u4e14\u9700\u8981\u5bf9\u8fed\u4ee3\u53d8\u91cf\u53d6\u5730\u5740\u8f6c\u6362\u6210\u6307\u9488\u518d\u8d4b\u503c\u7684\u8bdd\uff0c\u8fd9\u91cc\u6f5c\u85cf\u7740\u4e00\u4e2a\u9519\u8bef\uff0c\u5c31\u662ffor\u5faa\u73af\u8fed\u4ee3\u53d8\u91cf\u662f per-variable-per-loop \u800c\u4e0d\u662f per-variable-per-iteration\u3002\u5982\u679c\u662f\u901a\u8fc7\u5c40\u90e8\u53d8\u91cf\uff08\u7528\u8fed\u4ee3\u53d8\u91cf\u6765\u521d\u59cb\u5316\uff09\u6216\u8005\u4f7f\u7528\u7d22\u5f15\u503c\u6765\u76f4\u63a5\u5f15\u7528\u8fed\u4ee3\u7684\u5143\u7d20\uff0c\u5c06\u6709\u52a9\u4e8e\u907f\u514d\u62f7\u8d1d\u6307\u9488(\u8fed\u4ee3\u53d8\u91cf\u7684\u5730\u5740)\u4e4b\u7c7b\u7684bug\u3002

    "},{"location":"zh/#map-33","title":"map\u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u7684\u9519\u8bef\u5047\u8bbe\uff08\u904d\u5386\u987a\u5e8f \u548c \u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u63d2\u5165\uff09(#33)","text":"

    \u4f7f\u7528map\u65f6\uff0c\u4e3a\u4e86\u80fd\u5f97\u5230\u786e\u5b9a\u4e00\u81f4\u7684\u7ed3\u679c\uff0c\u5e94\u8be5\u8bb0\u4f4fGo\u4e2d\u7684map\u6570\u636e\u7ed3\u6784\uff1a * \u4e0d\u4f1a\u6309\u7167key\u5bf9data\u8fdb\u884c\u6392\u5e8f\uff0c\u904d\u5386\u65f6\u4e0d\u662f\u6309key\u6709\u5e8f\u7684\uff1b * \u904d\u5386\u65f6\u7684\u987a\u5e8f\uff0c\u4e5f\u4e0d\u662f\u6309\u7167\u63d2\u5165\u65f6\u7684\u987a\u5e8f\uff1b * \u6ca1\u6709\u4e00\u4e2a\u786e\u5b9a\u6027\u7684\u904d\u5386\u987a\u5e8f\uff0c\u6bcf\u6b21\u904d\u5386\u987a\u5e8f\u662f\u4e0d\u540c\u7684\uff1b * \u4e0d\u80fd\u4fdd\u8bc1\u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u65b0\u63d2\u5165\u7684\u5143\u7d20\uff0c\u5728\u5f53\u524d\u8fed\u4ee3\u4e2d\u80fd\u591f\u88ab\u904d\u5386\u5230\uff1b

    "},{"location":"zh/#break-34","title":"\u5ffd\u7565\u4e86 break \u8bed\u53e5\u662f\u5982\u4f55\u5de5\u4f5c\u7684 (#34)","text":"

    \u914d\u5408label\u4f7f\u7528 break \u548c continue\uff0c\u80fd\u591f\u8df3\u8fc7\u4e00\u4e2a\u7279\u5b9a\u7684\u8bed\u53e5\uff0c\u5728\u67d0\u4e9b\u5faa\u73af\u4e2d\u5b58\u5728 switch\u548cselect\u8bed\u53e5\u7684\u573a\u666f\u4e2d\u5c31\u6bd4\u8f83\u6709\u5e2e\u52a9\u3002

    "},{"location":"zh/#defer-35","title":"\u5728\u5faa\u73af\u4e2d\u4f7f\u7528 defer (#35)","text":"

    \u5728\u5faa\u73af\u4e2d\u4f7f\u7528defer\u4e0d\u80fd\u5728\u6bcf\u8f6e\u8fed\u4ee3\u7ed3\u675f\u65f6\u6267\u884cdefer\u8bed\u53e5\uff0c\u4f46\u662f\u5c06\u5faa\u73af\u903b\u8f91\u63d0\u53d6\u5230\u51fd\u6570\u5185\u90e8\u4f1a\u5728\u6bcf\u6b21\u8fed\u4ee3\u7ed3\u675f\u65f6\u6267\u884c defer \u8bed\u53e5\u3002

    "},{"location":"zh/#_4","title":"\u5b57\u7b26\u4e32","text":""},{"location":"zh/#rune-36","title":"\u6ca1\u6709\u7406\u89e3rune (#36)","text":"

    \u7406\u89e3rune\u7c7b\u578b\u5bf9\u5e94\u7684\u662f\u4e00\u4e2aunicode\u7801\u70b9\uff0c\u6bcf\u4e00\u4e2aunicode\u7801\u70b9\u5176\u5b9e\u662f\u4e00\u4e2a\u591a\u5b57\u8282\u7684\u5e8f\u5217\uff0c\u4e0d\u662f\u4e00\u4e2abyte\u3002\u8fd9\u5e94\u8be5\u662fGo\u5f00\u53d1\u8005\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u4e4b\u4e00\uff0c\u7406\u89e3\u4e86\u8fd9\u4e2a\u6709\u52a9\u4e8e\u66f4\u51c6\u786e\u5730\u5904\u7406\u5b57\u7b26\u4e32\u3002

    "},{"location":"zh/#37","title":"\u4e0d\u6b63\u786e\u7684\u5b57\u7b26\u4e32\u904d\u5386 (#37)","text":"

    \u4f7f\u7528 range \u64cd\u4f5c\u7b26\u5bf9\u4e00\u4e2astring\u8fdb\u884c\u904d\u5386\u5b9e\u9645\u4e0a\u662f\u5bf9string\u5bf9\u5e94\u7684 []rune \u8fdb\u884c\u904d\u5386\uff0c\u8fed\u4ee3\u53d8\u91cf\u4e2d\u7684\u7d22\u5f15\u503c\uff0c\u8868\u793a\u7684\u5f53\u524drune\u5bf9\u5e94\u7684 []byte \u5728\u6574\u4e2a []byte(string) \u4e2d\u7684\u8d77\u59cb\u7d22\u5f15\u3002\u5982\u679c\u8981\u8bbf\u95eestring\u4e2d\u7684\u67d0\u4e00\u4e2arune\uff08\u6bd4\u5982\u7b2c\u4e09\u4e2a\uff09\uff0c\u9996\u5148\u8981\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a []rune \u7136\u540e\u518d\u6309\u7d22\u5f15\u503c\u8bbf\u95ee\u3002

    "},{"location":"zh/#trim-38","title":"\u8bef\u7528trim\u51fd\u6570 (#38)","text":"

    strings.TrimRight/strings.TrimLeft \u79fb\u9664\u5728\u5b57\u7b26\u4e32\u5c3e\u90e8\u6216\u8005\u5f00\u5934\u51fa\u73b0\u7684\u4e00\u4e9brunes\uff0c\u51fd\u6570\u4f1a\u6307\u5b9a\u4e00\u4e2arune\u96c6\u5408\uff0c\u51fa\u73b0\u5728\u96c6\u5408\u4e2d\u7684rune\u5c06\u88ab\u4ece\u5b57\u7b26\u4e32\u79fb\u9664\u3002\u800c strings.TrimSuffix/strings.TrimPrefix \u662f\u79fb\u9664\u5b57\u7b26\u4e32\u7684\u4e00\u4e2a\u540e\u7f00/\u524d\u7f00\u3002

    "},{"location":"zh/#39","title":"\u4e0d\u7ecf\u4f18\u5316\u7684\u5b57\u7b26\u4e32\u62fc\u63a5\u64cd\u4f5c (#39)","text":"

    \u5bf9\u4e00\u4e2a\u5b57\u7b26\u4e32\u5217\u8868\u8fdb\u884c\u904d\u5386\u62fc\u63a5\u64cd\u4f5c\uff0c\u5e94\u8be5\u901a\u8fc7 strings.Builder \u6765\u5b8c\u6210\uff0c\u4ee5\u907f\u514d\u6bcf\u6b21\u8fed\u4ee3\u62fc\u63a5\u65f6\u90fd\u5206\u914d\u4e00\u4e2a\u65b0\u7684string\u5bf9\u8c61\u51fa\u6765\u3002

    "},{"location":"zh/#40","title":"\u65e0\u7528\u7684\u5b57\u7b26\u4e32\u8f6c\u6362 (#40)","text":"

    bytes \u5305\u63d0\u4f9b\u4e86\u4e00\u4e9b\u548c strings \u5305\u76f8\u4f3c\u7684\u64cd\u4f5c\uff0c\u53ef\u4ee5\u5e2e\u52a9\u907f\u514d []byte/string \u4e4b\u95f4\u7684\u8f6c\u6362\u3002

    "},{"location":"zh/#41","title":"\u5b50\u5b57\u7b26\u4e32\u548c\u5185\u5b58\u6cc4\u6f0f (#41)","text":"

    \u4f7f\u7528\u4e00\u4e2a\u5b50\u5b57\u7b26\u4e32\u7684\u62f7\u8d1d\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\uff0c\u56e0\u4e3a\u5bf9\u4e00\u4e2a\u5b57\u7b26\u4e32\u7684s[low:high]\u64cd\u4f5c\u8fd4\u56de\u7684\u5b50\u5b57\u7b26\u4e32\uff0c\u5176\u4f7f\u7528\u4e86\u548c\u539f\u5b57\u7b26\u4e32s\u76f8\u540c\u7684\u5e95\u5c42\u6570\u7ec4\u3002

    "},{"location":"zh/#_5","title":"\u51fd\u6570\u548c\u65b9\u6cd5","text":""},{"location":"zh/#42","title":"\u4e0d\u77e5\u9053\u4f7f\u7528\u54ea\u79cd\u63a5\u6536\u5668\u7c7b\u578b (#42)","text":"

    \u5bf9\u4e8e\u63a5\u6536\u5668\u7c7b\u578b\u662f\u91c7\u7528value\u7c7b\u578b\u8fd8\u662fpointer\u7c7b\u578b\uff0c\u5e94\u8be5\u53d6\u51b3\u4e8e\u4e0b\u9762\u8fd9\u51e0\u79cd\u56e0\u7d20\uff0c\u6bd4\u5982\uff1a\u65b9\u6cd5\u5185\u662f\u5426\u4f1a\u5bf9\u5b83\u8fdb\u884c\u4fee\u6539\uff0c\u5b83\u662f\u5426\u5305\u542b\u4e86\u4e00\u4e2a\u4e0d\u80fd\u88ab\u62f7\u8d1d\u7684\u5b57\u6bb5\uff0c\u4ee5\u53ca\u5b83\u8868\u793a\u7684\u5bf9\u8c61\u6709\u591a\u5927\u3002\u5982\u679c\u6709\u7591\u95ee\uff0c\u63a5\u6536\u5668\u53ef\u4ee5\u8003\u8651\u4f7f\u7528pointer\u7c7b\u578b\u3002

    "},{"location":"zh/#43","title":"\u4ece\u4e0d\u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c (#43)","text":"

    \u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\uff0c\u662f\u4e00\u79cd\u6709\u6548\u6539\u5584\u51fd\u6570\u3001\u65b9\u6cd5\u53ef\u8bfb\u6027\u7684\u65b9\u6cd5\uff0c\u7279\u522b\u662f\u8fd4\u56de\u503c\u5217\u8868\u4e2d\u6709\u591a\u4e2a\u7c7b\u578b\u76f8\u540c\u7684\u53c2\u6570\u3002\u53e6\u5916\uff0c\u56e0\u4e3a\u8fd4\u56de\u503c\u5217\u8868\u4e2d\u7684\u53c2\u6570\u662f\u7ecf\u8fc7\u96f6\u503c\u521d\u59cb\u5316\u8fc7\u7684\uff0c\u67d0\u4e9b\u573a\u666f\u4e0b\u4e5f\u4f1a\u7b80\u5316\u51fd\u6570\u3001\u65b9\u6cd5\u7684\u5b9e\u73b0\u3002\u4f46\u662f\u9700\u8981\u6ce8\u610f\u5b83\u7684\u4e00\u4e9b\u6f5c\u5728\u526f\u4f5c\u7528\u3002

    "},{"location":"zh/#44","title":"\u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\u65f6\u9884\u671f\u5916\u7684\u526f\u4f5c\u7528 (#44)","text":"

    \u89c1 #43.

    \u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\uff0c\u56e0\u4e3a\u5b83\u5df2\u7ecf\u88ab\u521d\u59cb\u5316\u4e86\u96f6\u503c\uff0c\u9700\u8981\u6ce8\u610f\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u5f02\u5e38\u8fd4\u56de\u65f6\u662f\u5426\u9700\u8981\u7ed9\u5b83\u8d4b\u4e88\u4e00\u4e2a\u4e0d\u540c\u7684\u503c\uff0c\u6bd4\u5982\u8fd4\u56de\u503c\u5217\u8868\u5b9a\u4e49\u4e86\u4e00\u4e2a\u6709\u540d\u53c2\u6570 err error\uff0c\u9700\u8981\u6ce8\u610f return err \u65f6\u662f\u5426\u6b63\u786e\u5730\u5bf9 err \u8fdb\u884c\u4e86\u8d4b\u503c\u3002

    "},{"location":"zh/#nil-45","title":"\u8fd4\u56de\u4e00\u4e2anil\u63a5\u6536\u5668 (#45)","text":"

    \u5f53\u8fd4\u56de\u4e00\u4e2ainterface\u53c2\u6570\u65f6\uff0c\u9700\u8981\u5c0f\u5fc3\uff0c\u4e0d\u8981\u8fd4\u56de\u4e00\u4e2anil\u6307\u9488\uff0c\u800c\u662f\u5e94\u8be5\u663e\u793a\u8fd4\u56de\u4e00\u4e2anil\u503c\u3002\u5426\u5219\uff0c\u53ef\u80fd\u4f1a\u53d1\u751f\u4e00\u4e9b\u9884\u671f\u5916\u7684\u95ee\u9898\uff0c\u56e0\u4e3a\u8c03\u7528\u65b9\u4f1a\u6536\u5230\u4e00\u4e2a\u975enil\u7684\u503c\u3002

    "},{"location":"zh/#46","title":"\u4f7f\u7528\u6587\u4ef6\u540d\u4f5c\u4e3a\u51fd\u6570\u5165\u53c2 (#46)","text":"

    \u8bbe\u8ba1\u51fd\u6570\u65f6\u4f7f\u7528 io.Reader \u7c7b\u578b\u4f5c\u4e3a\u5165\u53c2\uff0c\u800c\u4e0d\u662f\u6587\u4ef6\u540d\uff0c\u5c06\u6709\u52a9\u4e8e\u6539\u5584\u51fd\u6570\u7684\u53ef\u590d\u7528\u6027\u3001\u6613\u6d4b\u8bd5\u6027\u3002

    "},{"location":"zh/#defer-value-47","title":"\u5ffd\u7565 defer \u8bed\u53e5\u4e2d\u53c2\u6570\u3001\u63a5\u6536\u5668\u503c\u7684\u8ba1\u7b97\u65b9\u5f0f (\u53c2\u6570\u503c\u8ba1\u7b97, \u6307\u9488, \u548c value\u7c7b\u578b\u63a5\u6536\u5668) (#47)","text":"

    \u4e3a\u4e86\u907f\u514d defer \u8bed\u53e5\u6267\u884c\u65f6\u5c31\u7acb\u5373\u8ba1\u7b97\u5bf9defer\u8981\u6267\u884c\u7684\u51fd\u6570\u7684\u53c2\u6570\u8fdb\u884c\u8ba1\u7b97\uff0c\u53ef\u4ee5\u8003\u8651\u5c06\u8981\u6267\u884c\u7684\u51fd\u6570\u653e\u5230\u95ed\u5305\u91cc\u9762\uff0c\u7136\u540e\u901a\u8fc7\u6307\u9488\u4f20\u9012\u53c2\u6570\u7ed9\u95ed\u5305\u5185\u51fd\u6570\uff08\u6216\u8005\u901a\u8fc7\u95ed\u5305\u6355\u83b7\u5916\u90e8\u53d8\u91cf\uff09\uff0c\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002

    "},{"location":"zh/#_6","title":"\u9519\u8bef\u7ba1\u7406","text":""},{"location":"zh/#panicking-48","title":"Panicking (#48)","text":"

    \u4f7f\u7528 panic \u662fGo\u4e2d\u4e00\u79cd\u5904\u7406\u9519\u8bef\u7684\u65b9\u5f0f\uff0c\u4f46\u662f\u53ea\u80fd\u5728\u9047\u5230\u4e0d\u53ef\u6062\u590d\u7684\u9519\u8bef\u65f6\u4f7f\u7528\uff0c\u4f8b\u5982\uff1a\u901a\u77e5\u5f00\u53d1\u4eba\u5458\u4e00\u4e2a\u5f3a\u4f9d\u8d56\u7684\u6a21\u5757\u52a0\u8f7d\u5931\u8d25\u4e86\u3002

    "},{"location":"zh/#error-49","title":"\u672a\u8003\u8651\u4f55\u65f6\u624d\u5e94\u8be5\u5305\u88c5error (#49)","text":"

    Wrapping\uff08\u5305\u88c5\uff09\u9519\u8bef\u5141\u8bb8\u60a8\u6807\u8bb0\u9519\u8bef\u3001\u63d0\u4f9b\u989d\u5916\u7684\u4e0a\u4e0b\u6587\u4fe1\u606f\u3002\u7136\u800c\uff0c\u5305\u88c5\u9519\u8bef\u4f1a\u521b\u5efa\u6f5c\u5728\u7684\u8026\u5408\uff0c\u56e0\u4e3a\u5b83\u4f7f\u5f97\u539f\u6765\u7684\u9519\u8bef\u5bf9\u8c03\u7528\u8005\u53ef\u89c1\u3002\u5982\u679c\u60a8\u60f3\u8981\u9632\u6b62\u8fd9\u79cd\u60c5\u51b5\uff0c\u8bf7\u4e0d\u8981\u4f7f\u7528\u5305\u88c5\u9519\u8bef\u7684\u65b9\u5f0f\u3002

    "},{"location":"zh/#50","title":"\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u7c7b\u578b\u6bd4\u8f83 (#50)","text":"

    \u5982\u679c\u4f60\u4f7f\u7528 Go 1.13 \u5f15\u5165\u7684\u7279\u6027 fmt.Errorf + %w \u6765\u5305\u88c5\u4e00\u4e2a\u9519\u8bef\uff0c\u5f53\u8fdb\u884c\u9519\u8bef\u6bd4\u8f83\u65f6\uff0c\u5982\u679c\u60f3\u5224\u65ad\u8be5\u5305\u88c5\u540e\u7684\u9519\u8bef\u662f\u4e0d\u662f\u6307\u5b9a\u7684\u9519\u8bef\u7c7b\u578b\uff0c\u5c31\u9700\u8981\u4f7f\u7528 errors.As\uff0c\u5982\u679c\u60f3\u5224\u65ad\u662f\u4e0d\u662f\u6307\u5b9a\u7684error\u5bf9\u8c61\u5c31\u9700\u8981\u7528 errors.Is\u3002

    "},{"location":"zh/#51","title":"\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u5bf9\u8c61\u503c\u6bd4\u8f83 (#51)","text":"

    \u89c1 #50.

    \u4e3a\u4e86\u8868\u8fbe\u4e00\u4e2a\u9884\u671f\u5185\u7684\u9519\u8bef\uff0c\u8bf7\u4f7f\u7528\u9519\u8bef\u503c\u7684\u65b9\u5f0f\uff0c\u5e76\u901a\u8fc7 == \u6216\u8005 errors.Is \u6765\u6bd4\u8f83\u3002\u800c\u5bf9\u4e8e\u610f\u5916\u9519\u8bef\uff0c\u5219\u5e94\u4f7f\u7528\u7279\u5b9a\u7684\u9519\u8bef\u7c7b\u578b\uff08\u53ef\u4ee5\u901a\u8fc7 errors.As \u6765\u6bd4\u8f83\uff09\u3002

    "},{"location":"zh/#52","title":"\u5904\u7406\u540c\u4e00\u4e2a\u9519\u8bef\u4e24\u6b21 (#52)","text":"

    \u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u9519\u8bef\u4ec5\u9700\u8981\u5904\u7406\u4e00\u6b21\u3002\u6253\u5370\u9519\u8bef\u65e5\u5fd7\u4e5f\u662f\u4e00\u79cd\u9519\u8bef\u5904\u7406\u3002\u56e0\u6b64\uff0c\u5f53\u51fd\u6570\u5185\u53d1\u751f\u9519\u8bef\u65f6\uff0c\u5e94\u8be5\u5728\u6253\u5370\u65e5\u5fd7\u548c\u8fd4\u56de\u9519\u8bef\u4e2d\u9009\u62e9\u5176\u4e2d\u4e00\u79cd\u3002\u5305\u88c5\u9519\u8bef\u4e5f\u53ef\u4ee5\u63d0\u4f9b\u95ee\u9898\u53d1\u751f\u7684\u989d\u5916\u4e0a\u4e0b\u6587\u4fe1\u606f\uff0c\u4e5f\u5305\u62ec\u4e86\u539f\u6765\u7684\u9519\u8bef\uff08\u53ef\u8003\u8651\u4ea4\u7ed9\u8c03\u7528\u65b9\u8d1f\u8d23\u6253\u65e5\u5fd7\uff09\u3002

    "},{"location":"zh/#53","title":"\u4e0d\u5904\u7406\u9519\u8bef (#53)","text":"

    \u4e0d\u7ba1\u662f\u5728\u51fd\u6570\u8c03\u7528\u65f6\uff0c\u8fd8\u662f\u5728\u4e00\u4e2a defer \u51fd\u6570\u6267\u884c\u65f6\uff0c\u5982\u679c\u60f3\u8981\u5ffd\u7565\u4e00\u4e2a\u9519\u8bef\uff0c\u5e94\u8be5\u663e\u793a\u5730\u901a\u8fc7 _ \u6765\u5ffd\u7565\uff08\u53ef\u6ce8\u660e\u5ffd\u7565\u7684\u539f\u56e0\uff09\u3002\u5426\u5219\uff0c\u5c06\u6765\u7684\u8bfb\u8005\u5c31\u4f1a\u611f\u89c9\u5230\u56f0\u60d1\uff0c\u5ffd\u7565\u8fd9\u4e2a\u9519\u8bef\u662f\u6709\u610f\u4e3a\u4e4b\u8fd8\u662f\u65e0\u610f\u4e2d\u6f0f\u6389\u4e86\u3002

    "},{"location":"zh/#defer-54","title":"\u4e0d\u5904\u7406 defer \u4e2d\u7684\u9519\u8bef (#54)","text":"

    \u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u4f60\u4e0d\u5e94\u8be5\u5ffd\u7565 defer \u51fd\u6570\u6267\u884c\u65f6\u8fd4\u56de\u7684\u9519\u8bef\uff0c\u6216\u8005\u663e\u793a\u5904\u7406\u5b83\uff0c\u6216\u8005\u5c06\u5b83\u4f20\u9012\u7ed9\u8c03\u7528\u65b9\u5904\u7406\uff0c\u53ef\u4ee5\u6839\u636e\u60c5\u666f\u8fdb\u884c\u9009\u62e9\u3002\u5982\u679c\u4f60\u786e\u5b9a\u8981\u5ffd\u7565\u8fd9\u4e2a\u9519\u8bef\uff0c\u8bf7\u663e\u793a\u4f7f\u7528 _ \u6765\u5ffd\u7565\u3002

    "},{"location":"zh/#_7","title":"\u5e76\u53d1\u7f16\u7a0b: \u57fa\u7840","text":""},{"location":"zh/#55","title":"\u6df7\u6dc6\u5e76\u53d1\u548c\u5e76\u884c (#55)","text":"

    \u7406\u89e3\u5e76\u53d1\uff08concurrency\uff09\u3001\u5e76\u884c\uff08parallelism\uff09\u4e4b\u95f4\u7684\u672c\u8d28\u533a\u522b\u662fGo\u5f00\u53d1\u4eba\u5458\u5fc5\u987b\u8981\u638c\u63e1\u7684\u3002\u5e76\u53d1\u662f\u5173\u4e8e\u7ed3\u6784\u8bbe\u8ba1\u4e0a\u7684\uff0c\u5e76\u884c\u662f\u5173\u4e8e\u5177\u4f53\u6267\u884c\u4e0a\u7684\u3002

    "},{"location":"zh/#56","title":"\u8ba4\u4e3a\u5e76\u53d1\u603b\u662f\u66f4\u5feb (#56)","text":"

    \u8981\u6210\u4e3a\u4e00\u540d\u719f\u7ec3\u7684\u5f00\u53d1\u4eba\u5458\uff0c\u60a8\u5fc5\u987b\u610f\u8bc6\u5230\u5e76\u975e\u6240\u6709\u573a\u666f\u4e0b\u90fd\u662f\u5e76\u53d1\u7684\u65b9\u6848\u66f4\u5feb\u3002\u5bf9\u4e8e\u4efb\u52a1\u4e2d\u7684\u6700\u5c0f\u5de5\u4f5c\u8d1f\u8f7d\u90e8\u5206\uff0c\u5bf9\u5b83\u4eec\u8fdb\u884c\u5e76\u884c\u5316\u5904\u7406\u5e76\u4e0d\u4e00\u5b9a\u5c31\u6709\u660e\u663e\u6536\u76ca\u6216\u8005\u6bd4\u4e32\u884c\u5316\u65b9\u6848\u66f4\u5feb\u3002\u5bf9\u4e32\u884c\u5316\u3001\u5e76\u53d1\u65b9\u6848\u8fdb\u884cbenchmark\u6d4b\u8bd5\uff0c\u662f\u9a8c\u8bc1\u5047\u8bbe\u7684\u597d\u529e\u6cd5\u3002

    "},{"location":"zh/#channelsmutexes-57","title":"\u4e0d\u6e05\u695a\u4f55\u65f6\u4f7f\u7528channels\u6216mutexes (#57)","text":"

    \u4e86\u89e3 goroutine \u4e4b\u95f4\u7684\u4ea4\u4e92\u4e5f\u53ef\u4ee5\u5728\u9009\u62e9\u4f7f\u7528channels\u6216mutexes\u65f6\u6709\u6240\u5e2e\u52a9\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u5e76\u884c\u7684 goroutine \u9700\u8981\u540c\u6b65\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528mutexes\u3002\u76f8\u53cd\uff0c\u5e76\u53d1\u7684 goroutine \u901a\u5e38\u9700\u8981\u534f\u8c03\u548c\u7f16\u6392\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528channels\u3002

    "},{"location":"zh/#vs-go-58","title":"\u4e0d\u660e\u767d\u7ade\u6001\u95ee\u9898 (\u6570\u636e\u7ade\u6001 vs. \u7ade\u6001\u6761\u4ef6 \u548c Go\u5185\u5b58\u6a21\u578b) (#58)","text":"

    \u638c\u63e1\u5e76\u53d1\u610f\u5473\u7740\u8981\u8ba4\u8bc6\u5230\u6570\u636e\u7ade\u4e89\uff08data races\uff09\u548c\u7ade\u6001\u6761\u4ef6\uff08race conditions\uff09\u662f\u4e24\u4e2a\u4e0d\u540c\u7684\u6982\u5ff5\u3002\u6570\u636e\u7ade\u4e89\uff0c\u6307\u7684\u662f\u6709\u591a\u4e2agoroutines\u540c\u65f6\u8bbf\u95ee\u76f8\u540c\u5185\u5b58\u533a\u57df\u65f6\uff0c\u6ca1\u6709\u5fc5\u8981\u7684\u540c\u6b65\u63a7\u5236\uff0c\u4e14\u5176\u4e2d\u81f3\u5c11\u6709\u4e00\u4e2agoroutine\u662f\u6267\u884c\u7684\u5199\u64cd\u4f5c\u3002\u540c\u65f6\u8981\u8ba4\u8bc6\u5230\uff0c\u6ca1\u6709\u53d1\u751f\u6570\u636e\u7ade\u4e89\u4e0d\u4ee3\u8868\u7a0b\u5e8f\u7684\u6267\u884c\u662f\u786e\u5b9a\u6027\u7684\u3001\u6ca1\u95ee\u9898\u7684\u3002\u5f53\u5728\u67d0\u4e2a\u7279\u5b9a\u7684\u64cd\u4f5c\u987a\u5e8f\u6216\u8005\u7279\u5b9a\u7684\u4e8b\u4ef6\u53d1\u751f\u987a\u5e8f\u4e0b\uff0c\u5982\u679c\u6700\u7ec8\u7684\u884c\u4e3a\u662f\u4e0d\u53ef\u63a7\u7684\uff0c\u8fd9\u5c31\u662f\u7ade\u6001\u6761\u4ef6\u3002

    ps\uff1a\u6570\u636e\u7ade\u4e89\u662f\u7ade\u6001\u6761\u4ef6\u7684\u5b50\u96c6\uff0c\u7ade\u6001\u6761\u4ef6\u4e0d\u4ec5\u5c40\u9650\u4e8e\u8bbf\u5b58\u672a\u540c\u6b65\uff0c\u5b83\u53ef\u4ee5\u53d1\u751f\u5728\u66f4\u9ad8\u7684\u5c42\u9762\u3002go test -race \u68c0\u6d4b\u7684\u662f\u6570\u636e\u7ade\u4e89\uff0c\u9700\u8981\u540c\u6b65\u6765\u89e3\u51b3\uff0c\u800c\u5f00\u53d1\u8005\u8fd8\u9700\u8981\u5173\u6ce8\u9762\u66f4\u5e7f\u7684\u7ade\u6001\u6761\u4ef6\uff0c\u5b83\u9700\u8981\u5bf9\u591a\u4e2agoroutines\u7684\u6267\u884c\u8fdb\u884c\u7f16\u6392\u3002

    \u7406\u89e3 Go \u7684\u5185\u5b58\u6a21\u578b\u4ee5\u53ca\u6709\u5173\u987a\u5e8f\u548c\u540c\u6b65\u7684\u5e95\u5c42\u4fdd\u8bc1\u662f\u9632\u6b62\u53ef\u80fd\u7684\u6570\u636e\u7ade\u4e89\u548c\u7ade\u6001\u6761\u4ef6\u7684\u5173\u952e\u3002

    "},{"location":"zh/#59","title":"\u4e0d\u7406\u89e3\u4e0d\u540c\u5de5\u4f5c\u8d1f\u8f7d\u7c7b\u578b\u5bf9\u5e76\u53d1\u7684\u5f71\u54cd (#59)","text":"

    \u5f53\u521b\u5efa\u4e00\u5b9a\u6570\u91cf\u7684goroutines\u662f\uff0c\u9700\u8981\u8003\u8651\u5de5\u4f5c\u8d1f\u8f7d\u7684\u7c7b\u578b\u3002\u5982\u679c\u5de5\u4f5c\u8d1f\u8f7d\u662fCPU\u5bc6\u96c6\u578b\u7684\uff0c\u90a3\u4e48goroutines\u6570\u91cf\u5e94\u8be5\u63a5\u8fd1\u4e8e GOMAXPROCS \u7684\u503c\uff08\u8be5\u503c\u53d6\u51b3\u4e8e\u4e3b\u673a\u5904\u7406\u5668\u6838\u5fc3\u6570\uff09\u3002\u5982\u679c\u5de5\u4f5c\u8d1f\u8f7d\u662fIO\u5bc6\u96c6\u578b\u7684\uff0cgoroutines\u6570\u91cf\u5c31\u9700\u8981\u8003\u8651\u591a\u79cd\u56e0\u7d20\uff0c\u6bd4\u5982\u5916\u90e8\u7cfb\u7edf\uff08\u8003\u8651\u8bf7\u6c42\u3001\u54cd\u5e94\u901f\u7387\uff09\u3002

    "},{"location":"zh/#go-contexts-60","title":"\u8bef\u89e3\u4e86Go contexts (#60)","text":"

    Go \u7684\u4e0a\u4e0b\u6587\uff08context\uff09\u4e5f\u662f Go \u5e76\u53d1\u7f16\u7a0b\u7684\u57fa\u77f3\u4e4b\u4e00\u3002\u4e0a\u4e0b\u6587\u5141\u8bb8\u60a8\u643a\u5e26\u622a\u6b62\u65f6\u95f4\u3001\u53d6\u6d88\u4fe1\u53f7\u548c\u952e\u503c\u5217\u8868\u3002

    "},{"location":"zh/#_8","title":"\u5e76\u53d1\u7f16\u7a0b: \u5b9e\u8df5","text":""},{"location":"zh/#context-61","title":"\u4f20\u9012\u4e0d\u5408\u9002\u7684context (#61)","text":"

    \u5f53\u6211\u4eec\u4f20\u9012\u4e86\u4e00\u4e2acontext\uff0c\u6211\u4eec\u9700\u8981\u77e5\u9053\u8fd9\u4e2acontext\u4ec0\u4e48\u65f6\u5019\u53ef\u4ee5\u88ab\u53d6\u6d88\uff0c\u8fd9\u70b9\u5f88\u91cd\u8981\uff0c\u4f8b\u5982\uff1a\u4e00\u4e2aHTTP\u8bf7\u6c42\u5904\u7406\u5668\u5728\u53d1\u9001\u5b8c\u54cd\u5e94\u540e\u53d6\u6d88context\u3002

    ps: \u5b9e\u9645\u4e0acontext\u8868\u8fbe\u7684\u662f\u4e00\u4e2a\u52a8\u4f5c\u53ef\u4ee5\u6301\u7eed\u591a\u4e45\u4e4b\u540e\u88ab\u505c\u6b62\u3002

    "},{"location":"zh/#goroutine-62","title":"\u542f\u52a8\u4e86\u4e00\u4e2agoroutine\u4f46\u662f\u4e0d\u77e5\u9053\u5b83\u4f55\u65f6\u4f1a\u505c\u6b62 (#62)","text":"

    \u907f\u514dgoroutine\u6cc4\u6f0f\uff0c\u8981\u6709\u8fd9\u79cd\u610f\u8bc6\uff0c\u5f53\u521b\u5efa\u5e76\u542f\u52a8\u4e00\u4e2agoroutine\u7684\u65f6\u5019\uff0c\u5e94\u8be5\u6709\u5bf9\u5e94\u7684\u8bbe\u8ba1\u8ba9\u5b83\u80fd\u6b63\u5e38\u9000\u51fa\u3002

    "},{"location":"zh/#goroutines-63","title":"\u4e0d\u6ce8\u610f\u5904\u7406 goroutines \u548c \u5faa\u73af\u4e2d\u7684\u8fed\u4ee3\u53d8\u91cf (#63)","text":"

    \u4e3a\u4e86\u907f\u514dgoroutines\u548c\u5faa\u73af\u4e2d\u7684\u8fed\u4ee3\u53d8\u91cf\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u521b\u5efa\u5c40\u90e8\u53d8\u91cf\u5e76\u5c06\u8fed\u4ee3\u53d8\u91cf\u8d4b\u503c\u7ed9\u5c40\u90e8\u53d8\u91cf\uff0c\u6216\u8005goroutine\u8c03\u7528\u5e26\u53c2\u6570\u7684\u51fd\u6570\uff0c\u5c06\u8fed\u4ee3\u53d8\u91cf\u503c\u4f5c\u4e3a\u53c2\u6570\u503c\u4f20\u5165\uff0c\u6765\u4ee3\u66ffgoroutine\u8c03\u7528\u95ed\u5305\u3002

    "},{"location":"zh/#select-channels-64","title":"\u4f7f\u7528select + channels \u65f6\u8bef\u4ee5\u4e3a\u5206\u652f\u9009\u62e9\u987a\u5e8f\u662f\u786e\u5b9a\u7684 (#64)","text":"

    \u8981\u660e\u767d\uff0cselect \u591a\u4e2achannels\u65f6\uff0c\u5982\u679c\u591a\u4e2achannels\u4e0a\u7684\u64cd\u4f5c\u90fd\u5c31\u7eea\uff0c\u90a3\u4e48\u4f1a\u968f\u673a\u9009\u62e9\u4e00\u4e2a case \u5206\u652f\u6765\u6267\u884c\uff0c\u56e0\u6b64\u8981\u907f\u514d\u6709\u5206\u652f\u9009\u62e9\u987a\u5e8f\u662f\u4ece\u4e0a\u5230\u4e0b\u7684\u8fd9\u79cd\u9519\u8bef\u9884\u8bbe\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bbe\u8ba1\u4e0a\u7684bug\u3002

    "},{"location":"zh/#channels-65","title":"\u4e0d\u6b63\u786e\u4f7f\u7528\u901a\u77e5 channels (#65)","text":"

    \u53d1\u9001\u901a\u77e5\u65f6\u4f7f\u7528 chan struct{} \u7c7b\u578b\u3002

    ps: \u5148\u660e\u767d\u4ec0\u4e48\u662f\u901a\u77e5channels\uff0c\u4e00\u4e2a\u901a\u77e5channels\u6307\u7684\u662f\u53ea\u662f\u7528\u6765\u505a\u901a\u77e5\uff0c\u800c\u5176\u4e2d\u4f20\u9012\u7684\u6570\u636e\u6ca1\u6709\u610f\u4e49\uff0c\u6216\u8005\u7406\u89e3\u6210\u4e0d\u4f20\u9012\u6570\u636e\u7684channels\uff0c\u8fd9\u79cd\u79f0\u4e3a\u901a\u77e5channels\u3002\u5176\u4e2d\u4f20\u9012\u7684\u6570\u636e\u7684\u7c7b\u578bstruct{}\u66f4\u5408\u9002\u3002

    "},{"location":"zh/#nil-channels-66","title":"\u4e0d\u4f7f\u7528 nil channels (#66)","text":"

    \u4f7f\u7528 nil channels \u5e94\u8be5\u662f\u5e76\u53d1\u5904\u7406\u65b9\u5f0f\u4e2d\u7684\u4e00\u90e8\u5206\uff0c\u4f8b\u5982\uff0c\u5b83\u80fd\u591f\u5e2e\u52a9\u7981\u7528 select \u8bed\u53e5\u4e2d\u7684\u7279\u5b9a\u7684\u5206\u652f\u3002

    "},{"location":"zh/#channel-size-67","title":"\u4e0d\u6e05\u695a\u8be5\u5982\u4f55\u786e\u5b9a channel size (#67)","text":"

    \u6839\u636e\u6307\u5b9a\u7684\u573a\u666f\u4ed4\u7ec6\u8bc4\u4f30\u5e94\u8be5\u4f7f\u7528\u54ea\u4e00\u79cd channel \u7c7b\u578b\uff08\u5e26\u7f13\u51b2\u7684\uff0c\u4e0d\u5e26\u7f13\u51b2\u7684\uff09\u3002\u53ea\u6709\u4e0d\u5e26\u7f13\u51b2\u7684 channels \u53ef\u4ee5\u63d0\u4f9b\u5f3a\u540c\u6b65\u4fdd\u8bc1\u3002

    \u4f7f\u7528\u5e26\u7f13\u51b2\u7684 channels \u65f6\u5982\u679c\u4e0d\u786e\u5b9a size \u8be5\u5982\u4f55\u8bbe\u7f6e\uff0c\u53ef\u4ee5\u5148\u8bbe\u4e3a1\uff0c\u5982\u679c\u6709\u5408\u7406\u7684\u7406\u7531\u518d\u53bb\u6307\u5b9a channels size\u3002

    ps: \u6839\u636edisruptor\u8fd9\u4e2a\u9ad8\u6027\u80fd\u5185\u5b58\u6d88\u606f\u961f\u5217\u7684\u5b9e\u8df5\uff0c\u5728\u67d0\u79cd\u8bfb\u5199pacing\u4e0b\uff0c\u961f\u5217\u8981\u4e48\u6ee1\u8981\u4e48\u7a7a\uff0c\u4e0d\u5927\u53ef\u80fd\u5904\u4e8e\u67d0\u79cd\u4ecb\u4e8e\u4e2d\u95f4\u7684\u7a33\u6001\u3002

    "},{"location":"zh/#etcd-68","title":"\u5fd8\u8bb0\u4e86\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u53ef\u80fd\u5e26\u6765\u7684\u526f\u4f5c\u7528\uff08\u4f8b\u5982 etcd \u6570\u636e\u7ade\u4e89\u548c\u6b7b\u9501\uff09(#68)","text":"

    \u610f\u8bc6\u5230\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8c03\u7528\u73b0\u6709\u51fd\u6570\uff0c\u8fd9\u610f\u5473\u7740\u9700\u8981\u6ce8\u610f\u53ef\u80fd\u7684\u6b7b\u9501\u548c\u5176\u4ed6\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    ps: \u6838\u5fc3\u662f\u8981\u5173\u6ce8 fmt.Sprintf + %v \u8fdb\u884c\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u65f6 %v \u5177\u4f53\u5230\u4e0d\u540c\u7684\u7c7b\u578b\u503c\u65f6\uff0c\u5b9e\u9645\u4e0a\u6267\u884c\u7684\u64cd\u4f5c\u662f\u4ec0\u4e48\u3002\u6bd4\u5982 %v \u8fd9\u4e2aplaceholder\u5bf9\u5e94\u7684\u503c\u65f6\u4e00\u4e2a context.Context\uff0c\u90a3\u4e48\u4f1a\u5c31\u904d\u5386\u5176\u901a\u8fc7 context.WithValue \u9644\u52a0\u5728\u5176\u4e2d\u7684 values\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u53ef\u80fd\u6d89\u53ca\u5230\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002\u4e66\u4e2d\u63d0\u53ca\u7684\u53e6\u4e00\u4e2a\u5bfc\u81f4\u6b7b\u9501\u7684\u6848\u4f8b\u672c\u8d28\u4e0a\u4e5f\u662f\u4e00\u6837\u7684\u95ee\u9898\uff0c\u53ea\u4e0d\u8fc7\u53c8\u989d\u5916\u7275\u626f\u5230\u4e86 sync.RWMutex \u4e0d\u53ef\u91cd\u5165\u7684\u95ee\u9898\u3002

    "},{"location":"zh/#append-69","title":"\u4f7f\u7528 append \u4e0d\u5f53\u5bfc\u81f4\u6570\u636e\u7ade\u4e89 (#69)","text":"

    \u8c03\u7528 append \u4e0d\u603b\u662f\u6ca1\u6709\u6570\u636e\u7ade\u4e89\u7684\uff0c\u56e0\u6b64\u4e0d\u8981\u5728\u4e00\u4e2a\u5171\u4eab\u7684 slice \u4e0a\u5e76\u53d1\u5730\u6267\u884c append\u3002

    "},{"location":"zh/#mutexes-slicesmaps-70","title":"\u8bef\u7528 mutexes \u548c slices\u3001maps (#70)","text":"

    \u8bf7\u8bb0\u4f4f slices \u548c maps \u5f15\u7528\u7c7b\u578b\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u5e38\u89c1\u7684\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    ps: \u8fd9\u91cc\u5b9e\u9645\u662f\u56e0\u4e3a\u9519\u8bef\u7406\u89e3\u4e86 slices \u548c maps\uff0c\u5bfc\u81f4\u5199\u51fa\u4e86\u9519\u8bef\u7684\u62f7\u8d1d slices \u548c maps \u7684\u4ee3\u7801\uff0c\u8fdb\u800c\u5bfc\u81f4\u9501\u4fdd\u62a4\u65e0\u6548\u3001\u51fa\u73b0\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    "},{"location":"zh/#syncwaitgroup-71","title":"\u8bef\u7528 sync.WaitGroup (#71)","text":"

    \u6b63\u786e\u5730\u4f7f\u7528 sync.WaitGroup \u9700\u8981\u5728\u542f\u52a8 goroutines \u4e4b\u524d\u5148\u8c03\u7528 Add \u65b9\u6cd5\u3002

    "},{"location":"zh/#synccond-72","title":"\u5fd8\u8bb0\u4f7f\u7528 sync.Cond (#72)","text":"

    \u4f60\u53ef\u4ee5\u4f7f\u7528 sync.Cond \u5411\u591a\u4e2a goroutines \u53d1\u9001\u91cd\u590d\u7684\u901a\u77e5\u3002

    "},{"location":"zh/#errgroup-73","title":"\u4e0d\u4f7f\u7528 errgroup (#73)","text":"

    \u4f60\u53ef\u4ee5\u4f7f\u7528 errgroup \u5305\u6765\u540c\u6b65\u4e00\u7ec4 goroutines \u5e76\u5904\u7406\u9519\u8bef\u548c\u4e0a\u4e0b\u6587\u3002

    "},{"location":"zh/#sync-74","title":"\u62f7\u8d1d\u4e00\u4e2a sync \u4e0b\u7684\u7c7b\u578b (#74)","text":"

    sync \u5305\u4e0b\u7684\u7c7b\u578b\u4e0d\u5e94\u8be5\u88ab\u62f7\u8d1d\u3002

    "},{"location":"zh/#_9","title":"\u6807\u51c6\u5e93","text":""},{"location":"zh/#timeduration-75","title":"\u4f7f\u7528\u4e86\u9519\u8bef\u7684 time.Duration (#75)","text":"

    \u6ce8\u610f\u6709\u4e9b\u51fd\u6570\u63a5\u6536\u4e00\u4e2a time.Duration \u7c7b\u578b\u7684\u53c2\u6570\u65f6\uff0c\u5c3d\u7ba1\u76f4\u63a5\u4f20\u9012\u4e00\u4e2a\u6574\u6570\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u6700\u597d\u8fd8\u662f\u4f7f\u7528 time API \u4e2d\u7684\u65b9\u6cd5\u6765\u4f20\u9012 duration\uff0c\u4ee5\u907f\u514d\u53ef\u80fd\u9020\u6210\u7684\u56f0\u60d1\u3001bug\u3002

    ps: \u91cd\u70b9\u662f\u6ce8\u610f time.Duration \u5b9a\u4e49\u7684\u662f nanoseconds \u6570\u3002

    "},{"location":"zh/#timeafter-76","title":"time.After \u548c\u5185\u5b58\u6cc4\u6f0f (#76)","text":"

    \u907f\u514d\u5728\u91cd\u590d\u6267\u884c\u5f88\u591a\u6b21\u7684\u51fd\u6570 \uff08\u5982\u5faa\u73af\u4e2d\u6216HTTP\u5904\u7406\u51fd\u6570\uff09\u4e2d\u8c03\u7528 time.After\uff0c\u8fd9\u53ef\u4ee5\u907f\u514d\u5185\u5b58\u5cf0\u503c\u6d88\u8017\u3002\u7531 time.After \u521b\u5efa\u7684\u8d44\u6e90\u4ec5\u5728\u8ba1\u65f6\u5668\u8d85\u65f6\u624d\u4f1a\u88ab\u91ca\u653e\u3002

    "},{"location":"zh/#json-77","title":"JSON\u5904\u7406\u4e2d\u7684\u5e38\u89c1\u9519\u8bef (#77)","text":"
    • \u7c7b\u578b\u5d4c\u5957\u5bfc\u81f4\u7684\u9884\u6599\u5916\u7684\u884c\u4e3a

    \u8981\u5f53\u5fc3\u5728Go\u7ed3\u6784\u4f53\u4e2d\u5d4c\u5165\u5b57\u6bb5\uff0c\u8fd9\u6837\u505a\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bf8\u5982\u5d4c\u5165\u7684 time.Time \u5b57\u6bb5\u5b9e\u73b0 json.Marshaler \u63a5\u53e3\uff0c\u4ece\u800c\u8986\u76d6\u9ed8\u8ba4\u7684json\u5e8f\u5217\u3002

    • JSON \u548c \u5355\u8c03\u65f6\u949f

    \u5f53\u5bf9\u4e24\u4e2a time.Time \u7c7b\u578b\u503c\u8fdb\u884c\u6bd4\u8f83\u65f6\uff0c\u9700\u8981\u8bb0\u4f4f time.Time \u5305\u542b\u4e86\u4e00\u4e2a\u5899\u4e0a\u65f6\u949f\uff08wall clock\uff09\u548c\u4e00\u4e2a\u5355\u8c03\u65f6\u949f \uff08monotonic clock\uff09\uff0c\u800c\u4f7f\u7528 == \u8fd0\u7b97\u7b26\u8fdb\u884c\u6bd4\u8f83\u65f6\u4f1a\u540c\u65f6\u6bd4\u8f83\u8fd9\u4e24\u4e2a\u3002

    • Map \u952e\u5bf9\u5e94\u503c\u4e3a any

    \u5f53\u63d0\u4f9b\u4e00\u4e2amap\u7528\u6765unmarshal JSON\u6570\u636e\u65f6\uff0c\u4e3a\u4e86\u907f\u514d\u4e0d\u786e\u5b9a\u7684value\u7ed3\u6784\u6211\u4eec\u4f1a\u4f7f\u7528 any \u6765\u4f5c\u4e3avalue\u7684\u7c7b\u578b\u800c\u4e0d\u662f\u5b9a\u4e49\u4e00\u4e2astruct\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u9700\u8981\u8bb0\u5f97\u6570\u503c\u9ed8\u8ba4\u4f1a\u88ab\u8f6c\u6362\u4e3a float64\u3002

    "},{"location":"zh/#sql-78","title":"\u5e38\u89c1\u7684 SQL \u9519\u8bef (#78)","text":"
    • \u5fd8\u8bb0\u4e86 sql.Open \u5e76\u6ca1\u6709\u4e0edb\u670d\u52a1\u5668\u5efa\u7acb\u5b9e\u9645\u8fde\u63a5

    \u9700\u8981\u8c03\u7528 Ping \u6216\u8005 PingContext \u65b9\u6cd5\u6765\u6d4b\u8bd5\u914d\u7f6e\u5e76\u786e\u4fdd\u6570\u636e\u5e93\u662f\u53ef\u8fbe\u7684\u3002

    • \u5fd8\u8bb0\u4e86\u4f7f\u7528\u8fde\u63a5\u6c60

    \u4f5c\u4e3a\u751f\u4ea7\u7ea7\u522b\u7684\u5e94\u7528\uff0c\u8bbf\u95ee\u6570\u636e\u5e93\u65f6\u5e94\u8be5\u5173\u6ce8\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u53c2\u6570\u3002

    • \u6ca1\u6709\u4f7f\u7528 prepared \u8bed\u53e5

    \u4f7f\u7528 SQL prepared \u8bed\u53e5\u80fd\u591f\u8ba9\u67e5\u8be2\u66f4\u52a0\u9ad8\u6548\u548c\u5b89\u5168\u3002

    • \u8bef\u5904\u7406 null \u503c

    \u4f7f\u7528 sql.NullXXX \u7c7b\u578b\u5904\u7406\u8868\u4e2d\u7684\u53ef\u7a7a\u5217\u3002

    • \u4e0d\u5904\u7406\u884c\u8fed\u4ee3\u65f6\u7684\u9519\u8bef

    \u8c03\u7528 sql.Rows \u7684 Err \u65b9\u6cd5\u6765\u786e\u4fdd\u5728\u51c6\u5907\u4e0b\u4e00\u4e2a\u884c\u65f6\u6ca1\u6709\u9057\u6f0f\u9519\u8bef\u3002

    "},{"location":"zh/#http-sqlrows-osfile-79","title":"\u4e0d\u5173\u95ed\u4e34\u65f6\u8d44\u6e90\uff08HTTP \u8bf7\u6c42\u4f53\u3001sql.Rows \u548c os.File) (#79)","text":"

    \u6700\u7ec8\u8981\u6ce8\u610f\u5173\u95ed\u6240\u6709\u5b9e\u73b0 io.Closer \u63a5\u53e3\u7684\u7ed3\u6784\u4f53,\u4ee5\u907f\u514d\u53ef\u80fd\u7684\u6cc4\u6f0f\u3002

    "},{"location":"zh/#http-80","title":"\u54cd\u5e94HTTP\u8bf7\u6c42\u540e\u6ca1\u6709\u8fd4\u56de\u8bed\u53e5 (#80)","text":"

    \u4e3a\u4e86\u907f\u514d\u5728HTTP\u5904\u7406\u51fd\u6570\u4e2d\u51fa\u73b0\u67d0\u4e9b\u610f\u5916\u7684\u95ee\u9898\uff0c\u5982\u679c\u60f3\u5728\u53d1\u751f http.Error \u540e\u8ba9HTTP\u5904\u7406\u51fd\u6570\u505c\u6b62\uff0c\u90a3\u4e48\u5c31\u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528return\u8bed\u53e5\u6765\u963b\u6b62\u540e\u7eed\u4ee3\u7801\u7684\u6267\u884c\u3002

    "},{"location":"zh/#http-clientserver-81","title":"\u76f4\u63a5\u4f7f\u7528\u9ed8\u8ba4\u7684HTTP client\u548cserver (#81)","text":"

    \u5bf9\u4e8e\u751f\u4ea7\u7ea7\u522b\u7684\u5e94\u7528\uff0c\u4e0d\u8981\u4f7f\u7528\u9ed8\u8ba4\u7684HTTP client\u548cserver\u5b9e\u73b0\u3002\u8fd9\u4e9b\u5b9e\u73b0\u7f3a\u5c11\u8d85\u65f6\u548c\u751f\u4ea7\u73af\u5883\u4e2d\u5e94\u8be5\u5f3a\u5236\u4f7f\u7528\u7684\u884c\u4e3a\u3002

    "},{"location":"zh/#_10","title":"\u6d4b\u8bd5","text":""},{"location":"zh/#build-tags-82","title":"\u4e0d\u5bf9\u6d4b\u8bd5\u8fdb\u884c\u5206\u7c7b \uff08build tags, \u73af\u5883\u53d8\u91cf\uff0c\u77ed\u6a21\u5f0f\uff09(#82)","text":"

    \u5bf9\u6d4b\u8bd5\u8fdb\u884c\u5fc5\u8981\u7684\u5206\u7c7b\uff0c\u53ef\u4ee5\u501f\u52a9 build tags\u3001\u73af\u5883\u53d8\u91cf\u4ee5\u53ca\u77ed\u6a21\u5f0f\uff0c\u6765\u4f7f\u5f97\u6d4b\u8bd5\u8fc7\u7a0b\u66f4\u52a0\u9ad8\u6548\u3002\u4f60\u53ef\u4ee5\u4f7f\u7528 build tags \u6216\u73af\u5883\u53d8\u91cf\u6765\u521b\u5efa\u6d4b\u8bd5\u7c7b\u522b\uff08\u4f8b\u5982\u5355\u5143\u6d4b\u8bd5\u4e0e\u96c6\u6210\u6d4b\u8bd5\uff09\uff0c\u5e76\u533a\u5206\u77ed\u6d4b\u8bd5\u4e0e\u957f\u65f6\u95f4\u6d4b\u8bd5\uff0c\u6765\u51b3\u5b9a\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u3002

    ps: \u4e86\u89e3\u4e0bgo build tags\uff0c\u4ee5\u53ca go test -short\u3002

    "},{"location":"zh/#race-83","title":"\u4e0d\u6253\u5f00 race \u5f00\u5173 (#83)","text":"

    \u6253\u5f00 -race \u5f00\u5173\u5728\u7f16\u5199\u5e76\u53d1\u5e94\u7528\u65f6\u975e\u5e38\u91cd\u8981\u3002\u8fd9\u80fd\u5e2e\u52a9\u4f60\u6355\u83b7\u53ef\u80fd\u7684\u6570\u636e\u7ade\u4e89,\u4ece\u800c\u907f\u514d\u8f6f\u4ef6bug\u3002

    "},{"location":"zh/#parallel-shuffle-84","title":"\u4e0d\u6253\u5f00\u6d4b\u8bd5\u7684\u6267\u884c\u6a21\u5f0f\u5f00\u5173 (parallel \u548c shuffle) (#84)","text":"

    \u6253\u5f00\u5f00\u5173 -parallel \u6709\u52a9\u4e8e\u52a0\u901f\u6d4b\u8bd5\u7684\u6267\u884c\uff0c\u7279\u522b\u662f\u6d4b\u8bd5\u4e2d\u5305\u542b\u4e00\u4e9b\u9700\u8981\u957f\u671f\u8fd0\u884c\u7684\u7528\u4f8b\u7684\u65f6\u5019\u3002

    \u6253\u5f00\u5f00\u5173 -shuffle \u80fd\u591f\u6253\u4e71\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u7684\u987a\u5e8f\uff0c\u907f\u514d\u4e00\u4e2a\u6d4b\u8bd5\u4f9d\u8d56\u4e8e\u67d0\u4e9b\u4e0d\u7b26\u5408\u771f\u5b9e\u60c5\u51b5\u7684\u9884\u8bbe\uff0c\u6709\u52a9\u4e8e\u53ca\u65e9\u66b4\u6f0fbug\u3002

    "},{"location":"zh/#85","title":"\u4e0d\u4f7f\u7528\u8868\u9a71\u52a8\u7684\u6d4b\u8bd5 (#85)","text":"

    \u8868\u9a71\u52a8\u7684\u6d4b\u8bd5\u662f\u4e00\u79cd\u6709\u6548\u7684\u65b9\u5f0f,\u53ef\u4ee5\u5c06\u4e00\u7ec4\u76f8\u4f3c\u7684\u6d4b\u8bd5\u5206\u7ec4\u5728\u4e00\u8d77,\u4ee5\u907f\u514d\u4ee3\u7801\u91cd\u590d\u548c\u4f7f\u672a\u6765\u7684\u66f4\u65b0\u66f4\u5bb9\u6613\u5904\u7406\u3002

    "},{"location":"zh/#sleep-86","title":"\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u6267\u884csleep\u64cd\u4f5c (#86)","text":"

    \u4f7f\u7528\u540c\u6b65\u7684\u65b9\u5f0f\u3001\u907f\u514dsleep\uff0c\u6765\u5c3d\u91cf\u51cf\u5c11\u6d4b\u8bd5\u7684\u4e0d\u7a33\u5b9a\u6027\u548c\u63d0\u9ad8\u9c81\u68d2\u6027\u3002\u5982\u679c\u65e0\u6cd5\u4f7f\u7528\u540c\u6b65\u624b\u6bb5,\u53ef\u4ee5\u8003\u8651\u91cd\u8bd5\u7684\u65b9\u5f0f\u3002

    "},{"location":"zh/#time-api-87","title":"\u6ca1\u6709\u9ad8\u6548\u5730\u5904\u7406 time API (#87)","text":"

    \u7406\u89e3\u5982\u4f55\u5904\u7406\u4f7f\u7528 time API \u7684\u51fd\u6570\uff0c\u662f\u4f7f\u6d4b\u8bd5\u66f4\u52a0\u7a33\u5b9a\u7684\u53e6\u4e00\u79cd\u65b9\u5f0f\u3002\u60a8\u53ef\u4ee5\u4f7f\u7528\u6807\u51c6\u6280\u672f\uff0c\u4f8b\u5982\u5c06\u65f6\u95f4\u4f5c\u4e3a\u9690\u85cf\u4f9d\u8d56\u9879\u7684\u4e00\u90e8\u5206\u6765\u5904\u7406\uff0c\u6216\u8005\u8981\u6c42\u5ba2\u6237\u7aef\u63d0\u4f9b\u65f6\u95f4\u3002

    "},{"location":"zh/#httptest-iotest-88","title":"\u4e0d\u4f7f\u7528\u6d4b\u8bd5\u76f8\u5173\u7684\u5de5\u5177\u5305 (httptest \u548c iotest) (#88)","text":"

    \u8fd9\u4e2a httptest \u5305\u5bf9\u5904\u7406HTTP\u5e94\u7528\u7a0b\u5e8f\u5f88\u6709\u5e2e\u52a9\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u7ec4\u5b9e\u7528\u7a0b\u5e8f\u6765\u6d4b\u8bd5\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u3002

    \u8fd9\u4e2a iotest \u5305\u6709\u52a9\u4e8e\u7f16\u5199 io.Reader \u5e76\u6d4b\u8bd5\u5e94\u7528\u7a0b\u5e8f\u662f\u5426\u80fd\u591f\u5bb9\u5fcd\u9519\u8bef\u3002

    "},{"location":"zh/#89","title":"\u4e0d\u6b63\u786e\u7684\u57fa\u51c6\u6d4b\u8bd5 (#89)","text":"
    • \u4e0d\u8981\u91cd\u7f6e\u6216\u8005\u6682\u505ctimer

    \u4f7f\u7528 time \u65b9\u6cd5\u6765\u4fdd\u6301\u57fa\u51c6\u6d4b\u8bd5\u7684\u51c6\u786e\u6027\u3002

    • \u505a\u51fa\u9519\u8bef\u7684\u5fae\u57fa\u51c6\u6d4b\u8bd5\u5047\u8bbe

    \u589e\u52a0 benchtime \u6216\u8005\u4f7f\u7528 benchstat \u7b49\u5de5\u5177\u53ef\u4ee5\u6709\u52a9\u4e8e\u5fae\u57fa\u51c6\u6d4b\u8bd5\u3002

    \u5c0f\u5fc3\u5fae\u57fa\u51c6\u6d4b\u8bd5\u7684\u7ed3\u679c,\u5982\u679c\u6700\u7ec8\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u7cfb\u7edf\u4e0e\u8fd0\u884c\u5fae\u57fa\u51c6\u6d4b\u8bd5\u7684\u7cfb\u7edf\u4e0d\u540c\u3002

    • \u5bf9\u7f16\u8bd1\u671f\u4f18\u5316\u8981\u8db3\u591f\u5c0f\u5fc3

    \u786e\u4fdd\u6d4b\u8bd5\u51fd\u6570\u662f\u5426\u4f1a\u4ea7\u751f\u4e00\u4e9b\u526f\u4f5c\u7528\uff0c\u9632\u6b62\u7f16\u8bd1\u5668\u4f18\u5316\u6b3a\u9a97\u4f60\u5f97\u5230\u7684\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\u3002

    • \u88ab\u89c2\u5bdf\u8005\u6548\u5e94\u6240\u6b3a\u9a97

    \u4e3a\u4e86\u907f\u514d\u88ab\u89c2\u5bdf\u8005\u6548\u5e94\u6b3a\u9a97,\u5f3a\u5236\u91cd\u65b0\u521b\u5efaCPU\u5bc6\u96c6\u578b\u51fd\u6570\u4f7f\u7528\u7684\u6570\u636e\u3002

    "},{"location":"zh/#go-test-90","title":"\u6ca1\u6709\u53bb\u63a2\u7d22go test\u6240\u6709\u7684\u7279\u6027 (#90)","text":"
    • \u4ee3\u7801\u8986\u76d6\u7387

    \u4f7f\u7528 -coverprofile \u53c2\u6570\u53ef\u4ee5\u5feb\u901f\u67e5\u770b\u4ee3\u7801\u7684\u6d4b\u8bd5\u8986\u76d6\u60c5\u51b5\uff0c\u65b9\u4fbf\u5feb\u901f\u67e5\u770b\u54ea\u4e2a\u90e8\u5206\u9700\u8981\u66f4\u591a\u7684\u5173\u6ce8\u3002

    • \u5728\u4e00\u4e2a\u4e0d\u540c\u5305\u4e2d\u6267\u884c\u6d4b\u8bd5

    \u5355\u5143\u6d4b\u8bd5\u7ec4\u7ec7\u5230\u4e00\u4e2a\u72ec\u7acb\u7684\u5305\u4e2d\uff0c\u5bf9\u4e8e\u5bf9\u5916\u5c42\u66b4\u6f0f\u7684\u63a5\u53e3\uff0c\u9700\u8981\u5199\u4e00\u4e9b\u6d4b\u8bd5\u7528\u4f8b\u3002\u6d4b\u8bd5\u5e94\u8be5\u5173\u6ce8\u516c\u5f00\u7684\u884c\u4e3a\uff0c\u800c\u975e\u5185\u90e8\u5b9e\u73b0\u7ec6\u8282\u3002

    • Utility \u51fd\u6570

    \u5904\u7406\u9519\u8bef\u65f6,\u4f7f\u7528 *testing.T \u53d8\u91cf\u800c\u4e0d\u662f\u7ecf\u5178\u7684 if err != nil \u53ef\u4ee5\u8ba9\u4ee3\u7801\u66f4\u52a0\u7b80\u6d01\u6613\u8bfb\u3002

    • \u8bbe\u7f6e\u548c\u9500\u6bc1

    \u4f60\u53ef\u4ee5\u4f7f\u7528setup\u548cteardown\u51fd\u6570\u6765\u914d\u7f6e\u4e00\u4e2a\u590d\u6742\u7684\u73af\u5883\uff0c\u6bd4\u5982\u5728\u96c6\u6210\u6d4b\u8bd5\u7684\u60c5\u51b5\u4e0b\u3002

    "},{"location":"zh/#_11","title":"\u4e0d\u4f7f\u7528\u6a21\u7cca\u6d4b\u8bd5 (\u793e\u533a\u53cd\u9988\u9519\u8bef)","text":"

    \u6a21\u7cca\u6d4b\u8bd5\u662f\u4e00\u79cd\u9ad8\u6548\u7684\u7b56\u7565\uff0c\u4f7f\u7528\u5b83\u80fd\u68c0\u6d4b\u51fa\u968f\u673a\u3001\u610f\u6599\u5916\u7684\u548c\u4e00\u4e9b\u6076\u610f\u7684\u6570\u636e\u8f93\u5165\uff0c\u6765\u5b8c\u6210\u4e00\u4e9b\u590d\u6742\u7684\u64cd\u4f5c\u3002

    \u89c1: @jeromedoucet

    "},{"location":"zh/#_12","title":"\u4f18\u5316\u6280\u672f","text":""},{"location":"zh/#cpu-cache-91","title":"\u4e0d\u7406\u89e3CPU cache (#91)","text":"
    • CPU\u67b6\u6784

    \u7406\u89e3CPU\u7f13\u5b58\u7684\u4f7f\u7528\u5bf9\u4e8e\u4f18\u5316CPU\u5bc6\u96c6\u578b\u5e94\u7528\u5f88\u91cd\u8981\uff0c\u56e0\u4e3aL1\u7f13\u5b58\u6bd4\u4e3b\u5b58\u5feb50\u5230100\u500d\u3002

    • Cache line

    \u610f\u8bc6\u5230 cache line \u6982\u5ff5\u5bf9\u4e8e\u7406\u89e3\u5982\u4f55\u5728\u6570\u636e\u5bc6\u96c6\u578b\u5e94\u7528\u4e2d\u7ec4\u7ec7\u6570\u636e\u975e\u5e38\u5173\u952e\u3002CPU \u5e76\u4e0d\u662f\u4e00\u4e2a\u4e00\u4e2a\u5b57\u6765\u83b7\u53d6\u5185\u5b58\u3002\u76f8\u53cd\uff0c\u5b83\u901a\u5e38\u590d\u5236\u4e00\u4e2a 64\u5b57\u8282\u957f\u5ea6\u7684 cache line\u3002\u4e3a\u4e86\u83b7\u5f97\u6bcf\u4e2a cache line \u7684\u6700\u5927\u6548\u7528\uff0c\u9700\u8981\u5b9e\u65bd\u7a7a\u95f4\u5c40\u90e8\u6027\u3002

    • \u4e00\u7cfb\u5217struct\u5143\u7d20\u6784\u6210\u7684slice vs. \u591a\u4e2aslice\u5b57\u6bb5\u6784\u6210\u7684struct

    • \u6982\u7387\u6027\u7684\u95ee\u9898

    \u63d0\u9ad8CPU\u6267\u884c\u4ee3\u7801\u65f6\u7684\u53ef\u9884\u6d4b\u6027\uff0c\u4e5f\u662f\u4f18\u5316\u67d0\u4e9b\u51fd\u6570\u7684\u4e00\u4e2a\u6709\u6548\u65b9\u6cd5\u3002\u6bd4\u5982\uff0c\u56fa\u5b9a\u6b65\u957f\u6216\u8fde\u7eed\u8bbf\u95ee\u5bf9CPU\u6765\u8bf4\u662f\u53ef\u9884\u6d4b\u7684\uff0c\u4f46\u975e\u8fde\u7eed\u8bbf\u95ee\uff08\u4f8b\u5982\u94fe\u8868\uff09\u5c31\u662f\u4e0d\u53ef\u9884\u6d4b\u7684\u3002

    • cache\u653e\u7f6e\u7b56\u7565

    \u8981\u6ce8\u610f\u73b0\u4ee3\u7f13\u5b58\u662f\u5206\u533a\u7684\uff08set associative placement\uff0c\u7ec4\u76f8\u8fde\u6620\u5c04\uff09\uff0c\u8981\u6ce8\u610f\u907f\u514d\u4f7f\u7528 critical stride\uff0c\u8fd9\u79cd\u6b65\u957f\u60c5\u51b5\u4e0b\u53ea\u80fd\u5229\u7528 cache \u7684\u4e00\u5c0f\u90e8\u5206\u3002

    critical stride\uff0c\u8fd9\u79cd\u7c7b\u578b\u7684\u6b65\u957f\uff0c\u6307\u7684\u662f\u5185\u5b58\u8bbf\u95ee\u7684\u6b65\u957f\u521a\u597d\u7b49\u4e8e cache \u5927\u5c0f\u3002\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ea\u6709\u5c11\u90e8\u5206 cacheline \u88ab\u5229\u7528\u3002

    "},{"location":"zh/#false-sharing-92","title":"\u5199\u7684\u5e76\u53d1\u5904\u7406\u903b\u8f91\u4f1a\u5bfc\u81f4false sharing (#92)","text":"

    \u4e86\u89e3 CPU \u7f13\u5b58\u7684\u8f83\u4f4e\u5c42\u7684 L1\u3001L2 cache \u4e0d\u4f1a\u5728\u6240\u6709\u6838\u95f4\u5171\u4eab\uff0c\u7f16\u5199\u5e76\u53d1\u5904\u7406\u903b\u8f91\u65f6\u80fd\u907f\u514d\u5199\u51fa\u4e00\u4e9b\u964d\u4f4e\u6027\u80fd\u7684\u95ee\u9898\uff0c\u6bd4\u5982\u4f2a\u5171\u4eab\uff08false sharing\uff09\u3002\u5185\u5b58\u5171\u4eab\u53ea\u662f\u4e00\u79cd\u5047\u8c61\u3002

    "},{"location":"zh/#93","title":"\u6ca1\u6709\u8003\u8651\u6307\u4ee4\u7ea7\u7684\u5e76\u884c (#93)","text":"

    \u4f7f\u7528\u6307\u4ee4\u7ea7\u5e76\u884c\uff08ILP\uff09\u4f18\u5316\u4ee3\u7801\u7684\u7279\u5b9a\u90e8\u5206\uff0c\u4ee5\u5141\u8bb8CPU\u5c3d\u53ef\u80fd\u6267\u884c\u66f4\u591a\u53ef\u4ee5\u5e76\u884c\u6267\u884c\u7684\u6307\u4ee4\u3002\u8bc6\u522b\u6307\u4ee4\u7684\u6570\u636e\u4f9d\u8d56\u95ee\u9898\uff08data hazards\uff09\u662f\u4e3b\u8981\u6b65\u9aa4\u4e4b\u4e00\u3002

    "},{"location":"zh/#94","title":"\u4e0d\u4e86\u89e3\u6570\u636e\u5bf9\u9f50 (#94)","text":"

    \u8bb0\u4f4fGo\u4e2d\u57fa\u672c\u7c7b\u578b\u4e0e\u5176\u81ea\u8eab\u5927\u5c0f\u5bf9\u9f50\uff0c\u4f8b\u5982\uff0c\u6309\u964d\u5e8f\u4ece\u5927\u5230\u5c0f\u91cd\u65b0\u7ec4\u7ec7\u7ed3\u6784\u4f53\u7684\u5b57\u6bb5\u53ef\u4ee5\u5f62\u6210\u66f4\u7d27\u51d1\u7684\u7ed3\u6784\u4f53\uff08\u51cf\u5c11\u5185\u5b58\u5206\u914d\uff0c\u66f4\u597d\u7684\u7a7a\u95f4\u5c40\u90e8\u6027\uff09\uff0c\u8fd9\u6709\u52a9\u4e8e\u907f\u514d\u4e00\u4e9b\u5e38\u89c1\u7684\u9519\u8bef\u3002

    "},{"location":"zh/#stack-vs-heap-95","title":"\u4e0d\u4e86\u89e3 stack vs. heap (#95)","text":"

    \u4e86\u89e3\u5806\u548c\u6808\u4e4b\u95f4\u7684\u533a\u522b\u662f\u5f00\u53d1\u4eba\u5458\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u7279\u522b\u662f\u8981\u53bb\u4f18\u5316\u4e00\u4e2aGo\u7a0b\u5e8f\u65f6\u3002\u6808\u5206\u914d\u7684\u5f00\u9500\u51e0\u4e4e\u4e3a\u96f6\uff0c\u800c\u5806\u5206\u914d\u5219\u8f83\u6162\uff0c\u5e76\u4e14\u4f9d\u8d56GC\u6765\u6e05\u7406\u5185\u5b58\u3002

    "},{"location":"zh/#api-compiler-optimizations-and-syncpool-96","title":"\u4e0d\u77e5\u9053\u5982\u4f55\u51cf\u5c11\u5185\u5b58\u5206\u914d\u6b21\u6570 (API\u8c03\u6574, compiler optimizations, and sync.Pool) (#96)","text":"

    \u51cf\u5c11\u5185\u5b58\u5206\u914d\u6b21\u6570\u4e5f\u662f\u4f18\u5316Go\u5e94\u7528\u7684\u4e00\u4e2a\u91cd\u8981\u65b9\u9762\u3002\u8fd9\u53ef\u4ee5\u901a\u8fc7\u4e0d\u540c\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0,\u6bd4\u5982\u4ed4\u7ec6\u8bbe\u8ba1API\u6765\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u62f7\u8d1d\uff0c\u4ee5\u53ca\u4f7f\u7528 sync.Pool \u6765\u5bf9\u5f85\u5206\u914d\u5bf9\u8c61\u8fdb\u884c\u6c60\u5316\u3002

    "},{"location":"zh/#97","title":"\u4e0d\u6ce8\u610f\u4f7f\u7528\u5185\u8054 (#97)","text":"

    \u4f7f\u7528\u5feb\u901f\u8def\u5f84\u7684\u5185\u8054\u6280\u672f\u6765\u66f4\u52a0\u6709\u6548\u5730\u51cf\u5c11\u8c03\u7528\u51fd\u6570\u7684\u644a\u9500\u65f6\u95f4\u3002

    "},{"location":"zh/#go-98","title":"\u4e0d\u4f7f\u7528Go\u95ee\u9898\u8bca\u65ad\u5de5\u5177 (#98)","text":"

    \u4e86\u89e3Go profilng\u5de5\u5177\u3001\u6267\u884c\u65f6tracer\u6765\u8f85\u52a9\u5224\u65ad\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\u662f\u5426\u6b63\u5e38\uff0c\u4ee5\u53ca\u5217\u51fa\u9700\u8981\u4f18\u5316\u7684\u90e8\u5206\u3002

    "},{"location":"zh/#gc-99","title":"\u4e0d\u7406\u89e3GC\u662f\u5982\u4f55\u5de5\u4f5c\u7684 (#99)","text":"

    \u7406\u89e3\u5982\u4f55\u8c03\u4f18GC\u80fd\u591f\u5e26\u6765\u5f88\u591a\u6536\u76ca\uff0c\u4f8b\u5982\u6709\u52a9\u4e8e\u66f4\u9ad8\u6548\u5730\u5904\u7406\u7a81\u589e\u7684\u8d1f\u8f7d\u3002

    "},{"location":"zh/#dockerk8sgo-100","title":"\u4e0d\u4e86\u89e3Docker\u6216\u8005K8S\u5bf9\u8fd0\u884c\u7684Go\u5e94\u7528\u7684\u6027\u80fd\u5f71\u54cd (#100)","text":"

    \u4e3a\u4e86\u907f\u514dCPU throttling\uff08CPU\u9650\u9891\uff09\u95ee\u9898\uff0c\u5f53\u6211\u4eec\u5728Docker\u548cKubernetes\u90e8\u7f72\u5e94\u7528\u65f6\uff0c\u8981\u77e5\u9053Go\u8bed\u8a00\u5bf9CFS(\u5b8c\u5168\u516c\u5e73\u8c03\u5ea6\u5668)\u65e0\u611f\u77e5\u3002

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Common Go Mistakes","text":"

    This page is a summary of the mistakes in the 100 Go Mistakes and How to Avoid Them book. Meanwhile, it's also open to the community. If you believe that a common Go mistake should be added, please create an issue.

    Beta

    You're viewing a beta version enriched with significantly more content. However, this version is not yet complete, and I'm looking for volunteers to help me summarize the remaining mistakes (GitHub issue #43).

    Progress:

    "},{"location":"#code-and-project-organization","title":"Code and Project Organization","text":""},{"location":"#unintended-variable-shadowing-1","title":"Unintended variable shadowing (#1)","text":"TL;DR

    Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.

    Variable shadowing occurs when a variable name is redeclared in an inner block, but this practice is prone to mistakes. Imposing a rule to forbid shadowed variables depends on personal taste. For example, sometimes it can be convenient to reuse an existing variable name like err for errors. Yet, in general, we should remain cautious because we now know that we can face a scenario where the code compiles, but the variable that receives the value is not the one expected.

    Source code

    "},{"location":"#unnecessary-nested-code-2","title":"Unnecessary nested code (#2)","text":"TL;DR

    Avoiding nested levels and keeping the happy path aligned on the left makes building a mental code model easier.

    In general, the more nested levels a function requires, the more complex it is to read and understand. Let\u2019s see some different applications of this rule to optimize our code for readability:

    • When an if block returns, we should omit the else block in all cases. For example, we shouldn\u2019t write:
    if foo() {\n    // ...\n    return true\n} else {\n    // ...\n}\n

    Instead, we omit the else block like this:

    if foo() {\n    // ...\n    return true\n}\n// ...\n
    • We can also follow this logic with a non-happy path:
    if s != \"\" {\n    // ...\n} else {\n    return errors.New(\"empty string\")\n}\n

    Here, an empty s represents the non-happy path. Hence, we should flip the condition like so:

    if s == \"\" {\n    return errors.New(\"empty string\")\n}\n// ...\n

    Writing readable code is an important challenge for every developer. Striving to reduce the number of nested blocks, aligning the happy path on the left, and returning as early as possible are concrete means to improve our code\u2019s readability.

    Source code

    "},{"location":"#misusing-init-functions-3","title":"Misusing init functions (#3)","text":"TL;DR

    When initializing variables, remember that init functions have limited error handling and make state handling and testing more complex. In most cases, initializations should be handled as specific functions.

    An init function is a function used to initialize the state of an application. It takes no arguments and returns no result (a func() function). When a package is initialized, all the constant and variable declarations in the package are evaluated. Then, the init functions are executed.

    Init functions can lead to some issues:

    • They can limit error management.
    • They can complicate how to implement tests (for example, an external dependency must be set up, which may not be necessary for the scope of unit tests).
    • If the initialization requires us to set a state, that has to be done through global variables.

    We should be cautious with init functions. They can be helpful in some situations, however, such as defining static configuration. Otherwise, and in most cases, we should handle initializations through ad hoc functions.

    Source code

    "},{"location":"#overusing-getters-and-setters-4","title":"Overusing getters and setters (#4)","text":"TL;DR

    Forcing the use of getters and setters isn\u2019t idiomatic in Go. Being pragmatic and finding the right balance between efficiency and blindly following certain idioms should be the way to go.

    Data encapsulation refers to hiding the values or state of an object. Getters and setters are means to enable encapsulation by providing exported methods on top of unexported object fields.

    In Go, there is no automatic support for getters and setters as we see in some languages. It is also considered neither mandatory nor idiomatic to use getters and setters to access struct fields. We shouldn\u2019t overwhelm our code with getters and setters on structs if they don\u2019t bring any value. We should be pragmatic and strive to find the right balance between efficiency and following idioms that are sometimes considered indisputable in other programming paradigms.

    Remember that Go is a unique language designed for many characteristics, including simplicity. However, if we find a need for getters and setters or, as mentioned, foresee a future need while guaranteeing forward compatibility, there\u2019s nothing wrong with using them.

    "},{"location":"#interface-pollution-5","title":"Interface pollution (#5)","text":"TL;DR

    Abstractions should be discovered, not created. To prevent unnecessary complexity, create an interface when you need it and not when you foresee needing it, or if you can at least prove the abstraction to be a valid one.

    An interface provides a way to specify the behavior of an object. We use interfaces to create common abstractions that multiple objects can implement. What makes Go interfaces so different is that they are satisfied implicitly. There is no explicit keyword like implements to mark that an object X implements interface Y.

    In general, we can define three main use cases where interfaces are generally considered as bringing value: factoring out a common behavior, creating some decoupling, and restricting a type to a certain behavior. Yet, this list isn't exhaustive and will also depend on the context we face.

    In many occasions, interfaces are made to create abstractions. And the main caveat when programming meets abstractions is remembering that abstractions should be discovered, not created. What does this mean? It means we shouldn\u2019t start creating abstractions in our code if there is no immediate reason to do so. We shouldn\u2019t design with interfaces but wait for a concrete need. Said differently, we should create an interface when we need it, not when we foresee that we could need it. What\u2019s the main problem if we overuse interfaces? The answer is that they make the code flow more complex. Adding a useless level of indirection doesn\u2019t bring any value; it creates a worthless abstraction making the code more difficult to read, understand, and reason about. If we don\u2019t have a strong reason for adding an interface and it\u2019s unclear how an interface makes a code better, we should challenge this interface\u2019s purpose. Why not call the implementation directly?

    We should be cautious when creating abstractions in our code (abstractions should be discovered, not created). It\u2019s common for us, software developers, to overengineer our code by trying to guess what the perfect level of abstraction is, based on what we think we might need later. This process should be avoided because, in most cases, it pollutes our code with unnecessary abstractions, making it more complex to read.

    Rob Pike

    Don\u2019t design with interfaces, discover them.

    Let\u2019s not try to solve a problem abstractly but solve what has to be solved now. Last, but not least, if it\u2019s unclear how an interface makes the code better, we should probably consider removing it to make our code simpler.

    Source code

    "},{"location":"#interface-on-the-producer-side-6","title":"Interface on the producer side (#6)","text":"TL;DR

    Keeping interfaces on the client side avoids unnecessary abstractions.

    Interfaces are satisfied implicitly in Go, which tends to be a gamechanger compared to languages with an explicit implementation. In most cases, the approach to follow is similar to what we described in the previous section: abstractions should be discovered, not created. This means that it\u2019s not up to the producer to force a given abstraction for all the clients. Instead, it\u2019s up to the client to decide whether it needs some form of abstraction and then determine the best abstraction level for its needs.

    An interface should live on the consumer side in most cases. However, in particular contexts (for example, when we know\u2014not foresee\u2014that an abstraction will be helpful for consumers), we may want to have it on the producer side. If we do, we should strive to keep it as minimal as possible, increasing its reusability potential and making it more easily composable.

    Source code

    "},{"location":"#returning-interfaces-7","title":"Returning interfaces (#7)","text":"TL;DR

    To prevent being restricted in terms of flexibility, a function shouldn\u2019t return interfaces but concrete implementations in most cases. Conversely, a function should accept interfaces whenever possible.

    In most cases, we shouldn\u2019t return interfaces but concrete implementations. Otherwise, it can make our design more complex due to package dependencies and can restrict flexibility because all the clients would have to rely on the same abstraction. Again, the conclusion is similar to the previous sections: if we know (not foresee) that an abstraction will be helpful for clients, we can consider returning an interface. Otherwise, we shouldn\u2019t force abstractions; they should be discovered by clients. If a client needs to abstract an implementation for whatever reason, it can still do that on the client\u2019s side.

    "},{"location":"#any-says-nothing-8","title":"any says nothing (#8)","text":"TL;DR

    Only use any if you need to accept or return any possible type, such as json.Marshal. Otherwise, any doesn\u2019t provide meaningful information and can lead to compile-time issues by allowing a caller to call methods with any data type.

    The any type can be helpful if there is a genuine need for accepting or returning any possible type (for instance, when it comes to marshaling or formatting). In general, we should avoid overgeneralizing the code we write at all costs. Perhaps a little bit of duplicated code might occasionally be better if it improves other aspects such as code expressiveness.

    Source code

    "},{"location":"#being-confused-about-when-to-use-generics-9","title":"Being confused about when to use generics (#9)","text":"TL;DR

    Relying on generics and type parameters can prevent writing boilerplate code to factor out elements or behaviors. However, do not use type parameters prematurely, but only when you see a concrete need for them. Otherwise, they introduce unnecessary abstractions and complexity.

    Read the full section here.

    Source code

    "},{"location":"#not-being-aware-of-the-possible-problems-with-type-embedding-10","title":"Not being aware of the possible problems with type embedding (#10)","text":"TL;DR

    Using type embedding can also help avoid boilerplate code; however, ensure that doing so doesn\u2019t lead to visibility issues where some fields should have remained hidden.

    When creating a struct, Go offers the option to embed types. But this can sometimes lead to unexpected behaviors if we don\u2019t understand all the implications of type embedding. Throughout this section, we look at how to embed types, what these bring, and the possible issues.

    In Go, a struct field is called embedded if it\u2019s declared without a name. For example,

    type Foo struct {\n    Bar // Embedded field\n}\n\ntype Bar struct {\n    Baz int\n}\n

    In the Foo struct, the Bar type is declared without an associated name; hence, it\u2019s an embedded field.

    We use embedding to promote the fields and methods of an embedded type. Because Bar contains a Baz field, this field is promoted to Foo. Therefore, Baz becomes available from Foo.

    What can we say about type embedding? First, let\u2019s note that it\u2019s rarely a necessity, and it means that whatever the use case, we can probably solve it as well without type embedding. Type embedding is mainly used for convenience: in most cases, to promote behaviors.

    If we decide to use type embedding, we need to keep two main constraints in mind:

    • It shouldn\u2019t be used solely as some syntactic sugar to simplify accessing a field (such as Foo.Baz() instead of Foo.Bar.Baz()). If this is the only rationale, let\u2019s not embed the inner type and use a field instead.
    • It shouldn\u2019t promote data (fields) or a behavior (methods) we want to hide from the outside: for example, if it allows clients to access a locking behavior that should remain private to the struct.

    Using type embedding consciously by keeping these constraints in mind can help avoid boilerplate code with additional forwarding methods. However, let\u2019s make sure we don\u2019t do it solely for cosmetics and not promote elements that should remain hidden.

    Source code

    "},{"location":"#not-using-the-functional-options-pattern-11","title":"Not using the functional options pattern (#11)","text":"TL;DR

    To handle options conveniently and in an API-friendly manner, use the functional options pattern.

    Although there are different implementations with minor variations, the main idea is as follows:

    • An unexported struct holds the configuration: options.
    • Each option is a function that returns the same type: type Option func(options *options) error. For example, WithPort accepts an int argument that represents the port and returns an Option type that represents how to update the options struct.

    type options struct {\n  port *int\n}\n\ntype Option func(options *options) error\n\nfunc WithPort(port int) Option {\n  return func(options *options) error {\n    if port < 0 {\n    return errors.New(\"port should be positive\")\n  }\n  options.port = &port\n  return nil\n  }\n}\n\nfunc NewServer(addr string, opts ...Option) ( *http.Server, error) {\n  var options options\n  for _, opt := range opts {\n    err := opt(&options)\n    if err != nil {\n      return nil, err\n    }\n  }\n\n  // At this stage, the options struct is built and contains the config\n  // Therefore, we can implement our logic related to port configuration\n  var port int\n  if options.port == nil {\n    port = defaultHTTPPort\n  } else {\n      if *options.port == 0 {\n      port = randomPort()\n    } else {\n      port = *options.port\n    }\n  }\n\n  // ...\n}\n

    The functional options pattern provides a handy and API-friendly way to handle options. Although the builder pattern can be a valid option, it has some minor downsides (having to pass a config struct that can be empty or a less handy way to handle error management) that tend to make the functional options pattern the idiomatic way to deal with these kind of problems in Go.

    Source code

    "},{"location":"#project-misorganization-project-structure-and-package-organization-12","title":"Project misorganization (project structure and package organization) (#12)","text":"

    Regarding the overall organization, there are different schools of thought. For example, should we organize our application by context or by layer? It depends on our preferences. We may favor grouping code per context (such as the customer context, the contract context, etc.), or we may favor following hexagonal architecture principles and group per technical layer. If the decision we make fits our use case, it cannot be a wrong decision, as long as we remain consistent with it.

    Regarding packages, there are multiple best practices that we should follow. First, we should avoid premature packaging because it might cause us to overcomplicate a project. Sometimes, it\u2019s better to use a simple organization and have our project evolve when we understand what it contains rather than forcing ourselves to make the perfect structure up front. Granularity is another essential thing to consider. We should avoid having dozens of nano packages containing only one or two files. If we do, it\u2019s because we have probably missed some logical connections across these packages, making our project harder for readers to understand. Conversely, we should also avoid huge packages that dilute the meaning of a package name.

    Package naming should also be considered with care. As we all know (as developers), naming is hard. To help clients understand a Go project, we should name our packages after what they provide, not what they contain. Also, naming should be meaningful. Therefore, a package name should be short, concise, expressive, and, by convention, a single lowercase word.

    Regarding what to export, the rule is pretty straightforward. We should minimize what should be exported as much as possible to reduce the coupling between packages and keep unnecessary exported elements hidden. If we are unsure whether to export an element or not, we should default to not exporting it. Later, if we discover that we need to export it, we can adjust our code. Let\u2019s also keep in mind some exceptions, such as making fields exported so that a struct can be unmarshaled with encoding/json.

    Organizing a project isn\u2019t straightforward, but following these rules should help make it easier to maintain. However, remember that consistency is also vital to ease maintainability. Therefore, let\u2019s make sure that we keep things as consistent as possible within a codebase.

    Note

    In 2023, the Go team has published an official guideline for organizing / structuring a Go project: go.dev/doc/modules/layout

    "},{"location":"#creating-utility-packages-13","title":"Creating utility packages (#13)","text":"TL;DR

    Naming is a critical piece of application design. Creating packages such as common, util, and shared doesn\u2019t bring much value for the reader. Refactor such packages into meaningful and specific package names.

    Also, bear in mind that naming a package after what it provides and not what it contains can be an efficient way to increase its expressiveness.

    Source code

    "},{"location":"#ignoring-package-name-collisions-14","title":"Ignoring package name collisions (#14)","text":"TL;DR

    To avoid naming collisions between variables and packages, leading to confusion or perhaps even bugs, use unique names for each one. If this isn\u2019t feasible, use an import alias to change the qualifier to differentiate the package name from the variable name, or think of a better name.

    Package collisions occur when a variable name collides with an existing package name, preventing the package from being reused. We should prevent variable name collisions to avoid ambiguity. If we face a collision, we should either find another meaningful name or use an import alias.

    "},{"location":"#missing-code-documentation-15","title":"Missing code documentation (#15)","text":"TL;DR

    To help clients and maintainers understand your code\u2019s purpose, document exported elements.

    Documentation is an important aspect of coding. It simplifies how clients can consume an API but can also help in maintaining a project. In Go, we should follow some rules to make our code idiomatic:

    First, every exported element must be documented. Whether it is a structure, an interface, a function, or something else, if it\u2019s exported, it must be documented. The convention is to add comments, starting with the name of the exported element.

    As a convention, each comment should be a complete sentence that ends with punctuation. Also bear in mind that when we document a function (or a method), we should highlight what the function intends to do, not how it does it; this belongs to the core of a function and comments, not documentation. Furthermore, the documentation should ideally provide enough information that the consumer does not have to look at our code to understand how to use an exported element.

    When it comes to documenting a variable or a constant, we might be interested in conveying two aspects: its purpose and its content. The former should live as code documentation to be useful for external clients. The latter, though, shouldn\u2019t necessarily be public.

    To help clients and maintainers understand a package\u2019s scope, we should also document each package. The convention is to start the comment with // Package followed by the package name. The first line of a package comment should be concise. That\u2019s because it will appear in the package. Then, we can provide all the information we need in the following lines.

    Documenting our code shouldn\u2019t be a constraint. We should take the opportunity to make sure it helps clients and maintainers to understand the purpose of our code.

    "},{"location":"#not-using-linters-16","title":"Not using linters (#16)","text":"TL;DR

    To improve code quality and consistency, use linters and formatters.

    A linter is an automatic tool to analyze code and catch errors. The scope of this section isn\u2019t to give an exhaustive list of the existing linters; otherwise, it will become deprecated pretty quickly. But we should understand and remember why linters are essential for most Go projects.

    However, if you\u2019re not a regular user of linters, here is a list that you may want to use daily:

    • https://golang.org/cmd/vet\u2014A standard Go analyzer
    • https://github.com/kisielk/errcheck\u2014An error checker
    • https://github.com/fzipp/gocyclo\u2014A cyclomatic complexity analyzer
    • https://github.com/jgautheron/goconst\u2014A repeated string constants analyzer

    Besides linters, we should also use code formatters to fix code style. Here is a list of some code formatters for you to try:

    • https://golang.org/cmd/gofmt\u2014A standard Go code formatter
    • https://godoc.org/golang.org/x/tools/cmd/goimports\u2014A standard Go imports formatter

    Meanwhile, we should also look at golangci-lint (https://github.com/golangci/golangci-lint). It\u2019s a linting tool that provides a facade on top of many useful linters and formatters. Also, it allows running the linters in parallel to improve analysis speed, which is quite handy.

    Linters and formatters are a powerful way to improve the quality and consistency of our codebase. Let\u2019s take the time to understand which one we should use and make sure we automate their execution (such as a CI or Git precommit hook).

    "},{"location":"#data-types","title":"Data Types","text":""},{"location":"#creating-confusion-with-octal-literals-17","title":"Creating confusion with octal literals (#17)","text":"TL;DR

    When reading existing code, bear in mind that integer literals starting with 0 are octal numbers. Also, to improve readability, make octal integers explicit by prefixing them with 0o.

    Octal numbers start with a 0 (e.g., 010 is equal to 8 in base 10). To improve readability and avoid potential mistakes for future code readers, we should make octal numbers explicit using the 0o prefix (e.g., 0o10).

    We should also note the other integer literal representations:

    • Binary\u2014Uses a 0b or 0B prefix (for example, 0b100 is equal to 4 in base 10)
    • Hexadecimal\u2014Uses an 0x or 0X prefix (for example, 0xF is equal to 15 in base 10)
    • Imaginary\u2014Uses an i suffix (for example, 3i)

    We can also use an underscore character (_) as a separator for readability. For example, we can write 1 billion this way: 1_000_000_000. We can also use the underscore character with other representations (for example, 0b00_00_01).

    Source code

    "},{"location":"#neglecting-integer-overflows-18","title":"Neglecting integer overflows (#18)","text":"TL;DR

    Because integer overflows and underflows are handled silently in Go, you can implement your own functions to catch them.

    In Go, an integer overflow that can be detected at compile time generates a compilation error. For example,

    var counter int32 = math.MaxInt32 + 1\n
    constant 2147483648 overflows int32\n

    However, at run time, an integer overflow or underflow is silent; this does not lead to an application panic. It is essential to keep this behavior in mind, because it can lead to sneaky bugs (for example, an integer increment or addition of positive integers that leads to a negative result).

    Source code

    "},{"location":"#not-understanding-floating-points-19","title":"Not understanding floating-points (#19)","text":"TL;DR

    Making floating-point comparisons within a given delta can ensure that your code is portable. When performing addition or subtraction, group the operations with a similar order of magnitude to favor accuracy. Also, perform multiplication and division before addition and subtraction.

    In Go, there are two floating-point types (if we omit imaginary numbers): float32 and float64. The concept of a floating point was invented to solve the major problem with integers: their inability to represent fractional values. To avoid bad surprises, we need to know that floating-point arithmetic is an approximation of real arithmetic.

    For that, we\u2019ll look at a multiplication example:

    var n float32 = 1.0001\nfmt.Println(n * n)\n

    We may expect this code to print the result of 1.0001 * 1.0001 = 1.00020001, right? However, running it on most x86 processors prints 1.0002, instead.

    Because Go\u2019s float32 and float64 types are approximations, we have to bear a few rules in mind:

    • When comparing two floating-point numbers, check that their difference is within an acceptable range.
    • When performing additions or subtractions, group operations with a similar order of magnitude for better accuracy.
    • To favor accuracy, if a sequence of operations requires addition, subtraction, multiplication, or division, perform the multiplication and division operations first.

    Source code

    "},{"location":"#not-understanding-slice-length-and-capacity-20","title":"Not understanding slice length and capacity (#20)","text":"TL;DR

    Understanding the difference between slice length and capacity should be part of a Go developer\u2019s core knowledge. The slice length is the number of available elements in the slice, whereas the slice capacity is the number of elements in the backing array.

    Read the full section here.

    Source code

    "},{"location":"#inefficient-slice-initialization-21","title":"Inefficient slice initialization (#21)","text":"TL;DR

    When creating a slice, initialize it with a given length or capacity if its length is already known. This reduces the number of allocations and improves performance.

    While initializing a slice using make, we can provide a length and an optional capacity. Forgetting to pass an appropriate value for both of these parameters when it makes sense is a widespread mistake. Indeed, it can lead to multiple copies and additional effort for the GC to clean the temporary backing arrays. Performance-wise, there\u2019s no good reason not to give the Go runtime a helping hand.

    Our options are to allocate a slice with either a given capacity or a given length. Of these two solutions, we have seen that the second tends to be slightly faster. But using a given capacity and append can be easier to implement and read in some contexts.

    Source code

    "},{"location":"#being-confused-about-nil-vs-empty-slice-22","title":"Being confused about nil vs. empty slice (#22)","text":"TL;DR

    To prevent common confusions such as when using the encoding/json or the reflect package, you need to understand the difference between nil and empty slices. Both are zero-length, zero-capacity slices, but only a nil slice doesn\u2019t require allocation.

    In Go, there is a distinction between nil and empty slices. A nil slice is equals to nil, whereas an empty slice has a length of zero. A nil slice is empty, but an empty slice isn\u2019t necessarily nil. Meanwhile, a nil slice doesn\u2019t require any allocation. We have seen throughout this section how to initialize a slice depending on the context by using

    • var s []string if we aren\u2019t sure about the final length and the slice can be empty
    • []string(nil) as syntactic sugar to create a nil and empty slice
    • make([]string, length) if the future length is known

    The last option, []string{}, should be avoided if we initialize the slice without elements. Finally, let\u2019s check whether the libraries we use make the distinctions between nil and empty slices to prevent unexpected behaviors.

    Source code

    "},{"location":"#not-properly-checking-if-a-slice-is-empty-23","title":"Not properly checking if a slice is empty (#23)","text":"TL;DR

    To check if a slice doesn\u2019t contain any element, check its length. This check works regardless of whether the slice is nil or empty. The same goes for maps. To design unambiguous APIs, you shouldn\u2019t distinguish between nil and empty slices.

    To determine whether a slice has elements, we can either do it by checking if the slice is nil or if its length is equal to 0. Checking the length is the best option to follow as it will cover both if the slice is empty or if the slice is nil.

    Meanwhile, when designing interfaces, we should avoid distinguishing nil and empty slices, which leads to subtle programming errors. When returning slices, it should make neither a semantic nor a technical difference if we return a nil or empty slice. Both should mean the same thing for the callers. This principle is the same with maps. To check if a map is empty, check its length, not whether it\u2019s nil.

    Source code

    "},{"location":"#not-making-slice-copies-correctly-24","title":"Not making slice copies correctly (#24)","text":"TL;DR

    To copy one slice to another using the copy built-in function, remember that the number of copied elements corresponds to the minimum between the two slice\u2019s lengths.

    Copying elements from one slice to another is a reasonably frequent operation. When using copy, we must recall that the number of elements copied to the destination corresponds to the minimum between the two slices\u2019 lengths. Also bear in mind that other alternatives exist to copy a slice, so we shouldn\u2019t be surprised if we find them in a codebase.

    Source code

    "},{"location":"#unexpected-side-effects-using-slice-append-25","title":"Unexpected side effects using slice append (#25)","text":"TL;DR

    Using copy or the full slice expression is a way to prevent append from creating conflicts if two different functions use slices backed by the same array. However, only a slice copy prevents memory leaks if you want to shrink a large slice.

    When using slicing, we must remember that we can face a situation leading to unintended side effects. If the resulting slice has a length smaller than its capacity, append can mutate the original slice. If we want to restrict the range of possible side effects, we can use either a slice copy or the full slice expression, which prevents us from doing a copy.

    Note

    s[low:high:max] (full slice expression): This statement creates a slice similar to the one created with s[low:high], except that the resulting slice\u2019s capacity is equal to max - low.

    Source code

    "},{"location":"#slices-and-memory-leaks-26","title":"Slices and memory leaks (#26)","text":"TL;DR

    Working with a slice of pointers or structs with pointer fields, you can avoid memory leaks by marking as nil the elements excluded by a slicing operation.

    "},{"location":"#leaking-capacity","title":"Leaking capacity","text":"

    Remember that slicing a large slice or array can lead to potential high memory consumption. The remaining space won\u2019t be reclaimed by the GC, and we can keep a large backing array despite using only a few elements. Using a slice copy is the solution to prevent such a case.

    Source code

    "},{"location":"#slice-and-pointers","title":"Slice and pointers","text":"

    When we use the slicing operation with pointers or structs with pointer fields, we need to know that the GC won\u2019t reclaim these elements. In that case, the two options are to either perform a copy or explicitly mark the remaining elements or their fields to nil.

    Source code

    "},{"location":"#inefficient-map-initialization-27","title":"Inefficient map initialization (#27)","text":"TL;DR

    When creating a map, initialize it with a given length if its length is already known. This reduces the number of allocations and improves performance.

    A map provides an unordered collection of key-value pairs in which all the keys are distinct. In Go, a map is based on the hash table data structure. Internally, a hash table is an array of buckets, and each bucket is a pointer to an array of key-value pairs.

    If we know up front the number of elements a map will contain, we should create it by providing an initial size. Doing this avoids potential map growth, which is quite heavy computation-wise because it requires reallocating enough space and rebalancing all the elements.

    Source code

    "},{"location":"#maps-and-memory-leaks-28","title":"Maps and memory leaks (#28)","text":"TL;DR

    A map can always grow in memory, but it never shrinks. Hence, if it leads to some memory issues, you can try different options, such as forcing Go to recreate the map or using pointers.

    Read the full section here.

    Source code

    "},{"location":"#comparing-values-incorrectly-29","title":"Comparing values incorrectly (#29)","text":"TL;DR

    To compare types in Go, you can use the == and != operators if two types are comparable: Booleans, numerals, strings, pointers, channels, and structs are composed entirely of comparable types. Otherwise, you can either use reflect.DeepEqual and pay the price of reflection or use custom implementations and libraries.

    It\u2019s essential to understand how to use == and != to make comparisons effectively. We can use these operators on operands that are comparable:

    • Booleans\u2014Compare whether two Booleans are equal.
    • Numerics (int, float, and complex types)\u2014Compare whether two numerics are equal.
    • Strings\u2014Compare whether two strings are equal.
    • Channels\u2014Compare whether two channels were created by the same call to make or if both are nil.
    • Interfaces\u2014Compare whether two interfaces have identical dynamic types and equal dynamic values or if both are nil.
    • Pointers\u2014Compare whether two pointers point to the same value in memory or if both are nil.
    • Structs and arrays\u2014Compare whether they are composed of similar types.
    Note

    We can also use the ?, >=, <, and > operators with numeric types to compare values and with strings to compare their lexical order.

    If operands are not comparable (e.g., slices and maps), we have to use other options such as reflection. Reflection is a form of metaprogramming, and it refers to the ability of an application to introspect and modify its structure and behavior. For example, in Go, we can use reflect.DeepEqual. This function reports whether two elements are deeply equal by recursively traversing two values. The elements it accepts are basic types plus arrays, structs, slices, maps, pointers, interfaces, and functions. Yet, the main catch is the performance penalty.

    If performance is crucial at run time, implementing our custom method might be the best solution. One additional note: we must remember that the standard library has some existing comparison methods. For example, we can use the optimized bytes.Compare function to compare two slices of bytes. Before implementing a custom method, we need to make sure we don\u2019t reinvent the wheel.

    Source code

    "},{"location":"#control-structures","title":"Control Structures","text":""},{"location":"#ignoring-that-elements-are-copied-in-range-loops-30","title":"Ignoring that elements are copied in range loops (#30)","text":"TL;DR

    The value element in a range loop is a copy. Therefore, to mutate a struct, for example, access it via its index or via a classic for loop (unless the element or the field you want to modify is a pointer).

    A range loop allows iterating over different data structures:

    • String
    • Array
    • Pointer to an array
    • Slice
    • Map
    • Receiving channel

    Compared to a classic for loop, a range loop is a convenient way to iterate over all the elements of one of these data structures, thanks to its concise syntax.

    Yet, we should remember that the value element in a range loop is a copy. Therefore, if the value is a struct we need to mutate, we will only update the copy, not the element itself, unless the value or field we modify is a pointer. The favored options are to access the element via the index using a range loop or a classic for loop.

    Source code

    "},{"location":"#ignoring-how-arguments-are-evaluated-in-range-loops-channels-and-arrays-31","title":"Ignoring how arguments are evaluated in range loops (channels and arrays) (#31)","text":"TL;DR

    Understanding that the expression passed to the range operator is evaluated only once before the beginning of the loop can help you avoid common mistakes such as inefficient assignment in channel or slice iteration.

    The range loop evaluates the provided expression only once, before the beginning of the loop, by doing a copy (regardless of the type). We should remember this behavior to avoid common mistakes that might, for example, lead us to access the wrong element. For example:

    a := [3]int{0, 1, 2}\nfor i, v := range a {\n    a[2] = 10\n    if i == 2 {\n        fmt.Println(v)\n    }\n}\n

    This code updates the last index to 10. However, if we run this code, it does not print 10; it prints 2.

    Source code

    "},{"location":"#ignoring-the-impacts-of-using-pointer-elements-in-range-loops-32","title":"Ignoring the impacts of using pointer elements in range loops (#32)","text":"Warning

    This mistake isn't relevant anymore from Go 1.22 (source).

    "},{"location":"#making-wrong-assumptions-during-map-iterations-ordering-and-map-insert-during-iteration-33","title":"Making wrong assumptions during map iterations (ordering and map insert during iteration) (#33)","text":"TL;DR

    To ensure predictable outputs when using maps, remember that a map data structure:

    • Doesn\u2019t order the data by keys
    • Doesn\u2019t preserve the insertion order
    • Doesn\u2019t have a deterministic iteration order
    • Doesn\u2019t guarantee that an element added during an iteration will be produced during this iteration

    Source code

    "},{"location":"#ignoring-how-the-break-statement-works-34","title":"Ignoring how the break statement works (#34)","text":"TL;DR

    Using break or continue with a label enforces breaking a specific statement. This can be helpful with switch or select statements inside loops.

    A break statement is commonly used to terminate the execution of a loop. When loops are used in conjunction with switch or select, developers frequently make the mistake of breaking the wrong statement. For example:

    for i := 0; i < 5; i++ {\n    fmt.Printf(\"%d \", i)\n\n    switch i {\n    default:\n    case 2:\n        break\n    }\n}\n

    The break statement doesn\u2019t terminate the for loop: it terminates the switch statement, instead. Hence, instead of iterating from 0 to 2, this code iterates from 0 to 4: 0 1 2 3 4.

    One essential rule to keep in mind is that a break statement terminates the execution of the innermost for, switch, or select statement. In the previous example, it terminates the switch statement.

    To break the loop instead of the switch statement, the most idiomatic way is to use a label:

    loop:\n    for i := 0; i < 5; i++ {\n        fmt.Printf(\"%d \", i)\n\n        switch i {\n        default:\n        case 2:\n            break loop\n        }\n    }\n

    Here, we associate the loop label with the for loop. Then, because we provide the loop label to the break statement, it breaks the loop, not the switch. Therefore, this new version will print 0 1 2, as we expected.

    Source code

    "},{"location":"#using-defer-inside-a-loop-35","title":"Using defer inside a loop (#35)","text":"TL;DR

    Extracting loop logic inside a function leads to executing a defer statement at the end of each iteration.

    The defer statement delays a call\u2019s execution until the surrounding function returns. It\u2019s mainly used to reduce boilerplate code. For example, if a resource has to be closed eventually, we can use defer to avoid repeating the closure calls before every single return.

    One common mistake with defer is to forget that it schedules a function call when the surrounding function returns. For example:

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        file, err := os.Open(path)\n        if err != nil {\n            return err\n        }\n\n        defer file.Close()\n\n        // Do something with file\n    }\n    return nil\n}\n

    The defer calls are executed not during each loop iteration but when the readFiles function returns. If readFiles doesn\u2019t return, the file descriptors will be kept open forever, causing leaks.

    One common option to fix this problem is to create a surrounding function after defer, called during each iteration:

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        if err := readFile(path); err != nil {\n            return err\n        }\n    }\n    return nil\n}\n\nfunc readFile(path string) error {\n    file, err := os.Open(path)\n    if err != nil {\n        return err\n    }\n\n    defer file.Close()\n\n    // Do something with file\n    return nil\n}\n

    Another solution is to make the readFile function a closure but intrinsically, this remains the same solution: adding another surrounding function to execute the defer calls during each iteration.

    Source code

    "},{"location":"#strings","title":"Strings","text":""},{"location":"#not-understanding-the-concept-of-rune-36","title":"Not understanding the concept of rune (#36)","text":"TL;DR

    Understanding that a rune corresponds to the concept of a Unicode code point and that it can be composed of multiple bytes should be part of the Go developer\u2019s core knowledge to work accurately with strings.

    As runes are everywhere in Go, it's important to understand the following:

    • A charset is a set of characters, whereas an encoding describes how to translate a charset into binary.
    • In Go, a string references an immutable slice of arbitrary bytes.
    • Go source code is encoded using UTF-8. Hence, all string literals are UTF-8 strings. But because a string can contain arbitrary bytes, if it\u2019s obtained from somewhere else (not the source code), it isn\u2019t guaranteed to be based on the UTF-8 encoding.
    • A rune corresponds to the concept of a Unicode code point, meaning an item represented by a single value.
    • Using UTF-8, a Unicode code point can be encoded into 1 to 4 bytes.
    • Using len() on a string in Go returns the number of bytes, not the number of runes.

    Source code

    "},{"location":"#inaccurate-string-iteration-37","title":"Inaccurate string iteration (#37)","text":"TL;DR

    Iterating on a string with the range operator iterates on the runes with the index corresponding to the starting index of the rune\u2019s byte sequence. To access a specific rune index (such as the third rune), convert the string into a []rune.

    Iterating on a string is a common operation for developers. Perhaps we want to perform an operation for each rune in the string or implement a custom function to search for a specific substring. In both cases, we have to iterate on the different runes of a string. But it\u2019s easy to get confused about how iteration works.

    For example, consider the following example:

    s := \"h\u00eallo\"\nfor i := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, s[i])\n}\nfmt.Printf(\"len=%d\\n\", len(s))\n
    position 0: h\nposition 1: \u00c3\nposition 3: l\nposition 4: l\nposition 5: o\nlen=6\n

    Let's highlight three points that might be confusing:

    • The second rune is \u00c3 in the output instead of \u00ea.
    • We jumped from position 1 to position 3: what is at position 2?
    • len returns a count of 6, whereas s contains only 5 runes.

    Let\u2019s start with the last observation. We already mentioned that len returns the number of bytes in a string, not the number of runes. Because we assigned a string literal to s, s is a UTF-8 string. Meanwhile, the special character \"\u00ea\" isn\u2019t encoded in a single byte; it requires 2 bytes. Therefore, calling len(s) returns 6.

    Meanwhile, in the previous example, we have to understand that we don't iterate over each rune; instead, we iterate over each starting index of a rune:

    Printing s[i] doesn\u2019t print the ith rune; it prints the UTF-8 representation of the byte at index i. Hence, we printed \"h\u00c3llo\" instead of \"h\u00eallo\".

    If we want to print all the different runes, we can either use the value element of the range operator:

    s := \"h\u00eallo\"\nfor i, r := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    Or, we can convert the string into a slice of runes and iterate over it:

    s := \"h\u00eallo\"\nrunes := []rune(s)\nfor i, r := range runes {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    Note that this solution introduces a run-time overhead compared to the previous one. Indeed, converting a string into a slice of runes requires allocating an additional slice and converting the bytes into runes: an O(n) time complexity with n the number of bytes in the string. Therefore, if we want to iterate over all the runes, we should use the first solution.

    However, if we want to access the ith rune of a string with the first option, we don\u2019t have access to the rune index; rather, we know the starting index of a rune in the byte sequence.

    s := \"h\u00eallo\"\nr := []rune(s)[4]\nfmt.Printf(\"%c\\n\", r) // o\n

    Source code

    "},{"location":"#misusing-trim-functions-38","title":"Misusing trim functions (#38)","text":"TL;DR

    strings.TrimRight/strings.TrimLeft removes all the trailing/leading runes contained in a given set, whereas strings.TrimSuffix/strings.TrimPrefix returns a string without a provided suffix/prefix.

    For example:

    fmt.Println(strings.TrimRight(\"123oxo\", \"xo\"))\n

    The example prints 123:

    Conversely, strings.TrimLeft removes all the leading runes contained in a set.

    On the other side, strings.TrimSuffix / strings.TrimPrefix returns a string without the provided trailing suffix / prefix.

    Source code

    "},{"location":"#under-optimized-strings-concatenation-39","title":"Under-optimized strings concatenation (#39)","text":"TL;DR

    Concatenating a list of strings should be done with strings.Builder to prevent allocating a new string during each iteration.

    Let\u2019s consider a concat function that concatenates all the string elements of a slice using the += operator:

    func concat(values []string) string {\n    s := \"\"\n    for _, value := range values {\n        s += value\n    }\n    return s\n}\n

    During each iteration, the += operator concatenates s with the value string. At first sight, this function may not look wrong. But with this implementation, we forget one of the core characteristics of a string: its immutability. Therefore, each iteration doesn\u2019t update s; it reallocates a new string in memory, which significantly impacts the performance of this function.

    Fortunately, there is a solution to deal with this problem, using strings.Builder:

    func concat(values []string) string {\n    sb := strings.Builder{}\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    During each iteration, we constructed the resulting string by calling the WriteString method that appends the content of value to its internal buffer, hence minimizing memory copying.

    Note

    WriteString returns an error as the second output, but we purposely ignore it. Indeed, this method will never return a non-nil error. So what\u2019s the purpose of this method returning an error as part of its signature? strings.Builder implements the io.StringWriter interface, which contains a single method: WriteString(s string) (n int, err error). Hence, to comply with this interface, WriteString must return an error.

    Internally, strings.Builder holds a byte slice. Each call to WriteString results in a call to append on this slice. There are two impacts. First, this struct shouldn\u2019t be used concurrently, as the calls to append would lead to race conditions. The second impact is something that we saw in mistake #21, \"Inefficient slice initialization\": if the future length of a slice is already known, we should preallocate it. For that purpose, strings.Builder exposes a method Grow(n int) to guarantee space for another n bytes:

    func concat(values []string) string {\n    total := 0\n    for i := 0; i < len(values); i++ {\n        total += len(values[i])\n    }\n\n    sb := strings.Builder{}\n    sb.Grow(total) (2)\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    Let\u2019s run a benchmark to compare the three versions (v1 using +=; v2 using strings.Builder{} without preallocation; and v3 using strings.Builder{} with preallocation). The input slice contains 1,000 strings, and each string contains 1,000 bytes:

    BenchmarkConcatV1-4             16      72291485 ns/op\nBenchmarkConcatV2-4           1188        878962 ns/op\nBenchmarkConcatV3-4           5922        190340 ns/op\n

    As we can see, the latest version is by far the most efficient: 99% faster than v1 and 78% faster than v2.

    strings.Builder is the recommended solution to concatenate a list of strings. Usually, this solution should be used within a loop. Indeed, if we just have to concatenate a few strings (such as a name and a surname), using strings.Builder is not recommended as doing so will make the code a bit less readable than using the += operator or fmt.Sprintf.

    Source code

    "},{"location":"#useless-string-conversions-40","title":"Useless string conversions (#40)","text":"TL;DR

    Remembering that the bytes package offers the same operations as the strings package can help avoid extra byte/string conversions.

    When choosing to work with a string or a []byte, most programmers tend to favor strings for convenience. But most I/O is actually done with []byte. For example, io.Reader, io.Writer, and io.ReadAll work with []byte, not strings.

    When we\u2019re wondering whether we should work with strings or []byte, let\u2019s recall that working with []byte isn\u2019t necessarily less convenient. Indeed, all the exported functions of the strings package also have alternatives in the bytes package: Split, Count, Contains, Index, and so on. Hence, whether we\u2019re doing I/O or not, we should first check whether we could implement a whole workflow using bytes instead of strings and avoid the price of additional conversions.

    Source code

    "},{"location":"#substring-and-memory-leaks-41","title":"Substring and memory leaks (#41)","text":"TL;DR

    Using copies instead of substrings can prevent memory leaks, as the string returned by a substring operation will be backed by the same byte array.

    In mistake #26, \u201cSlices and memory leaks,\u201d we saw how slicing a slice or array may lead to memory leak situations. This principle also applies to string and substring operations.

    We need to keep two things in mind while using the substring operation in Go. First, the interval provided is based on the number of bytes, not the number of runes. Second, a substring operation may lead to a memory leak as the resulting substring will share the same backing array as the initial string. The solutions to prevent this case from happening are to perform a string copy manually or to use strings.Clone from Go 1.18.

    Source code

    "},{"location":"#functions-and-methods","title":"Functions and Methods","text":""},{"location":"#not-knowing-which-type-of-receiver-to-use-42","title":"Not knowing which type of receiver to use (#42)","text":"TL;DR

    The decision whether to use a value or a pointer receiver should be made based on factors such as the type, whether it has to be mutated, whether it contains a field that can\u2019t be copied, and how large the object is. When in doubt, use a pointer receiver.

    Choosing between value and pointer receivers isn\u2019t always straightforward. Let\u2019s discuss some of the conditions to help us choose.

    A receiver must be a pointer

    • If the method needs to mutate the receiver. This rule is also valid if the receiver is a slice and a method needs to append elements:
    type slice []int\n\nfunc (s *slice) add(element int) {\n    *s = append(*s, element)\n}\n
    • If the method receiver contains a field that cannot be copied: for example, a type part of the sync package (see #74, \u201cCopying a sync type\u201d).

    A receiver should be a pointer

    • If the receiver is a large object. Using a pointer can make the call more efficient, as doing so prevents making an extensive copy. When in doubt about how large is large, benchmarking can be the solution; it\u2019s pretty much impossible to state a specific size, because it depends on many factors.

    A receiver must be a value

    • If we have to enforce a receiver\u2019s immutability.
    • If the receiver is a map, function, or channel. Otherwise, a compilation error occurs.

    A receiver should be a value

    • If the receiver is a slice that doesn\u2019t have to be mutated.
    • If the receiver is a small array or struct that is naturally a value type without mutable fields, such as time.Time.
    • If the receiver is a basic type such as int, float64, or string.

    Of course, it\u2019s impossible to be exhaustive, as there will always be edge cases, but this section\u2019s goal was to provide guidance to cover most cases. By default, we can choose to go with a value receiver unless there\u2019s a good reason not to do so. In doubt, we should use a pointer receiver.

    Source code

    "},{"location":"#never-using-named-result-parameters-43","title":"Never using named result parameters (#43)","text":"TL;DR

    Using named result parameters can be an efficient way to improve the readability of a function/method, especially if multiple result parameters have the same type. In some cases, this approach can also be convenient because named result parameters are initialized to their zero value. But be cautious about potential side effects.

    When we return parameters in a function or a method, we can attach names to these parameters and use them as regular variables. When a result parameter is named, it\u2019s initialized to its zero value when the function/method begins. With named result parameters, we can also call a naked return statement (without arguments). In that case, the current values of the result parameters are used as the returned values.

    Here\u2019s an example that uses a named result parameter b:

    func f(a int) (b int) {\n    b = a\n    return\n}\n

    In this example, we attach a name to the result parameter: b. When we call return without arguments, it returns the current value of b.

    In some cases, named result parameters can also increase readability: for example, if two parameters have the same type. In other cases, they can also be used for convenience. Therefore, we should use named result parameters sparingly when there\u2019s a clear benefit.

    Source code

    "},{"location":"#unintended-side-effects-with-named-result-parameters-44","title":"Unintended side effects with named result parameters (#44)","text":"TL;DR

    See #43.

    We mentioned why named result parameters can be useful in some situations. But as these result parameters are initialized to their zero value, using them can sometimes lead to subtle bugs if we\u2019re not careful enough. For example, can you spot what\u2019s wrong with this code?

    func (l loc) getCoordinates(ctx context.Context, address string) (\n    lat, lng float32, err error) {\n    isValid := l.validateAddress(address) (1)\n    if !isValid {\n        return 0, 0, errors.New(\"invalid address\")\n    }\n\n    if ctx.Err() != nil { (2)\n        return 0, 0, err\n    }\n\n    // Get and return coordinates\n}\n

    The error might not be obvious at first glance. Here, the error returned in the if ctx.Err() != nil scope is err. But we haven\u2019t assigned any value to the err variable. It\u2019s still assigned to the zero value of an error type: nil. Hence, this code will always return a nil error.

    When using named result parameters, we must recall that each parameter is initialized to its zero value. As we have seen in this section, this can lead to subtle bugs that aren\u2019t always straightforward to spot while reading code. Therefore, let\u2019s remain cautious when using named result parameters, to avoid potential side effects.

    Source code

    "},{"location":"#returning-a-nil-receiver-45","title":"Returning a nil receiver (#45)","text":"TL;DR

    When returning an interface, be cautious about not returning a nil pointer but an explicit nil value. Otherwise, unintended consequences may occur and the caller will receive a non-nil value.

    Source code

    "},{"location":"#using-a-filename-as-a-function-input-46","title":"Using a filename as a function input (#46)","text":"TL;DR

    Designing functions to receive io.Reader types instead of filenames improves the reusability of a function and makes testing easier.

    Accepting a filename as a function input to read from a file should, in most cases, be considered a code smell (except in specific functions such as os.Open). Indeed, it makes unit tests more complex because we may have to create multiple files. It also reduces the reusability of a function (although not all functions are meant to be reused). Using the io.Reader interface abstracts the data source. Regardless of whether the input is a file, a string, an HTTP request, or a gRPC request, the implementation can be reused and easily tested.

    Source code

    "},{"location":"#ignoring-how-defer-arguments-and-receivers-are-evaluated-argument-evaluation-pointer-and-value-receivers-47","title":"Ignoring how defer arguments and receivers are evaluated (argument evaluation, pointer, and value receivers) (#47)","text":"TL;DR

    Passing a pointer to a defer function and wrapping a call inside a closure are two possible solutions to overcome the immediate evaluation of arguments and receivers.

    In a defer function the arguments are evaluated right away, not once the surrounding function returns. For example, in this code, we always call notify and incrementCounter with the same status: an empty string.

    const (\n    StatusSuccess  = \"success\"\n    StatusErrorFoo = \"error_foo\"\n    StatusErrorBar = \"error_bar\"\n)\n\nfunc f() error {\n    var status string\n    defer notify(status)\n    defer incrementCounter(status)\n\n    if err := foo(); err != nil {\n        status = StatusErrorFoo\n        return err\n    }\n\n    if err := bar(); err != nil {\n        status = StatusErrorBar\n        return err\n    }\n\n    status = StatusSuccess <5>\n    return nil\n}\n

    Indeed, we call notify(status) and incrementCounter(status) as defer functions. Therefore, Go will delay these calls to be executed once f returns with the current value of status at the stage we used defer, hence passing an empty string.

    Two leading options if we want to keep using defer.

    The first solution is to pass a string pointer:

    func f() error {\n    var status string\n    defer notify(&status) \n    defer incrementCounter(&status)\n\n    // The rest of the function unchanged\n}\n

    Using defer evaluates the arguments right away: here, the address of status. Yes, status itself is modified throughout the function, but its address remains constant, regardless of the assignments. Hence, if notify or incrementCounter uses the value referenced by the string pointer, it will work as expected. But this solution requires changing the signature of the two functions, which may not always be possible.

    There\u2019s another solution: calling a closure (an anonymous function value that references variables from outside its body) as a defer statement:

    func f() error {\n    var status string\n    defer func() {\n        notify(status)\n        incrementCounter(status)\n    }()\n\n    // The rest of the function unchanged\n}\n

    Here, we wrap the calls to both notify and incrementCounter within a closure. This closure references the status variable from outside its body. Therefore, status is evaluated once the closure is executed, not when we call defer. This solution also works and doesn\u2019t require notify and incrementCounter to change their signature.

    Let's also note this behavior applies with method receiver: the receiver is evaluated immediately.

    Source code

    "},{"location":"#error-management","title":"Error Management","text":""},{"location":"#panicking-48","title":"Panicking (#48)","text":"TL;DR

    Using panic is an option to deal with errors in Go. However, it should only be used sparingly in unrecoverable conditions: for example, to signal a programmer error or when you fail to load a mandatory dependency.

    In Go, panic is a built-in function that stops the ordinary flow:

    func main() {\n    fmt.Println(\"a\")\n    panic(\"foo\")\n    fmt.Println(\"b\")\n}\n

    This code prints a and then stops before printing b:

    a\npanic: foo\n\ngoroutine 1 [running]:\nmain.main()\n        main.go:7 +0xb3\n

    Panicking in Go should be used sparingly. There are two prominent cases, one to signal a programmer error (e.g., sql.Register that panics if the driver is nil or has already been register) and another where our application fails to create a mandatory dependency. Hence, exceptional conditions that lead us to stop the application. In most other cases, error management should be done with a function that returns a proper error type as the last return argument.

    Source code

    "},{"location":"#ignoring-when-to-wrap-an-error-49","title":"Ignoring when to wrap an error (#49)","text":"TL;DR

    Wrapping an error allows you to mark an error and/or provide additional context. However, error wrapping creates potential coupling as it makes the source error available for the caller. If you want to prevent that, don\u2019t use error wrapping.

    Since Go 1.13, the %w directive allows us to wrap errors conveniently. Error wrapping is about wrapping or packing an error inside a wrapper container that also makes the source error available. In general, the two main use cases for error wrapping are the following:

    • Adding additional context to an error
    • Marking an error as a specific error

    When handling an error, we can decide to wrap it. Wrapping is about adding additional context to an error and/or marking an error as a specific type. If we need to mark an error, we should create a custom error type. However, if we just want to add extra context, we should use fmt.Errorf with the %w directive as it doesn\u2019t require creating a new error type. Yet, error wrapping creates potential coupling as it makes the source error available for the caller. If we want to prevent it, we shouldn\u2019t use error wrapping but error transformation, for example, using fmt.Errorf with the %v directive.

    Source code

    "},{"location":"#comparing-an-error-type-inaccurately-50","title":"Comparing an error type inaccurately (#50)","text":"TL;DR

    If you use Go 1.13 error wrapping with the %w directive and fmt.Errorf, comparing an error against a type has to be done using errors.As. Otherwise, if the returned error you want to check is wrapped, it will fail the checks.

    Source code

    "},{"location":"#comparing-an-error-value-inaccurately-51","title":"Comparing an error value inaccurately (#51)","text":"TL;DR

    If you use Go 1.13 error wrapping with the %w directive and fmt.Errorf, comparing an error against or a value has to be done using errors.As. Otherwise, if the returned error you want to check is wrapped, it will fail the checks.

    A sentinel error is an error defined as a global variable:

    import \"errors\"\n\nvar ErrFoo = errors.New(\"foo\")\n

    In general, the convention is to start with Err followed by the error type: here, ErrFoo. A sentinel error conveys an expected error, an error that clients will expect to check. As general guidelines:

    • Expected errors should be designed as error values (sentinel errors): var ErrFoo = errors.New(\"foo\").
    • Unexpected errors should be designed as error types: type BarError struct { ... }, with BarError implementing the error interface.

    If we use error wrapping in our application with the %w directive and fmt.Errorf, checking an error against a specific value should be done using errors.Is instead of ==. Thus, even if the sentinel error is wrapped, errors.Is can recursively unwrap it and compare each error in the chain against the provided value.

    Source code

    "},{"location":"#handling-an-error-twice-52","title":"Handling an error twice (#52)","text":"TL;DR

    In most situations, an error should be handled only once. Logging an error is handling an error. Therefore, you have to choose between logging or returning an error. In many cases, error wrapping is the solution as it allows you to provide additional context to an error and return the source error.

    Handling an error multiple times is a mistake made frequently by developers, not specifically in Go. This can cause situations where the same error is logged multiple times make debugging harder.

    Let's remind us that handling an error should be done only once. Logging an error is handling an error. Hence, we should either log or return an error. By doing this, we simplify our code and gain better insights into the error situation. Using error wrapping is the most convenient approach as it allows us to propagate the source error and add context to an error.

    Source code

    "},{"location":"#not-handling-an-error-53","title":"Not handling an error (#53)","text":"TL;DR

    Ignoring an error, whether during a function call or in a defer function, should be done explicitly using the blank identifier. Otherwise, future readers may be confused about whether it was intentional or a miss.

    Source code

    "},{"location":"#not-handling-defer-errors-54","title":"Not handling defer errors (#54)","text":"TL;DR

    In many cases, you shouldn\u2019t ignore an error returned by a defer function. Either handle it directly or propagate it to the caller, depending on the context. If you want to ignore it, use the blank identifier.

    Consider the following code:

    func f() {\n  // ...\n  notify() // Error handling is omitted\n}\n\nfunc notify() error {\n  // ...\n}\n

    From a maintainability perspective, the code can lead to some issues. Let\u2019s consider a new reader looking at it. This reader notices that notify returns an error but that the error isn\u2019t handled by the parent function. How can they guess whether or not handling the error was intentional? How can they know whether the previous developer forgot to handle it or did it purposely?

    For these reasons, when we want to ignore an error, there's only one way to do it, using the blank identifier (_):

    _ = notify\n

    In terms of compilation and run time, this approach doesn\u2019t change anything compared to the first piece of code. But this new version makes explicit that we aren\u2019t interested in the error. Also, we can add a comment that indicates the rationale for why an error is ignored:

    // At-most once delivery.\n// Hence, it's accepted to miss some of them in case of errors.\n_ = notify()\n

    Source code

    "},{"location":"#concurrency-foundations","title":"Concurrency: Foundations","text":""},{"location":"#mixing-up-concurrency-and-parallelism-55","title":"Mixing up concurrency and parallelism (#55)","text":"TL;DR

    Understanding the fundamental differences between concurrency and parallelism is a cornerstone of the Go developer\u2019s knowledge. Concurrency is about structure, whereas parallelism is about execution.

    Concurrency and parallelism are not the same:

    • Concurrency is about structure. We can change a sequential implementation into a concurrent one by introducing different steps that separate concurrent goroutines can tackle.
    • Meanwhile, parallelism is about execution. We can use parallism at the steps level by adding more parallel goroutines.

    In summary, concurrency provides a structure to solve a problem with parts that may be parallelized. Therefore, concurrency enables parallelism.

    "},{"location":"#thinking-concurrency-is-always-faster-56","title":"Thinking concurrency is always faster (#56)","text":"TL;DR

    To be a proficient developer, you must acknowledge that concurrency isn\u2019t always faster. Solutions involving parallelization of minimal workloads may not necessarily be faster than a sequential implementation. Benchmarking sequential versus concurrent solutions should be the way to validate assumptions.

    Read the full section here.

    Source code

    "},{"location":"#being-puzzled-about-when-to-use-channels-or-mutexes-57","title":"Being puzzled about when to use channels or mutexes (#57)","text":"TL;DR

    Being aware of goroutine interactions can also be helpful when deciding between channels and mutexes. In general, parallel goroutines require synchronization and hence mutexes. Conversely, concurrent goroutines generally require coordination and orchestration and hence channels.

    Given a concurrency problem, it may not always be clear whether we can implement a solution using channels or mutexes. Because Go promotes sharing memory by communication, one mistake could be to always force the use of channels, regardless of the use case. However, we should see the two options as complementary.

    When should we use channels or mutexes? We will use the example in the next figure as a backbone. Our example has three different goroutines with specific relationships:

    • G1 and G2 are parallel goroutines. They may be two goroutines executing the same function that keeps receiving messages from a channel, or perhaps two goroutines executing the same HTTP handler at the same time.
    • On the other hand, G1 and G3 are concurrent goroutines, as are G2 and G3. All the goroutines are part of an overall concurrent structure, but G1 and G2 perform the first step, whereas G3 does the next step.

    In general, parallel goroutines have to synchronize: for example, when they need to access or mutate a shared resource such as a slice. Synchronization is enforced with mutexes but not with any channel types (not with buffered channels). Hence, in general, synchronization between parallel goroutines should be achieved via mutexes.

    Conversely, in general, concurrent goroutines have to coordinate and orchestrate. For example, if G3 needs to aggregate results from both G1 and G2, G1 and G2 need to signal to G3 that a new intermediate result is available. This coordination falls under the scope of communication\u2014therefore, channels.

    Regarding concurrent goroutines, there\u2019s also the case where we want to transfer the ownership of a resource from one step (G1 and G2) to another (G3); for example, if G1 and G2 are enriching a shared resource and at some point, we consider this job as complete. Here, we should use channels to signal that a specific resource is ready and handle the ownership transfer.

    Mutexes and channels have different semantics. Whenever we want to share a state or access a shared resource, mutexes ensure exclusive access to this resource. Conversely, channels are a mechanic for signaling with or without data (chan struct{} or not). Coordination or ownership transfer should be achieved via channels. It\u2019s important to know whether goroutines are parallel or concurrent because, in general, we need mutexes for parallel goroutines and channels for concurrent ones.

    "},{"location":"#not-understanding-race-problems-data-races-vs-race-conditions-and-the-go-memory-model-58","title":"Not understanding race problems (data races vs. race conditions and the Go memory model) (#58)","text":"TL;DR

    Being proficient in concurrency also means understanding that data races and race conditions are different concepts. Data races occur when multiple goroutines simultaneously access the same memory location and at least one of them is writing. Meanwhile, being data-race-free doesn\u2019t necessarily mean deterministic execution. When a behavior depends on the sequence or the timing of events that can\u2019t be controlled, this is a race condition.

    Race problems can be among the hardest and most insidious bugs a programmer can face. As Go developers, we must understand crucial aspects such as data races and race conditions, their possible impacts, and how to avoid them.

    "},{"location":"#data-race","title":"Data Race","text":"

    A data race occurs when two or more goroutines simultaneously access the same memory location and at least one is writing. In this case, the result can be hazardous. Even worse, in some situations, the memory location may end up holding a value containing a meaningless combination of bits.

    We can prevent a data race from happening using different techniques. For example:

    • Using the sync/atomic package
    • In synchronizing the two goroutines with an ad hoc data structure like a mutex
    • Using channels to make the two goroutines communicating to ensure that a variable is updated by only one goroutine at a time
    "},{"location":"#race-condition","title":"Race Condition","text":"

    Depending on the operation we want to perform, does a data-race-free application necessarily mean a deterministic result? Not necessarily.

    A race condition occurs when the behavior depends on the sequence or the timing of events that can\u2019t be controlled. Here, the timing of events is the goroutines\u2019 execution order.

    In summary, when we work in concurrent applications, it\u2019s essential to understand that a data race is different from a race condition. A data race occurs when multiple goroutines simultaneously access the same memory location and at least one of them is writing. A data race means unexpected behavior. However, a data-race-free application doesn\u2019t necessarily mean deterministic results. An application can be free of data races but still have behavior that depends on uncontrolled events (such as goroutine execution, how fast a message is published to a channel, or how long a call to a database lasts); this is a race condition. Understanding both concepts is crucial to becoming proficient in designing concurrent applications.

    Source code

    "},{"location":"#not-understanding-the-concurrency-impacts-of-a-workload-type-59","title":"Not understanding the concurrency impacts of a workload type (#59)","text":"TL;DR

    When creating a certain number of goroutines, consider the workload type. Creating CPU-bound goroutines means bounding this number close to the GOMAXPROCS variable (based by default on the number of CPU cores on the host). Creating I/O-bound goroutines depends on other factors, such as the external system.

    In programming, the execution time of a workload is limited by one of the following:

    • The speed of the CPU\u2014For example, running a merge sort algorithm. The workload is called CPU-bound.
    • The speed of I/O\u2014For example, making a REST call or a database query. The workload is called I/O-bound.
    • The amount of available memory\u2014The workload is called memory-bound.
    Note

    The last is the rarest nowadays, given that memory has become very cheap in recent decades. Hence, this section focuses on the two first workload types: CPU- and I/O-bound.

    If the workload executed by the workers is I/O-bound, the value mainly depends on the external system. Conversely, if the workload is CPU-bound, the optimal number of goroutines is close to the number of available CPU cores (a best practice can be to use runtime.GOMAXPROCS). Knowing the workload type (I/O or CPU) is crucial when designing concurrent applications.

    Source code

    "},{"location":"#misunderstanding-go-contexts-60","title":"Misunderstanding Go contexts (#60)","text":"TL;DR

    Go contexts are also one of the cornerstones of concurrency in Go. A context allows you to carry a deadline, a cancellation signal, and/or a list of keys-values.

    https://pkg.go.dev/context

    A Context carries a deadline, a cancellation signal, and other values across API boundaries.

    "},{"location":"#deadline","title":"Deadline","text":"

    A deadline refers to a specific point in time determined with one of the following:

    • A time.Duration from now (for example, in 250 ms)
    • A time.Time (for example, 2023-02-07 00:00:00 UTC)

    The semantics of a deadline convey that an ongoing activity should be stopped if this deadline is met. An activity is, for example, an I/O request or a goroutine waiting to receive a message from a channel.

    "},{"location":"#cancellation-signals","title":"Cancellation signals","text":"

    Another use case for Go contexts is to carry a cancellation signal. Let\u2019s imagine that we want to create an application that calls CreateFileWatcher(ctx context.Context, filename string) within another goroutine. This function creates a specific file watcher that keeps reading from a file and catches updates. When the provided context expires or is canceled, this function handles it to close the file descriptor.

    "},{"location":"#context-values","title":"Context values","text":"

    The last use case for Go contexts is to carry a key-value list. What\u2019s the point of having a context carrying a key-value list? Because Go contexts are generic and mainstream, there are infinite use cases.

    For example, if we use tracing, we may want different subfunctions to share the same correlation ID. Some developers may consider this ID too invasive to be part of the function signature. In this regard, we could also decide to include it as part of the provided context.

    "},{"location":"#catching-a-context-cancellation","title":"Catching a context cancellation","text":"

    The context.Context type exports a Done method that returns a receive-only notification channel: <-chan struct{}. This channel is closed when the work associated with the context should be canceled. For example,

    • The Done channel related to a context created with context.WithCancel is closed when the cancel function is called.
    • The Done channel related to a context created with context.WithDeadline is closed when the deadline has expired.

    One thing to note is that the internal channel should be closed when a context is canceled or has met a deadline, instead of when it receives a specific value, because the closure of a channel is the only channel action that all the consumer goroutines will receive. This way, all the consumers will be notified once a context is canceled or a deadline is reached.

    In summary, to be a proficient Go developer, we have to understand what a context is and how to use it. In general, a function that users wait for should take a context, as doing so allows upstream callers to decide when calling this function should be aborted.

    Source code

    "},{"location":"#concurrency-practice","title":"Concurrency: Practice","text":""},{"location":"#propagating-an-inappropriate-context-61","title":"Propagating an inappropriate context (#61)","text":"TL;DR

    Understanding the conditions when a context can be canceled should matter when propagating it: for example, an HTTP handler canceling the context when the response has been sent.

    In many situations, it is recommended to propagate Go contexts. However, context propagation can sometimes lead to subtle bugs, preventing subfunctions from being correctly executed.

    Let\u2019s consider the following example. We expose an HTTP handler that performs some tasks and returns a response. But just before returning the response, we also want to send it to a Kafka topic. We don\u2019t want to penalize the HTTP consumer latency-wise, so we want the publish action to be handled asynchronously within a new goroutine. We assume that we have at our disposal a publish function that accepts a context so the action of publishing a message can be interrupted if the context is canceled, for example. Here is a possible implementation:

    func handler(w http.ResponseWriter, r *http.Request) {\n    response, err := doSomeTask(r.Context(), r)\n    if err != nil {\n        http.Error(w, err.Error(), http.StatusInternalServerError)\n    return\n    }\n    go func() {\n        err := publish(r.Context(), response)\n        // Do something with err\n    }()\n    writeResponse(response)\n}\n

    What\u2019s wrong with this piece of code? We have to know that the context attached to an HTTP request can cancel in different conditions:

    • When the client\u2019s connection closes
    • In the case of an HTTP/2 request, when the request is canceled
    • When the response has been written back to the client

    In the first two cases, we probably handle things correctly. For example, if we get a response from doSomeTask but the client has closed the connection, it\u2019s probably OK to call publish with a context already canceled so the message isn\u2019t published. But what about the last case?

    When the response has been written to the client, the context associated with the request will be canceled. Therefore, we are facing a race condition:

    • If the response is written after the Kafka publication, we both return a response and publish a message successfully
    • However, if the response is written before or during the Kafka publication, the message shouldn\u2019t be published.

    In the latter case, calling publish will return an error because we returned the HTTP response quickly.

    Note

    From Go 1.21, there is a way to create a new context without cancel. context.WithoutCancel returns a copy of parent that is not canceled when parent is canceled.

    In summary, propagating a context should be done cautiously.

    Source code

    "},{"location":"#starting-a-goroutine-without-knowing-when-to-stop-it-62","title":"Starting a goroutine without knowing when to stop it (#62)","text":"TL;DR

    Avoiding leaks means being mindful that whenever a goroutine is started, you should have a plan to stop it eventually.

    Goroutines are easy and cheap to start\u2014so easy and cheap that we may not necessarily have a plan for when to stop a new goroutine, which can lead to leaks. Not knowing when to stop a goroutine is a design issue and a common concurrency mistake in Go.

    Let\u2019s discuss a concrete example. We will design an application that needs to watch some external configuration (for example, using a database connection). Here\u2019s a first implementation:

    func main() {\n    newWatcher()\n    // Run the application\n}\n\ntype watcher struct { /* Some resources */ }\n\nfunc newWatcher() {\n    w := watcher{}\n    go w.watch() // Creates a goroutine that watches some external configuration\n}\n

    The problem with this code is that when the main goroutine exits (perhaps because of an OS signal or because it has a finite workload), the application is stopped. Hence, the resources created by watcher aren\u2019t closed gracefully. How can we prevent this from happening?

    One option could be to pass to newWatcher a context that will be canceled when main returns:

    func main() {\n    ctx, cancel := context.WithCancel(context.Background())\n    defer cancel()\n    newWatcher(ctx)\n    // Run the application\n}\n\nfunc newWatcher(ctx context.Context) {\n    w := watcher{}\n    go w.watch(ctx)\n}\n

    We propagate the context created to the watch method. When the context is canceled, the watcher struct should close its resources. However, can we guarantee that watch will have time to do so? Absolutely not\u2014and that\u2019s a design flaw.

    The problem is that we used signaling to convey that a goroutine had to be stopped. We didn\u2019t block the parent goroutine until the resources had been closed. Let\u2019s make sure we do:

    func main() {\n    w := newWatcher()\n    defer w.close()\n    // Run the application\n}\n\nfunc newWatcher() watcher {\n    w := watcher{}\n    go w.watch()\n    return w\n}\n\nfunc (w watcher) close() {\n    // Close the resources\n}\n

    Instead of signaling watcher that it\u2019s time to close its resources, we now call this close method, using defer to guarantee that the resources are closed before the application exits.

    In summary, let\u2019s be mindful that a goroutine is a resource like any other that must eventually be closed to free memory or other resources. Starting a goroutine without knowing when to stop it is a design issue. Whenever a goroutine is started, we should have a clear plan about when it will stop. Last but not least, if a goroutine creates resources and its lifetime is bound to the lifetime of the application, it\u2019s probably safer to wait for this goroutine to complete before exiting the application. This way, we can ensure that the resources can be freed.

    Source code

    "},{"location":"#not-being-careful-with-goroutines-and-loop-variables-63","title":"Not being careful with goroutines and loop variables (#63)","text":"Warning

    This mistake isn't relevant anymore from Go 1.22 (source).

    "},{"location":"#expecting-a-deterministic-behavior-using-select-and-channels-64","title":"Expecting a deterministic behavior using select and channels (#64)","text":"TL;DR

    Understanding that select with multiple channels chooses the case randomly if multiple options are possible prevents making wrong assumptions that can lead to subtle concurrency bugs.

    One common mistake made by Go developers while working with channels is to make wrong assumptions about how select behaves with multiple channels.

    For example, let's consider the following case (disconnectCh is a unbuffered channel):

    go func() {\n  for i := 0; i < 10; i++ {\n      messageCh <- i\n    }\n    disconnectCh <- struct{}{}\n}()\n\nfor {\n    select {\n    case v := <-messageCh:\n        fmt.Println(v)\n    case <-disconnectCh:\n        fmt.Println(\"disconnection, return\")\n        return\n    }\n}\n

    If we run this example multiple times, the result will be random:

    0\n1\n2\ndisconnection, return\n\n0\ndisconnection, return\n

    Instead of consuming the 10 messages, we only received a few of them. What\u2019s the reason? It lies in the specification of the select statement with multiple channels (https:// go.dev/ref/spec):

    Quote

    If one or more of the communications can proceed, a single one that can proceed is chosen via a uniform pseudo-random selection.

    Unlike a switch statement, where the first case with a match wins, the select statement selects randomly if multiple options are possible.

    This behavior might look odd at first, but there\u2019s a good reason for it: to prevent possible starvation. Suppose the first possible communication chosen is based on the source order. In that case, we may fall into a situation where, for example, we only receive from one channel because of a fast sender. To prevent this, the language designers decided to use a random selection.

    When using select with multiple channels, we must remember that if multiple options are possible, the first case in the source order does not automatically win. Instead, Go selects randomly, so there\u2019s no guarantee about which option will be chosen. To overcome this behavior, in the case of a single producer goroutine, we can use either unbuffered channels or a single channel.

    Source code

    "},{"location":"#not-using-notification-channels-65","title":"Not using notification channels (#65)","text":"TL;DR

    Send notifications using a chan struct{} type.

    Channels are a mechanism for communicating across goroutines via signaling. A signal can be either with or without data.

    Let\u2019s look at a concrete example. We will create a channel that will notify us whenever a certain disconnection occurs. One idea is to handle it as a chan bool:

    disconnectCh := make(chan bool)\n

    Now, let\u2019s say we interact with an API that provides us with such a channel. Because it\u2019s a channel of Booleans, we can receive either true or false messages. It\u2019s probably clear what true conveys. But what does false mean? Does it mean we haven\u2019t been disconnected? And in this case, how frequently will we receive such a signal? Does it mean we have reconnected? Should we even expect to receive false? Perhaps we should only expect to receive true messages.

    If that\u2019s the case, meaning we don\u2019t need a specific value to convey some information, we need a channel without data. The idiomatic way to handle it is a channel of empty structs: chan struct{}.

    "},{"location":"#not-using-nil-channels-66","title":"Not using nil channels (#66)","text":"TL;DR

    Using nil channels should be part of your concurrency toolset because it allows you to remove cases from select statements, for example.

    What should this code do?

    var ch chan int\n<-ch\n

    ch is a chan int type. The zero value of a channel being nil, ch is nil. The goroutine won\u2019t panic; however, it will block forever.

    The principle is the same if we send a message to a nil channel. This goroutine blocks forever:

    var ch chan int\nch <- 0\n

    Then what\u2019s the purpose of Go allowing messages to be received from or sent to a nil channel? For example, we can use nil channels to implement an idiomatic way to merge two channels:

    func merge(ch1, ch2 <-chan int) <-chan int {\n    ch := make(chan int, 1)\n\n    go func() {\n        for ch1 != nil || ch2 != nil { // Continue if at least one channel isn\u2019t nil\n            select {\n            case v, open := <-ch1:\n                if !open {\n                    ch1 = nil // Assign ch1 to a nil channel once closed\n                    break\n                }\n                ch <- v\n            case v, open := <-ch2:\n                if !open {\n                    ch2 = nil // Assigns ch2 to a nil channel once closed\n                    break\n                }\n                ch <- v\n            }\n        }\n        close(ch)\n    }()\n\n    return ch\n}\n

    This elegant solution relies on nil channels to somehow remove one case from the select statement.

    Let\u2019s keep this idea in mind: nil channels are useful in some conditions and should be part of the Go developer\u2019s toolset when dealing with concurrent code.

    Source code

    "},{"location":"#being-puzzled-about-channel-size-67","title":"Being puzzled about channel size (#67)","text":"TL;DR

    Carefully decide on the right channel type to use, given a problem. Only unbuffered channels provide strong synchronization guarantees.

    You should have a good reason to specify a channel size other than one for buffered channels.

    "},{"location":"#forgetting-about-possible-side-effects-with-string-formatting-etcd-data-race-example-and-deadlock-68","title":"Forgetting about possible side effects with string formatting (etcd data race example and deadlock) (#68)","text":"TL;DR

    Being aware that string formatting may lead to calling existing functions means watching out for possible deadlocks and other data races.

    Source code

    "},{"location":"#creating-data-races-with-append-69","title":"Creating data races with append (#69)","text":"TL;DR

    Calling append isn\u2019t always data-race-free; hence, it shouldn\u2019t be used concurrently on a shared slice.

    Source code

    "},{"location":"#using-mutexes-inaccurately-with-slices-and-maps-70","title":"Using mutexes inaccurately with slices and maps (#70)","text":"TL;DR

    Remembering that slices and maps are pointers can prevent common data races.

    Source code

    "},{"location":"#misusing-syncwaitgroup-71","title":"Misusing sync.WaitGroup (#71)","text":"TL;DR

    To accurately use sync.WaitGroup, call the Add method before spinning up goroutines.

    Source code

    "},{"location":"#forgetting-about-synccond-72","title":"Forgetting about sync.Cond (#72)","text":"TL;DR

    You can send repeated notifications to multiple goroutines with sync.Cond.

    Source code

    "},{"location":"#not-using-errgroup-73","title":"Not using errgroup (#73)","text":"TL;DR

    You can synchronize a group of goroutines and handle errors and contexts with the errgroup package.

    Source code

    "},{"location":"#copying-a-sync-type-74","title":"Copying a sync type (#74)","text":"TL;DR

    sync types shouldn\u2019t be copied.

    Source code

    "},{"location":"#standard-library","title":"Standard Library","text":""},{"location":"#providing-a-wrong-time-duration-75","title":"Providing a wrong time duration (#75)","text":"TL;DR

    Remain cautious with functions accepting a time.Duration. Even though passing an integer is allowed, strive to use the time API to prevent any possible confusion.

    Many common functions in the standard library accept a time.Duration, which is an alias for the int64 type. However, one time.Duration unit represents one nanosecond, instead of one millisecond, as commonly seen in other programming languages. As a result, passing numeric types instead of using the time.Duration API can lead to unexpected behavior.

    A developer with experience in other languages might assume that the following code creates a new time.Ticker that delivers ticks every second, given the value 1000:

    ticker := time.NewTicker(1000)\nfor {\n    select {\n    case <-ticker.C:\n        // Do something\n    }\n}\n

    However, because 1,000 time.Duration units = 1,000 nanoseconds, ticks are delivered every 1,000 nanoseconds = 1 microsecond, not every second as assumed.

    We should always use the time.Duration API to avoid confusion and unexpected behavior:

    ticker = time.NewTicker(time.Microsecond)\n// Or\nticker = time.NewTicker(1000 * time.Nanosecond)\n

    Source code

    "},{"location":"#timeafter-and-memory-leaks-76","title":"time.After and memory leaks (#76)","text":"TL;DR

    Avoiding calls to time.After in repeated functions (such as loops or HTTP handlers) can avoid peak memory consumption. The resources created by time.After are released only when the timer expires.

    Developers often use time.After in loops or HTTP handlers repeatedly to implement the timing function. But it can lead to unintended peak memory consumption due to the delayed release of resources, just like the following code:

    func consumer(ch <-chan Event) {\n    for {\n        select {\n        case event := <-ch:\n            handle(event)\n        case <-time.After(time.Hour):\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    The source code of the function time.After is as follows:

    func After(d Duration) <-chan Time {\n    return NewTimer(d).C\n}\n

    As we see, it returns receive-only channel.

    When time.After is used in a loop or repeated context, a new channel is created in each iteration. If these channels are not properly closed or if their associated timers are not stopped, they can accumulate and consume memory. The resources associated with each timer and channel are only released when the timer expires or the channel is closed.

    To avoid this happening, We can use context's timeout setting instead of time.After, like below:

    func consumer(ch <-chan Event) {\n    for {\n        ctx, cancel := context.WithTimeout(context.Background(), time.Hour)\n        select {\n        case event := <-ch:\n            cancel()\n            handle(event)\n        case <-ctx.Done():\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    We can also use time.NewTimer like so:

    func consumer(ch <-chan Event) {\n    timerDuration := 1 * time.Hour\n    timer := time.NewTimer(timerDuration)\n\n    for {\n        timer.Reset(timerDuration)\n        select {\n        case event := <-ch:\n            handle(event)\n        case <-timer.C:\n            log.Println(\"warning: no messages received\")\n        }\n    }\n}\n

    Source code

    "},{"location":"#json-handling-common-mistakes-77","title":"JSON handling common mistakes (#77)","text":"
    • Unexpected behavior because of type embedding

    Be careful about using embedded fields in Go structs. Doing so may lead to sneaky bugs like an embedded time.Time field implementing the json.Marshaler interface, hence overriding the default marshaling behavior.

    Source code

    • JSON and the monotonic clock

    When comparing two time.Time structs, recall that time.Time contains both a wall clock and a monotonic clock, and the comparison using the == operator is done on both clocks.

    Source code

    • Map of any

    To avoid wrong assumptions when you provide a map while unmarshaling JSON data, remember that numerics are converted to float64 by default.

    Source code

    "},{"location":"#common-sql-mistakes-78","title":"Common SQL mistakes (#78)","text":"
    • Forgetting that sql.Open doesn't necessarily establish connections to a database

    Call the Ping or PingContext method if you need to test your configuration and make sure a database is reachable.

    Source code

    • Forgetting about connections pooling

    Configure the database connection parameters for production-grade applications.

    • Not using prepared statements

    Using SQL prepared statements makes queries more efficient and more secure.

    Source code

    • Mishandling null values

    Deal with nullable columns in tables using pointers or sql.NullXXX types.

    Source code

    • Not handling rows iteration errors

    Call the Err method of sql.Rows after row iterations to ensure that you haven\u2019t missed an error while preparing the next row.

    Source code

    "},{"location":"#not-closing-transient-resources-http-body-sqlrows-and-osfile-79","title":"Not closing transient resources (HTTP body, sql.Rows, and os.File) (#79)","text":"TL;DR

    Eventually close all structs implementing io.Closer to avoid possible leaks.

    Source code

    "},{"location":"#forgetting-the-return-statement-after-replying-to-an-http-request-80","title":"Forgetting the return statement after replying to an HTTP request (#80)","text":"TL;DR

    To avoid unexpected behaviors in HTTP handler implementations, make sure you don\u2019t miss the return statement if you want a handler to stop after http.Error.

    Consider the following HTTP handler that handles an error from foo using http.Error:

    func handler(w http.ResponseWriter, req *http.Request) {\n    err := foo(req)\n    if err != nil {\n        http.Error(w, \"foo\", http.StatusInternalServerError)\n    }\n\n    _, _ = w.Write([]byte(\"all good\"))\n    w.WriteHeader(http.StatusCreated)\n}\n

    If we run this code and err != nil, the HTTP response would be:

    foo\nall good\n

    The response contains both the error and success messages, and also the first HTTP status code, 500. There would also be a warning log indicating that we attempted to write the status code multiple times:

    2023/10/10 16:45:33 http: superfluous response.WriteHeader call from main.handler (main.go:20)\n

    The mistake in this code is that http.Error does not stop the handler's execution, which means the success message and status code get written in addition to the error. Beyond an incorrect response, failing to return after writing an error can lead to the unwanted execution of code and unexpected side-effects. The following code adds the return statement following the http.Error and exhibits the desired behavior when ran:

    func handler(w http.ResponseWriter, req *http.Request) {\n    err := foo(req)\n    if err != nil {\n        http.Error(w, \"foo\", http.StatusInternalServerError)\n        return // Adds the return statement\n    }\n\n    _, _ = w.Write([]byte(\"all good\"))\n    w.WriteHeader(http.StatusCreated)\n}\n

    Source code

    "},{"location":"#using-the-default-http-client-and-server-81","title":"Using the default HTTP client and server (#81)","text":"TL;DR

    For production-grade applications, don\u2019t use the default HTTP client and server implementations. These implementations are missing timeouts and behaviors that should be mandatory in production.

    Source code

    "},{"location":"#testing","title":"Testing","text":""},{"location":"#not-categorizing-tests-build-tags-environment-variables-and-short-mode-82","title":"Not categorizing tests (build tags, environment variables, and short mode) (#82)","text":"TL;DR

    Categorizing tests using build flags, environment variables, or short mode makes the testing process more efficient. You can create test categories using build flags or environment variables (for example, unit versus integration tests) and differentiate short from long-running tests to decide which kinds of tests to execute.

    Source code

    "},{"location":"#not-enabling-the-race-flag-83","title":"Not enabling the race flag (#83)","text":"TL;DR

    Enabling the -race flag is highly recommended when writing concurrent applications. Doing so allows you to catch potential data races that can lead to software bugs.

    "},{"location":"#not-using-test-execution-modes-parallel-and-shuffle-84","title":"Not using test execution modes (parallel and shuffle) (#84)","text":"TL;DR

    Using the -parallel flag is an efficient way to speed up tests, especially long-running ones. Use the -shuffle flag to help ensure that a test suite doesn\u2019t rely on wrong assumptions that could hide bugs.

    "},{"location":"#not-using-table-driven-tests-85","title":"Not using table-driven tests (#85)","text":"TL;DR

    Table-driven tests are an efficient way to group a set of similar tests to prevent code duplication and make future updates easier to handle.

    Source code

    "},{"location":"#sleeping-in-unit-tests-86","title":"Sleeping in unit tests (#86)","text":"TL;DR

    Avoid sleeps using synchronization to make a test less flaky and more robust. If synchronization isn\u2019t possible, consider a retry approach.

    Source code

    "},{"location":"#not-dealing-with-the-time-api-efficiently-87","title":"Not dealing with the time API efficiently (#87)","text":"TL;DR

    Understanding how to deal with functions using the time API is another way to make a test less flaky. You can use standard techniques such as handling the time as part of a hidden dependency or asking clients to provide it.

    Source code

    "},{"location":"#not-using-testing-utility-packages-httptest-and-iotest-88","title":"Not using testing utility packages (httptest and iotest) (#88)","text":"
    • The httptest package is helpful for dealing with HTTP applications. It provides a set of utilities to test both clients and servers.

    Source code

    • The iotest package helps write io.Reader and test that an application is tolerant to errors.

    Source code

    "},{"location":"#writing-inaccurate-benchmarks-89","title":"Writing inaccurate benchmarks (#89)","text":"TL;DR

    Regarding benchmarks:

    • Use time methods to preserve the accuracy of a benchmark.
    • Increasing benchtime or using tools such as benchstat can be helpful when dealing with micro-benchmarks.
    • Be careful with the results of a micro-benchmark if the system that ends up running the application is different from the one running the micro-benchmark.
    • Make sure the function under test leads to a side effect, to prevent compiler optimizations from fooling you about the benchmark results.
    • To prevent the observer effect, force a benchmark to re-create the data used by a CPU-bound function.

    Read the full section here.

    Source code

    "},{"location":"#not-exploring-all-the-go-testing-features-90","title":"Not exploring all the Go testing features (#90)","text":"
    • Code coverage

    Use code coverage with the -coverprofile flag to quickly see which part of the code needs more attention.

    • Testing from a different package

    Place unit tests in a different package to enforce writing tests that focus on an exposed behavior, not internals.

    Source code

    • Utility functions

    Handling errors using the *testing.T variable instead of the classic if err != nil makes code shorter and easier to read.

    Source code

    • Setup and teardown

    You can use setup and teardown functions to configure a complex environment, such as in the case of integration tests.

    Source code

    "},{"location":"#not-using-fuzzing-community-mistake","title":"Not using fuzzing (community mistake)","text":"TL;DR

    Fuzzing is an efficient strategy to detect random, unexpected, or malformed inputs to complex functions and methods in order to discover vulnerabilities, bugs, or even potential crashes.

    Credits: @jeromedoucet

    "},{"location":"#optimizations","title":"Optimizations","text":""},{"location":"#not-understanding-cpu-caches-91","title":"Not understanding CPU caches (#91)","text":"
    • CPU architecture

    Understanding how to use CPU caches is important for optimizing CPU-bound applications because the L1 cache is about 50 to 100 times faster than the main memory.

    • Cache line

    Being conscious of the cache line concept is critical to understanding how to organize data in data-intensive applications. A CPU doesn\u2019t fetch memory word by word; instead, it usually copies a memory block to a 64-byte cache line. To get the most out of each individual cache line, enforce spatial locality.

    Source code

    • Slice of structs vs. struct of slices

    Source code

    • Predictability

    Making code predictable for the CPU can also be an efficient way to optimize certain functions. For example, a unit or constant stride is predictable for the CPU, but a non-unit stride (for example, a linked list) isn\u2019t predictable.

    Source code

    • Cache placement policy

    To avoid a critical stride, hence utilizing only a tiny portion of the cache, be aware that caches are partitioned.

    "},{"location":"#writing-concurrent-code-that-leads-to-false-sharing-92","title":"Writing concurrent code that leads to false sharing (#92)","text":"TL;DR

    Knowing that lower levels of CPU caches aren\u2019t shared across all the cores helps avoid performance-degrading patterns such as false sharing while writing concurrency code. Sharing memory is an illusion.

    Read the full section here.

    Source code

    "},{"location":"#not-taking-into-account-instruction-level-parallelism-93","title":"Not taking into account instruction-level parallelism (#93)","text":"TL;DR

    Use instruction-level parallelism (ILP) to optimize specific parts of your code to allow a CPU to execute as many parallel instructions as possible. Identifying data hazards is one of the main steps.

    Source code

    "},{"location":"#not-being-aware-of-data-alignment-94","title":"Not being aware of data alignment (#94)","text":"TL;DR

    You can avoid common mistakes by remembering that in Go, basic types are aligned with their own size. For example, keep in mind that reorganizing the fields of a struct by size in descending order can lead to more compact structs (less memory allocation and potentially a better spatial locality).

    Source code

    "},{"location":"#not-understanding-stack-vs-heap-95","title":"Not understanding stack vs. heap (#95)","text":"TL;DR

    Understanding the fundamental differences between heap and stack should also be part of your core knowledge when optimizing a Go application. Stack allocations are almost free, whereas heap allocations are slower and rely on the GC to clean the memory.

    Source code

    "},{"location":"#not-knowing-how-to-reduce-allocations-api-change-compiler-optimizations-and-syncpool-96","title":"Not knowing how to reduce allocations (API change, compiler optimizations, and sync.Pool) (#96)","text":"TL;DR

    Reducing allocations is also an essential aspect of optimizing a Go application. This can be done in different ways, such as designing the API carefully to prevent sharing up, understanding the common Go compiler optimizations, and using sync.Pool.

    Source code

    "},{"location":"#not-relying-on-inlining-97","title":"Not relying on inlining (#97)","text":"TL;DR

    Use the fast-path inlining technique to efficiently reduce the amortized time to call a function.

    "},{"location":"#not-using-go-diagnostics-tooling-98","title":"Not using Go diagnostics tooling (#98)","text":"TL;DR

    Rely on profiling and the execution tracer to understand how an application performs and the parts to optimize.

    Read the full section here.

    "},{"location":"#not-understanding-how-the-gc-works-99","title":"Not understanding how the GC works (#99)","text":"TL;DR

    Understanding how to tune the GC can lead to multiple benefits such as handling sudden load increases more efficiently.

    "},{"location":"#not-understanding-the-impacts-of-running-go-in-docker-and-kubernetes-100","title":"Not understanding the impacts of running Go in Docker and Kubernetes (#100)","text":"TL;DR

    To help avoid CPU throttling when deployed in Docker and Kubernetes, keep in mind that Go isn\u2019t CFS-aware.

    The GOMAXPROCS variable defines the limit of OS threads in charge of executing user-level code simultaneously. By default, it's set to the number of OS-apparent logical CPU cores.

    When running some Go code inside Docker and Kubernetes, we must know that Go isn't CFS-aware (github.com/golang/go/issues/33803). Therefore, GOMAXPROCS isn't automatically set to the value of spec.containers.resources.limits.cpu (see Kubernetes Resource Management for Pods and Containers); instead, it's set to the number of logical cores on the host machine. The main implication is that it can lead to an increased tail latency in some specific situations.

    One solution is to rely on uber-go/automaxprocs that automatically set GOMAXPROCS to match the Linux container CPU quota.

    "},{"location":"20-slice/","title":"Not understanding slice length and capacity","text":"

    It\u2019s pretty common for Go developers to mix slice length and capacity or not understand them thoroughly. Assimilating these two concepts is essential for efficiently handling core operations such as slice initialization and adding elements with append, copying, or slicing. This misunderstanding can lead to using slices suboptimally or even to memory leaks.

    In Go, a slice is backed by an array. That means the slice\u2019s data is stored contiguously in an array data structure. A slice also handles the logic of adding an element if the backing array is full or shrinking the backing array if it\u2019s almost empty.

    Internally, a slice holds a pointer to the backing array plus a length and a capacity. The length is the number of elements the slice contains, whereas the capacity is the number of elements in the backing array, counting from the first element in the slice. Let\u2019s go through a few examples to make things clearer. First, let\u2019s initialize a slice with a given length and capacity:

    s := make([]int, 3, 6) // Three-length, six-capacity slice\n

    The first argument, representing the length, is mandatory. However, the second argument representing the capacity is optional. Figure 1 shows the result of this code in memory.

    Figure 1: A three-length, six-capacity slice.

    In this case, make creates an array of six elements (the capacity). But because the length was set to 3, Go initializes only the first three elements. Also, because the slice is an []int type, the first three elements are initialized to the zeroed value of an int: 0. The grayed elements are allocated but not yet used.

    If we print this slice, we get the elements within the range of the length, [0 0 0]. If we set s[1] to 1, the second element of the slice updates without impacting its length or capacity. Figure 2 illustrates this.

    Figure 2: Updating the slice\u2019s second element: s[1] = 1.

    However, accessing an element outside the length range is forbidden, even though it\u2019s already allocated in memory. For example, s[4] = 0 would lead to the following panic:

    panic: runtime error: index out of range [4] with length 3\n

    How can we use the remaining space of the slice? By using the append built-in function:

    s = append(s, 2)\n

    This code appends to the existing s slice a new element. It uses the first grayed element (which was allocated but not yet used) to store element 2, as figure 3 shows.

    Figure 3: Appending an element to s.

    The length of the slice is updated from 3 to 4 because the slice now contains four elements. Now, what happens if we add three more elements so that the backing array isn\u2019t large enough?

    s = append(s, 3, 4, 5)\nfmt.Println(s)\n

    If we run this code, we see that the slice was able to cope with our request:

    [0 1 0 2 3 4 5]\n

    Because an array is a fixed-size structure, it can store the new elements until element 4. When we want to insert element 5, the array is already full: Go internally creates another array by doubling the capacity, copying all the elements, and then inserting element 5. Figure 4 shows this process.

    Figure 4: Because the initial backing array is full, Go creates another array and copies all the elements.

    The slice now references the new backing array. What will happen to the previous backing array? If it\u2019s no longer referenced, it\u2019s eventually freed by the garbage collector (GC) if allocated on the heap. (We discuss heap memory in mistake #95, \u201cNot understanding stack vs. heap,\u201d and we look at how the GC works in mistake #99, \u201cNot understanding how the GC works.\u201d)

    What happens with slicing? Slicing is an operation done on an array or a slice, providing a half-open range; the first index is included, whereas the second is excluded. The following example shows the impact, and figure 5 displays the result in memory:

    s1 := make([]int, 3, 6) // Three-length, six-capacity slice\ns2 := s1[1:3] // Slicing from indices 1 to 3\n

    Figure 5: The slices s1 and s2 reference the same backing array with different lengths and capacities.

    First, s1 is created as a three-length, six-capacity slice. When s2 is created by slicing s1, both slices reference the same backing array. However, s2 starts from a different index, 1. Therefore, its length and capacity (a two-length, five-capacity slice) differ from s1. If we update s1[1] or s2[0], the change is made to the same array, hence, visible in both slices, as figure 6 shows.

    Figure 6: Because s1 and s2 are backed by the same array, updating a common element makes the change visible in both slices.

    Now, what happens if we append an element to s2? Does the following code change s1 as well?

    s2 = append(s2, 2)\n

    The shared backing array is modified, but only the length of s2 changes. Figure 7 shows the result of appending an element to s2.

    Figure 7: Appending an element to s2.

    s1 remains a three-length, six-capacity slice. Therefore, if we print s1 and s2, the added element is only visible for s2:

    s1=[0 1 0], s2=[1 0 2]\n

    It\u2019s important to understand this behavior so that we don\u2019t make wrong assumptions while using append.

    Note

    In these examples, the backing array is internal and not available directly to the Go developer. The only exception is when a slice is created from slicing an existing array.

    One last thing to note: what if we keep appending elements to s2 until the backing array is full? What will the state be, memory-wise? Let\u2019s add three more elements so that the backing array will not have enough capacity:

    s2 = append(s2, 3)\ns2 = append(s2, 4) // At this stage, the backing is already full\ns2 = append(s2, 5)\n

    This code leads to creating another backing array. Figure 8 displays the results in memory.

    Figure 8: Appending elements to s2 until the backing array is full.

    s1 and s2 now reference two different arrays. As s1 is still a three-length, six-capacity slice, it still has some available buffer, so it keeps referencing the initial array. Also, the new backing array was made by copying the initial one from the first index of s2. That\u2019s why the new array starts with element 1, not 0.

    To summarize, the slice length is the number of available elements in the slice, whereas the slice capacity is the number of elements in the backing array. Adding an element to a full slice (length == capacity) leads to creating a new backing array with a new capacity, copying all the elements from the previous array, and updating the slice pointer to the new array.

    "},{"location":"28-maps-memory-leaks/","title":"Maps and memory leaks","text":"

    When working with maps in Go, we need to understand some important characteristics of how a map grows and shrinks. Let\u2019s delve into this to prevent issues that can cause memory leaks.

    First, to view a concrete example of this problem, let\u2019s design a scenario where we will work with the following map:

    m := make(map[int][128]byte)\n

    Each value of m is an array of 128 bytes. We will do the following:

    1. Allocate an empty map.
    2. Add 1 million elements.
    3. Remove all the elements, and run a Garbage Collection (GC).

    After each step, we want to print the size of the heap (using a printAlloc utility function). This shows us how this example behaves memory-wise:

    func main() {\n    n := 1_000_000\n    m := make(map[int][128]byte)\n    printAlloc()\n\n    for i := 0; i < n; i++ { // Adds 1 million elements\n        m[i] = [128]byte{}\n    }\n    printAlloc()\n\n    for i := 0; i < n; i++ { // Deletes 1 million elements\n        delete(m, i)\n    }\n\n    runtime.GC() // Triggers a manual GC\n    printAlloc()\n    runtime.KeepAlive(m) // Keeps a reference to m so that the map isn\u2019t collected\n}\n\nfunc printAlloc() {\n    var m runtime.MemStats\n    runtime.ReadMemStats(&m)\n    fmt.Printf(\"%d MB\\n\", m.Alloc/(1024*1024))\n}\n

    We allocate an empty map, add 1 million elements, remove 1 million elements, and then run a GC. We also make sure to keep a reference to the map using runtime.KeepAlive so that the map isn\u2019t collected as well. Let\u2019s run this example:

    0 MB   <-- After m is allocated\n461 MB <-- After we add 1 million elements\n293 MB <-- After we remove 1 million elements\n

    What can we observe? At first, the heap size is minimal. Then it grows significantly after having added 1 million elements to the map. But if we expected the heap size to decrease after removing all the elements, this isn\u2019t how maps work in Go. In the end, even though the GC has collected all the elements, the heap size is still 293 MB. So the memory shrunk, but not as we might have expected. What\u2019s the rationale? We need to delve into how a map works in Go.

    A map provides an unordered collection of key-value pairs in which all the keys are distinct. In Go, a map is based on the hash table data structure: an array where each element is a pointer to a bucket of key-value pairs, as shown in figure 1.

    Figure 1: A hash table example with a focus on bucket 0.

    Each bucket is a fixed-size array of eight elements. In the case of an insertion into a bucket that is already full (a bucket overflow), Go creates another bucket of eight elements and links the previous one to it. Figure 2 shows an example:

    Figure 2: In case of a bucket overflow, Go allocates a new bucket and links the previous bucket to it.

    Under the hood, a Go map is a pointer to a runtime.hmap struct. This struct contains multiple fields, including a B field, giving the number of buckets in the map:

    type hmap struct {\n    B uint8 // log_2 of # of buckets\n            // (can hold up to loadFactor * 2^B items)\n    // ...\n}\n

    After adding 1 million elements, the value of B equals 18, which means 2\u00b9\u2078 = 262,144 buckets. When we remove 1 million elements, what\u2019s the value of B? Still 18. Hence, the map still contains the same number of buckets.

    The reason is that the number of buckets in a map cannot shrink. Therefore, removing elements from a map doesn\u2019t impact the number of existing buckets; it just zeroes the slots in the buckets. A map can only grow and have more buckets; it never shrinks.

    In the previous example, we went from 461 MB to 293 MB because the elements were collected, but running the GC didn\u2019t impact the map itself. Even the number of extra buckets (the buckets created because of overflows) remains the same.

    Let\u2019s take a step back and discuss when the fact that a map cannot shrink can be a problem. Imagine building a cache using a map[int][128]byte. This map holds per customer ID (the int), a sequence of 128 bytes. Now, suppose we want to save the last 1,000 customers. The map size will remain constant, so we shouldn\u2019t worry about the fact that a map cannot shrink.

    However, let\u2019s say we want to store one hour of data. Meanwhile, our company has decided to have a big promotion for Black Friday: in one hour, we may have millions of customers connected to our system. But a few days after Black Friday, our map will contain the same number of buckets as during the peak time. This explains why we can experience high memory consumption that doesn\u2019t significantly decrease in such a scenario.

    What are the solutions if we don\u2019t want to manually restart our service to clean the amount of memory consumed by the map? One solution could be to re-create a copy of the current map at a regular pace. For example, every hour, we can build a new map, copy all the elements, and release the previous one. The main drawback of this option is that following the copy and until the next garbage collection, we may consume twice the current memory for a short period.

    Another solution would be to change the map type to store an array pointer: map[int]*[128]byte. It doesn\u2019t solve the fact that we will have a significant number of buckets; however, each bucket entry will reserve the size of a pointer for the value instead of 128 bytes (8 bytes on 64-bit systems and 4 bytes on 32-bit systems).

    Coming back to the original scenario, let\u2019s compare the memory consumption for each map type following each step. The following table shows the comparison.

    Step map[int][128]byte map[int]*[128]byte Allocate an empty map 0 MB 0 MB Add 1 million elements 461 MB 182 MB Remove all the elements and run a GC 293 MB 38 MB Note

    If a key or a value is over 128 bytes, Go won\u2019t store it directly in the map bucket. Instead, Go stores a pointer to reference the key or the value.

    As we have seen, adding n elements to a map and then deleting all the elements means keeping the same number of buckets in memory. So, we must remember that because a Go map can only grow in size, so does its memory consumption. There is no automated strategy to shrink it. If this leads to high memory consumption, we can try different options such as forcing Go to re-create the map or using pointers to check if it can be optimized.

    "},{"location":"56-concurrency-faster/","title":"Thinking concurrency is always faster","text":"

    A misconception among many developers is believing that a concurrent solution is always faster than a sequential one. This couldn\u2019t be more wrong. The overall performance of a solution depends on many factors, such as the efficiency of our code structure (concurrency), which parts can be tackled in parallel, and the level of contention among the computation units. This post reminds us about some fundamental knowledge of concurrency in Go; then we will see a concrete example where a concurrent solution isn\u2019t necessarily faster.

    "},{"location":"56-concurrency-faster/#go-scheduling","title":"Go Scheduling","text":"

    A thread is the smallest unit of processing that an OS can perform. If a process wants to execute multiple actions simultaneously, it spins up multiple threads. These threads can be:

    • Concurrent \u2014 Two or more threads can start, run, and complete in overlapping time periods.
    • Parallel \u2014 The same task can be executed multiple times at once.

    The OS is responsible for scheduling the thread\u2019s processes optimally so that:

    • All the threads can consume CPU cycles without being starved for too much time.
    • The workload is distributed as evenly as possible among the different CPU cores.
    Note

    The word thread can also have a different meaning at a CPU level. Each physical core can be composed of multiple logical cores (the concept of hyper-threading), and a logical core is also called a thread. In this post, when we use the word thread, we mean the unit of processing, not a logical core.

    A CPU core executes different threads. When it switches from one thread to another, it executes an operation called context switching. The active thread consuming CPU cycles was in an executing state and moves to a runnable state, meaning it\u2019s ready to be executed pending an available core. Context switching is considered an expensive operation because the OS needs to save the current execution state of a thread before the switch (such as the current register values).

    As Go developers, we can\u2019t create threads directly, but we can create goroutines, which can be thought of as application-level threads. However, whereas an OS thread is context-switched on and off a CPU core by the OS, a goroutine is context-switched on and off an OS thread by the Go runtime. Also, compared to an OS thread, a goroutine has a smaller memory footprint: 2 KB for goroutines from Go 1.4. An OS thread depends on the OS, but, for example, on Linux/x86\u201332, the default size is 2 MB (see https://man7.org/linux/man-pages/man3/pthread_create.3.html). Having a smaller size makes context switching faster.

    Note

    Context switching a goroutine versus a thread is about 80% to 90% faster, depending on the architecture.

    Let\u2019s now discuss how the Go scheduler works to overview how goroutines are handled. Internally, the Go scheduler uses the following terminology (see proc.go):

    • G \u2014 Goroutine
    • M \u2014 OS thread (stands for machine)
    • P \u2014 CPU core (stands for processor)

    Each OS thread (M) is assigned to a CPU core (P) by the OS scheduler. Then, each goroutine (G) runs on an M. The GOMAXPROCS variable defines the limit of Ms in charge of executing user-level code simultaneously. But if a thread is blocked in a system call (for example, I/O), the scheduler can spin up more Ms. As of Go 1.5, GOMAXPROCS is by default equal to the number of available CPU cores.

    A goroutine has a simpler lifecycle than an OS thread. It can be doing one of the following:

    • Executing \u2014 The goroutine is scheduled on an M and executing its instructions.
    • Runnable \u2014 The goroutine is waiting to be in an executing state.
    • Waiting \u2014 The goroutine is stopped and pending something completing, such as a system call or a synchronization operation (such as acquiring a mutex).

    There\u2019s one last stage to understand about the implementation of Go scheduling: when a goroutine is created but cannot be executed yet; for example, all the other Ms are already executing a G. In this scenario, what will the Go runtime do about it? The answer is queuing. The Go runtime handles two kinds of queues: one local queue per P and a global queue shared among all the Ps.

    Figure 1 shows a given scheduling situation on a four-core machine with GOMAXPROCS equal to 4. The parts are the logical cores (Ps), goroutines (Gs), OS threads (Ms), local queues, and global queue:

    Figure 1: An example of the current state of a Go application executed on a four-core machine. Goroutines that aren\u2019t in an executing state are either runnable (pending being executed) or waiting (pending a blocking operation)

    First, we can see five Ms, whereas GOMAXPROCS is set to 4. But as we mentioned, if needed, the Go runtime can create more OS threads than the GOMAXPROCS value.

    P0, P1, and P3 are currently busy executing Go runtime threads. But P2 is presently idle as M3 is switched off P2, and there\u2019s no goroutine to be executed. This isn\u2019t a good situation because six runnable goroutines are pending being executed, some in the global queue and some in other local queues. How will the Go runtime handle this situation? Here\u2019s the scheduling implementation in pseudocode (see proc.go):

    runtime.schedule() {\n    // Only 1/61 of the time, check the global runnable queue for a G.\n    // If not found, check the local queue.\n    // If not found,\n    //     Try to steal from other Ps.\n    //     If not, check the global runnable queue.\n    //     If not found, poll network.\n}\n

    Every sixty-first execution, the Go scheduler will check whether goroutines from the global queue are available. If not, it will check its local queue. Meanwhile, if both the global and local queues are empty, the Go scheduler can pick up goroutines from other local queues. This principle in scheduling is called work stealing, and it allows an underutilized processor to actively look for another processor\u2019s goroutines and steal some.

    One last important thing to mention: prior to Go 1.14, the scheduler was cooperative, which meant a goroutine could be context-switched off a thread only in specific blocking cases (for example, channel send or receive, I/O, waiting to acquire a mutex). Since Go 1.14, the Go scheduler is now preemptive: when a goroutine is running for a specific amount of time (10 ms), it will be marked preemptible and can be context-switched off to be replaced by another goroutine. This allows a long-running job to be forced to share CPU time.

    Now that we understand the fundamentals of scheduling in Go, let\u2019s look at a concrete example: implementing a merge sort in a parallel manner.

    "},{"location":"56-concurrency-faster/#parallel-merge-sort","title":"Parallel Merge Sort","text":"

    First, let\u2019s briefly review how the merge sort algorithm works. Then we will implement a parallel version. Note that the objective isn\u2019t to implement the most efficient version but to support a concrete example showing why concurrency isn\u2019t always faster.

    The merge sort algorithm works by breaking a list repeatedly into two sublists until each sublist consists of a single element and then merging these sublists so that the result is a sorted list (see figure 2). Each split operation splits the list into two sublists, whereas the merge operation merges two sublists into a sorted list.

    Figure 2: Applying the merge sort algorithm repeatedly breaks each list into two sublists. Then the algorithm uses a merge operation such that the resulting list is sorted

    Here is the sequential implementation of this algorithm. We don\u2019t include all of the code as it\u2019s not the main point of this section:

    func sequentialMergesort(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    middle := len(s) / 2\n    sequentialMergesort(s[:middle]) // First half\n    sequentialMergesort(s[middle:]) // Second half\n    merge(s, middle) // Merges the two halves\n}\n\nfunc merge(s []int, middle int) {\n    // ...\n}\n

    This algorithm has a structure that makes it open to concurrency. Indeed, as each sequentialMergesort operation works on an independent set of data that doesn\u2019t need to be fully copied (here, an independent view of the underlying array using slicing), we could distribute this workload among the CPU cores by spinning up each sequentialMergesort operation in a different goroutine. Let\u2019s write a first parallel implementation:

    func parallelMergesortV1(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    middle := len(s) / 2\n\n    var wg sync.WaitGroup\n    wg.Add(2)\n\n    go func() { // Spins up the first half of the work in a goroutine\n        defer wg.Done()\n        parallelMergesortV1(s[:middle])\n    }()\n\n    go func() { // Spins up the second half of the work in a goroutine\n        defer wg.Done()\n        parallelMergesortV1(s[middle:])\n    }()\n\n    wg.Wait()\n    merge(s, middle) // Merges the halves\n}\n

    In this version, each half of the workload is handled in a separate goroutine. The parent goroutine waits for both parts by using sync.WaitGroup. Hence, we call the Wait method before the merge operation.

    We now have a parallel version of the merge sort algorithm. Therefore, if we run a benchmark to compare this version against the sequential one, the parallel version should be faster, correct? Let\u2019s run it on a four-core machine with 10,000 elements:

    Benchmark_sequentialMergesort-4       2278993555 ns/op\nBenchmark_parallelMergesortV1-4      17525998709 ns/op\n

    Surprisingly, the parallel version is almost an order of magnitude slower. How can we explain this result? How is it possible that a parallel version that distributes a workload across four cores is slower than a sequential version running on a single machine? Let\u2019s analyze the problem.

    If we have a slice of, say, 1,024 elements, the parent goroutine will spin up two goroutines, each in charge of handling a half consisting of 512 elements. Each of these goroutines will spin up two new goroutines in charge of handling 256 elements, then 128, and so on, until we spin up a goroutine to compute a single element.

    If the workload that we want to parallelize is too small, meaning we\u2019re going to compute it too fast, the benefit of distributing a job across cores is destroyed: the time it takes to create a goroutine and have the scheduler execute it is much too high compared to directly merging a tiny number of items in the current goroutine. Although goroutines are lightweight and faster to start than threads, we can still face cases where a workload is too small.

    So what can we conclude from this result? Does it mean the merge sort algorithm cannot be parallelized? Wait, not so fast.

    Let\u2019s try another approach. Because merging a tiny number of elements within a new goroutine isn\u2019t efficient, let\u2019s define a threshold. This threshold will represent how many elements a half should contain in order to be handled in a parallel manner. If the number of elements in the half is fewer than this value, we will handle it sequentially. Here\u2019s a new version:

    const max = 2048 // Defines the threshold\n\nfunc parallelMergesortV2(s []int) {\n    if len(s) <= 1 {\n        return\n    }\n\n    if len(s) <= max {\n        sequentialMergesort(s) // Calls our initial sequential version\n    } else { // If bigger than the threshold, keeps the parallel version\n        middle := len(s) / 2\n\n        var wg sync.WaitGroup\n        wg.Add(2)\n\n        go func() {\n            defer wg.Done()\n            parallelMergesortV2(s[:middle])\n        }()\n\n        go func() {\n            defer wg.Done()\n            parallelMergesortV2(s[middle:])\n        }()\n\n        wg.Wait()\n        merge(s, middle)\n    }\n}\n

    If the number of elements in the s slice is smaller than max, we call the sequential version. Otherwise, we keep calling our parallel implementation. Does this approach impact the result? Yes, it does:

    Benchmark_sequentialMergesort-4       2278993555 ns/op\nBenchmark_parallelMergesortV1-4      17525998709 ns/op\nBenchmark_parallelMergesortV2-4       1313010260 ns/op\n

    Our v2 parallel implementation is more than 40% faster than the sequential one, thanks to this idea of defining a threshold to indicate when parallel should be more efficient than sequential.

    Note

    Why did I set the threshold to 2,048? Because it was the optimal value for this specific workload on my machine. In general, such magic values should be defined carefully with benchmarks (running on an execution environment similar to production). It\u2019s also pretty interesting to note that running the same algorithm in a programming language that doesn\u2019t implement the concept of goroutines has an impact on the value. For example, running the same example in Java using threads means an optimal value closer to 8,192. This tends to illustrate how goroutines are more efficient than threads.

    "},{"location":"56-concurrency-faster/#conclusion","title":"Conclusion","text":"

    We have seen throughout this post the fundamental concepts of scheduling in Go: the differences between a thread and a goroutine and how the Go runtime schedules goroutines. Meanwhile, using the parallel merge sort example, we illustrated that concurrency isn\u2019t always necessarily faster. As we have seen, spinning up goroutines to handle minimal workloads (merging only a small set of elements) demolishes the benefit we could get from parallelism.

    So, where should we go from here? We must keep in mind that concurrency isn\u2019t always faster and shouldn\u2019t be considered the default way to go for all problems. First, it makes things more complex. Also, modern CPUs have become incredibly efficient at executing sequential code and predictable code. For example, a superscalar processor can parallelize instruction execution over a single core with high efficiency.

    Does this mean we shouldn\u2019t use concurrency? Of course not. However, it\u2019s essential to keep these conclusions in mind. If we\u2019re not sure that a parallel version will be faster, the right approach may be to start with a simple sequential version and build from there using profiling (mistake #98, \u201cNot using Go diagnostics tooling\u201d) and benchmarks (mistake #89, \u201cWriting inaccurate benchmarks\u201d), for example. It can be the only way to ensure that a concurrent implementation is worth it.

    "},{"location":"89-benchmarks/","title":"Writing inaccurate benchmarks","text":"

    In general, we should never guess about performance. When writing optimizations, so many factors may come into play that even if we have a strong opinion about the results, it\u2019s rarely a bad idea to test them. However, writing benchmarks isn\u2019t straightforward. It can be pretty simple to write inaccurate benchmarks and make wrong assumptions based on them. The goal of this post is to examine four common and concrete traps leading to inaccuracy:

    • Not resetting or pausing the timer
    • Making wrong assumptions about micro-benchmarks
    • Not being careful about compiler optimizations
    • Being fooled by the observer effect
    "},{"location":"89-benchmarks/#general-concepts","title":"General concepts","text":"

    Before discussing these traps, let\u2019s briefly review how benchmarks work in Go. The skeleton of a benchmark is as follows:

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        foo()\n    }\n}\n

    The function name starts with the Benchmark prefix. The function under test (foo) is called within the for loop. b.N represents a variable number of iterations. When running a benchmark, Go tries to make it match the requested benchmark time. The benchmark time is set by default to 1 second and can be changed with the -benchtime flag. b.N starts at 1; if the benchmark completes in under 1 second, b.N is increased, and the benchmark runs again until b.N roughly matches benchtime:

    $ go test -bench=.\ncpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkFoo-4                73          16511228 ns/op\n

    Here, the benchmark took about 1 second, and foo was executed 73 times, for an average execution time of 16,511,228 nanoseconds. We can change the benchmark time using -benchtime:

    $ go test -bench=. -benchtime=2s\nBenchmarkFoo-4               150          15832169 ns/op\n

    foo was executed roughly twice more than during the previous benchmark.

    Next, let\u2019s look at some common traps.

    "},{"location":"89-benchmarks/#not-resetting-or-pausing-the-timer","title":"Not resetting or pausing the timer","text":"

    In some cases, we need to perform operations before the benchmark loop. These operations may take quite a while (for example, generating a large slice of data) and may significantly impact the benchmark results:

    func BenchmarkFoo(b *testing.B) {\n    expensiveSetup()\n    for i := 0; i < b.N; i++ {\n        functionUnderTest()\n    }\n}\n

    In this case, we can use the ResetTimer method before entering the loop:

    func BenchmarkFoo(b *testing.B) {\n    expensiveSetup()\n    b.ResetTimer() // Reset the benchmark timer\n    for i := 0; i < b.N; i++ {\n        functionUnderTest()\n    }\n}\n

    Calling ResetTimer zeroes the elapsed benchmark time and memory allocation counters since the beginning of the test. This way, an expensive setup can be discarded from the test results.

    What if we have to perform an expensive setup not just once but within each loop iteration?

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        expensiveSetup()\n        functionUnderTest()\n    }\n}\n

    We can\u2019t reset the timer, because that would be executed during each loop iteration. But we can stop and resume the benchmark timer, surrounding the call to expensiveSetup:

    func BenchmarkFoo(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        b.StopTimer() // Pause the benchmark timer\n        expensiveSetup()\n        b.StartTimer() // Resume the benchmark timer\n        functionUnderTest()\n    }\n}\n

    Here, we pause the benchmark timer to perform the expensive setup and then resume the timer.

    Note

    There\u2019s one catch to remember about this approach: if the function under test is too fast to execute compared to the setup function, the benchmark may take too long to complete. The reason is that it would take much longer than 1 second to reach benchtime. Calculating the benchmark time is based solely on the execution time of functionUnderTest. So, if we wait a significant time in each loop iteration, the benchmark will be much slower than 1 second. If we want to keep the benchmark, one possible mitigation is to decrease benchtime.

    We must be sure to use the timer methods to preserve the accuracy of a benchmark.

    "},{"location":"89-benchmarks/#making-wrong-assumptions-about-micro-benchmarks","title":"Making wrong assumptions about micro-benchmarks","text":"

    A micro-benchmark measures a tiny computation unit, and it can be extremely easy to make wrong assumptions about it. Let\u2019s say, for example, that we aren\u2019t sure whether to use atomic.StoreInt32 or atomic.StoreInt64 (assuming that the values we handle will always fit in 32 bits). We want to write a benchmark to compare both functions:

    func BenchmarkAtomicStoreInt32(b *testing.B) {\n    var v int32\n    for i := 0; i < b.N; i++ {\n        atomic.StoreInt32(&v, 1)\n    }\n}\n\nfunc BenchmarkAtomicStoreInt64(b *testing.B) {\n    var v int64\n    for i := 0; i < b.N; i++ {\n        atomic.StoreInt64(&v, 1)\n    }\n}\n

    If we run this benchmark, here\u2019s some example output:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkAtomicStoreInt32\nBenchmarkAtomicStoreInt32-4    197107742           5.682 ns/op\nBenchmarkAtomicStoreInt64\nBenchmarkAtomicStoreInt64-4    213917528           5.134 ns/op\n

    We could easily take this benchmark for granted and decide to use atomic.StoreInt64 because it appears to be faster. Now, for the sake of doing a fair benchmark, we reverse the order and test atomic.StoreInt64 first, followed by atomic.StoreInt32. Here is some example output:

    BenchmarkAtomicStoreInt64\nBenchmarkAtomicStoreInt64-4    224900722           5.434 ns/op\nBenchmarkAtomicStoreInt32\nBenchmarkAtomicStoreInt32-4    230253900           5.159 ns/op\n

    This time, atomic.StoreInt32 has better results. What happened?

    In the case of micro-benchmarks, many factors can impact the results, such as machine activity while running the benchmarks, power management, thermal scaling, and better cache alignment of a sequence of instructions. We must remember that many factors, even outside the scope of our Go project, can impact the results.

    Note

    We should make sure the machine executing the benchmark is idle. However, external processes may run in the background, which may affect benchmark results. For that reason, tools such as perflock can limit how much CPU a benchmark can consume. For example, we can run a benchmark with 70% of the total available CPU, giving 30% to the OS and other processes and reducing the impact of the machine activity factor on the results.

    One option is to increase the benchmark time using the -benchtime option. Similar to the law of large numbers in probability theory, if we run a benchmark a large number of times, it should tend to approach its expected value (assuming we omit the benefits of instructions caching and similar mechanics).

    Another option is to use external tools on top of the classic benchmark tooling. For instance, the benchstat tool, which is part of the golang.org/x repository, allows us to compute and compare statistics about benchmark executions.

    Let\u2019s run the benchmark 10 times using the -count option and pipe the output to a specific file:

    $ go test -bench=. -count=10 | tee stats.txt\ncpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkAtomicStoreInt32-4     234935682                5.124 ns/op\nBenchmarkAtomicStoreInt32-4     235307204                5.112 ns/op\n// ...\nBenchmarkAtomicStoreInt64-4     235548591                5.107 ns/op\nBenchmarkAtomicStoreInt64-4     235210292                5.090 ns/op\n// ...\n

    We can then run benchstat on this file:

    $ benchstat stats.txt\nname                time/op\nAtomicStoreInt32-4  5.10ns \u00b1 1%\nAtomicStoreInt64-4  5.10ns \u00b1 1%\n

    The results are the same: both functions take on average 5.10 nanoseconds to complete. We also see the percent variation between the executions of a given benchmark: \u00b1 1%. This metric tells us that both benchmarks are stable, giving us more confidence in the computed average results. Therefore, instead of concluding that atomic.StoreInt32 is faster or slower, we can conclude that its execution time is similar to that of atomic.StoreInt64 for the usage we tested (in a specific Go version on a particular machine).

    In general, we should be cautious about micro-benchmarks. Many factors can significantly impact the results and potentially lead to wrong assumptions. Increasing the benchmark time or repeating the benchmark executions and computing stats with tools such as benchstat can be an efficient way to limit external factors and get more accurate results, leading to better conclusions.

    Let\u2019s also highlight that we should be careful about using the results of a micro-benchmark executed on a given machine if another system ends up running the application. The production system may act quite differently from the one on which we ran the micro-benchmark.

    "},{"location":"89-benchmarks/#not-being-careful-about-compiler-optimizations","title":"Not being careful about compiler optimizations","text":"

    Another common mistake related to writing benchmarks is being fooled by compiler optimizations, which can also lead to wrong benchmark assumptions. In this section, we look at Go issue 14813 (https://github.com/golang/go/issues/14813, also discussed by Go project member Dave Cheney) with a population count function (a function that counts the number of bits set to 1):

    const m1 = 0x5555555555555555\nconst m2 = 0x3333333333333333\nconst m4 = 0x0f0f0f0f0f0f0f0f\nconst h01 = 0x0101010101010101\n\nfunc popcnt(x uint64) uint64 {\n    x -= (x >> 1) & m1\n    x = (x & m2) + ((x >> 2) & m2)\n    x = (x + (x >> 4)) & m4\n    return (x * h01) >> 56\n}\n

    This function takes and returns a uint64. To benchmark this function, we can write the following:

    func BenchmarkPopcnt1(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        popcnt(uint64(i))\n    }\n}\n

    However, if we execute this benchmark, we get a surprisingly low result:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkPopcnt1-4      1000000000               0.2858 ns/op\n

    A duration of 0.28 nanoseconds is roughly one clock cycle, so this number is unreasonably low. The problem is that the developer wasn\u2019t careful enough about compiler optimizations. In this case, the function under test is simple enough to be a candidate for inlining: an optimization that replaces a function call with the body of the called function and lets us prevent a function call, which has a small footprint. Once the function is inlined, the compiler notices that the call has no side effects and replaces it with the following benchmark:

    func BenchmarkPopcnt1(b *testing.B) {\n    for i := 0; i < b.N; i++ {\n        // Empty\n    }\n}\n

    The benchmark is now empty \u2014 which is why we got a result close to one clock cycle. To prevent this from happening, a best practice is to follow this pattern:

    1. During each loop iteration, assign the result to a local variable (local in the context of the benchmark function).
    2. Assign the latest result to a global variable.

    In our case, we write the following benchmark:

    var global uint64 // Define a global variable\n\nfunc BenchmarkPopcnt2(b *testing.B) {\n    var v uint64 // Define a local variable\n    for i := 0; i < b.N; i++ {\n        v = popcnt(uint64(i)) // Assign the result to the local variable\n    }\n    global = v // Assign the result to the global variable\n}\n

    global is a global variable, whereas v is a local variable whose scope is the benchmark function. During each loop iteration, we assign the result of popcnt to the local variable. Then we assign the latest result to the global variable.

    Note

    Why not assign the result of the popcnt call directly to global to simplify the test? Writing to a global variable is slower than writing to a local variable (these concepts are discussed in 100 Go Mistakes, mistake #95: \u201cNot understanding stack vs. heap\u201d). Therefore, we should write each result to a local variable to limit the footprint during each loop iteration.

    If we run these two benchmarks, we now get a significant difference in the results:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkPopcnt1-4      1000000000               0.2858 ns/op\nBenchmarkPopcnt2-4      606402058                1.993 ns/op\n

    BenchmarkPopcnt2 is the accurate version of the benchmark. It guarantees that we avoid the inlining optimizations, which can artificially lower the execution time or even remove the call to the function under test. Relying on the results of BenchmarkPopcnt1 could have led to wrong assumptions.

    Let\u2019s remember the pattern to avoid compiler optimizations fooling benchmark results: assign the result of the function under test to a local variable, and then assign the latest result to a global variable. This best practice also prevents us from making incorrect assumptions.

    "},{"location":"89-benchmarks/#being-fooled-by-the-observer-effect","title":"Being fooled by the observer effect","text":"

    In physics, the observer effect is the disturbance of an observed system by the act of observation. This effect can also be seen in benchmarks and can lead to wrong assumptions about results. Let\u2019s look at a concrete example and then try to mitigate it.

    We want to implement a function receiving a matrix of int64 elements. This matrix has a fixed number of 512 columns, and we want to compute the total sum of the first eight columns, as shown in figure 1.

    Figure 1: Computing the sum of the first eight columns.

    For the sake of optimizations, we also want to determine whether varying the number of columns has an impact, so we also implement a second function with 513 columns. The implementation is the following:

    func calculateSum512(s [][512]int64) int64 {\n    var sum int64\n    for i := 0; i < len(s); i++ { // Iterate over each row\n        for j := 0; j < 8; j++ { // Iterate over the first eight columns\n            sum += s[i][j] // Increment sum\n        }\n    }\n    return sum\n}\n\nfunc calculateSum513(s [][513]int64) int64 {\n    // Same implementation as calculateSum512\n}\n

    We iterate over each row and then over the first eight columns, and we increment a sum variable that we return. The implementation in calculateSum513 remains the same.

    We want to benchmark these functions to decide which one is the most performant given a fixed number of rows:

    const rows = 1000\n\nvar res int64\n\nfunc BenchmarkCalculateSum512(b *testing.B) {\n    var sum int64\n    s := createMatrix512(rows) // Create a matrix of 512 columns\n    b.ResetTimer()\n    for i := 0; i < b.N; i++ {\n        sum = calculateSum512(s) // Create a matrix of 512 columns\n    }\n    res = sum\n}\n\nfunc BenchmarkCalculateSum513(b *testing.B) {\n    var sum int64\n    s := createMatrix513(rows) // Create a matrix of 513 columns\n    b.ResetTimer()\n    for i := 0; i < b.N; i++ {\n        sum = calculateSum513(s) // Calculate the sum\n    }\n    res = sum\n}\n

    We want to create the matrix only once, to limit the footprint on the results. Therefore, we call createMatrix512 and createMatrix513 outside of the loop. We may expect the results to be similar as again we only want to iterate on the first eight columns, but this isn\u2019t the case (on my machine):

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkCalculateSum512-4        81854             15073 ns/op\nBenchmarkCalculateSum513-4       161479              7358 ns/op\n

    The second benchmark with 513 columns is about 50% faster. Again, because we iterate only over the first eight columns, this result is quite surprising.

    To understand this difference, we need to understand the basics of CPU caches. In a nutshell, a CPU is composed of different caches (usually L1, L2, and L3). These caches reduce the average cost of accessing data from the main memory. In some conditions, the CPU can fetch data from the main memory and copy it to L1. In this case, the CPU tries to fetch into L1 the matrix\u2019s subset that calculateSum is interested in (the first eight columns of each row). However, the matrix fits in memory in one case (513 columns) but not in the other case (512 columns).

    Note

    This isn\u2019t in the scope of this post to explain why, but we look at this problem in 100 Go Mistakes, mistake #91: \u201cNot understanding CPU caches.\u201d

    Coming back to the benchmark, the main issue is that we keep reusing the same matrix in both cases. Because the function is repeated thousands of times, we don\u2019t measure the function\u2019s execution when it receives a plain new matrix. Instead, we measure a function that gets a matrix that already has a subset of the cells present in the cache. Therefore, because calculateSum513 leads to fewer cache misses, it has a better execution time.

    This is an example of the observer effect. Because we keep observing a repeatedly called CPU-bound function, CPU caching may come into play and significantly affect the results. In this example, to prevent this effect, we should create a matrix during each test instead of reusing one:

    func BenchmarkCalculateSum512(b *testing.B) {\n    var sum int64\n    for i := 0; i < b.N; i++ {\n        b.StopTimer()\n        s := createMatrix512(rows) // Create a new matrix during each loop iteration\n        b.StartTimer()\n        sum = calculateSum512(s)\n    }\n    res = sum\n}\n

    A new matrix is now created during each loop iteration. If we run the benchmark again (and adjust benchtime \u2014 otherwise, it takes too long to execute), the results are closer to each other:

    cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz\nBenchmarkCalculateSum512-4         1116             33547 ns/op\nBenchmarkCalculateSum513-4          998             35507 ns/op\n

    Instead of making the incorrect assumption that calculateSum513 is faster, we see that both benchmarks lead to similar results when receiving a new matrix.

    As we have seen in this post, because we were reusing the same matrix, CPU caches significantly impacted the results. To prevent this, we had to create a new matrix during each loop iteration. In general, we should remember that observing a function under test may lead to significant differences in results, especially in the context of micro-benchmarks of CPU-bound functions where low-level optimizations matter. Forcing a benchmark to re-create data during each iteration can be a good way to prevent this effect.

    "},{"location":"9-generics/","title":"Being confused about when to use generics","text":"

    Generics is a fresh addition to the language. In a nutshell, it allows writing code with types that can be specified later and instantiated when needed. However, it can be pretty easy to be confused about when to use generics and when not to. Throughout this post, we will describe the concept of generics in Go and then delve into common use and misuses.

    "},{"location":"9-generics/#concepts","title":"Concepts","text":"

    Consider the following function that extracts all the keys from a map[string]int type:

    func getKeys(m map[string]int) []string {\n    var keys []string\n    for k := range m {\n        keys = append(keys, k)\n    }\n    return keys\n}\n

    What if we would like to use a similar feature for another map type such as a map[int]string? Before generics, Go developers had a couple of options: using code generation, reflection, or duplicating code.

    For example, we could write two functions, one for each map type, or even try to extend getKeys to accept different map types:

    func getKeys(m any) ([]any, error) {\n    switch t := m.(type) {\n    default:\n        return nil, fmt.Errorf(\"unknown type: %T\", t)\n    case map[string]int:\n        var keys []any\n        for k := range t {\n            keys = append(keys, k)\n        }\n        return keys, nil\n    case map[int]string:\n        // Copy the extraction logic\n    }\n}\n

    We can start noticing a couple of issues:

    • First, it increases boilerplate code. Indeed, whenever we want to add a case, it will require duplicating the range loop.
    • Meanwhile, the function now accepts an empty interface, which means we are losing some of the benefits of Go being a typed language. Indeed, checking whether a type is supported is done at runtime instead of compile-time. Hence, we also need to return an error if the provided type is unknown.
    • Last but not least, as the key type can be either int or string, we are obliged to return a slice of empty interfaces to factor out key types. This approach increases the effort on the caller-side as the client may also have to perform a type check of the keys or extra conversion.

    Thanks to generics, we can now refactor this code using type parameters.

    Type parameters are generic types we can use with functions and types. For example, the following function accepts a type parameter:

    func foo[T any](t T) {\n    // ...\n}\n

    When calling foo, we will pass a type argument of any type. Passing a type argument is called instantiation because the work is done at compile time which keeps type safety as part of the core language features and avoids runtime overheads.

    Let\u2019s get back to the getKeys function and use type parameters to write a generic version that would accept any kind of map:

    func getKeys[K comparable, V any](m map[K]V) []K {\n  var keys []K <2>\n  for k := range m {\n    keys = append(keys, k)\n  }\n  return keys\n}\n

    To handle the map, we defined two kinds of type parameters. First, the values can be of any type: V any. However, in Go, the map keys can\u2019t be of any type. For example, we cannot use slices:

    var m map[[]byte]int\n

    This code leads to a compilation error: invalid map key type []byte. Therefore, instead of accepting any key type, we are obliged to restrict type arguments so that the key type meets specific requirements. Here, being comparable (we can use == or !=). Hence, we defined K as comparable instead of any.

    Restricting type arguments to match specific requirements is called a constraint. A constraint is an interface type that can contain:

    • A set of behaviors (methods)
    • But also arbitrary type

    Let\u2019s see a concrete example for the latter. Imagine we don\u2019t want to accept any comparable type for map key type. For instance, we would like to restrict it to either int or string types. We can define a custom constraint this way:

    type customConstraint interface {\n   ~int | ~string // Define a custom type that will restrict types to int and string\n}\n\n// Change the type parameter K to be custom\nfunc getKeys[K customConstraint, V any](m map[K]V) []K {\n   // Same implementation\n}\n

    First, we define a customConstraint interface to restrict the types to be either int or string using the union operator | (we will discuss the use of ~ a bit later). Then, K is now a customConstraint instead of a comparable as before.

    Now, the signature of getKeys enforces that we can call it with a map of any value type, but the key type has to be an int or a string. For example, on the caller-side:

    m = map[string]int{\n   \"one\":   1,\n   \"two\":   2,\n   \"three\": 3,\n}\nkeys := getKeys(m)\n

    Note that Go can infer that getKeys is called with a string type argument. The previous call was similar to this:

    keys := getKeys[string](m)\n
    Note

    What\u2019s the difference between a constraint using ~int or int? Using int restricts it to that type, whereas ~int restricts all the types whose underlying type is an int.

    To illustrate it, let\u2019s imagine a constraint where we would like to restrict a type to any int type implementing the String() string method:

    type customConstraint interface {\n   ~int\n   String() string\n}\n

    Using this constraint will restrict type arguments to custom types like this one:

    type customInt int\n\nfunc (i customInt) String() string {\n   return strconv.Itoa(int(i))\n}\n

    As customInt is an int and implements the String() string method, the customInt type satisfies the constraint defined.

    However, if we change the constraint to contain an int instead of an ~int, using customInt would lead to a compilation error because the int type doesn\u2019t implement String() string.

    Let\u2019s also note the constraints package contains a set of common constraints such as Signed that includes all the signed integer types. Let\u2019s ensure that a constraint doesn\u2019t already exist in this package before creating a new one.

    So far, we have discussed examples using generics for functions. However, we can also use generics with data structures.

    For example, we will create a linked list containing values of any type. Meanwhile, we will write an Add method to append a node:

    type Node[T any] struct { // Use type parameter\n   Val  T\n   next *Node[T]\n}\n\nfunc (n *Node[T]) Add(next *Node[T]) { // Instantiate type receiver\n   n.next = next\n}\n

    We use type parameters to define T and use both fields in Node. Regarding the method, the receiver is instantiated. Indeed, because Node is generic, it has to follow also the type parameter defined.

    One last thing to note about type parameters: they can\u2019t be used on methods, only on functions. For example, the following method wouldn\u2019t compile:

    type Foo struct {}\n\nfunc (Foo) bar[T any](t T) {}\n
    ./main.go:29:15: methods cannot have type parameters\n

    Now, let\u2019s delve into concrete cases where we should and shouldn\u2019t use generics.

    "},{"location":"9-generics/#common-uses-and-misuses","title":"Common uses and misuses","text":"

    So when are generics useful? Let\u2019s discuss a couple of common uses where generics are recommended:

    • Data structures. For example, we can use generics to factor out the element type if we implement a binary tree, a linked list, or a heap.
    • Functions working with slices, maps, and channels of any type. For example, a function to merge two channels would work with any channel type. Hence, we could use type parameters to factor out the channel type:
    func merge[T any](ch1, ch2 <-chan T) <-chan T {\n    // ...\n}\n
    • Meanwhile, instead of factoring out a type, we can factor out behaviors. For example, the sort package contains functions to sort different slice types such as sort.Ints or sort.Float64s. Using type parameters, we can factor out the sorting behaviors that rely on three methods, Len, Less, and Swap:
    type sliceFn[T any] struct { // Use type parameter\n   s       []T\n   compare func(T, T) bool // Compare two T elements\n}\n\nfunc (s sliceFn[T]) Len() int           { return len(s.s) }\nfunc (s sliceFn[T]) Less(i, j int) bool { return s.compare(s.s[i], s.s[j]) }\nfunc (s sliceFn[T]) Swap(i, j int)      { s.s[i], s.s[j] = s.s[j], s.s[i] }\n

    Conversely, when is it recommended not to use generics?

    • When just calling a method of the type argument. For example, consider a function that receives an io.Writer and call the Write method:
    func foo[T io.Writer](w T) {\n   b := getBytes()\n   _, _ = w.Write(b)\n}\n
    • When it makes our code more complex. Generics are never mandatory, and as Go developers, we have been able to live without them for more than a decade. If writing generic functions or structures we figure out that it doesn\u2019t make our code clearer, we should probably reconsider our decision for this particular use case.
    "},{"location":"9-generics/#conclusion","title":"Conclusion","text":"

    Though generics can be very helpful in particular conditions, we should be cautious about when to use them and not use them.

    In general, when we want to answer when not to use generics, we can find similarities with when not to use interfaces. Indeed, generics introduce a form of abstraction, and we have to remember that unnecessary abstractions introduce complexity.

    Let\u2019s not pollute our code with needless abstractions, and let\u2019s focus on solving concrete problems for now. It means that we shouldn\u2019t use type parameters prematurely. Let\u2019s wait until we are about to write boilerplate code to consider using generics.

    "},{"location":"92-false-sharing/","title":"Writing concurrent code that leads to false sharing","text":"

    In previous sections, we have discussed the fundamental concepts of CPU caching. We have seen that some specific caches (typically, L1 and L2) aren\u2019t shared among all the logical cores but are specific to a physical core. This specificity has some concrete impacts such as concurrency and the concept of false sharing, which can lead to a significant performance decrease. Let\u2019s look at what false sharing is via an example and then see how to prevent it.

    In this example, we use two structs, Input and Result:

    type Input struct {\n    a int64\n    b int64\n}\n\ntype Result struct {\n    sumA int64\n    sumB int64\n}\n

    The goal is to implement a count function that receives a slice of Input and computes the following:

    • The sum of all the Input.a fields into Result.sumA
    • The sum of all the Input.b fields into Result.sumB

    For the sake of the example, we implement a concurrent solution with one goroutine that computes sumA and another that computes sumB:

    func count(inputs []Input) Result {\n    wg := sync.WaitGroup{}\n    wg.Add(2)\n\n    result := Result{} // Init the result struct\n\n    go func() {\n        for i := 0; i < len(inputs); i++ {\n            result.sumA += inputs[i].a // Computes sumA\n        }\n        wg.Done()\n    }()\n\n    go func() {\n        for i := 0; i < len(inputs); i++ {\n            result.sumB += inputs[i].b // Computes sumB\n        }\n        wg.Done()\n    }()\n\n    wg.Wait()\n    return result\n}\n

    We spin up two goroutines: one that iterates over each a field and another that iterates over each b field. This example is fine from a concurrency perspective. For instance, it doesn\u2019t lead to a data race, because each goroutine increments its own variable. But this example illustrates the false sharing concept that degrades expected performance.

    Let\u2019s look at the main memory. Because sumA and sumB are allocated contiguously, in most cases (seven out of eight), both variables are allocated to the same memory block:

    In this example, sumA and sumB are part of the same memory block.

    Now, let\u2019s assume that the machine contains two cores. In most cases, we should eventually have two threads scheduled on different cores. So if the CPU decides to copy this memory block to a cache line, it is copied twice:

    Each block is copied to a cache line on both code 0 and core 1.

    Both cache lines are replicated because L1D (L1 data) is per core. Recall that in our example, each goroutine updates its own variable: sumA on one side, and sumB on the other side:

    Each goroutine updates its own variable.

    Because these cache lines are replicated, one of the goals of the CPU is to guarantee cache coherency. For example, if one goroutine updates sumA and another reads sumA (after some synchronization), we expect our application to get the latest value.

    However, our example doesn\u2019t do exactly this. Both goroutines access their own variables, not a shared one. We might expect the CPU to know about this and understand that it isn\u2019t a conflict, but this isn\u2019t the case. When we write a variable that\u2019s in a cache, the granularity tracked by the CPU isn\u2019t the variable: it\u2019s the cache line.

    When a cache line is shared across multiple cores and at least one goroutine is a writer, the entire cache line is invalidated. This happens even if the updates are logically independent (for example, sumA and sumB). This is the problem of false sharing, and it degrades performance.

    Note

    Internally, a CPU uses the MESI protocol to guarantee cache coherency. It tracks each cache line, marking it modified, exclusive, shared, or invalid (MESI).

    One of the most important aspects to understand about memory and caching is that sharing memory across cores isn\u2019t real\u2014it\u2019s an illusion. This understanding comes from the fact that we don\u2019t consider a machine a black box; instead, we try to have mechanical sympathy with underlying levels.

    So how do we solve false sharing? There are two main solutions.

    The first solution is to use the same approach we\u2019ve shown but ensure that sumA and sumB aren\u2019t part of the same cache line. For example, we can update the Result struct to add padding between the fields. Padding is a technique to allocate extra memory. Because an int64 requires an 8-byte allocation and a cache line 64 bytes long, we need 64 \u2013 8 = 56 bytes of padding:

    type Result struct {\n    sumA int64\n    _    [56]byte // Padding\n    sumB int64\n}\n

    The next figure shows a possible memory allocation. Using padding, sumA and sumB will always be part of different memory blocks and hence different cache lines.

    sumA and sumB are part of different memory blocks.

    If we benchmark both solutions (with and without padding), we see that the padding solution is significantly faster (about 40% on my machine). This is an important improvement that results from the addition of padding between the two fields to prevent false sharing.

    The second solution is to rework the structure of the algorithm. For example, instead of having both goroutines share the same struct, we can make them communicate their local result via channels. The result benchmark is roughly the same as with padding.

    In summary, we must remember that sharing memory across goroutines is an illusion at the lowest memory levels. False sharing occurs when a cache line is shared across two cores when at least one goroutine is a writer. If we need to optimize an application that relies on concurrency, we should check whether false sharing applies, because this pattern is known to degrade application performance. We can prevent false sharing with either padding or communication.

    "},{"location":"98-profiling-execution-tracing/","title":"Not using Go diagnostics tooling","text":"

    Go offers a few excellent diagnostics tools to help us get insights into how an application performs. This post focuses on the most important ones: profiling and the execution tracer. Both tools are so important that they should be part of the core toolset of any Go developer who is interested in optimization. First, let\u2019s discuss profiling.

    "},{"location":"98-profiling-execution-tracing/#profiling","title":"Profiling","text":"

    Profiling provides insights into the execution of an application. It allows us to resolve performance issues, detect contention, locate memory leaks, and more. These insights can be collected via several profiles:

    • CPU\u2014 Determines where an application spends its time
    • Goroutine\u2014 Reports the stack traces of the ongoing goroutines
    • Heap\u2014 Reports heap memory allocation to monitor current memory usage and check for possible memory leaks
    • Mutex\u2014 Reports lock contentions to see the behaviors of the mutexes used in our code and whether an application spends too much time in locking calls
    • Block\u2014 Shows where goroutines block waiting on synchronization primitives

    Profiling is achieved via instrumentation using a tool called a profiler, in Go: pprof. First, let\u2019s understand how and when to enable pprof; then, we discuss the most critical profile types.

    "},{"location":"98-profiling-execution-tracing/#enabling-pprof","title":"Enabling pprof","text":"

    There are several ways to enable pprof. For example, we can use the net/http/pprof package to serve the profiling data via HTTP:

    package main\n\nimport (\n    \"fmt\"\n    \"log\"\n    \"net/http\"\n    _ \"net/http/pprof\" // Blank import to pprof\n)\n\nfunc main() {\n    // Exposes an HTTP endpoint\n    http.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n        fmt.Fprintf(w, \"\")\n    })\n    log.Fatal(http.ListenAndServe(\":80\", nil))\n}\n

    Importing net/http/pprof leads to a side effect that allows us to reach the pprof URL: http://host/debug/pprof. Note that enabling pprof is safe even in production (https://go.dev/doc/diagnostics#profiling). The profiles that impact performance, such as CPU profiling, aren\u2019t enabled by default, nor do they run continuously: they are activated only for a specific period.

    Now that we have seen how to expose a pprof endpoint, let\u2019s discuss the most common profiles.

    "},{"location":"98-profiling-execution-tracing/#cpu-profiling","title":"CPU Profiling","text":"

    The CPU profiler relies on the OS and signaling. When it is activated, the application asks the OS to interrupt it every 10 ms by default via a SIGPROF signal. When the application receives a SIGPROF, it suspends the current activity and transfers the execution to the profiler. The profiler collects data such as the current goroutine activity and aggregates execution statistics that we can retrieve. Then it stops, and the execution resumes until the next SIGPROF.

    We can access the /debug/pprof/profile endpoint to activate CPU profiling. Accessing this endpoint executes CPU profiling for 30 seconds by default. For 30 seconds, our application is interrupted every 10 ms. Note that we can change these two default values: we can use the seconds parameter to pass to the endpoint how long the profiling should last (for example, /debug/pprof/profile?seconds=15), and we can change the interruption rate (even to less than 10 ms). But in most cases, 10 ms should be enough, and in decreasing this value (meaning increasing the rate), we should be careful not to harm performance. After 30 seconds, we download the results of the CPU profiler.

    Note

    We can also enable the CPU profiler using the -cpuprofile flag, such as when running a benchmark. For example, the following command produces the same type of file that can be downloaded via /debug/ pprof/profile.

    $ go test -bench=. -cpuprofile profile.out\n

    From this file, we can navigate to the results using go tool:

    $ go tool pprof -http=:8080 <file>\n

    This command opens a web UI showing the call graph. The next figure shows an example taken from an application. The larger the arrow, the more it was a hot path. We can then navigate into this graph and get execution insights.

    Figure 1: The call graph of an application during 30 seconds.

    For example, the graph in the next figure tells us that during 30 seconds, 0.06 seconds were spent in the decode method (*FetchResponse receiver). Of these 0.06 seconds, 0.02 were spent in RecordBatch.decode and 0.01 in makemap (creating a map).

    Figure 2: Example call graph.

    We can also access this kind of information from the web UI with different representations. For example, the Top view sorts the functions per execution time, and Flame Graph visualizes the execution time hierarchy. The UI can even display the expensive parts of the source code line by line.

    Note

    We can also delve into profiling data via a command line. However, we focus on the web UI in this post.

    Thanks to this data, we can get a general idea of how an application behaves:

    • Too many calls to runtime.mallogc can mean an excessive number of small heap allocations that we can try to minimize.
    • Too much time spent in channel operations or mutex locks can indicate excessive contention that is harming the application\u2019s performance.
    • Too much time spent on syscall.Read or syscall.Write means the application spends a significant amount of time in Kernel mode. Working on I/O buffering may be an avenue for improvement.

    These are the kinds of insights we can get from the CPU profiler. It\u2019s valuable to understand the hottest code path and identify bottlenecks. But it won\u2019t determine more than the configured rate because the CPU profiler is executed at a fixed pace (by default, 10 ms). To get finer-grained insights, we should use tracing, which we discuss later in this post.

    Note

    We can also attach labels to the different functions. For example, imagine a common function called from different clients. To track the time spent for both clients, we can use pprof.Labels.

    "},{"location":"98-profiling-execution-tracing/#heap-profiling","title":"Heap Profiling","text":"

    Heap profiling allows us to get statistics about the current heap usage. Like CPU profiling, heap profiling is sample-based. We can change this rate, but we shouldn\u2019t be too granular because the more we decrease the rate, the more effort heap profiling will require to collect data. By default, samples are profiled at one allocation for every 512 KB of heap allocation.

    If we reach /debug/pprof/heap/, we get raw data that can be hard to read. However, we can download a heap profile using /debug/pprof/heap/?debug=0 and then open it with go tool (the same command as in the previous section) to navigate into the data using the web UI.

    The next figure shows an example of a heap graph. Calling the MetadataResponse.decode method leads to allocating 1536 KB of heap data (which represents 6.32% of the total heap). However, 0 out of these 1536 KB were allocated by this function directly, so we need to inspect the second call. The TopicMetadata.decode method allocated 512 KB out of the 1536 KB; the rest \u2014 1024 KB \u2014 were allocated in another method.

    Figure 3: A heap graph.

    This is how we can navigate the call chain to understand what part of an application is responsible for most of the heap allocations. We can also look at different sample types:

    • alloc_objects\u2014 Total number of objects allocated
    • alloc_space\u2014 Total amount of memory allocated
    • inuse_objects \u2014 Number of objects allocated and not yet released
    • inuse_space\u2014 Amount of memory allocated and not yet released

    Another very helpful capability with heap profiling is tracking memory leaks. With a GC-based language, the usual procedure is the following:

    1. Trigger a GC.
    2. Download heap data.
    3. Wait for a few seconds/minutes.
    4. Trigger another GC.
    5. Download another heap data.
    6. Compare.

    Forcing a GC before downloading data is a way to prevent false assumptions. For example, if we see a peak of retained objects without running a GC first, we cannot be sure whether it\u2019s a leak or objects that the next GC will collect.

    Using pprof, we can download a heap profile and force a GC in the meantime. The procedure in Go is the following:

    1. Go to /debug/pprof/heap?gc=1 (trigger the GC and download the heap profile).
    2. Wait for a few seconds/minutes.
    3. Go to /debug/pprof/heap?gc=1 again.
    4. Use go tool to compare both heap profiles:
    $ go tool pprof -http=:8080 -diff_base <file2> <file1>\n

    The next figure shows the kind of data we can access. For example, the amount of heap memory held by the newTopicProducer method (top left) has decreased (\u2013513 KB). In contrast, the amount held by updateMetadata (bottom right) has increased (+512 KB). Slow increases are normal. The second heap profile may have been calculated in the middle of a service call, for example. We can repeat this process or wait longer; the important part is to track steady increases in allocations of a specific object.

    Figure 4: The differences between the two heap profiles. Note

    Another type of profiling related to the heap is allocs, which reports allocations. Heap profiling shows the current state of the heap memory. To get insights about past memory allocations since the application started, we can use allocations profiling. As discussed, because stack allocations are cheap, they aren\u2019t part of this profiling, which only focuses on the heap.

    "},{"location":"98-profiling-execution-tracing/#goroutine-profiling","title":"Goroutine Profiling","text":"

    The goroutine profile reports the stack trace of all the current goroutines in an application. We can download a file using /debug/pprof/goroutine/?debug=0 and use go tool again. The next figure shows the kind of information we can get.

    Figure 5: Goroutine graph.

    We can see the current state of the application and how many goroutines were created per function. In this case, withRecover has created 296 ongoing goroutines (63%), and 29 were related to a call to responseFeeder.

    This kind of information is also beneficial if we suspect goroutine leaks. We can look at goroutine profiler data to know which part of a system is the suspect.

    "},{"location":"98-profiling-execution-tracing/#block-profiling","title":"Block Profiling","text":"

    The block profile reports where ongoing goroutines block waiting on synchronization primitives. Possibilities include

    • Sending or receiving on an unbuffered channel
    • Sending to a full channel
    • Receiving from an empty channel
    • Mutex contention
    • Network or filesystem waits

    Block profiling also records the amount of time a goroutine has been waiting and is accessible via /debug/pprof/block. This profile can be extremely helpful if we suspect that performance is being harmed by blocking calls.

    The block profile isn\u2019t enabled by default: we have to call runtime.SetBlockProfileRate to enable it. This function controls the fraction of goroutine blocking events that are reported. Once enabled, the profiler will keep collecting data in the background even if we don\u2019t call the /debug/pprof/block endpoint. Let\u2019s be cautious if we want to set a high rate so we don\u2019t harm performance.

    Note

    If we face a deadlock or suspect that goroutines are in a blocked state, the full goroutine stack dump (/debug/pprof/goroutine/?debug=2) creates a dump of all the current goroutine stack traces. This can be helpful as a first analysis step. For example, the following dump shows a Sarama goroutine blocked for 1,420 minutes on a channel-receive operation:

    goroutine 2494290 [chan receive, 1420 minutes]:\ngithub.com/Shopify/sarama.(*syncProducer).SendMessages(0xc00071a090,\n[CA]{0xc0009bb800, 0xfb, 0xfb})\n/app/vendor/github.com/Shopify/sarama/sync_producer.go:117 +0x149\n
    "},{"location":"98-profiling-execution-tracing/#mutex-profiling","title":"Mutex Profiling","text":"

    The last profile type is related to blocking but only regarding mutexes. If we suspect that our application spends significant time waiting for locking mutexes, thus harming execution, we can use mutex profiling. It\u2019s accessible via /debug/pprof/mutex.

    This profile works in a manner similar to that for blocking. It\u2019s disabled by default: we have to enable it using runtime.SetMutexProfileFraction, which controls the fraction of mutex contention events reported.

    Following are a few additional notes about profiling:

    • We haven\u2019t mentioned the threadcreate profile because it\u2019s been broken since 2013 (https://github.com/golang/go/issues/6104).
    • Be sure to enable only one profiler at a time: for example, do not enable CPU and heap profiling simultaneously. Doing so can lead to erroneous observations.
    • pprof is extensible, and we can create our own custom profiles using pprof.Profile.

    We have seen the most important profiles that we can enable to help us understand how an application performs and possible avenues for optimization. In general, enabling pprof is recommended, even in production, because in most cases it offers an excellent balance between its footprint and the amount of insight we can get from it. Some profiles, such as the CPU profile, lead to performance penalties but only during the time they are enabled.

    Let\u2019s now look at the execution tracer.

    "},{"location":"98-profiling-execution-tracing/#execution-tracer","title":"Execution Tracer","text":"

    The execution tracer is a tool that captures a wide range of runtime events with go tool to make them available for visualization. It is helpful for the following:

    • Understanding runtime events such as how the GC performs
    • Understanding how goroutines execute
    • Identifying poorly parallelized execution

    Let\u2019s try it with an example given the Concurrency isn\u2019t Always Faster in Go section. We discussed two parallel versions of the merge sort algorithm. The issue with the first version was poor parallelization, leading to the creation of too many goroutines. Let\u2019s see how the tracer can help us in validating this statement.

    We will write a benchmark for the first version and execute it with the -trace flag to enable the execution tracer:

    $ go test -bench=. -v -trace=trace.out\n
    Note

    We can also download a remote trace file using the /debug/pprof/ trace?debug=0 pprof endpoint.

    This command creates a trace.out file that we can open using go tool:

    $ go tool trace trace.out\n2021/11/26 21:36:03 Parsing trace...\n2021/11/26 21:36:31 Splitting trace...\n2021/11/26 21:37:00 Opening browser. Trace viewer is listening on\n    http://127.0.0.1:54518\n

    The web browser opens, and we can click View Trace to see all the traces during a specific timeframe, as shown in the next figure. This figure represents about 150 ms. We can see multiple helpful metrics, such as the goroutine count and the heap size. The heap size grows steadily until a GC is triggered. We can also observe the activity of the Go application per CPU core. The timeframe starts with user-level code; then a \u201cstop the world\u201d is executed, which occupies the four CPU cores for approximately 40 ms.

    Figure 6: Showing goroutine activity and runtime events such as a GC phase.

    Regarding concurrency, we can see that this version uses all the available CPU cores on the machine. However, the next figure zooms in on a portion of 1 ms. Each bar corresponds to a single goroutine execution. Having too many small bars doesn\u2019t look right: it means execution that is poorly parallelized.

    Figure 7: Too many small bars mean poorly parallelized execution.

    The next figure zooms even closer to see how these goroutines are orchestrated. Roughly 50% of the CPU time isn\u2019t spent executing application code. The white spaces represent the time the Go runtime takes to spin up and orchestrate new goroutines.

    Figure 8: About 50% of CPU time is spent handling goroutine switches.

    Let\u2019s compare this with the second parallel implementation, which was about an order of magnitude faster. The next figure again zooms to a 1 ms timeframe.

    Figure 9: The number of white spaces has been significantly reduced, proving that the CPU is more fully occupied.

    Each goroutine takes more time to execute, and the number of white spaces has been significantly reduced. Hence, the CPU is much more occupied executing application code than it was in the first version. Each millisecond of CPU time is spent more efficiently, explaining the benchmark differences.

    Note that the granularity of the traces is per goroutine, not per function like CPU profiling. However, it\u2019s possible to define user-level tasks to get insights per function or group of functions using the runtime/trace package.

    For example, imagine a function that computes a Fibonacci number and then writes it to a global variable using atomic. We can define two different tasks:

    var v int64\n// Creates a fibonacci task\nctx, fibTask := trace.NewTask(context.Background(), \"fibonacci\")\ntrace.WithRegion(ctx, \"main\", func() {\n    v = fibonacci(10)\n})\nfibTask.End()\n\n// Creates a store task\nctx, fibStore := trace.NewTask(ctx, \"store\")\ntrace.WithRegion(ctx, \"main\", func() {\n    atomic.StoreInt64(&result, v)\n})\nfibStore.End()\n

    Using go tool, we can get more precise information about how these two tasks perform. In the previous trace UI, we can see the boundaries for each task per goroutine. In User-Defined Tasks, we can follow the duration distribution:

    Figure 10: Distribution of user-level tasks.

    We see that in most cases, the fibonacci task is executed in less than 15 microseconds, whereas the store task takes less than 6309 nanoseconds.

    In the previous section, we discussed the kinds of information we can get from CPU profiling. What are the main differences compared to the data we can get from user-level traces?

    • CPU profiling:
      • Sample-based
      • Per function
      • Doesn\u2019t go below the sampling rate (10 ms by default)
    • User-level traces:
      • Not sample-based
      • Per-goroutine execution (unless we use the runtime/trace package)
      • Time executions aren\u2019t bound by any rate

    In summary, the execution tracer is a powerful tool for understanding how an application performs. As we have seen with the merge sort example, we can identify poorly parallelized execution. However, the tracer\u2019s granularity remains per goroutine unless we manually use runtime/trace compared to a CPU profile, for example. We can use both profiling and the execution tracer to get the most out of the standard Go diagnostics tools when optimizing an application.

    "},{"location":"book/","title":"100 Go Mistakes and How to Avoid Them","text":""},{"location":"book/#description","title":"Description","text":"

    If you're a Go developer looking to improve your skills, the 100 Go Mistakes and How to Avoid Them book is for you. With a focus on practical examples, this book covers a wide range of topics from concurrency and error handling to testing and code organization. You'll learn to write more idiomatic, efficient, and maintainable code and become a proficient Go developer.

    Read a summary of the 100 mistakes or the first chapter.

    "},{"location":"book/#quotes-and-ratings","title":"Quotes and Ratings","text":"

    Krystian (Goodreads user)

    This is an exceptional book. Usually, if a book contains either high-quality explanations or is written succinctly, I consider myself lucky to have found it. This one combines these two characteristics, which is super rare. It's another Go book for me and I still had quite a lot of \"a-ha!\" moments while reading it, and all of that without the unnecessary fluff, just straight to the point.

    Akash Chetty

    The book is completely exceptional, especially the examples carved out for each topic are really great. There is one topic that I struggled to understand is Concurrency but the way it is explained in this book is truly an art of genius.

    Neeraj Shah

    This should be the required reading for all Golang developers before they touch code in Production... It's the Golang equivalent of the legendary 'Effective Java' by Joshua Bloch.

    Anupam Sengupta

    Not having this will be the 101st mistake a Go programmer could make.

    Manning, Goodreads, and Amazon reviews: 4.7/5 avg rating"},{"location":"book/#where-to-buy","title":"Where to Buy?","text":"
    • 100 Go Mistakes and How to Avoid Them (\ud83c\uddec\ud83c\udde7 edition: paper, digital, or audiobook)

      • Manning (please make sure to use my personal discount code for -35%: au35har)
      • O\u2019Reilly
      • Amazon: .com, .co.uk, .de, .fr, .in, .co.jp, .es, .it, .com.br
    • Go\u8a00\u8a9e100Tips \u958b\u767a\u8005\u306b\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3078\u306e\u5bfe\u51e6\u6cd5 (\ud83c\uddef\ud83c\uddf5 edition: paper or digital)

      • Amazon: .co.jp
    • 100\u4e2aGo\u8bed\u8a00\u5178\u578b\u9519\u8bef (\ud83c\udde8\ud83c\uddf3 edition: paper or digital)

      • Douban.com
    • Go 100\uac00\uc9c0 \uc2e4\uc218 \ud328\ud134\uacfc \uc194\ub8e8\uc158 (\ud83c\uddf0\ud83c\uddf7 edition: paper or digital)

      • Yes24.com

    Covers (English, Japanese, Chinese, and Korean)"},{"location":"book/#about-the-author","title":"About the Author","text":"

    Teiva Harsanyi is a senior software engineer at Google. He has worked in various domains, including insurance, transportation, and safety-critical industries like air traffic management. He is passionate about Go and how to design and implement reliable systems.

    "},{"location":"chapter-1/","title":"Go: Simple to learn but hard to master","text":"

    This chapter covers

    • What makes Go an efficient, scalable, and productive language
    • Exploring why Go is simple to learn but hard to master
    • Presenting the common types of mistakes made by developers

    Making mistakes is part of everyone\u2019s life. As Albert Einstein once said,

    Albert Einstein

    A person who never made a mistake never tried anything new.

    What matters in the end isn\u2019t the number of mistakes we make, but our capacity to learn from them. This assertion also applies to programming. The seniority we acquire in a language isn\u2019t a magical process; it involves making many mistakes and learning from them. The purpose of this book is centered around this idea. It will help you, the reader, become a more proficient Go developer by looking at and learning from 100 common mistakes people make in many areas of the language.

    This chapter presents a quick refresher as to why Go has become mainstream over the years. We\u2019ll discuss why, despite Go being considered simple to learn, mastering its nuances can be challenging. Finally, we\u2019ll introduce the concepts this book covers.

    "},{"location":"chapter-1/#go-outline","title":"Go outline","text":"

    If you are reading this book, it\u2019s likely that you\u2019re already sold on Go. Therefore, this section provides a brief reminder about what makes Go such a powerful language.

    Software engineering has evolved considerably during the past decades. Most modern systems are no longer written by a single person but by teams consisting of multiple programmers\u2014sometimes even hundreds, if not thousands. Nowadays, code must be readable, expressive, and maintainable to guarantee a system\u2019s durability over the years. Meanwhile, in our fast-moving world, maximizing agility and reducing the time to market is critical for most organizations. Programming should also follow this trend, and companies strive to ensure that software engineers are as productive as possible when reading, writing, and maintaining code.

    In response to these challenges, Google created the Go programming language in 2007. Since then, many organizations have adopted the language to support various use cases: APIs, automation, databases, CLIs (command-line interfaces), and so on. Many today consider Go the language of the cloud.

    Feature-wise, Go has no type inheritance, no exceptions, no macros, no partial functions, no support for lazy variable evaluation or immutability, no operator overloading, no pattern matching, and on and on. Why are these features missing from the language? The official Go FAQ gives us some insight:

    Go FAQ

    Why does Go not have feature X? Your favorite feature may be missing because it doesn\u2019t fit, because it affects compilation speed or clarity of design, or because it would make the fundamental system model too difficult.

    Judging the quality of a programming language via its number of features is probably not an accurate metric. At least, it\u2019s not an objective of Go. Instead, Go utilizes a few essential characteristics when adopting a language at scale for an organization. These include the following:

    • Stability\u2014Even though Go receives frequent updates (including improvements and security patches), it remains a stable language. Some may even consider this one of the best features of the language.
    • Expressivity\u2014We can define expressivity in a programming language by how naturally and intuitively we can write and read code. A reduced number of keywords and limited ways to solve common problems make Go an expressive language for large codebases.
    • Compilation\u2014As developers, what can be more exasperating than having to wait for a build to test our application? Targeting fast compilation times has always been a conscious goal for the language designers. This, in turn, enables productivity.
    • Safety\u2014Go is a strong, statically typed language. Hence, it has strict compiletime rules, which ensure the code is type-safe in most cases.

    Go was built from the ground up with solid features such as outstanding concurrency primitives with goroutines and channels. There\u2019s not a strong need to rely on external libraries to build efficient concurrent applications. Observing how important concurrency is these days also demonstrates why Go is such a suitable language for the present and probably for the foreseeable future.

    Some also consider Go a simple language. And, in a sense, this isn\u2019t necessarily wrong. For example, a newcomer can learn the language\u2019s main features in less than a day. So why read a book centered on the concept of mistakes if Go is simple?

    "},{"location":"chapter-1/#simple-doesnt-mean-easy","title":"Simple doesn\u2019t mean easy","text":"

    There is a subtle difference between simple and easy. Simple, applied to a technology, means not complicated to learn or understand. However, easy means that we can achieve anything without much effort. Go is simple to learn but not necessarily easy to master.

    Let\u2019s take concurrency, for example. In 2019, a study focusing on concurrency bugs was published: Understanding Real-World Concurrency Bugs in Go. This study was the first systematic analysis of concurrency bugs. It focused on multiple popular Go repositories such as Docker, gRPC, and Kubernetes. One of the most important takeaways from this study is that most of the blocking bugs are caused by inaccurate use of the message-passing paradigm via channels, despite the belief that message passing is easier to handle and less error-prone than sharing memory.

    What should be an appropriate reaction to such a takeaway? Should we consider that the language designers were wrong about message passing? Should we reconsider how we deal with concurrency in our project? Of course not.

    It\u2019s not a question of confronting message passing versus sharing memory and determining the winner. However, it\u2019s up to us as Go developers to thoroughly understand how to use concurrency, its implications on modern processors, when to favor one approach over the other, and how to avoid common traps. This example highlights that although a concept such as channels and goroutines can be simple to learn, it isn\u2019t an easy topic in practice.

    This leitmotif\u2014simple doesn\u2019t mean easy\u2014can be generalized to many aspects of Go, not only concurrency. Hence, to be proficient Go developers, we must have a thorough understanding of many aspects of the language, which requires time, effort, and mistakes.

    This book aims to help accelerate our journey toward proficiency by delving into 100 Go mistakes.

    "},{"location":"chapter-1/#100-go-mistakes","title":"100 Go mistakes","text":"

    Why should we read a book about common Go mistakes? Why not deepen our knowledge with an ordinary book that would dig into different topics?

    In a 2011 article, neuroscientists proved that the best time for brain growth is when we\u2019re facing mistakes. 1 Haven\u2019t we all experienced the process of learning from a mistake and recalling that occasion after months or even years, when some context related to it? As presented in another article, by Janet Metcalfe, this happens because mistakes have a facilitative effect. 2 The main idea is that we can remember not only the error but also the context surrounding the mistake. This is one of the reasons why learning from mistakes is so efficient.

    To strengthen this facilitative effect, this book accompanies each mistake as much as possible with real-world examples. This book isn\u2019t only about theory; it also helps us get better at avoiding mistakes and making more well-informed, conscious decisions because we now understand the rationale behind them.

    Unknown

    Tell me and I forget. Teach me and I remember. Involve me and I learn.

    This book presents seven main categories of mistakes. Overall, the mistakes can be classified as

    • Bugs
    • Needless complexity
    • Weaker readability
    • Suboptimal or unidiomatic organization
    • Lack of API convenience
    • Under-optimized code
    • Lack of productivity

    We introduce each mistake category next.

    "},{"location":"chapter-1/#bugs","title":"Bugs","text":"

    The first type of mistake and probably the most obvious is software bugs. In 2020, a study conducted by Synopsys estimated the cost of software bugs in the U.S. alone to be over $2 trillion. 3

    Furthermore, bugs can also lead to tragic impacts. We can, for example, mention cases such as Therac-25, a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL). Because of a race condition, the machine gave its patients radiation doses that were hundreds of times greater than expected, leading to the death of three patients. Hence, software bugs aren\u2019t only about money. As developers, we should remember how impactful our jobs are.

    This book covers plenty of cases that could lead to various software bugs, including data races, leaks, logic errors, and other defects. Although accurate tests should be a way to discover such bugs as early as possible, we may sometimes miss cases because of different factors such as time constraints or complexity. Therefore, as a Go developer, it\u2019s essential to make sure we avoid common bugs.

    "},{"location":"chapter-1/#needless-complexity","title":"Needless complexity","text":"

    The next category of mistakes is related to unnecessary complexity. A significant part of software complexity comes from the fact that, as developers, we strive to think about imaginary futures. Instead of solving concrete problems right now, it can be tempting to build evolutionary software that could tackle whatever future use case arises. However, this leads to more drawbacks than benefits in most cases because it can make a codebase more complex to understand and reason about.

    Getting back to Go, we can think of plenty of use cases where developers might be tempted to design abstractions for future needs, such as interfaces or generics. This book discusses topics where we should remain careful not to harm a codebase with needless complexity.

    "},{"location":"chapter-1/#weaker-readability","title":"Weaker readability","text":"

    Another kind of mistake is to weaken readability. As Robert C. Martin wrote in his book Clean Code: A Handbook of Agile Software Craftsmanship, the ratio of time spent reading versus writing is well over 10 to 1. Most of us started to program on solo projects where readability wasn\u2019t that important. However, today\u2019s software engineering is programming with a time dimension: making sure we can still work with and maintain an application months, years, or perhaps even decades later.

    When programming in Go, we can make many mistakes that can harm readability. These mistakes may include nested code, data type representations, or not using named result parameters in some cases. Throughout this book, we will learn how to write readable code and care for future readers (including our future selves).

    "},{"location":"chapter-1/#suboptimal-or-unidiomatic-organization","title":"Suboptimal or unidiomatic organization","text":"

    Be it while working on a new project or because we acquire inaccurate reflexes, another type of mistake is organizing our code and a project suboptimally and unidiomatically. Such issues can make a project harder to reason about and maintain. This book covers some of these common mistakes in Go. For example, we\u2019ll look at how to structure a project and deal with utility packages or init functions. All in all, looking at these mistakes should help us organize our code and projects more efficiently and idiomatically.

    "},{"location":"chapter-1/#lack-of-api-convenience","title":"Lack of API convenience","text":"

    Making common mistakes that weaken how convenient an API is for our clients is another type of mistake. If an API isn\u2019t user-friendly, it will be less expressive and, hence, harder to understand and more error-prone.

    We can think about many situations such as overusing any types, using the wrong creational pattern to deal with options, or blindly applying standard practices from object-oriented programming that affect the usability of our APIs. This book covers common mistakes that prevent us from exposing convenient APIs for our users.

    "},{"location":"chapter-1/#under-optimized-code","title":"Under-optimized code","text":"

    Under-optimized code is another type of mistake made by developers. It can happen for various reasons, such as not understanding language features or even a lack of fundamental knowledge. Performance is one of the most obvious impacts of this mistake, but not the only one.

    We can think about optimizing code for other goals, such as accuracy. For example, this book provides some common techniques to ensure that floating-point operations are accurate. Meanwhile, we will cover plenty of cases that can negatively impact performance code because of poorly parallelized executions, not knowing how to reduce allocations, or the impacts of data alignment, for example. We will tackle optimization via different prisms.

    "},{"location":"chapter-1/#lack-of-productivity","title":"Lack of productivity","text":"

    In most cases, what\u2019s the best language we can choose when working on a new project? The one we\u2019re the most productive with. Being comfortable with how a language works and exploiting it to get the best out of it is crucial to reach proficiency.

    In this book, we will cover many cases and concrete examples that will help us to be more productive while working in Go. For instance, we\u2019ll look at writing efficient tests to ensure that our code works, relying on the standard library to be more effective, and getting the best out of the profiling tools and linters. Now, it\u2019s time to delve into those 100 common Go mistakes.

    "},{"location":"chapter-1/#summary","title":"Summary","text":"
    • Go is a modern programming language that enables developer productivity, which is crucial for most companies today.
    • Go is simple to learn but not easy to master. This is why we need to deepen our knowledge to make the most effective use of the language.
    • Learning via mistakes and concrete examples is a powerful way to be proficient in a language. This book will accelerate our path to proficiency by exploring 100 common mistakes.
    1. J. S. Moser, H. S. Schroder, et al., \u201cMind Your Errors: Evidence for a Neural Mechanism Linking Growth Mindset to Adaptive Posterror Adjustments,\u201d Psychological Science, vol. 22, no. 12, pp. 1484\u20131489, Dec. 2011.\u00a0\u21a9

    2. J. Metcalfe, \u201cLearning from Errors,\u201d Annual Review of Psychology, vol. 68, pp. 465\u2013489, Jan. 2017.\u00a0\u21a9

    3. Synopsys, \u201cThe Cost of Poor Software Quality in the US: A 2020 Report.\u201d 2020. https://news.synopsys.com/2021-01-06-Synopsys-Sponsored-CISQ-Research-Estimates-Cost-of-Poor-Software-Quality-in-the-US-2-08-Trillion-in-2020.\u00a0\u21a9

    "},{"location":"community/","title":"Community","text":"

    Thanks to all the contributors:

    If you want to get involved, I'm looking for volunteers to summarize the remaining mistakes (GitHub issue #43) \ud83d\ude4f

    "},{"location":"external/","title":"External Resources","text":""},{"location":"external/#english","title":"English","text":""},{"location":"external/#the-best-golang-book-prime-reacts","title":"The Best Golang Book | Prime Reacts","text":""},{"location":"external/#book-review-100-go-mistakes-and-how-to-avoid-them","title":"Book Review: 100 Go Mistakes (And How to Avoid Them)","text":"

    Post

    "},{"location":"external/#the-most-useful-book-for-a-go-programmer","title":"The Most Useful Book for a Go Programmer?","text":""},{"location":"external/#how-to-make-mistakes-in-go-go-time-190","title":"How to make mistakes in Go - Go Time #190","text":"
    • Episode
    • Spotify
    "},{"location":"external/#go-is-amazing","title":"Go is AMAZING","text":""},{"location":"external/#8lu-100-test-coverage","title":"8LU - 100% Test Coverage","text":""},{"location":"external/#some-tips-i-learned-from-100-mistakes-in-go","title":"Some Tips I learned from 100 Mistakes in Go","text":"

    Post

    "},{"location":"external/#what-can-be-summarized-from-100-go-mistakes","title":"What can be summarized from 100 Go Mistakes?","text":"

    Post

    "},{"location":"external/#chinese","title":"Chinese","text":""},{"location":"external/#100-go-mistakes-and-how-to-avoid-them","title":"\u6df1\u5ea6\u9605\u8bfb\u4e4b\u300a100 Go Mistakes and How to Avoid Them","text":"

    Post

    "},{"location":"external/#100-go-mistakes","title":"100 Go Mistakes \u968f\u8bb0","text":"

    Post

    "},{"location":"external/#go","title":"\u6211\u4e3a\u4ec0\u4e48\u653e\u5f03Go\u8bed\u8a00\uff1f","text":"

    Post

    "},{"location":"external/#japanese","title":"Japanese","text":""},{"location":"external/#go100-go-mistakes-and-how-to-avoid-them","title":"\u6700\u8fd1\u8aad\u3093\u3060Go\u8a00\u8a9e\u306e\u672c\u306e\u7d39\u4ecb\uff1a100 Go Mistakes and How to Avoid Them","text":"

    Post

    "},{"location":"external/#100-go-mistakes-and-how-to-avoid-them_1","title":"\u300e100 Go Mistakes and How to Avoid Them\u300f\u3092\u8aad\u3080","text":"

    Post

    "},{"location":"external/#portuguese","title":"Portuguese","text":""},{"location":"external/#um-otimo-livro-para-programadores-go","title":"Um \u00d3TIMO livro para programadores Go","text":""},{"location":"ja/","title":"Go\u8a00\u8a9e\u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044","text":"

    \u3053\u306e\u30da\u30fc\u30b8\u306f\u300e100 Go Mistakes\u300f\u306e\u5185\u5bb9\u3092\u307e\u3068\u3081\u305f\u3082\u306e\u3067\u3059\u3002\u4e00\u65b9\u3067\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u958b\u304b\u308c\u305f\u30da\u30fc\u30b8\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u300c\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u300d\u304c\u65b0\u305f\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3079\u304d\u3060\u3068\u304a\u8003\u3048\u3067\u3057\u305f\u3089 community mistake issue \u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u6ce8\u610f

    \u73fe\u5728\u3001\u5927\u5e45\u306b\u591a\u304f\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8ffd\u52a0\u3057\u3066\u5f37\u5316\u3057\u3066\u3044\u308b\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u95b2\u89a7\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u307e\u3060\u958b\u767a\u4e2d\u3067\u3059\u3002\u554f\u984c\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u306f\u3069\u3046\u305e\u6c17\u8efd\u306bPR\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    "},{"location":"ja/#_1","title":"\u30b3\u30fc\u30c9\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210","text":""},{"location":"ja/#1","title":"\u610f\u56f3\u7684\u3067\u306a\u3044\u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0 (#1)","text":"\u8981\u7d04

    \u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u3092\u907f\u3051\u308b\u3053\u3068\u306f\u3001\u8aa4\u3063\u305f\u5909\u6570\u306e\u53c2\u7167\u3084\u8aad\u307f\u624b\u306e\u6df7\u4e71\u3092\u9632\u304e\u307e\u3059\u3002

    \u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u306f\u3001\u5909\u6570\u540d\u304c\u30d6\u30ed\u30c3\u30af\u5185\u3067\u518d\u5ba3\u8a00\u3055\u308c\u308b\u3053\u3068\u3067\u751f\u3058\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u9593\u9055\u3044\u3092\u5f15\u304d\u8d77\u3053\u3057\u3084\u3059\u304f\u3057\u307e\u3059\u3002\u5909\u6570\u306e\u30b7\u30e3\u30c9\u30fc\u30a4\u30f3\u30b0\u3092\u7981\u6b62\u3059\u308b\u304b\u3069\u3046\u304b\u306f\u500b\u4eba\u306e\u597d\u307f\u306b\u3088\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30a8\u30e9\u30fc\u306b\u5bfe\u3057\u3066 err \u306e\u3088\u3046\u306a\u65e2\u5b58\u306e\u5909\u6570\u540d\u3092\u518d\u5229\u7528\u3059\u308b\u3068\u4fbf\u5229\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3068\u306f\u3044\u3048\u3001\u30b3\u30fc\u30c9\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u3082\u306e\u306e\u3001\u5024\u3092\u53d7\u3051\u53d6\u3063\u305f\u5909\u6570\u304c\u4e88\u671f\u3057\u305f\u3082\u306e\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u30b7\u30ca\u30ea\u30aa\u306b\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u539f\u5247\u3068\u3057\u3066\u5f15\u304d\u7d9a\u304d\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#2","title":"\u4e0d\u5fc5\u8981\u306b\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30b3\u30fc\u30c9 (#2)","text":"\u8981\u7d04

    \u30cd\u30b9\u30c8\u304c\u6df1\u304f\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u3001\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u5de6\u5074\u306b\u63c3\u3048\u308b\u3053\u3068\u3067\u30e1\u30f3\u30bf\u30eb\u30b3\u30fc\u30c9\u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002

    \u4e00\u822c\u7684\u306b\u3001\u95a2\u6570\u304c\u3088\u308a\u6df1\u3044\u30cd\u30b9\u30c8\u3092\u8981\u6c42\u3059\u308b\u307b\u3069\u3001\u8aad\u3093\u3067\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u30eb\u30fc\u30eb\u306e\u9069\u7528\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002

    • if \u30d6\u30ed\u30c3\u30af\u304c\u8fd4\u3055\u308c\u308b\u3068\u304d\u3001\u3059\u3079\u3066\u306e\u5834\u5408\u306b\u304a\u3044\u3066 else \u30d6\u30ed\u30c3\u30af\u3092\u7701\u7565\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u66f8\u304f\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
    if foo() {\n    // ...\n    return true\n} else {\n    // ...\n}\n

    \u4ee3\u308f\u308a\u306b\u3001\u6b21\u306e\u3088\u3046\u306b else \u30d6\u30ed\u30c3\u30af\u3092\u7701\u7565\u3057\u307e\u3059\u3002

    if foo() {\n    // ...\n    return true\n}\n// ...\n
    • \u30ce\u30f3\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3067\u3082\u3053\u306e\u30ed\u30b8\u30c3\u30af\u306b\u5f93\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
    if s != \"\" {\n    // ...\n} else {\n    return errors.New(\"empty string\")\n}\n

    \u3053\u3053\u3067\u306f\u3001\u7a7a\u306e s \u304c\u30ce\u30f3\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u8868\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6b21\u306e\u3088\u3046\u306b\u6761\u4ef6\u3092\u3072\u3063\u304f\u308a\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    if s == \"\" {\n    return errors.New(\"empty string\")\n}\n// ...\n

    \u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u91cd\u8981\u306a\u8ab2\u984c\u3067\u3059\u3002\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d6\u30ed\u30c3\u30af\u306e\u6570\u3092\u6e1b\u3089\u3059\u3088\u3046\u52aa\u3081\u3001\u30cf\u30c3\u30d4\u30fc\u30d1\u30b9\u3092\u5de6\u5074\u306b\u63c3\u3048\u3001\u3067\u304d\u308b\u3060\u3051\u65e9\u304f\u623b\u308b\u3053\u3068\u304c\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u5177\u4f53\u7684\u306a\u624b\u6bb5\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#init-3","title":"init\u95a2\u6570\u306e\u8aa4\u7528 (#3)","text":"\u8981\u7d04

    \u5909\u6570\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u304d\u306f\u3001init\u95a2\u6570\u306e\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u5236\u9650\u3055\u308c\u3066\u304a\u308a\u3001\u30b9\u30c6\u30fc\u30c8\u306e\u51e6\u7406\u3068\u30c6\u30b9\u30c8\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u306f\u7279\u5b9a\u306e\u95a2\u6570\u3068\u3057\u3066\u51e6\u7406\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002

    init\u95a2\u6570\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b9\u30c6\u30fc\u30c8\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002\u5f15\u6570\u3092\u53d6\u3089\u305a\u3001\u7d50\u679c\u3082\u8fd4\u3057\u307e\u305b\u3093\uff08 func() \u95a2\u6570\uff09\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u521d\u671f\u5316\u3055\u308c\u308b\u3068\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u306e\u3059\u3079\u3066\u306e\u5b9a\u6570\u304a\u3088\u3073\u5909\u6570\u306e\u5ba3\u8a00\u304c\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u6b21\u306b\u3001init\u95a2\u6570\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002

    init\u95a2\u6570\u306f\u3044\u304f\u3064\u304b\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30a8\u30e9\u30fc\u51e6\u7406\u304c\u5236\u9650\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
    • \u30c6\u30b9\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5\u304c\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001\u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u306e\u7bc4\u56f2\u3067\u306f\u5fc5\u8981\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff09\u3002
    • \u521d\u671f\u5316\u3067\u30b9\u30c6\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    init\u95a2\u6570\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u9759\u7684\u69cb\u6210\u306e\u5b9a\u7fa9\u306a\u3069\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5f79\u7acb\u3064\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306e\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u521d\u671f\u5316\u51e6\u7406\u306f\u7279\u5b9a\u306e\u95a2\u6570\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#4","title":"\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u4e71\u7528 (#4)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u3001\u6163\u7528\u7684\u306b\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u4f7f\u7528\u3092\u5f37\u5236\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u5229\u3092\u91cd\u8996\u3057\u3001\u52b9\u7387\u6027\u3068\u7279\u5b9a\u306e\u6163\u7fd2\u306b\u5f93\u3046\u3053\u3068\u3068\u306e\u9593\u306e\u9069\u5207\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3001\u9032\u3080\u3079\u304d\u9053\u3067\u3042\u308b\u306f\u305a\u3067\u3059\u3002

    \u30c7\u30fc\u30bf\u306e\u30ab\u30d7\u30bb\u30eb\u5316\u3068\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5024\u307e\u305f\u306f\u72b6\u614b\u3092\u96a0\u3059\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306f\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u4e0a\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u30ab\u30d7\u30bb\u30eb\u5316\u3092\u53ef\u80fd\u306b\u3059\u308b\u624b\u6bb5\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u4e00\u90e8\u306e\u8a00\u8a9e\u3067\u898b\u3089\u308c\u308b\u3088\u3046\u306a\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u81ea\u52d5\u30b5\u30dd\u30fc\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u69cb\u9020\u4f53\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u306f\u5fc5\u9808\u3067\u3082\u6163\u7528\u7684\u3067\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u5024\u3092\u3082\u305f\u3089\u3055\u306a\u3044\u69cb\u9020\u4f53\u306e\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u3067\u30b3\u30fc\u30c9\u3092\u57cb\u3081\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u5229\u3092\u91cd\u8996\u3057\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3067\u6642\u306b\u306f\u8b70\u8ad6\u306e\u4f59\u5730\u304c\u306a\u3044\u3068\u8003\u3048\u3089\u308c\u3066\u3044\u308b\u6163\u7fd2\u306b\u5f93\u3046\u3053\u3068\u3068\u3001\u52b9\u7387\u6027\u3068\u306e\u9593\u306e\u9069\u5207\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3088\u3046\u52aa\u3081\u308b\u3079\u304d\u3067\u3059\u3002

    Go\u8a00\u8a9e\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3055\u3092\u542b\u3080\u591a\u304f\u306e\u7279\u6027\u3092\u8003\u616e\u3057\u3066\u8a2d\u8a08\u3055\u308c\u305f\u72ec\u81ea\u306e\u8a00\u8a9e\u3067\u3042\u308b\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u30b2\u30c3\u30bf\u30fc\u3068\u30bb\u30c3\u30bf\u30fc\u306e\u5fc5\u8981\u6027\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u307e\u305f\u306f\u524d\u8ff0\u306e\u3088\u3046\u306b\u3001\u524d\u65b9\u4e92\u63db\u6027\u3092\u4fdd\u8a3c\u3057\u306a\u304c\u3089\u5c06\u6765\u306e\u5fc5\u8981\u6027\u304c\u4e88\u6e2c\u3055\u308c\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u554f\u984c\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    "},{"location":"ja/#5","title":"\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u6c5a\u67d3 (#5)","text":"\u8981\u7d04

    \u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u3059\u3002\u4e0d\u5fc5\u8981\u306a\u8907\u96d1\u3055\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u5fc5\u8981\u306b\u306a\u308b\u3068\u4e88\u6e2c\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u5fc5\u8981\u306b\u306a\u3063\u305f\u3068\u304d\u306b\u4f5c\u6210\u3059\u308b\u304b\u3001\u5c11\u306a\u304f\u3068\u3082\u62bd\u8c61\u5316\u304c\u6709\u52b9\u3067\u3042\u308b\u3053\u3068\u3092\u8a3c\u660e\u3067\u304d\u308b\u5834\u5408\u306b\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u52d5\u4f5c\u3092\u6307\u5b9a\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u8907\u6570\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5b9f\u88c5\u3067\u304d\u308b\u5171\u901a\u9805\u3092\u62bd\u51fa\u3059\u308b\u305f\u3081\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Go\u8a00\u8a9e\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u5927\u304d\u304f\u7570\u306a\u308b\u306e\u306f\u3001\u6697\u9ed9\u7684\u306b\u6e80\u305f\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 X \u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 Y \u3092\u5b9f\u88c5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3059 implements \u306e\u3088\u3046\u306a\u660e\u793a\u7684\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u4e00\u822c\u306b\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u4fa1\u5024\u3092\u3082\u305f\u3089\u3059\u3068\u8003\u3048\u3089\u308c\u308b\u4e3b\u8981\u306a\u4f7f\u7528\u4f8b\u306f\uff13\u3064\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306f\u3001\u5171\u901a\u306e\u52d5\u4f5c\u3092\u9664\u5916\u3059\u308b\u3001\u4f55\u3089\u304b\u306e\u5206\u96e2\u3092\u4f5c\u6210\u3059\u308b\u3001\u304a\u3088\u3073\u578b\u3092\u7279\u5b9a\u306e\u52d5\u4f5c\u306b\u5236\u9650\u3059\u308b\u3068\u3044\u3046\u3082\u306e\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u306e\u30ea\u30b9\u30c8\u306f\u3059\u3079\u3066\u3092\u7db2\u7f85\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u76f4\u9762\u3059\u308b\u72b6\u6cc1\u306b\u3088\u3063\u3066\u3082\u7570\u306a\u308a\u307e\u3059\u3002

    \u591a\u304f\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u62bd\u8c61\u5316\u3059\u308b\u305f\u3081\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u62bd\u8c61\u5316\u3059\u308b\u3068\u304d\u306e\u4e3b\u306a\u6ce8\u610f\u70b9\u306f\u3001\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3055\u308c\u308b\u3079\u304d\u3067\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3053\u3068\u3067\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u305d\u3046\u3059\u308b\u76f4\u63a5\u306e\u7406\u7531\u304c\u306a\u3044\u9650\u308a\u3001\u30b3\u30fc\u30c9\u5185\u3067\u62bd\u8c61\u5316\u3059\u3079\u304d\u3067\u306f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u3063\u3066\u8a2d\u8a08\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u5177\u4f53\u7684\u306a\u30cb\u30fc\u30ba\u3092\u5f85\u3064\u3079\u304d\u3067\u3059\u3002\u5225\u306e\u8a00\u3044\u65b9\u3092\u3059\u308c\u3070\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u5fc5\u8981\u306b\u306a\u308b\u3068\u4e88\u6e2c\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u5fc5\u8981\u306b\u306a\u3063\u305f\u3068\u304d\u306b\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u904e\u5ea6\u306a\u4f7f\u7528\u3092\u3057\u305f\u5834\u5408\u306e\u4e3b\u306a\u554f\u984c\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002\u7b54\u3048\u306f\u3001\u30b3\u30fc\u30c9\u30d5\u30ed\u30fc\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u3067\u3059\u3002\u5f79\u306b\u7acb\u305f\u306a\u3044\u9593\u63a5\u53c2\u7167\u3092\u8ffd\u52a0\u3057\u3066\u3082\u4f55\u306e\u4fa1\u5024\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u306f\u4fa1\u5024\u306e\u306a\u3044\u62bd\u8c61\u5316\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u3001\u7406\u89e3\u3057\u3001\u63a8\u8ad6\u3059\u308b\u3053\u3068\u3092\u3055\u3089\u306b\u56f0\u96e3\u306b\u3057\u307e\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u660e\u78ba\u306a\u7406\u7531\u304c\u306a\u304f\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u3088\u3063\u3066\u30b3\u30fc\u30c9\u304c\u3069\u306e\u3088\u3046\u306b\u6539\u5584\u3055\u308c\u308b\u304b\u304c\u4e0d\u660e\u77ad\u306a\u5834\u5408\u306f\u3001\u305d\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u76ee\u7684\u306b\u7570\u8b70\u3092\u5531\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b9f\u88c5\u3092\u76f4\u63a5\u547c\u3073\u51fa\u3059\u306e\u3082\u4e00\u3064\u306e\u624b\u3067\u3059\u3002

    \u30b3\u30fc\u30c9\u5185\u3067\u62bd\u8c61\u5316\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff08\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff09\u3002\u5f8c\u3067\u5fc5\u8981\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3082\u306e\u3092\u8003\u616e\u3057\u3001\u5b8c\u74a7\u306a\u62bd\u8c61\u5316\u30ec\u30d9\u30eb\u3092\u63a8\u6e2c\u3057\u3066\u3001\u79c1\u305f\u3061\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u8005\u306f\u30b3\u30fc\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30b3\u30fc\u30c9\u304c\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3067\u6c5a\u67d3\u3055\u308c\u3001\u8aad\u307f\u306b\u304f\u304f\u306a\u308b\u305f\u3081\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002

    \u30ed\u30d6\u30fb\u30d1\u30a4\u30af

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u30c7\u30b6\u30a4\u30f3\u3059\u308b\u306a\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u898b\u3064\u3051\u51fa\u305b\u3002

    \u62bd\u8c61\u7684\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3088\u3046\u3068\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4eca\u89e3\u6c7a\u3059\u3079\u304d\u3053\u3068\u3092\u89e3\u6c7a\u3057\u307e\u3057\u3087\u3046\u3002\u6700\u5f8c\u306b\u91cd\u8981\u306a\u3053\u3068\u3067\u3059\u304c\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u3088\u3063\u3066\u30b3\u30fc\u30c9\u304c\u3069\u306e\u3088\u3046\u306b\u6539\u5584\u3055\u308c\u308b\u304b\u304c\u4e0d\u660e\u77ad\u306a\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#6","title":"\u751f\u7523\u8005\u5074\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 (#6)","text":"\u8981\u7d04

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u4fdd\u6301\u3059\u308b\u3053\u3068\u3067\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u6697\u9ed9\u7684\u306b\u6e80\u305f\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u660e\u793a\u7684\u306a\u5b9f\u88c5\u3092\u6301\u3064\u8a00\u8a9e\u3068\u6bd4\u8f03\u3057\u3066\u5927\u304d\u306a\u5909\u5316\u3092\u3082\u305f\u3089\u3059\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u5f93\u3046\u3079\u304d\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8aac\u660e\u3057\u305f\u3082\u306e\u2015\u2015\u62bd\u8c61\u5316\u306f\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u767a\u898b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u2015\u2015\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3059\u3079\u3066\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u7279\u5b9a\u306e\u62bd\u8c61\u5316\u3092\u5f37\u5236\u3059\u308b\u306e\u306f\u751f\u7523\u8005\u306e\u5f79\u5272\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001\u4f55\u3089\u304b\u306e\u5f62\u5f0f\u306e\u62bd\u8c61\u5316\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3057\u3001\u305d\u306e\u30cb\u30fc\u30ba\u306b\u6700\u9069\u306a\u62bd\u8c61\u5316\u30ec\u30d9\u30eb\u3092\u6c7a\u5b9a\u3059\u308b\u306e\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8cac\u4efb\u3067\u3059\u3002

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u6d88\u8cbb\u8005\u5074\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u7279\u5b9a\u306e\u72b6\u6cc1\uff08\u305f\u3068\u3048\u3070\u3001\u62bd\u8c61\u5316\u304c\u6d88\u8cbb\u8005\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3053\u3068\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u2015\u2015\u4e88\u6e2c\u306f\u3057\u3066\u3044\u306a\u3044\u2015\u2015\u5834\u5408\uff09\u3067\u306f\u3001\u305d\u308c\u3092\u751f\u7523\u8005\u5074\u3067\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3057\u305f\u5834\u5408\u3001\u53ef\u80fd\u306a\u9650\u308a\u6700\u5c0f\u9650\u306b\u6291\u3048\u3001\u518d\u5229\u7528\u53ef\u80fd\u6027\u3092\u9ad8\u3081\u3001\u3088\u308a\u7c21\u5358\u306b\u69cb\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u52aa\u3081\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#7","title":"\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059 (#7)","text":"\u8981\u7d04

    \u67d4\u8edf\u6027\u306b\u554f\u984c\u304c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u95a2\u6570\u306f\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u306a\u304f\u5177\u4f53\u7684\u200b\u200b\u306a\u5b9f\u88c5\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u9006\u306b\u3001\u95a2\u6570\u306f\u53ef\u80fd\u306a\u9650\u308a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u53d7\u3051\u5165\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u306a\u304f\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3044\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b\u3088\u308a\u8a2d\u8a08\u304c\u3044\u3063\u305d\u3046\u8907\u96d1\u306b\u306a\u308a\u3001\u3059\u3079\u3066\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u540c\u3058\u62bd\u8c61\u5316\u306b\u4f9d\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u67d4\u8edf\u6027\u306b\u6b20\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u7d50\u8ad6\u306f\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002\u62bd\u8c61\u5316\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3053\u3068\u304c\uff08\u4e88\u6e2c\u3055\u308c\u308b\u3067\u306f\u306a\u304f\uff09\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u3082\u3088\u3044\u3067\u3057\u3087\u3046\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u3001\u62bd\u8c61\u5316\u3092\u5f37\u5236\u3059\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u767a\u898b\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5b9f\u88c5\u3092\u62bd\u8c61\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3067\u3082\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u305d\u308c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#any-8","title":"any \u306f\u4f55\u3082\u8a00\u308f\u306a\u3044 (#8)","text":"\u8981\u7d04

    json.Marshal \u306a\u3069\u8003\u3048\u3046\u308b\u3059\u3079\u3066\u306e\u578b\u3092\u53d7\u3051\u5165\u308c\u308b\u304b\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u306e\u307f any \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u3001any \u306f\u610f\u5473\u306e\u3042\u308b\u60c5\u5831\u3092\u63d0\u4f9b\u305b\u305a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u4efb\u610f\u306e\u30c7\u30fc\u30bf\u578b\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3092\u8a31\u53ef\u3059\u308b\u305f\u3081\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    any \u578b\u306f\u3001\u8003\u3048\u3046\u308b\u3059\u3079\u3066\u306e\u578b\u3092\u53d7\u3051\u5165\u308c\u308b\u304b\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\uff08\u305f\u3068\u3048\u3070\u3001\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u3084\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u5834\u5408\uff09\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u539f\u5247\u3068\u3057\u3066\u30b3\u30fc\u30c9\u3092\u904e\u5ea6\u306b\u4e00\u822c\u5316\u3059\u308b\u3053\u3068\u306f\u4f55\u3068\u3057\u3066\u3082\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u30b3\u30fc\u30c9\u306e\u8868\u73fe\u529b\u306a\u3069\u306e\u4ed6\u306e\u5074\u9762\u304c\u5411\u4e0a\u3059\u308b\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5c11\u3057\u91cd\u8907\u3055\u305b\u305f\u307b\u3046\u304c\u826f\u3044\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#9","title":"\u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u30b9\u3092\u3044\u3064\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#9)","text":"\u8981\u7d04

    \u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u30b9\u3068\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8981\u7d20\u3084\u52d5\u4f5c\u3092\u9664\u5916\u3059\u308b\u305f\u3081\u306e\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u6642\u671f\u5c1a\u65e9\u306b\u4f7f\u7528\u305b\u305a\u3001\u5177\u4f53\u7684\u306a\u5fc5\u8981\u6027\u304c\u308f\u304b\u3063\u305f\u5834\u5408\u306b\u306e\u307f\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u4e0d\u5fc5\u8981\u306a\u62bd\u8c61\u5316\u3068\u8907\u96d1\u3055\u304c\u751f\u3058\u307e\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#10","title":"\u578b\u306e\u57cb\u3081\u8fbc\u307f\u3067\u8d77\u3053\u308a\u3046\u308b\u554f\u984c\u3092\u628a\u63e1\u3057\u3066\u3044\u306a\u3044 (#10)","text":"\u8981\u7d04

    \u578b\u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u4e00\u90e8\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u975e\u8868\u793a\u306b\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u69cb\u9020\u4f53\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001Go\u8a00\u8a9e\u306f\u578b\u3092\u57cb\u3081\u8fbc\u3080\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u578b\u57cb\u3081\u8fbc\u307f\u306e\u610f\u5473\u3092\u3059\u3079\u3066\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\u3068\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u578b\u3092\u57cb\u3081\u8fbc\u3080\u65b9\u6cd5\u3001\u305d\u308c\u304c\u3082\u305f\u3089\u3059\u3082\u306e\u3001\u304a\u3088\u3073\u8003\u3048\u3089\u308c\u308b\u554f\u984c\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u540d\u524d\u306a\u3057\u3067\u5ba3\u8a00\u3055\u308c\u305f\u69cb\u9020\u4f53\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u57cb\u3081\u8fbc\u307f\u3068\u547c\u3070\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002

    type Foo struct {\n    Bar // \u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\n}\n\ntype Bar struct {\n    Baz int\n}\n

    Foo \u69cb\u9020\u4f53\u3067\u306f\u3001Bar \u578b\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u540d\u524d\u306a\u3057\u3067\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u308c\u306f\u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u3059\u3002

    \u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u57cb\u3081\u8fbc\u307f\u578b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u6607\u683c\u3057\u307e\u3059\u3002Bar \u306b\u306f Baz \u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f Foo \u306b\u6607\u683c\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001Foo \u304b\u3089 Baz \u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    \u578b\u306e\u57cb\u3081\u8fbc\u307f\u306b\u3064\u3044\u3066\u4f55\u304c\u8a00\u3048\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u307e\u305a\u3001\u3053\u308c\u304c\u5fc5\u8981\u306b\u306a\u308b\u3053\u3068\u306f\u307b\u3068\u3093\u3069\u306a\u304f\u3001\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u304c\u4f55\u3067\u3042\u308c\u3001\u304a\u305d\u3089\u304f\u578b\u57cb\u3081\u8fbc\u307f\u306a\u3057\u3067\u3082\u540c\u69d8\u306b\u89e3\u6c7a\u3067\u304d\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u578b\u306e\u57cb\u3081\u8fbc\u307f\u306f\u4e3b\u306b\u5229\u4fbf\u6027\u3092\u76ee\u7684\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u305d\u308c\u306f\u52d5\u4f5c\u3092\u6607\u683c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002

    \u578b\u57cb\u3081\u8fbc\u307f\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u6b21\u306e 2 \u3064\u306e\u4e3b\u306a\u5236\u7d04\u3092\u5ff5\u982d\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306e\u7cd6\u8863\u69cb\u6587\u3068\u3057\u3066\u306e\u307f\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff08 Foo.Bar.Baz() \u306e\u4ee3\u308f\u308a\u306b Foo.Baz() \u306a\u3069\uff09\u3002 \u3053\u308c\u304c\u552f\u4e00\u306e\u6839\u62e0\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u5185\u90e8\u578b\u3092\u57cb\u3081\u8fbc\u307e\u305a\u3001\u4ee3\u308f\u308a\u306b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\u3002
    • \u5916\u90e8\u304b\u3089\u96a0\u3057\u305f\u3044\u30c7\u30fc\u30bf\uff08\u30d5\u30a3\u30fc\u30eb\u30c9\uff09\u3084\u52d5\u4f5c\uff08\u30e1\u30bd\u30c3\u30c9\uff09\u3092\u6607\u683c\u3057\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u305f\u3068\u3048\u3070\u3001\u69cb\u9020\u4f53\u306b\u5bfe\u3057\u3066\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u307e\u307e\u306b\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u30ed\u30c3\u30af\u52d5\u4f5c\u306b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002

    \u3053\u308c\u3089\u306e\u5236\u7d04\u3092\u5ff5\u982d\u306b\u7f6e\u3044\u3066\u578b\u57cb\u3081\u8fbc\u307f\u3092\u610f\u8b58\u7684\u306b\u4f7f\u7528\u3059\u308b\u3068\u3001\u8ffd\u52a0\u306e\u8ee2\u9001\u30e1\u30bd\u30c3\u30c9\u306b\u3088\u308b\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u56de\u907f\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u898b\u305f\u76ee\u3060\u3051\u3092\u76ee\u7684\u3068\u3057\u305f\u308a\u3001\u96a0\u3059\u3079\u304d\u8981\u7d20\u3092\u6607\u683c\u3057\u305f\u308a\u3057\u306a\u3044\u3088\u3046\u306b\u6ce8\u610f\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#functional-options-11","title":"Functional Options \u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#11)","text":"\u8981\u7d04

    API \u306b\u9069\u3057\u305f\u65b9\u6cd5\u3067\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4fbf\u5229\u306b\u51e6\u7406\u3059\u308b\u306b\u306f\u3001Functional Options \u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002

    \u3055\u307e\u3056\u307e\u306a\u5b9f\u88c5\u65b9\u6cd5\u304c\u5b58\u5728\u3057\u3001\u591a\u5c11\u306e\u9055\u3044\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u4e3b\u306a\u8003\u3048\u65b9\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002

    • \u672a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306e\u69cb\u9020\u4f53\u306f\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002
    • \u5404\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u540c\u3058\u578b\u3001type Option func(options *options) \u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001WithPort \u306f\u30dd\u30fc\u30c8\u3092\u8868\u3059 int \u5f15\u6570\u3092\u53d7\u3051\u53d6\u308a\u3001options \u69cb\u9020\u4f53\u306e\u66f4\u65b0\u65b9\u6cd5\u3092\u8868\u3059 Option \u578b\u3092\u8fd4\u3057\u307e\u3059\u3002

    type options struct {\n  port *int\n}\n\ntype Option func(options *options) error\n\nfunc WithPort(port int) Option {\n  return func(options *options) error {\n    if port < 0 {\n    return errors.New(\"port should be positive\")\n  }\n  options.port = &port\n  return nil\n  }\n}\n\nfunc NewServer(addr string, opts ...Option) ( *http.Server, error) { <1>\n  var options options <2>\n  for _, opt := range opts { <3>\n    err := opt(&options) <4>\n    if err != nil {\n      return nil, err\n    }\n  }\n\n// \u3053\u306e\u6bb5\u968e\u3067\u3001options \u69cb\u9020\u4f53\u304c\u69cb\u7bc9\u3055\u308c\u3001\u69cb\u6210\u304c\u542b\u307e\u308c\u307e\u3059\u3002\n// \u3057\u305f\u304c\u3063\u3066\u3001\u30dd\u30fc\u30c8\u8a2d\u5b9a\u306b\u95a2\u9023\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\n  var port int\n  if options.port == nil {\n    port = defaultHTTPPort\n  } else {\n      if *options.port == 0 {\n      port = randomPort()\n    } else {\n      port = *options.port\n    }\n  }\n\n  // ...\n}\n

    Functional Options \u30d1\u30bf\u30fc\u30f3\u306f\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u624b\u8efd\u3067 API \u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Builder \u30d1\u30bf\u30fc\u30f3\u306f\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u5c0f\u3055\u306a\u6b20\u70b9\uff08\u7a7a\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u69cb\u6210\u69cb\u9020\u4f53\u3092\u6e21\u3055\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3001\u307e\u305f\u306f\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5\u304c\u3042\u307e\u308a\u4fbf\u5229\u3067\u306f\u306a\u3044\uff09\u304c\u3042\u308a\u3001\u3053\u306e\u7a2e\u306e\u554f\u984c\u306b\u304a\u3044\u3066 Functional Options \u30d1\u30bf\u30fc\u30f3\u304cGo\u8a00\u8a9e\u306b\u304a\u3051\u308b\u6163\u7528\u7684\u306a\u5bfe\u51e6\u65b9\u6cd5\u306b\u306a\u308b\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#12","title":"\u8aa4\u3063\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210 (\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u69cb\u6210) (#12)","text":"

    \u5168\u4f53\u7684\u306a\u69cb\u6210\u306b\u95a2\u3057\u3066\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u8003\u3048\u65b9\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3054\u3068\u306b\u6574\u7406\u3059\u3079\u304d\u304b\u3001\u305d\u308c\u3068\u3082\u30ec\u30a4\u30e4\u30fc\u3054\u3068\u306b\u6574\u7406\u3059\u3079\u304d\u304b\u3001\u305d\u308c\u306f\u597d\u307f\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\uff08\u9867\u5ba2\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3001\u5951\u7d04\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306a\u3069\uff09\u3054\u3068\u306b\u30b3\u30fc\u30c9\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3092\u9078\u3076\u5834\u5408\u3082\u3042\u308c\u3070\u3001\u516d\u89d2\u5f62\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3068\u3001\u6280\u8853\u5c64\u3054\u3068\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3092\u9078\u3076\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u304c\u884c\u3046\u6c7a\u5b9a\u304c\u4e00\u8cab\u3057\u3066\u3044\u308b\u9650\u308a\u3001\u305d\u308c\u304c\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u9069\u5408\u3059\u308b\u306a\u3089\u3001\u305d\u308c\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u95a2\u3057\u3066\u306f\u3001\u5f93\u3046\u3079\u304d\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u304c\u8907\u6570\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u904e\u5ea6\u306b\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u6642\u671f\u5c1a\u65e9\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u5b8c\u74a7\u306a\u69cb\u9020\u3092\u6700\u521d\u304b\u3089\u7121\u7406\u306b\u4f5c\u308d\u3046\u3068\u3059\u308b\u3088\u308a\u3082\u3001\u5358\u7d14\u306a\u69cb\u6210\u3092\u4f7f\u7528\u3057\u3001\u305d\u306e\u5185\u5bb9\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u767a\u5c55\u3055\u305b\u308b\u307b\u3046\u304c\u826f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u7c92\u5ea6\u3082\u8003\u616e\u3059\u3079\u304d\u91cd\u8981\u306a\u70b9\u3067\u3059\u3002 1 \u3064\u307e\u305f\u306f 2 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u3092\u542b\u3080\u6570\u5341\u306e\u30ca\u30ce\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u304a\u305d\u3089\u304f\u3053\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u8ad6\u7406\u7684\u306a\u63a5\u7d9a\u306e\u4e00\u90e8\u304c\u629c\u3051\u843d\u3061\u3001\u8aad\u307f\u624b\u306b\u3068\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u7406\u89e3\u3057\u306b\u304f\u304f\u306a\u308b\u304b\u3089\u3067\u3059\u3002\u9006\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\u610f\u5473\u3092\u8584\u3081\u308b\u3088\u3046\u306a\u5de8\u5927\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3082\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u540d\u524d\u4ed8\u3051\u3082\u6ce8\u610f\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\uff08\u958b\u767a\u8005\u306a\u3089\uff09\u8ab0\u3082\u304c\u77e5\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u540d\u524d\u3092\u4ed8\u3051\u308b\u306e\u306f\u96e3\u3057\u3044\u3067\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7406\u89e3\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u542b\u307e\u308c\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u63d0\u4f9b\u3059\u308b\u3082\u306e\u306b\u57fa\u3065\u3044\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30cd\u30fc\u30df\u30f3\u30b0\u306b\u306f\u610f\u5473\u306e\u3042\u308b\u3082\u306e\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306f\u77ed\u304f\u3001\u7c21\u6f54\u3067\u3001\u8868\u73fe\u529b\u8c4a\u304b\u3067\u3001\u6163\u4f8b\u306b\u3088\u308a\u5358\u4e00\u306e\u5c0f\u6587\u5b57\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u4f55\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306e\u30eb\u30fc\u30eb\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u7d50\u5408\u3092\u6e1b\u3089\u3057\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u308b\u4e0d\u8981\u306a\u8981\u7d20\u3092\u975e\u8868\u793a\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3082\u306e\u3092\u3067\u304d\u308b\u9650\u308a\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8981\u7d20\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u304b\u3069\u3046\u304b\u4e0d\u660e\u306a\u5834\u5408\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5f8c\u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u304c\u5224\u660e\u3057\u305f\u5834\u5408\u306f\u3001\u30b3\u30fc\u30c9\u3092\u8abf\u6574\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u69cb\u9020\u4f53\u3092 encoding/json \u3067\u30a2\u30f3\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u4f8b\u5916\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u69cb\u6210\u3059\u308b\u306e\u306f\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u3053\u3068\u3067\u7dad\u6301\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4fdd\u5b88\u6027\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u306f\u4e00\u8cab\u6027\u3082\u91cd\u8981\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u5185\u3067\u53ef\u80fd\u306a\u9650\u308a\u4e00\u8cab\u6027\u3092\u4fdd\u3064\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    \u88dc\u8db3

    Go \u30c1\u30fc\u30e0\u306f Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7d44\u7e54\u5316/\u69cb\u9020\u5316\u306b\u95a2\u3059\u308b\u516c\u5f0f\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092 2023 \u5e74\u306b\u767a\u884c\u3057\u307e\u3057\u305f\uff1a go.dev/doc/modules/layout

    "},{"location":"ja/#13","title":"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210 (#13)","text":"\u8981\u7d04

    \u540d\u524d\u4ed8\u3051\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002common \u3001util \u3001shared \u306e\u3088\u3046\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u3082\u3001\u8aad\u307f\u624b\u306b\u305d\u308c\u307b\u3069\u306e\u4fa1\u5024\u3092\u3082\u305f\u3089\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u3088\u3046\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u610f\u5473\u306e\u3042\u308b\u5177\u4f53\u7684\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306b\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3057\u307e\u3057\u3087\u3046\u3002

    \u307e\u305f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u542b\u307e\u308c\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u63d0\u4f9b\u3059\u308b\u3082\u306e\u306b\u57fa\u3065\u3044\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3068\u3001\u305d\u306e\u8868\u73fe\u529b\u3092\u9ad8\u3081\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u306b\u306a\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#14","title":"\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\u885d\u7a81\u3092\u7121\u8996\u3059\u308b (#14)","text":"\u8981\u7d04

    \u6df7\u4e71\u3001\u3055\u3089\u306b\u306f\u30d0\u30b0\u306b\u3064\u306a\u304c\u308a\u304b\u306d\u306a\u3044\u3001\u5909\u6570\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u9593\u306e\u540d\u524d\u306e\u885d\u7a81\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u305d\u308c\u305e\u308c\u306b\u4e00\u610f\u306e\u540d\u524d\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u304c\u4e0d\u53ef\u80fd\u306a\u5834\u5408\u306f\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u4fee\u98fe\u5b50\u3092\u5909\u66f4\u3057\u3066\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3068\u5909\u6570\u540d\u3092\u533a\u5225\u3059\u308b\u304b\u3001\u3088\u308a\u826f\u3044\u540d\u524d\u3092\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002

    \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u885d\u7a81\u306f\u3001\u5909\u6570\u540d\u304c\u65e2\u5b58\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3068\u885d\u7a81\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u518d\u5229\u7528\u304c\u59a8\u3052\u3089\u308c\u307e\u3059\u3002\u66d6\u6627\u3055\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u5909\u6570\u540d\u306e\u885d\u7a81\u3092\u9632\u3050\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u885d\u7a81\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u5225\u306e\u610f\u5473\u306e\u3042\u308b\u540d\u524d\u3092\u898b\u3064\u3051\u308b\u304b\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#15","title":"\u30b3\u30fc\u30c9\u306e\u6587\u7ae0\u5316\u304c\u884c\u308f\u308c\u3066\u3044\u306a\u3044 (#15)","text":"\u8981\u7d04

    \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30e1\u30f3\u30c6\u30ca\u304c\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u3092\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u3092\u6587\u7ae0\u5316\u3057\u307e\u3057\u3087\u3046\u3002

    \u6587\u7ae0\u5316\u306f\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u91cd\u8981\u306a\u5074\u9762\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c API \u3092\u3088\u308a\u7c21\u5358\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7dad\u6301\u306b\u3082\u5f79\u7acb\u3061\u307e\u3059\u3002Go\u8a00\u8a9e\u3067\u306f\u3001\u30b3\u30fc\u30c9\u3092\u6163\u7528\u7684\u306a\u3082\u306e\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u307e\u305a\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u8981\u7d20\u3092\u6587\u7ae0\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u69cb\u9020\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3001\u95a2\u6570\u306a\u3069\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5834\u5408\u306f\u6587\u7ae0\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6163\u4f8b\u3068\u3057\u3066\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u306e\u540d\u524d\u304b\u3089\u59cb\u307e\u308b\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002

    \u6163\u4f8b\u3068\u3057\u3066\u3001\u5404\u30b3\u30e1\u30f3\u30c8\u306f\u53e5\u8aad\u70b9\u3067\u7d42\u308f\u308b\u5b8c\u5168\u306a\u6587\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u95a2\u6570\uff08\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\uff09\u3092\u6587\u7ae0\u5316\u3059\u308b\u3068\u304d\u306f\u3001\u95a2\u6570\u304c\u3069\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u304b\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u95a2\u6570\u304c\u4f55\u3092\u5b9f\u884c\u3059\u308b\u3064\u3082\u308a\u3067\u3042\u308b\u304b\u3092\u5f37\u8abf\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u306a\u304f\u3001\u95a2\u6570\u3068\u30b3\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066\u3067\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u7406\u60f3\u7684\u306b\u306f\u3001\u5229\u7528\u8005\u304c\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u8981\u7d20\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u30b3\u30fc\u30c9\u3092\u898b\u308b\u5fc5\u8981\u304c\u306a\u3044\u307b\u3069\u5341\u5206\u306a\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u5909\u6570\u307e\u305f\u306f\u5b9a\u6570\u3092\u6587\u7ae0\u5316\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u76ee\u7684\u3068\u5185\u5bb9\u3068\u3044\u3046 2 \u3064\u306e\u5074\u9762\u3092\u4f1d\u3048\u308b\u3053\u3068\u304c\u91cd\u8981\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u524d\u8005\u306f\u3001\u5916\u90e8\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3068\u3063\u3066\u5f79\u7acb\u3064\u3088\u3046\u306b\u3001\u30b3\u30fc\u30c9\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u3057\u3066\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5f8c\u8005\u306f\u5fc5\u305a\u3057\u3082\u516c\u958b\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30e1\u30f3\u30c6\u30ca\u304c\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u76ee\u7684\u3092\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u5404\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3059\u308b\u5fc5\u8981\u3082\u3042\u308a\u307e\u3059\u3002\u6163\u4f8b\u3068\u3057\u3066\u3001\u30b3\u30e1\u30f3\u30c8\u306f //Package \u3067\u59cb\u307e\u308a\u3001\u305d\u306e\u5f8c\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u304c\u7d9a\u304d\u307e\u3059\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u30b3\u30e1\u30f3\u30c8\u306e\u6700\u521d\u306e\u884c\u306f\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u8868\u793a\u3055\u308c\u308b\u305f\u3081\u7c21\u6f54\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u6b21\u306e\u884c\u306b\u5fc5\u8981\u306a\u60c5\u5831\u3092\u3059\u3079\u3066\u5165\u529b\u3057\u307e\u3059\u3002

    \u30b3\u30fc\u30c9\u3092\u6587\u7ae0\u5316\u3059\u308b\u3053\u3068\u304c\u5236\u7d04\u306b\u306a\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3084\u30e1\u30f3\u30c6\u30ca\u304c\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#16","title":"\u30ea\u30f3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u306a\u3044 (#16)","text":"\u8981\u7d04

    \u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u3068\u4e00\u8cab\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u306b\u306f\u3001\u30ea\u30f3\u30bf\u30fc\u3068\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046

    \u30ea\u30f3\u30bf\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5206\u6790\u3057\u3066\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3059\u308b\u81ea\u52d5\u30c4\u30fc\u30eb\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u76ee\u7684\u306f\u3001\u65e2\u5b58\u306e\u30ea\u30f3\u30bf\u30fc\u306e\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3057\u305f\u5834\u5408\u3001\u3059\u3050\u306b\u4f7f\u3044\u7269\u306b\u306a\u3089\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3046\u304b\u3089\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u307b\u3068\u3093\u3069\u306e Go \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30ea\u30f3\u30bf\u30fc\u304c\u4e0d\u53ef\u6b20\u3067\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u7406\u89e3\u3057\u3001\u899a\u3048\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002

    • https://golang.org/cmd/vet\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30b3\u30fc\u30c9\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc
    • https://github.com/kisielk/errcheck\u2015\u2015\u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30ab\u30fc
    • https://github.com/fzipp/gocyclo\u2015\u2015\u5faa\u74b0\u7684\u8907\u96d1\u5ea6\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc
    • https://github.com/jgautheron/goconst\u2015\u2015\u8907\u6570\u56de\u4f7f\u7528\u6587\u5b57\u5217\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc

    \u30ea\u30f3\u30bf\u30fc\u306e\u307b\u304b\u306b\u3001\u30b3\u30fc\u30c9\u30b9\u30bf\u30a4\u30eb\u3092\u4fee\u6b63\u3059\u308b\u305f\u3081\u306b\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3082\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u4ee5\u4e0b\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u3092\u793a\u3057\u307e\u3059\u3002

    • https://golang.org/cmd/gofmt\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc
    • https://godoc.org/golang.org/x/tools/cmd/goimports\u2015\u2015Go\u8a00\u8a9e\u306e\u6a19\u6e96\u30a4\u30f3\u30dd\u30fc\u30c8\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc

    \u307b\u304b\u306b golangci-lint (https://github.com/golangci/golangci-lint) \u3068\u3044\u3046\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u30ea\u30f3\u30bf\u30fc\u3084\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u306e\u4e0a\u306b\u30d5\u30a1\u30b5\u30fc\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u30ea\u30f3\u30c6\u30a3\u30f3\u30b0\u30c4\u30fc\u30eb\u3067\u3059\u3002\u307e\u305f\u3001\u30ea\u30f3\u30bf\u30fc\u3092\u4e26\u5217\u5b9f\u884c\u3057\u3066\u5206\u6790\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002

    \u30ea\u30f3\u30bf\u30fc\u3068\u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u54c1\u8cea\u3068\u4e00\u8cab\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u5f37\u529b\u306a\u65b9\u6cd5\u3067\u3059\u3002\u6642\u9593\u3092\u304b\u3051\u3066\u3069\u308c\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u3092\u7406\u89e3\u3057\u3001\u305d\u308c\u3089\u306e\u5b9f\u884c\uff08 CI \u3084 Git \u30d7\u30ea\u30b3\u30df\u30c3\u30c8\u30d5\u30c3\u30af\u306a\u3069\uff09\u3092\u81ea\u52d5\u5316\u3057\u307e\u3057\u3087\u3046\u3002

    "},{"location":"ja/#_2","title":"\u30c7\u30fc\u30bf\u578b","text":""},{"location":"ja/#8-17","title":"8 \u9032\u6570\u30ea\u30c6\u30e9\u30eb\u3067\u6df7\u4e71\u3092\u62db\u3044\u3066\u3057\u307e\u3046 (#17)","text":"\u8981\u7d04

    \u65e2\u5b58\u306e\u30b3\u30fc\u30c9\u3092\u8aad\u3080\u3068\u304d\u306f\u3001 0 \u3067\u59cb\u307e\u308b\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c 8 \u9032\u6570\u3067\u3042\u308b\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u63a5\u982d\u8f9e 0o \u3092\u4ed8\u3051\u308b\u3053\u3068\u30678\u9032\u6570\u3067\u3042\u308b\u3053\u3068\u3092\u660e\u78ba\u306b\u3057\u3001\u8aad\u307f\u3084\u3059\u3055\u3092\u5411\u4e0a\u3055\u305b\u307e\u3057\u3087\u3046\u3002

    8 \u9032\u6570\u306f 0 \u3067\u59cb\u307e\u308a\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001010 \u306f 10 \u9032\u6570\u306e 8 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09\u3002\u53ef\u8aad\u6027\u3092\u5411\u4e0a\u3055\u305b\u3001\u5c06\u6765\u306e\u30b3\u30fc\u30c9\u30ea\u30fc\u30c0\u30fc\u306e\u6f5c\u5728\u7684\u306a\u9593\u9055\u3044\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001 0o \u63a5\u982d\u8f9e\u3092\u4f7f\u7528\u3057\u3066 8 \u9032\u6570\u3067\u3042\u308b\u3053\u3068\u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3057\u3087\u3046\uff08\u4f8b: 0o10 \uff09\u3002

    \u4ed6\u306e\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u8868\u73fe\u306b\u3082\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    • \u30d0\u30a4\u30ca\u30ea - \u63a5\u982d\u8f9e 0b \u3042\u308b\u3044\u306f 0B \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 0b \u306f 10 \u9032\u6570\u306e 4 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09
    • 16\u9032\u6570 - \u63a5\u982d\u8f9e 0x \u3042\u308b\u3044\u306f 0X \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 0xF \u306f 10 \u9032\u6570\u306e 15 \u306b\u76f8\u5f53\u3057\u307e\u3059\uff09\u3002
    • \u865a\u6570 - \u63a5\u5c3e\u8f9e i \u3092\u4f7f\u7528\u3057\u307e\u3059\uff08\u305f\u3068\u3048\u3070\u3001 3i \uff09

    \u8aad\u307f\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306b\u3001\u533a\u5207\u308a\u6587\u5b57\u3068\u3057\u3066\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\uff08 _ \uff09\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001 10 \u5104\u306f 1_000_000_000 \u306e\u3088\u3046\u306b\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306f 0b)00_00_01 \u306e\u3088\u3046\u306b\u4ed6\u306e\u8868\u73fe\u3068\u4f75\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#18","title":"\u6574\u6570\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u7121\u8996\u3057\u3066\u3044\u308b (#18)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u6574\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3068\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u304c\u88cf\u5074\u3067\u51e6\u7406\u3055\u308c\u308b\u305f\u3081\u3001\u305d\u308c\u3089\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u72ec\u81ea\u306e\u95a2\u6570\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u691c\u51fa\u3067\u304d\u308b\u6574\u6570\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306b\u3088\u3063\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    var counter int32 = math.MaxInt32 + 1\n
    constant 2147483648 overflows int32\n

    \u305f\u3060\u3057\u3001\u5b9f\u884c\u6642\u306b\u306f\u3001\u6574\u6570\u306e\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u307e\u305f\u306f\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u306f\u767a\u751f\u3057\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u3063\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30cb\u30c3\u30af\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u52d5\u4f5c\u306f\u3084\u3063\u304b\u3044\u306a\u30d0\u30b0\uff08\u305f\u3068\u3048\u3070\u3001\u8ca0\u306e\u7d50\u679c\u306b\u3064\u306a\u304c\u308b\u6574\u6570\u306e\u5897\u5206\u3084\u6b63\u306e\u6574\u6570\u306e\u52a0\u7b97\u306a\u3069\uff09\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u982d\u306b\u5165\u308c\u3066\u304a\u304f\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#19","title":"\u6d6e\u52d5\u5c0f\u6570\u70b9\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#19)","text":"\u8981\u7d04

    \u7279\u5b9a\u306e\u30c7\u30eb\u30bf\u5185\u3067\u6d6e\u52d5\u5c0f\u6570\u70b9\u6bd4\u8f03\u3092\u884c\u3046\u3068\u3001\u30b3\u30fc\u30c9\u306e\u79fb\u690d\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002\u52a0\u7b97\u307e\u305f\u306f\u6e1b\u7b97\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u7cbe\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u540c\u7a0b\u5ea6\u306e\u5927\u304d\u3055\u306e\u6f14\u7b97\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u4e57\u7b97\u3068\u9664\u7b97\u306f\u52a0\u7b97\u3068\u6e1b\u7b97\u306e\u524d\u306b\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    Go\u8a00\u8a9e\u306b\u306f\u3001\uff08\u865a\u6570\u3092\u9664\u3044\u305f\u5834\u5408\uff09 float32 \u3068 float64 \u3068\u3044\u3046 2 \u3064\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u578b\u304c\u3042\u308a\u307e\u3059\u3002\u6d6e\u52d5\u5c0f\u6570\u70b9\u306e\u6982\u5ff5\u306f\u3001\u5c0f\u6570\u5024\u3092\u8868\u73fe\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u6574\u6570\u306e\u5927\u304d\u306a\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u767a\u660e\u3055\u308c\u307e\u3057\u305f\u3002\u4e88\u60f3\u5916\u306e\u4e8b\u614b\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6f14\u7b97\u306f\u5b9f\u969b\u306e\u6f14\u7b97\u306e\u8fd1\u4f3c\u3067\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u305d\u306e\u305f\u3081\u306b\u3001\u4e57\u7b97\u306e\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    var n float32 = 1.0001\nfmt.Println(n * n)\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306b\u304a\u3044\u3066\u306f 1.0001 * 1.0001 = 1.00020001 \u3068\u3044\u3046\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u3001\u307b\u3068\u3093\u3069\u306e x86 \u30d7\u30ed\u30bb\u30c3\u30b5\u3067\u306f\u3001\u4ee3\u308f\u308a\u306b 1.0002 \u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

    Go\u8a00\u8a9e\u306e float32 \u304a\u3088\u3073 float64 \u578b\u306f\u8fd1\u4f3c\u5024\u3067\u3042\u308b\u305f\u3081\u3001\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30eb\u3092\u5ff5\u982d\u306b\u7f6e\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • 2 \u3064\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3092\u6bd4\u8f03\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u5dee\u304c\u8a31\u5bb9\u7bc4\u56f2\u5185\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3002
    • \u52a0\u7b97\u307e\u305f\u306f\u6e1b\u7b97\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u7cbe\u5ea6\u3092\u9ad8\u3081\u308b\u305f\u3081\u306b\u3001\u540c\u3058\u6841\u6570\u306e\u6f14\u7b97\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3002
    • \u7cbe\u5ea6\u3092\u9ad8\u3081\u308b\u305f\u3081\u3001\u4e00\u9023\u306e\u6f14\u7b97\u3067\u52a0\u7b97\u3001\u6e1b\u7b97\u3001\u4e57\u7b97\u3001\u9664\u7b97\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4e57\u7b97\u3068\u9664\u7b97\u3092\u6700\u521d\u306b\u5b9f\u884c\u3059\u308b\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#20","title":"\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u3068\u5bb9\u91cf\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#20)","text":"\u8981\u7d04

    Go \u958b\u767a\u8005\u306a\u3089\u3070\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u3068\u5bb9\u91cf\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306f\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u4f7f\u7528\u53ef\u80fd\u306a\u8981\u7d20\u306e\u6570\u3067\u3042\u308a\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u5bb9\u91cf\u306f\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u5185\u306e\u8981\u7d20\u306e\u6570\u3067\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#21","title":"\u975e\u52b9\u7387\u306a\u30b9\u30e9\u30a4\u30b9\u306e\u521d\u671f\u5316 (#21)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u307e\u305f\u306f\u5bb9\u91cf\u3067\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5272\u308a\u5f53\u3066\u306e\u6570\u304c\u6e1b\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002

    make \u3092\u4f7f\u7528\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u3068\u304d\u306b\u3001\u9577\u3055\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5bb9\u91cf\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e21\u65b9\u306b\u9069\u5207\u306a\u5024\u3092\u6e21\u3059\u3053\u3068\u304c\u9069\u5f53\u3067\u3042\u308b\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u305d\u308c\u3092\u5fd8\u308c\u308b\u306e\u306f\u3088\u304f\u3042\u308b\u9593\u9055\u3044\u3067\u3059\u3002\u5b9f\u969b\u3001\u8907\u6570\u306e\u30b3\u30d4\u30fc\u304c\u5fc5\u8981\u306b\u306a\u308a\u3001\u4e00\u6642\u7684\u306a\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u3092\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b GC \u306b\u8ffd\u52a0\u306e\u52b4\u529b\u304c\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u89b3\u70b9\u304b\u3089\u8a00\u3048\u3070\u3001Go \u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u624b\u3092\u5dee\u3057\u4f38\u3079\u306a\u3044\u7406\u7531\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5bb9\u91cf\u307e\u305f\u306f\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3067\u3059\u3002 \u3053\u308c\u3089 2 \u3064\u306e\u89e3\u6c7a\u7b56\u306e\u3046\u3061\u30012 \u756a\u76ee\u306e\u89e3\u6c7a\u7b56\u306e\u65b9\u304c\u308f\u305a\u304b\u306b\u9ad8\u901f\u3067\u3042\u308b\u50be\u5411\u304c\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002\u305f\u3060\u3057\u3001\u7279\u5b9a\u306e\u5bb9\u91cf\u3068\u8ffd\u52a0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u5b9f\u88c5\u3068\u8aad\u307f\u53d6\u308a\u304c\u5bb9\u6613\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#nil-22","title":"nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u6df7\u540c\u3057\u3066\u3044\u308b (#22)","text":"\u8981\u7d04

    encoding/json \u3084 reflect \u30d1\u30c3\u30b1\u30fc\u30b8\u306a\u3069\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306b\u3088\u304f\u3042\u308b\u6df7\u4e71\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u306f\u3001nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3069\u3061\u3089\u3082\u9577\u3055\u30bc\u30ed\u3001\u5bb9\u91cf\u30bc\u30ed\u306e\u30b9\u30e9\u30a4\u30b9\u3067\u3059\u304c\u3001\u5272\u308a\u5f53\u3066\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u306e\u306f nil \u30b9\u30e9\u30a4\u30b9\u3060\u3051\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u533a\u5225\u3055\u308c\u307e\u3059\u3002nil \u30b9\u30e9\u30a4\u30b9\u306f nil \u306b\u7b49\u3057\u3044\u306e\u306b\u5bfe\u3057\u3001\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306f\u30bc\u30ed\u3067\u3059\u3002nil \u30b9\u30e9\u30a4\u30b9\u306f\u7a7a\u3067\u3059\u304c\u3001\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u5fc5\u305a\u3057\u3082nil \u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u4e00\u65b9\u3001nil \u30b9\u30e9\u30a4\u30b9\u306b\u306f\u5272\u308a\u5f53\u3066\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u3092\u901a\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u3001\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u3053\u3068\u3092\u898b\u3066\u304d\u307e\u3057\u305f\u3002

    • \u6700\u7d42\u7684\u306a\u9577\u3055\u304c\u4e0d\u660e\u3067\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u306e\u5834\u5408\u306f var s []string
    • nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u7cd6\u8863\u69cb\u6587\u3068\u3057\u3066\u306e []string(nil)
    • \u5c06\u6765\u306e\u9577\u3055\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f make([]string, length)

    \u8981\u7d20\u306a\u3057\u3067\u30b9\u30e9\u30a4\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u5834\u5408\u3001\u6700\u5f8c\u306e\u30aa\u30d7\u30b7\u30e7\u30f3 []string{} \u306f\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u6700\u5f8c\u306b\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u4f7f\u7528\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u304c nil \u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#23","title":"\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u9069\u5207\u306b\u78ba\u8a8d\u3057\u306a\u3044 (#23)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u306b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u305d\u306e\u9577\u3055\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u304c nil \u3067\u3042\u308b\u304b\u7a7a\u3067\u3042\u308b\u304b\u306b\u95a2\u4fc2\u306a\u304f\u6a5f\u80fd\u3057\u307e\u3059\u3002\u30de\u30c3\u30d7\u306b\u3064\u3044\u3066\u3082\u540c\u69d8\u3067\u3059\u3002\u660e\u78ba\u306a API \u3092\u8a2d\u8a08\u3059\u308b\u306b\u306f\u3001nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002

    \u30b9\u30e9\u30a4\u30b9\u306b\u8981\u7d20\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3059\u308b\u306b\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u304c nil \u304b\u3069\u3046\u304b\u3001\u307e\u305f\u306f\u305d\u306e\u9577\u3055\u304c 0 \u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u5224\u65ad\u3067\u304d\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u304c\u7a7a\u3067\u3042\u308b\u5834\u5408\u3068\u30b9\u30e9\u30a4\u30b9\u304c nil \u3067\u3042\u308b\u5834\u5408\u306e\u4e21\u65b9\u3092\u30ab\u30d0\u30fc\u3067\u304d\u308b\u305f\u3081\u3001\u9577\u3055\u3092\u78ba\u304b\u3081\u308b\u3053\u3068\u304c\u6700\u826f\u306e\u65b9\u6cd5\u3067\u3059\u3002

    \u4e00\u65b9\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8a2d\u8a08\u3059\u308b\u3068\u304d\u306f\u3001\u8efd\u5fae\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a8\u30e9\u30fc\u3092\u8d77\u3053\u3055\u306a\u3044\u3088\u3046 nil \u30b9\u30e9\u30a4\u30b9\u3068\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u533a\u5225\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u3092\u8fd4\u3059\u3068\u304d\u306b\u3001nil \u307e\u305f\u306f\u7a7a\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u8fd4\u3059\u304b\u3069\u3046\u304b\u306f\u3001\u610f\u5473\u7684\u306b\u3082\u6280\u8853\u7684\u306b\u3082\u9055\u3044\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30b3\u30fc\u30e9\u30fc\u306b\u3068\u3063\u3066\u306f\u3069\u3061\u3089\u3082\u540c\u3058\u3053\u3068\u3092\u610f\u5473\u3059\u308b\u306f\u305a\u3067\u3059\u3002\u3053\u306e\u539f\u7406\u306f\u30de\u30c3\u30d7\u3067\u3082\u540c\u3058\u3067\u3059\u3002\u30de\u30c3\u30d7\u304c\u7a7a\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u305d\u308c\u304c nil \u304b\u3069\u3046\u304b\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u9577\u3055\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#24","title":"\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3092\u6b63\u3057\u304f\u4f5c\u6210\u3057\u3066\u3044\u306a\u3044 (#24)","text":"\u8981\u7d04

    \u7d44\u307f\u8fbc\u307f\u95a2\u6570 copy \u3092\u4f7f\u7528\u3057\u3066\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u3092\u5225\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u306b\u306f\u3001\u30b3\u30d4\u30fc\u3055\u308c\u308b\u8981\u7d20\u306e\u6570\u304c 2 \u3064\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306e\u9593\u306e\u6700\u5c0f\u5024\u306b\u76f8\u5f53\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u8981\u7d20\u3092\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u5225\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u64cd\u4f5c\u306f\u3001\u304b\u306a\u308a\u983b\u7e41\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30b3\u30d4\u30fc\u5148\u306b\u30b3\u30d4\u30fc\u3055\u308c\u308b\u8981\u7d20\u306e\u6570\u306f 2 \u3064\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u306e\u9593\u306e\u6700\u5c0f\u5024\u306b\u76f8\u5f53\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30b9\u30e9\u30a4\u30b9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306e\u4ed6\u306e\u4ee3\u66ff\u624b\u6bb5\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u306b\u3082\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u306e\u305f\u3081\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3067\u305d\u308c\u3089\u3092\u898b\u3064\u3051\u3066\u3082\u9a5a\u304f\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#append-25","title":"append \u306e\u4f7f\u7528\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528 (#25)","text":"\u8981\u7d04

    2\u3064\u306e\u7570\u306a\u308b\u95a2\u6570\u304c\u540c\u3058\u914d\u5217\u306b\u57fa\u3065\u304f\u30b9\u30e9\u30a4\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u3001copy \u307e\u305f\u306f\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067 append \u306b\u3088\u308b\u885d\u7a81\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5927\u304d\u306a\u30b9\u30e9\u30a4\u30b9\u3092\u7e2e\u5c0f\u3059\u308b\u5834\u5408\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u306f\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3060\u3051\u3067\u3059\u3002

    \u30b9\u30e9\u30a4\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u3001\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528\u306b\u3064\u306a\u304c\u308b\u72b6\u6cc1\u306b\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7d50\u679c\u306e\u30b9\u30e9\u30a4\u30b9\u306e\u9577\u3055\u304c\u305d\u306e\u5bb9\u91cf\u3088\u308a\u5c0f\u3055\u3044\u5834\u5408\u3001\u8ffd\u52a0\u306b\u3088\u3063\u3066\u5143\u306e\u30b9\u30e9\u30a4\u30b9\u304c\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u8d77\u3053\u308a\u5f97\u308b\u526f\u4f5c\u7528\u306e\u7bc4\u56f2\u3092\u5236\u9650\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u307e\u305f\u306f\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002

    \u88dc\u8db3

    s[low:high:max]\uff08\u5b8c\u5168\u30b9\u30e9\u30a4\u30b9\u5f0f\uff09\u2015\u2015\u3053\u306e\u547d\u4ee4\u6587\u306f\u3001\u5bb9\u91cf\u304c max - low \u306b\u7b49\u3057\u3044\u3053\u3068\u3092\u9664\u3051\u3070\u3001s[low:high] \u3067\u4f5c\u6210\u3055\u308c\u305f\u30b9\u30e9\u30a4\u30b9\u3068\u540c\u69d8\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#26","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#26)","text":"\u8981\u7d04

    \u30dd\u30a4\u30f3\u30bf\u306e\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u30dd\u30a4\u30f3\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u3064\u69cb\u9020\u4f53\u3092\u64cd\u4f5c\u3059\u308b\u5834\u5408\u3001\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u306b\u3088\u3063\u3066\u9664\u5916\u3055\u308c\u305f\u8981\u7d20\u3092 nil \u3068\u3059\u308b\u3053\u3068\u3067\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#_3","title":"\u5bb9\u91cf\u6f0f\u308c","text":"

    \u5927\u304d\u306a\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u914d\u5217\u3092\u30b9\u30e9\u30a4\u30b9\u3059\u308b\u3068\u3001\u30e1\u30e2\u30ea\u6d88\u8cbb\u304c\u9ad8\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6b8b\u308a\u306e\u30b9\u30da\u30fc\u30b9\u306f GC \u306b\u3088\u3063\u3066\u518d\u5229\u7528\u3055\u308c\u305a\u3001\u5c11\u6570\u306e\u8981\u7d20\u3057\u304b\u4f7f\u7528\u3057\u306a\u3044\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u5927\u304d\u306a\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u304c\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u30b3\u30d4\u30fc\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u3088\u3046\u306a\u4e8b\u614b\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_4","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30dd\u30a4\u30f3\u30bf","text":"

    \u30dd\u30a4\u30f3\u30bf\u307e\u305f\u306f\u30dd\u30a4\u30f3\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080\u69cb\u9020\u4f53\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u3059\u308b\u5834\u5408\u3001GC \u304c\u3053\u308c\u3089\u306e\u8981\u7d20\u3092\u518d\u5229\u7528\u3057\u306a\u3044\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u306e\u9078\u629e\u80a2\u306f\u3001\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u6b8b\u308a\u306e\u8981\u7d20\u307e\u305f\u306f\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u660e\u793a\u7684\u306b nil \u3068\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#27","title":"\u975e\u52b9\u7387\u306a\u30de\u30c3\u30d7\u306e\u521d\u671f\u5316 (#27)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u305d\u306e\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u9577\u3055\u3067\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5272\u308a\u5f53\u3066\u306e\u6570\u304c\u6e1b\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002

    \u30de\u30c3\u30d7\u306f\u3001\u30ad\u30fc\u30fb\u5024\u30da\u30a2\u306e\u9806\u5e8f\u306a\u3057\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u305d\u308c\u305e\u308c\u306e\u30da\u30a2\u306f\u56fa\u6709\u306e\u30ad\u30fc\u3092\u6301\u3061\u307e\u3059\u3002Go\u8a00\u8a9e\u3067\u306f\u3001\u30de\u30c3\u30d7\u306f\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u5185\u90e8\u7684\u306b\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u306f\u30d0\u30b1\u30c3\u30c8\u306e\u914d\u5217\u3067\u3042\u308a\u3001\u5404\u30d0\u30b1\u30c3\u30c8\u306f\u30ad\u30fc\u30fb\u5024\u30da\u30a2\u306e\u914d\u5217\u3078\u306e\u30dd\u30a4\u30f3\u30bf\u3067\u3059\u3002

    \u30de\u30c3\u30d7\u306b\u542b\u307e\u308c\u308b\u8981\u7d20\u306e\u6570\u304c\u4e8b\u524d\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u521d\u671f\u30b5\u30a4\u30ba\u3092\u6307\u5b9a\u3057\u3066\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30de\u30c3\u30d7\u306e\u5897\u5927\u306f\u3001\u5341\u5206\u306a\u30b9\u30da\u30fc\u30b9\u3092\u518d\u5272\u308a\u5f53\u3066\u3057\u3001\u3059\u3079\u3066\u306e\u8981\u7d20\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u518d\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u8a08\u7b97\u91cf\u304c\u975e\u5e38\u306b\u591a\u304f\u306a\u308a\u307e\u3059\u304c\u3001\u3053\u308c\u306b\u3088\u308a\u305d\u308c\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#28","title":"\u30de\u30c3\u30d7\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#28)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u306f\u30e1\u30e2\u30ea\u5185\u3067\u5e38\u306b\u5897\u5927\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u7e2e\u5c0f\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30e1\u30e2\u30ea\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306f\u3001\u30de\u30c3\u30d7\u3092\u5f37\u5236\u7684\u306b\u518d\u751f\u6210\u3057\u305f\u308a\u3001\u30dd\u30a4\u30f3\u30bf\u3092\u4f7f\u7528\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u624b\u6bb5\u3092\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#29","title":"\u8aa4\u3063\u305f\u65b9\u6cd5\u306b\u3088\u308b\u5024\u306e\u6bd4\u8f03 (#29)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u578b\u3092\u6bd4\u8f03\u3059\u200b\u200b\u308b\u306b\u306f\u30012 \u3064\u306e\u578b\u304c\u6bd4\u8f03\u53ef\u80fd\u306a\u3089\u3070\u3001== \u6f14\u7b97\u5b50\u3068 != \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u771f\u507d\u5024\u3001\u6570\u5024\u3001\u6587\u5b57\u5217\u3001\u30dd\u30a4\u30f3\u30bf\u3001\u30c1\u30e3\u30cd\u30eb\u3001\u304a\u3088\u3073\u69cb\u9020\u4f53\u304c\u5b8c\u5168\u306b\u6bd4\u8f03\u53ef\u80fd\u306a\u578b\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306f\u3001 reflect.DeepEqual \u3092\u4f7f\u7528\u3057\u3066\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4ee3\u511f\u3092\u652f\u6255\u3046\u304b\u3001\u72ec\u81ea\u306e\u5b9f\u88c5\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u52b9\u679c\u7684\u306b\u6bd4\u8f03\u3059\u308b\u306b\u306f\u3001 == \u3068 != \u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u6f14\u7b97\u5b50\u306f\u3001\u6bd4\u8f03\u53ef\u80fd\u306a\u88ab\u6f14\u7b97\u5b50\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002

    • \u771f\u507d\u5024 - 2 \u3064\u306e\u771f\u507d\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u6570\u5024 (int\u3001float\u3001\u304a\u3088\u3073 complex \u578b) - 2 \u3064\u306e\u6570\u5024\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u6587\u5b57\u5217 - 2 \u3064\u306e\u6587\u5b57\u5217\u304c\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30c1\u30e3\u30cd\u30eb - 2 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304c\u540c\u3058 make \u547c\u3073\u51fa\u3057\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u304c nil \u3067\u3042\u308b\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 - 2 \u3064\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u540c\u3058\u52d5\u7684\u30bf\u30a4\u30d7\u3068\u7b49\u3057\u3044\u52d5\u7684\u5024\u3092\u6301\u3064\u304b\u3069\u3046\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u304c nil \u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u30dd\u30a4\u30f3\u30bf - 2 \u3064\u306e\u30dd\u30a4\u30f3\u30bf\u304c\u30e1\u30e2\u30ea\u5185\u306e\u540c\u3058\u5024\u3092\u6307\u3057\u3066\u3044\u308b\u304b\u3001\u307e\u305f\u306f\u4e21\u65b9\u3068\u3082 nil \u3067\u3042\u308b\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    • \u69cb\u9020\u4f53\u3068\u914d\u5217 - \u985e\u4f3c\u3057\u305f\u578b\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
    \u88dc\u8db3

    ? \u3001 >= \u3001 < \u3001\u304a\u3088\u3073 > \u6f14\u7b97\u5b50\u3092\u6570\u5024\u578b\u3067\u4f7f\u7528\u3057\u3066\u5024\u3092\u6bd4\u8f03\u3057\u305f\u308a\u3001\u6587\u5b57\u5217\u3067\u5b57\u53e5\u9806\u5e8f\u3092\u6bd4\u8f03\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    \u88ab\u6f14\u7b97\u5b50\u304c\u6bd4\u8f03\u3067\u304d\u306a\u3044\u5834\u5408\uff08\u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u306a\u3069\uff09\u3001\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306a\u3069\u306e\u4ed6\u306e\u65b9\u6cd5\u3092\u5229\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4e00\u7a2e\u3067\u3042\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u305d\u306e\u69cb\u9020\u3068\u52d5\u4f5c\u3092\u5185\u7701\u3057\u3066\u5909\u66f4\u3059\u308b\u6a5f\u80fd\u3092\u6307\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001Go\u8a00\u8a9e\u3067\u306f reflect.DeepEqual \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u30012\u3064\u306e\u5024\u3092\u518d\u5e30\u7684\u306b\u8abf\u3079\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u30012\u3064\u306e\u8981\u7d20\u304c\u5b8c\u5168\u306b\u7b49\u3057\u3044\u304b\u3069\u3046\u304b\u3092\u5831\u544a\u3057\u307e\u3059\u3002\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u8981\u7d20\u306f\u3001\u57fa\u672c\u578b\u306b\u52a0\u3048\u3066\u3001\u914d\u5217\u3001\u69cb\u9020\u4f53\u3001\u30b9\u30e9\u30a4\u30b9\u3001\u30de\u30c3\u30d7\u3001\u30dd\u30a4\u30f3\u30bf\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3001\u95a2\u6570\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u6700\u5927\u306e\u843d\u3068\u3057\u7a74\u306f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4e0a\u306e\u30da\u30ca\u30eb\u30c6\u30a3\u3067\u3059\u3002

    \u5b9f\u884c\u6642\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u91cd\u8981\u306a\u5834\u5408\u306f\u3001\u72ec\u81ea\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u6700\u5584\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u8ffd\u8a18\uff1a\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306f\u65e2\u306b\u6bd4\u8f03\u30e1\u30bd\u30c3\u30c9\u304c\u3044\u304f\u3064\u304b\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6700\u9069\u5316\u3055\u308c\u305f bytes.Compare \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30012\u3064\u306e\u30d0\u30a4\u30c8\u30b9\u30e9\u30a4\u30b9\u3092\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002\u72ec\u81ea\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u524d\u306b\u3001\u8eca\u8f2a\u306e\u518d\u767a\u660e\u3092\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_5","title":"\u5236\u5fa1\u69cb\u9020","text":""},{"location":"ja/#range-30","title":"\u8981\u7d20\u304c range \u30eb\u30fc\u30d7\u5185\u3067\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3053\u3068\u3092\u77e5\u3089\u306a\u3044 (#30)","text":"\u8981\u7d04

    range \u30eb\u30fc\u30d7\u5185\u306e value \u8981\u7d20\u306f\u30b3\u30d4\u30fc\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u305f\u3068\u3048\u3070\u69cb\u9020\u4f53\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u3001\u5f93\u6765\u306e for \u30eb\u30fc\u30d7\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3057\u3087\u3046\uff08\u5909\u66f4\u3059\u308b\u8981\u7d20\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u30dd\u30a4\u30f3\u30bf\u3067\u3042\u308b\u5834\u5408\u3092\u9664\u304f\uff09\u3002

    range \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    • \u6587\u5b57\u5217
    • \u914d\u5217
    • \u914d\u5217\u3078\u306e\u30dd\u30a4\u30f3\u30bf
    • \u30b9\u30e9\u30a4\u30b9
    • \u30de\u30c3\u30d7
    • \u53d7\u4fe1\u30c1\u30e3\u30cd\u30eb

    \u53e4\u5178\u7684\u306a for \u30eb\u30fc\u30d7\u3068\u6bd4\u8f03\u3059\u308b\u3068\u3001range \u30eb\u30fc\u30d7\u306f\u305d\u306e\u7c21\u6f54\u306a\u69cb\u6587\u306e\u304a\u304b\u3052\u3067\u3001\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u3002

    \u305f\u3060\u3057\u3001range \u30eb\u30fc\u30d7\u5185\u306e\u5024\u8981\u7d20\u306f\u30b3\u30d4\u30fc\u3067\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5024\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u69cb\u9020\u4f53\u306e\u5834\u5408\u3001\u5909\u66f4\u3059\u308b\u5024\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u30dd\u30a4\u30f3\u30bf\u3067\u306a\u3044\u9650\u308a\u3001\u8981\u7d20\u81ea\u4f53\u3067\u306f\u306a\u304f\u30b3\u30d4\u30fc\u306e\u307f\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002range \u30eb\u30fc\u30d7\u307e\u305f\u306f\u5f93\u6765\u306e for \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7d4c\u7531\u3067\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#range-31","title":"range \u30eb\u30fc\u30d7\uff08\u30c1\u30e3\u30cd\u30eb\u3068\u914d\u5217\uff09\u3067\u306e\u5f15\u6570\u306e\u8a55\u4fa1\u65b9\u6cd5\u3092\u77e5\u3089\u306a\u3044 (#31)","text":"\u8981\u7d04

    range \u6f14\u7b97\u5b50\u306b\u6e21\u3055\u308c\u308b\u5f0f\u306f\u30eb\u30fc\u30d7\u306e\u958b\u59cb\u524d\u306b 1 \u56de\u3060\u3051\u8a55\u4fa1\u3055\u308c\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30b9\u30e9\u30a4\u30b9\u306e\u53cd\u5fa9\u51e6\u7406\u306b\u304a\u3051\u308b\u975e\u52b9\u7387\u306a\u5272\u308a\u5f53\u3066\u306a\u3069\u306e\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002

    range \u30eb\u30fc\u30d7\u306f\u3001\uff08\u30bf\u30a4\u30d7\u306b\u95a2\u4fc2\u306a\u304f\uff09\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30eb\u30fc\u30d7\u306e\u958b\u59cb\u524d\u306b\u3001\u6307\u5b9a\u3055\u308c\u305f\u5f0f\u3092 1 \u56de\u3060\u3051\u8a55\u4fa1\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u8aa4\u3063\u305f\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3057\u307e\u3046\u3001\u3068\u3044\u3046\u3088\u3046\u306a\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u52d5\u4f5c\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    a := [3]int{0, 1, 2}\nfor i, v := range a {\n    a[2] = 10\n    if i == 2 {\n        fmt.Println(v)\n    }\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306f\u3001\u6700\u5f8c\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092 10 \u306b\u66f4\u65b0\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u300110 \u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3002 2 \u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#range-32","title":"range \u30eb\u30fc\u30d7\u5185\u306b\u304a\u3051\u308b\u30dd\u30a4\u30f3\u30bf\u8981\u7d20\u306e\u4f7f\u7528\u304c\u53ca\u307c\u3059\u5f71\u97ff\u3092\u5206\u304b\u3063\u3066\u3044\u306a\u3044 (#32)","text":"\u8981\u7d04

    \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u30eb\u30fc\u30d7\u5185\u3067\u30dd\u30a4\u30f3\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306e\u9593\u9055\u3044\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    range \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u53cd\u5fa9\u51e6\u7406\u3092\u65bd\u3059\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u5024\u304c\u5358\u4e00\u306e\u4e00\u610f\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u6301\u3064\u4e00\u610f\u306e\u5909\u6570\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3086\u3048\u306b\u3001\u5404\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u3053\u306e\u5909\u6570\u3092\u53c2\u7167\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3068\u3001\u540c\u3058\u8981\u7d20\u3001\u3064\u307e\u308a\u6700\u65b0\u306e\u8981\u7d20\u3092\u53c2\u7167\u3059\u308b\u540c\u3058\u30dd\u30a4\u30f3\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u306f\u3001\u30eb\u30fc\u30d7\u306e\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u5f37\u5236\u7684\u306b\u4f5c\u6210\u3059\u308b\u304b\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u30b9\u30e9\u30a4\u30b9\u8981\u7d20\u3092\u53c2\u7167\u3059\u308b\u30dd\u30a4\u30f3\u30bf\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u3069\u3061\u3089\u306e\u89e3\u6c7a\u7b56\u3067\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#33","title":"\u30de\u30c3\u30d7\u306e\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u8aa4\u3063\u305f\u4eee\u5b9a\u3092\u3059\u308b\uff08\u53cd\u5fa9\u51e6\u7406\u4e2d\u306e\u9806\u5e8f\u4ed8\u3051\u3068\u30de\u30c3\u30d7\u306e\u633f\u5165\uff09 (#33)","text":"\u8981\u7d04

    \u30de\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306b\u4e88\u6e2c\u53ef\u80fd\u306a\u51fa\u529b\u3092\u4fdd\u8a3c\u3059\u308b\u306b\u306f\u3001\u30de\u30c3\u30d7\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u304c\u6b21\u306e\u3068\u304a\u308a\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    • \u30c7\u30fc\u30bf\u3092\u30ad\u30fc\u3067\u4e26\u3079\u66ff\u3048\u307e\u305b\u3093
    • \u633f\u5165\u9806\u5e8f\u306f\u4fdd\u6301\u3055\u308c\u307e\u305b\u3093
    • \u53cd\u5fa9\u51e6\u7406\u9806\u5e8f\u306f\u6c7a\u307e\u3063\u3066\u3044\u307e\u305b\u3093
    • \u3042\u308b\u53cd\u5fa9\u51e6\u7406\u4e2d\u306b\u8ffd\u52a0\u3055\u308c\u305f\u8981\u7d20\u304c\u305d\u306e\u51e6\u7406\u4e2d\u306b\u751f\u6210\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u305b\u3093

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#break-34","title":"break \u6587\u304c\u3069\u306e\u3088\u3046\u306b\u6a5f\u80fd\u3059\u308b\u304b\u3092\u5206\u304b\u3063\u3066\u3044\u306a\u3044 (#34)","text":"\u8981\u7d04

    \u30e9\u30d9\u30eb\u3068 break \u307e\u305f\u306f continue \u306e\u4f75\u7528\u306f\u3001\u7279\u5b9a\u306e\u547d\u4ee4\u6587\u3092\u5f37\u5236\u7684\u306b\u4e2d\u65ad\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30d7\u5185\u306e switch \u307e\u305f\u306f select \u6587\u3067\u5f79\u7acb\u3061\u307e\u3059\u3002

    \u901a\u5e38\u3001break \u6587\u306f\u30eb\u30fc\u30d7\u306e\u5b9f\u884c\u3092\u7d42\u4e86\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30eb\u30fc\u30d7\u304c switch \u307e\u305f\u306f select \u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u200b\u200b\u3055\u308c\u308b\u5834\u5408\u3001\u76ee\u7684\u306e\u547d\u4ee4\u6587\u3067\u306f\u306a\u3044\u306e\u306b\u4e2d\u65ad\u3055\u305b\u3066\u3057\u307e\u3046\u3001\u3068\u3044\u3046\u30df\u30b9\u3092\u3059\u308b\u3053\u3068\u304c\u958b\u767a\u8005\u306b\u306f\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    for i := 0; i < 5; i++ {\n    fmt.Printf(\"%d \", i)\n\n    switch i {\n    default:\n    case 2:\n        break\n    }\n}\n

    break \u6587\u306f for \u30eb\u30fc\u30d7\u3092\u7d42\u4e86\u3055\u305b\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u4ee3\u308f\u308a\u306b switch \u6587\u3092\u7d42\u4e86\u3055\u305b\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f 0 \u304b\u3089 2 \u307e\u3067\u3092\u53cd\u5fa9\u3059\u308b\u4ee3\u308f\u308a\u306b\u30010 \u304b\u3089 4 \u307e\u3067\u3092\u53cd\u5fa9\u3057\u307e\u3059\uff080 1 2 3 4\uff09\u3002

    \u899a\u3048\u3066\u304a\u304f\u3079\u304d\u91cd\u8981\u306a\u30eb\u30fc\u30eb\u306e1\u3064\u306f\u3001 break \u6587\u306f\u6700\u3082\u5185\u5074\u306e for \u3001switch \u3001\u307e\u305f\u306f select \u6587\u306e\u5b9f\u884c\u3092\u7d42\u4e86\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u524d\u306e\u4f8b\u3067\u306f\u3001switch \u6587\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002

    switch \u6587\u306e\u4ee3\u308f\u308a\u306b\u30eb\u30fc\u30d7\u3092\u4e2d\u65ad\u3059\u308b\u6700\u3082\u6163\u7528\u7684\u306a\u65b9\u6cd5\u306f\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    loop:\n    for i := 0; i < 5; i++ {\n        fmt.Printf(\"%d \", i)\n\n        switch i {\n        default:\n        case 2:\n            break loop\n        }\n    }\n

    \u3053\u3053\u3067\u306f\u3001loop \u30e9\u30d9\u30eb\u3092 for \u30eb\u30fc\u30d7\u306b\u95a2\u9023\u4ed8\u3051\u307e\u3059\u3002 \u6b21\u306b\u3001break \u6587\u306b loop \u30e9\u30d9\u30eb\u3092\u6307\u5b9a\u3059\u308b\u306e\u3067\u3001switch \u3067\u306f\u306a\u304f loop \u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002\u3088\u3063\u3066\u3001\u3053\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u4e88\u60f3\u3069\u304a\u308a 0 1 2 \u3092\u51fa\u529b\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-35","title":"\u30eb\u30fc\u30d7\u5185\u3067 defer \u3092\u4f7f\u7528\u3059\u308b (#35)","text":"\u8981\u7d04

    \u95a2\u6570\u5185\u306e\u30eb\u30fc\u30d7\u30ed\u30b8\u30c3\u30af\u306e\u62bd\u51fa\u306f\u3001\u5404\u53cd\u5fa9\u306e\u6700\u5f8c\u3067\u306e defer \u6587\u306e\u5b9f\u884c\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002

    defer \u6587\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u304c\u623b\u308b\u307e\u3067\u547c\u3073\u51fa\u3057\u306e\u5b9f\u884c\u3092\u9045\u3089\u305b\u307e\u3059\u3002\u3053\u308c\u306f\u4e3b\u306b\u5b9a\u578b\u30b3\u30fc\u30c9\u3092\u524a\u6e1b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u6700\u7d42\u7684\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001defer \u3092\u4f7f\u7528\u3057\u3066\u3001return \u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u30af\u30ed\u30fc\u30b8\u30e3\u547c\u3073\u51fa\u3057\u3092\u7e70\u308a\u8fd4\u3059\u3053\u3068\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    defer \u3067\u3088\u304f\u3042\u308b\u30df\u30b9\u306e1\u3064\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af \u306e\u95a2\u6570\u304c\u623b\u3063\u305f\u3068\u304d\u306b\u95a2\u6570\u547c\u3073\u51fa\u3057\u304c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u308b\u3053\u3068\u3092\u5fd8\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u305f\u3068\u3048\u3070

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        file, err := os.Open(path)\n        if err != nil {\n            return err\n        }\n\n        defer file.Close()\n\n        // \u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u3092\u3059\u308b\n    }\n    return nil\n}\n

    defer \u547c\u3073\u51fa\u3057\u306f\u3001\u5404\u30eb\u30fc\u30d7\u53cd\u5fa9\u4e2d\u3067\u306f\u306a\u304f\u3001readFiles \u95a2\u6570\u304c\u8fd4\u3055\u308c\u305f\u3068\u304d\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 readFiles \u304c\u8fd4\u3089\u306a\u3044\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u8a18\u8ff0\u5b50\u306f\u6c38\u4e45\u306b\u958b\u3044\u305f\u307e\u307e\u306b\u306a\u308a\u3001\u30ea\u30fc\u30af\u304c\u767a\u751f\u3057\u307e\u3059\u3002

    \u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u624b\u6bb5\u306e1\u3064\u306f\u3001 defer \u306e\u5f8c\u306b\u3001\u5404\u53cd\u5fa9\u4e2d\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    func readFiles(ch <-chan string) error {\n    for path := range ch {\n        if err := readFile(path); err != nil {\n            return err\n        }\n    }\n    return nil\n}\n\nfunc readFile(path string) error {\n    file, err := os.Open(path)\n    if err != nil {\n        return err\n    }\n\n    defer file.Close()\n\n    // \u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u3092\u3059\u308b\n    return nil\n}\n

    \u5225\u306e\u89e3\u6c7a\u7b56\u306f\u3001readFile \u95a2\u6570\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u304c\u3001\u672c\u8cea\u7684\u306b\u306f\u540c\u3058\u3067\u3059\u3002\u5225\u306e\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u3092\u8ffd\u52a0\u3057\u3066\u3001\u5404\u53cd\u5fa9\u4e2d\u306b defer \u547c\u3073\u51fa\u3057\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_6","title":"\u6587\u5b57\u5217","text":""},{"location":"ja/#36","title":"\u30eb\u30fc\u30f3\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#36)","text":"\u8981\u7d04

    \u30eb\u30fc\u30f3\u304c Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u6982\u5ff5\u306b\u5bfe\u5fdc\u3057\u3001\u8907\u6570\u306e\u30d0\u30a4\u30c8\u3067\u69cb\u6210\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001 Go \u958b\u767a\u8005\u304c\u6587\u5b57\u5217\u3092\u6b63\u78ba\u306b\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u30eb\u30fc\u30f3\u304c\u3042\u3089\u3086\u308b\u5834\u6240\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u6b21\u306e\u70b9\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    • \u6587\u5b57\u30bb\u30c3\u30c8\u306f\u6587\u5b57\u306e\u96c6\u5408\u3067\u3059\u304c\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u30d0\u30a4\u30ca\u30ea\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u3067\u306f\u3001\u6587\u5b57\u5217\u306f\u4efb\u610f\u306e\u30d0\u30a4\u30c8\u306e\u4e0d\u5909\u30b9\u30e9\u30a4\u30b9\u3092\u53c2\u7167\u3057\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f UTF-8 \u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3059\u3079\u306e\u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u306f UTF-8 \u6587\u5b57\u5217\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u6587\u5b57\u5217\u306b\u306f\u4efb\u610f\u306e\u30d0\u30a4\u30c8\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u6587\u5b57\u5217\u304c\uff08\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3067\u306f\u306a\u3044\uff09\u4ed6\u306e\u5834\u6240\u304b\u3089\u53d6\u5f97\u3055\u308c\u305f\u5834\u5408\u3001\u305d\u306e\u6587\u5b57\u5217\u304c UTF-8 \u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306b\u57fa\u3065\u3044\u3066\u3044\u308b\u4fdd\u8a3c\u306f\u3042\u308a\u307e\u305b\u3093\u3002
    • rune \u306f Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u6982\u5ff5\u306b\u5bfe\u5fdc\u3057\u3001\u5358\u4e00\u306e\u5024\u3067\u8868\u3055\u308c\u308b\u30a2\u30a4\u30c6\u30e0\u3092\u610f\u5473\u3057\u307e\u3059\u3002
    • UTF-8 \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Unicode \u30b3\u30fc\u30c9\u30dd\u30a4\u30f3\u30c8\u3092 1 \uff5e 4 \u30d0\u30a4\u30c8\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002
    • Go\u8a00\u8a9e\u3067\u6587\u5b57\u5217\u306b\u5bfe\u3057\u3066 len() \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u30d0\u30a4\u30c8\u6570\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#37","title":"\u6587\u5b57\u5217\u306b\u5bfe\u3059\u308b\u4e0d\u6b63\u306a\u53cd\u5fa9\u51e6\u7406 (#37)","text":"\u8981\u7d04

    range \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u3068\u3001\u30eb\u30fc\u30f3\u306e\u30d0\u30a4\u30c8\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30f3\u304c\u53cd\u5fa9\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30f3\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff08 3 \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306a\u3069\uff09\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u6587\u5b57\u5217\u3092 []rune \u306b\u5909\u63db\u3057\u307e\u3059\u3002

    \u6587\u5b57\u5217\u306e\u53cd\u5fa9\u51e6\u7406\u306f\u3001\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u4e00\u822c\u7684\u306a\u64cd\u4f5c\u3067\u3059\u3002\u304a\u305d\u3089\u304f\u3001\u6587\u5b57\u5217\u5185\u306e\u5404\u30eb\u30fc\u30f3\u306b\u5bfe\u3057\u3066\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u7279\u5b9a\u306e\u90e8\u5206\u6587\u5b57\u5217\u3092\u691c\u7d22\u3059\u308b\u72ec\u81ea\u306e\u95a2\u6570\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002\u3069\u3061\u3089\u306e\u5834\u5408\u3082\u3001\u6587\u5b57\u5217\u306e\u7570\u306a\u308b\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u53cd\u5fa9\u51e6\u7406\u304c\u3069\u306e\u3088\u3046\u306b\u6a5f\u80fd\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306f\u56f0\u60d1\u3057\u3084\u3059\u3044\u3067\u3059\u3002

    \u6b21\u306e\u4f8b\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    s := \"h\u00eallo\"\nfor i := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, s[i])\n}\nfmt.Printf(\"len=%d\\n\", len(s))\n
    position 0: h\nposition 1: \u00c3\nposition 3: l\nposition 4: l\nposition 5: o\nlen=6\n

    \u6df7\u4e71\u3092\u62db\u304f\u53ef\u80fd\u6027\u306e\u3042\u308b 3 \u70b9\u3092\u53d6\u308a\u4e0a\u3052\u307e\u3057\u3087\u3046\u3002

    • 2 \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306f\u3001\u51fa\u529b\u3067\u306f \u00ea \u3067\u306f\u306a\u304f \u00c3 \u306b\u306a\u308a\u307e\u3059\u3002
    • position 1 \u304b\u3089 position 3 \u306b\u30b8\u30e3\u30f3\u30d7\u3057\u307e\u3057\u305f\u3002 position 2 \u306b\u306f\u4f55\u304c\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002
    • len \u306f 6 \u3092\u8fd4\u3057\u307e\u3059\u304c\u3001s \u306b\u306f 5 \u3064\u306e\u30eb\u30fc\u30f3\u3057\u304b\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002

    \u7d50\u679c\u306e\u6700\u5f8c\u304b\u3089\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002len \u306f\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u3001\u6587\u5b57\u5217\u5185\u306e\u30d0\u30a4\u30c8\u6570\u3092\u8fd4\u3059\u3053\u3068\u306f\u3059\u3067\u306b\u8ff0\u3079\u307e\u3057\u305f\u3002\u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u3092 s \u306b\u5272\u308a\u5f53\u3066\u3066\u3044\u308b\u305f\u3081\u3001s \u306f UTF-8 \u6587\u5b57\u5217\u3067\u3059\u3002\u4e00\u65b9\u3001\u7279\u6b8a\u6587\u5b57\u300c\u00ea\u300d\u306f 1 \u30d0\u30a4\u30c8\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093\u3002 2 \u30d0\u30a4\u30c8\u5fc5\u8981\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001len(s) \u3092\u547c\u3073\u51fa\u3059\u3068 6 \u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u524d\u306e\u4f8b\u3067\u306f\u3001\u5404\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001\u30eb\u30fc\u30f3\u306e\u5404\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u307e\u3059\u3002

    s[i] \u3092\u51fa\u529b\u3057\u3066\u3082 i \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 i \u306e\u30d0\u30a4\u30c8\u306e UTF-8 \u8868\u73fe\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001 h\u00eallo \u306e\u4ee3\u308f\u308a\u306b h\u00c3llo \u3092\u51fa\u529b\u304c\u3055\u308c\u307e\u3059\u3002

    \u3055\u307e\u3056\u307e\u306a\u30eb\u30fc\u30f3\u6587\u5b57\u3092\u3059\u3079\u3066\u51fa\u529b\u3057\u305f\u3044\u5834\u5408\u306f\u3001 range \u6f14\u7b97\u5b50\u306e value \u8981\u7d20\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    s := \"h\u00eallo\"\nfor i, r := range s {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    \u307e\u305f\u306f\u3001\u6587\u5b57\u5217\u3092\u30eb\u30fc\u30f3\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u5909\u63db\u3057\u3001\u305d\u308c\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    s := \"h\u00eallo\"\nrunes := []rune(s)\nfor i, r := range runes {\n    fmt.Printf(\"position %d: %c\\n\", i, r)\n}\n

    \u3053\u306e\u89e3\u6c7a\u7b56\u3067\u306f\u3001\u4ee5\u524d\u306e\u89e3\u6c7a\u7b56\u3068\u6bd4\u8f03\u3057\u3066\u5b9f\u884c\u6642\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u969b\u3001\u6587\u5b57\u5217\u3092\u30eb\u30fc\u30f3\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001\u8ffd\u52a0\u306e\u30b9\u30e9\u30a4\u30b9\u3092\u5272\u308a\u5f53\u3066\u3001\u30d0\u30a4\u30c8\u3092\u30eb\u30fc\u30f3\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6587\u5b57\u5217\u306e\u30d0\u30a4\u30c8\u6570\u3092 n \u3068\u3059\u308b\u3068\u3001\u6642\u9593\u8a08\u7b97\u91cf\u306f O(n) \u306b\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3059\u3079\u3066\u306e\u30eb\u30fc\u30f3\u3092\u53cd\u5fa9\u51e6\u7406\u3059\u308b\u5834\u5408\u306f\u3001\u6700\u521d\u306e\u89e3\u6c7a\u7b56\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    \u305f\u3060\u3057\u3001\u6700\u521d\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u306e i \u756a\u76ee\u306e\u30eb\u30fc\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30eb\u30fc\u30f3\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u30d0\u30a4\u30c8\u30b7\u30fc\u30b1\u30f3\u30b9\u5185\u306e\u30eb\u30fc\u30f3\u306e\u958b\u59cb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u308f\u304b\u308a\u307e\u3059\u3002

    s := \"h\u00eallo\"\nr := []rune(s)[4]\nfmt.Printf(\"%c\\n\", r) // o\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#trim-38","title":"trim \u95a2\u6570\u306e\u8aa4\u7528 (#38)","text":"\u8981\u7d04

    strings.TrimRight \u30fb strings.TrimLeft \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u30bb\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u3059\u3079\u3066\u306e\u672b\u5c3e\u30fb\u5148\u982d\u306e\u30eb\u30fc\u30f3\u3092\u524a\u9664\u3057\u307e\u3059\u304c\u3001 strings.TrimSuffix \u30fb strings.TrimPrefix \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u63a5\u5c3e\u8f9e\u30fb\u63a5\u982d\u8f9e\u306e\u306a\u3044\u6587\u5b57\u5217\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u305f\u3068\u3048\u3070

    fmt.Println(strings.TrimRight(\"123oxo\", \"xo\"))\n

    \u306f 123 \u3092\u51fa\u529b\u3057\u307e\u3059

    \u9006\u306b\u3001 strings.TrimLeft \u306f\u3001\u30bb\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u5148\u982d\u306e\u30eb\u30fc\u30f3\u3092\u3059\u3079\u3066\u524a\u9664\u3057\u307e\u3059\u3002

    \u4e00\u65b9\u3001strings.TrimSuffix \u30fb strings.TrimPrefix \u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u672b\u5c3e\u306e\u63a5\u5c3e\u8f9e\u30fb\u63a5\u982d\u8f9e\u3092\u9664\u3044\u305f\u6587\u5b57\u5217\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#39","title":"\u6700\u9069\u5316\u304c\u4e0d\u5341\u5206\u306a\u6587\u5b57\u5217\u306e\u9023\u7d50 (#39)","text":"\u8981\u7d04

    \u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8\u306e\u9023\u7d50\u306f\u3001\u53cd\u5fa9\u3054\u3068\u306b\u65b0\u3057\u3044\u6587\u5b57\u5217\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u306a\u3044\u3088\u3046\u306b\u3001strings.Builder \u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    += \u6f14\u7b97\u5b50\u3092\u7528\u3044\u3066\u30b9\u30e9\u30a4\u30b9\u306e\u3059\u3079\u3066\u306e\u6587\u5b57\u5217\u8981\u7d20\u3092\u9023\u7d50\u3059\u308b concat \u95a2\u6570\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    func concat(values []string) string {\n    s := \"\"\n    for _, value := range values {\n        s += value\n    }\n    return s\n}\n

    \u5404\u53cd\u5fa9\u4e2d\u306b\u3001 += \u6f14\u7b97\u5b50\u306f s \u3068 value \u6587\u5b57\u5217\u3092\u9023\u7d50\u3057\u307e\u3059\u3002\u4e00\u898b\u3059\u308b\u3068\u3001\u3053\u306e\u95a2\u6570\u306f\u9593\u9055\u3063\u3066\u3044\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u5b9f\u88c5\u306f\u3001\u6587\u5b57\u5217\u306e\u6838\u3068\u306a\u308b\u7279\u6027\u306e1\u3064\u3067\u3042\u308b\u4e0d\u5909\u6027\u3092\u5fd8\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u5404\u53cd\u5fa9\u3067\u306f s \u306f\u66f4\u65b0\u3055\u308c\u307e\u305b\u3093\u3002\u30e1\u30e2\u30ea\u5185\u306b\u65b0\u3057\u3044\u6587\u5b57\u5217\u3092\u518d\u5272\u308a\u5f53\u3066\u3059\u308b\u305f\u3081\u3001\u3053\u306e\u95a2\u6570\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002

    \u5e78\u3044\u306a\u3053\u3068\u306b\u3001 strings.Builder \u3092\u7528\u3044\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u3002

    func concat(values []string) string {\n    sb := strings.Builder{}\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    \u5404\u53cd\u5fa9\u4e2d\u306b\u3001value \u306e\u5185\u5bb9\u3092\u5185\u90e8\u30d0\u30c3\u30d5\u30a1\u306b\u8ffd\u52a0\u3059\u308b WriteString \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u7d50\u679c\u306e\u6587\u5b57\u5217\u3092\u69cb\u7bc9\u3057\u3001\u30e1\u30e2\u30ea\u306e\u30b3\u30d4\u30fc\u3092\u6700\u5c0f\u9650\u306b\u6291\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002

    \u88dc\u8db3

    WriteString \u306f 2 \u756a\u76ee\u306e\u51fa\u529b\u3068\u3057\u3066\u30a8\u30e9\u30fc\u3092\u8fd4\u3057\u307e\u3059\u304c\u3001\u610f\u56f3\u7684\u306b\u7121\u8996\u3057\u307e\u3057\u3087\u3046\u3002\u5b9f\u969b\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f nil \u30a8\u30e9\u30fc\u4ee5\u5916\u3092\u8fd4\u3059\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3067\u306f\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u30b7\u30b0\u30cd\u30c1\u30e3\u306e\u4e00\u90e8\u3068\u3057\u3066\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u76ee\u7684\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002strings.Builder \u306f io.StringWriter \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306b\u306f WriteString(s string) (n int, err error) \u3068\u3044\u30461\u3064\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u6e96\u62e0\u3059\u308b\u306b\u306f\u3001WriteString \u306f\u30a8\u30e9\u30fc\u3092\u8fd4\u3055\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u3059\u3002

    \u5185\u90e8\u7684\u306b\u306f\u3001strings.Builder \u306f\u30d0\u30a4\u30c8\u30b9\u30e9\u30a4\u30b9\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002 WriteString \u3092\u547c\u3073\u51fa\u3059\u305f\u3073\u306b\u3001\u3053\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u8ffd\u52a0\u3059\u308b\u547c\u3073\u51fa\u3057\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f2\u3064\u306e\u5f71\u97ff\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001 append \u306e\u547c\u3073\u51fa\u3057\u304c\u885d\u7a81\u72b6\u614b\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u306e\u69cb\u9020\u4f53\u306f\u540c\u6642\u306b\u4f7f\u7528\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u30022\u756a\u76ee\u306e\u5f71\u97ff\u306f\u3001 \u975e\u52b9\u7387\u306a\u30b9\u30e9\u30a4\u30b9\u306e\u521d\u671f\u5316 (#21) \u3067\u898b\u305f\u3082\u306e\u3067\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u306e\u5c06\u6765\u306e\u9577\u3055\u304c\u3059\u3067\u306b\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3092\u4e8b\u524d\u306b\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u3001strings.Builder \u306f\u5225\u306e n \u30d0\u30a4\u30c8\u306e\u305f\u3081\u306e\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u8a3c\u3059\u308b\u30e1\u30bd\u30c3\u30c9 Grow(n int) \u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002

    func concat(values []string) string {\n    total := 0\n    for i := 0; i < len(values); i++ {\n        total += len(values[i])\n    }\n\n    sb := strings.Builder{}\n    sb.Grow(total) (2)\n    for _, value := range values {\n        _, _ = sb.WriteString(value)\n    }\n    return sb.String()\n}\n

    \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u5b9f\u884c\u3057\u3066 3 \u3064\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\uff08 += \u3092\u4f7f\u7528\u3057\u305f V1 \u3001\u4e8b\u524d\u5272\u308a\u5f53\u3066\u306a\u3057\u3067 strings.Builder{} \u3092\u4f7f\u7528\u3057\u305f V2 \u3001\u4e8b\u524d\u5272\u308a\u5f53\u3066\u3042\u308a\u306e strings.Builder{} \u3092\u4f7f\u7528\u3057\u305f V3 \uff09\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u5165\u529b\u30b9\u30e9\u30a4\u30b9\u306b\u306f 1,000 \u500b\u306e\u6587\u5b57\u5217\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u5404\u6587\u5b57\u5217\u306b\u306f 1,000 \u30d0\u30a4\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002

    BenchmarkConcatV1-4             16      72291485 ns/op\nBenchmarkConcatV2-4           1188        878962 ns/op\nBenchmarkConcatV3-4           5922        190340 ns/op\n

    \u3054\u89a7\u306e\u3068\u304a\u308a\u3001\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u6700\u3082\u52b9\u7387\u7684\u3067\u3001V1 \u3088\u308a 99% \u3001V2 \u3088\u308a 78% \u9ad8\u901f\u3067\u3059\u3002

    strings.Builder \u306f\u3001\u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8\u3092\u9023\u7d50\u3059\u308b\u305f\u3081\u306e\u89e3\u6c7a\u7b56\u3068\u3057\u3066\u63a8\u5968\u3055\u308c\u307e\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u306f\u30eb\u30fc\u30d7\u5185\u3067\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u6587\u5b57\u5217 \uff08\u540d\u524d\u3068\u59d3\u306a\u3069\uff09\u3092\u9023\u7d50\u3059\u308b\u3060\u3051\u306e\u5834\u5408\u3001 strings.Builder \u306e\u4f7f\u7528\u306f\u3001 += \u6f14\u7b97\u5b50\u3084 fmt.Sprintf \u3068\u6bd4\u3079\u3066\u53ef\u8aad\u6027\u304c\u4f4e\u304f\u306a\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#40","title":"\u7121\u99c4\u306a\u6587\u5b57\u5217\u5909\u63db (#40)","text":"\u8981\u7d04

    bytes \u30d1\u30c3\u30b1\u30fc\u30b8\u306f strings \u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u540c\u3058\u64cd\u4f5c\u3092\u63d0\u4f9b\u3057\u3066\u304f\u308c\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3068\u3001\u4f59\u5206\u306a\u30d0\u30a4\u30c8\u30fb\u6587\u5b57\u5217\u5909\u63db\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u6587\u5b57\u5217\u307e\u305f\u306f []byte \u3092\u6271\u3046\u3053\u3068\u3092\u9078\u629e\u3059\u308b\u5834\u5408\u3001\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u6587\u5b57\u5217\u3092\u597d\u3080\u50be\u5411\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u307b\u3068\u3093\u3069\u306e I/O \u306f\u5b9f\u969b\u306b\u306f []byte \u3067\u884c\u308f\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001io.Reader\u3001io.Writer\u3001\u304a\u3088\u3073 io.ReadAll \u306f\u6587\u5b57\u5217\u3067\u306f\u306a\u304f []byte \u3092\u51e6\u7406\u3057\u307e\u3059\u3002

    \u6587\u5b57\u5217\u3068 []byte \u306e\u3069\u3061\u3089\u3092\u6271\u3046\u3079\u304d\u304b\u8ff7\u3063\u305f\u3068\u304d\u3001[]byte \u3092\u6271\u3046\u65b9\u304c\u5fc5\u305a\u3057\u3082\u9762\u5012\u3060\u3068\u3044\u3046\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002strings \u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u95a2\u6570\u306b\u306f\u3001bytes \u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u4ee3\u66ff\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002 Split\u3001Count\u3001Contains\u3001Index \u306a\u3069\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001I/O \u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306b\u95a2\u4fc2\u306a\u304f\u3001\u6587\u5b57\u5217\u306e\u4ee3\u308f\u308a\u306b\u30d0\u30a4\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u5168\u4f53\u3092\u5b9f\u88c5\u3067\u304d\u3001\u8ffd\u52a0\u306e\u5909\u63db\u30b3\u30b9\u30c8\u3092\u56de\u907f\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u3092\u6700\u521d\u306b\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#41","title":"\u90e8\u5206\u6587\u5b57\u5217\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#41)","text":"\u8981\u7d04

    \u90e8\u5206\u6587\u5b57\u5217\u306e\u4ee3\u308f\u308a\u306b\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u6587\u5b57\u5217\u304c\u540c\u3058\u30d0\u30a4\u30c8\u914d\u5217\u306b\u3088\u3063\u3066\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30b9\u30e9\u30a4\u30b9\u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#26) \u3067\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u307e\u305f\u306f\u914d\u5217\u306e\u30b9\u30e9\u30a4\u30b9\u304c\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u72b6\u6cc1\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u539f\u5247\u306f\u3001\u6587\u5b57\u5217\u304a\u3088\u3073\u90e8\u5206\u6587\u5b57\u5217\u306e\u64cd\u4f5c\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002

    Go\u8a00\u8a9e\u3067\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u30012 \u3064\u306e\u3053\u3068\u306b\u7559\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305a\u3001\u63d0\u4f9b\u3055\u308c\u308b\u9593\u9694\u306f\u30eb\u30fc\u30f3\u6570\u3067\u306f\u306a\u304f\u3001\u30d0\u30a4\u30c8\u6570\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u6b21\u306b\u3001\u7d50\u679c\u306e\u90e8\u5206\u6587\u5b57\u5217\u304c\u6700\u521d\u306e\u6587\u5b57\u5217\u3068\u540c\u3058\u30d0\u30c3\u30ad\u30f3\u30b0\u914d\u5217\u3092\u5171\u6709\u3059\u308b\u305f\u3081\u3001\u90e8\u5206\u6587\u5b57\u5217\u64cd\u4f5c\u306b\u3088\u308a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u9632\u3050\u65b9\u6cd5\u306f\u3001\u6587\u5b57\u5217\u306e\u30b3\u30d4\u30fc\u3092\u624b\u52d5\u3067\u5b9f\u884c\u3059\u308b\u304b\u3001Go 1.18 \u304b\u3089\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b strings.Clone \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_7","title":"\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9","text":""},{"location":"ja/#42","title":"\u3069\u306e\u578b\u306e\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3059\u308c\u3070\u3088\u3044\u304b\u308f\u304b\u3063\u3066\u3044\u306a\u3044 (#42)","text":"\u8981\u7d04

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3068\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u3069\u3061\u3089\u3092\u4f7f\u7528\u3059\u308b\u304b\u306f\u3001\u3069\u306e\u578b\u306a\u306e\u304b\u3001\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3001\u30b3\u30d4\u30fc\u3067\u304d\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3069\u308c\u304f\u3089\u3044\u5927\u304d\u3044\u306e\u304b\u3001\u306a\u3069\u306e\u8981\u7d20\u306b\u57fa\u3065\u3044\u3066\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5206\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3068\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u3069\u3061\u3089\u3092\u9078\u629e\u3059\u308b\u304b\u306f\u3001\u5fc5\u305a\u3057\u3082\u7c21\u5358\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u9078\u629e\u306b\u5f79\u7acb\u3064\u3044\u304f\u3064\u304b\u306e\u6761\u4ef6\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u3087\u3046\u3002

    \u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044 \u3068\u304d

    • \u30e1\u30bd\u30c3\u30c9\u304c\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3002\u3053\u306e\u30eb\u30fc\u30eb\u306f\u3001\u53d7\u4fe1\u5074\u304c\u30b9\u30e9\u30a4\u30b9\u3067\u3042\u308a\u3001\u30e1\u30bd\u30c3\u30c9\u304c\u8981\u7d20\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u3082\u6709\u52b9\u3067\u3059\u3002
    type slice []int\n\nfunc (s *slice) add(element int) {\n    *s = append(*s, element)\n}\n
    • \u30e1\u30bd\u30c3\u30c9\u30ec\u30b7\u30fc\u30d0\u30fc\u306b\u30b3\u30d4\u30fc\u3067\u304d\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3002sync \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u578b\u90e8\u5206\u306f\u305d\u306e\u4e00\u4f8b\u306b\u306a\u308a\u307e\u3059\uff08 sync \u578b\u306e\u30b3\u30d4\u30fc (#74) \u3092\u53c2\u7167\uff09\u3002

    \u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u3042\u308b\u3079\u304d \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u5927\u304d\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u3002\u30dd\u30a4\u30f3\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5927\u898f\u6a21\u306a\u30b3\u30d4\u30fc\u306e\u4f5c\u6210\u304c\u9632\u6b62\u3055\u308c\u308b\u305f\u3081\u3001\u547c\u3073\u51fa\u3057\u304c\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3059\u3002\u3069\u308c\u304f\u3089\u3044\u306e\u5927\u304d\u3055\u306a\u306e\u304b\u78ba\u8a3c\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u89e3\u6c7a\u7b56\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u591a\u304f\u306e\u8981\u56e0\u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u7279\u5b9a\u306e\u30b5\u30a4\u30ba\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u307b\u3068\u3093\u3069\u4e0d\u53ef\u80fd\u3067\u3059\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044 \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u4e0d\u5909\u6027\u3092\u5f37\u5236\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u30de\u30c3\u30d7\u3001\u95a2\u6570\u3001\u30c1\u30e3\u30cd\u30eb\u306e\u5834\u5408\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002

    \u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3067\u3042\u308b\u3079\u304d \u3068\u304d

    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u5909\u5316\u3055\u305b\u308b\u5fc5\u8981\u306e\u306a\u3044\u30b9\u30e9\u30a4\u30b9\u306e\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u3001time.Time \u306a\u3069\u306e\u5c0f\u3055\u306a\u914d\u5217\u307e\u305f\u306f\u69cb\u9020\u4f53\u3067\u3001\u53ef\u5909\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u305f\u306a\u3044\u5024\u578b\u3067\u3042\u308b\u5834\u5408\u3002
    • \u30ec\u30b7\u30fc\u30d0\u30fc\u304c int\u3001float64\u3001\u307e\u305f\u306f string \u306a\u3069\u306e\u57fa\u672c\u578b\u306e\u5834\u5408\u3002

    \u3082\u3061\u308d\u3093\u3001\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\u306f\u5e38\u306b\u5b58\u5728\u3059\u308b\u305f\u3081\u3001\u3059\u3079\u3066\u3092\u7db2\u7f85\u3059\u308b\u3053\u3068\u306f\u4e0d\u53ef\u80fd\u3067\u3059\u304c\u3001\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u76ee\u6a19\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30b1\u30fc\u30b9\u3092\u30ab\u30d0\u30fc\u3059\u308b\u305f\u3081\u306e\u30ac\u30a4\u30c0\u30f3\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u901a\u5e38\u306f\u3001\u305d\u3046\u3057\u306a\u3044\u6b63\u5f53\u306a\u7406\u7531\u304c\u306a\u3044\u9650\u308a\u3001\u5024\u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u9593\u9055\u3044\u3042\u308a\u307e\u305b\u3093\u3002\u5206\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u30ec\u30b7\u30fc\u30d0\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#43","title":"\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u307e\u3063\u305f\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#43)","text":"\u8981\u7d04

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u4f7f\u7528\u306f\u3001\u7279\u306b\u8907\u6570\u306e\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u540c\u3058\u578b\u3092\u6301\u3064\u5834\u5408\u3001\u95a2\u6570\u30fb\u30e1\u30bd\u30c3\u30c9\u306e\u8aad\u307f\u3084\u3059\u3055\u3092\u5411\u4e0a\u3055\u305b\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u65b9\u6cd5\u304c\u4fbf\u5229\u3067\u3059\u3089\u3042\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u6f5c\u5728\u7684\u306a\u526f\u4f5c\u7528\u306b\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u95a2\u6570\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u3067\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8fd4\u3059\u3068\u304d\u3001\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u540d\u524d\u3092\u4ed8\u3051\u3066\u3001\u901a\u5e38\u306e\u5909\u6570\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u3068\u3001\u95a2\u6570\u30fb\u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb\u6642\u306b\u305d\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u307e\u3059\u3002\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001 \u3080\u304d\u51fa\u3057\u306e return \u6587\uff08\u5f15\u6570\u306a\u3057\uff09 \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u73fe\u5728\u306e\u5024\u304c\u623b\u308a\u5024\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002

    \u4ee5\u4e0b\u306f\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf b \u3092\u7528\u3044\u305f\u4f8b\u3067\u3059\u3002

    func f(a int) (b int) {\n    b = a\n    return\n}\n

    \u3053\u306e\u4f8b\u3067\u306f\u3001\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u540d\u524d b \u3092\u4ed8\u3051\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u306a\u3057\u3067 return \u3092\u547c\u3073\u51fa\u3059\u3068\u3001b \u306e\u73fe\u5728\u306e\u5024\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u540d\u524d\u4ed8\u304d\u306e\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u3088\u3063\u3066\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u30012 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u540c\u3058\u578b\u3067\u3042\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002\u305d\u306e\u4ed6\u306b\u3082\u3001\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u7528\u3044\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3086\u3048\u306b\u3001\u660e\u78ba\u306a\u5229\u70b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u614e\u91cd\u306b\u306a\u308a\u306a\u304c\u3089\u3082\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#44","title":"\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u526f\u4f5c\u7528 (#44)","text":"\u8981\u7d04

    #43 \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5f79\u7acb\u3064\u7406\u7531\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u305f\u3002 \u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u305f\u3081\u3001\u5341\u5206\u306b\u6ce8\u610f\u3057\u306a\u3044\u3068\u3001\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3069\u3053\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    func (l loc) getCoordinates(ctx context.Context, address string) (\n    lat, lng float32, err error) {\n    isValid := l.validateAddress(address) (1)\n    if !isValid {\n        return 0, 0, errors.New(\"invalid address\")\n    }\n\n    if ctx.Err() != nil { (2)\n        return 0, 0, err\n    }\n\n    // \u5ea7\u6a19\u3092\u53d6\u5f97\u3057\u3066\u8fd4\u3059\n}\n

    \u4e00\u77a5\u3057\u305f\u3060\u3051\u3067\u306f\u30a8\u30e9\u30fc\u306f\u660e\u3089\u304b\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002if ctx.Err() != nil \u30b9\u30b3\u30fc\u30d7\u3067\u8fd4\u3055\u308c\u308b\u30a8\u30e9\u30fc\u306f err \u3067\u3059\u3002\u3057\u304b\u3057\u3001err \u5909\u6570\u306b\u306f\u5024\u3092\u5272\u308a\u5f53\u3066\u3066\u3044\u307e\u305b\u3093\u3002error \u578b\u306e\u30bc\u30ed\u5024\u3001 nil \u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u307e\u307e\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u5e38\u306b nil \u30a8\u30e9\u30fc\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30bc\u30ed\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8aac\u660e\u3057\u305f\u3088\u3046\u306b\u3001\u3053\u308c\u306b\u3088\u308a\u3001\u898b\u3064\u3051\u308b\u306e\u304c\u5fc5\u305a\u3057\u3082\u7c21\u5358\u3067\u306f\u306a\u3044\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3086\u3048\u306b\u3001\u6f5c\u5728\u7684\u306a\u526f\u4f5c\u7528\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u540d\u524d\u4ed8\u304d\u7d50\u679c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#nil-45","title":"nil \u30ec\u30b7\u30fc\u30d0\u30fc\u3092\u8fd4\u3059 (#45)","text":"\u8981\u7d04

    \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u8fd4\u3059\u3068\u304d\u306f\u3001nil \u30dd\u30a4\u30f3\u30bf\u3092\u8fd4\u3059\u306e\u3067\u306f\u306a\u304f\u3001\u660e\u793a\u7684\u306a nil \u5024\u3092\u8fd4\u3059\u3088\u3046\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3057\u306a\u3051\u308c\u3070\u3001\u610f\u56f3\u3057\u306a\u3044\u7d50\u679c\u304c\u767a\u751f\u3057\u3001\u547c\u3073\u51fa\u3057\u5143\u304c nil \u3067\u306f\u306a\u3044\u5024\u3092\u53d7\u3051\u53d6\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#46","title":"\u95a2\u6570\u5165\u529b\u306b\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b (#46)","text":"\u8981\u7d04

    \u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4ee3\u308f\u308a\u306b io.Reader \u578b\u3092\u53d7\u3051\u53d6\u308b\u3088\u3046\u306b\u95a2\u6570\u3092\u8a2d\u8a08\u3059\u308b\u3068\u3001\u95a2\u6570\u306e\u518d\u5229\u7528\u6027\u304c\u5411\u4e0a\u3057\u3001\u30c6\u30b9\u30c8\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002

    \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308b\u305f\u3081\u306e\u95a2\u6570\u5165\u529b\u3068\u3057\u3066\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u300c\u30b3\u30fc\u30c9\u306e\u81ed\u3044\u300d\u3068\u307f\u306a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\uff08 os.Open \u306a\u3069\u306e\u7279\u5b9a\u306e\u95a2\u6570\u3092\u9664\u304f\uff09\u3002\u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306b\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u305a\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u307e\u305f\u3001\u95a2\u6570\u306e\u518d\u5229\u7528\u6027\u3082\u4f4e\u4e0b\u3057\u307e\u3059 \uff08\u305f\u3060\u3057\u3001\u3059\u3079\u3066\u306e\u95a2\u6570\u304c\u518d\u5229\u7528\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3002 io.Reader \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u62bd\u8c61\u5316\u3055\u308c\u307e\u3059\u3002\u5165\u529b\u304c\u30d5\u30a1\u30a4\u30eb\u3001\u6587\u5b57\u5217\u3001HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u3001gRPC \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u3044\u305a\u308c\u3067\u3042\u308b\u304b\u306b\u95a2\u4fc2\u306a\u304f\u3001\u5b9f\u88c5\u306f\u518d\u5229\u7528\u3067\u304d\u3001\u7c21\u5358\u306b\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-47","title":"defer \u5f15\u6570\u3068\u30ec\u30b7\u30fc\u30d0\u30fc\u304c\u3069\u306e\u3088\u3046\u306b\u8a55\u4fa1\u3055\u308c\u308b\u304b\u3092\u77e5\u3089\u306a\u3044\uff08\u5f15\u6570\u306e\u8a55\u4fa1\u3001\u30dd\u30a4\u30f3\u30bf\u30fc\u3001\u304a\u3088\u3073\u5024\u30ec\u30b7\u30fc\u30d0\u30fc\uff09 (#47)","text":"\u8981\u7d04

    \u30dd\u30a4\u30f3\u30bf\u3092 defer \u95a2\u6570\u306b\u6e21\u3059\u3053\u3068\u3068\u3001\u547c\u3073\u51fa\u3057\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u5185\u306b\u30e9\u30c3\u30d7\u3059\u308b\u3053\u3068\u304c\u3001\u5f15\u6570\u3068\u30ec\u30b7\u30fc\u30d0\u30fc\u306e\u5373\u6642\u8a55\u4fa1\u3092\u514b\u670d\u3059\u308b\u305f\u3081\u306b\u5b9f\u73fe\u53ef\u80fd\u306a\u89e3\u6c7a\u7b56\u3067\u3059\u3002

    defer \u95a2\u6570\u3067\u306f\u3001\u5f15\u6570\u306f\u3001\u4e0a\u4f4d\u30d6\u30ed\u30c3\u30af\u306e\u95a2\u6570\u304c\u623b\u3063\u3066\u304b\u3089\u3067\u306f\u306a\u304f\u3001\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u5e38\u306b\u540c\u3058\u30b9\u30c6\u30fc\u30bf\u30b9\u2015\u2015\u7a7a\u306e\u6587\u5b57\u5217\u2015\u2015\u3067 notify \u3068 incrementCounter \u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002

    const (\n    StatusSuccess  = \"success\"\n    StatusErrorFoo = \"error_foo\"\n    StatusErrorBar = \"error_bar\"\n)\n\nfunc f() error {\n    var status string\n    defer notify(status)\n    defer incrementCounter(status)\n\n    if err := foo(); err != nil {\n        status = StatusErrorFoo\n        return err\n    }\n\n    if err := bar(); err != nil {\n        status = StatusErrorBar\n        return err\n    }\n\n    status = StatusSuccess <5>\n    return nil\n}\n

    \u305f\u3057\u304b\u306b\u3001notify(status) \u3068 incrementCounter(status) \u3092 defer \u95a2\u6570\u3068\u3057\u3066\u547c\u3073\u51fa\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001Go\u8a00\u8a9e\u306f\u3001defer \u3092\u4f7f\u7528\u3057\u305f\u6bb5\u968e\u3067 f \u304c\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u73fe\u5728\u306e\u5024\u3092\u8fd4\u3059\u3068\u3001\u3053\u308c\u3089\u306e\u547c\u3073\u51fa\u3057\u306e\u5b9f\u884c\u3092\u9045\u3089\u305b\u3001\u7a7a\u306e\u6587\u5b57\u5217\u3092\u6e21\u3057\u307e\u3059\u3002

    defer \u3092\u4f7f\u3044\u7d9a\u3051\u305f\u3044\u5834\u5408\u306e\u4e3b\u306a\u65b9\u6cd5\u306f 2 \u3064\u3042\u308a\u307e\u3059\u3002

    \u6700\u521d\u306e\u89e3\u6c7a\u7b56\u306f\u6587\u5b57\u5217\u30dd\u30a4\u30f3\u30bf\u3092\u6e21\u3059\u3053\u3068\u3067\u3059\u3002

    func f() error {\n    var status string\n    defer notify(&status) \n    defer incrementCounter(&status)\n\n    // \u95a2\u6570\u306e\u305d\u308c\u4ee5\u5916\u306e\u90e8\u5206\u306f\u5909\u66f4\u306a\u3057\n}\n

    defer \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5f15\u6570\uff08\u3053\u3053\u3067\u306f\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u30a2\u30c9\u30ec\u30b9\uff09\u304c\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u30b9\u30c6\u30fc\u30bf\u30b9\u81ea\u4f53\u306f\u95a2\u6570\u5168\u4f53\u3067\u5909\u66f4\u3055\u308c\u307e\u3059\u304c\u3001\u305d\u306e\u30a2\u30c9\u30ec\u30b9\u306f\u5272\u308a\u5f53\u3066\u306b\u95a2\u4fc2\u306a\u304f\u4e00\u5b9a\u306e\u307e\u307e\u3067\u3059\u3002\u3088\u3063\u3066\u3001notify \u307e\u305f\u306f incrementCounter \u304c\u6587\u5b57\u5217\u30dd\u30a4\u30f3\u30bf\u306b\u3088\u3063\u3066\u53c2\u7167\u3055\u308c\u308b\u5024\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u671f\u5f85\u3069\u304a\u308a\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u306e\u89e3\u6c7a\u7b56\u3067\u306f 2 \u3064\u306e\u95a2\u6570\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u304c\u5e38\u306b\u53ef\u80fd\u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002

    \u5225\u306e\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u2015\u2015\u30af\u30ed\u30fc\u30b8\u30e3\uff08\u672c\u4f53\u306e\u5916\u90e8\u304b\u3089\u5909\u6570\u3092\u53c2\u7167\u3059\u308b\u533f\u540d\u95a2\u6570\u5024\uff09\u3092 defer \u6587\u3068\u3057\u3066\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u3059\u3002

    func f() error {\n    var status string\n    defer func() {\n        notify(status)\n        incrementCounter(status)\n    }()\n\n    // \u95a2\u6570\u306e\u305d\u308c\u4ee5\u5916\u306e\u90e8\u5206\u306f\u5909\u66f4\u306a\u3057\n}\n

    \u3053\u3053\u3067\u306f\u3001notify \u3068 incrementCounter \u306e\u4e21\u65b9\u306e\u547c\u3073\u51fa\u3057\u3092\u30af\u30ed\u30fc\u30b8\u30e3\u5185\u306b\u30e9\u30c3\u30d7\u3057\u307e\u3059\u3002\u3053\u306e\u30af\u30ed\u30fc\u30b8\u30e3\u306f\u3001\u672c\u4f53\u306e\u5916\u90e8\u304b\u3089\u30b9\u30c6\u30fc\u30bf\u30b9\u5909\u6570\u3092\u53c2\u7167\u3057\u307e\u3059\u3002\u3086\u3048\u306b\u3001status \u306f\u3001defer \u3092\u547c\u3073\u51fa\u3057\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001\u30af\u30ed\u30fc\u30b8\u30e3\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u4e0a\u306b\u3001\u30b7\u30b0\u30cd\u30c1\u30e3\u3092\u5909\u66f4\u3059\u308b\u305f\u3081\u306b notify \u3084 incrementCounter \u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002

    \u3053\u306e\u52d5\u4f5c\u306f\u30e1\u30bd\u30c3\u30c9\u30ec\u30b7\u30fc\u30d0\u30fc\u306b\u3082\u9069\u7528\u3055\u308c\u308b\u3053\u3068\u306b\u3082\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30ec\u30b7\u30fc\u30d0\u30fc\u306f\u3059\u3050\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_8","title":"\u30a8\u30e9\u30fc\u51e6\u7406","text":""},{"location":"ja/#48","title":"\u30d1\u30cb\u30c3\u30af (#48)","text":"\u8981\u7d04

    panic \u306e\u4f7f\u7528\u306f\u3001Go\u8a00\u8a9e\u3067\u30a8\u30e9\u30fc\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306e\u624b\u6bb5\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u308c\u306f\u56de\u5fa9\u4e0d\u80fd\u306a\u72b6\u6cc1\u3067\u306e\u307f\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30d2\u30e5\u30fc\u30de\u30f3\u30a8\u30e9\u30fc\u3092\u901a\u77e5\u3059\u308b\u5834\u5408\u3084\u3001\u5fc5\u9808\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306a\u3069\u3067\u3059\u3002

    Go\u8a00\u8a9e\u3067\u306f\u3001panic \u306f\u901a\u5e38\u306e\u6d41\u308c\u3092\u505c\u6b62\u3059\u308b\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3067\u3059\u3002

    func main() {\n    fmt.Println(\"a\")\n    panic(\"foo\")\n    fmt.Println(\"b\")\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306f a \u3092\u51fa\u529b\u3057\u3001b \u3092\u51fa\u529b\u3059\u308b\u524d\u306b\u505c\u6b62\u3057\u307e\u3059\u3002

    a\npanic: foo\n\ngoroutine 1 [running]:\nmain.main()\n        main.go:7 +0xb3\n

    panic \u306e\u4f7f\u7528\u306f\u614e\u91cd\u306b\u3059\u3079\u304d\u3067\u3059\u3002\u4ee3\u8868\u7684\u306a\u30b1\u30fc\u30b9\u304c 2 \u3064\u3042\u308a\u30011 \u3064\u306f\u30d2\u30e5\u30fc\u30de\u30f3\u30a8\u30e9\u30fc\u3092\u901a\u77e5\u3059\u308b\u5834\u5408\uff08\u4f8b: sql.Register\u30c9\u30e9\u30a4\u30d0\u30fc\u304c nil \u307e\u305f\u306f\u65e2\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b panic \u3092\u8d77\u3053\u3057\u307e\u3059\uff09\u3001\u3082\u3046 1 \u3064\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u9808\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u751f\u6210\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u3067\u3059\u3002\u7d50\u679c\u3068\u3057\u3066\u3001\u4f8b\u5916\u7684\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306e\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u306b\u304a\u3044\u3066\u306f\u3001\u30a8\u30e9\u30fc\u51e6\u7406\u306f\u3001\u6700\u5f8c\u306e\u623b\u308a\u5f15\u6570\u3068\u3057\u3066\u9069\u5207\u306a\u30a8\u30e9\u30fc\u578b\u3092\u8fd4\u3059\u95a2\u6570\u3092\u901a\u3058\u3066\u884c\u3046\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#49","title":"\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u3079\u304d\u3068\u304d\u3092\u77e5\u3089\u306a\u3044 (#49)","text":"\u8981\u7d04

    \u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u308b\u3068\u3001\u30a8\u30e9\u30fc\u3092\u30de\u30fc\u30af\u3057\u305f\u308a\u3001\u8ffd\u52a0\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u63d0\u4f9b\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306b\u3088\u308a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u305f\u3081\u3001\u6f5c\u5728\u7684\u306a\u7d50\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u305d\u308c\u3092\u907f\u3051\u305f\u3044\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002

    Go 1.13 \u4ee5\u964d\u3001%w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u4f7f\u7528\u3059\u308c\u3070\u7c21\u5358\u306b\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3068\u306f\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3082\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30e9\u30c3\u30d1\u30fc\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u307e\u305f\u306f\u30d1\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u4e00\u822c\u306b\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306e\u4e3b\u306a\u4f7f\u7528\u4f8b\u306f\u6b21\u306e 2 \u3064\u3067\u3059\u3002

    • \u30a8\u30e9\u30fc\u306b\u3055\u3089\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u52a0\u3048\u308b
    • \u30a8\u30e9\u30fc\u3092\u7279\u5b9a\u306e\u30a8\u30e9\u30fc\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b

    \u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3068\u304d\u3001\u30a8\u30e9\u30fc\u3092\u30e9\u30c3\u30d7\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002\u30e9\u30c3\u30d4\u30f3\u30b0\u3068\u306f\u3001\u30a8\u30e9\u30fc\u306b\u3055\u3089\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u305f\u308a\u3001\u30a8\u30e9\u30fc\u3092\u7279\u5b9a\u306e\u30bf\u30a4\u30d7\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u30a8\u30e9\u30fc\u3092\u30de\u30fc\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u72ec\u81ea\u306e\u30a8\u30e9\u30fc\u578b\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3067\u3059\u304c\u3001\u65b0\u305f\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u52a0\u3048\u305f\u3044\u3060\u3051\u306e\u5834\u5408\u306f\u3001\u65b0\u3057\u3044\u30a8\u30e9\u30fc\u578b\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u305f\u3081\u3001%w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u6307\u5b9a\u3057\u3066 fmt.Errorf \u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002\u305f\u3060\u3057\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306b\u3088\u308a\u3001\u547c\u3073\u51fa\u3057\u5143\u304c\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u305f\u3081\u3001\u6f5c\u5728\u7684\u306a\u7d50\u5408\u304c\u751f\u3058\u307e\u3059\u3002\u305d\u308c\u3092\u907f\u3051\u305f\u3044\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u306e\u30e9\u30c3\u30d4\u30f3\u30b0\u3067\u306f\u306a\u304f\u3001\u30a8\u30e9\u30fc\u306e\u5909\u63db\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001%v \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u6307\u5b9a\u3057\u305f fmt.Errorf \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#50","title":"\u30a8\u30e9\u30fc\u578b\u306e\u4e0d\u6b63\u306a\u6bd4\u8f03 (#50)","text":"\u8981\u7d04

    Go 1.13 \u306e\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u578b\u306b\u5bfe\u3059\u308b\u30a8\u30e9\u30fc\u306e\u6bd4\u8f03\u306f errors.As \u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u8fd4\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u8a55\u4fa1\u306b\u5931\u6557\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#51","title":"\u30a8\u30e9\u30fc\u5024\u306e\u4e0d\u6b63\u306a\u6bd4\u8f03 (#51)","text":"\u8981\u7d04

    Go 1.13 \u306e\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30a8\u30e9\u30fc\u3068\u5024\u306e\u6bd4\u8f03\u306f errors.As \u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u8fd4\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u8a55\u4fa1\u306b\u5931\u6557\u3057\u307e\u3059\u3002

    \u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30a8\u30e9\u30fc\u306e\u3053\u3068\u3067\u3059\u3002

    import \"errors\"\n\nvar ErrFoo = errors.New(\"foo\")\n
    \u4e00\u822c\u306b\u3001\u6163\u4f8b\u3068\u3057\u3066 Err \u3067\u59cb\u3081\u3001\u305d\u306e\u5f8c\u306b\u30a8\u30e9\u30fc\u578b\u3092\u7d9a\u3051\u307e\u3059\u3002\u3053\u3053\u3067\u306f ErrFoo \u3067\u3059\u3002\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u306f\u3001\u4e88\u671f\u3055\u308c\u308b \u30a8\u30e9\u30fc\u3001\u3064\u307e\u308a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308b\u30a8\u30e9\u30fc\u3092\u4f1d\u3048\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3068\u3057\u3066

    • \u4e88\u671f\u3055\u308c\u308b\u30a8\u30e9\u30fc\u306f\u30a8\u30e9\u30fc\u5024\uff08\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\uff09\u3068\u3057\u3066\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a var ErrFoo =errors.New(\"foo\")\u3002
    • \u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u306f\u30a8\u30e9\u30fc\u578b\u3068\u3057\u3066\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a BarError \u306f error \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u305f\u4e0a\u3067 type BarError struct { ... }\u3002

    \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 %w \u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3068 fmt.Errorf \u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u30e9\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u7279\u5b9a\u306e\u5024\u306b\u5bfe\u3059\u308b\u30a8\u30e9\u30fc\u306e\u30c1\u30a7\u30c3\u30af\u306f == \u306e\u4ee3\u308f\u308a\u306b errors.Is \u3092\u4f7f\u7528\u3057\u3066\u884c\u3044\u307e\u3057\u3087\u3046\u3002\u305d\u308c\u306b\u3088\u3063\u3066\u3001\u30bb\u30f3\u30c1\u30cd\u30eb\u30a8\u30e9\u30fc\u304c\u30e9\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001errors.Is \u306f\u305d\u308c\u3092\u518d\u5e30\u7684\u306b\u30a2\u30f3\u30e9\u30c3\u30d7\u3057\u3001\u30c1\u30a7\u30fc\u30f3\u5185\u306e\u5404\u30a8\u30e9\u30fc\u3092\u63d0\u4f9b\u3055\u308c\u305f\u5024\u3068\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#2-52","title":"\u30a8\u30e9\u30fc\u306e 2 \u56de\u51e6\u7406 (#52)","text":"\u8981\u7d04

    \u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30a8\u30e9\u30fc\u306f 1 \u56de\u3067\u51e6\u7406\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u304b\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u304b\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u591a\u304f\u306e\u5834\u5408\u3001\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306f\u3001\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u63d0\u4f9b\u3057\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\u89e3\u6c7a\u7b56\u306b\u306a\u308a\u307e\u3059\u3002

    \u30a8\u30e9\u30fc\u3092\u8907\u6570\u56de\u51e6\u7406\u3059\u308b\u3053\u3068\u306f\u3001\u7279\u306bGo\u8a00\u8a9e\u306b\u9650\u3089\u305a\u3001\u958b\u767a\u8005\u304c\u983b\u7e41\u306b\u3084\u3063\u3066\u3057\u307e\u3046\u30df\u30b9\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u540c\u3058\u30a8\u30e9\u30fc\u304c\u8907\u6570\u56de\u30ed\u30b0\u306b\u8a18\u9332\u3055\u308c\u3001\u30c7\u30d0\u30c3\u30b0\u304c\u56f0\u96e3\u306b\u306a\u308b\u72b6\u6cc1\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30a8\u30e9\u30fc\u51e6\u7406\u306f 1 \u5ea6\u3067\u6e08\u307e\u3059\u3079\u304d\u3060\u3068\u3044\u3046\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002\u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u884c\u3046\u3079\u304d\u306f\u3001\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u304b\u3001\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u304b\u306e\u3069\u3061\u3089\u304b\u3060\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u7d20\u5316\u3055\u308c\u3001\u30a8\u30e9\u30fc\u306e\u72b6\u6cc1\u306b\u3064\u3044\u3066\u3088\u308a\u9069\u5207\u306a\u6d1e\u5bdf\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u306f\u3001\u30bd\u30fc\u30b9\u30a8\u30e9\u30fc\u3092\u4f1d\u3048\u3001\u30a8\u30e9\u30fc\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u308b\u305f\u3081\u3001\u6700\u3082\u4f7f\u3044\u52dd\u624b\u306e\u826f\u3044\u624b\u6bb5\u306b\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#53","title":"\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u3057\u306a\u3044 (#53)","text":"\u8981\u7d04

    \u95a2\u6570\u547c\u3073\u51fa\u3057\u4e2d\u3067\u3042\u3063\u3066\u3082\u3001defer \u95a2\u6570\u5185\u3067\u3042\u3063\u3066\u3082\u3001\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u308b\u3068\u304d\u306f\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u660e\u78ba\u306b\u884c\u3046\u3079\u304d\u3067\u3059\u3002\u305d\u3046\u3057\u306a\u3044\u3068\u3001\u5c06\u6765\u306e\u8aad\u307f\u624b\u304c\u305d\u308c\u304c\u610f\u56f3\u7684\u3060\u3063\u305f\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u30df\u30b9\u3060\u3063\u305f\u306e\u304b\u56f0\u60d1\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#defer-54","title":"defer \u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3057\u306a\u3044 (#54)","text":"\u8981\u7d04

    \u591a\u304f\u306e\u5834\u5408\u3001defer \u95a2\u6570\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001\u76f4\u63a5\u51e6\u7406\u3059\u308b\u304b\u3001\u547c\u3073\u51fa\u3057\u5143\u306b\u4f1d\u3048\u307e\u3057\u3087\u3046\u3002\u3053\u308c\u3092\u7121\u8996\u3059\u308b\u5834\u5408\u306f\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u6b21\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002

    func f() {\n  // ...\n  notify() // \u30a8\u30e9\u30fc\u51e6\u7406\u306f\u7701\u7565\u3055\u308c\u3066\u3044\u307e\u3059\n}\n\nfunc notify() error {\n  // ...\n}\n

    \u4fdd\u5b88\u6027\u306e\u89b3\u70b9\u304b\u3089\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3044\u304f\u3064\u304b\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3042\u308b\u4eba\u304c\u3053\u308c\u3092\u8aad\u3080\u3053\u3068\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002\u8aad\u307f\u624b\u306f\u3001notify \u304c\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u305d\u306e\u30a8\u30e9\u30fc\u304c\u89aa\u95a2\u6570\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u6c17\u3065\u304d\u307e\u3059\u3002\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u610f\u56f3\u7684\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u679c\u305f\u3057\u3066\u63a8\u6e2c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u4ee5\u524d\u306e\u958b\u767a\u8005\u304c\u305d\u308c\u3092\u51e6\u7406\u3059\u308b\u306e\u3092\u5fd8\u308c\u305f\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u610f\u56f3\u7684\u306b\u51e6\u7406\u3057\u305f\u306e\u304b\u3092\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    \u3053\u308c\u3089\u306e\u7406\u7531\u306b\u3088\u308a\u3001\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3057\u305f\u3044\u5834\u5408\u3001\u30d6\u30e9\u30f3\u30af\u8b58\u5225\u5b50\uff08 _ \uff09\u3092\u4f7f\u3046\u307b\u304b\u3042\u308a\u307e\u305b\u3093\u3002

    _ = notify\n

    \u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u5b9f\u884c\u6642\u9593\u306e\u70b9\u3067\u306f\u3001\u3053\u306e\u65b9\u6cd5\u306f\u6700\u521d\u306e\u30b3\u30fc\u30c9\u90e8\u5206\u3068\u6bd4\u3079\u3066\u4f55\u3082\u5909\u308f\u308a\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u79c1\u305f\u3061\u304c\u30a8\u30e9\u30fc\u306b\u95a2\u5fc3\u304c\u306a\u3044\u3053\u3068\u3092\u660e\u3089\u304b\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30a8\u30e9\u30fc\u304c\u7121\u8996\u3055\u308c\u308b\u7406\u7531\u3092\u793a\u3059\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    // \u6700\u5927\u3067\u3082 1 \u56de\u306e\u4f1d\u9054 \n// \u305d\u308c\u3086\u3048\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u305d\u308c\u3089\u306e\u4e00\u90e8\u304c\u5931\u308f\u308c\u308b\u3053\u3068\u306f\u8a31\u5bb9\u3055\u308c\u307e\u3059\n_ = notify()\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_9","title":"\u4e26\u884c\u51e6\u7406\uff1a\u57fa\u790e","text":""},{"location":"ja/#55","title":"\u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306e\u6df7\u540c (#55)","text":"\u8981\u7d04

    \u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001 Go \u958b\u767a\u8005\u306b\u3068\u3063\u3066\u5fc5\u9808\u3067\u3059\u3002\u4e26\u884c\u51e6\u7406\u306f\u69cb\u9020\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u304c\u3001\u4e26\u5217\u51e6\u7406\u306f\u5b9f\u884c\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002

    \u4e26\u884c\u51e6\u7406\u3068\u4e26\u5217\u51e6\u7406\u306f\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    • \u4e26\u884c\u51e6\u7406\u306f\u69cb\u9020\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002\u5225\u3005\u306e\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u6bb5\u968e\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u9010\u6b21\u51e6\u7406\u3092\u4e26\u884c\u51e6\u7406\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
    • \u4e26\u5217\u51e6\u7406\u306f\u5b9f\u884c\u306b\u95a2\u3059\u308b\u3082\u306e\u3067\u3059\u3002\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3055\u3089\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u6bb5\u968e\u30ec\u30d9\u30eb\u3067\u4e26\u5217\u51e6\u7406\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306f\u3001\u4e26\u5217\u5316\u3067\u304d\u308b\u90e8\u5206\u3092\u3082\u3064\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u69cb\u9020\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3059\u306a\u308f\u3061\u3001\u4e26\u884c\u51e6\u7406\u306b\u3088\u308a\u4e26\u5217\u51e6\u7406\u304c\u53ef\u80fd \u306b\u306a\u308a\u307e\u3059 \u3002

    "},{"location":"ja/#56","title":"\u4e26\u884c\u51e6\u7406\u306e\u307b\u3046\u304c\u5e38\u306b\u65e9\u3044\u3068\u8003\u3048\u3066\u3044\u308b (#56)","text":"\u8981\u7d04

    \u719f\u7df4\u3057\u305f\u958b\u767a\u8005\u306b\u306a\u308b\u306b\u306f\u3001\u4e26\u884c\u51e6\u7406\u304c\u5fc5\u305a\u3057\u3082\u9ad8\u901f\u3067\u3042\u308b\u3068\u306f\u9650\u3089\u306a\u3044\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u5c0f\u9650\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u4e26\u5217\u51e6\u7406\u3092\u4f34\u3046\u89e3\u6c7a\u7b56\u306f\u3001\u5fc5\u305a\u3057\u3082\u9010\u6b21\u51e6\u7406\u3088\u308a\u9ad8\u901f\u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u9010\u6b21\u51e6\u7406\u3068\u4e26\u884c\u51e6\u7406\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306f\u3001\u4eee\u5b9a\u3092\u691c\u8a3c\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#57","title":"\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u3044\u3064\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u306b\u3064\u3044\u3066\u6238\u60d1\u3063\u3066\u3044\u308b (#57)","text":"\u8981\u7d04

    \u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u76f8\u4e92\u4f5c\u7528\u3092\u8a8d\u8b58\u3057\u3066\u3044\u308b\u3053\u3068\u306f\u3001\u30c1\u30e3\u30cd\u30eb\u3068\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306e\u3069\u3061\u3089\u3092\u9078\u629e\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u3068\u304d\u306b\u3082\u5f79\u7acb\u3061\u307e\u3059\u3002\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u540c\u671f\u304c\u5fc5\u8981\u3067\u3042\u308a\u3001\u3057\u305f\u304c\u3063\u3066\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002\u53cd\u5bfe\u306b\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u901a\u5e38\u3001\u8abf\u6574\u3068\u30aa\u30fc\u30b1\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3\u3001\u3064\u307e\u308a\u30c1\u30e3\u30cd\u30eb\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002

    \u4e26\u884c\u51e6\u7406\u306e\u554f\u984c\u3092\u8003\u616e\u3059\u308b\u3068\u3001\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u305f\u89e3\u6c7a\u7b56\u3092\u5b9f\u88c5\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u304c\u5fc5\u305a\u3057\u3082\u660e\u78ba\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002Go\u8a00\u8a9e\u306f\u901a\u4fe1\u306b\u3088\u308b\u30e1\u30e2\u30ea\u306e\u5171\u6709\u3092\u4fc3\u9032\u3059\u308b\u305f\u3081\u3001\u8d77\u3053\u308a\u3046\u308b\u9593\u9055\u3044\u306e\u3046\u3061\u306e\u4e00\u3064\u306f\u3001\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u304b\u304b\u308f\u3089\u305a\u3001\u30c1\u30e3\u30cd\u30eb\u306e\u4f7f\u7528\u3092\u5e38\u306b\u5f37\u5236\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u30012 \u3064\u306e\u65b9\u6cd5\u306f\u88dc\u5b8c\u7684\u306a\u3082\u306e\u3067\u3042\u308b\u3068\u898b\u306a\u3059\u3079\u304d\u3067\u3059\u3002

    \u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306f\u3069\u306e\u3088\u3046\u306a\u5834\u5408\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u6b21\u306e\u56f3\u306e\u4f8b\u3092\u30d0\u30c3\u30af\u30dc\u30fc\u30f3\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u306b\u306f\u3001\u7279\u5b9a\u306e\u95a2\u4fc2\u3092\u6301\u3064 3 \u3064\u306e\u7570\u306a\u308b\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u3042\u308a\u307e\u3059\u3002

    • G1 \u3068 G2 \u306f\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u7d9a\u3051\u308b\u540c\u3058\u95a2\u6570\u3092\u5b9f\u884c\u3059\u308b 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3001\u3042\u308b\u3044\u306f\u540c\u3058 HTTP \u30cf\u30f3\u30c9\u30e9\u3092\u540c\u6642\u306b\u5b9f\u884c\u3059\u308b 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
    • G1 \u3068 G3 \u306f\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3042\u308a\u3001G2 \u3068 G3 \u3082\u540c\u69d8\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u5168\u4f53\u306e\u4e26\u884c\u69cb\u9020\u306e\u4e00\u90e8\u3067\u3059\u304c\u3001G1 \u3068 G2 \u304c\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u3001G3 \u304c\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

    \u539f\u5247\u3068\u3057\u3066\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306a\u3069\u306e\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u5909\u66f4\u3057\u305f\u308a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306a\u3069\u306b\u3001_\u540c\u671f_\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u671f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3067\u306f\u5f37\u5236\u3055\u308c\u307e\u3059\u304c\u3001\u3069\u306e\u30c1\u30e3\u30cd\u30eb\u578b\u3067\u3082\u5f37\u5236\u3055\u308c\u307e\u305b\u3093\uff08\u30d0\u30c3\u30d5\u30a1\u3042\u308a\u30c1\u30e3\u30cd\u30eb\u3092\u9664\u304f\uff09\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u9593\u306e\u540c\u671f\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u4ecb\u3057\u3066\u9054\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u4e00\u65b9\u3001\u4e00\u822c\u306b\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306f \u8abf\u6574\u304a\u3088\u3073\u30aa\u30fc\u30b1\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3 \u3092\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001G3 \u304c G1 \u3068 G2 \u306e\u4e21\u65b9\u304b\u3089\u306e\u7d50\u679c\u3092\u96c6\u7d04\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001G1 \u3068 G2 \u306f\u65b0\u3057\u3044\u4e2d\u9593\u7d50\u679c\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092 G3 \u306b\u901a\u77e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u8abf\u6574\u306f\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7bc4\u56f2\u3001\u3064\u307e\u308a\u30c1\u30e3\u30cd\u30eb\u306b\u8a72\u5f53\u3057\u307e\u3059\u3002

    \u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u95a2\u3057\u3066\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u6240\u6709\u6a29\u3092\u3042\u308b\u30b9\u30c6\u30c3\u30d7\uff08G1 \u304a\u3088\u3073 G2\uff09\u304b\u3089\u5225\u306e\u30b9\u30c6\u30c3\u30d7\uff08G3\uff09\u306b\u79fb\u7ba1\u3057\u305f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001G1 \u3068 G2 \u306b\u3088\u3063\u3066\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u304c\u8c4a\u304b\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3042\u308b\u6642\u70b9\u3067\u3053\u306e\u30b8\u30e7\u30d6\u306f\u5b8c\u4e86\u3057\u305f\u3068\u898b\u306a\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u7279\u5b9a\u306e\u30ea\u30bd\u30fc\u30b9\u306e\u6e96\u5099\u304c\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u3092\u901a\u77e5\u3057\u3001\u6240\u6709\u6a29\u306e\u79fb\u8ee2\u3092\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3068\u30c1\u30e3\u30cd\u30eb\u306b\u306f\u7570\u306a\u308b\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30c6\u30fc\u30c8\u3092\u5171\u6709\u3057\u305f\u3044\u3068\u304d\u3001\u307e\u305f\u306f\u5171\u6709\u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u3068\u304d\u306f\u3001\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306b\u3088\u3063\u3066\u3053\u306e\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u6392\u4ed6\u7684\u30a2\u30af\u30bb\u30b9\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002\u53cd\u5bfe\u306b\u3001\u30c1\u30e3\u30cd\u30eb\u306f\u30c7\u30fc\u30bf\u306e\u6709\u7121\uff08chan struct{} \u306e\u6709\u7121\uff09\u306b\u95a2\u4fc2\u306a\u304f\u30b7\u30b0\u30ca\u30eb\u3092\u884c\u3046\u4ed5\u7d44\u307f\u3067\u3059\u3002\u8abf\u6574\u3084\u6240\u6709\u6a29\u306e\u79fb\u8ee2\u306f\u30c1\u30e3\u30cd\u30eb\u3092\u901a\u3058\u3066\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u4e26\u5217\u304b\u4e26\u884c\u304b\u3092\u77e5\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u4e00\u822c\u306b\u3001\u4e26\u5217\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u304c\u5fc5\u8981\u3067\u3001\u4e26\u884c\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u306f\u30c1\u30e3\u30cd\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002

    "},{"location":"ja/#go-58","title":"\u7af6\u5408\u554f\u984c\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\uff08\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u3001\u305d\u3057\u3066Go\u8a00\u8a9e\u306e\u30e1\u30e2\u30ea\u30e2\u30c7\u30eb\uff09 (#58)","text":"\u8981\u7d04

    \u4e26\u884c\u51e6\u7406\u306b\u719f\u9054\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u304c\u7570\u306a\u308b\u6982\u5ff5\u3067\u3042\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u610f\u5473\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u305d\u306e\u3046\u3061\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u4e00\u65b9\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u3044\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u5b9f\u884c\u3092\u610f\u5473\u3059\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u52d5\u4f5c\u304c\u5236\u5fa1\u3067\u304d\u306a\u3044\u30a4\u30d9\u30f3\u30c8\u306e\u9806\u5e8f\u3084\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306f\u7af6\u5408\u72b6\u614b\u3067\u3059\u3002

    \u7af6\u5408\u554f\u984c\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u304c\u76f4\u9762\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30d0\u30b0\u306e\u4e2d\u3067\u6700\u3082\u56f0\u96e3\u304b\u3064\u6700\u3082\u6f5c\u4f0f\u6027\u306e\u9ad8\u3044\u30d0\u30b0\u306e 1 \u3064\u3068\u306a\u308a\u307e\u3059\u3002Go \u958b\u767a\u8005\u3068\u3057\u3066\u3001\u79c1\u305f\u3061\u306f\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u7af6\u5408\u72b6\u614b\u3001\u305d\u308c\u3089\u304c\u53ca\u307c\u3057\u3046\u308b\u5f71\u97ff\u3001\u304a\u3088\u3073\u305d\u308c\u3089\u3092\u56de\u907f\u3059\u308b\u65b9\u6cd5\u306a\u3069\u306e\u91cd\u8981\u306a\u5074\u9762\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    "},{"location":"ja/#_10","title":"\u30c7\u30fc\u30bf\u7af6\u5408","text":"

    \u30c7\u30fc\u30bf\u7af6\u5408\u306f\u30012 \u3064\u4ee5\u4e0a\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u5371\u967a\u306a\u7d50\u679c\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u60aa\u3044\u3053\u3068\u306b\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u3001\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u7121\u610f\u5473\u306a\u30d3\u30c3\u30c8\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u542b\u3080\u5024\u304c\u4fdd\u6301\u3055\u308c\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u3055\u307e\u3056\u307e\u306a\u624b\u6cd5\u3092\u99c6\u4f7f\u3057\u3066\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u767a\u751f\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    • sync/atomic \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b
    • 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u540c\u671f\u3059\u308b\u969b\u306b\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u306e\u3088\u3046\u306a\u7279\u5b9a\u306e\u76ee\u7684\u306e\u305f\u3081\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u5229\u7528\u3059\u308b
    • \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066 2 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u901a\u4fe1\u3057\u3001\u5909\u6570\u304c\u4e00\u5ea6\u306b 1 \u3064\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3060\u3051\u306b\u3088\u3063\u3066\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b
    "},{"location":"ja/#_11","title":"\u7af6\u5408\u72b6\u614b","text":"

    \u5b9f\u884c\u3057\u305f\u3044\u64cd\u4f5c\u306b\u5fdc\u3058\u3066\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u306a\u7d50\u679c\u3092\u610f\u5473\u3059\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u3046\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3002

    \u7af6\u5408\u72b6\u614b\u306f\u3001\u52d5\u4f5c\u304c\u5236\u5fa1\u3067\u304d\u306a\u3044\u30a4\u30d9\u30f3\u30c8\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u307e\u305f\u306f\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u4f9d\u5b58\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u304c\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5b9f\u884c\u9806\u5e8f\u3067\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f5c\u696d\u3059\u308b\u5834\u5408\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u7af6\u5408\u72b6\u614b\u3068\u306f\u7570\u306a\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u306f\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u540c\u3058\u30e1\u30e2\u30ea\u4f4d\u7f6e\u306b\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u305d\u306e\u3046\u3061\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u304c\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u3068\u306f\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5fc5\u305a\u3057\u3082\u6c7a\u5b9a\u7684\u306a\u7d50\u679c\u3092\u610f\u5473\u3059\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u304f\u3066\u3082\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u5236\u5fa1\u3055\u308c\u3066\u3044\u306a\u3044\u30a4\u30d9\u30f3\u30c8\uff08\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5b9f\u884c\u3001\u30c1\u30e3\u30cd\u30eb\u3078\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u767a\u4fe1\u901f\u5ea6\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u547c\u3073\u51fa\u3057\u306e\u7d99\u7d9a\u6642\u9593\u306a\u3069\uff09\u306b\u4f9d\u5b58\u3059\u308b\u6319\u52d5\u3092\u6301\u3064\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u306f\u7af6\u5408\u72b6\u614b\u3067\u3059\u3002\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u8a08\u306b\u719f\u7df4\u3059\u308b\u306b\u306f\u3001\u4e21\u65b9\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u809d\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#59","title":"\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u30bf\u30a4\u30d7\u3054\u3068\u306e\u4e26\u884c\u51e6\u7406\u306e\u5f71\u97ff\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#59)","text":"\u8981\u7d04

    \u4e00\u5b9a\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u306f\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u30bf\u30a4\u30d7\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044\u3002CPU \u30d0\u30a6\u30f3\u30c9\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u3053\u306e\u6570\u3092 GOMAXPROCS \u5909\u6570\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u30db\u30b9\u30c8\u4e0a\u306e CPU \u30b3\u30a2\u306e\u6570\u306b\u57fa\u3065\u304f\uff09\u306b\u8fd1\u3065\u3051\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002I/O \u30d0\u30a6\u30f3\u30c9\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u4f5c\u6210\u306f\u3001\u5916\u90e8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u306e\u4ed6\u306e\u8981\u56e0\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002

    \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u306f\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u5b9f\u884c\u6642\u9593\u306f\u6b21\u306e\u3044\u305a\u308c\u304b\u306b\u3088\u3063\u3066\u5236\u9650\u3055\u308c\u307e\u3059\u3002

    • CPU \u306e\u901f\u5ea6 - \u305f\u3068\u3048\u3070\u3001\u30de\u30fc\u30b8\u30bd\u30fc\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u884c\u304c\u3053\u308c\u306b\u3042\u305f\u308a\u307e\u3059\u3002\u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f CPU \u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    • I/O \u306e\u901f\u5ea6 - \u305f\u3068\u3048\u3070\u3001REST \u547c\u3073\u51fa\u3057\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u304c\u3053\u308c\u306b\u3042\u305f\u308a\u307e\u3059\u3002\u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f I/O \u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    • \u5229\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u306e\u91cf - \u3053\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306f\u30e1\u30e2\u30ea\u30d0\u30a6\u30f3\u30c9\u3068\u547c\u3070\u308c\u307e\u3059\u3002
    \u88dc\u8db3

    \u3053\u3053\u6570\u5341\u5e74\u3067\u30e1\u30e2\u30ea\u304c\u975e\u5e38\u306b\u5b89\u4fa1\u306b\u306a\u3063\u305f\u3053\u3068\u3092\u8003\u616e\u3059\u308b\u3068\u3001 3 \u3064\u76ee\u306f\u73fe\u5728\u3067\u306f\u6700\u3082\u307e\u308c\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u6700\u521d\u306e 2 \u3064\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u30bf\u30a4\u30d7\u3001CPU \u30d0\u30a6\u30f3\u30c9\u3068 I/O \u30d0\u30a6\u30f3\u30c9\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002

    \u30ef\u30fc\u30ab\u30fc\u306b\u3088\u3063\u3066\u5b9f\u884c\u3055\u308c\u308b\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c I/O \u30d0\u30a6\u30f3\u30c9\u3067\u3042\u308b\u5834\u5408\u3001\u5024\u306f\u4e3b\u306b\u5916\u90e8\u30b7\u30b9\u30c6\u30e0\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u9006\u306b\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c CPU \u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u6700\u9069\u306a\u6570\u306f\u5229\u7528\u53ef\u80fd\u306a CPU \u30b3\u30a2\u306e\u6570\u306b\u8fd1\u304f\u306a\u308a\u307e\u3059\uff08\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306f runtime.GOMAXPROCS \u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\uff09\u3002\u4e26\u884c\u51e6\u7406\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u8a08\u3059\u308b\u5834\u5408\u3001\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u30bf\u30a4\u30d7\uff08 I/O \u3042\u308b\u3044\u306f CPU \uff09\u3092\u77e5\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#go-context-60","title":"Go Context \u306b\u5bfe\u3059\u308b\u8aa4\u89e3 (#60)","text":"\u8981\u7d04

    Go Context \u306f\u3001Go\u8a00\u8a9e\u306e\u4e26\u884c\u51e6\u7406\u306e\u57fa\u790e\u306e\u4e00\u90e8\u3067\u3082\u3042\u308a\u307e\u3059\u3002 Context \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3001\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u4fdd\u6301\u3067\u304d\u307e\u3059\u3002

    https://pkg.go.dev/context

    Context \u306f\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb\u3001\u305d\u306e\u4ed6\u306e\u5024\u3092 API \u306e\u5883\u754c\u3092\u8d8a\u3048\u3066\u4f1d\u9054\u3057\u307e\u3059\u3002

    "},{"location":"ja/#_12","title":"\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3","text":"

    \u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3068\u306f\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3067\u6c7a\u5b9a\u3055\u308c\u308b\u7279\u5b9a\u306e\u6642\u70b9\u3092\u6307\u3057\u307e\u3059\u3002

    • \u73fe\u5728\u304b\u3089\u306e time.Duration \uff08\u4f8b\uff1a250 ms\uff09
    • time.Time \uff08\u4f8b\uff1a2023-02-07 00:00:00 UTC\uff09

    \u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306e\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u306f\u3001\u3053\u308c\u3092\u904e\u304e\u305f\u5834\u5408\u306f\u9032\u884c\u4e2d\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u307e\u3059\u3002\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3068\u306f\u3001\u305f\u3068\u3048\u3070\u3001\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u53d7\u4fe1\u3092\u5f85\u6a5f\u3057\u3066\u3044\u308b I/O \u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30b4\u30eb\u30fc\u30c1\u30f3\u3067\u3059\u3002

    "},{"location":"ja/#_13","title":"\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb","text":"

    Go Context \u306e\u3082\u3046 1 \u3064\u306e\u4f7f\u7528\u4f8b\u306f\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u30b7\u30b0\u30ca\u30eb\u3092\u4f1d\u9001\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5225\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u5185\u3067 CreateFileWatcher(ctx context.Context, filename string) \u3092\u547c\u3073\u51fa\u3059\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u60f3\u50cf\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308a\u3092\u7d9a\u3051\u3066\u66f4\u65b0\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u63d0\u4f9b\u3055\u308c\u305f Context \u304c\u671f\u9650\u5207\u308c\u306b\u306a\u308b\u304b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u3068\u3001\u3053\u306e\u95a2\u6570\u306f\u305d\u308c\u3092\u51e6\u7406\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u8a18\u8ff0\u5b50\u3092\u9589\u3058\u307e\u3059\u3002

    "},{"location":"ja/#context-value","title":"Context Value","text":"

    Go Context \u306e\u6700\u5f8c\u306e\u4f7f\u7528\u4f8b\u306f\u3001\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u904b\u3076\u3053\u3068\u3067\u3059\u3002 Context \u306b\u30ad\u30fc\u3068\u5024\u306e\u30ea\u30b9\u30c8\u3092\u542b\u3081\u308b\u610f\u5473\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002Go Context \u306f\u6c4e\u7528\u7684\u3067\u3042\u308b\u305f\u3081\u3001\u4f7f\u7528\u4f8b\u306f\u7121\u9650\u306b\u3042\u308a\u307e\u3059\u3002

    \u305f\u3068\u3048\u3070\u3001\u30c8\u30ec\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u7570\u306a\u308b\u30b5\u30d6\u95a2\u6570\u306e\u9593\u3067\u540c\u3058\u76f8\u95a2 ID \u3092\u5171\u6709\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4e00\u90e8\u306e\u958b\u767a\u8005\u306f\u3001\u3053\u306e ID \u3092\u95a2\u6570\u30b7\u30b0\u30cd\u30c1\u30e3\u306e\u4e00\u90e8\u306b\u3059\u308b\u306b\u306f\u3042\u307e\u308a\u306b\u4fb5\u7565\u7684\u3060\u3068\u8003\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u70b9\u306b\u95a2\u3057\u3066\u3001\u4e0e\u3048\u3089\u308c\u305f Context \u306e\u4e00\u90e8\u3068\u3057\u3066\u305d\u308c\u3092\u542b\u3081\u308b\u3053\u3068\u3092\u6c7a\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#context","title":"Context \u306e\u30ad\u30e3\u30f3\u30bb\u30eb\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b","text":"

    context.Context \u30bf\u30a4\u30d7\u306f\u3001\u53d7\u4fe1\u5c02\u7528\u306e\u901a\u77e5\u30c1\u30e3\u30cd\u30eb <-chan struct{} \u3092\u8fd4\u3059 Done \u30e1\u30bd\u30c3\u30c9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u30c1\u30e3\u30cd\u30eb\u306f\u3001 Context \u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u4f5c\u696d\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306b\u9589\u3058\u3089\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070

    • context.WithCancel\u3067\u4f5c\u6210\u3055\u308c\u305f Context \u306b\u95a2\u9023\u3059\u308b Done \u30c1\u30e3\u30cd\u30eb\u306f\u3001cancel\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3068\u9589\u3058\u3089\u308c\u307e\u3059\u3002
    • context.WithDeadline\u3067\u4f5c\u6210\u3057\u305f Context \u306b\u95a2\u9023\u3059\u308b Done \u30c1\u30e3\u30cd\u30eb\u306f\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u3092\u904e\u304e\u308b\u3068\u9589\u3058\u3089\u308c\u307e\u3059\u3002

    \u6ce8\u610f\u3059\u3079\u304d\u70b9\u306e 1 \u3064\u306f\u3001\u5185\u90e8\u30c1\u30e3\u30cd\u30eb\u306f\u3001\u7279\u5b9a\u306e\u5024\u3092\u53d7\u3051\u53d6\u3063\u305f\u3068\u304d\u3067\u306f\u306a\u304f\u3001 Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d\u3001\u307e\u305f\u306f\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306b\u9054\u3057\u305f\u3068\u304d\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u306e\u30af\u30ed\u30fc\u30ba\u306f\u3001\u3059\u3079\u3066\u306e\u6d88\u8cbb\u8005\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u53d7\u3051\u53d6\u308b\u552f\u4e00\u306e\u30c1\u30e3\u30cd\u30eb\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3042\u308b\u305f\u3081\u3067\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001 Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u304b\u3001\u30c7\u30c3\u30c9\u30e9\u30a4\u30f3\u306b\u9054\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u6d88\u8cbb\u8005\u306b\u901a\u77e5\u304c\u5c4a\u304d\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u719f\u7df4\u3057\u305f Go \u958b\u767a\u8005\u306b\u306a\u308b\u306b\u306f\u3001 Context \u3068\u305d\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u539f\u5247\u3068\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5f85\u6a5f\u3055\u305b\u3089\u308c\u308b\u95a2\u6570\u306f Context \u3092\u53d6\u5f97\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4e0a\u6d41\u306e\u547c\u3073\u51fa\u3057\u5143\u304c\u3053\u306e\u95a2\u6570\u3092\u3044\u3064\u547c\u3073\u51fa\u3059\u304b\u3092\u6c7a\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_14","title":"\u4e26\u884c\u51e6\u7406\uff1a\u5b9f\u8df5","text":""},{"location":"ja/#context-61","title":"\u4e0d\u9069\u5207\u306a Context \u3092\u5e83\u3081\u3066\u3057\u307e\u3046 (#61)","text":"\u8981\u7d04

    Context \u3092\u4f1d\u64ad\u3059\u308b\u969b\u306b\u306f\u3001Context \u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3067\u304d\u308b\u6761\u4ef6\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u9001\u4fe1\u3055\u308c\u305f\u969b\u306b HTTP \u30cf\u30f3\u30c9\u30e9\u304c Context \u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3059\u308b\u3068\u304d\u306a\u3069\u3067\u3059\u3002

    \u591a\u304f\u306e\u72b6\u6cc1\u3067\u306f\u3001Go Context \u3092\u4f1d\u64ad\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001Context \u306e\u4f1d\u64ad\u306b\u3088\u3063\u3066\u8efd\u5fae\u306a\u30d0\u30b0\u304c\u767a\u751f\u3057\u3001\u30b5\u30d6\u95a2\u6570\u304c\u6b63\u3057\u304f\u5b9f\u884c\u3055\u308c\u306a\u304f\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

    \u6b21\u306e\u4f8b\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3044\u304f\u3064\u304b\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059 HTTP \u30cf\u30f3\u30c9\u30e9\u3092\u516c\u958b\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\u76f4\u524d\u306b\u3001\u305d\u308c\u3092 Kafka \u30c8\u30d4\u30c3\u30af\u306b\u9001\u4fe1\u3057\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059\u3002HTTP \u30b3\u30f3\u30b7\u30e5\u30fc\u30de\u306b\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u70b9\u3067\u30da\u30ca\u30eb\u30c6\u30a3\u3092\u8ab2\u3057\u305f\u304f\u306a\u3044\u306e\u3067\u3001publish \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u65b0\u3057\u3044\u30b4\u30eb\u30fc\u30c1\u30f3\u5185\u3067\u975e\u540c\u671f\u306b\u51e6\u7406\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u5834\u5408\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e publish \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4e2d\u65ad\u3067\u304d\u308b\u3088\u3046\u306b\u3001Context \u3092\u53d7\u3051\u5165\u308c\u308b publish \u95a2\u6570\u3092\u81ea\u7531\u306b\u4f7f\u3048\u308b\u3068\u3057\u307e\u3059\u3002\u53ef\u80fd\u306a\u5b9f\u88c5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002

    func handler(w http.ResponseWriter, r *http.Request) {\n    response, err := doSomeTask(r.Context(), r)\n    if err != nil {\n        http.Error(w, err.Error(), http.StatusInternalServerError)\n    return\n    }\n    go func() {\n        err := publish(r.Context(), response)\n        // err \u306e\u51e6\u7406\u3092\u3059\u308b\n    }()\n    writeResponse(response)\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306e\u4f55\u304c\u554f\u984c\u306a\u306e\u3067\u3057\u3087\u3046\u304b\u3002HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u4ed8\u3055\u308c\u305f Context \u306f\u3001\u3055\u307e\u3056\u307e\u306a\u72b6\u6cc1\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    • \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u63a5\u7d9a\u304c\u7d42\u4e86\u3057\u305f\u3068\u304d
    • HTTP/2\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d
    • \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u66f8\u304d\u623b\u3055\u308c\u305f\u3068\u304d

    \u6700\u521d\u306e 2 \u3064\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u51e6\u7406\u306f\u304a\u305d\u3089\u304f\u6b63\u3057\u304f\u884c\u308f\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001doSomeTask \u304b\u3089\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d7\u3051\u53d6\u3063\u305f\u3082\u306e\u306e\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u63a5\u7d9a\u3092\u9589\u3058\u305f\u5834\u5408\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u304c publish \u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3001Context \u304c\u65e2\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u72b6\u614b\u3067 publish \u3092\u547c\u3073\u51fa\u3057\u3066\u3082\u554f\u984c\u306f\u304a\u305d\u3089\u304f\u8d77\u304d\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u6700\u5f8c\u306e\u30b1\u30fc\u30b9\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\u3002

    \u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u66f8\u304d\u8fbc\u307e\u308c\u308b\u3068\u3001\u8981\u6c42\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u7af6\u5408\u72b6\u614b\u306b\u76f4\u9762\u3057\u307e\u3059\u3002

    • \u30ec\u30b9\u30dd\u30f3\u30b9\u304c Kafka \u306e publish \u5f8c\u306b\u66f8\u304b\u308c\u305f\u5834\u5408\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3057\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6b63\u5e38\u306b\u516c\u958b\u3057\u307e\u3059\u3002
    • \u305f\u3060\u3057\u3001Kafka \u306e publish \u524d\u307e\u305f\u306f publish \u4e2d\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u66f8\u304b\u308c\u305f\u5834\u5408\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306f publish \u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u5f8c\u8005\u306e\u5834\u5408\u3001HTTP \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u3059\u3050\u306b\u8fd4\u3059\u306e\u3067\u3001publish \u3092\u547c\u3073\u51fa\u3059\u3068\u30a8\u30e9\u30fc\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002

    \u88dc\u8db3

    Go 1.21 \u304b\u3089\u306f\u3001\u30ad\u30e3\u30f3\u30bb\u30eb\u305b\u305a\u306b\u65b0\u3057\u3044 Context \u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 context.WithoutCancel \u306f\u3001\u89aa\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u3068\u304d\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u89aa\u306e\u30b3\u30d4\u30fc\u3092\u8fd4\u3057\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001Context \u306e\u4f1d\u64ad\u306f\u614e\u91cd\u306b\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#62","title":"\u505c\u6b62\u3059\u3079\u304d\u3068\u304d\u3092\u77e5\u3089\u305a\u306b\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u958b\u59cb\u3057\u3066\u3057\u307e\u3046 (#62)","text":"\u8981\u7d04

    \u30ea\u30fc\u30af\u3092\u907f\u3051\u308b\u3053\u3068\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u958b\u59cb\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u6700\u7d42\u7684\u306b\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002

    \u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u975e\u5e38\u306b\u7c21\u5358\u3067\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u3044\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u306e\u8a08\u753b\u3092\u5fc5\u305a\u3057\u3082\u7acb\u3066\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u30ea\u30fc\u30af\u306b\u3064\u306a\u304c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308c\u3070\u3088\u3044\u304b\u308f\u304b\u3089\u306a\u3044\u306e\u306f\u3001Go\u8a00\u8a9e\u3067\u3088\u304f\u3042\u308b\u8a2d\u8a08\u4e0a\u306e\u554f\u984c\u3067\u3042\u308a\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u30df\u30b9\u3067\u3059\u3002

    \u5177\u4f53\u7684\u306a\u4f8b\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3057\u3087\u3046\u3002\u5916\u90e8\u8a2d\u5b9a\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306a\u3069\u3092\u4f7f\u7528\u3057\u305f\u3082\u306e\u306a\u3069\uff09\u3092\u76e3\u8996\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u8a08\u3057\u307e\u3059\u3002\u307e\u305a\u3001\u6b21\u306e\u3088\u3046\u306a\u5b9f\u88c5\u3092\u3057\u3066\u307f\u307e\u3059\u3002

    func main() {\n    newWatcher()\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\ntype watcher struct { /* \u3044\u304f\u3064\u304b\u306e\u30ea\u30bd\u30fc\u30b9 */ }\n\nfunc newWatcher() {\n    w := watcher{}\n    go w.watch() // \u5916\u90e8\u8a2d\u5b9a\u3092\u76e3\u8996\u3059\u308b\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u4f5c\u6210\u3059\u308b\n}\n

    \u3053\u306e\u30b3\u30fc\u30c9\u306e\u554f\u984c\u306f\u3001\u30e1\u30a4\u30f3\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u7d42\u4e86\u3059\u308b\u3068\uff08\u304a\u305d\u3089\u304f OS \u30b7\u30b0\u30ca\u30eb\u307e\u305f\u306f\u6709\u9650\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306e\u305f\u3081\uff09\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u505c\u6b62\u3057\u3066\u3057\u307e\u3046\u3053\u3068\u3067\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u306f\u6b63\u5e38\u306b\u9589\u3058\u3089\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u9632\u3050\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u304b\u3002

    1 \u3064\u306e\u65b9\u6cd5\u3068\u3057\u3066\u306f\u3001main \u304c\u623b\u3063\u305f\u3068\u304d\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b Context \u3092 newWatcher \u306b\u6e21\u3059\u3053\u3068\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002

    func main() {\n    ctx, cancel := context.WithCancel(context.Background())\n    defer cancel()\n    newWatcher(ctx)\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\nfunc newWatcher(ctx context.Context) {\n    w := watcher{}\n    go w.watch(ctx)\n}\n

    \u4f5c\u6210\u3057\u305f Context \u3092 watch \u30e1\u30bd\u30c3\u30c9\u306b\u4f1d\u64ad\u3057\u307e\u3059\u3002Context \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u3068\u3001\u30a6\u30a9\u30c3\u30c1\u30e3\u30fc\u69cb\u9020\u4f53\u306f\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u307e\u3059\u3002\u3057\u304b\u3057\u3001watch \u304c\u305d\u308c\u3092\u884c\u3046\u6642\u9593\u304c\u78ba\u5b9f\u306b\u3042\u308b\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u8a2d\u8a08\u4e0a\u306e\u6b20\u9665\u3067\u3059\u3002

    \u554f\u984c\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\u305f\u3081\u306b\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u305f\u3053\u3068\u3067\u3059\u3002\u30ea\u30bd\u30fc\u30b9\u304c\u9589\u3058\u3089\u308c\u308b\u307e\u3067\u3001\u89aa\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u30d6\u30ed\u30c3\u30af\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u305d\u3046\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002

    func main() {\n    w := newWatcher()\n    defer w.close()\n    // \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\n}\n\nfunc newWatcher() watcher {\n    w := watcher{}\n    go w.watch()\n    return w\n}\n\nfunc (w watcher) close() {\n    // \u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u308b\n}\n

    \u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u308b\u6642\u9593\u306b\u306a\u3063\u305f\u3053\u3068\u3092 watcher \u306b\u901a\u77e5\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001 defer \u3092\u4f7f\u7528\u3057\u3066\u3053\u306e\u3000close \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u7d42\u4e86\u3059\u308b\u524d\u306b\u30ea\u30bd\u30fc\u30b9\u304c\u78ba\u5b9f\u306b\u9589\u3058\u3089\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

    \u307e\u3068\u3081\u308b\u3068\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u4ed6\u306e\u30ea\u30bd\u30fc\u30b9\u3068\u540c\u69d8\u3001\u30e1\u30e2\u30ea\u3084\u4ed6\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3059\u308b\u305f\u3081\u306b\u6700\u7d42\u7684\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u3092\u77e5\u3089\u305a\u306b\u958b\u59cb\u3059\u308b\u306e\u306f\u8a2d\u8a08\u4e0a\u306e\u554f\u984c\u3067\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u958b\u59cb\u3055\u308c\u308b\u3068\u304d\u306f\u5e38\u306b\u3001\u3044\u3064\u505c\u6b62\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u660e\u78ba\u306a\u8a08\u753b\u3092\u7acb\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u5f8c\u306b\u306a\u308a\u307e\u3057\u305f\u304c\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u6709\u52b9\u671f\u9593\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b58\u7d9a\u671f\u9593\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3059\u308b\u524d\u306b\u305d\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u305f\u65b9\u304c\u304a\u305d\u3089\u304f\u78ba\u5b9f\u3067\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u9593\u9055\u3044\u306a\u304f\u89e3\u653e\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#63","title":"\u30b4\u30eb\u30fc\u30c1\u30f3\u3068\u30eb\u30fc\u30d7\u5909\u6570\u306b\u6ce8\u610f\u3057\u306a\u3044 (#63)","text":"\u6ce8\u610f

    \u3053\u306e\u30df\u30b9\u306f Go\u30001.22 \u304b\u3089\u306f\u6c17\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\uff08\u8a73\u7d30\uff09\u3002

    "},{"location":"ja/#select-64","title":"select \u3068\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u6c7a\u5b9a\u7684\u52d5\u4f5c\u3092\u671f\u5f85\u3059\u308b (#64)","text":"\u8981\u7d04

    \u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u53ef\u80fd\u306a\u5834\u5408\u3001\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067 select \u3059\u308b\u3068\u30b1\u30fc\u30b9\u304c\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u8efd\u5fae\u306a\u30d0\u30b0\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u8aa4\u3063\u305f\u4eee\u5b9a\u3092\u7acb\u3066\u308b\u3053\u3068\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002

    Go \u958b\u767a\u8005\u304c\u30c1\u30e3\u30cd\u30eb\u3092\u64cd\u4f5c\u3059\u308b\u3068\u304d\u306b\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u306e 1 \u3064\u306f\u3001select \u304c\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u8aa4\u3063\u305f\u7406\u89e3\u3092\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u5834\u5408\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff08 disconnectCh \u306f\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u30c1\u30e3\u30cd\u30eb\u3067\u3059\uff09\u3002

    go func() {\n  for i := 0; i < 10; i++ {\n      messageCh <- i\n    }\n    disconnectCh <- struct{}{}\n}()\n\nfor {\n    select {\n    case v := <-messageCh:\n        fmt.Println(v)\n    case <-disconnectCh:\n        fmt.Println(\"disconnection, return\")\n        return\n    }\n}\n

    \u3053\u306e\u4f8b\u3092\u8907\u6570\u56de\u5b9f\u884c\u3057\u305f\u5834\u5408\u3001\u7d50\u679c\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u306a\u308a\u307e\u3059\u3002

    0\n1\n2\ndisconnection, return\n\n0\ndisconnection, return\n

    \u3069\u3046\u3044\u3046\u308f\u3051\u304b 10 \u901a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6d88\u8cbb\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u3046\u3061\u306e\u6570\u901a\u3060\u3051\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001\u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3068\u4f75\u7528\u3057\u305f\u5834\u5408\u306e select \u6587\u306e\u4ed5\u69d8\u306b\u3088\u308b\u3082\u306e\u3067\u3059\uff08https:// go.dev/ref/spec\uff09\u3002

    Quote

    1 \u3064\u4ee5\u4e0a\u306e\u901a\u4fe1\u3092\u7d9a\u884c\u3067\u304d\u308b\u5834\u5408\u3001\u5747\u4e00\u306e\u64ec\u4f3c\u30e9\u30f3\u30c0\u30e0\u9078\u629e\u306b\u3088\u3063\u3066\u3001\u7d9a\u884c\u3067\u304d\u308b 1 \u3064\u306e\u901a\u4fe1\u304c\u9078\u629e\u3055\u308c\u307e\u3059\u3002

    \u6700\u521d\u306b\u4e00\u81f4\u3057\u305f\u30b1\u30fc\u30b9\u304c\u512a\u5148\u3055\u308c\u308b switch \u6587\u3068\u306f\u7570\u306a\u308a\u3001select \u6587\u306f\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u53ef\u80fd\u306a\u5834\u5408\u306b\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3057\u307e\u3059\u3002

    \u3053\u306e\u52d5\u4f5c\u306f\u6700\u521d\u306f\u5947\u5999\u306b\u601d\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u3053\u308c\u306f\u30b9\u30bf\u30d9\u30fc\u30b7\u30e7\u30f3\u3092\u9632\u3050\u3068\u3044\u3046\u7406\u7531\u304c\u3042\u3063\u3066\u306e\u3053\u3068\u3067\u3059\u3002\u6700\u521d\u306b\u9078\u629e\u3055\u308c\u305f\u901a\u4fe1\u304c\u30bd\u30fc\u30b9\u306e\u9806\u5e8f\u306b\u57fa\u3065\u3044\u3066\u3044\u308b\u3068\u3057\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u3001\u9001\u4fe1\u901f\u5ea6\u304c\u901f\u3044\u305f\u3081\u306b\u3001\u305f\u3068\u3048\u3070 1 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304b\u3089\u3057\u304b\u53d7\u4fe1\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u72b6\u6cc1\u306b\u9665\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u9632\u3050\u305f\u3081\u306b\u3001Go\u8a00\u8a9e\u306e\u8a2d\u8a08\u8005\u306f\u30e9\u30f3\u30c0\u30e0\u9078\u629e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002

    \u8907\u6570\u306e\u30c1\u30e3\u30cd\u30eb\u3067 select \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308b\u306a\u3089\u3001\u30bd\u30fc\u30b9\u9806\u5e8f\u306e\u6700\u521d\u306e\u30b1\u30fc\u30b9\u304c\u81ea\u52d5\u7684\u306b\u512a\u5148\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u3001Go\u8a00\u8a9e\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3059\u308b\u305f\u3081\u3001\u3069\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u9078\u629e\u3055\u308c\u308b\u304b\u306f\u4fdd\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u52d5\u4f5c\u3092\u514b\u670d\u3059\u308b\u306b\u306f\u3001\u5358\u4e00\u306e\u751f\u7523\u8005\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u5834\u5408\u3001\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u306e\u30c1\u30e3\u30cd\u30eb\u307e\u305f\u306f\u5358\u4e00\u306e\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#65","title":"\u901a\u77e5\u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#65)","text":"\u8981\u7d04

    chan struct{} \u578b\u3092\u4f7f\u7528\u3057\u3066\u901a\u77e5\u3092\u9001\u4fe1\u3057\u307e\u3057\u3087\u3046\u3002

    \u30c1\u30e3\u30cd\u30eb\u306f\u3001\u30b7\u30b0\u30ca\u30eb\u3092\u4ecb\u3057\u3066\u30b4\u30eb\u30fc\u30c1\u30f3\u9593\u3067\u901a\u4fe1\u3059\u308b\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002\u30b7\u30b0\u30ca\u30eb\u306b\u306f\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u95a2\u4fc2\u3042\u308a\u307e\u305b\u3093\u3002

    \u5177\u4f53\u7684\u306a\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u901a\u4fe1\u306e\u5207\u65ad\u304c\u767a\u751f\u3059\u308b\u305f\u3073\u306b\u305d\u308c\u3092\u901a\u77e5\u3059\u308b\u30c1\u30e3\u30cd\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 1 \u3064\u306e\u65b9\u6cd5\u3068\u3057\u3066\u3001\u3053\u308c\u3092 chan bool \u3068\u3057\u3066\u6271\u3046\u3053\u3068\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002

    disconnectCh := make(chan bool)\n

    \u3053\u3053\u3067\u3001\u305d\u306e\u3088\u3046\u306a\u30c1\u30e3\u30cd\u30eb\u3092\u63d0\u4f9b\u3059\u308b API \u3068\u5bfe\u8a71\u3059\u308b\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u771f\u507d\u5024\u306e\u30c1\u30e3\u30cd\u30eb\u3067\u3042\u308b\u305f\u3081\u3001true \u307e\u305f\u306f false \u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3067\u304d\u307e\u3059\u3002true \u304c\u4f55\u3092\u4f1d\u3048\u3066\u3044\u308b\u304b\u306f\u304a\u305d\u3089\u304f\u660e\u3089\u304b\u3067\u3057\u3087\u3046\u3002\u3057\u304b\u3057\u3001 false \u3068\u306f\u4f55\u3092\u610f\u5473\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u901a\u4fe1\u304c\u5207\u65ad\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u306e\u5834\u5408\u3001\u3069\u308c\u304f\u3089\u3044\u306e\u983b\u5ea6\u3067\u305d\u306e\u3088\u3046\u306a\u30b7\u30b0\u30ca\u30eb\u3092\u53d7\u4fe1\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u3042\u308b\u3044\u306f\u518d\u63a5\u7d9a\u3057\u305f\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u3002\u305d\u3082\u305d\u3082 false \u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u3079\u304d\u306a\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u304a\u305d\u3089\u304f true \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u3060\u3051\u3092\u671f\u5f85\u3059\u3079\u304d\u3067\u3057\u3087\u3046\u3002

    \u305d\u306e\u5834\u5408\u3001\u60c5\u5831\u3092\u4f1d\u3048\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5024\u306f\u5fc5\u8981\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30c7\u30fc\u30bf\u306e \u306a\u3044 \u30c1\u30e3\u30cd\u30eb\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u51e6\u7406\u3059\u308b\u6163\u7528\u7684\u306a\u65b9\u6cd5\u306f\u3001\u7a7a\u306e\u69cb\u9020\u4f53\u306e\u30c1\u30e3\u30cd\u30eb\u2015\u2015 chan struct{}\u2015\u2015\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002

    "},{"location":"ja/#nil-66","title":"nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#66)","text":"\u8981\u7d04

    nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u3001\u305f\u3068\u3048\u3070 select \u6587\u304b\u3089\u30b1\u30fc\u30b9\u3092 \u524a\u9664 \u3067\u304d\u308b\u305f\u3081\u3001\u4e26\u884c\u51e6\u7406\u3092\u884c\u3046\u969b\u306e\u9053\u5177\u306e\u4e00\u3064\u3068\u3057\u3066\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3079\u304d\u3067\u3059\u3002

    \u6b21\u306e\u30b3\u30fc\u30c9\u306b\u3088\u3063\u3066\u4f55\u304c\u884c\u308f\u308c\u308b\u3067\u3057\u3087\u3046\u304b\u3002

    var ch chan int\n<-ch\n

    ch \u306f chan int \u578b\u3067\u3059\u3002\u30c1\u30e3\u30cd\u30eb\u306e\u30bc\u30ed\u5024\u306f nil \u3067\u3042\u308b\u306e\u3067\u3001 ch \u306f nil \u3067\u3059\u3002\u30b4\u30eb\u30fc\u30c1\u30f3\u306f panic \u3092\u8d77\u3053\u3057\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u6c38\u4e45\u306b\u30d6\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002

    nil \u30c1\u30e3\u30cd\u30eb\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u3082\u539f\u7406\u306f\u540c\u3058\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306f\u6c38\u4e45\u306b\u30d6\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002

    var ch chan int\nch <- 0\n

    \u3067\u306f\u3001Go\u8a00\u8a9e\u304c nil \u30c1\u30e3\u30cd\u30eb\u3068\u306e\u9593\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u53d7\u4fe1\u3092\u8a31\u53ef\u3059\u308b\u76ee\u7684\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002\u305f\u3068\u3048\u3070\u30012 \u3064\u306e\u30c1\u30e3\u30cd\u30eb\u3092\u30de\u30fc\u30b8\u3059\u308b\u6163\u7528\u7684\u306a\u65b9\u6cd5\u3092\u5b9f\u88c5\u3059\u308b\u306e\u306b\u3001 nil \u30c1\u30e3\u30cd\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    func merge(ch1, ch2 <-chan int) <-chan int {\n    ch := make(chan int, 1)\n\n    go func() {\n        for ch1 != nil || ch2 != nil { // \u6700\u4f4e\u3067\u3082\u4e00\u3064\u306e\u30c1\u30e3\u30cd\u30eb\u304c nil \u3067\u306a\u3051\u308c\u3070\u7d9a\u884c\u3059\u308b\n            select {\n            case v, open := <-ch1:\n                if !open {\n                    ch1 = nil // \u9589\u3058\u305f\u3089 ch1 \u3092 nil \u30c1\u30e3\u30cd\u30eb\u306b\u5272\u308a\u5f53\u3066\u308b\n                    break\n                }\n                ch <- v\n            case v, open := <-ch2:\n                if !open {\n                    ch2 = nil // \u9589\u3058\u305f\u3089 ch2 \u3092 nil \u30c1\u30e3\u30cd\u30eb\u306b\u5272\u308a\u5f53\u3066\u308b\n                    break\n                }\n                ch <- v\n            }\n        }\n        close(ch)\n    }()\n\n    return ch\n}\n

    \u3053\u306e\u6d17\u7df4\u3055\u308c\u305f\u89e3\u6c7a\u7b56\u306f\u3001nil \u30c1\u30e3\u30cd\u30eb\u3092\u5229\u7528\u3057\u3066\u3001\u4f55\u3089\u304b\u306e\u65b9\u6cd5\u3067 select \u6587\u304b\u3089 1 \u3064\u306e\u30b1\u30fc\u30b9\u3092 \u524a\u9664 \u3057\u307e\u3059\u3002

    nil \u30c1\u30e3\u30cd\u30eb\u306f\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u4fbf\u5229\u3067\u3042\u308a\u3001Go \u958b\u767a\u8005\u306f\u4e26\u884c\u51e6\u7406\u3092\u6271\u3046\u969b\u306b\u4f7f\u3044\u3053\u306a\u305b\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u304f\u3079\u304d\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#67","title":"\u30c1\u30e3\u30cd\u30eb\u306e\u5bb9\u91cf\u306b\u3064\u3044\u3066\u56f0\u60d1\u3057\u3066\u3044\u308b (#67)","text":"\u8981\u7d04

    \u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u4f7f\u7528\u3059\u308b\u30c1\u30e3\u30cd\u30eb\u306e\u578b\u3092\u614e\u91cd\u306b\u6c7a\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u671f\u3092\u5f37\u529b\u306b\u4fdd\u8a3c\u3057\u3066\u304f\u308c\u308b\u306e\u306f\u30d0\u30c3\u30d5\u30a1\u306a\u3057\u30c1\u30e3\u30cd\u30eb\u306e\u307f\u3067\u3059\u3002

    \u30d0\u30c3\u30d5\u30a1\u3042\u308a\u30c1\u30e3\u30cd\u30eb\u4ee5\u5916\u306e\u30c1\u30e3\u30cd\u30eb\u306e\u5bb9\u91cf\u3092\u6307\u5b9a\u3059\u308b\u306b\u306f\u6b63\u5f53\u306a\u7406\u7531\u304c\u3042\u308b\u3079\u304d\u3067\u3059\u3002

    "},{"location":"ja/#etcd-68","title":"\u6587\u5b57\u5217\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u8d77\u3053\u308a\u5f97\u308b\u526f\u4f5c\u7528\u3092\u5fd8\u308c\u3066\u3057\u307e\u3046\uff08 etcd \u30c7\u30fc\u30bf\u7af6\u5408\u306e\u4f8b\u3068\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\uff09 (#68)","text":"\u8981\u7d04

    \u6587\u5b57\u5217\u306e\u66f8\u5f0f\u8a2d\u5b9a\u304c\u65e2\u5b58\u306e\u95a2\u6570\u304c\u547c\u3073\u51fa\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3084\u305d\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\u7af6\u5408\u306e\u53ef\u80fd\u6027\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#append-69","title":"append \u3067\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u8d77\u3053\u3057\u3066\u3057\u307e\u3046 (#69)","text":"\u8981\u7d04

    append \u306e\u547c\u3073\u51fa\u3057\u306f\u5fc5\u305a\u3057\u3082\u30c7\u30fc\u30bf\u7af6\u5408\u304c\u306a\u3044\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3086\u3048\u306b\u3001\u5171\u6709\u30b9\u30e9\u30a4\u30b9\u4e0a\u3067\u540c\u6642\u306b\u4f7f\u7528\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#70","title":"\u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u3067\u30df\u30e5\u30fc\u30c6\u30c3\u30af\u30b9\u3092\u6b63\u3057\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#70)","text":"\u8981\u7d04

    \u30b9\u30e9\u30a4\u30b9\u3068\u30de\u30c3\u30d7\u306f\u30dd\u30a4\u30f3\u30bf\u3067\u3042\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3068\u3001\u5178\u578b\u7684\u306a\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#syncwaitgroup-71","title":"sync.WaitGroup \u3092\u6b63\u3057\u304f\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#71)","text":"\u8981\u7d04

    sync.WaitGroup \u3092\u6b63\u3057\u304f\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u3092\u8d77\u52d5\u3059\u308b\u524d\u306b Add \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#synccond-72","title":"sync.Cond \u306b\u3064\u3044\u3066\u5fd8\u308c\u3066\u3057\u307e\u3046 (#72)","text":"\u8981\u7d04

    sync.Cond \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30b4\u30eb\u30fc\u30c1\u30f3\u306b\u7e70\u308a\u8fd4\u3057\u901a\u77e5\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#errgroup-73","title":"errgroup \u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#73)","text":"\u8981\u7d04

    errgroup \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b4\u30eb\u30fc\u30c1\u30f3\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u540c\u671f\u3057\u3001\u30a8\u30e9\u30fc\u3068 Context \u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#sync-74","title":"sync \u578b\u306e\u30b3\u30d4\u30fc (#74)","text":"\u8981\u7d04

    sync \u578b\u306f\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_15","title":"\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea","text":""},{"location":"ja/#75","title":"\u9593\u9055\u3063\u305f\u6642\u9593\u3092\u6307\u5b9a\u3059\u308b (#75)","text":"\u8981\u7d04

    time.Duration \u3092\u53d7\u3051\u5165\u308c\u308b\u95a2\u6570\u306b\u306f\u6ce8\u610f\u3092\u6255\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u6574\u6570\u3092\u6e21\u3059\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u6df7\u4e71\u3092\u62db\u304b\u306a\u3044\u3088\u3046\u306b time API \u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u304f\u3060\u3055\u3044\u3002

    \u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u591a\u304f\u306e\u95a2\u6570\u306f\u3001int64 \u578b\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3067\u3042\u308b time.Duration \u3092\u53d7\u3051\u5165\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u30011 \u5358\u4f4d\u306e time.Duration \u306f\u3001\u4ed6\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u4e00\u822c\u7684\u306b\u898b\u3089\u308c\u308b 1 \u30df\u30ea\u79d2\u3067\u306f\u306a\u304f\u30011 \u30ca\u30ce\u79d2\u3092\u8868\u3057\u307e\u3059\u3002\u305d\u306e\u7d50\u679c\u3001time.Duration API \u3092\u4f7f\u7528\u3059\u308b\u4ee3\u308f\u308a\u306b\u6570\u5024\u578b\u3092\u6e21\u3059\u3068\u3001\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

    \u4ed6\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u305f\u3053\u3068\u306e\u3042\u308b\u958b\u767a\u8005\u306e\u65b9\u306f\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306b\u3088\u3063\u3066 1 \u79d2\u5468\u671f\u306e\u65b0\u3057\u3044 time.Ticker \u304c\u751f\u6210\u3055\u308c\u308b\u3068\u8003\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

    ticker := time.NewTicker(1000)\nfor {\n    select {\n    case <-ticker.C:\n        // \u51e6\u7406\u3092\u3059\u308b\n    }\n}\n

    \u3057\u304b\u3057\u306a\u304c\u3089\u30011,000 time.Duration = 1,000 \u30ca\u30ce\u79d2\u3067\u3042\u308b\u305f\u3081\u3001\u60f3\u5b9a\u3055\u308c\u3066\u3044\u308b 1\u79d2 \u3067\u306f\u306a\u304f\u30011,000 \u30ca\u30ce\u79d2 = 1 \u30de\u30a4\u30af\u30ed\u79d2\u306e\u5468\u671f\u306b\u306a\u308a\u307e\u3059\u3002

    \u6df7\u4e71\u3084\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u62db\u304b\u306a\u3044\u3088\u3046\u3001\u3044\u3064\u3082 time.Duration API \u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002

    ticker = time.NewTicker(time.Microsecond)\n// \u3082\u3057\u304f\u306f\nticker = time.NewTicker(1000 * time.Nanosecond)\n

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#timeafter-76","title":"time.After \u3068\u30e1\u30e2\u30ea\u30ea\u30fc\u30af (#76)","text":"\u8981\u7d04

    \u7e70\u308a\u8fd4\u3055\u308c\u308b\u95a2\u6570\uff08\u30eb\u30fc\u30d7\u3084 HTTP \u30cf\u30f3\u30c9\u30e9\u306a\u3069\uff09\u3067 time.After \u306e\u547c\u3073\u51fa\u3057\u3092\u56de\u907f\u3059\u308b\u3068\u3001\u30d4\u30fc\u30af\u6642\u306e\u30e1\u30e2\u30ea\u6d88\u8cbb\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002time.After \u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u306f\u3001 timer \u304c\u7d42\u4e86\u3057\u305f\u3068\u304d\u306b\u306e\u307f\u89e3\u653e\u3055\u308c\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#json-77","title":"JSON \u51e6\u7406\u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044 (#77)","text":"
    • \u578b\u306e\u57cb\u3081\u8fbc\u307f\u306b\u3088\u308b\u4e88\u60f3\u5916\u306e\u52d5\u4f5c

    Go \u69cb\u9020\u4f53\u3067\u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u306a\u305c\u306a\u3089 json.Marshaler \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3059\u308b time.Time \u57cb\u3081\u8fbc\u307f\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u3088\u3046\u306a\u3084\u3063\u304b\u3044\u306a\u30d0\u30b0\u304c\u767a\u751f\u3057\u3066\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u52d5\u4f5c\u304c\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • JSON \u3068 monotonic clock

    2 \u3064\u306e time.Time \u69cb\u9020\u4f53\u3092\u6bd4\u8f03\u3059\u308b\u5834\u5408\u3001time.Time \u306b\u306f wall clock \u3068 monotonic clock \u306e\u4e21\u65b9\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001== \u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u305f\u6bd4\u8f03\u306f\u4e21\u65b9\u306e clock \u306b\u5bfe\u3057\u3066\u884c\u308f\u308c\u308b\u3053\u3068\u3092\u601d\u3044\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • any \u306e\u30de\u30c3\u30d7

    JSON \u30c7\u30fc\u30bf\u306e\u30a2\u30f3\u30de\u30fc\u30b7\u30e3\u30ea\u30f3\u30b0\u4e2d\u306b\u30de\u30c3\u30d7\u3092\u63d0\u4f9b\u3059\u308b\u3068\u304d\u306b\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u6570\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 float64 \u306b\u5909\u63db\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#sql-78","title":"SQL \u3067\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044 (#78)","text":"
    • sql.Open \u304c\u5fc5\u305a\u3057\u3082\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3059\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u5fd8\u308c\u3066\u3044\u308b

    \u8a2d\u5b9a\u3092\u8a66\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001 Ping \u307e\u305f\u306f PingContext \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30d7\u30fc\u30ea\u30f3\u30b0\u306e\u3053\u3068\u3092\u5fd8\u308c\u308b

    \u5b9f\u904b\u7528\u6c34\u6e96\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a\u3057\u307e\u3057\u3087\u3046\u3002

    • \u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044

    SQL \u306e\u30d7\u30ea\u30da\u30a2\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30af\u30a8\u30ea\u304c\u3088\u308a\u52b9\u7387\u7684\u304b\u3064\u78ba\u5b9f\u306b\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • null \u5024\u3092\u8aa4\u3063\u305f\u65b9\u6cd5\u3067\u51e6\u7406\u3057\u3066\u3044\u308b

    \u30c6\u30fc\u30d6\u30eb\u5185\u306e null \u304c\u8a31\u5bb9\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u307e\u305f\u306f sql.NullXXX \u578b\u3092\u4f7f\u7528\u3057\u3066\u51e6\u7406\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u884c\u306e\u53cd\u5fa9\u51e6\u7406\u306b\u3088\u308b\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3057\u306a\u3044

    \u884c\u306e\u53cd\u5fa9\u51e6\u7406\u306e\u5f8c\u306b sql.Rows \u306e Err \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u3001\u6b21\u306e\u884c\u306e\u6e96\u5099\u4e2d\u306b\u30a8\u30e9\u30fc\u3092\u898b\u9003\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-bodysqlrows-osfile-79","title":"\u4e00\u6642\u7684\u306a\u30ea\u30bd\u30fc\u30b9\uff08 HTTP body\u3001sql.Rows\u3001\u304a\u3088\u3073 os.File \uff09\u3092\u9589\u3058\u3066\u3044\u306a\u3044 (#79)","text":"\u8981\u7d04

    \u30ea\u30fc\u30af\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001 io.Closer \u3092\u5b9f\u88c5\u3057\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u69cb\u9020\u4f53\u3092\u6700\u5f8c\u306b\u306f\u9589\u3058\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-return-80","title":"HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5fdc\u7b54\u3057\u305f\u5f8c\u306e return \u6587\u3092\u5fd8\u308c\u3066\u3057\u307e\u3046 (#80)","text":"\u8981\u7d04

    HTTP \u30cf\u30f3\u30c9\u30e9\u306e\u5b9f\u88c5\u3067\u306e\u4e88\u60f3\u5916\u306e\u52d5\u4f5c\u3092\u907f\u3051\u308b\u305f\u3081\u3001http.Error \u306e\u5f8c\u306b\u30cf\u30f3\u30c9\u30e9\u3092\u505c\u6b62\u3057\u305f\u3044\u5834\u5408\u306f\u3001return \u6587\u3092\u5fd8\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#http-81","title":"\u6a19\u6e96\u306e HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b (#81)","text":"\u8981\u7d04

    \u5b9f\u904b\u7528\u6c34\u6e96\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6c42\u3081\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6a19\u6e96\u306e HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u306e\u5b9f\u88c5\u3092\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306e\u5b9f\u88c5\u306b\u306f\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3084\u7a3c\u50cd\u74b0\u5883\u3067\u5fc5\u9808\u3067\u3042\u308b\u3079\u304d\u52d5\u4f5c\u304c\u6b20\u843d\u3057\u3066\u3044\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#_16","title":"\u30c6\u30b9\u30c8","text":""},{"location":"ja/#82","title":"\u30c6\u30b9\u30c8\u3092\u5206\u985e\u3057\u3066\u3044\u306a\u3044\uff08\u30d3\u30eb\u30c9\u30bf\u30b0\u3001\u74b0\u5883\u5909\u6570\u3001\u30b7\u30e7\u30fc\u30c8\u30e2\u30fc\u30c9\uff09 (#82)","text":"\u8981\u7d04

    \u30d3\u30eb\u30c9\u30d5\u30e9\u30b0\u3001\u74b0\u5883\u5909\u6570\u3001\u307e\u305f\u306f\u30b7\u30e7\u30fc\u30c8\u30e2\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u3092\u5206\u985e\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u3088\u308a\u52b9\u7387\u7684\u306b\u306a\u308a\u307e\u3059\u3002\u30d3\u30eb\u30c9\u30d5\u30e9\u30b0\u307e\u305f\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u30ab\u30c6\u30b4\u30ea\uff08\u305f\u3068\u3048\u3070\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3068\u7d71\u5408\u30c6\u30b9\u30c8\uff09\u3092\u4f5c\u6210\u3057\u3001\u77ed\u671f\u9593\u306e\u30c6\u30b9\u30c8\u3068\u9577\u6642\u9593\u306e\u30c6\u30b9\u30c8\u3092\u533a\u5225\u3059\u308b\u3053\u3068\u3067\u3001\u5b9f\u884c\u3059\u308b\u30c6\u30b9\u30c8\u306e\u7a2e\u985e\u3092\u6c7a\u5b9a\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#-race-83","title":"-race \u30d5\u30e9\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u306a\u3044 (#83)","text":"\u8981\u7d04

    \u4e26\u884c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001 -race \u30d5\u30e9\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d0\u30b0\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u6f5c\u5728\u7684\u306a\u30c7\u30fc\u30bf\u7af6\u5408\u3092\u767a\u898b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

    "},{"location":"ja/#-parallel-shuffle-84","title":"\u30c6\u30b9\u30c8\u5b9f\u884c\u30e2\u30fc\u30c9\uff08 -parallel \u304a\u3088\u3073 -shuffle \uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#84)","text":"\u8981\u7d04

    -parallel \u30d5\u30e9\u30b0\u3092\u4f7f\u7528\u3059\u308b\u306e\u306f\u3001\u7279\u306b\u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u308b\u30c6\u30b9\u30c8\u3092\u9ad8\u901f\u5316\u3059\u308b\u306e\u306b\u52b9\u679c\u7684\u3067\u3059\u3002 -shuffle \u30d5\u30e9\u30b0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u304c\u30d0\u30b0\u3092\u96a0\u3059\u53ef\u80fd\u6027\u306e\u3042\u308b\u9593\u9055\u3063\u305f\u4eee\u5b9a\u306b\u4f9d\u5b58\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#85","title":"\u30c6\u30fc\u30d6\u30eb\u99c6\u52d5\u30c6\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u306a\u3044 (#85)","text":"\u8981\u7d04

    \u30c6\u30fc\u30d6\u30eb\u99c6\u52d5\u30c6\u30b9\u30c8\u306f\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u9632\u304e\u3001\u5c06\u6765\u306e\u66f4\u65b0\u306e\u51e6\u7406\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u4e00\u9023\u306e\u985e\u4f3c\u3057\u305f\u30c6\u30b9\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#86","title":"\u5358\u4f53\u30c6\u30b9\u30c8\u3067\u306e\u30b9\u30ea\u30fc\u30d7 (#86)","text":"\u8981\u7d04

    \u30c6\u30b9\u30c8\u306e\u4e0d\u5b89\u5b9a\u3055\u3092\u306a\u304f\u3057\u3001\u3088\u308a\u5805\u7262\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u540c\u671f\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30ea\u30fc\u30d7\u3092\u56de\u907f\u3057\u307e\u3057\u3087\u3046\u3002\u540c\u671f\u304c\u4e0d\u53ef\u80fd\u306a\u5834\u5408\u306f\u3001\u30ea\u30c8\u30e9\u30a4\u624b\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#time-api-87","title":"time API \u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3067\u304d\u3066\u3044\u306a\u3044 (#87)","text":"\u8981\u7d04

    time API \u3092\u4f7f\u7528\u3057\u3066\u95a2\u6570\u3092\u51e6\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u30c6\u30b9\u30c8\u306e\u4e0d\u5b89\u5b9a\u3055\u3092\u8efd\u6e1b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u96a0\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u306e\u4e00\u90e8\u3068\u3057\u3066 time \u3092\u51e6\u7406\u3057\u305f\u308a\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b time \u3092\u63d0\u4f9b\u3059\u308b\u3088\u3046\u306b\u8981\u6c42\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u6a19\u6e96\u7684\u306a\u624b\u6bb5\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#httptest-iotest-88","title":"\u30c6\u30b9\u30c8\u306b\u95a2\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30d1\u30c3\u30b1\u30fc\u30b8\uff08 httptest \u304a\u3088\u3073 iotest \uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044 (#88)","text":"
    • httptest \u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001HTTP \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6271\u3046\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u306e\u4e21\u65b9\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306e\u4e00\u9023\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • iotest \u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001io.Reader \u3092\u4f5c\u6210\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a8\u30e9\u30fc\u8010\u6027\u3092\u30c6\u30b9\u30c8\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#89","title":"\u4e0d\u6b63\u78ba\u306a\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u4f5c\u6210 (#89)","text":"\u8981\u7d04

    \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306b\u3064\u3044\u3066

    • \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7cbe\u5ea6\u3092\u7dad\u6301\u3059\u308b\u306b\u306f\u3001time \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002
    • \u30d9\u30f3\u30c1\u30bf\u30a4\u30e0\u3092\u5897\u3084\u3059\u304b\u3001benchstat \u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u6271\u3044\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002
    • \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u7d42\u7684\u306b\u5b9f\u884c\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u304c\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3068\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u30de\u30a4\u30af\u30ed\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7d50\u679c\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u306b\u3088\u3063\u3066\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u306e\u7d50\u679c\u304c\u8aa4\u9b54\u5316\u3055\u308c\u306a\u3044\u3088\u3046\u3001\u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u95a2\u6570\u304c\u526f\u4f5c\u7528\u3092\u5f15\u304d\u8d77\u3053\u3059\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30aa\u30d6\u30b6\u30fc\u30d0\u30fc\u52b9\u679c\u3092\u9632\u3050\u306b\u306f\u3001CPU \u306b\u4f9d\u5b58\u3059\u308b\u95a2\u6570\u304c\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u3092\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u304c\u518d\u751f\u6210\u3059\u308b\u3088\u3046\u5f37\u5236\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#go-90","title":"Go\u8a00\u8a9e\u306e\u30c6\u30b9\u30c8\u6a5f\u80fd\u3092\u3059\u3079\u3066\u8a66\u3057\u3066\u3044\u306a\u3044 (#90)","text":"
    • \u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8

    \u30b3\u30fc\u30c9\u306e\u3069\u306e\u90e8\u5206\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u304b\u3092\u3059\u3050\u306b\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001-coverprofile \u30d5\u30e9\u30b0\u3092\u6307\u5b9a\u3057\u3066\u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002

    • \u5225\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u306e\u30c6\u30b9\u30c8

    \u5185\u90e8\u3067\u306f\u306a\u304f\u516c\u958b\u3055\u308c\u305f\u52d5\u4f5c\u306b\u7126\u70b9\u3092\u5f53\u3066\u305f\u30c6\u30b9\u30c8\u306e\u4f5c\u6210\u3092\u5f37\u5236\u3059\u308b\u305f\u3081\u306b\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u306f\u5225\u3005\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u914d\u7f6e\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u95a2\u6570

    \u5f93\u6765\u306e if err != nil \u306e\u4ee3\u308f\u308a\u306b *testing.T \u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u304c\u77ed\u304f\u3001\u8aad\u307f\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • setup \u3068 teardown

    setup \u304a\u3088\u3073 teardown \u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u306e\u5834\u5408\u306a\u3069\u3001\u8907\u96d1\u306a\u74b0\u5883\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#community-mistake","title":"\u30d5\u30a1\u30b8\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044\uff08community mistake\uff09","text":"\u8981\u7d04

    \u30d5\u30a1\u30b8\u30f3\u30b0\u306f\u3001\u8907\u96d1\u306a\u95a2\u6570\u3084\u30e1\u30bd\u30c3\u30c9\u3078\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u3001\u4e88\u60f3\u5916\u306e\u3001\u307e\u305f\u306f\u4e0d\u6b63\u306a\u5165\u529b\u3092\u691c\u51fa\u3057\u3001\u8106\u5f31\u6027\u3001\u30d0\u30b0\u3001\u3055\u3089\u306b\u306f\u6f5c\u5728\u7684\u306a\u30af\u30e9\u30c3\u30b7\u30e5\u3092\u767a\u898b\u3059\u308b\u306e\u306b\u52b9\u7387\u7684\u3067\u3059\u3002

    @jeromedoucet \u3055\u3093\u306e\u3054\u5354\u529b\u306b\u611f\u8b1d\u3044\u305f\u3057\u307e\u3059\u3002

    "},{"location":"ja/#_17","title":"\u6700\u9069\u5316","text":""},{"location":"ja/#cpu-91","title":"CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#91)","text":"
    • CPU \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3

    L1 \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u30e1\u30a4\u30f3\u30e1\u30e2\u30ea\u3088\u308a\u3082\u7d04 50 \uff5e 100 \u500d\u9ad8\u901f\u3067\u3042\u308b\u305f\u3081\u3001CPU \u30d0\u30a6\u30f3\u30c9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u306b\u306f\u3001CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002

    • \u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3

    \u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u306e\u6982\u5ff5\u3092\u610f\u8b58\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u96c6\u7d04\u578b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u91cd\u8981\u3067\u3059\u3002CPU \u306f\u30e1\u30e2\u30ea\u3092\u30ef\u30fc\u30c9\u3054\u3068\u306b\u30d5\u30a7\u30c3\u30c1\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u901a\u5e38\u306f\u30e1\u30e2\u30ea\u30d6\u30ed\u30c3\u30af\u3092 64 \u30d0\u30a4\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\u500b\u3005\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3059\u308b\u306b\u306f\u3001\u7a7a\u9593\u7684\u5c40\u6240\u6027\u3092\u5f37\u5236\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u69cb\u9020\u4f53\u306e\u30b9\u30e9\u30a4\u30b9\u3068\u30b9\u30e9\u30a4\u30b9\u306e\u69cb\u9020\u4f53

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u4e88\u6e2c\u53ef\u80fd\u6027

    CPU \u306b\u3068\u3063\u3066\u4e88\u6e2c\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u306b\u3059\u308b\u3053\u3068\u306f\u3001\u7279\u5b9a\u306e\u95a2\u6570\u3092\u6700\u9069\u5316\u3059\u308b\u52b9\u7387\u7684\u306a\u65b9\u6cd5\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30e6\u30cb\u30c3\u30c8\u307e\u305f\u306f\u5b9a\u6570\u30b9\u30c8\u30e9\u30a4\u30c9\u306f CPU \u306b\u3068\u3063\u3066\u4e88\u6e2c\u53ef\u80fd\u3067\u3059\u304c\u3001\u975e\u30e6\u30cb\u30c3\u30c8\u30b9\u30c8\u30e9\u30a4\u30c9\uff08\u9023\u7d50\u30ea\u30b9\u30c8\u306a\u3069\uff09\u306f\u4e88\u6e2c\u3067\u304d\u307e\u305b\u3093\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    • \u30ad\u30e3\u30c3\u30b7\u30e5\u914d\u7f6e\u30dd\u30ea\u30b7\u30fc

    \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3053\u3068\u3067\u3001\u91cd\u5927\u306a\u30b9\u30c8\u30e9\u30a4\u30c9\u3092\u56de\u907f\u3057\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u3054\u304f\u4e00\u90e8\u306e\u307f\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    "},{"location":"ja/#92","title":"\u8aa4\u3063\u305f\u5171\u6709\u3092\u5f15\u304d\u8d77\u3053\u3059\u4e26\u884c\u51e6\u7406(#92)","text":"\u8981\u7d04

    \u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e CPU \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u3059\u3079\u3066\u306e\u30b3\u30a2\u3067\u5171\u6709\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u77e5\u3063\u3066\u304a\u304f\u3068\u3001\u4e26\u884c\u51e6\u7406\u306b\u304a\u3051\u308b\u306e\u8aa4\u3063\u305f\u5171\u6709\u306a\u3069\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u4f4e\u4e0b\u3055\u305b\u3066\u3057\u307e\u3046\u3053\u3068\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002\u30e1\u30e2\u30ea\u306e\u5171\u6709\u306f\u3042\u308a\u3048\u306a\u3044\u306e\u3067\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#93","title":"\u547d\u4ee4\u30ec\u30d9\u30eb\u306e\u4e26\u5217\u6027\u3092\u8003\u616e\u3057\u306a\u3044 (#93)","text":"\u8981\u7d04

    \u547d\u4ee4\u30ec\u30d9\u30eb\u306e\u4e26\u5217\u6027\uff08ILP\uff09\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u306e\u7279\u5b9a\u306e\u90e8\u5206\u3092\u6700\u9069\u5316\u3057\u3001CPU \u304c\u3067\u304d\u308b\u3060\u3051\u591a\u304f\u306e\u547d\u4ee4\u3092\u4e26\u5217\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002\u4e3b\u306a\u624b\u9806\u306e 1 \u3064\u306b\u30c7\u30fc\u30bf\u30cf\u30b6\u30fc\u30c9\u306e\u7279\u5b9a\u304c\u3042\u308a\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#94","title":"\u30c7\u30fc\u30bf\u306e\u914d\u7f6e\u3092\u610f\u8b58\u3057\u3066\u3044\u306a\u3044 (#94)","text":"\u8981\u7d04

    Go\u8a00\u8a9e\u3067\u306f\u3001\u57fa\u672c\u578b\u306f\u5404\u3005\u306e\u30b5\u30a4\u30ba\u306b\u5408\u308f\u305b\u3066\u914d\u7f6e\u3055\u308c\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u304f\u3053\u3068\u3067\u3001\u3042\u308a\u304c\u3061\u306a\u9593\u9055\u3044\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u69cb\u9020\u4f53\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30b5\u30a4\u30ba\u3067\u964d\u9806\u306b\u518d\u7de8\u6210\u3059\u308b\u3068\u3001\u69cb\u9020\u4f53\u304c\u3088\u308a\u30b3\u30f3\u30d1\u30af\u30c8\u306b\u306a\u308b\uff08\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u304c\u5c11\u306a\u304f\u306a\u308a\u3001\u7a7a\u9593\u7684\u5c40\u6240\u6027\u304c\u5411\u4e0a\u3059\u308b\uff09\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#95","title":"\u30d2\u30fc\u30d7\u3068\u30b9\u30bf\u30c3\u30af\u306e\u9055\u3044\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#95)","text":"\u8981\u7d04

    \u30d2\u30fc\u30d7\u3068\u30b9\u30bf\u30c3\u30af\u306e\u57fa\u672c\u7684\u306a\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u3001Go \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u969b\u306b\u306f\u5927\u5207\u3067\u3059\u3002\u30b9\u30bf\u30c3\u30af\u5272\u308a\u5f53\u3066\u306f\u5bb9\u6613\u306a\u306e\u306b\u5bfe\u3057\u3066\u3001\u30d2\u30fc\u30d7\u5272\u308a\u5f53\u3066\u306f\u9045\u304f\u3001\u30e1\u30e2\u30ea\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u306b GC \u3092\u5229\u7528\u3057\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#api-syncpool-96","title":"\u5272\u308a\u5f53\u3066\u3092\u6e1b\u3089\u3059\u65b9\u6cd5\u304c\u308f\u304b\u3063\u3066\u3044\u306a\u3044\uff08 API \u306e\u5909\u66f4\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u3001\u304a\u3088\u3073 sync.Pool\uff09 (#96)","text":"\u8981\u7d04

    \u5272\u308a\u5f53\u3066\u3092\u6e1b\u3089\u3059\u3053\u3068\u3082\u3001Go \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6700\u9069\u5316\u3059\u308b\u4e0a\u3067\u91cd\u8981\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u5171\u6709\u3092\u9632\u3050\u305f\u3081\u306b API \u3092\u614e\u91cd\u306b\u8a2d\u8a08\u3059\u308b\u3001\u4e00\u822c\u7684\u306a Go \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u6700\u9069\u5316\u3092\u7406\u89e3\u3059\u308b\u3001sync.Pool \u3092\u4f7f\u7528\u3059\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

    \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9

    "},{"location":"ja/#97","title":"\u30a4\u30f3\u30e9\u30a4\u30f3\u5c55\u958b\u3092\u3057\u3066\u3044\u306a\u3044 (#97)","text":"\u8981\u7d04

    \u30d5\u30a1\u30b9\u30c8\u30d1\u30b9\u306e\u30a4\u30f3\u30e9\u30a4\u30f3\u5316\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3001\u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\u306b\u304b\u304b\u308b\u511f\u5374\u6642\u9593\u3092\u52b9\u7387\u7684\u306b\u524a\u6e1b\u3057\u307e\u3057\u3087\u3046\u3002

    "},{"location":"ja/#go-98","title":"Go\u8a00\u8a9e\u306e\u8a3a\u65ad\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u306a\u3044 (#98)","text":"\u8981\u7d04

    \u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u3068\u5b9f\u884c\u30c8\u30ec\u30fc\u30b5\u3092\u5229\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6700\u9069\u5316\u3059\u3079\u304d\u90e8\u5206\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002

    \u30bb\u30af\u30b7\u30e7\u30f3\u5168\u6587\u306f\u3053\u3061\u3089\u3002

    "},{"location":"ja/#gc-99","title":"GC \u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#99)","text":"\u8981\u7d04

    GC \u306e\u8abf\u6574\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3068\u3001\u7a81\u7136\u306e\u8ca0\u8377\u306e\u5897\u52a0\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u51e6\u7406\u3067\u304d\u308b\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u6069\u6075\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

    "},{"location":"ja/#docker-kubernetes-go-100","title":"Docker \u3068 Kubernetes \u4e0a\u3067Go\u8a00\u8a9e\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306e\u5f71\u97ff\u3092\u7406\u89e3\u3057\u3066\u3044\u306a\u3044 (#100)","text":"\u8981\u7d04

    Docker \u3068 Kubernetes \u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u969b\u306e CPU \u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001Go\u8a00\u8a9e\u304c CFS \u5bfe\u5fdc\u3067\u306f\u306a\u3044\u3053\u3068\u306b\u7559\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    "},{"location":"jobs/","title":"Go Jobs","text":"

    Is your company hiring? Sponsor this repository and let a significant audience of Go developers know about your opportunities in this section (book sales: +8k, website traffic: +2000 views and +400 unique visitors per week).

    "},{"location":"zh/","title":"100\u4e2aGo\u5e38\u89c1\u9519\u8bef\u53ca\u5982\u4f55\u907f\u514d","text":""},{"location":"zh/#_1","title":"\u4ee3\u7801\u53ca\u5de5\u7a0b\u7ec4\u7ec7","text":""},{"location":"zh/#1","title":"\u610f\u5916\u7684\u53d8\u91cf\u9690\u85cf (#1)","text":"

    \u907f\u514d\u53d8\u91cf\u9690\u85cf\uff08\u5916\u90e8\u4f5c\u7528\u57df\u53d8\u91cf\u88ab\u5185\u90e8\u4f5c\u7528\u57df\u540c\u540d\u53d8\u91cf\u9690\u85cf\uff09\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u53d8\u91cf\u5f15\u7528\u9519\u8bef\uff0c\u6709\u52a9\u4e8e\u4ed6\u4eba\u9605\u8bfb\u7406\u89e3\u3002

    "},{"location":"zh/#2","title":"\u4e0d\u5fc5\u8981\u7684\u4ee3\u7801\u5d4c\u5957 (#2)","text":"

    \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u3001\u8fc7\u591a\u7684\u5d4c\u5957\u5c42\u6b21\uff0c\u5e76\u4e14\u8ba9\u6b63\u5e38\u4ee3\u7801\u8def\u5f84\u5c3d\u91cf\u5de6\u5bf9\u9f50\uff08\u800c\u4e0d\u662f\u653e\u5728\u5206\u652f\u8def\u5f84\u4e2d\uff09\uff0c\u6709\u52a9\u4e8e\u6784\u5efa\u53ef\u8bfb\u6027\u66f4\u597d\u7684\u4ee3\u7801\u3002

    "},{"location":"zh/#init-3","title":"\u8bef\u7528init\u51fd\u6570 (#3)","text":"

    \u521d\u59cb\u5316\u53d8\u91cf\u65f6\uff0c\u8bf7\u8bb0\u4f4f init \u51fd\u6570\u5177\u6709\u6709\u9650\u7684\u9519\u8bef\u5904\u7406\u80fd\u529b\uff0c\u5e76\u4e14\u4f1a\u4f7f\u72b6\u6001\u5904\u7406\u548c\u6d4b\u8bd5\u53d8\u5f97\u66f4\u52a0\u590d\u6742\u3002\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u521d\u59cb\u5316\u5e94\u8be5\u4f5c\u4e3a\u7279\u5b9a\u51fd\u6570\u6765\u5904\u7406\u3002

    "},{"location":"zh/#getterssetters-4","title":"\u6ee5\u7528getters/setters (#4)","text":"

    \u5728Go\u8bed\u8a00\u4e2d\uff0c\u5f3a\u5236\u4f7f\u7528getter\u548csetter\u65b9\u6cd5\u5e76\u4e0d\u7b26\u5408Go\u60ef\u4f8b\u3002\u5728\u5b9e\u8df5\u4e2d\uff0c\u5e94\u8be5\u627e\u5230\u6548\u7387\u548c\u76f2\u76ee\u9075\u5faa\u67d0\u4e9b\u60ef\u7528\u6cd5\u4e4b\u95f4\u7684\u5e73\u8861\u70b9\u3002

    "},{"location":"zh/#5","title":"\u63a5\u53e3\u6c61\u67d3 (#5)","text":"

    \u62bd\u8c61\u5e94\u8be5\u88ab\u53d1\u73b0\uff0c\u800c\u4e0d\u662f\u88ab\u521b\u9020\u3002\u4e3a\u4e86\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u590d\u6742\u6027\uff0c\u9700\u8981\u65f6\u624d\u521b\u5efa\u63a5\u53e3\uff0c\u800c\u4e0d\u662f\u9884\u89c1\u5230\u9700\u8981\u5b83\uff0c\u6216\u8005\u81f3\u5c11\u53ef\u4ee5\u8bc1\u660e\u8fd9\u79cd\u62bd\u8c61\u662f\u6709\u4ef7\u503c\u7684\u3002

    "},{"location":"zh/#6","title":"\u5c06\u63a5\u53e3\u5b9a\u4e49\u5728\u5b9e\u73b0\u65b9\u4e00\u4fa7 (#6)","text":"

    \u5c06\u63a5\u53e3\u4fdd\u7559\u5728\u5f15\u7528\u65b9\u4e00\u4fa7\uff08\u800c\u4e0d\u662f\u5b9e\u73b0\u65b9\u4e00\u4fa7\uff09\u53ef\u4ee5\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u62bd\u8c61\u3002

    "},{"location":"zh/#7","title":"\u5c06\u63a5\u53e3\u4f5c\u4e3a\u8fd4\u56de\u503c (#7)","text":"

    \u4e3a\u4e86\u907f\u514d\u5728\u7075\u6d3b\u6027\u65b9\u9762\u53d7\u5230\u9650\u5236\uff0c\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u51fd\u6570\u4e0d\u5e94\u8be5\u8fd4\u56de\u63a5\u53e3\uff0c\u800c\u5e94\u8be5\u8fd4\u56de\u5177\u4f53\u7684\u5b9e\u73b0\u3002\u76f8\u53cd\uff0c\u51fd\u6570\u5e94\u8be5\u5c3d\u53ef\u80fd\u5730\u4f7f\u7528\u63a5\u53e3\u4f5c\u4e3a\u53c2\u6570\u3002

    "},{"location":"zh/#any-8","title":"any \u6ca1\u4f20\u9012\u4efb\u4f55\u4fe1\u606f (#8)","text":"

    \u53ea\u6709\u5728\u9700\u8981\u63a5\u53d7\u6216\u8fd4\u56de\u4efb\u610f\u7c7b\u578b\u65f6\uff0c\u624d\u4f7f\u7528 any\uff0c\u4f8b\u5982 json.Marshal\u3002\u5176\u4ed6\u60c5\u51b5\u4e0b\uff0c\u56e0\u4e3a any \u4e0d\u63d0\u4f9b\u6709\u610f\u4e49\u7684\u4fe1\u606f\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u7f16\u8bd1\u65f6\u95ee\u9898\uff0c\u5982\u5141\u8bb8\u8c03\u7528\u8005\u8c03\u7528\u65b9\u6cd5\u5904\u7406\u4efb\u610f\u7c7b\u578b\u6570\u636e\u3002

    "},{"location":"zh/#9","title":"\u56f0\u60d1\u4f55\u65f6\u8be5\u7528\u8303\u578b (#9)","text":"

    \u4f7f\u7528\u6cdb\u578b\uff0c\u53ef\u4ee5\u901a\u8fc7\u7c7b\u578b\u53c2\u6570\u5206\u79bb\u5177\u4f53\u7684\u6570\u636e\u7c7b\u578b\u548c\u884c\u4e3a\uff0c\u907f\u514d\u5199\u5f88\u591a\u91cd\u590d\u5ea6\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u7136\u800c\uff0c\u4e0d\u8981\u8fc7\u65e9\u5730\u4f7f\u7528\u6cdb\u578b\u3001\u7c7b\u578b\u53c2\u6570\uff0c\u53ea\u6709\u5728\u4f60\u770b\u5230\u771f\u6b63\u9700\u8981\u65f6\u624d\u4f7f\u7528\u3002\u5426\u5219\uff0c\u5b83\u4eec\u4f1a\u5f15\u5165\u4e0d\u5fc5\u8981\u7684\u62bd\u8c61\u548c\u590d\u6742\u6027\u3002

    "},{"location":"zh/#10","title":"\u672a\u610f\u8bc6\u5230\u7c7b\u578b\u5d4c\u5957\u7684\u53ef\u80fd\u95ee\u9898 (#10)","text":"

    \u4f7f\u7528\u7c7b\u578b\u5d4c\u5957\u4e5f\u53ef\u4ee5\u907f\u514d\u5199\u4e00\u4e9b\u91cd\u590d\u4ee3\u7801\uff0c\u7136\u800c\uff0c\u5728\u4f7f\u7528\u65f6\u9700\u8981\u786e\u4fdd\u4e0d\u4f1a\u5bfc\u81f4\u4e0d\u5408\u7406\u7684\u53ef\u89c1\u6027\u95ee\u9898\uff0c\u6bd4\u5982\u6709\u4e9b\u5b57\u6bb5\u5e94\u8be5\u5bf9\u5916\u9690\u85cf\u4e0d\u5e94\u8be5\u88ab\u66b4\u6f0f\u3002

    "},{"location":"zh/#function-option-11","title":"\u4e0d\u4f7f\u7528function option\u6a21\u5f0f (#11)","text":"

    \u4e3a\u4e86\u8bbe\u8ba1\u5e76\u63d0\u4f9b\u66f4\u53cb\u597d\u7684API\uff08\u53ef\u9009\u53c2\u6570\uff09\uff0c\u4e3a\u4e86\u66f4\u597d\u5730\u5904\u7406\u9009\u9879\uff0c\u5e94\u8be5\u4f7f\u7528function option\u6a21\u5f0f\u3002

    "},{"location":"zh/#12","title":"\u5de5\u7a0b\u7ec4\u7ec7\u4e0d\u5408\u7406 (\u5de5\u7a0b\u7ed3\u6784\u548c\u5305\u7684\u7ec4\u7ec7) (#12)","text":"

    \u9075\u5faa\u50cf project-layout \u7684\u5efa\u8bae\u6765\u7ec4\u7ec7Go\u5de5\u7a0b\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u65b9\u6cd5\uff0c\u7279\u522b\u662f\u4f60\u6b63\u5728\u5bfb\u627e\u4e00\u4e9b\u7c7b\u4f3c\u7684\u7ecf\u9a8c\u3001\u60ef\u4f8b\u6765\u7ec4\u7ec7\u4e00\u4e2a\u65b0\u7684Go\u5de5\u7a0b\u7684\u65f6\u5019\u3002

    "},{"location":"zh/#13","title":"\u521b\u5efa\u5de5\u5177\u5305 (#13)","text":"

    \u547d\u540d\u662f\u8f6f\u4ef6\u8bbe\u8ba1\u5f00\u53d1\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u4e00\u4e2a\u90e8\u5206\uff0c\u521b\u5efa\u4e00\u4e9b\u540d\u5982 common\u3001util\u3001shared \u4e4b\u7c7b\u7684\u5305\u540d\u5e76\u4e0d\u4f1a\u7ed9\u8bfb\u8005\u5e26\u6765\u592a\u5927\u4ef7\u503c\uff0c\u5e94\u8be5\u5c06\u8fd9\u4e9b\u5305\u540d\u91cd\u6784\u4e3a\u66f4\u6e05\u6670\u3001\u66f4\u805a\u7126\u7684\u5305\u540d\u3002

    "},{"location":"zh/#14","title":"\u5ffd\u7565\u4e86\u5305\u540d\u51b2\u7a81 (#14)","text":"

    \u4e3a\u4e86\u907f\u514d\u53d8\u91cf\u540d\u548c\u5305\u540d\u4e4b\u95f4\u7684\u51b2\u7a81\uff0c\u5bfc\u81f4\u6df7\u6dc6\u6216\u751a\u81f3\u9519\u8bef\uff0c\u5e94\u4e3a\u6bcf\u4e2a\u53d8\u91cf\u548c\u5305\u4f7f\u7528\u552f\u4e00\u7684\u540d\u79f0\u3002\u5982\u679c\u8fd9\u4e0d\u53ef\u884c\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u5bfc\u5165\u522b\u540d import importAlias 'importPath'\uff0c\u4ee5\u533a\u5206\u5305\u540d\u548c\u53d8\u91cf\u540d\uff0c\u6216\u8005\u8003\u8651\u4e00\u4e2a\u66f4\u597d\u7684\u53d8\u91cf\u540d\u3002

    "},{"location":"zh/#15","title":"\u4ee3\u7801\u7f3a\u5c11\u6587\u6863 (#15)","text":"

    \u4e3a\u4e86\u8ba9\u4f7f\u7528\u65b9\u3001\u7ef4\u62a4\u4eba\u5458\u80fd\u66f4\u6e05\u6670\u5730\u4e86\u89e3\u4f60\u7684\u4ee3\u7801\u7684\u610f\u56fe\uff0c\u5bfc\u51fa\u7684\u5143\u7d20\uff08\u51fd\u6570\u3001\u7c7b\u578b\u3001\u5b57\u6bb5\uff09\u9700\u8981\u6dfb\u52a0godoc\u6ce8\u91ca\u3002

    "},{"location":"zh/#linters-16","title":"\u4e0d\u4f7f\u7528linters\u68c0\u67e5 (#16)","text":"

    \u4e3a\u4e86\u6539\u5584\u4ee3\u7801\u8d28\u91cf\u3001\u6574\u4f53\u4ee3\u7801\u7684\u4e00\u81f4\u6027\uff0c\u5e94\u8be5\u4f7f\u7528linters\u3001formatters\u3002

    "},{"location":"zh/#_2","title":"\u6570\u636e\u7c7b\u578b","text":""},{"location":"zh/#17","title":"\u516b\u8fdb\u5236\u5b57\u9762\u91cf\u5f15\u53d1\u7684\u56f0\u60d1 (#17)","text":"

    \u5728\u9605\u8bfb\u73b0\u6709\u4ee3\u7801\u65f6\uff0c\u8bf7\u8bb0\u4f4f\u4ee5 0 \u5f00\u5934\u7684\u6574\u6570\u5b57\u9762\u91cf\u662f\u516b\u8fdb\u5236\u6570\u3002\u6b64\u5916\uff0c\u4e3a\u4e86\u63d0\u9ad8\u53ef\u8bfb\u6027\uff0c\u53ef\u4ee5\u901a\u8fc7\u5728\u524d\u9762\u52a0\u4e0a 0o \u6765\u663e\u5f0f\u5730\u8868\u793a\u516b\u8fdb\u5236\u6574\u6570\u3002

    "},{"location":"zh/#18","title":"\u672a\u6ce8\u610f\u53ef\u80fd\u7684\u6574\u6570\u6ea2\u51fa (#18)","text":"

    \u5728 Go \u4e2d\u6574\u6570\u4e0a\u6ea2\u51fa\u548c\u4e0b\u6ea2\u662f\u9759\u9ed8\u5904\u7406\u7684\uff0c\u6240\u4ee5\u4f60\u53ef\u4ee5\u5b9e\u73b0\u81ea\u5df1\u7684\u51fd\u6570\u6765\u6355\u83b7\u5b83\u4eec\u3002

    "},{"location":"zh/#19","title":"\u6ca1\u6709\u900f\u5f7b\u7406\u89e3\u6d6e\u70b9\u6570 (#19)","text":"

    \u6bd4\u8f83\u6d6e\u70b9\u6570\u65f6\uff0c\u901a\u8fc7\u6bd4\u8f83\u4e8c\u8005\u7684delta\u503c\u662f\u5426\u4ecb\u4e8e\u4e00\u5b9a\u7684\u8303\u56f4\u5185\uff0c\u80fd\u8ba9\u4f60\u5199\u51fa\u53ef\u79fb\u690d\u6027\u66f4\u597d\u7684\u4ee3\u7801\u3002

    \u5728\u8fdb\u884c\u52a0\u6cd5\u6216\u51cf\u6cd5\u65f6\uff0c\u5c06\u5177\u6709\u76f8\u4f3c\u6570\u91cf\u7ea7\u7684\u64cd\u4f5c\u5206\u6210\u540c\u4e00\u7ec4\u4ee5\u63d0\u9ad8\u7cbe\u5ea6 (\u8fc7\u65e9\u6307\u6570\u5bf9\u9f50\u4e22\u5931\u7cbe\u5ea6)\u3002\u6b64\u5916\uff0c\u5728\u8fdb\u884c\u52a0\u6cd5\u548c\u51cf\u6cd5\u4e4b\u524d\uff0c\u5e94\u5148\u8fdb\u884c\u4e58\u6cd5\u548c\u9664\u6cd5 (\u52a0\u51cf\u6cd5\u8bef\u5dee\u4f1a\u88ab\u4e58\u9664\u653e\u5927)\u3002

    "},{"location":"zh/#slice-20","title":"\u4e0d\u7406\u89e3slice\u7684\u957f\u5ea6\u548c\u5bb9\u91cf (#20)","text":"

    \u7406\u89e3slice\u7684\u957f\u5ea6\u548c\u5bb9\u91cf\u7684\u533a\u522b\uff0c\u662f\u4e00\u4e2aGo\u5f00\u53d1\u8005\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u4e4b\u4e00\u3002slice\u7684\u957f\u5ea6\u6307\u7684\u662fslice\u5df2\u7ecf\u5b58\u50a8\u7684\u5143\u7d20\u7684\u6570\u91cf\uff0c\u800c\u5bb9\u91cf\u6307\u7684\u662fslice\u5f53\u524d\u5e95\u5c42\u5f00\u8f9f\u7684\u6570\u7ec4\u6700\u591a\u80fd\u5bb9\u7eb3\u7684\u5143\u7d20\u7684\u6570\u91cf\u3002

    "},{"location":"zh/#slice-21","title":"\u4e0d\u9ad8\u6548\u7684slice\u521d\u59cb\u5316 (#21)","text":"

    \u5f53\u521b\u5efa\u4e00\u4e2aslice\u65f6\uff0c\u5982\u679c\u5176\u957f\u5ea6\u53ef\u4ee5\u9884\u5148\u786e\u5b9a\uff0c\u90a3\u4e48\u53ef\u4ee5\u5728\u5b9a\u4e49\u65f6\u6307\u5b9a\u5b83\u7684\u957f\u5ea6\u548c\u5bb9\u91cf\u3002\u8fd9\u53ef\u4ee5\u6539\u5584\u540e\u671fappend\u65f6\u4e00\u6b21\u6216\u8005\u591a\u6b21\u7684\u5185\u5b58\u5206\u914d\u64cd\u4f5c\uff0c\u4ece\u800c\u6539\u5584\u6027\u80fd\u3002\u5bf9\u4e8emap\u7684\u521d\u59cb\u5316\u4e5f\u662f\u8fd9\u6837\u7684\u3002

    "},{"location":"zh/#nilslice-22","title":"\u56f0\u60d1\u4e8enil\u548c\u7a7aslice (#22)","text":"

    \u4e3a\u4e86\u907f\u514d\u5e38\u89c1\u7684\u5bf9nil\u548cempty slice\u5904\u7406\u884c\u4e3a\u7684\u6df7\u6dc6\uff0c\u4f8b\u5982\u5728\u4f7f\u7528 encoding/json \u6216 reflect \u5305\u65f6\uff0c\u4f60\u9700\u8981\u7406\u89e3 nil \u548c empty slice\u7684\u533a\u522b\u3002\u4e24\u8005\u90fd\u662f\u957f\u5ea6\u4e3a\u96f6\u3001\u5bb9\u91cf\u4e3a\u96f6\u7684\u5207\u7247\uff0c\u4f46\u662f nil \u5207\u7247\u4e0d\u9700\u8981\u5206\u914d\u5185\u5b58\u3002

    "},{"location":"zh/#slice-23","title":"\u6ca1\u6709\u9002\u5f53\u68c0\u67e5slice\u662f\u5426\u4e3a\u7a7a (#23)","text":"

    \u68c0\u67e5\u4e00\u4e2aslice\u7684\u662f\u5426\u5305\u542b\u4efb\u4f55\u5143\u7d20\uff0c\u53ef\u4ee5\u68c0\u67e5\u5176\u957f\u5ea6\uff0c\u4e0d\u7ba1slice\u662fnil\u8fd8\u662fempty\uff0c\u68c0\u67e5\u957f\u5ea6\u90fd\u662f\u6709\u6548\u7684\u3002\u8fd9\u4e2a\u68c0\u67e5\u65b9\u6cd5\u4e5f\u9002\u7528\u4e8emap\u3002

    \u4e3a\u4e86\u8bbe\u8ba1\u66f4\u660e\u786e\u7684API\uff0cAPI\u4e0d\u5e94\u533a\u5206nil\u548c\u7a7a\u5207\u7247\u3002

    "},{"location":"zh/#slice-24","title":"\u6ca1\u6709\u6b63\u786e\u62f7\u8d1dslice (#24)","text":"

    \u4f7f\u7528 copy \u62f7\u8d1d\u4e00\u4e2aslice\u5143\u7d20\u5230\u53e6\u4e00\u4e2aslice\u65f6\uff0c\u9700\u8981\u8bb0\u5f97\uff0c\u5b9e\u9645\u62f7\u8d1d\u7684\u5143\u7d20\u6570\u91cf\u662f\u4e8c\u8005slice\u957f\u5ea6\u4e2d\u7684\u8f83\u5c0f\u503c\u3002

    "},{"location":"zh/#slice-append-25","title":"slice append\u5e26\u6765\u7684\u9884\u671f\u4e4b\u5916\u7684\u526f\u4f5c\u7528 (#25)","text":"

    \u5982\u679c\u4e24\u4e2a\u4e0d\u540c\u7684\u51fd\u6570\u64cd\u4f5c\u7684slice\u590d\u7528\u4e86\u76f8\u540c\u7684\u5e95\u5c42\u6570\u7ec4\uff0c\u5b83\u4eec\u5bf9slice\u6267\u884cappend\u64cd\u4f5c\u65f6\u53ef\u80fd\u4f1a\u4ea7\u751f\u51b2\u7a81\u3002\u4f7f\u7528copy\u6765\u5b8c\u6574\u590d\u5236\u4e00\u4e2aslice\u6216\u8005\u4f7f\u7528\u5b8c\u6574\u7684slice\u8868\u8fbe\u5f0f[low:high:max]\u9650\u5236\u6700\u5927\u5bb9\u91cf\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u4ea7\u751f\u51b2\u7a81\u3002\u5f53\u60f3\u5bf9\u4e00\u4e2a\u5927slice\u8fdb\u884cshrink\u64cd\u4f5c\u65f6\uff0c\u4e24\u79cd\u65b9\u5f0f\u4e2d\uff0c\u53ea\u6709copy\u624d\u53ef\u4ee5\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\u3002

    "},{"location":"zh/#slice-26","title":"slice\u548c\u5185\u5b58\u6cc4\u6f0f (#26)","text":"

    \u5bf9\u4e8eslice\u5143\u7d20\u4e3a\u6307\u9488\uff0c\u6216\u8005slice\u5143\u7d20\u4e3astruct\u4f46\u662f\u8be5struct\u542b\u6709\u6307\u9488\u5b57\u6bb5\uff0c\u5f53\u901a\u8fc7slice[low:high]\u64cd\u4f5c\u53d6subslice\u65f6\uff0c\u5bf9\u4e8e\u90a3\u4e9b\u4e0d\u53ef\u8bbf\u95ee\u7684\u5143\u7d20\u53ef\u4ee5\u663e\u793a\u8bbe\u7f6e\u4e3anil\u6765\u907f\u514d\u5185\u5b58\u6cc4\u9732\u3002

    "},{"location":"zh/#map-27","title":"\u4e0d\u9ad8\u6548\u7684map\u521d\u59cb\u5316 (#27)","text":"

    \u89c1 #21.

    "},{"location":"zh/#map-28","title":"map\u548c\u5185\u5b58\u6cc4\u6f0f (#28)","text":"

    \u4e00\u4e2amap\u7684buckets\u5360\u7528\u7684\u5185\u5b58\u53ea\u4f1a\u589e\u957f\uff0c\u4e0d\u4f1a\u7f29\u51cf\u3002\u56e0\u6b64\uff0c\u5982\u679c\u5b83\u5bfc\u81f4\u4e86\u4e00\u4e9b\u5185\u5b58\u5360\u7528\u7684\u95ee\u9898\uff0c\u4f60\u9700\u8981\u5c1d\u8bd5\u4e0d\u540c\u7684\u9009\u9879\u6765\u89e3\u51b3\uff0c\u6bd4\u5982\u91cd\u65b0\u521b\u5efa\u4e00\u4e2amap\u4ee3\u66ff\u539f\u6765\u7684\uff08\u539f\u6765\u7684map\u4f1a\u88abGC\u6389\uff09\uff0c\u6216\u8005map[keyType]valueType\u4e2d\u7684valueType\u4f7f\u7528\u6307\u9488\u4ee3\u66ff\u957f\u5ea6\u56fa\u5b9a\u7684\u6570\u7ec4\u6216\u8005sliceHeader\u6765\u7f13\u89e3\u8fc7\u591a\u7684\u5185\u5b58\u5360\u7528\u3002

    "},{"location":"zh/#29","title":"\u4e0d\u6b63\u786e\u7684\u503c\u6bd4\u8f83 (#29)","text":"

    Go\u4e2d\u6bd4\u8f83\u4e24\u4e2a\u7c7b\u578b\u503c\u65f6\uff0c\u5982\u679c\u662f\u53ef\u6bd4\u8f83\u7c7b\u578b\uff0c\u90a3\u4e48\u53ef\u4ee5\u4f7f\u7528 == \u6216\u8005 != \u8fd0\u7b97\u7b26\u8fdb\u884c\u6bd4\u8f83\uff0c\u6bd4\u5982\uff1abooleans\u3001numerals\u3001strings\u3001pointers\u3001channels\uff0c\u4ee5\u53ca\u5b57\u6bb5\u5168\u90e8\u662f\u53ef\u6bd4\u8f83\u7c7b\u578b\u7684structs\u3002\u5176\u4ed6\u60c5\u51b5\u4e0b\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528 reflect.DeepEqual \u6765\u6bd4\u8f83\uff0c\u7528\u53cd\u5c04\u7684\u8bdd\u4f1a\u727a\u7272\u4e00\u70b9\u6027\u80fd\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u5b9e\u73b0\u548c\u5176\u4ed6\u5e93\u6765\u5b8c\u6210\u3002

    "},{"location":"zh/#_3","title":"\u63a7\u5236\u7ed3\u6784","text":""},{"location":"zh/#range-30","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u53d8\u91cf\u662f\u4e00\u4e2a\u62f7\u8d1d (#30)","text":"

    range \u5faa\u73af\u4e2d\u7684\u5faa\u73af\u53d8\u91cf\u662f\u904d\u5386\u5bb9\u5668\u4e2d\u5143\u7d20\u503c\u7684\u4e00\u4e2a\u62f7\u8d1d\u3002\u56e0\u6b64\uff0c\u5982\u679c\u5143\u7d20\u503c\u662f\u4e00\u4e2astruct\u5e76\u4e14\u60f3\u5728 range \u4e2d\u4fee\u6539\u5b83\uff0c\u53ef\u4ee5\u901a\u8fc7\u7d22\u5f15\u503c\u6765\u8bbf\u95ee\u5e76\u4fee\u6539\u5b83\uff0c\u6216\u8005\u4f7f\u7528\u7ecf\u5178\u7684for\u5faa\u73af+\u7d22\u5f15\u503c\u7684\u5199\u6cd5\uff08\u9664\u975e\u904d\u5386\u7684\u5143\u7d20\u662f\u4e00\u4e2a\u6307\u9488\uff09\u3002

    "},{"location":"zh/#range-channels-arrays-31","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u4e2d\u8fed\u4ee3\u76ee\u6807\u503c\u7684\u8ba1\u7b97\u65b9\u5f0f (channels \u548c arrays) (#31)","text":"

    \u4f20\u9012\u7ed9 range \u64cd\u4f5c\u7684\u8fed\u4ee3\u76ee\u6807\u5bf9\u5e94\u7684\u8868\u8fbe\u5f0f\u7684\u503c\uff0c\u53ea\u4f1a\u5728\u5faa\u73af\u6267\u884c\u524d\u88ab\u8ba1\u7b97\u4e00\u6b21\uff0c\u7406\u89e3\u8fd9\u4e2a\u6709\u52a9\u4e8e\u907f\u514d\u72af\u4e00\u4e9b\u5e38\u89c1\u7684\u9519\u8bef\uff0c\u4f8b\u5982\u4e0d\u9ad8\u6548\u7684channel\u8d4b\u503c\u64cd\u4f5c\u3001slice\u8fed\u4ee3\u64cd\u4f5c\u3002

    "},{"location":"zh/#range-range-loops-32","title":"\u5ffd\u7565\u4e86 range \u5faa\u73af\u4e2d\u6307\u9488\u5143\u7d20\u7684\u5f71\u54cd range loops (#32)","text":"

    \u8fd9\u91cc\u5176\u5b9e\u5f3a\u8c03\u7684\u662f range \u8fed\u4ee3\u8fc7\u7a0b\u4e2d\uff0c\u8fed\u4ee3\u53d8\u91cf\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u62f7\u8d1d\uff0c\u5047\u8bbe\u7ed9\u53e6\u5916\u4e00\u4e2a\u5bb9\u5668\u5143\u7d20\uff08\u6307\u9488\u7c7b\u578b\uff09\u8d4b\u503c\uff0c\u4e14\u9700\u8981\u5bf9\u8fed\u4ee3\u53d8\u91cf\u53d6\u5730\u5740\u8f6c\u6362\u6210\u6307\u9488\u518d\u8d4b\u503c\u7684\u8bdd\uff0c\u8fd9\u91cc\u6f5c\u85cf\u7740\u4e00\u4e2a\u9519\u8bef\uff0c\u5c31\u662ffor\u5faa\u73af\u8fed\u4ee3\u53d8\u91cf\u662f per-variable-per-loop \u800c\u4e0d\u662f per-variable-per-iteration\u3002\u5982\u679c\u662f\u901a\u8fc7\u5c40\u90e8\u53d8\u91cf\uff08\u7528\u8fed\u4ee3\u53d8\u91cf\u6765\u521d\u59cb\u5316\uff09\u6216\u8005\u4f7f\u7528\u7d22\u5f15\u503c\u6765\u76f4\u63a5\u5f15\u7528\u8fed\u4ee3\u7684\u5143\u7d20\uff0c\u5c06\u6709\u52a9\u4e8e\u907f\u514d\u62f7\u8d1d\u6307\u9488(\u8fed\u4ee3\u53d8\u91cf\u7684\u5730\u5740)\u4e4b\u7c7b\u7684bug\u3002

    "},{"location":"zh/#map-33","title":"map\u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u7684\u9519\u8bef\u5047\u8bbe\uff08\u904d\u5386\u987a\u5e8f \u548c \u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u63d2\u5165\uff09(#33)","text":"

    \u4f7f\u7528map\u65f6\uff0c\u4e3a\u4e86\u80fd\u5f97\u5230\u786e\u5b9a\u4e00\u81f4\u7684\u7ed3\u679c\uff0c\u5e94\u8be5\u8bb0\u4f4fGo\u4e2d\u7684map\u6570\u636e\u7ed3\u6784\uff1a * \u4e0d\u4f1a\u6309\u7167key\u5bf9data\u8fdb\u884c\u6392\u5e8f\uff0c\u904d\u5386\u65f6\u4e0d\u662f\u6309key\u6709\u5e8f\u7684\uff1b * \u904d\u5386\u65f6\u7684\u987a\u5e8f\uff0c\u4e5f\u4e0d\u662f\u6309\u7167\u63d2\u5165\u65f6\u7684\u987a\u5e8f\uff1b * \u6ca1\u6709\u4e00\u4e2a\u786e\u5b9a\u6027\u7684\u904d\u5386\u987a\u5e8f\uff0c\u6bcf\u6b21\u904d\u5386\u987a\u5e8f\u662f\u4e0d\u540c\u7684\uff1b * \u4e0d\u80fd\u4fdd\u8bc1\u8fed\u4ee3\u8fc7\u7a0b\u4e2d\u65b0\u63d2\u5165\u7684\u5143\u7d20\uff0c\u5728\u5f53\u524d\u8fed\u4ee3\u4e2d\u80fd\u591f\u88ab\u904d\u5386\u5230\uff1b

    "},{"location":"zh/#break-34","title":"\u5ffd\u7565\u4e86 break \u8bed\u53e5\u662f\u5982\u4f55\u5de5\u4f5c\u7684 (#34)","text":"

    \u914d\u5408label\u4f7f\u7528 break \u548c continue\uff0c\u80fd\u591f\u8df3\u8fc7\u4e00\u4e2a\u7279\u5b9a\u7684\u8bed\u53e5\uff0c\u5728\u67d0\u4e9b\u5faa\u73af\u4e2d\u5b58\u5728 switch\u548cselect\u8bed\u53e5\u7684\u573a\u666f\u4e2d\u5c31\u6bd4\u8f83\u6709\u5e2e\u52a9\u3002

    "},{"location":"zh/#defer-35","title":"\u5728\u5faa\u73af\u4e2d\u4f7f\u7528 defer (#35)","text":"

    \u5728\u5faa\u73af\u4e2d\u4f7f\u7528defer\u4e0d\u80fd\u5728\u6bcf\u8f6e\u8fed\u4ee3\u7ed3\u675f\u65f6\u6267\u884cdefer\u8bed\u53e5\uff0c\u4f46\u662f\u5c06\u5faa\u73af\u903b\u8f91\u63d0\u53d6\u5230\u51fd\u6570\u5185\u90e8\u4f1a\u5728\u6bcf\u6b21\u8fed\u4ee3\u7ed3\u675f\u65f6\u6267\u884c defer \u8bed\u53e5\u3002

    "},{"location":"zh/#_4","title":"\u5b57\u7b26\u4e32","text":""},{"location":"zh/#rune-36","title":"\u6ca1\u6709\u7406\u89e3rune (#36)","text":"

    \u7406\u89e3rune\u7c7b\u578b\u5bf9\u5e94\u7684\u662f\u4e00\u4e2aunicode\u7801\u70b9\uff0c\u6bcf\u4e00\u4e2aunicode\u7801\u70b9\u5176\u5b9e\u662f\u4e00\u4e2a\u591a\u5b57\u8282\u7684\u5e8f\u5217\uff0c\u4e0d\u662f\u4e00\u4e2abyte\u3002\u8fd9\u5e94\u8be5\u662fGo\u5f00\u53d1\u8005\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u4e4b\u4e00\uff0c\u7406\u89e3\u4e86\u8fd9\u4e2a\u6709\u52a9\u4e8e\u66f4\u51c6\u786e\u5730\u5904\u7406\u5b57\u7b26\u4e32\u3002

    "},{"location":"zh/#37","title":"\u4e0d\u6b63\u786e\u7684\u5b57\u7b26\u4e32\u904d\u5386 (#37)","text":"

    \u4f7f\u7528 range \u64cd\u4f5c\u7b26\u5bf9\u4e00\u4e2astring\u8fdb\u884c\u904d\u5386\u5b9e\u9645\u4e0a\u662f\u5bf9string\u5bf9\u5e94\u7684 []rune \u8fdb\u884c\u904d\u5386\uff0c\u8fed\u4ee3\u53d8\u91cf\u4e2d\u7684\u7d22\u5f15\u503c\uff0c\u8868\u793a\u7684\u5f53\u524drune\u5bf9\u5e94\u7684 []byte \u5728\u6574\u4e2a []byte(string) \u4e2d\u7684\u8d77\u59cb\u7d22\u5f15\u3002\u5982\u679c\u8981\u8bbf\u95eestring\u4e2d\u7684\u67d0\u4e00\u4e2arune\uff08\u6bd4\u5982\u7b2c\u4e09\u4e2a\uff09\uff0c\u9996\u5148\u8981\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a []rune \u7136\u540e\u518d\u6309\u7d22\u5f15\u503c\u8bbf\u95ee\u3002

    "},{"location":"zh/#trim-38","title":"\u8bef\u7528trim\u51fd\u6570 (#38)","text":"

    strings.TrimRight/strings.TrimLeft \u79fb\u9664\u5728\u5b57\u7b26\u4e32\u5c3e\u90e8\u6216\u8005\u5f00\u5934\u51fa\u73b0\u7684\u4e00\u4e9brunes\uff0c\u51fd\u6570\u4f1a\u6307\u5b9a\u4e00\u4e2arune\u96c6\u5408\uff0c\u51fa\u73b0\u5728\u96c6\u5408\u4e2d\u7684rune\u5c06\u88ab\u4ece\u5b57\u7b26\u4e32\u79fb\u9664\u3002\u800c strings.TrimSuffix/strings.TrimPrefix \u662f\u79fb\u9664\u5b57\u7b26\u4e32\u7684\u4e00\u4e2a\u540e\u7f00/\u524d\u7f00\u3002

    "},{"location":"zh/#39","title":"\u4e0d\u7ecf\u4f18\u5316\u7684\u5b57\u7b26\u4e32\u62fc\u63a5\u64cd\u4f5c (#39)","text":"

    \u5bf9\u4e00\u4e2a\u5b57\u7b26\u4e32\u5217\u8868\u8fdb\u884c\u904d\u5386\u62fc\u63a5\u64cd\u4f5c\uff0c\u5e94\u8be5\u901a\u8fc7 strings.Builder \u6765\u5b8c\u6210\uff0c\u4ee5\u907f\u514d\u6bcf\u6b21\u8fed\u4ee3\u62fc\u63a5\u65f6\u90fd\u5206\u914d\u4e00\u4e2a\u65b0\u7684string\u5bf9\u8c61\u51fa\u6765\u3002

    "},{"location":"zh/#40","title":"\u65e0\u7528\u7684\u5b57\u7b26\u4e32\u8f6c\u6362 (#40)","text":"

    bytes \u5305\u63d0\u4f9b\u4e86\u4e00\u4e9b\u548c strings \u5305\u76f8\u4f3c\u7684\u64cd\u4f5c\uff0c\u53ef\u4ee5\u5e2e\u52a9\u907f\u514d []byte/string \u4e4b\u95f4\u7684\u8f6c\u6362\u3002

    "},{"location":"zh/#41","title":"\u5b50\u5b57\u7b26\u4e32\u548c\u5185\u5b58\u6cc4\u6f0f (#41)","text":"

    \u4f7f\u7528\u4e00\u4e2a\u5b50\u5b57\u7b26\u4e32\u7684\u62f7\u8d1d\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u5185\u5b58\u6cc4\u6f0f\uff0c\u56e0\u4e3a\u5bf9\u4e00\u4e2a\u5b57\u7b26\u4e32\u7684s[low:high]\u64cd\u4f5c\u8fd4\u56de\u7684\u5b50\u5b57\u7b26\u4e32\uff0c\u5176\u4f7f\u7528\u4e86\u548c\u539f\u5b57\u7b26\u4e32s\u76f8\u540c\u7684\u5e95\u5c42\u6570\u7ec4\u3002

    "},{"location":"zh/#_5","title":"\u51fd\u6570\u548c\u65b9\u6cd5","text":""},{"location":"zh/#42","title":"\u4e0d\u77e5\u9053\u4f7f\u7528\u54ea\u79cd\u63a5\u6536\u5668\u7c7b\u578b (#42)","text":"

    \u5bf9\u4e8e\u63a5\u6536\u5668\u7c7b\u578b\u662f\u91c7\u7528value\u7c7b\u578b\u8fd8\u662fpointer\u7c7b\u578b\uff0c\u5e94\u8be5\u53d6\u51b3\u4e8e\u4e0b\u9762\u8fd9\u51e0\u79cd\u56e0\u7d20\uff0c\u6bd4\u5982\uff1a\u65b9\u6cd5\u5185\u662f\u5426\u4f1a\u5bf9\u5b83\u8fdb\u884c\u4fee\u6539\uff0c\u5b83\u662f\u5426\u5305\u542b\u4e86\u4e00\u4e2a\u4e0d\u80fd\u88ab\u62f7\u8d1d\u7684\u5b57\u6bb5\uff0c\u4ee5\u53ca\u5b83\u8868\u793a\u7684\u5bf9\u8c61\u6709\u591a\u5927\u3002\u5982\u679c\u6709\u7591\u95ee\uff0c\u63a5\u6536\u5668\u53ef\u4ee5\u8003\u8651\u4f7f\u7528pointer\u7c7b\u578b\u3002

    "},{"location":"zh/#43","title":"\u4ece\u4e0d\u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c (#43)","text":"

    \u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\uff0c\u662f\u4e00\u79cd\u6709\u6548\u6539\u5584\u51fd\u6570\u3001\u65b9\u6cd5\u53ef\u8bfb\u6027\u7684\u65b9\u6cd5\uff0c\u7279\u522b\u662f\u8fd4\u56de\u503c\u5217\u8868\u4e2d\u6709\u591a\u4e2a\u7c7b\u578b\u76f8\u540c\u7684\u53c2\u6570\u3002\u53e6\u5916\uff0c\u56e0\u4e3a\u8fd4\u56de\u503c\u5217\u8868\u4e2d\u7684\u53c2\u6570\u662f\u7ecf\u8fc7\u96f6\u503c\u521d\u59cb\u5316\u8fc7\u7684\uff0c\u67d0\u4e9b\u573a\u666f\u4e0b\u4e5f\u4f1a\u7b80\u5316\u51fd\u6570\u3001\u65b9\u6cd5\u7684\u5b9e\u73b0\u3002\u4f46\u662f\u9700\u8981\u6ce8\u610f\u5b83\u7684\u4e00\u4e9b\u6f5c\u5728\u526f\u4f5c\u7528\u3002

    "},{"location":"zh/#44","title":"\u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\u65f6\u9884\u671f\u5916\u7684\u526f\u4f5c\u7528 (#44)","text":"

    \u89c1 #43.

    \u4f7f\u7528\u547d\u540d\u7684\u8fd4\u56de\u503c\uff0c\u56e0\u4e3a\u5b83\u5df2\u7ecf\u88ab\u521d\u59cb\u5316\u4e86\u96f6\u503c\uff0c\u9700\u8981\u6ce8\u610f\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u5f02\u5e38\u8fd4\u56de\u65f6\u662f\u5426\u9700\u8981\u7ed9\u5b83\u8d4b\u4e88\u4e00\u4e2a\u4e0d\u540c\u7684\u503c\uff0c\u6bd4\u5982\u8fd4\u56de\u503c\u5217\u8868\u5b9a\u4e49\u4e86\u4e00\u4e2a\u6709\u540d\u53c2\u6570 err error\uff0c\u9700\u8981\u6ce8\u610f return err \u65f6\u662f\u5426\u6b63\u786e\u5730\u5bf9 err \u8fdb\u884c\u4e86\u8d4b\u503c\u3002

    "},{"location":"zh/#nil-45","title":"\u8fd4\u56de\u4e00\u4e2anil\u63a5\u6536\u5668 (#45)","text":"

    \u5f53\u8fd4\u56de\u4e00\u4e2ainterface\u53c2\u6570\u65f6\uff0c\u9700\u8981\u5c0f\u5fc3\uff0c\u4e0d\u8981\u8fd4\u56de\u4e00\u4e2anil\u6307\u9488\uff0c\u800c\u662f\u5e94\u8be5\u663e\u793a\u8fd4\u56de\u4e00\u4e2anil\u503c\u3002\u5426\u5219\uff0c\u53ef\u80fd\u4f1a\u53d1\u751f\u4e00\u4e9b\u9884\u671f\u5916\u7684\u95ee\u9898\uff0c\u56e0\u4e3a\u8c03\u7528\u65b9\u4f1a\u6536\u5230\u4e00\u4e2a\u975enil\u7684\u503c\u3002

    "},{"location":"zh/#46","title":"\u4f7f\u7528\u6587\u4ef6\u540d\u4f5c\u4e3a\u51fd\u6570\u5165\u53c2 (#46)","text":"

    \u8bbe\u8ba1\u51fd\u6570\u65f6\u4f7f\u7528 io.Reader \u7c7b\u578b\u4f5c\u4e3a\u5165\u53c2\uff0c\u800c\u4e0d\u662f\u6587\u4ef6\u540d\uff0c\u5c06\u6709\u52a9\u4e8e\u6539\u5584\u51fd\u6570\u7684\u53ef\u590d\u7528\u6027\u3001\u6613\u6d4b\u8bd5\u6027\u3002

    "},{"location":"zh/#defer-value-47","title":"\u5ffd\u7565 defer \u8bed\u53e5\u4e2d\u53c2\u6570\u3001\u63a5\u6536\u5668\u503c\u7684\u8ba1\u7b97\u65b9\u5f0f (\u53c2\u6570\u503c\u8ba1\u7b97, \u6307\u9488, \u548c value\u7c7b\u578b\u63a5\u6536\u5668) (#47)","text":"

    \u4e3a\u4e86\u907f\u514d defer \u8bed\u53e5\u6267\u884c\u65f6\u5c31\u7acb\u5373\u8ba1\u7b97\u5bf9defer\u8981\u6267\u884c\u7684\u51fd\u6570\u7684\u53c2\u6570\u8fdb\u884c\u8ba1\u7b97\uff0c\u53ef\u4ee5\u8003\u8651\u5c06\u8981\u6267\u884c\u7684\u51fd\u6570\u653e\u5230\u95ed\u5305\u91cc\u9762\uff0c\u7136\u540e\u901a\u8fc7\u6307\u9488\u4f20\u9012\u53c2\u6570\u7ed9\u95ed\u5305\u5185\u51fd\u6570\uff08\u6216\u8005\u901a\u8fc7\u95ed\u5305\u6355\u83b7\u5916\u90e8\u53d8\u91cf\uff09\uff0c\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002

    "},{"location":"zh/#_6","title":"\u9519\u8bef\u7ba1\u7406","text":""},{"location":"zh/#panicking-48","title":"Panicking (#48)","text":"

    \u4f7f\u7528 panic \u662fGo\u4e2d\u4e00\u79cd\u5904\u7406\u9519\u8bef\u7684\u65b9\u5f0f\uff0c\u4f46\u662f\u53ea\u80fd\u5728\u9047\u5230\u4e0d\u53ef\u6062\u590d\u7684\u9519\u8bef\u65f6\u4f7f\u7528\uff0c\u4f8b\u5982\uff1a\u901a\u77e5\u5f00\u53d1\u4eba\u5458\u4e00\u4e2a\u5f3a\u4f9d\u8d56\u7684\u6a21\u5757\u52a0\u8f7d\u5931\u8d25\u4e86\u3002

    "},{"location":"zh/#error-49","title":"\u672a\u8003\u8651\u4f55\u65f6\u624d\u5e94\u8be5\u5305\u88c5error (#49)","text":"

    Wrapping\uff08\u5305\u88c5\uff09\u9519\u8bef\u5141\u8bb8\u60a8\u6807\u8bb0\u9519\u8bef\u3001\u63d0\u4f9b\u989d\u5916\u7684\u4e0a\u4e0b\u6587\u4fe1\u606f\u3002\u7136\u800c\uff0c\u5305\u88c5\u9519\u8bef\u4f1a\u521b\u5efa\u6f5c\u5728\u7684\u8026\u5408\uff0c\u56e0\u4e3a\u5b83\u4f7f\u5f97\u539f\u6765\u7684\u9519\u8bef\u5bf9\u8c03\u7528\u8005\u53ef\u89c1\u3002\u5982\u679c\u60a8\u60f3\u8981\u9632\u6b62\u8fd9\u79cd\u60c5\u51b5\uff0c\u8bf7\u4e0d\u8981\u4f7f\u7528\u5305\u88c5\u9519\u8bef\u7684\u65b9\u5f0f\u3002

    "},{"location":"zh/#50","title":"\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u7c7b\u578b\u6bd4\u8f83 (#50)","text":"

    \u5982\u679c\u4f60\u4f7f\u7528 Go 1.13 \u5f15\u5165\u7684\u7279\u6027 fmt.Errorf + %w \u6765\u5305\u88c5\u4e00\u4e2a\u9519\u8bef\uff0c\u5f53\u8fdb\u884c\u9519\u8bef\u6bd4\u8f83\u65f6\uff0c\u5982\u679c\u60f3\u5224\u65ad\u8be5\u5305\u88c5\u540e\u7684\u9519\u8bef\u662f\u4e0d\u662f\u6307\u5b9a\u7684\u9519\u8bef\u7c7b\u578b\uff0c\u5c31\u9700\u8981\u4f7f\u7528 errors.As\uff0c\u5982\u679c\u60f3\u5224\u65ad\u662f\u4e0d\u662f\u6307\u5b9a\u7684error\u5bf9\u8c61\u5c31\u9700\u8981\u7528 errors.Is\u3002

    "},{"location":"zh/#51","title":"\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u5bf9\u8c61\u503c\u6bd4\u8f83 (#51)","text":"

    \u89c1 #50.

    \u4e3a\u4e86\u8868\u8fbe\u4e00\u4e2a\u9884\u671f\u5185\u7684\u9519\u8bef\uff0c\u8bf7\u4f7f\u7528\u9519\u8bef\u503c\u7684\u65b9\u5f0f\uff0c\u5e76\u901a\u8fc7 == \u6216\u8005 errors.Is \u6765\u6bd4\u8f83\u3002\u800c\u5bf9\u4e8e\u610f\u5916\u9519\u8bef\uff0c\u5219\u5e94\u4f7f\u7528\u7279\u5b9a\u7684\u9519\u8bef\u7c7b\u578b\uff08\u53ef\u4ee5\u901a\u8fc7 errors.As \u6765\u6bd4\u8f83\uff09\u3002

    "},{"location":"zh/#52","title":"\u5904\u7406\u540c\u4e00\u4e2a\u9519\u8bef\u4e24\u6b21 (#52)","text":"

    \u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u9519\u8bef\u4ec5\u9700\u8981\u5904\u7406\u4e00\u6b21\u3002\u6253\u5370\u9519\u8bef\u65e5\u5fd7\u4e5f\u662f\u4e00\u79cd\u9519\u8bef\u5904\u7406\u3002\u56e0\u6b64\uff0c\u5f53\u51fd\u6570\u5185\u53d1\u751f\u9519\u8bef\u65f6\uff0c\u5e94\u8be5\u5728\u6253\u5370\u65e5\u5fd7\u548c\u8fd4\u56de\u9519\u8bef\u4e2d\u9009\u62e9\u5176\u4e2d\u4e00\u79cd\u3002\u5305\u88c5\u9519\u8bef\u4e5f\u53ef\u4ee5\u63d0\u4f9b\u95ee\u9898\u53d1\u751f\u7684\u989d\u5916\u4e0a\u4e0b\u6587\u4fe1\u606f\uff0c\u4e5f\u5305\u62ec\u4e86\u539f\u6765\u7684\u9519\u8bef\uff08\u53ef\u8003\u8651\u4ea4\u7ed9\u8c03\u7528\u65b9\u8d1f\u8d23\u6253\u65e5\u5fd7\uff09\u3002

    "},{"location":"zh/#53","title":"\u4e0d\u5904\u7406\u9519\u8bef (#53)","text":"

    \u4e0d\u7ba1\u662f\u5728\u51fd\u6570\u8c03\u7528\u65f6\uff0c\u8fd8\u662f\u5728\u4e00\u4e2a defer \u51fd\u6570\u6267\u884c\u65f6\uff0c\u5982\u679c\u60f3\u8981\u5ffd\u7565\u4e00\u4e2a\u9519\u8bef\uff0c\u5e94\u8be5\u663e\u793a\u5730\u901a\u8fc7 _ \u6765\u5ffd\u7565\uff08\u53ef\u6ce8\u660e\u5ffd\u7565\u7684\u539f\u56e0\uff09\u3002\u5426\u5219\uff0c\u5c06\u6765\u7684\u8bfb\u8005\u5c31\u4f1a\u611f\u89c9\u5230\u56f0\u60d1\uff0c\u5ffd\u7565\u8fd9\u4e2a\u9519\u8bef\u662f\u6709\u610f\u4e3a\u4e4b\u8fd8\u662f\u65e0\u610f\u4e2d\u6f0f\u6389\u4e86\u3002

    "},{"location":"zh/#defer-54","title":"\u4e0d\u5904\u7406 defer \u4e2d\u7684\u9519\u8bef (#54)","text":"

    \u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u4f60\u4e0d\u5e94\u8be5\u5ffd\u7565 defer \u51fd\u6570\u6267\u884c\u65f6\u8fd4\u56de\u7684\u9519\u8bef\uff0c\u6216\u8005\u663e\u793a\u5904\u7406\u5b83\uff0c\u6216\u8005\u5c06\u5b83\u4f20\u9012\u7ed9\u8c03\u7528\u65b9\u5904\u7406\uff0c\u53ef\u4ee5\u6839\u636e\u60c5\u666f\u8fdb\u884c\u9009\u62e9\u3002\u5982\u679c\u4f60\u786e\u5b9a\u8981\u5ffd\u7565\u8fd9\u4e2a\u9519\u8bef\uff0c\u8bf7\u663e\u793a\u4f7f\u7528 _ \u6765\u5ffd\u7565\u3002

    "},{"location":"zh/#_7","title":"\u5e76\u53d1\u7f16\u7a0b: \u57fa\u7840","text":""},{"location":"zh/#55","title":"\u6df7\u6dc6\u5e76\u53d1\u548c\u5e76\u884c (#55)","text":"

    \u7406\u89e3\u5e76\u53d1\uff08concurrency\uff09\u3001\u5e76\u884c\uff08parallelism\uff09\u4e4b\u95f4\u7684\u672c\u8d28\u533a\u522b\u662fGo\u5f00\u53d1\u4eba\u5458\u5fc5\u987b\u8981\u638c\u63e1\u7684\u3002\u5e76\u53d1\u662f\u5173\u4e8e\u7ed3\u6784\u8bbe\u8ba1\u4e0a\u7684\uff0c\u5e76\u884c\u662f\u5173\u4e8e\u5177\u4f53\u6267\u884c\u4e0a\u7684\u3002

    "},{"location":"zh/#56","title":"\u8ba4\u4e3a\u5e76\u53d1\u603b\u662f\u66f4\u5feb (#56)","text":"

    \u8981\u6210\u4e3a\u4e00\u540d\u719f\u7ec3\u7684\u5f00\u53d1\u4eba\u5458\uff0c\u60a8\u5fc5\u987b\u610f\u8bc6\u5230\u5e76\u975e\u6240\u6709\u573a\u666f\u4e0b\u90fd\u662f\u5e76\u53d1\u7684\u65b9\u6848\u66f4\u5feb\u3002\u5bf9\u4e8e\u4efb\u52a1\u4e2d\u7684\u6700\u5c0f\u5de5\u4f5c\u8d1f\u8f7d\u90e8\u5206\uff0c\u5bf9\u5b83\u4eec\u8fdb\u884c\u5e76\u884c\u5316\u5904\u7406\u5e76\u4e0d\u4e00\u5b9a\u5c31\u6709\u660e\u663e\u6536\u76ca\u6216\u8005\u6bd4\u4e32\u884c\u5316\u65b9\u6848\u66f4\u5feb\u3002\u5bf9\u4e32\u884c\u5316\u3001\u5e76\u53d1\u65b9\u6848\u8fdb\u884cbenchmark\u6d4b\u8bd5\uff0c\u662f\u9a8c\u8bc1\u5047\u8bbe\u7684\u597d\u529e\u6cd5\u3002

    "},{"location":"zh/#channelsmutexes-57","title":"\u4e0d\u6e05\u695a\u4f55\u65f6\u4f7f\u7528channels\u6216mutexes (#57)","text":"

    \u4e86\u89e3 goroutine \u4e4b\u95f4\u7684\u4ea4\u4e92\u4e5f\u53ef\u4ee5\u5728\u9009\u62e9\u4f7f\u7528channels\u6216mutexes\u65f6\u6709\u6240\u5e2e\u52a9\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u5e76\u884c\u7684 goroutine \u9700\u8981\u540c\u6b65\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528mutexes\u3002\u76f8\u53cd\uff0c\u5e76\u53d1\u7684 goroutine \u901a\u5e38\u9700\u8981\u534f\u8c03\u548c\u7f16\u6392\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528channels\u3002

    "},{"location":"zh/#vs-go-58","title":"\u4e0d\u660e\u767d\u7ade\u6001\u95ee\u9898 (\u6570\u636e\u7ade\u6001 vs. \u7ade\u6001\u6761\u4ef6 \u548c Go\u5185\u5b58\u6a21\u578b) (#58)","text":"

    \u638c\u63e1\u5e76\u53d1\u610f\u5473\u7740\u8981\u8ba4\u8bc6\u5230\u6570\u636e\u7ade\u4e89\uff08data races\uff09\u548c\u7ade\u6001\u6761\u4ef6\uff08race conditions\uff09\u662f\u4e24\u4e2a\u4e0d\u540c\u7684\u6982\u5ff5\u3002\u6570\u636e\u7ade\u4e89\uff0c\u6307\u7684\u662f\u6709\u591a\u4e2agoroutines\u540c\u65f6\u8bbf\u95ee\u76f8\u540c\u5185\u5b58\u533a\u57df\u65f6\uff0c\u6ca1\u6709\u5fc5\u8981\u7684\u540c\u6b65\u63a7\u5236\uff0c\u4e14\u5176\u4e2d\u81f3\u5c11\u6709\u4e00\u4e2agoroutine\u662f\u6267\u884c\u7684\u5199\u64cd\u4f5c\u3002\u540c\u65f6\u8981\u8ba4\u8bc6\u5230\uff0c\u6ca1\u6709\u53d1\u751f\u6570\u636e\u7ade\u4e89\u4e0d\u4ee3\u8868\u7a0b\u5e8f\u7684\u6267\u884c\u662f\u786e\u5b9a\u6027\u7684\u3001\u6ca1\u95ee\u9898\u7684\u3002\u5f53\u5728\u67d0\u4e2a\u7279\u5b9a\u7684\u64cd\u4f5c\u987a\u5e8f\u6216\u8005\u7279\u5b9a\u7684\u4e8b\u4ef6\u53d1\u751f\u987a\u5e8f\u4e0b\uff0c\u5982\u679c\u6700\u7ec8\u7684\u884c\u4e3a\u662f\u4e0d\u53ef\u63a7\u7684\uff0c\u8fd9\u5c31\u662f\u7ade\u6001\u6761\u4ef6\u3002

    ps\uff1a\u6570\u636e\u7ade\u4e89\u662f\u7ade\u6001\u6761\u4ef6\u7684\u5b50\u96c6\uff0c\u7ade\u6001\u6761\u4ef6\u4e0d\u4ec5\u5c40\u9650\u4e8e\u8bbf\u5b58\u672a\u540c\u6b65\uff0c\u5b83\u53ef\u4ee5\u53d1\u751f\u5728\u66f4\u9ad8\u7684\u5c42\u9762\u3002go test -race \u68c0\u6d4b\u7684\u662f\u6570\u636e\u7ade\u4e89\uff0c\u9700\u8981\u540c\u6b65\u6765\u89e3\u51b3\uff0c\u800c\u5f00\u53d1\u8005\u8fd8\u9700\u8981\u5173\u6ce8\u9762\u66f4\u5e7f\u7684\u7ade\u6001\u6761\u4ef6\uff0c\u5b83\u9700\u8981\u5bf9\u591a\u4e2agoroutines\u7684\u6267\u884c\u8fdb\u884c\u7f16\u6392\u3002

    \u7406\u89e3 Go \u7684\u5185\u5b58\u6a21\u578b\u4ee5\u53ca\u6709\u5173\u987a\u5e8f\u548c\u540c\u6b65\u7684\u5e95\u5c42\u4fdd\u8bc1\u662f\u9632\u6b62\u53ef\u80fd\u7684\u6570\u636e\u7ade\u4e89\u548c\u7ade\u6001\u6761\u4ef6\u7684\u5173\u952e\u3002

    "},{"location":"zh/#59","title":"\u4e0d\u7406\u89e3\u4e0d\u540c\u5de5\u4f5c\u8d1f\u8f7d\u7c7b\u578b\u5bf9\u5e76\u53d1\u7684\u5f71\u54cd (#59)","text":"

    \u5f53\u521b\u5efa\u4e00\u5b9a\u6570\u91cf\u7684goroutines\u662f\uff0c\u9700\u8981\u8003\u8651\u5de5\u4f5c\u8d1f\u8f7d\u7684\u7c7b\u578b\u3002\u5982\u679c\u5de5\u4f5c\u8d1f\u8f7d\u662fCPU\u5bc6\u96c6\u578b\u7684\uff0c\u90a3\u4e48goroutines\u6570\u91cf\u5e94\u8be5\u63a5\u8fd1\u4e8e GOMAXPROCS \u7684\u503c\uff08\u8be5\u503c\u53d6\u51b3\u4e8e\u4e3b\u673a\u5904\u7406\u5668\u6838\u5fc3\u6570\uff09\u3002\u5982\u679c\u5de5\u4f5c\u8d1f\u8f7d\u662fIO\u5bc6\u96c6\u578b\u7684\uff0cgoroutines\u6570\u91cf\u5c31\u9700\u8981\u8003\u8651\u591a\u79cd\u56e0\u7d20\uff0c\u6bd4\u5982\u5916\u90e8\u7cfb\u7edf\uff08\u8003\u8651\u8bf7\u6c42\u3001\u54cd\u5e94\u901f\u7387\uff09\u3002

    "},{"location":"zh/#go-contexts-60","title":"\u8bef\u89e3\u4e86Go contexts (#60)","text":"

    Go \u7684\u4e0a\u4e0b\u6587\uff08context\uff09\u4e5f\u662f Go \u5e76\u53d1\u7f16\u7a0b\u7684\u57fa\u77f3\u4e4b\u4e00\u3002\u4e0a\u4e0b\u6587\u5141\u8bb8\u60a8\u643a\u5e26\u622a\u6b62\u65f6\u95f4\u3001\u53d6\u6d88\u4fe1\u53f7\u548c\u952e\u503c\u5217\u8868\u3002

    "},{"location":"zh/#_8","title":"\u5e76\u53d1\u7f16\u7a0b: \u5b9e\u8df5","text":""},{"location":"zh/#context-61","title":"\u4f20\u9012\u4e0d\u5408\u9002\u7684context (#61)","text":"

    \u5f53\u6211\u4eec\u4f20\u9012\u4e86\u4e00\u4e2acontext\uff0c\u6211\u4eec\u9700\u8981\u77e5\u9053\u8fd9\u4e2acontext\u4ec0\u4e48\u65f6\u5019\u53ef\u4ee5\u88ab\u53d6\u6d88\uff0c\u8fd9\u70b9\u5f88\u91cd\u8981\uff0c\u4f8b\u5982\uff1a\u4e00\u4e2aHTTP\u8bf7\u6c42\u5904\u7406\u5668\u5728\u53d1\u9001\u5b8c\u54cd\u5e94\u540e\u53d6\u6d88context\u3002

    ps: \u5b9e\u9645\u4e0acontext\u8868\u8fbe\u7684\u662f\u4e00\u4e2a\u52a8\u4f5c\u53ef\u4ee5\u6301\u7eed\u591a\u4e45\u4e4b\u540e\u88ab\u505c\u6b62\u3002

    "},{"location":"zh/#goroutine-62","title":"\u542f\u52a8\u4e86\u4e00\u4e2agoroutine\u4f46\u662f\u4e0d\u77e5\u9053\u5b83\u4f55\u65f6\u4f1a\u505c\u6b62 (#62)","text":"

    \u907f\u514dgoroutine\u6cc4\u6f0f\uff0c\u8981\u6709\u8fd9\u79cd\u610f\u8bc6\uff0c\u5f53\u521b\u5efa\u5e76\u542f\u52a8\u4e00\u4e2agoroutine\u7684\u65f6\u5019\uff0c\u5e94\u8be5\u6709\u5bf9\u5e94\u7684\u8bbe\u8ba1\u8ba9\u5b83\u80fd\u6b63\u5e38\u9000\u51fa\u3002

    "},{"location":"zh/#goroutines-63","title":"\u4e0d\u6ce8\u610f\u5904\u7406 goroutines \u548c \u5faa\u73af\u4e2d\u7684\u8fed\u4ee3\u53d8\u91cf (#63)","text":"

    \u4e3a\u4e86\u907f\u514dgoroutines\u548c\u5faa\u73af\u4e2d\u7684\u8fed\u4ee3\u53d8\u91cf\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u521b\u5efa\u5c40\u90e8\u53d8\u91cf\u5e76\u5c06\u8fed\u4ee3\u53d8\u91cf\u8d4b\u503c\u7ed9\u5c40\u90e8\u53d8\u91cf\uff0c\u6216\u8005goroutine\u8c03\u7528\u5e26\u53c2\u6570\u7684\u51fd\u6570\uff0c\u5c06\u8fed\u4ee3\u53d8\u91cf\u503c\u4f5c\u4e3a\u53c2\u6570\u503c\u4f20\u5165\uff0c\u6765\u4ee3\u66ffgoroutine\u8c03\u7528\u95ed\u5305\u3002

    "},{"location":"zh/#select-channels-64","title":"\u4f7f\u7528select + channels \u65f6\u8bef\u4ee5\u4e3a\u5206\u652f\u9009\u62e9\u987a\u5e8f\u662f\u786e\u5b9a\u7684 (#64)","text":"

    \u8981\u660e\u767d\uff0cselect \u591a\u4e2achannels\u65f6\uff0c\u5982\u679c\u591a\u4e2achannels\u4e0a\u7684\u64cd\u4f5c\u90fd\u5c31\u7eea\uff0c\u90a3\u4e48\u4f1a\u968f\u673a\u9009\u62e9\u4e00\u4e2a case \u5206\u652f\u6765\u6267\u884c\uff0c\u56e0\u6b64\u8981\u907f\u514d\u6709\u5206\u652f\u9009\u62e9\u987a\u5e8f\u662f\u4ece\u4e0a\u5230\u4e0b\u7684\u8fd9\u79cd\u9519\u8bef\u9884\u8bbe\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bbe\u8ba1\u4e0a\u7684bug\u3002

    "},{"location":"zh/#channels-65","title":"\u4e0d\u6b63\u786e\u4f7f\u7528\u901a\u77e5 channels (#65)","text":"

    \u53d1\u9001\u901a\u77e5\u65f6\u4f7f\u7528 chan struct{} \u7c7b\u578b\u3002

    ps: \u5148\u660e\u767d\u4ec0\u4e48\u662f\u901a\u77e5channels\uff0c\u4e00\u4e2a\u901a\u77e5channels\u6307\u7684\u662f\u53ea\u662f\u7528\u6765\u505a\u901a\u77e5\uff0c\u800c\u5176\u4e2d\u4f20\u9012\u7684\u6570\u636e\u6ca1\u6709\u610f\u4e49\uff0c\u6216\u8005\u7406\u89e3\u6210\u4e0d\u4f20\u9012\u6570\u636e\u7684channels\uff0c\u8fd9\u79cd\u79f0\u4e3a\u901a\u77e5channels\u3002\u5176\u4e2d\u4f20\u9012\u7684\u6570\u636e\u7684\u7c7b\u578bstruct{}\u66f4\u5408\u9002\u3002

    "},{"location":"zh/#nil-channels-66","title":"\u4e0d\u4f7f\u7528 nil channels (#66)","text":"

    \u4f7f\u7528 nil channels \u5e94\u8be5\u662f\u5e76\u53d1\u5904\u7406\u65b9\u5f0f\u4e2d\u7684\u4e00\u90e8\u5206\uff0c\u4f8b\u5982\uff0c\u5b83\u80fd\u591f\u5e2e\u52a9\u7981\u7528 select \u8bed\u53e5\u4e2d\u7684\u7279\u5b9a\u7684\u5206\u652f\u3002

    "},{"location":"zh/#channel-size-67","title":"\u4e0d\u6e05\u695a\u8be5\u5982\u4f55\u786e\u5b9a channel size (#67)","text":"

    \u6839\u636e\u6307\u5b9a\u7684\u573a\u666f\u4ed4\u7ec6\u8bc4\u4f30\u5e94\u8be5\u4f7f\u7528\u54ea\u4e00\u79cd channel \u7c7b\u578b\uff08\u5e26\u7f13\u51b2\u7684\uff0c\u4e0d\u5e26\u7f13\u51b2\u7684\uff09\u3002\u53ea\u6709\u4e0d\u5e26\u7f13\u51b2\u7684 channels \u53ef\u4ee5\u63d0\u4f9b\u5f3a\u540c\u6b65\u4fdd\u8bc1\u3002

    \u4f7f\u7528\u5e26\u7f13\u51b2\u7684 channels \u65f6\u5982\u679c\u4e0d\u786e\u5b9a size \u8be5\u5982\u4f55\u8bbe\u7f6e\uff0c\u53ef\u4ee5\u5148\u8bbe\u4e3a1\uff0c\u5982\u679c\u6709\u5408\u7406\u7684\u7406\u7531\u518d\u53bb\u6307\u5b9a channels size\u3002

    ps: \u6839\u636edisruptor\u8fd9\u4e2a\u9ad8\u6027\u80fd\u5185\u5b58\u6d88\u606f\u961f\u5217\u7684\u5b9e\u8df5\uff0c\u5728\u67d0\u79cd\u8bfb\u5199pacing\u4e0b\uff0c\u961f\u5217\u8981\u4e48\u6ee1\u8981\u4e48\u7a7a\uff0c\u4e0d\u5927\u53ef\u80fd\u5904\u4e8e\u67d0\u79cd\u4ecb\u4e8e\u4e2d\u95f4\u7684\u7a33\u6001\u3002

    "},{"location":"zh/#etcd-68","title":"\u5fd8\u8bb0\u4e86\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u53ef\u80fd\u5e26\u6765\u7684\u526f\u4f5c\u7528\uff08\u4f8b\u5982 etcd \u6570\u636e\u7ade\u4e89\u548c\u6b7b\u9501\uff09(#68)","text":"

    \u610f\u8bc6\u5230\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8c03\u7528\u73b0\u6709\u51fd\u6570\uff0c\u8fd9\u610f\u5473\u7740\u9700\u8981\u6ce8\u610f\u53ef\u80fd\u7684\u6b7b\u9501\u548c\u5176\u4ed6\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    ps: \u6838\u5fc3\u662f\u8981\u5173\u6ce8 fmt.Sprintf + %v \u8fdb\u884c\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u65f6 %v \u5177\u4f53\u5230\u4e0d\u540c\u7684\u7c7b\u578b\u503c\u65f6\uff0c\u5b9e\u9645\u4e0a\u6267\u884c\u7684\u64cd\u4f5c\u662f\u4ec0\u4e48\u3002\u6bd4\u5982 %v \u8fd9\u4e2aplaceholder\u5bf9\u5e94\u7684\u503c\u65f6\u4e00\u4e2a context.Context\uff0c\u90a3\u4e48\u4f1a\u5c31\u904d\u5386\u5176\u901a\u8fc7 context.WithValue \u9644\u52a0\u5728\u5176\u4e2d\u7684 values\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u53ef\u80fd\u6d89\u53ca\u5230\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002\u4e66\u4e2d\u63d0\u53ca\u7684\u53e6\u4e00\u4e2a\u5bfc\u81f4\u6b7b\u9501\u7684\u6848\u4f8b\u672c\u8d28\u4e0a\u4e5f\u662f\u4e00\u6837\u7684\u95ee\u9898\uff0c\u53ea\u4e0d\u8fc7\u53c8\u989d\u5916\u7275\u626f\u5230\u4e86 sync.RWMutex \u4e0d\u53ef\u91cd\u5165\u7684\u95ee\u9898\u3002

    "},{"location":"zh/#append-69","title":"\u4f7f\u7528 append \u4e0d\u5f53\u5bfc\u81f4\u6570\u636e\u7ade\u4e89 (#69)","text":"

    \u8c03\u7528 append \u4e0d\u603b\u662f\u6ca1\u6709\u6570\u636e\u7ade\u4e89\u7684\uff0c\u56e0\u6b64\u4e0d\u8981\u5728\u4e00\u4e2a\u5171\u4eab\u7684 slice \u4e0a\u5e76\u53d1\u5730\u6267\u884c append\u3002

    "},{"location":"zh/#mutexes-slicesmaps-70","title":"\u8bef\u7528 mutexes \u548c slices\u3001maps (#70)","text":"

    \u8bf7\u8bb0\u4f4f slices \u548c maps \u5f15\u7528\u7c7b\u578b\uff0c\u6709\u52a9\u4e8e\u907f\u514d\u5e38\u89c1\u7684\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    ps: \u8fd9\u91cc\u5b9e\u9645\u662f\u56e0\u4e3a\u9519\u8bef\u7406\u89e3\u4e86 slices \u548c maps\uff0c\u5bfc\u81f4\u5199\u51fa\u4e86\u9519\u8bef\u7684\u62f7\u8d1d slices \u548c maps \u7684\u4ee3\u7801\uff0c\u8fdb\u800c\u5bfc\u81f4\u9501\u4fdd\u62a4\u65e0\u6548\u3001\u51fa\u73b0\u6570\u636e\u7ade\u4e89\u95ee\u9898\u3002

    "},{"location":"zh/#syncwaitgroup-71","title":"\u8bef\u7528 sync.WaitGroup (#71)","text":"

    \u6b63\u786e\u5730\u4f7f\u7528 sync.WaitGroup \u9700\u8981\u5728\u542f\u52a8 goroutines \u4e4b\u524d\u5148\u8c03\u7528 Add \u65b9\u6cd5\u3002

    "},{"location":"zh/#synccond-72","title":"\u5fd8\u8bb0\u4f7f\u7528 sync.Cond (#72)","text":"

    \u4f60\u53ef\u4ee5\u4f7f\u7528 sync.Cond \u5411\u591a\u4e2a goroutines \u53d1\u9001\u91cd\u590d\u7684\u901a\u77e5\u3002

    "},{"location":"zh/#errgroup-73","title":"\u4e0d\u4f7f\u7528 errgroup (#73)","text":"

    \u4f60\u53ef\u4ee5\u4f7f\u7528 errgroup \u5305\u6765\u540c\u6b65\u4e00\u7ec4 goroutines \u5e76\u5904\u7406\u9519\u8bef\u548c\u4e0a\u4e0b\u6587\u3002

    "},{"location":"zh/#sync-74","title":"\u62f7\u8d1d\u4e00\u4e2a sync \u4e0b\u7684\u7c7b\u578b (#74)","text":"

    sync \u5305\u4e0b\u7684\u7c7b\u578b\u4e0d\u5e94\u8be5\u88ab\u62f7\u8d1d\u3002

    "},{"location":"zh/#_9","title":"\u6807\u51c6\u5e93","text":""},{"location":"zh/#timeduration-75","title":"\u4f7f\u7528\u4e86\u9519\u8bef\u7684 time.Duration (#75)","text":"

    \u6ce8\u610f\u6709\u4e9b\u51fd\u6570\u63a5\u6536\u4e00\u4e2a time.Duration \u7c7b\u578b\u7684\u53c2\u6570\u65f6\uff0c\u5c3d\u7ba1\u76f4\u63a5\u4f20\u9012\u4e00\u4e2a\u6574\u6570\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u6700\u597d\u8fd8\u662f\u4f7f\u7528 time API \u4e2d\u7684\u65b9\u6cd5\u6765\u4f20\u9012 duration\uff0c\u4ee5\u907f\u514d\u53ef\u80fd\u9020\u6210\u7684\u56f0\u60d1\u3001bug\u3002

    ps: \u91cd\u70b9\u662f\u6ce8\u610f time.Duration \u5b9a\u4e49\u7684\u662f nanoseconds \u6570\u3002

    "},{"location":"zh/#timeafter-76","title":"time.After \u548c\u5185\u5b58\u6cc4\u6f0f (#76)","text":"

    \u907f\u514d\u5728\u91cd\u590d\u6267\u884c\u5f88\u591a\u6b21\u7684\u51fd\u6570 \uff08\u5982\u5faa\u73af\u4e2d\u6216HTTP\u5904\u7406\u51fd\u6570\uff09\u4e2d\u8c03\u7528 time.After\uff0c\u8fd9\u53ef\u4ee5\u907f\u514d\u5185\u5b58\u5cf0\u503c\u6d88\u8017\u3002\u7531 time.After \u521b\u5efa\u7684\u8d44\u6e90\u4ec5\u5728\u8ba1\u65f6\u5668\u8d85\u65f6\u624d\u4f1a\u88ab\u91ca\u653e\u3002

    "},{"location":"zh/#json-77","title":"JSON\u5904\u7406\u4e2d\u7684\u5e38\u89c1\u9519\u8bef (#77)","text":"
    • \u7c7b\u578b\u5d4c\u5957\u5bfc\u81f4\u7684\u9884\u6599\u5916\u7684\u884c\u4e3a

    \u8981\u5f53\u5fc3\u5728Go\u7ed3\u6784\u4f53\u4e2d\u5d4c\u5165\u5b57\u6bb5\uff0c\u8fd9\u6837\u505a\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8bf8\u5982\u5d4c\u5165\u7684 time.Time \u5b57\u6bb5\u5b9e\u73b0 json.Marshaler \u63a5\u53e3\uff0c\u4ece\u800c\u8986\u76d6\u9ed8\u8ba4\u7684json\u5e8f\u5217\u3002

    • JSON \u548c \u5355\u8c03\u65f6\u949f

    \u5f53\u5bf9\u4e24\u4e2a time.Time \u7c7b\u578b\u503c\u8fdb\u884c\u6bd4\u8f83\u65f6\uff0c\u9700\u8981\u8bb0\u4f4f time.Time \u5305\u542b\u4e86\u4e00\u4e2a\u5899\u4e0a\u65f6\u949f\uff08wall clock\uff09\u548c\u4e00\u4e2a\u5355\u8c03\u65f6\u949f \uff08monotonic clock\uff09\uff0c\u800c\u4f7f\u7528 == \u8fd0\u7b97\u7b26\u8fdb\u884c\u6bd4\u8f83\u65f6\u4f1a\u540c\u65f6\u6bd4\u8f83\u8fd9\u4e24\u4e2a\u3002

    • Map \u952e\u5bf9\u5e94\u503c\u4e3a any

    \u5f53\u63d0\u4f9b\u4e00\u4e2amap\u7528\u6765unmarshal JSON\u6570\u636e\u65f6\uff0c\u4e3a\u4e86\u907f\u514d\u4e0d\u786e\u5b9a\u7684value\u7ed3\u6784\u6211\u4eec\u4f1a\u4f7f\u7528 any \u6765\u4f5c\u4e3avalue\u7684\u7c7b\u578b\u800c\u4e0d\u662f\u5b9a\u4e49\u4e00\u4e2astruct\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u9700\u8981\u8bb0\u5f97\u6570\u503c\u9ed8\u8ba4\u4f1a\u88ab\u8f6c\u6362\u4e3a float64\u3002

    "},{"location":"zh/#sql-78","title":"\u5e38\u89c1\u7684 SQL \u9519\u8bef (#78)","text":"
    • \u5fd8\u8bb0\u4e86 sql.Open \u5e76\u6ca1\u6709\u4e0edb\u670d\u52a1\u5668\u5efa\u7acb\u5b9e\u9645\u8fde\u63a5

    \u9700\u8981\u8c03\u7528 Ping \u6216\u8005 PingContext \u65b9\u6cd5\u6765\u6d4b\u8bd5\u914d\u7f6e\u5e76\u786e\u4fdd\u6570\u636e\u5e93\u662f\u53ef\u8fbe\u7684\u3002

    • \u5fd8\u8bb0\u4e86\u4f7f\u7528\u8fde\u63a5\u6c60

    \u4f5c\u4e3a\u751f\u4ea7\u7ea7\u522b\u7684\u5e94\u7528\uff0c\u8bbf\u95ee\u6570\u636e\u5e93\u65f6\u5e94\u8be5\u5173\u6ce8\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u53c2\u6570\u3002

    • \u6ca1\u6709\u4f7f\u7528 prepared \u8bed\u53e5

    \u4f7f\u7528 SQL prepared \u8bed\u53e5\u80fd\u591f\u8ba9\u67e5\u8be2\u66f4\u52a0\u9ad8\u6548\u548c\u5b89\u5168\u3002

    • \u8bef\u5904\u7406 null \u503c

    \u4f7f\u7528 sql.NullXXX \u7c7b\u578b\u5904\u7406\u8868\u4e2d\u7684\u53ef\u7a7a\u5217\u3002

    • \u4e0d\u5904\u7406\u884c\u8fed\u4ee3\u65f6\u7684\u9519\u8bef

    \u8c03\u7528 sql.Rows \u7684 Err \u65b9\u6cd5\u6765\u786e\u4fdd\u5728\u51c6\u5907\u4e0b\u4e00\u4e2a\u884c\u65f6\u6ca1\u6709\u9057\u6f0f\u9519\u8bef\u3002

    "},{"location":"zh/#http-sqlrows-osfile-79","title":"\u4e0d\u5173\u95ed\u4e34\u65f6\u8d44\u6e90\uff08HTTP \u8bf7\u6c42\u4f53\u3001sql.Rows \u548c os.File) (#79)","text":"

    \u6700\u7ec8\u8981\u6ce8\u610f\u5173\u95ed\u6240\u6709\u5b9e\u73b0 io.Closer \u63a5\u53e3\u7684\u7ed3\u6784\u4f53,\u4ee5\u907f\u514d\u53ef\u80fd\u7684\u6cc4\u6f0f\u3002

    "},{"location":"zh/#http-80","title":"\u54cd\u5e94HTTP\u8bf7\u6c42\u540e\u6ca1\u6709\u8fd4\u56de\u8bed\u53e5 (#80)","text":"

    \u4e3a\u4e86\u907f\u514d\u5728HTTP\u5904\u7406\u51fd\u6570\u4e2d\u51fa\u73b0\u67d0\u4e9b\u610f\u5916\u7684\u95ee\u9898\uff0c\u5982\u679c\u60f3\u5728\u53d1\u751f http.Error \u540e\u8ba9HTTP\u5904\u7406\u51fd\u6570\u505c\u6b62\uff0c\u90a3\u4e48\u5c31\u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528return\u8bed\u53e5\u6765\u963b\u6b62\u540e\u7eed\u4ee3\u7801\u7684\u6267\u884c\u3002

    "},{"location":"zh/#http-clientserver-81","title":"\u76f4\u63a5\u4f7f\u7528\u9ed8\u8ba4\u7684HTTP client\u548cserver (#81)","text":"

    \u5bf9\u4e8e\u751f\u4ea7\u7ea7\u522b\u7684\u5e94\u7528\uff0c\u4e0d\u8981\u4f7f\u7528\u9ed8\u8ba4\u7684HTTP client\u548cserver\u5b9e\u73b0\u3002\u8fd9\u4e9b\u5b9e\u73b0\u7f3a\u5c11\u8d85\u65f6\u548c\u751f\u4ea7\u73af\u5883\u4e2d\u5e94\u8be5\u5f3a\u5236\u4f7f\u7528\u7684\u884c\u4e3a\u3002

    "},{"location":"zh/#_10","title":"\u6d4b\u8bd5","text":""},{"location":"zh/#build-tags-82","title":"\u4e0d\u5bf9\u6d4b\u8bd5\u8fdb\u884c\u5206\u7c7b \uff08build tags, \u73af\u5883\u53d8\u91cf\uff0c\u77ed\u6a21\u5f0f\uff09(#82)","text":"

    \u5bf9\u6d4b\u8bd5\u8fdb\u884c\u5fc5\u8981\u7684\u5206\u7c7b\uff0c\u53ef\u4ee5\u501f\u52a9 build tags\u3001\u73af\u5883\u53d8\u91cf\u4ee5\u53ca\u77ed\u6a21\u5f0f\uff0c\u6765\u4f7f\u5f97\u6d4b\u8bd5\u8fc7\u7a0b\u66f4\u52a0\u9ad8\u6548\u3002\u4f60\u53ef\u4ee5\u4f7f\u7528 build tags \u6216\u73af\u5883\u53d8\u91cf\u6765\u521b\u5efa\u6d4b\u8bd5\u7c7b\u522b\uff08\u4f8b\u5982\u5355\u5143\u6d4b\u8bd5\u4e0e\u96c6\u6210\u6d4b\u8bd5\uff09\uff0c\u5e76\u533a\u5206\u77ed\u6d4b\u8bd5\u4e0e\u957f\u65f6\u95f4\u6d4b\u8bd5\uff0c\u6765\u51b3\u5b9a\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u3002

    ps: \u4e86\u89e3\u4e0bgo build tags\uff0c\u4ee5\u53ca go test -short\u3002

    "},{"location":"zh/#race-83","title":"\u4e0d\u6253\u5f00 race \u5f00\u5173 (#83)","text":"

    \u6253\u5f00 -race \u5f00\u5173\u5728\u7f16\u5199\u5e76\u53d1\u5e94\u7528\u65f6\u975e\u5e38\u91cd\u8981\u3002\u8fd9\u80fd\u5e2e\u52a9\u4f60\u6355\u83b7\u53ef\u80fd\u7684\u6570\u636e\u7ade\u4e89,\u4ece\u800c\u907f\u514d\u8f6f\u4ef6bug\u3002

    "},{"location":"zh/#parallel-shuffle-84","title":"\u4e0d\u6253\u5f00\u6d4b\u8bd5\u7684\u6267\u884c\u6a21\u5f0f\u5f00\u5173 (parallel \u548c shuffle) (#84)","text":"

    \u6253\u5f00\u5f00\u5173 -parallel \u6709\u52a9\u4e8e\u52a0\u901f\u6d4b\u8bd5\u7684\u6267\u884c\uff0c\u7279\u522b\u662f\u6d4b\u8bd5\u4e2d\u5305\u542b\u4e00\u4e9b\u9700\u8981\u957f\u671f\u8fd0\u884c\u7684\u7528\u4f8b\u7684\u65f6\u5019\u3002

    \u6253\u5f00\u5f00\u5173 -shuffle \u80fd\u591f\u6253\u4e71\u6d4b\u8bd5\u7528\u4f8b\u6267\u884c\u7684\u987a\u5e8f\uff0c\u907f\u514d\u4e00\u4e2a\u6d4b\u8bd5\u4f9d\u8d56\u4e8e\u67d0\u4e9b\u4e0d\u7b26\u5408\u771f\u5b9e\u60c5\u51b5\u7684\u9884\u8bbe\uff0c\u6709\u52a9\u4e8e\u53ca\u65e9\u66b4\u6f0fbug\u3002

    "},{"location":"zh/#85","title":"\u4e0d\u4f7f\u7528\u8868\u9a71\u52a8\u7684\u6d4b\u8bd5 (#85)","text":"

    \u8868\u9a71\u52a8\u7684\u6d4b\u8bd5\u662f\u4e00\u79cd\u6709\u6548\u7684\u65b9\u5f0f,\u53ef\u4ee5\u5c06\u4e00\u7ec4\u76f8\u4f3c\u7684\u6d4b\u8bd5\u5206\u7ec4\u5728\u4e00\u8d77,\u4ee5\u907f\u514d\u4ee3\u7801\u91cd\u590d\u548c\u4f7f\u672a\u6765\u7684\u66f4\u65b0\u66f4\u5bb9\u6613\u5904\u7406\u3002

    "},{"location":"zh/#sleep-86","title":"\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u6267\u884csleep\u64cd\u4f5c (#86)","text":"

    \u4f7f\u7528\u540c\u6b65\u7684\u65b9\u5f0f\u3001\u907f\u514dsleep\uff0c\u6765\u5c3d\u91cf\u51cf\u5c11\u6d4b\u8bd5\u7684\u4e0d\u7a33\u5b9a\u6027\u548c\u63d0\u9ad8\u9c81\u68d2\u6027\u3002\u5982\u679c\u65e0\u6cd5\u4f7f\u7528\u540c\u6b65\u624b\u6bb5,\u53ef\u4ee5\u8003\u8651\u91cd\u8bd5\u7684\u65b9\u5f0f\u3002

    "},{"location":"zh/#time-api-87","title":"\u6ca1\u6709\u9ad8\u6548\u5730\u5904\u7406 time API (#87)","text":"

    \u7406\u89e3\u5982\u4f55\u5904\u7406\u4f7f\u7528 time API \u7684\u51fd\u6570\uff0c\u662f\u4f7f\u6d4b\u8bd5\u66f4\u52a0\u7a33\u5b9a\u7684\u53e6\u4e00\u79cd\u65b9\u5f0f\u3002\u60a8\u53ef\u4ee5\u4f7f\u7528\u6807\u51c6\u6280\u672f\uff0c\u4f8b\u5982\u5c06\u65f6\u95f4\u4f5c\u4e3a\u9690\u85cf\u4f9d\u8d56\u9879\u7684\u4e00\u90e8\u5206\u6765\u5904\u7406\uff0c\u6216\u8005\u8981\u6c42\u5ba2\u6237\u7aef\u63d0\u4f9b\u65f6\u95f4\u3002

    "},{"location":"zh/#httptest-iotest-88","title":"\u4e0d\u4f7f\u7528\u6d4b\u8bd5\u76f8\u5173\u7684\u5de5\u5177\u5305 (httptest \u548c iotest) (#88)","text":"

    \u8fd9\u4e2a httptest \u5305\u5bf9\u5904\u7406HTTP\u5e94\u7528\u7a0b\u5e8f\u5f88\u6709\u5e2e\u52a9\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u7ec4\u5b9e\u7528\u7a0b\u5e8f\u6765\u6d4b\u8bd5\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u3002

    \u8fd9\u4e2a iotest \u5305\u6709\u52a9\u4e8e\u7f16\u5199 io.Reader \u5e76\u6d4b\u8bd5\u5e94\u7528\u7a0b\u5e8f\u662f\u5426\u80fd\u591f\u5bb9\u5fcd\u9519\u8bef\u3002

    "},{"location":"zh/#89","title":"\u4e0d\u6b63\u786e\u7684\u57fa\u51c6\u6d4b\u8bd5 (#89)","text":"
    • \u4e0d\u8981\u91cd\u7f6e\u6216\u8005\u6682\u505ctimer

    \u4f7f\u7528 time \u65b9\u6cd5\u6765\u4fdd\u6301\u57fa\u51c6\u6d4b\u8bd5\u7684\u51c6\u786e\u6027\u3002

    • \u505a\u51fa\u9519\u8bef\u7684\u5fae\u57fa\u51c6\u6d4b\u8bd5\u5047\u8bbe

    \u589e\u52a0 benchtime \u6216\u8005\u4f7f\u7528 benchstat \u7b49\u5de5\u5177\u53ef\u4ee5\u6709\u52a9\u4e8e\u5fae\u57fa\u51c6\u6d4b\u8bd5\u3002

    \u5c0f\u5fc3\u5fae\u57fa\u51c6\u6d4b\u8bd5\u7684\u7ed3\u679c,\u5982\u679c\u6700\u7ec8\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u7cfb\u7edf\u4e0e\u8fd0\u884c\u5fae\u57fa\u51c6\u6d4b\u8bd5\u7684\u7cfb\u7edf\u4e0d\u540c\u3002

    • \u5bf9\u7f16\u8bd1\u671f\u4f18\u5316\u8981\u8db3\u591f\u5c0f\u5fc3

    \u786e\u4fdd\u6d4b\u8bd5\u51fd\u6570\u662f\u5426\u4f1a\u4ea7\u751f\u4e00\u4e9b\u526f\u4f5c\u7528\uff0c\u9632\u6b62\u7f16\u8bd1\u5668\u4f18\u5316\u6b3a\u9a97\u4f60\u5f97\u5230\u7684\u57fa\u51c6\u6d4b\u8bd5\u7ed3\u679c\u3002

    • \u88ab\u89c2\u5bdf\u8005\u6548\u5e94\u6240\u6b3a\u9a97

    \u4e3a\u4e86\u907f\u514d\u88ab\u89c2\u5bdf\u8005\u6548\u5e94\u6b3a\u9a97,\u5f3a\u5236\u91cd\u65b0\u521b\u5efaCPU\u5bc6\u96c6\u578b\u51fd\u6570\u4f7f\u7528\u7684\u6570\u636e\u3002

    "},{"location":"zh/#go-test-90","title":"\u6ca1\u6709\u53bb\u63a2\u7d22go test\u6240\u6709\u7684\u7279\u6027 (#90)","text":"
    • \u4ee3\u7801\u8986\u76d6\u7387

    \u4f7f\u7528 -coverprofile \u53c2\u6570\u53ef\u4ee5\u5feb\u901f\u67e5\u770b\u4ee3\u7801\u7684\u6d4b\u8bd5\u8986\u76d6\u60c5\u51b5\uff0c\u65b9\u4fbf\u5feb\u901f\u67e5\u770b\u54ea\u4e2a\u90e8\u5206\u9700\u8981\u66f4\u591a\u7684\u5173\u6ce8\u3002

    • \u5728\u4e00\u4e2a\u4e0d\u540c\u5305\u4e2d\u6267\u884c\u6d4b\u8bd5

    \u5355\u5143\u6d4b\u8bd5\u7ec4\u7ec7\u5230\u4e00\u4e2a\u72ec\u7acb\u7684\u5305\u4e2d\uff0c\u5bf9\u4e8e\u5bf9\u5916\u5c42\u66b4\u6f0f\u7684\u63a5\u53e3\uff0c\u9700\u8981\u5199\u4e00\u4e9b\u6d4b\u8bd5\u7528\u4f8b\u3002\u6d4b\u8bd5\u5e94\u8be5\u5173\u6ce8\u516c\u5f00\u7684\u884c\u4e3a\uff0c\u800c\u975e\u5185\u90e8\u5b9e\u73b0\u7ec6\u8282\u3002

    • Utility \u51fd\u6570

    \u5904\u7406\u9519\u8bef\u65f6,\u4f7f\u7528 *testing.T \u53d8\u91cf\u800c\u4e0d\u662f\u7ecf\u5178\u7684 if err != nil \u53ef\u4ee5\u8ba9\u4ee3\u7801\u66f4\u52a0\u7b80\u6d01\u6613\u8bfb\u3002

    • \u8bbe\u7f6e\u548c\u9500\u6bc1

    \u4f60\u53ef\u4ee5\u4f7f\u7528setup\u548cteardown\u51fd\u6570\u6765\u914d\u7f6e\u4e00\u4e2a\u590d\u6742\u7684\u73af\u5883\uff0c\u6bd4\u5982\u5728\u96c6\u6210\u6d4b\u8bd5\u7684\u60c5\u51b5\u4e0b\u3002

    "},{"location":"zh/#_11","title":"\u4e0d\u4f7f\u7528\u6a21\u7cca\u6d4b\u8bd5 (\u793e\u533a\u53cd\u9988\u9519\u8bef)","text":"

    \u6a21\u7cca\u6d4b\u8bd5\u662f\u4e00\u79cd\u9ad8\u6548\u7684\u7b56\u7565\uff0c\u4f7f\u7528\u5b83\u80fd\u68c0\u6d4b\u51fa\u968f\u673a\u3001\u610f\u6599\u5916\u7684\u548c\u4e00\u4e9b\u6076\u610f\u7684\u6570\u636e\u8f93\u5165\uff0c\u6765\u5b8c\u6210\u4e00\u4e9b\u590d\u6742\u7684\u64cd\u4f5c\u3002

    \u89c1: @jeromedoucet

    "},{"location":"zh/#_12","title":"\u4f18\u5316\u6280\u672f","text":""},{"location":"zh/#cpu-cache-91","title":"\u4e0d\u7406\u89e3CPU cache (#91)","text":"
    • CPU\u67b6\u6784

    \u7406\u89e3CPU\u7f13\u5b58\u7684\u4f7f\u7528\u5bf9\u4e8e\u4f18\u5316CPU\u5bc6\u96c6\u578b\u5e94\u7528\u5f88\u91cd\u8981\uff0c\u56e0\u4e3aL1\u7f13\u5b58\u6bd4\u4e3b\u5b58\u5feb50\u5230100\u500d\u3002

    • Cache line

    \u610f\u8bc6\u5230 cache line \u6982\u5ff5\u5bf9\u4e8e\u7406\u89e3\u5982\u4f55\u5728\u6570\u636e\u5bc6\u96c6\u578b\u5e94\u7528\u4e2d\u7ec4\u7ec7\u6570\u636e\u975e\u5e38\u5173\u952e\u3002CPU \u5e76\u4e0d\u662f\u4e00\u4e2a\u4e00\u4e2a\u5b57\u6765\u83b7\u53d6\u5185\u5b58\u3002\u76f8\u53cd\uff0c\u5b83\u901a\u5e38\u590d\u5236\u4e00\u4e2a 64\u5b57\u8282\u957f\u5ea6\u7684 cache line\u3002\u4e3a\u4e86\u83b7\u5f97\u6bcf\u4e2a cache line \u7684\u6700\u5927\u6548\u7528\uff0c\u9700\u8981\u5b9e\u65bd\u7a7a\u95f4\u5c40\u90e8\u6027\u3002

    • \u4e00\u7cfb\u5217struct\u5143\u7d20\u6784\u6210\u7684slice vs. \u591a\u4e2aslice\u5b57\u6bb5\u6784\u6210\u7684struct

    • \u6982\u7387\u6027\u7684\u95ee\u9898

    \u63d0\u9ad8CPU\u6267\u884c\u4ee3\u7801\u65f6\u7684\u53ef\u9884\u6d4b\u6027\uff0c\u4e5f\u662f\u4f18\u5316\u67d0\u4e9b\u51fd\u6570\u7684\u4e00\u4e2a\u6709\u6548\u65b9\u6cd5\u3002\u6bd4\u5982\uff0c\u56fa\u5b9a\u6b65\u957f\u6216\u8fde\u7eed\u8bbf\u95ee\u5bf9CPU\u6765\u8bf4\u662f\u53ef\u9884\u6d4b\u7684\uff0c\u4f46\u975e\u8fde\u7eed\u8bbf\u95ee\uff08\u4f8b\u5982\u94fe\u8868\uff09\u5c31\u662f\u4e0d\u53ef\u9884\u6d4b\u7684\u3002

    • cache\u653e\u7f6e\u7b56\u7565

    \u8981\u6ce8\u610f\u73b0\u4ee3\u7f13\u5b58\u662f\u5206\u533a\u7684\uff08set associative placement\uff0c\u7ec4\u76f8\u8fde\u6620\u5c04\uff09\uff0c\u8981\u6ce8\u610f\u907f\u514d\u4f7f\u7528 critical stride\uff0c\u8fd9\u79cd\u6b65\u957f\u60c5\u51b5\u4e0b\u53ea\u80fd\u5229\u7528 cache \u7684\u4e00\u5c0f\u90e8\u5206\u3002

    critical stride\uff0c\u8fd9\u79cd\u7c7b\u578b\u7684\u6b65\u957f\uff0c\u6307\u7684\u662f\u5185\u5b58\u8bbf\u95ee\u7684\u6b65\u957f\u521a\u597d\u7b49\u4e8e cache \u5927\u5c0f\u3002\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ea\u6709\u5c11\u90e8\u5206 cacheline \u88ab\u5229\u7528\u3002

    "},{"location":"zh/#false-sharing-92","title":"\u5199\u7684\u5e76\u53d1\u5904\u7406\u903b\u8f91\u4f1a\u5bfc\u81f4false sharing (#92)","text":"

    \u4e86\u89e3 CPU \u7f13\u5b58\u7684\u8f83\u4f4e\u5c42\u7684 L1\u3001L2 cache \u4e0d\u4f1a\u5728\u6240\u6709\u6838\u95f4\u5171\u4eab\uff0c\u7f16\u5199\u5e76\u53d1\u5904\u7406\u903b\u8f91\u65f6\u80fd\u907f\u514d\u5199\u51fa\u4e00\u4e9b\u964d\u4f4e\u6027\u80fd\u7684\u95ee\u9898\uff0c\u6bd4\u5982\u4f2a\u5171\u4eab\uff08false sharing\uff09\u3002\u5185\u5b58\u5171\u4eab\u53ea\u662f\u4e00\u79cd\u5047\u8c61\u3002

    "},{"location":"zh/#93","title":"\u6ca1\u6709\u8003\u8651\u6307\u4ee4\u7ea7\u7684\u5e76\u884c (#93)","text":"

    \u4f7f\u7528\u6307\u4ee4\u7ea7\u5e76\u884c\uff08ILP\uff09\u4f18\u5316\u4ee3\u7801\u7684\u7279\u5b9a\u90e8\u5206\uff0c\u4ee5\u5141\u8bb8CPU\u5c3d\u53ef\u80fd\u6267\u884c\u66f4\u591a\u53ef\u4ee5\u5e76\u884c\u6267\u884c\u7684\u6307\u4ee4\u3002\u8bc6\u522b\u6307\u4ee4\u7684\u6570\u636e\u4f9d\u8d56\u95ee\u9898\uff08data hazards\uff09\u662f\u4e3b\u8981\u6b65\u9aa4\u4e4b\u4e00\u3002

    "},{"location":"zh/#94","title":"\u4e0d\u4e86\u89e3\u6570\u636e\u5bf9\u9f50 (#94)","text":"

    \u8bb0\u4f4fGo\u4e2d\u57fa\u672c\u7c7b\u578b\u4e0e\u5176\u81ea\u8eab\u5927\u5c0f\u5bf9\u9f50\uff0c\u4f8b\u5982\uff0c\u6309\u964d\u5e8f\u4ece\u5927\u5230\u5c0f\u91cd\u65b0\u7ec4\u7ec7\u7ed3\u6784\u4f53\u7684\u5b57\u6bb5\u53ef\u4ee5\u5f62\u6210\u66f4\u7d27\u51d1\u7684\u7ed3\u6784\u4f53\uff08\u51cf\u5c11\u5185\u5b58\u5206\u914d\uff0c\u66f4\u597d\u7684\u7a7a\u95f4\u5c40\u90e8\u6027\uff09\uff0c\u8fd9\u6709\u52a9\u4e8e\u907f\u514d\u4e00\u4e9b\u5e38\u89c1\u7684\u9519\u8bef\u3002

    "},{"location":"zh/#stack-vs-heap-95","title":"\u4e0d\u4e86\u89e3 stack vs. heap (#95)","text":"

    \u4e86\u89e3\u5806\u548c\u6808\u4e4b\u95f4\u7684\u533a\u522b\u662f\u5f00\u53d1\u4eba\u5458\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u7279\u522b\u662f\u8981\u53bb\u4f18\u5316\u4e00\u4e2aGo\u7a0b\u5e8f\u65f6\u3002\u6808\u5206\u914d\u7684\u5f00\u9500\u51e0\u4e4e\u4e3a\u96f6\uff0c\u800c\u5806\u5206\u914d\u5219\u8f83\u6162\uff0c\u5e76\u4e14\u4f9d\u8d56GC\u6765\u6e05\u7406\u5185\u5b58\u3002

    "},{"location":"zh/#api-compiler-optimizations-and-syncpool-96","title":"\u4e0d\u77e5\u9053\u5982\u4f55\u51cf\u5c11\u5185\u5b58\u5206\u914d\u6b21\u6570 (API\u8c03\u6574, compiler optimizations, and sync.Pool) (#96)","text":"

    \u51cf\u5c11\u5185\u5b58\u5206\u914d\u6b21\u6570\u4e5f\u662f\u4f18\u5316Go\u5e94\u7528\u7684\u4e00\u4e2a\u91cd\u8981\u65b9\u9762\u3002\u8fd9\u53ef\u4ee5\u901a\u8fc7\u4e0d\u540c\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0,\u6bd4\u5982\u4ed4\u7ec6\u8bbe\u8ba1API\u6765\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u62f7\u8d1d\uff0c\u4ee5\u53ca\u4f7f\u7528 sync.Pool \u6765\u5bf9\u5f85\u5206\u914d\u5bf9\u8c61\u8fdb\u884c\u6c60\u5316\u3002

    "},{"location":"zh/#97","title":"\u4e0d\u6ce8\u610f\u4f7f\u7528\u5185\u8054 (#97)","text":"

    \u4f7f\u7528\u5feb\u901f\u8def\u5f84\u7684\u5185\u8054\u6280\u672f\u6765\u66f4\u52a0\u6709\u6548\u5730\u51cf\u5c11\u8c03\u7528\u51fd\u6570\u7684\u644a\u9500\u65f6\u95f4\u3002

    "},{"location":"zh/#go-98","title":"\u4e0d\u4f7f\u7528Go\u95ee\u9898\u8bca\u65ad\u5de5\u5177 (#98)","text":"

    \u4e86\u89e3Go profilng\u5de5\u5177\u3001\u6267\u884c\u65f6tracer\u6765\u8f85\u52a9\u5224\u65ad\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\u662f\u5426\u6b63\u5e38\uff0c\u4ee5\u53ca\u5217\u51fa\u9700\u8981\u4f18\u5316\u7684\u90e8\u5206\u3002

    "},{"location":"zh/#gc-99","title":"\u4e0d\u7406\u89e3GC\u662f\u5982\u4f55\u5de5\u4f5c\u7684 (#99)","text":"

    \u7406\u89e3\u5982\u4f55\u8c03\u4f18GC\u80fd\u591f\u5e26\u6765\u5f88\u591a\u6536\u76ca\uff0c\u4f8b\u5982\u6709\u52a9\u4e8e\u66f4\u9ad8\u6548\u5730\u5904\u7406\u7a81\u589e\u7684\u8d1f\u8f7d\u3002

    "},{"location":"zh/#dockerk8sgo-100","title":"\u4e0d\u4e86\u89e3Docker\u6216\u8005K8S\u5bf9\u8fd0\u884c\u7684Go\u5e94\u7528\u7684\u6027\u80fd\u5f71\u54cd (#100)","text":"

    \u4e3a\u4e86\u907f\u514dCPU throttling\uff08CPU\u9650\u9891\uff09\u95ee\u9898\uff0c\u5f53\u6211\u4eec\u5728Docker\u548cKubernetes\u90e8\u7f72\u5e94\u7528\u65f6\uff0c\u8981\u77e5\u9053Go\u8bed\u8a00\u5bf9CFS(\u5b8c\u5168\u516c\u5e73\u8c03\u5ea6\u5668)\u65e0\u611f\u77e5\u3002

    "}]} \ No newline at end of file diff --git a/site/sitemap.xml.gz b/site/sitemap.xml.gz index afdfdd1b36b457183ded7ec2e3cdccff6b65b770..9c8c925980552e60c139904de091c1ac3edaeb78 100644 GIT binary patch delta 15 Wcmcb{bd8BkzMF$XDRU!R03!e-&IAMi delta 15 Wcmcb{bd8BkzMF$XHhv>p03!e-egpLY