From 13eff2d365b7818053f3b0c570a3a00c9a1a299f Mon Sep 17 00:00:00 2001 From: emidev98 Date: Mon, 27 Nov 2023 18:35:42 +0200 Subject: [PATCH 1/4] test(v2.8): cw20 and ics20 tests under wasm folder --- integration-tests/jest.config.js | 2 +- integration-tests/package-lock.json | 14 +-- integration-tests/package.json | 2 +- integration-tests/src/contracts/README.md | 9 ++ .../src/contracts/cw20_base.wasm | Bin 0 -> 315040 bytes .../src/contracts/cw20_ics20.wasm | Bin 0 -> 348656 bytes integration-tests/src/helpers/const.ts | 2 +- integration-tests/src/helpers/mnemonics.ts | 26 ++++- .../src/modules/auth/auth.test.ts | 2 +- integration-tests/src/modules/gov/gov.test.ts | 12 +- .../src/modules/wasm/ics20.test.ts | 106 ++++++++++++++++++ scripts/tests/init-test-framework.sh | 76 ++++++++++--- 12 files changed, 216 insertions(+), 35 deletions(-) create mode 100644 integration-tests/src/contracts/README.md create mode 100644 integration-tests/src/contracts/cw20_base.wasm create mode 100644 integration-tests/src/contracts/cw20_ics20.wasm create mode 100644 integration-tests/src/modules/wasm/ics20.test.ts diff --git a/integration-tests/jest.config.js b/integration-tests/jest.config.js index bbf2be55..852b389d 100644 --- a/integration-tests/jest.config.js +++ b/integration-tests/jest.config.js @@ -5,5 +5,5 @@ module.exports = { testMatch: ['**/*.test.ts'], verbose: true, testTimeout: 30000, - maxConcurrency: 3, + maxConcurrency: 5, }; \ No newline at end of file diff --git a/integration-tests/package-lock.json b/integration-tests/package-lock.json index 08bdc3ec..bdfa5d14 100644 --- a/integration-tests/package-lock.json +++ b/integration-tests/package-lock.json @@ -9,7 +9,7 @@ "version": "v2.7.0", "license": "MIT", "dependencies": { - "@terra-money/feather.js": "^2.0.0-beta.13", + "@terra-money/feather.js": "^2.0.0-beta.14", "@terra-money/terra.proto": "^4.0.1", "moment": "^2.29.4" }, @@ -1803,9 +1803,9 @@ } }, "node_modules/@terra-money/feather.js": { - "version": "2.0.0-beta.13", - "resolved": "https://registry.npmjs.org/@terra-money/feather.js/-/feather.js-2.0.0-beta.13.tgz", - "integrity": "sha512-r4/BsFCGsWKnOil0iMe8ZyquqAoZbbFlcKLNWb72lbBvkUAfzHjJA/WBBy13vuGuS7Y80jsDbFBditBMaV7cvA==", + "version": "2.0.0-beta.14", + "resolved": "https://registry.npmjs.org/@terra-money/feather.js/-/feather.js-2.0.0-beta.14.tgz", + "integrity": "sha512-imb/Pi6Y3+8lAiLODAYU0PQ5Pygugc3QLrf1wpL8VsQFKu8sJAFsL4k/UUGnR0h0iR3GSAtq+kebcX8NwxhsJA==", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", @@ -7008,9 +7008,9 @@ } }, "@terra-money/feather.js": { - "version": "2.0.0-beta.13", - "resolved": "https://registry.npmjs.org/@terra-money/feather.js/-/feather.js-2.0.0-beta.13.tgz", - "integrity": "sha512-r4/BsFCGsWKnOil0iMe8ZyquqAoZbbFlcKLNWb72lbBvkUAfzHjJA/WBBy13vuGuS7Y80jsDbFBditBMaV7cvA==", + "version": "2.0.0-beta.14", + "resolved": "https://registry.npmjs.org/@terra-money/feather.js/-/feather.js-2.0.0-beta.14.tgz", + "integrity": "sha512-imb/Pi6Y3+8lAiLODAYU0PQ5Pygugc3QLrf1wpL8VsQFKu8sJAFsL4k/UUGnR0h0iR3GSAtq+kebcX8NwxhsJA==", "requires": { "@ethersproject/bytes": "^5.7.0", "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", diff --git a/integration-tests/package.json b/integration-tests/package.json index e245832b..84da96ac 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -30,7 +30,7 @@ "typescript": "^5.2.2" }, "dependencies": { - "@terra-money/feather.js": "^2.0.0-beta.13", + "@terra-money/feather.js": "^2.0.0-beta.14", "@terra-money/terra.proto": "^4.0.1", "moment": "^2.29.4" } diff --git a/integration-tests/src/contracts/README.md b/integration-tests/src/contracts/README.md new file mode 100644 index 00000000..3b17a073 --- /dev/null +++ b/integration-tests/src/contracts/README.md @@ -0,0 +1,9 @@ +## Smart Contracts + +This smart contracts are used on the integration tests of the node. Since this are the wasm build there will be a list below for the source code in case at some point the binaries needs to be build again: + +- [counter](https://github.com/osmosis-labs/osmosis/tree/d35a36e5ef74119191c47f1ae55944418e96e6f8/x/concentrated-liquidity/testcontracts/contract-sources/counter/src) +- [reflect](https://github.com/CosmosContracts/token-bindings/tree/v0.11.0/contracts/reflect) +- [cw20-base](https://github.com/CosmWasm/cw-plus/tree/v1.1.2/contracts/cw20-base) +- [cw20-ics20](https://github.com/CosmWasm/cw-plus/tree/v1.1.2/contracts/cw20-ics20) +- no100 \ No newline at end of file diff --git a/integration-tests/src/contracts/cw20_base.wasm b/integration-tests/src/contracts/cw20_base.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b27ef84d95cb9acec55f6170d83339170c48c063 GIT binary patch literal 315040 zcmd?S3$$fdS?9Z6`*B`XyOK&$Nfog6?&|BQ?wlqlR+TaBs8xds$tAYI!5u>19ybZ3 zx|6C9k|M-#FD6ABu+S($Xbl+cAmJuzqCwFPN^5D;-iUM?6*1aqmx>rQNR+h33(Ecd z|KD6|?{n(ZD%2E^Ivv##+$Ytx9X5$ zuEg8?Z4*Q ztgl}~etqkq>u=eg<@!12m#=-@t^2cHTln>_x#q^KY=7Oj|F&DA>e4mWUVG@OTd%p{ z`fIPDzMI?RXH2czf5p`gMnH;q5!hx0gj;oIM;4@;ooNFe6`=E*@(=N^$JjRY&oA%Do5P2XW(#*@%_AT9#p!kM?tG#D+WoJ6-Jv(q z-t{-W{+4TQyybe)-JxB(^ap&=Jor_V(#ae#wK5QG=KF2#cTew_}{PoS6BTX z`~Nh5Du2;e|5^U$`CsIp&7aQyGXJambNMs*|H%J3|JUbkdEL$D-FVa2{91n9ZEv{t z`^#^=<<=j|ue&>cd;Y!o{#W~E|G&%MnZGOl(fmF6b@%2!kl&Z@-~Yb+z4;I4Kb3zl z|MC1C<%jbBkUyILZ2oikC-VIt&p)3(mj6=zhxsq$zm@+#`7h_!eJuag{0sU1|2O~7 z`A72qlz%k;mHapJpU?jwe?0$<{MEev?R-CttJwZO%8wO)oc~Gwsr=LF$=~FElkUEl z|6Ts~`S%sCe)XRfe_1?Oyn6qS6+c?+|B>QD#r|)7r1(H_-NVI?6hBe?T=C)JKNde< zJX8SaZx>G#zg2vqxbD9fe^C5Q@l5eQioY&CQ|y1J_}k*|ioY-JDZf}8F5g`KdGYRY z{*g~_dVBdjWlgr%qe4{(7nsT%$x|`OTggI(pQ&UjJ#X;u$*6^ypmWD73UTy$W2w(u)?Uf#iM)CVWU_N>@b z(1B2r?_0|1Ol_7;e#@k)bN*GAZv_KGN(^77yE|Uryx`VxMV%7BiiVE1)J0wHEH-n= zno2w=jZm%3#8XaST8G%&fds1_Mz(F{GVtaSis zX)vV+Q^sIKhGRy*b}+Qy!IUQ$449f3Oc{guM3Gl%FoTv$dLTM+36nn@_k~y8O`sfl z6|wi~A;j+2LtfTHO=jP;B`z7R;SyD=`%zKs<%+NuSF@D4q!+yAR!o&tIruVn275x+ zYifxEM(-&vFcJ5s-K$z-hER)Qh&2^khVW}M#DF%c(c3{$JpfebeIR-t%+mXy9*Ewn zwe()CqW3}I_05A;{v6H^PWmlshf~xJh1!8otGmgZE=KLJo&!UEJ;%#>PN*FSwLGip zxizR&wR#}b4(mZ%ao|>~dXNMVuew%B_f!vzT3#5n?rvJELoHH|M!N3lDWO&^3bku0 zwy5=Mqqg5Xo*jT%-dTw28GnDdxKdo$Z=T2wAkxMIJ$l91@9UoCyXoCB>Nb`OW*r zgL03cznK>>@NhCPA8Wvc2dsxLH4-JITY?gH3x<%K~=BO#vFfIFjmF+`B=lHG1_pDp` zWMU;(fFLe}Dr7hWc=YDJCuv zCYGbYMOCO(!H7@gg|9`G+Jcmvsv9sTw4gkhA$Qyy&LyXR7vnli0MIpTIj|1}CgBEV z69?)J4&-7E?3)Aq8V=-F$2&Ybo&!}aIIwSmbVUf#gq>rlZNw;U_eZ<>P;%zu9-ViSmZ{T;eIuHD|>U
zBJ?(gh}@Daw_-;*+y!Z777iE>&?yYk88SbZY_dHEWRsnuGb}Y)&t|(r&`MerkkXDa z+f}NGW$aQem!!U+VxSo9DlhU~@#0+=p)lYS!n%X7nu53IApCnCkgpm1h`}$sWn5fv zM=8_(?&9DC6AUBjZd7CsBdHkOgHg~N$+1;O_k~6&SF$76nl}S~gW)7`#G|+6&F8b1 z@@PYPp8`q(t0wQPk--7ofT4vld8E8$m!tk zG=h5bQqj!O^=P3ffpyp%zWwG!hWqTPYa$#eOlL&n zVSE<1kLThhIt4L!25=yPC=XMq!q@xC)$MT7>VAz;NDtH#{7c-0fddNt7X7@Sn z=49E)Hr#w*+{3QxHPt~NQW-8TCf}5?qG-_C7&!~|!oH;uiWS6<7V3@rM7PZcp(48a zxDAN1c}PEZKsS;mcuO9`aNp9B`xXVCR+UA38BYro`a>NBYKY>qvUx_`BrM9*DBDh- z$}LvJ-&EZy(4I`FQ4pbp@2P+zymlalx6 zf^eeIk-c(Ol0Oc2>J26n0@hw2@c{Em7{#R;_%T0bu~U8iLid* zg|W~mN-{iU^9Z*a1yD>_(3U*&2Xi+fnVl$Om2`$Q4C6ck!7v`15sO!MVsU;^jJJ|q z)BLxjdHf{FMVukp4xRI_q;i&vSB?opY2J?l=w2cdhY#nw%0~sY9FGx_yvfJ&%}}yo zCA-q19D%x$y}Z>w7a))3D6ln@3NmYz0{Oj6v5pInuG#nkiO#{;FpWZA-~_oBHF?=_ z@ql5?@6E=~WAv>Gt&D*@RA`=5 zs9nvZMrHC#-66|MsZqa6sub>93e+qg;4Vh9L$kG#Eej55(&(XTtVvP8)}$|8>Vt|R zd^{;rmpU}=TbbgemGXGnChHDCg*-S~A5V2D4-ya(H%m#EKAVrv7IL0p4s?Aw7kMui zPob(%7~DN+T`JuJ>WHTCbitZ1%dJbp-JR;vN(50fIl45wTkBHAnA-ZZaCT||UAmAQ z=GhjKE?rpFLeixR5*Xl1%D>m@QrvK`#1M@i>r>(bnh)4@HP^+j8l`+_(qE-#w?QoP zlPYv1NNNGIjs!vHCIp$wK#+|P1h%y=eLwF31n|5x&88Oc3+i*2qG$61Ut46~AQ6G+ zFP}!9e+(=Ko_8Xr>b{hYtpqEbn4wme&_xxxWJA4aN0CWeZIBq;#GlXwp+_(onON(Q z!-eWxx&-N+S8qs_&Qm4T>=X#D?_*fG;BFE7fQfnD15F-UD;oPDtAn<+yx!6^wq(6O50h9_R)J~{rp`eI4tXPcNWKV zr6xgY{N!$ggNR8|4Sm=|a&sVH~w z@zengx&u!nGXJsMa$3@?o(p;YD10_IdVz+GsPnWO&1FVywM9eZSCA2~)&Mdt&r_5F zKo!)5CWuXgLtu_j0?P3yok~x(67l?yWn18Tf;Pg1ZHXnDAuao!5%E|kR+s!mp29pqWkgl_kvY{iDGZ1)}|1IjP+(2 zZmwseV@^$B+;_I9H9~!M0tUmtlK^m@{r<(7C!^nNx%J}g*E~PX@Yb)-{);Jmq29I+ zGOCMxhYn$X&oik41bY_%C(qwozf~||GrVALedJE&o<~O@g%><92C>iM#{)p}ya$kz z&wpTiHg!F%y}GkdS=$*Gn5Qg;;LnEVJn5s_Qz+0q=5>L{o)j;&k$SeRY7q^^!r+Av zu|WhH#Ex$Nfz}{P6iT<63t>io8S)f>Fp&*IXCmX_hl#9yp_eWWi0GwL*p@qxuduEp2x82d@BH4QSyRU(j%s1+?n2?k-^?Ra^K_Pi5E||x zqeg@fHE*^ZXm}tDZ9kwz9^HNX-AA$J?QYdS!s8GGrzjd*aT@A@pd-P1d zu9=jWxd%7=qbgqjQz!nfmoETe*-Q>@SSYggzj=qLJi7N1Lt4osR3LKhHYLwdhHTkf zcqw(UG!Jq4J1%Gj2XVBd$6ZvOlegXxwOkZd{xZ3Rtheb7|6O4$k5eTjhxZY6=k|OI zuO-$cW%d;g1Ld-~V8+`p61cocW=7VW)3tM_sf@yek-%?yhyD@Oq5%~pb5EFlGR^2D zY{!gXl>6Kv4?&@Y=oG`y(I|Hh_0nk_1-Ap|ct|LWRqlv{F$hJzV2!Zw;N=($G{9iA zn&K%MgaJGd?%*ig^d=*aVHcp1+1m>{mnl$ts;nuH@mP&rfG3+`0jnQ_$M|-06gitB z7RrF$3p=K6wO9GV>>sPSuWClO92#3STo}q`S(fWcwtc)9m6^eIEP6gC{V_9(1m?d! zV;KiYmMwBw*qJHRy{Kh*BHp6weltLGHzUa^5t-JaJ#|nH!g)HQ$Y#yxM0V(^>7@9M z;!VLic&_6T*+Rc1!*laspBgr zMly9TOGw5-woSY>~OAc@=CvELyT4J!*n||mHDV(N8NaTL_xUzxTIZZ7on~ZH~FCjCKutL z+AYHptx|(w;Ij-81j~@3K(95kTqv37Me~d%XFB1S13?Qn$g(LM{1kCh>AJAd^?11; z3aQIY8rDj7gXZ~#*=u$GI+1(`n~SD6le@~xi$I+g_0r6rnDC%G=@Zdi5?@%NCoOJi zhXWz-$4e@!QQ4Om@@ok{L>3wHNA2Q&r*<(85~>ggStG+iE_Nzs1|QzKFv-P+Vg}fd zg%GhJ(nf5U1si5!!@Om~LIK3*s6jvWp8v@;=m%z3#;ias7FMgujHwoNu4K8iOWw){ ztE^BiLklObe~xqJ%d0n$!=i8P`egoLeiIxF5nR+zDd ze~xM`OByKi&tt^gNN7w$6S}Mi(&&UmWq|NlXz2#^2@)fxD|uGAI4>tnc*4kNDknS< zB-amMsV{Fzq-lc zSkjPXl)(I{C>Ca|u*O}p`EqP2?qCY8@!Ebug(}>hZEW+qfL3(bn$i{a@fu6|?O#)z zdq?kf46aA2*5V?(GTGpHDx!xcPjJ3u3lM08+_X2lWr2U7vorcSjql02e~rS)JgMX>BUB(g3Xc2w_1(7 zCvLY;ZG##srzSbwfAXZuh1PtdN3xs_ZWxfcT$E*wY~3YUaO&4slGID^mmsTNLXrC;@PE)(l#8}bAr`=k33QXHZ*-`G8N$vuyQ5De2=Kksg zFx+dEX-=T3qj~pK>hjVh45=1)s)rO2z&nb25%LBeDSxb}=a-f=a1fxl!ZB9((+IRu zhj2P9tCR?BaVa7!3M4Y=3ed)a3JH->A|Y^F`(}1@?TiHS46WYjJ#&si${3SNeqXXBrQ3A z0rss~SbkR5ZM({+bv=Jq`DB?w-pnH^s(S^0Kcym=wiK}=Eiiw4MnFLcrU1Z&yi5s8 z2@XpUG>xi1qh^4>JpzH7rFoj&)Yena0OKO7d$w2&I&7s|LW^f~IE8Ml}yE3pE%ICqqHS7T4xYDg!VQN7yhRUO>>1htv&u1fmtM6Zsm$R?U0j;2%ctXyci@aVe=wH>&n3m)m)a5Yleh*(Lrgx zX6|y*qBanjLW)U90Hp-r`3lllXynA;9^U)K{M*OpvvQz_F3;cVa%wjsd_=oevK_2e zUUWI!^>r^hv@{pBy%==<-fZvu=w48}qpbJB{KPbNlv^ejP&PIGrpfvB1^<#TLD)r7 zyNQ9eIdNjjLlRFGeYDJUN^T!$;KxrJ>NNkBL_86H32@Z~>#3uC#OudUU!@$NIqMM)f zBd@c31}VO<4{Q@P6!iCKYqr_)QK${OClZy` z8Yt0L$ZqDoxi6XRsA6mK`;zHiZ%t`AE7^PV<}aLdy~=3+L5wDWmDB*%u0t-XV*WNn74WV;7f2{~j}$;fIQ zC0PylJ45V|oIbRXfb6rJpG*z(+f`8#E zL4mg6S@kYM+y~WL@j*KsnOgpxmeY~cawyD8mzc_vNhXOGi9sePv|7s+qGy)vIug2R zX0C@)Yl*gRPAYAfWeQMDRoXY%GpJgX#+!?*?8bd-FcuPN`@IFTNW#oYc3rg3RBfkQ6S;4&hz?rOBSgBpwtq)s#60a1q8e}sQA*!XJn1Xr{D$Hwd5J^kl6d;U zOI>9g2l24xq{TjGFm%4$<4IJ));(ipCHwWMl=Gt`<&<2|dUK?@C{6b$k7%0|2rb-# zi?hJmyyoy|5-+;{MTx|X;A}iZ#-)F76U>K&;uQ1a-MF(vEmd;kNU7G;OdYwi1ZoOq zJqi%&UR{02(sw0$w3BYpO|MOoJBxl>U+yf~Htr&TIfN)cxtiv*n%}kh$P`EMb|w2j z7YXu{1d6!FtF|Bo@n&&`cymMuuC|zi<(H%jTJg5jinm@fkX%`8eo^9WuvWaW#3=FB zTl1QHcZoM;f{2P1EeNqEGHxr(8-o{kRI+m`@RZ!Ge}wLPhtPgJ4`g8_1dust>i3A2;j1WAQ$+E#6p!M1-t&RuPiBuEL&12?gQ3s zU#09L+keJ0_Mh>LurQu6B#mdmk>o&UHXC2Iz^3rU9Mv1az1tpdRMt{ivqpnNaoUcB z42jAXKEO>N4LodkxZdi3`c2<{=Xh(AFQCG4_)qsxK_>&W73gYL$v(N+ZX%CS3(Bun@nJdBrtDUO1nJ^&%;TVvknr zwZiXIs2e$b=fVD?An{MqHLvY;=3gT4K)2kobj`LWwuAOO7Jj zy%t&$PSSojGyvTVCrUz5mu%~U4Z(UW#WIELG9UVZ?|8t>X~9eDw(8l3D*W)cIPZ>u zR-+DgJK@Nzz@P&7*a;{5u#XZpGGP0ujcB#RlbgHD`*@-hr*=I`7GS#`b%WQGWOXsc z*V(WDYcwFMOS&>r1@%PcSRuPYjKl&~yZh}y_P1$66FPi+-rjP&RZ#KoxJ8GlIg(05 zx%9X5j5-rV3ixc)`qE@h(}Y~2)3@IP`>aIiil0b+6!({=8517MnHLOJKi zB$_NtTY0Bi>BquE+lnM#YQ>r4w4z6;6{0AkY5jMrep=XQ>tlbcWK<#wxa|QJ>LICe z87CGQsTfz;+zUJzJGI}L?=8qN-nzGZ`PMPoT;t*|Gn9m1v`BI|Pk~4&&$v80G_I|6 zA5_elWqaHO^DgeIFW6hW{Ls?#Lo_`Wa`|>62@77{8ok4l*t*%Df!&K2vc1Mo3D-9J63t@)2rv)>q zShX`5AO?@?B#@JhmlmZ>Pg2g7`U|u7Tg5&=#tRv4Ya#YKCTI{UNTgaFYThe4SrnZm zI_e-#X^>We4!+2!agZDz(L(a_8C8UvGK1 zKL25|x9^nD%p#Q@t$1;ECBM*jS8zeYUB(5y_7X1SvhLwRn)4-G(1p9X)T`7bj-S-! z1?;|F+>C3esSj3I+Q$Mr+X-3RAhK;v(UP9`Gs;+dVfGouvXXsvW*S+PhvwVOH7gl= z9|pu-iy8T(Do=@ya-zsZS!J{Z1Ansv>Ost5@wU=HysH(smM<<7Uq~ph;+A4#t5_jo zV{PsEy~TKIP|}`*T^oC5cuOwp>;|hsqf9NbGS47#52McK;AMWachjpiovTZ2YqyOM!&YTS#_1|RZKnbluS3qNQPlB*W7soZuWAY*T?6Y@6>}5-;o%&pmRb4weG%)=f&tB zBRJF&)aQ13z05vv*A8Z@{NHNYkXK+ZtFh5-Xg;nf6*L|` zPNGta<0NLhCFlMeJ%xjOK?suzi0fO=73jIGUUX9rpOP$5a79;`+*^TQ{U`E>1qg|< zG&&@TZI#SsoN!jwCwVZpO4zgG9K_o1QenW(evkaF$J9gFd@AW(Z8=$?Hi#r^*0(Z> zi`$ta{trJFFYi=Lzx7}Pe}0Zx*%IFtv$HHr+BrWl^eT!=!R}h@a6 z!eGZRezg{0SX4zXGoWs4mPrX{d#(kCxS{^Z{3 z&IQ{aA_fcXQWBMIv0fj2Hns){tn%r6{DQsso;aXj4;;@MA!<1h;kJ}9LQ_JW5F>t4 zs9$zmJMeJ-*P&I!j#)8PSqigt)yBt;t~K;i(lQjrNF3Q?u}1So7oc1D?Y3}6Od+8J zi$Dy8B||B_olH!bTqUG_!QN%I77^b}TZ|ajjHSXp+Xt{TL{N!GH24_)lurmd%Y0Mp z#5)69OB1%6nlX8-QMDW^N){h?Cc`SZr5v9nck9QtdzmH2_~HGtMIeec7^)`OyJs{c zqpnqLU#TH&^o)5(?RHMbTNu(g^3J9bZQrAoDKzm1J*TpVe*4JWElV=^jswDW)iyif7dS%oJIo+~?CQ zpc;^(hGk24Y0B8=35Da0Tg;i&RrF3DO2gxg&gFP z;J`2YHQTG9{pMn$8)JVg-<3Tqt${vzP-1Q$`fPSPBBE00szWk^t0bAX)jZO6L`eg~ zvMqtiX2h!I$B_pX#yL7Bgvr(MvZ4&3bqj-GIRXl<}ZGUWGU9m;@4+><3sOrWWFm)$kt_B zXNqhq0hwCTh6J_Lia6O~Ok7syG9m6is-??+Oo6TfMwKdbzcYR>yt|BTe>&E$$7UiN zWo`TGDL^ySC?lJy*X{r7b^HH%&4X$80^Fhfe=JuQ6SvZWl8ti4S-mqz_O!UUc1S!hfxptC-u>5UYxcit^triP`^364uBT| z7Ao=*E<~Sp8_3wMC~$WJE^u-e8y5}uWmCX4los$k2iF0d84}=ojt3m4C?J=?c34|R zHg>t$Jq1D5BxnCgk@xQ)7{#8?^>TgzZvH3{(>nlyrhuxSOMt(tmQL z&wFX4sN5Kyp_hf`Zy?ae!GE_-IN^veh`Ox@(C7@TKD&bU+ND<4 ztV@=mXkAMjU14(q5zEb8^tph91OF-t8sr;$!^Y1q7V~%X6?fDw(b#vmd({D4IFjBG zmf2iJ_qLwo^Z>3Gt&KahYJ9D1~!j8Cj z*W+xNfEHU{a0!C*fq+Yx`~Veg6LBVwh?O^iB5fU47fui;Oj{+#^|rB%-&}IZo@RzJpg<{XFhCt@&ueu5W*xCej%o{bsfadQ-H#pQ7b*s|Q*K z2Mh-Tz=-zr8A%Icvy0%J{;Tu4IE2T_>~-gBEnSJ~*q~qwcDpx16In~W;`;^-n5JLh zUl55mkX)f(po!p;V;tVvS9Q(_(e4P;m(5+W3A8aVafUp|;)Y$toetld+?WbyT^`O= z?b0QuH8}RA+OzfU#LQRMXo1TVfdulG8*(IH3-&h5B@Mb>>I_Fnnm&HW@rkyRyyl?T zwC2iodzSn76Mco@s3z0wZgaFVjnUTNbv~0rbRtfQK%LkHm$5tR}8@hop#H`OMlgR@;SY(KzF`a7nBd%4?o_$I+~TwiMYM)dU1I4L+9) zoA3h*MemNH)gPg&kAauuJCL>%|D+VJwrYm{x!0Kj+UG+?nNZ*a>#8D`*mpU6xc}wwD90_La*Gq)ZTg zyTg6DqzoxhP&>W{0WC(E*BGcQa}4(2?nMg7a~oFeURLL|zsEU&Fp4M&@slWuy z1Mk^gtOt9Cf=QNS+ANG*g2F#_4+)@TVIW)f z`~gJ#+~NE%7*Z5sR^ZD6bhVf8ZGa49HdJNP!XN6NJMo8%SJAu4Tl%4uG@_><%sTb9 zG)t{xs8!woKA)Cx)HO|*qIy$%AM!C!GP7d`zyMP}ohR~MX1lWpb$dQ@P4<83?Eh4g zqs!aWe~>fO@#v&)iqeIwjBH8jMB8uT{PUqU0JwnIHQb#0aI1sRZ8X9v3-NQ)iSP#X z1>R_+o595cdzH79FsWI&+k5pNFWWuZ$2jjMME3B&q#S*Zs2R#CIbU7!M*lR?7s=A( z-E#3_t-z_&Zk_giadu%;(0nK30rZ{YI%Y%~3tC`cqkrP(YRV^Uq?3gse@0mqL2tCa zqj<57=D(7j*xj-%bOQPx0O)-syHIDT^J5FF8SFr1H>ZVm4HUBIVB|N2v#;Bkjk`f? z3wDz=a!N2Xbc5judcsw_gFiv8X&nZYL+~L}D^xhx z^uLh-YOQdL{oKK*Q*Ee(;CR28;IxpOaMp&Ax!nk>8Su$ z2A*JmO14KAJ4ykZ?`6L=Z(v(4d_Y2fUYS79_Ch@~XK+(X8l53>JET-zp6AeQSp~ts zl@yGbmXG}G;PW}?B6{?vv+uMoY>5t)xAp;t629Rxs8rjA)k167|$|n1&b^woE!? ztdhmECi+HuyH5v%i&Ap}K%o;bIYq0GdBRT$N%dx4m1f=CTIp}Uf`?Ij_Zb{U;dA$V z4zlKt;UT(_9UPhDvBtNBc&w%AIMVNoPolWp`Ir9&k7k`EbU821e@HEmi443 zCKz3GC)q8#bmWJ!AS~wi^2&K$*Ux(kRuoXx=9pE?}&Xe#e|$by}^OtLboc zgZdB))sGd@_PYC2F~LH+5~$<28?4;s$wJ(bm=;S{kueP~eyb($$ zR6T@QqAe_vD4zU}Q_M5)r6EkQVFU?h(aO+KaF{_L9z+X~2hO>gbu+PpFttcR? z29L(A=KEKQ1H@>H=1;lKD^MN|%3=^N7ZWdeDiE(8ig@{zD2pd1fsG6$8oQ4gqoq=r~&Q2Ac+lTb}vmer9SJ;>FLwW`~FyT!H?3u!5)jmiL zahjTl=I-?-*AlBEAy5(~Rl;`j*WZrVtz^%HuuL}9$pzqSbCSNRCkh!5A5_wjBW*u# zxzqh%qTnUXFblEwPDpDnj3}1i(-E#oF&qJ#Z&U4g3l~eV(B^z1D=M!p{C)*bIH!@~ z@g=RZQ!&L*5C;0C_E+c)!^lhZA$6KJp8`r^MBcHpK9s3riNIMXQ}-doPSpPs9Xq#% z6@BcG(n4iCu8)pkq1hB1NPBpv@?1Tin12q(q@L$bD+~nXV+qQSC_co{*%ZPSFvBLI zlAPdMOqn`h`rUyarw;5>Y7fQ<>O69M9rXf?N7daj7gX;omvXQJ3*E@y&}d}T3hYps zNrK7G17<#tM@-?_NToWFNIM19KP{^7+t?_e(N20MoyO`EU>t9(jUmAI9PjpVXwi+>Z@EEkru`2o!TSOg> z7Ob$eNOPwh)}W=2L{%jiJx8=XwMJMZPx8463uKtGm&+p8vS2GI-Xk7dkTbIepR+S% zHvC{h7?juwi$@R^?^grb(!H7uTVbK;NL;9jE7=Dv1x%Tz%TGRDS1fx1-gx|Y-q31T zJH($9gp2D8F-Q^8JAKwxvm&JDgbWMl=Q@s}5w?F`V^Ly;Wqv1f6Sj36KJle9!xWiY zEvEjHS|5CQFr{X{qL}K&5t#a@#v-j$YxQe%RyWzt9YJoG771Z)Ok#}Pxo6xStCB6k zpD>V9gj+v8UlIcQnS(#j1N3Gf5MW-|5AmXJ6ITr9+{n7fP@)~SKAo*JBf)7yGBgIS5=ANnl z`_kC(9XhyeX{{zQk)KRenYh*wxDxqF_(2G#4?eT}orJc|jP%AbqFCw6z`C0d%>gyC z-nC7bkH_gX!kAz3%P|}|-b0rBLK_?|6dXo2s$P5=n8N5p-*bAX|0V8`!)G)LvXMm ztVZ!rHF}40(1TMeb~10mfbr_9?C+@+69q!%{E^uXwCX(rp}}a9Kz)4oWRaX$3I?A@tQu)kiKm$oM9asMrT;ZcJmq5iM1Gzd-}G4xYc%Z z80zaViyJ-uITdARi%4epmaLU%=rB;MZ#y%vHP&tNe;tlqDgu?GV!?O4t-N%UAcn+E2rbJsoc@}&X?U|A4c4&V(BBT>&S|aZt$YN0JV}4 ztgw~7YuwyPBrS2SO#Qi40fRFPX26bTYjGgBqg=(g92-c4!!t*4Qo@ggJ31zQiz_JUw4pkh#|enfooX&Md-K%_o@Pq-Hs#=Rotj{C;7U zMdY#9^#5UF&NHcErVb{Xzzi7@@rmmj$PCm+#7X6;_Khno(M4Q&5VjN-+br58&ZjP9 zvmlB1mEy`g>E@tiiNW!4Wn$S5m7$?!{VL#~t@>#W2>==RJuCF!pEdJi)XAgk4->X+U3Fz!0p&xkSyD zgOjDiM(iyoxi)=Ho)N-uj)MILCvbXw@ z2#yqpsYwN?(UM`(|W+6jCz zZp;0LX6ntlBwFimfk$0{rl9_Htq`FJE98;X@co_wCEOMbjnC9tC6@1ZrP~6S?Xm86 z{|q8m!E&$DwK1~SX;qb`+!W0|m{5Ihs5Ywz%AE+7du>L&GQlFr5m`es83fv0G1JX< zjhMOj0;CpVwST*3Y9Jmds+sP_05967Q64o3Whw;OrX-*zMRvf|4wq89%40>HHUCK) zwf-QZB^2T4pT=Y;*r|Mq=}440BuW#nk^Jy+OLUZXhTKodh?7Vj@I=~ zd0DC!p10CsQ$?o8g?SF^3y^PZD5){A+hvAdhrQeGB{F4^x|^=^KS-^nC!rQ~@> z_sM?O3whpaT5COTzn15XY9S92DTed7!BB z?6LHebswdjNYwl?=xF4hhaFIKc7SWj!_f$%?60V-ECYWgU3@NsK?OZxrT$jUC%qdb zL}}H0gl86CSS~w?S4@T^83V>}S8<7K)yUFeuZ6(ALfV4Xc9R&beARK$J9l;sk5EbX#f(dC`xA$0u*Z@U+GmlvnEh+iCD_XPpN#X1J(un z>K1S&LZ9C3>WE)re7iU+$Zts-bsM0lMFkb6n7BlkSdIqS%k0Fl^f}K|UijiXQy)gt z<#)lHur+7_Ze*uBR)RR3`sq2gG346DAWmJI6DvPrZBpz_B2-IlzTUH}J7sU%w^deb zxE`d%KC5X*jHS>$TQwx0MQw}Ri#~KtEG6_(SupWmc6md zw*@~b-`2T1r|L_oJMIfoC}eA1sF6Y=;e4-JEfgE$sGKmLAlaIDGp(&TjZQRA{r(Sr zKG~XbcV<%;&O8!y4pVTZP8kk?F%Z*k-eVfRd|E{+~JZ~8d zA`xrO2=d|jwC-sNV|eM;l8#M4NIH`Qc;ia@T^K`RPmG~Nohd@|Kj09WWHyPRFWHQ=Q5!=-*v6-;34$98#Cc8XE_)tct(bSb~Q>NSK{`fp`5;w1| zXKgV^y|u-H4ycI+6Bj~Kt?8%J2Z0ri*Wjjk;?f!-y|!F=wNymbJpMh9(S%l@s>l=% zIrr4;C+&u9qIe%#O9n|_LdCmqbvK!-xtPFMl7hhen$-w?iKf_w#%DT3Y;&zLO$Ldo z)jmzPZ%f7%v1D8r>%|nttF9Hcwzbi+n$b7b{53$``^$RpxMr7%gt(wyLxAlVb>pb&?C?G)ERi&z`onOSSYJre=wZW{*%ys`qH}+X?17_ z<@kcz9KVMLsz@f%YoezToU?=e&2cQ1Y;)Abw9&}$&D|HPw_PP$d^ z(px7iQbrLO1?#jD>9^Vh=7wNyl~TfqI$KD+E&Obr^XU{`EgKAbhbiB6=(;PLsVFFg%3r*qBA6W+;-Ge2wd_Ih7@{7Uy?-^1Vmd|HV#pT;(9LgR_V=k?WV32dz|W!zoZ-Q9ne zn6>5^7ryqWk5w-s0{BJp2EXH^4c%?FPoyDiIWYQ;Qk&P;v`Hnk{y|0%siksp}?FdWL4w9NmBFx-xWD(_5;0mu5hx1S{whBd)(tg!avSsZ*1@yI7w&IQMcOZ4v*(KkwRHj3`G#j+{EwTtN z@(C3d>zr33FV{ur^o7~icKgq1bC+Cst}n)uv>{56aQAe7t=@u|wh5$=H^fF)Y!dwz zK{nH!TT;jYP)eO-(Y@5MH%0T$*jcLXqT7Hb$3qqXR3l&!IsKQko8>R;faUlVW>6Sq z7shn6yz^&;WqmhkEwDatWFLnp7fdMt-3LG`Sq)Bcq}W!QJ707;h85*Lo_t(8k%!MdD{?<2Jm7UwgZr5&I6{T z>~@J;y_#kdHPCiYgAT-~Y*^})C*MI@m#m^N2;OVl>pZ6uofX~J`*bJbg>!`KT|WES z>%g-unuS!JI2s|(A?HKO%rx%=&9X%Y`c(XBO0zQNL2Q5$O!GY9W|pOnqX!6q&DR>u z3@&LVO^Oa9(y>G$2F@$ML=oy(Iu|kc00TeJ;MT$A6t)Df9E}cBkf(UmtO`Z09-uuF z4=`0t6XF3n+-QurSm6&eFT8($iRqSsDqKs zf=9UDlZZKEp@(}a>%0KE6vP!vwAQ)g4R(Af>%6pePKW3b)L8xcaaK`925 z*hqAZ!}1Rc4Xr0&Ja!bBqARVhA}8qtNRs=LBAB8q;c0zrN)pW!IPYKLL`uXuc#*bv)_f){d0>kSDv_|KF@q3H z&VKH5*Cq?RP0MeUKq2>&oQW4ny&WGF*qP81+gQ)^g1_qmf zw!Xqy^(I=cel9$b=asy(H~>&=4sj@onT#;`WBDzT8T`W|LtIFHAQ&t-Za{bD%_n~J zx8^Tz%3HL6$P! zEbe~Oh+67?FYEVm`#VoLR=B1&C^*TuSsIo}Cj48vGYPJ|$fRO;^-@dXeJIi*7nn9K z1S&K_1-Cx&rOYxbfoYQe$>j}4>2#9}D!0Vs${4`wZVBxxHph0(3Sf#%=d+byE@o4@~oqixbv$S9~F&K$ykq87Y?T*d%EOT4E<4@*N$Bt%5~vs6&E zR3NVur2j)vfdx!Z!Dgl(%}+{zs9+J;oE_ehhJHbZA_&qPbQle%ehM3!`<4=V{`Flw z&Y|S!II|kND;Qs^+w~(QA#CyJHTKeRV$tllS}i8nFGVWCr1vruEbE#{P_VMjzX5^* zaVU|9pg=-tF}Wu>5hOHh<;3wMq$MI+JC1}%P&(znIP3@Rbs#n0CgYW`C#LggK<8y6bnIkPGAa=$|rzD17>+L=c-_KPJa_h z#tK0ZKUd-SHh|u9zMjCPPQB#2_&@+yq7VAzOFw)jguzNJg;e*n*LKlG0JWi_d|k*R zrsj=6Swr$nlQz*Ux8@TeaVZKoqFpnW@l{UsATK*5h*?FzpElenb>d4nv+`}VyfVd! zPda(FR=%y3e~fu59~XWhZ%;^S&!5E!mJ4G&gh!CgnBJUNmbX5#n$h8%qFC@R+ePTk zxwBpefxKD_C88y}mny-GflwgUgHiHeE4lgGdzRUv@)OGYKETq)LTCHGynB>e)6xf zmoLTHpv~P~of&#rNd4E+Quk7VUDcP(0@SX*wODl6{crM<9IlUPu&q11p0$W{Wc~C& z`=`I+hu7nXr4zB%JCDA`nmPHw_6#XfEIwN1bJKN2P-dgxKY~28%p_-?Wde-nMbD5& zdCP=&mMr~&N#F*&nue2O8xC-`QRnapUkg4k`f0b3$$yviMuq@(HM(cwGpabhM&>5w z^+9Yc?eUbeAmi%>*-ZdKj8v&!?iSt$84`2=>_iTL z3&rjghX6|XDwNZn8xA&d#9#`R(~r^-pX>`B7;?GlX}*2LdAgh zLXdK1;@iFoh3nG;jAPd1)*xhnH&1^j)IDyV`L3hc=udd?mVP&v{y>B}C`Zhtf*VxQ z9e(#@&}_b8Jg@t09DT%POYKzNq3%b?S@D$g!&xC0*z+%EMN=tf#UV1x>{}*$hMRv2 zI4jIC`6qH#hU!A!=k6w8i5ZmGz`@|1f*IKJ@^`hjb=Fy7ULDh5$1X=D$Te5lBz2d$?~E*k)l%qg3#lD_NI@hhxh@x{`J99qer2 zI?++s?$}EnKi^s-h!gZL|F~>!xPe5O%{Lqz&x>~8gaMpT!U=Lg2qfZym=owqACFSn z`D9U~#e-_%?3+b>U`$EaaDp}f!3kQopKm#V5Q#Ve?qKm8B+K$qav;(yAWQ32sq%altn}J`o@L6U5 z5^@|Smlhh_wrOBzFgUtdV*cb+($kKzj$A7kZm5t{$-y*wUTg-p+)!De2j}HdPrwn}WU9H@*^5bD%tj>k1g{@1A(v3{0Qo z^`>3Ac)mzkb#-b!F$~(cEJ%vXL2czl7I1{Cr81d6ZfL{-_$mig>11&Q%&u^O>1p}h zfo4eaW!_5a(4bDq*Gc|hUkA&Ziup(jSZzLgH{xqM_w>T|d#JUA_Ss9RszzOaQjg`e z__Sq&rjX4A{KhHFn!!Fe_LwEn&^J5Eiv%5$K?`1wO%3|oW>p+A1Jv5WMIwZYR_iPh zh7#6AqP%07f}rm&S`YhirlJo?^_io|KxYv5m2i$88NJF_MJ(=NCi@J4aB^QsOU$ic z=94KqikIvvYl+T_RE9+|chmPK9me046BVhEgd+7Z`llgsMWSGc_V}E0M{C4aT3Vx* z3Ux*S#9Pps63Ka>0FPEf`dZ`b$Kq`ZS$Pp_UzEWaE`KYgOQzd;9E=AmlZh~xk3QimF#*kTsoAZQ&fzpcC(`82B@>bL-g3O4i5>cz z5oX&xqpyN!VYKTei&u(Qy=h^ngl=sg@^Sw|9|ahJ5&U|#4Xkjx6wAx z^W-@-uplMJiX(so$t>>0tu(}Y4w8>*Na)ByK%m^sq2aqDgVKqV6^dAUg&Ys&8!<2U zkWd=;3t*sBC4W?6DAvBI_T@UMTuuPqRo)guP&)S9Y(Kko-usZySb3O+YH)EI-gp7q zQ))s-->i=GT$s^Q8e{9`(0c&qNAJ%evJQZIfEwY|4&b&lBT%^ZY*_?8z!+(gbZ0VjKNJxNtTEVw@JjTeO+m4yrM6^0-QN?Ra9f^kpVikKp@ld$QnA=l$q-h42JVG*43mSu$sKbo6W=b3_F)p@h!e8P5MZ(e*CV9(bS z<>>I6Xyi#x2+TE~CQD@grPSA_T7c=1yyMh)iEsc-j4xCh0))kKZP79>+={@vcgs>4 zOZr$2=ukyBP`AY6`dd5#4e1Dlf&=+_L7xg@=Yd#D-AcDI;G2Sl_;}0cNMZSRy8yLH zZcznA2{nO($7p0;{FC&>d~?)K;4yKRhS5CgCval>g!;u5>}(a-+T`o09sL(i>fJ2% z1Z&MBxHXpO@1A@CJu)wuZO~^CaRdt6!{~8?aT=;Lw5at_CwH zQU_QD=G`7;5WB&<^O70duEW0!8=RxfX83m=ZJ1y&TM5GMH{7d2psiSm8eXa0mN2&PC$wmTUzy~H3K;^5B*wN=JImN``p}_q^_qra zVQNuyoNNI6L~vAUHrevg$|V?(Dhp#X)eQ7}q`Nya6`@>&zC8&%RO!eh>|m$z+P%hL4L^W{THj*pBOWv1Ks zIw>CSIWzFGVG-7=;xG&>q9M!IP=)T;zseW~OF3W!SIN z=9&_YnxMtC5kW-WJZMIU!?l9MTDF)WE!{HJkjbNXyRZ?&gp*gMGg;9L5>98!$Af%`w4v*B2B7`E%M zD8o_yPvtLl$L*AVk0$|riZGqD-_bRW@iM6b zV6B%~&3c*oZbH(u^iz!$@}PL~GLd!iGKEJGy8Jr+I7PVYGrUadR76kTN@htjPnp)y zOs=4!pzAuCNI+|`x0AUaTC5ItoXiqpRw$}G4k}=^UYm`>J~`D`R5b=$DIZ6Qq&y^^=4U=@GZ0OLtWq%wzO?Y`!A&XPNalH67PSXc%S^9 z)8u`zGMsTTVZ?gnj46rIM!!>JRre6HH^UW$umk4bDLn>3j{Mwe>b$$uylh~9{q1&n04LWJ^RjW zPWy)NX8V@0;J&3rH7JaQIKv6C5S_Dd;LnS!Ic6g%+0|Ok=Yw1gG6+t-M0g3vaQs0C zzO1#7^~M_OdR4^~)AFR9nKq;!WL2j%r48|En(t6hnt^I&&P*99idcMLlGc9G2OtQ} zBcQvJkR%jjVx3`Irbn&WAp1FlOpVggi;0wQ*{!pYxXLz3F?M>vUOU51+Jlk?HmRjN z))QN}@vFs_0^y=FEeD*aMqS%~*Lnamsu~hKtVSay@nnVZZN;{Tb3e`(kV@1|Y1gci zYDKKhKwsBRwhD#W-oyL{i8(4qY2}93{#f&MTAL{q6T?-%&k-OwxzkUhdQTxwrk_TQ zC((#@$dnc%{y-|_UV*=BZ(8(yC0{m=M&-+^;mb${1SCGgjiO05(n@wY3wjX6&8%bc zqNMD)|JqFOO1p@#308f&d|nUr>2g{xV&8U=MG?i*4E**W!nvX*X%n?`Qq8 zpTk~cWV{7l))&h;CsZQQ52tyIXigp?!h1MOaj?rv*&IiALRD`jgONlg9+nGj3ckT$ zqm(+Vs;nxj+{m4FSTxbM)?#vtHm_j#(aUK7*qE?v@A zLywvDWP$$$uyJ183Ne;fEegm%WyUWhO{)XoKC7D%P%542>6~v-7)_&7p^4aIiza{X zbrqU6ogSLDq%S@)MvoOv+mg`aWtI-g#4{a~FwV#*PW04b>bO>BF{K$ark*#&)Rrlx zoJo=})nQ{Uu(9b>*uaEtv7ybPtBGdr^suogQ4llEcgrnz_`sOu&YZZk!$#urS!`_5 zH$+;hZn1G(E3?>egW{FvPqBf`A`%kaI2UCtHlVc)O;(?~b|J;70eFJ)X`9{s*fs7hljv#u?hPgxz(0M)vUBzIyY%L&9`q+YI;B z=fv;G|2ThNy|}Ml+IPrhmb_#>2)5zKLw*KDz*(tdk`-wCE7q|>PZtCRiO}IBJ4K=N zvP__}`LJS}_2wv~K$4Rqk$OBY+L?Hq=ZQo=X8Ry0Q$fVU&dtYpKBzZFI|}}tAGZXR zCc`>O0xe6CYLu3KAbnmU)4ShC_^pN8SS%{F9t05HePuy<55GC%VJe(&zU9~h*j%pPNpu5&nQ^Wx{Sr^q z4f23rD_K2lG^v^~;ea)J{e9M9%jMsqYS<*bSyih3t$x{8Eei*WqkLiZA8lIwLZKbu zZe3zC@?K$(P{NnS(aIk#Fz1H13RA1b(e*Zq7=^oA^vyh%f?eGynO1a!n7=?*#JtBW z-~k8t?%m}TyUU?@Z?2UZ*S_+6fiyX7 z+|fYC{>YoVZ8(7DFdDx?L{gY)|A2nT1H1yOB6 z@b_putK->SeuhL>xv`%~jy;l3CcBDT5RtIEAA9-Mm7I^}CbODCTG`d~F4S9kt8a_k*;(o7q) z-;=Lxuw2t1wTO^_Dj&IKt`!e@gPDSV+P@~HC6w00|1!zv4C91wl=>=0mx=57y{ zKzv#N*p{g!g3eD?x`;^Pqy2m-?e`|)0w-e?=PAFMBt|3=F^0 zH2OK@5?yY-q1miN_&IocJ`#u{JWCcm4wtgCph2G!kTXyc(BV1d;fm2Vvk2mC>slaN zpe?5yqj6}CWlnL#qAp}mBPlZ03y9ASwr4Hbc%DiQgew4?gF~Fq%~D zKv)t=&t+PP3Og@~j?{1Tb@*`gO&pKI>TgEl3TM?>S{})n$wEsHJe7o31ZfN#(Lb62 zsmh3l~Xsl^029&ENcR zGZ0Sm_@fZmw&p1=PQ@?wKv=j&AV4!-YW$k9>G+QuyQ8G2jx6>H15|mU(P3wIV3iK! z4NR91e7ku+b}hGXJ=(%$5R^4dio@n~?%P1STWrw{nkPSWlsmpi(R}8P@s;p@}OVU!|IU*BjYm5RyYrYl#K*3h`S-NMU zL<-IH`!mQGm|1PU5(*PuynAT&q2x6W#g5cfbclN|4UkXoS&xIjbVfqR7bc87Gi1og zz9Q(IGk>t~Or(*vQd(epBv0zP>jh%cxhAO}5pHT97I-f0$0&ke)PTvNy?KNcwcCBB zh1N>6xQGDJ;h$XizFLSA%qopvGSl(YI2lKQpx8+IRYDADPg;7)BgDy+Oq_zMoNXQ+ zgUfQls*^=&P^WYwfc=n!pvjV+Iva~YlGd$kEPbyX&x3q&HE;>eQQUE?q{6jG2pJ_( z0+uT95z_^V$hg0dhd4URoZSuXaYb^%KGqr3f(^n;QWFgx%wqQj-)4!CsvYJK5iNZI zU+1tLe}GhQrXgXNYD6>Rk#=C<>x=~`z493eWRy!u?GS@Ut$hOEDcf7_Dr<|EGh-9YRLmLMfYO}ZBN`)+I^S&+$aUB!IoI&S zZh7hLcnJnDC3{dYt{@uFJ^>ZOm+(FTaIKTl+yXlR0%h^RFrLQIR&K7{Ccx4J$Hg;Q zSZTYdhtNqm@ahB8j7qHMM>e6)03ln^aFAhX{q33G>pVzXUkRa1il@icmmO>Kp3I4u zQVB4_Co)IX>?mtN&Wa=Ldy-OjYo`hdNG;>dM$1m;WzwAJC;b=Fan+=;zQj_(XUjNp zPg5pKLg0y|=4v)zZwUj!>bX6FN}J#swiyZ3zWAT*3LuT#7wyUO87u?#1N9|e1b0X% zk(pKMID;i6Hya;NPKH!EA|iH&XrWU?56NLe`wmk^p;0Y;jQ*uTfr9pMo>h(#;r1n> zM6Q>a7}E-JmyoITW40EQBYAtQj?MO4YYfq^R=v7@BXV)3{aOGW*Ke&JU?xlpSRW>k zr6w&kid3jYgcrb*EYj4muZyE_R1~ja8yCW;+9SfR&0O$tSWl9eMtn$2Cn3YU#WoUe zg3&a#N5^Plyh%x|>*g2dI61_7B($rCtt6|JQNgf9;dxVh6Lgc95_(LGI)-IMp!lF@ zD9D6MhD%5JgJaAK*+EUAJ;azC|3bUFP?KmIhy$w&<-^(67;v^9###rgG2miP4F__N zuf;E0P8dzi7r$8Ej9nHG$_CTcL2r=4>Rc|iPX?DS4S?7S&h6nqjXW_ll_QsN+uA)n zC>0n((Xh+zAXt}9<5mz?f*3!YO>l9T45HSbGA0*KP(htPsVZ=OvS2vT75 z$zqAxP&re<BDvvd&qH`cy`Hnqb@p;j?0S~ESHNw3zrL{ z_Hwkfot6<0NFE6yBCZ~#vTIIjln647(xgc?!gC(wydXQhQ35Sn#RRPm!_^fDya8N< zv@`tk(EnFyt5Pi+AZ7W4ZcI}EKWZzIbmJz;9huksaSFFSO~ez`U!I&Df)`ojnwd-v z*RYs($*iW3_?7XCUnSh)m-rPz5WhkQ*!E!*ED7OO=0>=bMAF>P5jt8(&@rwA9pjlo zhis58U-n*DArF?+7nBqJ8uaJr_mLCrc|(a?bilkGn>B2xO%a_M%oG=v%wmAT0fQF~ zOc#69oS{E1?42zRs$Qd@~xkiQIr{P>7X|DZ2FsgPTxKfg{Or>Kuj>9#ceGD1M?>p0vNhO z;{%D)9n~2I)f@zG6N=uF2?ZRazJvj_Ck!Z*KLn4Yz`nT51`@^9LNcKCuz|WYpkCtl zw9pw)VQ%U%>KCNvTK`{VLA?arFvr5ptObP%uT^PC^WICfo(08#V3Si=Pze)^-xt`rZ*?`ZuL;1e_ucI&5jSBbgSE)vq&drzn*Sv=iv=9*@Sv=0S7k6kKh zi%P)9{Gj@zBT$juL_T?(Y@vT>nZGd8Ksq5o=JXiU#Q(?MyT{sf-FJRx?{m(*=koHB zhfmR>9{U_g)}4WlzxVnrN9o7Tv6k*AAJW?X3Erq}oOGd)p)V4itUL6@)}A{+ z1>hQfP|)e}Mhcl>b4q;_b%u})DvQQR1WayjBU|WvbNKc_lwk- z!tbm4$!{Jo9R-a&ut(EjA2ODqfaL+_?u`q|i+r$$=^|J^D$H81>|BpES!L&!1C)~% z)R}-v>Xe`hE&yPS-ak$pTTFcy!?WE%P3WBEJ9@2pd>Z&YY=sIK+SEa%7aAW&ch)}I>tMU24(hc z{>-sy=ibi%TC zVMb;N9>ZTUyO#+ei{fMTuD^}6(vfI305r@b=QUpN`#w!vx4!;S!K8Vwd$IR6H}6qf zFW#zW9~IQm;L;zOH~1NV;70X8wL5_-KLgdGfvQrm(^W$?4x!<1+1$mApvs4aY6K<) zR9y_ht$`}A8^ElcwSDqaijg!_b?O&J4xzyeX<2|V0X5pju|ZB}=AK`I!xbzBnA7|} zD#GRjRmTR;mJrCZzesd932`jV(F_wJn-Dr!e@oG+=?TBe&Q#b#ziZ?YlBI+etY{o2 zw_-{20vu&G(-J#SQS}KcVL{N1$nYdwkmH*^rVfgAc7sFw!=lNk>`r?9fc4Y#eof!@I9Pb49pxwN{AOyaU9AbN9bdNcf zJ27TPgJ&$J>VSi0Vvf9BwJUwH1-JmuMgLKGI1|hdBF$MOe8A-g&%iul>8~Z%-k&!c z5gK_hN3^p>{O_#_Pym^{g|%D9<`zrCaKAeCv-nYX$q*)P}G#3-p6Ww?lX@M3)G&ENacYkYnAGcyEcyG;OedRLa*&DEGcyrL%F(2 z7ndgWe5X}>v#_!wmtx*rz|>j(6_teniTV--0g)(BWtvRC!VF8GqGFOR0Oim7=+Ocq z9~voL{z^fL#lSc-P?1$RoWXTfAcZCSx%tILG%wg-x4iAwv^4b9x(6)KUkFlH$p{Tm z9(BZmk`(HQ1qdSetz?A6_AB{*xBka}^lLlrCA!72lhS(1e8K_-hfm91Duvs$8q0CB z5Y|0lfq4M{W-DP!j`0|~6WQ%dk`dxn60WUtz{2y**3~%Lk3M07DmalT6U~x-%JHdgHVv z0(0sGZKRG0x4@lp(8N=*u}i_(x%bK zgy32C6HbJ$^Vg=y%?`8N#$dGvF z`ZO@Ab!+B;JWI{9W15EQvs6&uNr{|cE5FUd>--u1J6;1lSpLIs1~O*S8^)}s06;43 zM!Lk*X&B8N<%hL4>5UB2F8GPKe2UAFUsAZy1Ke@B$1m*vNK zDEicApw>7?nc5BavOOa;N_)jY6v94E2i~p53)S2=KgWj)pJFv^l17w-!j(U>lajj}9)jkj5119yy#G8+n~ zxOjPl4+x~3U?X`gW+o{=8*I$f1Z+gWQ~F7v@wk_<5jybZv2hF7n9-0p)Qeypo>&qP z{@4_X$pPi5FDEF*d&0^A2tZ=p9~V0HCg?;v8IO$3lF|ctzDdg)KL5GUHj;V=k`V-j z+#}xF)FMjQMiL=YMiOsgGu%nWCL|GAYLH^f6(EJF)P;EQ>|X<32qC7a)C3{EUF5{0 z>!?)XdZ5&sjP|a86V!Cs%Um)_3fQJZUN!xOJ=#i&nKENb#eoYP!etlv!9XrsU{MzKZ z|F!>)Uw5izEy%>LQcn1yeoDV?vi^u&DP^h9%iYP#DZ_nHuj=KE`c-0Msw(HZcj9t; zaR8!l4==FZSE_wUtoi+v0Y4!Bvfh}R_S3A*+;5feyLWQLPg)>r;l)qBC1~+_vhP9A z&{*qTA#_6HWxs)r#DR&@E|ABEe?o-3q*QAp;-r$j!{jIJMf8MZGg=NmtPRSVI$0ZS zXLJCzp678a&0w&tk36+1$;Sv(_)9Fx#6H!({W_a`i+Wp)P*pE4er$J$gduXKer$_= zkPuUENUE;~kWP(2y&CN4be6vIjc@(tOW*#PU)Vqd(tN!m>Dr?GrK!~Xv7<$K_ZJ4A zcP#YEoF&KMZ%UxiwkkXk!*83(@KD6QB7Jx(+f+~s*|Xse_$UvG7_%k=gsa+^e0 z*fM%P?aWS$faeqtR-c-bh+`cmaPmA&=>8=4XQR2<(T}RS7iLFDbBpEa+0lMoU!EOd z8{gACGdubybsbh4i{*>{=2SU+hn^0TR7!iOyY&kBY(|>Fnun*lvbBwtxIIewJN3Z1 zLiLkTzK7c*acfEMiLO<-BjkL8a?!HeI8#O%g%yEMx)IEOrGz*#ojtazbMTIv<@B zcAD3?|Bn;7Ss&q*tEAi&qgz$q5$?P@xic!3x}*Ep)-~h(hs*ilNO8lrLwxOx{rLb zyGQqe$8>Cw`2{rnSj)h=8X`T|-_CL{roFpeaEdqH4bf@dIPC&l0CLfb_mlmeJE3y* zZr_5GY|zw#Ic&LvMv&&hUvShVz_lq^3E8Dpa?B;P)4cPXOP=i?AO(eTHkzmi|CiB_ zwZK-nKjQnv&ad|G=={3w7eClJt}8hGI)JM7-cg>{6(RaHUEfRI0$qRPj`CGqiETTp z>#cW`uju;2ca&#zMMr#DSJv5ST|Y+NJ6-R*qkK_Uasiyw^{zW0Yh1^7l&iXa;?C{~ zUGF7tE>|Hme_4lVXZxy=j!X=il^17X9iE&asxuHpXaubuzHj5zGW>(n5F_o#8jQAX zyebvJIg}eX6W?y__|>Bfb3f z;j%yE)!wLMQnI)6#WFtL6eX!ujqj?I3*{8YKcrz9=@^!Wsa2%%)tQAEm~|)68;Vfj zV;H{QGPVc=8fZCue}x?pPHQ!Yj}G&(iH_FMcq{Hwk(_DRK_G70xIL}4i@cL|H~%xQ zv)@7R$FF`tMQIIgmH6WMxL9RAcp5p9Nf`=uC)nv@F2TMEMbQggL5=5R696@i>k4Wd z(-qWM5zR46Hfluff#dRG=cEVEv)@)-I58Wj@!YHyviJt5u~kjN51GVhj`gqRQ2*WB zQC(^7h^{neHq@{j_~nNBaM-e;#u5x__Ha#t*Spy^h-GP z>Q(hJovEYN)7&n_?MvK#ByN#Qsy%W0BDeSWR*o<&+WHLK1!twW`skfpMW8wXlF<&3 z2}_N9#-p40|2F=A7fSRQ;sU~^!@P}mAymSkxWFmeVw3J!Uk;uhz;*`p<^%N~{x_?g zM8&k@vHm@t5&4wJaZvx$=Ap)4n|6E^urR`){+QnoP-V|3>pz;*(yLD}i=9ZoEVkVt z0kfQ|M@kulboV4yiIcLm^lDhYD|u1YA-#=tu6v+<>WiyzA$qVa(kAom^b7x&bfQ^W z?&lX65Vk(o@RavbkC{=~TF6NuQpqi59NHd(btl!6d+#itFSPdPGVjnab!u_lezfu(#Xx{Z8C^%XgHeM3`3(lj3a2UtB`*fo=i^8Lces+j zA-~IeEKdM{^SgfX?*V5WZN%I}`nY|Z_oG-_z(%w#R_2Y>_WI8?9Xi|yqb602D{kp2 zx7GV2_oce!2-XW zHf|BZ{mad=qM5}5_1D_Z)q(mK+s_;<^X2w4mhitq-%D#$rk48uZ9o6p=0TYI{-#&j z1@it2dUXmxr9&_F9;pBC=ELaKpS7Rq)jw}P)2sij{YSXMjJph{ZHD@&omEMeGCvU zWzCmw)NZWl#d06gzXQpQLf3&7m|BIk)%6N(=+|V$*Sapf7c}nh zw)N{O6|-fOop6|f^$s>?zUZW%FzV`1z4Qbd>enmz36Y`?z4LFpM66)HngoT69Sm7ueOZY zK1MGFX_Bs~FkTSpqUuQxK-he^PsgxB;eo6-Tp44Ia!Db*im%U6F7ite4jjKq-O$+yQb3K{I(Q_eIN{H`lTvYcA2U8#ay?ZhpK)D|<_I&Byo-^u(LWN`aWx z#b?I|AUbhtTm2tAaS+#yj9fq=kjDXf9Qf23-3tyY#nV#t75TaP)xG&nbIIs6mne4N zM+wIhwu!OMQP&fHAFtk7`61{+JpD^O(GwI7CQ{!J%EZR74$Y%x=%>dH(5LdTgVi>E z{=!dlDkiUFz6hj2(0PxMCO+oDIek}wSE{0=`%#7{ouhB`qdulsqTA}1xHwG!^S(ih z8GNp;!I{sSK!uj|2@WejqyIm)d-xfh68Ijmv4y(#Sl}{DrR1@AZ1f(!pXIju7^1wB zg^k#(7A2~m{9KCe^K#+?ibe|{0RtvQb{DLVe|*sy^E)exs-QE%MZf^YAE>S&6w6KM z+(4*;4!Z!o2PD&0G10%E)`A2lx683mszWca_N&2xj{^z%uJ^j}UJ1S7caUR7zshZ{ zig<5L4S~P|e$g9j0ga?9snc`SfkmSGp$z&a*W z7)XPS-RdT-pNfS)4ivEAb-a^@v5Dz`yV34yC-09Bj<;1iIrmG^aGStD{Wg|vGQP3m zWi76qb%z6<_@k)g-PN5Ck}iY;N=ES7wd&3y9prwu?ze$qK|U7Kbz55Ud#lBCw^%J! zdqD$&<+fE6gO6JJ<83fR0dP0ZqoTT&{%qR~;>-vN1CcqVueuQfuA*l#h5_S(ZWFnw z9$-D~`zVSj3jnWw;iv0sKU?=6)sz(Xvn!BJ=aPQ48~ zk>QXK($F3ty;whffyxV`nBu*mYY`!$v^3BPR&8~)KsaAr4c+T&9e(c7@wUKBFhh%1 z)ln0ZbDx^k3m^;gLu;hKe{75Zyz5bsUU0xoUCqobd{(<=MG^XseMSRLb9yzOj@h*A ziDQYnTDonreYL;2$lD6KL_QI0=-`YJ}O1)mS-qfl~cp++!PEycB2d-iy5tHJ^Ov72rki_d3 zLH+vH`sjpD!9ZWp(^=M5{`tHXh)(3Koc5^zW0^onaE164QWo5s){5>v0pF;TXob22 zEG3QtB>f_lg{wH6P?1~un4~Jm9*QE1Aren$G-3%l5eM{OKqQ{>VD6}Q)mJh6J$IYt z?4h#jZI;6YgWFumXGWpcTlp>;mNEA^K!~wyis zE6B^RNd=rXK@ayCg8Bg%Y^E`RXEPD*x^5v2cl6&{ij)n6`Aq>&^=?>gQa4BvK2#DF z{t_K@uiMdgs2jQ*63MSN4?nJlM*xGji?u2)sc18rISpfq@A@1>UL6WzM6esqn{wrQDcaHOF3o%>KS9HRwsvhy8Fi1eplMlr7Mw6P?k2Mqe zQQzfmVA|t5?|}m}0Rhc0<3RbNGltSUGV68KeL^U@9LR!3MMJEcA$p0zIT~w)3>?xn zjfXn~oKGwjpR7A*nXYa8QJF;U8Q<%p$O3#1@FSiN0rGEEAFCetyv_LLZ3k`)tsc}?Ynboi+HTD|y+lDeu-8n%ty~s@@w(p@DritM2 z9c~TIbTq;q*`R=~c4mgEHM6>SV&qIet;GwG@9#Pev?t`P4XK-hO@Z8~w%&=P8KpRFM?y3at4b39ipv5p? z4?ul=V>lrWZArGKbIgTKIyB;TWHI@R#s~tj#bWa3?PtWPKWjh#^U1>oiDuUeT<(q5 zinbku)iB%mV*Tl8B*Cz?)B};U?qpB2jZZ+~XhkhIFFX&(%gy80YKh@`#m6A?NM;~F z#zkPdRWZLkCA;MBvr`7&V=j9d`#;>q)%37j=sm2pDhtG=JINZ%(Nr6hA1ieTl5a}j zPNuFwnxIK^EwXL|Xyt|H)C$?SrzSq^n8}=d7Q^Y!fUd?)@JNnM58BPUPPLr}5um0E zy*fq^Zvd{`eG24sYU97!fKH?)7Su$qmeVcQnrBFUv|Mop4LL?By9j8`T`_3fr^WKD zEghml>ePQ-7xQ6Z$9`l`iF!5g@1C_a9J7>O;^gXz zIHm4%#ER#zr|Nn-g|meMUR}_DX$<(V5OVki=HIIh@j|Q4cDTR=jGD0ndq;#ii%Ei} z8&&*1B}7RUX37H~uSLSwcLi8r@1vVFgRhpO+W;DZ1FI{tziz9fo?`%akkFjQ8b8=P zezJfK^WjSp_E>(<@-4hBxOv5$!SXLBg60FwHYAPA4n_s0OE~zovQqNSDZB@pWcG5R z_}#JH2LX(-4oY8%xq@4%9~Nq0C7{|C3k18XYZKktEkbs!C}z;H-J)aHieTnvkU?5y zJkN74nN8ARtFPb-nox;!(KXb_W!LD=9tf zAOWORaG)a~`+qj+yDVG~9rM-4?W@TvP!T%4`t>Q|q!=BKavC*X_2M|puC*&BPC`yz z_X-K0&8KB=hjr6ac(YxpY2k|;pD(o-Pt(~w!n}Jmg4aq|lNV%=V9lmi>>8q-=wZ9b zIp;r?4?QxMY;#t7JuBV$e0AIY>gN5@JMaFCqPlO^VnCWp9gZbUH%&Q=kFf&eRAI*O z&&Aey)#abz*I+~Q^GlPTspXaCM~1gpp5aHVg=*4Br5XFQ+V)b}AW=NsEgo2szh>3) zy#TS)3nIMhz)~t3#w*K3`~U-u1&45L+Dp1+I_5Fc^y7sK54%IT^Z2_$Y~zK8)A&B^ zFQm*^dDvCm0u6MSx(rIx$S=~a{93Y>@6!6+Wu*vGvyV4!@z07o zsWpqS-XPV+V;omOMB*E0irSSUA@=ayo^cw*CbVO8i$q2t|Dr|@jlN%143{m*uW*vwn`LD)vcdyl_=oKL5N+ro9L@F!CA-?V=; zU){2QbSoi73k#KWXhlX6HH}*cn7zC63w*k_^NX$MpC?lY))9wb?d?1x| zfjarX_#LTR_oS*iBfL-}PG}k3!2jE8&Rt#aY)>!YY0DsrYecRw zd`DwC)C^WM--NTxZ``4b=J@vUUkqu0$9F^+8+vu_QB8Y5XP-Kz33NCdl{$uvubA0? zk5g)Uy^R_a{w3uoe~jxnovdT?H}!lV$FI2{HFuQgpm(JBwPUj|Wnl8OW33j;m07HY zJU=x{TU?LMDjkZ=bF_7sFY*2k?~L`RM_h`-JGChbyRT^(A06gn_%9G+0HaNg-KsuF zRH3l=#=28&$GG;=O!a~4hqTm@nz|B!Ue?d-(yngc=QI3_C^w$1en=8sevMzw>a`CM zyQnwV-qYueP?}xQ4-)ODH!3RH$?LD`wO!J`e@LQZt_YFrs9r;8^I}7!^I}8b(_*W; zm{Qr#fA?+)Sf(F==W$pMD7vYMTU#fjajSp@A-JnjT(UzA&vD3Wb5=}!o~Ox4Gs`TY z=A4=81Ezmxfo$EsdtrxT5w-ZA1T{<)bcIMfq3b-oV~G$w9}6Cm*ZBp7q-$_c)7gk4 z`YRq;$eN8!$T;nP@dM*gYVWe>bp5*rZ}J}K66^cuEY@#tkkux#2Jv<^h&Ly>iBomGhl2nuu159|Za@H$PtSWW^ z4}0A`xNy}*WOv@!RY=!`mw2h< z)7a?wtVR#M%8;6u-Q*OsSqD*0PC;9L^icd==HcOEg7NUlaQOmY(C$CD?Y02J z4VMQ4Dsl$HVuJ)33_9>f8yPMGhHGWIiYfb00)q#{l)Y;T46RenG8k?MA{g_O!Eiw> zZ7>LRL_Q1#j*&7LP{`H+!`8G?2t>OqK42KgfT%72#OTTZagEW(`0&95h--8O5Zk5z zasKDPhuJB7*uEYhE~upq2)IjERM~*wNGt;ab#`4q=y00t`>Pw9V{*1vH$v{KYeu+l zIVOiypKig;?dmK#*$w-vtD6sQsIJxr*W!bG*XTCAk#70m2Jw^KK8UAkKG=yFpAT*x z;Z`5*)*I)?mF#*0HTVcAK$yQc=#DU zA^wA_X~YyEzxSCWt26?RNdwc7^i$+1D z7vV9jFzdEJ#%OM;B#cQ+BBXUj8#FM$%}~r0S?vzld2VTjl{RL)p zL3u-<;=I(NfpyxN@5(9aJ0MHuYf3lZlRx+?3 zE&Tg&J^-~$mvU#mNUIvovO6XDKi8Y&|5>0T`F{(LnKg;98!UhSNP{u631c433V;hz zlSrmC`O6mckEV?(5E?&2XgnJb8jwYbEeu>)!(z~cH?SEQDG~Zz)ZhN1`4Ag*3!Tea z)W5P!f%c2;Ux4;{Lqk>Y&1+w#yd2)dWE$;x$+fWL%SkQl+7SmVC)J=qkTA8B(&Et>rHlSy$h+14BT#xtNviJ&1jkj9=I>wFYHL*}IroQMpt>O`I~Xz1a|ozQ zY!(+J>=lb4{AN%0^vvkvv?4;>pX`+qF<^CVpykp1!C-iehOpPe5E0I(kOs`JX`s!o zr6wT11@Br8m_N+L^(%^U#u8Fhs(z!Jv_B5H9EbA zs}fGo<#qg)L{^Ke*ejpc_}>9~VD2F>aA9KrgTB1Ryh&9#rz^F+sw>r<^+X4LDAcmS z52j->;cNnV6%4WUwXv9-B{PTCQr35NC}O>PnEqf=OWMva^0b$4!4Xjp-AbEIDE#qf zvN*@KOcp|@HfQ_LH$(oq>U~K~yiQF0ef$aI&qM}GSVEi%WDJ^RZI7yaqU>SiQ4AbW zkjbSG36NNtPi7AA4b#<#>@L`?W=8if6{C-nSA)cSzhapyspmmg%|jj z`ZABq6N|#EVrLOaf_8c$ek!Qi!@>=P4~fjG1K!cLpex(v3^BO9r;MFSdze%07Gg{6 zV&@lUV>=`%DcloKDBz~RC6+GMFD(C^bZDZjb^sC?ulkZ|LU?!pG4FBKk;FZg)dSCr zAXp!_>{mbm==c545EZJKx}o1Szau$Q%^+wG>X zcEYk~-!|ycmJv=o3SuYW7UUw#64e4mv0}85St?}hV*Bim@kL8!sBk>FKuj-3n^3C zP~ei(sHn*H3xxs*wwb3f7NNkXZJ|IRdx@grc_aH7IankXl&!QQ77NPy=Y>siCT1fR zXcx&5nQo@U0@u^;cOd)yNj*t0=uaxTm|zeFN1viJXFHALfydSSOzbE}9vG(~*`CCZ zF!M{!kvyOXb#LI0cwBaE0u?)ct=d&P<>Iv^{^U$BIpTIPRkBLX%#1$P;D2K!l#Jm; zg<>d%{s~@XQ4`&@Qw&}1Oc?r7r_%QIlI`pFC8Bhfh|;*)i3e?Nbf-;-V(wt<%O^VY2Arng_ z^wHsu>b(aVcoaM}0oCOvTS$2_kXe>xYWm&0?x!#@jD=AH#B(XJ$f&;Iv!G}FBwQ2F zB1+*dn(=B?8Q>1`FJ)U~U*x~@O>uxPJ#I1o@^698W+oZ&t`X_^g!QRMes-z%xMK4H zNsyR?83cWR8I}kVGgr67%n8GrC!d75`CLF`f|}QamXl%E;^ZOkFSZ-)Fhzi2w1k%2ZDOvL#v|B~o%8c^q#Ln82i zHhmB|0c70+(%#wmeU_ul;wNbs;b7-}2?h~2;Hi>e@X;g~oXnVUUq#VjmM3N(!Yb*@ zeL@qu%GF){#542o%lnhn=zf=OmC!J=M4k{QPMO}JFPO5@vumv)TL^o}4fuD|99Zc<|CpvGag1H%)rl!%sYkS`h-*$JwYeujmhwo_11*c-d4hd_$_2`S8X`wx}nj@GH0CNlL!N+!(Fw zj$Z8i)l8Fjo!=EMfnL_Jz$pozVIv2(#PrId09_o-y4A8ER?G^dL&NZa;8A z8*<0~>Zbj$l3aR|2eehT5yTeGZ+E&BVY2cd2$N6fI`d7EDr&i<1R~&C{k0?TY{+~d z)3D+$5>B+;|3cPLMoS~=JM)u}RIdMvAnC=?(~`v-z|N`%IO9;qn!7pxyYz-6^^XX! zO9s}DQpbmVw_k;K`<6+*(qIAxrj%FlnQ~_UIM&VZHkGgRVk0|HC2osE6y6>YG7SX! z=^mT;5%d(}He4;lok@r_Lyw}44<@Z`)%ebDFGPlUA~WWQ3JLX?1QWc@T;-XlNgG88 zbJdiba0!GZmuR+DX#MzXedK4D_*?bC?1B1uJ-qm{tC3ALABbeT!J3n;=707NyX8$^ znEgC~hv&#!F?VA}iNfaOAMYq1*qq(}McgXP+*!irYDMmG9MKQ5QH{&KE65VYYiG*3 z)Owq9SUOcVNkQgpkegFrTpApHWJncBJ`TyHjMazRht<}plKf9xUn)n}>w2~vRk{)| zH`0seO4LF+2=ArzzVS`EJV1^xE-+r=(X|~BWdS*Wq*inFOL5B!H7bBg$K0l9&v$Z* z45rc>RKp7et{eK<6|Ls^C&oAH@{sa_%>gnP2+CA7x3|-Qb7<2uw*{7k|4+u>dV{IQ zSgE8^7gf~|kf?KETPrcgx`r1>D0gtvOxOQGZryABod8KarsPzsL=xi^Xfq&JHJf5Q zTpPxtvcuZ4t7|b~JkdL+7*oUW*}3|N;UK*Cj2y-^&Ymw-iL@<%!*r100y>+dlu=qn zTCNU!wc!5}L_0N`av9g>VP~6$)`zrc&d-o#Ic)lSJFi2v!RL4-1mpC3*aZFucGR(K z_riRVAoK3dzn}R~ah$LGwM`?-DKg{nSz>rM;QrwE4|V3M4fQ-2&MfI$2h$TTq&q^( zQ4n;8D1q&iyEs6EpD1T7OUzvFAKUUaKdNwm`3-Y}*_nP%VFBVbX$&8zd>ByBhx0m! zf}aQm5pGGPemrg&Q@tFwND7N(f&;NsfNBNdKmKWuC)nkctN`EYD@zk-rQ>Uy7?^gr zmxF{P>)s{6fttu@&^WT>bEjgkiqk+4L0xQ}-4o|Xf8wwu9+CA|5D@qfnn=l8!_qr4 zBRAcbNRzs+IZNGVBYI{5I zY%MBsXpU%dZ|B$h%3}w?cc-Di{vym2&$8{7zN}D0H;(nky*1EVab;LPl&nq)A9?Zm ztUTfbID`o^#hQOrxN~-eJ7<^S4Hp)hj?7y`g2kh~6$%XFbQM+sf+3wy^J?SkYJ=<1 z7z+(Yy-l0hbxwT z=FlHKRlM`KBqH2S4qjT;1HSnqxCv1V|H~VI- z8l5F0%L)Cm0X;$2phsb;2znF}i(-HGEkJD5sK!qx{_G-25tRl^fUA#MQc-#^fMP& zgG>6E3#`G>wWbbhaAzh35^_#sS?S1{vtj88V!@BYd4yi4k=mCW(W5;AFKV^{%}HIM z;VNjxs|H8cJ5}3{$_rmhAUKJu1(d!6-au8!$$RK&_ z+AyV$Z5@U*v_3LKV1>La9G2aIK(ggFO_O3t62bnJ!C@hr|NCU8q0_*@z7gQyfEuq@ z!6Ao1p#b(njh_a=1z)#8V2hRlH=!z;L^zxhKk624rl>*jze>rI0_gz7Ov0B*T-?Qx z;(QA!&R>WWe|d#SvBhRQllk2V7p?lK9C={KAXVJI%4YfcK)?wcCKdy`Y_Ci zvl{8~qy0v*nrYU_1Fk8CD3QXr^TkACUgvds!4eY%z^O)?K5k8eDHu;-!aQ&}-W(;J}*$3KDg zRL1IJ||{jq|w? z>vVuNvc)#S?7U!YBdpO6VN{JBHwu)AK|llTa%V!US5XT#$XMe^pb{aoN)iNqQ=6J= zN>Dg@L?)6MJk;_osd>yJ%cerklXr&!kRK?07Dxo{{sC&AbX40f^>yYEK)+fSPFF9 ziUJ*%qEK;KI|8+Ii25kVn{|exLSA7T+HOzC&i&h?GGKmLPi27ht)~yz0eK`1WMXwV zlGb9jI(&5vKRoO&f*(H76YZ&&DFUGn!`Ol!_9vWhIgta|9bj`_CqU|pl0iyyMJix@ zC>IT^q&`UoD*60Qab3^{5kWx-ICiPBVE=p1{jTt3z1S0+K05pn}fC;-rldQs67gHYi( zp;`6J%ybYxI+J?H8eo5G-Bg6NEwNXwmn4w9znnlU~MX8_hY^ zSEje;(z?{b`it({N^q~qly%xhvl~p4nQ6*K1HZNC!O##r5U|#x$?xDxQNyZ(hqPI% z=IWMg`4t=f3y7-r(oPvC-++0iusKDRo>s`~;xmmIgAVlaZe3^J7gydGTNBF;35d|K z@YN>nJf&+VdT~v}w*-lEBo1nTSi5xt)_4e=VE;*3yVhIQvSwjeV5|$Q>(L$w4v2cU zEEOZRkx44@PU$Q+B@%dzt;EUTv&JF?V}`{LTjc-?4S;ro62bA4Jmay47@meMa|ncE zHj${=L^x)dVRd|s939ei>b&G=XbgL^QWdaEAb@+O?#xSWu5pN&^VCT>|I@^M&Irpd zt(@CmGcD8^WRPN{I@EB9b#PgTpWuCEQk~v>^J0|)N0bg`qHSxro{pv4cr^aFJFRP< z@)sdnywtU9agriHcB;FMY;n@n!D**ui{BLp%kLT4Vl~aM0PyWJyQ={R7WU<3i{q{D zkLM9jWQ$+_YmhDaIsZ*jzbt{Fe+81oD;G!>QH$k@rk1x#u1FPrU#@uT#@3CsVZl`9Yiu^gsFiyF*QU74^%o7yS*hQ$ix0sE@m zAc|1Z#nJ9~2JJs8Jd!Ic<7+DXY9mod2@aLiR*EySQc#2iDW7-L-517>_5UV*zveu? zZB#O#LYv6#>CJrC4DK}H9NHbE#$O3-*@s}gZ0}!9C!|2LYhoV3hZF5W{l;IM&N7N! z4Y?L+)u|Q&M)TJeOsNnn@!~V=r649+HZ6Ib>pyxN8K65|i)=Ni7H#KBeegC3YVqdr zV~t8(q3y2lg&b#3>B=4n?;RjM!Wm1HSw-bIvY*fuA=hl&1H|U$Jh*j<(@Q z3G7QYR(fMX{RCk)veRbMicK^{JD5Zk8nPQt-cYnnL3l=EO)mVgw+Vu3t1?R~;8<5s zO{Qsiw{3s{)hrGzC#oYPSdPhO5LhzT6BW)h2R5cKk<+aLhl!kO6*x@fWUIhoB1GpT zdzO8gHc;mRTk>^$k}`TsiwY5ZBg2lpU95J8iRda5gs#}2R{K(*r%e#?CHsQyJqxvQ zuwNu)KT9Lw$AW0XM%mNQZ56-h_(bw7Q1RZ*?{L6QbAaH)1qD1YHh{Bojjf@N@e?yT zm0Ac=JRv|Vg9wStOI*eX^!S&p$J-i_aZGx=wcQroYO(H_;fIB`SR$LQ%OKH0ejH`l zaVGz11n1c<>(~Me5T3>y=!F39Ad{stmWdYYC^BzMtT zV#v0doW^PbWMic>r&{_=Z`WI5vX}6U%<=-kQ(uI14~Ex>5)2xG-pDkT0HZnCO2h#1 zYX`gG?Mp$~pRT&6*=c!2FcmS8{l_ph8v~}&uXj(QKv*IR;N=tFn!q< zVVqiBqy#@@z0^cr*}ezB6Y=j=748 zEdb$lp0Qm|E2$lmi|@ye7GY*2d<;T_A!eT25Mll>;oqs!Q_Mo15?^$LZp7qnvV)5~ z@btX({i?sS1e4Fb{&txq7?-3*MI8o{ND)V>DG)&;Vd;b|Gzn-pxbPa<#iiyD9Tk(i ze`1v7{3oJ|N(FXInY|%+$qQA6CnwzBICjE3yG&JK^Oc!dybzo1B*7 z;A|)=%F!Z0bjp!*MZvx%1XmpF+iOW>g2oF_ys1!MR%T1e0pkbjxQEE&?R}{h$a-s} z95gS*r8a_&Jp@4@-jsU?0;uC+rrkr5BIMeFlB9MU?+|iBVUCb~Xhb0k6w#rHCRJbPYb{t~tHliNqG*)RytTl~@bAZW=2SQm$+AnFR29 zDz)qwfVrY@Q+;INh%nM^;nj*5Qb*2`+a)%bMzra7*V82rpLa@5d%BJb0PVdyYs9Bx zrbA(idN#zT6^a1uG2$med}>9}D9Y4EgYa}Y9FukW4S~B6pOV-lK_g32j-pxW;V?y% z687jHVpK}J!kf%Oe#*bEy(aOX9aqB&BHW`Y+MyoLetA_1C$nIrbtBa!3r6dQdff61 z@4#F2qNJ+{iI54wDDp-^J+6sR5B&0NsR+AyTPor)?^FWhIqc`_33ZQ_mywFzVX4TT zdiD}F-yimONh;DtIBZ4bL@J_WYLCN3!+zFEMbHRD*q9S$B66Z3QkHcBxDu%idHf#( z{*D2{Do|!xtKUP03!$ohUN3fu0m=tl5^K;@OJr`Yha|c**s7Kp$x#Rdh7$mURi@K! z#=3-Lw+>Y{&9nrxtAfBKs};gFG*If)BnIa;(?yF?oQf7{)ou;zVSNRWH%r}$Q!JNy zpWJ;>@yppR+7Ue$#O4qOWb5OVh*ayx<{$&UX_3kp_B||8F-D72M@-5>wK$R%kFfu% zZ?8yo-TETcwP4@{u{qNs)kR`+6xGwAVq$f@>DZhg2WV%#urjS;F|r+5>aT_wO4DUybCCL{gsDV2u8HL=VM<+HE3?3$ zvMBZ4h`|vpwgi)7aI$bk42~>tjxM^5J}J6r579-p5M9K~LPdVei5~JeR85k+?21`# zQU7Hlexm;Dh5Ec^@rz}O|DU4#)A9dghMCBCz2RasqIUOm*~fZo^lKgtUh1$;1X^~y zTR=!6*IyPQqI)||l9n8MwvN5OoO~boaW%VPb4h^x^;!t}SL`RFl0jVVPg85EvhL$Ql|c^nL#UtHj8TC&iN(ZN>S}ZYPGSBCBAh+J@~$; zmfeu+?AF$nN1v}dEvg;&)J;USUw8iAiKuqW^etJ{LR4F!NLICC9jD|<#srLG64xw< zV^v#ER7?K6NQF%2?3BEiLvmt4!#<*<|LeLYC(%0DO`mON>$oPfGqI(nMVyxM?$aL` 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%0D(5V^1>}TqA*hfrU-GS!qS~bpDsZ0x{Z7at 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

s7x#gSAJX>dc4bhzKPU9)Vj8 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ˬB0tTJ_np{<KN^)azEc7Wz;!!p%pVgAF|$q1E*1OG5W}&Fb-}BqLtj8KFA@4b$T7o{OY3nIMG8L~%9p`Mm}SCm zhSgP_8&j8+&EBrx%vWlwr^3%N7 zh=O&7aDnF2Os7@L2{UyGRF+q7c-%oH2N&x-XJ!W1$ZbgY9qV8SsHoeYf3hr{uEqE+(bN4$eVSTs_`k!4XB zki=v&`-F*gbf;pTH3)cwtBqEXX^9jNy1ze7ARDsvV2n|;ft@`lVMWFmE_G=*fUB(! zkAubTU=-!e&7ksrWP@yYbq=-RqA!I9=??r>E(VPubK%?k_hdO*kN{6`DKqA7#EX| zTe!wWABbH8E^2uRqtI1fHs&Su z7tdL7icQHt3zm6u(N?>!!4>q%5tmDtQBDOf9E(MiR(~&^QwQ$gOrENcYA34Q#YeU> z;LIvTnej=pC;1?OpJY|ikX4mtQl$?2RhNCKg6GLi;z`*6>xT<+JG&H(RG^>^V20og z@?<_F@{54Zx~n&T3dumgWp=2F<(Ee-CeCzNta&-p;)h4)OQ6-OgpJ}MgvUxaP*$jy z1?cu-QA`ayNc#%u{( zkp2$m&xm%goiPZ}5DJ+JSk@GoY>mKSxw#B)9|s1aHcpCrF1fUxjdG3~<3UCrR#H&` ztWk}Y^4li{j3mMbO%4DUfNF(>m2Nt6y+ z7IS$k=@9}@%Gn|GB|_`C#flwj_wH}}f%ed*$D>2-VgBVSGx1#h`%t;vxDVw#O!I-s zY-rQ%zY`rgM*5J_58v{}W2G-q`k`O@@;Qe-nLi%wJ-UGr%ka=I-}TC4teO&yoM}ruw zI6zGO7PPoh0#H64P2-VUq+0A_lYk3IO&_O=U^`PIk0Kx= ziT{6Tx*0g;Tyjr#Idok!-3SY0oOYDnn94OznbUiM9Ix)q$LZ%Tfc zM&ESnErNcsY26RgYn>GMMjc*H^a`s>McajG5UI7aF1WIwwiv?laNa`4=8}E!*s{Wx%2#+ib>R zBnD~OWfA#X^%R96t4rWDODuQ6Cd*y0$#NHLvNDas@}vc^GzU!*9(J2-r4qBa!>9P> zurPhtvJGIvz?Pb9q&p032v!PX0&Bz%1_6NS3~(u}{G|CyxQ>iXsQ^Vd*~3iqICumva#K5yIN#RlQ=OQ;CRi{q>&&XX9Erzw2gWC#l_6ONSM-j z)l=^x%#=Q_DMWib5IUi3u*>cxUcK+`gNwJe2BSfLOJxS&o&0-C1RD=}&%Dv^M; zgcQaIh#P1ujKZ9??<}qCHb&_evPvl=Yk@#3dt@n5Ykz>wg-n>7{2@3vcYOhU!3k_L z_OZ0_^?q1t2~olT`fm!H?^y^=2KoX)^jxqu$A%5oLiYLN3(z5;PZ54J!&;GEAVZck zzs8e;r6Us)gbaZ&HbjLizJjG#<3t-Wa^?pji5&rjjT7G^%Q;Rqsw&wGp-%hcJO`iH z$1}^Bt)j_rc_CEYd}Vq{H)^I!n#^6G$=n5+%w3?#>No5oXe~616oRERm^zCt*vrEHS@cFWmccv`*_8NYv0IE= zs*a?c!`$%?!J*ozC?y5IO>2mDYxy&9H+^*jIC;2@Dw@L$tQWw+Jp@j@EW&wko`DR^ zcg?uDPwd|b+A$J6pywEg9OL!?WR;k(=c?pC7sTnL)ml=-1r@ zpw^~15(+aVa*e#y;>__PLxcV^1xSYy9^0A~hf6HHFpMaG0eHwn(A+?P2E7uyT&%}0 zE+AU!bctR%E|j@BPHzl;U;;}*=oT9cj}J9ChC@p?!jnYs6Qs0Av_N7lkeG&%m&(P# zU0594g~h>LSR9h9LO1Ar=!W;cQVA0lX>mlrpWY_c+qCfpmWGsjSd@BP0FKCe5*b+b-|VPHTR3nhJE z#t$Xtt(P@6k{9S^tfWY67`Uy#WHz7=MIj?#yfX43GQ}z92r3vgOx_gUC`r|-yaVm6 z$RJ*<$ot609>8{x*ZCIK8s1^IU#V_o$!2yMU{<%#gu;o3om5s3GMJ1>E}oScSw)N! z5LrVWW{|dcW#i5=*&)a$SCC;nz2hb={Q+&_BoVFz1Hj4QNCSYxp<%VE6k(hi1(gF7 z)gu4=fWDMO)dSv>0rkYl+dw&FeYgTCM}f(gj1H1p%^0aetBfvJmqNG*O)Ff4Vdq;p zITc_NbP;vkrXqI-sxBcvd2A+%5IMs4bO{tu(YO{ciX6UHr5ArtL-uH74Fqs!pj0?6@%l%g1SyyngqN#N&i{Ev2C$r~4g+ ztL;vf!OP`9KrUMNfmiEx7ps!XrnsIAdl(!G;t;sTmKagOBg?RjugbB%==~w${2L6` zFh!rmE`t<^Zu|JN9rZ37p+@cFU(213|8(wr z{0hsu92uXiFh9N$sR$|SsRf^TPs8oP$tfo785YR1n+I=QJ@VGoqsxUUvV=U$!2ClF zLJ-N_wdVh!5HpX|@E(TCKk4mV$Wvm)?9;&9!b6#?_^Na}-T(+bbN5jX##Ws_@@Z<19c8YPZ zImbSnfr*q)4<2J2OMM(meH=@D96GqKG6|J&Fwzk|*z(M89@e(G7Vh?JsYVs+Qf!ff zjp8wvAo9FsWoh56d~z@zb#_REK-6yJZG{Td+M{sW_EPw*+ujR-Dvx}_3TtI|YZ*^0 z2!*Sq8zG8=?ID;1R%UY%BgA?fp0LUyyoLg)m%9j3FK3f|JsTS_N7{CIF@#UjeP-mf z*g!=Mc1`+4z*AJ8g$T+YDMD}6@-f+hz=F$>q64i|7Z&3LmV+@Rjtn;P_hAg+4A=EX z`>5%Ey7UzTOs@SUwKz_Thw8N+K~!KTmyU|MG(TtiOw;Cl>8M4l-An_Qa#rT7o}Bp@OV za(Cp&uj^=WOgtQX9x;Lljp3gtk#WAWm*C?@GD^$oK3K=m&#)6R{Ue!V@kzP=Tix@% z#=V*oNYn;`evPV#e&T@v$%P`tNgNR?uiYPEr-w{O`i7Fu4jN|rE)iikUC>|V6{%IX zxG*#<)r1&}1BXL|fUiP46t`eljT~ce5O1Xg@z$1^9|lm?5N)!dNjYOMXJ^as-Y{E& zWvp4spOLX&41}pFRVXHo)QU_-YsH*Nn4|}!PqvuuFe`B}CGy;;GZ4DA_09xawH4>L zDab=@{kZ~TpluCK;mKRAlwacOF4>rCZ%;hWnq>6JTz=oZ9+^jG46L=wM08LC$>U)q zA@W7@bi~4%%+yBDXwi=OMg$FG4k;R4p4sSV0L7_n;-&MgB>!?<)-%s!nrnW4(FM|x z{^TYTrq}Y%6bYzU5kvq>PD}E%l&jr9B9CALlIS#VgyxX&Wu<<(eud6Rmi4U_r5kAr z)UX3?NWA~k9$i9+RHiT+fhi6nJk_QFV7hkUM2=GD1|F>s>u!>#0K*w@^ATH;7Ci?4#nZ`n55IvML#*B z*6C*?`f0!_silYnbTZZzIw@d?PTF=ET_8F}sTcr67X`v!QfFC3qs64LiXn1o3RwpM z`2s^ICW;gFy3eSc-iW}-cXSkiV;4ImpiDqW|AB%>6S!0a&JJ-+Td4?~LRcYi;uPE$ z1djC;q<)b%NXZ$QK5i9fJ^hcjAg7}9KJ+jYQ(&J6cSHK0_ST4DVX)N68Vw}(Qw*D$;s46DM6 z0z*fIbD`%zf;kh0Pzmnpn^%hyABMmjg1}&s&I$R4K`zJytAeQy<&UBM!_Z)7mDsMn z>Xb7?lv@Y-qPm95sIDuhVdLAnL|uu9_u{$;v=aFlu(&SzA)=3B&&JlpdkiNc2O&?# z$pP!wEkZL`M2K0uz@SBl88aU4iw_&N_^`{!t`1s;K{T1YsN1gtR_OQX|7q`VtZUM2@oT8u?Ht)qtAix#KzwIm*d(z!@b${)CR z#Y7=>-{C;Wq4|~yOPCu?K_9?};DDBaPzRLo%fR4-I)3U{)*!$#(|%M*v4mQP=Ln4` zG9*5Nl@n4*$KbLt6(aRW!jPrG>Jh3dba+&Tz#KV4OkcQiD>TiuIc*fNrymtBF57a; zp~**RJ2DH>ZS8NR8QM3FhQ6!5;v=xA#+pP{xT|#PRL&w&;Uo}#29BI5b851?VU|d| z&9QIS#?3ZMtO`siNC-ip%s;FynodcUeT^?9N!>q4vL4?(8qpb|C0M|5t8Xz1CgcPL zHATvSmSEN-J+Taj+Jnlc-~kAaz6ERyPU<=9) z4H;Ajz@J5K9g-*Adcl@z-cxJYq9PX-uUQ7yGLKo}e5g?( z91a*M9q>&9o0@XtTl@ejfy79&GLiExtmZt_<}G8ysAwnIbST-vzeBgSK-M4<3So_- z-7K?>7E3j*zua>`FLfXco(s91t;e{XA9;S`x*$uQ#jq~;mmbxrP!(AO9=`{n1KF=< zFnJ)sK5GI)D>~MukTh%xNyDa)BAC#5B$_XC%QPD!@zZ;lw_|S6&{CRb?wI^5KzHyD zT!96jXiJEN7cbV>akhgz_qN~w3lL|)V?Y@A`&Vkkre;DGiDZOpn@IpOsxaRn|F9rm zt3aNmmusmQg@q9ib>}(1v@oZR*&LbH$wwQ3#hej zhRx6z=8w4aD0Nnn?gZ4^1s29uf(6CWQ$B@U)|cW$OM)z>IVRIKU;HP@ z0qO$^-ZC+1Xso(`%mC%WImGwG;DIi6!=}wsfJO}NDI{?~92;AM=~ccwe%Z$kZ>RDZWKKcP~)Iukp0%`w2~nFCXu?K?YrI@5DA z-HDwO(_>R%%{cLoZZZI4@T{{84WXr*Ki%;>d;e`0LPi>9TVL>(VIzMLi*dd zYRnEvtA-}+O1CX*)D3mLm+J_58N#Nq*@^LMIB`#`n+8&FtAWHa$rvEpNc6 zsfpRS0?B4Kk#31&Q&U^FjZKY#1+xL4!s9!s+sn^PgLLCe#6_z@VQ= zng*{Ty=bw>u_kRA9IvJL*wn;(C#H91*3SSF)o~Gd1lL#a6OPpQozCx-{9eWH41U$L zwIS_HuCL}d4p=(dv+J1M{Zn%rHte51&>h>m_RQs+t3G<$Y;_7TQ*9qs%yKaH_? zzIVa%zgzG;3qn@&k1lxr-UZL^Uhw>*3!Y!K;Q8+swD(wezL){c%tGdN&dkpp+}qi@ zzdL1+yKH8jxAQaLZFgqx%q(kuV!IHNx7+r2S$5Ogg@ingPj$w+(7Qbo)BE>A3_E^r zFZN9A6f~zh2eyvSZ0}IV#54#GSvon*1jP(B}>&+bB9ftz=LHohh(@jf6%W30o-g(s0B>fxV>>(R z_D=1e1%b{D2&9Dy_C(Q31{{AjGoF(Xs6GHEx_3Pku0vH1qdr(FBkS>Rw72fFqSXK2yu$R|#qwqMWh0)7|r8_V82F}rta>|i#rXYZ78 zEI2b%q1%}QXCWGp2ScB1|1^shuGrZ=b+C_$zkzzr=|ZQ+&$;mY@eAK@;r7?RZfyIG z^LD)U4P&nxd&7mVTYtfhb9Z#sk9W>pKX%@>3%73@KWA!UTXzf^0%4jNH;MpBf%F;V zhMI8rDEf2Q;!>{T2hLl+bz*$>y!9J4?3vxUVZ&yaqgGMnJ=i|i*|6ba7dkeJvR6{A z6d>6#v9mzWf-Y@^E^XKV)1lgJ<5!z_5_sW)Cae;p%t{Dkt-p9^{wkQf<>}I;8C#nh zHuxI7sJ~!fQJvWh8*&)Xo2s4mK55wAtNxN&fRwsYYjbC3(E)D>qSb;s4v(pIL)&e7|5e4h{h7Fm^Rfjsk1h zQo%E~`kP*T%qH||K?jS;Tp-f)cX5*o2~=PbQ9lr#W5Z=JZmiY~8;bhh)ZakSMW5Lq zOukU#--f)YIoxE|1uX}>xnz32ifhhvSocip{J92S*2?kvoR5pI_2($Zf1>$Xd**^( zl_eq824FQKJ1(eP5VOI?Pd-0(wgt1-uI| zXd%6MD^gNubhbc)YM=LrlwIlEUM*G17sGLCcCBbzHQ7p57R}KmbI9s}MTvrXWvQL* zy-p!%AO_DMBz6J2i6J6L6>ff1^9$?fqle{mo(K^ZpQ=7xWdWvyDX{6f8WD1HWf%+C zL;!wom)14r6@0plIiP)L#nCMI)re7CDZ(8OW?v-2-Or!nN(kiFR9A{+( zGtQ#xLf#p!;_=s=mCfzybUWD?zv&q-gQQgCyN!I3N4D?ZJ2f#5ZWXoi?lYt<=en@n z`7yMU>ACDW(jEcVQ+?>BHpF7>hpapPCYS zZzzy;_8dK~Gl|36aEpYACJ$0pTI);rNwfL_&yu9aeW{vGX$7^UAfb|P4j@}2-ME6? zjiT=j(zm5u+u4K2CM7R=!}4GO2z411IA*6<0rcqIl#zCQB|mBA#q+h{+4{2X+^!`0 zt*CFap&Q6Kg_UB**wk#ND0fSM+aB2J1Oj0e1~!|?!XUUzBOlIpN{w$r4^|S+&s%@? zxm@}8ytCJ@8=Km@YfKNXJ$wDTXZB~~2$M6@QwKBYLYYb;pig$DXF=Gpxop?id?(x1 z=^$}lFVvivBdb9PIdt2>42_FvmTn)lU(&QOU!~f>_DWh-fXtfPK11@v?DgcARvdaU zJu{avF{tZSc5F7YC7bP->1JcS3Xp@9Ze1Y9>|As=^?Wb&Tt)?BQY`|vLS6>Ku3{8x zbz=L5?8(sX#TdgV5|q1aM|Wlq0`=_vy;6f2T@c$153-Y*k#vT|%50z5fw2q<)a#@; zx|Q2PIq4Wzk9B9MGR&N}WwxAb?U~v3na=F=8T4dqZhTkfMkLDIM%mR|Kgm_JA=IJX z^;PgN>9YD1`3(MJsEB*#n8eCl2D=x;#eg_5tNu((p9Mjh%N&P_{4+a%-X7Fg&k{XN z8^Yhsz-Pw}&_KgALyOe8ZfAQ3`^x;x{&9$$Y7YaAwybEHPGx-xpq&NEX4&fjB)W}! zS~LCm3UHa0$l@xdBnwOEEKqDN`wV5JljUZl%%)gUhD0Ftd9Qx;>(BS`_2w09wOF}E6C{~&fj?VieWl-g!Z*vvheH6V_)}{OCXZ8JmgqBIqeJx{C`uRMof3GE< z+H@o-%*0XD33~DNlbfa|o<%v8e?RSrw^S%FIxBtM8fXb=*M~e))FEqXQP&;RCD;`- z`XfB6&i}wweMsSL4X#VMs&B<{}sZEkz!18ynJ_|;Lz2f3A378qAKp1IKW_0?>rr8p7)!&== z3C@~7(bU%PO*uy`jZUxLfa|srq2uP6g|x}7+&5?yTy1e;r>#7&u2WBQC@#9 z#(1tjwSPQnOY@-L<@`4DdkepX(&`hG6K(iMuIg98{|afgDyxpH^1Q3L3NFWzRf~KV zlJ8iu>UE@vo)qmCeBXpH-rqvH@U?g!cx-eh??qoe&Q)uBVfq&2g{uwCY@NCZ}DJei+9kQAVhA1|*9f!sC zY+|}B+3oBrUvn>cXpaE8P17Vv1re@SyGrVHz#AlwebIkh7VUp1c3;T*+g!Cy zvIDy&&Am~s78Z+YFK?P|=CEb){N2kTKzOr6sJIw0NuLOrK=ckBU0qPhG;C;`wRrS5%&V1oEUYSK6E1HL(LdtHVEizL#j*eikPr zc5Y0O0DHTgbzS^fm=7u|1*IMZrC57T1u#gVpe=Yew)?1e=VvZWobmnZ&rlzWpE!v; z3WrFa;`c6ooA@dJ^PHRUV|uD~b*A=WSJMPNL_6cO{~CV67yVV>bril;^NR`;&l|Z{ z`Ra2u{o)1bdRDp-xKcBk9)roD0m9(+@0Dsb)tTOji){V%m-6?iR@3~yMH}x3bzIF= z@RU^Wef+NBCv9yDzZVUL6VUaoJwT4Mo6#=XTgy)p<~6vaQ3NfxBS@GSb&vqar#XMV z{aW0IEoG~FQ1kk6+Sy7wk}xa%F^k}AhGk=#?iAf4&x%(xEjFSkCrMZ3-X5%cMex8| z$tTLXIat^*-pB-UP&Amy11M)_*Y<1(^54&H$kyYt+n$|^i*Y;UUtcLdJFye_V?R;} zh7K$MA17UFwy1yC*zB&56g^1VNxeQ1Az-~Sr?haPkPP41D~~W^-Md=73w2&wG6+srpDAA^5A^zbPiQY#oVHt>LH717mtIIeiR^%p%aLv# zS~dP9^2@qf;!WrJGW8kKL?4PYQFvo38%mS)8|oq>-Ww4gf64 zWtGueN!M5}BP^mjF&g}1wV<+j&?GEmJ-ZmY453^QH+euncvie^1sfg+6Fp*yCR?SHt&QFjJhYo9I zR@oH#)WHfvwztj9T`IY4k|3J^nYYjFxG>ya-nl;9y%`8!3*Rn00<3%L6g>6Y&CkK@ z?`u5kH_0zl;NT9xr4Ip|R~s~Ww)%>4kkvkTE==D;`n9{JuHDtWdgj2D`=^L8!L=PQ z%jE#0Pp?|*Qsp|XvbemKt7u>WOX{5=j;4d4FNMkapf#-@kC7!!Z$CF&&pUb^t%ed7 z>i-NsleP;)_qA9o#^|&3LGr<`a~15WbKdLE^!8Vfp7DDbzg7HB;kSa{KFSod3`2i3 z%kTNnvN_7@@5P{HQ)l+mvV~gxL!@hMeVMD;U(8$d4bmis6nP5Gzw{QN-WOPzk#FSH zp8sWB1*e7De<(LwvKP_vuUvc^?Uvr`fYiHZuPv^O75$TXF403Q>EH2to^!Dnc_Ze$b55|WMOUBWW`Xz7*6I9;=Nq_}BYVqR zzvs=@Y{=dr{lN`lGSFib3)ZXY>{<`P+^}J`LjpD(Oio0>;)O&~o6Qae-|l`i_%f^9 zHQ4VIy$WKUoxODi>ZxeXgB!BTI&(%$y#Zs%v+idM;hu$;;6Mk(spn2Zm6Ann&x~wn z=ssL!XF_0;h$`psl;7+ywRYUSuBFpdA+(HZ?tpyEV@Sf&>&&qxgPa6M=}lN`E4?~9 zyGB9%WIb?JF-!pmd&NQbY^p*W*AwakU8$6vJv-YnlMxI|^v;|WHn%TM}waT ze{hK&=m;)*GX-sEP+c@Ud7?Gc32jCo;ua_9c&C-Uvy<(jLvl5=Dk%6=M4J zbTJyMVvWzjkc0TRld5FXmOXlQMzI>io@7MyW}%fCn(ChYFnBVAF7Z6^@fb7?7bMO~ zk+{ds^^jeOV>0$?-D)l9C!G8NemC;FiJzMg=Vq`@2!8|?cw%=eI5UB20cKSmT=JJ4 zE4uAGR~e2~9@LnbMkOHP-s`BosMPZ?^{l2J*3Pc|d&Z_^A?rvuwRWBg?Of?mYg=Y! z4A0H1EJWEgwwJ&OFhLW*|6?qloy@9D?mMnLd&O(rAzZ*@Kg3IGvUvXS@Ek};PjT)o z)Dtxk&C$m9RO6JK1AJlrS4x`(El$j zc>b^9d7-J}&F4QqQ^)sH{{JoRN}#JOvh-j7{+4Vk*_R&-WFdL`ngB+YKm9&j#u>;{ylABOQ8SFbojr|z-Ib@ijZYZLCP z_~Yx4$LcSstbYJ^F8$qz^7Q*Q`uk-{e=Wjk8kOUK5B35IEiP zd9VoI4IuRo7J_ulFF~BKSc<{$MC!9ekFQ5~6Wk4O=X~HtYFszkv9i0%jRV!5)tpTf zJ`ZOKa{>Q0IKneuEjVqXD`Du8d1VcBK5_en^dUljgg9eTnGSIW+%}YJy=sgbkWOpa zqBF_YvK~Sj@n1N+#r2jIoC0FY5MID{690$3n@FRyV@M;qJlSL^NY54n7m%>?HbBu~ z_=r3?$TK`@sxngY^8OI4a-@@5%F6fc?6;tKE8IO`i(vN%Jb%@qL0g*8CQ@NufdQa? zCS^a1v^rGg+C&+1W`gLz_{$WZF#mY3hoUCJa8-#gKWJez6mO3uln6=IaTb*GYRo;t z2cJfNQo^4DpVs_R_!|5ee4^DfQFbFtb2%}0gr6qz(0=}GA}ulB%%&ml5qu{(>s9!q z21;~d@cZ!u487KzgOf~7AG>=8KX%B(cbZ4%IIht9w#TYhb%9IeH|RXBVB+!uN01OO24H3V49tJ z_G#rO9(OdH74Jp33U2WPb532@JgX7RBQcE0NBJZYT;2x3i_1*JM?zj{!_8IB%CBx) z>l!Rb(hW}Rp}waxK7+{a5L8$78q| z2t>3Qt=;Q-V$e#q@)d&si5o^M9pANnRV^ed55g#`D#OKEUa;)yvZQi^*ei$dYLriz z?D4!4zhw%JTPyxq@Mu=ql2f6RWOxerhzWku*Mlc$H3V%|eTu!tsi-?ca$-c!P!h)8 zdW z-TN-DGu8d;ux7);1>5_6E;w$}l1iSo@{>ytwXouJNI+E3ioc0)NmBe+O8k$Alf+@= z|DTlf4^z_roRa=YO8OTm=_gXsW$ffVuAeSmC#Pqoq-Uq3=cS}?L493}K?||Eig2 z?JQqT$`sb1UNVWL{#)@ngxx7|>aUefQWEW~$#EkoP7+d0N}P6PD?j0n#@C7yev{+3 zro?YYygn&E#p{yd#MLL4zcUg4W~2#N5Us@~*5!_2kD$Xs&T-6~k|``gJsvn4UNziE zt5f`{)j6m>s!5#)eMrw5sMWEfkj9QSDdOLM2k4c6{I8l3CT#-8jN1_FL83CJ zW^!G55!yg_Kz=2ELQ@RAmUl2MCJ@ zAB9hSwS3Okv<}7P>E_|Rm41%xHYEx&)$~Rp{GfJ_)5b9}zYzwG4J>0R>ZLyX5#kw* zEzuZ~)JW1J`f~>y(HZL-?ICx=Q93!IaYWbdg@X>5KaTQ`+|%S1U;I8;!k7ejOH5|d zf)eng2Ghhg7e0-x_0$3G%9yta>B$3(L+M?m?bHkH!gTv zP?Wbh3jg%Bbgb@1JN}BgXzbcimjVCdgHKnSo)>LS$cYt3*NV;_*t|kefOReG2aIxv zM6GSztp=Xo0I?uKv7Ucyo?*_P@$gBTR05yYpaGxyHxYwD^NQ0@zFVD&!-tVpkNbsW zE5vm%i0_57#&jRT|HPb6*xz4iHJ@9Y(=iOmmpnp(S|S&n)8PFioY{fcckpf*rbQE1 z%O&OFH|Nfr%cB47csUCf|4tPM605|N+pI%aey(PoyqRJ{h07&8Jkz9Mf{9w(gCZ)o zjKIN2k_*xp28;qf(4@GT5nqHSP}TsR-hfZ^<=4PH{c08sh2@LPaj|@J&4FdWA!S)v zl~I*QuZAz7>|-2)Ikz51xV6R@ggYB~FqL>7Yn*h*ZNUZ2j&c%wd#&+GH~{JwxM=nMJ6zKAdC_xQbjpWp8f_=EnCKkSeA zqXAFA8}J4Efj}S_2nE7{NFW;Y1ie9D&>sv0gTYWR9E=2`Ay3E~@`e1NKqwdrg~Fjo zC>r*JyLFeVyaEMlwQ?_m)UT}Z~+e#D=KI{xyd-PjWtL0n&=)TTBxW7Xu=)HnQ)qp05Hw{IX4x|VgXZE= z_@f75&`k?--fqEnnx$5{S>8+=vP9;S9fi1AvhWDXQ2P(TCz`_kpMSyyy9U6F`o*vO zNhv>>et5l>ioTvrC+75)5jd=#?v85Hgmq9?WbULURs`YQCX=|oaaAvOf26<5!Z-+}z?@CoNl3Hq=M#_MZnSD>LR zr$B{iOhN-l3Okg&6=jI$-2tE0`!4u2))tH*{TeC1Od^LjU}_B_!DPPMMK;Gqxyg4| z@D^F^ISN=~0qX>O+UM0dCQoOd-G=I{fZ?f}EDlQ)_Cc);C32T;n?o-hZfKk} zf5Fn0jW=z6^s&be{`}DMuV-cFEL!~OXD3d^S6}gmx6(`2bQTu1T>ZVh`>uIve|AoB zN&U3OS(hway!3n5{Ks>zy!yN2fBIxy*XHh?+sC@x_wRfB;PZ!Hf9tNgJMQ#sF8Qxl zUOL%0YvCeI&&VuufAsO1&hUiuCr#b5wfWMX7hXK_^3gZmKXFnpT1NN1CHGCy3uHB` z_o4LogG!05w?N9%ne3JWvL-Q2)w1kO8N;->nj{z6ZIUi&l8BY)loiRLvh=~Z6ll`oU2s3ny)U< z#wqpoD*QEjCV3rIa=z-2;twIo?Y&5f@6^Xj8Pa$yqK{MhPG;rm?yPEQRK}=`_ziO3 z9eIwCKe$zKE47-Ko@N0T6iW-`1-AHx+(LV{ZKfQ*UVU(iN=gd6{$DM@dHwU zl#wRjZw{ezqM~V{uG>Vr;tQ^5^2;q%WAWtaf7Ktj+h{`=hHi-E#YmpFDZp zqpD^LO_(_EFGpUMN92aW^X6Z(XYanJgU5z_f8$N}4o*gzi;c6|V~Zbqyr59i?T!&S zp=izS2adjB3vb!FTeH_r>{z+^=B&<^gCBjoaM@qKJlTBlU3a_OW#x0XZ6EmY&ii*i z{N(;;RfltAQO)^NXYacI*T31W<>ikaGx7ZQKm7RQbBAQ(yfI_T{gImK7tU;Io;#1` zUhDE$$7NmXufFE`oqP5@^30LF`_^1#JVSBIcFm^M8D+B57Lsa| zd`)(0O$}jxnqPD2_TI5`W{lG-v-8Imj>xe!qJk-Dd753Fu9w+*9Frzis`xmU(mQG+X!h_^0+R zeeKBl@6uA3Z_A5+zjvB+?WBy6{Y@pR8h>@1GI11JTP@|wVsBkZR*k}Xk5u;kcl@)8 znX+9LH)KtjIU)X^<5eclRSE)PZ+ey7?wn_j?~N3tRmnE22sM7!hNE(plqOv%x2RZO z8BRHZ&Xwz<8+$Ky7NIR6JsnwXTKrdI?EUIlX?TK`x6q9aka04;!@*qaF_3GE2R(=| zmpKN74{oQ`(zCXuyOYZ*E#PKO<-wjonbJ$l=UJK%E>DUtMws?WVxTw3hOkv>6_yO& zE)2^tN}NV($;VaO$5ncas?J@I!`)x}@5x`Y!(=-!j9p}(`YL(D!ZT$=WF_`&qH zs5^Hc>M3lS{+Hr`nRS7-rsJyyX3y#zHD}xYfjPqAw&vK&1I@ylqb?SXy*+pDJ8knn ze0S7>BOeSbFocg59B0=o6xKpLQVj-4#6LFOfu}lH4Af2(nS35AE?DHKvDsLz%xoYI z$~bAfUYW~`Fbc>zsG4RMi&za6mvv;Zi}_3xqo5+P2r9~oMG1dx191fz*a$HjGzPf= zTW6YN7mHaf$~sZ99N+;}Qb2+<(ZQiolTfKh@j@|*_F1(QvFS{PH8*2Ao6SVcsV`%q z&7n1j1%Ss`IGv$J#lcE#tV3oh8YSk5vXm*~uO^8q%V5C0R3sMTUmYGB*O}MeYB1l9*sYVyYJ0+IJG^$V% z57i0m7o!B}M%HQw>Pk_N8U8$3lL#&VZO;=Gc88chERBuT^BgY8gT9Gk8Ji5ui+Jo@ zXKv;PRQ$;f^t)2j*++yn2BA3zmQoX|~U&TTh73im3 z@&cyDCP<|U(l7qw#fR!IoUKAokrY=vb2Y8Hp6 pw6pCfGeHIhwAGr>8b5A6lSRB6@qm`Q4s!2GxXExuaG%Y{{6AaDG-3b% literal 0 HcmV?d00001 diff --git a/integration-tests/src/helpers/const.ts b/integration-tests/src/helpers/const.ts index d023245c..28aafa77 100644 --- a/integration-tests/src/helpers/const.ts +++ b/integration-tests/src/helpers/const.ts @@ -1,4 +1,4 @@ -export const SAFE_VOTING_PERIOD_TIME = 4100; +export const SAFE_VOTING_PERIOD_TIME = 2100; export const SAFE_IBC_TRANSFER = 4100; export const SAFE_BLOCK_INCLUSION_TIME = 1100; diff --git a/integration-tests/src/helpers/mnemonics.ts b/integration-tests/src/helpers/mnemonics.ts index 6d8c82a9..47a68fbc 100644 --- a/integration-tests/src/helpers/mnemonics.ts +++ b/integration-tests/src/helpers/mnemonics.ts @@ -45,6 +45,24 @@ export function getMnemonics() { let ibcHooksMnemonic = new MnemonicKey({ mnemonic: "leave side blue panel curve ancient suspect slide seminar neutral doctor boring only curious spell surround remind obtain slogan hire giant soccer crunch system" }) + let wasmContracts = new MnemonicKey({ + mnemonic: "degree under tray object thought mercy mushroom captain bus work faint basic twice cube noble man ripple close flush bunker dish spare hungry arm" + }) + let mnemonic2 = new MnemonicKey({ + mnemonic: "range struggle season mesh antenna delay sell light yard path risk curve brain nut cabin injury dilemma fun comfort crumble today transfer bring draft" + }) + let mnemonic3 = new MnemonicKey({ + mnemonic: "giraffe trim element wheel cannon nothing enrich shiver upon output iron recall already fix appear produce fix behind scissors artefact excite tennis into side" + }) + let mnemonic4 = new MnemonicKey({ + mnemonic: "run turn cup combine sad toast roof already melt chimney arctic save avocado theory bracket cherry cotton fee once favorite swarm ignore dream element" + }) + let mnemonic5 = new MnemonicKey({ + mnemonic: "script key fold coyote cage squirrel prevent pole auction slide vintage shoot mirror erosion equip goose capable critic test space sketch monkey eight candy" + }) + let mnemonic6 = new MnemonicKey({ + mnemonic: "work clap clarify edit explain exact depth ramp law hard feel beauty stumble occur prevent crush distance purpose scrap current describe skirt panther skirt" + }) return { val1, @@ -59,6 +77,12 @@ export function getMnemonics() { genesisVesting1, icaMnemonic, tokenFactoryMnemonic, - ibcHooksMnemonic + ibcHooksMnemonic, + wasmContracts, + mnemonic2, + mnemonic3, + mnemonic4, + mnemonic5, + mnemonic6, } } \ No newline at end of file diff --git a/integration-tests/src/modules/auth/auth.test.ts b/integration-tests/src/modules/auth/auth.test.ts index 5f7139a3..a058e0a4 100644 --- a/integration-tests/src/modules/auth/auth.test.ts +++ b/integration-tests/src/modules/auth/auth.test.ts @@ -47,7 +47,7 @@ describe("Auth Module (https://github.com/terra-money/cosmos-sdk/tree/release/v0 expect(vestAcc.base_vesting_account.base_account.address) .toBe(vestAccAddr); expect(vestAcc.getAccountNumber()) - .toBe(3); + .toBe(4); expect(vestAcc.getPublicKey()) .toBeNull(); expect(vestAcc.getSequenceNumber()) diff --git a/integration-tests/src/modules/gov/gov.test.ts b/integration-tests/src/modules/gov/gov.test.ts index e5f271d9..ae9f9345 100644 --- a/integration-tests/src/modules/gov/gov.test.ts +++ b/integration-tests/src/modules/gov/gov.test.ts @@ -31,7 +31,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "veto_threshold": "0.334000000000000000", }, "voting_params": { - "voting_period": "4s", + "voting_period": "2s", }, "params": { "burn_proposal_deposit_prevote": false, @@ -46,7 +46,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto_threshold": "0.334000000000000000", - "voting_period": "4s", + "voting_period": "2s", }, }); @@ -75,7 +75,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto_threshold": "0.334000000000000000", - "voting_period": "4s", + "voting_period": "2s", }, }); @@ -87,7 +87,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "deposit_params": null, "tally_params": null, "voting_params": { - "voting_period": "4s", + "voting_period": "2s", }, "params": { "burn_proposal_deposit_prevote": false, @@ -102,7 +102,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto_threshold": "0.334000000000000000", - "voting_period": "4s", + "voting_period": "2s", }, }); @@ -136,7 +136,7 @@ describe("Governance Module (https://github.com/terra-money/cosmos-sdk/tree/rele "quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto_threshold": "0.334000000000000000", - "voting_period": "4s", + "voting_period": "2s", }, }); }); diff --git a/integration-tests/src/modules/wasm/ics20.test.ts b/integration-tests/src/modules/wasm/ics20.test.ts new file mode 100644 index 00000000..245d3238 --- /dev/null +++ b/integration-tests/src/modules/wasm/ics20.test.ts @@ -0,0 +1,106 @@ + +import { MsgInstantiateContract, MsgStoreCode } from "@terra-money/feather.js"; +import { getMnemonics, getLCDClient, blockInclusion } from "../../helpers"; +import fs from "fs"; +import path from 'path'; + +describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) ", () => { + // Prepare environment clients, accounts and wallets + const LCD = getLCDClient(); + const accounts = getMnemonics(); + const wallet = LCD.chain1.wallet(accounts.wasmContracts); + const walletAddress = accounts.wasmContracts.accAddress("terra"); + let cw20BaseCodeId: number; + let ics20CodeId: number; + let cw20ContractAddr: string; + let ics20ContractAddr: string; + + // Validate that wasm module has the correct params + test('Must have the correct module params', async () => { + const moduleParams = await LCD.chain1.wasm.params("test-1"); + + expect(moduleParams) + .toStrictEqual({ + params: { + "code_upload_access": { + "addresses": [], + "permission": "Everybody" + }, + "instantiate_default_permission": "Everybody", + } + }); + }) + + // Validate that wasm module has the correct params + test('Must deploy *cw20_base* and *cw20_ics20* contracts', async () => { + let tx = await wallet.createAndSignTx({ + msgs: [ + new MsgStoreCode(walletAddress, fs.readFileSync(path.join(__dirname, "/../../contracts/cw20_base.wasm")).toString("base64")), + new MsgStoreCode(walletAddress, fs.readFileSync(path.join(__dirname, "/../../contracts/cw20_ics20.wasm")).toString("base64")) + ], + chainID: "test-1", + }); + + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + cw20BaseCodeId = Number(txResult.logs[0].events[1].attributes[1].value); + expect(cw20BaseCodeId).toBeDefined(); + ics20CodeId = Number(txResult.logs[1].events[1].attributes[1].value); + expect(ics20CodeId).toBeDefined(); + }) + + describe("after contracts have been deployed", () => { + test("Must instantiate *cw20_base* and *cw20_ics20* contract", async () => { + let tx = await wallet.createAndSignTx({ + msgs: [new MsgInstantiateContract( + walletAddress, + walletAddress, + cw20BaseCodeId, + { + name: "Bitcoin", + symbol: "BTC", + decimals: 8, + initial_balances: [{ + address: walletAddress, + amount: "100000000", + }] + }, + undefined, + "A cw20 contract" + Math.random(), + )], + chainID: "test-1", + }); + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + cw20ContractAddr = txResult.logs[0].events[1].attributes[0].value; + expect(cw20ContractAddr).toBeDefined(); + + tx = await wallet.createAndSignTx({ + msgs: [new MsgInstantiateContract( + walletAddress, + walletAddress, + ics20CodeId, + { + default_timeout: 60, + gov_contract: cw20ContractAddr, + allowlist: [{ + contract: cw20ContractAddr, + gas_limit: 1000000, + }], + default_gas_limit: 1000000 + }, + undefined, + "A cw20 contract" + Math.random(), + )], + chainID: "test-1", + }); + result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + ics20ContractAddr = txResult.logs[0].events[1].attributes[0].value; + expect(ics20ContractAddr).toBeDefined(); + }) + }) +}); \ No newline at end of file diff --git a/scripts/tests/init-test-framework.sh b/scripts/tests/init-test-framework.sh index e49f3540..ced58116 100755 --- a/scripts/tests/init-test-framework.sh +++ b/scripts/tests/init-test-framework.sh @@ -18,6 +18,12 @@ WALLET_MNEMONIC_6="broken title little open demand ladder mimic keen execute wor WALLET_MNEMONIC_7="unit question bulk desk slush answer share bird earth brave book wing special gorilla ozone release permit mercy luxury version advice impact unfair drama" WALLET_MNEMONIC_8="year aim panel oyster sunny faint dress skin describe chair guilt possible venue pottery inflict mass debate poverty multiply pulse ability purse situate inmate" WALLET_MNEMONIC_9="leave side blue panel curve ancient suspect slide seminar neutral doctor boring only curious spell surround remind obtain slogan hire giant soccer crunch system" +WALLET_MNEMONIC_10="degree under tray object thought mercy mushroom captain bus work faint basic twice cube noble man ripple close flush bunker dish spare hungry arm" +WALLET_MNEMONIC_11="range struggle season mesh antenna delay sell light yard path risk curve brain nut cabin injury dilemma fun comfort crumble today transfer bring draft" +WALLET_MNEMONIC_12="giraffe trim element wheel cannon nothing enrich shiver upon output iron recall already fix appear produce fix behind scissors artefact excite tennis into side" +WALLET_MNEMONIC_13="run turn cup combine sad toast roof already melt chimney arctic save avocado theory bracket cherry cotton fee once favorite swarm ignore dream element" +WALLET_MNEMONIC_14="script key fold coyote cage squirrel prevent pole auction slide vintage shoot mirror erosion equip goose capable critic test space sketch monkey eight candy" +WALLET_MNEMONIC_15="work clap clarify edit explain exact depth ramp law hard feel beauty stumble occur prevent crush distance purpose scrap current describe skirt panther skirt" # Chain2 VAL_MNEMONIC_2="angry twist harsh drastic left brass behave host shove marriage fall update business leg direct reward object ugly security warm tuna model broccoli choice" @@ -62,9 +68,13 @@ $BINARY init test --home $CHAIN_DIR/$CHAINID_1 --chain-id=$CHAINID_1 &> /dev/nul $BINARY init test --home $CHAIN_DIR/$CHAINID_2 --chain-id=$CHAINID_2 &> /dev/null echo "Adding genesis accounts..." +## Special wallets for validator and relayer echo $VAL_MNEMONIC_1 | $BINARY keys add val1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test -echo $RLY_MNEMONIC_1 | $BINARY keys add rly1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $RLY_MNEMONIC_1 | $BINARY keys add rly1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $VAL_MNEMONIC_2 | $BINARY keys add val2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $RLY_MNEMONIC_2 | $BINARY keys add rly2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +## Other wallets with funds at genesis echo $WALLET_MNEMONIC_1 | $BINARY keys add wallet1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test echo $WALLET_MNEMONIC_2 | $BINARY keys add wallet2 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test echo $WALLET_MNEMONIC_3 | $BINARY keys add wallet3 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test @@ -74,6 +84,12 @@ echo $WALLET_MNEMONIC_6 | $BINARY keys add wallet6 --home $CHAIN_DIR/$CHAINID_1 echo $WALLET_MNEMONIC_7 | $BINARY keys add wallet7 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test echo $WALLET_MNEMONIC_8 | $BINARY keys add wallet8 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test echo $WALLET_MNEMONIC_9 | $BINARY keys add wallet9 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_10 | $BINARY keys add wallet10 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_11 | $BINARY keys add wallet11 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_12 | $BINARY keys add wallet12 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_13 | $BINARY keys add wallet13 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_14 | $BINARY keys add wallet14 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_15 | $BINARY keys add wallet15 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test echo $WALLET_MNEMONIC_1 | $BINARY keys add wallet1 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test echo $WALLET_MNEMONIC_2 | $BINARY keys add wallet2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test @@ -84,26 +100,43 @@ echo $WALLET_MNEMONIC_6 | $BINARY keys add wallet6 --home $CHAIN_DIR/$CHAINID_2 echo $WALLET_MNEMONIC_7 | $BINARY keys add wallet7 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test echo $WALLET_MNEMONIC_8 | $BINARY keys add wallet8 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test echo $WALLET_MNEMONIC_9 | $BINARY keys add wallet9 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test - -echo $VAL_MNEMONIC_2 | $BINARY keys add val2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test -echo $RLY_MNEMONIC_2 | $BINARY keys add rly2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test - +echo $WALLET_MNEMONIC_10 | $BINARY keys add wallet10 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_11 | $BINARY keys add wallet11 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_12 | $BINARY keys add wallet12 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_13 | $BINARY keys add wallet13 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_14 | $BINARY keys add wallet14 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_15 | $BINARY keys add wallet15 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test + +## Special Wallets VAL1_ADDR=$($BINARY keys show val1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +VAL2_ADDR=$($BINARY keys show val2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) +RLY1_ADDR=$($BINARY keys show rly1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +RLY2_ADDR=$($BINARY keys show rly2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) + +## Other wallets with funds at genesis WALLET1_ADDR=$($BINARY keys show wallet1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET2_ADDR=$($BINARY keys show wallet2 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) WALLET3_ADDR=$($BINARY keys show wallet3 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET4_ADDR=$($BINARY keys show wallet4 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) WALLET5_ADDR=$($BINARY keys show wallet5 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET6_ADDR=$($BINARY keys show wallet6 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) WALLET7_ADDR=$($BINARY keys show wallet7 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET8_ADDR=$($BINARY keys show wallet8 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) WALLET9_ADDR=$($BINARY keys show wallet9 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) -RLY1_ADDR=$($BINARY keys show rly1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET10_ADDR=$($BINARY keys show wallet10 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET11_ADDR=$($BINARY keys show wallet11 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET12_ADDR=$($BINARY keys show wallet12 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET13_ADDR=$($BINARY keys show wallet13 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET14_ADDR=$($BINARY keys show wallet14 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET15_ADDR=$($BINARY keys show wallet15 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) -VAL2_ADDR=$($BINARY keys show val2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) -WALLET2_ADDR=$($BINARY keys show wallet2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) -WALLET4_ADDR=$($BINARY keys show wallet4 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) -WALLET6_ADDR=$($BINARY keys show wallet6 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) -WALLET8_ADDR=$($BINARY keys show wallet8 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) -RLY2_ADDR=$($BINARY keys show rly2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) $BINARY genesis add-genesis-account $VAL1_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $VAL2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $RLY1_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $RLY2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 + + $BINARY genesis add-genesis-account $WALLET1_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 $BINARY genesis add-genesis-account $WALLET2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 $BINARY genesis add-genesis-account $WALLET3_ADDR 1000000000000uluna --vesting-amount 10000000000uluna --vesting-start-time $(date +%s) --vesting-end-time $(($(date '+%s') + 100000023)) --home $CHAIN_DIR/$CHAINID_1 @@ -113,9 +146,13 @@ $BINARY genesis add-genesis-account $WALLET6_ADDR 1000000000000uluna --home $CHA $BINARY genesis add-genesis-account $WALLET7_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 $BINARY genesis add-genesis-account $WALLET8_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 $BINARY genesis add-genesis-account $WALLET9_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 -$BINARY genesis add-genesis-account $RLY1_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET10_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET11_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET12_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET13_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET14_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 +$BINARY genesis add-genesis-account $WALLET15_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_1 -$BINARY genesis add-genesis-account $VAL2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 $BINARY genesis add-genesis-account $WALLET1_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 $BINARY genesis add-genesis-account $WALLET2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 $BINARY genesis add-genesis-account $WALLET3_ADDR 1000000000000uluna --vesting-amount 10000000000uluna --vesting-start-time $(date +%s) --vesting-end-time $(($(date '+%s') + 100000023)) --home $CHAIN_DIR/$CHAINID_2 @@ -125,7 +162,12 @@ $BINARY genesis add-genesis-account $WALLET6_ADDR 1000000000000uluna --home $CHA $BINARY genesis add-genesis-account $WALLET7_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 $BINARY genesis add-genesis-account $WALLET8_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 $BINARY genesis add-genesis-account $WALLET9_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 -$BINARY genesis add-genesis-account $RLY2_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET10_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET11_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET12_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET13_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET14_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 +$BINARY genesis add-genesis-account $WALLET15_ADDR 1000000000000uluna --home $CHAIN_DIR/$CHAINID_2 echo "Creating and collecting gentx..." $BINARY genesis gentx val1 7000000000uluna --home $CHAIN_DIR/$CHAINID_1 --chain-id $CHAINID_1 --keyring-backend test @@ -157,8 +199,8 @@ sed -i -e 's#"tcp://localhost:1317"#"tcp://localhost:'"$RESTPORT_2"'"#g' $CHAIN_ sed -i -e 's#":8080"#":'"$ROSETTA_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/app.toml echo "Chaning genesis.json..." -sed -i -e 's/"voting_period": "172800s"/"voting_period": "4s"/g' $CHAIN_DIR/$CHAINID_1/config/genesis.json -sed -i -e 's/"voting_period": "172800s"/"voting_period": "4s"/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json +sed -i -e 's/"voting_period": "172800s"/"voting_period": "2s"/g' $CHAIN_DIR/$CHAINID_1/config/genesis.json +sed -i -e 's/"voting_period": "172800s"/"voting_period": "2s"/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json sed -i -e 's/"reward_delay_time": "604800s"/"reward_delay_time": "0s"/g' $CHAIN_DIR/$CHAINID_1/config/genesis.json sed -i -e 's/"reward_delay_time": "604800s"/"reward_delay_time": "0s"/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json From 19c0ccfe1ac0512d8bba3ae52f7f71453152f5a7 Mon Sep 17 00:00:00 2001 From: emidev98 Date: Tue, 28 Nov 2023 14:11:13 +0200 Subject: [PATCH 2/4] wip: refact test dirs --- .gitignore | 7 +- Makefile | 35 --- integration-tests/README.md | 10 +- integration-tests/jest.config.js | 2 +- integration-tests/package.json | 7 +- .../src/modules/alliance/alliance.test.ts | 57 ++-- .../src/modules/auth/auth.test.ts | 144 +++++---- .../src/modules/feeshare/feeshare.test.ts | 292 +++++++++--------- .../src/modules/ibc-hooks/ibc-hooks.test.ts | 2 + integration-tests/src/modules/pob/pob.test.ts | 153 +++++---- .../src/modules/wasm/ics20.test.ts | 35 ++- .../src/setup}/chain-upgrade/chain-upgrade.sh | 34 +- .../src/setup}/init-test-framework.sh | 10 +- .../src/setup/relayer}/chains/test-1.json | 2 +- .../src/setup/relayer}/chains/test-2.json | 2 +- .../src/setup/relayer/init-relayer.sh | 22 +- .../src/setup/relayer}/paths/test1-test2.json | 0 scripts/tests/README.md | 15 - 18 files changed, 398 insertions(+), 431 deletions(-) rename {scripts/tests => integration-tests/src/setup}/chain-upgrade/chain-upgrade.sh (86%) rename {scripts/tests => integration-tests/src/setup}/init-test-framework.sh (99%) rename {scripts/tests/relayer/interchain-acc-config => integration-tests/src/setup/relayer}/chains/test-1.json (91%) rename {scripts/tests/relayer/interchain-acc-config => integration-tests/src/setup/relayer}/chains/test-2.json (91%) rename scripts/tests/relayer/interchain-acc-config/rly-init.sh => integration-tests/src/setup/relayer/init-relayer.sh (63%) rename {scripts/tests/relayer/interchain-acc-config => integration-tests/src/setup/relayer}/paths/test1-test2.json (100%) delete mode 100644 scripts/tests/README.md diff --git a/.gitignore b/.gitignore index a9ffeb50..840c3aa8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ .vscode .idea *.code-workspace -data + # Build bin @@ -35,9 +35,6 @@ coverage.txt profile.out sim_log_file -_build -.testnet - # Vagrant .vagrant/ *.box @@ -60,3 +57,5 @@ dependency-graph.png scripts/tests/ibc-hooks/counter/target scripts/tests/vesting-accounts/.vesting-periods.json node_modules +test-data +chain-upgrade-data \ No newline at end of file diff --git a/Makefile b/Makefile index dbc0e6b7..9b8953e7 100644 --- a/Makefile +++ b/Makefile @@ -196,41 +196,6 @@ install: go.sum .PHONY: build build-linux install - -############################################################################### -### Integration Tests ### -############################################################################### - -integration-test-all: init-test-framework \ - test-ibc-hooks \ - test-tokenfactory - -init-test-framework: clean-testing-data install - @echo "Initializing both blockchains..." - ./scripts/tests/init-test-framework.sh - @echo "Testing relayer..." - ./scripts/tests/relayer/interchain-acc-config/rly-init.sh - -test-tokenfactory: - @echo "Testing tokenfactory..." - ./scripts/tests/tokenfactory/tokenfactory.sh - -test-chain-upgrade: - @echo "Testing software upgrade..." - bash ./scripts/tests/chain-upgrade/chain-upgrade.sh - -clean-testing-data: - @echo "Killing terrad and removing previous data" - -@pkill terrad 2>/dev/null - -@pkill rly 2>/dev/null - -@pkill terrad_new 2>/dev/null - -@pkill terrad_old 2>/dev/null - -@rm -rf ./data - -@rm -rf ./_build - - -.PHONY: integration-test-all init-test-framework test-ibc-hooks test-tokenfactory clean-testing-data - ############################################################################### ### Protobuf ### ############################################################################### diff --git a/integration-tests/README.md b/integration-tests/README.md index b61b8bc6..9eec00bd 100644 --- a/integration-tests/README.md +++ b/integration-tests/README.md @@ -2,9 +2,10 @@ This project is meant to increase the success ratio for new core releases, improve reliability and features for [@terra-money/feather.js](https://github.com/terra-money/feather.js). This tests are written using TypeScript with [jest](https://jestjs.io/) and executed in parallel to improve time execution. - ### Development +This set of tests must run out of the box in Linux-based systems installing [GoLang 1.20](https://go.dev/), [jq](https://stedolan.github.io/jq/), [screen](https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/) and [rly](https://github.com/cosmos/relayer). + Keep in mind that tests are executed in paralel when using the same account with two different tests it can misslead test results with errors like "account missmatch sequence" when submitting two transactions with the same nonce, missmatching balances, etc... Another good practice with this framework is to isolate and assert values within a test considering that the data is not wiped out each time a new test is executed. @@ -18,15 +19,12 @@ Folders structure: ├── package-lock.json ├── README.md └── src + ├── setup # Scripts to start the two networks and relayers ├── contracts # WASM Contracts to be used in the tests. - │ └── reflect.wasm ├── helpers # Functions to improve code readability and avoid duplications. │ ├── const.ts │ ├── lcd.connection.ts │ └── mnemonics.ts - └── modules # Tests splited by module that intent to test. - ├── auth.test.ts - ├── feeshare.test.ts - └── pob.test.ts + └── modules # Tests splited by module ``` \ No newline at end of file diff --git a/integration-tests/jest.config.js b/integration-tests/jest.config.js index 852b389d..77330a61 100644 --- a/integration-tests/jest.config.js +++ b/integration-tests/jest.config.js @@ -5,5 +5,5 @@ module.exports = { testMatch: ['**/*.test.ts'], verbose: true, testTimeout: 30000, - maxConcurrency: 5, + maxConcurrency: 4, }; \ No newline at end of file diff --git a/integration-tests/package.json b/integration-tests/package.json index 84da96ac..4500aedf 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -4,7 +4,12 @@ "description": "Integration tests for Core using feather.js", "main": "index.ts", "scripts": { - "test": "jest" + "test:init" : "bash src/setup/init-test-framework.sh", + "test:relayer": "bash src/setup/relayer/init-relayer.sh", + "test:chain:upgrade" : "bash src/setup/chain-upgrade/chain-upgrade.sh", + "test:start" : "jest", + "start": "npm run test:init && npm run test:relayer && npm run test:start", + "test:clean": "rm -rf test-data chain-upgrade-data && pkill terrad && pkill terrad && pkill rly" }, "repository": { "type": "git", diff --git a/integration-tests/src/modules/alliance/alliance.test.ts b/integration-tests/src/modules/alliance/alliance.test.ts index 8c266e70..35935e22 100644 --- a/integration-tests/src/modules/alliance/alliance.test.ts +++ b/integration-tests/src/modules/alliance/alliance.test.ts @@ -19,41 +19,36 @@ describe("Alliance Module (https://github.com/terra-money/alliance/tree/release/ // the same wallet on both chains and start // an Alliance creation process beforeAll(async () => { - try { - let blockHeight = (await LCD.chain1.tendermint.blockInfo("test-1")).block.header.height; - let tx = await chain1Wallet.createAndSignTx({ - msgs: [new MsgTransfer( - "transfer", - "channel-0", - Coin.fromString("100000000uluna"), - allianceAccountAddress, - allianceAccountAddress, - new Height(2, parseInt(blockHeight) + 100), - undefined, - "" - )], - chainID: "test-1", - }); + let blockHeight = (await LCD.chain1.tendermint.blockInfo("test-1")).block.header.height; + let tx = await chain1Wallet.createAndSignTx({ + msgs: [new MsgTransfer( + "transfer", + "channel-0", + Coin.fromString("100000000uluna"), + allianceAccountAddress, + allianceAccountAddress, + new Height(2, parseInt(blockHeight) + 100), + undefined, + "" + )], + chainID: "test-1", + }); - let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); - let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - expect(txResult).toBeDefined(); + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + expect(txResult).toBeDefined(); - // Check during 5 blocks for the receival - // of the IBC coin on chain-2 - for (let i = 0; i <= 5; i++) { - await blockInclusion(); - let _ibcCoin = (await LCD.chain2.bank.balance(allianceAccountAddress))[0].find(c => c.denom.startsWith("ibc/")); - if (_ibcCoin) { - expect(_ibcCoin.denom.startsWith("ibc/")).toBeTruthy(); - break; - } + // Check during 5 blocks for the receival + // of the IBC coin on chain-2 + for (let i = 0; i <= 5; i++) { + await blockInclusion(); + let _ibcCoin = (await LCD.chain2.bank.balance(allianceAccountAddress))[0].find(c => c.denom.startsWith("ibc/")); + if (_ibcCoin) { + expect(_ibcCoin.denom.startsWith("ibc/")).toBeTruthy(); + break; } } - catch (e) { - expect(e).toBeUndefined(); - } }); test('Must contain the expected module params', async () => { diff --git a/integration-tests/src/modules/auth/auth.test.ts b/integration-tests/src/modules/auth/auth.test.ts index a058e0a4..2739aadd 100644 --- a/integration-tests/src/modules/auth/auth.test.ts +++ b/integration-tests/src/modules/auth/auth.test.ts @@ -62,81 +62,75 @@ describe("Auth Module (https://github.com/terra-money/cosmos-sdk/tree/release/v0 }); test('Must create a random vesting account', async () => { - try { - const randomAccountAddress = new MnemonicKey().accAddress("terra"); - // Register a new vesting account - let tx = await wallet.createAndSignTx({ - msgs: [new MsgCreateVestingAccount( - vestAccAddr1, - randomAccountAddress, - Coins.fromString("100uluna"), - moment().add(1, "minute").unix(), - false, - )], - chainID: "test-1", - }); + const randomAccountAddress = new MnemonicKey().accAddress("terra"); + // Register a new vesting account + let tx = await wallet.createAndSignTx({ + msgs: [new MsgCreateVestingAccount( + vestAccAddr1, + randomAccountAddress, + Coins.fromString("100uluna"), + moment().add(1, "minute").unix(), + false, + )], + chainID: "test-1", + }); - let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); - let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1"); - expect(JSON.parse(txResult.raw_log)[0].events) - .toEqual([{ - "type": "message", - "attributes": [{ - "key": "action", - "value": "/cosmos.vesting.v1beta1.MsgCreateVestingAccount" - }, { - "key": "sender", - "value": vestAccAddr1 - }, { - "key": "module", - "value": "vesting" - }] - }, - { - "type": "coin_spent", - "attributes": [{ - "key": "spender", - "value": vestAccAddr1 - }, { - "key": "amount", - "value": "100uluna" - }] - }, - { - "type": "coin_received", - "attributes": [{ - "key": "receiver", - "value": randomAccountAddress - }, { - "key": "amount", - "value": "100uluna" - }] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": randomAccountAddress - }, { - "key": "sender", - "value": vestAccAddr1 - }, { - "key": "amount", - "value": "100uluna" - }] - }, - { - "type": "message", - "attributes": [{ - "key": "sender", - "value": vestAccAddr1 - }] - } - ]) - } - catch (e) { - expect(e).toBeUndefined(); - } + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + expect(txResult.logs[0].events) + .toEqual([{ + "type": "message", + "attributes": [{ + "key": "action", + "value": "/cosmos.vesting.v1beta1.MsgCreateVestingAccount" + }, { + "key": "sender", + "value": vestAccAddr1 + }, { + "key": "module", + "value": "vesting" + }] + }, + { + "type": "coin_spent", + "attributes": [{ + "key": "spender", + "value": vestAccAddr1 + }, { + "key": "amount", + "value": "100uluna" + }] + }, + { + "type": "coin_received", + "attributes": [{ + "key": "receiver", + "value": randomAccountAddress + }, { + "key": "amount", + "value": "100uluna" + }] + }, + { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": randomAccountAddress + }, { + "key": "sender", + "value": vestAccAddr1 + }, { + "key": "amount", + "value": "100uluna" + }] + }, + { + "type": "message", + "attributes": [{ + "key": "sender", + "value": vestAccAddr1 + }] + }]) }); }); \ No newline at end of file diff --git a/integration-tests/src/modules/feeshare/feeshare.test.ts b/integration-tests/src/modules/feeshare/feeshare.test.ts index 4dacfe5d..054dfbdf 100644 --- a/integration-tests/src/modules/feeshare/feeshare.test.ts +++ b/integration-tests/src/modules/feeshare/feeshare.test.ts @@ -16,43 +16,38 @@ describe("Feeshare Module (https://github.com/terra-money/core/tree/release/v2.6 // instantiate to be used in the following tests // and finally save the contract address. beforeAll(async () => { - try { - let tx = await wallet.createAndSignTx({ - msgs: [new MsgStoreCode( - feeshareAccountAddress, - fs.readFileSync(path.join(__dirname, "/../../contracts/reflect.wasm")).toString("base64"), - )], - chainID: "test-1", - }); + let tx = await wallet.createAndSignTx({ + msgs: [new MsgStoreCode( + feeshareAccountAddress, + fs.readFileSync(path.join(__dirname, "/../../contracts/reflect.wasm")).toString("base64"), + )], + chainID: "test-1", + }); - let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); - let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - let codeId = Number(txResult.logs[0].events[1].attributes[1].value); - expect(codeId).toBeDefined(); + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + let codeId = Number(txResult.logs[0].events[1].attributes[1].value); + expect(codeId).toBeDefined(); - const msgInstantiateContract = new MsgInstantiateContract( - feeshareAccountAddress, - feeshareAccountAddress, - codeId, - {}, - Coins.fromString("1uluna"), - "Reflect contract " + Math.random(), - ); + const msgInstantiateContract = new MsgInstantiateContract( + feeshareAccountAddress, + feeshareAccountAddress, + codeId, + {}, + Coins.fromString("1uluna"), + "Reflect contract " + Math.random(), + ); - tx = await wallet.createAndSignTx({ - msgs: [msgInstantiateContract], - chainID: "test-1", - }); - result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); - txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - contractAddress = txResult.logs[0].events[4].attributes[0].value; - expect(contractAddress).toBeDefined(); - } - catch (e) { - expect(e).toBeUndefined(); - } + tx = await wallet.createAndSignTx({ + msgs: [msgInstantiateContract], + chainID: "test-1", + }); + result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + contractAddress = txResult.logs[0].events[4].attributes[0].value; + expect(contractAddress).toBeDefined(); }); test('Must contain the expected module params', async () => { @@ -70,127 +65,122 @@ describe("Feeshare Module (https://github.com/terra-money/core/tree/release/v2.6 }); test('Must register fee share', async () => { - try { - // Register feeshare - let tx = await wallet.createAndSignTx({ - msgs: [new MsgRegisterFeeShare( - contractAddress, - feeshareAccountAddress, - randomAccountAddress, - )], - chainID: "test-1", - }); + // Register feeshare + let tx = await wallet.createAndSignTx({ + msgs: [new MsgRegisterFeeShare( + contractAddress, + feeshareAccountAddress, + randomAccountAddress, + )], + chainID: "test-1", + }); - let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); - // Check the tx logs - let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - expect(txResult.logs[0].events) - .toMatchObject([{ - "type": "message", - "attributes": [{ - "key": "action", - "value": "/juno.feeshare.v1.MsgRegisterFeeShare" - }, { - "key": "sender", - "value": feeshareAccountAddress, - }, { - "key": "module", - "value": "feeshare" - }] - }, - { - "type": "register_feeshare", - "attributes": [{ - "key": "contract", - "value": contractAddress - }, { - "key": "withdrawer_address", - "value": randomAccountAddress, - }] - }]) + // Check the tx logs + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + expect(txResult.logs[0].events) + .toMatchObject([{ + "type": "message", + "attributes": [{ + "key": "action", + "value": "/juno.feeshare.v1.MsgRegisterFeeShare" + }, { + "key": "sender", + "value": feeshareAccountAddress, + }, { + "key": "module", + "value": "feeshare" + }] + }, + { + "type": "register_feeshare", + "attributes": [{ + "key": "contract", + "value": contractAddress + }, { + "key": "withdrawer_address", + "value": randomAccountAddress, + }] + }]) - // Check the registered feeshares by contractAddress - let feesharesBy = await LCD.chain1.feeshare.feeshares("test-1", contractAddress); - expect(feesharesBy) - .toMatchObject({ - "feeshare": { - "contract_address": contractAddress, - "deployer_address": feeshareAccountAddress, - "withdrawer_address": randomAccountAddress, - } - }) - // Check that querying all feeshares returns at least one feeshares - let feesharesByWallet = await LCD.chain1.feeshare.feeshares("test-1"); - expect(feesharesByWallet.feeshare.length).toBeGreaterThan(0); - await blockInclusion(); - - // Send an execute message to the reflect contract - let msgExecute = new MsgExecuteContract( - feeshareAccountAddress, - contractAddress, - { - change_owner: { - owner: randomAccountAddress, - } - }, - ); - tx = await wallet.createAndSignTx({ - msgs: [msgExecute], - chainID: "test-1", - fee: new Fee(200_000, "400000uluna"), - }); - result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); - await blockInclusion(); + // Check the registered feeshares by contractAddress + let feesharesBy = await LCD.chain1.feeshare.feeshares("test-1", contractAddress); + expect(feesharesBy) + .toMatchObject({ + "feeshare": { + "contract_address": contractAddress, + "deployer_address": feeshareAccountAddress, + "withdrawer_address": randomAccountAddress, + } + }) + // Check that querying all feeshares returns at least one feeshares + let feesharesByWallet = await LCD.chain1.feeshare.feeshares("test-1"); + expect(feesharesByWallet.feeshare.length).toBeGreaterThan(0); + await blockInclusion(); - // Check the tx logs have the expected events - txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - expect(txResult.logs[0].events) - .toMatchObject([{ - "type": "message", - "attributes": [{ - "key": "action", - "value": "/cosmwasm.wasm.v1.MsgExecuteContract" - }, { - "key": "sender", - "value": feeshareAccountAddress - }, { - "key": "module", - "value": "wasm" - }] - }, - { - "type": "execute", - "attributes": [{ - "key": "_contract_address", - "value": contractAddress - }] - }, - { - "type": "wasm", - "attributes": [{ - "key": "_contract_address", - "value": contractAddress - }, { - "key": "action", - "value": "change_owner" - }, { - "key": "owner", - "value": randomAccountAddress - }] + // Send an execute message to the reflect contract + let msgExecute = new MsgExecuteContract( + feeshareAccountAddress, + contractAddress, + { + change_owner: { + owner: randomAccountAddress, } - ]) - await blockInclusion() - - // Query the random account (new owner of the contract) - // and validate that the account has received 50% of the fees - const bankAmount = await LCD.chain1.bank.balance(randomAccountAddress); - expect(bankAmount[0]) - .toMatchObject(Coins.fromString("200000uluna")) - } - catch (e) { - expect(e).toBeUndefined(); - } + }, + ); + tx = await wallet.createAndSignTx({ + msgs: [msgExecute], + chainID: "test-1", + fee: new Fee(200_000, "400000uluna"), + }); + result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + + // Check the tx logs have the expected events + txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + expect(txResult.logs[0].events) + .toMatchObject([{ + "type": "message", + "attributes": [{ + "key": "action", + "value": "/cosmwasm.wasm.v1.MsgExecuteContract" + }, { + "key": "sender", + "value": feeshareAccountAddress + }, { + "key": "module", + "value": "wasm" + }] + }, + { + "type": "execute", + "attributes": [{ + "key": "_contract_address", + "value": contractAddress + }] + }, + { + "type": "wasm", + "attributes": [{ + "key": "_contract_address", + "value": contractAddress + }, { + "key": "action", + "value": "change_owner" + }, { + "key": "owner", + "value": randomAccountAddress + }] + } + ]) + await blockInclusion() + + // Query the random account (new owner of the contract) + // and validate that the account has received 50% of the fees + const bankAmount = await LCD.chain1.bank.balance(randomAccountAddress); + expect(bankAmount[0]) + .toMatchObject(Coins.fromString("200000uluna")) }); }); \ No newline at end of file diff --git a/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts b/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts index 5dcd2236..76d78f84 100644 --- a/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts +++ b/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts @@ -195,6 +195,8 @@ describe("IbcHooks Module (github.com/cosmos/ibc-apps/modules/ibc-hooks/v7) ", ( }); await LCD.chain1.tx.broadcastSync(tx, "test-1") await ibcTransfer(); + await blockInclusion(); + await blockInclusion(); let res = await LCD.chain1.wasm.contractQuery( contractAddress, { "get_count": { "addr": contractAddress } } diff --git a/integration-tests/src/modules/pob/pob.test.ts b/integration-tests/src/modules/pob/pob.test.ts index 020de85b..f99ae5bc 100644 --- a/integration-tests/src/modules/pob/pob.test.ts +++ b/integration-tests/src/modules/pob/pob.test.ts @@ -32,91 +32,86 @@ describe("Proposer Builder Module (https://github.com/skip-mev/pob) ", () => { }); test('Must create and order two transactions in block', async () => { - try { - // Query block height and assert that the value is greater than 1. - // This blockHeight will be used later on timeoutHeight - const blockHeight = (await LCD.chain1.tendermint.blockInfo("test-1")).block.header.height; - expect(parseInt(blockHeight)).toBeGreaterThan(1); + // Query block height and assert that the value is greater than 1. + // This blockHeight will be used later on timeoutHeight + const blockHeight = (await LCD.chain1.tendermint.blockInfo("test-1")).block.header.height; + expect(parseInt(blockHeight)).toBeGreaterThan(1); - // Query account info to sign the transactions offline - // to be included in the MsgAuctionBid - const accInfo = await LCD.chain1.auth.accountInfo(wallet.key.accAddress("terra")); + // Query account info to sign the transactions offline + // to be included in the MsgAuctionBid + const accInfo = await LCD.chain1.auth.accountInfo(wallet.key.accAddress("terra")); - // **First** message to be signed using **wallet** - const firstMsg = MsgSend.fromData({ - "@type": "/cosmos.bank.v1beta1.MsgSend", - "from_address": accounts.pobMnemonic.accAddress("terra"), - "to_address": accounts.pobMnemonic1.accAddress("terra"), - "amount": [{ "denom": "uluna", "amount": "1" }] - }); - const firstSignedSendTx = await wallet.createAndSignTx({ - msgs: [firstMsg], - memo: "First signed tx", - chainID: "test-1", - accountNumber: accInfo.getAccountNumber(), - sequence: accInfo.getSequenceNumber() + 1, - fee: new Fee(100000, new Coins({ uluna: 100000 })), - timeoutHeight: parseInt(blockHeight) + 20, - }); + // **First** message to be signed using **wallet** + const firstMsg = MsgSend.fromData({ + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": accounts.pobMnemonic.accAddress("terra"), + "to_address": accounts.pobMnemonic1.accAddress("terra"), + "amount": [{ "denom": "uluna", "amount": "1" }] + }); + const firstSignedSendTx = await wallet.createAndSignTx({ + msgs: [firstMsg], + memo: "First signed tx", + chainID: "test-1", + accountNumber: accInfo.getAccountNumber(), + sequence: accInfo.getSequenceNumber() + 1, + fee: new Fee(100000, new Coins({ uluna: 100000 })), + timeoutHeight: parseInt(blockHeight) + 20, + }); - // **Second** message to be signed using **wallet** - const secondMsg = MsgSend.fromData({ - "@type": "/cosmos.bank.v1beta1.MsgSend", - "from_address": accounts.pobMnemonic.accAddress("terra"), - "to_address": accounts.pobMnemonic1.accAddress("terra"), - "amount": [{ "denom": "uluna", "amount": "2" }] - }); - const secondSignedSendTx = await wallet.createAndSignTx({ - msgs: [secondMsg], - memo: "Second signed tx", - chainID: "test-1", - accountNumber: accInfo.getAccountNumber(), - sequence: accInfo.getSequenceNumber(), - fee: new Fee(100000, new Coins({ uluna: 100000 })), - timeoutHeight: parseInt(blockHeight) + 20, - }); + // **Second** message to be signed using **wallet** + const secondMsg = MsgSend.fromData({ + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": accounts.pobMnemonic.accAddress("terra"), + "to_address": accounts.pobMnemonic1.accAddress("terra"), + "amount": [{ "denom": "uluna", "amount": "2" }] + }); + const secondSignedSendTx = await wallet.createAndSignTx({ + msgs: [secondMsg], + memo: "Second signed tx", + chainID: "test-1", + accountNumber: accInfo.getAccountNumber(), + sequence: accInfo.getSequenceNumber(), + fee: new Fee(100000, new Coins({ uluna: 100000 })), + timeoutHeight: parseInt(blockHeight) + 20, + }); - // Create the **MsgAuctionBid** with **wallet11**. - // - // The two signed transactions included in MsgAuctionBid - // ordered as the **secondSingedTransaction** in the first position - // and the **firstSignedTransaction** in the second position - let buildTx = await wallet11.createAndSignTx({ - msgs: [MsgAuctionBid.fromData({ - "@type": "/pob.builder.v1.MsgAuctionBid", - bid: { amount: "100000", denom: "uluna" }, - bidder: accounts.pobMnemonic1.accAddress("terra"), - transactions: [secondSignedSendTx.toBytes(), firstSignedSendTx.toBytes()] - })], - memo: "Build block", - chainID: "test-1", - fee: new Fee(100000, new Coins({ uluna: 100000 })), - timeoutHeight: parseInt(blockHeight) + 20, - }); - const result = await LCD.chain1.tx.broadcastSync(buildTx, "test-1"); - await blockInclusion(); - const txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1"); - expect(txResult.logs).toBeDefined(); - // Recover the transactions hashes from the bundled transactions - // to query the respective transaction data and check there are two - const txHashes = (txResult.logs as any)[0].eventsByType.auction_bid.bundled_txs[0].split(","); - expect(txHashes.length).toBe(2); + // Create the **MsgAuctionBid** with **wallet11**. + // + // The two signed transactions included in MsgAuctionBid + // ordered as the **secondSingedTransaction** in the first position + // and the **firstSignedTransaction** in the second position + let buildTx = await wallet11.createAndSignTx({ + msgs: [MsgAuctionBid.fromData({ + "@type": "/pob.builder.v1.MsgAuctionBid", + bid: { amount: "100000", denom: "uluna" }, + bidder: accounts.pobMnemonic1.accAddress("terra"), + transactions: [secondSignedSendTx.toBytes(), firstSignedSendTx.toBytes()] + })], + memo: "Build block", + chainID: "test-1", + fee: new Fee(100000, new Coins({ uluna: 100000 })), + timeoutHeight: parseInt(blockHeight) + 20, + }); + const result = await LCD.chain1.tx.broadcastSync(buildTx, "test-1"); + await blockInclusion(); + const txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1"); + expect(txResult.logs).toBeDefined(); + // Recover the transactions hashes from the bundled transactions + // to query the respective transaction data and check there are two + const txHashes = (txResult.logs as any)[0].eventsByType.auction_bid.bundled_txs[0].split(","); + expect(txHashes.length).toBe(2); - // Define index to check the order of the transactions - let index = 0; - for await (const txHash of txHashes) { - const txResult = await LCD.chain1.tx.txInfo(txHash, "test-1"); - const dataMsg = txResult.tx.body.messages[0].toData(); - // When the index is 0 the expected message is the secondMsg - // because the MsgAuctionBid orders the transactions that way - const expectedMsg = index === 0 ? secondMsg : firstMsg; - expect(dataMsg).toMatchObject(expectedMsg.toData()); + // Define index to check the order of the transactions + let index = 0; + for await (const txHash of txHashes) { + const txResult = await LCD.chain1.tx.txInfo(txHash, "test-1"); + const dataMsg = txResult.tx.body.messages[0].toData(); + // When the index is 0 the expected message is the secondMsg + // because the MsgAuctionBid orders the transactions that way + const expectedMsg = index === 0 ? secondMsg : firstMsg; + expect(dataMsg).toMatchObject(expectedMsg.toData()); - index++; - } - } - catch (e) { - expect(e).toBeUndefined(); + index++; } }); }); \ No newline at end of file diff --git a/integration-tests/src/modules/wasm/ics20.test.ts b/integration-tests/src/modules/wasm/ics20.test.ts index 245d3238..ffe1cc80 100644 --- a/integration-tests/src/modules/wasm/ics20.test.ts +++ b/integration-tests/src/modules/wasm/ics20.test.ts @@ -1,5 +1,5 @@ -import { MsgInstantiateContract, MsgStoreCode } from "@terra-money/feather.js"; +import { MsgExecuteContract, MsgInstantiateContract, MsgStoreCode } from "@terra-money/feather.js"; import { getMnemonics, getLCDClient, blockInclusion } from "../../helpers"; import fs from "fs"; import path from 'path'; @@ -103,4 +103,37 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " expect(ics20ContractAddr).toBeDefined(); }) }) + + describe("after contracts have been deployed", () => { + test("Must instantiate *cw20_base* and *cw20_ics20* contract", async () => { + try { + // SubMessage to Transfer the funds thoguht the IBC channel + // which must be parsed to base64 and embeded into the "send" + // message. (we're not using JSON.stringify(object) because it causes and error) + let subMsg = Buffer.from(`{"channel":"channel-0","remote_address":"${walletAddress}"}`).toString("base64"); + + let tx = await wallet.createAndSignTx({ + msgs: [new MsgExecuteContract( + walletAddress, + cw20ContractAddr, + { + send: { + contract: ics20ContractAddr, + amount: "100000", + msg: subMsg + } + }, + )], + chainID: "test-1", + }); + let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); + await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; + console.log("txResult", txResult) + } + catch (e) { + console.log(e) + } + }) + }) }); \ No newline at end of file diff --git a/scripts/tests/chain-upgrade/chain-upgrade.sh b/integration-tests/src/setup/chain-upgrade/chain-upgrade.sh similarity index 86% rename from scripts/tests/chain-upgrade/chain-upgrade.sh rename to integration-tests/src/setup/chain-upgrade/chain-upgrade.sh index 503664ed..73fa4ea8 100755 --- a/scripts/tests/chain-upgrade/chain-upgrade.sh +++ b/integration-tests/src/setup/chain-upgrade/chain-upgrade.sh @@ -1,23 +1,22 @@ #!/bin/bash -OLD_VERSION=release/v2.6 -UPGRADE_HEIGHT=30 +OLD_VERSION=release/v2.7 +UPGRADE_HEIGHT=20 CHAIN_ID=pisco-1 -ROOT=$(pwd) -CHAIN_HOME=$ROOT/_build/.testnet +CHAIN_HOME=$(pwd)/chain-upgrade-data DENOM=uluna -SOFTWARE_UPGRADE_NAME="v2.7" -GOV_PERIOD="10s" +SOFTWARE_UPGRADE_NAME="v2.8" +GOV_PERIOD="5s" VAL_MNEMONIC_1="clock post desk civil pottery foster expand merit dash seminar song memory figure uniform spice circle try happy obvious trash crime hybrid hood cushion" WALLET_MNEMONIC_1="banner spread envelope side kite person disagree path silver will brother under couch edit food venture squirrel civil budget number acquire point work mass" -export OLD_BINARY=$ROOT/_build/terrad_old -export NEW_BINARY=$ROOT/_build/terrad_new +export OLD_BINARY=$CHAIN_HOME/terrad_old +export NEW_BINARY=$CHAIN_HOME/terrad_new rm -rf /tmp/terra -rm -r $ROOT/_build -mkdir $ROOT/_build +rm -r $CHAIN_HOME +mkdir $CHAIN_HOME # install old binary if ! command -v $OLD_BINARY &> /dev/null @@ -28,15 +27,16 @@ then cd core git checkout $OLD_VERSION make build - cp /tmp/terra/core/build/terrad $ROOT/_build/terrad_old - cd $ROOT + cp /tmp/terra/core/build/terrad $CHAIN_HOME/terrad_old + cd $CHAIN_HOME fi # install new binary if ! command -v $NEW_BINARY &> /dev/null then + cd ../.. make build - cp build/terrad $ROOT/_build/terrad_new + cp build/terrad $NEW_BINARY fi # init genesis @@ -89,10 +89,10 @@ echo '{ "deposit": "550000000'$DENOM'", "title": "Upgrade to '$SOFTWARE_UPGRADE_NAME'", "summary": "Source Code Version https://github.com/terra-money/core" -}' > $PWD/_build/software-upgrade.json +}' > $CHAIN_HOME/software-upgrade.json # -$OLD_BINARY tx gov submit-proposal $ROOT/_build/software-upgrade.json --from val1 --keyring-backend test --chain-id $CHAIN_ID --home $CHAIN_HOME -y +$OLD_BINARY tx gov submit-proposal $CHAIN_HOME/software-upgrade.json --from val1 --keyring-backend test --chain-id $CHAIN_ID --home $CHAIN_HOME -y sleep 2 $OLD_BINARY tx gov vote 1 yes --from val1 --keyring-backend test --chain-id $CHAIN_ID --home $CHAIN_HOME -y # @@ -107,11 +107,11 @@ while true; do else $OLD_BINARY query gov proposal 1 --output=json | jq ".status" echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" - sleep 5 + sleep 1 fi done # -sleep 5 +sleep 1 # ## run new node $NEW_BINARY start --home $CHAIN_HOME diff --git a/scripts/tests/init-test-framework.sh b/integration-tests/src/setup/init-test-framework.sh similarity index 99% rename from scripts/tests/init-test-framework.sh rename to integration-tests/src/setup/init-test-framework.sh index ced58116..127efc90 100755 --- a/scripts/tests/init-test-framework.sh +++ b/integration-tests/src/setup/init-test-framework.sh @@ -1,7 +1,7 @@ #!/bin/bash BINARY=terrad -CHAIN_DIR=$(pwd)/data +CHAIN_DIR=$(pwd)/test-data CHAINID_1=test-1 CHAINID_2=test-2 @@ -49,8 +49,12 @@ if pgrep -x "$BINARY" >/dev/null; then fi echo "Removing previous data..." -rm -rf $CHAIN_DIR/$CHAINID_1 &> /dev/null -rm -rf $CHAIN_DIR/$CHAINID_2 &> /dev/null +rm -rf $CHAIN_DIR + +echo "Stopping any processes related with the tests..." +pkill terrad +pkill terrad +pkill rly # Add directories for both chains, exit if an error occurs if ! mkdir -p $CHAIN_DIR/$CHAINID_1 2>/dev/null; then diff --git a/scripts/tests/relayer/interchain-acc-config/chains/test-1.json b/integration-tests/src/setup/relayer/chains/test-1.json similarity index 91% rename from scripts/tests/relayer/interchain-acc-config/chains/test-1.json rename to integration-tests/src/setup/relayer/chains/test-1.json index f75d3ac4..84dc6dd5 100644 --- a/scripts/tests/relayer/interchain-acc-config/chains/test-1.json +++ b/integration-tests/src/setup/relayer/chains/test-1.json @@ -4,7 +4,7 @@ "key": "testkey", "chain-id": "test-1", "rpc-addr": "http://localhost:16657", - "grpc-addr": "", + "grpc-addr": "http://localhost:8090", "account-prefix": "terra", "keyring-backend": "test", "default-denom": "uluna", diff --git a/scripts/tests/relayer/interchain-acc-config/chains/test-2.json b/integration-tests/src/setup/relayer/chains/test-2.json similarity index 91% rename from scripts/tests/relayer/interchain-acc-config/chains/test-2.json rename to integration-tests/src/setup/relayer/chains/test-2.json index 3900b4a6..518a82c4 100644 --- a/scripts/tests/relayer/interchain-acc-config/chains/test-2.json +++ b/integration-tests/src/setup/relayer/chains/test-2.json @@ -4,7 +4,7 @@ "key": "testkey", "chain-id": "test-2", "rpc-addr": "http://localhost:26657", - "grpc-addr": "", + "grpc-addr": "http://localhost:8090", "account-prefix": "terra", "keyring-backend": "test", "default-denom": "uluna", diff --git a/scripts/tests/relayer/interchain-acc-config/rly-init.sh b/integration-tests/src/setup/relayer/init-relayer.sh similarity index 63% rename from scripts/tests/relayer/interchain-acc-config/rly-init.sh rename to integration-tests/src/setup/relayer/init-relayer.sh index 9eba9c52..87128566 100755 --- a/scripts/tests/relayer/interchain-acc-config/rly-init.sh +++ b/integration-tests/src/setup/relayer/init-relayer.sh @@ -8,10 +8,9 @@ echo "" # Configure predefined mnemonic pharses BINARY=rly -CHAIN_DIR=$(pwd)/data +CHAIN_DIR=$(pwd)/test-data CHAINID_1=test-1 CHAINID_2=test-2 -RELAYER_DIR=/relayer MNEMONIC_1="alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart" MNEMONIC_2="record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset" @@ -23,24 +22,27 @@ if ! [ -x "$(command -v $BINARY)" ]; then fi echo "Initializing $BINARY..." -$BINARY config init --home $CHAIN_DIR/$RELAYER_DIR +$BINARY config init --home $CHAIN_DIR/relayer echo "Adding configurations for both chains..." -$BINARY chains add-dir ./scripts/tests/relayer/interchain-acc-config/chains --home $CHAIN_DIR/$RELAYER_DIR -$BINARY paths add $CHAINID_1 $CHAINID_2 test1-test2 --file ./scripts/tests/relayer/interchain-acc-config/paths/test1-test2.json --home $CHAIN_DIR/$RELAYER_DIR +$BINARY chains add-dir ./src/setup/relayer/chains --home $CHAIN_DIR/relayer +$BINARY paths add $CHAINID_1 $CHAINID_2 test1-test2 --file ./src/setup/relayer/paths/test1-test2.json --home $CHAIN_DIR/relayer echo "Restoring accounts..." -$BINARY keys restore $CHAINID_1 testkey "$MNEMONIC_1" --home $CHAIN_DIR/$RELAYER_DIR -$BINARY keys restore $CHAINID_2 testkey "$MNEMONIC_2" --home $CHAIN_DIR/$RELAYER_DIR +$BINARY keys restore $CHAINID_1 testkey "$MNEMONIC_1" --home $CHAIN_DIR/relayer +$BINARY keys restore $CHAINID_2 testkey "$MNEMONIC_2" --home $CHAIN_DIR/relayer echo "Creating clients and a connection..." -$BINARY tx connection test1-test2 --home $CHAIN_DIR/$RELAYER_DIR +$BINARY tx connection test1-test2 --home $CHAIN_DIR/relayer echo "Creating a channel..." -$BINARY tx channel test1-test2 --home $CHAIN_DIR/$RELAYER_DIR +$BINARY tx channel test1-test2 --home $CHAIN_DIR/relayer --version ics20-1 +#$BINARY tx channel test1-test2 --home $CHAIN_DIR/relayer --src-port transfer --dst-port transfer --order unordered echo "Starting to listen relayer..." -$BINARY start test1-test2 -p events -b 100 --home $CHAIN_DIR/$RELAYER_DIR > $CHAIN_DIR/relayer.log 2>&1 & +$BINARY start test1-test2 -p events -b 100 --home $CHAIN_DIR/relayer > $CHAIN_DIR/relayer.log 2>&1 & + +sleep 15 echo "" echo "############################" diff --git a/scripts/tests/relayer/interchain-acc-config/paths/test1-test2.json b/integration-tests/src/setup/relayer/paths/test1-test2.json similarity index 100% rename from scripts/tests/relayer/interchain-acc-config/paths/test1-test2.json rename to integration-tests/src/setup/relayer/paths/test1-test2.json diff --git a/scripts/tests/README.md b/scripts/tests/README.md deleted file mode 100644 index 27948371..00000000 --- a/scripts/tests/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Tests - -This folder contains the integration tests that should run successfully each time a new core release is created. - -At the moment, there are four tests defined that can be run with `make integration-test-all`. The breakdown of each test is as follows: - -- [init-test-framework](./start.sh): build the core and spin up two nodes with their own genesis event and some accounts preloaded with funds. -- [test-relayer](./relayer/): connect the two blockchains with a relayer opening a channel between both of them. - - [test-ica](./ica/delegate.sh): using the relayer, this test creates an interchain account and delegates funds using an interchain message. - - [test-ibc-hooks](./ibc-hooks/increment.sh): deploys a slightly modified [counter contract](./ibc-hooks/counter/) to chain test-2 and submits two requests from chain test-1 to validate that the contract received the funds and executed the wasm code correctly. -- remove-ica-data: removes the data and kills the process when the integration tests are completed. - -## Development process - -This set of tests must run out of the box in Linux-based systems installing [GoLang 1.20](https://go.dev/), [jq](https://stedolan.github.io/jq/), [screen](https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/) and [rly](https://github.com/cosmos/relayer). \ No newline at end of file From 867ababc8257969b2a1d0c38e0b66ff9eac817bc Mon Sep 17 00:00:00 2001 From: emidev98 Date: Wed, 29 Nov 2023 12:11:59 +0200 Subject: [PATCH 3/4] feat: ics20 tests --- integration-tests/jest.config.js | 4 +- integration-tests/package-lock.json | 1 - integration-tests/package.json | 3 +- .../src/modules/ibc-hooks/ibc-hooks.test.ts | 3 +- .../src/modules/wasm/ics20.test.ts | 135 ++++++++++++++++-- .../src/setup/init-test-framework.sh | 2 +- .../src/setup/relayer/chains/test-1.json | 2 +- .../src/setup/relayer/chains/test-2.json | 2 +- .../src/setup/relayer/init-relayer.sh | 9 +- 9 files changed, 134 insertions(+), 27 deletions(-) diff --git a/integration-tests/jest.config.js b/integration-tests/jest.config.js index 77330a61..be19ed24 100644 --- a/integration-tests/jest.config.js +++ b/integration-tests/jest.config.js @@ -4,6 +4,6 @@ module.exports = { testEnvironment: 'node', testMatch: ['**/*.test.ts'], verbose: true, - testTimeout: 30000, - maxConcurrency: 4, + testTimeout: 60000, + runInBand: true, }; \ No newline at end of file diff --git a/integration-tests/package-lock.json b/integration-tests/package-lock.json index 2315b5a5..ce5c4316 100644 --- a/integration-tests/package-lock.json +++ b/integration-tests/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "@terra-money/feather.js": "^2.0.0-beta.14", - "@terra-money/terra.proto": "^4.0.1", "moment": "^2.29.4" }, "devDependencies": { diff --git a/integration-tests/package.json b/integration-tests/package.json index a61a968f..bb47d3d8 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -9,7 +9,7 @@ "test:chain:upgrade" : "bash src/setup/chain-upgrade/chain-upgrade.sh", "test:start" : "jest", "start": "npm run test:init && npm run test:relayer && npm run test:start", - "test:clean": "rm -rf test-data chain-upgrade-data && pkill terrad && pkill terrad && pkill rly" + "test:clean": "rm -rf src/test-data chain-upgrade-data && pkill terrad && pkill terrad && pkill rly" }, "repository": { "type": "git", @@ -36,7 +36,6 @@ }, "dependencies": { "@terra-money/feather.js": "^2.0.0-beta.14", - "@terra-money/terra.proto": "^4.0.1", "moment": "^2.29.4" } } diff --git a/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts b/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts index 76d78f84..fcfe1d02 100644 --- a/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts +++ b/integration-tests/src/modules/ibc-hooks/ibc-hooks.test.ts @@ -195,8 +195,7 @@ describe("IbcHooks Module (github.com/cosmos/ibc-apps/modules/ibc-hooks/v7) ", ( }); await LCD.chain1.tx.broadcastSync(tx, "test-1") await ibcTransfer(); - await blockInclusion(); - await blockInclusion(); + await ibcTransfer(); let res = await LCD.chain1.wasm.contractQuery( contractAddress, { "get_count": { "addr": contractAddress } } diff --git a/integration-tests/src/modules/wasm/ics20.test.ts b/integration-tests/src/modules/wasm/ics20.test.ts index ffe1cc80..437d2015 100644 --- a/integration-tests/src/modules/wasm/ics20.test.ts +++ b/integration-tests/src/modules/wasm/ics20.test.ts @@ -1,8 +1,9 @@ -import { MsgExecuteContract, MsgInstantiateContract, MsgStoreCode } from "@terra-money/feather.js"; -import { getMnemonics, getLCDClient, blockInclusion } from "../../helpers"; +import { MnemonicKey, MsgExecuteContract, MsgInstantiateContract, MsgStoreCode } from "@terra-money/feather.js"; +import { getMnemonics, getLCDClient, blockInclusion, ibcTransfer } from "../../helpers"; import fs from "fs"; import path from 'path'; +import { execSync, exec } from 'child_process'; describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) ", () => { // Prepare environment clients, accounts and wallets @@ -10,10 +11,12 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " const accounts = getMnemonics(); const wallet = LCD.chain1.wallet(accounts.wasmContracts); const walletAddress = accounts.wasmContracts.accAddress("terra"); + const randomWalletAddress = new MnemonicKey().accAddress("terra"); let cw20BaseCodeId: number; let ics20CodeId: number; let cw20ContractAddr: string; let ics20ContractAddr: string; + let ics20ContractChannelId: string; // Validate that wasm module has the correct params test('Must have the correct module params', async () => { @@ -43,6 +46,7 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); await blockInclusion(); + let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; cw20BaseCodeId = Number(txResult.logs[0].events[1].attributes[1].value); expect(cw20BaseCodeId).toBeDefined(); @@ -50,7 +54,7 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " expect(ics20CodeId).toBeDefined(); }) - describe("after contracts have been deployed", () => { + describe("after contracts has been deployed", () => { test("Must instantiate *cw20_base* and *cw20_ics20* contract", async () => { let tx = await wallet.createAndSignTx({ msgs: [new MsgInstantiateContract( @@ -102,15 +106,46 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " ics20ContractAddr = txResult.logs[0].events[1].attributes[0].value; expect(ics20ContractAddr).toBeDefined(); }) - }) - describe("after contracts have been deployed", () => { - test("Must instantiate *cw20_base* and *cw20_ics20* contract", async () => { + test("must create the channel for the ICS20 contract", async () => { + // Stop the relayer to don't create conflicts try { + execSync("pkill rly") + } + catch (e) { + console.log(e) + } + + // Create the path + const pathToRelayDir = path.join(__dirname, "/../../test-data/relayer"); + execSync(`rly tx link "test1-test2" --src-port="wasm.${ics20ContractAddr}" --dst-port="transfer" --version="ics20-1" --home="${pathToRelayDir}"`, { stdio: "ignore" }) + await blockInclusion(); + + // Start the relayer again + const rlyStart = exec(`rly start "test1-test2" -p="events" -b=100 --flush-interval="1s" --time-threshold="1s" --home="${pathToRelayDir}" > ${pathToRelayDir}/relayer.log 2>&1`) + rlyStart.unref(); + + const res = await LCD.chain1.ibc.channels("test-1", { + "pagination.limit": 1, + "pagination.reverse": "true", + }); + + expect(res.channels[0]).toBeDefined(); + expect(res.channels[0].channel_id).toBeDefined(); + ics20ContractChannelId = res.channels[0].channel_id; + }) + + + + describe("after channel has been created", () => { + test("Must send funds from test-1 to test-2", async () => { // SubMessage to Transfer the funds thoguht the IBC channel // which must be parsed to base64 and embeded into the "send" // message. (we're not using JSON.stringify(object) because it causes and error) - let subMsg = Buffer.from(`{"channel":"channel-0","remote_address":"${walletAddress}"}`).toString("base64"); + let subMsg = Buffer.from(`{ + "channel": "${ics20ContractChannelId}", + "remote_address":"${randomWalletAddress}" + }`).toString("base64"); let tx = await wallet.createAndSignTx({ msgs: [new MsgExecuteContract( @@ -129,11 +164,87 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); await blockInclusion(); let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - console.log("txResult", txResult) - } - catch (e) { - console.log(e) - } + let events = txResult.logs[0].events; + + // Asser the order of events execution on chain + expect(events[0]).toStrictEqual({ + "type": "message", + "attributes": [{ + "key": "action", + "value": "/cosmwasm.wasm.v1.MsgExecuteContract" + }, { + "key": "sender", + "value": walletAddress + }, { + "key": "module", + "value": "wasm" + }] + }); + expect(events[1]).toStrictEqual({ + "type": "execute", + "attributes": [{ + "key": "_contract_address", + "value": cw20ContractAddr + }] + }); + expect(events[2]).toStrictEqual({ + "type": "wasm", + "attributes": [{ + "key": "_contract_address", + "value": cw20ContractAddr + }, { + "key": "action", + "value": "send" + }, { + "key": "from", + "value": walletAddress + }, { + "key": "to", + "value": ics20ContractAddr + }, { + "key": "amount", + "value": "100000" + }] + }); + expect(events[3]).toStrictEqual({ + "type": "execute", + "attributes": [{ + "key": "_contract_address", + "value": ics20ContractAddr + }] + }); + expect(events[4]).toStrictEqual({ + "type": "wasm", + "attributes": [{ + "key": "_contract_address", + "value": ics20ContractAddr + }, { + "key": "action", + "value": "transfer" + }, { + "key": "amount", + "value": "100000" + }, { + "key": "denom", + "value": "cw20:" + cw20ContractAddr + }, { + "key": "receiver", + "value": randomWalletAddress + }, { + "key": "sender", + "value": walletAddress + }] + }); + + // Assert the assets reach the other chain with the correct amount + await ibcTransfer(); + await ibcTransfer(); + console.log("randomWalletAddress", randomWalletAddress) + const queryRes = await LCD.chain2.bank.balance(randomWalletAddress); + let ibcCoin = queryRes[0].find(coin => coin.denom.startsWith("ibc/")); + expect(ibcCoin).toBeDefined(); + expect(ibcCoin?.amount?.toString()).toStrictEqual("100000"); + }) }) }) }); \ No newline at end of file diff --git a/integration-tests/src/setup/init-test-framework.sh b/integration-tests/src/setup/init-test-framework.sh index 127efc90..640074fc 100755 --- a/integration-tests/src/setup/init-test-framework.sh +++ b/integration-tests/src/setup/init-test-framework.sh @@ -1,7 +1,7 @@ #!/bin/bash BINARY=terrad -CHAIN_DIR=$(pwd)/test-data +CHAIN_DIR=$(pwd)/src/test-data CHAINID_1=test-1 CHAINID_2=test-2 diff --git a/integration-tests/src/setup/relayer/chains/test-1.json b/integration-tests/src/setup/relayer/chains/test-1.json index 84dc6dd5..8c0ba886 100644 --- a/integration-tests/src/setup/relayer/chains/test-1.json +++ b/integration-tests/src/setup/relayer/chains/test-1.json @@ -12,7 +12,7 @@ "gas-prices": "0.025uluna", "coin-type": 330, "debug": true, - "timeout": "10s", + "timeout": "4s", "output-format": "json", "sign-mode": "direct", "trusting-period": "330h", diff --git a/integration-tests/src/setup/relayer/chains/test-2.json b/integration-tests/src/setup/relayer/chains/test-2.json index 518a82c4..dee25158 100644 --- a/integration-tests/src/setup/relayer/chains/test-2.json +++ b/integration-tests/src/setup/relayer/chains/test-2.json @@ -12,7 +12,7 @@ "gas-prices": "0.025uluna", "coin-type": 330, "debug": true, - "timeout": "10s", + "timeout": "4s", "output-format": "json", "sign-mode": "direct", "trusting-period": "330h", diff --git a/integration-tests/src/setup/relayer/init-relayer.sh b/integration-tests/src/setup/relayer/init-relayer.sh index 87128566..6d871736 100755 --- a/integration-tests/src/setup/relayer/init-relayer.sh +++ b/integration-tests/src/setup/relayer/init-relayer.sh @@ -8,7 +8,7 @@ echo "" # Configure predefined mnemonic pharses BINARY=rly -CHAIN_DIR=$(pwd)/test-data +CHAIN_DIR=$(pwd)/src/test-data CHAINID_1=test-1 CHAINID_2=test-2 MNEMONIC_1="alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart" @@ -36,13 +36,12 @@ echo "Creating clients and a connection..." $BINARY tx connection test1-test2 --home $CHAIN_DIR/relayer echo "Creating a channel..." -$BINARY tx channel test1-test2 --home $CHAIN_DIR/relayer --version ics20-1 -#$BINARY tx channel test1-test2 --home $CHAIN_DIR/relayer --src-port transfer --dst-port transfer --order unordered +$BINARY tx channel test1-test2 --home $CHAIN_DIR/relayer echo "Starting to listen relayer..." -$BINARY start test1-test2 -p events -b 100 --home $CHAIN_DIR/relayer > $CHAIN_DIR/relayer.log 2>&1 & +$BINARY start test1-test2 -p events -b 100 --flush-interval 1s --time-threshold 1s --home $CHAIN_DIR/relayer > $CHAIN_DIR/relayer.log 2>&1 & -sleep 15 +sleep 10 echo "" echo "############################" From 4b7da4845c318515ebc14edc5851889830523cd5 Mon Sep 17 00:00:00 2001 From: emidev98 Date: Wed, 29 Nov 2023 15:49:26 +0200 Subject: [PATCH 4/4] feat: clean testing data and processes at the end --- integration-tests/jest.config.js | 4 +- integration-tests/package.json | 2 +- .../src/modules/ica/icav1.test.ts | 37 +++++-------------- .../src/modules/wasm/ics20.test.ts | 1 - integration-tests/src/teardown.ts | 15 ++++++++ 5 files changed, 27 insertions(+), 32 deletions(-) create mode 100644 integration-tests/src/teardown.ts diff --git a/integration-tests/jest.config.js b/integration-tests/jest.config.js index be19ed24..c60b7339 100644 --- a/integration-tests/jest.config.js +++ b/integration-tests/jest.config.js @@ -4,6 +4,6 @@ module.exports = { testEnvironment: 'node', testMatch: ['**/*.test.ts'], verbose: true, - testTimeout: 60000, - runInBand: true, + testTimeout: 50000, + globalTeardown: './src/teardown.ts', }; \ No newline at end of file diff --git a/integration-tests/package.json b/integration-tests/package.json index bb47d3d8..882f2ba9 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -7,7 +7,7 @@ "test:init" : "bash src/setup/init-test-framework.sh", "test:relayer": "bash src/setup/relayer/init-relayer.sh", "test:chain:upgrade" : "bash src/setup/chain-upgrade/chain-upgrade.sh", - "test:start" : "jest", + "test:start" : "jest --runInBand --detectOpenHandles", "start": "npm run test:init && npm run test:relayer && npm run test:start", "test:clean": "rm -rf src/test-data chain-upgrade-data && pkill terrad && pkill terrad && pkill rly" }, diff --git a/integration-tests/src/modules/ica/icav1.test.ts b/integration-tests/src/modules/ica/icav1.test.ts index e7b657c5..365cb59a 100644 --- a/integration-tests/src/modules/ica/icav1.test.ts +++ b/integration-tests/src/modules/ica/icav1.test.ts @@ -104,8 +104,10 @@ describe("ICA Module (https://github.com/cosmos/ibc-go/tree/release/v7.3.x/modul let result = await LCD.chain1.tx.broadcastSync(tx, "test-1"); await blockInclusion(); let txResult = await LCD.chain1.tx.txInfo(result.txhash, "test-1") as any; - expect(txResult.logs[0].events) - .toStrictEqual([{ + let events = txResult.logs[0].events; + + expect(events[0]) + .toStrictEqual({ "type": "message", "attributes": [{ "key": "action", @@ -114,36 +116,15 @@ describe("ICA Module (https://github.com/cosmos/ibc-go/tree/release/v7.3.x/modul "key": "sender", "value": "terra1p4kcrttuxj9kyyvv5px5ccgwf0yrw74yp7jqm6" }] - }, - { - "type": "channel_open_init", - "attributes": [{ - "key": "port_id", - "value": "icacontroller-terra1p4kcrttuxj9kyyvv5px5ccgwf0yrw74yp7jqm6" - }, { - "key": "channel_id", - "value": "channel-1" - }, { - "key": "counterparty_port_id", - "value": "icahost" - }, { - "key": "counterparty_channel_id", - "value": "" - }, { - "key": "connection_id", - "value": "connection-0" - }, { - "key": "version", - "value": "{\"fee_version\":\"ics29-1\",\"app_version\":\"{\\\"version\\\":\\\"ics27-1\\\",\\\"controller_connection_id\\\":\\\"connection-0\\\",\\\"host_connection_id\\\":\\\"connection-0\\\",\\\"address\\\":\\\"\\\",\\\"encoding\\\":\\\"proto3\\\",\\\"tx_type\\\":\\\"sdk_multi_msg\\\"}\"}" - }] - }, - { + }); + expect(events[2]) + .toStrictEqual({ "type": "message", "attributes": [{ "key": "module", "value": "ibc_channel" }] - }]) + }) // Check during 5 blocks for the receival // of the IBC coin on chain-2 @@ -247,7 +228,7 @@ describe("ICA Module (https://github.com/cosmos/ibc-go/tree/release/v7.3.x/modul }] }) - + // Check during 5 blocks for the receival // of the IBC coin on chain-2 for (let i = 0; i <= 5; i++) { diff --git a/integration-tests/src/modules/wasm/ics20.test.ts b/integration-tests/src/modules/wasm/ics20.test.ts index 437d2015..6987a3c1 100644 --- a/integration-tests/src/modules/wasm/ics20.test.ts +++ b/integration-tests/src/modules/wasm/ics20.test.ts @@ -239,7 +239,6 @@ describe("Wasm Module (https://github.com/CosmWasm/wasmd/releases/tag/v0.45.0) " // Assert the assets reach the other chain with the correct amount await ibcTransfer(); await ibcTransfer(); - console.log("randomWalletAddress", randomWalletAddress) const queryRes = await LCD.chain2.bank.balance(randomWalletAddress); let ibcCoin = queryRes[0].find(coin => coin.denom.startsWith("ibc/")); expect(ibcCoin).toBeDefined(); diff --git a/integration-tests/src/teardown.ts b/integration-tests/src/teardown.ts new file mode 100644 index 00000000..4d9ba20e --- /dev/null +++ b/integration-tests/src/teardown.ts @@ -0,0 +1,15 @@ +import { execSync } from 'child_process'; +import path from 'path'; + +module.exports = async () => { + try { + const pathToDataDir = path.join(__dirname, "/test-data"); + execSync("pkill rly") + execSync("pkill terrad") + execSync("pkill terrad") + execSync(`rm -r ${pathToDataDir}`) + } + catch (e) { + console.log(e) + } +} \ No newline at end of file