From 8a632e764b48ff18f4a86a77ea935ce0c0dc8a97 Mon Sep 17 00:00:00 2001 From: ledgerwatch Date: Fri, 6 Dec 2019 12:03:12 +0000 Subject: [PATCH] Continue comparison of genesis block with geth, expand long values (#223) --- cmd/pics/state.go | 6 +- docs/programmers_guide/changes_0.dot.gd.png | Bin 15368 -> 18054 bytes .../changes_0_ChangeSet_1.dot.gd.png | Bin 4465 -> 11059 bytes .../changes_0_h_8.dot.gd.png | Bin 12174 -> 32373 bytes docs/programmers_guide/db_walkthrough.MD | 70 +++++++++++++++--- .../geth_changes_0.dot.gd.png | Bin 0 -> 16818 bytes .../geth_changes_0_b_5.dot.gd.png | Bin 0 -> 4531 bytes .../geth_changes_0_hashes_0.dot.gd.png | Bin 0 -> 52042 bytes trie/visual.go | 45 +---------- visual/hexary.go | 48 ++++++++++++ 10 files changed, 111 insertions(+), 58 deletions(-) create mode 100644 docs/programmers_guide/geth_changes_0.dot.gd.png create mode 100644 docs/programmers_guide/geth_changes_0_b_5.dot.gd.png create mode 100644 docs/programmers_guide/geth_changes_0_hashes_0.dot.gd.png diff --git a/cmd/pics/state.go b/cmd/pics/state.go index c66894ed4..76d22781c 100644 --- a/cmd/pics/state.go +++ b/cmd/pics/state.go @@ -203,8 +203,7 @@ func stateDatabaseComparison(first *bolt.DB, second *bolt.DB, number int) error visual.Horizontal(f1, key, len(key), fmt.Sprintf("k_%d", i), visual.HexIndexColors, visual.HexFontColors, 0) if len(val) > 0 { if len(val) > 64 { - compression := len(val) - 64 - visual.Horizontal(f1, val, len(val), fmt.Sprintf("v_%d", i), visual.HexIndexColors, visual.HexFontColors, compression) + visual.HexBox(f1, fmt.Sprintf("v_%d", i), val, 64, false /*compresses*/, true /*highlighted*/) } else { visual.Horizontal(f1, val, len(val), fmt.Sprintf("v_%d", i), visual.HexIndexColors, visual.HexFontColors, 0) } @@ -216,8 +215,7 @@ func stateDatabaseComparison(first *bolt.DB, second *bolt.DB, number int) error visual.Horizontal(f, key, 0, fmt.Sprintf("k_%d", i), visual.HexIndexColors, visual.HexFontColors, 0) if len(val) > 0 { if len(val) > 64 { - compression := len(val) - 64 - visual.Horizontal(f, val, 0, fmt.Sprintf("v_%d", i), visual.HexIndexColors, visual.HexFontColors, compression) + visual.HexBox(f, fmt.Sprintf("v_%d", i), val, 64, false /*compressed*/, false /*highlighted*/) } else { visual.Horizontal(f, val, 0, fmt.Sprintf("v_%d", i), visual.HexIndexColors, visual.HexFontColors, 0) } diff --git a/docs/programmers_guide/changes_0.dot.gd.png b/docs/programmers_guide/changes_0.dot.gd.png index 674a9517220670bb8b726fd9660c07aa1e2fcb98..47bfceca7d59dd65a76c081c229b13827cbcaf38 100644 GIT binary patch literal 18054 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 literal 15368 zcmd6Od0Z1$*D!9y9hWLv!PL6e1>8ZlsHmuHtrjCoh>D6B0RbI-YFKlkbv zc2={de==Q5OKaAF{d*2+X-&q!$ z!{hNB4hKw$Vc4#11YPiJg5M##!&*CgU!4XI)6VaA^wrXuU9Gt$++H_(iI&!(e^c@!Zz|OSxTv4-gKz%(nQ|lN9 z)2o=Ib$*UY`|;X;;(CyyXq@yINxPlloW_OS^B3*BB*1Cq{`R`|a&%BYd_3BWf0u`Y zs~wcyC#Py+eG7@~kE3P`#d;I&{d;L1B)y7)jKeZ_3;l+G^Y0k!c1u@aJ z#z?#4Ms_@YuWe$*{T?4N`*8E%(DitkS&xu+4)C%7bT z^$yYSsowXMcT{)wU^f_SHB^-a+2U=XcKH3;l52fo!~jP<7{@6ue>aQxZvM&3V7)~G zlCwRBH%w=h569A}J=&jfo>h&!o=RF&7>zC?$DkBpOt_eV#umpSWg#z38_ZbBI_qPa zzqXF5hU#ly!S|H51ciZ|9tb}3sCae(q2bir2D6AcLo=2y1mr$9h7?Py^Jn8D-j&vJ zmwDTkwAL+YKdo{Pxk;bV7h|h>b~0%P%k!xkTGfnC>`?{%xXLCI+PJ!6Of0|&aC!Gb z7QmkqOEdi^M}yZn`Jo-Mi{QOh*>9QrdyN16ch|(}(VmSawRUd>(c6OyqKB^Zc~j91 zhS(~O+xyj0_@)tua-R>aMBTfg6=?A02IU4RX+E}6nts!xg3Y&B$q8ZeDP^s2IZbgE zE_8J?$Qh-obFFQ;!xW;DBx**QLW0cjt2jN`!l0!VD>y?=>BGUJ#=@|x*)hY;?ZGdW zUHpjSmfv?`^iBW6CbxqKVmy)i0x)sn96^c)o0T>eAvyh z?(1yP(dLVc@>WBpMev&V091fOG9if-Cg3^9+Wr)cbWpr6!L1?~Jp}s8_d5IcIqKEC( z73DO<(Snv_Pi2eEM2k!>2^YNxB`tMhyX}vU%@!S!8FDj4Y&Yvd3v;VB+y=UWY;F=o zt&1|)Mr_Pa;9g{y>tANNctO%P_H{)?bdfjiN8&i8I|0REplbjN7ZzZEXZ zfaKnBfEUjJD`*@IORib|jX^o01hsa18s&QG<7OSt;nO<&xs5m&oA7q>zp|hI=)c#* zyk_Xc$J)WIn=VeY!WX_yHos+M29?R}ArTR>bcNQThc_dhK}dd}Eq6?nEN8>Ebj8^~ zq#+R55R7=L_`_6)6DD=B;VOy;!JejwqiG`VHZqIPV{%aeGlAphNl<61b3|;U33=() zVc%g$Jj)bZ;0A3?ANDULwdr(_#Mn@vvxR*UO>92SgH6p8^P->ud1C*=R<{gMP+o$l zc__#r!ELwS`aFFy+wGjVv}My>Hh)vLIt$^3tyj8>U$vm3;TlALoaC?XfgQe9v*E`X z&=`ar+y}_K4Q%oY=udBJ05ASFCdBGTrn|n|>hp5TGEtAb6B+y&{gkdX#1)7$&`UTo&ElZ{RI6BgIWEowJt3IzaL;H?js<_dP~oTAR}bD3p;LMQV)D_ui$X zjU~pGJ$0|!mvx4yW%Ev6`NrH5yMCn)V&HsRv$0u+9E3YsBOI}hcr!z7k?GZ%mG7%Y zOZ_Ika&diG6co4ZcqcrfDk&{Dz4Glw%^K(SsG-|R1D2S&iXr6xki2UBbF5avejoYx z#Rs@*EHe(D-564K-bCQSv7PT)fpKFch;&|w@dqUNqLEmtG}xfRn|Zc;W_MuPs*-^G z#dvHMK4Q_(jAi`e8pz|lS%d>on{@=Q#I%Sl|N1+d!#@CFBC|iX(;yISmmz^ z-r4bBhTF%vAKqs|{CkiRh-y4~I~whXmSA1-;YCv;OQnm3&Od*z#{ETs_(#JWCAjc; z;@8vyXE9Fe<2ZD}57++WIx9o<5w`i$C#_cc?+x0O-l7E=W_l}(fyakjxbap`fE%vc z^|kL^=oL=XJaZFXg>QZKa6@+4p@`3Pz}`oR+&b_3jLX)%BfQ_=yjEu1lVFvA4%GdEj_qn{|!@Bakm5ZVAWVp5YNbRzN?P%c#wlSz^AX0-OfVs zxWZO z?oz@GE`2%gF!thFPi^fi*X^!X4$YqTE)LBPP^kO|4yRi@TjcvytbR<6yC<_sT1~4+ zK`Y*jJb*ms<0l9?dP%;e)frH%ip%A{q^Eo!SLd)H3nmbKUS`Wmz9_K9x~JWBO=oHT z)RWsI-#z-MY2c7`oT~dCod`_0$il_RB^Mz4VwlNF~3~@Kux^dwHDb44eU97Kk$>;sN zjp{VHUr!!HM10!$T-(r!Sblvm1+d4{~uxn?0`E=LU1I=*$Et$By zZ%govweQhT?Q`#@JT%PQ1i4`@CQtk2Yc{WQ|7%x*5N7869qvuZOtkRj6G6$(b zjrX6QE!R=^eEMWZ6Mi86^5njq*bn&G^HL`LXMj~()P0vq$=cJ--_05J4jeVQQ(Ki@ zjoEeDaI+Gy+au{$v2R8sK)V%JL$+hoYRE2IVL(;ivXO0|a>Y*A5VJKGc@cD~G^Lj` zNCzHUJD1V{+9u)me5YQSWYFgAY0u^9eInNZivz0b z@(0%$c)kDVp+<@QkgP%S(=cq(e~&o-0?i>zx2*Ky4K3}Uvsl;))V~{EiCS-tjfuaC zrHs()ecp`VuVS}tI1HA3{nqp%y26mk32B1?xsz?Uj4&~LCfLc9+6Hx?z*GP~93Ct_ zqi%zUVf#DJkwkMntvD1s17oZ2A)GKnIvGlc&+X;#eN3IuhI_j(u!l6k$RAMjCt8PK zIv>#NR^tDY+w5PU8z(66H5HNGV3~PUgK7RLM1jSwS z6@NNmcC`dL_A49qhX(HVfYD;L_E=7SyvbYQb_q`F~1-2pphI*5}WLc)dIR!fp8R~@GCn;WoN z6`fkqPvS6XgVD>X8(KDH zNB1C-2vQ<^1WEQffGpXqPrw^Y=)4NnL4S_PcX@~CY*ZMs7RL2KO#TaaWZHpZB`w1b ztRq=Tx8_~)sAIo^y+SakeI`P)2`=(nFofDzT;!4uOyk)PwZR5ZDGXB@6P$` zcmjI^6^+e*H>R^B6MDrJ@gUz=`VwkqrzixEI_>Y+Zkyx0d%D}|P1|^S?>K zJy6OUCs_qa9?o`dO&^6sf9{#aC;huUQ*WL6G8^@MAUjU?C5>scW7rPH>eKGOhOu(Os{lH4)|CscCa;tgZxmyu+gUo1^znq_=(I9=*m~D1D z(A}2ZFwo*44Yln~FDD4-n1>l6=v$+9_3e@PdcV)x;)boc46KbsBjXw7L<25;v@j*a zK3nX8ZG#2qS>~{1JI9Ba9<1GM1p0O{uahe)?pvily4fLT$503p;W3TL=9R`=Qgp@H}kO9fQ5? z&0#|3FbQ}O;+&!!HeajOLzR+9@_v&_#Y`I~;Fxn{(H(nl;3`v`NGLU9JF};

NL6&~ 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 ChCNCE literal 4465 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 diff --git a/docs/programmers_guide/changes_0_h_8.dot.gd.png b/docs/programmers_guide/changes_0_h_8.dot.gd.png index ba04d04a3db82f51d903f9c60aa933df6ff5914b..c8a401d8725f534640da8ed4b59fbfbd2cc8b48a 100644 GIT binary patch literal 32373 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 bT;#z@muig;eNhPEzy0ZxXZ7+=T)zEZd;-Ve literal 12174 zcmc(lcU%+c_WwawkhP480*W{`U=;)u1OZ`OaX}D7r8j9Jy(rSd#9h%5rKku=hPSCr%-tX@H-Fv_HzJ7n`guEunoadb9obx`P$N$P@m2Kbe z`<{)BZJX-F3)k4#z6a6Qt(!NZ|EDgQonvETH@%{+{S$L-?aGxaJ9g|ic<`W$i_6`+ zcdu>SkifA?W&?XUCx_E_8~NGU9&P%rkBc+Z$6{i5fRGVquY9!aL)l$3C0)@?XEz+m z;jr}j?!4i~ldYVt2iSLnZ@MtO6g%P4 z252vvsUZ7+-Ue_h8%~jZ?Z!qz7ZLaFHRvG@J<>3ZwHufuVKX1H-PpypM}X~|9{b%4 zb{#kN&^mUzXKcsiHl%#!f4OtZ1y0Trn|S>J!07vpJR7)gZw2#qyFo<(rd5TwzGlLB zJho+gVBtE5S7A$V&=!$CzQ<7c=&tRYNB3{Pct!xWIQ8U~9D*Ru&dzyxd3t(!jg5_C zV`Jyeoh#1Wc-@HI*K32~S@!7gjXiDOtuAbWp#FgYs;TJ^4mU#}EMl<}AlQYjC=Q1M zLD1CHlt3U13=CkgSO|hzTU*g}URzs})Yuk}zGA;~?XnizxzVnh=pS4z7Y$t5*tWl8 z{bLUm+0M_#c92c=!jIaX(bF;h9&O4UDugFb@Up2Pp@I)YH@@im*>7u62>ylHFB`dT z2t|~0@y#YKuHiBgoK!RVGrY;?WpZZ~gzH|WC&RNks%}pUr`KxH-(h33V>&mnvtE?( zZ-O_oUhvR&ur8vML#&JboD%DT|AeqEX5|3u=CWVF4d~_WCg?lXyIcPG4<3g3Sf4P{ zYHkNiqaLxorHp^`Klyn%JU(A)9DO?4HuMuw;R*Ca%!!*@l5orI7SeUgGD2*3%kP03 z%7ktz`rWTu6Ro>n;I1)>8qjqIeSEyXflZ%)@m9&{NY-D}GJxHTn|qZs=%8;{^Ol-$ zh3*_yU-zJ(0*J~G6>YeADQnA?OXf+_)5>gjx3RH)@I?(U#=|>m9sV};5Ozye0b7F~ zwF;ZnE|PUfRIEX)uHl9x#%^eJ@d94vT}2Y!M=>Um|p=U00nnfIKK-$lV*%32b6 zT$#9MLFnN_$-dGy{T7)kb|f@xV8gS2F{Td^CA^8oa%4^*)T~iD)10bS3oJO} z>sI8o+3qrbX01&Xjf7dS?iJ-(i&`aN$W&t0nuw__)f|4VQpbjWiaOYgyOl=mG9WKx zhFA2`>sl%>FN|K`VoYj);Q>QiDch2kd18fN0d_MRKOY(^(&FUVPNNrFvRt>+2lF-{ z34@)^81ka{crF2eT z?@m%)DZlcL%){+WyXSnUGF1Ka%8dVbG<7Ag>+{7_Zs^E7$Ie3Cgc5D#g~i!pTB5>% zxP^ukwT>s^&t?z0bx=c}&|h5J3uXn|T{EoNaa-0v=vKsyJ;#9-+1Re*DEv7&oPPUQ$pah!BN=evd)n-xFycFR*R(tL}?@xtg-MpKZSP;(-~ z#r!1WDBfx-h_zt(;TY7LX>YTdI~Uu0+~;Uex$x=3?XAUHFkk1P5hSYvDfLYt!O>l3fsK?qqQXzb8YJwQ?6qZ$nu4Y6!YCW z{7|;iox;N9^Tt9E$4d-VziZy?{W^i}(r4^Hp#;*}IKz6}PtaWsiApn#Bd5t_LgQLf zcg3^D+KJio*NTmyY?h^cJ~PzYnFW3M22|3B^X-$xcQWURl9iWl$;n&No3=+4HT#Dg zsb1S#n*29YB_^j3(6_A;aJ+I1s#{5!F7J2GQW@mKTsv}2phh1)iZB!h`km{fZ@zuwn==a>X4ENg$7Fv9Y z^s-g+MB{}(o3&EWp1izeqQzMEUIkO>-^}f4eArQ*H`gAj&0TP*_x8E5IzmQ$_5|YW z$c3bWRg>=;AHEX^e6dK(FA+Uk-%3bS&y1FW8-}D9o^Kyuo?C1Jh{G^6hFkh0)} zM0;3a&G7lKyH<5*?Cj;%U}5_j-uE6)4j2jk7_08r3^EO zcHb$qVmLMyCAT1oiv~KlMG=AS^!uO~^{G7A^_}m&)qy+GOZ4`IB!|KhP!WzCh^aXc zwTc8n2c&Yt!z3#$rB)amd1+vf31M$~D8F$M5-#2WclG|z5QbBEW`0RS4j#;>!jJZz zo<@)b$CbI}Y*1O82UK4jf4M>oDhLCzmZv1)d|xBWJF8SBpQF==)q0@+ndeuC9u-+t zIA;~urqds{)4!+)tXdCtrh?U@kym6_F_qpf;EYo}j1`47WHjKHB_LLDG zJu1l~ysj}%HZ+D`!L|FWX%KQkVd8PiEBYH-=y}k5)M*6GB8k51WjdIpZ-x9ENPd^z41$6wA zCQ8Hl)l>12&v{hkjZQoTt5}|modF|JGx6!^?-t_#-#Ma8ie}E<(hp3hSws_-1bs6+ z!u*j;$xzGZ!CPkg>I1-jyD6tULnGq}WB_)=GR-Yh&R}VGq(9T~`*Raig+)T<<6kpe z@@FlHdadqlmZR{L{+^4e zD@!m%ot3Cy<)bqP=n{6~TQq;`0bI#MQZ|_TO&frwu#>BAgc2$z30OYO(Cca5^GdFN z*s+fk>m`e4;e0-xQ!78dzsxE9BW}>VyVeOlvmiBrkj7{cleKkEw-`C)h%!_Y`7kx}J7U z8=`^ka7e{;H1ZDp@dscU4N1DFpCtl-s#vCkccz=l#3#gi4eyvv-IzAT@B?Q&J6Fvo zFIE5=|6t>h1{aV)#G`Iu#0K?VKOOJ%ciyu(YoJtmvGiV>!I<9pdCS*mzp$QgX+y{o znr@R-pwtE_TzOe~GAkf;+pRyc41JuT+{nLY8uP`@i6lZ|qG_?G6@AWQg)uVlRyY`I z%bW`6kO5~k`*AjXo=;BhlV_}WV2eFwk$LN$J@UQnF7{I&a>l9i3G?LJlhpYFt&x~F zVW2XR2Ul)CvrSk8%8n0GU97Y$Qt}EuGBH-${MeC>w@j~$&9@&uUK{W8K`ynyT3KGG3n_gFJV3nG@6fYm_=sP7xr$QN>&4D zP1bI{XhWevckyLBh=3Vz$pr65ZSoIkG{!ON(u(E~LQs4kt9TMxn`_qOHXkg%F|FRr zM^*XYWc{&EeuNP>Dm>-fyHzIRdM4~iwirgnG)>M(8Wud*Du0c+?`emL469*xhEpdm zo{^(_jUbg{l<*HRy`?Xfi46rj1L1Y<1On8f*9Z0TROAYb^lg*fRsHFkEajB30>tN! z+--=!nnu}@klFp;8^sF9Ng4M;cfMBQFWuFp)i~d;Yf)`WBj4CYJxtwxjn!Sf4?ZUR zOYnMN+<52^`p)WEQcFtcg&lz}(dOPvBmD_0I5?WDBOE)cfN(c7EWAd3z)iFr#bO`* zRL!>{<#9%du>hc5M-13)uCo8s=NA`nOvW)mX63!u1Gg1+XhBPl=n`@}NPm3t-Fm0m zdy9mBbsZg$u}C?>a$ODog>l2sD5mNp`u2DZ z(ORHrd4^P0HM#I%Cv$9bqeaClm1;f@zmuAj@FM|oH`?^f-yI^V&8=-g*)*JQZSY4G z@qz;nxsKxJxBtmi#%h&=+qfK=``244H4gSZ z#{!2Z2DCb3Sk0uo*l`o3QngZ~&EQ$nLRavy1oFvC+ND3oUb@|&c0y3>?w+RFN8mYq zd}$e=_d9p`$#BwlbgUd@R>=vx zr3+Kj?NoEwPf;UC+M8YQct=yzAaYfoa;W&^Cj?!s0f5(<*n%lK(g!#cE2b&9&_*5; z673=SEDlRgya!(P^Y@c%x7;1YD8bN+P$cWyD&wpV(bEeuu78Ekf-WHCsuAotf8orn z7Fyh1-Cs1(K@mpZczhVa!Pi#J^Nd5_e0%Gzf?C7S-`AK0mn`_){dJLF3Au(X5|6jH z0C|2Vs(@)ZRhs#352=@_I*#HAPtW#H;tV`)?-OL;1CEmrr)^8aNN&S3zu0QD2}n>y zaZI-xh<80oU={uQy z<$y3K6#YKns>8C!JbAVa_8b~r%A9Pc_IF(`b?oy3NlgZ$-BQ|m-3eL!64t!W2VKo9G}e--)uhy zWmgKcYmeNmI+64~8nrT_b2WDXd4H463| z9Ihc_A7t1;+35DLh3X0^Bo)w&tQ2Mc0a$SK_36?v3RU=RkAyr2mEBMd*6zKkp|jnl z_gQ3}0Sc21XzQ(70hshQ-+il_Q}SGSUL9rYnPDk4ntASPn6I6+N6t(jxl$qv#Bt+i zuDW&;83ZZ_!>)~P(xG*I!yW&qr4 z{ix~(r!9T%IH))bH=&mixr$T@xsq>>AY*S`+i~%y>_~_yY*5qUkFF_xnm*Un?6Rmo zfk=AwFD&UgU3Zwd4Z@#Tg`Rr75NjGX-D9+Bo>@Mdt!Y*NbKDsY)epSR#!-}GPvs~a zrTOuZ$@`n~1y4svu9e8FEY@4q*i zr?pYhY~9+m_BtzREF)Ias@0J(M{cE$URdtxg&gSQmzhP+8+Hdb_pb2wO2cQ|88`E# zM;UYTmEAy86z$`vb@h$5ZXg(U#;Fu%@jzphM8fnaV5Fvz=Es#tlA@gF6`XipV-Ds( zo;8k4obK5dAJqtUZ$!I1wZC-oATsM`9S98s(VNhjB#XvEPtq5Dq_g;OiF$qJ^nl4JXkb*^-D$CIf=0b9WjBqO?gvl8HY@{A zF0hM}iQ|=nL~SsUj`vNk*Kk{lb?~^e=CT@uKT$ZTD_}E(=v*uH9O{0j>EBi^Gxvx5 zLtWW}jt7c|AS{cLcLWxtfQ8G~_Ps}^BkA(8f%Iq}D4?qK^l-|s&&3!)E`?ym3v{i5 zJ|cqKP}Fflko@H7Hv`4uOVL()%!>z#6zjkZu~$b2P#rx2|6YJ2I=;xlhvALo>EQq>r(BREIfDRJSF zz;3re;R{3CO&AhRteU~_`HW`MnnthPp`d2xlZrQhK zoF_Vq8AAJWG&vY=5&IV8iH0VuguI!M*LEXFq3IsWV}#vXQgx_=R3f| z3+inzM{(+}{G&l3xl{lt>(at#W$x+X7!c13J-1V72SRE?yfwJLTlUs$R+w!W?jUVI0O^<^*IkDn6d7XaB-cYnUQhsvf zRy3f-3F!Xf3}dNR`iCx}+j7yO8;~C}bV%`8o*5|dah^bWh($e!yJOFF1D!huNyyc2 zd_3KZ7DlvCqI^Uqra2>dx!aw&DlKoC2*c;4X8b_rOsu#Hnr6_Zpr6%TqNSt+WyNn& zs`|0OVAfV#L~ADxvLpmc+#<=<+RR*{`9%Q${L^%SLpJ(`y=Dc zeK0oLqwj`3SLxCM5bPIE#D$|HkpOH`_lN1nsw`cB9NOrxvbvh(+s+_59&+e8d1I#V z<3^=hTc14_@6VSeYaMo*+lIO2Q-bBIW_3TP(4%z%UYU=>k9>?%B91VKo-q_O2IASR z((HVWp#$mZzudNJwkUCl+P)ln7M+E*usp0S`*?c?SM3V%a*59ww00KXejXfp{22if zJdZa0H5o=S&{`8Z)>tOmbnQf#JRTs1wvwn#;RWQp-!Gk0XSg&O>R^tZfA%M-MfPAk zZ6)yI=ce_281&?0$M0DZrFaix?Qd$lmfDbI*c;47h4ubS&6rK(CEC;6#hdy545k+X z>*R+5;AZFTltZcP6jJi<=r=cd7p&NK_dj|YUK9nlyPehcrTs*qpL00u%Wi*B6{Qvb zD{A$Bj`~uLmObKIEG}2JY7*gR>)4_HX0kelMMG=QhWO zESIlpsBPK%Yi+_ih5+Pe^|rJ)%@hSXzTID8pK@qx?9zxMXrB;?AATc3zO$3HJ+yXC$nVF@^AKinf#^1kNN)M4o&k3W zcJ5g<7h$npnz{&t8T;6ivPkTB=o|)yeNpI~AA!nONr;3^q{xk1(xUZwvQ0`M+d327 z_C~_g!C71S4w}Dc>1g`g0JKKY6o#TVbAMJ};;X!l6$jVSmxx9(#CrZJfM7q95^fI_ zyC}+I8>r?A==4xn(~ny?4dn)OowGr)2Bh--c9=3DTm=*jM=lag%Kiy*!oTfzGt^y?m#o zp>T1GM>sG=VqBp_-v6?79b7WDtBB6->pX^Y~>%pklg) z*n@B}UD)$=SDU7_bpSdPbCr?1b$gfs5%qGw?l1mB^})IL;6h5=HdOVZ=9VgS^*AkG z+<#AVebSjomq=GaSNyYDvVX6jlk7{^uz6x?7RzfSUYsC$W8wn32I$n@bIRt7cj`Pb;w+hJCoCf_eV;@Gib3}erw7zlW^3R2`q)FF z(v+Cy1uNHotfZlpzaz{A)rX7M=ef-fRiS|2gfwgBqv?O3q-}uwn5f$dEF$W7*C@>! z6{OJIHE-Yah3uj(e} zdJ%(lrkRZB|24LaSXAO)Ka+umqv`yfx5HMps+eR~R<^mt71{7Qmf)=z+CHG^MVDGz zFk^?p)QD8^(i6Gvm=T>AKn ztwwe&WbW$v6|Fj!iWco$gap4vhw7OWvu+j65>zJ5!R-GH@p@3i`+v!3+_5N+$9*}H1?5rlgL(7}7@5r@alMLH@iu)fgxiH1KBf4#r5 z9cws&D!(3o3|Ew)#*FC_`!v6i(bnOPrG3vSjf<~Wo5aEcB_EimRIj=q`{UAcj!$l% zcumpyTD$(NC^ukfeZ2Yykhi}mYA;mW-qq)nlbhcH5E$J|I7G@4BF#12lFk68=_M`o>9^`=Sr-*ZCR{_m9WD ze=wDN?qR{jF zSOa}ePoq}_N_KyKDuLx0>i4$r32eg}K3taSB{3c8kgrHRJzlAOONW-iL`hDzd@H;; zW2XVeQ4xz~lANqwU?pYN;ew_1DpOz;BRh;sCmdKMb%sZSvGtb&J77M*sHQo*KuBQi zS9EM-*9|~hNL?hNN(-tjUw7!cDo2UyXT=}$qL>dvLgf3G;4Zmmb4nq9=$pO~J5d2F zpF)qLkOUSmvXQ9#E(4{0n=Ai!@S&(NToo!4ihrn>2q}yB3Hyf86-#^vb7@&@V-BFtabNxcceh!pL}~ zG~9Kv(?YK=%VTY(&*u`n?mC z&T9Uwh`Jq}~BOZCz@F7IDxWblxd&tLBa6E?*Szo}+;GrPXJ+NX!$* z&-s06WxgCbxMuub+jTbfA*xdjJWLCE$4V{EJL1rTUze<;G}mHJRo-r)$j%lge=AIe zlF`!!-Av|l@86o4_q6$3c&QvPzw(>7C*j!onYkXj;Af>JU_N@$9TioowY+A`an>CWr>{eA!N1w7Aro^#IUeBS4? zy^m)PxVtP_xN4z+fx(i!dvUIdfqcUapDA=`Qfcww+syUZ&3&JpU>B*7Bn?AaX1_d1|yM3;Ba_B zK>?9SL?V%VJ|DbKuh%aq{2c0FUaXh9x4|d<508Q$??vqih%qoQ`T_czN479BH8A+Q z!QP!ad=he%J!j(wo7uabeCPBij5h6=q&I2!cAx7llEuSE&7ZoeOr@{~@2)A_;=Q6? z%lVr@t`;|JW^khP3f`dJ)4`y(3}%4yF*;#qZg|U-Jpb`|?!4!_Wd;dFzkge~k?d-) zKP7s5mN%<`U~o%bh+p7iv~h=QVHxbuDekfZ4!7PWTNL6?yl3wJiOgWB5A6i^QiWHo z+WK*(C+jV9!tth2M0xy8*HvUkIMl?5=GycyHga&H_ixX#!1Jv1h!SqAzI_pR!L8fT zQ7rtCeR?5NdVlK?Ny+6){Rwe)ts`eju%d934wq!&*ucr7o0hULX{0*Z_N~sV2F>6L zoaRGAFf3)EL?xZ-NN=^9z$m7XUFBYm&AuG0!v#hx4B&V1+Mi`_TcW*5+nyC^7vI!I zdRvk?JAfc_|5i7J_vV6ZYlXLMaBnNJCZaiI3Loz0K@}=f>U1|o?e%nt>hR;G2cRiM zwT`ZgK=_BJS!rfS-m(5<1DMvNjT1A~;%4}#R`Ul47&6G{IO`aLO zY(O0~kxw(tnJA_YR%;&@lsI(>h6{Z0Jk_f%jdtA!3-bz&bKdMrYXsfxuFdls9vojE zn3#)iv2lg1hJ@6@m^mZd^j<{iQtyY^+iJak7#t99#5@v;^j63eY6%OIhpc+&mru-X zX_sY@An_~>KNFw%QOfMhKb=|lySiHMGjBGcg*Q7D)N$L@W9+bGHZo7B9hivD zJv+1^%ez76)$L&xy2_u8lDey@q6p0u6(w{u6XRg+A}bSX4mg;rKljPvD$j8}SsRM* z?NnHA2KXw!g1;w=-wm34=jmY1+zeXhLrwC)FZJgsn4!dpWMAWuVamXB>-L{aICz(9 zuoE8@{W%Q(P=3FM+rRbzku?765oTP=)tzDLniFPndZ$hMu5h$w`lB~>TN7t;ewxma zj^NHHaOX0IFvJ*?tF}^=pzqFlnik8_`LQODPDaXt3CDb)?wDgYys|W;zCeo>I6qL; zAV{1Lkzz$lQGRGJt+M zR!sCR*#4ej^ln+o5}t{(=(1i|Tb64BJ-kxUvC;SVo^eC0>YKQcKIl!M*Rn0_^f!7n zI4@><_sSH+Y`eO06l54L1m|=Q4W6P6HJ89k{)q`XKR&jcup(#8l6wP-quvkoX*)@Q{jr5BQZ$6yQb6fW8OrF}T-~=?z<_eiKBc#u-b$rlU zaPMS9Nyoscs!RT5{2NIH7It*iFg)P#`?F&@p3kcd8}KdAugj`FFULao(~qcz#`%y&oKkSzaEB;dw@?*nDC#)uhn3{bj2RTowfqthMzI-GnLa#P z_qdWJ9vxrWxQmc7+n~e)-aYlX4pp0767S~iFIr%Sq)*Iv3~gAT~xldH!8P=v^w?YX#Ta;I)3OTZ*ajem7o7 zHUs@NXN`X;E!Y~{%`jD*EZ_w^hSqDh7G-oa!FRKH#y8wceZH;Wih1Z){#b(2#qb--Y0Ql=7hu~u=#Ln^l1GeuhQ>;?I|Ep`o*s!uz_gXftay`IM#%-x>Pg}Js5XidcK{MZ=xhw3w7a|?yN3;+OfLs ztTx4T$HgCV7;=oYBp0ZkZJRo}b%facuhVaPSE$^Ndo{e!AuO z5mlEz1ptK;Ul8>VAES2v;?DhnZb#NarD%+Qkn^Zl1G#r1U zo3diy{Ihyk3(alZiOg`I&G(gJBnN z*Dl5(_2M@Dach5UntEHiEVea}HKjT`NF^*g17af}_>+L-_ixiaXj5+b;Lg7b@ljRhCor3r z$i_Sv!TO*JXmRp&}KnH!q;WQA-edpg`K#9K1!rMxH8sHWF68clh%I4mT%&y7uFuESgXjt&ig*!IJ9Pm|!}KPSZPzu%#N| zI2+SiUYkFG5ed_pHA3y_q(~+|iJdng$F6;soW2ME4U6%-jE~v@+(M;=`Rt&`b*Z~f zL&Ge>GwEeuNQHQxp^0V7W~ajKX}t2O>~SBTLp*(ib?%Feo62CQ<3)%z&)C#@RLqiA zvshODifHRA%Ih;YUI!{bZo7f6q8E4Zy(o(KY--k#n=Z5cp;PwCP7Lpqz1ip3fP{0W z3bp&w6)V9Q8N*{O62zC19$`{8^=w-NBDECRHqytjy~e9;yihDj{E~MQ&PHkI%7N&+ zEmRd79h0?_+F$S-sJWc$&)W*Y!IaGv|Q0$@SWp&MY;Dd) z6Sxm?uCprwrjPCMn(Y{DHbKk}cfT_yx-P5J-|T=E`uCc?R+MNpP7vN!7?K+iW__9E z{GohfcIFSPY%Ja3QezWb9vEF0-F8J8u8$)IVie@n^dSsy68ClsD@e?_8Qg;=xwxLy z`&CVNv{SHj)krjm2ROrdqTm;@07I%vT?>{38ivRPY$8Cf-sIAd`RSOK3n)%C$!GOc z$>T?&f6$)QB)-r^FmvmCE?8i&-7FtSN1q!xF}N=0pUrhjk9|8>?P>buv0HCr^Z&LoL@&yr#FzSFVL%IaAc82 zxz)Wt?cGM++?#bR+|+R|ef&wCa-LT7&a~aa*an?)zSeZfH1p#=&h0{?;_o^oTx+`c zifY>KgFfwmBpnQN(|Iq|cOu{U`p=i~mtDW1 zs?Z}2hf=r+yFjA#>1)8%3+Fkb+W9y0U-ayqqvlxD6r2Pjvjj(M~Ef!YAQE#NjR zG&l55hHHI>e1Q$<)+hoeCeltye%~&>X`1g3o))>7Gt~veAAUqk9gMoITAo^l$281r zcGZ7A01V*QkwX2qk;Ir8x}`QdQlZU@RD{(@ZbbS#ooRp6qt$+241WBR4OddyBJ^>3 zfZk4R*h(gSJl1gvA^Kz7;$}>r2YP5OE5jYP(G}y{!u5R*f5;iiR|l*6LE;g>wf+DL z#FGx@^3&X10GMVa_yoAQ3AjbL$h}*2*3R=6w>=$fe5|Jr$W9<$PUR}zAZq)YCqw^0 zO20{^vecp{HeZhtY&lK6HYP8C%DOShKcpmE<-Ua*bfmAJA8i2Uu? zV=cA#scg0&AoneDdWM1<$J;1W)^nF3!To{8=D&%i!zL*sCro`mcI_?N6YSQ z9wmRf^fLbW{k5sn8@Kk1X2n^y%9<pSq`WpTuS#HiBc;IV>^H;Qxp_XkkuR?qd|nFUE3Ff{`Xxbs^q9FHJLI=6>>b z#sB8J&TZd2td}OI0~0X4#+4W<8f~}KUWk-{S+w{o{kdKWZ)=0L|TTFyD2x1`8$)>o)L~YZEE*7d^ zxGIoKy=^X3_={hE5f|Ldu^6bQ5r@Sa+T6DI^HJ-23;L}=cCAH2oIv$|OyX=IWW}`D zo1~5<%puRvB*TGQ4kK%ve1>X_V!rnVY2MT_ahO^E$ECob*BoH+x83t}2cuM9#+Sxj zEXoBi9d?$vD>k|~0H{eaxOrWrME$}R{0rm%v5turM$igbJL>aQEl$WR!kjBO^pm`0 zWN0qt$(xz6@6DU_8Cl;Iz+39(tQTQaB~2he!Ojkuds-T7*nKtt693pvlJ-FE<1fut zUHdwF&hS)py(1JjJ=A_IooRg8$7kxIb1F?f^y*77AnN|t?V*X}W${%S&*rJr+1K4; zo9>=wemI8PdMxz;C$Eq<9+0Q2JUxkXJ%${^t^cx%&#}6!eIV<` zL}Ek_lDdr}{Y4KFgY|-TZCgB&`+5}S@}G6Q63EB;7q_L{d7-0zZ!h<;p7I-_7HINP zCpp>?!n%oRW^A19n*Ku6_AH%3%9)Fp$T5&gB(+2Fg}EH^+{g2q{(YS$exy{JKYRH* ziUw<&-8;cOV6k660!3ul2Kj94mC|dxC3??G@5d&G_q4v>I@-EO8Ijr=5{oV%gU`eJ zVv6hu9fY^CHmNh!Ch84N@IcPk%=h{2FZ^^U)>Guaj%M0tBV4FMcIfLEsCu?TFk{GBt3zO%Gbp zqS0QH5C04-(|cY`^Dlh;CJOtq`_fbbQfGaN;hnvR+?b<3Hndc}DY<=FEpa+HvjP3k z7--=xSs4n%=wAWJ1La!=rVnBn3t;I%!0r!B5YSE<@Wgq*D@vVK)1xAWO(uKZu%fBw z&a-E|zn~6edYAl(QThz%@5H7P?Gxm%#5FQ*stj$A&{(~?)5pj@^9?`R4)T}u1evIn zjyQ?2^kDIzH({a1L9xS4c5g9{i4-w#%~kFLmE4{*$Fb>mcH{(_%YV9NXiJXaU+vsq zeZ6z5YJh2OH&Gs&UYI7oYTOdlm7dLg6h@)Y^5?5*++fMy3-Rc-qyyd#jt+s^Vtmh7 zTQyv`wCAFQ9mlnSb33GG$_L?3qf&Be!Y*#e0EJR|+9#8ip@_2b+&qUsH_DmlN|eM; zijQ~lY)6LVSoqfpOzj?a<>`n{g0{pQh9{_^x|?`>^XyE|>XnWB0ON4;(9&Qh_k%}K zF|yGVY<9VA%;W5>{v|Kx{reT9T~F=N{LKaJys zUUjReQ?AR~$!N=okvZq|56Rnw_|5Gp}JzW*hTV>>bsZM+-h@kA* zN~uff3S5#x9J)RyrNh=jOZa-9@`@5>uA8^KfM=^*7eg^Uu5j1qNU|&NzBCMHW`CAl zWkwt%YSxdKQDygx+qY?n#O^IBHS)~3^O>UuHN{%irHJuullPF`;Mz{9IjL$e8 znUAD6UVlT4n$x|1{p}w=z2pM?7wY)tiaXbGxE%FXV~79ZnfaRGc6mU-qc_V%r~hx{ zqCZP+v~7%aLeo{0ptPyR#&^JeP$sTAz#?6N!g1h$YCZ;+&@}uc!DlEP><=J0O>SPh z+-Il={3yb=d@6GSTM7sZEWxG8Mi{#7^~?g&)brjL)qfyH8F$`B6|`TxX=-}Ff~g)B z8%!R5^7m4F^02`PP)3JJfY#TP4l{f@#zIr&jTEG|acUT1b({L0)&GZ)daqk8nYYcx( zY5#rbm-YrP9ua@fD9Ib`ia%n9v9Cu^sG5@S4Bj9=r#C!JI+xS-8M+URKFhNHNM&h^ zcTMxu{Id$~UOPYD)kt(`aKl~&S7e*|k7z>|Fl)l+c4X>c;=ZjlQ_e!B9N&O171R}n z@g2LA+4*atV|}a-?SVh?m1SR6UVzixMzTMeh?fnnxzDB+tW3#s`mz{V>)~73>aM@8?|3M<<;N z|6rMKEhaAl{F*adh->5gr&{q}HAf-V3<#8JOS3z@HpVaGQtEfe(1D-}x_cc+DCq$z z?TJ0^Jmd}K1m|;th@aSFO`|LId7dmHK|P~`icxiPfBJX%auBQ{5W|5UBEjVQc|ygC z;o;Kbrgnk9h*YIFGets>-JZ#hRF`Un(^p!kyjpm%bSFK1H7+G>to|4=mNnro62{l$ zPdJMN@v&$jW;TsFG`N=RxCLOlE9eZ!o6+38Sk6%Gem3?T8vKdsZ=?swJ66I0n=-NB zM}N9Ft-WIn{ezg?Kyy%OO& z&mY~{kv0wX0GBr@ZQSnVCcL~sy+=lmOgfY4nhg~c=Ha=z)cQc?|&y0)mfyO}ql%|{;f*NmjH}+Zo zq6~nfZeoz3%PweGE+)NIU3`|06`zsA4b}&$MXz3qg;-Ge^jZkQ{dn2W-WG9&5#;1{ zaa-4UH92Pk?iaTVQ;!BNQ8{+hakYwV_U7hl1F|FA>QEe+jk-S7@O0+Pm@a3nlyfb; z=*2wy3vQfu^ELLZ$f=0Ti8c?gZRZbm#-8`%ZqS98!InWHG!x4xOt#D=Qm`e0nlZDP zSrWY5j`NNm$}nSg5`Q4u|9`h`CY|c&ok(786gEs*`6uYZ+vTV;GjmDJM*Qf`s->R;4>+wI%> zCTjDs8#tjNZJ55c@#)AQUg>> z6CZws7+_kOfW@6dpLIepQ~-vNGYv;haTm~iSlay4&aZD5;(@3^EX4!C2`~djP~m1S z*>qx=t1sJzeH`qI>HUJiqoUeR0tyD8#}#Srzrbc9W9!w+=-wQx zP{tjnaN{DwRi?nBrvUH1QafsR!eb{yxw{x}H8%@r~up0B^;W1CxtVn)&(zaUKzt+)LM@K;Kt!h63hf2WPC zpm5Lg-88PU!O@Ib`*&wMR#xDZh3&r7!)*_PWiLGTl(ucHvgwqHOEGp|vx*=x+t7Um zS0I30W8qaA!IYb#$8Il!g=+M)Exx|5JR&=3iiP5T%SxYX%9ioqb6Y^Tk>L9(heLc* zVF~XMSF&*EwaYGa8y()&sbYHc|1`2j0cZ=5o6$63qa*Mj6MexCGSPhTwK{aUS%oqv zmNLu}@Xm%Ta!%3+IZ+=%ll(v6a`}7gPqNh@EHZAWd0)IJ$6(`rcUO=}9>r^JA|510 zddP|Y1{6bagF7f!sLEb!4%1LZeqfxR)J;RXJVh%d=~KHL9#^#NMHF_ufDg)oS7u!D%ICu z3tw4ckWfr`l~DfWYx*?!4Cc?KzH8qcsrWA~1u(ODZ#}O5B0cBL@|4MeAn-RcHqZ;I zE3SVh_Z~z&3dg>ScrAT6LvUT(R#$a?bj2*11$n?{>1|rnx60Wz$<*msW?TIkNZP zXKxj_%0_M7B<@cFORM~{AK z@&p>;ckDSXO2d-8w>oQLzF_;f=_8mCB?Cbc963i)6VJjY-mzPJ1mX6)Kd zl(+?NEwrlXc{p{z$)+uSK_AW$uGX)-=3u3mc#wS%j5>)mF^UIal2U!DFVIt%;l;d&J z`^!tVFGmjD%8Z&FThBe&*vY3e^J`G77hwQ_9MQdfN~30>IFW}$pW1%N3CVaV4jKvy z1#EZ@L4wg3*1-2PK<~?C72{RQPIGRORfbS%;uto?n3G_l#3-cQOmu9?4~k~3TASas1~FK z`?HTO%ujRq?4i4Lfzy8G$_h5FKU0&W;gn!i#*b?T;uekHYL}r4pzaOCcrZiQiJ&*q zOvA?){^uXUc(T5TN$k3~31Brou}6%)ZBs4=S$dGbKRQ4G#F%2vjj;$ou_k~&4~Q~D zy{bZn64YvMz`16;EaeNeiu%{3{GZgv>yS!Lmk9z5k!iF8@kzN!z2gZ|Rgrv`rifR| z=}t@0*1)@Ij3O0V7jT4&O8RCUIoS?G2+!9f3(s>?SAacc^6Li0Zkf|LZXOdqiMw;z zS>^=QsP4(oO}%kNcsSr%!<;@JW_z+g%F)LNeuL0cCe8@EBJ(EahH!4^G<>dH(?oIhXD$h`59|jo zk6Sg9%A-!P)7Y^MbI(?F9-rb=RmhF~G8i0IeY^hF&QgmL1gPJjRwyK$H8SV^j*K|DHq&Sx*+^wZ!WqYPcaUnym+J{0QmTY_$X~A=A zA0v977mHoq%~)Al<|~Y0MMGRO(Xv~02OR3Z+*<6@su$iv#!)*qb~VjNnLL>^#jWR@ zV%aUgu>WsQxBOv2H=X)L%$!#aF{!j9OThCY-Wc;PS;K}-4(QrCZ~@c*a+TZ|i(v%Y zup1bfPzGRw-BljbjKp8j3bkQG;*ShvSh-d>4hUd*G?Kb>Tq^BI3oq9`h_6Ki>yjB( zwW(H8>HS0{C*MX%LNh1p!w``!FQVUB#!wLabx!{;e0@!Ks%l-c#ib)r%fxI^-$#AI zB#x`1tt(hrZ4ubw7W%j?rDI}k+v%Eygel`k471kqzO=!#ICMKPH|MT!uP8HS$iC$q z$yIdNI)gvUyefKKb?{uVvi+L4x;IVwccem^*| z>U8vncOSg(a+*W4U4CW8ip4G`2`|SGYk(`y|Dw2GP(MZS;ZsToPKUT1IsF zL}byL*cT5P(Mm(wu@aDAA?6m-Y4nu{fBRLe zKlFa-%L?Da{;kuv`u?{+KqlL?#_fw)(P|Zoc8&Ciu>}F!mzrh67*}xUf$s1vAn)2| zbSAM2I#4$G62d8k>Cyz0-ltluym-V}Yb37x9s zHIK&>94xq}|E{>;h7!k9-~Ct#E?msYBeFtk>hsMtuN%Bh#cP=^9bVkKh0ai!xm z#3UHMq|T9_Mlyr9GV``NidWMO_CTK_|Qd^%MraC#z$-r*|wBxNhD`YsWwYq zi+oXxf+&_MZE*ca0)sd;iq#W*T6Y?TgbKqZtO5>exxs~|=ET&|; zbju5<4aM)3`FT|4<}b?=_J$2hs|#Js3Kk$%McSZgp@_6I#Tvo%h_B$Ou)0F2060_L zZ6A!Sn_QVo6UO)HC{EH2?GN&gvYgIui`?MUb`x!zgJ9Tv&nKI8$5ESB$O>SwVw zH-PgKKV67*RTTf1*#kPG@wIK^HQ|*b&Lmb?gST zi`6c*seEfvUTkt63G5}AQa{b#lV!6L^sU@%m4Y$yP(3=LcyNCyXoY=VXFNxm-E8%eaar<` zG}~SS@pvB^FF7oKNn6y~AyS%??K1AmqO(eQwVmP}G33chNnj4xrShZQ1@`g|**2SK z_cCQTXG_ahF&isEtGqj*lEw`4|5TX#U4RV&Vy+B3Z1ODZ4Xc%Z1%QAJ)}Hg(E6QDD zjRJR1f%{SaT_iCAtx({46e%;N>gk*@&QSs-q8uDiV{?EFLx{RG>mcGqn(ktx=sZ)i zS=5!u6pnYNZKs2I_oj&@+MoDII$$*d%oRD7z zv8>IR=%ufixDl^FljQaaVD$GO4(e=e+x8W{8rIKZ@jdw~N@M@WSM<%9{eRDP{J|l; z|D9}$z4d5y5i|z4{M$f`NRYeJ6_BdGW|+v2MDin;YN|tUu4A*@H3orzN4qDzV$vQ4=z%l^bNf%RInqQhy*6{lUZZ~ z9iKHMsqfBx0$~!e0MYa;uxWZ$?lF!ucNZxr=5GjeCA`Hox9(|l_)7U_Nj+orANH>z za7+t@0U)+-W}Qb1C)q76#mWI)pV+$Xc8!Fc$0*XA)xZnnlhZBIhApe5_Co17Df<5c zUIB@@O?TV7rLc8vtXNi?YwptUx^A1+sy>)y8nD1;3!Y@O3}pOC_5YV38wWIWJX5`B zV#}N4|K8}}^KV^4lu|2qtEzrM&A7X@d)%&nocWXfM+V21K0eMIBDQu&0;V^MbVs$u zkK$Qf!ik!h3*bDea$-72-EFKa=;BYrBDcY_dX<12$$-d^_Y)Cmm8F`@_RKa#JR7B^ zY9C1XQ#avBxoi~4o8;;mY@O6Qo0dJVDc0VX3UqUYkvZ2;ZU4%CCBt4}4q@~PUaK=+ z5#dR%NF3~zS}3G8_dlQuQJ;d-vT;smnrI-c7SmmDQ_ps4 z(}FUM2NN=0zA;ukBu0@^pt**U10%CE8;CTyH+l2*rYog@@V85jTFOg8S zRDSL>tGQ=Vs46Y~A^NH|lO8jZcha8FslCez&P~6|0@3I!wn85$0MT6EH~E#+g~^w8 zP9@ael_Ivc&)G`mkRe&q?yLkQts*=IItD2U4Ft95{Ql~euA<8uK&zg|1o+%}fzZG? zc0WP0f6eAS({mn`!3`nrAKp9RRE{|lhOB~6}FV~sBJq%aS#xwF#y z%>!+)9x-cMBm2brHB03vHcGy(?Y-JyC8hshv{A`;EQ?VzE>(>#v*CiX38-H}>JOPX z1v;$-A(?Z?!}(2$T?X|C4&LB8HPqk80KM?f|L4GOp=W^88-G@{Z!p@qb`(t5VDB#X KowQF6o%(+oNg5&m literal 0 HcmV?d00001 diff --git a/docs/programmers_guide/geth_changes_0_b_5.dot.gd.png b/docs/programmers_guide/geth_changes_0_b_5.dot.gd.png new file mode 100644 index 0000000000000000000000000000000000000000..060d01916f55f73fcf3ed539ec403a9188c657d1 GIT binary patch literal 4531 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 literal 0 HcmV?d00001 diff --git a/docs/programmers_guide/geth_changes_0_hashes_0.dot.gd.png b/docs/programmers_guide/geth_changes_0_hashes_0.dot.gd.png new file mode 100644 index 0000000000000000000000000000000000000000..39c5fe652097e85330c0ed7590e3ab7a31243b60 GIT binary patch literal 52042 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 literal 0 HcmV?d00001 diff --git a/trie/visual.go b/trie/visual.go index 467b57369..4baee23e0 100644 --- a/trie/visual.go +++ b/trie/visual.go @@ -66,49 +66,6 @@ func Visual(t *Trie, w io.Writer, opts *VisualOpts) { } } -func visualCode(w io.Writer, hex []byte, code []byte, compressed bool) { - columns := 32 - fmt.Fprintf(w, - ` - c_%x [label=< - - `, hex) - rows := (len(code) + columns - 1) / columns - row := 0 - for rowStart := 0; rowStart < len(code); rowStart += columns { - if rows < 6 || !compressed || row < 2 || row > rows-3 { - fmt.Fprintf(w, " ") - col := 0 - for ; rowStart+col < len(code) && col < columns; col++ { - if columns < 6 || !compressed || col < 2 || col > columns-3 { - h := code[rowStart+col] - fmt.Fprintf(w, ``, visual.HexIndexColors[h]) - } - if compressed && columns >= 6 && col == 2 && (row == 0 || row == rows-2) { - fmt.Fprintf(w, ``) - } - } - if col < columns { - fmt.Fprintf(w, ``, columns-col) - } - fmt.Fprintf(w, ` - `) - } - if compressed && rows >= 6 && row == 2 { - fmt.Fprintf(w, " ") - fmt.Fprintf(w, ``, columns) - fmt.Fprintf(w, ` - `) - } - row++ - } - fmt.Fprintf(w, - ` -
- >]; - `) -} - func visualNode(nd node, hex []byte, w io.Writer, highlights [][]byte, opts *VisualOpts, leaves map[string]struct{}, hashes map[string]struct{}) { switch n := nd.(type) { @@ -149,7 +106,7 @@ func visualNode(nd node, hex []byte, w io.Writer, highlights [][]byte, opts *Vis if !a.IsEmptyCodeHash() { codeHex := keybytesToHex(opts.CodeMap[a.CodeHash]) codeHex = codeHex[:len(codeHex)-1] - visualCode(w, accountHex, codeHex, opts.CodeCompressed) + visual.HexBox(w, fmt.Sprintf("c_%x", accountHex), codeHex, 32, opts.CodeCompressed, false) fmt.Fprintf(w, `e_%x -> c_%x; `, accountHex, accountHex) diff --git a/visual/hexary.go b/visual/hexary.go index 5c6992fb4..e5a130005 100644 --- a/visual/hexary.go +++ b/visual/hexary.go @@ -120,3 +120,51 @@ func Horizontal(w io.Writer, hex []byte, highlighted int, name string, indexColo >]; `) } + +func HexBox(w io.Writer, name string, code []byte, columns int, compressed bool, highlighted bool) { + fmt.Fprintf(w, + ` + %s [label=< + + `, name) + rows := (len(code) + columns - 1) / columns + row := 0 + for rowStart := 0; rowStart < len(code); rowStart += columns { + if rows < 6 || !compressed || row < 2 || row > rows-3 { + fmt.Fprintf(w, " ") + col := 0 + for ; rowStart+col < len(code) && col < columns; col++ { + if columns < 6 || !compressed || col < 2 || col > columns-3 { + h := code[rowStart+col] + if highlighted { + fmt.Fprintf(w, + ` + `, HexIndexColors[h], HexFontColors[h], hexIndices[h]) + } else { + fmt.Fprintf(w, ``, HexIndexColors[h]) + } + } + if compressed && columns >= 6 && col == 2 && (row == 0 || row == rows-2) { + fmt.Fprintf(w, ``) + } + } + if col < columns { + fmt.Fprintf(w, ``, columns-col) + } + fmt.Fprintf(w, ` + `) + } + if compressed && rows >= 6 && row == 2 { + fmt.Fprintf(w, " ") + fmt.Fprintf(w, ``, columns) + fmt.Fprintf(w, ` + `) + } + row++ + } + fmt.Fprintf(w, + ` +
%s
+ >]; + `) +}